From ce6637cd8ffdd9eef39a57fe67c3528c55b11c68 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 27 Feb 2024 22:09:02 -0600 Subject: [PATCH 001/599] Honda Accord: allow fingerprinting without comma power (#31477) * Do Accord * add comment * good test * this catches the accord/accordh issue! * as expected, only if both radar&camera have in common FW does the test fail * cmt * clean up * better * Use HondaFlags * detect alt brake * for test * hypothesis isn't installed * test failure * works * Revert " works" This reverts commit bfc0d808abe548630e6507431f13b01e8a1316cb. * Revert "test failure" This reverts commit 10ab6eb63ccd411740751b742f31fd610397fe8e. * Revert "hypothesis isn't installed" This reverts commit d474cc3f0ed7e84fe8bd24f452b3315fd2b8d47c. * Revert "for test" This reverts commit 98e039f4fc0189ccb57c1dae6b344209ef15eb1c. * this is important too * clean up * merge accord fingerprints, test * remove duplicates * accordh doesn't have these * rm * no unknown * start over, merge platforms * add cmt * note non-essential ecus * add non essential obd ecus * combine FW * format fingerprints (remove dups) * migrate test models segs * cmt * Update ref_commit * clean up --- selfdrive/car/honda/carstate.py | 4 +- selfdrive/car/honda/fingerprints.py | 85 ++++++++---------------- selfdrive/car/honda/interface.py | 4 +- selfdrive/car/honda/values.py | 22 +++--- selfdrive/car/tests/routes.py | 4 +- selfdrive/car/tests/test_models_segs.txt | 4 +- selfdrive/car/torque_data/params.toml | 3 +- selfdrive/test/process_replay/ref_commit | 2 +- 8 files changed, 49 insertions(+), 79 deletions(-) diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index 9025f72397..4f5337813b 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -64,7 +64,7 @@ def get_can_messages(CP, gearbox_msg): messages.append(("CRUISE_PARAMS", 50)) # TODO: clean this up - if CP.carFingerprint in (CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, + if CP.carFingerprint in (CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.HRV_3G): pass elif CP.carFingerprint in (CAR.ODYSSEY_CHN, CAR.FREED, CAR.HRV): @@ -129,7 +129,7 @@ class CarState(CarStateBase): # 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, + if self.CP.carFingerprint in (CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.HRV_3G): ret.doorOpen = bool(cp.vl["SCM_FEEDBACK"]["DRIVERS_DOOR_OPEN"]) elif self.CP.carFingerprint in (CAR.ODYSSEY_CHN, CAR.FREED, CAR.HRV): diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 359ae83b15..0ae39751f9 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -48,6 +48,7 @@ FW_VERSIONS = { ], (Ecu.shiftByWire, 0x18da0bf1, None): [ b'54008-TVC-A910\x00\x00', + b'54008-TWA-A910\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ b'28101-6A7-A220\x00\x00', @@ -89,6 +90,12 @@ FW_VERSIONS = { b'57114-TVA-C530\x00\x00', b'57114-TVA-E520\x00\x00', b'57114-TVE-H250\x00\x00', + b'57114-TWA-A040\x00\x00', + b'57114-TWA-A050\x00\x00', + b'57114-TWA-A530\x00\x00', + b'57114-TWA-B520\x00\x00', + b'57114-TWA-C510\x00\x00', + b'57114-TWB-H030\x00\x00', ], (Ecu.eps, 0x18da30f1, None): [ b'39990-TBX-H120\x00\x00', @@ -100,6 +107,7 @@ FW_VERSIONS = { b'39990-TVA-X030\x00\x00', b'39990-TVA-X040\x00\x00', b'39990-TVE-H130\x00\x00', + b'39990-TWB-H120\x00\x00', ], (Ecu.srs, 0x18da53f1, None): [ b'77959-TBX-H230\x00\x00', @@ -108,6 +116,9 @@ FW_VERSIONS = { b'77959-TVA-H230\x00\x00', b'77959-TVA-L420\x00\x00', b'77959-TVA-X330\x00\x00', + b'77959-TWA-A440\x00\x00', + b'77959-TWA-L420\x00\x00', + b'77959-TWB-H220\x00\x00', ], (Ecu.combinationMeter, 0x18da60f1, None): [ b'78109-TBX-H310\x00\x00', @@ -141,7 +152,19 @@ FW_VERSIONS = { b'78109-TVC-M510\x00\x00', b'78109-TVC-YF10\x00\x00', b'78109-TVE-H610\x00\x00', + b'78109-TWA-A010\x00\x00', + b'78109-TWA-A020\x00\x00', + b'78109-TWA-A030\x00\x00', + b'78109-TWA-A110\x00\x00', + b'78109-TWA-A120\x00\x00', + b'78109-TWA-A130\x00\x00', b'78109-TWA-A210\x00\x00', + b'78109-TWA-A220\x00\x00', + b'78109-TWA-A230\x00\x00', + b'78109-TWA-A610\x00\x00', + b'78109-TWA-H210\x00\x00', + b'78109-TWA-L010\x00\x00', + b'78109-TWA-L210\x00\x00', ], (Ecu.hud, 0x18da61f1, None): [ b'78209-TVA-A010\x00\x00', @@ -158,6 +181,9 @@ FW_VERSIONS = { b'36802-TVE-H070\x00\x00', b'36802-TWA-A070\x00\x00', b'36802-TWA-A080\x00\x00', + b'36802-TWA-A210\x00\x00', + b'36802-TWA-A330\x00\x00', + b'36802-TWB-H060\x00\x00', ], (Ecu.fwdCamera, 0x18dab5f1, None): [ b'36161-TBX-H130\x00\x00', @@ -166,72 +192,17 @@ FW_VERSIONS = { b'36161-TVC-A330\x00\x00', b'36161-TVE-H050\x00\x00', b'36161-TWA-A070\x00\x00', + b'36161-TWA-A330\x00\x00', + b'36161-TWB-H040\x00\x00', ], (Ecu.gateway, 0x18daeff1, None): [ b'38897-TVA-A010\x00\x00', b'38897-TVA-A020\x00\x00', b'38897-TVA-A230\x00\x00', b'38897-TVA-A240\x00\x00', - ], - }, - CAR.ACCORDH: { - (Ecu.gateway, 0x18daeff1, None): [ b'38897-TWA-A120\x00\x00', b'38897-TWD-J020\x00\x00', ], - (Ecu.vsa, 0x18da28f1, None): [ - b'57114-TWA-A040\x00\x00', - b'57114-TWA-A050\x00\x00', - b'57114-TWA-A530\x00\x00', - b'57114-TWA-B520\x00\x00', - b'57114-TWA-C510\x00\x00', - b'57114-TWB-H030\x00\x00', - ], - (Ecu.srs, 0x18da53f1, None): [ - b'77959-TWA-A440\x00\x00', - b'77959-TWA-L420\x00\x00', - b'77959-TWB-H220\x00\x00', - ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TWA-A010\x00\x00', - b'78109-TWA-A020\x00\x00', - b'78109-TWA-A030\x00\x00', - b'78109-TWA-A110\x00\x00', - b'78109-TWA-A120\x00\x00', - b'78109-TWA-A130\x00\x00', - b'78109-TWA-A210\x00\x00', - b'78109-TWA-A220\x00\x00', - b'78109-TWA-A230\x00\x00', - b'78109-TWA-A610\x00\x00', - b'78109-TWA-H210\x00\x00', - b'78109-TWA-L010\x00\x00', - b'78109-TWA-L210\x00\x00', - ], - (Ecu.shiftByWire, 0x18da0bf1, None): [ - b'54008-TWA-A910\x00\x00', - ], - (Ecu.hud, 0x18da61f1, None): [ - b'78209-TVA-A010\x00\x00', - b'78209-TVA-A110\x00\x00', - ], - (Ecu.fwdCamera, 0x18dab5f1, None): [ - b'36161-TWA-A070\x00\x00', - b'36161-TWA-A330\x00\x00', - b'36161-TWB-H040\x00\x00', - ], - (Ecu.fwdRadar, 0x18dab0f1, None): [ - b'36802-TWA-A070\x00\x00', - b'36802-TWA-A080\x00\x00', - b'36802-TWA-A210\x00\x00', - b'36802-TWA-A330\x00\x00', - b'36802-TWB-H060\x00\x00', - ], - (Ecu.eps, 0x18da30f1, None): [ - b'39990-TVA-A150\x00\x00', - b'39990-TVA-A160\x00\x00', - b'39990-TVA-A340\x00\x00', - b'39990-TWB-H120\x00\x00', - ], }, CAR.CIVIC: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 153fa1e635..041ab67a97 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -59,7 +59,7 @@ class CarInterface(CarInterfaceBase): if any(0x33DA in f for f in fingerprint.values()): ret.flags |= HondaFlags.BOSCH_EXT_HUD.value - # Accord 1.5T CVT has different gearbox message + # Accord ICE 1.5T CVT has different gearbox message if candidate == CAR.ACCORD and 0x191 in fingerprint[1]: ret.transmissionType = TransmissionType.cvt @@ -115,7 +115,7 @@ class CarInterface(CarInterfaceBase): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # 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 in (CAR.ACCORD, CAR.ACCORDH): + elif candidate == CAR.ACCORD: ret.mass = 3279. * CV.LB_TO_KG ret.wheelbase = 2.83 ret.centerToFront = ret.wheelbase * 0.39 diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index f573296609..434316943b 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -74,7 +74,6 @@ VISUAL_HUD = { class CAR(StrEnum): ACCORD = "HONDA ACCORD 2018" - ACCORDH = "HONDA ACCORD HYBRID 2018" CIVIC = "HONDA CIVIC 2016" CIVIC_BOSCH = "HONDA CIVIC (BOSCH) 2019" CIVIC_BOSCH_DIESEL = "HONDA CIVIC SEDAN 1.6 DIESEL 2019" @@ -119,8 +118,8 @@ CAR_INFO: dict[str, HondaCarInfo | list[HondaCarInfo] | None] = { CAR.ACCORD: [ HondaCarInfo("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), HondaCarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), ], - CAR.ACCORDH: HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), CAR.CIVIC: HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE"), CAR.CIVIC_BOSCH: [ HondaCarInfo("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", @@ -201,14 +200,16 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.programmedFuelInjection: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.transmission: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.vsa: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.combinationMeter: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.gateway: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.electricBrakeBooster: [CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.programmedFuelInjection: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.transmission: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.srs: [CAR.ACCORD], + Ecu.eps: [CAR.ACCORD], + Ecu.vsa: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.combinationMeter: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.gateway: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.electricBrakeBooster: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], Ecu.shiftByWire: [CAR.ACCORD], # existence correlates with transmission type for ICE - Ecu.hud: [CAR.ACCORD, CAR.ACCORDH], # existence correlates with trim level + Ecu.hud: [CAR.ACCORD], # existence correlates with trim level }, extra_ecus=[ # The only other ECU on PT bus accessible by camera on radarless Civic @@ -219,7 +220,6 @@ FW_QUERY_CONFIG = FwQueryConfig( DBC = { CAR.ACCORD: dbc_dict('honda_accord_2018_can_generated', None), - CAR.ACCORDH: dbc_dict('honda_accord_2018_can_generated', None), CAR.ACURA_ILX: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), CAR.ACURA_RDX: dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), CAR.ACURA_RDX_3G: dbc_dict('acura_rdx_2020_can_generated', None), @@ -252,6 +252,6 @@ STEER_THRESHOLD = { HONDA_NIDEC_ALT_PCM_ACCEL = {CAR.ODYSSEY} 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.RIDGELINE} -HONDA_BOSCH = {CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_5G, +HONDA_BOSCH = {CAR.ACCORD, 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, CAR.HRV_3G} HONDA_BOSCH_RADARLESS = {CAR.CIVIC_2022, CAR.HRV_3G} diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 9c14c0d252..811416ccef 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -82,8 +82,8 @@ routes = [ CarTestRoute("08a3deb07573f157|2020-03-06--16-11-19", HONDA.ACCORD), # 1.5T CarTestRoute("1da5847ac2488106|2021-05-24--19-31-50", HONDA.ACCORD), # 2.0T CarTestRoute("085ac1d942c35910|2021-03-25--20-11-15", HONDA.ACCORD), # 2021 with new style HUD msgs - CarTestRoute("07585b0da3c88459|2021-05-26--18-52-04", HONDA.ACCORDH), - CarTestRoute("f29e2b57a55e7ad5|2021-03-24--20-52-38", HONDA.ACCORDH), # 2021 with new style HUD msgs + CarTestRoute("07585b0da3c88459|2021-05-26--18-52-04", HONDA.ACCORD), # hybrid + CarTestRoute("f29e2b57a55e7ad5|2021-03-24--20-52-38", HONDA.ACCORD), # hybrid, 2021 with new style HUD msgs CarTestRoute("1ad763dd22ef1a0e|2020-02-29--18-37-03", HONDA.CRV_5G), CarTestRoute("0a96f86fcfe35964|2020-02-05--07-25-51", HONDA.ODYSSEY), CarTestRoute("d83f36766f8012a5|2020-02-05--18-42-21", HONDA.CIVIC_BOSCH_DIESEL), diff --git a/selfdrive/car/tests/test_models_segs.txt b/selfdrive/car/tests/test_models_segs.txt index ca089bbdde..c983fb08e7 100644 --- a/selfdrive/car/tests/test_models_segs.txt +++ b/selfdrive/car/tests/test_models_segs.txt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cadad21e1230729c70cffb4c46dd0a5dda4eec1a262b1bcd9f1b6b98265c20b5 -size 125104 +oid sha256:0810a361ec5b5f5f9a2ee73b89ffb2df62ef40e8feff7e97ecb62f80fa53f6f5 +size 124950 diff --git a/selfdrive/car/torque_data/params.toml b/selfdrive/car/torque_data/params.toml index 568646c84c..142332b220 100644 --- a/selfdrive/car/torque_data/params.toml +++ b/selfdrive/car/torque_data/params.toml @@ -11,8 +11,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "CHRYSLER PACIFICA HYBRID 2018" = [2.08887, 1.2943025830995154, 0.114818] "CHRYSLER PACIFICA HYBRID 2019" = [1.90120, 1.1958788168371808, 0.131520] "GENESIS G70 2018" = [3.8520195946707947, 2.354697063349854, 0.06830285485626221] -"HONDA ACCORD 2018" = [1.7135052593468778, 0.3461280068322071, 0.21579936052863807] -"HONDA ACCORD HYBRID 2018" = [1.6651615004829625, 0.30322180951193245, 0.2083000440586149] +"HONDA ACCORD 2018" = [1.6893333799149202, 0.3246749081720698, 0.2120497022936265] "HONDA CIVIC (BOSCH) 2019" = [1.691708637466905, 0.40132900729454185, 0.25460295304024094] "HONDA CIVIC 2016" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] "HONDA CR-V 2016" = [0.7667141440182675, 0.5927571534745969, 0.40909087636157127] diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 9c627fb7c9..0fa4652e4c 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -47609e372bf616932c4dca74d2616c3d97fa2443 +dab93e072903e80f91029a03600430c43c722cb7 From a5fa419fbd32afe176dc4380e84c785bf84ba8aa Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 27 Feb 2024 21:48:40 -0800 Subject: [PATCH 002/599] Volkswagen: log camera ECU FW --- selfdrive/car/volkswagen/values.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 4dff9205d6..3344d58ea9 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -393,6 +393,7 @@ FW_QUERY_CONFIG = FwQueryConfig( obd_multiplexing=obd_multiplexing, ), ]], + extra_ecus=[(Ecu.fwdCamera, 0x74f, None)], ) CAR_INFO = CAR.create_carinfo_map() From 2c247ea2c6f6c22aa6ce55a6220e75ab17b58e06 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 28 Feb 2024 00:12:00 -0600 Subject: [PATCH 003/599] Honda Civic (Nidec): allow fingerprinting without comma power (#31501) * civic: FP with no OBD port * non essential ecus --- selfdrive/car/honda/values.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 434316943b..ce4a531d01 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -187,7 +187,6 @@ FW_QUERY_CONFIG = FwQueryConfig( [StdQueries.UDS_VERSION_REQUEST], [StdQueries.UDS_VERSION_RESPONSE], bus=0, - logging=True, ), # Bosch PT bus Request( @@ -200,13 +199,13 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.programmedFuelInjection: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.transmission: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.programmedFuelInjection: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.transmission: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], Ecu.srs: [CAR.ACCORD], Ecu.eps: [CAR.ACCORD], - Ecu.vsa: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.combinationMeter: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.gateway: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.vsa: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.combinationMeter: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], + Ecu.gateway: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], Ecu.electricBrakeBooster: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], Ecu.shiftByWire: [CAR.ACCORD], # existence correlates with transmission type for ICE Ecu.hud: [CAR.ACCORD], # existence correlates with trim level From 71ac15bf4e5e61382fd7de41a3b0643967b1d0c3 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 28 Feb 2024 12:41:10 -0500 Subject: [PATCH 004/599] Update README.md --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ca6221995b..c78052ad6b 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ Please refer to [Recommended Branches](#-recommended-branches) to find your pref * sunnypilot not installed or you installed a version before 0.8.17? 1. [Factory reset/uninstall](https://github.com/commaai/openpilot/wiki/FAQ#how-can-i-reset-the-device) the previous software if you have another software/fork installed. 2. After factory reset/uninstall and upon reboot, select `Custom Software` when given the option. - 3. Input the installation URL per [Recommended Branches](#-recommended-branches). Example: ```bit.ly/sp-release-c3``` [^4] (note: `https://` is not requirement on the comma three) + 3. Input the installation URL per [Recommended Branches](#-recommended-branches). Example: ```release-c3.sunnypilot.ai``` [^4] (note: `https://` is not requirement on the comma three) 4. Complete the rest of the installation following the onscreen instructions. * sunnypilot already installed and you installed a version after 0.8.17? @@ -107,6 +107,12 @@ Please refer to [Recommended Branches](#-recommended-branches) to find your pref 3. At the `Target Branch` option, press `SELECT` to open the Target Branch selector. 4. Scroll to select the desired branch per [Recommended Branches](#-recommended-branches). Example: `release-c3` +| Branch | Installation URL | +|:------------:|:--------------------------------:| +| `release-c3` | https://release-c3.sunnypilot.ai | +| `staging-c3` | https://staging-c3.sunnypilot.ai | +| `dev-c3` | https://dev-c3.sunnypilot.ai | + Requires further assistance with software installation? Join the [sunnypilot Discord server](https://discord.sunnypilot.com) and message us in the `#installation-help` channel. comma two From 7cf2b28b7883fdc3e68ad9e0974879103fa3a6ba Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 28 Feb 2024 14:41:42 -0500 Subject: [PATCH 005/599] scons: fix race condition with opendbc (#31621) * fix race condition * add to release * fix for now * bump --- SConstruct | 8 +------- opendbc | 2 +- release/files_common | 2 ++ selfdrive/SConscript | 7 +++++++ selfdrive/controls/lib/lateral_mpc_lib/SConscript | 3 ++- selfdrive/controls/lib/longitudinal_mpc_lib/SConscript | 4 ++-- 6 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 selfdrive/SConscript diff --git a/SConstruct b/SConstruct index 4d4f9ad4fe..dac3529892 100644 --- a/SConstruct +++ b/SConstruct @@ -384,13 +384,7 @@ if arch != "Darwin": # Build openpilot SConscript(['third_party/SConscript']) -SConscript(['selfdrive/boardd/SConscript']) -SConscript(['selfdrive/controls/lib/lateral_mpc_lib/SConscript']) -SConscript(['selfdrive/controls/lib/longitudinal_mpc_lib/SConscript']) -SConscript(['selfdrive/locationd/SConscript']) -SConscript(['selfdrive/navd/SConscript']) -SConscript(['selfdrive/modeld/SConscript']) -SConscript(['selfdrive/ui/SConscript']) +SConscript(['selfdrive/SConscript']) if arch in ['x86_64', 'aarch64', 'Darwin'] and Dir('#tools/cabana/').exists() and GetOption('extras'): SConscript(['tools/replay/SConscript']) diff --git a/opendbc b/opendbc index 0ac21652f2..5f096db742 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit 0ac21652f2e643e29aa471ad6b238bf74b22e356 +Subproject commit 5f096db742b0c5dcd19976afdb07d5dd098f4b07 diff --git a/release/files_common b/release/files_common index d62ef8d1bb..1fb05b43a7 100644 --- a/release/files_common +++ b/release/files_common @@ -60,6 +60,8 @@ system/logmessaged.py system/micd.py system/version.py +selfdrive/SConscript + selfdrive/athena/__init__.py selfdrive/athena/athenad.py selfdrive/athena/manage_athenad.py diff --git a/selfdrive/SConscript b/selfdrive/SConscript new file mode 100644 index 0000000000..6b72177d8e --- /dev/null +++ b/selfdrive/SConscript @@ -0,0 +1,7 @@ +SConscript(['boardd/SConscript']) +SConscript(['controls/lib/lateral_mpc_lib/SConscript']) +SConscript(['controls/lib/longitudinal_mpc_lib/SConscript']) +SConscript(['locationd/SConscript']) +SConscript(['navd/SConscript']) +SConscript(['modeld/SConscript']) +SConscript(['ui/SConscript']) \ No newline at end of file diff --git a/selfdrive/controls/lib/lateral_mpc_lib/SConscript b/selfdrive/controls/lib/lateral_mpc_lib/SConscript index 49666abe69..b6603e69fc 100644 --- a/selfdrive/controls/lib/lateral_mpc_lib/SConscript +++ b/selfdrive/controls/lib/lateral_mpc_lib/SConscript @@ -1,4 +1,4 @@ -Import('env', 'envCython', 'arch') +Import('env', 'envCython', 'arch', 'messaging_python', 'common_python', 'opendbc_python') gen = "c_generated_code" @@ -60,6 +60,7 @@ lenv.Clean(generated_files, Dir(gen)) generated_lat = lenv.Command(generated_files, source_list, f"cd {Dir('.').abspath} && python3 lat_mpc.py") +lenv.Depends(generated_lat, [messaging_python, common_python, opendbc_python]) lenv["CFLAGS"].append("-DACADOS_WITH_QPOASES") lenv["CXXFLAGS"].append("-DACADOS_WITH_QPOASES") diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript b/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript index 79afa1d918..c00d5cb5a7 100644 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript +++ b/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript @@ -1,4 +1,4 @@ -Import('env', 'envCython', 'arch', 'messaging_python', 'common_python') +Import('env', 'envCython', 'arch', 'messaging_python', 'common_python', 'opendbc_python') gen = "c_generated_code" @@ -66,7 +66,7 @@ lenv.Clean(generated_files, Dir(gen)) generated_long = lenv.Command(generated_files, source_list, f"cd {Dir('.').abspath} && python3 long_mpc.py") -lenv.Depends(generated_long, [messaging_python, common_python]) +lenv.Depends(generated_long, [messaging_python, common_python, opendbc_python]) lenv["CFLAGS"].append("-DACADOS_WITH_QPOASES") lenv["CXXFLAGS"].append("-DACADOS_WITH_QPOASES") From e9a10ca712c79c51037f5c96b8f8e749c98ce060 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 28 Feb 2024 15:05:43 -0500 Subject: [PATCH 006/599] auto pr review (#31626) * auto PR comments * little more * test * update action * cleanup * ensure it only runs once * comment that part out --------- Co-authored-by: Adeeb Shihadeh --- .github/workflows/auto_pr_review.yaml | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto_pr_review.yaml b/.github/workflows/auto_pr_review.yaml index abb6c38d6b..0720c1e676 100644 --- a/.github/workflows/auto_pr_review.yaml +++ b/.github/workflows/auto_pr_review.yaml @@ -34,6 +34,25 @@ jobs: already-exists-action: close_this already-exists-comment: "Your PR should be made against the `master` branch" + comment: + runs-on: ubuntu-latest + steps: + - name: comment + uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 + with: + message: | + + Thanks for contributing to openpilot! In order for us to review your PR as quickly as possible, check the following: + * Convert your PR to a draft unless it's ready to review + * Read the [contributing docs](https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md) + * Before marking as "ready for review", ensure: + * the goal is clearly stated in the description + * all the tests are passing + * the change is [something we merge](https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md#what-gets-merged) + * include a route or your device' dongle ID if relevant + comment_tag: run_id + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + check-pr-template: runs-on: ubuntu-latest permissions: @@ -41,7 +60,7 @@ jobs: issues: write pull-requests: write actions: read - if: github.event.pull_request.head.repo.full_name != 'commaai/openpilot' + if: false && github.event.pull_request.head.repo.full_name != 'commaai/openpilot' steps: - uses: actions/github-script@v7 with: @@ -91,7 +110,7 @@ jobs: // Utility function to check if a list of checkboxes is a subset of another list of checkboxes isCheckboxSubset = (templateCheckBoxTexts, prTextCheckBoxTexts) => { - // Check if each template checkbox text is a substring of at least one PR checkbox text + // Check if each template checkbox text is a substring of at least one PR checkbox text // (user should be allowed to add additional text) return templateCheckBoxTexts.every((item) => prTextCheckBoxTexts.some((element) => element.includes(item))) } From 6cf7599bcd1a0218bb359f72c3d17e15c53bae93 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 28 Feb 2024 15:54:21 -0800 Subject: [PATCH 007/599] setup: add openpilot button (#31628) * setup: add openpilot button * rename --- selfdrive/ui/qt/setup/setup.cc | 122 +++++++++++++++++++---- selfdrive/ui/qt/setup/setup.h | 1 + selfdrive/ui/translations/main_ar.ts | 12 +++ selfdrive/ui/translations/main_de.ts | 12 +++ selfdrive/ui/translations/main_fr.ts | 12 +++ selfdrive/ui/translations/main_ja.ts | 12 +++ selfdrive/ui/translations/main_ko.ts | 12 +++ selfdrive/ui/translations/main_pt-BR.ts | 12 +++ selfdrive/ui/translations/main_th.ts | 12 +++ selfdrive/ui/translations/main_tr.ts | 12 +++ selfdrive/ui/translations/main_zh-CHS.ts | 12 +++ selfdrive/ui/translations/main_zh-CHT.ts | 12 +++ 12 files changed, 226 insertions(+), 17 deletions(-) diff --git a/selfdrive/ui/qt/setup/setup.cc b/selfdrive/ui/qt/setup/setup.cc index 4f2e4f48cb..08f4a0f9c0 100644 --- a/selfdrive/ui/qt/setup/setup.cc +++ b/selfdrive/ui/qt/setup/setup.cc @@ -20,7 +20,7 @@ #include "selfdrive/ui/qt/widgets/input.h" const std::string USER_AGENT = "AGNOSSetup-"; -const QString TEST_URL = "https://openpilot.comma.ai"; +const QString OPENPILOT_URL = "https://openpilot.comma.ai"; bool is_elf(char *fname) { FILE *fp = fopen(fname, "rb"); @@ -201,20 +201,7 @@ QWidget * Setup::network_setup() { QPushButton *cont = new QPushButton(); cont->setObjectName("navBtn"); cont->setProperty("primary", true); - QObject::connect(cont, &QPushButton::clicked, [=]() { - auto w = currentWidget(); - QTimer::singleShot(0, [=]() { - setCurrentWidget(downloading_widget); - }); - QString url = InputDialog::getText(tr("Enter URL"), this, tr("for Custom Software")); - if (!url.isEmpty()) { - QTimer::singleShot(1000, this, [=]() { - download(url); - }); - } else { - setCurrentWidget(w); - } - }); + QObject::connect(cont, &QPushButton::clicked, this, &Setup::nextPage); blayout->addWidget(cont); // setup timer for testing internet connection @@ -229,11 +216,11 @@ QWidget * Setup::network_setup() { } repaint(); }); - request->sendRequest(TEST_URL); + request->sendRequest(OPENPILOT_URL); QTimer *timer = new QTimer(this); QObject::connect(timer, &QTimer::timeout, [=]() { if (!request->active() && cont->isVisible()) { - request->sendRequest(TEST_URL); + request->sendRequest(OPENPILOT_URL); } }); timer->start(1000); @@ -241,6 +228,106 @@ QWidget * Setup::network_setup() { return widget; } +QWidget * radio_button(QString title, QButtonGroup *group) { + QPushButton *btn = new QPushButton(title); + btn->setCheckable(true); + group->addButton(btn); + btn->setStyleSheet(R"( + QPushButton { + height: 230; + padding-left: 100px; + padding-right: 100px; + text-align: left; + font-size: 80px; + font-weight: 400; + border-radius: 10px; + background-color: #4F4F4F; + } + QPushButton:checked { + background-color: #465BEA; + } + )"); + + // checkmark icon + QPixmap pix(":/img_circled_check.svg"); + btn->setIcon(pix); + btn->setIconSize(QSize(0, 0)); + btn->setLayoutDirection(Qt::RightToLeft); + QObject::connect(btn, &QPushButton::toggled, [=](bool checked) { + btn->setIconSize(checked ? QSize(104, 104) : QSize(0, 0)); + }); + return btn; +} + +QWidget * Setup::software_selection() { + QWidget *widget = new QWidget(); + QVBoxLayout *main_layout = new QVBoxLayout(widget); + main_layout->setContentsMargins(55, 50, 55, 50); + main_layout->setSpacing(0); + + // title + QLabel *title = new QLabel(tr("Choose Software to Install")); + title->setStyleSheet("font-size: 90px; font-weight: 500;"); + main_layout->addWidget(title, 0, Qt::AlignLeft | Qt::AlignTop); + + main_layout->addSpacing(50); + + // openpilot + custom radio buttons + QButtonGroup *group = new QButtonGroup(widget); + group->setExclusive(true); + + QWidget *openpilot = radio_button(tr("openpilot"), group); + main_layout->addWidget(openpilot); + + main_layout->addSpacing(30); + + QWidget *custom = radio_button(tr("Custom Software"), group); + main_layout->addWidget(custom); + + main_layout->addStretch(); + + // back + continue buttons + QHBoxLayout *blayout = new QHBoxLayout; + main_layout->addLayout(blayout); + blayout->setSpacing(50); + + QPushButton *back = new QPushButton(tr("Back")); + back->setObjectName("navBtn"); + QObject::connect(back, &QPushButton::clicked, this, &Setup::prevPage); + blayout->addWidget(back); + + QPushButton *cont = new QPushButton(tr("Continue")); + cont->setObjectName("navBtn"); + cont->setEnabled(false); + cont->setProperty("primary", true); + blayout->addWidget(cont); + + QObject::connect(cont, &QPushButton::clicked, [=]() { + auto w = currentWidget(); + QTimer::singleShot(0, [=]() { + setCurrentWidget(downloading_widget); + }); + QString url = OPENPILOT_URL; + if (group->checkedButton() != openpilot) { + url = InputDialog::getText(tr("Enter URL"), this, tr("for Custom Software")); + } + if (!url.isEmpty()) { + QTimer::singleShot(1000, this, [=]() { + download(url); + }); + } else { + setCurrentWidget(w); + } + }); + + connect(group, QOverload::of(&QButtonGroup::buttonClicked), [=](QAbstractButton *btn) { + btn->setChecked(true); + cont->setEnabled(true); + }); + + return widget; +} + QWidget * Setup::downloading() { QWidget *widget = new QWidget(); QVBoxLayout *main_layout = new QVBoxLayout(widget); @@ -326,6 +413,7 @@ Setup::Setup(QWidget *parent) : QStackedWidget(parent) { addWidget(getting_started()); addWidget(network_setup()); + addWidget(software_selection()); downloading_widget = downloading(); addWidget(downloading_widget); diff --git a/selfdrive/ui/qt/setup/setup.h b/selfdrive/ui/qt/setup/setup.h index 8c33acc380..ee5cc85483 100644 --- a/selfdrive/ui/qt/setup/setup.h +++ b/selfdrive/ui/qt/setup/setup.h @@ -17,6 +17,7 @@ private: QWidget *low_voltage(); QWidget *getting_started(); QWidget *network_setup(); + QWidget *software_selection(); QWidget *downloading(); QWidget *download_failed(QLabel *url, QLabel *body); diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index eb6a580c01..7a431b8bf8 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -762,6 +762,18 @@ This may take up to a minute. Select a language اختر لغة + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 6d814b9625..ae2bdf33cb 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -744,6 +744,18 @@ This may take up to a minute. Select a language Sprache wählen + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index cd96c466e9..ba496c1b89 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -746,6 +746,18 @@ Cela peut prendre jusqu'à une minute. Select a language Choisir une langue + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index d07c7d525a..54ff0fa4ae 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -740,6 +740,18 @@ This may take up to a minute. Select a language 言語を選択 + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index a903978329..3f98db2f9c 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -742,6 +742,18 @@ This may take up to a minute. Select a language 언어를 선택하세요 + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index fce5a8a8ff..e31001a1e0 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -746,6 +746,18 @@ Isso pode levar até um minuto. Select a language Selecione o Idioma + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index f4d097b2a2..c1f0039a3c 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -742,6 +742,18 @@ This may take up to a minute. Select a language เลือกภาษา + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index ec6f71f5b0..d19c9ff036 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -740,6 +740,18 @@ This may take up to a minute. Select a language Dil seçin + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 91f55c6e94..a27dc18bd2 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -742,6 +742,18 @@ This may take up to a minute. Select a language 选择语言 + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index e8c8854d0e..1e7f1a614b 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -742,6 +742,18 @@ This may take up to a minute. Select a language 選擇語言 + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget From 7208e37f8c02c2d5260ed06faf4c531f753811a3 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 28 Feb 2024 19:44:10 -0500 Subject: [PATCH 008/599] disable notebooks (#31631) --- .github/workflows/tools_tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tools_tests.yaml b/.github/workflows/tools_tests.yaml index d15ab8cd60..a051cb1241 100644 --- a/.github/workflows/tools_tests.yaml +++ b/.github/workflows/tools_tests.yaml @@ -86,7 +86,7 @@ jobs: notebooks: name: notebooks runs-on: ubuntu-20.04 - if: github.repository == 'commaai/openpilot' + if: false && github.repository == 'commaai/openpilot' timeout-minutes: 45 steps: - uses: actions/checkout@v4 From f4a7e8eae6e4102a35c0ba787d61861bd40ed8f4 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 28 Feb 2024 19:47:08 -0500 Subject: [PATCH 009/599] disable commaCarSegments tests (#31632) disable this test too --- tools/lib/tests/test_comma_car_segments.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/lib/tests/test_comma_car_segments.py b/tools/lib/tests/test_comma_car_segments.py index 50d4200b4f..b293251583 100644 --- a/tools/lib/tests/test_comma_car_segments.py +++ b/tools/lib/tests/test_comma_car_segments.py @@ -1,3 +1,4 @@ +import pytest import unittest import requests @@ -6,6 +7,7 @@ from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.route import SegmentRange +@pytest.mark.skip(reason="huggingface is flaky, run this test manually to check for issues") class TestCommaCarSegments(unittest.TestCase): def test_database(self): database = get_comma_car_segments_database() From 4cec88c02902ff15eafbb497e779c5ca2dc13d8b Mon Sep 17 00:00:00 2001 From: Shea_D Date: Wed, 28 Feb 2024 19:07:06 -0600 Subject: [PATCH 010/599] Ford - Add OBDC Cable Length to CarPartList (#31608) * Update comma cable requirement for Ford CANFD * Adding Long_Cable to part list * Moving cable info into doc_definitions under CarHarness * Updating parts for ford_q4 * Updating Q3 info * Updated MachE with USBC coupler * fix typo * updating docs/cars.md * Add 3X angled no cable * Adding in nocable device package * Add missing ) Co-authored-by: Cameron Clough * Generating new Docs.MD * Added threex_nocable for MachE * Swap MachE to regular mount no cable * confirmed with Comma Operations all boxes include 1.5ft cable regardless of 9.5ft selection * Updating CarInfo * Update USB_Coupler for Q4 Harness * Remove cable from import * removed ] * Disagree with the inconsistency but OK Co-authored-by: Shane Smiskol * Update selfdrive/car/ford/values.py --------- Co-authored-by: sheaduncan Co-authored-by: Cameron Clough Co-authored-by: Shane Smiskol --- selfdrive/car/docs_definitions.py | 3 ++- selfdrive/car/ford/values.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py index 841cc3af2f..1adf78b1c8 100644 --- a/selfdrive/car/docs_definitions.py +++ b/selfdrive/car/docs_definitions.py @@ -118,7 +118,8 @@ class CarHarness(EnumBase): nissan_b = BaseCarHarness("Nissan B connector", parts=[Accessory.harness_box, Cable.rj45_cable_7ft, Cable.long_obdc_cable, Cable.usbc_coupler]) mazda = BaseCarHarness("Mazda connector") ford_q3 = BaseCarHarness("Ford Q3 connector") - ford_q4 = BaseCarHarness("Ford Q4 connector") + ford_q4 = BaseCarHarness("Ford Q4 connector", parts=[Accessory.harness_box, Accessory.comma_power_v2, Cable.rj45_cable_7ft, Cable.long_obdc_cable, + Cable.usbc_coupler]) class Device(EnumBase): diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 1008d68b98..f969d395d2 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -58,7 +58,7 @@ class FordCarInfo(CarInfo): def init_make(self, CP: car.CarParams): harness = CarHarness.ford_q4 if CP.carFingerprint in CANFD_CAR else CarHarness.ford_q3 - if CP.carFingerprint in (CAR.BRONCO_SPORT_MK1, CAR.MAVERICK_MK1, CAR.F_150_MK14): + if CP.carFingerprint in (CAR.BRONCO_SPORT_MK1, CAR.MAVERICK_MK1, CAR.F_150_MK14, CAR.F_150_LIGHTNING_MK1): self.car_parts = CarParts([Device.threex_angled_mount, harness]) else: self.car_parts = CarParts([Device.threex, harness]) From d4c497d82674126103118a4d5bb7a39db2823609 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 28 Feb 2024 20:13:44 -0500 Subject: [PATCH 011/599] add CarControllerBase base class to all CarControllers (#31630) just base class for now --- selfdrive/car/body/carcontroller.py | 3 ++- selfdrive/car/chrysler/carcontroller.py | 3 ++- selfdrive/car/ford/carcontroller.py | 3 ++- selfdrive/car/gm/carcontroller.py | 3 ++- selfdrive/car/honda/carcontroller.py | 3 ++- selfdrive/car/hyundai/carcontroller.py | 3 ++- selfdrive/car/interfaces.py | 9 +++++++++ selfdrive/car/mazda/carcontroller.py | 3 ++- selfdrive/car/nissan/carcontroller.py | 3 ++- selfdrive/car/subaru/carcontroller.py | 3 ++- selfdrive/car/tesla/carcontroller.py | 3 ++- selfdrive/car/toyota/carcontroller.py | 3 ++- selfdrive/car/volkswagen/carcontroller.py | 3 ++- 13 files changed, 33 insertions(+), 12 deletions(-) diff --git a/selfdrive/car/body/carcontroller.py b/selfdrive/car/body/carcontroller.py index d15f11d3a4..db34320caa 100644 --- a/selfdrive/car/body/carcontroller.py +++ b/selfdrive/car/body/carcontroller.py @@ -4,6 +4,7 @@ from openpilot.common.realtime import DT_CTRL from opendbc.can.packer import CANPacker from openpilot.selfdrive.car.body import bodycan from openpilot.selfdrive.car.body.values import SPEED_FROM_RPM +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.pid import PIDController @@ -14,7 +15,7 @@ MAX_POS_INTEGRATOR = 0.2 # meters MAX_TURN_INTEGRATOR = 0.1 # meters -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.frame = 0 self.packer = CANPacker(dbc_name) diff --git a/selfdrive/car/chrysler/carcontroller.py b/selfdrive/car/chrysler/carcontroller.py index 050eb41b1a..39248f3f75 100644 --- a/selfdrive/car/chrysler/carcontroller.py +++ b/selfdrive/car/chrysler/carcontroller.py @@ -3,9 +3,10 @@ from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_meas_steer_torque_limits from openpilot.selfdrive.car.chrysler import chryslercan from openpilot.selfdrive.car.chrysler.values import RAM_CARS, CarControllerParams, ChryslerFlags +from openpilot.selfdrive.car.interfaces import CarControllerBase -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.apply_steer_last = 0 diff --git a/selfdrive/car/ford/carcontroller.py b/selfdrive/car/ford/carcontroller.py index 45516d6035..61c46674db 100644 --- a/selfdrive/car/ford/carcontroller.py +++ b/selfdrive/car/ford/carcontroller.py @@ -4,6 +4,7 @@ from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_std_steer_angle_limits from openpilot.selfdrive.car.ford import fordcan from openpilot.selfdrive.car.ford.values import CANFD_CAR, CarControllerParams +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX LongCtrlState = car.CarControl.Actuators.LongControlState @@ -22,7 +23,7 @@ def apply_ford_curvature_limits(apply_curvature, apply_curvature_last, current_c return clip(apply_curvature, -CarControllerParams.CURVATURE_MAX, CarControllerParams.CURVATURE_MAX) -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.VM = VM diff --git a/selfdrive/car/gm/carcontroller.py b/selfdrive/car/gm/carcontroller.py index 6c7e8007f2..e010c56536 100644 --- a/selfdrive/car/gm/carcontroller.py +++ b/selfdrive/car/gm/carcontroller.py @@ -6,6 +6,7 @@ from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_driver_steer_torque_limits from openpilot.selfdrive.car.gm import gmcan from openpilot.selfdrive.car.gm.values import DBC, CanBus, CarControllerParams, CruiseButtons +from openpilot.selfdrive.car.interfaces import CarControllerBase VisualAlert = car.CarControl.HUDControl.VisualAlert NetworkLocation = car.CarParams.NetworkLocation @@ -17,7 +18,7 @@ CAMERA_CANCEL_DELAY_FRAMES = 10 MIN_STEER_MSG_INTERVAL_MS = 15 -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.start_time = 0. diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 056b47c4b3..8170e1e9ef 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -7,6 +7,7 @@ from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import create_gas_interceptor_command from openpilot.selfdrive.car.honda import hondacan from openpilot.selfdrive.car.honda.values import CruiseButtons, VISUAL_HUD, HONDA_BOSCH, HONDA_BOSCH_RADARLESS, HONDA_NIDEC_ALT_PCM_ACCEL, CarControllerParams +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import rate_limit VisualAlert = car.CarControl.HUDControl.VisualAlert @@ -104,7 +105,7 @@ def rate_limit_steer(new_steer, last_steer): return clip(new_steer, last_steer - MAX_DELTA, last_steer + MAX_DELTA) -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.packer = CANPacker(dbc_name) diff --git a/selfdrive/car/hyundai/carcontroller.py b/selfdrive/car/hyundai/carcontroller.py index 0b5f724ab9..b0851abf55 100644 --- a/selfdrive/car/hyundai/carcontroller.py +++ b/selfdrive/car/hyundai/carcontroller.py @@ -7,6 +7,7 @@ from openpilot.selfdrive.car import apply_driver_steer_torque_limits, common_fau from openpilot.selfdrive.car.hyundai import hyundaicanfd, hyundaican from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, Buttons, CarControllerParams, CANFD_CAR, CAR +from openpilot.selfdrive.car.interfaces import CarControllerBase VisualAlert = car.CarControl.HUDControl.VisualAlert LongCtrlState = car.CarControl.Actuators.LongControlState @@ -42,7 +43,7 @@ def process_hud_alert(enabled, fingerprint, hud_control): return sys_warning, sys_state, left_lane_warning, right_lane_warning -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.CAN = CanBus(CP) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 0a5ec94aa0..63005e6351 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -518,3 +518,12 @@ class NanoFFModel: pred = x[0] pred = pred * (self.weights['output_norm_mat'][1] - self.weights['output_norm_mat'][0]) + self.weights['output_norm_mat'][0] return pred + + +SendCan = tuple[int, int, bytes, int] + + +class CarControllerBase(ABC): + @abstractmethod + def update(self, CC, CS, now_nanos) -> tuple[car.CarControl.Actuators, list[SendCan]]: + pass diff --git a/selfdrive/car/mazda/carcontroller.py b/selfdrive/car/mazda/carcontroller.py index 320ad19bb4..3f3b7a9494 100644 --- a/selfdrive/car/mazda/carcontroller.py +++ b/selfdrive/car/mazda/carcontroller.py @@ -1,13 +1,14 @@ from cereal import car from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_driver_steer_torque_limits +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.mazda import mazdacan from openpilot.selfdrive.car.mazda.values import CarControllerParams, Buttons VisualAlert = car.CarControl.HUDControl.VisualAlert -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.apply_steer_last = 0 diff --git a/selfdrive/car/nissan/carcontroller.py b/selfdrive/car/nissan/carcontroller.py index 2da518bbf1..6aa4bb9438 100644 --- a/selfdrive/car/nissan/carcontroller.py +++ b/selfdrive/car/nissan/carcontroller.py @@ -1,13 +1,14 @@ from cereal import car from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_std_steer_angle_limits +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.nissan import nissancan from openpilot.selfdrive.car.nissan.values import CAR, CarControllerParams VisualAlert = car.CarControl.HUDControl.VisualAlert -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.car_fingerprint = CP.carFingerprint diff --git a/selfdrive/car/subaru/carcontroller.py b/selfdrive/car/subaru/carcontroller.py index cc8ce4f722..4a65c2c02c 100644 --- a/selfdrive/car/subaru/carcontroller.py +++ b/selfdrive/car/subaru/carcontroller.py @@ -1,6 +1,7 @@ from openpilot.common.numpy_fast import clip, interp from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_driver_steer_torque_limits, common_fault_avoidance +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.subaru import subarucan from openpilot.selfdrive.car.subaru.values import DBC, GLOBAL_ES_ADDR, GLOBAL_GEN2, PREGLOBAL_CARS, HYBRID_CARS, STEER_RATE_LIMITED, \ CanBus, CarControllerParams, SubaruFlags @@ -11,7 +12,7 @@ MAX_STEER_RATE = 25 # deg/s MAX_STEER_RATE_FRAMES = 7 # tx control frames needed before torque can be cut -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.apply_steer_last = 0 diff --git a/selfdrive/car/tesla/carcontroller.py b/selfdrive/car/tesla/carcontroller.py index 95a248a614..f217c4692d 100644 --- a/selfdrive/car/tesla/carcontroller.py +++ b/selfdrive/car/tesla/carcontroller.py @@ -1,11 +1,12 @@ from openpilot.common.numpy_fast import clip from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_std_steer_angle_limits +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.tesla.teslacan import TeslaCAN from openpilot.selfdrive.car.tesla.values import DBC, CANBUS, CarControllerParams -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.frame = 0 diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index 343b1d3031..d960114f1b 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -2,6 +2,7 @@ from cereal import car from openpilot.common.numpy_fast import clip, interp from openpilot.selfdrive.car import apply_meas_steer_torque_limits, apply_std_steer_angle_limits, common_fault_avoidance, \ create_gas_interceptor_command, make_can_msg +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.toyota import toyotacan from openpilot.selfdrive.car.toyota.values import CAR, STATIC_DSU_MSGS, NO_STOP_TIMER_CAR, TSS2_CAR, \ MIN_ACC_SPEED, PEDAL_TRANSITION, CarControllerParams, ToyotaFlags, \ @@ -25,7 +26,7 @@ MAX_LTA_ANGLE = 94.9461 # deg MAX_LTA_DRIVER_TORQUE_ALLOWANCE = 150 # slightly above steering pressed allows some resistance when changing lanes -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.params = CarControllerParams(self.CP) diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index 0cee2c7fce..f99e87d5d3 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -4,6 +4,7 @@ from openpilot.common.numpy_fast import clip from openpilot.common.conversions import Conversions as CV from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_driver_steer_torque_limits +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.volkswagen import mqbcan, pqcan from openpilot.selfdrive.car.volkswagen.values import CANBUS, PQ_CARS, CarControllerParams, VolkswagenFlags @@ -11,7 +12,7 @@ VisualAlert = car.CarControl.HUDControl.VisualAlert LongCtrlState = car.CarControl.Actuators.LongControlState -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.CCP = CarControllerParams(CP) From ec9856b784e6cda8f02e012076666aebe7476650 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 28 Feb 2024 20:01:58 -0600 Subject: [PATCH 012/599] GM: add more FW logging (#31633) * add more DIDs * one more * update refs * rm * btr * Update selfdrive/car/gm/values.py --- selfdrive/car/gm/values.py | 13 +++++++++++++ selfdrive/car/tests/test_fw_fingerprint.py | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 35fdf3fb92..ca35b53f72 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -189,22 +189,35 @@ class CanBus: # In a Data Module, an identifier is a string used to recognize an object, # either by itself or together with the identifiers of parent objects. # Each returns a 4 byte hex representation of the decimal part number. `b"\x02\x8c\xf0'"` -> 42790951 +GM_BOOT_SOFTWARE_PART_NUMER_REQUEST = b'\x1a\xc0' # likely does not contain anything useful GM_SOFTWARE_MODULE_1_REQUEST = b'\x1a\xc1' GM_SOFTWARE_MODULE_2_REQUEST = b'\x1a\xc2' GM_SOFTWARE_MODULE_3_REQUEST = b'\x1a\xc3' + +# Part number of XML data file that is used to configure ECU +GM_XML_DATA_FILE_PART_NUMBER = b'\x1a\x9c' +GM_XML_CONFIG_COMPAT_ID = b'\x1a\x9b' # used to know if XML file is compatible with the ECU software/hardware + # This DID is for identifying the part number that reflects the mix of hardware, # software, and calibrations in the ECU when it first arrives at the vehicle assembly plant. # If there's an Alpha Code, it's associated with this part number and stored in the DID $DB. GM_END_MODEL_PART_NUMBER_REQUEST = b'\x1a\xcb' +GM_END_MODEL_PART_NUMBER_ALPHA_CODE_REQUEST = b'\x1a\xdb' GM_BASE_MODEL_PART_NUMBER_REQUEST = b'\x1a\xcc' +GM_BASE_MODEL_PART_NUMBER_ALPHA_CODE_REQUEST = b'\x1a\xdc' GM_FW_RESPONSE = b'\x5a' GM_FW_REQUESTS = [ + GM_BOOT_SOFTWARE_PART_NUMER_REQUEST, GM_SOFTWARE_MODULE_1_REQUEST, GM_SOFTWARE_MODULE_2_REQUEST, GM_SOFTWARE_MODULE_3_REQUEST, + GM_XML_DATA_FILE_PART_NUMBER, + GM_XML_CONFIG_COMPAT_ID, GM_END_MODEL_PART_NUMBER_REQUEST, + GM_END_MODEL_PART_NUMBER_ALPHA_CODE_REQUEST, GM_BASE_MODEL_PART_NUMBER_REQUEST, + GM_BASE_MODEL_PART_NUMBER_ALPHA_CODE_REQUEST, ] GM_RX_OFFSET = 0x400 diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index 88c7225f22..a8bae29391 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -263,10 +263,10 @@ class TestFwFingerprintTiming(unittest.TestCase): print(f'get_vin {name} case, query time={self.total_time / self.N} seconds') def test_fw_query_timing(self): - total_ref_time = {1: 7.8, 2: 8.7} + total_ref_time = {1: 8.3, 2: 9.2} brand_ref_times = { 1: { - 'gm': 0.5, + 'gm': 1.0, 'body': 0.1, 'chrysler': 0.3, 'ford': 1.5, From 3ae151635d829ce432c13d72b0b075ced892f704 Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Thu, 29 Feb 2024 00:33:37 -0300 Subject: [PATCH 013/599] Multilang: update pt-BR translations (#31634) update pt-BR translations --- selfdrive/ui/translations/main_pt-BR.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index e31001a1e0..c4789ed42e 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -638,7 +638,7 @@ Isso pode levar até um minuto. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - Reinicialização do sistema acionada. Pressione confirmar para apagar todo o conteúdo e configurações. Pressione cancel para retomar a inicialização. + Reinicialização do sistema acionada. Pressione confirmar para apagar todo o conteúdo e configurações. Pressione cancel para retomar a inicialização. @@ -748,15 +748,15 @@ Isso pode levar até um minuto. Choose Software to Install - + Escolha o Software a ser Instalado openpilot - openpilot + openpilot Custom Software - + Software Customizado From 85eb221e4c9344a5c135789691e8e0500aa51482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20Sch=C3=A4fer?= Date: Wed, 28 Feb 2024 19:55:57 -0800 Subject: [PATCH 014/599] GpsLocation: Rename accuracy to horizontal accuracy (#31629) * Rename accuracy to horizontal accuracy * typo in cereal --- cereal | 2 +- selfdrive/locationd/locationd.cc | 4 ++-- system/ubloxd/tests/print_gps_stats.py | 2 +- system/ubloxd/ublox_msg.cc | 2 +- tools/plotjuggler/layouts/gps_vs_llk.xml | 2 +- tools/plotjuggler/layouts/ublox-debug.xml | 2 +- tools/sim/lib/simulated_sensors.py | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cereal b/cereal index 2012d9fd16..2ad942be5b 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 2012d9fd16f62c737951ce2d1eb19d39f0c7615f +Subproject commit 2ad942be5b42532d7919c2127cb531e7178cbd2b diff --git a/selfdrive/locationd/locationd.cc b/selfdrive/locationd/locationd.cc index 1050d68b9b..26999cd684 100644 --- a/selfdrive/locationd/locationd.cc +++ b/selfdrive/locationd/locationd.cc @@ -310,7 +310,7 @@ void Localizer::input_fake_gps_observations(double current_time) { void Localizer::handle_gps(double current_time, const cereal::GpsLocationData::Reader& log, const double sensor_time_offset) { // ignore the message if the fix is invalid bool gps_invalid_flag = (log.getFlags() % 2 == 0); - bool gps_unreasonable = (Vector2d(log.getAccuracy(), log.getVerticalAccuracy()).norm() >= SANE_GPS_UNCERTAINTY); + bool gps_unreasonable = (Vector2d(log.getHorizontalAccuracy(), log.getVerticalAccuracy()).norm() >= SANE_GPS_UNCERTAINTY); bool gps_accuracy_insane = ((log.getVerticalAccuracy() <= 0) || (log.getSpeedAccuracy() <= 0) || (log.getBearingAccuracyDeg() <= 0)); bool gps_lat_lng_alt_insane = ((std::abs(log.getLatitude()) > 90) || (std::abs(log.getLongitude()) > 180) || (std::abs(log.getAltitude()) > ALTITUDE_SANITY_CHECK)); bool gps_vel_insane = (floatlist2vector(log.getVNED()).norm() > TRANS_SANITY_CHECK); @@ -331,7 +331,7 @@ void Localizer::handle_gps(double current_time, const cereal::GpsLocationData::R VectorXd ecef_pos = this->converter->ned2ecef({ 0.0, 0.0, 0.0 }).to_vector(); VectorXd ecef_vel = this->converter->ned2ecef({ log.getVNED()[0], log.getVNED()[1], log.getVNED()[2] }).to_vector() - ecef_pos; - float ecef_pos_std = std::sqrt(this->gps_variance_factor * std::pow(log.getAccuracy(), 2) + this->gps_vertical_variance_factor * std::pow(log.getVerticalAccuracy(), 2)); + float ecef_pos_std = std::sqrt(this->gps_variance_factor * std::pow(log.getHorizontalAccuracy(), 2) + this->gps_vertical_variance_factor * std::pow(log.getVerticalAccuracy(), 2)); MatrixXdr ecef_pos_R = Vector3d::Constant(std::pow(this->gps_std_factor * ecef_pos_std, 2)).asDiagonal(); MatrixXdr ecef_vel_R = Vector3d::Constant(std::pow(this->gps_std_factor * log.getSpeedAccuracy(), 2)).asDiagonal(); diff --git a/system/ubloxd/tests/print_gps_stats.py b/system/ubloxd/tests/print_gps_stats.py index cfddb7f8b8..edf94c060a 100755 --- a/system/ubloxd/tests/print_gps_stats.py +++ b/system/ubloxd/tests/print_gps_stats.py @@ -13,7 +13,7 @@ if __name__ == "__main__": cnos = [] for m in ug.measurementReport.measurements: cnos.append(m.cno) - print("Sats: %d Accuracy: %.2f m cnos" % (ug.measurementReport.numMeas, gle.accuracy), sorted(cnos)) + print("Sats: %d Accuracy: %.2f m cnos" % (ug.measurementReport.numMeas, gle.horizontalAccuracy), sorted(cnos)) except Exception: pass sm.update() diff --git a/system/ubloxd/ublox_msg.cc b/system/ubloxd/ublox_msg.cc index 7b4505dc81..eb1a1e4b19 100644 --- a/system/ubloxd/ublox_msg.cc +++ b/system/ubloxd/ublox_msg.cc @@ -132,7 +132,7 @@ kj::Array UbloxMsgParser::gen_nav_pvt(ubx_t::nav_pvt_t *msg) { gpsLoc.setAltitude(msg->height() * 1e-03); gpsLoc.setSpeed(msg->g_speed() * 1e-03); gpsLoc.setBearingDeg(msg->head_mot() * 1e-5); - gpsLoc.setAccuracy(msg->h_acc() * 1e-03); + gpsLoc.setHorizontalAccuracy(msg->h_acc() * 1e-03); std::tm timeinfo = std::tm(); timeinfo.tm_year = msg->year() - 1900; timeinfo.tm_mon = msg->month() - 1; diff --git a/tools/plotjuggler/layouts/gps_vs_llk.xml b/tools/plotjuggler/layouts/gps_vs_llk.xml index 44980712ed..69b8f20058 100644 --- a/tools/plotjuggler/layouts/gps_vs_llk.xml +++ b/tools/plotjuggler/layouts/gps_vs_llk.xml @@ -32,7 +32,7 @@ - + diff --git a/tools/plotjuggler/layouts/ublox-debug.xml b/tools/plotjuggler/layouts/ublox-debug.xml index d595a9ecc7..ea4dd35535 100644 --- a/tools/plotjuggler/layouts/ublox-debug.xml +++ b/tools/plotjuggler/layouts/ublox-debug.xml @@ -8,7 +8,7 @@ - + diff --git a/tools/sim/lib/simulated_sensors.py b/tools/sim/lib/simulated_sensors.py index df6a0aeeff..e78f984736 100644 --- a/tools/sim/lib/simulated_sensors.py +++ b/tools/sim/lib/simulated_sensors.py @@ -55,7 +55,7 @@ class SimulatedSensors: dat.gpsLocationExternal = { "unixTimestampMillis": int(time.time() * 1000), "flags": 1, # valid fix - "accuracy": 1.0, + "horizontalAccuracy": 1.0, "verticalAccuracy": 1.0, "speedAccuracy": 0.1, "bearingAccuracyDeg": 0.1, From 3a6c3315ab181bf7390ae1faa6e87c93b1a97338 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 28 Feb 2024 23:12:14 -0500 Subject: [PATCH 015/599] Subaru: move to flags within PlatformConfig (#31584) * flags * update ref * use the flags directly * use post_init (don't freeze) * we can maintain frozen with custom class * not preglobal * move to common * cleanup --- common/utils.py | 11 +++++ selfdrive/car/__init__.py | 22 ++++++++-- selfdrive/car/chrysler/values.py | 2 +- selfdrive/car/ford/values.py | 2 +- selfdrive/car/gm/values.py | 2 +- selfdrive/car/interfaces.py | 3 +- selfdrive/car/nissan/values.py | 2 +- selfdrive/car/subaru/carcontroller.py | 13 +++--- selfdrive/car/subaru/carstate.py | 54 ++++++++++++------------ selfdrive/car/subaru/interface.py | 23 +++++----- selfdrive/car/subaru/values.py | 42 ++++++++++++------ selfdrive/car/volkswagen/values.py | 4 +- selfdrive/test/process_replay/ref_commit | 2 +- 13 files changed, 112 insertions(+), 70 deletions(-) create mode 100644 common/utils.py diff --git a/common/utils.py b/common/utils.py new file mode 100644 index 0000000000..b9de020ee6 --- /dev/null +++ b/common/utils.py @@ -0,0 +1,11 @@ +class Freezable: + _frozen: bool = False + + def freeze(self): + if not self._frozen: + self._frozen = True + + def __setattr__(self, *args, **kwargs): + if self._frozen: + raise Exception("cannot modify frozen object") + super().__setattr__(*args, **kwargs) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 297dc582f7..7f47abbf98 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -1,12 +1,14 @@ # functions common among cars from collections import namedtuple -from dataclasses import dataclass, field, replace -from enum import ReprEnum +from dataclasses import dataclass, field +from enum import IntFlag, ReprEnum +from dataclasses import replace import capnp from cereal import car from openpilot.common.numpy_fast import clip, interp +from openpilot.common.utils import Freezable from openpilot.selfdrive.car.docs_definitions import CarInfo @@ -256,11 +258,12 @@ class CarSpecs: minEnableSpeed: float = field(default=-1.) -@dataclass(frozen=True, order=True) -class PlatformConfig: +@dataclass(order=True) +class PlatformConfig(Freezable): platform_str: str car_info: CarInfos dbc_dict: DbcDict + flags: int = 0 specs: CarSpecs | None = None @@ -270,6 +273,13 @@ class PlatformConfig: def override(self, **kwargs): return replace(self, **kwargs) + def init(self): + pass + + def __post_init__(self): + self.init() + self.freeze() + class Platforms(str, ReprEnum): config: PlatformConfig @@ -287,3 +297,7 @@ class Platforms(str, ReprEnum): @classmethod def create_carinfo_map(cls) -> dict[str, CarInfos]: return {p: p.config.car_info for p in cls} + + @classmethod + def with_flags(cls, flags: IntFlag) -> set['Platforms']: + return {p for p in cls if p.config.flags & flags} diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 1cc51753d4..8fa7664b66 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -19,7 +19,7 @@ class ChryslerCarInfo(CarInfo): car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.fca])) -@dataclass(frozen=True) +@dataclass class ChryslerPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('chrysler_pacifica_2017_hybrid_generated', None)) diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index f969d395d2..e60b7f0612 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -64,7 +64,7 @@ class FordCarInfo(CarInfo): self.car_parts = CarParts([Device.threex, harness]) -@dataclass(frozen=True) +@dataclass class FordPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('ford_lincoln_base_pt', RADAR.DELPHI_MRR)) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index ca35b53f72..59b4b6ea30 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -79,7 +79,7 @@ class GMCarInfo(CarInfo): self.footnotes.append(Footnote.OBD_II) -@dataclass(frozen=True) +@dataclass class GMPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('gm_global_a_powertrain_generated', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis')) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 63005e6351..77912e478b 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -120,6 +120,7 @@ class CarInterfaceBase(ABC): ret.centerToFront = ret.wheelbase * candidate.config.specs.centerToFrontRatio ret.minEnableSpeed = candidate.config.specs.minEnableSpeed ret.minSteerSpeed = candidate.config.specs.minSteerSpeed + ret.flags |= int(candidate.config.flags) ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs) @@ -135,7 +136,7 @@ class CarInterfaceBase(ABC): @staticmethod @abstractmethod - def _get_params(ret: car.CarParams, candidate: Platform, fingerprint: dict[int, dict[int, int]], + def _get_params(ret: car.CarParams, candidate, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, docs: bool): raise NotImplementedError diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index 58e4eb051a..7af1700e0b 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -31,7 +31,7 @@ class NissanCarSpecs(CarSpecs): steerRatio: float = 17. -@dataclass(frozen=True) +@dataclass class NissanPlaformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('nissan_x_trail_2017_generated', None)) diff --git a/selfdrive/car/subaru/carcontroller.py b/selfdrive/car/subaru/carcontroller.py index 4a65c2c02c..22a1475b5b 100644 --- a/selfdrive/car/subaru/carcontroller.py +++ b/selfdrive/car/subaru/carcontroller.py @@ -3,8 +3,7 @@ from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_driver_steer_torque_limits, common_fault_avoidance from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.subaru import subarucan -from openpilot.selfdrive.car.subaru.values import DBC, GLOBAL_ES_ADDR, GLOBAL_GEN2, PREGLOBAL_CARS, HYBRID_CARS, STEER_RATE_LIMITED, \ - CanBus, CarControllerParams, SubaruFlags +from openpilot.selfdrive.car.subaru.values import DBC, GLOBAL_ES_ADDR, CanBus, CarControllerParams, SubaruFlags # FIXME: These limits aren't exact. The real limit is more than likely over a larger time period and # involves the total steering angle change rather than rate, but these limits work well for now @@ -43,12 +42,12 @@ class CarController(CarControllerBase): if not CC.latActive: apply_steer = 0 - if self.CP.carFingerprint in PREGLOBAL_CARS: + if self.CP.flags & SubaruFlags.PREGLOBAL: can_sends.append(subarucan.create_preglobal_steering_control(self.packer, self.frame // self.p.STEER_STEP, apply_steer, CC.latActive)) else: apply_steer_req = CC.latActive - if self.CP.carFingerprint in STEER_RATE_LIMITED: + if self.CP.flags & SubaruFlags.STEER_RATE_LIMITED: # Steering rate fault prevention self.steer_rate_counter, apply_steer_req = \ common_fault_avoidance(abs(CS.out.steeringRateDeg) > MAX_STEER_RATE, apply_steer_req, @@ -75,7 +74,7 @@ class CarController(CarControllerBase): cruise_brake = CarControllerParams.BRAKE_MIN # *** alerts and pcm cancel *** - if self.CP.carFingerprint in PREGLOBAL_CARS: + if self.CP.flags & SubaruFlags.PREGLOBAL: if self.frame % 5 == 0: # 1 = main, 2 = set shallow, 3 = set deep, 4 = resume shallow, 5 = resume deep # disengage ACC when OP is disengaged @@ -118,8 +117,8 @@ class CarController(CarControllerBase): self.CP.openpilotLongitudinalControl, cruise_brake > 0, cruise_throttle)) else: if pcm_cancel_cmd: - if self.CP.carFingerprint not in HYBRID_CARS: - bus = CanBus.alt if self.CP.carFingerprint in GLOBAL_GEN2 else CanBus.main + if not (self.CP.flags & SubaruFlags.HYBRID): + bus = CanBus.alt if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else CanBus.main can_sends.append(subarucan.create_es_distance(self.packer, CS.es_distance_msg["COUNTER"] + 1, CS.es_distance_msg, bus, pcm_cancel_cmd)) if self.CP.flags & SubaruFlags.DISABLE_EYESIGHT: diff --git a/selfdrive/car/subaru/carstate.py b/selfdrive/car/subaru/carstate.py index c8a6dfe1e6..ebf0ca9062 100644 --- a/selfdrive/car/subaru/carstate.py +++ b/selfdrive/car/subaru/carstate.py @@ -4,7 +4,7 @@ from opendbc.can.can_define import CANDefine from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.interfaces import CarStateBase from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.subaru.values import DBC, GLOBAL_GEN2, PREGLOBAL_CARS, HYBRID_CARS, CanBus, SubaruFlags +from openpilot.selfdrive.car.subaru.values import DBC, CanBus, SubaruFlags from openpilot.selfdrive.car import CanSignalRateCalculator @@ -19,17 +19,17 @@ class CarState(CarStateBase): def update(self, cp, cp_cam, cp_body): ret = car.CarState.new_message() - throttle_msg = cp.vl["Throttle"] if self.car_fingerprint not in HYBRID_CARS else cp_body.vl["Throttle_Hybrid"] + throttle_msg = cp.vl["Throttle"] if not (self.CP.flags & SubaruFlags.HYBRID) else cp_body.vl["Throttle_Hybrid"] ret.gas = throttle_msg["Throttle_Pedal"] / 255. ret.gasPressed = ret.gas > 1e-5 - if self.car_fingerprint in PREGLOBAL_CARS: + if self.CP.flags & SubaruFlags.PREGLOBAL: ret.brakePressed = cp.vl["Brake_Pedal"]["Brake_Pedal"] > 0 else: - cp_brakes = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp + cp_brakes = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp ret.brakePressed = cp_brakes.vl["Brake_Status"]["Brake"] == 1 - cp_wheels = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp + cp_wheels = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp ret.wheelSpeeds = self.get_wheel_speeds( cp_wheels.vl["Wheel_Speeds"]["FL"], cp_wheels.vl["Wheel_Speeds"]["FR"], @@ -48,24 +48,24 @@ class CarState(CarStateBase): ret.leftBlindspot = (cp.vl["BSD_RCTA"]["L_ADJACENT"] == 1) or (cp.vl["BSD_RCTA"]["L_APPROACHING"] == 1) ret.rightBlindspot = (cp.vl["BSD_RCTA"]["R_ADJACENT"] == 1) or (cp.vl["BSD_RCTA"]["R_APPROACHING"] == 1) - cp_transmission = cp_body if self.car_fingerprint in HYBRID_CARS else cp + cp_transmission = cp_body if self.CP.flags & SubaruFlags.HYBRID else cp can_gear = int(cp_transmission.vl["Transmission"]["Gear"]) ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(can_gear, None)) ret.steeringAngleDeg = cp.vl["Steering_Torque"]["Steering_Angle"] - if self.car_fingerprint not in PREGLOBAL_CARS: + if not (self.CP.flags & SubaruFlags.PREGLOBAL): # ideally we get this from the car, but unclear if it exists. diagnostic software doesn't even have it ret.steeringRateDeg = self.angle_rate_calulator.update(ret.steeringAngleDeg, cp.vl["Steering_Torque"]["COUNTER"]) ret.steeringTorque = cp.vl["Steering_Torque"]["Steer_Torque_Sensor"] ret.steeringTorqueEps = cp.vl["Steering_Torque"]["Steer_Torque_Output"] - steer_threshold = 75 if self.CP.carFingerprint in PREGLOBAL_CARS else 80 + steer_threshold = 75 if self.CP.flags & SubaruFlags.PREGLOBAL else 80 ret.steeringPressed = abs(ret.steeringTorque) > steer_threshold - cp_cruise = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp - if self.car_fingerprint in HYBRID_CARS: + cp_cruise = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp + if self.CP.flags & SubaruFlags.HYBRID: ret.cruiseState.enabled = cp_cam.vl["ES_DashStatus"]['Cruise_Activated'] != 0 ret.cruiseState.available = cp_cam.vl["ES_DashStatus"]['Cruise_On'] != 0 else: @@ -73,8 +73,8 @@ class CarState(CarStateBase): ret.cruiseState.available = cp_cruise.vl["CruiseControl"]["Cruise_On"] != 0 ret.cruiseState.speed = cp_cam.vl["ES_DashStatus"]["Cruise_Set_Speed"] * CV.KPH_TO_MS - if (self.car_fingerprint in PREGLOBAL_CARS and cp.vl["Dash_State2"]["UNITS"] == 1) or \ - (self.car_fingerprint not in PREGLOBAL_CARS and cp.vl["Dashlights"]["UNITS"] == 1): + if (self.CP.flags & SubaruFlags.PREGLOBAL and cp.vl["Dash_State2"]["UNITS"] == 1) or \ + (not (self.CP.flags & SubaruFlags.PREGLOBAL) and cp.vl["Dashlights"]["UNITS"] == 1): ret.cruiseState.speed *= CV.MPH_TO_KPH ret.seatbeltUnlatched = cp.vl["Dashlights"]["SEATBELT_FL"] == 1 @@ -84,8 +84,8 @@ class CarState(CarStateBase): cp.vl["BodyInfo"]["DOOR_OPEN_FL"]]) ret.steerFaultPermanent = cp.vl["Steering_Torque"]["Steer_Error_1"] == 1 - cp_es_distance = cp_body if self.car_fingerprint in (GLOBAL_GEN2 | HYBRID_CARS) else cp_cam - if self.car_fingerprint in PREGLOBAL_CARS: + cp_es_distance = cp_body if self.CP.flags & (SubaruFlags.GLOBAL_GEN2 | SubaruFlags.HYBRID) else cp_cam + if self.CP.flags & SubaruFlags.PREGLOBAL: self.cruise_button = cp_cam.vl["ES_Distance"]["Cruise_Button"] self.ready = not cp_cam.vl["ES_DashStatus"]["Not_Ready_Startup"] else: @@ -96,12 +96,12 @@ class CarState(CarStateBase): (cp_cam.vl["ES_LKAS_State"]["LKAS_Alert"] == 2) self.es_lkas_state_msg = copy.copy(cp_cam.vl["ES_LKAS_State"]) - cp_es_brake = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp_cam + cp_es_brake = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp_cam self.es_brake_msg = copy.copy(cp_es_brake.vl["ES_Brake"]) - cp_es_status = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp_cam + cp_es_status = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp_cam # TODO: Hybrid cars don't have ES_Distance, need a replacement - if self.car_fingerprint not in HYBRID_CARS: + if not (self.CP.flags & SubaruFlags.HYBRID): # 8 is known AEB, there are a few other values related to AEB we ignore ret.stockAeb = (cp_es_distance.vl["ES_Brake"]["AEB_Status"] == 8) and \ (cp_es_distance.vl["ES_Brake"]["Brake_Pressure"] != 0) @@ -109,7 +109,7 @@ class CarState(CarStateBase): self.es_status_msg = copy.copy(cp_es_status.vl["ES_Status"]) self.cruise_control_msg = copy.copy(cp_cruise.vl["CruiseControl"]) - if self.car_fingerprint not in HYBRID_CARS: + if not (self.CP.flags & SubaruFlags.HYBRID): self.es_distance_msg = copy.copy(cp_es_distance.vl["ES_Distance"]) self.es_dashstatus_msg = copy.copy(cp_cam.vl["ES_DashStatus"]) @@ -125,7 +125,7 @@ class CarState(CarStateBase): ("Brake_Status", 50), ] - if CP.carFingerprint not in HYBRID_CARS: + if not (CP.flags & SubaruFlags.HYBRID): messages.append(("CruiseControl", 20)) return messages @@ -136,7 +136,7 @@ class CarState(CarStateBase): ("ES_Brake", 20), ] - if CP.carFingerprint not in HYBRID_CARS: + if not (CP.flags & SubaruFlags.HYBRID): messages += [ ("ES_Distance", 20), ("ES_Status", 20) @@ -164,7 +164,7 @@ class CarState(CarStateBase): ("Brake_Pedal", 50), ] - if CP.carFingerprint not in HYBRID_CARS: + if not (CP.flags & SubaruFlags.HYBRID): messages += [ ("Throttle", 100), ("Transmission", 100) @@ -173,8 +173,8 @@ class CarState(CarStateBase): if CP.enableBsm: messages.append(("BSD_RCTA", 17)) - if CP.carFingerprint not in PREGLOBAL_CARS: - if CP.carFingerprint not in GLOBAL_GEN2: + if not (CP.flags & SubaruFlags.PREGLOBAL): + if not (CP.flags & SubaruFlags.GLOBAL_GEN2): messages += CarState.get_common_global_body_messages(CP) else: messages += CarState.get_common_preglobal_body_messages() @@ -183,7 +183,7 @@ class CarState(CarStateBase): @staticmethod def get_cam_can_parser(CP): - if CP.carFingerprint in PREGLOBAL_CARS: + if CP.flags & SubaruFlags.PREGLOBAL: messages = [ ("ES_DashStatus", 20), ("ES_Distance", 20), @@ -194,7 +194,7 @@ class CarState(CarStateBase): ("ES_LKAS_State", 10), ] - if CP.carFingerprint not in GLOBAL_GEN2: + if not (CP.flags & SubaruFlags.GLOBAL_GEN2): messages += CarState.get_common_global_es_messages(CP) if CP.flags & SubaruFlags.SEND_INFOTAINMENT: @@ -206,11 +206,11 @@ class CarState(CarStateBase): def get_body_can_parser(CP): messages = [] - if CP.carFingerprint in GLOBAL_GEN2: + if CP.flags & SubaruFlags.GLOBAL_GEN2: messages += CarState.get_common_global_body_messages(CP) messages += CarState.get_common_global_es_messages(CP) - if CP.carFingerprint in HYBRID_CARS: + if CP.flags & SubaruFlags.HYBRID: messages += [ ("Throttle_Hybrid", 40), ("Transmission", 100) diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 2dfb4f9565..ecf718bb3a 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -1,42 +1,43 @@ from cereal import car from panda import Panda from openpilot.selfdrive.car import get_safety_config -from openpilot.selfdrive.car.values import Platform from openpilot.selfdrive.car.disable_ecu import disable_ecu from openpilot.selfdrive.car.interfaces import CarInterfaceBase -from openpilot.selfdrive.car.subaru.values import CAR, GLOBAL_ES_ADDR, LKAS_ANGLE, GLOBAL_GEN2, PREGLOBAL_CARS, HYBRID_CARS, SubaruFlags +from openpilot.selfdrive.car.subaru.values import CAR, GLOBAL_ES_ADDR, SubaruFlags class CarInterface(CarInterfaceBase): @staticmethod - def _get_params(ret, candidate: Platform, fingerprint, car_fw, experimental_long, docs): + def _get_params(ret, candidate: CAR, fingerprint, car_fw, experimental_long, docs): + platform_flags = candidate.config.flags + ret.carName = "subaru" ret.radarUnavailable = True # for HYBRID CARS to be upstreamed, we need: # - replacement for ES_Distance so we can cancel the cruise control # - to find the Cruise_Activated bit from the car # - proper panda safety setup (use the correct cruise_activated bit, throttle from Throttle_Hybrid, etc) - ret.dashcamOnly = candidate in (PREGLOBAL_CARS | LKAS_ANGLE | HYBRID_CARS) + ret.dashcamOnly = bool(platform_flags & (SubaruFlags.PREGLOBAL | SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID)) ret.autoResumeSng = False # Detect infotainment message sent from the camera - if candidate not in PREGLOBAL_CARS and 0x323 in fingerprint[2]: + if not (platform_flags & SubaruFlags.PREGLOBAL) and 0x323 in fingerprint[2]: ret.flags |= SubaruFlags.SEND_INFOTAINMENT.value - if candidate in PREGLOBAL_CARS: + if platform_flags & SubaruFlags.PREGLOBAL: ret.enableBsm = 0x25c in fingerprint[0] ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.subaruPreglobal)] else: ret.enableBsm = 0x228 in fingerprint[0] ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.subaru)] - if candidate in GLOBAL_GEN2: + if platform_flags & SubaruFlags.GLOBAL_GEN2: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_SUBARU_GEN2 ret.steerLimitTimer = 0.4 ret.steerActuatorDelay = 0.1 - if candidate in LKAS_ANGLE: + if platform_flags & SubaruFlags.LKAS_ANGLE: ret.steerControlType = car.CarParams.SteerControlType.angle else: CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) @@ -84,10 +85,12 @@ class CarInterface(CarInterfaceBase): else: raise ValueError(f"unknown car: {candidate}") - ret.experimentalLongitudinalAvailable = candidate not in (GLOBAL_GEN2 | PREGLOBAL_CARS | LKAS_ANGLE | HYBRID_CARS) + LONG_UNAVAILABLE = SubaruFlags.GLOBAL_GEN2 | SubaruFlags.PREGLOBAL| SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID + + ret.experimentalLongitudinalAvailable = not (platform_flags & LONG_UNAVAILABLE) ret.openpilotLongitudinalControl = experimental_long and ret.experimentalLongitudinalAvailable - if candidate in GLOBAL_GEN2 and ret.openpilotLongitudinalControl: + if platform_flags & SubaruFlags.GLOBAL_GEN2 and ret.openpilotLongitudinalControl: ret.flags |= SubaruFlags.DISABLE_EYESIGHT.value if ret.openpilotLongitudinalControl: diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index a296550b12..a7c9a22e2c 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -19,7 +19,7 @@ class CarControllerParams: self.STEER_DRIVER_MULTIPLIER = 50 # weight driver torque heavily self.STEER_DRIVER_FACTOR = 1 # from dbc - if CP.carFingerprint in GLOBAL_GEN2: + if CP.flags & SubaruFlags.GLOBAL_GEN2: self.STEER_MAX = 1000 self.STEER_DELTA_UP = 40 self.STEER_DELTA_DOWN = 40 @@ -55,6 +55,14 @@ class CarControllerParams: class SubaruFlags(IntFlag): SEND_INFOTAINMENT = 1 DISABLE_EYESIGHT = 2 + GLOBAL_GEN2 = 4 + + # Cars that temporarily fault when steering angle rate is greater than some threshold. + # Appears to be all torque-based cars produced around 2019 - present + STEER_RATE_LIMITED = 8 + PREGLOBAL = 16 + HYBRID = 32 + LKAS_ANGLE = 64 GLOBAL_ES_ADDR = 0x787 @@ -89,10 +97,14 @@ class SubaruCarInfo(CarInfo): self.footnotes.append(Footnote.EXP_LONG) -@dataclass(frozen=True) +@dataclass class SubaruPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('subaru_global_2017_generated', None)) + def init(self): + if self.flags & SubaruFlags.HYBRID: + self.dbc_dict = dbc_dict('subaru_global_2020_hybrid_generated', None) + class CAR(Platforms): # Global platform @@ -105,11 +117,13 @@ class CAR(Platforms): "SUBARU OUTBACK 6TH GEN", SubaruCarInfo("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), + flags=SubaruFlags.GLOBAL_GEN2 | SubaruFlags.STEER_RATE_LIMITED, ) LEGACY = SubaruPlatformConfig( "SUBARU LEGACY 7TH GEN", SubaruCarInfo("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), specs=OUTBACK.specs, + flags=SubaruFlags.GLOBAL_GEN2 | SubaruFlags.STEER_RATE_LIMITED, ) IMPREZA = SubaruPlatformConfig( "SUBARU IMPREZA LIMITED 2019", @@ -128,24 +142,26 @@ class CAR(Platforms): SubaruCarInfo("Subaru XV 2020-21"), ], specs=CarSpecs(mass=1480, wheelbase=2.67, steerRatio=17), + flags=SubaruFlags.STEER_RATE_LIMITED, ) # TODO: is there an XV and Impreza too? CROSSTREK_HYBRID = SubaruPlatformConfig( "SUBARU CROSSTREK HYBRID 2020", SubaruCarInfo("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b])), - dbc_dict('subaru_global_2020_hybrid_generated', None), specs=CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), + flags=SubaruFlags.HYBRID, ) FORESTER = SubaruPlatformConfig( "SUBARU FORESTER 2019", SubaruCarInfo("Subaru Forester 2019-21", "All"), specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), + flags=SubaruFlags.STEER_RATE_LIMITED, ) FORESTER_HYBRID = SubaruPlatformConfig( "SUBARU FORESTER HYBRID 2020", SubaruCarInfo("Subaru Forester Hybrid 2020"), - dbc_dict('subaru_global_2020_hybrid_generated', None), specs=FORESTER.specs, + flags=SubaruFlags.HYBRID, ) # Pre-global FORESTER_PREGLOBAL = SubaruPlatformConfig( @@ -153,52 +169,50 @@ class CAR(Platforms): SubaruCarInfo("Subaru Forester 2017-18"), dbc_dict('subaru_forester_2017_generated', None), specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), + flags=SubaruFlags.PREGLOBAL, ) LEGACY_PREGLOBAL = SubaruPlatformConfig( "SUBARU LEGACY 2015 - 2018", SubaruCarInfo("Subaru Legacy 2015-18"), dbc_dict('subaru_outback_2015_generated', None), specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), + flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL = SubaruPlatformConfig( "SUBARU OUTBACK 2015 - 2017", SubaruCarInfo("Subaru Outback 2015-17"), dbc_dict('subaru_outback_2015_generated', None), specs=FORESTER_PREGLOBAL.specs, + flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( "SUBARU OUTBACK 2018 - 2019", SubaruCarInfo("Subaru Outback 2018-19"), dbc_dict('subaru_outback_2019_generated', None), specs=FORESTER_PREGLOBAL.specs, + flags=SubaruFlags.PREGLOBAL, ) # Angle LKAS FORESTER_2022 = SubaruPlatformConfig( "SUBARU FORESTER 2022", SubaruCarInfo("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c])), specs=FORESTER.specs, + flags=SubaruFlags.LKAS_ANGLE, ) OUTBACK_2023 = SubaruPlatformConfig( "SUBARU OUTBACK 7TH GEN", SubaruCarInfo("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), specs=OUTBACK.specs, + flags=SubaruFlags.GLOBAL_GEN2 | SubaruFlags.LKAS_ANGLE, ) ASCENT_2023 = SubaruPlatformConfig( "SUBARU ASCENT 2023", SubaruCarInfo("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), specs=ASCENT.specs, + flags=SubaruFlags.GLOBAL_GEN2 | SubaruFlags.LKAS_ANGLE, ) -LKAS_ANGLE = {CAR.FORESTER_2022, CAR.OUTBACK_2023, CAR.ASCENT_2023} -GLOBAL_GEN2 = {CAR.OUTBACK, CAR.LEGACY, CAR.OUTBACK_2023, CAR.ASCENT_2023} -PREGLOBAL_CARS = {CAR.FORESTER_PREGLOBAL, CAR.LEGACY_PREGLOBAL, CAR.OUTBACK_PREGLOBAL, CAR.OUTBACK_PREGLOBAL_2018} -HYBRID_CARS = {CAR.CROSSTREK_HYBRID, CAR.FORESTER_HYBRID} - -# Cars that temporarily fault when steering angle rate is greater than some threshold. -# Appears to be all torque-based cars produced around 2019 - present -STEER_RATE_LIMITED = GLOBAL_GEN2 | {CAR.IMPREZA_2020, CAR.FORESTER} - SUBARU_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(uds.DATA_IDENTIFIER_TYPE.APPLICATION_DATA_IDENTIFICATION) SUBARU_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ @@ -235,7 +249,7 @@ FW_QUERY_CONFIG = FwQueryConfig( ], # We don't get the EPS from non-OBD queries on GEN2 cars. Note that we still attempt to match when it exists non_essential_ecus={ - Ecu.eps: list(GLOBAL_GEN2), + Ecu.eps: list(CAR.with_flags(SubaruFlags.GLOBAL_GEN2)), } ) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 3344d58ea9..3e4a742224 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -112,11 +112,11 @@ class CANBUS: class VolkswagenFlags(IntFlag): STOCK_HCA_PRESENT = 1 -@dataclass(frozen=True) +@dataclass class VolkswagenMQBPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_mqb_2010', None)) -@dataclass(frozen=True) +@dataclass class VolkswagenPQPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_golf_mk4', None)) diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 0fa4652e4c..13f776fbad 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -dab93e072903e80f91029a03600430c43c722cb7 +b9d29ac9402cfc04bf3e48867415efa70c144029 From 851df7458fc13e15244a7d83196d70c71e56d712 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 28 Feb 2024 23:22:54 -0500 Subject: [PATCH 016/599] pr comments: only on external prs (#31635) only on external prs --- .github/workflows/auto_pr_review.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/auto_pr_review.yaml b/.github/workflows/auto_pr_review.yaml index 0720c1e676..42ef4dbc1c 100644 --- a/.github/workflows/auto_pr_review.yaml +++ b/.github/workflows/auto_pr_review.yaml @@ -39,6 +39,7 @@ jobs: steps: - name: comment uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 + if: github.event.pull_request.head.repo.full_name != 'commaai/openpilot' with: message: | From f20bfacb9434d5f9d2a6692352c1f686dec9327f Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 28 Feb 2024 20:22:59 -0800 Subject: [PATCH 017/599] move CarControllerBase up with other car classes --- selfdrive/car/interfaces.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 77912e478b..491138f788 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -456,6 +456,15 @@ class CarStateBase(ABC): return None +SendCan = tuple[int, int, bytes, int] + + +class CarControllerBase(ABC): + @abstractmethod + def update(self, CC, CS, now_nanos) -> tuple[car.CarControl.Actuators, list[SendCan]]: + pass + + INTERFACE_ATTR_FILE = { "FINGERPRINTS": "fingerprints", "FW_VERSIONS": "fingerprints", @@ -519,12 +528,3 @@ class NanoFFModel: pred = x[0] pred = pred * (self.weights['output_norm_mat'][1] - self.weights['output_norm_mat'][0]) + self.weights['output_norm_mat'][0] return pred - - -SendCan = tuple[int, int, bytes, int] - - -class CarControllerBase(ABC): - @abstractmethod - def update(self, CC, CS, now_nanos) -> tuple[car.CarControl.Actuators, list[SendCan]]: - pass From e4e9243f8d25711627bb4490ebb5255770e5f92c Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 28 Feb 2024 20:23:05 -0800 Subject: [PATCH 018/599] bump cereal --- cereal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cereal b/cereal index 2ad942be5b..bfbb0cab83 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 2ad942be5b42532d7919c2127cb531e7178cbd2b +Subproject commit bfbb0cab83e3ad49d85ad1a34ee1241bf1ff782f From 7e7a6b1526ef8e3628a8125ca8f95919993fa6f6 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 28 Feb 2024 20:34:44 -0800 Subject: [PATCH 019/599] bump panda --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index 0c7d5f11d7..ea156f7c62 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 0c7d5f11d7187904022ea49b6a76b54d7b280345 +Subproject commit ea156f7c628a371bea9a15a29f9068d5392534ba From e0a80d34d993fb4e7f2247ed3fc853d6e925f08e Mon Sep 17 00:00:00 2001 From: vanillagorillaa <31773928+vanillagorillaa@users.noreply.github.com> Date: Wed, 28 Feb 2024 20:45:48 -0800 Subject: [PATCH 020/599] Honda: add CanBus class (#31528) * init canbus class * zero * put back after rebase * cmt * ordering * fix bsm bus --------- Co-authored-by: Shane Smiskol --- selfdrive/car/honda/carcontroller.py | 15 +++---- selfdrive/car/honda/carstate.py | 8 ++-- selfdrive/car/honda/hondacan.py | 63 ++++++++++++++++++---------- selfdrive/car/honda/interface.py | 12 +++--- 4 files changed, 59 insertions(+), 39 deletions(-) diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 8170e1e9ef..547abcd9b9 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -110,6 +110,7 @@ class CarController(CarControllerBase): self.CP = CP self.packer = CANPacker(dbc_name) self.params = CarControllerParams(CP) + self.CAN = hondacan.CanBus(CP) self.frame = 0 self.braking = False @@ -168,7 +169,7 @@ class CarController(CarControllerBase): can_sends.append((0x18DAB0F1, 0, b"\x02\x3E\x80\x00\x00\x00\x00\x00", 1)) # 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, self.CAN, apply_steer, CC.latActive, self.CP.carFingerprint, CS.CP.openpilotLongitudinalControl)) # wind brake from air resistance decel at high speed @@ -202,12 +203,12 @@ class CarController(CarControllerBase): if not self.CP.openpilotLongitudinalControl: if self.frame % 2 == 0 and self.CP.carFingerprint not in HONDA_BOSCH_RADARLESS: # radarless cars don't have supplemental message - can_sends.append(hondacan.create_bosch_supplemental_1(self.packer, self.CP.carFingerprint)) + can_sends.append(hondacan.create_bosch_supplemental_1(self.packer, self.CAN, self.CP.carFingerprint)) # If using stock ACC, spam cancel command to kill gas when OP disengages. if pcm_cancel_cmd: - can_sends.append(hondacan.spam_buttons_command(self.packer, CruiseButtons.CANCEL, self.CP.carFingerprint)) + can_sends.append(hondacan.spam_buttons_command(self.packer, self.CAN, CruiseButtons.CANCEL, self.CP.carFingerprint)) elif CC.cruiseControl.resume: - can_sends.append(hondacan.spam_buttons_command(self.packer, CruiseButtons.RES_ACCEL, self.CP.carFingerprint)) + can_sends.append(hondacan.spam_buttons_command(self.packer, self.CAN, CruiseButtons.RES_ACCEL, self.CP.carFingerprint)) else: # Send gas and brake commands. @@ -220,7 +221,7 @@ class CarController(CarControllerBase): stopping = actuators.longControlState == LongCtrlState.stopping self.stopping_counter = self.stopping_counter + 1 if stopping else 0 - can_sends.extend(hondacan.create_acc_commands(self.packer, CC.enabled, CC.longActive, self.accel, self.gas, + can_sends.extend(hondacan.create_acc_commands(self.packer, self.CAN, CC.enabled, CC.longActive, self.accel, self.gas, self.stopping_counter, self.CP.carFingerprint)) else: apply_brake = clip(self.brake_last - wind_brake, 0.0, 1.0) @@ -228,7 +229,7 @@ class CarController(CarControllerBase): pump_on, self.last_pump_ts = brake_pump_hysteresis(apply_brake, self.apply_brake_last, self.last_pump_ts, ts) pcm_override = True - can_sends.append(hondacan.create_brake_command(self.packer, apply_brake, pump_on, + can_sends.append(hondacan.create_brake_command(self.packer, self.CAN, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw_display, self.CP.carFingerprint, CS.stock_brake)) self.apply_brake_last = apply_brake @@ -251,7 +252,7 @@ class CarController(CarControllerBase): if self.frame % 10 == 0: hud = HUDData(int(pcm_accel), int(round(hud_v_cruise)), hud_control.leadVisible, hud_control.lanesVisible, fcw_display, acc_alert, steer_required) - can_sends.extend(hondacan.create_ui_commands(self.packer, self.CP, CC.enabled, pcm_speed, hud, CS.is_metric, CS.acc_hud, CS.lkas_hud)) + can_sends.extend(hondacan.create_ui_commands(self.packer, self.CAN, self.CP, CC.enabled, pcm_speed, hud, CS.is_metric, CS.acc_hud, CS.lkas_hud)) if self.CP.openpilotLongitudinalControl and self.CP.carFingerprint not in HONDA_BOSCH: self.speed = pcm_speed diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index 4f5337813b..7784581e1c 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -5,7 +5,7 @@ from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import interp from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.honda.hondacan import get_cruise_speed_conversion, get_pt_bus +from openpilot.selfdrive.car.honda.hondacan import CanBus, get_cruise_speed_conversion from openpilot.selfdrive.car.honda.values import CAR, DBC, STEER_THRESHOLD, HONDA_BOSCH, \ HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_RADARLESS, \ HondaFlags @@ -267,7 +267,7 @@ class CarState(CarStateBase): def get_can_parser(self, CP): messages = get_can_messages(CP, self.gearbox_msg) - return CANParser(DBC[CP.carFingerprint]["pt"], messages, get_pt_bus(CP.carFingerprint)) + return CANParser(DBC[CP.carFingerprint]["pt"], messages, CanBus(CP).pt) @staticmethod def get_cam_can_parser(CP): @@ -287,7 +287,7 @@ class CarState(CarStateBase): ("BRAKE_COMMAND", 50), ] - return CANParser(DBC[CP.carFingerprint]["pt"], messages, 2) + return CANParser(DBC[CP.carFingerprint]["pt"], messages, CanBus(CP).camera) @staticmethod def get_body_can_parser(CP): @@ -296,6 +296,6 @@ class CarState(CarStateBase): ("BSM_STATUS_LEFT", 3), ("BSM_STATUS_RIGHT", 3), ] - bus_body = 0 # B-CAN is forwarded to ACC-CAN radar side (CAN 0 on fake ethernet port) + bus_body = CanBus(CP).radar # B-CAN is forwarded to ACC-CAN radar side (CAN 0 on fake ethernet port) return CANParser(DBC[CP.carFingerprint]["body"], messages, bus_body) return None diff --git a/selfdrive/car/honda/hondacan.py b/selfdrive/car/honda/hondacan.py index a8cbad78ce..d10d5576d9 100644 --- a/selfdrive/car/honda/hondacan.py +++ b/selfdrive/car/honda/hondacan.py @@ -1,4 +1,5 @@ from openpilot.common.conversions import Conversions as CV +from openpilot.selfdrive.car import CanBusBase from openpilot.selfdrive.car.honda.values import HondaFlags, HONDA_BOSCH, HONDA_BOSCH_RADARLESS, CAR, CarControllerParams # CAN bus layout with relay @@ -8,15 +9,34 @@ from openpilot.selfdrive.car.honda.values import HondaFlags, HONDA_BOSCH, HONDA_ # 3 = F-CAN A - OBDII port -def get_pt_bus(car_fingerprint): - return 1 if car_fingerprint in (HONDA_BOSCH - HONDA_BOSCH_RADARLESS) else 0 +class CanBus(CanBusBase): + def __init__(self, CP=None, fingerprint=None) -> None: + # use fingerprint if specified + super().__init__(CP if fingerprint is None else None, fingerprint) + + if CP.carFingerprint in (HONDA_BOSCH - HONDA_BOSCH_RADARLESS): + self._pt, self._radar = self.offset + 1, self.offset + else: + self._pt, self._radar = self.offset, self.offset + 1 + + @property + def pt(self) -> int: + return self._pt + + @property + def radar(self) -> int: + return self._radar + + @property + def camera(self) -> int: + return self.offset + 2 -def get_lkas_cmd_bus(car_fingerprint, radar_disabled=False): +def get_lkas_cmd_bus(CAN, car_fingerprint, radar_disabled=False): no_radar = car_fingerprint in HONDA_BOSCH_RADARLESS if radar_disabled or no_radar: # when radar is disabled, steering commands are sent directly to powertrain bus - return get_pt_bus(car_fingerprint) + return CAN.pt # normally steering commands are sent to radar, which forwards them to powertrain bus return 0 @@ -26,7 +46,7 @@ def get_cruise_speed_conversion(car_fingerprint: str, is_metric: bool) -> float: return CV.MPH_TO_MS if car_fingerprint in HONDA_BOSCH_RADARLESS and not is_metric else CV.KPH_TO_MS -def create_brake_command(packer, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw, car_fingerprint, stock_brake): +def create_brake_command(packer, CAN, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw, car_fingerprint, stock_brake): # TODO: do we loose pressure if we keep pump off for long? brakelights = apply_brake > 0 brake_rq = apply_brake > 0 @@ -47,13 +67,11 @@ def create_brake_command(packer, apply_brake, pump_on, pcm_override, pcm_cancel_ "AEB_REQ_2": 0, "AEB_STATUS": 0, } - bus = get_pt_bus(car_fingerprint) - return packer.make_can_msg("BRAKE_COMMAND", bus, values) + return packer.make_can_msg("BRAKE_COMMAND", CAN.pt, values) -def create_acc_commands(packer, enabled, active, accel, gas, stopping_counter, car_fingerprint): +def create_acc_commands(packer, CAN, enabled, active, accel, gas, stopping_counter, car_fingerprint): commands = [] - bus = get_pt_bus(car_fingerprint) min_gas_accel = CarControllerParams.BOSCH_GAS_LOOKUP_BP[0] control_on = 5 if enabled else 0 @@ -90,37 +108,36 @@ def create_acc_commands(packer, enabled, active, accel, gas, stopping_counter, c "SET_TO_75": 0x75, "SET_TO_30": 0x30, } - commands.append(packer.make_can_msg("ACC_CONTROL_ON", bus, acc_control_on_values)) + commands.append(packer.make_can_msg("ACC_CONTROL_ON", CAN.pt, acc_control_on_values)) - commands.append(packer.make_can_msg("ACC_CONTROL", bus, acc_control_values)) + commands.append(packer.make_can_msg("ACC_CONTROL", CAN.pt, acc_control_values)) return commands -def create_steering_control(packer, apply_steer, lkas_active, car_fingerprint, radar_disabled): +def create_steering_control(packer, CAN, apply_steer, lkas_active, car_fingerprint, radar_disabled): values = { "STEER_TORQUE": apply_steer if lkas_active else 0, "STEER_TORQUE_REQUEST": lkas_active, } - bus = get_lkas_cmd_bus(car_fingerprint, radar_disabled) + bus = get_lkas_cmd_bus(CAN, car_fingerprint, radar_disabled) return packer.make_can_msg("STEERING_CONTROL", bus, values) -def create_bosch_supplemental_1(packer, car_fingerprint): +def create_bosch_supplemental_1(packer, CAN, car_fingerprint): # non-active params values = { "SET_ME_X04": 0x04, "SET_ME_X80": 0x80, "SET_ME_X10": 0x10, } - bus = get_lkas_cmd_bus(car_fingerprint) + bus = get_lkas_cmd_bus(CAN, car_fingerprint) return packer.make_can_msg("BOSCH_SUPPLEMENTAL_1", bus, values) -def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, lkas_hud): +def create_ui_commands(packer, CAN, CP, enabled, pcm_speed, hud, is_metric, acc_hud, lkas_hud): commands = [] - bus_pt = get_pt_bus(CP.carFingerprint) radar_disabled = CP.carFingerprint in (HONDA_BOSCH - HONDA_BOSCH_RADARLESS) and CP.openpilotLongitudinalControl - bus_lkas = get_lkas_cmd_bus(CP.carFingerprint, radar_disabled) + bus_lkas = get_lkas_cmd_bus(CAN, CP.carFingerprint, radar_disabled) if CP.openpilotLongitudinalControl: acc_hud_values = { @@ -144,7 +161,7 @@ def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, acc_hud_values['FCM_OFF_2'] = acc_hud['FCM_OFF_2'] acc_hud_values['FCM_PROBLEM'] = acc_hud['FCM_PROBLEM'] acc_hud_values['ICONS'] = acc_hud['ICONS'] - commands.append(packer.make_can_msg("ACC_HUD", bus_pt, acc_hud_values)) + commands.append(packer.make_can_msg("ACC_HUD", CAN.pt, acc_hud_values)) lkas_hud_values = { 'SET_ME_X41': 0x41, @@ -173,19 +190,19 @@ def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, 'CMBS_OFF': 0x01, 'SET_TO_1': 0x01, } - commands.append(packer.make_can_msg('RADAR_HUD', bus_pt, radar_hud_values)) + commands.append(packer.make_can_msg('RADAR_HUD', CAN.pt, radar_hud_values)) if CP.carFingerprint == CAR.CIVIC_BOSCH: - commands.append(packer.make_can_msg("LEGACY_BRAKE_COMMAND", bus_pt, {})) + commands.append(packer.make_can_msg("LEGACY_BRAKE_COMMAND", CAN.pt, {})) return commands -def spam_buttons_command(packer, button_val, car_fingerprint): +def spam_buttons_command(packer, CAN, button_val, car_fingerprint): values = { 'CRUISE_BUTTONS': button_val, 'CRUISE_SETTING': 0, } # send buttons to camera on radarless cars - bus = 2 if car_fingerprint in HONDA_BOSCH_RADARLESS else get_pt_bus(car_fingerprint) + bus = CAN.camera if car_fingerprint in HONDA_BOSCH_RADARLESS else CAN.pt return packer.make_can_msg("SCM_BUTTONS", bus, values) diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 041ab67a97..a4cf647c0f 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -3,7 +3,7 @@ from cereal import car from panda import Panda from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import interp -from openpilot.selfdrive.car.honda.hondacan import get_pt_bus +from openpilot.selfdrive.car.honda.hondacan import CanBus from openpilot.selfdrive.car.honda.values import CarControllerParams, CruiseButtons, HondaFlags, CAR, HONDA_BOSCH, HONDA_NIDEC_ALT_SCM_MESSAGES, \ HONDA_BOSCH_RADARLESS from openpilot.selfdrive.car import create_button_events, get_safety_config @@ -36,6 +36,8 @@ class CarInterface(CarInterfaceBase): def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): ret.carName = "honda" + CAN = CanBus(ret, fingerprint) + if candidate in HONDA_BOSCH: ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.hondaBosch)] ret.radarUnavailable = True @@ -47,20 +49,20 @@ class CarInterface(CarInterfaceBase): ret.pcmCruise = not ret.openpilotLongitudinalControl else: ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.hondaNidec)] - ret.enableGasInterceptor = 0x201 in fingerprint[0] + ret.enableGasInterceptor = 0x201 in fingerprint[CAN.pt] ret.openpilotLongitudinalControl = True ret.pcmCruise = not ret.enableGasInterceptor if candidate == CAR.CRV_5G: - ret.enableBsm = 0x12f8bfa7 in fingerprint[0] + ret.enableBsm = 0x12f8bfa7 in fingerprint[CAN.radar] # Detect Bosch cars with new HUD msgs if any(0x33DA in f for f in fingerprint.values()): ret.flags |= HondaFlags.BOSCH_EXT_HUD.value # Accord ICE 1.5T CVT has different gearbox message - if candidate == CAR.ACCORD and 0x191 in fingerprint[1]: + if candidate == CAR.ACCORD and 0x191 in fingerprint[CAN.pt]: ret.transmissionType = TransmissionType.cvt # Certain Hondas have an extra steering sensor at the bottom of the steering rack, @@ -276,7 +278,7 @@ class CarInterface(CarInterfaceBase): raise ValueError(f"unsupported car {candidate}") # These cars use alternate user brake msg (0x1BE) - if 0x1BE in fingerprint[get_pt_bus(candidate)] and candidate in HONDA_BOSCH: + if 0x1BE in fingerprint[CAN.pt] and candidate in HONDA_BOSCH: ret.flags |= HondaFlags.BOSCH_ALT_BRAKE.value ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_ALT_BRAKE From 7687cafe8cc805a8be139c4d8a797bffd0df3fc8 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 28 Feb 2024 20:47:49 -0800 Subject: [PATCH 021/599] Ford: remove unnecessary __init__ --- selfdrive/car/ford/fordcan.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/selfdrive/car/ford/fordcan.py b/selfdrive/car/ford/fordcan.py index c5ef0900f3..e99ae084e6 100644 --- a/selfdrive/car/ford/fordcan.py +++ b/selfdrive/car/ford/fordcan.py @@ -5,9 +5,6 @@ HUDControl = car.CarControl.HUDControl class CanBus(CanBusBase): - def __init__(self, CP=None, fingerprint=None) -> None: - super().__init__(CP, fingerprint) - @property def main(self) -> int: return self.offset From b8c9d3bd09171a5b9a30cb91a262e9c089d28cfd Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 28 Feb 2024 21:13:26 -0800 Subject: [PATCH 022/599] Revert "Ford: remove unnecessary __init__" This reverts commit 7687cafe8cc805a8be139c4d8a797bffd0df3fc8. --- selfdrive/car/ford/fordcan.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/ford/fordcan.py b/selfdrive/car/ford/fordcan.py index e99ae084e6..c5ef0900f3 100644 --- a/selfdrive/car/ford/fordcan.py +++ b/selfdrive/car/ford/fordcan.py @@ -5,6 +5,9 @@ HUDControl = car.CarControl.HUDControl class CanBus(CanBusBase): + def __init__(self, CP=None, fingerprint=None) -> None: + super().__init__(CP, fingerprint) + @property def main(self) -> int: return self.offset From 85150c0289605c86f6aaeceebfc2376cd6027cf7 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 29 Feb 2024 01:54:41 -0600 Subject: [PATCH 023/599] Platform config small cleanup (#31638) no field, label mass, correct spacing --- selfdrive/car/__init__.py | 10 +++++----- selfdrive/car/volkswagen/values.py | 8 +++++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 7f47abbf98..fe4bacd62f 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -1,6 +1,6 @@ # functions common among cars from collections import namedtuple -from dataclasses import dataclass, field +from dataclasses import dataclass from enum import IntFlag, ReprEnum from dataclasses import replace @@ -250,12 +250,12 @@ CarInfos = CarInfo | list[CarInfo] @dataclass(frozen=True, kw_only=True) class CarSpecs: - mass: float + mass: float # kg, curb weight wheelbase: float steerRatio: float - centerToFrontRatio: float = field(default=0.5) - minSteerSpeed: float = field(default=0.) - minEnableSpeed: float = field(default=-1.) + centerToFrontRatio: float = 0.5 + minSteerSpeed: float = 0.0 + minEnableSpeed: float = -1.0 @dataclass(order=True) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 3e4a742224..065a340928 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -112,17 +112,21 @@ class CANBUS: class VolkswagenFlags(IntFlag): STOCK_HCA_PRESENT = 1 + @dataclass class VolkswagenMQBPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_mqb_2010', None)) + @dataclass class VolkswagenPQPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_golf_mk4', None)) + @dataclass(frozen=True, kw_only=True) class VolkswagenCarSpecs(CarSpecs): - steerRatio: float = field(default=15.6) + steerRatio: float = 15.6 + class Footnote(Enum): KAMIQ = CarFootnote( @@ -158,6 +162,7 @@ class VWCarInfo(CarInfo): if CP.carFingerprint in (CAR.CRAFTER_MK2, CAR.TRANSPORTER_T61): self.car_parts = CarParts([Device.threex_angled_mount, CarHarness.j533]) + # Check the 7th and 8th characters of the VIN before adding a new CAR. If the # chassis code is already listed below, don't add a new CAR, just add to the # FW_VERSIONS for that existing CAR. @@ -353,6 +358,7 @@ class CAR(Platforms): specs=VolkswagenCarSpecs(mass=1505, wheelbase=2.84), ) + PQ_CARS = {CAR.PASSAT_NMS, CAR.SHARAN_MK2} # All supported cars should return FW from the engine, srs, eps, and fwdRadar. Cars From 8e82bce17ae10b5df8c87ee77135ac556c4c1aac Mon Sep 17 00:00:00 2001 From: eFini Date: Thu, 29 Feb 2024 18:47:32 +0800 Subject: [PATCH 024/599] CHS/CHT translation update (#31642) update ZH translations --- selfdrive/ui/translations/main_zh-CHS.ts | 18 +++++++++--------- selfdrive/ui/translations/main_zh-CHT.ts | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index a27dc18bd2..59d6874035 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -68,23 +68,23 @@ Hidden Network - + 隐藏的网络 CONNECT - CONNECT + 连线 Enter SSID - 输入SSID + 输入 SSID Enter password - 输入密码 + 输入密码 for "%1" - 网络名称:"%1" + 网络名称:"%1" @@ -634,7 +634,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + 系统重置已触发。按下“确认”以清除所有内容和设置,按下“取消”以继续启动。 @@ -744,15 +744,15 @@ This may take up to a minute. Choose Software to Install - + 选择要安装的软件 openpilot - openpilot + openpilot Custom Software - + 定制软件 diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 1e7f1a614b..0079b47f7f 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -68,23 +68,23 @@ Hidden Network - + 隱藏的網路 CONNECT - 雲端服務 + 連線 Enter SSID - 輸入 SSID + 輸入 SSID Enter password - 輸入密碼 + 輸入密碼 for "%1" - 給 "%1" + 給 "%1" @@ -634,7 +634,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + 系統重設已啟動。按下「確認」以清除所有內容和設定,或按下「取消」以繼續開機。 @@ -744,15 +744,15 @@ This may take up to a minute. Choose Software to Install - + 選擇要安裝的軟體 openpilot - openpilot + openpilot Custom Software - + 自訂軟體 From 251eee46644c7975d732cb557af419d211532895 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Thu, 29 Feb 2024 16:17:13 +0000 Subject: [PATCH 025/599] test_processes: fix unclosed file (#31644) --- selfdrive/test/process_replay/test_processes.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/test/process_replay/test_processes.py b/selfdrive/test/process_replay/test_processes.py index 2b917b0f61..88e46abb06 100755 --- a/selfdrive/test/process_replay/test_processes.py +++ b/selfdrive/test/process_replay/test_processes.py @@ -156,7 +156,8 @@ if __name__ == "__main__": assert full_test, "Need to run full test when updating refs" try: - ref_commit = open(REF_COMMIT_FN).read().strip() + with open(REF_COMMIT_FN) as f: + ref_commit = f.read().strip() except FileNotFoundError: print("Couldn't find reference commit") sys.exit(1) From f775faf26d555a99f43b74f8949aeb463d1d868e Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 13:42:11 -0500 Subject: [PATCH 026/599] carspecs: add more units (#31646) more units --- selfdrive/car/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index fe4bacd62f..c4b685f818 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -251,11 +251,11 @@ CarInfos = CarInfo | list[CarInfo] @dataclass(frozen=True, kw_only=True) class CarSpecs: mass: float # kg, curb weight - wheelbase: float + wheelbase: float # meters steerRatio: float centerToFrontRatio: float = 0.5 - minSteerSpeed: float = 0.0 - minEnableSpeed: float = -1.0 + minSteerSpeed: float = 0.0 # m/s + minEnableSpeed: float = -1.0 # m/s @dataclass(order=True) From 80807879de395ae87ae3bcd88cd83eaac24ca744 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 14:11:37 -0500 Subject: [PATCH 027/599] Tesla: move to platform config (#31648) tesla platform config --- selfdrive/car/tesla/interface.py | 10 +--------- selfdrive/car/tesla/values.py | 34 +++++++++++++++++++------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/selfdrive/car/tesla/interface.py b/selfdrive/car/tesla/interface.py index e06139729c..537433a350 100755 --- a/selfdrive/car/tesla/interface.py +++ b/selfdrive/car/tesla/interface.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 from cereal import car from panda import Panda -from openpilot.selfdrive.car.tesla.values import CANBUS, CAR +from openpilot.selfdrive.car.tesla.values import CANBUS from openpilot.selfdrive.car import get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase @@ -41,14 +41,6 @@ class CarInterface(CarInterfaceBase): ret.steerLimitTimer = 1.0 ret.steerActuatorDelay = 0.25 - if candidate in (CAR.AP2_MODELS, CAR.AP1_MODELS): - ret.mass = 2100. - ret.wheelbase = 2.959 - ret.centerToFront = ret.wheelbase * 0.5 - ret.steerRatio = 15.0 - else: - raise ValueError(f"Unsupported car: {candidate}") - return ret def _update(self, c): diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index 2a51d15da8..74d2debe1f 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -1,8 +1,8 @@ from collections import namedtuple -from enum import StrEnum +from dataclasses import dataclass, field from cereal import car -from openpilot.selfdrive.car import AngleRateLimit, dbc_dict +from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarInfo from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -11,22 +11,24 @@ Ecu = car.CarParams.Ecu Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values']) -class CAR(StrEnum): - AP1_MODELS = 'TESLA AP1 MODEL S' - AP2_MODELS = 'TESLA AP2 MODEL S' +@dataclass +class TeslaPlatformConfig(PlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('tesla_powertrain', 'tesla_radar', chassis_dbc='tesla_can')) -CAR_INFO: dict[str, CarInfo | list[CarInfo]] = { - CAR.AP1_MODELS: CarInfo("Tesla AP1 Model S", "All"), - CAR.AP2_MODELS: CarInfo("Tesla AP2 Model S", "All"), -} +class CAR(Platforms): + AP1_MODELS = TeslaPlatformConfig( + 'TESLA AP1 MODEL S', + CarInfo("Tesla AP1 Model S", "All"), + specs=CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0) + ) + AP2_MODELS = TeslaPlatformConfig( + 'TESLA AP2 MODEL S', + CarInfo("Tesla AP2 Model S", "All"), + specs=AP1_MODELS.specs + ) -DBC = { - CAR.AP2_MODELS: dbc_dict('tesla_powertrain', 'tesla_radar', chassis_dbc='tesla_can'), - CAR.AP1_MODELS: dbc_dict('tesla_powertrain', 'tesla_radar', chassis_dbc='tesla_can'), -} - FW_QUERY_CONFIG = FwQueryConfig( requests=[ Request( @@ -88,3 +90,7 @@ class CarControllerParams: def __init__(self, CP): pass + + +CAR_INFO = CAR.create_carinfo_map() +DBC = CAR.create_dbc_map() From e122f1d7498d5964066bcc6b3f63b7d215f6d591 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 14:14:00 -0500 Subject: [PATCH 028/599] Mazda: move to platform config (#31647) * mazda platform config * update ref --- selfdrive/car/mazda/carcontroller.py | 6 +- selfdrive/car/mazda/carstate.py | 6 +- selfdrive/car/mazda/interface.py | 17 ------ selfdrive/car/mazda/mazdacan.py | 10 +-- selfdrive/car/mazda/values.py | 77 +++++++++++++++--------- selfdrive/test/process_replay/ref_commit | 2 +- 6 files changed, 59 insertions(+), 59 deletions(-) diff --git a/selfdrive/car/mazda/carcontroller.py b/selfdrive/car/mazda/carcontroller.py index 3f3b7a9494..8d3a59b4ea 100644 --- a/selfdrive/car/mazda/carcontroller.py +++ b/selfdrive/car/mazda/carcontroller.py @@ -36,13 +36,13 @@ class CarController(CarControllerBase): if self.frame % 10 == 0 and not (CS.out.brakePressed and self.brake_counter < 7): # Cancel Stock ACC if it's enabled while OP is disengaged # Send at a rate of 10hz until we sync with stock ACC state - can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP.carFingerprint, CS.crz_btns_counter, Buttons.CANCEL)) + can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP, CS.crz_btns_counter, Buttons.CANCEL)) else: self.brake_counter = 0 if CC.cruiseControl.resume and self.frame % 5 == 0: # Mazda Stop and Go requires a RES button (or gas) press if the car stops more than 3 seconds # Send Resume button when planner wants car to move - can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP.carFingerprint, CS.crz_btns_counter, Buttons.RESUME)) + can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP, CS.crz_btns_counter, Buttons.RESUME)) self.apply_steer_last = apply_steer @@ -55,7 +55,7 @@ class CarController(CarControllerBase): can_sends.append(mazdacan.create_alert_command(self.packer, CS.cam_laneinfo, ldw, steer_required)) # send steering command - can_sends.append(mazdacan.create_steering_control(self.packer, self.CP.carFingerprint, + can_sends.append(mazdacan.create_steering_control(self.packer, self.CP, self.frame, apply_steer, CS.cam_lkas)) new_actuators = CC.actuators.copy() diff --git a/selfdrive/car/mazda/carstate.py b/selfdrive/car/mazda/carstate.py index c0819592d4..37a67ecd93 100644 --- a/selfdrive/car/mazda/carstate.py +++ b/selfdrive/car/mazda/carstate.py @@ -3,7 +3,7 @@ from openpilot.common.conversions import Conversions as CV from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser from openpilot.selfdrive.car.interfaces import CarStateBase -from openpilot.selfdrive.car.mazda.values import DBC, LKAS_LIMITS, GEN1 +from openpilot.selfdrive.car.mazda.values import DBC, LKAS_LIMITS, MazdaFlags class CarState(CarStateBase): def __init__(self, CP): @@ -116,7 +116,7 @@ class CarState(CarStateBase): ("WHEEL_SPEEDS", 100), ] - if CP.carFingerprint in GEN1: + if CP.flags & MazdaFlags.GEN1: messages += [ ("ENGINE_DATA", 100), ("CRZ_CTRL", 50), @@ -136,7 +136,7 @@ class CarState(CarStateBase): def get_cam_can_parser(CP): messages = [] - if CP.carFingerprint in GEN1: + if CP.flags & MazdaFlags.GEN1: messages += [ # sig_address, frequency ("CAM_LANEINFO", 2), diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 7ac93d9dee..a138318b1a 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -24,23 +24,6 @@ class CarInterface(CarInterfaceBase): CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - if candidate in (CAR.CX5, CAR.CX5_2022): - ret.mass = 3655 * CV.LB_TO_KG - ret.wheelbase = 2.7 - ret.steerRatio = 15.5 - elif candidate in (CAR.CX9, CAR.CX9_2021): - ret.mass = 4217 * CV.LB_TO_KG - ret.wheelbase = 3.1 - ret.steerRatio = 17.6 - elif candidate == CAR.MAZDA3: - ret.mass = 2875 * CV.LB_TO_KG - ret.wheelbase = 2.7 - ret.steerRatio = 14.0 - elif candidate == CAR.MAZDA6: - ret.mass = 3443 * CV.LB_TO_KG - ret.wheelbase = 2.83 - ret.steerRatio = 15.5 - if candidate not in (CAR.CX5_2022, ): ret.minSteerSpeed = LKAS_LIMITS.DISABLE_SPEED * CV.KPH_TO_MS diff --git a/selfdrive/car/mazda/mazdacan.py b/selfdrive/car/mazda/mazdacan.py index e350c5587f..74f6af04c5 100644 --- a/selfdrive/car/mazda/mazdacan.py +++ b/selfdrive/car/mazda/mazdacan.py @@ -1,7 +1,7 @@ -from openpilot.selfdrive.car.mazda.values import GEN1, Buttons +from openpilot.selfdrive.car.mazda.values import Buttons, MazdaFlags -def create_steering_control(packer, car_fingerprint, frame, apply_steer, lkas): +def create_steering_control(packer, CP, frame, apply_steer, lkas): tmp = apply_steer + 2048 @@ -45,7 +45,7 @@ def create_steering_control(packer, car_fingerprint, frame, apply_steer, lkas): csum = csum % 256 values = {} - if car_fingerprint in GEN1: + if CP.flags & MazdaFlags.GEN1: values = { "LKAS_REQUEST": apply_steer, "CTR": ctr, @@ -88,12 +88,12 @@ def create_alert_command(packer, cam_msg: dict, ldw: bool, steer_required: bool) return packer.make_can_msg("CAM_LANEINFO", 0, values) -def create_button_cmd(packer, car_fingerprint, counter, button): +def create_button_cmd(packer, CP, counter, button): can = int(button == Buttons.CANCEL) res = int(button == Buttons.RESUME) - if car_fingerprint in GEN1: + if CP.flags & MazdaFlags.GEN1: values = { "CAN_OFF": can, "CAN_OFF_INV": (can + 1) % 2, diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index eaf76d6a72..246038bba3 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -1,8 +1,9 @@ from dataclasses import dataclass, field -from enum import StrEnum +from enum import IntFlag from cereal import car -from openpilot.selfdrive.car import dbc_dict +from openpilot.common.conversions import Conversions as CV +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -25,29 +26,54 @@ class CarControllerParams: pass -class CAR(StrEnum): - CX5 = "MAZDA CX-5" - CX9 = "MAZDA CX-9" - MAZDA3 = "MAZDA 3" - MAZDA6 = "MAZDA 6" - CX9_2021 = "MAZDA CX-9 2021" - CX5_2022 = "MAZDA CX-5 2022" - - @dataclass class MazdaCarInfo(CarInfo): package: str = "All" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda])) -CAR_INFO: dict[str, MazdaCarInfo | list[MazdaCarInfo]] = { - CAR.CX5: MazdaCarInfo("Mazda CX-5 2017-21"), - CAR.CX9: MazdaCarInfo("Mazda CX-9 2016-20"), - CAR.MAZDA3: MazdaCarInfo("Mazda 3 2017-18"), - CAR.MAZDA6: MazdaCarInfo("Mazda 6 2017-20"), - CAR.CX9_2021: MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4"), - CAR.CX5_2022: MazdaCarInfo("Mazda CX-5 2022-24"), -} +class MazdaFlags(IntFlag): + # Gen 1 hardware: same CAN messages and same camera + GEN1 = 1 + + +@dataclass +class MazdaPlatformConfig(PlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('mazda_2017', None)) + flags: int = field(default=MazdaFlags.GEN1) + + +class CAR(Platforms): + CX5 = MazdaPlatformConfig( + "MAZDA CX-5", + MazdaCarInfo("Mazda CX-5 2017-21"), + specs=CarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) + ) + CX9 = MazdaPlatformConfig( + "MAZDA CX-9", + MazdaCarInfo("Mazda CX-9 2016-20"), + specs=CarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) + ) + MAZDA3 = MazdaPlatformConfig( + "MAZDA 3", + MazdaCarInfo("Mazda 3 2017-18"), + specs=CarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) + ) + MAZDA6 = MazdaPlatformConfig( + "MAZDA 6", + MazdaCarInfo("Mazda 6 2017-20"), + specs=CarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) + ) + CX9_2021 = MazdaPlatformConfig( + "MAZDA CX-9 2021", + MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4"), + specs=CX9.specs + ) + CX5_2022 = MazdaPlatformConfig( + "MAZDA CX-5 2022", + MazdaCarInfo("Mazda CX-5 2022-24"), + specs=CX5.specs, + ) class LKAS_LIMITS: @@ -76,14 +102,5 @@ FW_QUERY_CONFIG = FwQueryConfig( ) -DBC = { - CAR.CX5: dbc_dict('mazda_2017', None), - CAR.CX9: dbc_dict('mazda_2017', None), - CAR.MAZDA3: dbc_dict('mazda_2017', None), - CAR.MAZDA6: dbc_dict('mazda_2017', None), - CAR.CX9_2021: dbc_dict('mazda_2017', None), - CAR.CX5_2022: dbc_dict('mazda_2017', None), -} - -# Gen 1 hardware: same CAN messages and same camera -GEN1 = {CAR.CX5, CAR.CX9, CAR.CX9_2021, CAR.MAZDA3, CAR.MAZDA6, CAR.CX5_2022} +CAR_INFO = CAR.create_carinfo_map() +DBC = CAR.create_dbc_map() diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 13f776fbad..3c29e9238b 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -b9d29ac9402cfc04bf3e48867415efa70c144029 +658699a6ba183bd97f161baa29cd4764b6bd2c30 From 5734d7c2bf13c217e469d37c4900321cba469121 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 14:29:40 -0500 Subject: [PATCH 029/599] Honda: move to platformconfig (#31637) * first * Fixes * not * not * Fixes * fix * cleanup + use sets for now * update ref * update ref --- selfdrive/car/__init__.py | 2 +- selfdrive/car/honda/values.py | 288 +++++++++++++++-------- selfdrive/car/tests/test_models.py | 6 +- selfdrive/test/process_replay/ref_commit | 2 +- 4 files changed, 190 insertions(+), 108 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index c4b685f818..42cd135446 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -245,7 +245,7 @@ class CanSignalRateCalculator: return self.rate -CarInfos = CarInfo | list[CarInfo] +CarInfos = CarInfo | list[CarInfo] | None @dataclass(frozen=True, kw_only=True) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index ce4a531d01..2b11086405 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -1,10 +1,10 @@ from dataclasses import dataclass -from enum import Enum, IntFlag, StrEnum +from enum import Enum, IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV from panda.python import uds -from openpilot.selfdrive.car import dbc_dict +from openpilot.selfdrive.car import PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -46,10 +46,21 @@ class CarControllerParams: class HondaFlags(IntFlag): + # Detected flags # Bosch models with alternate set of LKAS_HUD messages BOSCH_EXT_HUD = 1 BOSCH_ALT_BRAKE = 2 + # Static flags + BOSCH = 4 + BOSCH_RADARLESS = 8 + + NIDEC = 16 + NIDEC_ALT_PCM_ACCEL = 32 + NIDEC_ALT_SCM_MESSAGES = 64 + + AUTORESUME_SNG = 128 + ELECTRIC_PARKING_BRAKE = 256 # Car button codes class CruiseButtons: @@ -72,29 +83,15 @@ VISUAL_HUD = { } -class CAR(StrEnum): - ACCORD = "HONDA ACCORD 2018" - CIVIC = "HONDA CIVIC 2016" - CIVIC_BOSCH = "HONDA CIVIC (BOSCH) 2019" - CIVIC_BOSCH_DIESEL = "HONDA CIVIC SEDAN 1.6 DIESEL 2019" - CIVIC_2022 = "HONDA CIVIC 2022" - ACURA_ILX = "ACURA ILX 2016" - CRV = "HONDA CR-V 2016" - CRV_5G = "HONDA CR-V 2017" - CRV_EU = "HONDA CR-V EU 2016" - CRV_HYBRID = "HONDA CR-V HYBRID 2019" - FIT = "HONDA FIT 2018" - FREED = "HONDA FREED 2020" - HRV = "HONDA HRV 2019" - HRV_3G = "HONDA HR-V 2023" - ODYSSEY = "HONDA ODYSSEY 2018" - ODYSSEY_CHN = "HONDA ODYSSEY CHN 2019" - ACURA_RDX = "ACURA RDX 2018" - ACURA_RDX_3G = "ACURA RDX 2020" - PILOT = "HONDA PILOT 2017" - RIDGELINE = "HONDA RIDGELINE 2017" - INSIGHT = "HONDA INSIGHT 2019" - HONDA_E = "HONDA E 2020" +@dataclass +class HondaCarInfo(CarInfo): + package: str = "Honda Sensing" + + def init_make(self, CP: car.CarParams): + if CP.flags & HondaFlags.BOSCH: + self.car_parts = CarParts.common([CarHarness.bosch_b]) if CP.flags & HondaFlags.BOSCH_RADARLESS else CarParts.common([CarHarness.bosch_a]) + else: + self.car_parts = CarParts.common([CarHarness.nidec]) class Footnote(Enum): @@ -103,55 +100,164 @@ class Footnote(Enum): Column.FSR_STEERING) -@dataclass -class HondaCarInfo(CarInfo): - package: str = "Honda Sensing" - - def init_make(self, CP: car.CarParams): - if CP.carFingerprint in HONDA_BOSCH: - self.car_parts = CarParts.common([CarHarness.bosch_b]) if CP.carFingerprint in HONDA_BOSCH_RADARLESS else CarParts.common([CarHarness.bosch_a]) - else: - self.car_parts = CarParts.common([CarHarness.nidec]) +class HondaPlatformConfig(PlatformConfig): + def init(self): + if self.flags & HondaFlags.BOSCH: + self.flags |= HondaFlags.AUTORESUME_SNG + self.flags |= HondaFlags.ELECTRIC_PARKING_BRAKE -CAR_INFO: dict[str, HondaCarInfo | list[HondaCarInfo] | None] = { - CAR.ACCORD: [ - HondaCarInfo("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), - HondaCarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), - HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), - ], - CAR.CIVIC: HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE"), - CAR.CIVIC_BOSCH: [ - HondaCarInfo("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", - footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), - HondaCarInfo("Honda Civic Hatchback 2017-21", min_steer_speed=12. * CV.MPH_TO_MS), - ], - CAR.CIVIC_BOSCH_DIESEL: None, # same platform - CAR.CIVIC_2022: [ - HondaCarInfo("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), - HondaCarInfo("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), - ], - CAR.ACURA_ILX: HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), - CAR.CRV: HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.CRV_5G: HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.CRV_EU: None, # HondaCarInfo("Honda CR-V EU", "Touring"), # Euro version of CRV Touring - CAR.CRV_HYBRID: HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.FIT: HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.FREED: HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.HRV: HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.HRV_3G: HondaCarInfo("Honda HR-V 2023", "All"), - CAR.ODYSSEY: HondaCarInfo("Honda Odyssey 2018-20"), - CAR.ODYSSEY_CHN: None, # Chinese version of Odyssey - CAR.ACURA_RDX: HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.ACURA_RDX_3G: HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.PILOT: [ - HondaCarInfo("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), - HondaCarInfo("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), - ], - CAR.RIDGELINE: HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.INSIGHT: HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.HONDA_E: HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), -} +class CAR(Platforms): + # Bosch Cars + ACCORD = HondaPlatformConfig( + "HONDA ACCORD 2018", + [ + HondaCarInfo("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + ], + dbc_dict('honda_accord_2018_can_generated', None), + flags=HondaFlags.BOSCH, + ) + CIVIC_BOSCH = HondaPlatformConfig( + "HONDA CIVIC (BOSCH) 2019", + [ + HondaCarInfo("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", + footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), + HondaCarInfo("Honda Civic Hatchback 2017-21", min_steer_speed=12. * CV.MPH_TO_MS), + ], + dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), + flags=HondaFlags.BOSCH + ) + CIVIC_BOSCH_DIESEL = HondaPlatformConfig( + "HONDA CIVIC SEDAN 1.6 DIESEL 2019", + None, # don't show in docs + dbc_dict('honda_accord_2018_can_generated', None), + flags=HondaFlags.BOSCH + ) + CIVIC_2022 = HondaPlatformConfig( + "HONDA CIVIC 2022", + [ + HondaCarInfo("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), + HondaCarInfo("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), + ], + dbc_dict('honda_civic_ex_2022_can_generated', None), + flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS, + ) + CRV_5G = HondaPlatformConfig( + "HONDA CR-V 2017", + HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), + dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), + flags=HondaFlags.BOSCH, + ) + CRV_HYBRID = HondaPlatformConfig( + "HONDA CR-V HYBRID 2019", + HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS), + dbc_dict('honda_accord_2018_can_generated', None), + flags=HondaFlags.BOSCH + ) + HRV_3G = HondaPlatformConfig( + "HONDA HR-V 2023", + HondaCarInfo("Honda HR-V 2023", "All"), + dbc_dict('honda_civic_ex_2022_can_generated', None), + flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS + ) + ACURA_RDX_3G = HondaPlatformConfig( + "ACURA RDX 2020", + HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + dbc_dict('acura_rdx_2020_can_generated', None), + flags=HondaFlags.BOSCH + ) + INSIGHT = HondaPlatformConfig( + "HONDA INSIGHT 2019", + HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + dbc_dict('honda_insight_ex_2019_can_generated', None), + flags=HondaFlags.BOSCH + ) + HONDA_E = HondaPlatformConfig( + "HONDA E 2020", + HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), + dbc_dict('acura_rdx_2020_can_generated', None), + flags=HondaFlags.BOSCH + ) + + # Nidec Cars + ACURA_ILX = HondaPlatformConfig( + "ACURA ILX 2016", + HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), + dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + CRV = HondaPlatformConfig( + "HONDA CR-V 2016", + HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS), + dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + CRV_EU = HondaPlatformConfig( + "HONDA CR-V EU 2016", + None, # Euro version of CRV Touring, don't show in docs + dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + FIT = HondaPlatformConfig( + "HONDA FIT 2018", + HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS), + dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + FREED = HondaPlatformConfig( + "HONDA FREED 2020", + HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS), + dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HRV = HondaPlatformConfig( + "HONDA HRV 2019", + HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS), + dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + ODYSSEY = HondaPlatformConfig( + "HONDA ODYSSEY 2018", + HondaCarInfo("Honda Odyssey 2018-20"), + dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_PCM_ACCEL + ) + ODYSSEY_CHN = HondaPlatformConfig( + "HONDA ODYSSEY CHN 2019", + None, # Chinese version of Odyssey, don't show in docs + dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES + ) + ACURA_RDX = HondaPlatformConfig( + "ACURA RDX 2018", + HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), + dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + PILOT = HondaPlatformConfig( + "HONDA PILOT 2017", + [ + HondaCarInfo("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), + HondaCarInfo("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), + ], + dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + RIDGELINE = HondaPlatformConfig( + "HONDA RIDGELINE 2017", + HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS), + dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + CIVIC = HondaPlatformConfig( + "HONDA CIVIC 2016", + HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE"), + dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC | HondaFlags.AUTORESUME_SNG | HondaFlags.ELECTRIC_PARKING_BRAKE, + ) + HONDA_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(0xF112) @@ -217,40 +323,16 @@ FW_QUERY_CONFIG = FwQueryConfig( ) -DBC = { - CAR.ACCORD: dbc_dict('honda_accord_2018_can_generated', None), - CAR.ACURA_ILX: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.ACURA_RDX: dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), - CAR.ACURA_RDX_3G: dbc_dict('acura_rdx_2020_can_generated', None), - CAR.CIVIC: dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.CIVIC_BOSCH: dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), - CAR.CIVIC_BOSCH_DIESEL: dbc_dict('honda_accord_2018_can_generated', None), - CAR.CRV: dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.CRV_5G: dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), - CAR.CRV_EU: dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.CRV_HYBRID: dbc_dict('honda_accord_2018_can_generated', None), - CAR.FIT: dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - CAR.FREED: dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - CAR.HRV: dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - CAR.HRV_3G: dbc_dict('honda_civic_ex_2022_can_generated', None), - 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.PILOT: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.RIDGELINE: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.INSIGHT: dbc_dict('honda_insight_ex_2019_can_generated', None), - CAR.HONDA_E: dbc_dict('acura_rdx_2020_can_generated', None), - CAR.CIVIC_2022: dbc_dict('honda_civic_ex_2022_can_generated', None), -} - STEER_THRESHOLD = { # default is 1200, overrides go here CAR.ACURA_RDX: 400, CAR.CRV_EU: 400, } -HONDA_NIDEC_ALT_PCM_ACCEL = {CAR.ODYSSEY} -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.RIDGELINE} -HONDA_BOSCH = {CAR.ACCORD, 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, CAR.HRV_3G} -HONDA_BOSCH_RADARLESS = {CAR.CIVIC_2022, CAR.HRV_3G} +HONDA_NIDEC_ALT_PCM_ACCEL = CAR.with_flags(HondaFlags.NIDEC_ALT_PCM_ACCEL) +HONDA_NIDEC_ALT_SCM_MESSAGES = CAR.with_flags(HondaFlags.NIDEC_ALT_SCM_MESSAGES) +HONDA_BOSCH = CAR.with_flags(HondaFlags.BOSCH) +HONDA_BOSCH_RADARLESS = CAR.with_flags(HondaFlags.BOSCH_RADARLESS) + +CAR_INFO = CAR.create_carinfo_map() +DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 2b29c14f72..b7d20e5a83 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -17,7 +17,7 @@ from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import gen_empty_fingerprint from openpilot.selfdrive.car.fingerprints import all_known_cars from openpilot.selfdrive.car.car_helpers import FRAME_FINGERPRINT, interfaces -from openpilot.selfdrive.car.honda.values import CAR as HONDA, HONDA_BOSCH +from openpilot.selfdrive.car.honda.values import CAR as HONDA, HondaFlags from openpilot.selfdrive.car.tests.routes import non_tested_cars, routes, CarTestRoute from openpilot.selfdrive.controls.controlsd import Controls from openpilot.selfdrive.test.helpers import read_segment_list @@ -381,7 +381,7 @@ class TestCarModelBase(unittest.TestCase): if self.safety.get_vehicle_moving() != prev_panda_vehicle_moving: self.assertEqual(not CS.standstill, self.safety.get_vehicle_moving()) - if not (self.CP.carName == "honda" and self.CP.carFingerprint not in HONDA_BOSCH): + if not (self.CP.carName == "honda" and not (self.CP.flags & HondaFlags.BOSCH)): if self.safety.get_cruise_engaged_prev() != prev_panda_cruise_engaged: self.assertEqual(CS.cruiseState.enabled, self.safety.get_cruise_engaged_prev()) @@ -442,7 +442,7 @@ class TestCarModelBase(unittest.TestCase): # On most pcmCruise cars, openpilot's state is always tied to the PCM's cruise state. # On Honda Nidec, we always engage on the rising edge of the PCM cruise state, but # openpilot brakes to zero even if the min ACC speed is non-zero (i.e. the PCM disengages). - if self.CP.carName == "honda" and self.CP.carFingerprint not in HONDA_BOSCH: + if self.CP.carName == "honda" and not (self.CP.flags & HondaFlags.BOSCH): # only the rising edges are expected to match if CS.cruiseState.enabled and not CS_prev.cruiseState.enabled: checks['controlsAllowed'] += not self.safety.get_controls_allowed() diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 3c29e9238b..94674f05de 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -658699a6ba183bd97f161baa29cd4764b6bd2c30 +5aa0f4c0ab2cebccc3596aa8ef529fdb94a43643 From 7ec83c42f8229b37fb243d43004bbea22f0247c2 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 17:14:24 -0500 Subject: [PATCH 030/599] devcontainer improvements (#31650) --- .devcontainer/Dockerfile | 2 +- .devcontainer/devcontainer.json | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index a24c524047..36bb6aa840 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,6 +1,6 @@ FROM ghcr.io/commaai/openpilot-base:latest -RUN apt update && apt install -y vim net-tools usbutils htop ripgrep tmux wget mesa-utils xvfb libxtst6 libxv1 libglu1-mesa libegl1-mesa +RUN apt update && apt install -y vim net-tools usbutils htop ripgrep tmux wget mesa-utils xvfb libxtst6 libxv1 libglu1-mesa libegl1-mesa gdb RUN pip install ipython jupyter jupyterlab RUN cd /tmp && \ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a7a63658ed..f1cfc82159 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,7 +18,6 @@ "--volume=${localWorkspaceFolder}/.devcontainer/.host/.Xauthority:/home/batman/.Xauthority", "--volume=${localEnv:HOME}/.comma:/home/batman/.comma", "--volume=/tmp/comma_download_cache:/tmp/comma_download_cache", - "--volume=/tmp/devcontainer_scons_cache:/tmp/scons_cache", "--shm-size=1G", "--add-host=host.docker.internal:host-gateway", // required to use host.docker.internal on linux "--publish=0.0.0.0:8070-8079:8070-8079" // body ZMQ services @@ -43,5 +42,8 @@ "lharri73.dbc" ] } - } + }, + "mounts": [ + "type=volume,source=scons_cache,target=/tmp/scons_cache" + ] } \ No newline at end of file From 5d291cb64d2ff925a13cbf0f783517642929917f Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 29 Feb 2024 16:45:31 -0600 Subject: [PATCH 031/599] Subaru: group steer rate limited with GEN2 (#31640) * remove sideways diff * make a subclass * fix * fix --- selfdrive/car/subaru/values.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index a7c9a22e2c..90502bfad7 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -106,6 +106,15 @@ class SubaruPlatformConfig(PlatformConfig): self.dbc_dict = dbc_dict('subaru_global_2020_hybrid_generated', None) +@dataclass +class SubaruGen2PlatformConfig(SubaruPlatformConfig): + def init(self): + super().init() + self.flags |= SubaruFlags.GLOBAL_GEN2 + if not (self.flags & SubaruFlags.LKAS_ANGLE): + self.flags |= SubaruFlags.STEER_RATE_LIMITED + + class CAR(Platforms): # Global platform ASCENT = SubaruPlatformConfig( @@ -113,17 +122,15 @@ class CAR(Platforms): SubaruCarInfo("Subaru Ascent 2019-21", "All"), specs=CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), ) - OUTBACK = SubaruPlatformConfig( + OUTBACK = SubaruGen2PlatformConfig( "SUBARU OUTBACK 6TH GEN", SubaruCarInfo("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), - flags=SubaruFlags.GLOBAL_GEN2 | SubaruFlags.STEER_RATE_LIMITED, ) - LEGACY = SubaruPlatformConfig( + LEGACY = SubaruGen2PlatformConfig( "SUBARU LEGACY 7TH GEN", SubaruCarInfo("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), specs=OUTBACK.specs, - flags=SubaruFlags.GLOBAL_GEN2 | SubaruFlags.STEER_RATE_LIMITED, ) IMPREZA = SubaruPlatformConfig( "SUBARU IMPREZA LIMITED 2019", @@ -199,17 +206,17 @@ class CAR(Platforms): specs=FORESTER.specs, flags=SubaruFlags.LKAS_ANGLE, ) - OUTBACK_2023 = SubaruPlatformConfig( + OUTBACK_2023 = SubaruGen2PlatformConfig( "SUBARU OUTBACK 7TH GEN", SubaruCarInfo("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), specs=OUTBACK.specs, - flags=SubaruFlags.GLOBAL_GEN2 | SubaruFlags.LKAS_ANGLE, + flags=SubaruFlags.LKAS_ANGLE, ) - ASCENT_2023 = SubaruPlatformConfig( + ASCENT_2023 = SubaruGen2PlatformConfig( "SUBARU ASCENT 2023", SubaruCarInfo("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), specs=ASCENT.specs, - flags=SubaruFlags.GLOBAL_GEN2 | SubaruFlags.LKAS_ANGLE, + flags=SubaruFlags.LKAS_ANGLE, ) From ac16c5518a300df5fa31e088a6e2a03d1a0d1747 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 18:01:47 -0500 Subject: [PATCH 032/599] add CAR.print_debug (#31652) print debug --- selfdrive/car/__init__.py | 14 +++++++++++++- selfdrive/car/subaru/values.py | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 42cd135446..e46ce120e8 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -1,5 +1,5 @@ # functions common among cars -from collections import namedtuple +from collections import defaultdict, namedtuple from dataclasses import dataclass from enum import IntFlag, ReprEnum from dataclasses import replace @@ -301,3 +301,15 @@ class Platforms(str, ReprEnum): @classmethod def with_flags(cls, flags: IntFlag) -> set['Platforms']: return {p for p in cls if p.config.flags & flags} + + @classmethod + def print_debug(cls, flags): + platforms_with_flag = defaultdict(list) + for flag in flags: + for platform in cls: + if platform.config.flags & flag: + assert flag.name is not None + platforms_with_flag[flag.name].append(platform) + + for flag, platforms in platforms_with_flag.items(): + print(f"{flag:20s}: {', '.join(p.name for p in platforms)}") diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 90502bfad7..7bf0f11bad 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -262,3 +262,7 @@ FW_QUERY_CONFIG = FwQueryConfig( CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() + + +if __name__ == "__main__": + CAR.print_debug(SubaruFlags) From 0fa3445ddb829122fc8d67cd6aab7b9842a6e089 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 29 Feb 2024 17:19:31 -0600 Subject: [PATCH 033/599] Subaru: use carParams flags in interface (#31653) * Subaru: don't use platform flags * clean up --- selfdrive/car/subaru/interface.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index ecf718bb3a..30e186bd09 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -10,47 +10,45 @@ class CarInterface(CarInterfaceBase): @staticmethod def _get_params(ret, candidate: CAR, fingerprint, car_fw, experimental_long, docs): - platform_flags = candidate.config.flags - ret.carName = "subaru" ret.radarUnavailable = True # for HYBRID CARS to be upstreamed, we need: # - replacement for ES_Distance so we can cancel the cruise control # - to find the Cruise_Activated bit from the car # - proper panda safety setup (use the correct cruise_activated bit, throttle from Throttle_Hybrid, etc) - ret.dashcamOnly = bool(platform_flags & (SubaruFlags.PREGLOBAL | SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID)) + ret.dashcamOnly = bool(ret.flags & (SubaruFlags.PREGLOBAL | SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID)) ret.autoResumeSng = False # Detect infotainment message sent from the camera - if not (platform_flags & SubaruFlags.PREGLOBAL) and 0x323 in fingerprint[2]: + if not (ret.flags & SubaruFlags.PREGLOBAL) and 0x323 in fingerprint[2]: ret.flags |= SubaruFlags.SEND_INFOTAINMENT.value - if platform_flags & SubaruFlags.PREGLOBAL: + if ret.flags & SubaruFlags.PREGLOBAL: ret.enableBsm = 0x25c in fingerprint[0] ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.subaruPreglobal)] else: ret.enableBsm = 0x228 in fingerprint[0] ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.subaru)] - if platform_flags & SubaruFlags.GLOBAL_GEN2: + if ret.flags & SubaruFlags.GLOBAL_GEN2: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_SUBARU_GEN2 ret.steerLimitTimer = 0.4 ret.steerActuatorDelay = 0.1 - if platform_flags & SubaruFlags.LKAS_ANGLE: + if ret.flags & SubaruFlags.LKAS_ANGLE: ret.steerControlType = car.CarParams.SteerControlType.angle else: CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) if candidate in (CAR.ASCENT, CAR.ASCENT_2023): - ret.steerActuatorDelay = 0.3 # end-to-end angle controller + ret.steerActuatorDelay = 0.3 # end-to-end angle controller ret.lateralTuning.init('pid') ret.lateralTuning.pid.kf = 0.00003 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 20.], [0., 20.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.0025, 0.1], [0.00025, 0.01]] elif candidate == CAR.IMPREZA: - ret.steerActuatorDelay = 0.4 # end-to-end angle controller + ret.steerActuatorDelay = 0.4 # end-to-end angle controller ret.lateralTuning.init('pid') ret.lateralTuning.pid.kf = 0.00005 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 20.], [0., 20.]] @@ -85,12 +83,11 @@ class CarInterface(CarInterfaceBase): else: raise ValueError(f"unknown car: {candidate}") - LONG_UNAVAILABLE = SubaruFlags.GLOBAL_GEN2 | SubaruFlags.PREGLOBAL| SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID - - ret.experimentalLongitudinalAvailable = not (platform_flags & LONG_UNAVAILABLE) + ret.experimentalLongitudinalAvailable = not (ret.flags & (SubaruFlags.GLOBAL_GEN2 | SubaruFlags.PREGLOBAL | + SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID)) ret.openpilotLongitudinalControl = experimental_long and ret.experimentalLongitudinalAvailable - if platform_flags & SubaruFlags.GLOBAL_GEN2 and ret.openpilotLongitudinalControl: + if ret.flags & SubaruFlags.GLOBAL_GEN2 and ret.openpilotLongitudinalControl: ret.flags |= SubaruFlags.DISABLE_EYESIGHT.value if ret.openpilotLongitudinalControl: From 690dc55ea26dadb26ed768103baafba47428cda6 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 29 Feb 2024 17:36:40 -0600 Subject: [PATCH 034/599] Car flags: label static flags (#31639) * comment, consistent source * no caps not global * no field * label rest --- selfdrive/car/chrysler/values.py | 1 + selfdrive/car/mazda/values.py | 3 ++- selfdrive/car/subaru/values.py | 3 +++ selfdrive/car/volkswagen/values.py | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 8fa7664b66..bb60139507 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -11,6 +11,7 @@ Ecu = car.CarParams.Ecu class ChryslerFlags(IntFlag): + # Detected flags HIGHER_MIN_STEERING_SPEED = 1 @dataclass diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index 246038bba3..5597e9f52f 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -33,6 +33,7 @@ class MazdaCarInfo(CarInfo): class MazdaFlags(IntFlag): + # Static flags # Gen 1 hardware: same CAN messages and same camera GEN1 = 1 @@ -40,7 +41,7 @@ class MazdaFlags(IntFlag): @dataclass class MazdaPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('mazda_2017', None)) - flags: int = field(default=MazdaFlags.GEN1) + flags: int = MazdaFlags.GEN1 class CAR(Platforms): diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 7bf0f11bad..c2b2d16d7f 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -53,8 +53,11 @@ class CarControllerParams: class SubaruFlags(IntFlag): + # Detected flags SEND_INFOTAINMENT = 1 DISABLE_EYESIGHT = 2 + + # Static flags GLOBAL_GEN2 = 4 # Cars that temporarily fault when steering angle rate is greater than some threshold. diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 065a340928..f00fd971aa 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -110,6 +110,7 @@ class CANBUS: class VolkswagenFlags(IntFlag): + # Detected flags STOCK_HCA_PRESENT = 1 From 7014b5259628bf44a7b4fcf0eb5809d2bcdcf3b2 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 18:56:11 -0500 Subject: [PATCH 035/599] Chrysler: fix radar not being enabled (#31655) fix radar --- selfdrive/car/chrysler/values.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index bb60139507..d6bfd4e0cb 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -22,7 +22,7 @@ class ChryslerCarInfo(CarInfo): @dataclass class ChryslerPlatformConfig(PlatformConfig): - dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('chrysler_pacifica_2017_hybrid_generated', None)) + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('chrysler_pacifica_2017_hybrid_generated', 'chrysler_pacifica_2017_hybrid_private_fusion')) @dataclass(frozen=True) From e341707b0f1b26bc235fb0a3d4a1703723c0e48b Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 20:04:54 -0500 Subject: [PATCH 036/599] HKG: move to platform config (#31649) * fuck me! * that kinda makes things pretty nice * move it down * and move this comment * Wip * more flags :/ * add the debug shit * add * lets not break this yet * MORE flags git add .git add .git add .git add .! * B * add mando * update ref * possibly better? * we can use flags here * formatting * formatting * move up * canfd subclass * this is more clear * spacing * static! --------- Co-authored-by: Shane Smiskol --- selfdrive/car/__init__.py | 2 +- selfdrive/car/hyundai/carcontroller.py | 6 +- selfdrive/car/hyundai/hyundaican.py | 28 +- selfdrive/car/hyundai/values.py | 770 +++++++++++++---------- selfdrive/test/process_replay/ref_commit | 2 +- 5 files changed, 473 insertions(+), 335 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index e46ce120e8..85b8a2bbe8 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -312,4 +312,4 @@ class Platforms(str, ReprEnum): platforms_with_flag[flag.name].append(platform) for flag, platforms in platforms_with_flag.items(): - print(f"{flag:20s}: {', '.join(p.name for p in platforms)}") + print(f"{flag:32s}: {', '.join(p.name for p in platforms)}") diff --git a/selfdrive/car/hyundai/carcontroller.py b/selfdrive/car/hyundai/carcontroller.py index b0851abf55..ee7f441227 100644 --- a/selfdrive/car/hyundai/carcontroller.py +++ b/selfdrive/car/hyundai/carcontroller.py @@ -135,7 +135,7 @@ class CarController(CarControllerBase): # button presses can_sends.extend(self.create_button_messages(CC, CS, use_clu11=False)) else: - can_sends.append(hyundaican.create_lkas11(self.packer, self.frame, self.car_fingerprint, apply_steer, apply_steer_req, + can_sends.append(hyundaican.create_lkas11(self.packer, self.frame, self.CP, apply_steer, apply_steer_req, torque_fault, CS.lkas11, sys_warning, sys_state, CC.enabled, hud_control.leftLaneVisible, hud_control.rightLaneVisible, left_lane_warning, right_lane_warning)) @@ -175,12 +175,12 @@ class CarController(CarControllerBase): can_sends = [] if use_clu11: if CC.cruiseControl.cancel: - can_sends.append(hyundaican.create_clu11(self.packer, self.frame, CS.clu11, Buttons.CANCEL, self.CP.carFingerprint)) + can_sends.append(hyundaican.create_clu11(self.packer, self.frame, CS.clu11, Buttons.CANCEL, self.CP)) elif CC.cruiseControl.resume: # send resume at a max freq of 10Hz if (self.frame - self.last_button_frame) * DT_CTRL > 0.1: # send 25 messages at a time to increases the likelihood of resume being accepted - can_sends.extend([hyundaican.create_clu11(self.packer, self.frame, CS.clu11, Buttons.RES_ACCEL, self.CP.carFingerprint)] * 25) + can_sends.extend([hyundaican.create_clu11(self.packer, self.frame, CS.clu11, Buttons.RES_ACCEL, self.CP)] * 25) if (self.frame - self.last_button_frame) * DT_CTRL >= 0.15: self.last_button_frame = self.frame else: diff --git a/selfdrive/car/hyundai/hyundaican.py b/selfdrive/car/hyundai/hyundaican.py index bc29aeb985..0bf29664e8 100644 --- a/selfdrive/car/hyundai/hyundaican.py +++ b/selfdrive/car/hyundai/hyundaican.py @@ -1,9 +1,9 @@ import crcmod -from openpilot.selfdrive.car.hyundai.values import CAR, CHECKSUM, CAMERA_SCC_CAR +from openpilot.selfdrive.car.hyundai.values import CAR, HyundaiFlags hyundai_checksum = crcmod.mkCrcFun(0x11D, initCrc=0xFD, rev=False, xorOut=0xdf) -def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, +def create_lkas11(packer, frame, CP, apply_steer, steer_req, torque_fault, lkas11, sys_warning, sys_state, enabled, left_lane, right_lane, left_lane_depart, right_lane_depart): @@ -33,12 +33,12 @@ def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, values["CF_Lkas_ToiFlt"] = torque_fault # seems to allow actuation on CR_Lkas_StrToqReq values["CF_Lkas_MsgCount"] = frame % 0x10 - if car_fingerprint in (CAR.SONATA, CAR.PALISADE, CAR.KIA_NIRO_EV, CAR.KIA_NIRO_HEV_2021, CAR.SANTA_FE, - CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.KIA_SELTOS, CAR.ELANTRA_2021, CAR.GENESIS_G70_2020, - CAR.ELANTRA_HEV_2021, CAR.SONATA_HYBRID, CAR.KONA_EV, CAR.KONA_HEV, CAR.KONA_EV_2022, - CAR.SANTA_FE_2022, CAR.KIA_K5_2021, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022, - CAR.SANTA_FE_PHEV_2022, CAR.KIA_STINGER_2022, CAR.KIA_K5_HEV_2020, CAR.KIA_CEED, - CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.CUSTIN_1ST_GEN): + if CP.carFingerprint in (CAR.SONATA, CAR.PALISADE, CAR.KIA_NIRO_EV, CAR.KIA_NIRO_HEV_2021, CAR.SANTA_FE, + CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.KIA_SELTOS, CAR.ELANTRA_2021, CAR.GENESIS_G70_2020, + CAR.ELANTRA_HEV_2021, CAR.SONATA_HYBRID, CAR.KONA_EV, CAR.KONA_HEV, CAR.KONA_EV_2022, + CAR.SANTA_FE_2022, CAR.KIA_K5_2021, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022, + CAR.SANTA_FE_PHEV_2022, CAR.KIA_STINGER_2022, CAR.KIA_K5_HEV_2020, CAR.KIA_CEED, + CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.CUSTIN_1ST_GEN): values["CF_Lkas_LdwsActivemode"] = int(left_lane) + (int(right_lane) << 1) values["CF_Lkas_LdwsOpt_USM"] = 2 @@ -57,7 +57,7 @@ def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, values["CF_Lkas_SysWarning"] = 4 if sys_warning else 0 # Likely cars lacking the ability to show individual lane lines in the dash - elif car_fingerprint in (CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL): + elif CP.carFingerprint in (CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL): # SysWarning 4 = keep hands on wheel + beep values["CF_Lkas_SysWarning"] = 4 if sys_warning else 0 @@ -72,18 +72,18 @@ def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, values["CF_Lkas_LdwsActivemode"] = 0 values["CF_Lkas_FcwOpt_USM"] = 0 - elif car_fingerprint == CAR.HYUNDAI_GENESIS: + elif CP.carFingerprint == CAR.HYUNDAI_GENESIS: # This field is actually LdwsActivemode # Genesis and Optima fault when forwarding while engaged values["CF_Lkas_LdwsActivemode"] = 2 dat = packer.make_can_msg("LKAS11", 0, values)[2] - if car_fingerprint in CHECKSUM["crc8"]: + if CP.flags & HyundaiFlags.CHECKSUM_CRC8: # CRC Checksum as seen on 2019 Hyundai Santa Fe dat = dat[:6] + dat[7:8] checksum = hyundai_checksum(dat) - elif car_fingerprint in CHECKSUM["6B"]: + elif CP.flags & HyundaiFlags.CHECKSUM_6B: # Checksum of first 6 Bytes, as seen on 2018 Kia Sorento checksum = sum(dat[:6]) % 256 else: @@ -95,7 +95,7 @@ def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, return packer.make_can_msg("LKAS11", 0, values) -def create_clu11(packer, frame, clu11, button, car_fingerprint): +def create_clu11(packer, frame, clu11, button, CP): values = {s: clu11[s] for s in [ "CF_Clu_CruiseSwState", "CF_Clu_CruiseSwMain", @@ -113,7 +113,7 @@ def create_clu11(packer, frame, clu11, button, car_fingerprint): values["CF_Clu_CruiseSwState"] = button values["CF_Clu_AliveCnt1"] = frame % 0x10 # send buttons to camera on camera-scc based cars - bus = 2 if car_fingerprint in CAMERA_SCC_CAR else 0 + bus = 2 if CP.flags & HyundaiFlags.CAMERA_SCC else 0 return packer.make_can_msg("CLU11", bus, values) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 76ff0b39ce..d23d3a0a75 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -1,11 +1,11 @@ import re -from dataclasses import dataclass -from enum import Enum, IntFlag, StrEnum +from dataclasses import dataclass, field +from enum import Enum, IntFlag from cereal import car from panda.python import uds from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import dbc_dict +from openpilot.selfdrive.car import DbcDict, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 @@ -52,92 +52,46 @@ class CarControllerParams: class HyundaiFlags(IntFlag): + # Dynamic Flags CANFD_HDA2 = 1 CANFD_ALT_BUTTONS = 2 - CANFD_ALT_GEARS = 4 - CANFD_CAMERA_SCC = 8 + CANFD_ALT_GEARS = 2 ** 2 + CANFD_CAMERA_SCC = 2 ** 3 - ALT_LIMITS = 16 - ENABLE_BLINKERS = 32 - CANFD_ALT_GEARS_2 = 64 - SEND_LFA = 128 - USE_FCA = 256 - CANFD_HDA2_ALT_STEERING = 512 - HYBRID = 1024 - EV = 2048 + ALT_LIMITS = 2 ** 4 + ENABLE_BLINKERS = 2 ** 5 + CANFD_ALT_GEARS_2 = 2 ** 6 + SEND_LFA = 2 ** 7 + USE_FCA = 2 ** 8 + CANFD_HDA2_ALT_STEERING = 2 ** 9 + # these cars use a different gas signal + HYBRID = 2 ** 10 + EV = 2 ** 11 -class CAR(StrEnum): - # Hyundai - AZERA_6TH_GEN = "HYUNDAI AZERA 6TH GEN" - AZERA_HEV_6TH_GEN = "HYUNDAI AZERA HYBRID 6TH GEN" - ELANTRA = "HYUNDAI ELANTRA 2017" - ELANTRA_GT_I30 = "HYUNDAI I30 N LINE 2019 & GT 2018 DCT" - ELANTRA_2021 = "HYUNDAI ELANTRA 2021" - ELANTRA_HEV_2021 = "HYUNDAI ELANTRA HYBRID 2021" - HYUNDAI_GENESIS = "HYUNDAI GENESIS 2015-2016" - IONIQ = "HYUNDAI IONIQ HYBRID 2017-2019" - IONIQ_HEV_2022 = "HYUNDAI IONIQ HYBRID 2020-2022" - IONIQ_EV_LTD = "HYUNDAI IONIQ ELECTRIC LIMITED 2019" - IONIQ_EV_2020 = "HYUNDAI IONIQ ELECTRIC 2020" - IONIQ_PHEV_2019 = "HYUNDAI IONIQ PLUG-IN HYBRID 2019" - IONIQ_PHEV = "HYUNDAI IONIQ PHEV 2020" - KONA = "HYUNDAI KONA 2020" - KONA_EV = "HYUNDAI KONA ELECTRIC 2019" - KONA_EV_2022 = "HYUNDAI KONA ELECTRIC 2022" - KONA_EV_2ND_GEN = "HYUNDAI KONA ELECTRIC 2ND GEN" - KONA_HEV = "HYUNDAI KONA HYBRID 2020" - SANTA_FE = "HYUNDAI SANTA FE 2019" - SANTA_FE_2022 = "HYUNDAI SANTA FE 2022" - SANTA_FE_HEV_2022 = "HYUNDAI SANTA FE HYBRID 2022" - SANTA_FE_PHEV_2022 = "HYUNDAI SANTA FE PlUG-IN HYBRID 2022" - SONATA = "HYUNDAI SONATA 2020" - SONATA_LF = "HYUNDAI SONATA 2019" - STARIA_4TH_GEN = "HYUNDAI STARIA 4TH GEN" - TUCSON = "HYUNDAI TUCSON 2019" - PALISADE = "HYUNDAI PALISADE 2020" - VELOSTER = "HYUNDAI VELOSTER 2019" - SONATA_HYBRID = "HYUNDAI SONATA HYBRID 2021" - IONIQ_5 = "HYUNDAI IONIQ 5 2022" - IONIQ_6 = "HYUNDAI IONIQ 6 2023" - TUCSON_4TH_GEN = "HYUNDAI TUCSON 4TH GEN" - SANTA_CRUZ_1ST_GEN = "HYUNDAI SANTA CRUZ 1ST GEN" - CUSTIN_1ST_GEN = "HYUNDAI CUSTIN 1ST GEN" + # Static Flags - # Kia - KIA_FORTE = "KIA FORTE E 2018 & GT 2021" - KIA_K5_2021 = "KIA K5 2021" - KIA_K5_HEV_2020 = "KIA K5 HYBRID 2020" - KIA_K8_HEV_1ST_GEN = "KIA K8 HYBRID 1ST GEN" - KIA_NIRO_EV = "KIA NIRO EV 2020" - KIA_NIRO_EV_2ND_GEN = "KIA NIRO EV 2ND GEN" - KIA_NIRO_PHEV = "KIA NIRO HYBRID 2019" - KIA_NIRO_PHEV_2022 = "KIA NIRO PLUG-IN HYBRID 2022" - KIA_NIRO_HEV_2021 = "KIA NIRO HYBRID 2021" - KIA_NIRO_HEV_2ND_GEN = "KIA NIRO HYBRID 2ND GEN" - KIA_OPTIMA_G4 = "KIA OPTIMA 4TH GEN" - KIA_OPTIMA_G4_FL = "KIA OPTIMA 4TH GEN FACELIFT" - KIA_OPTIMA_H = "KIA OPTIMA HYBRID 2017 & SPORTS 2019" - KIA_OPTIMA_H_G4_FL = "KIA OPTIMA HYBRID 4TH GEN FACELIFT" - KIA_SELTOS = "KIA SELTOS 2021" - KIA_SPORTAGE_5TH_GEN = "KIA SPORTAGE 5TH GEN" - KIA_SORENTO = "KIA SORENTO GT LINE 2018" - KIA_SORENTO_4TH_GEN = "KIA SORENTO 4TH GEN" - KIA_SORENTO_HEV_4TH_GEN = "KIA SORENTO HYBRID 4TH GEN" - KIA_STINGER = "KIA STINGER GT2 2018" - KIA_STINGER_2022 = "KIA STINGER 2022" - KIA_CEED = "KIA CEED INTRO ED 2019" - KIA_EV6 = "KIA EV6 2022" - KIA_CARNIVAL_4TH_GEN = "KIA CARNIVAL 4TH GEN" + # If 0x500 is present on bus 1 it probably has a Mando radar outputting radar points. + # If no points are outputted by default it might be possible to turn it on using selfdrive/debug/hyundai_enable_radar_points.py + MANDO_RADAR = 2 ** 12 + CANFD = 2 ** 13 - # Genesis - GENESIS_GV60_EV_1ST_GEN = "GENESIS GV60 ELECTRIC 1ST GEN" - GENESIS_G70 = "GENESIS G70 2018" - GENESIS_G70_2020 = "GENESIS G70 2020" - GENESIS_GV70_1ST_GEN = "GENESIS GV70 1ST GEN" - GENESIS_G80 = "GENESIS G80 2017" - GENESIS_G90 = "GENESIS G90 2017" - GENESIS_GV80 = "GENESIS GV80 2023" + # The radar does SCC on these cars when HDA I, rather than the camera + RADAR_SCC = 2 ** 14 + CAMERA_SCC = 2 ** 15 + CHECKSUM_CRC8 = 2 ** 16 + CHECKSUM_6B = 2 ** 17 + + # these cars require a special panda safety mode due to missing counters and checksums in the messages + LEGACY = 2 ** 18 + + # these cars have not been verified to work with longitudinal yet - radar disable, sending correct messages, etc. + UNSUPPORTED_LONGITUDINAL = 2 ** 19 + + CANFD_NO_RADAR_DISABLE = 2 ** 20 + + CLUSTER_GEARS = 2 ** 21 + TCU_GEARS = 2 ** 22 class Footnote(Enum): @@ -152,160 +106,425 @@ class HyundaiCarInfo(CarInfo): package: str = "Smart Cruise Control (SCC)" def init_make(self, CP: car.CarParams): - if CP.carFingerprint in CANFD_CAR: + if CP.flags & HyundaiFlags.CANFD: self.footnotes.insert(0, Footnote.CANFD) -CAR_INFO: dict[str, HyundaiCarInfo | list[HyundaiCarInfo] | None] = { - CAR.AZERA_6TH_GEN: HyundaiCarInfo("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.AZERA_HEV_6TH_GEN: [ - HyundaiCarInfo("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - ], - CAR.ELANTRA: [ - # TODO: 2017-18 could be Hyundai G - HyundaiCarInfo("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), - HyundaiCarInfo("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])), - ], - CAR.ELANTRA_GT_I30: [ - HyundaiCarInfo("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), - HyundaiCarInfo("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), - ], - CAR.ELANTRA_2021: HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.ELANTRA_HEV_2021: HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", +@dataclass +class HyundaiPlatformConfig(PlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict("hyundai_kia_generic", None)) + + def init(self): + if self.flags & HyundaiFlags.MANDO_RADAR: + self.dbc_dict = dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated') + + +@dataclass +class HyundaiCanFDPlatformConfig(HyundaiPlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict("hyundai_canfd", None)) + + def init(self): + super().init() + self.flags |= HyundaiFlags.CANFD + + +class CAR(Platforms): + # Hyundai + AZERA_6TH_GEN = HyundaiPlatformConfig( + "HYUNDAI AZERA 6TH GEN", + HyundaiCarInfo("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + ) + AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( + "HYUNDAI AZERA HYBRID 6TH GEN", + [ + HyundaiCarInfo("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarInfo("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + ], + flags=HyundaiFlags.HYBRID + ) + ELANTRA = HyundaiPlatformConfig( + "HYUNDAI ELANTRA 2017", + [ + # TODO: 2017-18 could be Hyundai G + HyundaiCarInfo("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), + HyundaiCarInfo("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])), + ], + flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS + ) + ELANTRA_GT_I30 = HyundaiPlatformConfig( + "HYUNDAI I30 N LINE 2019 & GT 2018 DCT", + [ + HyundaiCarInfo("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + HyundaiCarInfo("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + ], + flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS + ) + ELANTRA_2021 = HyundaiPlatformConfig( + "HYUNDAI ELANTRA 2021", + HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), + flags=HyundaiFlags.CHECKSUM_CRC8 + ) + ELANTRA_HEV_2021 = HyundaiPlatformConfig( + "HYUNDAI ELANTRA HYBRID 2021", + HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.HYUNDAI_GENESIS: [ - # TODO: check 2015 packages - HyundaiCarInfo("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), - HyundaiCarInfo("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), - ], - CAR.IONIQ: HyundaiCarInfo("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.IONIQ_HEV_2022: HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h])), # TODO: confirm 2020-21 harness - CAR.IONIQ_EV_LTD: HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.IONIQ_EV_2020: HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - CAR.IONIQ_PHEV_2019: HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.IONIQ_PHEV: HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - CAR.KONA: HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b])), - CAR.KONA_EV: HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g])), - CAR.KONA_EV_2022: HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o])), - CAR.KONA_HEV: HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i])), # TODO: check packages - # TODO: this is the 2024 US MY, not yet released - CAR.KONA_EV_2ND_GEN: HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", + flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + ) + HYUNDAI_GENESIS = HyundaiPlatformConfig( + "HYUNDAI GENESIS 2015-2016", + [ + # TODO: check 2015 packages + HyundaiCarInfo("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), + HyundaiCarInfo("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), + ], + flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY + ) + IONIQ = HyundaiPlatformConfig( + "HYUNDAI IONIQ HYBRID 2017-2019", + HyundaiCarInfo("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c])), + flags=HyundaiFlags.HYBRID + ) + IONIQ_HEV_2022 = HyundaiPlatformConfig( + "HYUNDAI IONIQ HYBRID 2020-2022", + HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h])), # TODO: confirm 2020-21 harness, + flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY + ) + IONIQ_EV_LTD = HyundaiPlatformConfig( + "HYUNDAI IONIQ ELECTRIC LIMITED 2019", + HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY + ) + IONIQ_EV_2020 = HyundaiPlatformConfig( + "HYUNDAI IONIQ ELECTRIC 2020", + HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + flags=HyundaiFlags.EV + ) + IONIQ_PHEV_2019 = HyundaiPlatformConfig( + "HYUNDAI IONIQ PLUG-IN HYBRID 2019", + HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), + flags=HyundaiFlags.HYBRID + ) + IONIQ_PHEV = HyundaiPlatformConfig( + "HYUNDAI IONIQ PHEV 2020", + HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + flags=HyundaiFlags.HYBRID + ) + KONA = HyundaiPlatformConfig( + "HYUNDAI KONA 2020", + HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b])), + flags=HyundaiFlags.CLUSTER_GEARS + ) + KONA_EV = HyundaiPlatformConfig( + "HYUNDAI KONA ELECTRIC 2019", + HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g])), + flags=HyundaiFlags.EV + ) + KONA_EV_2022 = HyundaiPlatformConfig( + "HYUNDAI KONA ELECTRIC 2022", + HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o])), + flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV + ) + KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( + "HYUNDAI KONA ELECTRIC 2ND GEN", + HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", car_parts=CarParts.common([CarHarness.hyundai_r])), - CAR.SANTA_FE: HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", + flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE + ) + KONA_HEV = HyundaiPlatformConfig( + "HYUNDAI KONA HYBRID 2020", + HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i])), # TODO: check packages, + flags=HyundaiFlags.HYBRID + ) + SANTA_FE = HyundaiPlatformConfig( + "HYUNDAI SANTA FE 2019", + HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", car_parts=CarParts.common([CarHarness.hyundai_d])), - CAR.SANTA_FE_2022: HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 + ) + SANTA_FE_2022 = HyundaiPlatformConfig( + "HYUNDAI SANTA FE 2022", + HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", car_parts=CarParts.common([CarHarness.hyundai_l])), - CAR.SANTA_FE_HEV_2022: HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - CAR.SANTA_FE_PHEV_2022: HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - CAR.SONATA: HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", + flags=HyundaiFlags.CHECKSUM_CRC8 + ) + SANTA_FE_HEV_2022 = HyundaiPlatformConfig( + "HYUNDAI SANTA FE HYBRID 2022", + HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + ) + SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( + "HYUNDAI SANTA FE PlUG-IN HYBRID 2022", + HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + ) + SONATA = HyundaiPlatformConfig( + "HYUNDAI SONATA 2020", + HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.STARIA_4TH_GEN: HyundaiCarInfo("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.SONATA_LF: HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e])), - CAR.TUCSON: [ - HyundaiCarInfo("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), - ], - CAR.PALISADE: [ - HyundaiCarInfo("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), - HyundaiCarInfo("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - ], - CAR.VELOSTER: HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e])), - CAR.SONATA_HYBRID: HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.IONIQ_5: [ - HyundaiCarInfo("Hyundai Ioniq 5 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_q])), - HyundaiCarInfo("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), - HyundaiCarInfo("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), - ], - CAR.IONIQ_6: [ + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 + ) + SONATA_LF = HyundaiPlatformConfig( + "HYUNDAI SONATA 2019", + HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS + ) + STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( + "HYUNDAI STARIA 4TH GEN", + HyundaiCarInfo("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + ) + TUCSON = HyundaiPlatformConfig( + "HYUNDAI TUCSON 2019", + [ + HyundaiCarInfo("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarInfo("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), + ], + flags=HyundaiFlags.TCU_GEARS + ) + PALISADE = HyundaiPlatformConfig( + "HYUNDAI PALISADE 2020", + [ + HyundaiCarInfo("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), + HyundaiCarInfo("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + ], + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 + ) + VELOSTER = HyundaiPlatformConfig( + "HYUNDAI VELOSTER 2019", + HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e])), + flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS + ) + SONATA_HYBRID = HyundaiPlatformConfig( + "HYUNDAI SONATA HYBRID 2021", + HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + ) + IONIQ_5 = HyundaiCanFDPlatformConfig( + "HYUNDAI IONIQ 5 2022", + [ + HyundaiCarInfo("Hyundai Ioniq 5 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_q])), + HyundaiCarInfo("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), + HyundaiCarInfo("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), + ], + flags=HyundaiFlags.EV + ) + IONIQ_6 = HyundaiCanFDPlatformConfig( + "HYUNDAI IONIQ 6 2023", HyundaiCarInfo("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])), - ], - CAR.TUCSON_4TH_GEN: [ - HyundaiCarInfo("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), - ], - CAR.SANTA_CRUZ_1ST_GEN: HyundaiCarInfo("Hyundai Santa Cruz 2022-23", car_parts=CarParts.common([CarHarness.hyundai_n])), - CAR.CUSTIN_1ST_GEN: HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE + ) + TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( + "HYUNDAI TUCSON 4TH GEN", + [ + HyundaiCarInfo("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarInfo("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarInfo("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), + ], + ) + SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( + "HYUNDAI SANTA CRUZ 1ST GEN", + HyundaiCarInfo("Hyundai Santa Cruz 2022-23", car_parts=CarParts.common([CarHarness.hyundai_n])), + ) + CUSTIN_1ST_GEN = HyundaiPlatformConfig( + "HYUNDAI CUSTIN 1ST GEN", + HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + flags=HyundaiFlags.CHECKSUM_CRC8 + ) # Kia - CAR.KIA_FORTE: [ + KIA_FORTE = HyundaiPlatformConfig( + "KIA FORTE E 2018 & GT 2021", + [ HyundaiCarInfo("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), HyundaiCarInfo("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), - ], - CAR.KIA_K5_2021: HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_K5_HEV_2020: HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_K8_HEV_1ST_GEN: HyundaiCarInfo("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), - CAR.KIA_NIRO_EV: [ - HyundaiCarInfo("Kia Niro EV 2019", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), - HyundaiCarInfo("Kia Niro EV 2020", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_f])), - HyundaiCarInfo("Kia Niro EV 2021", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), - ], - CAR.KIA_NIRO_EV_2ND_GEN: HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_NIRO_PHEV: [ - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), - ], - CAR.KIA_NIRO_PHEV_2022: [ - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2021", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), - ], - CAR.KIA_NIRO_HEV_2021: [ - HyundaiCarInfo("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), - HyundaiCarInfo("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), - ], - CAR.KIA_NIRO_HEV_2ND_GEN: HyundaiCarInfo("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_OPTIMA_G4: HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", + ] + ) + KIA_K5_2021 = HyundaiPlatformConfig( + "KIA K5 2021", + HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a])), + flags=HyundaiFlags.CHECKSUM_CRC8 + ) + KIA_K5_HEV_2020 = HyundaiPlatformConfig( + "KIA K5 HYBRID 2020", + HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a])), + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + ) + KIA_K8_HEV_1ST_GEN = HyundaiCanFDPlatformConfig( + "KIA K8 HYBRID 1ST GEN", + HyundaiCarInfo("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), + ) + KIA_NIRO_EV = HyundaiPlatformConfig( + "KIA NIRO EV 2020", + [ + HyundaiCarInfo("Kia Niro EV 2019", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), + HyundaiCarInfo("Kia Niro EV 2020", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_f])), + HyundaiCarInfo("Kia Niro EV 2021", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarInfo("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), + ], + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV + ) + KIA_NIRO_EV_2ND_GEN = HyundaiCanFDPlatformConfig( + "KIA NIRO EV 2ND GEN", + HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + flags=HyundaiFlags.EV + ) + KIA_NIRO_PHEV = HyundaiPlatformConfig( + "KIA NIRO HYBRID 2019", + [ + HyundaiCarInfo("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarInfo("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), + ], + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL + ) + KIA_NIRO_PHEV_2022 = HyundaiPlatformConfig( + "KIA NIRO PLUG-IN HYBRID 2022", + [ + HyundaiCarInfo("Kia Niro Plug-in Hybrid 2021", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarInfo("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + ], + flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR + ) + KIA_NIRO_HEV_2021 = HyundaiPlatformConfig( + "KIA NIRO HYBRID 2021", + [ + HyundaiCarInfo("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarInfo("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), + ], + flags=HyundaiFlags.HYBRID + ) + KIA_NIRO_HEV_2ND_GEN = HyundaiCanFDPlatformConfig( + "KIA NIRO HYBRID 2ND GEN", + HyundaiCarInfo("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a])), + ) + KIA_OPTIMA_G4 = HyundaiPlatformConfig( + "KIA OPTIMA 4TH GEN", + HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_b])), # TODO: may support 2016, 2018 - CAR.KIA_OPTIMA_G4_FL: HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g])), + flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS + ) + KIA_OPTIMA_G4_FL = HyundaiPlatformConfig( + "KIA OPTIMA 4TH GEN FACELIFT", + HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g])), + flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS + ) # TODO: may support adjacent years. may have a non-zero minimum steering speed - CAR.KIA_OPTIMA_H: HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.KIA_OPTIMA_H_G4_FL: HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h])), - CAR.KIA_SELTOS: HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_SPORTAGE_5TH_GEN: [ - HyundaiCarInfo("Kia Sportage 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), - ], - CAR.KIA_SORENTO: [ - HyundaiCarInfo("Kia Sorento 2018", "Advanced Smart Cruise Control & LKAS", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", + KIA_OPTIMA_H = HyundaiPlatformConfig( + "KIA OPTIMA HYBRID 2017 & SPORTS 2019", + HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c])), + flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY + ) + KIA_OPTIMA_H_G4_FL = HyundaiPlatformConfig( + "KIA OPTIMA HYBRID 4TH GEN FACELIFT", + HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h])), + flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL + ) + KIA_SELTOS = HyundaiPlatformConfig( + "KIA SELTOS 2021", + HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a])), + flags=HyundaiFlags.CHECKSUM_CRC8 + ) + KIA_SPORTAGE_5TH_GEN = HyundaiCanFDPlatformConfig( + "KIA SPORTAGE 5TH GEN", + [ + HyundaiCarInfo("Kia Sportage 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarInfo("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), + ], + ) + KIA_SORENTO = HyundaiPlatformConfig( + "KIA SORENTO GT LINE 2018", + [ + HyundaiCarInfo("Kia Sorento 2018", "Advanced Smart Cruise Control & LKAS", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), - HyundaiCarInfo("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), - ], - CAR.KIA_SORENTO_4TH_GEN: HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.KIA_SORENTO_HEV_4TH_GEN: [ - HyundaiCarInfo("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - ], - CAR.KIA_STINGER: HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", - car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.KIA_STINGER_2022: HyundaiCarInfo("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.KIA_CEED: HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e])), - CAR.KIA_EV6: [ - HyundaiCarInfo("Kia EV6 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_p])), - HyundaiCarInfo("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) - ], - CAR.KIA_CARNIVAL_4TH_GEN: [ - HyundaiCarInfo("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) - ], + HyundaiCarInfo("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), + ], + flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.UNSUPPORTED_LONGITUDINAL + ) + KIA_SORENTO_4TH_GEN = HyundaiCanFDPlatformConfig( + "KIA SORENTO 4TH GEN", + HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k])), + flags=HyundaiFlags.RADAR_SCC + ) + KIA_SORENTO_HEV_4TH_GEN = HyundaiCanFDPlatformConfig( + "KIA SORENTO HYBRID 4TH GEN", + [ + HyundaiCarInfo("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarInfo("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + ], + flags=HyundaiFlags.RADAR_SCC + ) + KIA_STINGER = HyundaiPlatformConfig( + "KIA STINGER GT2 2018", + HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", + car_parts=CarParts.common([CarHarness.hyundai_c])) + ) + KIA_STINGER_2022 = HyundaiPlatformConfig( + "KIA STINGER 2022", + HyundaiCarInfo("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + ) + KIA_CEED = HyundaiPlatformConfig( + "KIA CEED INTRO ED 2019", + HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e])), + flags=HyundaiFlags.LEGACY + ) + KIA_EV6 = HyundaiCanFDPlatformConfig( + "KIA EV6 2022", + [ + HyundaiCarInfo("Kia EV6 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_p])), + HyundaiCarInfo("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarInfo("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) + ], + flags=HyundaiFlags.EV + ) + KIA_CARNIVAL_4TH_GEN = HyundaiCanFDPlatformConfig( + "KIA CARNIVAL 4TH GEN", + [ + HyundaiCarInfo("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarInfo("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) + ], + flags=HyundaiFlags.RADAR_SCC + ) # Genesis - CAR.GENESIS_GV60_EV_1ST_GEN: [ - HyundaiCarInfo("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - ], - CAR.GENESIS_G70: HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), - CAR.GENESIS_G70_2020: HyundaiCarInfo("Genesis G70 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), - CAR.GENESIS_GV70_1ST_GEN: [ - HyundaiCarInfo("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), - ], - CAR.GENESIS_G80: HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - CAR.GENESIS_G90: HyundaiCarInfo("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.GENESIS_GV80: HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), -} + GENESIS_GV60_EV_1ST_GEN = HyundaiCanFDPlatformConfig( + "GENESIS GV60 ELECTRIC 1ST GEN", + [ + HyundaiCarInfo("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarInfo("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + ], + flags=HyundaiFlags.EV + ) + GENESIS_G70 = HyundaiPlatformConfig( + "GENESIS G70 2018", + HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + flags=HyundaiFlags.LEGACY + ) + GENESIS_G70_2020 = HyundaiPlatformConfig( + "GENESIS G70 2020", + HyundaiCarInfo("Genesis G70 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + flags=HyundaiFlags.MANDO_RADAR + ) + GENESIS_GV70_1ST_GEN = HyundaiCanFDPlatformConfig( + "GENESIS GV70 1ST GEN", + [ + HyundaiCarInfo("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarInfo("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), + ], + flags=HyundaiFlags.RADAR_SCC + ) + GENESIS_G80 = HyundaiPlatformConfig( + "GENESIS G80 2017", + HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + flags=HyundaiFlags.LEGACY + ) + GENESIS_G90 = HyundaiPlatformConfig( + "GENESIS G90 2017", + HyundaiCarInfo("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), + ) + GENESIS_GV80 = HyundaiCanFDPlatformConfig( + "GENESIS GV80 2023", + HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), + flags=HyundaiFlags.RADAR_SCC + ) + class Buttons: NONE = 0 @@ -518,118 +737,37 @@ FW_QUERY_CONFIG = FwQueryConfig( match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, ) - CHECKSUM = { - "crc8": [CAR.SANTA_FE, CAR.SONATA, CAR.PALISADE, CAR.KIA_SELTOS, CAR.ELANTRA_2021, CAR.ELANTRA_HEV_2021, - CAR.SONATA_HYBRID, CAR.SANTA_FE_2022, CAR.KIA_K5_2021, CAR.SANTA_FE_HEV_2022, CAR.SANTA_FE_PHEV_2022, - CAR.KIA_K5_HEV_2020, CAR.CUSTIN_1ST_GEN], - "6B": [CAR.KIA_SORENTO, CAR.HYUNDAI_GENESIS], + "crc8": CAR.with_flags(HyundaiFlags.CHECKSUM_CRC8), + "6B": CAR.with_flags(HyundaiFlags.CHECKSUM_6B), } CAN_GEARS = { # which message has the gear. hybrid and EV use ELECT_GEAR - "use_cluster_gears": {CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.KONA}, - "use_tcu_gears": {CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.SONATA_LF, CAR.VELOSTER, CAR.TUCSON}, + "use_cluster_gears": CAR.with_flags(HyundaiFlags.CLUSTER_GEARS), + "use_tcu_gears": CAR.with_flags(HyundaiFlags.TCU_GEARS), } -CANFD_CAR = {CAR.KIA_EV6, CAR.IONIQ_5, CAR.IONIQ_6, CAR.TUCSON_4TH_GEN, CAR.SANTA_CRUZ_1ST_GEN, CAR.KIA_SPORTAGE_5TH_GEN, CAR.GENESIS_GV70_1ST_GEN, - CAR.GENESIS_GV60_EV_1ST_GEN, CAR.KIA_SORENTO_4TH_GEN, CAR.KIA_NIRO_HEV_2ND_GEN, CAR.KIA_NIRO_EV_2ND_GEN, - CAR.GENESIS_GV80, CAR.KIA_CARNIVAL_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN, CAR.KONA_EV_2ND_GEN, CAR.KIA_K8_HEV_1ST_GEN, - CAR.STARIA_4TH_GEN} - -# The radar does SCC on these cars when HDA I, rather than the camera -CANFD_RADAR_SCC_CAR = {CAR.GENESIS_GV70_1ST_GEN, CAR.KIA_SORENTO_4TH_GEN, CAR.GENESIS_GV80, CAR.KIA_CARNIVAL_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN} +CANFD_CAR = CAR.with_flags(HyundaiFlags.CANFD) +CANFD_RADAR_SCC_CAR = CAR.with_flags(HyundaiFlags.RADAR_SCC) # These CAN FD cars do not accept communication control to disable the ADAS ECU, # responds with 0x7F2822 - 'conditions not correct' -CANFD_UNSUPPORTED_LONGITUDINAL_CAR = {CAR.IONIQ_6, CAR.KONA_EV_2ND_GEN} +CANFD_UNSUPPORTED_LONGITUDINAL_CAR = CAR.with_flags(HyundaiFlags.CANFD_NO_RADAR_DISABLE) # The camera does SCC on these cars, rather than the radar -CAMERA_SCC_CAR = {CAR.KONA_EV_2022, } +CAMERA_SCC_CAR = CAR.with_flags(HyundaiFlags.CAMERA_SCC) -# these cars use a different gas signal -HYBRID_CAR = {CAR.IONIQ_PHEV, CAR.ELANTRA_HEV_2021, CAR.KIA_NIRO_PHEV, CAR.KIA_NIRO_HEV_2021, CAR.SONATA_HYBRID, CAR.KONA_HEV, CAR.IONIQ, - CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022, CAR.SANTA_FE_PHEV_2022, CAR.IONIQ_PHEV_2019, CAR.KIA_K5_HEV_2020, - CAR.KIA_OPTIMA_H, CAR.KIA_OPTIMA_H_G4_FL, CAR.AZERA_HEV_6TH_GEN, CAR.KIA_NIRO_PHEV_2022} +HYBRID_CAR = CAR.with_flags(HyundaiFlags.HYBRID) -EV_CAR = {CAR.IONIQ_EV_2020, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.KIA_NIRO_EV, CAR.KIA_NIRO_EV_2ND_GEN, CAR.KONA_EV_2022, - CAR.KIA_EV6, CAR.IONIQ_5, CAR.IONIQ_6, CAR.GENESIS_GV60_EV_1ST_GEN, CAR.KONA_EV_2ND_GEN} +EV_CAR = CAR.with_flags(HyundaiFlags.EV) -# these cars require a special panda safety mode due to missing counters and checksums in the messages -LEGACY_SAFETY_MODE_CAR = {CAR.HYUNDAI_GENESIS, CAR.IONIQ_EV_LTD, CAR.KIA_OPTIMA_G4, - CAR.VELOSTER, CAR.GENESIS_G70, CAR.GENESIS_G80, CAR.KIA_CEED, CAR.ELANTRA, CAR.IONIQ_HEV_2022, - CAR.KIA_OPTIMA_H, CAR.ELANTRA_GT_I30} +LEGACY_SAFETY_MODE_CAR = CAR.with_flags(HyundaiFlags.LEGACY) -# these cars have not been verified to work with longitudinal yet - radar disable, sending correct messages, etc. -UNSUPPORTED_LONGITUDINAL_CAR = LEGACY_SAFETY_MODE_CAR | {CAR.KIA_NIRO_PHEV, CAR.KIA_SORENTO, CAR.SONATA_LF, CAR.KIA_OPTIMA_G4_FL, - CAR.KIA_OPTIMA_H_G4_FL} +UNSUPPORTED_LONGITUDINAL_CAR = CAR.with_flags(HyundaiFlags.LEGACY) | CAR.with_flags(HyundaiFlags.UNSUPPORTED_LONGITUDINAL) -# If 0x500 is present on bus 1 it probably has a Mando radar outputting radar points. -# If no points are outputted by default it might be possible to turn it on using selfdrive/debug/hyundai_enable_radar_points.py -DBC = { - CAR.AZERA_6TH_GEN: dbc_dict('hyundai_kia_generic', None), - CAR.AZERA_HEV_6TH_GEN: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA_GT_I30: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA_2021: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA_HEV_2021: dbc_dict('hyundai_kia_generic', None), - CAR.GENESIS_G70: dbc_dict('hyundai_kia_generic', None), - CAR.GENESIS_G70_2020: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.GENESIS_G80: dbc_dict('hyundai_kia_generic', None), - CAR.GENESIS_G90: dbc_dict('hyundai_kia_generic', None), - CAR.HYUNDAI_GENESIS: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_PHEV_2019: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_PHEV: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_EV_2020: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_EV_LTD: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.IONIQ: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_HEV_2022: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_FORTE: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_K5_2021: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_K5_HEV_2020: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.KIA_NIRO_EV: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.KIA_NIRO_PHEV: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.KIA_NIRO_HEV_2021: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_OPTIMA_G4: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_OPTIMA_G4_FL: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_OPTIMA_H: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_OPTIMA_H_G4_FL: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_SELTOS: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_SORENTO: dbc_dict('hyundai_kia_generic', None), # Has 0x5XX messages, but different format - CAR.KIA_STINGER: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_STINGER_2022: dbc_dict('hyundai_kia_generic', None), - CAR.KONA: dbc_dict('hyundai_kia_generic', None), - CAR.KONA_EV: dbc_dict('hyundai_kia_generic', None), - CAR.KONA_EV_2022: dbc_dict('hyundai_kia_generic', None), - CAR.KONA_HEV: dbc_dict('hyundai_kia_generic', None), - CAR.SANTA_FE: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.SANTA_FE_2022: dbc_dict('hyundai_kia_generic', None), - CAR.SANTA_FE_HEV_2022: dbc_dict('hyundai_kia_generic', None), - CAR.SANTA_FE_PHEV_2022: dbc_dict('hyundai_kia_generic', None), - CAR.SONATA: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.SONATA_LF: dbc_dict('hyundai_kia_generic', None), # Has 0x5XX messages, but different format - CAR.TUCSON: dbc_dict('hyundai_kia_generic', None), - CAR.PALISADE: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.VELOSTER: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_CEED: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_EV6: dbc_dict('hyundai_canfd', None), - CAR.SONATA_HYBRID: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.TUCSON_4TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.IONIQ_5: dbc_dict('hyundai_canfd', None), - CAR.IONIQ_6: dbc_dict('hyundai_canfd', None), - CAR.SANTA_CRUZ_1ST_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_SPORTAGE_5TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.GENESIS_GV70_1ST_GEN: dbc_dict('hyundai_canfd', None), - CAR.GENESIS_GV60_EV_1ST_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_SORENTO_4TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_NIRO_HEV_2ND_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_NIRO_EV_2ND_GEN: dbc_dict('hyundai_canfd', None), - CAR.GENESIS_GV80: dbc_dict('hyundai_canfd', None), - CAR.KIA_CARNIVAL_4TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_SORENTO_HEV_4TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.KONA_EV_2ND_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_K8_HEV_1ST_GEN: dbc_dict('hyundai_canfd', None), - CAR.CUSTIN_1ST_GEN: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_NIRO_PHEV_2022: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.STARIA_4TH_GEN: dbc_dict('hyundai_canfd', None), -} +CAR_INFO = CAR.create_carinfo_map() +DBC = CAR.create_dbc_map() + +if __name__ == "__main__": + CAR.print_debug(HyundaiFlags) diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 94674f05de..015f941261 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -5aa0f4c0ab2cebccc3596aa8ef529fdb94a43643 +de322b3898f8fedb57036b6cf4a0605968138929 From a6a6f7bb50ecbca61dfa44ca23f0cab201439342 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 22:14:31 -0500 Subject: [PATCH 037/599] Honda: move carspecs to platformconfig (#31657) * first pass * fix --- selfdrive/car/honda/interface.py | 69 -------------------------------- selfdrive/car/honda/values.py | 24 ++++++++++- 2 files changed, 23 insertions(+), 70 deletions(-) diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index a4cf647c0f..71008e5001 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -92,10 +92,6 @@ class CarInterface(CarInterfaceBase): eps_modified = True if candidate == CAR.CIVIC: - ret.mass = 1326. - ret.wheelbase = 2.70 - ret.centerToFront = ret.wheelbase * 0.4 - ret.steerRatio = 15.38 # 10.93 is end-to-end spec if eps_modified: # stock request input values: 0x0000, 0x00DE, 0x014D, 0x01EF, 0x0290, 0x0377, 0x0454, 0x0610, 0x06EE # stock request output values: 0x0000, 0x0917, 0x0DC5, 0x1017, 0x119F, 0x140B, 0x1680, 0x1680, 0x1680 @@ -110,18 +106,10 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[1.1], [0.33]] elif candidate in (CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CIVIC_2022): - ret.mass = 1326. - ret.wheelbase = 2.70 - ret.centerToFront = ret.wheelbase * 0.4 - 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 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] elif candidate == CAR.ACCORD: - ret.mass = 3279. * CV.LB_TO_KG - ret.wheelbase = 2.83 - ret.centerToFront = ret.wheelbase * 0.39 - ret.steerRatio = 16.33 # 11.82 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 ret.tireStiffnessFactor = 0.8467 @@ -131,29 +119,17 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] elif candidate == CAR.ACURA_ILX: - ret.mass = 3095. * CV.LB_TO_KG - ret.wheelbase = 2.67 - ret.centerToFront = ret.wheelbase * 0.37 - ret.steerRatio = 18.61 # 15.3 is spec end-to-end ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] # TODO: determine if there is a dead zone at the top end ret.tireStiffnessFactor = 0.72 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] elif candidate in (CAR.CRV, CAR.CRV_EU): - ret.mass = 3572. * CV.LB_TO_KG - ret.wheelbase = 2.62 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 16.89 # as spec ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 1000], [0, 1000]] # TODO: determine if there is a dead zone at the top end ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] ret.wheelSpeedFactor = 1.025 elif candidate == CAR.CRV_5G: - ret.mass = 3410. * CV.LB_TO_KG - ret.wheelbase = 2.66 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 16.0 # 12.3 is spec end-to-end if eps_modified: # stock request input values: 0x0000, 0x00DB, 0x01BB, 0x0296, 0x0377, 0x0454, 0x0532, 0x0610, 0x067F # stock request output values: 0x0000, 0x0500, 0x0A15, 0x0E6D, 0x1100, 0x1200, 0x129A, 0x134D, 0x1400 @@ -167,39 +143,22 @@ class CarInterface(CarInterfaceBase): ret.wheelSpeedFactor = 1.025 elif candidate == CAR.CRV_HYBRID: - ret.mass = 1667. # mean of 4 models in kg - ret.wheelbase = 2.66 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 16.0 # 12.3 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 ret.tireStiffnessFactor = 0.677 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] ret.wheelSpeedFactor = 1.025 elif candidate == CAR.FIT: - ret.mass = 2644. * CV.LB_TO_KG - ret.wheelbase = 2.53 - ret.centerToFront = ret.wheelbase * 0.39 - 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 ret.tireStiffnessFactor = 0.75 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]] elif candidate == CAR.FREED: - ret.mass = 3086. * CV.LB_TO_KG - ret.wheelbase = 2.74 - # the remaining parameters were copied from FIT - ret.centerToFront = ret.wheelbase * 0.39 - ret.steerRatio = 13.06 ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] ret.tireStiffnessFactor = 0.75 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]] elif candidate in (CAR.HRV, CAR.HRV_3G): - ret.mass = 3125 * CV.LB_TO_KG - ret.wheelbase = 2.61 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 15.2 ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] ret.tireStiffnessFactor = 0.5 if candidate == CAR.HRV: @@ -209,28 +168,16 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] # TODO: can probably use some tuning elif candidate == CAR.ACURA_RDX: - ret.mass = 3935. * CV.LB_TO_KG - ret.wheelbase = 2.68 - ret.centerToFront = ret.wheelbase * 0.38 - ret.steerRatio = 15.0 # as spec ret.tireStiffnessFactor = 0.444 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: - ret.mass = 4068. * CV.LB_TO_KG - ret.wheelbase = 2.75 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 11.95 # as spec ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.06]] ret.tireStiffnessFactor = 0.677 elif candidate in (CAR.ODYSSEY, CAR.ODYSSEY_CHN): - ret.mass = 1900. - ret.wheelbase = 3.00 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 14.35 # as spec ret.tireStiffnessFactor = 0.82 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.28], [0.08]] if candidate == CAR.ODYSSEY_CHN: @@ -239,37 +186,21 @@ class CarInterface(CarInterfaceBase): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end elif candidate == CAR.PILOT: - ret.mass = 4278. * CV.LB_TO_KG # average weight - ret.wheelbase = 2.86 - ret.centerToFront = ret.wheelbase * 0.428 - ret.steerRatio = 16.0 # as spec ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]] elif candidate == CAR.RIDGELINE: - ret.mass = 4515. * CV.LB_TO_KG - ret.wheelbase = 3.18 - ret.centerToFront = ret.wheelbase * 0.41 - 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 ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]] elif candidate == CAR.INSIGHT: - ret.mass = 2987. * CV.LB_TO_KG - ret.wheelbase = 2.7 - ret.centerToFront = ret.wheelbase * 0.39 - 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 ret.tireStiffnessFactor = 0.82 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] elif candidate == CAR.HONDA_E: - ret.mass = 3338.8 * CV.LB_TO_KG - ret.wheelbase = 2.5 - ret.centerToFront = ret.wheelbase * 0.5 - ret.steerRatio = 16.71 ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end ret.tireStiffnessFactor = 0.82 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] # TODO: can probably use some tuning diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 2b11086405..abe710528c 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -4,7 +4,7 @@ from enum import Enum, IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV from panda.python import uds -from openpilot.selfdrive.car import PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -117,6 +117,7 @@ class CAR(Platforms): HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), ], dbc_dict('honda_accord_2018_can_generated', None), + specs=CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39), # steerRatio: 11.82 is spec end-to-end flags=HondaFlags.BOSCH, ) CIVIC_BOSCH = HondaPlatformConfig( @@ -127,12 +128,14 @@ class CAR(Platforms): HondaCarInfo("Honda Civic Hatchback 2017-21", min_steer_speed=12. * CV.MPH_TO_MS), ], dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), + specs=CarSpecs(mass=1326, wheelbase=2.7, steerRatio=15.38, centerToFrontRatio=0.4), # steerRatio: 10.93 is end-to-end spec flags=HondaFlags.BOSCH ) CIVIC_BOSCH_DIESEL = HondaPlatformConfig( "HONDA CIVIC SEDAN 1.6 DIESEL 2019", None, # don't show in docs dbc_dict('honda_accord_2018_can_generated', None), + specs=CIVIC_BOSCH.specs, flags=HondaFlags.BOSCH ) CIVIC_2022 = HondaPlatformConfig( @@ -142,42 +145,49 @@ class CAR(Platforms): HondaCarInfo("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), ], dbc_dict('honda_civic_ex_2022_can_generated', None), + specs=CIVIC_BOSCH.specs, flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS, ) CRV_5G = HondaPlatformConfig( "HONDA CR-V 2017", HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), + specs=CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41), # steerRatio: 12.3 is spec end-to-end flags=HondaFlags.BOSCH, ) CRV_HYBRID = HondaPlatformConfig( "HONDA CR-V HYBRID 2019", HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS), dbc_dict('honda_accord_2018_can_generated', None), + specs=CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41), # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end flags=HondaFlags.BOSCH ) HRV_3G = HondaPlatformConfig( "HONDA HR-V 2023", HondaCarInfo("Honda HR-V 2023", "All"), dbc_dict('honda_civic_ex_2022_can_generated', None), + specs=CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41), flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS ) ACURA_RDX_3G = HondaPlatformConfig( "ACURA RDX 2020", HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), dbc_dict('acura_rdx_2020_can_generated', None), + specs=CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41), # as spec flags=HondaFlags.BOSCH ) INSIGHT = HondaPlatformConfig( "HONDA INSIGHT 2019", HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), dbc_dict('honda_insight_ex_2019_can_generated', None), + specs=CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39), # as spec flags=HondaFlags.BOSCH ) HONDA_E = HondaPlatformConfig( "HONDA E 2020", HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), dbc_dict('acura_rdx_2020_can_generated', None), + specs=CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71), flags=HondaFlags.BOSCH ) @@ -186,54 +196,63 @@ class CAR(Platforms): "ACURA ILX 2016", HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37), # 15.3 is spec end-to-end flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV = HondaPlatformConfig( "HONDA CR-V 2016", HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS), dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41), # as spec flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV_EU = HondaPlatformConfig( "HONDA CR-V EU 2016", None, # Euro version of CRV Touring, don't show in docs dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), + specs=CRV.specs, flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FIT = HondaPlatformConfig( "HONDA FIT 2018", HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39), flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FREED = HondaPlatformConfig( "HONDA FREED 2020", HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39), # mostly copied from FIT flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) HRV = HondaPlatformConfig( "HONDA HRV 2019", HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + specs=HRV_3G.specs, flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) ODYSSEY = HondaPlatformConfig( "HONDA ODYSSEY 2018", HondaCarInfo("Honda Odyssey 2018-20"), dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41), flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_PCM_ACCEL ) ODYSSEY_CHN = HondaPlatformConfig( "HONDA ODYSSEY CHN 2019", None, # Chinese version of Odyssey, don't show in docs dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), + specs=ODYSSEY.specs, flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES ) ACURA_RDX = HondaPlatformConfig( "ACURA RDX 2018", HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38), # as spec flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) PILOT = HondaPlatformConfig( @@ -243,18 +262,21 @@ class CAR(Platforms): HondaCarInfo("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), ], dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=4278 * CV.LB_TO_KG, wheelbase=2.86, centerToFrontRatio=0.428, steerRatio=16.0), # as spec flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) RIDGELINE = HondaPlatformConfig( "HONDA RIDGELINE 2017", HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS), dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59), # as spec flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CIVIC = HondaPlatformConfig( "HONDA CIVIC 2016", HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE"), dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), + specs=CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec flags=HondaFlags.NIDEC | HondaFlags.AUTORESUME_SNG | HondaFlags.ELECTRIC_PARKING_BRAKE, ) From 2d2ba37b46e355c9784f0450f19470c125232bb6 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 29 Feb 2024 19:39:28 -0800 Subject: [PATCH 038/599] build tools on-device (#31658) --- SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index dac3529892..c08fe48f66 100644 --- a/SConstruct +++ b/SConstruct @@ -386,7 +386,7 @@ SConscript(['third_party/SConscript']) SConscript(['selfdrive/SConscript']) -if arch in ['x86_64', 'aarch64', 'Darwin'] and Dir('#tools/cabana/').exists() and GetOption('extras'): +if Dir('#tools/cabana/').exists() and GetOption('extras'): SConscript(['tools/replay/SConscript']) SConscript(['tools/cabana/SConscript']) From e576da1457f2e978f1dbd594b857bff034a359d7 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 29 Feb 2024 22:51:20 -0500 Subject: [PATCH 039/599] VW: use flags for PQ (#31659) pq use flags --- selfdrive/car/volkswagen/carcontroller.py | 4 ++-- selfdrive/car/volkswagen/carstate.py | 8 ++++---- selfdrive/car/volkswagen/interface.py | 8 ++++---- selfdrive/car/volkswagen/values.py | 10 +++++++--- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index f99e87d5d3..1b1858703d 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -6,7 +6,7 @@ from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_driver_steer_torque_limits from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.volkswagen import mqbcan, pqcan -from openpilot.selfdrive.car.volkswagen.values import CANBUS, PQ_CARS, CarControllerParams, VolkswagenFlags +from openpilot.selfdrive.car.volkswagen.values import CANBUS, CarControllerParams, VolkswagenFlags VisualAlert = car.CarControl.HUDControl.VisualAlert LongCtrlState = car.CarControl.Actuators.LongControlState @@ -16,7 +16,7 @@ class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.CCP = CarControllerParams(CP) - self.CCS = pqcan if CP.carFingerprint in PQ_CARS else mqbcan + self.CCS = pqcan if CP.flags & VolkswagenFlags.PQ else mqbcan self.packer_pt = CANPacker(dbc_name) self.apply_steer_last = 0 diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index 25c5bc04bc..48e9ed37d6 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -3,7 +3,7 @@ from cereal import car from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.interfaces import CarStateBase from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.volkswagen.values import DBC, CANBUS, PQ_CARS, NetworkLocation, TransmissionType, GearShifter, \ +from openpilot.selfdrive.car.volkswagen.values import DBC, CANBUS, NetworkLocation, TransmissionType, GearShifter, \ CarControllerParams, VolkswagenFlags @@ -31,7 +31,7 @@ class CarState(CarStateBase): return button_events def update(self, pt_cp, cam_cp, ext_cp, trans_type): - if self.CP.carFingerprint in PQ_CARS: + if self.CP.flags & VolkswagenFlags.PQ: return self.update_pq(pt_cp, cam_cp, ext_cp, trans_type) ret = car.CarState.new_message() @@ -257,7 +257,7 @@ class CarState(CarStateBase): @staticmethod def get_can_parser(CP): - if CP.carFingerprint in PQ_CARS: + if CP.flags & VolkswagenFlags.PQ: return CarState.get_can_parser_pq(CP) messages = [ @@ -294,7 +294,7 @@ class CarState(CarStateBase): @staticmethod def get_cam_can_parser(CP): - if CP.carFingerprint in PQ_CARS: + if CP.flags & VolkswagenFlags.PQ: return CarState.get_cam_can_parser_pq(CP) messages = [] diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index fa68e81d0d..374b657512 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -2,7 +2,7 @@ from cereal import car from panda import Panda from openpilot.selfdrive.car import get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase -from openpilot.selfdrive.car.volkswagen.values import PQ_CARS, CANBUS, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags +from openpilot.selfdrive.car.volkswagen.values import CAR, CANBUS, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags ButtonType = car.CarState.ButtonEvent.Type EventName = car.CarEvent.EventName @@ -22,11 +22,11 @@ class CarInterface(CarInterfaceBase): self.eps_timer_soft_disable_alert = False @staticmethod - def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): + def _get_params(ret, candidate: CAR, fingerprint, car_fw, experimental_long, docs): ret.carName = "volkswagen" ret.radarUnavailable = True - if candidate in PQ_CARS: + if ret.flags & VolkswagenFlags.PQ: # Set global PQ35/PQ46/NMS parameters ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.volkswagenPq)] ret.enableBsm = 0x3BA in fingerprint[0] # SWA_1 @@ -72,7 +72,7 @@ class CarInterface(CarInterfaceBase): # Global lateral tuning defaults, can be overridden per-vehicle ret.steerLimitTimer = 0.4 - if candidate in PQ_CARS: + if ret.flags & VolkswagenFlags.PQ: ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) else: diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index f00fd971aa..86788dcf64 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -40,7 +40,7 @@ class CarControllerParams: def __init__(self, CP): can_define = CANDefine(DBC[CP.carFingerprint]["pt"]) - if CP.carFingerprint in PQ_CARS: + if CP.flags & VolkswagenFlags.PQ: self.LDW_STEP = 5 # LDW_1 message frequency 20Hz self.ACC_HUD_STEP = 4 # ACC_GRA_Anzeige frequency 25Hz self.STEER_DRIVER_ALLOWANCE = 80 # Driver intervention threshold 0.8 Nm @@ -113,6 +113,9 @@ class VolkswagenFlags(IntFlag): # Detected flags STOCK_HCA_PRESENT = 1 + # Static Flags + PQ = 2 + @dataclass class VolkswagenMQBPlatformConfig(PlatformConfig): @@ -123,6 +126,9 @@ class VolkswagenMQBPlatformConfig(PlatformConfig): class VolkswagenPQPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_golf_mk4', None)) + def init(self): + self.flags |= VolkswagenFlags.PQ + @dataclass(frozen=True, kw_only=True) class VolkswagenCarSpecs(CarSpecs): @@ -360,8 +366,6 @@ class CAR(Platforms): ) -PQ_CARS = {CAR.PASSAT_NMS, CAR.SHARAN_MK2} - # All supported cars should return FW from the engine, srs, eps, and fwdRadar. Cars # with a manual trans won't return transmission firmware, but all other cars will. # From 00f2703bbb70d5d79d3b64cb6b2974efb36cb4d4 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 1 Mar 2024 04:01:59 +0000 Subject: [PATCH 040/599] basic platform config tests --- selfdrive/car/tests/test_platform_configs.py | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100755 selfdrive/car/tests/test_platform_configs.py diff --git a/selfdrive/car/tests/test_platform_configs.py b/selfdrive/car/tests/test_platform_configs.py new file mode 100755 index 0000000000..931780963f --- /dev/null +++ b/selfdrive/car/tests/test_platform_configs.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 + +import unittest + +from openpilot.selfdrive.car.values import PLATFORMS + + +class TestPlatformConfigs(unittest.TestCase): + def test_configs(self): + + for platform in PLATFORMS.values(): + with self.subTest(platform=str(platform)): + if hasattr(platform, "config"): + + self.assertTrue(platform.config._frozen) + self.assertIn("pt", platform.config.dbc_dict) + self.assertTrue(len(platform.config.platform_str) > 0) + + # enable when all cars have specs + #self.assertIsNotNone(platform.config.specs) + + +if __name__ == "__main__": + unittest.main() From 9c3f0450bb277a02effdeccbe6e89986ed5678b9 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 29 Feb 2024 21:46:35 -0800 Subject: [PATCH 041/599] simple pyqt ui --- selfdrive/ui/ui.py | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 selfdrive/ui/ui.py diff --git a/selfdrive/ui/ui.py b/selfdrive/ui/ui.py new file mode 100755 index 0000000000..ea2ee51a45 --- /dev/null +++ b/selfdrive/ui/ui.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +import os +import signal + +signal.signal(signal.SIGINT, signal.SIG_DFL) + +import cereal.messaging as messaging +from openpilot.system.hardware import HARDWARE + +from PyQt5.QtCore import Qt, QTimer +from PyQt5.QtWidgets import QLabel, QWidget, QVBoxLayout, QStackedLayout, QApplication +from openpilot.selfdrive.ui.qt.python_helpers import set_main_window + + +if __name__ == "__main__": + app = QApplication([]) + win = QWidget() + set_main_window(win) + + bg = QLabel("", alignment=Qt.AlignCenter) + + alert1 = QLabel() + alert2 = QLabel() + vlayout = QVBoxLayout() + vlayout.addWidget(alert1, alignment=Qt.AlignCenter) + vlayout.addWidget(alert2, alignment=Qt.AlignCenter) + + tmp = QWidget() + tmp.setLayout(vlayout) + + stack = QStackedLayout(win) + stack.addWidget(tmp) + stack.addWidget(bg) + stack.setStackingMode(QStackedLayout.StackAll) + + win.setObjectName("win") + win.setStyleSheet(""" + #win { + background-color: black; + } + QLabel { + color: white; + font-size: 40px; + } + """) + + sm = messaging.SubMaster(['deviceState', 'controlsState']) + + def update(): + sm.update(0) + + onroad = sm.all_checks(['deviceState']) and sm['deviceState'].started + if onroad: + cs = sm['controlsState'] + color = ("grey" if str(cs.status) in ("overriding", "preEnabled") else "green") if cs.enabled else "blue" + bg.setText("\U0001F44D" if cs.engageable else "\U0001F6D1") + bg.setStyleSheet(f"font-size: 100px; background-color: {color};") + bg.show() + + alert1.setText(cs.alertText1) + alert2.setText(cs.alertText2) + + if not sm.alive['controlsState']: + alert1.setText("waiting for controls...") + else: + bg.hide() + alert1.setText("") + alert2.setText("offroad") + + HARDWARE.set_screen_brightness(100 if onroad else 40) + os.system("echo 0 > /sys/class/backlight/panel0-backlight/bl_power") + + timer = QTimer() + timer.timeout.connect(update) + timer.start(50) + + app.exec_() From 52ee070fe0a6880b7e3a5db408a0453c8310be86 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 1 Mar 2024 02:14:33 -0800 Subject: [PATCH 042/599] Toyota: use platform config (#31607) * part 1. Toyota platform config * more * everything works now * no more DBC * janky but that saves a lot of car lines * need to init inside values or else it won't be reliable * no return * fixes * minor update * common flags, no dbc grouping * some clean up * some clean up * rename * copied wrong :( * another * copied specs for easiest ones first * second easiest * fix erroneous commas * more clean up * do the rest * bug * the refactor is so error prone * huh?! * static * fix stiffness factor * detect unsupported DSU * Revert "detect unsupported DSU" This reverts commit 9b72de6c8ef282ce20f6472970874a960761884b. * fix DBC diff * test carparams * test sets * scratch * catches this * Revert "scratch" This reverts commit de08daa9fb8cc0368c5847b669e87b1b2e577616. * Revert "test sets" This reverts commit 62402f9b021cdf16a27fd9fb0883d81169711cbd. * Revert "test carparams" This reverts commit b02971659c2a8268d0ac8fdff02231dc36b5a197. * Update ref_commit --- selfdrive/car/__init__.py | 1 + selfdrive/car/interfaces.py | 1 + selfdrive/car/toyota/interface.py | 101 ----- selfdrive/car/toyota/values.py | 522 ++++++++++++++--------- selfdrive/test/process_replay/ref_commit | 2 +- 5 files changed, 319 insertions(+), 308 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 85b8a2bbe8..27d320bb41 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -256,6 +256,7 @@ class CarSpecs: centerToFrontRatio: float = 0.5 minSteerSpeed: float = 0.0 # m/s minEnableSpeed: float = -1.0 # m/s + tireStiffnessFactor: float = 1.0 @dataclass(order=True) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 491138f788..98b3c63ec7 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -120,6 +120,7 @@ class CarInterfaceBase(ABC): ret.centerToFront = ret.wheelbase * candidate.config.specs.centerToFrontRatio ret.minEnableSpeed = candidate.config.specs.minEnableSpeed ret.minSteerSpeed = candidate.config.specs.minSteerSpeed + ret.tireStiffnessFactor = candidate.config.specs.tireStiffnessFactor ret.flags |= int(candidate.config.flags) ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 988b1b4547..7fd5c9435d 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -1,5 +1,4 @@ from cereal import car -from openpilot.common.conversions import Conversions as CV from panda import Panda from panda.python import uds from openpilot.selfdrive.car.toyota.values import Ecu, CAR, DBC, ToyotaFlags, CarControllerParams, TSS2_CAR, RADAR_ACC_CAR, NO_DSU_CAR, \ @@ -46,10 +45,6 @@ class CarInterface(CarInterfaceBase): if candidate == CAR.PRIUS: stop_and_go = True - ret.wheelbase = 2.70 - ret.steerRatio = 15.74 # unknown end-to-end spec - ret.tireStiffnessFactor = 0.6371 # hand-tune - ret.mass = 3045. * CV.LB_TO_KG # Only give steer angle deadzone to for bad angle sensor prius for fw in car_fw: if fw.ecu == "eps" and not fw.fwVersion == b'8965B47060\x00\x00\x00\x00\x00\x00': @@ -58,68 +53,30 @@ class CarInterface(CarInterfaceBase): elif candidate == CAR.PRIUS_V: stop_and_go = True - ret.wheelbase = 2.78 - ret.steerRatio = 17.4 - ret.tireStiffnessFactor = 0.5533 - ret.mass = 3340. * CV.LB_TO_KG elif candidate in (CAR.RAV4, CAR.RAV4H): stop_and_go = True if (candidate in CAR.RAV4H) else False - ret.wheelbase = 2.65 - ret.steerRatio = 16.88 # 14.5 is spec end-to-end - ret.tireStiffnessFactor = 0.5533 - ret.mass = 3650. * CV.LB_TO_KG # mean between normal and hybrid - - elif candidate == CAR.COROLLA: - ret.wheelbase = 2.70 - ret.steerRatio = 18.27 - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 2860. * CV.LB_TO_KG # mean between normal and hybrid elif candidate in (CAR.LEXUS_RX, CAR.LEXUS_RX_TSS2): stop_and_go = True - ret.wheelbase = 2.79 - ret.steerRatio = 16. # 14.8 is spec end-to-end ret.wheelSpeedFactor = 1.035 - ret.tireStiffnessFactor = 0.5533 - ret.mass = 4481. * CV.LB_TO_KG # mean between min and max elif candidate in (CAR.CHR, CAR.CHR_TSS2): stop_and_go = True - ret.wheelbase = 2.63906 - ret.steerRatio = 13.6 - ret.tireStiffnessFactor = 0.7933 - ret.mass = 3300. * CV.LB_TO_KG elif candidate in (CAR.CAMRY, CAR.CAMRY_TSS2): stop_and_go = True - ret.wheelbase = 2.82448 - ret.steerRatio = 13.7 - ret.tireStiffnessFactor = 0.7933 - ret.mass = 3400. * CV.LB_TO_KG # mean between normal and hybrid elif candidate in (CAR.HIGHLANDER, CAR.HIGHLANDER_TSS2): # TODO: TSS-P models can do stop and go, but unclear if it requires sDSU or unplugging DSU stop_and_go = True - ret.wheelbase = 2.8194 # average of 109.8 and 112.2 in - ret.steerRatio = 16.0 - ret.tireStiffnessFactor = 0.8 - ret.mass = 4516. * CV.LB_TO_KG # mean between normal and hybrid elif candidate in (CAR.AVALON, CAR.AVALON_2019, CAR.AVALON_TSS2): # starting from 2019, all Avalon variants have stop and go # https://engage.toyota.com/static/images/toyota_safety_sense/TSS_Applicability_Chart.pdf stop_and_go = candidate != CAR.AVALON - ret.wheelbase = 2.82 - ret.steerRatio = 14.8 # Found at https://pressroom.toyota.com/releases/2016+avalon+product+specs.download - ret.tireStiffnessFactor = 0.7983 - ret.mass = 3505. * CV.LB_TO_KG # mean between normal and hybrid elif candidate in (CAR.RAV4_TSS2, CAR.RAV4_TSS2_2022, CAR.RAV4_TSS2_2023): - ret.wheelbase = 2.68986 - ret.steerRatio = 14.3 - ret.tireStiffnessFactor = 0.7933 - ret.mass = 3585. * CV.LB_TO_KG # Average between ICE and Hybrid ret.lateralTuning.init('pid') ret.lateralTuning.pid.kiBP = [0.0] ret.lateralTuning.pid.kpBP = [0.0] @@ -136,75 +93,17 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 0.00004 break - elif candidate == CAR.COROLLA_TSS2: - ret.wheelbase = 2.67 # Average between 2.70 for sedan and 2.64 for hatchback - ret.steerRatio = 13.9 - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 3060. * CV.LB_TO_KG - - elif candidate in (CAR.LEXUS_ES, CAR.LEXUS_ES_TSS2): - ret.wheelbase = 2.8702 - ret.steerRatio = 16.0 # not optimized - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 3677. * CV.LB_TO_KG # mean between min and max - elif candidate == CAR.SIENNA: stop_and_go = True - ret.wheelbase = 3.03 - ret.steerRatio = 15.5 - ret.tireStiffnessFactor = 0.444 - ret.mass = 4590. * CV.LB_TO_KG - - elif candidate in (CAR.LEXUS_IS, CAR.LEXUS_IS_TSS2, CAR.LEXUS_RC): - ret.wheelbase = 2.79908 - ret.steerRatio = 13.3 - ret.tireStiffnessFactor = 0.444 - ret.mass = 3736.8 * CV.LB_TO_KG - - elif candidate == CAR.LEXUS_GS_F: - ret.wheelbase = 2.84988 - ret.steerRatio = 13.3 - ret.tireStiffnessFactor = 0.444 - ret.mass = 4034. * CV.LB_TO_KG elif candidate == CAR.LEXUS_CTH: stop_and_go = True - ret.wheelbase = 2.60 - ret.steerRatio = 18.6 - ret.tireStiffnessFactor = 0.517 - ret.mass = 3108 * CV.LB_TO_KG # mean between min and max elif candidate in (CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2): stop_and_go = True - ret.wheelbase = 2.66 - ret.steerRatio = 14.7 - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 4070 * CV.LB_TO_KG - - elif candidate == CAR.LEXUS_LC_TSS2: - ret.wheelbase = 2.87 - ret.steerRatio = 13.0 - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 4500 * CV.LB_TO_KG - - elif candidate == CAR.PRIUS_TSS2: - ret.wheelbase = 2.70002 # from toyota online sepc. - ret.steerRatio = 13.4 # True steerRatio from older prius - ret.tireStiffnessFactor = 0.6371 # hand-tune - ret.mass = 3115. * CV.LB_TO_KG elif candidate == CAR.MIRAI: stop_and_go = True - ret.wheelbase = 2.91 - ret.steerRatio = 14.8 - ret.tireStiffnessFactor = 0.8 - ret.mass = 4300. * CV.LB_TO_KG - - elif candidate == CAR.ALPHARD_TSS2: - ret.wheelbase = 3.00 - ret.steerRatio = 14.2 - ret.tireStiffnessFactor = 0.444 - ret.mass = 4305. * CV.LB_TO_KG ret.centerToFront = ret.wheelbase * 0.44 diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 011d153f70..09d6082f67 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -1,10 +1,11 @@ import re from collections import defaultdict from dataclasses import dataclass, field -from enum import Enum, IntFlag, StrEnum +from enum import Enum, IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms from openpilot.selfdrive.car import AngleRateLimit, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarInfo, Column, CarParts, CarHarness from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -41,50 +42,19 @@ class CarControllerParams: class ToyotaFlags(IntFlag): + # Detected flags HYBRID = 1 SMART_DSU = 2 DISABLE_RADAR = 4 - -class CAR(StrEnum): - # Toyota - ALPHARD_TSS2 = "TOYOTA ALPHARD 2020" - AVALON = "TOYOTA AVALON 2016" - AVALON_2019 = "TOYOTA AVALON 2019" - AVALON_TSS2 = "TOYOTA AVALON 2022" # TSS 2.5 - CAMRY = "TOYOTA CAMRY 2018" - CAMRY_TSS2 = "TOYOTA CAMRY 2021" # TSS 2.5 - CHR = "TOYOTA C-HR 2018" - CHR_TSS2 = "TOYOTA C-HR 2021" - COROLLA = "TOYOTA COROLLA 2017" - # LSS2 Lexus UX Hybrid is same as a TSS2 Corolla Hybrid - COROLLA_TSS2 = "TOYOTA COROLLA TSS2 2019" - HIGHLANDER = "TOYOTA HIGHLANDER 2017" - HIGHLANDER_TSS2 = "TOYOTA HIGHLANDER 2020" - PRIUS = "TOYOTA PRIUS 2017" - PRIUS_V = "TOYOTA PRIUS v 2017" - PRIUS_TSS2 = "TOYOTA PRIUS TSS2 2021" - RAV4 = "TOYOTA RAV4 2017" - RAV4H = "TOYOTA RAV4 HYBRID 2017" - RAV4_TSS2 = "TOYOTA RAV4 2019" - RAV4_TSS2_2022 = "TOYOTA RAV4 2022" - RAV4_TSS2_2023 = "TOYOTA RAV4 2023" - MIRAI = "TOYOTA MIRAI 2021" # TSS 2.5 - SIENNA = "TOYOTA SIENNA 2018" - - # Lexus - LEXUS_CTH = "LEXUS CT HYBRID 2018" - LEXUS_ES = "LEXUS ES 2018" - LEXUS_ES_TSS2 = "LEXUS ES 2019" - LEXUS_IS = "LEXUS IS 2018" - LEXUS_IS_TSS2 = "LEXUS IS 2023" - LEXUS_NX = "LEXUS NX 2018" - LEXUS_NX_TSS2 = "LEXUS NX 2020" - LEXUS_LC_TSS2 = "LEXUS LC 2024" - LEXUS_RC = "LEXUS RC 2020" - LEXUS_RX = "LEXUS RX 2016" - LEXUS_RX_TSS2 = "LEXUS RX 2020" - LEXUS_GS_F = "LEXUS GS F 2016" + # Static flags + TSS2 = 8 + NO_DSU = 16 + UNSUPPORTED_DSU = 32 + RADAR_ACC = 64 + # these cars use the Lane Tracing Assist (LTA) message for lateral control + ANGLE_CONTROL = 128 + NO_STOP_TIMER = 256 class Footnote(Enum): @@ -99,127 +69,305 @@ class ToyotaCarInfo(CarInfo): car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.toyota_a])) -CAR_INFO: dict[str, ToyotaCarInfo | list[ToyotaCarInfo]] = { +@dataclass +class ToyotaTSS2PlatformConfig(PlatformConfig): + dbc_dict: dict = field(default_factory=lambda: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas')) + + def init(self): + self.flags |= ToyotaFlags.TSS2 | ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.NO_DSU + + if self.flags & ToyotaFlags.RADAR_ACC: + self.dbc_dict = dbc_dict('toyota_nodsu_pt_generated', None) + + +class CAR(Platforms): # Toyota - CAR.ALPHARD_TSS2: [ - ToyotaCarInfo("Toyota Alphard 2019-20"), - ToyotaCarInfo("Toyota Alphard Hybrid 2021"), - ], - CAR.AVALON: [ - ToyotaCarInfo("Toyota Avalon 2016", "Toyota Safety Sense P"), - ToyotaCarInfo("Toyota Avalon 2017-18"), - ], - CAR.AVALON_2019: [ - ToyotaCarInfo("Toyota Avalon 2019-21"), - ToyotaCarInfo("Toyota Avalon Hybrid 2019-21"), - ], - CAR.AVALON_TSS2: [ - ToyotaCarInfo("Toyota Avalon 2022"), - ToyotaCarInfo("Toyota Avalon Hybrid 2022"), - ], - CAR.CAMRY: [ - ToyotaCarInfo("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), - ToyotaCarInfo("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), - ], - CAR.CAMRY_TSS2: [ - ToyotaCarInfo("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), - ToyotaCarInfo("Toyota Camry Hybrid 2021-24"), - ], - CAR.CHR: [ - ToyotaCarInfo("Toyota C-HR 2017-20"), - ToyotaCarInfo("Toyota C-HR Hybrid 2017-20"), - ], - CAR.CHR_TSS2: [ - ToyotaCarInfo("Toyota C-HR 2021"), - ToyotaCarInfo("Toyota C-HR Hybrid 2021-22"), - ], - CAR.COROLLA: ToyotaCarInfo("Toyota Corolla 2017-19"), - CAR.COROLLA_TSS2: [ - ToyotaCarInfo("Toyota Corolla 2020-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), - ToyotaCarInfo("Toyota Corolla Cross (Non-US only) 2020-23", min_enable_speed=7.5), - ToyotaCarInfo("Toyota Corolla Hatchback 2019-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), - # Hybrid platforms - ToyotaCarInfo("Toyota Corolla Hybrid 2020-22"), - ToyotaCarInfo("Toyota Corolla Hybrid (Non-US only) 2020-23", min_enable_speed=7.5), - ToyotaCarInfo("Toyota Corolla Cross Hybrid (Non-US only) 2020-22", min_enable_speed=7.5), - ToyotaCarInfo("Lexus UX Hybrid 2019-23"), - ], - CAR.HIGHLANDER: [ - ToyotaCarInfo("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), - ToyotaCarInfo("Toyota Highlander Hybrid 2017-19"), - ], - CAR.HIGHLANDER_TSS2: [ - ToyotaCarInfo("Toyota Highlander 2020-23"), - ToyotaCarInfo("Toyota Highlander Hybrid 2020-23"), - ], - CAR.PRIUS: [ - ToyotaCarInfo("Toyota Prius 2016", "Toyota Safety Sense P", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), - ToyotaCarInfo("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), - ToyotaCarInfo("Toyota Prius Prime 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), - ], - CAR.PRIUS_V: ToyotaCarInfo("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED), - CAR.PRIUS_TSS2: [ - ToyotaCarInfo("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), - ToyotaCarInfo("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), - ], - CAR.RAV4: [ - ToyotaCarInfo("Toyota RAV4 2016", "Toyota Safety Sense P"), - ToyotaCarInfo("Toyota RAV4 2017-18") - ], - CAR.RAV4H: [ - ToyotaCarInfo("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") - ], - CAR.RAV4_TSS2: [ - ToyotaCarInfo("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2019-21"), - ], - CAR.RAV4_TSS2_2022: [ - ToyotaCarInfo("Toyota RAV4 2022"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), - ], - CAR.RAV4_TSS2_2023: [ - ToyotaCarInfo("Toyota RAV4 2023-24"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2023-24"), - ], - CAR.MIRAI: ToyotaCarInfo("Toyota Mirai 2021"), - CAR.SIENNA: ToyotaCarInfo("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED), + ALPHARD_TSS2 = ToyotaTSS2PlatformConfig( + "TOYOTA ALPHARD 2020", + [ + ToyotaCarInfo("Toyota Alphard 2019-20"), + ToyotaCarInfo("Toyota Alphard Hybrid 2021"), + ], + specs=CarSpecs(mass=4305. * CV.LB_TO_KG, wheelbase=3.0, steerRatio=14.2, tireStiffnessFactor=0.444), + ) + AVALON = PlatformConfig( + "TOYOTA AVALON 2016", + [ + ToyotaCarInfo("Toyota Avalon 2016", "Toyota Safety Sense P"), + ToyotaCarInfo("Toyota Avalon 2017-18"), + ], + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + specs=CarSpecs(mass=3505. * CV.LB_TO_KG, wheelbase=2.82, steerRatio=14.8, tireStiffnessFactor=0.7983), + ) + AVALON_2019 = PlatformConfig( + "TOYOTA AVALON 2019", + [ + ToyotaCarInfo("Toyota Avalon 2019-21"), + ToyotaCarInfo("Toyota Avalon Hybrid 2019-21"), + ], + dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), + specs=AVALON.specs, + ) + AVALON_TSS2 = ToyotaTSS2PlatformConfig( + "TOYOTA AVALON 2022", # TSS 2.5 + [ + ToyotaCarInfo("Toyota Avalon 2022"), + ToyotaCarInfo("Toyota Avalon Hybrid 2022"), + ], + specs=AVALON.specs, + ) + CAMRY = PlatformConfig( + "TOYOTA CAMRY 2018", + [ + ToyotaCarInfo("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), + ToyotaCarInfo("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), + ], + dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_DSU, + specs=CarSpecs(mass=3400. * CV.LB_TO_KG, wheelbase=2.82448, steerRatio=13.7, tireStiffnessFactor=0.7933), + ) + CAMRY_TSS2 = ToyotaTSS2PlatformConfig( + "TOYOTA CAMRY 2021", # TSS 2.5 + [ + ToyotaCarInfo("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), + ToyotaCarInfo("Toyota Camry Hybrid 2021-24"), + ], + specs=CAMRY.specs, + ) + CHR = PlatformConfig( + "TOYOTA C-HR 2018", + [ + ToyotaCarInfo("Toyota C-HR 2017-20"), + ToyotaCarInfo("Toyota C-HR Hybrid 2017-20"), + ], + dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_DSU, + specs=CarSpecs(mass=3300. * CV.LB_TO_KG, wheelbase=2.63906, steerRatio=13.6, tireStiffnessFactor=0.7933), + ) + CHR_TSS2 = ToyotaTSS2PlatformConfig( + "TOYOTA C-HR 2021", + [ + ToyotaCarInfo("Toyota C-HR 2021"), + ToyotaCarInfo("Toyota C-HR Hybrid 2021-22"), + ], + flags=ToyotaFlags.RADAR_ACC, + specs=CHR.specs, + ) + COROLLA = PlatformConfig( + "TOYOTA COROLLA 2017", + ToyotaCarInfo("Toyota Corolla 2017-19"), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + specs=CarSpecs(mass=2860. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=18.27, tireStiffnessFactor=0.444), + ) + # LSS2 Lexus UX Hybrid is same as a TSS2 Corolla Hybrid + COROLLA_TSS2 = ToyotaTSS2PlatformConfig( + "TOYOTA COROLLA TSS2 2019", + [ + ToyotaCarInfo("Toyota Corolla 2020-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), + ToyotaCarInfo("Toyota Corolla Cross (Non-US only) 2020-23", min_enable_speed=7.5), + ToyotaCarInfo("Toyota Corolla Hatchback 2019-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), + # Hybrid platforms + ToyotaCarInfo("Toyota Corolla Hybrid 2020-22"), + ToyotaCarInfo("Toyota Corolla Hybrid (Non-US only) 2020-23", min_enable_speed=7.5), + ToyotaCarInfo("Toyota Corolla Cross Hybrid (Non-US only) 2020-22", min_enable_speed=7.5), + ToyotaCarInfo("Lexus UX Hybrid 2019-23"), + ], + specs=CarSpecs(mass=3060. * CV.LB_TO_KG, wheelbase=2.67, steerRatio=13.9, tireStiffnessFactor=0.444), + ) + HIGHLANDER = PlatformConfig( + "TOYOTA HIGHLANDER 2017", + [ + ToyotaCarInfo("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), + ToyotaCarInfo("Toyota Highlander Hybrid 2017-19"), + ], + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_STOP_TIMER, + specs=CarSpecs(mass=4516. * CV.LB_TO_KG, wheelbase=2.8194, steerRatio=16.0, tireStiffnessFactor=0.8), + ) + HIGHLANDER_TSS2 = ToyotaTSS2PlatformConfig( + "TOYOTA HIGHLANDER 2020", + [ + ToyotaCarInfo("Toyota Highlander 2020-23"), + ToyotaCarInfo("Toyota Highlander Hybrid 2020-23"), + ], + specs=HIGHLANDER.specs, + ) + PRIUS = PlatformConfig( + "TOYOTA PRIUS 2017", + [ + ToyotaCarInfo("Toyota Prius 2016", "Toyota Safety Sense P", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ToyotaCarInfo("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ToyotaCarInfo("Toyota Prius Prime 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ], + dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), + specs=CarSpecs(mass=3045. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.74, tireStiffnessFactor=0.6371), + ) + PRIUS_V = PlatformConfig( + "TOYOTA PRIUS v 2017", + ToyotaCarInfo("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_STOP_TIMER, + specs=CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), + ) + PRIUS_TSS2 = ToyotaTSS2PlatformConfig( + "TOYOTA PRIUS TSS2 2021", + [ + ToyotaCarInfo("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), + ToyotaCarInfo("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), + ], + specs=CarSpecs(mass=3115. * CV.LB_TO_KG, wheelbase=2.70002, steerRatio=13.4, tireStiffnessFactor=0.6371), + ) + RAV4 = PlatformConfig( + "TOYOTA RAV4 2017", + [ + ToyotaCarInfo("Toyota RAV4 2016", "Toyota Safety Sense P"), + ToyotaCarInfo("Toyota RAV4 2017-18") + ], + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + specs=CarSpecs(mass=3650. * CV.LB_TO_KG, wheelbase=2.65, steerRatio=16.88, tireStiffnessFactor=0.5533), + ) + RAV4H = PlatformConfig( + "TOYOTA RAV4 HYBRID 2017", + [ + ToyotaCarInfo("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), + ToyotaCarInfo("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") + ], + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_STOP_TIMER, + specs=RAV4.specs, + ) + RAV4_TSS2 = ToyotaTSS2PlatformConfig( + "TOYOTA RAV4 2019", + [ + ToyotaCarInfo("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), + ToyotaCarInfo("Toyota RAV4 Hybrid 2019-21"), + ], + specs=CarSpecs(mass=3585. * CV.LB_TO_KG, wheelbase=2.68986, steerRatio=14.3, tireStiffnessFactor=0.7933), + ) + RAV4_TSS2_2022 = ToyotaTSS2PlatformConfig( + "TOYOTA RAV4 2022", + [ + ToyotaCarInfo("Toyota RAV4 2022"), + ToyotaCarInfo("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), + ], + flags=ToyotaFlags.RADAR_ACC, + specs=RAV4_TSS2.specs, + ) + RAV4_TSS2_2023 = ToyotaTSS2PlatformConfig( + "TOYOTA RAV4 2023", + [ + ToyotaCarInfo("Toyota RAV4 2023-24"), + ToyotaCarInfo("Toyota RAV4 Hybrid 2023-24"), + ], + flags=ToyotaFlags.RADAR_ACC | ToyotaFlags.ANGLE_CONTROL, + specs=RAV4_TSS2.specs, + ) + MIRAI = ToyotaTSS2PlatformConfig( + "TOYOTA MIRAI 2021", # TSS 2.5 + ToyotaCarInfo("Toyota Mirai 2021"), + specs=CarSpecs(mass=4300. * CV.LB_TO_KG, wheelbase=2.91, steerRatio=14.8, tireStiffnessFactor=0.8), + ) + SIENNA = PlatformConfig( + "TOYOTA SIENNA 2018", + ToyotaCarInfo("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_STOP_TIMER, + specs=CarSpecs(mass=4590. * CV.LB_TO_KG, wheelbase=3.03, steerRatio=15.5, tireStiffnessFactor=0.444), + ) # Lexus - CAR.LEXUS_CTH: ToyotaCarInfo("Lexus CT Hybrid 2017-18", "Lexus Safety System+"), - CAR.LEXUS_ES: [ - ToyotaCarInfo("Lexus ES 2017-18"), - ToyotaCarInfo("Lexus ES Hybrid 2017-18"), - ], - CAR.LEXUS_ES_TSS2: [ - ToyotaCarInfo("Lexus ES 2019-24"), - ToyotaCarInfo("Lexus ES Hybrid 2019-24", video_link="https://youtu.be/BZ29osRVJeg?t=12"), - ], - CAR.LEXUS_IS: ToyotaCarInfo("Lexus IS 2017-19"), - CAR.LEXUS_IS_TSS2: ToyotaCarInfo("Lexus IS 2022-23"), - CAR.LEXUS_GS_F: ToyotaCarInfo("Lexus GS F 2016"), - CAR.LEXUS_NX: [ - ToyotaCarInfo("Lexus NX 2018-19"), - ToyotaCarInfo("Lexus NX Hybrid 2018-19"), - ], - CAR.LEXUS_NX_TSS2: [ - ToyotaCarInfo("Lexus NX 2020-21"), - ToyotaCarInfo("Lexus NX Hybrid 2020-21"), - ], - CAR.LEXUS_LC_TSS2: ToyotaCarInfo("Lexus LC 2024"), - CAR.LEXUS_RC: ToyotaCarInfo("Lexus RC 2018-20"), - CAR.LEXUS_RX: [ - ToyotaCarInfo("Lexus RX 2016", "Lexus Safety System+"), - ToyotaCarInfo("Lexus RX 2017-19"), - # Hybrid platforms - ToyotaCarInfo("Lexus RX Hybrid 2016", "Lexus Safety System+"), - ToyotaCarInfo("Lexus RX Hybrid 2017-19"), - ], - CAR.LEXUS_RX_TSS2: [ - ToyotaCarInfo("Lexus RX 2020-22"), - ToyotaCarInfo("Lexus RX Hybrid 2020-22"), - ], -} + LEXUS_CTH = PlatformConfig( + "LEXUS CT HYBRID 2018", + ToyotaCarInfo("Lexus CT Hybrid 2017-18", "Lexus Safety System+"), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + specs=CarSpecs(mass=3108. * CV.LB_TO_KG, wheelbase=2.6, steerRatio=18.6, tireStiffnessFactor=0.517), + ) + LEXUS_ES = PlatformConfig( + "LEXUS ES 2018", + [ + ToyotaCarInfo("Lexus ES 2017-18"), + ToyotaCarInfo("Lexus ES Hybrid 2017-18"), + ], + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + specs=CarSpecs(mass=3677. * CV.LB_TO_KG, wheelbase=2.8702, steerRatio=16.0, tireStiffnessFactor=0.444), + ) + LEXUS_ES_TSS2 = ToyotaTSS2PlatformConfig( + "LEXUS ES 2019", + [ + ToyotaCarInfo("Lexus ES 2019-24"), + ToyotaCarInfo("Lexus ES Hybrid 2019-24", video_link="https://youtu.be/BZ29osRVJeg?t=12"), + ], + specs=LEXUS_ES.specs, + ) + LEXUS_IS = PlatformConfig( + "LEXUS IS 2018", + ToyotaCarInfo("Lexus IS 2017-19"), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.UNSUPPORTED_DSU, + specs=CarSpecs(mass=3736.8 * CV.LB_TO_KG, wheelbase=2.79908, steerRatio=13.3, tireStiffnessFactor=0.444), + ) + LEXUS_IS_TSS2 = ToyotaTSS2PlatformConfig( + "LEXUS IS 2023", + ToyotaCarInfo("Lexus IS 2022-23"), + specs=LEXUS_IS.specs, + ) + LEXUS_NX = PlatformConfig( + "LEXUS NX 2018", + [ + ToyotaCarInfo("Lexus NX 2018-19"), + ToyotaCarInfo("Lexus NX Hybrid 2018-19"), + ], + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + specs=CarSpecs(mass=4070. * CV.LB_TO_KG, wheelbase=2.66, steerRatio=14.7, tireStiffnessFactor=0.444), + ) + LEXUS_NX_TSS2 = ToyotaTSS2PlatformConfig( + "LEXUS NX 2020", + [ + ToyotaCarInfo("Lexus NX 2020-21"), + ToyotaCarInfo("Lexus NX Hybrid 2020-21"), + ], + specs=LEXUS_NX.specs, + ) + LEXUS_LC_TSS2 = ToyotaTSS2PlatformConfig( + "LEXUS LC 2024", + ToyotaCarInfo("Lexus LC 2024"), + specs=CarSpecs(mass=4500. * CV.LB_TO_KG, wheelbase=2.87, steerRatio=13.0, tireStiffnessFactor=0.444), + ) + LEXUS_RC = PlatformConfig( + "LEXUS RC 2020", + ToyotaCarInfo("Lexus RC 2018-20"), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.UNSUPPORTED_DSU, + specs=LEXUS_IS.specs, + ) + LEXUS_RX = PlatformConfig( + "LEXUS RX 2016", + [ + ToyotaCarInfo("Lexus RX 2016", "Lexus Safety System+"), + ToyotaCarInfo("Lexus RX 2017-19"), + # Hybrid platforms + ToyotaCarInfo("Lexus RX Hybrid 2016", "Lexus Safety System+"), + ToyotaCarInfo("Lexus RX Hybrid 2017-19"), + ], + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + specs=CarSpecs(mass=4481. * CV.LB_TO_KG, wheelbase=2.79, steerRatio=16., tireStiffnessFactor=0.5533), + ) + LEXUS_RX_TSS2 = ToyotaTSS2PlatformConfig( + "LEXUS RX 2020", + [ + ToyotaCarInfo("Lexus RX 2020-22"), + ToyotaCarInfo("Lexus RX Hybrid 2020-22"), + ], + specs=LEXUS_RX.specs, + ) + LEXUS_GS_F = PlatformConfig( + "LEXUS GS F 2016", + ToyotaCarInfo("Lexus GS F 2016"), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.UNSUPPORTED_DSU, + specs=CarSpecs(mass=4034. * CV.LB_TO_KG, wheelbase=2.84988, steerRatio=13.3, tireStiffnessFactor=0.444), + ) + # (addr, cars, bus, 1/freq*100, vl) STATIC_DSU_MSGS = [ @@ -439,62 +587,24 @@ FW_QUERY_CONFIG = FwQueryConfig( STEER_THRESHOLD = 100 -DBC = { - CAR.RAV4H: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.RAV4: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.PRIUS: dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - CAR.PRIUS_V: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.COROLLA: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.LEXUS_LC_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.LEXUS_RC: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_RX: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_RX_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.CHR: dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - CAR.CHR_TSS2: dbc_dict('toyota_nodsu_pt_generated', None), - CAR.CAMRY: dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - CAR.CAMRY_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.HIGHLANDER: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.HIGHLANDER_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.AVALON: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.AVALON_2019: dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - CAR.AVALON_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.RAV4_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.RAV4_TSS2_2022: dbc_dict('toyota_nodsu_pt_generated', None), - CAR.RAV4_TSS2_2023: dbc_dict('toyota_nodsu_pt_generated', None), - CAR.COROLLA_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.LEXUS_ES: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.LEXUS_ES_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.SIENNA: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_IS: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_IS_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.LEXUS_CTH: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.LEXUS_NX: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_NX_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.PRIUS_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.MIRAI: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.ALPHARD_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.LEXUS_GS_F: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), -} - # These cars have non-standard EPS torque scale factors. All others are 73 EPS_SCALE = defaultdict(lambda: 73, {CAR.PRIUS: 66, CAR.COROLLA: 88, CAR.LEXUS_IS: 77, CAR.LEXUS_RC: 77, CAR.LEXUS_CTH: 100, CAR.PRIUS_V: 100}) # Toyota/Lexus Safety Sense 2.0 and 2.5 -TSS2_CAR = {CAR.RAV4_TSS2, CAR.RAV4_TSS2_2022, CAR.RAV4_TSS2_2023, CAR.COROLLA_TSS2, CAR.LEXUS_ES_TSS2, - CAR.LEXUS_RX_TSS2, CAR.HIGHLANDER_TSS2, CAR.PRIUS_TSS2, CAR.CAMRY_TSS2, CAR.LEXUS_IS_TSS2, - CAR.MIRAI, CAR.LEXUS_NX_TSS2, CAR.LEXUS_LC_TSS2, CAR.ALPHARD_TSS2, CAR.AVALON_TSS2, - CAR.CHR_TSS2} +TSS2_CAR = CAR.with_flags(ToyotaFlags.TSS2) -NO_DSU_CAR = TSS2_CAR | {CAR.CHR, CAR.CAMRY} +NO_DSU_CAR = CAR.with_flags(ToyotaFlags.NO_DSU) # the DSU uses the AEB message for longitudinal on these cars -UNSUPPORTED_DSU_CAR = {CAR.LEXUS_IS, CAR.LEXUS_RC, CAR.LEXUS_GS_F} +UNSUPPORTED_DSU_CAR = CAR.with_flags(ToyotaFlags.UNSUPPORTED_DSU) # these cars have a radar which sends ACC messages instead of the camera -RADAR_ACC_CAR = {CAR.RAV4_TSS2_2022, CAR.RAV4_TSS2_2023, CAR.CHR_TSS2} +RADAR_ACC_CAR = CAR.with_flags(ToyotaFlags.RADAR_ACC) -# these cars use the Lane Tracing Assist (LTA) message for lateral control -ANGLE_CONTROL_CAR = {CAR.RAV4_TSS2_2023} +ANGLE_CONTROL_CAR = CAR.with_flags(ToyotaFlags.ANGLE_CONTROL) # no resume button press required -NO_STOP_TIMER_CAR = TSS2_CAR | {CAR.PRIUS_V, CAR.RAV4H, CAR.HIGHLANDER, CAR.SIENNA} +NO_STOP_TIMER_CAR = CAR.with_flags(ToyotaFlags.NO_STOP_TIMER) + +CAR_INFO = CAR.create_carinfo_map() +DBC = CAR.create_dbc_map() diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 015f941261..d437f1fac8 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -de322b3898f8fedb57036b6cf4a0605968138929 +7fe098c307b78bf1f6f003452f9ba0a0eaad83d6 From 341b81c0a5c5f378f749a8ba07514f48f0f9faa5 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Fri, 1 Mar 2024 17:18:03 +0000 Subject: [PATCH 043/599] Ford: use flags for CANFD (#31664) --- selfdrive/car/ford/carcontroller.py | 6 +++--- selfdrive/car/ford/carstate.py | 16 +++++++-------- selfdrive/car/ford/interface.py | 6 +++--- selfdrive/car/ford/values.py | 30 ++++++++++++++++++----------- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/selfdrive/car/ford/carcontroller.py b/selfdrive/car/ford/carcontroller.py index 61c46674db..390325a8ec 100644 --- a/selfdrive/car/ford/carcontroller.py +++ b/selfdrive/car/ford/carcontroller.py @@ -1,9 +1,9 @@ from cereal import car -from openpilot.common.numpy_fast import clip from opendbc.can.packer import CANPacker +from openpilot.common.numpy_fast import clip from openpilot.selfdrive.car import apply_std_steer_angle_limits from openpilot.selfdrive.car.ford import fordcan -from openpilot.selfdrive.car.ford.values import CANFD_CAR, CarControllerParams +from openpilot.selfdrive.car.ford.values import CarControllerParams, FordFlags from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX @@ -70,7 +70,7 @@ class CarController(CarControllerBase): self.apply_curvature_last = apply_curvature - if self.CP.carFingerprint in CANFD_CAR: + if self.CP.flags & FordFlags.CANFD: # TODO: extended mode mode = 1 if CC.latActive else 0 counter = (self.frame // CarControllerParams.STEER_STEP) % 0xF diff --git a/selfdrive/car/ford/carstate.py b/selfdrive/car/ford/carstate.py index 34006e8da4..039e245754 100644 --- a/selfdrive/car/ford/carstate.py +++ b/selfdrive/car/ford/carstate.py @@ -1,10 +1,10 @@ from cereal import car -from openpilot.common.conversions import Conversions as CV from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.interfaces import CarStateBase +from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.ford.fordcan import CanBus -from openpilot.selfdrive.car.ford.values import CANFD_CAR, CarControllerParams, DBC +from openpilot.selfdrive.car.ford.values import DBC, CarControllerParams, FordFlags +from openpilot.selfdrive.car.interfaces import CarStateBase GearShifter = car.CarState.GearShifter TransmissionType = car.CarParams.TransmissionType @@ -49,7 +49,7 @@ class CarState(CarStateBase): ret.steerFaultPermanent = cp.vl["EPAS_INFO"]["EPAS_Failure"] in (2, 3) ret.espDisabled = cp.vl["Cluster_Info1_FD1"]["DrvSlipCtlMde_D_Rq"] != 0 # 0 is default mode - if self.CP.carFingerprint in CANFD_CAR: + if self.CP.flags & FordFlags.CANFD: # this signal is always 0 on non-CAN FD cars ret.steerFaultTemporary |= cp.vl["Lane_Assist_Data3_FD1"]["LatCtlSte_D_Stat"] not in (1, 2, 3) @@ -91,7 +91,7 @@ class CarState(CarStateBase): # blindspot sensors if self.CP.enableBsm: - cp_bsm = cp_cam if self.CP.carFingerprint in CANFD_CAR else cp + cp_bsm = cp_cam if self.CP.flags & FordFlags.CANFD else cp ret.leftBlindspot = cp_bsm.vl["Side_Detect_L_Stat"]["SodDetctLeft_D_Stat"] != 0 ret.rightBlindspot = cp_bsm.vl["Side_Detect_R_Stat"]["SodDetctRight_D_Stat"] != 0 @@ -122,7 +122,7 @@ class CarState(CarStateBase): ("RCMStatusMessage2_FD1", 10), ] - if CP.carFingerprint in CANFD_CAR: + if CP.flags & FordFlags.CANFD: messages += [ ("Lane_Assist_Data3_FD1", 33), ] @@ -137,7 +137,7 @@ class CarState(CarStateBase): ("BCM_Lamp_Stat_FD1", 1), ] - if CP.enableBsm and CP.carFingerprint not in CANFD_CAR: + if CP.enableBsm and not (CP.flags & FordFlags.CANFD): messages += [ ("Side_Detect_L_Stat", 5), ("Side_Detect_R_Stat", 5), @@ -155,7 +155,7 @@ class CarState(CarStateBase): ("IPMA_Data", 1), ] - if CP.enableBsm and CP.carFingerprint in CANFD_CAR: + if CP.enableBsm and CP.flags & FordFlags.CANFD: messages += [ ("Side_Detect_L_Stat", 5), ("Side_Detect_R_Stat", 5), diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index fd4c381f88..a79b4af2e0 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -3,7 +3,7 @@ from panda import Panda from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import get_safety_config from openpilot.selfdrive.car.ford.fordcan import CanBus -from openpilot.selfdrive.car.ford.values import CANFD_CAR, Ecu +from openpilot.selfdrive.car.ford.values import Ecu, FordFlags from openpilot.selfdrive.car.interfaces import CarInterfaceBase TransmissionType = car.CarParams.TransmissionType @@ -14,7 +14,7 @@ class CarInterface(CarInterfaceBase): @staticmethod def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): ret.carName = "ford" - ret.dashcamOnly = candidate in CANFD_CAR + ret.dashcamOnly = bool(ret.flags & FordFlags.CANFD) ret.radarUnavailable = True ret.steerControlType = car.CarParams.SteerControlType.angle @@ -36,7 +36,7 @@ class CarInterface(CarInterfaceBase): ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_FORD_LONG_CONTROL ret.openpilotLongitudinalControl = True - if candidate in CANFD_CAR: + if ret.flags & FordFlags.CANFD: ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_FORD_CANFD # Auto Transmission: 0x732 ECU or Gear_Shift_by_Wire_FD1 diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index e60b7f0612..985e7bc4b2 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from enum import Enum +from enum import Enum, IntFlag import panda.python.uds as uds from cereal import car @@ -39,6 +39,11 @@ class CarControllerParams: pass +class FordFlags(IntFlag): + # Static flags + CANFD = 1 + + class RADAR: DELPHI_ESR = 'ford_fusion_2018_adas' DELPHI_MRR = 'FORD_CADS' @@ -57,7 +62,7 @@ class FordCarInfo(CarInfo): package: str = "Co-Pilot360 Assist+" def init_make(self, CP: car.CarParams): - harness = CarHarness.ford_q4 if CP.carFingerprint in CANFD_CAR else CarHarness.ford_q3 + harness = CarHarness.ford_q4 if CP.flags & FordFlags.CANFD else CarHarness.ford_q3 if CP.carFingerprint in (CAR.BRONCO_SPORT_MK1, CAR.MAVERICK_MK1, CAR.F_150_MK14, CAR.F_150_LIGHTNING_MK1): self.car_parts = CarParts([Device.threex_angled_mount, harness]) else: @@ -69,6 +74,15 @@ class FordPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('ford_lincoln_base_pt', RADAR.DELPHI_MRR)) +@dataclass +class FordCANFDPlatformConfig(FordPlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('ford_lincoln_base_pt', None)) + + def init(self): + super().init() + self.flags |= FordFlags.CANFD + + class CAR(Platforms): BRONCO_SPORT_MK1 = FordPlatformConfig( "FORD BRONCO SPORT 1ST GEN", @@ -97,19 +111,17 @@ class CAR(Platforms): ], specs=CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), ) - F_150_MK14 = FordPlatformConfig( + F_150_MK14 = FordCANFDPlatformConfig( "FORD F-150 14TH GEN", [ FordCarInfo("Ford F-150 2023", "Co-Pilot360 Active 2.0"), FordCarInfo("Ford F-150 Hybrid 2023", "Co-Pilot360 Active 2.0"), ], - dbc_dict=dbc_dict('ford_lincoln_base_pt', None), specs=CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), ) - F_150_LIGHTNING_MK1 = FordPlatformConfig( + F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( "FORD F-150 LIGHTNING 1ST GEN", FordCarInfo("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0"), - dbc_dict=dbc_dict('ford_lincoln_base_pt', None), specs=CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), ) FOCUS_MK4 = FordPlatformConfig( @@ -130,17 +142,13 @@ class CAR(Platforms): ], specs=CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) - MUSTANG_MACH_E_MK1 = FordPlatformConfig( + MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( "FORD MUSTANG MACH-E 1ST GEN", FordCarInfo("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0"), - dbc_dict=dbc_dict('ford_lincoln_base_pt', None), specs=CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) -CANFD_CAR = {CAR.F_150_MK14, CAR.F_150_LIGHTNING_MK1, CAR.MUSTANG_MACH_E_MK1} - - DATA_IDENTIFIER_FORD_ASBUILT = 0xDE00 ASBUILT_BLOCKS: list[tuple[int, list]] = [ From 2e0db7f8d87457d05fef8156eccb94c949623cf3 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 1 Mar 2024 13:31:43 -0500 Subject: [PATCH 044/599] Hyundai: move car specs to platformconfig (#31661) * specs * override * fixes 1 * fix 3 * fixes 4 * fixes * fixes * fixc * fix number 723124 * that too * fixes * aa --- selfdrive/car/__init__.py | 3 + selfdrive/car/hyundai/interface.py | 191 ----------------------------- selfdrive/car/hyundai/values.py | 99 +++++++++++++-- 3 files changed, 90 insertions(+), 203 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 27d320bb41..b30f24dad7 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -258,6 +258,9 @@ class CarSpecs: minEnableSpeed: float = -1.0 # m/s tireStiffnessFactor: float = 1.0 + def override(self, **kwargs): + return replace(self, **kwargs) + @dataclass(order=True) class PlatformConfig(Freezable): diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 049a63399c..69b5132806 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -1,6 +1,5 @@ from cereal import car from panda import Panda -from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, CAR, DBC, CANFD_CAR, CAMERA_SCC_CAR, CANFD_RADAR_SCC_CAR, \ CANFD_UNSUPPORTED_LONGITUDINAL_CAR, EV_CAR, HYBRID_CAR, LEGACY_SAFETY_MODE_CAR, \ @@ -76,196 +75,6 @@ class CarInterface(CarInterfaceBase): ret.steerLimitTimer = 0.4 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - if candidate in (CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN): - ret.mass = 1600. if candidate == CAR.AZERA_6TH_GEN else 1675. # ICE is ~average of 2.5L and 3.5L - ret.wheelbase = 2.885 - ret.steerRatio = 14.5 - elif candidate in (CAR.SANTA_FE, CAR.SANTA_FE_2022, CAR.SANTA_FE_HEV_2022, CAR.SANTA_FE_PHEV_2022): - ret.mass = 3982. * CV.LB_TO_KG - ret.wheelbase = 2.766 - # Values from optimizer - ret.steerRatio = 16.55 # 13.8 is spec end-to-end - ret.tireStiffnessFactor = 0.82 - elif candidate in (CAR.SONATA, CAR.SONATA_HYBRID): - ret.mass = 1513. - ret.wheelbase = 2.84 - ret.steerRatio = 13.27 * 1.15 # 15% higher at the center seems reasonable - ret.tireStiffnessFactor = 0.65 - elif candidate == CAR.SONATA_LF: - ret.mass = 1536. - ret.wheelbase = 2.804 - ret.steerRatio = 13.27 * 1.15 # 15% higher at the center seems reasonable - elif candidate == CAR.PALISADE: - ret.mass = 1999. - ret.wheelbase = 2.90 - ret.steerRatio = 15.6 * 1.15 - ret.tireStiffnessFactor = 0.63 - elif candidate in (CAR.ELANTRA, CAR.ELANTRA_GT_I30): - ret.mass = 1275. - ret.wheelbase = 2.7 - ret.steerRatio = 15.4 # 14 is Stock | Settled Params Learner values are steerRatio: 15.401566348670535 - ret.tireStiffnessFactor = 0.385 # stiffnessFactor settled on 1.0081302973865127 - ret.minSteerSpeed = 32 * CV.MPH_TO_MS - elif candidate == CAR.ELANTRA_2021: - ret.mass = 2800. * CV.LB_TO_KG - ret.wheelbase = 2.72 - ret.steerRatio = 12.9 - ret.tireStiffnessFactor = 0.65 - elif candidate == CAR.ELANTRA_HEV_2021: - ret.mass = 3017. * CV.LB_TO_KG - ret.wheelbase = 2.72 - ret.steerRatio = 12.9 - ret.tireStiffnessFactor = 0.65 - elif candidate == CAR.HYUNDAI_GENESIS: - ret.mass = 2060. - ret.wheelbase = 3.01 - ret.steerRatio = 16.5 - ret.minSteerSpeed = 60 * CV.KPH_TO_MS - elif candidate in (CAR.KONA, CAR.KONA_EV, CAR.KONA_HEV, CAR.KONA_EV_2022, CAR.KONA_EV_2ND_GEN): - ret.mass = {CAR.KONA_EV: 1685., CAR.KONA_HEV: 1425., CAR.KONA_EV_2022: 1743., CAR.KONA_EV_2ND_GEN: 1740.}.get(candidate, 1275.) - ret.wheelbase = {CAR.KONA_EV_2ND_GEN: 2.66, }.get(candidate, 2.6) - ret.steerRatio = {CAR.KONA_EV_2ND_GEN: 13.6, }.get(candidate, 13.42) # Spec - ret.tireStiffnessFactor = 0.385 - elif candidate in (CAR.IONIQ, CAR.IONIQ_EV_LTD, CAR.IONIQ_PHEV_2019, CAR.IONIQ_HEV_2022, CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV): - ret.mass = 1490. # weight per hyundai site https://www.hyundaiusa.com/ioniq-electric/specifications.aspx - ret.wheelbase = 2.7 - ret.steerRatio = 13.73 # Spec - ret.tireStiffnessFactor = 0.385 - if candidate in (CAR.IONIQ, CAR.IONIQ_EV_LTD, CAR.IONIQ_PHEV_2019): - ret.minSteerSpeed = 32 * CV.MPH_TO_MS - elif candidate in (CAR.IONIQ_5, CAR.IONIQ_6): - ret.mass = 1948 - ret.wheelbase = 2.97 - ret.steerRatio = 14.26 - ret.tireStiffnessFactor = 0.65 - elif candidate == CAR.VELOSTER: - ret.mass = 2917. * CV.LB_TO_KG - ret.wheelbase = 2.80 - ret.steerRatio = 13.75 * 1.15 - ret.tireStiffnessFactor = 0.5 - elif candidate == CAR.TUCSON: - ret.mass = 3520. * CV.LB_TO_KG - ret.wheelbase = 2.67 - ret.steerRatio = 14.00 * 1.15 - ret.tireStiffnessFactor = 0.385 - elif candidate == CAR.TUCSON_4TH_GEN: - ret.mass = 1630. # average - ret.wheelbase = 2.756 - ret.steerRatio = 16. - ret.tireStiffnessFactor = 0.385 - elif candidate == CAR.SANTA_CRUZ_1ST_GEN: - ret.mass = 1870. # weight from Limited trim - the only supported trim - ret.wheelbase = 3.000 - # steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf - ret.steerRatio = 14.2 - elif candidate == CAR.CUSTIN_1ST_GEN: - ret.mass = 1690. # from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0 - ret.wheelbase = 3.055 - ret.steerRatio = 17.0 # from learner - elif candidate == CAR.STARIA_4TH_GEN: - ret.mass = 2205. - ret.wheelbase = 3.273 - ret.steerRatio = 11.94 # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf - - # Kia - elif candidate == CAR.KIA_SORENTO: - ret.mass = 1985. - ret.wheelbase = 2.78 - ret.steerRatio = 14.4 * 1.1 # 10% higher at the center seems reasonable - elif candidate in (CAR.KIA_NIRO_EV, CAR.KIA_NIRO_EV_2ND_GEN, CAR.KIA_NIRO_PHEV, CAR.KIA_NIRO_HEV_2021, CAR.KIA_NIRO_HEV_2ND_GEN, CAR.KIA_NIRO_PHEV_2022): - ret.mass = 3543. * CV.LB_TO_KG # average of all the cars - ret.wheelbase = 2.7 - ret.steerRatio = 13.6 # average of all the cars - ret.tireStiffnessFactor = 0.385 - if candidate == CAR.KIA_NIRO_PHEV: - ret.minSteerSpeed = 32 * CV.MPH_TO_MS - elif candidate == CAR.KIA_SELTOS: - ret.mass = 1337. - ret.wheelbase = 2.63 - ret.steerRatio = 14.56 - elif candidate == CAR.KIA_SPORTAGE_5TH_GEN: - ret.mass = 1725. # weight from SX and above trims, average of FWD and AWD versions - ret.wheelbase = 2.756 - ret.steerRatio = 13.6 # steering ratio according to Kia News https://www.kiamedia.com/us/en/models/sportage/2023/specifications - elif candidate in (CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.KIA_OPTIMA_H, CAR.KIA_OPTIMA_H_G4_FL): - ret.mass = 3558. * CV.LB_TO_KG - ret.wheelbase = 2.80 - ret.steerRatio = 13.75 - ret.tireStiffnessFactor = 0.5 - if candidate == CAR.KIA_OPTIMA_G4: - ret.minSteerSpeed = 32 * CV.MPH_TO_MS - elif candidate in (CAR.KIA_STINGER, CAR.KIA_STINGER_2022): - ret.mass = 1825. - ret.wheelbase = 2.78 - ret.steerRatio = 14.4 * 1.15 # 15% higher at the center seems reasonable - elif candidate == CAR.KIA_FORTE: - ret.mass = 2878. * CV.LB_TO_KG - ret.wheelbase = 2.80 - ret.steerRatio = 13.75 - ret.tireStiffnessFactor = 0.5 - elif candidate == CAR.KIA_CEED: - ret.mass = 1450. - ret.wheelbase = 2.65 - ret.steerRatio = 13.75 - ret.tireStiffnessFactor = 0.5 - elif candidate in (CAR.KIA_K5_2021, CAR.KIA_K5_HEV_2020): - ret.mass = 3381. * CV.LB_TO_KG - ret.wheelbase = 2.85 - ret.steerRatio = 13.27 # 2021 Kia K5 Steering Ratio (all trims) - ret.tireStiffnessFactor = 0.5 - elif candidate == CAR.KIA_EV6: - ret.mass = 2055 - ret.wheelbase = 2.9 - ret.steerRatio = 16. - ret.tireStiffnessFactor = 0.65 - elif candidate in (CAR.KIA_SORENTO_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN): - ret.wheelbase = 2.81 - ret.steerRatio = 13.5 # average of the platforms - if candidate == CAR.KIA_SORENTO_4TH_GEN: - ret.mass = 3957 * CV.LB_TO_KG - else: - ret.mass = 4396 * CV.LB_TO_KG - elif candidate == CAR.KIA_CARNIVAL_4TH_GEN: - ret.mass = 2087. - ret.wheelbase = 3.09 - ret.steerRatio = 14.23 - elif candidate == CAR.KIA_K8_HEV_1ST_GEN: - ret.mass = 1630. # https://carprices.ae/brands/kia/2023/k8/1.6-turbo-hybrid - ret.wheelbase = 2.895 - ret.steerRatio = 13.27 # guesstimate from K5 platform - - # Genesis - elif candidate == CAR.GENESIS_GV60_EV_1ST_GEN: - ret.mass = 2205 - ret.wheelbase = 2.9 - # https://www.motor1.com/reviews/586376/2023-genesis-gv60-first-drive/#:~:text=Relative%20to%20the%20related%20Ioniq,5%2FEV6%27s%2014.3%3A1. - ret.steerRatio = 12.6 - elif candidate == CAR.GENESIS_G70: - ret.steerActuatorDelay = 0.1 - ret.mass = 1640.0 - ret.wheelbase = 2.84 - ret.steerRatio = 13.56 - elif candidate == CAR.GENESIS_G70_2020: - ret.mass = 3673.0 * CV.LB_TO_KG - ret.wheelbase = 2.83 - ret.steerRatio = 12.9 - elif candidate == CAR.GENESIS_GV70_1ST_GEN: - ret.mass = 1950. - ret.wheelbase = 2.87 - ret.steerRatio = 14.6 - elif candidate == CAR.GENESIS_G80: - ret.mass = 2060. - ret.wheelbase = 3.01 - ret.steerRatio = 16.5 - elif candidate == CAR.GENESIS_G90: - ret.mass = 2200. - ret.wheelbase = 3.15 - ret.steerRatio = 12.069 - elif candidate == CAR.GENESIS_GV80: - ret.mass = 2258. - ret.wheelbase = 2.95 - ret.steerRatio = 14.14 - # *** longitudinal control *** if candidate in CANFD_CAR: ret.longitudinalTuning.kpV = [0.1] diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index d23d3a0a75..ef17ffc4bf 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -5,7 +5,7 @@ from enum import Enum, IntFlag from cereal import car from panda.python import uds from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import DbcDict, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 @@ -93,6 +93,8 @@ class HyundaiFlags(IntFlag): CLUSTER_GEARS = 2 ** 21 TCU_GEARS = 2 ** 22 + MIN_STEER_32_MPH = 2 ** 23 + class Footnote(Enum): CANFD = CarFootnote( @@ -118,6 +120,9 @@ class HyundaiPlatformConfig(PlatformConfig): if self.flags & HyundaiFlags.MANDO_RADAR: self.dbc_dict = dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated') + if self.flags & HyundaiFlags.MIN_STEER_32_MPH: + self.specs = self.specs.override(minSteerSpeed = 32 * CV.MPH_TO_MS) + @dataclass class HyundaiCanFDPlatformConfig(HyundaiPlatformConfig): @@ -133,6 +138,7 @@ class CAR(Platforms): AZERA_6TH_GEN = HyundaiPlatformConfig( "HYUNDAI AZERA 6TH GEN", HyundaiCarInfo("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + specs=CarSpecs(mass=1600, wheelbase=2.885, steerRatio=14.5), ) AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( "HYUNDAI AZERA HYBRID 6TH GEN", @@ -140,6 +146,7 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarInfo("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), ], + specs=CarSpecs(mass=1675, wheelbase=2.885, steerRatio=14.5), flags=HyundaiFlags.HYBRID ) ELANTRA = HyundaiPlatformConfig( @@ -149,7 +156,9 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), HyundaiCarInfo("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])), ], - flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS + # steerRatio: 14 is Stock | Settled Params Learner values are steerRatio: 15.401566348670535, stiffnessFactor settled on 1.0081302973865127 + specs=CarSpecs(mass=1275, wheelbase=2.7, steerRatio=15.4, tireStiffnessFactor=0.385), + flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH ) ELANTRA_GT_I30 = HyundaiPlatformConfig( "HYUNDAI I30 N LINE 2019 & GT 2018 DCT", @@ -157,17 +166,20 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), HyundaiCarInfo("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), ], - flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS + specs=ELANTRA.specs, + flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH ) ELANTRA_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA 2021", HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), + specs=CarSpecs(mass=2800*CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8 ) ELANTRA_HEV_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA HYBRID 2021", HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), + specs=CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) HYUNDAI_GENESIS = HyundaiPlatformConfig( @@ -177,100 +189,120 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), HyundaiCarInfo("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), ], + specs=CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5, minSteerSpeed=60 * CV.KPH_TO_MS), flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY ) IONIQ = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2017-2019", HyundaiCarInfo("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c])), - flags=HyundaiFlags.HYBRID + specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2020-2022", HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h])), # TODO: confirm 2020-21 harness, + specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY ) IONIQ_EV_LTD = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC LIMITED 2019", HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY + specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH ) IONIQ_EV_2020 = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC 2020", HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV ) IONIQ_PHEV_2019 = HyundaiPlatformConfig( "HYUNDAI IONIQ PLUG-IN HYBRID 2019", HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), - flags=HyundaiFlags.HYBRID + specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH ) IONIQ_PHEV = HyundaiPlatformConfig( "HYUNDAI IONIQ PHEV 2020", HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID ) KONA = HyundaiPlatformConfig( "HYUNDAI KONA 2020", HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b])), + specs=CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CLUSTER_GEARS ) KONA_EV = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2019", HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g])), + specs=CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV ) KONA_EV_2022 = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2022", HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o])), + specs=CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV ) KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI KONA ELECTRIC 2ND GEN", HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", car_parts=CarParts.common([CarHarness.hyundai_r])), + specs=CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE ) KONA_HEV = HyundaiPlatformConfig( "HYUNDAI KONA HYBRID 2020", HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i])), # TODO: check packages, + specs=CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID ) SANTA_FE = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2019", HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", car_parts=CarParts.common([CarHarness.hyundai_d])), + specs=CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 ) SANTA_FE_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2022", HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", car_parts=CarParts.common([CarHarness.hyundai_l])), + specs=SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 ) SANTA_FE_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE HYBRID 2022", HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + specs=SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE PlUG-IN HYBRID 2022", HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + specs=SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) SONATA = HyundaiPlatformConfig( "HYUNDAI SONATA 2020", HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", car_parts=CarParts.common([CarHarness.hyundai_a])), + specs=CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 ) SONATA_LF = HyundaiPlatformConfig( "HYUNDAI SONATA 2019", HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + specs=CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable + flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS ) STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI STARIA 4TH GEN", HyundaiCarInfo("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + specs=CarSpecs(mass=2205, wheelbase=3.273, steerRatio=11.94), # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf ) TUCSON = HyundaiPlatformConfig( "HYUNDAI TUCSON 2019", @@ -278,6 +310,7 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarInfo("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), ], + specs=CarSpecs(mass=3520 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=16.1, tireStiffnessFactor=0.385), flags=HyundaiFlags.TCU_GEARS ) PALISADE = HyundaiPlatformConfig( @@ -286,16 +319,19 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), HyundaiCarInfo("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), ], + specs=CarSpecs(mass=1999, wheelbase=2.9, steerRatio=15.6 * 1.15, tireStiffnessFactor=0.63), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 ) VELOSTER = HyundaiPlatformConfig( "HYUNDAI VELOSTER 2019", HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e])), + specs=CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor = 0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS ) SONATA_HYBRID = HyundaiPlatformConfig( "HYUNDAI SONATA HYBRID 2021", HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + specs=SONATA.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) IONIQ_5 = HyundaiCanFDPlatformConfig( @@ -305,11 +341,13 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), HyundaiCarInfo("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), ], + specs=CarSpecs(mass=1948, wheelbase=2.97, steerRatio=14.26, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV ) IONIQ_6 = HyundaiCanFDPlatformConfig( "HYUNDAI IONIQ 6 2023", HyundaiCarInfo("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])), + specs=IONIQ_5.specs, flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE ) TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( @@ -319,14 +357,18 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarInfo("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), ], + specs=CarSpecs(mass=1630, wheelbase=2.756, steerRatio=16, tireStiffnessFactor=0.385), ) SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI SANTA CRUZ 1ST GEN", HyundaiCarInfo("Hyundai Santa Cruz 2022-23", car_parts=CarParts.common([CarHarness.hyundai_n])), + # weight from Limited trim - the only supported trim, steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf + specs=CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), ) CUSTIN_1ST_GEN = HyundaiPlatformConfig( "HYUNDAI CUSTIN 1ST GEN", HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + specs=CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner flags=HyundaiFlags.CHECKSUM_CRC8 ) @@ -334,23 +376,28 @@ class CAR(Platforms): KIA_FORTE = HyundaiPlatformConfig( "KIA FORTE E 2018 & GT 2021", [ - HyundaiCarInfo("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), - HyundaiCarInfo("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), - ] + HyundaiCarInfo("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), + HyundaiCarInfo("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), + ], + specs=CarSpecs(mass=2878 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5) ) KIA_K5_2021 = HyundaiPlatformConfig( "KIA K5 2021", HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a])), + specs=CarSpecs(mass=3381 * CV.LB_TO_KG, wheelbase=2.85, steerRatio=13.27, tireStiffnessFactor=0.5), # 2021 Kia K5 Steering Ratio (all trims) flags=HyundaiFlags.CHECKSUM_CRC8 ) KIA_K5_HEV_2020 = HyundaiPlatformConfig( "KIA K5 HYBRID 2020", HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a])), + specs=KIA_K5_2021.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) KIA_K8_HEV_1ST_GEN = HyundaiCanFDPlatformConfig( "KIA K8 HYBRID 1ST GEN", HyundaiCarInfo("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), + # mass: https://carprices.ae/brands/kia/2023/k8/1.6-turbo-hybrid, steerRatio: guesstimate from K5 platform + specs=CarSpecs(mass=1630, wheelbase=2.895, steerRatio=13.27) ) KIA_NIRO_EV = HyundaiPlatformConfig( "KIA NIRO EV 2020", @@ -360,11 +407,13 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro EV 2021", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarInfo("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), ], + specs=CarSpecs(mass=3543 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=13.6, tireStiffnessFactor=0.385), # average of all the cars flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV ) KIA_NIRO_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO EV 2ND GEN", HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + specs=KIA_NIRO_EV.specs, flags=HyundaiFlags.EV ) KIA_NIRO_PHEV = HyundaiPlatformConfig( @@ -373,7 +422,8 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarInfo("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), ], - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL + specs=KIA_NIRO_EV.specs, + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.MIN_STEER_32_MPH ) KIA_NIRO_PHEV_2022 = HyundaiPlatformConfig( "KIA NIRO PLUG-IN HYBRID 2022", @@ -381,6 +431,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Plug-in Hybrid 2021", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), HyundaiCarInfo("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), ], + specs=KIA_NIRO_EV.specs, flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR ) KIA_NIRO_HEV_2021 = HyundaiPlatformConfig( @@ -389,37 +440,44 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), HyundaiCarInfo("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), ], + specs=KIA_NIRO_EV.specs, flags=HyundaiFlags.HYBRID ) KIA_NIRO_HEV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO HYBRID 2ND GEN", HyundaiCarInfo("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a])), + specs=KIA_NIRO_EV.specs, ) KIA_OPTIMA_G4 = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN", HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_b])), # TODO: may support 2016, 2018 - flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS + specs=CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS | HyundaiFlags.MIN_STEER_32_MPH ) KIA_OPTIMA_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN FACELIFT", HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g])), + specs=CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS ) # TODO: may support adjacent years. may have a non-zero minimum steering speed KIA_OPTIMA_H = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 2017 & SPORTS 2019", HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c])), + specs=CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY ) KIA_OPTIMA_H_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 4TH GEN FACELIFT", HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h])), + specs=CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL ) KIA_SELTOS = HyundaiPlatformConfig( "KIA SELTOS 2021", HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a])), + specs=CarSpecs(mass=1337, wheelbase=2.63, steerRatio=14.56), flags=HyundaiFlags.CHECKSUM_CRC8 ) KIA_SPORTAGE_5TH_GEN = HyundaiCanFDPlatformConfig( @@ -428,6 +486,8 @@ class CAR(Platforms): HyundaiCarInfo("Kia Sportage 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarInfo("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), ], + # weight from SX and above trims, average of FWD and AWD version, steering ratio according to Kia News https://www.kiamedia.com/us/en/models/sportage/2023/specifications + specs=CarSpecs(mass=1725, wheelbase=2.756, steerRatio=13.6), ) KIA_SORENTO = HyundaiPlatformConfig( "KIA SORENTO GT LINE 2018", @@ -436,11 +496,13 @@ class CAR(Platforms): car_parts=CarParts.common([CarHarness.hyundai_e])), HyundaiCarInfo("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), ], + specs=CarSpecs(mass=1985, wheelbase=2.78, steerRatio=14.4 * 1.1), # 10% higher at the center seems reasonable flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.UNSUPPORTED_LONGITUDINAL ) KIA_SORENTO_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA SORENTO 4TH GEN", HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k])), + specs=CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms flags=HyundaiFlags.RADAR_SCC ) KIA_SORENTO_HEV_4TH_GEN = HyundaiCanFDPlatformConfig( @@ -449,20 +511,24 @@ class CAR(Platforms): HyundaiCarInfo("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarInfo("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), ], + specs=CarSpecs(mass=4395 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms flags=HyundaiFlags.RADAR_SCC ) KIA_STINGER = HyundaiPlatformConfig( "KIA STINGER GT2 2018", HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", - car_parts=CarParts.common([CarHarness.hyundai_c])) + car_parts=CarParts.common([CarHarness.hyundai_c])), + specs=CarSpecs(mass=1825, wheelbase=2.78, steerRatio=14.4 * 1.15) # 15% higher at the center seems reasonable ) KIA_STINGER_2022 = HyundaiPlatformConfig( "KIA STINGER 2022", HyundaiCarInfo("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + specs=KIA_STINGER.specs, ) KIA_CEED = HyundaiPlatformConfig( "KIA CEED INTRO ED 2019", HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e])), + specs=CarSpecs(mass=1450, wheelbase=2.65, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY ) KIA_EV6 = HyundaiCanFDPlatformConfig( @@ -472,6 +538,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarInfo("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) ], + specs=CarSpecs(mass=2055, wheelbase=2.9, steerRatio=16, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV ) KIA_CARNIVAL_4TH_GEN = HyundaiCanFDPlatformConfig( @@ -480,6 +547,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarInfo("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) ], + specs=CarSpecs(mass=2087, wheelbase=3.09, steerRatio=14.23), flags=HyundaiFlags.RADAR_SCC ) @@ -490,16 +558,19 @@ class CAR(Platforms): HyundaiCarInfo("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarInfo("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), ], + specs=CarSpecs(mass=2205, wheelbase=2.9, steerRatio=12.6), # steerRatio: https://www.motor1.com/reviews/586376/2023-genesis-gv60-first-drive/#:~:text=Relative%20to%20the%20related%20Ioniq,5%2FEV6%27s%2014.3%3A1. flags=HyundaiFlags.EV ) GENESIS_G70 = HyundaiPlatformConfig( "GENESIS G70 2018", HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + specs=CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), flags=HyundaiFlags.LEGACY ) GENESIS_G70_2020 = HyundaiPlatformConfig( "GENESIS G70 2020", HyundaiCarInfo("Genesis G70 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + specs=CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), flags=HyundaiFlags.MANDO_RADAR ) GENESIS_GV70_1ST_GEN = HyundaiCanFDPlatformConfig( @@ -508,20 +579,24 @@ class CAR(Platforms): HyundaiCarInfo("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarInfo("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), ], + specs=CarSpecs(mass=1950, wheelbase=2.87, steerRatio=14.6), flags=HyundaiFlags.RADAR_SCC ) GENESIS_G80 = HyundaiPlatformConfig( "GENESIS G80 2017", HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + specs=CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5), flags=HyundaiFlags.LEGACY ) GENESIS_G90 = HyundaiPlatformConfig( "GENESIS G90 2017", HyundaiCarInfo("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), + specs=CarSpecs(mass=2200, wheelbase=3.15, steerRatio=12.069), ) GENESIS_GV80 = HyundaiCanFDPlatformConfig( "GENESIS GV80 2023", HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), + specs=CarSpecs(mass=2258, wheelbase=2.95, steerRatio=14.14), flags=HyundaiFlags.RADAR_SCC ) From a5ee1638b8d4f7dde23b9160e26d715cd1420202 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 1 Mar 2024 13:32:31 -0500 Subject: [PATCH 045/599] Body: move to car specs (#31666) * specs * override * fixes 1 * fix 3 * fixes 4 * fixes * fixes * fixc * fix number 723124 * that too * fixes * aa * do body real quick too * body too --- selfdrive/car/body/interface.py | 4 ---- selfdrive/car/body/values.py | 3 ++- selfdrive/car/tests/test_platform_configs.py | 3 +-- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/selfdrive/car/body/interface.py b/selfdrive/car/body/interface.py index 12a2d5f304..4d72d2f604 100644 --- a/selfdrive/car/body/interface.py +++ b/selfdrive/car/body/interface.py @@ -14,14 +14,10 @@ class CarInterface(CarInterfaceBase): ret.minSteerSpeed = -math.inf ret.maxLateralAccel = math.inf # TODO: set to a reasonable value - ret.steerRatio = 0.5 ret.steerLimitTimer = 1.0 ret.steerActuatorDelay = 0. - ret.mass = 9 - ret.wheelbase = 0.406 ret.wheelSpeedFactor = SPEED_FROM_RPM - ret.centerToFront = ret.wheelbase * 0.44 ret.radarUnavailable = True ret.openpilotLongitudinalControl = True diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index 441905f28b..d0dd36e15f 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -1,5 +1,5 @@ from cereal import car -from openpilot.selfdrive.car import PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarInfo from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -24,6 +24,7 @@ class CAR(Platforms): "COMMA BODY", CarInfo("comma body", package="All"), dbc_dict('comma_body', None), + specs=CarSpecs(mass=9, wheelbase=0.406, steerRatio=0.5, centerToFrontRatio=0.44) ) diff --git a/selfdrive/car/tests/test_platform_configs.py b/selfdrive/car/tests/test_platform_configs.py index 931780963f..cca752705b 100755 --- a/selfdrive/car/tests/test_platform_configs.py +++ b/selfdrive/car/tests/test_platform_configs.py @@ -16,8 +16,7 @@ class TestPlatformConfigs(unittest.TestCase): self.assertIn("pt", platform.config.dbc_dict) self.assertTrue(len(platform.config.platform_str) > 0) - # enable when all cars have specs - #self.assertIsNotNone(platform.config.specs) + self.assertIsNotNone(platform.config.specs) if __name__ == "__main__": From b0eae8c1b7264b2d0c63ee2957689bc1317616f1 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 1 Mar 2024 14:31:51 -0500 Subject: [PATCH 046/599] platformconfig and carspecs are now required, carspecs no longer kwarg (#31667) * required * mock can be a platform! * default is mock * fix that * and that one --- selfdrive/car/__init__.py | 7 +- selfdrive/car/body/values.py | 2 +- selfdrive/car/car_helpers.py | 15 +- selfdrive/car/chrysler/values.py | 20 +-- selfdrive/car/ford/values.py | 16 +-- selfdrive/car/gm/values.py | 28 ++-- selfdrive/car/honda/values.py | 44 +++--- selfdrive/car/hyundai/values.py | 130 +++++++++--------- selfdrive/car/interfaces.py | 18 ++- selfdrive/car/mazda/values.py | 12 +- selfdrive/car/mock/values.py | 18 +-- selfdrive/car/nissan/values.py | 10 +- selfdrive/car/subaru/values.py | 30 ++-- selfdrive/car/tesla/values.py | 4 +- selfdrive/car/tests/test_platform_configs.py | 10 +- selfdrive/car/toyota/values.py | 68 ++++----- selfdrive/car/volkswagen/values.py | 56 ++++---- .../controls/tests/test_state_machine.py | 5 +- 18 files changed, 247 insertions(+), 246 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index b30f24dad7..c7af2da686 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -266,10 +266,11 @@ class CarSpecs: class PlatformConfig(Freezable): platform_str: str car_info: CarInfos - dbc_dict: DbcDict - flags: int = 0 + specs: CarSpecs - specs: CarSpecs | None = None + dbc_dict: DbcDict + + flags: int = 0 def __hash__(self) -> int: return hash(self.platform_str) diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index d0dd36e15f..82b00ee47d 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -23,8 +23,8 @@ class CAR(Platforms): BODY = PlatformConfig( "COMMA BODY", CarInfo("comma body", package="All"), + CarSpecs(mass=9, wheelbase=0.406, steerRatio=0.5, centerToFrontRatio=0.44), dbc_dict('comma_body', None), - specs=CarSpecs(mass=9, wheelbase=0.406, steerRatio=0.5, centerToFrontRatio=0.44) ) diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 339be1912c..74499fbbb0 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -11,6 +11,7 @@ from openpilot.selfdrive.car.interfaces import get_interface_attr from openpilot.selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars from openpilot.selfdrive.car.vin import get_vin, is_valid_vin, VIN_UNKNOWN from openpilot.selfdrive.car.fw_versions import get_fw_versions_ordered, get_present_ecus, match_fw_to_car, set_obd_multiplexing +from openpilot.selfdrive.car.mock.values import CAR as MOCK from openpilot.common.swaglog import cloudlog import cereal.messaging as messaging from openpilot.selfdrive.car import gen_empty_fingerprint @@ -191,7 +192,7 @@ def fingerprint(logcan, sendcan, num_pandas): fw_count=len(car_fw), ecu_responses=list(ecu_rx_addrs), vin_rx_addr=vin_rx_addr, vin_rx_bus=vin_rx_bus, fingerprints=repr(finger), fw_query_time=fw_query_time, error=True) - car_platform = PLATFORMS.get(car_fingerprint, car_fingerprint) + car_platform = PLATFORMS.get(car_fingerprint, MOCK.MOCK) return car_platform, finger, vin, car_fw, source, exact_match @@ -212,14 +213,14 @@ def get_car(logcan, sendcan, experimental_long_allowed, num_pandas=1): return CarInterface(CP, CarController, CarState), CP -def write_car_param(fingerprint="mock"): +def write_car_param(platform=MOCK.MOCK): params = Params() - CarInterface, _, _ = interfaces[fingerprint] - CP = CarInterface.get_non_essential_params(fingerprint) + CarInterface, _, _ = interfaces[platform] + CP = CarInterface.get_non_essential_params(platform) params.put("CarParams", CP.to_bytes()) def get_demo_car_params(): - fingerprint="mock" - CarInterface, _, _ = interfaces[fingerprint] - CP = CarInterface.get_non_essential_params(fingerprint) + platform = MOCK.MOCK + CarInterface, _, _ = interfaces[platform] + CP = CarInterface.get_non_essential_params(platform) return CP diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index d6bfd4e0cb..78b22bea45 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -35,22 +35,22 @@ class CAR(Platforms): PACIFICA_2017_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2017", ChryslerCarInfo("Chrysler Pacifica Hybrid 2017"), - specs=ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2), + ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2), ) PACIFICA_2018_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2018", ChryslerCarInfo("Chrysler Pacifica Hybrid 2018"), - specs=PACIFICA_2017_HYBRID.specs, + PACIFICA_2017_HYBRID.specs, ) PACIFICA_2019_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2019", ChryslerCarInfo("Chrysler Pacifica Hybrid 2019-23"), - specs=PACIFICA_2017_HYBRID.specs, + PACIFICA_2017_HYBRID.specs, ) PACIFICA_2018 = ChryslerPlatformConfig( "CHRYSLER PACIFICA 2018", ChryslerCarInfo("Chrysler Pacifica 2017-18"), - specs=PACIFICA_2017_HYBRID.specs, + PACIFICA_2017_HYBRID.specs, ) PACIFICA_2020 = ChryslerPlatformConfig( "CHRYSLER PACIFICA 2020", @@ -58,35 +58,35 @@ class CAR(Platforms): ChryslerCarInfo("Chrysler Pacifica 2019-20"), ChryslerCarInfo("Chrysler Pacifica 2021-23", package="All"), ], - specs=PACIFICA_2017_HYBRID.specs, + PACIFICA_2017_HYBRID.specs, ) # Dodge DODGE_DURANGO = ChryslerPlatformConfig( "DODGE DURANGO 2021", ChryslerCarInfo("Dodge Durango 2020-21"), - specs=PACIFICA_2017_HYBRID.specs, + PACIFICA_2017_HYBRID.specs, ) # Jeep JEEP_GRAND_CHEROKEE = ChryslerPlatformConfig( # includes 2017 Trailhawk "JEEP GRAND CHEROKEE V6 2018", ChryslerCarInfo("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk"), - specs=ChryslerCarSpecs(mass=1778., wheelbase=2.71, steerRatio=16.7), + ChryslerCarSpecs(mass=1778., wheelbase=2.71, steerRatio=16.7), ) JEEP_GRAND_CHEROKEE_2019 = ChryslerPlatformConfig( # includes 2020 Trailhawk "JEEP GRAND CHEROKEE 2019", ChryslerCarInfo("Jeep Grand Cherokee 2019-21", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4"), - specs=JEEP_GRAND_CHEROKEE.specs, + JEEP_GRAND_CHEROKEE.specs, ) # Ram RAM_1500 = ChryslerPlatformConfig( "RAM 1500 5TH GEN", ChryslerCarInfo("Ram 1500 2019-24", car_parts=CarParts.common([CarHarness.ram])), + ChryslerCarSpecs(mass=2493., wheelbase=3.88, steerRatio=16.3, minSteerSpeed=14.5), dbc_dict('chrysler_ram_dt_generated', None), - specs=ChryslerCarSpecs(mass=2493., wheelbase=3.88, steerRatio=16.3, minSteerSpeed=14.5), ) RAM_HD = ChryslerPlatformConfig( "RAM HD 5TH GEN", @@ -94,8 +94,8 @@ class CAR(Platforms): ChryslerCarInfo("Ram 2500 2020-24", car_parts=CarParts.common([CarHarness.ram])), ChryslerCarInfo("Ram 3500 2019-22", car_parts=CarParts.common([CarHarness.ram])), ], + ChryslerCarSpecs(mass=3405., wheelbase=3.785, steerRatio=15.61, minSteerSpeed=16.), dbc_dict('chrysler_ram_hd_generated', None), - specs=ChryslerCarSpecs(mass=3405., wheelbase=3.785, steerRatio=15.61, minSteerSpeed=16.), ) diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 985e7bc4b2..fe776fea72 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -87,7 +87,7 @@ class CAR(Platforms): BRONCO_SPORT_MK1 = FordPlatformConfig( "FORD BRONCO SPORT 1ST GEN", FordCarInfo("Ford Bronco Sport 2021-22"), - specs=CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), + CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), ) ESCAPE_MK4 = FordPlatformConfig( "FORD ESCAPE 4TH GEN", @@ -99,7 +99,7 @@ class CAR(Platforms): FordCarInfo("Ford Kuga Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), FordCarInfo("Ford Kuga Plug-in Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), ], - specs=CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), + CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), ) EXPLORER_MK6 = FordPlatformConfig( "FORD EXPLORER 6TH GEN", @@ -109,7 +109,7 @@ class CAR(Platforms): FordCarInfo("Lincoln Aviator 2020-23", "Co-Pilot360 Plus"), FordCarInfo("Lincoln Aviator Plug-in Hybrid 2020-23", "Co-Pilot360 Plus"), # Grand Touring only ], - specs=CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), + CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), ) F_150_MK14 = FordCANFDPlatformConfig( "FORD F-150 14TH GEN", @@ -117,12 +117,12 @@ class CAR(Platforms): FordCarInfo("Ford F-150 2023", "Co-Pilot360 Active 2.0"), FordCarInfo("Ford F-150 Hybrid 2023", "Co-Pilot360 Active 2.0"), ], - specs=CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), + CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), ) F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( "FORD F-150 LIGHTNING 1ST GEN", FordCarInfo("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0"), - specs=CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), + CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), ) FOCUS_MK4 = FordPlatformConfig( "FORD FOCUS 4TH GEN", @@ -130,7 +130,7 @@ class CAR(Platforms): FordCarInfo("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), FordCarInfo("Ford Focus Hybrid 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), # mHEV only ], - specs=CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), + CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), ) MAVERICK_MK1 = FordPlatformConfig( "FORD MAVERICK 1ST GEN", @@ -140,12 +140,12 @@ class CAR(Platforms): FordCarInfo("Ford Maverick 2023", "Co-Pilot360 Assist"), FordCarInfo("Ford Maverick Hybrid 2023", "Co-Pilot360 Assist"), ], - specs=CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), + CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( "FORD MUSTANG MACH-E 1ST GEN", FordCarInfo("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0"), - specs=CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio + CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 59b4b6ea30..e3414df2bf 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -88,52 +88,52 @@ class CAR(Platforms): HOLDEN_ASTRA = GMPlatformConfig( "HOLDEN ASTRA RS-V BK 2017", GMCarInfo("Holden Astra 2017"), - specs=CarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), + CarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), ) VOLT = GMPlatformConfig( "CHEVROLET VOLT PREMIER 2017", GMCarInfo("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ"), - specs=CarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45), + CarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45), ) CADILLAC_ATS = GMPlatformConfig( "CADILLAC ATS Premium Performance 2018", GMCarInfo("Cadillac ATS Premium Performance 2018"), - specs=CarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), + CarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), ) MALIBU = GMPlatformConfig( "CHEVROLET MALIBU PREMIER 2017", GMCarInfo("Chevrolet Malibu Premier 2017"), - specs=CarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), + CarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), ) ACADIA = GMPlatformConfig( "GMC ACADIA DENALI 2018", GMCarInfo("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo"), - specs=CarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), + CarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), ) BUICK_LACROSSE = GMPlatformConfig( "BUICK LACROSSE 2017", GMCarInfo("Buick LaCrosse 2017-19", "Driver Confidence Package 2"), - specs=CarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), + CarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), ) BUICK_REGAL = GMPlatformConfig( "BUICK REGAL ESSENCE 2018", GMCarInfo("Buick Regal Essence 2018"), - specs=CarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), + CarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), ) ESCALADE = GMPlatformConfig( "CADILLAC ESCALADE 2017", GMCarInfo("Cadillac Escalade 2017", "Driver Assist Package"), - specs=CarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), + CarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), ) ESCALADE_ESV = GMPlatformConfig( "CADILLAC ESCALADE ESV 2016", GMCarInfo("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS"), - specs=CarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3), + CarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3), ) ESCALADE_ESV_2019 = GMPlatformConfig( "CADILLAC ESCALADE ESV 2019", GMCarInfo("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS"), - specs=ESCALADE_ESV.specs, + ESCALADE_ESV.specs, ) BOLT_EUV = GMPlatformConfig( "CHEVROLET BOLT EUV 2022", @@ -141,7 +141,7 @@ class CAR(Platforms): GMCarInfo("Chevrolet Bolt EUV 2022-23", "Premier or Premier Redline Trim without Super Cruise Package", video_link="https://youtu.be/xvwzGMUA210"), GMCarInfo("Chevrolet Bolt EV 2022-23", "2LT Trim with Adaptive Cruise Control Package"), ], - specs=CarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4), + CarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4), ) SILVERADO = GMPlatformConfig( "CHEVROLET SILVERADO 1500 2020", @@ -149,17 +149,17 @@ class CAR(Platforms): GMCarInfo("Chevrolet Silverado 1500 2020-21", "Safety Package II"), GMCarInfo("GMC Sierra 1500 2020-21", "Driver Alert Package II", video_link="https://youtu.be/5HbNoBLzRwE"), ], - specs=CarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3), + CarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3), ) EQUINOX = GMPlatformConfig( "CHEVROLET EQUINOX 2019", GMCarInfo("Chevrolet Equinox 2019-22"), - specs=CarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), + CarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), ) TRAILBLAZER = GMPlatformConfig( "CHEVROLET TRAILBLAZER 2021", GMCarInfo("Chevrolet Trailblazer 2021-22"), - specs=CarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4), + CarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4), ) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index abe710528c..5e2e6b52a0 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -116,8 +116,8 @@ class CAR(Platforms): HondaCarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), ], + CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39), # steerRatio: 11.82 is spec end-to-end dbc_dict('honda_accord_2018_can_generated', None), - specs=CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39), # steerRatio: 11.82 is spec end-to-end flags=HondaFlags.BOSCH, ) CIVIC_BOSCH = HondaPlatformConfig( @@ -127,15 +127,15 @@ class CAR(Platforms): footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), HondaCarInfo("Honda Civic Hatchback 2017-21", min_steer_speed=12. * CV.MPH_TO_MS), ], + CarSpecs(mass=1326, wheelbase=2.7, steerRatio=15.38, centerToFrontRatio=0.4), # steerRatio: 10.93 is end-to-end spec dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), - specs=CarSpecs(mass=1326, wheelbase=2.7, steerRatio=15.38, centerToFrontRatio=0.4), # steerRatio: 10.93 is end-to-end spec flags=HondaFlags.BOSCH ) CIVIC_BOSCH_DIESEL = HondaPlatformConfig( "HONDA CIVIC SEDAN 1.6 DIESEL 2019", None, # don't show in docs + CIVIC_BOSCH.specs, dbc_dict('honda_accord_2018_can_generated', None), - specs=CIVIC_BOSCH.specs, flags=HondaFlags.BOSCH ) CIVIC_2022 = HondaPlatformConfig( @@ -144,50 +144,50 @@ class CAR(Platforms): HondaCarInfo("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), HondaCarInfo("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), ], + CIVIC_BOSCH.specs, dbc_dict('honda_civic_ex_2022_can_generated', None), - specs=CIVIC_BOSCH.specs, flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS, ) CRV_5G = HondaPlatformConfig( "HONDA CR-V 2017", HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), + CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41), # steerRatio: 12.3 is spec end-to-end dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), - specs=CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41), # steerRatio: 12.3 is spec end-to-end flags=HondaFlags.BOSCH, ) CRV_HYBRID = HondaPlatformConfig( "HONDA CR-V HYBRID 2019", HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS), + CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41), # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end dbc_dict('honda_accord_2018_can_generated', None), - specs=CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41), # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end flags=HondaFlags.BOSCH ) HRV_3G = HondaPlatformConfig( "HONDA HR-V 2023", HondaCarInfo("Honda HR-V 2023", "All"), + CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41), dbc_dict('honda_civic_ex_2022_can_generated', None), - specs=CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41), flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS ) ACURA_RDX_3G = HondaPlatformConfig( "ACURA RDX 2020", HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41), # as spec dbc_dict('acura_rdx_2020_can_generated', None), - specs=CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41), # as spec flags=HondaFlags.BOSCH ) INSIGHT = HondaPlatformConfig( "HONDA INSIGHT 2019", HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39), # as spec dbc_dict('honda_insight_ex_2019_can_generated', None), - specs=CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39), # as spec flags=HondaFlags.BOSCH ) HONDA_E = HondaPlatformConfig( "HONDA E 2020", HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), + CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71), dbc_dict('acura_rdx_2020_can_generated', None), - specs=CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71), flags=HondaFlags.BOSCH ) @@ -195,64 +195,64 @@ class CAR(Platforms): ACURA_ILX = HondaPlatformConfig( "ACURA ILX 2016", HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), + CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37), # 15.3 is spec end-to-end dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37), # 15.3 is spec end-to-end flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV = HondaPlatformConfig( "HONDA CR-V 2016", HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS), + CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41), # as spec dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41), # as spec flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV_EU = HondaPlatformConfig( "HONDA CR-V EU 2016", None, # Euro version of CRV Touring, don't show in docs + CRV.specs, dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), - specs=CRV.specs, flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FIT = HondaPlatformConfig( "HONDA FIT 2018", HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS), + CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39), flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FREED = HondaPlatformConfig( "HONDA FREED 2020", HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS), + CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39), # mostly copied from FIT dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39), # mostly copied from FIT flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) HRV = HondaPlatformConfig( "HONDA HRV 2019", HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS), + HRV_3G.specs, dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - specs=HRV_3G.specs, flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) ODYSSEY = HondaPlatformConfig( "HONDA ODYSSEY 2018", HondaCarInfo("Honda Odyssey 2018-20"), + CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41), dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41), flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_PCM_ACCEL ) ODYSSEY_CHN = HondaPlatformConfig( "HONDA ODYSSEY CHN 2019", None, # Chinese version of Odyssey, don't show in docs + ODYSSEY.specs, dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), - specs=ODYSSEY.specs, flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES ) ACURA_RDX = HondaPlatformConfig( "ACURA RDX 2018", HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), + CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38), # as spec dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38), # as spec flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) PILOT = HondaPlatformConfig( @@ -261,22 +261,22 @@ class CAR(Platforms): HondaCarInfo("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), HondaCarInfo("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), ], + CarSpecs(mass=4278 * CV.LB_TO_KG, wheelbase=2.86, centerToFrontRatio=0.428, steerRatio=16.0), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=4278 * CV.LB_TO_KG, wheelbase=2.86, centerToFrontRatio=0.428, steerRatio=16.0), # as spec flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) RIDGELINE = HondaPlatformConfig( "HONDA RIDGELINE 2017", HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS), + CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59), # as spec flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CIVIC = HondaPlatformConfig( "HONDA CIVIC 2016", HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE"), + CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - specs=CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec flags=HondaFlags.NIDEC | HondaFlags.AUTORESUME_SNG | HondaFlags.ELECTRIC_PARKING_BRAKE, ) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index ef17ffc4bf..8802a36f46 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -138,7 +138,7 @@ class CAR(Platforms): AZERA_6TH_GEN = HyundaiPlatformConfig( "HYUNDAI AZERA 6TH GEN", HyundaiCarInfo("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - specs=CarSpecs(mass=1600, wheelbase=2.885, steerRatio=14.5), + CarSpecs(mass=1600, wheelbase=2.885, steerRatio=14.5), ) AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( "HYUNDAI AZERA HYBRID 6TH GEN", @@ -146,7 +146,7 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarInfo("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), ], - specs=CarSpecs(mass=1675, wheelbase=2.885, steerRatio=14.5), + CarSpecs(mass=1675, wheelbase=2.885, steerRatio=14.5), flags=HyundaiFlags.HYBRID ) ELANTRA = HyundaiPlatformConfig( @@ -157,7 +157,7 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])), ], # steerRatio: 14 is Stock | Settled Params Learner values are steerRatio: 15.401566348670535, stiffnessFactor settled on 1.0081302973865127 - specs=CarSpecs(mass=1275, wheelbase=2.7, steerRatio=15.4, tireStiffnessFactor=0.385), + CarSpecs(mass=1275, wheelbase=2.7, steerRatio=15.4, tireStiffnessFactor=0.385), flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH ) ELANTRA_GT_I30 = HyundaiPlatformConfig( @@ -166,20 +166,20 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), HyundaiCarInfo("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), ], - specs=ELANTRA.specs, + ELANTRA.specs, flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH ) ELANTRA_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA 2021", HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), - specs=CarSpecs(mass=2800*CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), + CarSpecs(mass=2800*CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8 ) ELANTRA_HEV_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA HYBRID 2021", HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), - specs=CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), + CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) HYUNDAI_GENESIS = HyundaiPlatformConfig( @@ -189,120 +189,120 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), HyundaiCarInfo("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), ], - specs=CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5, minSteerSpeed=60 * CV.KPH_TO_MS), + CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5, minSteerSpeed=60 * CV.KPH_TO_MS), flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY ) IONIQ = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2017-2019", HyundaiCarInfo("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c])), - specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2020-2022", HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h])), # TODO: confirm 2020-21 harness, - specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY ) IONIQ_EV_LTD = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC LIMITED 2019", HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), - specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH ) IONIQ_EV_2020 = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC 2020", HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV ) IONIQ_PHEV_2019 = HyundaiPlatformConfig( "HYUNDAI IONIQ PLUG-IN HYBRID 2019", HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), - specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH ) IONIQ_PHEV = HyundaiPlatformConfig( "HYUNDAI IONIQ PHEV 2020", HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - specs=CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID ) KONA = HyundaiPlatformConfig( "HYUNDAI KONA 2020", HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b])), - specs=CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), + CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CLUSTER_GEARS ) KONA_EV = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2019", HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g])), - specs=CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), + CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV ) KONA_EV_2022 = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2022", HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o])), - specs=CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), + CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV ) KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI KONA ELECTRIC 2ND GEN", HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", car_parts=CarParts.common([CarHarness.hyundai_r])), - specs=CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), + CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE ) KONA_HEV = HyundaiPlatformConfig( "HYUNDAI KONA HYBRID 2020", HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i])), # TODO: check packages, - specs=CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), + CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID ) SANTA_FE = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2019", HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", car_parts=CarParts.common([CarHarness.hyundai_d])), - specs=CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), + CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 ) SANTA_FE_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2022", HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", car_parts=CarParts.common([CarHarness.hyundai_l])), - specs=SANTA_FE.specs, + SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 ) SANTA_FE_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE HYBRID 2022", HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - specs=SANTA_FE.specs, + SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE PlUG-IN HYBRID 2022", HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - specs=SANTA_FE.specs, + SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) SONATA = HyundaiPlatformConfig( "HYUNDAI SONATA 2020", HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", car_parts=CarParts.common([CarHarness.hyundai_a])), - specs=CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable + CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 ) SONATA_LF = HyundaiPlatformConfig( "HYUNDAI SONATA 2019", HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e])), - specs=CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable + CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS ) STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI STARIA 4TH GEN", HyundaiCarInfo("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - specs=CarSpecs(mass=2205, wheelbase=3.273, steerRatio=11.94), # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf + CarSpecs(mass=2205, wheelbase=3.273, steerRatio=11.94), # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf ) TUCSON = HyundaiPlatformConfig( "HYUNDAI TUCSON 2019", @@ -310,7 +310,7 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarInfo("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), ], - specs=CarSpecs(mass=3520 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=16.1, tireStiffnessFactor=0.385), + CarSpecs(mass=3520 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=16.1, tireStiffnessFactor=0.385), flags=HyundaiFlags.TCU_GEARS ) PALISADE = HyundaiPlatformConfig( @@ -319,19 +319,19 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), HyundaiCarInfo("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), ], - specs=CarSpecs(mass=1999, wheelbase=2.9, steerRatio=15.6 * 1.15, tireStiffnessFactor=0.63), + CarSpecs(mass=1999, wheelbase=2.9, steerRatio=15.6 * 1.15, tireStiffnessFactor=0.63), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 ) VELOSTER = HyundaiPlatformConfig( "HYUNDAI VELOSTER 2019", HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e])), - specs=CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor = 0.5), + CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor = 0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS ) SONATA_HYBRID = HyundaiPlatformConfig( "HYUNDAI SONATA HYBRID 2021", HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - specs=SONATA.specs, + SONATA.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) IONIQ_5 = HyundaiCanFDPlatformConfig( @@ -341,13 +341,13 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), HyundaiCarInfo("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), ], - specs=CarSpecs(mass=1948, wheelbase=2.97, steerRatio=14.26, tireStiffnessFactor=0.65), + CarSpecs(mass=1948, wheelbase=2.97, steerRatio=14.26, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV ) IONIQ_6 = HyundaiCanFDPlatformConfig( "HYUNDAI IONIQ 6 2023", HyundaiCarInfo("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])), - specs=IONIQ_5.specs, + IONIQ_5.specs, flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE ) TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( @@ -357,18 +357,18 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarInfo("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), ], - specs=CarSpecs(mass=1630, wheelbase=2.756, steerRatio=16, tireStiffnessFactor=0.385), + CarSpecs(mass=1630, wheelbase=2.756, steerRatio=16, tireStiffnessFactor=0.385), ) SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI SANTA CRUZ 1ST GEN", HyundaiCarInfo("Hyundai Santa Cruz 2022-23", car_parts=CarParts.common([CarHarness.hyundai_n])), # weight from Limited trim - the only supported trim, steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf - specs=CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), + CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), ) CUSTIN_1ST_GEN = HyundaiPlatformConfig( "HYUNDAI CUSTIN 1ST GEN", HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - specs=CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner + CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner flags=HyundaiFlags.CHECKSUM_CRC8 ) @@ -379,25 +379,25 @@ class CAR(Platforms): HyundaiCarInfo("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), HyundaiCarInfo("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), ], - specs=CarSpecs(mass=2878 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5) + CarSpecs(mass=2878 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5) ) KIA_K5_2021 = HyundaiPlatformConfig( "KIA K5 2021", HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a])), - specs=CarSpecs(mass=3381 * CV.LB_TO_KG, wheelbase=2.85, steerRatio=13.27, tireStiffnessFactor=0.5), # 2021 Kia K5 Steering Ratio (all trims) + CarSpecs(mass=3381 * CV.LB_TO_KG, wheelbase=2.85, steerRatio=13.27, tireStiffnessFactor=0.5), # 2021 Kia K5 Steering Ratio (all trims) flags=HyundaiFlags.CHECKSUM_CRC8 ) KIA_K5_HEV_2020 = HyundaiPlatformConfig( "KIA K5 HYBRID 2020", HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a])), - specs=KIA_K5_2021.specs, + KIA_K5_2021.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID ) KIA_K8_HEV_1ST_GEN = HyundaiCanFDPlatformConfig( "KIA K8 HYBRID 1ST GEN", HyundaiCarInfo("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), # mass: https://carprices.ae/brands/kia/2023/k8/1.6-turbo-hybrid, steerRatio: guesstimate from K5 platform - specs=CarSpecs(mass=1630, wheelbase=2.895, steerRatio=13.27) + CarSpecs(mass=1630, wheelbase=2.895, steerRatio=13.27) ) KIA_NIRO_EV = HyundaiPlatformConfig( "KIA NIRO EV 2020", @@ -407,13 +407,13 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro EV 2021", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarInfo("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), ], - specs=CarSpecs(mass=3543 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=13.6, tireStiffnessFactor=0.385), # average of all the cars + CarSpecs(mass=3543 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=13.6, tireStiffnessFactor=0.385), # average of all the cars flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV ) KIA_NIRO_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO EV 2ND GEN", HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - specs=KIA_NIRO_EV.specs, + KIA_NIRO_EV.specs, flags=HyundaiFlags.EV ) KIA_NIRO_PHEV = HyundaiPlatformConfig( @@ -422,7 +422,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarInfo("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), ], - specs=KIA_NIRO_EV.specs, + KIA_NIRO_EV.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.MIN_STEER_32_MPH ) KIA_NIRO_PHEV_2022 = HyundaiPlatformConfig( @@ -431,7 +431,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Plug-in Hybrid 2021", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), HyundaiCarInfo("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), ], - specs=KIA_NIRO_EV.specs, + KIA_NIRO_EV.specs, flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR ) KIA_NIRO_HEV_2021 = HyundaiPlatformConfig( @@ -440,44 +440,44 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), HyundaiCarInfo("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), ], - specs=KIA_NIRO_EV.specs, + KIA_NIRO_EV.specs, flags=HyundaiFlags.HYBRID ) KIA_NIRO_HEV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO HYBRID 2ND GEN", HyundaiCarInfo("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a])), - specs=KIA_NIRO_EV.specs, + KIA_NIRO_EV.specs, ) KIA_OPTIMA_G4 = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN", HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_b])), # TODO: may support 2016, 2018 - specs=CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS | HyundaiFlags.MIN_STEER_32_MPH ) KIA_OPTIMA_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN FACELIFT", HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g])), - specs=CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS ) # TODO: may support adjacent years. may have a non-zero minimum steering speed KIA_OPTIMA_H = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 2017 & SPORTS 2019", HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c])), - specs=CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY ) KIA_OPTIMA_H_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 4TH GEN FACELIFT", HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h])), - specs=CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL ) KIA_SELTOS = HyundaiPlatformConfig( "KIA SELTOS 2021", HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a])), - specs=CarSpecs(mass=1337, wheelbase=2.63, steerRatio=14.56), + CarSpecs(mass=1337, wheelbase=2.63, steerRatio=14.56), flags=HyundaiFlags.CHECKSUM_CRC8 ) KIA_SPORTAGE_5TH_GEN = HyundaiCanFDPlatformConfig( @@ -487,7 +487,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), ], # weight from SX and above trims, average of FWD and AWD version, steering ratio according to Kia News https://www.kiamedia.com/us/en/models/sportage/2023/specifications - specs=CarSpecs(mass=1725, wheelbase=2.756, steerRatio=13.6), + CarSpecs(mass=1725, wheelbase=2.756, steerRatio=13.6), ) KIA_SORENTO = HyundaiPlatformConfig( "KIA SORENTO GT LINE 2018", @@ -496,13 +496,13 @@ class CAR(Platforms): car_parts=CarParts.common([CarHarness.hyundai_e])), HyundaiCarInfo("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), ], - specs=CarSpecs(mass=1985, wheelbase=2.78, steerRatio=14.4 * 1.1), # 10% higher at the center seems reasonable + CarSpecs(mass=1985, wheelbase=2.78, steerRatio=14.4 * 1.1), # 10% higher at the center seems reasonable flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.UNSUPPORTED_LONGITUDINAL ) KIA_SORENTO_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA SORENTO 4TH GEN", HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k])), - specs=CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms + CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms flags=HyundaiFlags.RADAR_SCC ) KIA_SORENTO_HEV_4TH_GEN = HyundaiCanFDPlatformConfig( @@ -511,24 +511,24 @@ class CAR(Platforms): HyundaiCarInfo("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarInfo("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), ], - specs=CarSpecs(mass=4395 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms + CarSpecs(mass=4395 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms flags=HyundaiFlags.RADAR_SCC ) KIA_STINGER = HyundaiPlatformConfig( "KIA STINGER GT2 2018", HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", car_parts=CarParts.common([CarHarness.hyundai_c])), - specs=CarSpecs(mass=1825, wheelbase=2.78, steerRatio=14.4 * 1.15) # 15% higher at the center seems reasonable + CarSpecs(mass=1825, wheelbase=2.78, steerRatio=14.4 * 1.15) # 15% higher at the center seems reasonable ) KIA_STINGER_2022 = HyundaiPlatformConfig( "KIA STINGER 2022", HyundaiCarInfo("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - specs=KIA_STINGER.specs, + KIA_STINGER.specs, ) KIA_CEED = HyundaiPlatformConfig( "KIA CEED INTRO ED 2019", HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e])), - specs=CarSpecs(mass=1450, wheelbase=2.65, steerRatio=13.75, tireStiffnessFactor=0.5), + CarSpecs(mass=1450, wheelbase=2.65, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY ) KIA_EV6 = HyundaiCanFDPlatformConfig( @@ -538,7 +538,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarInfo("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) ], - specs=CarSpecs(mass=2055, wheelbase=2.9, steerRatio=16, tireStiffnessFactor=0.65), + CarSpecs(mass=2055, wheelbase=2.9, steerRatio=16, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV ) KIA_CARNIVAL_4TH_GEN = HyundaiCanFDPlatformConfig( @@ -547,7 +547,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarInfo("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) ], - specs=CarSpecs(mass=2087, wheelbase=3.09, steerRatio=14.23), + CarSpecs(mass=2087, wheelbase=3.09, steerRatio=14.23), flags=HyundaiFlags.RADAR_SCC ) @@ -558,19 +558,19 @@ class CAR(Platforms): HyundaiCarInfo("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarInfo("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), ], - specs=CarSpecs(mass=2205, wheelbase=2.9, steerRatio=12.6), # steerRatio: https://www.motor1.com/reviews/586376/2023-genesis-gv60-first-drive/#:~:text=Relative%20to%20the%20related%20Ioniq,5%2FEV6%27s%2014.3%3A1. + CarSpecs(mass=2205, wheelbase=2.9, steerRatio=12.6), # steerRatio: https://www.motor1.com/reviews/586376/2023-genesis-gv60-first-drive/#:~:text=Relative%20to%20the%20related%20Ioniq,5%2FEV6%27s%2014.3%3A1. flags=HyundaiFlags.EV ) GENESIS_G70 = HyundaiPlatformConfig( "GENESIS G70 2018", HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), - specs=CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), + CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), flags=HyundaiFlags.LEGACY ) GENESIS_G70_2020 = HyundaiPlatformConfig( "GENESIS G70 2020", HyundaiCarInfo("Genesis G70 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), - specs=CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), + CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), flags=HyundaiFlags.MANDO_RADAR ) GENESIS_GV70_1ST_GEN = HyundaiCanFDPlatformConfig( @@ -579,24 +579,24 @@ class CAR(Platforms): HyundaiCarInfo("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarInfo("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), ], - specs=CarSpecs(mass=1950, wheelbase=2.87, steerRatio=14.6), + CarSpecs(mass=1950, wheelbase=2.87, steerRatio=14.6), flags=HyundaiFlags.RADAR_SCC ) GENESIS_G80 = HyundaiPlatformConfig( "GENESIS G80 2017", HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - specs=CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5), + CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5), flags=HyundaiFlags.LEGACY ) GENESIS_G90 = HyundaiPlatformConfig( "GENESIS G90 2017", HyundaiCarInfo("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), - specs=CarSpecs(mass=2200, wheelbase=3.15, steerRatio=12.069), + CarSpecs(mass=2200, wheelbase=3.15, steerRatio=12.069), ) GENESIS_GV80 = HyundaiCanFDPlatformConfig( "GENESIS GV80 2023", HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), - specs=CarSpecs(mass=2258, wheelbase=2.95, steerRatio=14.14), + CarSpecs(mass=2258, wheelbase=2.95, steerRatio=14.14), flags=HyundaiFlags.RADAR_SCC ) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 98b3c63ec7..9a78eea856 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -112,16 +112,14 @@ class CarInterfaceBase(ABC): def get_params(cls, candidate: Platform, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, docs: bool): ret = CarInterfaceBase.get_std_params(candidate) - if hasattr(candidate, "config"): - if candidate.config.specs is not None: - ret.mass = candidate.config.specs.mass - ret.wheelbase = candidate.config.specs.wheelbase - ret.steerRatio = candidate.config.specs.steerRatio - ret.centerToFront = ret.wheelbase * candidate.config.specs.centerToFrontRatio - ret.minEnableSpeed = candidate.config.specs.minEnableSpeed - ret.minSteerSpeed = candidate.config.specs.minSteerSpeed - ret.tireStiffnessFactor = candidate.config.specs.tireStiffnessFactor - ret.flags |= int(candidate.config.flags) + ret.mass = candidate.config.specs.mass + ret.wheelbase = candidate.config.specs.wheelbase + ret.steerRatio = candidate.config.specs.steerRatio + ret.centerToFront = ret.wheelbase * candidate.config.specs.centerToFrontRatio + ret.minEnableSpeed = candidate.config.specs.minEnableSpeed + ret.minSteerSpeed = candidate.config.specs.minSteerSpeed + ret.tireStiffnessFactor = candidate.config.specs.tireStiffnessFactor + ret.flags |= int(candidate.config.flags) ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs) diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index 5597e9f52f..f45e80c119 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -48,32 +48,32 @@ class CAR(Platforms): CX5 = MazdaPlatformConfig( "MAZDA CX-5", MazdaCarInfo("Mazda CX-5 2017-21"), - specs=CarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) + CarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) ) CX9 = MazdaPlatformConfig( "MAZDA CX-9", MazdaCarInfo("Mazda CX-9 2016-20"), - specs=CarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) + CarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) ) MAZDA3 = MazdaPlatformConfig( "MAZDA 3", MazdaCarInfo("Mazda 3 2017-18"), - specs=CarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) + CarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) ) MAZDA6 = MazdaPlatformConfig( "MAZDA 6", MazdaCarInfo("Mazda 6 2017-20"), - specs=CarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) + CarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) ) CX9_2021 = MazdaPlatformConfig( "MAZDA CX-9 2021", MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4"), - specs=CX9.specs + CX9.specs ) CX5_2022 = MazdaPlatformConfig( "MAZDA CX-5 2022", MazdaCarInfo("Mazda CX-5 2022-24"), - specs=CX5.specs, + CX5.specs, ) diff --git a/selfdrive/car/mock/values.py b/selfdrive/car/mock/values.py index e75665c98f..74e8bb5fc9 100644 --- a/selfdrive/car/mock/values.py +++ b/selfdrive/car/mock/values.py @@ -1,12 +1,14 @@ -from enum import StrEnum - -from openpilot.selfdrive.car.docs_definitions import CarInfo +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms -class CAR(StrEnum): - MOCK = 'mock' + +class CAR(Platforms): + MOCK = PlatformConfig( + 'mock', + None, + CarSpecs(mass=1700, wheelbase=2.7, steerRatio=13), + {} + ) -CAR_INFO: dict[str, CarInfo | list[CarInfo] | None] = { - CAR.MOCK: None, -} +CAR_INFO = CAR.create_carinfo_map() diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index 7af1700e0b..cb7289389b 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -40,13 +40,13 @@ class CAR(Platforms): XTRAIL = NissanPlaformConfig( "NISSAN X-TRAIL 2017", NissanCarInfo("Nissan X-Trail 2017"), - specs=NissanCarSpecs(mass=1610, wheelbase=2.705) + NissanCarSpecs(mass=1610, wheelbase=2.705) ) LEAF = NissanPlaformConfig( "NISSAN LEAF 2018", NissanCarInfo("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY"), - dbc_dict=dbc_dict('nissan_leaf_2018_generated', None), - specs=NissanCarSpecs(mass=1610, wheelbase=2.705) + NissanCarSpecs(mass=1610, wheelbase=2.705), + dbc_dict('nissan_leaf_2018_generated', None), ) # Leaf with ADAS ECU found behind instrument cluster instead of glovebox # Currently the only known difference between them is the inverted seatbelt signal. @@ -54,12 +54,12 @@ class CAR(Platforms): ROGUE = NissanPlaformConfig( "NISSAN ROGUE 2019", NissanCarInfo("Nissan Rogue 2018-20"), - specs=NissanCarSpecs(mass=1610, wheelbase=2.705) + NissanCarSpecs(mass=1610, wheelbase=2.705) ) ALTIMA = NissanPlaformConfig( "NISSAN ALTIMA 2020", NissanCarInfo("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b])), - specs=NissanCarSpecs(mass=1492, wheelbase=2.824) + NissanCarSpecs(mass=1492, wheelbase=2.824) ) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index c2b2d16d7f..5668678225 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -123,17 +123,17 @@ class CAR(Platforms): ASCENT = SubaruPlatformConfig( "SUBARU ASCENT LIMITED 2019", SubaruCarInfo("Subaru Ascent 2019-21", "All"), - specs=CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), + CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), ) OUTBACK = SubaruGen2PlatformConfig( "SUBARU OUTBACK 6TH GEN", SubaruCarInfo("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), ) LEGACY = SubaruGen2PlatformConfig( "SUBARU LEGACY 7TH GEN", SubaruCarInfo("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), - specs=OUTBACK.specs, + OUTBACK.specs, ) IMPREZA = SubaruPlatformConfig( "SUBARU IMPREZA LIMITED 2019", @@ -142,7 +142,7 @@ class CAR(Platforms): SubaruCarInfo("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), SubaruCarInfo("Subaru XV 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), ], - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=15), + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=15), ) IMPREZA_2020 = SubaruPlatformConfig( "SUBARU IMPREZA SPORT 2020", @@ -151,74 +151,74 @@ class CAR(Platforms): SubaruCarInfo("Subaru Crosstrek 2020-23"), SubaruCarInfo("Subaru XV 2020-21"), ], - specs=CarSpecs(mass=1480, wheelbase=2.67, steerRatio=17), + CarSpecs(mass=1480, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.STEER_RATE_LIMITED, ) # TODO: is there an XV and Impreza too? CROSSTREK_HYBRID = SubaruPlatformConfig( "SUBARU CROSSTREK HYBRID 2020", SubaruCarInfo("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b])), - specs=CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), + CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.HYBRID, ) FORESTER = SubaruPlatformConfig( "SUBARU FORESTER 2019", SubaruCarInfo("Subaru Forester 2019-21", "All"), - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.STEER_RATE_LIMITED, ) FORESTER_HYBRID = SubaruPlatformConfig( "SUBARU FORESTER HYBRID 2020", SubaruCarInfo("Subaru Forester Hybrid 2020"), - specs=FORESTER.specs, + FORESTER.specs, flags=SubaruFlags.HYBRID, ) # Pre-global FORESTER_PREGLOBAL = SubaruPlatformConfig( "SUBARU FORESTER 2017 - 2018", SubaruCarInfo("Subaru Forester 2017-18"), + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), dbc_dict('subaru_forester_2017_generated', None), - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), flags=SubaruFlags.PREGLOBAL, ) LEGACY_PREGLOBAL = SubaruPlatformConfig( "SUBARU LEGACY 2015 - 2018", SubaruCarInfo("Subaru Legacy 2015-18"), + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), dbc_dict('subaru_outback_2015_generated', None), - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL = SubaruPlatformConfig( "SUBARU OUTBACK 2015 - 2017", SubaruCarInfo("Subaru Outback 2015-17"), + FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2015_generated', None), - specs=FORESTER_PREGLOBAL.specs, flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( "SUBARU OUTBACK 2018 - 2019", SubaruCarInfo("Subaru Outback 2018-19"), + FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2019_generated', None), - specs=FORESTER_PREGLOBAL.specs, flags=SubaruFlags.PREGLOBAL, ) # Angle LKAS FORESTER_2022 = SubaruPlatformConfig( "SUBARU FORESTER 2022", SubaruCarInfo("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c])), - specs=FORESTER.specs, + FORESTER.specs, flags=SubaruFlags.LKAS_ANGLE, ) OUTBACK_2023 = SubaruGen2PlatformConfig( "SUBARU OUTBACK 7TH GEN", SubaruCarInfo("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), - specs=OUTBACK.specs, + OUTBACK.specs, flags=SubaruFlags.LKAS_ANGLE, ) ASCENT_2023 = SubaruGen2PlatformConfig( "SUBARU ASCENT 2023", SubaruCarInfo("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), - specs=ASCENT.specs, + ASCENT.specs, flags=SubaruFlags.LKAS_ANGLE, ) diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index 74d2debe1f..3104506e5b 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -20,12 +20,12 @@ class CAR(Platforms): AP1_MODELS = TeslaPlatformConfig( 'TESLA AP1 MODEL S', CarInfo("Tesla AP1 Model S", "All"), - specs=CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0) + CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0) ) AP2_MODELS = TeslaPlatformConfig( 'TESLA AP2 MODEL S', CarInfo("Tesla AP2 Model S", "All"), - specs=AP1_MODELS.specs + AP1_MODELS.specs ) diff --git a/selfdrive/car/tests/test_platform_configs.py b/selfdrive/car/tests/test_platform_configs.py index cca752705b..6a3bafa390 100755 --- a/selfdrive/car/tests/test_platform_configs.py +++ b/selfdrive/car/tests/test_platform_configs.py @@ -10,13 +10,11 @@ class TestPlatformConfigs(unittest.TestCase): for platform in PLATFORMS.values(): with self.subTest(platform=str(platform)): - if hasattr(platform, "config"): + self.assertTrue(platform.config._frozen) + self.assertIn("pt", platform.config.dbc_dict) + self.assertTrue(len(platform.config.platform_str) > 0) - self.assertTrue(platform.config._frozen) - self.assertIn("pt", platform.config.dbc_dict) - self.assertTrue(len(platform.config.platform_str) > 0) - - self.assertIsNotNone(platform.config.specs) + self.assertIsNotNone(platform.config.specs) if __name__ == "__main__": diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 09d6082f67..9989b9225a 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -88,7 +88,7 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Alphard 2019-20"), ToyotaCarInfo("Toyota Alphard Hybrid 2021"), ], - specs=CarSpecs(mass=4305. * CV.LB_TO_KG, wheelbase=3.0, steerRatio=14.2, tireStiffnessFactor=0.444), + CarSpecs(mass=4305. * CV.LB_TO_KG, wheelbase=3.0, steerRatio=14.2, tireStiffnessFactor=0.444), ) AVALON = PlatformConfig( "TOYOTA AVALON 2016", @@ -96,8 +96,8 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Avalon 2016", "Toyota Safety Sense P"), ToyotaCarInfo("Toyota Avalon 2017-18"), ], + CarSpecs(mass=3505. * CV.LB_TO_KG, wheelbase=2.82, steerRatio=14.8, tireStiffnessFactor=0.7983), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - specs=CarSpecs(mass=3505. * CV.LB_TO_KG, wheelbase=2.82, steerRatio=14.8, tireStiffnessFactor=0.7983), ) AVALON_2019 = PlatformConfig( "TOYOTA AVALON 2019", @@ -105,8 +105,8 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Avalon 2019-21"), ToyotaCarInfo("Toyota Avalon Hybrid 2019-21"), ], + AVALON.specs, dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - specs=AVALON.specs, ) AVALON_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA AVALON 2022", # TSS 2.5 @@ -114,7 +114,7 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Avalon 2022"), ToyotaCarInfo("Toyota Avalon Hybrid 2022"), ], - specs=AVALON.specs, + AVALON.specs, ) CAMRY = PlatformConfig( "TOYOTA CAMRY 2018", @@ -122,9 +122,9 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), ToyotaCarInfo("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), ], + CarSpecs(mass=3400. * CV.LB_TO_KG, wheelbase=2.82448, steerRatio=13.7, tireStiffnessFactor=0.7933), dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_DSU, - specs=CarSpecs(mass=3400. * CV.LB_TO_KG, wheelbase=2.82448, steerRatio=13.7, tireStiffnessFactor=0.7933), ) CAMRY_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA CAMRY 2021", # TSS 2.5 @@ -132,7 +132,7 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), ToyotaCarInfo("Toyota Camry Hybrid 2021-24"), ], - specs=CAMRY.specs, + CAMRY.specs, ) CHR = PlatformConfig( "TOYOTA C-HR 2018", @@ -140,9 +140,9 @@ class CAR(Platforms): ToyotaCarInfo("Toyota C-HR 2017-20"), ToyotaCarInfo("Toyota C-HR Hybrid 2017-20"), ], + CarSpecs(mass=3300. * CV.LB_TO_KG, wheelbase=2.63906, steerRatio=13.6, tireStiffnessFactor=0.7933), dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_DSU, - specs=CarSpecs(mass=3300. * CV.LB_TO_KG, wheelbase=2.63906, steerRatio=13.6, tireStiffnessFactor=0.7933), ) CHR_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA C-HR 2021", @@ -150,14 +150,14 @@ class CAR(Platforms): ToyotaCarInfo("Toyota C-HR 2021"), ToyotaCarInfo("Toyota C-HR Hybrid 2021-22"), ], + CHR.specs, flags=ToyotaFlags.RADAR_ACC, - specs=CHR.specs, ) COROLLA = PlatformConfig( "TOYOTA COROLLA 2017", ToyotaCarInfo("Toyota Corolla 2017-19"), + CarSpecs(mass=2860. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=18.27, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - specs=CarSpecs(mass=2860. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=18.27, tireStiffnessFactor=0.444), ) # LSS2 Lexus UX Hybrid is same as a TSS2 Corolla Hybrid COROLLA_TSS2 = ToyotaTSS2PlatformConfig( @@ -172,7 +172,7 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Corolla Cross Hybrid (Non-US only) 2020-22", min_enable_speed=7.5), ToyotaCarInfo("Lexus UX Hybrid 2019-23"), ], - specs=CarSpecs(mass=3060. * CV.LB_TO_KG, wheelbase=2.67, steerRatio=13.9, tireStiffnessFactor=0.444), + CarSpecs(mass=3060. * CV.LB_TO_KG, wheelbase=2.67, steerRatio=13.9, tireStiffnessFactor=0.444), ) HIGHLANDER = PlatformConfig( "TOYOTA HIGHLANDER 2017", @@ -180,9 +180,9 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), ToyotaCarInfo("Toyota Highlander Hybrid 2017-19"), ], + CarSpecs(mass=4516. * CV.LB_TO_KG, wheelbase=2.8194, steerRatio=16.0, tireStiffnessFactor=0.8), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER, - specs=CarSpecs(mass=4516. * CV.LB_TO_KG, wheelbase=2.8194, steerRatio=16.0, tireStiffnessFactor=0.8), ) HIGHLANDER_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA HIGHLANDER 2020", @@ -190,7 +190,7 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Highlander 2020-23"), ToyotaCarInfo("Toyota Highlander Hybrid 2020-23"), ], - specs=HIGHLANDER.specs, + HIGHLANDER.specs, ) PRIUS = PlatformConfig( "TOYOTA PRIUS 2017", @@ -199,15 +199,15 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), ToyotaCarInfo("Toyota Prius Prime 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), ], + CarSpecs(mass=3045. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.74, tireStiffnessFactor=0.6371), dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - specs=CarSpecs(mass=3045. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.74, tireStiffnessFactor=0.6371), ) PRIUS_V = PlatformConfig( "TOYOTA PRIUS v 2017", ToyotaCarInfo("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED), + CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER, - specs=CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), ) PRIUS_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA PRIUS TSS2 2021", @@ -215,7 +215,7 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), ToyotaCarInfo("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), ], - specs=CarSpecs(mass=3115. * CV.LB_TO_KG, wheelbase=2.70002, steerRatio=13.4, tireStiffnessFactor=0.6371), + CarSpecs(mass=3115. * CV.LB_TO_KG, wheelbase=2.70002, steerRatio=13.4, tireStiffnessFactor=0.6371), ) RAV4 = PlatformConfig( "TOYOTA RAV4 2017", @@ -223,8 +223,8 @@ class CAR(Platforms): ToyotaCarInfo("Toyota RAV4 2016", "Toyota Safety Sense P"), ToyotaCarInfo("Toyota RAV4 2017-18") ], + CarSpecs(mass=3650. * CV.LB_TO_KG, wheelbase=2.65, steerRatio=16.88, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - specs=CarSpecs(mass=3650. * CV.LB_TO_KG, wheelbase=2.65, steerRatio=16.88, tireStiffnessFactor=0.5533), ) RAV4H = PlatformConfig( "TOYOTA RAV4 HYBRID 2017", @@ -232,9 +232,9 @@ class CAR(Platforms): ToyotaCarInfo("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), ToyotaCarInfo("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") ], + RAV4.specs, dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER, - specs=RAV4.specs, ) RAV4_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA RAV4 2019", @@ -242,7 +242,7 @@ class CAR(Platforms): ToyotaCarInfo("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), ToyotaCarInfo("Toyota RAV4 Hybrid 2019-21"), ], - specs=CarSpecs(mass=3585. * CV.LB_TO_KG, wheelbase=2.68986, steerRatio=14.3, tireStiffnessFactor=0.7933), + CarSpecs(mass=3585. * CV.LB_TO_KG, wheelbase=2.68986, steerRatio=14.3, tireStiffnessFactor=0.7933), ) RAV4_TSS2_2022 = ToyotaTSS2PlatformConfig( "TOYOTA RAV4 2022", @@ -250,8 +250,8 @@ class CAR(Platforms): ToyotaCarInfo("Toyota RAV4 2022"), ToyotaCarInfo("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), ], + RAV4_TSS2.specs, flags=ToyotaFlags.RADAR_ACC, - specs=RAV4_TSS2.specs, ) RAV4_TSS2_2023 = ToyotaTSS2PlatformConfig( "TOYOTA RAV4 2023", @@ -259,28 +259,28 @@ class CAR(Platforms): ToyotaCarInfo("Toyota RAV4 2023-24"), ToyotaCarInfo("Toyota RAV4 Hybrid 2023-24"), ], + RAV4_TSS2.specs, flags=ToyotaFlags.RADAR_ACC | ToyotaFlags.ANGLE_CONTROL, - specs=RAV4_TSS2.specs, ) MIRAI = ToyotaTSS2PlatformConfig( "TOYOTA MIRAI 2021", # TSS 2.5 ToyotaCarInfo("Toyota Mirai 2021"), - specs=CarSpecs(mass=4300. * CV.LB_TO_KG, wheelbase=2.91, steerRatio=14.8, tireStiffnessFactor=0.8), + CarSpecs(mass=4300. * CV.LB_TO_KG, wheelbase=2.91, steerRatio=14.8, tireStiffnessFactor=0.8), ) SIENNA = PlatformConfig( "TOYOTA SIENNA 2018", ToyotaCarInfo("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED), + CarSpecs(mass=4590. * CV.LB_TO_KG, wheelbase=3.03, steerRatio=15.5, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER, - specs=CarSpecs(mass=4590. * CV.LB_TO_KG, wheelbase=3.03, steerRatio=15.5, tireStiffnessFactor=0.444), ) # Lexus LEXUS_CTH = PlatformConfig( "LEXUS CT HYBRID 2018", ToyotaCarInfo("Lexus CT Hybrid 2017-18", "Lexus Safety System+"), + CarSpecs(mass=3108. * CV.LB_TO_KG, wheelbase=2.6, steerRatio=18.6, tireStiffnessFactor=0.517), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - specs=CarSpecs(mass=3108. * CV.LB_TO_KG, wheelbase=2.6, steerRatio=18.6, tireStiffnessFactor=0.517), ) LEXUS_ES = PlatformConfig( "LEXUS ES 2018", @@ -288,8 +288,8 @@ class CAR(Platforms): ToyotaCarInfo("Lexus ES 2017-18"), ToyotaCarInfo("Lexus ES Hybrid 2017-18"), ], + CarSpecs(mass=3677. * CV.LB_TO_KG, wheelbase=2.8702, steerRatio=16.0, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - specs=CarSpecs(mass=3677. * CV.LB_TO_KG, wheelbase=2.8702, steerRatio=16.0, tireStiffnessFactor=0.444), ) LEXUS_ES_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS ES 2019", @@ -297,19 +297,19 @@ class CAR(Platforms): ToyotaCarInfo("Lexus ES 2019-24"), ToyotaCarInfo("Lexus ES Hybrid 2019-24", video_link="https://youtu.be/BZ29osRVJeg?t=12"), ], - specs=LEXUS_ES.specs, + LEXUS_ES.specs, ) LEXUS_IS = PlatformConfig( "LEXUS IS 2018", ToyotaCarInfo("Lexus IS 2017-19"), + CarSpecs(mass=3736.8 * CV.LB_TO_KG, wheelbase=2.79908, steerRatio=13.3, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, - specs=CarSpecs(mass=3736.8 * CV.LB_TO_KG, wheelbase=2.79908, steerRatio=13.3, tireStiffnessFactor=0.444), ) LEXUS_IS_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS IS 2023", ToyotaCarInfo("Lexus IS 2022-23"), - specs=LEXUS_IS.specs, + LEXUS_IS.specs, ) LEXUS_NX = PlatformConfig( "LEXUS NX 2018", @@ -317,8 +317,8 @@ class CAR(Platforms): ToyotaCarInfo("Lexus NX 2018-19"), ToyotaCarInfo("Lexus NX Hybrid 2018-19"), ], + CarSpecs(mass=4070. * CV.LB_TO_KG, wheelbase=2.66, steerRatio=14.7, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - specs=CarSpecs(mass=4070. * CV.LB_TO_KG, wheelbase=2.66, steerRatio=14.7, tireStiffnessFactor=0.444), ) LEXUS_NX_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS NX 2020", @@ -326,19 +326,19 @@ class CAR(Platforms): ToyotaCarInfo("Lexus NX 2020-21"), ToyotaCarInfo("Lexus NX Hybrid 2020-21"), ], - specs=LEXUS_NX.specs, + LEXUS_NX.specs, ) LEXUS_LC_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS LC 2024", ToyotaCarInfo("Lexus LC 2024"), - specs=CarSpecs(mass=4500. * CV.LB_TO_KG, wheelbase=2.87, steerRatio=13.0, tireStiffnessFactor=0.444), + CarSpecs(mass=4500. * CV.LB_TO_KG, wheelbase=2.87, steerRatio=13.0, tireStiffnessFactor=0.444), ) LEXUS_RC = PlatformConfig( "LEXUS RC 2020", ToyotaCarInfo("Lexus RC 2018-20"), + LEXUS_IS.specs, dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, - specs=LEXUS_IS.specs, ) LEXUS_RX = PlatformConfig( "LEXUS RX 2016", @@ -349,8 +349,8 @@ class CAR(Platforms): ToyotaCarInfo("Lexus RX Hybrid 2016", "Lexus Safety System+"), ToyotaCarInfo("Lexus RX Hybrid 2017-19"), ], + CarSpecs(mass=4481. * CV.LB_TO_KG, wheelbase=2.79, steerRatio=16., tireStiffnessFactor=0.5533), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - specs=CarSpecs(mass=4481. * CV.LB_TO_KG, wheelbase=2.79, steerRatio=16., tireStiffnessFactor=0.5533), ) LEXUS_RX_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS RX 2020", @@ -358,14 +358,14 @@ class CAR(Platforms): ToyotaCarInfo("Lexus RX 2020-22"), ToyotaCarInfo("Lexus RX Hybrid 2020-22"), ], - specs=LEXUS_RX.specs, + LEXUS_RX.specs, ) LEXUS_GS_F = PlatformConfig( "LEXUS GS F 2016", ToyotaCarInfo("Lexus GS F 2016"), + CarSpecs(mass=4034. * CV.LB_TO_KG, wheelbase=2.84988, steerRatio=13.3, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, - specs=CarSpecs(mass=4034. * CV.LB_TO_KG, wheelbase=2.84988, steerRatio=13.3, tireStiffnessFactor=0.444), ) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 86788dcf64..4bd5edda2c 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -184,7 +184,7 @@ class CAR(Platforms): VWCarInfo("Volkswagen Arteon eHybrid 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), VWCarInfo("Volkswagen CC 2018-22", video_link="https://youtu.be/FAomFKPFlDA"), ], - specs=VolkswagenCarSpecs(mass=1733, wheelbase=2.84), + VolkswagenCarSpecs(mass=1733, wheelbase=2.84), ) ATLAS_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN ATLAS 1ST GEN", # Chassis CA @@ -195,7 +195,7 @@ class CAR(Platforms): VWCarInfo("Volkswagen Teramont Cross Sport 2021-22"), VWCarInfo("Volkswagen Teramont X 2021-22"), ], - specs=VolkswagenCarSpecs(mass=2011, wheelbase=2.98), + VolkswagenCarSpecs(mass=2011, wheelbase=2.98), ) CRAFTER_MK2 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN CRAFTER 2ND GEN", # Chassis SY/SZ @@ -206,7 +206,7 @@ class CAR(Platforms): VWCarInfo("MAN TGE 2017-23", video_link="https://youtu.be/4100gLeabmo"), VWCarInfo("MAN eTGE 2020-23", video_link="https://youtu.be/4100gLeabmo"), ], - specs=VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), + VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), ) GOLF_MK7 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN GOLF 7TH GEN", # Chassis 5G/AU/BA/BE @@ -220,7 +220,7 @@ class CAR(Platforms): VWCarInfo("Volkswagen Golf R 2015-19"), VWCarInfo("Volkswagen Golf SportsVan 2015-20"), ], - specs=VolkswagenCarSpecs(mass=1397, wheelbase=2.62), + VolkswagenCarSpecs(mass=1397, wheelbase=2.62), ) JETTA_MK7 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN JETTA 7TH GEN", # Chassis BU @@ -228,7 +228,7 @@ class CAR(Platforms): VWCarInfo("Volkswagen Jetta 2018-24"), VWCarInfo("Volkswagen Jetta GLI 2021-24"), ], - specs=VolkswagenCarSpecs(mass=1328, wheelbase=2.71), + VolkswagenCarSpecs(mass=1328, wheelbase=2.71), ) PASSAT_MK8 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN PASSAT 8TH GEN", # Chassis 3G @@ -237,12 +237,12 @@ class CAR(Platforms): VWCarInfo("Volkswagen Passat Alltrack 2015-22"), VWCarInfo("Volkswagen Passat GTE 2015-22"), ], - specs=VolkswagenCarSpecs(mass=1551, wheelbase=2.79), + VolkswagenCarSpecs(mass=1551, wheelbase=2.79), ) PASSAT_NMS = VolkswagenPQPlatformConfig( "VOLKSWAGEN PASSAT NMS", # Chassis A3 VWCarInfo("Volkswagen Passat NMS 2017-22"), - specs=VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS), + VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS), ) POLO_MK6 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN POLO 6TH GEN", # Chassis AW @@ -250,7 +250,7 @@ class CAR(Platforms): VWCarInfo("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), VWCarInfo("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), ], - specs=VolkswagenCarSpecs(mass=1230, wheelbase=2.55), + VolkswagenCarSpecs(mass=1230, wheelbase=2.55), ) SHARAN_MK2 = VolkswagenPQPlatformConfig( "VOLKSWAGEN SHARAN 2ND GEN", # Chassis 7N @@ -258,17 +258,17 @@ class CAR(Platforms): VWCarInfo("Volkswagen Sharan 2018-22"), VWCarInfo("SEAT Alhambra 2018-20"), ], - specs=VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50*CV.KPH_TO_MS), + VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50*CV.KPH_TO_MS), ) TAOS_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TAOS 1ST GEN", # Chassis B2 VWCarInfo("Volkswagen Taos 2022-23"), - specs=VolkswagenCarSpecs(mass=1498, wheelbase=2.69), + VolkswagenCarSpecs(mass=1498, wheelbase=2.69), ) TCROSS_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN T-CROSS 1ST GEN", # Chassis C1 - car_info=VWCarInfo("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0]), - specs=VolkswagenCarSpecs(mass=1150, wheelbase=2.60), + VWCarInfo("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0]), + VolkswagenCarSpecs(mass=1150, wheelbase=2.60), ) TIGUAN_MK2 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TIGUAN 2ND GEN", # Chassis AD/BW @@ -276,12 +276,12 @@ class CAR(Platforms): VWCarInfo("Volkswagen Tiguan 2018-24"), VWCarInfo("Volkswagen Tiguan eHybrid 2021-23"), ], - specs=VolkswagenCarSpecs(mass=1715, wheelbase=2.74), + VolkswagenCarSpecs(mass=1715, wheelbase=2.74), ) TOURAN_MK2 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TOURAN 2ND GEN", # Chassis 1T VWCarInfo("Volkswagen Touran 2016-23"), - specs=VolkswagenCarSpecs(mass=1516, wheelbase=2.79), + VolkswagenCarSpecs(mass=1516, wheelbase=2.79), ) TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TRANSPORTER T6.1", # Chassis 7H/7L @@ -289,12 +289,12 @@ class CAR(Platforms): VWCarInfo("Volkswagen Caravelle 2020"), VWCarInfo("Volkswagen California 2021-23"), ], - specs=VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), + VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), ) TROC_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN T-ROC 1ST GEN", # Chassis A1 VWCarInfo("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0]), - specs=VolkswagenCarSpecs(mass=1413, wheelbase=2.63), + VolkswagenCarSpecs(mass=1413, wheelbase=2.63), ) AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( "AUDI A3 3RD GEN", # Chassis 8V/FF @@ -304,47 +304,47 @@ class CAR(Platforms): VWCarInfo("Audi RS3 2018"), VWCarInfo("Audi S3 2015-17"), ], - specs=VolkswagenCarSpecs(mass=1335, wheelbase=2.61), + VolkswagenCarSpecs(mass=1335, wheelbase=2.61), ) AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( "AUDI Q2 1ST GEN", # Chassis GA VWCarInfo("Audi Q2 2018"), - specs=VolkswagenCarSpecs(mass=1205, wheelbase=2.61), + VolkswagenCarSpecs(mass=1205, wheelbase=2.61), ) AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( "AUDI Q3 2ND GEN", # Chassis 8U/F3/FS VWCarInfo("Audi Q3 2019-23"), - specs=VolkswagenCarSpecs(mass=1623, wheelbase=2.68), + VolkswagenCarSpecs(mass=1623, wheelbase=2.68), ) SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( "SEAT ATECA 1ST GEN", # Chassis 5F VWCarInfo("SEAT Ateca 2018"), - specs=VolkswagenCarSpecs(mass=1900, wheelbase=2.64), + VolkswagenCarSpecs(mass=1900, wheelbase=2.64), ) SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( "SEAT LEON 3RD GEN", # Chassis 5F VWCarInfo("SEAT Leon 2014-20"), - specs=VolkswagenCarSpecs(mass=1227, wheelbase=2.64), + VolkswagenCarSpecs(mass=1227, wheelbase=2.64), ) SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( "SKODA FABIA 4TH GEN", # Chassis PJ VWCarInfo("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0]), - specs=VolkswagenCarSpecs(mass=1266, wheelbase=2.56), + VolkswagenCarSpecs(mass=1266, wheelbase=2.56), ) SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KAMIQ 1ST GEN", # Chassis NW VWCarInfo("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ]), - specs=VolkswagenCarSpecs(mass=1265, wheelbase=2.66), + VolkswagenCarSpecs(mass=1265, wheelbase=2.66), ) SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KAROQ 1ST GEN", # Chassis NU VWCarInfo("Škoda Karoq 2019-23"), - specs=VolkswagenCarSpecs(mass=1278, wheelbase=2.66), + VolkswagenCarSpecs(mass=1278, wheelbase=2.66), ) SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KODIAQ 1ST GEN", # Chassis NS VWCarInfo("Škoda Kodiaq 2017-23"), - specs=VolkswagenCarSpecs(mass=1569, wheelbase=2.79), + VolkswagenCarSpecs(mass=1569, wheelbase=2.79), ) SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( "SKODA OCTAVIA 3RD GEN", # Chassis NE @@ -352,17 +352,17 @@ class CAR(Platforms): VWCarInfo("Škoda Octavia 2015-19"), VWCarInfo("Škoda Octavia RS 2016"), ], - specs=VolkswagenCarSpecs(mass=1388, wheelbase=2.68), + VolkswagenCarSpecs(mass=1388, wheelbase=2.68), ) SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( "SKODA SCALA 1ST GEN", # Chassis NW VWCarInfo("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0]), - specs=VolkswagenCarSpecs(mass=1192, wheelbase=2.65), + VolkswagenCarSpecs(mass=1192, wheelbase=2.65), ) SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( "SKODA SUPERB 3RD GEN", # Chassis 3V/NP VWCarInfo("Škoda Superb 2015-22"), - specs=VolkswagenCarSpecs(mass=1505, wheelbase=2.84), + VolkswagenCarSpecs(mass=1505, wheelbase=2.84), ) diff --git a/selfdrive/controls/tests/test_state_machine.py b/selfdrive/controls/tests/test_state_machine.py index bdeed9fb7a..d49111752d 100755 --- a/selfdrive/controls/tests/test_state_machine.py +++ b/selfdrive/controls/tests/test_state_machine.py @@ -7,6 +7,7 @@ from openpilot.selfdrive.car.car_helpers import interfaces from openpilot.selfdrive.controls.controlsd import Controls, SOFT_DISABLE_TIME from openpilot.selfdrive.controls.lib.events import Events, ET, Alert, Priority, AlertSize, AlertStatus, VisualAlert, \ AudibleAlert, EVENTS +from openpilot.selfdrive.car.mock.values import CAR as MOCK State = log.ControlsState.OpenpilotState @@ -30,8 +31,8 @@ def make_event(event_types): class TestStateMachine(unittest.TestCase): def setUp(self): - CarInterface, CarController, CarState = interfaces["mock"] - CP = CarInterface.get_non_essential_params("mock") + CarInterface, CarController, CarState = interfaces[MOCK.MOCK] + CP = CarInterface.get_non_essential_params(MOCK.MOCK) CI = CarInterface(CP, CarController, CarState) self.controlsd = Controls(CI=CI) From e0c840cd02e643fc3ace803c8a80af34c6218c8a Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Fri, 1 Mar 2024 15:05:28 -0500 Subject: [PATCH 047/599] VW: Cleanup, migrate center-to-front ratio to CarSpecs (#31668) * VW: Cleanup after PlatformConfig refactor * whitespace fix --- selfdrive/car/volkswagen/interface.py | 5 +---- selfdrive/car/volkswagen/values.py | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 374b657512..43a8bcdddc 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -100,11 +100,8 @@ class CarInterface(CarInterfaceBase): ret.vEgoStopping = 0.5 ret.longitudinalTuning.kpV = [0.1] ret.longitudinalTuning.kiV = [0.0] - - # Per-chassis tuning values, override tuning defaults here if desired - ret.autoResumeSng = ret.minEnableSpeed == -1 - ret.centerToFront = ret.wheelbase * 0.45 + return ret # returns a car.CarState diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 4bd5edda2c..8f9ea96f2f 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -132,6 +132,7 @@ class VolkswagenPQPlatformConfig(PlatformConfig): @dataclass(frozen=True, kw_only=True) class VolkswagenCarSpecs(CarSpecs): + centerToFrontRatio: float = 0.45 steerRatio: float = 15.6 From b0496d8294b43bc63dc5cf54c19d029ac7857163 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 1 Mar 2024 16:28:58 -0500 Subject: [PATCH 048/599] can_replay: log fingerprint for hardcoding (#31671) * log * quotes --- tools/replay/can_replay.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/replay/can_replay.py b/tools/replay/can_replay.py index bf6b1e9ae2..d875f25347 100755 --- a/tools/replay/can_replay.py +++ b/tools/replay/can_replay.py @@ -98,6 +98,10 @@ if __name__ == "__main__": sr = LogReader(args.route_or_segment_name) + CP = sr.first("carParams") + + print(f"carFingerprint (for hardcoding fingerprint): '{CP.carFingerprint}'") + CAN_MSGS = sr.run_across_segments(24, process) print("Finished loading...") From 50a754f4707d8b7cd0b9889b56f4b8fb50ccfec9 Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:41:56 -0500 Subject: [PATCH 049/599] VW PQ: Volkswagen Caddy Mk3 (#31670) --- selfdrive/car/tests/routes.py | 1 + selfdrive/car/torque_data/override.toml | 1 + selfdrive/car/volkswagen/fingerprints.py | 11 +++++++++++ selfdrive/car/volkswagen/values.py | 8 ++++++++ 4 files changed, 21 insertions(+) diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 811416ccef..ff747b5938 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -229,6 +229,7 @@ routes = [ CarTestRoute("202c40641158a6e5|2021-09-21--09-43-24", VOLKSWAGEN.ARTEON_MK1), CarTestRoute("2c68dda277d887ac|2021-05-11--15-22-20", VOLKSWAGEN.ATLAS_MK1), + CarTestRoute("ffcd23abbbd02219|2024-02-28--14-59-38", VOLKSWAGEN.CADDY_MK3), CarTestRoute("cae14e88932eb364|2021-03-26--14-43-28", VOLKSWAGEN.GOLF_MK7), # Stock ACC CarTestRoute("3cfdec54aa035f3f|2022-10-13--14-58-58", VOLKSWAGEN.GOLF_MK7), # openpilot longitudinal CarTestRoute("58a7d3b707987d65|2021-03-25--17-26-37", VOLKSWAGEN.JETTA_MK7), diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index 339fc533e5..3cf17f3179 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -43,6 +43,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "CHEVROLET SILVERADO 1500 2020" = [1.9, 1.9, 0.112] "CHEVROLET TRAILBLAZER 2021" = [1.33, 1.9, 0.16] "CHEVROLET EQUINOX 2019" = [2.5, 2.5, 0.05] +"VOLKSWAGEN CADDY 3RD GEN" = [1.2, 1.2, 0.1] "VOLKSWAGEN PASSAT NMS" = [2.5, 2.5, 0.1] "VOLKSWAGEN SHARAN 2ND GEN" = [2.5, 2.5, 0.1] "HYUNDAI SANTA CRUZ 1ST GEN" = [2.7, 2.7, 0.1] diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index eab2bc0090..d2c85d0fc5 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -99,6 +99,17 @@ FW_VERSIONS = { b'\xf1\x875Q0907572P \xf1\x890682', ], }, + CAR.CADDY_MK3: { + (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8704E906027T \xf1\x892363', + ], + (Ecu.srs, 0x715, None): [ + b'\xf1\x872K5959655E \xf1\x890018\xf1\x82\x05000P037605', + ], + (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x877N0907572C \xf1\x890211\xf1\x82\x0155', + ], + }, CAR.CRAFTER_MK2: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906056BP\xf1\x894729', diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 8f9ea96f2f..868d6630ef 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -198,6 +198,14 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=2011, wheelbase=2.98), ) + CADDY_MK3 = VolkswagenPQPlatformConfig( + "VOLKSWAGEN CADDY 3RD GEN", # Chassis 2K + [ + VWCarInfo("Volkswagen Caddy 2019"), + VWCarInfo("Volkswagen Caddy Maxi 2019"), + ], + VolkswagenCarSpecs(mass=1613, wheelbase=2.6, minSteerSpeed=21 * CV.KPH_TO_MS), + ) CRAFTER_MK2 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN CRAFTER 2ND GEN", # Chassis SY/SZ [ From 9616b3f71719785f75bf25acdf51f38f19105a3e Mon Sep 17 00:00:00 2001 From: Comma Device Date: Wed, 28 Feb 2024 20:09:24 -0800 Subject: [PATCH 050/599] no amp --- system/hardware/tici/amplifier.py | 1 - system/hardware/tici/hardware.py | 18 +++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/system/hardware/tici/amplifier.py b/system/hardware/tici/amplifier.py index 5725cb8170..af82067467 100755 --- a/system/hardware/tici/amplifier.py +++ b/system/hardware/tici/amplifier.py @@ -97,7 +97,6 @@ CONFIGS = { AmpConfig("Right DAC input mixer: DAI2 right", 0b1, 0x22, 0, 0b00000001), AmpConfig("Volume adjustment smoothing disabled", 0b1, 0x49, 6, 0b01000000), ], - "mici": [], } class Amplifier: diff --git a/system/hardware/tici/hardware.py b/system/hardware/tici/hardware.py index 5bb1032ba9..8cb02c3d91 100644 --- a/system/hardware/tici/hardware.py +++ b/system/hardware/tici/hardware.py @@ -94,11 +94,7 @@ def get_device_type(): # lru_cache and cache can cause memory leaks when used in classes with open("/sys/firmware/devicetree/base/model") as f: model = f.read().strip('\x00') - model = model.split('comma ')[-1] - # TODO: remove this with AGNOS 7+ - if model.startswith('Qualcomm'): - model = 'tici' - return model + return model.split('comma ')[-1] class Tici(HardwareBase): @cached_property @@ -116,6 +112,8 @@ class Tici(HardwareBase): @cached_property def amplifier(self): + if self.get_device_type() == "mici": + return None return Amplifier() def get_os_version(self): @@ -374,9 +372,10 @@ class Tici(HardwareBase): def set_power_save(self, powersave_enabled): # amplifier, 100mW at idle - self.amplifier.set_global_shutdown(amp_disabled=powersave_enabled) - if not powersave_enabled: - self.amplifier.initialize_configuration(self.get_device_type()) + if self.amplifier is not None: + self.amplifier.set_global_shutdown(amp_disabled=powersave_enabled) + if not powersave_enabled: + self.amplifier.initialize_configuration(self.get_device_type()) # *** CPU config *** @@ -414,7 +413,8 @@ class Tici(HardwareBase): return 0 def initialize_hardware(self): - self.amplifier.initialize_configuration(self.get_device_type()) + if self.amplifier is not None: + self.amplifier.initialize_configuration(self.get_device_type()) # Allow thermald to write engagement status to kmsg os.system("sudo chmod a+w /dev/kmsg") From bf20358440830106396780464c21ec9b100ebfbc Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 1 Mar 2024 16:11:48 -0800 Subject: [PATCH 051/599] CI: increase test car interfaces examples (#31641) * increase * huh * Revert "huh" This reverts commit 1a652cbed06a7c814711db6f2bc6b3146d3aec04. * no huge fp dicts * ugh * try 300 * test * at least increase a bit --- selfdrive/car/tests/test_car_interfaces.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/tests/test_car_interfaces.py b/selfdrive/car/tests/test_car_interfaces.py index a454f616cb..02a8d60e3c 100755 --- a/selfdrive/car/tests/test_car_interfaces.py +++ b/selfdrive/car/tests/test_car_interfaces.py @@ -22,7 +22,7 @@ from openpilot.selfdrive.test.fuzzy_generation import DrawType, FuzzyGenerator ALL_ECUS = list({ecu for ecus in FW_VERSIONS.values() for ecu in ecus.keys()}) -MAX_EXAMPLES = int(os.environ.get('MAX_EXAMPLES', '20')) +MAX_EXAMPLES = int(os.environ.get('MAX_EXAMPLES', '40')) def get_fuzzy_car_interface_args(draw: DrawType) -> dict: From 81bed0aad857ee3ff41192b8cd8d05db7a7d5ecf Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 1 Mar 2024 16:37:09 -0800 Subject: [PATCH 052/599] Honda Bosch: fix detection for alternate brake signal bug (#31675) statically set alt brake for platforms where we don't need detection yet --- selfdrive/car/honda/interface.py | 5 ++++- selfdrive/car/honda/values.py | 13 ++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 71008e5001..9c39c4694f 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -209,8 +209,11 @@ class CarInterface(CarInterfaceBase): raise ValueError(f"unsupported car {candidate}") # These cars use alternate user brake msg (0x1BE) - if 0x1BE in fingerprint[CAN.pt] and candidate in HONDA_BOSCH: + # TODO: Only detect feature for Accord/Accord Hybrid, not all Bosch DBCs have BRAKE_MODULE + if 0x1BE in fingerprint[CAN.pt] and candidate == CAR.ACCORD: ret.flags |= HondaFlags.BOSCH_ALT_BRAKE.value + + if ret.flags & HondaFlags.BOSCH_ALT_BRAKE: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_ALT_BRAKE # These cars use alternate SCM messages (SCM_FEEDBACK AND SCM_BUTTON) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 5e2e6b52a0..aa10cfa80a 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -133,7 +133,7 @@ class CAR(Platforms): ) CIVIC_BOSCH_DIESEL = HondaPlatformConfig( "HONDA CIVIC SEDAN 1.6 DIESEL 2019", - None, # don't show in docs + None, # don't show in docs CIVIC_BOSCH.specs, dbc_dict('honda_accord_2018_can_generated', None), flags=HondaFlags.BOSCH @@ -153,7 +153,7 @@ class CAR(Platforms): HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41), # steerRatio: 12.3 is spec end-to-end dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), - flags=HondaFlags.BOSCH, + flags=HondaFlags.BOSCH | HondaFlags.BOSCH_ALT_BRAKE, ) CRV_HYBRID = HondaPlatformConfig( "HONDA CR-V HYBRID 2019", @@ -167,14 +167,14 @@ class CAR(Platforms): HondaCarInfo("Honda HR-V 2023", "All"), CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41), dbc_dict('honda_civic_ex_2022_can_generated', None), - flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS + flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS | HondaFlags.BOSCH_ALT_BRAKE ) ACURA_RDX_3G = HondaPlatformConfig( "ACURA RDX 2020", HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41), # as spec dbc_dict('acura_rdx_2020_can_generated', None), - flags=HondaFlags.BOSCH + flags=HondaFlags.BOSCH | HondaFlags.BOSCH_ALT_BRAKE ) INSIGHT = HondaPlatformConfig( "HONDA INSIGHT 2019", @@ -208,7 +208,7 @@ class CAR(Platforms): ) CRV_EU = HondaPlatformConfig( "HONDA CR-V EU 2016", - None, # Euro version of CRV Touring, don't show in docs + None, # Euro version of CRV Touring, don't show in docs CRV.specs, dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, @@ -243,7 +243,7 @@ class CAR(Platforms): ) ODYSSEY_CHN = HondaPlatformConfig( "HONDA ODYSSEY CHN 2019", - None, # Chinese version of Odyssey, don't show in docs + None, # Chinese version of Odyssey, don't show in docs ODYSSEY.specs, dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES @@ -344,7 +344,6 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) - STEER_THRESHOLD = { # default is 1200, overrides go here CAR.ACURA_RDX: 400, From f1cd16e36794093f5bcc4cdd648dde6b245ed93c Mon Sep 17 00:00:00 2001 From: YassineYousfi Date: Fri, 1 Mar 2024 16:56:33 -0800 Subject: [PATCH 053/599] Recertified Herbalist Model (#31616) * dfa8bce2-a445-45ea-a4b8-e63989b8df08/700 * update model replay ref --- selfdrive/modeld/models/supercombo.onnx | 2 +- selfdrive/test/process_replay/model_replay_ref_commit | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/selfdrive/modeld/models/supercombo.onnx b/selfdrive/modeld/models/supercombo.onnx index ce346a406a..68e39514d9 100644 --- a/selfdrive/modeld/models/supercombo.onnx +++ b/selfdrive/modeld/models/supercombo.onnx @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c11f99aab832242a604b1bb4c4cf391c9c3d5e90cbc07ab0d4c133473b56a3a4 +oid sha256:cd4b0cc83d5ff275ee77ec430ea686603ad50fd6ad874f599ea6e95b123afc3e size 48193749 diff --git a/selfdrive/test/process_replay/model_replay_ref_commit b/selfdrive/test/process_replay/model_replay_ref_commit index 3b7b04df80..786c2f2731 100644 --- a/selfdrive/test/process_replay/model_replay_ref_commit +++ b/selfdrive/test/process_replay/model_replay_ref_commit @@ -1 +1 @@ -fd6421f7551573c549480f9d29bb0dee4678344d +e8b359a82316e6dfce3b6fb0fb9684431bfa0a1b From 77d896eb898dd04490862b89bf34434e9d9811c3 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 1 Mar 2024 17:16:46 -0800 Subject: [PATCH 054/599] Honda: two base platform configs (#31676) * subclass bosch and nidec * end with comma * one line * remove unused flags * as a test see what happens if we exceeed CP.flags * Revert "as a test see what happens if we exceeed CP.flags" This reverts commit f57a346df5e6f3c6ab19875b843633c0571d16e3. * Update ref_commit --- selfdrive/car/honda/values.py | 94 +++++++++++------------- selfdrive/test/process_replay/ref_commit | 2 +- 2 files changed, 45 insertions(+), 51 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index aa10cfa80a..a6b7d26567 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -59,8 +59,6 @@ class HondaFlags(IntFlag): NIDEC_ALT_PCM_ACCEL = 32 NIDEC_ALT_SCM_MESSAGES = 64 - AUTORESUME_SNG = 128 - ELECTRIC_PARKING_BRAKE = 256 # Car button codes class CruiseButtons: @@ -100,16 +98,19 @@ class Footnote(Enum): Column.FSR_STEERING) -class HondaPlatformConfig(PlatformConfig): +class HondaBoschPlatformConfig(PlatformConfig): def init(self): - if self.flags & HondaFlags.BOSCH: - self.flags |= HondaFlags.AUTORESUME_SNG - self.flags |= HondaFlags.ELECTRIC_PARKING_BRAKE + self.flags |= HondaFlags.BOSCH + + +class HondaNidecPlatformConfig(PlatformConfig): + def init(self): + self.flags |= HondaFlags.NIDEC class CAR(Platforms): # Bosch Cars - ACCORD = HondaPlatformConfig( + ACCORD = HondaBoschPlatformConfig( "HONDA ACCORD 2018", [ HondaCarInfo("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), @@ -118,9 +119,8 @@ class CAR(Platforms): ], CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39), # steerRatio: 11.82 is spec end-to-end dbc_dict('honda_accord_2018_can_generated', None), - flags=HondaFlags.BOSCH, ) - CIVIC_BOSCH = HondaPlatformConfig( + CIVIC_BOSCH = HondaBoschPlatformConfig( "HONDA CIVIC (BOSCH) 2019", [ HondaCarInfo("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", @@ -129,16 +129,14 @@ class CAR(Platforms): ], CarSpecs(mass=1326, wheelbase=2.7, steerRatio=15.38, centerToFrontRatio=0.4), # steerRatio: 10.93 is end-to-end spec dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), - flags=HondaFlags.BOSCH ) - CIVIC_BOSCH_DIESEL = HondaPlatformConfig( + CIVIC_BOSCH_DIESEL = HondaBoschPlatformConfig( "HONDA CIVIC SEDAN 1.6 DIESEL 2019", None, # don't show in docs CIVIC_BOSCH.specs, dbc_dict('honda_accord_2018_can_generated', None), - flags=HondaFlags.BOSCH ) - CIVIC_2022 = HondaPlatformConfig( + CIVIC_2022 = HondaBoschPlatformConfig( "HONDA CIVIC 2022", [ HondaCarInfo("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), @@ -146,116 +144,113 @@ class CAR(Platforms): ], CIVIC_BOSCH.specs, dbc_dict('honda_civic_ex_2022_can_generated', None), - flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS, + flags=HondaFlags.BOSCH_RADARLESS, ) - CRV_5G = HondaPlatformConfig( + CRV_5G = HondaBoschPlatformConfig( "HONDA CR-V 2017", HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41), # steerRatio: 12.3 is spec end-to-end dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), - flags=HondaFlags.BOSCH | HondaFlags.BOSCH_ALT_BRAKE, + flags=HondaFlags.BOSCH_ALT_BRAKE, ) - CRV_HYBRID = HondaPlatformConfig( + CRV_HYBRID = HondaBoschPlatformConfig( "HONDA CR-V HYBRID 2019", HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS), CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41), # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end dbc_dict('honda_accord_2018_can_generated', None), - flags=HondaFlags.BOSCH ) - HRV_3G = HondaPlatformConfig( + HRV_3G = HondaBoschPlatformConfig( "HONDA HR-V 2023", HondaCarInfo("Honda HR-V 2023", "All"), CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41), dbc_dict('honda_civic_ex_2022_can_generated', None), - flags=HondaFlags.BOSCH | HondaFlags.BOSCH_RADARLESS | HondaFlags.BOSCH_ALT_BRAKE + flags=HondaFlags.BOSCH_RADARLESS | HondaFlags.BOSCH_ALT_BRAKE, ) - ACURA_RDX_3G = HondaPlatformConfig( + ACURA_RDX_3G = HondaBoschPlatformConfig( "ACURA RDX 2020", HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41), # as spec dbc_dict('acura_rdx_2020_can_generated', None), - flags=HondaFlags.BOSCH | HondaFlags.BOSCH_ALT_BRAKE + flags=HondaFlags.BOSCH_ALT_BRAKE, ) - INSIGHT = HondaPlatformConfig( + INSIGHT = HondaBoschPlatformConfig( "HONDA INSIGHT 2019", HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39), # as spec dbc_dict('honda_insight_ex_2019_can_generated', None), - flags=HondaFlags.BOSCH ) - HONDA_E = HondaPlatformConfig( + HONDA_E = HondaBoschPlatformConfig( "HONDA E 2020", HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71), dbc_dict('acura_rdx_2020_can_generated', None), - flags=HondaFlags.BOSCH ) # Nidec Cars - ACURA_ILX = HondaPlatformConfig( + ACURA_ILX = HondaNidecPlatformConfig( "ACURA ILX 2016", HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37), # 15.3 is spec end-to-end dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - CRV = HondaPlatformConfig( + CRV = HondaNidecPlatformConfig( "HONDA CR-V 2016", HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS), CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41), # as spec dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - CRV_EU = HondaPlatformConfig( + CRV_EU = HondaNidecPlatformConfig( "HONDA CR-V EU 2016", None, # Euro version of CRV Touring, don't show in docs CRV.specs, dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - FIT = HondaPlatformConfig( + FIT = HondaNidecPlatformConfig( "HONDA FIT 2018", HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS), CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - FREED = HondaPlatformConfig( + FREED = HondaNidecPlatformConfig( "HONDA FREED 2020", HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS), CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39), # mostly copied from FIT dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - HRV = HondaPlatformConfig( + HRV = HondaNidecPlatformConfig( "HONDA HRV 2019", HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS), HRV_3G.specs, dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - ODYSSEY = HondaPlatformConfig( + ODYSSEY = HondaNidecPlatformConfig( "HONDA ODYSSEY 2018", HondaCarInfo("Honda Odyssey 2018-20"), CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41), dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_PCM_ACCEL + flags=HondaFlags.NIDEC_ALT_PCM_ACCEL, ) - ODYSSEY_CHN = HondaPlatformConfig( + ODYSSEY_CHN = HondaNidecPlatformConfig( "HONDA ODYSSEY CHN 2019", None, # Chinese version of Odyssey, don't show in docs ODYSSEY.specs, dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - ACURA_RDX = HondaPlatformConfig( + ACURA_RDX = HondaNidecPlatformConfig( "ACURA RDX 2018", HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38), # as spec dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - PILOT = HondaPlatformConfig( + PILOT = HondaNidecPlatformConfig( "HONDA PILOT 2017", [ HondaCarInfo("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), @@ -263,21 +258,20 @@ class CAR(Platforms): ], CarSpecs(mass=4278 * CV.LB_TO_KG, wheelbase=2.86, centerToFrontRatio=0.428, steerRatio=16.0), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - RIDGELINE = HondaPlatformConfig( + RIDGELINE = HondaNidecPlatformConfig( "HONDA RIDGELINE 2017", HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS), CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.NIDEC_ALT_SCM_MESSAGES, + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - CIVIC = HondaPlatformConfig( + CIVIC = HondaNidecPlatformConfig( "HONDA CIVIC 2016", HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE"), CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - flags=HondaFlags.NIDEC | HondaFlags.AUTORESUME_SNG | HondaFlags.ELECTRIC_PARKING_BRAKE, ) diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index d437f1fac8..1dfdca0d89 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -7fe098c307b78bf1f6f003452f9ba0a0eaad83d6 +99a50fe1b645bc1dcbf621e9cb72d151c6896429 From b74e8c91bd5c291408c83be4cbc0fa8d542fe810 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 1 Mar 2024 17:17:52 -0800 Subject: [PATCH 055/599] Hyundai: clean up platform configs (#31677) * formatting * should always end with comma * rest are lower * to avoid confusion, don't subclass from CAN config -- nothing is common --- selfdrive/car/hyundai/values.py | 141 ++++++++++++++--------------- selfdrive/car/volkswagen/values.py | 2 +- 2 files changed, 71 insertions(+), 72 deletions(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 8802a36f46..bf0aa58999 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -69,7 +69,7 @@ class HyundaiFlags(IntFlag): HYBRID = 2 ** 10 EV = 2 ** 11 - # Static Flags + # Static flags # If 0x500 is present on bus 1 it probably has a Mando radar outputting radar points. # If no points are outputted by default it might be possible to turn it on using selfdrive/debug/hyundai_enable_radar_points.py @@ -121,15 +121,14 @@ class HyundaiPlatformConfig(PlatformConfig): self.dbc_dict = dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated') if self.flags & HyundaiFlags.MIN_STEER_32_MPH: - self.specs = self.specs.override(minSteerSpeed = 32 * CV.MPH_TO_MS) + self.specs = self.specs.override(minSteerSpeed=32 * CV.MPH_TO_MS) @dataclass -class HyundaiCanFDPlatformConfig(HyundaiPlatformConfig): +class HyundaiCanFDPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict("hyundai_canfd", None)) def init(self): - super().init() self.flags |= HyundaiFlags.CANFD @@ -147,7 +146,7 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), ], CarSpecs(mass=1675, wheelbase=2.885, steerRatio=14.5), - flags=HyundaiFlags.HYBRID + flags=HyundaiFlags.HYBRID, ) ELANTRA = HyundaiPlatformConfig( "HYUNDAI ELANTRA 2017", @@ -158,7 +157,7 @@ class CAR(Platforms): ], # steerRatio: 14 is Stock | Settled Params Learner values are steerRatio: 15.401566348670535, stiffnessFactor settled on 1.0081302973865127 CarSpecs(mass=1275, wheelbase=2.7, steerRatio=15.4, tireStiffnessFactor=0.385), - flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH + flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) ELANTRA_GT_I30 = HyundaiPlatformConfig( "HYUNDAI I30 N LINE 2019 & GT 2018 DCT", @@ -167,20 +166,20 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), ], ELANTRA.specs, - flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH + flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) ELANTRA_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA 2021", HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), - CarSpecs(mass=2800*CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), - flags=HyundaiFlags.CHECKSUM_CRC8 + CarSpecs(mass=2800 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), + flags=HyundaiFlags.CHECKSUM_CRC8, ) ELANTRA_HEV_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA HYBRID 2021", HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", - car_parts=CarParts.common([CarHarness.hyundai_k])), + car_parts=CarParts.common([CarHarness.hyundai_k])), CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), - flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) HYUNDAI_GENESIS = HyundaiPlatformConfig( "HYUNDAI GENESIS 2015-2016", @@ -190,7 +189,7 @@ class CAR(Platforms): HyundaiCarInfo("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), ], CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5, minSteerSpeed=60 * CV.KPH_TO_MS), - flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY + flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY, ) IONIQ = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2017-2019", @@ -202,102 +201,102 @@ class CAR(Platforms): "HYUNDAI IONIQ HYBRID 2020-2022", HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h])), # TODO: confirm 2020-21 harness, CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), - flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY + flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) IONIQ_EV_LTD = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC LIMITED 2019", HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_EV_2020 = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC 2020", HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), - flags=HyundaiFlags.EV + flags=HyundaiFlags.EV, ) IONIQ_PHEV_2019 = HyundaiPlatformConfig( "HYUNDAI IONIQ PLUG-IN HYBRID 2019", HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), - flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH + flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_PHEV = HyundaiPlatformConfig( "HYUNDAI IONIQ PHEV 2020", HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), - flags=HyundaiFlags.HYBRID + flags=HyundaiFlags.HYBRID, ) KONA = HyundaiPlatformConfig( "HYUNDAI KONA 2020", HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b])), CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), - flags=HyundaiFlags.CLUSTER_GEARS + flags=HyundaiFlags.CLUSTER_GEARS, ) KONA_EV = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2019", HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g])), CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), - flags=HyundaiFlags.EV + flags=HyundaiFlags.EV, ) KONA_EV_2022 = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2022", HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o])), CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), - flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV + flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV, ) KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI KONA ELECTRIC 2ND GEN", HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", - car_parts=CarParts.common([CarHarness.hyundai_r])), + car_parts=CarParts.common([CarHarness.hyundai_r])), CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), - flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE + flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) KONA_HEV = HyundaiPlatformConfig( "HYUNDAI KONA HYBRID 2020", HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i])), # TODO: check packages, CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), - flags=HyundaiFlags.HYBRID + flags=HyundaiFlags.HYBRID, ) SANTA_FE = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2019", HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", - car_parts=CarParts.common([CarHarness.hyundai_d])), + car_parts=CarParts.common([CarHarness.hyundai_d])), CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) SANTA_FE_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2022", - HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", - car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", + car_parts=CarParts.common([CarHarness.hyundai_l])), SANTA_FE.specs, - flags=HyundaiFlags.CHECKSUM_CRC8 + flags=HyundaiFlags.CHECKSUM_CRC8, ) SANTA_FE_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE HYBRID 2022", HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), SANTA_FE.specs, - flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE PlUG-IN HYBRID 2022", HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), SANTA_FE.specs, - flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) SONATA = HyundaiPlatformConfig( "HYUNDAI SONATA 2020", HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", - car_parts=CarParts.common([CarHarness.hyundai_a])), + car_parts=CarParts.common([CarHarness.hyundai_a])), CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) SONATA_LF = HyundaiPlatformConfig( "HYUNDAI SONATA 2019", HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e])), CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable - flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS + flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI STARIA 4TH GEN", @@ -311,7 +310,7 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), ], CarSpecs(mass=3520 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=16.1, tireStiffnessFactor=0.385), - flags=HyundaiFlags.TCU_GEARS + flags=HyundaiFlags.TCU_GEARS, ) PALISADE = HyundaiPlatformConfig( "HYUNDAI PALISADE 2020", @@ -320,19 +319,19 @@ class CAR(Platforms): HyundaiCarInfo("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), ], CarSpecs(mass=1999, wheelbase=2.9, steerRatio=15.6 * 1.15, tireStiffnessFactor=0.63), - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) VELOSTER = HyundaiPlatformConfig( "HYUNDAI VELOSTER 2019", HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e])), - CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor = 0.5), - flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS + CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor=0.5), + flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS, ) SONATA_HYBRID = HyundaiPlatformConfig( "HYUNDAI SONATA HYBRID 2021", HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), SONATA.specs, - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) IONIQ_5 = HyundaiCanFDPlatformConfig( "HYUNDAI IONIQ 5 2022", @@ -342,13 +341,13 @@ class CAR(Platforms): HyundaiCarInfo("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), ], CarSpecs(mass=1948, wheelbase=2.97, steerRatio=14.26, tireStiffnessFactor=0.65), - flags=HyundaiFlags.EV + flags=HyundaiFlags.EV, ) IONIQ_6 = HyundaiCanFDPlatformConfig( "HYUNDAI IONIQ 6 2023", HyundaiCarInfo("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])), IONIQ_5.specs, - flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE + flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI TUCSON 4TH GEN", @@ -368,8 +367,8 @@ class CAR(Platforms): CUSTIN_1ST_GEN = HyundaiPlatformConfig( "HYUNDAI CUSTIN 1ST GEN", HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner - flags=HyundaiFlags.CHECKSUM_CRC8 + CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner + flags=HyundaiFlags.CHECKSUM_CRC8, ) # Kia @@ -385,13 +384,13 @@ class CAR(Platforms): "KIA K5 2021", HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a])), CarSpecs(mass=3381 * CV.LB_TO_KG, wheelbase=2.85, steerRatio=13.27, tireStiffnessFactor=0.5), # 2021 Kia K5 Steering Ratio (all trims) - flags=HyundaiFlags.CHECKSUM_CRC8 + flags=HyundaiFlags.CHECKSUM_CRC8, ) KIA_K5_HEV_2020 = HyundaiPlatformConfig( "KIA K5 HYBRID 2020", HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a])), KIA_K5_2021.specs, - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) KIA_K8_HEV_1ST_GEN = HyundaiCanFDPlatformConfig( "KIA K8 HYBRID 1ST GEN", @@ -408,13 +407,13 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), ], CarSpecs(mass=3543 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=13.6, tireStiffnessFactor=0.385), # average of all the cars - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV, ) KIA_NIRO_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO EV 2ND GEN", HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), KIA_NIRO_EV.specs, - flags=HyundaiFlags.EV + flags=HyundaiFlags.EV, ) KIA_NIRO_PHEV = HyundaiPlatformConfig( "KIA NIRO HYBRID 2019", @@ -423,7 +422,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), ], KIA_NIRO_EV.specs, - flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.MIN_STEER_32_MPH + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.MIN_STEER_32_MPH, ) KIA_NIRO_PHEV_2022 = HyundaiPlatformConfig( "KIA NIRO PLUG-IN HYBRID 2022", @@ -432,7 +431,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), ], KIA_NIRO_EV.specs, - flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR + flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR, ) KIA_NIRO_HEV_2021 = HyundaiPlatformConfig( "KIA NIRO HYBRID 2021", @@ -441,7 +440,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), ], KIA_NIRO_EV.specs, - flags=HyundaiFlags.HYBRID + flags=HyundaiFlags.HYBRID, ) KIA_NIRO_HEV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO HYBRID 2ND GEN", @@ -451,34 +450,34 @@ class CAR(Platforms): KIA_OPTIMA_G4 = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN", HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", - car_parts=CarParts.common([CarHarness.hyundai_b])), # TODO: may support 2016, 2018 + car_parts=CarParts.common([CarHarness.hyundai_b])), # TODO: may support 2016, 2018 CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), - flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS | HyundaiFlags.MIN_STEER_32_MPH + flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) KIA_OPTIMA_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN FACELIFT", HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g])), CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), - flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS + flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) # TODO: may support adjacent years. may have a non-zero minimum steering speed KIA_OPTIMA_H = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 2017 & SPORTS 2019", HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c])), CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), - flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY + flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) KIA_OPTIMA_H_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 4TH GEN FACELIFT", HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h])), CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), - flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL + flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, ) KIA_SELTOS = HyundaiPlatformConfig( "KIA SELTOS 2021", HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a])), CarSpecs(mass=1337, wheelbase=2.63, steerRatio=14.56), - flags=HyundaiFlags.CHECKSUM_CRC8 + flags=HyundaiFlags.CHECKSUM_CRC8, ) KIA_SPORTAGE_5TH_GEN = HyundaiCanFDPlatformConfig( "KIA SPORTAGE 5TH GEN", @@ -493,17 +492,17 @@ class CAR(Platforms): "KIA SORENTO GT LINE 2018", [ HyundaiCarInfo("Kia Sorento 2018", "Advanced Smart Cruise Control & LKAS", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", - car_parts=CarParts.common([CarHarness.hyundai_e])), + car_parts=CarParts.common([CarHarness.hyundai_e])), HyundaiCarInfo("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), ], CarSpecs(mass=1985, wheelbase=2.78, steerRatio=14.4 * 1.1), # 10% higher at the center seems reasonable - flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.UNSUPPORTED_LONGITUDINAL + flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, ) KIA_SORENTO_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA SORENTO 4TH GEN", HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k])), - CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms - flags=HyundaiFlags.RADAR_SCC + CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms + flags=HyundaiFlags.RADAR_SCC, ) KIA_SORENTO_HEV_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA SORENTO HYBRID 4TH GEN", @@ -511,13 +510,13 @@ class CAR(Platforms): HyundaiCarInfo("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarInfo("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), ], - CarSpecs(mass=4395 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms - flags=HyundaiFlags.RADAR_SCC + CarSpecs(mass=4395 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms + flags=HyundaiFlags.RADAR_SCC, ) KIA_STINGER = HyundaiPlatformConfig( "KIA STINGER GT2 2018", HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", - car_parts=CarParts.common([CarHarness.hyundai_c])), + car_parts=CarParts.common([CarHarness.hyundai_c])), CarSpecs(mass=1825, wheelbase=2.78, steerRatio=14.4 * 1.15) # 15% higher at the center seems reasonable ) KIA_STINGER_2022 = HyundaiPlatformConfig( @@ -529,7 +528,7 @@ class CAR(Platforms): "KIA CEED INTRO ED 2019", HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e])), CarSpecs(mass=1450, wheelbase=2.65, steerRatio=13.75, tireStiffnessFactor=0.5), - flags=HyundaiFlags.LEGACY + flags=HyundaiFlags.LEGACY, ) KIA_EV6 = HyundaiCanFDPlatformConfig( "KIA EV6 2022", @@ -539,7 +538,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) ], CarSpecs(mass=2055, wheelbase=2.9, steerRatio=16, tireStiffnessFactor=0.65), - flags=HyundaiFlags.EV + flags=HyundaiFlags.EV, ) KIA_CARNIVAL_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA CARNIVAL 4TH GEN", @@ -548,7 +547,7 @@ class CAR(Platforms): HyundaiCarInfo("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) ], CarSpecs(mass=2087, wheelbase=3.09, steerRatio=14.23), - flags=HyundaiFlags.RADAR_SCC + flags=HyundaiFlags.RADAR_SCC, ) # Genesis @@ -559,19 +558,19 @@ class CAR(Platforms): HyundaiCarInfo("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), ], CarSpecs(mass=2205, wheelbase=2.9, steerRatio=12.6), # steerRatio: https://www.motor1.com/reviews/586376/2023-genesis-gv60-first-drive/#:~:text=Relative%20to%20the%20related%20Ioniq,5%2FEV6%27s%2014.3%3A1. - flags=HyundaiFlags.EV + flags=HyundaiFlags.EV, ) GENESIS_G70 = HyundaiPlatformConfig( "GENESIS G70 2018", HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), - flags=HyundaiFlags.LEGACY + flags=HyundaiFlags.LEGACY, ) GENESIS_G70_2020 = HyundaiPlatformConfig( "GENESIS G70 2020", HyundaiCarInfo("Genesis G70 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), - flags=HyundaiFlags.MANDO_RADAR + flags=HyundaiFlags.MANDO_RADAR, ) GENESIS_GV70_1ST_GEN = HyundaiCanFDPlatformConfig( "GENESIS GV70 1ST GEN", @@ -580,13 +579,13 @@ class CAR(Platforms): HyundaiCarInfo("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), ], CarSpecs(mass=1950, wheelbase=2.87, steerRatio=14.6), - flags=HyundaiFlags.RADAR_SCC + flags=HyundaiFlags.RADAR_SCC, ) GENESIS_G80 = HyundaiPlatformConfig( "GENESIS G80 2017", HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5), - flags=HyundaiFlags.LEGACY + flags=HyundaiFlags.LEGACY, ) GENESIS_G90 = HyundaiPlatformConfig( "GENESIS G90 2017", @@ -597,7 +596,7 @@ class CAR(Platforms): "GENESIS GV80 2023", HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), CarSpecs(mass=2258, wheelbase=2.95, steerRatio=14.14), - flags=HyundaiFlags.RADAR_SCC + flags=HyundaiFlags.RADAR_SCC, ) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 868d6630ef..6ff913b204 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -113,7 +113,7 @@ class VolkswagenFlags(IntFlag): # Detected flags STOCK_HCA_PRESENT = 1 - # Static Flags + # Static flags PQ = 2 From a38a5e8bb4c0eda459ec42dd4e2f42e17e6dfef6 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 1 Mar 2024 17:24:22 -0800 Subject: [PATCH 056/599] tici: enable SIM hot swap (#31680) * tici: enable SIM hot swap * only tizi --------- Co-authored-by: Comma Device --- system/hardware/tici/hardware.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/system/hardware/tici/hardware.py b/system/hardware/tici/hardware.py index 8cb02c3d91..c1cb9da438 100644 --- a/system/hardware/tici/hardware.py +++ b/system/hardware/tici/hardware.py @@ -478,6 +478,12 @@ class Tici(HardwareBase): 'AT+QNVFW="/nv/item_files/ims/IMS_enable",00', 'AT+QNVFW="/nv/item_files/modem/mmode/ue_usage_setting",01', ] + if self.get_device_type() == "tizi": + cmds += [ + # SIM hot swap + 'AT+QSIMDET=1,0', + 'AT+QSIMSTAT=1', + ] # clear out old blue prime initial APN os.system('mmcli -m any --3gpp-set-initial-eps-bearer-settings="apn="') From b57d37162622adff7b50b6992d882d19015418f8 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 1 Mar 2024 21:37:09 -0800 Subject: [PATCH 057/599] mazda --- selfdrive/car/mazda/interface.py | 1 - selfdrive/car/mazda/values.py | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index a138318b1a..85be0166ce 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -20,7 +20,6 @@ class CarInterface(CarInterfaceBase): ret.steerActuatorDelay = 0.1 ret.steerLimitTimer = 0.8 - ret.tireStiffnessFactor = 0.70 # not optimized yet CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index f45e80c119..ac822f4e9f 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -43,6 +43,10 @@ class MazdaPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('mazda_2017', None)) flags: int = MazdaFlags.GEN1 + def init(self): + # TODO: standardize default specs via subclass (MazdaCarSpecs) + self.specs.override(tireStiffnessFactor=0.7) + class CAR(Platforms): CX5 = MazdaPlatformConfig( From eaf333259943c8069eacfe592b7bc0a26a0fecfb Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 1 Mar 2024 21:37:29 -0800 Subject: [PATCH 058/599] Revert "mazda" This reverts commit b57d37162622adff7b50b6992d882d19015418f8. --- selfdrive/car/mazda/interface.py | 1 + selfdrive/car/mazda/values.py | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 85be0166ce..a138318b1a 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -20,6 +20,7 @@ class CarInterface(CarInterfaceBase): ret.steerActuatorDelay = 0.1 ret.steerLimitTimer = 0.8 + ret.tireStiffnessFactor = 0.70 # not optimized yet CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index ac822f4e9f..f45e80c119 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -43,10 +43,6 @@ class MazdaPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('mazda_2017', None)) flags: int = MazdaFlags.GEN1 - def init(self): - # TODO: standardize default specs via subclass (MazdaCarSpecs) - self.specs.override(tireStiffnessFactor=0.7) - class CAR(Platforms): CX5 = MazdaPlatformConfig( From cfc5faee2a7621bafa9818d18b35f015272c1f10 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 1 Mar 2024 21:52:50 -0800 Subject: [PATCH 059/599] fix compress_vipc width --- tools/camerastream/compressed_vipc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/camerastream/compressed_vipc.py b/tools/camerastream/compressed_vipc.py index f4b8862a84..df9de096f0 100755 --- a/tools/camerastream/compressed_vipc.py +++ b/tools/camerastream/compressed_vipc.py @@ -25,7 +25,7 @@ ENCODE_SOCKETS = { def decoder(addr, vipc_server, vst, nvidia, W, H, debug=False): sock_name = ENCODE_SOCKETS[vst] if debug: - print("start decoder for %s" % sock_name) + print(f"start decoder for {sock_name}, {W}x{H}") if nvidia: os.environ["NV_LOW_LATENCY"] = "3" # both bLowLatency and CUVID_PKT_ENDOFPICTURE @@ -124,7 +124,7 @@ class CompressedVipc: self.procs = [] for vst in vision_streams: ed = sm[ENCODE_SOCKETS[vst]] - p = multiprocessing.Process(target=decoder, args=(addr, self.vipc_server, vst, nvidia, debug, ed.width, ed.height)) + p = multiprocessing.Process(target=decoder, args=(addr, self.vipc_server, vst, nvidia, ed.width, ed.height, debug)) p.start() self.procs.append(p) From 3b5f6cd6b2e695c7be321ff3ce863d98589ff1e1 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 1 Mar 2024 23:59:28 -0800 Subject: [PATCH 060/599] [bot] Fingerprints: add missing FW versions from new users (#31610) * Export fingerprints * Update selfdrive/car/toyota/fingerprints.py --- selfdrive/car/chrysler/fingerprints.py | 3 +++ selfdrive/car/honda/fingerprints.py | 1 + selfdrive/car/toyota/fingerprints.py | 1 + 3 files changed, 5 insertions(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 1df514e79b..3444b4cc5b 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -38,6 +38,7 @@ FW_VERSIONS = { b'68227902AF', b'68227902AG', b'68227902AH', + b'68227905AG', b'68360252AC', ], (Ecu.srs, 0x744, None): [ @@ -71,6 +72,7 @@ FW_VERSIONS = { b'68340762AD ', b'68340764AD ', b'68352652AE ', + b'68352654AE ', b'68366851AH ', b'68366853AE ', b'68372861AF ', @@ -304,6 +306,7 @@ FW_VERSIONS = { b'68402708AB', b'68402971AD', b'68454144AD', + b'68454145AB', b'68454152AB', b'68454156AB', b'68516650AB', diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 0ae39751f9..a842baac88 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -805,6 +805,7 @@ FW_VERSIONS = { b'37805-5MR-3250\x00\x00', b'37805-5MR-4070\x00\x00', b'37805-5MR-4080\x00\x00', + b'37805-5MR-4170\x00\x00', b'37805-5MR-4180\x00\x00', b'37805-5MR-A240\x00\x00', b'37805-5MR-A250\x00\x00', diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 6b48408a10..b59e1abea4 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -1266,6 +1266,7 @@ FW_VERSIONS = { }, CAR.LEXUS_ES: { (Ecu.engine, 0x7e0, None): [ + b'\x02333M4100\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x02333M4200\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x02333R0000\x00\x00\x00\x00\x00\x00\x00\x00A0C01000\x00\x00\x00\x00\x00\x00\x00\x00', ], From b48cbdbc0c95fa5a6fa2523d2f0fcb4aea1615eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20Sch=C3=A4fer?= Date: Sat, 2 Mar 2024 10:01:23 -0800 Subject: [PATCH 061/599] Update RELEASES.md --- RELEASES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/RELEASES.md b/RELEASES.md index d0fd530db1..046d376c01 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -11,6 +11,9 @@ Version 0.9.6 (2024-02-27) * Directly outputs curvature for lateral control * New driver monitoring model * Trained on larger dataset +* Model path UI + * Shows where driving model wants to be + * Shows what model is seeing more cleary, but more jittery * AGNOS 9 * comma body streaming and controls over WebRTC * Improved fuzzy fingerprinting for many makes and models From 6c11de4b55d99a422830d735f7904d60587f8167 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sat, 2 Mar 2024 12:05:00 -0800 Subject: [PATCH 062/599] fix typo --- RELEASES.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index 046d376c01..4ec4c4fad5 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,7 +1,7 @@ Version 0.9.7 (2024-XX-XX) ======================== * New driving model -* Support for many hybrid Ford models +* Support for hybrid variants of supported Ford models Version 0.9.6 (2024-02-27) ======================== @@ -13,7 +13,7 @@ Version 0.9.6 (2024-02-27) * Trained on larger dataset * Model path UI * Shows where driving model wants to be - * Shows what model is seeing more cleary, but more jittery + * Shows what model is seeing more clearly, but more jittery * AGNOS 9 * comma body streaming and controls over WebRTC * Improved fuzzy fingerprinting for many makes and models From 9b2665f0c1cc82ba681a7760599fce917c8eb93f Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sat, 2 Mar 2024 12:23:46 -0800 Subject: [PATCH 063/599] can_replay fixups for bxcan hw --- tools/replay/can_replay.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/replay/can_replay.py b/tools/replay/can_replay.py index d875f25347..c7da8caf71 100755 --- a/tools/replay/can_replay.py +++ b/tools/replay/can_replay.py @@ -26,12 +26,10 @@ def send_thread(j: PandaJungle, flock): with flock: j.flash() + j.reset() for i in [0, 1, 2, 3, 0xFFFF]: j.can_clear(i) j.set_can_speed_kbps(i, 500) - j.set_can_data_speed_kbps(i, 500) - j.set_ignition(False) - time.sleep(5) j.set_ignition(True) j.set_panda_power(True) j.set_can_loopback(False) From 6fc0a2102f5c98e8dcbfed40b50b7a2fe8609c4d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 3 Mar 2024 07:21:53 -0800 Subject: [PATCH 064/599] Add Highlander 2024 to car docs --- docs/CARS.md | 1 + selfdrive/car/CARS_template.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/CARS.md b/docs/CARS.md index 7ad12189cb..f601da2beb 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -352,6 +352,7 @@ openpilot does not yet support these Toyota models due to a new message authenti * Toyota Venza 2021+ * Toyota Sequoia 2023+ * Toyota Tundra 2022+ +* Toyota Highlander 2024+ * Toyota Corolla Cross 2022+ (only US model) * Lexus NX 2022+ * Toyota bZ4x 2023+ diff --git a/selfdrive/car/CARS_template.md b/selfdrive/car/CARS_template.md index ab4d231fa7..73ddb02899 100644 --- a/selfdrive/car/CARS_template.md +++ b/selfdrive/car/CARS_template.md @@ -65,6 +65,7 @@ openpilot does not yet support these Toyota models due to a new message authenti * Toyota Venza 2021+ * Toyota Sequoia 2023+ * Toyota Tundra 2022+ +* Toyota Highlander 2024+ * Toyota Corolla Cross 2022+ (only US model) * Lexus NX 2022+ * Toyota bZ4x 2023+ From 15955bfcd0cafb7578103705d4de7c465d8364a2 Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Sun, 3 Mar 2024 20:40:27 -0500 Subject: [PATCH 065/599] VW: Early EPS faults are temporary, round deux (#31525) * VW: Early EPS faults are temporary, round deux * a bit cleaner * Revert "a bit cleaner" This reverts commit e836f92394eba0ace8d9cc87b5aa5080d6332d17. * a little better * clarity * consolidate * cleanup --- selfdrive/car/volkswagen/carstate.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index 48e9ed37d6..9107d41eb3 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -10,6 +10,8 @@ from openpilot.selfdrive.car.volkswagen.values import DBC, CANBUS, NetworkLocati class CarState(CarStateBase): def __init__(self, CP): super().__init__(CP) + self.frame = 0 + self.eps_init_complete = False self.CCP = CarControllerParams(CP) self.button_states = {button.event_type: False for button in self.CCP.BUTTONS} self.esp_hold_confirmation = False @@ -47,18 +49,14 @@ class CarState(CarStateBase): ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.standstill = ret.vEgoRaw == 0 - # Update steering angle, rate, yaw rate, and driver input torque. VW send - # the sign/direction in a separate signal so they must be recombined. + # Update EPS position and state info. For signed values, VW sends the sign in a separate signal. ret.steeringAngleDeg = pt_cp.vl["LWI_01"]["LWI_Lenkradwinkel"] * (1, -1)[int(pt_cp.vl["LWI_01"]["LWI_VZ_Lenkradwinkel"])] ret.steeringRateDeg = pt_cp.vl["LWI_01"]["LWI_Lenkradw_Geschw"] * (1, -1)[int(pt_cp.vl["LWI_01"]["LWI_VZ_Lenkradw_Geschw"])] ret.steeringTorque = pt_cp.vl["LH_EPS_03"]["EPS_Lenkmoment"] * (1, -1)[int(pt_cp.vl["LH_EPS_03"]["EPS_VZ_Lenkmoment"])] ret.steeringPressed = abs(ret.steeringTorque) > self.CCP.STEER_DRIVER_ALLOWANCE ret.yawRate = pt_cp.vl["ESP_02"]["ESP_Gierrate"] * (1, -1)[int(pt_cp.vl["ESP_02"]["ESP_VZ_Gierrate"])] * CV.DEG_TO_RAD - - # Verify EPS readiness to accept steering commands hca_status = self.CCP.hca_status_values.get(pt_cp.vl["LH_EPS_03"]["EPS_HCA_Status"]) - ret.steerFaultPermanent = hca_status in ("DISABLED", "FAULT") - ret.steerFaultTemporary = hca_status in ("INITIALIZING", "REJECTED") + ret.steerFaultTemporary, ret.steerFaultPermanent = self.update_hca_state(hca_status) # VW Emergency Assist status tracking and mitigation self.eps_stock_values = pt_cp.vl["LH_EPS_03"] @@ -151,6 +149,7 @@ class CarState(CarStateBase): # Digital instrument clusters expect the ACC HUD lead car distance to be scaled differently self.upscale_lead_car_signal = bool(pt_cp.vl["Kombi_03"]["KBI_Variante"]) + self.frame += 1 return ret def update_pq(self, pt_cp, cam_cp, ext_cp, trans_type): @@ -168,18 +167,14 @@ class CarState(CarStateBase): ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.standstill = ret.vEgoRaw == 0 - # Update steering angle, rate, yaw rate, and driver input torque. VW send - # the sign/direction in a separate signal so they must be recombined. + # Update EPS position and state info. For signed values, VW sends the sign in a separate signal. ret.steeringAngleDeg = pt_cp.vl["Lenkhilfe_3"]["LH3_BLW"] * (1, -1)[int(pt_cp.vl["Lenkhilfe_3"]["LH3_BLWSign"])] ret.steeringRateDeg = pt_cp.vl["Lenkwinkel_1"]["Lenkradwinkel_Geschwindigkeit"] * (1, -1)[int(pt_cp.vl["Lenkwinkel_1"]["Lenkradwinkel_Geschwindigkeit_S"])] ret.steeringTorque = pt_cp.vl["Lenkhilfe_3"]["LH3_LM"] * (1, -1)[int(pt_cp.vl["Lenkhilfe_3"]["LH3_LMSign"])] ret.steeringPressed = abs(ret.steeringTorque) > self.CCP.STEER_DRIVER_ALLOWANCE ret.yawRate = pt_cp.vl["Bremse_5"]["Giergeschwindigkeit"] * (1, -1)[int(pt_cp.vl["Bremse_5"]["Vorzeichen_der_Giergeschwindigk"])] * CV.DEG_TO_RAD - - # Verify EPS readiness to accept steering commands hca_status = self.CCP.hca_status_values.get(pt_cp.vl["Lenkhilfe_2"]["LH2_Sta_HCA"]) - ret.steerFaultPermanent = hca_status in ("DISABLED", "FAULT") - ret.steerFaultTemporary = hca_status in ("INITIALIZING", "REJECTED") + ret.steerFaultTemporary, ret.steerFaultPermanent = self.update_hca_state(hca_status) # Update gas, brakes, and gearshift. ret.gas = pt_cp.vl["Motor_3"]["Fahrpedal_Rohsignal"] / 100.0 @@ -253,8 +248,17 @@ class CarState(CarStateBase): # Additional safety checks performed in CarInterface. ret.espDisabled = bool(pt_cp.vl["Bremse_1"]["ESP_Passiv_getastet"]) + self.frame += 1 return ret + def update_hca_state(self, hca_status): + # Treat INITIALIZING and FAULT as temporary for worst likely EPS recovery time, for cars without factory Lane Assist + # DISABLED means the EPS hasn't been configured to support Lane Assist + self.eps_init_complete = self.eps_init_complete or (hca_status in ("DISABLED", "READY", "ACTIVE") or self.frame > 600) + perm_fault = hca_status == "DISABLED" or (self.eps_init_complete and hca_status in ("INITIALIZING", "FAULT")) + temp_fault = hca_status == "REJECTED" or not self.eps_init_complete + return temp_fault, perm_fault + @staticmethod def get_can_parser(CP): if CP.flags & VolkswagenFlags.PQ: From 1728355498d1e5307e7e96324b9232692d62eab6 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 3 Mar 2024 19:15:21 -0800 Subject: [PATCH 066/599] boardd: return earlier from bad unpack (#31687) --- selfdrive/boardd/panda.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/selfdrive/boardd/panda.cc b/selfdrive/boardd/panda.cc index e075887a4d..d738231c7b 100644 --- a/selfdrive/boardd/panda.cc +++ b/selfdrive/boardd/panda.cc @@ -284,6 +284,13 @@ bool Panda::unpack_can_buffer(uint8_t *data, uint32_t &size, std::vector Date: Mon, 4 Mar 2024 17:54:08 +0100 Subject: [PATCH 067/599] Add simple MetaDrive scenario (#31686) --- tools/sim/bridge/common.py | 4 + .../sim/bridge/metadrive/metadrive_bridge.py | 38 +-------- .../sim/bridge/metadrive/metadrive_common.py | 37 +++++++++ .../sim/bridge/metadrive/metadrive_process.py | 25 ++++-- tools/sim/bridge/metadrive/metadrive_world.py | 29 ++++--- tools/sim/lib/common.py | 6 ++ tools/sim/scenarios/metadrive/stay_in_lane.py | 82 +++++++++++++++++++ 7 files changed, 169 insertions(+), 52 deletions(-) create mode 100644 tools/sim/bridge/metadrive/metadrive_common.py create mode 100755 tools/sim/scenarios/metadrive/stay_in_lane.py diff --git a/tools/sim/bridge/common.py b/tools/sim/bridge/common.py index 10e2a055a3..2391df6651 100644 --- a/tools/sim/bridge/common.py +++ b/tools/sim/bridge/common.py @@ -171,8 +171,12 @@ Ignition: {self.simulator_state.ignition} Engaged: {self.simulator_state.is_enga steer_out = steer_op if self.simulator_state.is_engaged else steer_manual self.world.apply_controls(steer_out, throttle_out, brake_out) + self.world.read_state() self.world.read_sensors(self.simulator_state) + if self.world.exit_event.is_set(): + self.shutdown() + if self.rk.frame % self.TICKS_PER_FRAME == 0: self.world.tick() self.world.read_cameras() diff --git a/tools/sim/bridge/metadrive/metadrive_bridge.py b/tools/sim/bridge/metadrive/metadrive_bridge.py index c94fca2b95..3190cb81b9 100644 --- a/tools/sim/bridge/metadrive/metadrive_bridge.py +++ b/tools/sim/bridge/metadrive/metadrive_bridge.py @@ -1,48 +1,12 @@ -import numpy as np - -from metadrive.component.sensors.rgb_camera import RGBCamera from metadrive.component.sensors.base_camera import _cuda_enable from metadrive.component.map.pg_map import MapGenerateMethod -from panda3d.core import Texture, GraphicsOutput from openpilot.tools.sim.bridge.common import SimulatorBridge +from openpilot.tools.sim.bridge.metadrive.metadrive_common import RGBCameraRoad, RGBCameraWide from openpilot.tools.sim.bridge.metadrive.metadrive_world import MetaDriveWorld from openpilot.tools.sim.lib.camerad import W, H - -class CopyRamRGBCamera(RGBCamera): - """Camera which copies its content into RAM during the render process, for faster image grabbing.""" - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.cpu_texture = Texture() - self.buffer.addRenderTexture(self.cpu_texture, GraphicsOutput.RTMCopyRam) - - def get_rgb_array_cpu(self): - origin_img = self.cpu_texture - img = np.frombuffer(origin_img.getRamImage().getData(), dtype=np.uint8) - img = img.reshape((origin_img.getYSize(), origin_img.getXSize(), -1)) - img = img[:,:,:3] # RGBA to RGB - # img = np.swapaxes(img, 1, 0) - img = img[::-1] # Flip on vertical axis - return img - - -class RGBCameraWide(CopyRamRGBCamera): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - lens = self.get_lens() - lens.setFov(120) - lens.setNear(0.1) - -class RGBCameraRoad(CopyRamRGBCamera): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - lens = self.get_lens() - lens.setFov(40) - lens.setNear(0.1) - - def straight_block(length): return { "id": "S", diff --git a/tools/sim/bridge/metadrive/metadrive_common.py b/tools/sim/bridge/metadrive/metadrive_common.py new file mode 100644 index 0000000000..42a7eb60dd --- /dev/null +++ b/tools/sim/bridge/metadrive/metadrive_common.py @@ -0,0 +1,37 @@ +import numpy as np + +from metadrive.component.sensors.rgb_camera import RGBCamera +from panda3d.core import Texture, GraphicsOutput + + +class CopyRamRGBCamera(RGBCamera): + """Camera which copies its content into RAM during the render process, for faster image grabbing.""" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.cpu_texture = Texture() + self.buffer.addRenderTexture(self.cpu_texture, GraphicsOutput.RTMCopyRam) + + def get_rgb_array_cpu(self): + origin_img = self.cpu_texture + img = np.frombuffer(origin_img.getRamImage().getData(), dtype=np.uint8) + img = img.reshape((origin_img.getYSize(), origin_img.getXSize(), -1)) + img = img[:,:,:3] # RGBA to RGB + # img = np.swapaxes(img, 1, 0) + img = img[::-1] # Flip on vertical axis + return img + + +class RGBCameraWide(CopyRamRGBCamera): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + lens = self.get_lens() + lens.setFov(120) + lens.setNear(0.1) + + +class RGBCameraRoad(CopyRamRGBCamera): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + lens = self.get_lens() + lens.setFov(40) + lens.setNear(0.1) diff --git a/tools/sim/bridge/metadrive/metadrive_process.py b/tools/sim/bridge/metadrive/metadrive_process.py index aa6ae57976..0e659c7a2d 100644 --- a/tools/sim/bridge/metadrive/metadrive_process.py +++ b/tools/sim/bridge/metadrive/metadrive_process.py @@ -19,7 +19,8 @@ C3_POSITION = Vec3(0.0, 0, 1.22) C3_HPR = Vec3(0, 0,0) -metadrive_state = namedtuple("metadrive_state", ["velocity", "position", "bearing", "steering_angle"]) +metadrive_simulation_state = namedtuple("metadrive_simulation_state", ["running", "done", "done_info"]) +metadrive_vehicle_state = namedtuple("metadrive_vehicle_state", ["velocity", "position", "bearing", "steering_angle"]) def apply_metadrive_patches(): # By default, metadrive won't try to use cuda images unless it's used as a sensor for vehicles, so patch that in @@ -46,7 +47,8 @@ def apply_metadrive_patches(): MetaDriveEnv._is_arrive_destination = arrive_destination_patch def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera_array, image_lock, - controls_recv: Connection, state_send: Connection, exit_event): + controls_recv: Connection, simulation_state_send: Connection, vehicle_state_send: Connection, + exit_event): apply_metadrive_patches() road_image = np.frombuffer(camera_array.get_obj(), dtype=np.uint8).reshape((H, W, 3)) @@ -60,6 +62,13 @@ def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera env.reset() env.vehicle.config["max_speed_km_h"] = 1000 + simulation_state = metadrive_simulation_state( + running=True, + done=False, + done_info=None, + ) + simulation_state_send.send(simulation_state) + reset() def get_cam_as_rgb(cam): @@ -78,14 +87,14 @@ def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera vc = [0,0] while not exit_event.is_set(): - state = metadrive_state( + vehicle_state = metadrive_vehicle_state( velocity=vec3(x=float(env.vehicle.velocity[0]), y=float(env.vehicle.velocity[1]), z=0), position=env.vehicle.position, bearing=float(math.degrees(env.vehicle.heading_theta)), steering_angle=env.vehicle.steering * env.vehicle.MAX_STEERING ) - state_send.send(state) + vehicle_state_send.send(vehicle_state) if controls_recv.poll(0): while controls_recv.poll(0): @@ -103,7 +112,13 @@ def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera obs, _, terminated, _, info = env.step(vc) if terminated: - reset() + done_result = env.done_function("default_agent") + simulation_state = metadrive_simulation_state( + running=False, + done=done_result[0], + done_info=done_result[1], + ) + simulation_state_send.send(simulation_state) if dual_camera: wide_road_image[...] = get_cam_as_rgb("rgb_wide") diff --git a/tools/sim/bridge/metadrive/metadrive_world.py b/tools/sim/bridge/metadrive/metadrive_world.py index 4cbe64393e..312860593d 100644 --- a/tools/sim/bridge/metadrive/metadrive_world.py +++ b/tools/sim/bridge/metadrive/metadrive_world.py @@ -5,7 +5,8 @@ import numpy as np import time from multiprocessing import Pipe, Array -from openpilot.tools.sim.bridge.metadrive.metadrive_process import metadrive_process, metadrive_state +from openpilot.tools.sim.bridge.metadrive.metadrive_process import (metadrive_process, metadrive_simulation_state, + metadrive_vehicle_state) from openpilot.tools.sim.lib.common import SimulatorState, World from openpilot.tools.sim.lib.camerad import W, H @@ -21,14 +22,16 @@ class MetaDriveWorld(World): self.wide_road_image = np.frombuffer(self.wide_camera_array.get_obj(), dtype=np.uint8).reshape((H, W, 3)) self.controls_send, self.controls_recv = Pipe() - self.state_send, self.state_recv = Pipe() + self.simulation_state_send, self.simulation_state_recv = Pipe() + self.vehicle_state_send, self.vehicle_state_recv = Pipe() self.exit_event = multiprocessing.Event() self.metadrive_process = multiprocessing.Process(name="metadrive process", target= functools.partial(metadrive_process, dual_camera, config, self.camera_array, self.wide_camera_array, self.image_lock, - self.controls_recv, self.state_send, self.exit_event)) + self.controls_recv, self.simulation_state_send, + self.vehicle_state_send, self.exit_event)) self.metadrive_process.start() @@ -36,7 +39,7 @@ class MetaDriveWorld(World): print("---- Spawning Metadrive world, this might take awhile ----") print("----------------------------------------------------------") - self.state_recv.recv() # wait for a state message to ensure metadrive is launched + self.vehicle_state_recv.recv() # wait for a state message to ensure metadrive is launched self.steer_ratio = 15 self.vc = [0.0,0.0] @@ -58,13 +61,19 @@ class MetaDriveWorld(World): self.controls_send.send([*self.vc, self.should_reset]) self.should_reset = False + def read_state(self): + while self.simulation_state_recv.poll(0): + md_state: metadrive_simulation_state = self.simulation_state_recv.recv() + if md_state.done: + self.exit_event.set() + def read_sensors(self, state: SimulatorState): - while self.state_recv.poll(0): - md_state: metadrive_state = self.state_recv.recv() - state.velocity = md_state.velocity - state.bearing = md_state.bearing - state.steering_angle = md_state.steering_angle - state.gps.from_xy(md_state.position) + while self.vehicle_state_recv.poll(0): + md_vehicle: metadrive_vehicle_state = self.vehicle_state_recv.recv() + state.velocity = md_vehicle.velocity + state.bearing = md_vehicle.bearing + state.steering_angle = md_vehicle.steering_angle + state.gps.from_xy(md_vehicle.position) state.valid = True def read_cameras(self): diff --git a/tools/sim/lib/common.py b/tools/sim/lib/common.py index 795d7505c7..76224c61de 100644 --- a/tools/sim/lib/common.py +++ b/tools/sim/lib/common.py @@ -69,6 +69,8 @@ class World(ABC): self.road_image = np.zeros((H, W, 3), dtype=np.uint8) self.wide_road_image = np.zeros((H, W, 3), dtype=np.uint8) + self.exit_event = multiprocessing.Event() + @abstractmethod def apply_controls(self, steer_sim, throttle_out, brake_out): pass @@ -77,6 +79,10 @@ class World(ABC): def tick(self): pass + @abstractmethod + def read_state(self): + pass + @abstractmethod def read_sensors(self, simulator_state: SimulatorState): pass diff --git a/tools/sim/scenarios/metadrive/stay_in_lane.py b/tools/sim/scenarios/metadrive/stay_in_lane.py new file mode 100755 index 0000000000..55fb2cb9bd --- /dev/null +++ b/tools/sim/scenarios/metadrive/stay_in_lane.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python + +from typing import Any +from multiprocessing import Queue + +from metadrive.component.sensors.base_camera import _cuda_enable +from metadrive.component.map.pg_map import MapGenerateMethod + +from openpilot.tools.sim.bridge.common import SimulatorBridge +from openpilot.tools.sim.bridge.metadrive.metadrive_common import RGBCameraRoad, RGBCameraWide +from openpilot.tools.sim.bridge.metadrive.metadrive_world import MetaDriveWorld +from openpilot.tools.sim.lib.camerad import W, H + + +def create_map(): + return dict( + type=MapGenerateMethod.PG_MAP_FILE, + lane_num=2, + lane_width=3.5, + config=[ + { + "id": "S", + "pre_block_socket_index": 0, + "length": 60, + }, + { + "id": "C", + "pre_block_socket_index": 0, + "length": 60, + "radius": 600, + "angle": 45, + "dir": 0, + }, + ] + ) + + +class MetaDriveBridge(SimulatorBridge): + TICKS_PER_FRAME = 5 + + def __init__(self, dual_camera, high_quality): + self.should_render = False + + super().__init__(dual_camera, high_quality) + + def spawn_world(self): + sensors = { + "rgb_road": (RGBCameraRoad, W, H, ) + } + + if self.dual_camera: + sensors["rgb_wide"] = (RGBCameraWide, W, H) + + config = dict( + use_render=self.should_render, + vehicle_config=dict( + enable_reverse=False, + image_source="rgb_road", + ), + sensors=sensors, + image_on_cuda=_cuda_enable, + image_observation=True, + interface_panel=[], + out_of_route_done=True, + on_continuous_line_done=True, + crash_vehicle_done=True, + crash_object_done=True, + traffic_density=0.0, + map_config=create_map(), + decision_repeat=1, + physics_world_step_size=self.TICKS_PER_FRAME/100, + preload_models=False + ) + + return MetaDriveWorld(config, self.dual_camera) + + +if __name__ == "__main__": + queue: Any = Queue() + simulator_bridge = MetaDriveBridge(True, False) + simulator_process = simulator_bridge.run(queue) + simulator_process.join() From 8cd3bc65bfff855e55eda7fc2ecbf6b0da306ea4 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 4 Mar 2024 09:45:56 -0800 Subject: [PATCH 068/599] [bot] Bump submodules (#31690) bump submodules Co-authored-by: jnewb1 --- opendbc | 2 +- rednose_repo | 2 +- teleoprtc_repo | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opendbc b/opendbc index 5f096db742..1745ab5182 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit 5f096db742b0c5dcd19976afdb07d5dd098f4b07 +Subproject commit 1745ab51825055cd18748013c4a5e3377319e390 diff --git a/rednose_repo b/rednose_repo index c5762e8bc6..1dc61a60e6 160000 --- a/rednose_repo +++ b/rednose_repo @@ -1 +1 @@ -Subproject commit c5762e8bc6f7338c7a30d2cd1cba8cc64e81ba19 +Subproject commit 1dc61a60e684b4bc8c591a8bce7e24e02aa8f400 diff --git a/teleoprtc_repo b/teleoprtc_repo index 3f9e8176d1..8489ac3c5a 160000 --- a/teleoprtc_repo +++ b/teleoprtc_repo @@ -1 +1 @@ -Subproject commit 3f9e8176d1be3d217528baee09fc418fa980a0c3 +Subproject commit 8489ac3c5aa0b0e2fec397694f9005e2b5a613e4 From 8ec0d87de06c265dcb0526b9a3bce8a397248dc9 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 4 Mar 2024 12:53:42 -0500 Subject: [PATCH 069/599] card: prepare for separate process (#31660) * Card * update ref * bump cpu * sub to caroutput * update ref --- cereal | 2 +- selfdrive/controls/controlsd.py | 64 ++++++++++--------- selfdrive/locationd/torqued.py | 5 +- selfdrive/test/process_replay/ref_commit | 2 +- selfdrive/test/test_onroad.py | 2 +- .../plotjuggler/layouts/max-torque-debug.xml | 2 +- .../plotjuggler/layouts/torque-controller.xml | 4 +- tools/tuning/measure_steering_accuracy.py | 4 +- 8 files changed, 46 insertions(+), 39 deletions(-) diff --git a/cereal b/cereal index bfbb0cab83..0172e60275 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit bfbb0cab83e3ad49d85ad1a34ee1241bf1ff782f +Subproject commit 0172e60275b11074ff4e6b65378a12f3936fa95a diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index bd3dd08179..fc68db14e5 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -68,11 +68,15 @@ class CarD: def __init__(self, CI=None): self.can_sock = messaging.sub_sock('can', timeout=20) self.sm = messaging.SubMaster(['pandaStates']) - self.pm = messaging.PubMaster(['sendcan', 'carState', 'carParams']) + self.pm = messaging.PubMaster(['sendcan', 'carState', 'carParams', 'carOutput']) self.can_rcv_timeout_counter = 0 # conseuctive timeout count self.can_rcv_cum_timeout_counter = 0 # cumulative timeout count + self.CC_prev = car.CarState.new_message() + + self.last_actuators = None + self.params = Params() if CI is None: @@ -118,14 +122,12 @@ class CarD: """Initialize CarInterface, once controls are ready""" self.CI.init(self.CP, self.can_sock, self.pm.sock['sendcan']) - def state_update(self, CC: car.CarControl): + def state_update(self): """carState update loop, driven by can""" - # TODO: This should not depend on carControl - # Update carState from CAN can_strs = messaging.drain_sock_raw(self.can_sock, wait_for_one=True) - self.CS = self.CI.update(CC, can_strs) + self.CS = self.CI.update(self.CC_prev, can_strs) self.sm.update(0) @@ -143,18 +145,17 @@ class CarD: if can_rcv_valid and REPLAY: self.can_log_mono_time = messaging.log_from_bytes(can_strs[0]).logMonoTime + self.state_publish() + return self.CS - def state_publish(self, car_events): + def state_publish(self): """carState and carParams publish loop""" - # TODO: carState should be independent of the event loop - # carState cs_send = messaging.new_message('carState') cs_send.valid = self.CS.canValid cs_send.carState = self.CS - cs_send.carState.events = car_events self.pm.send('carState', cs_send) # carParams - logged every 50 seconds (> 1 per segment) @@ -164,25 +165,36 @@ class CarD: cp_send.carParams = self.CP self.pm.send('carParams', cp_send) + # publish new carOutput + co_send = messaging.new_message('carOutput') + co_send.valid = True + if self.last_actuators is not None: + co_send.carOutput.actuatorsOutput = self.last_actuators + self.pm.send('carOutput', co_send) + def controls_update(self, CC: car.CarControl): """control update loop, driven by carControl""" # send car controls over can now_nanos = self.can_log_mono_time if REPLAY else int(time.monotonic() * 1e9) - actuators_output, can_sends = self.CI.apply(CC, now_nanos) + self.last_actuators, can_sends = self.CI.apply(CC, now_nanos) self.pm.send('sendcan', can_list_to_can_capnp(can_sends, msgtype='sendcan', valid=self.CS.canValid)) - return actuators_output + self.CC_prev = CC class Controls: def __init__(self, CI=None): self.card = CarD(CI) - self.CP = self.card.CP + self.params = Params() + + with car.CarParams.from_bytes(self.params.get("CarParams", block=True)) as msg: + # TODO: this shouldn't need to be a builder + self.CP = msg.as_builder() + self.CI = self.card.CI - config_realtime_process(4, Priority.CTRL_HIGH) # Ensure the current branch is cached, otherwise the first iteration of controlsd lags self.branch = get_short_branch() @@ -195,12 +207,11 @@ class Controls: self.log_sock = messaging.sub_sock('androidLog') - self.params = Params() ignore = self.sensor_packets + ['testJoystick'] if SIMULATION: ignore += ['driverCameraState', 'managerState'] self.sm = messaging.SubMaster(['deviceState', 'pandaStates', 'peripheralState', 'modelV2', 'liveCalibration', - 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman', + 'carOutput', 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman', 'managerState', 'liveParameters', 'radarState', 'liveTorqueParameters', 'testJoystick'] + self.camera_packets + self.sensor_packets, ignore_alive=ignore, ignore_avg_freq=ignore+['radarState', 'testJoystick'], ignore_valid=['testJoystick', ], @@ -212,15 +223,12 @@ class Controls: self.disengage_on_accelerator = self.params.get_bool("DisengageOnAccelerator") self.is_metric = self.params.get_bool("IsMetric") self.is_ldw_enabled = self.params.get_bool("IsLdwEnabled") - openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") # detect sound card presence and ensure successful init sounds_available = HARDWARE.get_sound_card_online() car_recognized = self.CP.carName != 'mock' - controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly - # cleanup old params if not self.CP.experimentalLongitudinalAvailable: self.params.remove("ExperimentalLongitudinalEnabled") @@ -267,7 +275,7 @@ class Controls: self.can_log_mono_time = 0 - self.startup_event = get_startup_event(car_recognized, controller_available, len(self.CP.carFw) > 0) + self.startup_event = get_startup_event(car_recognized, not self.CP.passive, len(self.CP.carFw) > 0) if not sounds_available: self.events.add(EventName.soundsUnavailable, static=True) @@ -513,7 +521,7 @@ class Controls: def data_sample(self): """Receive data from sockets and update carState""" - CS = self.card.state_update(self.CC) + CS = self.card.state_update() self.sm.update(0) @@ -771,6 +779,8 @@ class Controls: def publish_logs(self, CS, start_time, CC, lac_log): """Send actuators and hud commands to the car, send controlsstate and MPC logging""" + CO = self.sm['carOutput'] + # Orientation and angle rates can be useful for carcontroller # Only calibrated (car) frame is relevant for the carcontroller orientation_value = list(self.sm['liveLocationKalman'].calibratedOrientationNED.value) @@ -833,13 +843,12 @@ class Controls: hudControl.visualAlert = current_alert.visual_alert if not self.CP.passive and self.initialized: - self.last_actuators = self.card.controls_update(CC) - CC.actuatorsOutput = self.last_actuators + self.card.controls_update(CC) if self.CP.steerControlType == car.CarParams.SteerControlType.angle: - self.steer_limited = abs(CC.actuators.steeringAngleDeg - CC.actuatorsOutput.steeringAngleDeg) > \ + self.steer_limited = abs(CC.actuators.steeringAngleDeg - CO.actuatorsOutput.steeringAngleDeg) > \ STEER_ANGLE_SATURATION_THRESHOLD else: - self.steer_limited = abs(CC.actuators.steer - CC.actuatorsOutput.steer) > 1e-2 + self.steer_limited = abs(CC.actuators.steer - CO.actuatorsOutput.steer) > 1e-2 force_decel = (self.sm['driverMonitoringState'].awarenessStatus < 0.) or \ (self.state == State.softDisabling) @@ -896,15 +905,11 @@ class Controls: self.pm.send('controlsState', dat) - car_events = self.events.to_msg() - - self.card.state_publish(car_events) - # onroadEvents - logged every second or on change if (self.sm.frame % int(1. / DT_CTRL) == 0) or (self.events.names != self.events_prev): ce_send = messaging.new_message('onroadEvents', len(self.events)) ce_send.valid = True - ce_send.onroadEvents = car_events + ce_send.onroadEvents = self.events.to_msg() self.pm.send('onroadEvents', ce_send) self.events_prev = self.events.names.copy() @@ -961,6 +966,7 @@ class Controls: def main(): + config_realtime_process(4, Priority.CTRL_HIGH) controls = Controls() controls.controlsd_thread() diff --git a/selfdrive/locationd/torqued.py b/selfdrive/locationd/torqued.py index 69bab8d1fa..b49784d13f 100755 --- a/selfdrive/locationd/torqued.py +++ b/selfdrive/locationd/torqued.py @@ -159,8 +159,9 @@ class TorqueEstimator(ParameterEstimator): def handle_log(self, t, which, msg): if which == "carControl": self.raw_points["carControl_t"].append(t + self.lag) - self.raw_points["steer_torque"].append(-msg.actuatorsOutput.steer) self.raw_points["active"].append(msg.latActive) + elif which == "carOutput": + self.raw_points["steer_torque"].append(-msg.actuatorsOutput.steer) elif which == "carState": self.raw_points["carState_t"].append(t + self.lag) self.raw_points["vego"].append(msg.vEgo) @@ -218,7 +219,7 @@ def main(demo=False): config_realtime_process([0, 1, 2, 3], 5) pm = messaging.PubMaster(['liveTorqueParameters']) - sm = messaging.SubMaster(['carControl', 'carState', 'liveLocationKalman'], poll='liveLocationKalman') + sm = messaging.SubMaster(['carControl', 'carOutput', 'carState', 'liveLocationKalman'], poll='liveLocationKalman') params = Params() with car.CarParams.from_bytes(params.get("CarParams", block=True)) as CP: diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 1dfdca0d89..46d684211c 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -99a50fe1b645bc1dcbf621e9cb72d151c6896429 +43efe1cf08cba8c86bc1ae8234b3d3d084a40e5d diff --git a/selfdrive/test/test_onroad.py b/selfdrive/test/test_onroad.py index 8f8c93ecff..4be9b8a430 100755 --- a/selfdrive/test/test_onroad.py +++ b/selfdrive/test/test_onroad.py @@ -29,7 +29,7 @@ from openpilot.tools.lib.logreader import LogReader # Baseline CPU usage by process PROCS = { - "selfdrive.controls.controlsd": 41.0, + "selfdrive.controls.controlsd": 46.0, "./loggerd": 14.0, "./encoderd": 17.0, "./camerad": 14.5, diff --git a/tools/plotjuggler/layouts/max-torque-debug.xml b/tools/plotjuggler/layouts/max-torque-debug.xml index 20a49c2181..8cfd30599e 100644 --- a/tools/plotjuggler/layouts/max-torque-debug.xml +++ b/tools/plotjuggler/layouts/max-torque-debug.xml @@ -24,7 +24,7 @@ - + diff --git a/tools/plotjuggler/layouts/torque-controller.xml b/tools/plotjuggler/layouts/torque-controller.xml index 443255968a..d6e4684d63 100644 --- a/tools/plotjuggler/layouts/torque-controller.xml +++ b/tools/plotjuggler/layouts/torque-controller.xml @@ -24,8 +24,8 @@ - - + + diff --git a/tools/tuning/measure_steering_accuracy.py b/tools/tuning/measure_steering_accuracy.py index f804b328de..6abf1338dc 100755 --- a/tools/tuning/measure_steering_accuracy.py +++ b/tools/tuning/measure_steering_accuracy.py @@ -47,7 +47,7 @@ class SteeringAccuracyTool: v_ego = sm['carState'].vEgo active = sm['controlsState'].active - steer = sm['carControl'].actuatorsOutput.steer + steer = sm['carOutput'].actuatorsOutput.steer standstill = sm['carState'].standstill steer_limited = abs(sm['carControl'].actuators.steer - sm['carControl'].actuatorsOutput.steer) > 1e-2 overriding = sm['carState'].steeringPressed @@ -150,7 +150,7 @@ if __name__ == "__main__": messaging.context = messaging.Context() carControl = messaging.sub_sock('carControl', addr=args.addr, conflate=True) - sm = messaging.SubMaster(['carState', 'carControl', 'controlsState', 'modelV2'], addr=args.addr) + sm = messaging.SubMaster(['carState', 'carControl', 'carOutput', 'controlsState', 'modelV2'], addr=args.addr) time.sleep(1) # Make sure all submaster data is available before going further print("waiting for messages...") From 82acb87fae3e2972eb9d3942767c2dcc84c601a7 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 4 Mar 2024 10:11:13 -0800 Subject: [PATCH 070/599] bump cereal --- cereal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cereal b/cereal index 0172e60275..c5c2a60f1a 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 0172e60275b11074ff4e6b65378a12f3936fa95a +Subproject commit c5c2a60f1aa796e7de464015349db3c336b79220 From bc2407abeb68bce9c0fa94e3c7df1b1d0799e660 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 4 Mar 2024 13:45:32 -0500 Subject: [PATCH 071/599] move card to selfdrive/car/card (#31693) * more obivous dif * release --- release/files_common | 1 + selfdrive/car/card.py | 142 ++++++++++++++++++++++++++++++++ selfdrive/controls/controlsd.py | 128 +--------------------------- 3 files changed, 145 insertions(+), 126 deletions(-) create mode 100755 selfdrive/car/card.py diff --git a/release/files_common b/release/files_common index 1fb05b43a7..5ca624a5fa 100644 --- a/release/files_common +++ b/release/files_common @@ -86,6 +86,7 @@ selfdrive/boardd/pandad.py selfdrive/boardd/tests/test_boardd_loopback.py selfdrive/car/__init__.py +selfdrive/car/card.py selfdrive/car/docs_definitions.py selfdrive/car/car_helpers.py selfdrive/car/fingerprints.py diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py new file mode 100755 index 0000000000..2853ba9771 --- /dev/null +++ b/selfdrive/car/card.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 +import os +import time + +import cereal.messaging as messaging + +from cereal import car + +from panda import ALTERNATIVE_EXPERIENCE + +from openpilot.common.params import Params +from openpilot.common.realtime import DT_CTRL + +from openpilot.selfdrive.boardd.boardd import can_list_to_can_capnp +from openpilot.selfdrive.car.car_helpers import get_car, get_one_can +from openpilot.selfdrive.car.interfaces import CarInterfaceBase + + +REPLAY = "REPLAY" in os.environ + + +class CarD: + CI: CarInterfaceBase + CS: car.CarState + + def __init__(self, CI=None): + self.can_sock = messaging.sub_sock('can', timeout=20) + self.sm = messaging.SubMaster(['pandaStates']) + self.pm = messaging.PubMaster(['sendcan', 'carState', 'carParams', 'carOutput']) + + self.can_rcv_timeout_counter = 0 # conseuctive timeout count + self.can_rcv_cum_timeout_counter = 0 # cumulative timeout count + + self.CC_prev = car.CarState.new_message() + + self.last_actuators = None + + self.params = Params() + + if CI is None: + # wait for one pandaState and one CAN packet + print("Waiting for CAN messages...") + get_one_can(self.can_sock) + + num_pandas = len(messaging.recv_one_retry(self.sm.sock['pandaStates']).pandaStates) + experimental_long_allowed = self.params.get_bool("ExperimentalLongitudinalEnabled") + self.CI, self.CP = get_car(self.can_sock, self.pm.sock['sendcan'], experimental_long_allowed, num_pandas) + else: + self.CI, self.CP = CI, CI.CP + + # set alternative experiences from parameters + disengage_on_accelerator = self.params.get_bool("DisengageOnAccelerator") + self.CP.alternativeExperience = 0 + if not disengage_on_accelerator: + self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS + + car_recognized = self.CP.carName != 'mock' + openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") + + controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly + + self.CP.passive = not car_recognized or not controller_available or self.CP.dashcamOnly + if self.CP.passive: + safety_config = car.CarParams.SafetyConfig.new_message() + safety_config.safetyModel = car.CarParams.SafetyModel.noOutput + self.CP.safetyConfigs = [safety_config] + + # Write previous route's CarParams + prev_cp = self.params.get("CarParamsPersistent") + if prev_cp is not None: + self.params.put("CarParamsPrevRoute", prev_cp) + + # Write CarParams for radard + cp_bytes = self.CP.to_bytes() + self.params.put("CarParams", cp_bytes) + self.params.put_nonblocking("CarParamsCache", cp_bytes) + self.params.put_nonblocking("CarParamsPersistent", cp_bytes) + + def initialize(self): + """Initialize CarInterface, once controls are ready""" + self.CI.init(self.CP, self.can_sock, self.pm.sock['sendcan']) + + def state_update(self): + """carState update loop, driven by can""" + + # Update carState from CAN + can_strs = messaging.drain_sock_raw(self.can_sock, wait_for_one=True) + self.CS = self.CI.update(self.CC_prev, can_strs) + + self.sm.update(0) + + can_rcv_valid = len(can_strs) > 0 + + # Check for CAN timeout + if not can_rcv_valid: + self.can_rcv_timeout_counter += 1 + self.can_rcv_cum_timeout_counter += 1 + else: + self.can_rcv_timeout_counter = 0 + + self.can_rcv_timeout = self.can_rcv_timeout_counter >= 5 + + if can_rcv_valid and REPLAY: + self.can_log_mono_time = messaging.log_from_bytes(can_strs[0]).logMonoTime + + self.state_publish() + + return self.CS + + def state_publish(self): + """carState and carParams publish loop""" + + # carState + cs_send = messaging.new_message('carState') + cs_send.valid = self.CS.canValid + cs_send.carState = self.CS + self.pm.send('carState', cs_send) + + # carParams - logged every 50 seconds (> 1 per segment) + if (self.sm.frame % int(50. / DT_CTRL) == 0): + cp_send = messaging.new_message('carParams') + cp_send.valid = True + cp_send.carParams = self.CP + self.pm.send('carParams', cp_send) + + # publish new carOutput + co_send = messaging.new_message('carOutput') + co_send.valid = True + if self.last_actuators is not None: + co_send.carOutput.actuatorsOutput = self.last_actuators + self.pm.send('carOutput', co_send) + + def controls_update(self, CC: car.CarControl): + """control update loop, driven by carControl""" + + # send car controls over can + now_nanos = self.can_log_mono_time if REPLAY else int(time.monotonic() * 1e9) + self.last_actuators, can_sends = self.CI.apply(CC, now_nanos) + self.pm.send('sendcan', can_list_to_can_capnp(can_sends, msgtype='sendcan', valid=self.CS.canValid)) + + self.CC_prev = CC + diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index fc68db14e5..e4f2542ea5 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -10,7 +10,6 @@ import cereal.messaging as messaging from cereal import car, log from cereal.visionipc import VisionIpcClient, VisionStreamType -from panda import ALTERNATIVE_EXPERIENCE from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import clip @@ -18,9 +17,8 @@ from openpilot.common.params import Params from openpilot.common.realtime import config_realtime_process, Priority, Ratekeeper, DT_CTRL from openpilot.common.swaglog import cloudlog -from openpilot.selfdrive.boardd.boardd import can_list_to_can_capnp -from openpilot.selfdrive.car.car_helpers import get_car, get_startup_event, get_one_can -from openpilot.selfdrive.car.interfaces import CarInterfaceBase +from openpilot.selfdrive.car.car_helpers import get_startup_event +from openpilot.selfdrive.car.card import CarD from openpilot.selfdrive.controls.lib.alertmanager import AlertManager, set_offroad_alert from openpilot.selfdrive.controls.lib.drive_helpers import VCruiseHelper, clip_curvature from openpilot.selfdrive.controls.lib.events import Events, ET @@ -61,128 +59,6 @@ ACTIVE_STATES = (State.enabled, State.softDisabling, State.overriding) ENABLED_STATES = (State.preEnabled, *ACTIVE_STATES) -class CarD: - CI: CarInterfaceBase - CS: car.CarState - - def __init__(self, CI=None): - self.can_sock = messaging.sub_sock('can', timeout=20) - self.sm = messaging.SubMaster(['pandaStates']) - self.pm = messaging.PubMaster(['sendcan', 'carState', 'carParams', 'carOutput']) - - self.can_rcv_timeout_counter = 0 # conseuctive timeout count - self.can_rcv_cum_timeout_counter = 0 # cumulative timeout count - - self.CC_prev = car.CarState.new_message() - - self.last_actuators = None - - self.params = Params() - - if CI is None: - # wait for one pandaState and one CAN packet - print("Waiting for CAN messages...") - get_one_can(self.can_sock) - - num_pandas = len(messaging.recv_one_retry(self.sm.sock['pandaStates']).pandaStates) - experimental_long_allowed = self.params.get_bool("ExperimentalLongitudinalEnabled") - self.CI, self.CP = get_car(self.can_sock, self.pm.sock['sendcan'], experimental_long_allowed, num_pandas) - else: - self.CI, self.CP = CI, CI.CP - - # set alternative experiences from parameters - disengage_on_accelerator = self.params.get_bool("DisengageOnAccelerator") - self.CP.alternativeExperience = 0 - if not disengage_on_accelerator: - self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS - - car_recognized = self.CP.carName != 'mock' - openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") - - controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly - - self.CP.passive = not car_recognized or not controller_available or self.CP.dashcamOnly - if self.CP.passive: - safety_config = car.CarParams.SafetyConfig.new_message() - safety_config.safetyModel = car.CarParams.SafetyModel.noOutput - self.CP.safetyConfigs = [safety_config] - - # Write previous route's CarParams - prev_cp = self.params.get("CarParamsPersistent") - if prev_cp is not None: - self.params.put("CarParamsPrevRoute", prev_cp) - - # Write CarParams for radard - cp_bytes = self.CP.to_bytes() - self.params.put("CarParams", cp_bytes) - self.params.put_nonblocking("CarParamsCache", cp_bytes) - self.params.put_nonblocking("CarParamsPersistent", cp_bytes) - - def initialize(self): - """Initialize CarInterface, once controls are ready""" - self.CI.init(self.CP, self.can_sock, self.pm.sock['sendcan']) - - def state_update(self): - """carState update loop, driven by can""" - - # Update carState from CAN - can_strs = messaging.drain_sock_raw(self.can_sock, wait_for_one=True) - self.CS = self.CI.update(self.CC_prev, can_strs) - - self.sm.update(0) - - can_rcv_valid = len(can_strs) > 0 - - # Check for CAN timeout - if not can_rcv_valid: - self.can_rcv_timeout_counter += 1 - self.can_rcv_cum_timeout_counter += 1 - else: - self.can_rcv_timeout_counter = 0 - - self.can_rcv_timeout = self.can_rcv_timeout_counter >= 5 - - if can_rcv_valid and REPLAY: - self.can_log_mono_time = messaging.log_from_bytes(can_strs[0]).logMonoTime - - self.state_publish() - - return self.CS - - def state_publish(self): - """carState and carParams publish loop""" - - # carState - cs_send = messaging.new_message('carState') - cs_send.valid = self.CS.canValid - cs_send.carState = self.CS - self.pm.send('carState', cs_send) - - # carParams - logged every 50 seconds (> 1 per segment) - if (self.sm.frame % int(50. / DT_CTRL) == 0): - cp_send = messaging.new_message('carParams') - cp_send.valid = True - cp_send.carParams = self.CP - self.pm.send('carParams', cp_send) - - # publish new carOutput - co_send = messaging.new_message('carOutput') - co_send.valid = True - if self.last_actuators is not None: - co_send.carOutput.actuatorsOutput = self.last_actuators - self.pm.send('carOutput', co_send) - - def controls_update(self, CC: car.CarControl): - """control update loop, driven by carControl""" - - # send car controls over can - now_nanos = self.can_log_mono_time if REPLAY else int(time.monotonic() * 1e9) - self.last_actuators, can_sends = self.CI.apply(CC, now_nanos) - self.pm.send('sendcan', can_list_to_can_capnp(can_sends, msgtype='sendcan', valid=self.CS.canValid)) - - self.CC_prev = CC - - class Controls: def __init__(self, CI=None): self.card = CarD(CI) From be2b48183f81c09f7bc5d1e77d880ce40abacb20 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 4 Mar 2024 17:33:52 -0500 Subject: [PATCH 072/599] updated -> move to selfdrive/updated/updated (#31696) * move updated * for release --- release/files_common | 3 ++- scripts/stop_updater.sh | 2 +- selfdrive/manager/process_config.py | 2 +- selfdrive/ui/qt/offroad/software_settings.cc | 4 ++-- selfdrive/{ => updated}/updated.py | 0 5 files changed, 6 insertions(+), 5 deletions(-) rename selfdrive/{ => updated}/updated.py (100%) diff --git a/release/files_common b/release/files_common index 5ca624a5fa..c0be9d3cae 100644 --- a/release/files_common +++ b/release/files_common @@ -53,9 +53,10 @@ tools/replay/*.h selfdrive/__init__.py selfdrive/sentry.py selfdrive/tombstoned.py -selfdrive/updated.py selfdrive/statsd.py +selfdrive/updated/* + system/logmessaged.py system/micd.py system/version.py diff --git a/scripts/stop_updater.sh b/scripts/stop_updater.sh index 4243d30e9f..7f82191823 100755 --- a/scripts/stop_updater.sh +++ b/scripts/stop_updater.sh @@ -1,7 +1,7 @@ #!/usr/bin/env sh # Stop updater -pkill -2 -f selfdrive.updated +pkill -2 -f selfdrive.updated.updated # Remove pending update rm -f /data/safe_staging/finalized/.overlay_consistent diff --git a/selfdrive/manager/process_config.py b/selfdrive/manager/process_config.py index cb6dd8883f..4f292917fd 100644 --- a/selfdrive/manager/process_config.py +++ b/selfdrive/manager/process_config.py @@ -78,7 +78,7 @@ procs = [ PythonProcess("radard", "selfdrive.controls.radard", only_onroad), PythonProcess("thermald", "selfdrive.thermald.thermald", always_run), PythonProcess("tombstoned", "selfdrive.tombstoned", always_run, enabled=not PC), - PythonProcess("updated", "selfdrive.updated", only_offroad, enabled=not PC), + PythonProcess("updated", "selfdrive.updated.updated", only_offroad, enabled=not PC), PythonProcess("uploader", "system.loggerd.uploader", always_run), PythonProcess("statsd", "selfdrive.statsd", always_run), diff --git a/selfdrive/ui/qt/offroad/software_settings.cc b/selfdrive/ui/qt/offroad/software_settings.cc index 15c022db9a..d12db3f878 100644 --- a/selfdrive/ui/qt/offroad/software_settings.cc +++ b/selfdrive/ui/qt/offroad/software_settings.cc @@ -17,7 +17,7 @@ void SoftwarePanel::checkForUpdates() { - std::system("pkill -SIGUSR1 -f selfdrive.updated"); + std::system("pkill -SIGUSR1 -f selfdrive.updated.updated"); } SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { @@ -36,7 +36,7 @@ SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { if (downloadBtn->text() == tr("CHECK")) { checkForUpdates(); } else { - std::system("pkill -SIGHUP -f selfdrive.updated"); + std::system("pkill -SIGHUP -f selfdrive.updated.updated"); } }); addItem(downloadBtn); diff --git a/selfdrive/updated.py b/selfdrive/updated/updated.py similarity index 100% rename from selfdrive/updated.py rename to selfdrive/updated/updated.py From 09e73f8fb6b681512b1adbe46b2d6e64f0f5f54f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20R=C4=85czy?= Date: Tue, 5 Mar 2024 00:04:28 +0100 Subject: [PATCH 073/599] webrtcd: allow empty bridge_services_out (#31694) * Test case * Add messaging only if services non empty * Fix webrtcd * Use parametrized_class * Bump to master teleoprtc --- system/webrtc/tests/test_webrtcd.py | 14 +++++++++++--- system/webrtc/webrtcd.py | 25 +++++++++++++++++-------- teleoprtc_repo | 2 +- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/system/webrtc/tests/test_webrtcd.py b/system/webrtc/tests/test_webrtcd.py index c31b63d02b..e5742dba07 100755 --- a/system/webrtc/tests/test_webrtcd.py +++ b/system/webrtc/tests/test_webrtcd.py @@ -11,8 +11,15 @@ from openpilot.system.webrtc.webrtcd import get_stream import aiortc from teleoprtc import WebRTCOfferBuilder +from parameterized import parameterized_class +@parameterized_class(("in_services", "out_services"), [ + (["testJoystick"], ["carState"]), + ([], ["carState"]), + (["testJoystick"], []), + ([], []), +]) class TestWebrtcdProc(unittest.IsolatedAsyncioTestCase): async def assertCompletesWithTimeout(self, awaitable, timeout=1): try: @@ -24,7 +31,7 @@ class TestWebrtcdProc(unittest.IsolatedAsyncioTestCase): async def test_webrtcd(self): mock_request = MagicMock() async def connect(offer): - body = {'sdp': offer.sdp, 'cameras': offer.video, 'bridge_services_in': [], 'bridge_services_out': ['carState']} + body = {'sdp': offer.sdp, 'cameras': offer.video, 'bridge_services_in': self.in_services, 'bridge_services_out': self.out_services} mock_request.json.side_effect = AsyncMock(return_value=body) response = await get_stream(mock_request) response_json = json.loads(response.text) @@ -33,7 +40,8 @@ class TestWebrtcdProc(unittest.IsolatedAsyncioTestCase): builder = WebRTCOfferBuilder(connect) builder.offer_to_receive_video_stream("road") builder.offer_to_receive_audio_stream() - builder.add_messaging() + if len(self.in_services) > 0 or len(self.out_services) > 0: + builder.add_messaging() stream = builder.stream() @@ -42,7 +50,7 @@ class TestWebrtcdProc(unittest.IsolatedAsyncioTestCase): self.assertTrue(stream.has_incoming_video_track("road")) self.assertTrue(stream.has_incoming_audio_track()) - self.assertTrue(stream.has_messaging_channel()) + self.assertEqual(stream.has_messaging_channel(), len(self.in_services) > 0 or len(self.out_services) > 0) video_track, audio_track = stream.get_incoming_video_track("road"), stream.get_incoming_audio_track() await self.assertCompletesWithTimeout(video_track.recv()) diff --git a/system/webrtc/webrtcd.py b/system/webrtc/webrtcd.py index 6c1370eae9..95c8ae337d 100755 --- a/system/webrtc/webrtcd.py +++ b/system/webrtc/webrtcd.py @@ -128,9 +128,14 @@ class StreamSession: self.stream = builder.stream() self.identifier = str(uuid.uuid4()) - self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services)) - self.incoming_bridge = CerealIncomingMessageProxy(messaging.PubMaster(incoming_services)) - self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge) + self.incoming_bridge: CerealIncomingMessageProxy | None = None + self.outgoing_bridge: CerealOutgoingMessageProxy | None = None + self.outgoing_bridge_runner: CerealProxyRunner | None = None + if len(incoming_services) > 0: + self.incoming_bridge = CerealIncomingMessageProxy(messaging.PubMaster(incoming_services)) + if len(outgoing_services) > 0: + self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services)) + self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge) self.audio_output: AudioOutputSpeaker | MediaBlackhole | None = None self.run_task: asyncio.Task | None = None @@ -152,6 +157,7 @@ class StreamSession: return await self.stream.start() async def message_handler(self, message: bytes): + assert self.incoming_bridge is not None try: self.incoming_bridge.send(message) except Exception as ex: @@ -161,10 +167,12 @@ class StreamSession: try: await self.stream.wait_for_connection() if self.stream.has_messaging_channel(): - self.stream.set_message_handler(self.message_handler) - channel = self.stream.get_messaging_channel() - self.outgoing_bridge_runner.proxy.add_channel(channel) - self.outgoing_bridge_runner.start() + if self.incoming_bridge is not None: + self.stream.set_message_handler(self.message_handler) + if self.outgoing_bridge_runner is not None: + channel = self.stream.get_messaging_channel() + self.outgoing_bridge_runner.proxy.add_channel(channel) + self.outgoing_bridge_runner.start() if self.stream.has_incoming_audio_track(): track = self.stream.get_incoming_audio_track(buffered=False) self.audio_output = self.audio_output_cls() @@ -181,7 +189,8 @@ class StreamSession: async def post_run_cleanup(self): await self.stream.stop() - self.outgoing_bridge_runner.stop() + if self.outgoing_bridge is not None: + self.outgoing_bridge_runner.stop() if self.audio_output: self.audio_output.stop() diff --git a/teleoprtc_repo b/teleoprtc_repo index 8489ac3c5a..ab2f09706e 160000 --- a/teleoprtc_repo +++ b/teleoprtc_repo @@ -1 +1 @@ -Subproject commit 8489ac3c5aa0b0e2fec397694f9005e2b5a613e4 +Subproject commit ab2f09706e8f64390e196f079ac69e67131b07f5 From deb79a9c443fa1fc1499e40a97757c7d8b6af735 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 4 Mar 2024 19:18:16 -0500 Subject: [PATCH 074/599] card: fix startup condition (#31698) fix default cc --- selfdrive/car/card.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index 2853ba9771..9231794a6c 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -31,7 +31,7 @@ class CarD: self.can_rcv_timeout_counter = 0 # conseuctive timeout count self.can_rcv_cum_timeout_counter = 0 # cumulative timeout count - self.CC_prev = car.CarState.new_message() + self.CC_prev = car.CarControl.new_message() self.last_actuators = None From 32fb58656a46dc428ec43f04f396aee994efd14e Mon Sep 17 00:00:00 2001 From: Michel Le Bihan Date: Tue, 5 Mar 2024 19:36:01 +0100 Subject: [PATCH 075/599] Only print keyboard help on poll start and unknown command (#31710) --- tools/sim/bridge/common.py | 4 ---- tools/sim/lib/keyboard_ctrl.py | 7 +++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/sim/bridge/common.py b/tools/sim/bridge/common.py index 2391df6651..78ddfa5aa6 100644 --- a/tools/sim/bridge/common.py +++ b/tools/sim/bridge/common.py @@ -13,7 +13,6 @@ from openpilot.selfdrive.car.honda.values import CruiseButtons from openpilot.tools.sim.lib.common import SimulatorState, World from openpilot.tools.sim.lib.simulated_car import SimulatedCar from openpilot.tools.sim.lib.simulated_sensors import SimulatedSensors -from openpilot.tools.sim.lib.keyboard_ctrl import KEYBOARD_HELP def rk_loop(function, hz, exit_event: threading.Event): @@ -74,9 +73,6 @@ class SimulatorBridge(ABC): def print_status(self): print( f""" -Keyboard Commands: -{KEYBOARD_HELP} - State: Ignition: {self.simulator_state.ignition} Engaged: {self.simulator_state.is_engaged} """) diff --git a/tools/sim/lib/keyboard_ctrl.py b/tools/sim/lib/keyboard_ctrl.py index 339f4ea6bb..ea255d9ce4 100644 --- a/tools/sim/lib/keyboard_ctrl.py +++ b/tools/sim/lib/keyboard_ctrl.py @@ -49,7 +49,12 @@ def getch() -> str: termios.tcsetattr(STDIN_FD, termios.TCSADRAIN, old_settings) return ch +def print_keyboard_help(): + print(f"Keyboard Commands:\n{KEYBOARD_HELP}") + def keyboard_poll_thread(q: 'Queue[str]'): + print_keyboard_help() + while True: c = getch() if c == '1': @@ -77,6 +82,8 @@ def keyboard_poll_thread(q: 'Queue[str]'): elif c == 'q': q.put("quit") break + else: + print_keyboard_help() def test(q: 'Queue[str]') -> NoReturn: while True: From 9d4d5f6077a4bb0c40eb91ec41154f7903761253 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 5 Mar 2024 14:02:02 -0500 Subject: [PATCH 076/599] torqued: use correct time from carOutput (#31712) fix timings --- selfdrive/locationd/torqued.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/locationd/torqued.py b/selfdrive/locationd/torqued.py index b49784d13f..06f9044738 100755 --- a/selfdrive/locationd/torqued.py +++ b/selfdrive/locationd/torqued.py @@ -161,6 +161,7 @@ class TorqueEstimator(ParameterEstimator): self.raw_points["carControl_t"].append(t + self.lag) self.raw_points["active"].append(msg.latActive) elif which == "carOutput": + self.raw_points["carOutput_t"].append(t + self.lag) self.raw_points["steer_torque"].append(-msg.actuatorsOutput.steer) elif which == "carState": self.raw_points["carState_t"].append(t + self.lag) @@ -173,7 +174,7 @@ class TorqueEstimator(ParameterEstimator): active = np.interp(np.arange(t - MIN_ENGAGE_BUFFER, t, DT_MDL), self.raw_points['carControl_t'], self.raw_points['active']).astype(bool) steer_override = np.interp(np.arange(t - MIN_ENGAGE_BUFFER, t, DT_MDL), self.raw_points['carState_t'], self.raw_points['steer_override']).astype(bool) vego = np.interp(t, self.raw_points['carState_t'], self.raw_points['vego']) - steer = np.interp(t, self.raw_points['carControl_t'], self.raw_points['steer_torque']) + steer = np.interp(t, self.raw_points['carOutput_t'], self.raw_points['steer_torque']) lateral_acc = (vego * yaw_rate) - (np.sin(roll) * ACCELERATION_DUE_TO_GRAVITY) if all(active) and (not any(steer_override)) and (vego > MIN_VEL) and (abs(steer) > STEER_MIN_THRESHOLD) and (abs(lateral_acc) <= LAT_ACC_THRESHOLD): self.filtered_points.add_point(float(steer), float(lateral_acc)) From 032c0878b8f15ffecd372bc12d8be66de2608358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20R=C4=85czy?= Date: Tue, 5 Mar 2024 21:14:50 +0100 Subject: [PATCH 077/599] webrtcd: ability to have multiple streams publishing same message (#31700) Use single PubMaster with dynamic services --- system/webrtc/webrtcd.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/system/webrtc/webrtcd.py b/system/webrtc/webrtcd.py index 95c8ae337d..51c86aacc6 100755 --- a/system/webrtc/webrtcd.py +++ b/system/webrtc/webrtcd.py @@ -102,7 +102,21 @@ class CerealProxyRunner: await asyncio.sleep(0.01) +class DynamicPubMaster(messaging.PubMaster): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.lock = asyncio.Lock() + + async def add_services_if_needed(self, services): + async with self.lock: + for service in services: + if service not in self.sock: + self.sock[service] = messaging.pub_sock(service) + + class StreamSession: + shared_pub_master = DynamicPubMaster([]) + def __init__(self, sdp: str, cameras: list[str], incoming_services: list[str], outgoing_services: list[str], debug_mode: bool = False): from aiortc.mediastreams import VideoStreamTrack, AudioStreamTrack from aiortc.contrib.media import MediaBlackhole @@ -129,10 +143,11 @@ class StreamSession: self.identifier = str(uuid.uuid4()) self.incoming_bridge: CerealIncomingMessageProxy | None = None + self.incoming_bridge_services = incoming_services self.outgoing_bridge: CerealOutgoingMessageProxy | None = None self.outgoing_bridge_runner: CerealProxyRunner | None = None if len(incoming_services) > 0: - self.incoming_bridge = CerealIncomingMessageProxy(messaging.PubMaster(incoming_services)) + self.incoming_bridge = CerealIncomingMessageProxy(self.shared_pub_master) if len(outgoing_services) > 0: self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services)) self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge) @@ -168,6 +183,7 @@ class StreamSession: await self.stream.wait_for_connection() if self.stream.has_messaging_channel(): if self.incoming_bridge is not None: + await self.shared_pub_master.add_services_if_needed(self.incoming_bridge_services) self.stream.set_message_handler(self.message_handler) if self.outgoing_bridge_runner is not None: channel = self.stream.get_messaging_channel() From 638aaa9e53459127a0a1bbd757f85ef1ae16098d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 15:10:58 -0800 Subject: [PATCH 078/599] Platform configs: move tire stiffness into config (#31678) * first one to open PR * mazda * oh it is * fix gm car specs and create MazdaCarSpecs * fix * do honda * ruff --- selfdrive/car/gm/interface.py | 7 ------- selfdrive/car/gm/values.py | 31 +++++++++++++++++------------- selfdrive/car/honda/interface.py | 15 --------------- selfdrive/car/honda/values.py | 33 +++++++++++++++++--------------- selfdrive/car/mazda/interface.py | 1 - selfdrive/car/mazda/values.py | 13 +++++++++---- 6 files changed, 45 insertions(+), 55 deletions(-) diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index e0dde4d0e9..76f6a6b0a6 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -145,15 +145,12 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.00]] ret.lateralTuning.pid.kf = 0.00004 # full torque for 20 deg at 80mph means 0.00007818594 ret.steerActuatorDelay = 0.1 # Default delay, not measured yet - ret.tireStiffnessFactor = 0.444 # not optimized yet ret.steerLimitTimer = 0.4 ret.radarTimeStep = 0.0667 # GM radar runs at 15Hz instead of standard 20Hz ret.longitudinalActuatorDelayUpperBound = 0.5 # large delay to initially start braking if candidate == CAR.VOLT: - ret.tireStiffnessFactor = 0.469 # Stock Michelin Energy Saver A/S, LiveParameters - ret.lateralTuning.pid.kpBP = [0., 40.] ret.lateralTuning.pid.kpV = [0., 0.17] ret.lateralTuning.pid.kiBP = [0.] @@ -175,7 +172,6 @@ class CarInterface(CarInterfaceBase): elif candidate in (CAR.ESCALADE_ESV, CAR.ESCALADE_ESV_2019): ret.minEnableSpeed = -1. # engage speed is decided by pcm - ret.tireStiffnessFactor = 1.0 if candidate == CAR.ESCALADE_ESV: ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[10., 41.0], [10., 41.0]] @@ -186,12 +182,10 @@ class CarInterface(CarInterfaceBase): CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) elif candidate == CAR.BOLT_EUV: - ret.tireStiffnessFactor = 1.0 ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) elif candidate == CAR.SILVERADO: - ret.tireStiffnessFactor = 1.0 # On the Bolt, the ECM and camera independently check that you are either above 5 kph or at a stop # with foot on brake to allow engagement, but this platform only has that check in the camera. # TODO: check if this is split by EV/ICE with more platforms in the future @@ -203,7 +197,6 @@ class CarInterface(CarInterfaceBase): CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) elif candidate == CAR.TRAILBLAZER: - ret.tireStiffnessFactor = 1.0 ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index e3414df2bf..bf3c8622c5 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -79,6 +79,11 @@ class GMCarInfo(CarInfo): self.footnotes.append(Footnote.OBD_II) +@dataclass(frozen=True, kw_only=True) +class GMCarSpecs(CarSpecs): + tireStiffnessFactor: float = 0.444 # not optimized yet + + @dataclass class GMPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('gm_global_a_powertrain_generated', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis')) @@ -88,47 +93,47 @@ class CAR(Platforms): HOLDEN_ASTRA = GMPlatformConfig( "HOLDEN ASTRA RS-V BK 2017", GMCarInfo("Holden Astra 2017"), - CarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), + GMCarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), ) VOLT = GMPlatformConfig( "CHEVROLET VOLT PREMIER 2017", GMCarInfo("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ"), - CarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45), + GMCarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45, tireStiffnessFactor=0.469), ) CADILLAC_ATS = GMPlatformConfig( "CADILLAC ATS Premium Performance 2018", GMCarInfo("Cadillac ATS Premium Performance 2018"), - CarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), + GMCarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), ) MALIBU = GMPlatformConfig( "CHEVROLET MALIBU PREMIER 2017", GMCarInfo("Chevrolet Malibu Premier 2017"), - CarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), + GMCarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), ) ACADIA = GMPlatformConfig( "GMC ACADIA DENALI 2018", GMCarInfo("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo"), - CarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), + GMCarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), ) BUICK_LACROSSE = GMPlatformConfig( "BUICK LACROSSE 2017", GMCarInfo("Buick LaCrosse 2017-19", "Driver Confidence Package 2"), - CarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), + GMCarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), ) BUICK_REGAL = GMPlatformConfig( "BUICK REGAL ESSENCE 2018", GMCarInfo("Buick Regal Essence 2018"), - CarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), + GMCarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), ) ESCALADE = GMPlatformConfig( "CADILLAC ESCALADE 2017", GMCarInfo("Cadillac Escalade 2017", "Driver Assist Package"), - CarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), + GMCarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), ) ESCALADE_ESV = GMPlatformConfig( "CADILLAC ESCALADE ESV 2016", GMCarInfo("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS"), - CarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3), + GMCarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3, tireStiffnessFactor=1.0), ) ESCALADE_ESV_2019 = GMPlatformConfig( "CADILLAC ESCALADE ESV 2019", @@ -141,7 +146,7 @@ class CAR(Platforms): GMCarInfo("Chevrolet Bolt EUV 2022-23", "Premier or Premier Redline Trim without Super Cruise Package", video_link="https://youtu.be/xvwzGMUA210"), GMCarInfo("Chevrolet Bolt EV 2022-23", "2LT Trim with Adaptive Cruise Control Package"), ], - CarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4), + GMCarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) SILVERADO = GMPlatformConfig( "CHEVROLET SILVERADO 1500 2020", @@ -149,17 +154,17 @@ class CAR(Platforms): GMCarInfo("Chevrolet Silverado 1500 2020-21", "Safety Package II"), GMCarInfo("GMC Sierra 1500 2020-21", "Driver Alert Package II", video_link="https://youtu.be/5HbNoBLzRwE"), ], - CarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3), + GMCarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3, tireStiffnessFactor=1.0), ) EQUINOX = GMPlatformConfig( "CHEVROLET EQUINOX 2019", GMCarInfo("Chevrolet Equinox 2019-22"), - CarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), + GMCarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), ) TRAILBLAZER = GMPlatformConfig( "CHEVROLET TRAILBLAZER 2021", GMCarInfo("Chevrolet Trailblazer 2021-22"), - CarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4), + GMCarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 9c39c4694f..f791d4b639 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -111,7 +111,6 @@ class CarInterface(CarInterfaceBase): elif candidate == CAR.ACCORD: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.8467 if eps_modified: ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.3], [0.09]] @@ -120,12 +119,10 @@ class CarInterface(CarInterfaceBase): elif candidate == CAR.ACURA_ILX: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.72 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] elif candidate in (CAR.CRV, CAR.CRV_EU): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 1000], [0, 1000]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] ret.wheelSpeedFactor = 1.025 @@ -139,28 +136,23 @@ class CarInterface(CarInterfaceBase): else: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.64], [0.192]] - ret.tireStiffnessFactor = 0.677 ret.wheelSpeedFactor = 1.025 elif candidate == CAR.CRV_HYBRID: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.677 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] ret.wheelSpeedFactor = 1.025 elif candidate == CAR.FIT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.75 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]] elif candidate == CAR.FREED: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] - ret.tireStiffnessFactor = 0.75 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]] elif candidate in (CAR.HRV, CAR.HRV_3G): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] - ret.tireStiffnessFactor = 0.5 if candidate == CAR.HRV: ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.16], [0.025]] ret.wheelSpeedFactor = 1.025 @@ -168,17 +160,14 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] # TODO: can probably use some tuning elif candidate == CAR.ACURA_RDX: - ret.tireStiffnessFactor = 0.444 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: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.06]] - ret.tireStiffnessFactor = 0.677 elif candidate in (CAR.ODYSSEY, CAR.ODYSSEY_CHN): - ret.tireStiffnessFactor = 0.82 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.28], [0.08]] if candidate == CAR.ODYSSEY_CHN: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 32767], [0, 32767]] # TODO: determine if there is a dead zone at the top end @@ -187,22 +176,18 @@ class CarInterface(CarInterfaceBase): elif candidate == CAR.PILOT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]] elif candidate == CAR.RIDGELINE: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]] elif candidate == CAR.INSIGHT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.82 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] elif candidate == CAR.HONDA_E: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.82 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] # TODO: can probably use some tuning else: diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index a6b7d26567..4bcbf00735 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -117,7 +117,8 @@ class CAR(Platforms): HondaCarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), ], - CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39), # steerRatio: 11.82 is spec end-to-end + # steerRatio: 11.82 is spec end-to-end + CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39, tireStiffnessFactor=0.8467), dbc_dict('honda_accord_2018_can_generated', None), ) CIVIC_BOSCH = HondaBoschPlatformConfig( @@ -149,40 +150,42 @@ class CAR(Platforms): CRV_5G = HondaBoschPlatformConfig( "HONDA CR-V 2017", HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), - CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41), # steerRatio: 12.3 is spec end-to-end + # steerRatio: 12.3 is spec end-to-end + CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), flags=HondaFlags.BOSCH_ALT_BRAKE, ) CRV_HYBRID = HondaBoschPlatformConfig( "HONDA CR-V HYBRID 2019", HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS), - CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41), # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end + # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end + CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_accord_2018_can_generated', None), ) HRV_3G = HondaBoschPlatformConfig( "HONDA HR-V 2023", HondaCarInfo("Honda HR-V 2023", "All"), - CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41), + CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41, tireStiffnessFactor=0.5), dbc_dict('honda_civic_ex_2022_can_generated', None), flags=HondaFlags.BOSCH_RADARLESS | HondaFlags.BOSCH_ALT_BRAKE, ) ACURA_RDX_3G = HondaBoschPlatformConfig( "ACURA RDX 2020", HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41), # as spec + CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), # as spec dbc_dict('acura_rdx_2020_can_generated', None), flags=HondaFlags.BOSCH_ALT_BRAKE, ) INSIGHT = HondaBoschPlatformConfig( "HONDA INSIGHT 2019", HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39), # as spec + CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39, tireStiffnessFactor=0.82), # as spec dbc_dict('honda_insight_ex_2019_can_generated', None), ) HONDA_E = HondaBoschPlatformConfig( "HONDA E 2020", HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71), + CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71, tireStiffnessFactor=0.82), dbc_dict('acura_rdx_2020_can_generated', None), ) @@ -190,14 +193,14 @@ class CAR(Platforms): ACURA_ILX = HondaNidecPlatformConfig( "ACURA ILX 2016", HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), - CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37), # 15.3 is spec end-to-end + CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37, tireStiffnessFactor=0.72), # 15.3 is spec end-to-end dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV = HondaNidecPlatformConfig( "HONDA CR-V 2016", HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS), - CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41), # as spec + CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41, tireStiffnessFactor=0.444), # as spec dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) @@ -211,14 +214,14 @@ class CAR(Platforms): FIT = HondaNidecPlatformConfig( "HONDA FIT 2018", HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS), - CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39), + CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FREED = HondaNidecPlatformConfig( "HONDA FREED 2020", HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS), - CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39), # mostly copied from FIT + CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), # mostly copied from FIT dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) @@ -232,7 +235,7 @@ class CAR(Platforms): ODYSSEY = HondaNidecPlatformConfig( "HONDA ODYSSEY 2018", HondaCarInfo("Honda Odyssey 2018-20"), - CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41), + CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41, tireStiffnessFactor=0.82), dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_PCM_ACCEL, ) @@ -246,7 +249,7 @@ class CAR(Platforms): ACURA_RDX = HondaNidecPlatformConfig( "ACURA RDX 2018", HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), - CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38), # as spec + CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) @@ -256,14 +259,14 @@ class CAR(Platforms): HondaCarInfo("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), HondaCarInfo("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), ], - CarSpecs(mass=4278 * CV.LB_TO_KG, wheelbase=2.86, centerToFrontRatio=0.428, steerRatio=16.0), # as spec + CarSpecs(mass=4278 * CV.LB_TO_KG, wheelbase=2.86, centerToFrontRatio=0.428, steerRatio=16.0, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) RIDGELINE = HondaNidecPlatformConfig( "HONDA RIDGELINE 2017", HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS), - CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59), # as spec + CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index a138318b1a..85be0166ce 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -20,7 +20,6 @@ class CarInterface(CarInterfaceBase): ret.steerActuatorDelay = 0.1 ret.steerLimitTimer = 0.8 - ret.tireStiffnessFactor = 0.70 # not optimized yet CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index f45e80c119..d8f5aa85dd 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -32,6 +32,11 @@ class MazdaCarInfo(CarInfo): car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda])) +@dataclass(frozen=True, kw_only=True) +class MazdaCarSpecs(CarSpecs): + tireStiffnessFactor: float = 0.7 # not optimized yet + + class MazdaFlags(IntFlag): # Static flags # Gen 1 hardware: same CAN messages and same camera @@ -48,22 +53,22 @@ class CAR(Platforms): CX5 = MazdaPlatformConfig( "MAZDA CX-5", MazdaCarInfo("Mazda CX-5 2017-21"), - CarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) + MazdaCarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) ) CX9 = MazdaPlatformConfig( "MAZDA CX-9", MazdaCarInfo("Mazda CX-9 2016-20"), - CarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) + MazdaCarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) ) MAZDA3 = MazdaPlatformConfig( "MAZDA 3", MazdaCarInfo("Mazda 3 2017-18"), - CarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) + MazdaCarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) ) MAZDA6 = MazdaPlatformConfig( "MAZDA 6", MazdaCarInfo("Mazda 6 2017-20"), - CarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) + MazdaCarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) ) CX9_2021 = MazdaPlatformConfig( "MAZDA CX-9 2021", From fb81cfe3c41fabb33effa4027bb5eed95ced9f19 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Tue, 5 Mar 2024 23:33:39 +0000 Subject: [PATCH 079/599] fw_versions: add more type hints (#31577) * fw_versions: add more type hints * cleanup * fixes * more implicit optional * Update selfdrive/car/fw_versions.py * backslash is unnecessary inside parenthesis --------- Co-authored-by: Shane Smiskol --- selfdrive/car/fw_versions.py | 58 ++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/selfdrive/car/fw_versions.py b/selfdrive/car/fw_versions.py index 7673814195..c200528ca6 100755 --- a/selfdrive/car/fw_versions.py +++ b/selfdrive/car/fw_versions.py @@ -1,19 +1,20 @@ #!/usr/bin/env python3 from collections import defaultdict -from typing import Any, TypeVar from collections.abc import Iterator +from typing import Any, Protocol, TypeVar + from tqdm import tqdm import capnp import panda.python.uds as uds from cereal import car from openpilot.common.params import Params -from openpilot.selfdrive.car.ecu_addrs import get_ecu_addrs -from openpilot.selfdrive.car.fw_query_definitions import AddrType, EcuAddrBusType, FwQueryConfig -from openpilot.selfdrive.car.interfaces import get_interface_attr -from openpilot.selfdrive.car.fingerprints import FW_VERSIONS -from openpilot.selfdrive.car.isotp_parallel_query import IsoTpParallelQuery from openpilot.common.swaglog import cloudlog +from openpilot.selfdrive.car.ecu_addrs import get_ecu_addrs +from openpilot.selfdrive.car.fingerprints import FW_VERSIONS +from openpilot.selfdrive.car.fw_query_definitions import AddrType, EcuAddrBusType, FwQueryConfig, LiveFwVersions, OfflineFwVersions +from openpilot.selfdrive.car.interfaces import get_interface_attr +from openpilot.selfdrive.car.isotp_parallel_query import IsoTpParallelQuery Ecu = car.CarParams.Ecu ESSENTIAL_ECUS = [Ecu.engine, Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.vsa] @@ -38,8 +39,7 @@ def is_brand(brand: str, filter_brand: str | None) -> bool: return filter_brand is None or brand == filter_brand -def build_fw_dict(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], - filter_brand: str = None) -> dict[AddrType, set[bytes]]: +def build_fw_dict(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], filter_brand: str = None) -> dict[AddrType, set[bytes]]: fw_versions_dict: defaultdict[AddrType, set[bytes]] = defaultdict(set) for fw in fw_versions: if is_brand(fw.brand, filter_brand) and not fw.logging: @@ -48,7 +48,12 @@ def build_fw_dict(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], return dict(fw_versions_dict) -def match_fw_to_car_fuzzy(live_fw_versions, match_brand=None, log=True, exclude=None): +class MatchFwToCar(Protocol): + def __call__(self, live_fw_versions: LiveFwVersions, match_brand: str = None, log: bool = True) -> set[str]: + ... + + +def match_fw_to_car_fuzzy(live_fw_versions: LiveFwVersions, match_brand: str = None, log: bool = True, exclude: str = None) -> set[str]: """Do a fuzzy FW match. This function will return a match, and the number of firmware version that were matched uniquely to that specific car. If multiple ECUs uniquely match to different cars the match is rejected.""" @@ -73,7 +78,7 @@ def match_fw_to_car_fuzzy(live_fw_versions, match_brand=None, log=True, exclude= all_fw_versions[(addr[1], addr[2], f)].append(candidate) matched_ecus = set() - candidate = None + match: str | None = None for addr, versions in live_fw_versions.items(): ecu_key = (addr[0], addr[1]) for version in versions: @@ -82,23 +87,23 @@ def match_fw_to_car_fuzzy(live_fw_versions, match_brand=None, log=True, exclude= if len(candidates) == 1: matched_ecus.add(ecu_key) - if candidate is None: - candidate = candidates[0] + if match is None: + match = candidates[0] # We uniquely matched two different cars. No fuzzy match possible - elif candidate != candidates[0]: + elif match != candidates[0]: return set() # Note that it is possible to match to a candidate without all its ECUs being present # if there are enough matches. FIXME: parameterize this or require all ECUs to exist like exact matching - if len(matched_ecus) >= 2: + if match and len(matched_ecus) >= 2: if log: - cloudlog.error(f"Fingerprinted {candidate} using fuzzy match. {len(matched_ecus)} matching ECUs") - return {candidate} + cloudlog.error(f"Fingerprinted {match} using fuzzy match. {len(matched_ecus)} matching ECUs") + return {match} else: return set() -def match_fw_to_car_exact(live_fw_versions, match_brand=None, log=True, extra_fw_versions=None) -> set[str]: +def match_fw_to_car_exact(live_fw_versions: LiveFwVersions, match_brand: str = None, log: bool = True, extra_fw_versions: dict = None) -> set[str]: """Do an exact FW match. Returns all cars that match the given FW versions for a list of "essential" ECUs. If an ECU is not considered essential the FW version can be missing to get a fingerprint, but if it's present it @@ -139,9 +144,10 @@ def match_fw_to_car_exact(live_fw_versions, match_brand=None, log=True, extra_fw return set(candidates.keys()) - invalid -def match_fw_to_car(fw_versions, allow_exact=True, allow_fuzzy=True, log=True): +def match_fw_to_car(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], allow_exact: bool = True, allow_fuzzy: bool = True, + log: bool = True) -> tuple[bool, set[str]]: # Try exact matching first - exact_matches = [] + exact_matches: list[tuple[bool, MatchFwToCar]] = [] if allow_exact: exact_matches = [(True, match_fw_to_car_exact)] if allow_fuzzy: @@ -149,7 +155,7 @@ def match_fw_to_car(fw_versions, allow_exact=True, allow_fuzzy=True, log=True): for exact_match, match_func in exact_matches: # For each brand, attempt to fingerprint using all FW returned from its queries - matches = set() + matches: set[str] = set() for brand in VERSIONS.keys(): fw_versions_dict = build_fw_dict(fw_versions, filter_brand=brand) matches |= match_func(fw_versions_dict, match_brand=brand, log=log) @@ -165,12 +171,12 @@ def match_fw_to_car(fw_versions, allow_exact=True, allow_fuzzy=True, log=True): return True, set() -def get_present_ecus(logcan, sendcan, num_pandas=1) -> set[EcuAddrBusType]: +def get_present_ecus(logcan, sendcan, num_pandas: int = 1) -> set[EcuAddrBusType]: params = Params() # queries are split by OBD multiplexing mode queries: dict[bool, list[list[EcuAddrBusType]]] = {True: [], False: []} parallel_queries: dict[bool, list[EcuAddrBusType]] = {True: [], False: []} - responses = set() + responses: set[EcuAddrBusType] = set() for brand, config, r in REQUESTS: # Skip query if no panda available @@ -231,8 +237,8 @@ def set_obd_multiplexing(params: Params, obd_multiplexing: bool): cloudlog.warning("OBD multiplexing set successfully") -def get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs, timeout=0.1, num_pandas=1, debug=False, progress=False) -> \ - list[capnp.lib.capnp._DynamicStructBuilder]: +def get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs: set[EcuAddrBusType], timeout: float = 0.1, num_pandas: int = 1, + debug: bool = False, progress: bool = False) -> list[capnp.lib.capnp._DynamicStructBuilder]: """Queries for FW versions ordering brands by likelihood, breaks when exact match is found""" all_car_fw = [] @@ -254,8 +260,8 @@ def get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs, timeout=0.1, num_pand return all_car_fw -def get_fw_versions(logcan, sendcan, query_brand=None, extra=None, timeout=0.1, num_pandas=1, debug=False, progress=False) -> \ - list[capnp.lib.capnp._DynamicStructBuilder]: +def get_fw_versions(logcan, sendcan, query_brand: str = None, extra: OfflineFwVersions = None, timeout: float = 0.1, num_pandas: int = 1, + debug: bool = False, progress: bool = False) -> list[capnp.lib.capnp._DynamicStructBuilder]: versions = VERSIONS.copy() params = Params() From ecce4663d3f90d69c4592d3496de650c6714a75f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20R=C4=85czy?= Date: Wed, 6 Mar 2024 01:45:47 +0100 Subject: [PATCH 080/599] RadarInterfaceBase: remove no_radar_sleep field (#31715) Remove no_radar_sleep field from base radar interface --- selfdrive/car/interfaces.py | 1 - 1 file changed, 1 deletion(-) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 9a78eea856..9e9e668981 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -334,7 +334,6 @@ class RadarInterfaceBase(ABC): self.delay = 0 self.radar_ts = CP.radarTimeStep self.frame = 0 - self.no_radar_sleep = 'NO_RADAR_SLEEP' in os.environ def update(self, can_strings): self.frame += 1 From ccda4119a8ce539c475a820ae53600b048599088 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 17:49:18 -0800 Subject: [PATCH 081/599] Hyundai Azera: allow fingerprinting without comma power (#31717) * do azera * azera is same * need to do this --- selfdrive/car/hyundai/values.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index bf0aa58999..babbc189be 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -650,10 +650,16 @@ def match_fw_to_car_fuzzy(live_fw_versions, offline_fw_versions) -> set[str]: expected_dates = {date for _, date in codes if date is not None} # Found platform codes & dates - codes = get_platform_codes(live_fw_versions.get(addr, set())) + found_versions = live_fw_versions.get(addr, set()) + codes = get_platform_codes(found_versions) found_platform_codes = {code for code, _ in codes} found_dates = {date for _, date in codes if date is not None} + # Some models are missing ECUs + if not len(found_versions) and candidate in FW_QUERY_CONFIG.non_essential_ecus.get(ecu[0], []): + valid_found_ecus.add(addr) + continue + # Check platform code + part number matches for any found versions if not any(found_platform_code in expected_platform_codes for found_platform_code in found_platform_codes): break @@ -801,6 +807,13 @@ FW_QUERY_CONFIG = FwQueryConfig( obd_multiplexing=False, ), ], + # We lose these ECUs without the comma power on these cars. + # Note that we still attempt to match with them when they are present + non_essential_ecus={ + Ecu.eps: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], # FIXME: EPS responds on a few cars from PT + Ecu.transmission: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], + Ecu.engine: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], + }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms (Ecu.parkingAdas, 0x7b1, None), # ADAS Parking ECU (may exist on all platforms) From 1ffc58a69a94efd70bf215bc9a324f17513bec85 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 17:51:13 -0800 Subject: [PATCH 082/599] Revert "Hyundai Azera: allow fingerprinting without comma power" (#31718) Revert "Hyundai Azera: allow fingerprinting without comma power (#31717)" This reverts commit ccda4119a8ce539c475a820ae53600b048599088. --- selfdrive/car/hyundai/values.py | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index babbc189be..bf0aa58999 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -650,16 +650,10 @@ def match_fw_to_car_fuzzy(live_fw_versions, offline_fw_versions) -> set[str]: expected_dates = {date for _, date in codes if date is not None} # Found platform codes & dates - found_versions = live_fw_versions.get(addr, set()) - codes = get_platform_codes(found_versions) + codes = get_platform_codes(live_fw_versions.get(addr, set())) found_platform_codes = {code for code, _ in codes} found_dates = {date for _, date in codes if date is not None} - # Some models are missing ECUs - if not len(found_versions) and candidate in FW_QUERY_CONFIG.non_essential_ecus.get(ecu[0], []): - valid_found_ecus.add(addr) - continue - # Check platform code + part number matches for any found versions if not any(found_platform_code in expected_platform_codes for found_platform_code in found_platform_codes): break @@ -807,13 +801,6 @@ FW_QUERY_CONFIG = FwQueryConfig( obd_multiplexing=False, ), ], - # We lose these ECUs without the comma power on these cars. - # Note that we still attempt to match with them when they are present - non_essential_ecus={ - Ecu.eps: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], # FIXME: EPS responds on a few cars from PT - Ecu.transmission: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], - Ecu.engine: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], - }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms (Ecu.parkingAdas, 0x7b1, None), # ADAS Parking ECU (may exist on all platforms) From 2d2695cd6e474f1d2c084f912303374dfa93b5bc Mon Sep 17 00:00:00 2001 From: MJ Kim Date: Wed, 6 Mar 2024 11:00:39 +0900 Subject: [PATCH 083/599] Hyundai: AZERA_HEV_6TH_GEN (Update fingerprints.py) (#31684) * Update fingerprints.py Hyundai AZERA_HEV_6TH_GEN * no new CAN fingerprints * no crnr rdr * Update selfdrive/car/hyundai/fingerprints.py --------- Co-authored-by: Shane Smiskol --- selfdrive/car/hyundai/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index d1fc1faabb..f23e173653 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -100,15 +100,18 @@ FW_VERSIONS = { CAR.AZERA_HEV_6TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IGH MFC AT KOR LHD 1.00 1.00 99211-G8000 180903', + b'\xf1\x00IGH MFC AT KOR LHD 1.00 1.01 99211-G8000 181109', b'\xf1\x00IGH MFC AT KOR LHD 1.00 1.02 99211-G8100 191029', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00IG MDPS C 1.00 1.00 56310M9600\x00 4IHSC100', b'\xf1\x00IG MDPS C 1.00 1.01 56310M9350\x00 4IH8C101', + b'\xf1\x00IG MDPS C 1.00 1.02 56310M9350\x00 4IH8C102', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00IGhe SCC FHCUP 1.00 1.00 99110-M9100 ', b'\xf1\x00IGhe SCC FHCUP 1.00 1.01 99110-M9000 ', + b'\xf1\x00IGhe SCC FHCUP 1.00 1.02 99110-M9000 ', ], (Ecu.transmission, 0x7e1, None): [ b'\xf1\x006T7N0_C2\x00\x006T7Q2051\x00\x00TIG2H24KA2\x12@\x11\xb7', From 6919c3744563e0c24acfd7395fdf297d3152d970 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 18:00:47 -0800 Subject: [PATCH 084/599] Reapply "Hyundai Azera: allow fingerprinting without comma power (#31717)" (#31719) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "Revert "Hyundai Azera: allow fingerprinting without comma power" (#31…" This reverts commit 1ffc58a69a94efd70bf215bc9a324f17513bec85. * we should get EPS * add EPS to non-logging can 0 query --- selfdrive/car/hyundai/values.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index bf0aa58999..ec4dadbcfc 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -731,7 +731,7 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [HYUNDAI_VERSION_REQUEST_LONG], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.fwdCamera, Ecu.fwdRadar, Ecu.cornerRadar, Ecu.hvac], + whitelist_ecus=[Ecu.fwdCamera, Ecu.fwdRadar, Ecu.cornerRadar, Ecu.hvac, Ecu.eps], bus=0, auxiliary=True, ), @@ -801,6 +801,12 @@ FW_QUERY_CONFIG = FwQueryConfig( obd_multiplexing=False, ), ], + # We lose these ECUs without the comma power on these cars. + # Note that we still attempt to match with them when they are present + non_essential_ecus={ + Ecu.transmission: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], + Ecu.engine: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], + }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms (Ecu.parkingAdas, 0x7b1, None), # ADAS Parking ECU (may exist on all platforms) From 95a80fd2cd326c9dba3cbbfc5708ef284aec78c6 Mon Sep 17 00:00:00 2001 From: noname314 Date: Wed, 6 Mar 2024 11:08:32 +0900 Subject: [PATCH 085/599] HKG: Add FW versions and Enable Radar Tracks for KOR Sonata DN8 Hybrid 2020 (#31371) * HKG: Add FW versions for KOR Sonata DN8 Hybrid 2020 * HKG: Enable radar tracks for KOR Sonata DN8 Hybrid 2020 * rm extra --------- Co-authored-by: Shane Smiskol --- selfdrive/car/hyundai/fingerprints.py | 5 +++++ selfdrive/debug/hyundai_enable_radar_points.py | 3 +++ 2 files changed, 8 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index f23e173653..59130e3e35 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1479,11 +1479,13 @@ FW_VERSIONS = { CAR.SONATA_HYBRID: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DNhe SCC F-CUP 1.00 1.02 99110-L5000 ', + b'\xf1\x00DNhe SCC FHCUP 1.00 1.00 99110-L5000 ', b'\xf1\x00DNhe SCC FHCUP 1.00 1.02 99110-L5000 ', b'\xf1\x8799110L5000\xf1\x00DNhe SCC F-CUP 1.00 1.02 99110-L5000 ', b'\xf1\x8799110L5000\xf1\x00DNhe SCC FHCUP 1.00 1.02 99110-L5000 ', ], (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L5000 4DNHC101', b'\xf1\x00DN8 MDPS C 1.00 1.03 56310L5450\x00 4DNHC104', b'\xf1\x8756310-L5450\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102', b'\xf1\x8756310-L5450\xf1\x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103', @@ -1491,12 +1493,14 @@ FW_VERSIONS = { b'\xf1\x8756310L5450\x00\xf1\x00DN8 MDPS C 1.00 1.03 56310L5450\x00 4DNHC104', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00DN8HMFC AT KOR LHD 1.00 1.03 99211-L1000 190705', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.04 99211-L1000 191016', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.05 99211-L1000 201109', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.06 99211-L1000 210325', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.07 99211-L1000 211223', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x00PSBG2314 E07\x00\x00\x00\x00\x00\x00\x00TDN2H20KA5\xba\x82\xc7\xc3', b'\xf1\x00PSBG2323 E09\x00\x00\x00\x00\x00\x00\x00TDN2H20SA5\x97R\x88\x9e', b'\xf1\x00PSBG2333 E14\x00\x00\x00\x00\x00\x00\x00TDN2H20SA6N\xc2\xeeW', b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TDN2H20SA7\x1a3\xf9\xab', @@ -1506,6 +1510,7 @@ FW_VERSIONS = { ], (Ecu.engine, 0x7e0, None): [ b'\xf1\x87391062J002', + b'\xf1\x87391162J011', b'\xf1\x87391162J012', b'\xf1\x87391162J013', b'\xf1\x87391162J014', diff --git a/selfdrive/debug/hyundai_enable_radar_points.py b/selfdrive/debug/hyundai_enable_radar_points.py index 7735391f4f..e5cae0d470 100755 --- a/selfdrive/debug/hyundai_enable_radar_points.py +++ b/selfdrive/debug/hyundai_enable_radar_points.py @@ -36,6 +36,9 @@ SUPPORTED_FW_VERSIONS = { default_config=b"\x00\x00\x00\x01\x00\x00", tracks_enabled=b"\x00\x00\x00\x01\x00\x01"), # 2021 SONATA HYBRID + b"DNhe SCC FHCUP 1.00 1.00 99110-L5000\x19\x04&\x13' ": ConfigValues( + default_config=b"\x00\x00\x00\x01\x00\x00", + tracks_enabled=b"\x00\x00\x00\x01\x00\x01"), b"DNhe SCC FHCUP 1.00 1.02 99110-L5000 \x01#\x15# ": ConfigValues( default_config=b"\x00\x00\x00\x01\x00\x00", tracks_enabled=b"\x00\x00\x00\x01\x00\x01"), From 9f5d316c7a7e57a329789f1ef8ea026e2648cf32 Mon Sep 17 00:00:00 2001 From: Saber <81108166+Saber422@users.noreply.github.com> Date: Wed, 6 Mar 2024 11:50:06 +0800 Subject: [PATCH 086/599] VW MQB: Add FW for 2023 Karoq (#30713) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * VW MQB: Add FW for 2023 Karoq route name:9c3d97394a78e872|2023-12-12--14-39-47--6 * add to fp --------- Co-authored-by: Shane Smiskol --- selfdrive/car/volkswagen/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index d2c85d0fc5..bf962db439 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -949,6 +949,7 @@ FW_VERSIONS = { }, CAR.SKODA_KAROQ_MK1: { (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8705E906013CL\xf1\x892541', b'\xf1\x8705E906013H \xf1\x892407', b'\xf1\x8705E906018P \xf1\x895472', b'\xf1\x8705E906018P \xf1\x896020', @@ -969,6 +970,7 @@ FW_VERSIONS = { b'\xf1\x875Q0910143B \xf1\x892201\xf1\x82\x0563T6090500', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100500', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100700', + b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100600', ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x872Q0907572AA\xf1\x890396', From 5bb223a7bf0629fc48aee7c395f08da3c7364cdf Mon Sep 17 00:00:00 2001 From: dgcntrk <35061839+dgcntrk@users.noreply.github.com> Date: Tue, 5 Mar 2024 20:59:55 -0700 Subject: [PATCH 087/599] Hyundai: add Tucson 2022 PHEV camera FW version (#31408) * Update fingerprints.py Hyundai Tucson 2022 phev * Apply suggestions from code review * format --------- Co-authored-by: Shane Smiskol --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 59130e3e35..cc3ac3630b 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1578,6 +1578,7 @@ FW_VERSIONS = { }, CAR.TUCSON_4TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00NX4 FR_CMR AT CAN LHD 1.00 1.01 99211-N9100 14A', b'\xf1\x00NX4 FR_CMR AT EUR LHD 1.00 1.00 99211-N9220 14K', b'\xf1\x00NX4 FR_CMR AT EUR LHD 1.00 2.02 99211-N9000 14E', b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-N9210 14G', From 8958dbaa09830f4567600855dfc147ddc4a589a2 Mon Sep 17 00:00:00 2001 From: gkiss1977 <78383776+gkiss1977@users.noreply.github.com> Date: Wed, 6 Mar 2024 05:03:57 +0100 Subject: [PATCH 088/599] Added KIA_EV EU EPS fingerprint (#30937) Co-authored-by: Gabriel Kiss --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index cc3ac3630b..c58bbd283e 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1094,6 +1094,7 @@ FW_VERSIONS = { b'\xf1\x00OS MDPS C 1.00 1.03 56310/K4550 4OEDC103', b'\xf1\x00OS MDPS C 1.00 1.04 56310K4000\x00 4OEDC104', b'\xf1\x00OS MDPS C 1.00 1.04 56310K4050\x00 4OEDC104', + b'\xf1\x00OS MDPS C 1.00 1.04 56310-XX000 4OEDC104', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00OSev SCC F-CUP 1.00 1.00 99110-K4000 ', From ed395190149c4b509b8bee9e0f18108a5bc6ce8e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 20:08:15 -0800 Subject: [PATCH 089/599] Hyundai: remove OBD ECUs for Sonata 2020+ (#31458) no abs on hybrid, and we have eps! --- selfdrive/car/hyundai/values.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index ec4dadbcfc..4ed638f436 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -804,8 +804,9 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.transmission: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], - Ecu.engine: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN], + Ecu.transmission: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.SONATA], + Ecu.engine: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.SONATA], + Ecu.abs: [CAR.SONATA], }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms From 7cfc571f5698c8f5d5bce2e39ccbd8a56c729395 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 5 Mar 2024 20:43:33 -0800 Subject: [PATCH 090/599] timeless routes (#31119) * timeless route * update sort * update test * fix param name --- common/params.cc | 1 + system/loggerd/logger.cc | 11 +---------- system/loggerd/logger.h | 1 - system/loggerd/tests/loggerd_tests_common.py | 4 ++-- tools/lib/route.py | 6 +++++- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/common/params.cc b/common/params.cc index aef2cbdecd..f68e1e4c6b 100644 --- a/common/params.cc +++ b/common/params.cc @@ -188,6 +188,7 @@ std::unordered_map keys = { {"RecordFront", PERSISTENT}, {"RecordFrontLock", PERSISTENT}, // for the internal fleet {"ReplayControlsState", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, + {"RouteCount", PERSISTENT}, {"SnoozeUpdate", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION}, {"SshEnabled", PERSISTENT}, {"TermsVersion", PERSISTENT}, diff --git a/system/loggerd/logger.cc b/system/loggerd/logger.cc index 7a829a2f1f..f1b187df7f 100644 --- a/system/loggerd/logger.cc +++ b/system/loggerd/logger.cc @@ -89,15 +89,6 @@ kj::Array logger_build_init_data() { return capnp::messageToFlatArray(msg); } -std::string logger_get_route_name() { - char route_name[64] = {'\0'}; - time_t rawtime = time(NULL); - struct tm timeinfo; - localtime_r(&rawtime, &timeinfo); - strftime(route_name, sizeof(route_name), "%Y-%m-%d--%H-%M-%S", &timeinfo); - return route_name; -} - std::string logger_get_identifier(std::string key) { // a log identifier is a 32 bit counter, plus a 10 character unique ID. // e.g. 000001a3--c20ba54385 @@ -131,7 +122,7 @@ static void log_sentinel(LoggerState *log, SentinelType type, int eixt_signal = } LoggerState::LoggerState(const std::string &log_root) { - route_name = logger_get_route_name(); + route_name = logger_get_identifier("RouteCount"); route_path = log_root + "/" + route_name; init_data = logger_build_init_data(); } diff --git a/system/loggerd/logger.h b/system/loggerd/logger.h index dd3bee150c..7a8490d57a 100644 --- a/system/loggerd/logger.h +++ b/system/loggerd/logger.h @@ -52,5 +52,4 @@ protected: }; kj::Array logger_build_init_data(); -std::string logger_get_route_name(); std::string logger_get_identifier(std::string key); diff --git a/system/loggerd/tests/loggerd_tests_common.py b/system/loggerd/tests/loggerd_tests_common.py index 42eec2a0f4..877c872b6b 100644 --- a/system/loggerd/tests/loggerd_tests_common.py +++ b/system/loggerd/tests/loggerd_tests_common.py @@ -72,8 +72,8 @@ class UploaderTestCase(unittest.TestCase): uploader.force_wifi = True uploader.allow_sleep = False self.seg_num = random.randint(1, 300) - self.seg_format = "2019-04-18--12-52-54--{}" - self.seg_format2 = "2019-05-18--11-22-33--{}" + self.seg_format = "00000004--0ac3964c96--{}" + self.seg_format2 = "00000005--4c4e99b08b--{}" self.seg_dir = self.seg_format.format(self.seg_num) self.params = Params() diff --git a/tools/lib/route.py b/tools/lib/route.py index bd0ccc1fc3..06a3596d69 100644 --- a/tools/lib/route.py +++ b/tools/lib/route.py @@ -263,6 +263,10 @@ class SegmentRange: def timestamp(self) -> str: return self.m.group("timestamp") + @property + def log_id(self) -> str: + return self.m.group("log_id") + @property def slice(self) -> str: return self.m.group("slice") or "" @@ -291,7 +295,7 @@ class SegmentRange: return list(range(end + 1))[s] def __str__(self) -> str: - return f"{self.dongle_id}/{self.timestamp}" + (f"/{self.slice}" if self.slice else "") + (f"/{self.selector}" if self.selector else "") + return f"{self.dongle_id}/{self.log_id}" + (f"/{self.slice}" if self.slice else "") + (f"/{self.selector}" if self.selector else "") def __repr__(self) -> str: return self.__str__() From eaefdb386fd05780c31b1294b2bb5cab59cb3147 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 21:34:06 -0800 Subject: [PATCH 091/599] Toyota: Highlander can not do sng as standard (#31721) * . * update docs * fix docs * Update selfdrive/car/toyota/interface.py --- docs/CARS.md | 4 ++-- selfdrive/car/toyota/interface.py | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index f601da2beb..654f788908 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -239,9 +239,9 @@ A supported vehicle is one that just works when you install a comma device. All |Toyota|Corolla Hatchback 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Corolla Hybrid 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Corolla Hybrid (Non-US only) 2020-23|All|openpilot|17 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|Highlander 2017-19|All|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|Highlander 2017-19|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Highlander 2020-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|Highlander Hybrid 2017-19|All|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|Highlander Hybrid 2017-19|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Highlander Hybrid 2020-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Mirai 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Prius 2016|Toyota Safety Sense P|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 7fd5c9435d..c01086c8de 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -43,6 +43,11 @@ class CarInterface(CarInterfaceBase): stop_and_go = candidate in TSS2_CAR + # Detect smartDSU, which intercepts ACC_CMD from the DSU (or radar) allowing openpilot to send it + # 0x2AA is sent by a similar device which intercepts the radar instead of DSU on NO_DSU_CARs + if 0x2FF in fingerprint[0] or (0x2AA in fingerprint[0] and candidate in NO_DSU_CAR): + ret.flags |= ToyotaFlags.SMART_DSU.value + if candidate == CAR.PRIUS: stop_and_go = True # Only give steer angle deadzone to for bad angle sensor prius @@ -68,8 +73,9 @@ class CarInterface(CarInterfaceBase): stop_and_go = True elif candidate in (CAR.HIGHLANDER, CAR.HIGHLANDER_TSS2): - # TODO: TSS-P models can do stop and go, but unclear if it requires sDSU or unplugging DSU - stop_and_go = True + # TODO: TSS-P models can do stop and go, but unclear if it requires sDSU or unplugging DSU. + # For now, don't list stop and go functionality in the docs + stop_and_go = stop_and_go or bool(ret.flags & ToyotaFlags.SMART_DSU.value) elif candidate in (CAR.AVALON, CAR.AVALON_2019, CAR.AVALON_TSS2): # starting from 2019, all Avalon variants have stop and go @@ -111,11 +117,6 @@ class CarInterface(CarInterfaceBase): # Detect flipped signals and enable for C-HR and others ret.enableBsm = 0x3F6 in fingerprint[0] and candidate in TSS2_CAR - # Detect smartDSU, which intercepts ACC_CMD from the DSU (or radar) allowing openpilot to send it - # 0x2AA is sent by a similar device which intercepts the radar instead of DSU on NO_DSU_CARs - if 0x2FF in fingerprint[0] or (0x2AA in fingerprint[0] and candidate in NO_DSU_CAR): - ret.flags |= ToyotaFlags.SMART_DSU.value - # No radar dbc for cars without DSU which are not TSS 2.0 # TODO: make an adas dbc file for dsu-less models ret.radarUnavailable = DBC[candidate]['radar'] is None or candidate in (NO_DSU_CAR - TSS2_CAR) From 342a20ef8eca413fb4e48fc0dafe6bbca7471d1c Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 22:50:14 -0800 Subject: [PATCH 092/599] Toyota Highlander: also check unplugged DSU to enable sng (#31723) * also check unplugged DSU * fix --- selfdrive/car/toyota/interface.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index c01086c8de..2ea67cbaa6 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -48,6 +48,11 @@ class CarInterface(CarInterfaceBase): if 0x2FF in fingerprint[0] or (0x2AA in fingerprint[0] and candidate in NO_DSU_CAR): ret.flags |= ToyotaFlags.SMART_DSU.value + # In TSS2 cars, the camera does long control + found_ecus = [fw.ecu for fw in car_fw] + ret.enableDsu = len(found_ecus) > 0 and Ecu.dsu not in found_ecus and candidate not in (NO_DSU_CAR | UNSUPPORTED_DSU_CAR) \ + and not (ret.flags & ToyotaFlags.SMART_DSU) + if candidate == CAR.PRIUS: stop_and_go = True # Only give steer angle deadzone to for bad angle sensor prius @@ -75,7 +80,7 @@ class CarInterface(CarInterfaceBase): elif candidate in (CAR.HIGHLANDER, CAR.HIGHLANDER_TSS2): # TODO: TSS-P models can do stop and go, but unclear if it requires sDSU or unplugging DSU. # For now, don't list stop and go functionality in the docs - stop_and_go = stop_and_go or bool(ret.flags & ToyotaFlags.SMART_DSU.value) + stop_and_go = stop_and_go or bool(ret.flags & ToyotaFlags.SMART_DSU.value) or (ret.enableDsu and not docs) elif candidate in (CAR.AVALON, CAR.AVALON_2019, CAR.AVALON_TSS2): # starting from 2019, all Avalon variants have stop and go @@ -121,11 +126,6 @@ class CarInterface(CarInterfaceBase): # TODO: make an adas dbc file for dsu-less models ret.radarUnavailable = DBC[candidate]['radar'] is None or candidate in (NO_DSU_CAR - TSS2_CAR) - # In TSS2 cars, the camera does long control - found_ecus = [fw.ecu for fw in car_fw] - ret.enableDsu = len(found_ecus) > 0 and Ecu.dsu not in found_ecus and candidate not in (NO_DSU_CAR | UNSUPPORTED_DSU_CAR) \ - and not (ret.flags & ToyotaFlags.SMART_DSU) - # if the smartDSU is detected, openpilot can send ACC_CONTROL and the smartDSU will block it from the DSU or radar. # since we don't yet parse radar on TSS2/TSS-P radar-based ACC cars, gate longitudinal behind experimental toggle use_sdsu = bool(ret.flags & ToyotaFlags.SMART_DSU) From 2df61a30eb89b426ad937dbc6446326c04a9c73a Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 23:04:41 -0800 Subject: [PATCH 093/599] Toyota: flag for cars without PCM accel limit under 19 mph (#31724) use flags --- selfdrive/car/toyota/interface.py | 13 +++++-------- selfdrive/car/toyota/values.py | 6 ++++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 2ea67cbaa6..3c16394f1d 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -61,9 +61,6 @@ class CarInterface(CarInterfaceBase): ret.steerActuatorDelay = 0.25 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning, steering_angle_deadzone_deg=0.2) - elif candidate == CAR.PRIUS_V: - stop_and_go = True - elif candidate in (CAR.RAV4, CAR.RAV4H): stop_and_go = True if (candidate in CAR.RAV4H) else False @@ -77,11 +74,6 @@ class CarInterface(CarInterfaceBase): elif candidate in (CAR.CAMRY, CAR.CAMRY_TSS2): stop_and_go = True - elif candidate in (CAR.HIGHLANDER, CAR.HIGHLANDER_TSS2): - # TODO: TSS-P models can do stop and go, but unclear if it requires sDSU or unplugging DSU. - # For now, don't list stop and go functionality in the docs - stop_and_go = stop_and_go or bool(ret.flags & ToyotaFlags.SMART_DSU.value) or (ret.enableDsu and not docs) - elif candidate in (CAR.AVALON, CAR.AVALON_2019, CAR.AVALON_TSS2): # starting from 2019, all Avalon variants have stop and go # https://engage.toyota.com/static/images/toyota_safety_sense/TSS_Applicability_Chart.pdf @@ -116,6 +108,11 @@ class CarInterface(CarInterfaceBase): elif candidate == CAR.MIRAI: stop_and_go = True + # TODO: these models can do stop and go, but unclear if it requires sDSU or unplugging DSU. + # For now, don't list stop and go functionality in the docs + if ret.flags & ToyotaFlags.SNG_WITHOUT_DSU: + stop_and_go = stop_and_go or bool(ret.flags & ToyotaFlags.SMART_DSU.value) or (ret.enableDsu and not docs) + ret.centerToFront = ret.wheelbase * 0.44 # TODO: Some TSS-P platforms have BSM, but are flipped based on region or driving direction. diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 9989b9225a..5a7b88f55b 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -55,6 +55,8 @@ class ToyotaFlags(IntFlag): # these cars use the Lane Tracing Assist (LTA) message for lateral control ANGLE_CONTROL = 128 NO_STOP_TIMER = 256 + # these cars are speculated to allow stop and go when the DSU is unplugged or disabled with sDSU + SNG_WITHOUT_DSU = 512 class Footnote(Enum): @@ -182,7 +184,7 @@ class CAR(Platforms): ], CarSpecs(mass=4516. * CV.LB_TO_KG, wheelbase=2.8194, steerRatio=16.0, tireStiffnessFactor=0.8), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - flags=ToyotaFlags.NO_STOP_TIMER, + flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, ) HIGHLANDER_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA HIGHLANDER 2020", @@ -207,7 +209,7 @@ class CAR(Platforms): ToyotaCarInfo("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED), CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - flags=ToyotaFlags.NO_STOP_TIMER, + flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, ) PRIUS_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA PRIUS TSS2 2021", From fcd33786ca85a25fb11afc22d4498edd97e6b178 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 23:11:10 -0800 Subject: [PATCH 094/599] Toyota: remove Mirai from interface (#31725) * mirai * just mirai --- selfdrive/car/toyota/interface.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 3c16394f1d..9f3e09cfe7 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -105,9 +105,6 @@ class CarInterface(CarInterfaceBase): elif candidate in (CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2): stop_and_go = True - elif candidate == CAR.MIRAI: - stop_and_go = True - # TODO: these models can do stop and go, but unclear if it requires sDSU or unplugging DSU. # For now, don't list stop and go functionality in the docs if ret.flags & ToyotaFlags.SNG_WITHOUT_DSU: From 1b9df8aca62bd57c81d82c7b8fb5683029b507ae Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 5 Mar 2024 23:23:47 -0800 Subject: [PATCH 095/599] Toyota: move stop and go cars to one tuple (#31726) * One tuple! * rm --- selfdrive/car/toyota/interface.py | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 9f3e09cfe7..783307023d 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -61,19 +61,10 @@ class CarInterface(CarInterfaceBase): ret.steerActuatorDelay = 0.25 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning, steering_angle_deadzone_deg=0.2) - elif candidate in (CAR.RAV4, CAR.RAV4H): - stop_and_go = True if (candidate in CAR.RAV4H) else False - elif candidate in (CAR.LEXUS_RX, CAR.LEXUS_RX_TSS2): stop_and_go = True ret.wheelSpeedFactor = 1.035 - elif candidate in (CAR.CHR, CAR.CHR_TSS2): - stop_and_go = True - - elif candidate in (CAR.CAMRY, CAR.CAMRY_TSS2): - stop_and_go = True - elif candidate in (CAR.AVALON, CAR.AVALON_2019, CAR.AVALON_TSS2): # starting from 2019, all Avalon variants have stop and go # https://engage.toyota.com/static/images/toyota_safety_sense/TSS_Applicability_Chart.pdf @@ -96,13 +87,8 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 0.00004 break - elif candidate == CAR.SIENNA: - stop_and_go = True - - elif candidate == CAR.LEXUS_CTH: - stop_and_go = True - - elif candidate in (CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2): + elif candidate in (CAR.RAV4H, CAR.CHR, CAR.CAMRY, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_NX): + # TODO: Some of these platforms are not advertised to have full range ACC, are they similar to SNG_WITHOUT_DSU cars? stop_and_go = True # TODO: these models can do stop and go, but unclear if it requires sDSU or unplugging DSU. From 0da9a1ea75413a08fb1f2f239b766d5ac3343634 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 6 Mar 2024 00:46:12 -0800 Subject: [PATCH 096/599] [bot] Fingerprints: add missing FW versions from new users (#31682) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 5 ++++- selfdrive/car/volkswagen/fingerprints.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index c58bbd283e..fa5296cfa7 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1092,9 +1092,9 @@ FW_VERSIONS = { ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00OS MDPS C 1.00 1.03 56310/K4550 4OEDC103', + b'\xf1\x00OS MDPS C 1.00 1.04 56310-XX000 4OEDC104', b'\xf1\x00OS MDPS C 1.00 1.04 56310K4000\x00 4OEDC104', b'\xf1\x00OS MDPS C 1.00 1.04 56310K4050\x00 4OEDC104', - b'\xf1\x00OS MDPS C 1.00 1.04 56310-XX000 4OEDC104', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00OSev SCC F-CUP 1.00 1.00 99110-K4000 ', @@ -1555,7 +1555,9 @@ FW_VERSIONS = { b'\xf1\x00NE1_ RDR ----- 1.00 1.00 99110-GI000 ', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.01 99211-GI010 211007', b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.06 99211-GI000 210813', + b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.06 99211-GI010 230110', b'\xf1\x00NE1 MFC AT EUR RHD 1.00 1.01 99211-GI010 211007', b'\xf1\x00NE1 MFC AT EUR RHD 1.00 1.02 99211-GI010 211206', b'\xf1\x00NE1 MFC AT KOR LHD 1.00 1.00 99211-GI020 230719', @@ -1573,6 +1575,7 @@ FW_VERSIONS = { b'\xf1\x00CE__ RDR ----- 1.00 1.01 99110-KL000 ', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00CE MFC AT CAN LHD 1.00 1.04 99211-KL000 221213', b'\xf1\x00CE MFC AT EUR LHD 1.00 1.03 99211-KL000 221011', b'\xf1\x00CE MFC AT USA LHD 1.00 1.04 99211-KL000 221213', ], diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index bf962db439..f6b3c49982 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -969,8 +969,8 @@ FW_VERSIONS = { (Ecu.eps, 0x712, None): [ b'\xf1\x875Q0910143B \xf1\x892201\xf1\x82\x0563T6090500', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100500', - b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100700', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100600', + b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100700', ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x872Q0907572AA\xf1\x890396', From 1644572be282283c20d90a09a606666366da5e4a Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 6 Mar 2024 01:04:31 -0800 Subject: [PATCH 097/599] run_process_on_route: print log location --- selfdrive/debug/run_process_on_route.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/debug/run_process_on_route.py b/selfdrive/debug/run_process_on_route.py index 441de9ef57..90db14bc9a 100755 --- a/selfdrive/debug/run_process_on_route.py +++ b/selfdrive/debug/run_process_on_route.py @@ -27,4 +27,5 @@ if __name__ == "__main__": outputs = sorted(inputs + outputs, key=lambda x: x.logMonoTime) fn = f"{args.route.replace('/', '_')}_{args.process}.bz2" + print(f"Saved log to {fn}") save_log(fn, outputs) From a2de0115b3cc46521f395953d97a94cd846c5f9d Mon Sep 17 00:00:00 2001 From: James <91348155+FrogAi@users.noreply.github.com> Date: Wed, 6 Mar 2024 02:06:06 -0700 Subject: [PATCH 098/599] Toyota TSS2: parse distance button (#31722) * Enable the distance button to switch personalities for Toyota/Lexus * Default to the "standard" personality for now * only parsing first * only parse * no personality in card * safe * comment --------- Co-authored-by: Shane Smiskol --- selfdrive/car/toyota/carstate.py | 8 ++++++++ selfdrive/car/toyota/interface.py | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index e4ea0d30f9..caaf7c2e17 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -40,6 +40,9 @@ class CarState(CarStateBase): self.accurate_steer_angle_seen = False self.angle_offset = FirstOrderFilter(None, 60.0, DT_CTRL, initialized=False) + self.prev_distance_button = 0 + self.distance_button = 0 + self.low_speed_lockout = False self.acc_type = 1 self.lkas_hud = {} @@ -163,6 +166,11 @@ class CarState(CarStateBase): if self.CP.carFingerprint != CAR.PRIUS_V: self.lkas_hud = copy.copy(cp_cam.vl["LKAS_HUD"]) + # distance button is wired to the ACC module (camera or radar) + if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): + self.prev_distance_button = self.distance_button + self.distance_button = cp_acc.vl["ACC_CONTROL"]["DISTANCE"] + return ret @staticmethod diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 783307023d..bd982728a5 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -3,10 +3,11 @@ from panda import Panda from panda.python import uds from openpilot.selfdrive.car.toyota.values import Ecu, CAR, DBC, ToyotaFlags, CarControllerParams, TSS2_CAR, RADAR_ACC_CAR, NO_DSU_CAR, \ MIN_ACC_SPEED, EPS_SCALE, UNSUPPORTED_DSU_CAR, NO_STOP_TIMER_CAR, ANGLE_CONTROL_CAR -from openpilot.selfdrive.car import get_safety_config +from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.disable_ecu import disable_ecu from openpilot.selfdrive.car.interfaces import CarInterfaceBase +ButtonType = car.CarState.ButtonEvent.Type EventName = car.CarEvent.EventName SteerControlType = car.CarParams.SteerControlType @@ -172,6 +173,9 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) + if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): + ret.buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) + # events events = self.create_common_events(ret) From 079b7130978f251a6e67bd9a076a3e1035847706 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 6 Mar 2024 02:40:31 -0800 Subject: [PATCH 099/599] Lexus: add missing IS 2023 FW versions (#31729) * ahh it has a different engine! * flip --- selfdrive/car/toyota/fingerprints.py | 6 ++++++ selfdrive/car/toyota/values.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index b59e1abea4..86d45532fa 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -772,16 +772,22 @@ FW_VERSIONS = { b'\x018966353S1000\x00\x00\x00\x00', b'\x018966353S2000\x00\x00\x00\x00', ], + (Ecu.engine, 0x7e0, None): [ + b'\x02353U0000\x00\x00\x00\x00\x00\x00\x00\x0052422000\x00\x00\x00\x00\x00\x00\x00\x00', + ], (Ecu.abs, 0x7b0, None): [ b'\x01F15265337200\x00\x00\x00\x00', b'\x01F15265342000\x00\x00\x00\x00', + b'\x01F15265343000\x00\x00\x00\x00', ], (Ecu.eps, 0x7a1, None): [ b'8965B53450\x00\x00\x00\x00\x00\x00', + b'8965B53800\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x750, 0xf): [ b'\x018821F6201200\x00\x00\x00\x00', b'\x018821F6201300\x00\x00\x00\x00', + b'\x018821F6201400\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x750, 0x6d): [ b'\x028646F5303300\x00\x00\x00\x008646G5301200\x00\x00\x00\x00', diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 5a7b88f55b..4aa04c12ba 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -549,7 +549,7 @@ FW_QUERY_CONFIG = FwQueryConfig( Ecu.abs: [CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_IS, CAR.ALPHARD_TSS2], # On some models, the engine can show on two different addresses Ecu.engine: [CAR.HIGHLANDER, CAR.CAMRY, CAR.COROLLA_TSS2, CAR.CHR, CAR.CHR_TSS2, CAR.LEXUS_IS, - CAR.LEXUS_RC, CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2, CAR.LEXUS_RX, CAR.LEXUS_RX_TSS2], + CAR.LEXUS_IS_TSS2, CAR.LEXUS_RC, CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2, CAR.LEXUS_RX, CAR.LEXUS_RX_TSS2], }, extra_ecus=[ # All known ECUs on a late-model Toyota vehicle not queried here: From e399136cb6468728f4d3f6fd888a3d777f1e292c Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 6 Mar 2024 09:26:36 -0800 Subject: [PATCH 100/599] don't build cabana on device (#31736) --- SConstruct | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index c08fe48f66..50dbda4b8d 100644 --- a/SConstruct +++ b/SConstruct @@ -388,7 +388,8 @@ SConscript(['selfdrive/SConscript']) if Dir('#tools/cabana/').exists() and GetOption('extras'): SConscript(['tools/replay/SConscript']) - SConscript(['tools/cabana/SConscript']) + if arch != "larch64": + SConscript(['tools/cabana/SConscript']) external_sconscript = GetOption('external_sconscript') if external_sconscript: From 233f0437d901eaa09a233ffb28b44feacced6b52 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 6 Mar 2024 13:56:46 -0500 Subject: [PATCH 101/599] add get_car_interface helper (#31738) add helper --- selfdrive/car/car_helpers.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 74499fbbb0..b16e2e5a47 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -197,6 +197,11 @@ def fingerprint(logcan, sendcan, num_pandas): return car_platform, finger, vin, car_fw, source, exact_match +def get_car_interface(CP): + CarInterface, CarController, CarState = interfaces[CP.carFingerprint] + return CarInterface(CP, CarController, CarState) + + def get_car(logcan, sendcan, experimental_long_allowed, num_pandas=1): candidate, fingerprints, vin, car_fw, source, exact_match = fingerprint(logcan, sendcan, num_pandas) @@ -204,14 +209,14 @@ def get_car(logcan, sendcan, experimental_long_allowed, num_pandas=1): cloudlog.event("car doesn't match any fingerprints", fingerprints=repr(fingerprints), error=True) candidate = "mock" - CarInterface, CarController, CarState = interfaces[candidate] + CarInterface, _, _ = interfaces[candidate] CP = CarInterface.get_params(candidate, fingerprints, car_fw, experimental_long_allowed, docs=False) CP.carVin = vin CP.carFw = car_fw CP.fingerprintSource = source CP.fuzzyFingerprint = not exact_match - return CarInterface(CP, CarController, CarState), CP + return get_car_interface(CP), CP def write_car_param(platform=MOCK.MOCK): params = Params() From 25ccb2426c0b54dbf823b9e7e6d63607b37d9c5a Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 6 Mar 2024 14:22:12 -0500 Subject: [PATCH 102/599] cars: remove CAR_INFO map (#31739) * no carinfo map * smaller diff * not on mock --- selfdrive/car/__init__.py | 8 +- selfdrive/car/body/values.py | 2 +- selfdrive/car/chrysler/values.py | 2 +- selfdrive/car/docs.py | 8 +- selfdrive/car/ford/values.py | 2 +- selfdrive/car/gm/values.py | 2 +- selfdrive/car/honda/values.py | 2 +- selfdrive/car/hyundai/values.py | 2 +- selfdrive/car/mazda/values.py | 2 +- selfdrive/car/mock/values.py | 2 +- selfdrive/car/nissan/values.py | 2 +- selfdrive/car/subaru/values.py | 1 - selfdrive/car/tesla/values.py | 2 +- selfdrive/car/tests/test_docs.py | 7 +- selfdrive/car/tests/test_platform_configs.py | 4 +- selfdrive/car/toyota/values.py | 2 +- selfdrive/car/values.py | 14 +- selfdrive/car/volkswagen/values.py | 2 +- tools/cabana/dbc/generate_dbc_json.py | 6 +- .../examples/subaru_fuzzy_fingerprint.ipynb | 210 +++++++++--------- 20 files changed, 145 insertions(+), 137 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index c7af2da686..1f784a4ab2 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -299,14 +299,14 @@ class Platforms(str, ReprEnum): def create_dbc_map(cls) -> dict[str, DbcDict]: return {p: p.config.dbc_dict for p in cls} - @classmethod - def create_carinfo_map(cls) -> dict[str, CarInfos]: - return {p: p.config.car_info for p in cls} - @classmethod def with_flags(cls, flags: IntFlag) -> set['Platforms']: return {p for p in cls if p.config.flags & flags} + @classmethod + def without_flags(cls, flags: IntFlag) -> set['Platforms']: + return {p for p in cls if not (p.config.flags & flags)} + @classmethod def print_debug(cls, flags): platforms_with_flag = defaultdict(list) diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index 82b00ee47d..6e0d0ec596 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -38,5 +38,5 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 78b22bea45..905e2e7270 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -163,5 +163,5 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/docs.py b/selfdrive/car/docs.py index caa79a8f87..ce46bd93c2 100755 --- a/selfdrive/car/docs.py +++ b/selfdrive/car/docs.py @@ -11,6 +11,7 @@ from openpilot.common.basedir import BASEDIR from openpilot.selfdrive.car import gen_empty_fingerprint from openpilot.selfdrive.car.docs_definitions import CarInfo, Column, CommonFootnote, PartType from openpilot.selfdrive.car.car_helpers import interfaces, get_interface_attr +from openpilot.selfdrive.car.values import PLATFORMS def get_all_footnotes() -> dict[Enum, int]: @@ -27,9 +28,10 @@ CARS_MD_TEMPLATE = os.path.join(BASEDIR, "selfdrive", "car", "CARS_template.md") def get_all_car_info() -> list[CarInfo]: all_car_info: list[CarInfo] = [] footnotes = get_all_footnotes() - for model, car_info in get_interface_attr("CAR_INFO", combine_brands=True).items(): + for model, platform in PLATFORMS.items(): + car_info = platform.config.car_info # If available, uses experimental longitudinal limits for the docs - CP = interfaces[model][0].get_params(model, fingerprint=gen_empty_fingerprint(), + CP = interfaces[model][0].get_params(platform, fingerprint=gen_empty_fingerprint(), car_fw=[car.CarParams.CarFw(ecu="unknown")], experimental_long=True, docs=True) if CP.dashcamOnly or car_info is None: @@ -37,7 +39,7 @@ def get_all_car_info() -> list[CarInfo]: # A platform can include multiple car models if not isinstance(car_info, list): - car_info = (car_info,) + car_info = [car_info,] for _car_info in car_info: if not hasattr(_car_info, "row"): diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index fe776fea72..76f505fa9b 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -209,5 +209,5 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index bf3c8622c5..17822e0c80 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -247,5 +247,5 @@ CAMERA_ACC_CAR = {CAR.BOLT_EUV, CAR.SILVERADO, CAR.EQUINOX, CAR.TRAILBLAZER} STEER_THRESHOLD = 1.0 -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 4bcbf00735..4960380bbc 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -352,5 +352,5 @@ HONDA_NIDEC_ALT_SCM_MESSAGES = CAR.with_flags(HondaFlags.NIDEC_ALT_SCM_MESSAGES) HONDA_BOSCH = CAR.with_flags(HondaFlags.BOSCH) HONDA_BOSCH_RADARLESS = CAR.with_flags(HondaFlags.BOSCH_RADARLESS) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 4ed638f436..29a72ba715 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -847,7 +847,7 @@ LEGACY_SAFETY_MODE_CAR = CAR.with_flags(HyundaiFlags.LEGACY) UNSUPPORTED_LONGITUDINAL_CAR = CAR.with_flags(HyundaiFlags.LEGACY) | CAR.with_flags(HyundaiFlags.UNSUPPORTED_LONGITUDINAL) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() if __name__ == "__main__": diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index d8f5aa85dd..20a3ae0ae1 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -108,5 +108,5 @@ FW_QUERY_CONFIG = FwQueryConfig( ) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/mock/values.py b/selfdrive/car/mock/values.py index 74e8bb5fc9..7e399fab73 100644 --- a/selfdrive/car/mock/values.py +++ b/selfdrive/car/mock/values.py @@ -11,4 +11,4 @@ class CAR(Platforms): ) -CAR_INFO = CAR.create_carinfo_map() + diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index cb7289389b..8d33e0e705 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -63,7 +63,7 @@ class CAR(Platforms): ) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() # Default diagnostic session diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 5668678225..acb60628b4 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -263,7 +263,6 @@ FW_QUERY_CONFIG = FwQueryConfig( } ) -CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index 3104506e5b..f33e62618c 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -92,5 +92,5 @@ class CarControllerParams: pass -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/tests/test_docs.py b/selfdrive/car/tests/test_docs.py index 0cafb508f7..0ee35dd92d 100755 --- a/selfdrive/car/tests/test_docs.py +++ b/selfdrive/car/tests/test_docs.py @@ -5,10 +5,11 @@ import re import unittest from openpilot.common.basedir import BASEDIR -from openpilot.selfdrive.car.car_helpers import interfaces, get_interface_attr +from openpilot.selfdrive.car.car_helpers import interfaces from openpilot.selfdrive.car.docs import CARS_MD_OUT, CARS_MD_TEMPLATE, generate_cars_md, get_all_car_info from openpilot.selfdrive.car.docs_definitions import Cable, Column, PartType, Star from openpilot.selfdrive.car.honda.values import CAR as HONDA +from openpilot.selfdrive.car.values import PLATFORMS from openpilot.selfdrive.debug.dump_car_info import dump_car_info from openpilot.selfdrive.debug.print_docs_diff import print_car_info_diff @@ -42,10 +43,10 @@ class TestCarDocs(unittest.TestCase): make_model_years[make_model].append(year) def test_missing_car_info(self): - all_car_info_platforms = get_interface_attr("CAR_INFO", combine_brands=True).keys() + all_car_info_platforms = [name for name, config in PLATFORMS.items()] for platform in sorted(interfaces.keys()): with self.subTest(platform=platform): - self.assertTrue(platform in all_car_info_platforms, f"Platform: {platform} doesn't exist in CarInfo") + self.assertTrue(platform in all_car_info_platforms, f"Platform: {platform} doesn't have a CarInfo entry") def test_naming_conventions(self): # Asserts market-standard car naming conventions by brand diff --git a/selfdrive/car/tests/test_platform_configs.py b/selfdrive/car/tests/test_platform_configs.py index 6a3bafa390..0b42a2b289 100755 --- a/selfdrive/car/tests/test_platform_configs.py +++ b/selfdrive/car/tests/test_platform_configs.py @@ -11,7 +11,9 @@ class TestPlatformConfigs(unittest.TestCase): for platform in PLATFORMS.values(): with self.subTest(platform=str(platform)): self.assertTrue(platform.config._frozen) - self.assertIn("pt", platform.config.dbc_dict) + + if platform != "mock": + self.assertIn("pt", platform.config.dbc_dict) self.assertTrue(len(platform.config.platform_str) > 0) self.assertIsNotNone(platform.config.specs) diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 4aa04c12ba..048e8b1033 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -608,5 +608,5 @@ ANGLE_CONTROL_CAR = CAR.with_flags(ToyotaFlags.ANGLE_CONTROL) # no resume button press required NO_STOP_TIMER_CAR = CAR.with_flags(ToyotaFlags.NO_STOP_TIMER) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/values.py b/selfdrive/car/values.py index 3e27870915..24119e2210 100644 --- a/selfdrive/car/values.py +++ b/selfdrive/car/values.py @@ -1,4 +1,4 @@ -from typing import cast +from typing import Any, Callable, cast from openpilot.selfdrive.car.body.values import CAR as BODY from openpilot.selfdrive.car.chrysler.values import CAR as CHRYSLER from openpilot.selfdrive.car.ford.values import CAR as FORD @@ -6,13 +6,21 @@ from openpilot.selfdrive.car.gm.values import CAR as GM from openpilot.selfdrive.car.honda.values import CAR as HONDA from openpilot.selfdrive.car.hyundai.values import CAR as HYUNDAI from openpilot.selfdrive.car.mazda.values import CAR as MAZDA +from openpilot.selfdrive.car.mock.values import CAR as MOCK from openpilot.selfdrive.car.nissan.values import CAR as NISSAN from openpilot.selfdrive.car.subaru.values import CAR as SUBARU from openpilot.selfdrive.car.tesla.values import CAR as TESLA from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA from openpilot.selfdrive.car.volkswagen.values import CAR as VOLKSWAGEN -Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | NISSAN | SUBARU | TESLA | TOYOTA | VOLKSWAGEN -BRANDS = [BODY, CHRYSLER, FORD, GM, HONDA, HYUNDAI, MAZDA, NISSAN, SUBARU, TESLA, TOYOTA, VOLKSWAGEN] +Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN | SUBARU | TESLA | TOYOTA | VOLKSWAGEN +BRANDS = [BODY, CHRYSLER, FORD, GM, HONDA, HYUNDAI, MAZDA, MOCK, NISSAN, SUBARU, TESLA, TOYOTA, VOLKSWAGEN] PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in cast(list[Platform], brand)} + + +MapFunc = Callable[[Platform], Any] + + +def create_platform_map(func: MapFunc): + return {str(platform): func(platform) for platform in PLATFORMS.values() if func(platform) is not None} diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 6ff913b204..36c82abf03 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -416,5 +416,5 @@ FW_QUERY_CONFIG = FwQueryConfig( extra_ecus=[(Ecu.fwdCamera, 0x74f, None)], ) -CAR_INFO = CAR.create_carinfo_map() + DBC = CAR.create_dbc_map() diff --git a/tools/cabana/dbc/generate_dbc_json.py b/tools/cabana/dbc/generate_dbc_json.py index da19e27b77..5a8ef21d8b 100755 --- a/tools/cabana/dbc/generate_dbc_json.py +++ b/tools/cabana/dbc/generate_dbc_json.py @@ -2,13 +2,11 @@ import argparse import json -from openpilot.selfdrive.car.car_helpers import get_interface_attr +from openpilot.selfdrive.car.values import create_platform_map def generate_dbc_json() -> str: - all_cars_by_brand = get_interface_attr("CAR_INFO") - all_dbcs_by_brand = get_interface_attr("DBC") - dbc_map = {car: all_dbcs_by_brand[brand][car]['pt'] for brand, cars in all_cars_by_brand.items() for car in cars if car != 'mock'} + dbc_map = create_platform_map(lambda platform: platform.config.dbc_dict["pt"] if platform != "mock" else None) return json.dumps(dict(sorted(dbc_map.items())), indent=2) diff --git a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb index fbd88a769e..dd223667d8 100644 --- a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb +++ b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb @@ -2,15 +2,23 @@ "cells": [ { "cell_type": "code", - "execution_count": 148, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "kj/filesystem-disk-unix.c++:1703: warning: PWD environment variable doesn't match current directory; pwd = /home/batman\n" + ] + } + ], "source": [ "from cereal import car\n", - "from openpilot.selfdrive.car.subaru.values import CAR, PREGLOBAL_CARS\n", + "from openpilot.selfdrive.car.subaru.values import CAR, SubaruFlags\n", "from openpilot.selfdrive.car.subaru.fingerprints import FW_VERSIONS\n", "\n", - "TEST_PLATFORMS = set(c.value for c in CAR) - PREGLOBAL_CARS # preglobal cars seem to have a different format for fingerprints, ignore for now\n", + "TEST_PLATFORMS = CAR.without_flags(SubaruFlags.PREGLOBAL)\n", "\n", "Ecu = car.CarParams.Ecu\n", "\n", @@ -19,22 +27,7 @@ }, { "cell_type": "code", - "execution_count": 149, - "metadata": {}, - "outputs": [], - "source": [ - "from openpilot.selfdrive.car.subaru.values import CAR_INFO\n", - "\n", - "def get_carinfo(model: CAR):\n", - " c = CAR_INFO[model]\n", - " if isinstance(c, list):\n", - " c = c[0]\n", - " return c" - ] - }, - { - "cell_type": "code", - "execution_count": 150, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -66,7 +59,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -90,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": 152, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -103,56 +96,60 @@ "SUBARU IMPREZA LIMITED 2019 0c not in dict_keys([b'\\x18', b'\\x19', b' ', b'!', b'\"', b'#'])\n", "SUBARU IMPREZA LIMITED 2019 2e not in dict_keys([b'\\x18', b'\\x19', b' ', b'!', b'\"', b'#'])\n", "SUBARU IMPREZA LIMITED 2019 3f not in dict_keys([b'\\x18', b'\\x19', b' ', b'!', b'\"', b'#'])\n", - "correct_year=True platform=SUBARU ASCENT LIMITED 2019 year=2019 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU ASCENT LIMITED 2019 year=2021 years=[2019, 2020, 2021]\n", - "correct_year=False platform=SUBARU IMPREZA SPORT 2020 year=2019 years=[2020, 2021, 2022]\n", - "correct_year=False platform=SUBARU IMPREZA SPORT 2020 year=2019 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", - "correct_year=False platform=SUBARU FORESTER 2019 year=2018 years=[2019, 2020, 2021]\n", - "correct_year=False platform=SUBARU FORESTER 2019 year=2018 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU FORESTER 2019 year=2019 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU FORESTER 2019 year=2019 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU FORESTER 2019 year=2020 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU FORESTER 2019 year=2020 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU OUTBACK 7TH GEN year=2023 years=[2023]\n", + "correct_year=True platform=SUBARU OUTBACK 7TH GEN year=2023 years=[2023]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2022 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2022 years=[2020, 2021, 2022]\n", + "correct_year=False platform=SUBARU CROSSTREK HYBRID 2020 year=2019 years=[2020]\n", + "correct_year=False platform=SUBARU CROSSTREK HYBRID 2020 year=2021 years=[2020]\n", + "correct_year=False platform=SUBARU FORESTER HYBRID 2020 year=2019 years=[2020]\n", + "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2018 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", - "correct_year=True platform=SUBARU OUTBACK 7TH GEN year=2023 years=[2023]\n", - "correct_year=True platform=SUBARU OUTBACK 7TH GEN year=2023 years=[2023]\n", - "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=False platform=SUBARU FORESTER 2022 year=2021 years=[2022, 2023]\n", - "correct_year=False platform=SUBARU FORESTER 2022 year=2021 years=[2022, 2023]\n", - "correct_year=True platform=SUBARU FORESTER 2022 year=2022 years=[2022, 2023]\n", - "correct_year=True platform=SUBARU FORESTER 2022 year=2022 years=[2022, 2023]\n", - "correct_year=False platform=SUBARU CROSSTREK HYBRID 2020 year=2019 years=[2020]\n", - "correct_year=False platform=SUBARU CROSSTREK HYBRID 2020 year=2021 years=[2020]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2022 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2022 years=[2020, 2021, 2022]\n", + "correct_year=False platform=SUBARU FORESTER 2022 year=2021 years=[2022, 2023, 2024]\n", + "correct_year=False platform=SUBARU FORESTER 2022 year=2021 years=[2022, 2023, 2024]\n", + "correct_year=True platform=SUBARU FORESTER 2022 year=2022 years=[2022, 2023, 2024]\n", + "correct_year=True platform=SUBARU FORESTER 2022 year=2022 years=[2022, 2023, 2024]\n", + "correct_year=False platform=SUBARU IMPREZA SPORT 2020 year=2019 years=[2020, 2021, 2022]\n", + "correct_year=False platform=SUBARU IMPREZA SPORT 2020 year=2019 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", "correct_year=True platform=SUBARU ASCENT 2023 year=2023 years=[2023]\n", - "correct_year=False platform=SUBARU FORESTER HYBRID 2020 year=2019 years=[2020]\n" + "correct_year=True platform=SUBARU ASCENT LIMITED 2019 year=2019 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU ASCENT LIMITED 2019 year=2021 years=[2019, 2020, 2021]\n", + "correct_year=False platform=SUBARU FORESTER 2019 year=2018 years=[2019, 2020, 2021]\n", + "correct_year=False platform=SUBARU FORESTER 2019 year=2018 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU FORESTER 2019 year=2019 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU FORESTER 2019 year=2019 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU FORESTER 2019 year=2020 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU FORESTER 2019 year=2020 years=[2019, 2020, 2021]\n" ] } ], "source": [ "def test_year_code(platform, year):\n", - " years = [int(y) for y in get_carinfo(platform).year_list]\n", + " car_info = CAR(platform).config.car_info\n", + " if isinstance(car_info, list):\n", + " car_info = car_info[0]\n", + " years = [int(y) for y in car_info.year_list]\n", " correct_year = year in years\n", " print(f\"{correct_year=!s: <6} {platform=: <32} {year=: <5} {years=}\")\n", "\n", @@ -163,63 +160,64 @@ }, { "cell_type": "code", - "execution_count": 153, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "in_possible_platforms=True platform=SUBARU ASCENT LIMITED 2019 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", - "in_possible_platforms=True platform=SUBARU ASCENT LIMITED 2019 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", "in_possible_platforms=True platform=SUBARU OUTBACK 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", "in_possible_platforms=True platform=SUBARU OUTBACK 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", "in_possible_platforms=True platform=SUBARU CROSSTREK HYBRID 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", "in_possible_platforms=True platform=SUBARU CROSSTREK HYBRID 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU FORESTER HYBRID 2020 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", "in_possible_platforms=True platform=SUBARU ASCENT 2023 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", - "in_possible_platforms=True platform=SUBARU FORESTER HYBRID 2020 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n" + "in_possible_platforms=True platform=SUBARU ASCENT LIMITED 2019 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", + "in_possible_platforms=True platform=SUBARU ASCENT LIMITED 2019 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n" ] } ], From 7177ec06312c574aeb21dd261004be44bda5ba29 Mon Sep 17 00:00:00 2001 From: Robbe Derks Date: Wed, 6 Mar 2024 21:14:48 +0100 Subject: [PATCH 103/599] Tesla Raven (#29947) * fingerprinting * wip * bug * fix another bug * fix rebase * clean up raven * forgot to save * one more rename * one more rename * radar fixes * AP1 also has bosch radar * put back dashcamOnly * small fixes * raven flag * fix bug * fix raven flag * bump opendbc * fix radar trigger for non-raven * fix tests? * bump panda * more test fixes * tesla fingerprinting is a bit slower now * fix tests * bump opendbc * bump submodules to master --------- Co-authored-by: Comma Device --- opendbc | 2 +- panda | 2 +- release/files_common | 3 +- selfdrive/car/fw_query_definitions.py | 5 ++ selfdrive/car/tesla/carstate.py | 30 ++++++++--- selfdrive/car/tesla/fingerprints.py | 11 ++++ selfdrive/car/tesla/interface.py | 11 ++-- selfdrive/car/tesla/radar_interface.py | 62 +++++++++++----------- selfdrive/car/tesla/values.py | 34 +++++++----- selfdrive/car/tests/routes.py | 1 + selfdrive/car/tests/test_fw_fingerprint.py | 5 +- selfdrive/car/torque_data/override.toml | 1 + 12 files changed, 105 insertions(+), 62 deletions(-) diff --git a/opendbc b/opendbc index 1745ab5182..ff1f1ff335 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit 1745ab51825055cd18748013c4a5e3377319e390 +Subproject commit ff1f1ff335261c469635c57c81817afd04663eab diff --git a/panda b/panda index ea156f7c62..41e9610ff8 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit ea156f7c628a371bea9a15a29f9068d5392534ba +Subproject commit 41e9610ff841e4cf62051c6df09c1870f5d12477 diff --git a/release/files_common b/release/files_common index c0be9d3cae..4286c46c90 100644 --- a/release/files_common +++ b/release/files_common @@ -542,7 +542,8 @@ opendbc/vw_golf_mk4.dbc opendbc/vw_mqb_2010.dbc opendbc/tesla_can.dbc -opendbc/tesla_radar.dbc +opendbc/tesla_radar_bosch_generated.dbc +opendbc/tesla_radar_continental_generated.dbc opendbc/tesla_powertrain.dbc tinygrad_repo/openpilot/compile2.py diff --git a/selfdrive/car/fw_query_definitions.py b/selfdrive/car/fw_query_definitions.py index 80492b4177..236ade49bb 100755 --- a/selfdrive/car/fw_query_definitions.py +++ b/selfdrive/car/fw_query_definitions.py @@ -47,6 +47,11 @@ class StdQueries: MANUFACTURER_SOFTWARE_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ p16(uds.DATA_IDENTIFIER_TYPE.VEHICLE_MANUFACTURER_ECU_SOFTWARE_NUMBER) + SUPPLIER_SOFTWARE_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ + p16(uds.DATA_IDENTIFIER_TYPE.SYSTEM_SUPPLIER_ECU_SOFTWARE_VERSION_NUMBER) + SUPPLIER_SOFTWARE_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ + p16(uds.DATA_IDENTIFIER_TYPE.SYSTEM_SUPPLIER_ECU_SOFTWARE_VERSION_NUMBER) + UDS_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(uds.DATA_IDENTIFIER_TYPE.APPLICATION_SOFTWARE_IDENTIFICATION) UDS_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ diff --git a/selfdrive/car/tesla/carstate.py b/selfdrive/car/tesla/carstate.py index 2cb4f09d79..bee652ff30 100644 --- a/selfdrive/car/tesla/carstate.py +++ b/selfdrive/car/tesla/carstate.py @@ -2,7 +2,7 @@ import copy from collections import deque from cereal import car from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car.tesla.values import DBC, CANBUS, GEAR_MAP, DOORS, BUTTONS +from openpilot.selfdrive.car.tesla.values import CAR, DBC, CANBUS, GEAR_MAP, DOORS, BUTTONS from openpilot.selfdrive.car.interfaces import CarStateBase from opendbc.can.parser import CANParser from opendbc.can.can_define import CANDefine @@ -37,13 +37,15 @@ class CarState(CarStateBase): ret.brakePressed = bool(cp.vl["BrakeMessage"]["driverBrakeStatus"] != 1) # Steering wheel - self.hands_on_level = cp.vl["EPAS_sysStatus"]["EPAS_handsOnLevel"] - self.steer_warning = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacErrorCode"].get(int(cp.vl["EPAS_sysStatus"]["EPAS_eacErrorCode"]), None) - steer_status = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacStatus"].get(int(cp.vl["EPAS_sysStatus"]["EPAS_eacStatus"]), None) + epas_status = cp_cam.vl["EPAS3P_sysStatus"] if self.CP.carFingerprint == CAR.MODELS_RAVEN else cp.vl["EPAS_sysStatus"] - ret.steeringAngleDeg = -cp.vl["EPAS_sysStatus"]["EPAS_internalSAS"] + self.hands_on_level = epas_status["EPAS_handsOnLevel"] + self.steer_warning = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacErrorCode"].get(int(epas_status["EPAS_eacErrorCode"]), None) + steer_status = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacStatus"].get(int(epas_status["EPAS_eacStatus"]), None) + + ret.steeringAngleDeg = -epas_status["EPAS_internalSAS"] ret.steeringRateDeg = -cp.vl["STW_ANGLHP_STAT"]["StW_AnglHP_Spd"] # This is from a different angle sensor, and at different rate - ret.steeringTorque = -cp.vl["EPAS_sysStatus"]["EPAS_torsionBarTorque"] + ret.steeringTorque = -epas_status["EPAS_torsionBarTorque"] ret.steeringPressed = (self.hands_on_level > 0) ret.steerFaultPermanent = steer_status == "EAC_FAULT" ret.steerFaultTemporary = (self.steer_warning not in ("EAC_ERROR_IDLE", "EAC_ERROR_HANDS_ON")) @@ -85,7 +87,10 @@ class CarState(CarStateBase): ret.rightBlinker = (cp.vl["GTW_carState"]["BC_indicatorRStatus"] == 1) # Seatbelt - ret.seatbeltUnlatched = (cp.vl["SDM1"]["SDM_bcklDrivStatus"] != 1) + if self.CP.carFingerprint == CAR.MODELS_RAVEN: + ret.seatbeltUnlatched = (cp.vl["DriverSeat"]["buckleStatus"] != 1) + else: + ret.seatbeltUnlatched = (cp.vl["SDM1"]["SDM_bcklDrivStatus"] != 1) # TODO: blindspot @@ -111,9 +116,14 @@ class CarState(CarStateBase): ("DI_state", 10), ("STW_ACTN_RQ", 10), ("GTW_carState", 10), - ("SDM1", 10), ("BrakeMessage", 50), ] + + if CP.carFingerprint == CAR.MODELS_RAVEN: + messages.append(("DriverSeat", 20)) + else: + messages.append(("SDM1", 10)) + return CANParser(DBC[CP.carFingerprint]['chassis'], messages, CANBUS.chassis) @staticmethod @@ -122,4 +132,8 @@ class CarState(CarStateBase): # sig_address, frequency ("DAS_control", 40), ] + + if CP.carFingerprint == CAR.MODELS_RAVEN: + messages.append(("EPAS3P_sysStatus", 100)) + return CANParser(DBC[CP.carFingerprint]['chassis'], messages, CANBUS.autopilot_chassis) diff --git a/selfdrive/car/tesla/fingerprints.py b/selfdrive/car/tesla/fingerprints.py index 772ca59efa..9b6f3865be 100644 --- a/selfdrive/car/tesla/fingerprints.py +++ b/selfdrive/car/tesla/fingerprints.py @@ -25,4 +25,15 @@ FW_VERSIONS = { b'\x10#\x01', ], }, + CAR.MODELS_RAVEN: { + (Ecu.electricBrakeBooster, 0x64d, None): [ + b'1037123-00-A', + ], + (Ecu.fwdRadar, 0x671, None): [ + b'\x01\x00\x99\x02\x01\x00\x10\x00\x00AP8.3.03\x00\x10', + ], + (Ecu.eps, 0x730, None): [ + b'SX_0.0.0 (99),SR013.7', + ], + }, } diff --git a/selfdrive/car/tesla/interface.py b/selfdrive/car/tesla/interface.py index 537433a350..f989886738 100755 --- a/selfdrive/car/tesla/interface.py +++ b/selfdrive/car/tesla/interface.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 from cereal import car from panda import Panda -from openpilot.selfdrive.car.tesla.values import CANBUS +from openpilot.selfdrive.car.tesla.values import CANBUS, CAR from openpilot.selfdrive.car import get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase @@ -28,19 +28,20 @@ class CarInterface(CarInterfaceBase): # Check if we have messages on an auxiliary panda, and that 0x2bf (DAS_control) is present on the AP powertrain bus # If so, we assume that it is connected to the longitudinal harness. + flags = (Panda.FLAG_TESLA_RAVEN if candidate == CAR.MODELS_RAVEN else 0) if (CANBUS.autopilot_powertrain in fingerprint.keys()) and (0x2bf in fingerprint[CANBUS.autopilot_powertrain].keys()): ret.openpilotLongitudinalControl = True + flags |= Panda.FLAG_TESLA_LONG_CONTROL ret.safetyConfigs = [ - get_safety_config(car.CarParams.SafetyModel.tesla, Panda.FLAG_TESLA_LONG_CONTROL), - get_safety_config(car.CarParams.SafetyModel.tesla, Panda.FLAG_TESLA_LONG_CONTROL | Panda.FLAG_TESLA_POWERTRAIN), + get_safety_config(car.CarParams.SafetyModel.tesla, flags), + get_safety_config(car.CarParams.SafetyModel.tesla, flags | Panda.FLAG_TESLA_POWERTRAIN), ] else: ret.openpilotLongitudinalControl = False - ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.tesla, 0)] + ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.tesla, flags)] ret.steerLimitTimer = 1.0 ret.steerActuatorDelay = 0.25 - return ret def _update(self, c): diff --git a/selfdrive/car/tesla/radar_interface.py b/selfdrive/car/tesla/radar_interface.py index b3e7c7fcb1..599ab31059 100755 --- a/selfdrive/car/tesla/radar_interface.py +++ b/selfdrive/car/tesla/radar_interface.py @@ -1,38 +1,33 @@ #!/usr/bin/env python3 from cereal import car from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.tesla.values import DBC, CANBUS +from openpilot.selfdrive.car.tesla.values import CAR, DBC, CANBUS from openpilot.selfdrive.car.interfaces import RadarInterfaceBase -RADAR_MSGS_A = list(range(0x310, 0x36E, 3)) -RADAR_MSGS_B = list(range(0x311, 0x36F, 3)) -NUM_POINTS = len(RADAR_MSGS_A) - -def get_radar_can_parser(CP): - # Status messages - messages = [ - ('TeslaRadarSguInfo', 10), - ] - - # Radar tracks. There are also raw point clouds available, - # we don't use those. - for i in range(NUM_POINTS): - msg_id_a = RADAR_MSGS_A[i] - msg_id_b = RADAR_MSGS_B[i] - messages.extend([ - (msg_id_a, 8), - (msg_id_b, 8), - ]) - - return CANParser(DBC[CP.carFingerprint]['radar'], messages, CANBUS.radar) class RadarInterface(RadarInterfaceBase): def __init__(self, CP): super().__init__(CP) - self.rcp = get_radar_can_parser(CP) + self.CP = CP + + if CP.carFingerprint == CAR.MODELS_RAVEN: + messages = [('RadarStatus', 16)] + self.num_points = 40 + self.trigger_msg = 1119 + else: + messages = [('TeslaRadarSguInfo', 10)] + self.num_points = 32 + self.trigger_msg = 878 + + for i in range(self.num_points): + messages.extend([ + (f'RadarPoint{i}_A', 16), + (f'RadarPoint{i}_B', 16), + ]) + + self.rcp = CANParser(DBC[CP.carFingerprint]['radar'], messages, CANBUS.radar) self.updated_messages = set() self.track_id = 0 - self.trigger_msg = RADAR_MSGS_B[-1] def update(self, can_strings): if self.rcp is None: @@ -48,17 +43,24 @@ class RadarInterface(RadarInterfaceBase): # Errors errors = [] - sgu_info = self.rcp.vl['TeslaRadarSguInfo'] if not self.rcp.can_valid: errors.append('canError') - if sgu_info['RADC_HWFail'] or sgu_info['RADC_SGUFail'] or sgu_info['RADC_SensorDirty']: - errors.append('fault') + + if self.CP.carFingerprint == CAR.MODELS_RAVEN: + radar_status = self.rcp.vl['RadarStatus'] + if radar_status['sensorBlocked'] or radar_status['shortTermUnavailable'] or radar_status['vehDynamicsError']: + errors.append('fault') + else: + radar_status = self.rcp.vl['TeslaRadarSguInfo'] + if radar_status['RADC_HWFail'] or radar_status['RADC_SGUFail'] or radar_status['RADC_SensorDirty']: + errors.append('fault') + ret.errors = errors # Radar tracks - for i in range(NUM_POINTS): - msg_a = self.rcp.vl[RADAR_MSGS_A[i]] - msg_b = self.rcp.vl[RADAR_MSGS_B[i]] + for i in range(self.num_points): + msg_a = self.rcp.vl[f'RadarPoint{i}_A'] + msg_b = self.rcp.vl[f'RadarPoint{i}_B'] # Make sure msg A and B are together if msg_a['Index'] != msg_b['Index2']: diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index f33e62618c..43132970b0 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -1,8 +1,7 @@ from collections import namedtuple -from dataclasses import dataclass, field from cereal import car -from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarInfo from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -10,24 +9,25 @@ Ecu = car.CarParams.Ecu Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values']) - -@dataclass -class TeslaPlatformConfig(PlatformConfig): - dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('tesla_powertrain', 'tesla_radar', chassis_dbc='tesla_can')) - - class CAR(Platforms): - AP1_MODELS = TeslaPlatformConfig( + AP1_MODELS = PlatformConfig( 'TESLA AP1 MODEL S', CarInfo("Tesla AP1 Model S", "All"), - CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0) + CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0), + dbc_dict('tesla_powertrain', 'tesla_radar_bosch_generated', chassis_dbc='tesla_can') ) - AP2_MODELS = TeslaPlatformConfig( + AP2_MODELS = PlatformConfig( 'TESLA AP2 MODEL S', CarInfo("Tesla AP2 Model S", "All"), - AP1_MODELS.specs + AP1_MODELS.specs, + AP1_MODELS.dbc_dict + ) + MODELS_RAVEN = PlatformConfig( + 'TESLA MODEL S RAVEN', + CarInfo("Tesla Model S Raven", "All"), + AP1_MODELS.specs, + dbc_dict('tesla_powertrain', 'tesla_radar_continental_generated', chassis_dbc='tesla_can') ) - FW_QUERY_CONFIG = FwQueryConfig( requests=[ @@ -38,6 +38,13 @@ FW_QUERY_CONFIG = FwQueryConfig( rx_offset=0x08, bus=0, ), + Request( + [StdQueries.TESTER_PRESENT_REQUEST, StdQueries.SUPPLIER_SOFTWARE_VERSION_REQUEST], + [StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.SUPPLIER_SOFTWARE_VERSION_RESPONSE], + whitelist_ecus=[Ecu.eps], + rx_offset=0x08, + bus=0, + ), Request( [StdQueries.TESTER_PRESENT_REQUEST, StdQueries.UDS_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.UDS_VERSION_RESPONSE], @@ -48,7 +55,6 @@ FW_QUERY_CONFIG = FwQueryConfig( ] ) - class CANBUS: # Lateral harness chassis = 0 diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index ff747b5938..92ee7fa923 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -289,6 +289,7 @@ routes = [ CarTestRoute("6c14ee12b74823ce|2021-06-30--11-49-02", TESLA.AP1_MODELS), CarTestRoute("bb50caf5f0945ab1|2021-06-19--17-20-18", TESLA.AP2_MODELS), + CarTestRoute("66c1699b7697267d/2024-03-03--13-09-53", TESLA.MODELS_RAVEN), # Segments that test specific issues # Controls mismatch due to interceptor threshold diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index a8bae29391..b9eadc8cd5 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -263,7 +263,7 @@ class TestFwFingerprintTiming(unittest.TestCase): print(f'get_vin {name} case, query time={self.total_time / self.N} seconds') def test_fw_query_timing(self): - total_ref_time = {1: 8.3, 2: 9.2} + total_ref_time = {1: 8.4, 2: 9.3} brand_ref_times = { 1: { 'gm': 1.0, @@ -275,13 +275,14 @@ class TestFwFingerprintTiming(unittest.TestCase): 'mazda': 0.1, 'nissan': 0.8, 'subaru': 0.45, - 'tesla': 0.2, + 'tesla': 0.3, 'toyota': 1.6, 'volkswagen': 0.65, }, 2: { 'ford': 1.6, 'hyundai': 1.85, + 'tesla': 0.3, } } diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index 3cf17f3179..3de33b88db 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -18,6 +18,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] # Tesla has high torque "TESLA AP1 MODEL S" = [nan, 2.5, nan] "TESLA AP2 MODEL S" = [nan, 2.5, nan] +"TESLA MODEL S RAVEN" = [nan, 2.5, nan] # Guess "FORD BRONCO SPORT 1ST GEN" = [nan, 1.5, nan] From 7331b3cc95fbb3bdfb62bb04f0caa8275daa37e2 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 6 Mar 2024 13:39:49 -0800 Subject: [PATCH 104/599] it's called esim now --- scripts/cell.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/cell.sh b/scripts/cell.sh index 3f31978af5..4ba007a532 100755 --- a/scripts/cell.sh +++ b/scripts/cell.sh @@ -1,3 +1,3 @@ #!/usr/bin/bash -nmcli connection modify --temporary lte ipv4.route-metric 1 ipv6.route-metric 1 -nmcli con up lte +nmcli connection modify --temporary esim ipv4.route-metric 1 ipv6.route-metric 1 +nmcli con up esim From ba068a0f5822dccddb134b8fc520d1716c4ed1f7 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 6 Mar 2024 18:22:07 -0500 Subject: [PATCH 105/599] with_processes: add standalone context manager (#31746) helpers --- selfdrive/test/helpers.py | 40 +++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/selfdrive/test/helpers.py b/selfdrive/test/helpers.py index 210a283699..b345b929ec 100644 --- a/selfdrive/test/helpers.py +++ b/selfdrive/test/helpers.py @@ -1,3 +1,4 @@ +import contextlib import http.server import os import threading @@ -43,27 +44,34 @@ def release_only(f): f(self, *args, **kwargs) return wrap -def with_processes(processes, init_time=0, ignore_stopped=None): + +@contextlib.contextmanager +def processes_context(processes, init_time=0, ignore_stopped=None): ignore_stopped = [] if ignore_stopped is None else ignore_stopped + # start and assert started + for n, p in enumerate(processes): + managed_processes[p].start() + if n < len(processes) - 1: + time.sleep(init_time) + + assert all(managed_processes[name].proc.exitcode is None for name in processes) + + try: + yield [managed_processes[name] for name in processes] + # assert processes are still started + assert all(managed_processes[name].proc.exitcode is None for name in processes if name not in ignore_stopped) + finally: + for p in processes: + managed_processes[p].stop() + + +def with_processes(processes, init_time=0, ignore_stopped=None): def wrapper(func): @wraps(func) def wrap(*args, **kwargs): - # start and assert started - for n, p in enumerate(processes): - managed_processes[p].start() - if n < len(processes) - 1: - time.sleep(init_time) - assert all(managed_processes[name].proc.exitcode is None for name in processes) - - # call the function - try: - func(*args, **kwargs) - # assert processes are still started - assert all(managed_processes[name].proc.exitcode is None for name in processes if name not in ignore_stopped) - finally: - for p in processes: - managed_processes[p].stop() + with processes_context(processes, init_time, ignore_stopped): + return func(*args, **kwargs) return wrap return wrapper From ac771290414da337e1f800b23b01360c5471ece4 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 6 Mar 2024 18:24:46 -0500 Subject: [PATCH 106/599] updated: basic e2e update tests (#31742) * e2e update test * that too * fix * fix * fix running in docker * don't think GHA will work * also test switching branches * it's a test * lets not delete that yet * comment * space --- pyproject.toml | 1 + selfdrive/updated/tests/test_updated.py | 172 ++++++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100755 selfdrive/updated/tests/test_updated.py diff --git a/pyproject.toml b/pyproject.toml index 99a8602460..0f7734b3b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ testpaths = [ "selfdrive/thermald", "selfdrive/test/longitudinal_maneuvers", "selfdrive/test/process_replay/test_fuzzy.py", + "selfdrive/updated", "system/camerad", "system/hardware/tici", "system/loggerd", diff --git a/selfdrive/updated/tests/test_updated.py b/selfdrive/updated/tests/test_updated.py new file mode 100755 index 0000000000..d8ce9f3394 --- /dev/null +++ b/selfdrive/updated/tests/test_updated.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python3 +import os +import pathlib +import shutil +import signal +import subprocess +import tempfile +import time +import unittest +from unittest import mock + +import pytest +from openpilot.selfdrive.manager.process import ManagerProcess + + +from openpilot.selfdrive.test.helpers import processes_context +from openpilot.common.params import Params + + +def run(args, **kwargs): + return subprocess.run(args, **kwargs, check=True) + + +def update_release(directory, name, version, release_notes): + with open(directory / "RELEASES.md", "w") as f: + f.write(release_notes) + + (directory / "common").mkdir(exist_ok=True) + + with open(directory / "common" / "version.h", "w") as f: + f.write(f'#define COMMA_VERSION "{version}"') + + run(["git", "add", "."], cwd=directory) + run(["git", "commit", "-m", f"openpilot release {version}"], cwd=directory) + + +@pytest.mark.slow # TODO: can we test overlayfs in GHA? +class TestUpdateD(unittest.TestCase): + def setUp(self): + self.tmpdir = tempfile.mkdtemp() + + run(["sudo", "mount", "-t", "tmpfs", "tmpfs", self.tmpdir]) # overlayfs doesn't work inside of docker unless this is a tmpfs + + self.mock_update_path = pathlib.Path(self.tmpdir) + + self.params = Params() + + self.basedir = self.mock_update_path / "openpilot" + self.basedir.mkdir() + + self.staging_root = self.mock_update_path / "safe_staging" + self.staging_root.mkdir() + + self.remote_dir = self.mock_update_path / "remote" + self.remote_dir.mkdir() + + mock.patch("openpilot.common.basedir.BASEDIR", self.basedir).start() + + os.environ["UPDATER_STAGING_ROOT"] = str(self.staging_root) + os.environ["UPDATER_LOCK_FILE"] = str(self.mock_update_path / "safe_staging_overlay.lock") + + self.MOCK_RELEASES = { + "release3": ("0.1.2", "0.1.2 release notes"), + "master": ("0.1.3", "0.1.3 release notes"), + } + + def set_target_branch(self, branch): + self.params.put("UpdaterTargetBranch", branch) + + def setup_basedir_release(self, release): + self.params = Params() + self.set_target_branch(release) + run(["git", "clone", "-b", release, self.remote_dir, self.basedir]) + + def update_remote_release(self, release): + update_release(self.remote_dir, release, *self.MOCK_RELEASES[release]) + + def setup_remote_release(self, release): + run(["git", "init"], cwd=self.remote_dir) + run(["git", "checkout", "-b", release], cwd=self.remote_dir) + self.update_remote_release(release) + + def tearDown(self): + mock.patch.stopall() + run(["sudo", "umount", "-l", str(self.staging_root / "merged")]) + run(["sudo", "umount", "-l", self.tmpdir]) + shutil.rmtree(self.tmpdir) + + def send_check_for_updates_signal(self, updated: ManagerProcess): + updated.signal(signal.SIGUSR1.value) + + def send_download_signal(self, updated: ManagerProcess): + updated.signal(signal.SIGHUP.value) + + def _test_params(self, branch, fetch_available, update_available): + self.assertEqual(self.params.get("UpdaterTargetBranch", encoding="utf-8"), branch) + self.assertEqual(self.params.get_bool("UpdaterFetchAvailable"), fetch_available) + self.assertEqual(self.params.get_bool("UpdateAvailable"), update_available) + + def _test_update_params(self, branch, version, release_notes): + self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}")) + self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") + + def wait_for_idle(self, timeout=5, min_wait_time=2): + start = time.monotonic() + time.sleep(min_wait_time) + + while True: + waited = time.monotonic() - start + if self.params.get("UpdaterState", encoding="utf-8") == "idle": + print(f"waited {waited}s for idle") + break + + if waited > timeout: + raise TimeoutError("timed out waiting for idle") + + time.sleep(1) + + def test_new_release(self): + # Start on release3, simulate a release3 commit, ensure we fetch that update properly + self.setup_remote_release("release3") + self.setup_basedir_release("release3") + + with processes_context(["updated"]) as [updated]: + self._test_params("release3", False, False) + time.sleep(1) + self._test_params("release3", False, False) + + self.MOCK_RELEASES["release3"] = ("0.1.3", "0.1.3 release notes") + self.update_remote_release("release3") + + self.send_check_for_updates_signal(updated) + + self.wait_for_idle() + + self._test_params("release3", True, False) + + self.send_download_signal(updated) + + self.wait_for_idle() + + self._test_params("release3", False, True) + self._test_update_params("release3", *self.MOCK_RELEASES["release3"]) + + def test_switch_branches(self): + # Start on release3, request to switch to master manually, ensure we switched + self.setup_remote_release("release3") + self.setup_remote_release("master") + self.setup_basedir_release("release3") + + with processes_context(["updated"]) as [updated]: + self._test_params("release3", False, False) + self.wait_for_idle() + self._test_params("release3", False, False) + + self.set_target_branch("master") + self.send_check_for_updates_signal(updated) + + self.wait_for_idle() + + self._test_params("master", True, False) + + self.send_download_signal(updated) + + self.wait_for_idle() + + self._test_params("master", False, True) + self._test_update_params("master", *self.MOCK_RELEASES["master"]) + + +if __name__ == "__main__": + unittest.main() From 78a46ce72499ce627c50ff95aa630602e71b8e39 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 6 Mar 2024 15:47:44 -0800 Subject: [PATCH 107/599] car values formatting (#31747) values formatting --- selfdrive/car/body/values.py | 1 - selfdrive/car/chrysler/values.py | 1 - selfdrive/car/ford/values.py | 1 - selfdrive/car/gm/values.py | 1 - selfdrive/car/hyundai/values.py | 1 - selfdrive/car/mazda/values.py | 2 -- selfdrive/car/mock/values.py | 4 ---- selfdrive/car/nissan/values.py | 1 - selfdrive/car/subaru/values.py | 1 - selfdrive/car/tesla/values.py | 1 - selfdrive/car/toyota/values.py | 1 - selfdrive/car/values.py | 1 - selfdrive/car/volkswagen/values.py | 1 - 13 files changed, 17 deletions(-) diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index 6e0d0ec596..46afa857aa 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -38,5 +38,4 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) - DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 905e2e7270..7dcfa3749e 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -163,5 +163,4 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) - DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 76f505fa9b..add40368be 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -209,5 +209,4 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) - DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 17822e0c80..5401963ee6 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -247,5 +247,4 @@ CAMERA_ACC_CAR = {CAR.BOLT_EUV, CAR.SILVERADO, CAR.EQUINOX, CAR.TRAILBLAZER} STEER_THRESHOLD = 1.0 - DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 29a72ba715..1ed84d9187 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -847,7 +847,6 @@ LEGACY_SAFETY_MODE_CAR = CAR.with_flags(HyundaiFlags.LEGACY) UNSUPPORTED_LONGITUDINAL_CAR = CAR.with_flags(HyundaiFlags.LEGACY) | CAR.with_flags(HyundaiFlags.UNSUPPORTED_LONGITUDINAL) - DBC = CAR.create_dbc_map() if __name__ == "__main__": diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index 20a3ae0ae1..b55690f39a 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -107,6 +107,4 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) - - DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/mock/values.py b/selfdrive/car/mock/values.py index 7e399fab73..ddab599a93 100644 --- a/selfdrive/car/mock/values.py +++ b/selfdrive/car/mock/values.py @@ -1,7 +1,6 @@ from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms - class CAR(Platforms): MOCK = PlatformConfig( 'mock', @@ -9,6 +8,3 @@ class CAR(Platforms): CarSpecs(mass=1700, wheelbase=2.7, steerRatio=13), {} ) - - - diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index 8d33e0e705..c0ccb0febf 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -63,7 +63,6 @@ class CAR(Platforms): ) - DBC = CAR.create_dbc_map() # Default diagnostic session diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index acb60628b4..cc963404b7 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -265,6 +265,5 @@ FW_QUERY_CONFIG = FwQueryConfig( DBC = CAR.create_dbc_map() - if __name__ == "__main__": CAR.print_debug(SubaruFlags) diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index 43132970b0..ca3bb38a7a 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -98,5 +98,4 @@ class CarControllerParams: pass - DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 048e8b1033..d9dc8b5eba 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -608,5 +608,4 @@ ANGLE_CONTROL_CAR = CAR.with_flags(ToyotaFlags.ANGLE_CONTROL) # no resume button press required NO_STOP_TIMER_CAR = CAR.with_flags(ToyotaFlags.NO_STOP_TIMER) - DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/values.py b/selfdrive/car/values.py index 24119e2210..0c8249838b 100644 --- a/selfdrive/car/values.py +++ b/selfdrive/car/values.py @@ -18,7 +18,6 @@ BRANDS = [BODY, CHRYSLER, FORD, GM, HONDA, HYUNDAI, MAZDA, MOCK, NISSAN, SUBARU, PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in cast(list[Platform], brand)} - MapFunc = Callable[[Platform], Any] diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 36c82abf03..a45ddf431f 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -416,5 +416,4 @@ FW_QUERY_CONFIG = FwQueryConfig( extra_ecus=[(Ecu.fwdCamera, 0x74f, None)], ) - DBC = CAR.create_dbc_map() From 84797482e909ce017385fb3510d564ee5b08045d Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 6 Mar 2024 16:19:08 -0800 Subject: [PATCH 108/599] encoderd: fix large frames (#31681) * encoderd: fix large frames * Update camera_common.cc * just do this for now --------- Co-authored-by: Comma Device --- system/camerad/cameras/camera_common.cc | 6 +++++- system/loggerd/encoder/v4l_encoder.cc | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/system/camerad/cameras/camera_common.cc b/system/camerad/cameras/camera_common.cc index 91c6d44f84..fff4a62d31 100644 --- a/system/camerad/cameras/camera_common.cc +++ b/system/camerad/cameras/camera_common.cc @@ -79,8 +79,12 @@ void CameraBuf::init(cl_device_id device_id, cl_context context, CameraState *s, int nv12_height = VENUS_Y_SCANLINES(COLOR_FMT_NV12, rgb_height); assert(nv12_width == VENUS_UV_STRIDE(COLOR_FMT_NV12, rgb_width)); assert(nv12_height/2 == VENUS_UV_SCANLINES(COLOR_FMT_NV12, rgb_height)); - size_t nv12_size = 2346 * nv12_width; // comes from v4l2_format.fmt.pix_mp.plane_fmt[0].sizeimage size_t nv12_uv_offset = nv12_width * nv12_height; + + // the encoder HW tells us the size it wants after setting it up. + // TODO: VENUS_BUFFER_SIZE should give the size, but it's too small. dependent on encoder settings? + size_t nv12_size = (rgb_width >= 2688 ? 2900 : 2346)*nv12_width; + vipc_server->create_buffers_with_sizes(stream_type, YUV_BUFFER_COUNT, false, rgb_width, rgb_height, nv12_size, nv12_width, nv12_uv_offset); LOGD("created %d YUV vipc buffers with size %dx%d", YUV_BUFFER_COUNT, nv12_width, nv12_height); diff --git a/system/loggerd/encoder/v4l_encoder.cc b/system/loggerd/encoder/v4l_encoder.cc index 2bd2863126..853a17abbe 100644 --- a/system/loggerd/encoder/v4l_encoder.cc +++ b/system/loggerd/encoder/v4l_encoder.cc @@ -16,7 +16,12 @@ #define V4L2_QCOM_BUF_FLAG_CODECCONFIG 0x00020000 #define V4L2_QCOM_BUF_FLAG_EOS 0x02000000 -// echo 0x7fffffff > /sys/kernel/debug/msm_vidc/debug_level +/* + kernel debugging: + echo 0xff > /sys/module/videobuf2_core/parameters/debug + echo 0x7fffffff > /sys/kernel/debug/msm_vidc/debug_level + echo 0xff > /sys/devices/platform/soc/aa00000.qcom,vidc/video4linux/video33/dev_debug +*/ const int env_debug_encoder = (getenv("DEBUG_ENCODER") != NULL) ? atoi(getenv("DEBUG_ENCODER")) : 0; static void checked_ioctl(int fd, unsigned long request, void *argp) { From 997bb65e54badbb8d53ae940367a5d4146dc8e01 Mon Sep 17 00:00:00 2001 From: Clark934 Date: Wed, 6 Mar 2024 22:15:14 -0500 Subject: [PATCH 109/599] ruff: set tab size and quote style (#31749) --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 0f7734b3b3..8894d5eca2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -171,6 +171,7 @@ build-backend = "poetry.core.masonry.api" # https://beta.ruff.rs/docs/configuration/#using-pyprojecttoml [tool.ruff] +indent-width = 2 lint.select = ["E", "F", "W", "PIE", "C4", "ISC", "RUF008", "RUF100", "A", "B", "TID251"] lint.ignore = ["E741", "E402", "C408", "ISC003", "B027", "B024"] line-length = 160 @@ -195,3 +196,5 @@ lint.flake8-implicit-str-concat.allow-multiline=false [tool.coverage.run] concurrency = ["multiprocessing", "thread"] +[tool.ruff.format] +quote-style = "preserve" From b4c8e0834d23e757d37b7157dc23eac3ed655bdf Mon Sep 17 00:00:00 2001 From: Michel Le Bihan Date: Thu, 7 Mar 2024 04:16:21 +0100 Subject: [PATCH 110/599] Simulator: Add world status reporting (#31740) --- tools/sim/bridge/common.py | 6 +++--- .../sim/bridge/metadrive/metadrive_bridge.py | 4 +++- tools/sim/bridge/metadrive/metadrive_world.py | 16 +++++++++++++-- tools/sim/lib/common.py | 2 +- tools/sim/scenarios/metadrive/stay_in_lane.py | 20 +++++++++++++------ 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/tools/sim/bridge/common.py b/tools/sim/bridge/common.py index 78ddfa5aa6..34d11bb98c 100644 --- a/tools/sim/bridge/common.py +++ b/tools/sim/bridge/common.py @@ -56,14 +56,14 @@ class SimulatorBridge(ABC): try: self._run(q) finally: - self.close() + self.close("bridge terminated") - def close(self): + def close(self, reason): self.started.value = False self._exit_event.set() if self.world is not None: - self.world.close() + self.world.close(reason) def run(self, queue, retries=-1): bridge_p = Process(name="bridge", target=self.bridge_keep_alive, args=(queue, retries)) diff --git a/tools/sim/bridge/metadrive/metadrive_bridge.py b/tools/sim/bridge/metadrive/metadrive_bridge.py index 3190cb81b9..c2ea92798a 100644 --- a/tools/sim/bridge/metadrive/metadrive_bridge.py +++ b/tools/sim/bridge/metadrive/metadrive_bridge.py @@ -1,3 +1,5 @@ +from multiprocessing import Queue + from metadrive.component.sensors.base_camera import _cuda_enable from metadrive.component.map.pg_map import MapGenerateMethod @@ -80,4 +82,4 @@ class MetaDriveBridge(SimulatorBridge): preload_models=False ) - return MetaDriveWorld(config, self.dual_camera) + return MetaDriveWorld(Queue(), config, self.dual_camera) diff --git a/tools/sim/bridge/metadrive/metadrive_world.py b/tools/sim/bridge/metadrive/metadrive_world.py index 312860593d..3570205069 100644 --- a/tools/sim/bridge/metadrive/metadrive_world.py +++ b/tools/sim/bridge/metadrive/metadrive_world.py @@ -12,8 +12,9 @@ from openpilot.tools.sim.lib.camerad import W, H class MetaDriveWorld(World): - def __init__(self, config, dual_camera = False): + def __init__(self, status_q, config, dual_camera = False): super().__init__(dual_camera) + self.status_q = status_q self.camera_array = Array(ctypes.c_uint8, W*H*3) self.road_image = np.frombuffer(self.camera_array.get_obj(), dtype=np.uint8).reshape((H, W, 3)) self.wide_camera_array = None @@ -34,12 +35,14 @@ class MetaDriveWorld(World): self.vehicle_state_send, self.exit_event)) self.metadrive_process.start() + self.status_q.put({"status": "starting"}) print("----------------------------------------------------------") print("---- Spawning Metadrive world, this might take awhile ----") print("----------------------------------------------------------") self.vehicle_state_recv.recv() # wait for a state message to ensure metadrive is launched + self.status_q.put({"status": "started"}) self.steer_ratio = 15 self.vc = [0.0,0.0] @@ -65,6 +68,11 @@ class MetaDriveWorld(World): while self.simulation_state_recv.poll(0): md_state: metadrive_simulation_state = self.simulation_state_recv.recv() if md_state.done: + self.status_q.put({ + "status": "terminating", + "reason": "done", + "done_info": md_state.done_info + }) self.exit_event.set() def read_sensors(self, state: SimulatorState): @@ -85,6 +93,10 @@ class MetaDriveWorld(World): def reset(self): self.should_reset = True - def close(self): + def close(self, reason: str): + self.status_q.put({ + "status": "terminating", + "reason": reason, + }) self.exit_event.set() self.metadrive_process.join() diff --git a/tools/sim/lib/common.py b/tools/sim/lib/common.py index 76224c61de..168b3aa324 100644 --- a/tools/sim/lib/common.py +++ b/tools/sim/lib/common.py @@ -92,7 +92,7 @@ class World(ABC): pass @abstractmethod - def close(self): + def close(self, reason: str): pass @abstractmethod diff --git a/tools/sim/scenarios/metadrive/stay_in_lane.py b/tools/sim/scenarios/metadrive/stay_in_lane.py index 55fb2cb9bd..6d5f680247 100755 --- a/tools/sim/scenarios/metadrive/stay_in_lane.py +++ b/tools/sim/scenarios/metadrive/stay_in_lane.py @@ -1,6 +1,5 @@ #!/usr/bin/env python -from typing import Any from multiprocessing import Queue from metadrive.component.sensors.base_camera import _cuda_enable @@ -38,7 +37,8 @@ def create_map(): class MetaDriveBridge(SimulatorBridge): TICKS_PER_FRAME = 5 - def __init__(self, dual_camera, high_quality): + def __init__(self, world_status_q, dual_camera, high_quality): + self.world_status_q = world_status_q self.should_render = False super().__init__(dual_camera, high_quality) @@ -72,11 +72,19 @@ class MetaDriveBridge(SimulatorBridge): preload_models=False ) - return MetaDriveWorld(config, self.dual_camera) + return MetaDriveWorld(world_status_q, config, self.dual_camera) if __name__ == "__main__": - queue: Any = Queue() - simulator_bridge = MetaDriveBridge(True, False) - simulator_process = simulator_bridge.run(queue) + command_queue: Queue = Queue() + world_status_q: Queue = Queue() + simulator_bridge = MetaDriveBridge(world_status_q, True, False) + simulator_process = simulator_bridge.run(command_queue) + + while True: + world_status = world_status_q.get() + print(f"World Status: {str(world_status)}") + if world_status["status"] == "terminating": + break + simulator_process.join() From 28b4e9962d907533a367a855d25391a7c08304f1 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 6 Mar 2024 23:39:11 -0800 Subject: [PATCH 111/599] Hyundai Palisade: allow fingerprinting without comma power (#31752) * Palisade gets camera, radar, eps * Add versions from d23a555519923793 * add FW from 0af43ba62cc3ffc4 * remove CAN fingerprints! --- selfdrive/car/hyundai/fingerprints.py | 7 ++++--- selfdrive/car/hyundai/values.py | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index fa5296cfa7..1f8fd98939 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -74,9 +74,6 @@ FINGERPRINTS = { { 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 544: 8, 576: 8, 593: 8, 688: 5, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 909: 8, 912: 7, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 6, 1151: 6, 1168: 7, 1173: 8, 1180: 8, 1186: 2, 1191: 2, 1265: 4, 1268: 8, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1371: 8, 1407: 8, 1419: 8, 1420: 8, 1425: 2, 1427: 6, 1429: 8, 1430: 8, 1448: 8, 1456: 4, 1470: 8, 1476: 8, 1535: 8 }], - CAR.PALISADE: [{ - 67: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 546: 8, 547: 8, 548: 8, 549: 8, 576: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 913: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1123: 8, 1136: 8, 1151: 6, 1155: 8, 1156: 8, 1157: 4, 1162: 8, 1164: 8, 1168: 7, 1170: 8, 1173: 8, 1180: 8, 1186: 2, 1191: 2, 1193: 8, 1210: 8, 1225: 8, 1227: 8, 1265: 4, 1280: 8, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 8, 1384: 8, 1407: 8, 1419: 8, 1427: 6, 1456: 4, 1470: 8, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2005: 8, 2008: 8, 2012: 8 - }], } FW_VERSIONS = { @@ -727,6 +724,7 @@ FW_VERSIONS = { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00LX ESC \x01 103\x19\t\x10 58910-S8360', b'\xf1\x00LX ESC \x01 1031\t\x10 58910-S8360', + b'\xf1\x00LX ESC \x01 104 \x10\x16 58910-S8360', b'\xf1\x00LX ESC \x0b 101\x19\x03\x17 58910-S8330', b'\xf1\x00LX ESC \x0b 102\x19\x05\x07 58910-S8330', b'\xf1\x00LX ESC \x0b 103\x19\t\x07 58910-S8330', @@ -748,10 +746,12 @@ FW_VERSIONS = { b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-S8000 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104', + b'\xf1\x00LX2 MDPS R 1.00 1.02 56370-S8300 9318', b'\xf1\x00ON MDPS C 1.00 1.00 56340-S9000 8B13', b'\xf1\x00ON MDPS C 1.00 1.01 56340-S9000 9201', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00LX2 MFC AT KOR LHD 1.00 1.08 99211-S8100 200903', b'\xf1\x00LX2 MFC AT USA LHD 1.00 1.00 99211-S8110 210226', b'\xf1\x00LX2 MFC AT USA LHD 1.00 1.03 99211-S8100 190125', b'\xf1\x00LX2 MFC AT USA LHD 1.00 1.05 99211-S8100 190909', @@ -765,6 +765,7 @@ FW_VERSIONS = { b'\xf1\x00bcsh8p54 U872\x00\x00\x00\x00\x00\x00TON4G38NB1\x96z28', b'\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', b'\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', + b'\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX2G38NB5X\xfa\xe88', b'\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00TON2G38NB5j\x94.\xde', b'\xf1\x87LBLUFN591307KF25vgvw\x97wwwy\x99\xa7\x99\x99\xaa\xa9\x9af\x88\x96h\x95o\xf7\xff\x99f/\xff\xe4c\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB2\xd7\xc1/\xd1', b"\xf1\x87LBLUFN622950KF36\xa8\x88\x88\x88\x87w\x87xh\x99\x96\x89\x88\x99\x98\x89\x88\x99\x98\x89\x87o\xf6\xff\x98\x88o\xffx'\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8", diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 1ed84d9187..13321b4573 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -804,9 +804,9 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.transmission: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.SONATA], - Ecu.engine: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.SONATA], - Ecu.abs: [CAR.SONATA], + Ecu.transmission: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.PALISADE, CAR.SONATA], + Ecu.engine: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.PALISADE, CAR.SONATA], + Ecu.abs: [CAR.PALISADE, CAR.SONATA], }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms From 2a29778ae2c7af26cfc014d04dadf15b1c0a5c66 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 00:14:56 -0800 Subject: [PATCH 112/599] HKG: test platform codes per platform (#31753) * test * clean up --- selfdrive/car/hyundai/tests/test_hyundai.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index c7100d03f0..61b11a1992 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -98,6 +98,23 @@ class TestHyundaiFingerprint(unittest.TestCase): fws = data.draw(fw_strategy) get_platform_codes(fws) + def test_expected_platform_codes(self): + # Ensures we don't accidentally add multiple platform codes for a car unless it is intentional + for car_model, ecus in FW_VERSIONS.items(): + with self.subTest(car_model=car_model.value): + for ecu, fws in ecus.items(): + if ecu[0] not in PLATFORM_CODE_ECUS: + continue + + # Third and fourth character are usually EV/hybrid identifiers + codes = {code.split(b"-")[0][:2] for code, _ in get_platform_codes(fws)} + if car_model == CAR.PALISADE: + self.assertEqual(codes, {b"LX", b"ON"}, f"Car has unexpected platform codes: {car_model} {codes}") + elif car_model == CAR.KONA_EV and ecu[0] == Ecu.fwdCamera: + self.assertEqual(codes, {b"OE", b"OS"}, f"Car has unexpected platform codes: {car_model} {codes}") + else: + self.assertEqual(len(codes), 1, f"Car has multiple platform codes: {car_model} {codes}") + # Tests for platform codes, part numbers, and FW dates which Hyundai will use to fuzzy # fingerprint in the absence of full FW matches: def test_platform_code_ecus_available(self): From 4624bb3d7cf30db4fc8d1a68aa0cf21e1ad9ff0c Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 00:24:50 -0800 Subject: [PATCH 113/599] Sonata LF: remove CAN fingerprint (#31754) add FW from 7ae1c131629d96e5 --- selfdrive/car/hyundai/fingerprints.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 1f8fd98939..85cb81aa5f 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -32,9 +32,6 @@ FINGERPRINTS = { CAR.SONATA: [{ 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 546: 8, 549: 8, 550: 8, 576: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 8, 865: 8, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 908: 8, 909: 8, 912: 7, 913: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1089: 5, 1096: 8, 1107: 5, 1108: 8, 1114: 8, 1136: 8, 1145: 8, 1151: 8, 1155: 8, 1156: 8, 1157: 4, 1162: 8, 1164: 8, 1168: 8, 1170: 8, 1173: 8, 1180: 8, 1183: 8, 1184: 8, 1186: 2, 1191: 2, 1193: 8, 1210: 8, 1225: 8, 1227: 8, 1265: 4, 1268: 8, 1280: 8, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1330: 8, 1339: 8, 1342: 6, 1343: 8, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 8, 1379: 8, 1384: 8, 1394: 8, 1407: 8, 1419: 8, 1427: 6, 1446: 8, 1456: 4, 1460: 8, 1470: 8, 1485: 8, 1504: 3, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2008: 8, 2012: 8, 2015: 8 }], - CAR.SONATA_LF: [{ - 66: 8, 67: 8, 68: 8, 127: 8, 273: 8, 274: 8, 275: 8, 339: 8, 356: 4, 399: 8, 447: 8, 512: 6, 544: 8, 593: 8, 608: 8, 688: 5, 790: 8, 809: 8, 832: 8, 884: 8, 897: 8, 899: 8, 902: 8, 903: 6, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1151: 6, 1168: 7, 1170: 8, 1253: 8, 1254: 8, 1255: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1314: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1342: 6, 1345: 8, 1348: 8, 1349: 8, 1351: 8, 1353: 8, 1363: 8, 1365: 8, 1366: 8, 1367: 8, 1369: 8, 1397: 8, 1407: 8, 1415: 8, 1419: 8, 1425: 2, 1427: 6, 1440: 8, 1456: 4, 1470: 8, 1472: 8, 1486: 8, 1487: 8, 1491: 8, 1530: 8, 1532: 5, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2008: 8, 2009: 8, 2012: 8, 2013: 8, 2014: 8, 2016: 8, 2017: 8, 2024: 8, 2025: 8 - }], CAR.KIA_SORENTO: [{ 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1384: 8, 1407: 8, 1411: 8, 1419: 8, 1425: 2, 1427: 6, 1444: 8, 1456: 4, 1470: 8, 1489: 1 }], @@ -412,6 +409,7 @@ FW_VERSIONS = { b'\xf1\x00LFF LKAS AT USA LHD 1.01 1.02 95740-C1000 E52', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x006T6H0_C2\x00\x006T6B7051\x00\x00TLF0G24SL4;\x08\x12i', b'\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24NL1\xb0\x9f\xee\xf5', b'\xf1\x87LAHSGN012918KF10\x98\x88x\x87\x88\x88x\x87\x88\x88\x98\x88\x87w\x88w\x88\x88\x98\x886o\xf6\xff\x98w\x7f\xff3\x00\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2\x00\x00\x00\x00', b'\xf1\x87LAHSGN012918KF10\x98\x88x\x87\x88\x88x\x87\x88\x88\x98\x88\x87w\x88w\x88\x88\x98\x886o\xf6\xff\x98w\x7f\xff3\x00\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2H\r\xbdm', From 9f7c577564ba7f267a1e4d94c3d61ef41149b04c Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 00:53:31 -0800 Subject: [PATCH 114/599] Hyundai Ioniq Hybrid 2017: remove CAN fingerprints fixing mismatch (#31755) * Run bot on 0e13ee2b821302f4 * remove IONIQ CAN fingerprints and move to Niro PHEV (part numbers match!) * remove dups * best guess is Hyundai C (IONIQ is also) --- docs/CARS.md | 3 ++- selfdrive/car/hyundai/fingerprints.py | 8 ++++---- selfdrive/car/hyundai/values.py | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 654f788908..591a76e4cb 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -4,7 +4,7 @@ A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. -# 288 Supported Cars +# 289 Supported Cars |Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Resume from stop|Hardware Needed
 |Video| |---|---|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:| @@ -143,6 +143,7 @@ A supported vehicle is one that just works when you install a comma device. All |Kia|Niro EV 2021|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Hybrid 2018|All|Stock|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 85cb81aa5f..5a7cfea5a5 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -53,9 +53,6 @@ FINGERPRINTS = { CAR.IONIQ_EV_2020: [{ 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 524: 8, 544: 7, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 8, 1151: 6, 1155: 8, 1156: 8, 1157: 4, 1164: 8, 1168: 7, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1225: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1379: 8, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1456: 4, 1470: 8, 1473: 8, 1507: 8, 1535: 8, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2005: 8, 2008: 8, 2012: 8, 2013: 8 }], - CAR.IONIQ: [{ - 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 524: 8, 544: 8, 576: 8, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 6, 1151: 6, 1155: 8, 1156: 8, 1157: 4, 1164: 8, 1168: 7, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1225: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1379: 8, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1448: 8, 1456: 4, 1470: 8, 1473: 8, 1476: 8, 1507: 8, 1535: 8, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2005: 8, 2008: 8, 2012: 8, 2013: 8 - }], CAR.KONA_EV: [{ 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 544: 8, 549: 8, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 8, 1151: 6, 1168: 7, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1225: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1307: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1378: 4, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1456: 4, 1470: 8, 1473: 8, 1507: 8, 1535: 8, 2000: 8, 2004: 8, 2008: 8, 2012: 8, 1157: 4, 1193: 8, 1379: 8, 1988: 8, 1996: 8 }], @@ -409,8 +406,8 @@ FW_VERSIONS = { b'\xf1\x00LFF LKAS AT USA LHD 1.01 1.02 95740-C1000 E52', ], (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006T6H0_C2\x00\x006T6B7051\x00\x00TLF0G24SL4;\x08\x12i', b'\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24NL1\xb0\x9f\xee\xf5', + b'\xf1\x006T6H0_C2\x00\x006T6B7051\x00\x00TLF0G24SL4;\x08\x12i', b'\xf1\x87LAHSGN012918KF10\x98\x88x\x87\x88\x88x\x87\x88\x88\x98\x88\x87w\x88w\x88\x88\x98\x886o\xf6\xff\x98w\x7f\xff3\x00\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2\x00\x00\x00\x00', b'\xf1\x87LAHSGN012918KF10\x98\x88x\x87\x88\x88x\x87\x88\x88\x98\x88\x87w\x88w\x88\x88\x98\x886o\xf6\xff\x98w\x7f\xff3\x00\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2H\r\xbdm', b'\xf1\x87LAJSG49645724HF0\x87x\x87\x88\x87www\x88\x99\xa8\x89\x88\x99\xa8\x89\x88\x99\xa8\x89S_\xfb\xff\x87f\x7f\xff^2\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2H\r\xbdm', @@ -1179,11 +1176,13 @@ FW_VERSIONS = { }, CAR.KIA_NIRO_PHEV: { (Ecu.engine, 0x7e0, None): [ + b'\xf1\x816H6D0051\x00\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x816H6D1051\x00\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x816H6F4051\x00\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x006U3H0_C2\x00\x006U3G0051\x00\x00HDE0G16NS2\x00\x00\x00\x00', b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PDE0G16NL2&[\xc3\x01', b'\xf1\x816U3H3051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H3051\x00\x00PDE0G16NS1\x00\x00\x00\x00', b'\xf1\x816U3H3051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H3051\x00\x00PDE0G16NS1\x13\xcd\x88\x92', @@ -1195,6 +1194,7 @@ FW_VERSIONS = { b'\xf1\x00DE MDPS C 1.00 1.09 56310G5301\x00 4DEHC109', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00DEH MFC AT USA LHD 1.00 1.00 95740-G5010 170117', b'\xf1\x00DEP MFC AT USA LHD 1.00 1.00 95740-G5010 170117', b'\xf1\x00DEP MFC AT USA LHD 1.00 1.01 95740-G5010 170424', b'\xf1\x00DEP MFC AT USA LHD 1.00 1.05 99211-G5000 190826', diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 13321b4573..199e0bba4d 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -418,6 +418,7 @@ class CAR(Platforms): KIA_NIRO_PHEV = HyundaiPlatformConfig( "KIA NIRO HYBRID 2019", [ + HyundaiCarInfo("Kia Niro Hybrid 2018", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarInfo("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarInfo("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), ], From 66680515a79a29feb27d7dc3780232478ccd1ad8 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 01:09:08 -0800 Subject: [PATCH 115/599] Hyundai Genesis: remove CAN fingerprints (#31757) We already have the FW from 1bc85e3b0b53e1ad, 1b85fa0a357240ac, and cb5df08e7b5d0633 --- selfdrive/car/hyundai/fingerprints.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 5a7cfea5a5..1bed722537 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -5,21 +5,6 @@ from openpilot.selfdrive.car.hyundai.values import CAR Ecu = car.CarParams.Ecu FINGERPRINTS = { - CAR.HYUNDAI_GENESIS: [{ - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1024: 2, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1342: 6, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 5, 1407: 8, 1419: 8, 1427: 6, 1434: 2, 1456: 4 - }, - { - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1024: 2, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 3, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1378: 4, 1379: 8, 1384: 5, 1407: 8, 1419: 8, 1427: 6, 1434: 2, 1456: 4 - }, - { - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 912: 7, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1268: 8, 1280: 1, 1281: 3, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 5, 1407: 8, 1419: 8, 1427: 6, 1434: 2, 1437: 8, 1456: 4 - }, - { - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1378: 4, 1379: 8, 1384: 5, 1407: 8, 1425: 2, 1427: 6, 1437: 8, 1456: 4 - }, - { - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 5, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1437: 8, 1456: 4 - }], CAR.SANTA_FE: [{ 67: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1155: 8, 1156: 8, 1162: 8, 1164: 8, 1168: 7, 1170: 8, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1227: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1379: 8, 1384: 8, 1407: 8, 1414: 3, 1419: 8, 1427: 6, 1456: 4, 1470: 8 }, From 2e0a4a8574c1d576b898b677b441f1014d536687 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 01:23:05 -0800 Subject: [PATCH 116/599] Hyundai: remove Sorento and G80 CAN fingerprints (#31758) * Add FW * rm can fp --- selfdrive/car/hyundai/fingerprints.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 1bed722537..6349318fbf 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -17,21 +17,9 @@ FINGERPRINTS = { CAR.SONATA: [{ 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 546: 8, 549: 8, 550: 8, 576: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 8, 865: 8, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 908: 8, 909: 8, 912: 7, 913: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1089: 5, 1096: 8, 1107: 5, 1108: 8, 1114: 8, 1136: 8, 1145: 8, 1151: 8, 1155: 8, 1156: 8, 1157: 4, 1162: 8, 1164: 8, 1168: 8, 1170: 8, 1173: 8, 1180: 8, 1183: 8, 1184: 8, 1186: 2, 1191: 2, 1193: 8, 1210: 8, 1225: 8, 1227: 8, 1265: 4, 1268: 8, 1280: 8, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1330: 8, 1339: 8, 1342: 6, 1343: 8, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 8, 1379: 8, 1384: 8, 1394: 8, 1407: 8, 1419: 8, 1427: 6, 1446: 8, 1456: 4, 1460: 8, 1470: 8, 1485: 8, 1504: 3, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2008: 8, 2012: 8, 2015: 8 }], - CAR.KIA_SORENTO: [{ - 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1384: 8, 1407: 8, 1411: 8, 1419: 8, 1425: 2, 1427: 6, 1444: 8, 1456: 4, 1470: 8, 1489: 1 - }], CAR.KIA_STINGER: [{ 67: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 359: 8, 544: 8, 576: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 4, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 4, 1379: 8, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1456: 4, 1470: 8 }], - CAR.GENESIS_G80: [{ - 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1024: 2, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1156: 8, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1191: 2, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1434: 2, 1456: 4, 1470: 8 - }, - { - 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 359: 8, 544: 8, 546: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1156: 8, 1157: 4, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 3, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1434: 2, 1437: 8, 1456: 4, 1470: 8 - }, - { - 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1156: 8, 1157: 4, 1162: 8, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1193: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1437: 8, 1456: 4, 1470: 8 - }], CAR.GENESIS_G90: [{ 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 359: 8, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1162: 4, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 3, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1434: 2, 1456: 4, 1470: 8, 1988: 8, 2000: 8, 2003: 8, 2004: 8, 2005: 8, 2008: 8, 2011: 8, 2012: 8, 2013: 8 }], @@ -874,6 +862,7 @@ FW_VERSIONS = { CAR.GENESIS_G80: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DH__ SCC F-CUP 1.00 1.01 96400-B1120 ', + b'\xf1\x00DH__ SCC F-CUP 1.00 1.02 96400-B1120 ', b'\xf1\x00DH__ SCC FHCUP 1.00 1.01 96400-B1110 ', ], (Ecu.fwdCamera, 0x7c4, None): [ @@ -881,10 +870,12 @@ FW_VERSIONS = { b'\xf1\x00DH LKAS AT USA LHD 1.01 1.01 95895-B1500 161014', b'\xf1\x00DH LKAS AT USA LHD 1.01 1.02 95895-B1500 170810', b'\xf1\x00DH LKAS AT USA LHD 1.01 1.03 95895-B1500 180713', + b'\xf1\x00DH LKAS AT USA LHD 1.01 1.04 95895-B1500 181213', ], (Ecu.transmission, 0x7e1, None): [ b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0G33KH2\xae\xde\xd5!', b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0G38NH2j\x9dA\x1c', + b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0G38NH3\xaf\x1a7\xe2', b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0T33NH3\x97\xe6\xbc\xb8', b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00TDH0G38NH3:-\xa9n', b'\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SDH0T33NH4\xd7O\x9e\xc9', @@ -1503,15 +1494,18 @@ FW_VERSIONS = { }, CAR.KIA_SORENTO: { (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00UMP LKAS AT USA LHD 1.00 1.00 95740-C6550 d00', b'\xf1\x00UMP LKAS AT USA LHD 1.01 1.01 95740-C6550 d01', ], (Ecu.abs, 0x7d1, None): [ + b'\xf1\x00UM ESC \x02 12 \x18\x05\x05 58910-C6300', b'\xf1\x00UM ESC \x0c 12 \x18\x05\x06 58910-C6330', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00UM__ SCC F-CUP 1.00 1.00 96400-C6500 ', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x00bcsh8p54 U834\x00\x00\x00\x00\x00\x00TUM2G33NL7K\xae\xdd\x1d', b'\xf1\x87LDKUAA0348164HE3\x87www\x87www\x88\x88\xa8\x88w\x88\x97xw\x88\x97x\x86o\xf8\xff\x87f\x7f\xff\x15\xe0\xf1\x81U811\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U811\x00\x00\x00\x00\x00\x00TUM4G33NL3V|DG', ], (Ecu.engine, 0x7e0, None): [ From 98a491b1f2f20f6ece847f4ad57369bc429b7e93 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Thu, 7 Mar 2024 09:54:33 +0000 Subject: [PATCH 117/599] Ford: parse distance button (#31733) Ford: parse ACC gap toggle button Use the ACC gap toggle button signal from the SCCM. There are two other signals for "increase" and "decrease" gap buttons, but no supported car has these buttons. --- selfdrive/car/ford/carstate.py | 5 +++++ selfdrive/car/ford/interface.py | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/ford/carstate.py b/selfdrive/car/ford/carstate.py index 039e245754..b3ee6a4649 100644 --- a/selfdrive/car/ford/carstate.py +++ b/selfdrive/car/ford/carstate.py @@ -19,6 +19,9 @@ class CarState(CarStateBase): self.vehicle_sensors_valid = False + self.prev_distance_button = 0 + self.distance_button = 0 + def update(self, cp, cp_cam): ret = car.CarState.new_message() @@ -83,6 +86,8 @@ class CarState(CarStateBase): ret.rightBlinker = cp.vl["Steering_Data_FD1"]["TurnLghtSwtch_D_Stat"] == 2 # TODO: block this going to the camera otherwise it will enable stock TJA ret.genericToggle = bool(cp.vl["Steering_Data_FD1"]["TjaButtnOnOffPress"]) + self.prev_distance_button = self.distance_button + self.distance_button = cp.vl["Steering_Data_FD1"]["AccButtnGapTogglePress"] # lock info ret.doorOpen = any([cp.vl["BodyInfo_3_FD1"]["DrStatDrv_B_Actl"], cp.vl["BodyInfo_3_FD1"]["DrStatPsngr_B_Actl"], diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index a79b4af2e0..ed8b010491 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -1,11 +1,12 @@ from cereal import car from panda import Panda from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import get_safety_config +from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.ford.fordcan import CanBus from openpilot.selfdrive.car.ford.values import Ecu, FordFlags from openpilot.selfdrive.car.interfaces import CarInterfaceBase +ButtonType = car.CarState.ButtonEvent.Type TransmissionType = car.CarParams.TransmissionType GearShifter = car.CarState.GearShifter @@ -61,6 +62,8 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) + ret.buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) + events = self.create_common_events(ret, extra_gears=[GearShifter.manumatic]) if not self.CS.vehicle_sensors_valid: events.add(car.CarEvent.EventName.vehicleSensorsInvalid) From c4ef17ac28fdd2130fb8b9f4463575904739f394 Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Thu, 7 Mar 2024 07:03:39 -0300 Subject: [PATCH 118/599] Toyota TSS-P: parse distance button from SDSU (#31741) * Toyota TSS-P: parse distance button from SDSU * it's 1000hz wtf... da99509bd910288a/2024-03-04--13-51-30 * add events for SDSU * need to check for CAN filter * clena up * check * whoops --------- Co-authored-by: Shane Smiskol --- selfdrive/car/toyota/carstate.py | 10 +++++++++- selfdrive/car/toyota/interface.py | 5 ++++- selfdrive/car/toyota/values.py | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index caaf7c2e17..166f6735a0 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -167,10 +167,13 @@ class CarState(CarStateBase): self.lkas_hud = copy.copy(cp_cam.vl["LKAS_HUD"]) # distance button is wired to the ACC module (camera or radar) + self.prev_distance_button = self.distance_button if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): - self.prev_distance_button = self.distance_button self.distance_button = cp_acc.vl["ACC_CONTROL"]["DISTANCE"] + elif self.CP.flags & ToyotaFlags.SMART_DSU and not self.CP.flags & ToyotaFlags.RADAR_CAN_FILTER: + self.distance_button = cp.vl["SDSU"]["FD_BUTTON"] + return ret @staticmethod @@ -221,6 +224,11 @@ class CarState(CarStateBase): ("PRE_COLLISION", 33), ] + if CP.flags & ToyotaFlags.SMART_DSU and not CP.flags & ToyotaFlags.RADAR_CAN_FILTER: + messages += [ + ("SDSU", 100), + ] + return CANParser(DBC[CP.carFingerprint]["pt"], messages, 0) @staticmethod diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index bd982728a5..7ad9feed3d 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -49,6 +49,9 @@ class CarInterface(CarInterfaceBase): if 0x2FF in fingerprint[0] or (0x2AA in fingerprint[0] and candidate in NO_DSU_CAR): ret.flags |= ToyotaFlags.SMART_DSU.value + if 0x2AA in fingerprint[0] and candidate in NO_DSU_CAR: + ret.flags |= ToyotaFlags.RADAR_CAN_FILTER.value + # In TSS2 cars, the camera does long control found_ecus = [fw.ecu for fw in car_fw] ret.enableDsu = len(found_ecus) > 0 and Ecu.dsu not in found_ecus and candidate not in (NO_DSU_CAR | UNSUPPORTED_DSU_CAR) \ @@ -173,7 +176,7 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): + if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR) or (self.CP.flags & ToyotaFlags.SMART_DSU and not self.CP.flags & ToyotaFlags.RADAR_CAN_FILTER): ret.buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) # events diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index d9dc8b5eba..2be7ca1865 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -46,6 +46,7 @@ class ToyotaFlags(IntFlag): HYBRID = 1 SMART_DSU = 2 DISABLE_RADAR = 4 + RADAR_CAN_FILTER = 1024 # Static flags TSS2 = 8 From cec9f591130615c9760bdca18e0439dd62634319 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 03:53:41 -0800 Subject: [PATCH 119/599] Toyota: set distance lines to max (#31728) * press the button * 33hz/2 * fix tests * PCM_CRUISE_SM is a UI message: it goes to 0 when not displayed, and is much lower rate * only change when enabled so we don't hide the welcome message on cruise main button * unbump * then you can get into a weird state * stuff * for unplugged DSU we can still read PCM distance, but not buttons * skip * skip --- selfdrive/car/toyota/carcontroller.py | 14 ++++++++++++-- selfdrive/car/toyota/carstate.py | 18 ++++++++++++------ selfdrive/car/toyota/toyotacan.py | 4 ++-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index d960114f1b..8e8e0292f2 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -37,6 +37,7 @@ class CarController(CarControllerBase): self.last_standstill = False self.standstill_req = False self.steer_rate_counter = 0 + self.distance_button = 0 self.packer = CANPacker(dbc_name) self.gas = 0 @@ -139,14 +140,23 @@ class CarController(CarControllerBase): if (self.frame % 3 == 0 and self.CP.openpilotLongitudinalControl) or pcm_cancel_cmd: lead = hud_control.leadVisible or CS.out.vEgo < 12. # at low speed we always assume the lead is present so ACC can be engaged + # Press distance button until we are at the correct bar length. Only change while enabled to avoid skipping startup popup + if self.frame % 6 == 0: + if CS.pcm_follow_distance_values.get(CS.pcm_follow_distance, "UNKNOWN") != "FAR" and CS.out.cruiseState.enabled and \ + self.CP.carFingerprint not in UNSUPPORTED_DSU_CAR: + self.distance_button = not self.distance_button + else: + self.distance_button = 0 + # Lexus IS uses a different cancellation message if pcm_cancel_cmd and self.CP.carFingerprint in UNSUPPORTED_DSU_CAR: can_sends.append(toyotacan.create_acc_cancel_command(self.packer)) elif self.CP.openpilotLongitudinalControl: - can_sends.append(toyotacan.create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type, fcw_alert)) + can_sends.append(toyotacan.create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type, fcw_alert, + self.distance_button)) self.accel = pcm_accel_cmd else: - can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False)) + can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False, self.distance_button)) if self.frame % 2 == 0 and self.CP.enableGasInterceptor and self.CP.openpilotLongitudinalControl: # send exactly zero if gas cmd is zero. Interceptor will send the max between read value and gas cmd. diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index 166f6735a0..65fced80f4 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -43,6 +43,9 @@ class CarState(CarStateBase): self.prev_distance_button = 0 self.distance_button = 0 + self.pcm_follow_distance = 0 + self.pcm_follow_distance_values = can_define.dv['PCM_CRUISE_2']['PCM_FOLLOW_DISTANCE'] + self.low_speed_lockout = False self.acc_type = 1 self.lkas_hud = {} @@ -166,13 +169,16 @@ class CarState(CarStateBase): if self.CP.carFingerprint != CAR.PRIUS_V: self.lkas_hud = copy.copy(cp_cam.vl["LKAS_HUD"]) - # distance button is wired to the ACC module (camera or radar) - self.prev_distance_button = self.distance_button - if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): - self.distance_button = cp_acc.vl["ACC_CONTROL"]["DISTANCE"] + if self.CP.carFingerprint not in UNSUPPORTED_DSU_CAR: + self.pcm_follow_distance = cp.vl["PCM_CRUISE_2"]["PCM_FOLLOW_DISTANCE"] - elif self.CP.flags & ToyotaFlags.SMART_DSU and not self.CP.flags & ToyotaFlags.RADAR_CAN_FILTER: - self.distance_button = cp.vl["SDSU"]["FD_BUTTON"] + if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR) or (self.CP.flags & ToyotaFlags.SMART_DSU and not self.CP.flags & ToyotaFlags.RADAR_CAN_FILTER): + # distance button is wired to the ACC module (camera or radar) + self.prev_distance_button = self.distance_button + if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): + self.distance_button = cp_acc.vl["ACC_CONTROL"]["DISTANCE"] + else: + self.distance_button = cp.vl["SDSU"]["FD_BUTTON"] return ret diff --git a/selfdrive/car/toyota/toyotacan.py b/selfdrive/car/toyota/toyotacan.py index e14e3e53a0..1cc99b41b5 100644 --- a/selfdrive/car/toyota/toyotacan.py +++ b/selfdrive/car/toyota/toyotacan.py @@ -33,12 +33,12 @@ def create_lta_steer_command(packer, steer_control_type, steer_angle, steer_req, return packer.make_can_msg("STEERING_LTA", 0, values) -def create_accel_command(packer, accel, pcm_cancel, standstill_req, lead, acc_type, fcw_alert): +def create_accel_command(packer, accel, pcm_cancel, standstill_req, lead, acc_type, fcw_alert, distance): # TODO: find the exact canceling bit that does not create a chime values = { "ACCEL_CMD": accel, "ACC_TYPE": acc_type, - "DISTANCE": 0, + "DISTANCE": distance, "MINI_CAR": lead, "PERMIT_BRAKING": 1, "RELEASE_STANDSTILL": not standstill_req, From 7f11517257dab0826dabc79fdccc0e22ab8e957e Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 7 Mar 2024 10:28:52 -0500 Subject: [PATCH 120/599] Nissan: Remove unused code (#31768) --- selfdrive/car/nissan/interface.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index a94b97de20..60cc3a0090 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -30,11 +30,6 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_adas, self.cp_cam) - buttonEvents = [] - be = car.CarState.ButtonEvent.new_message() - be.type = car.CarState.ButtonEvent.Type.accelCruise - buttonEvents.append(be) - events = self.create_common_events(ret, extra_gears=[car.CarState.GearShifter.brake]) if self.CS.lkas_enabled: From ca79e3ec0b01a26ff4025bde3b15ded4b38709e5 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 11:34:03 -0500 Subject: [PATCH 121/599] and controlsd (#31769) --- selfdrive/car/card.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index 9231794a6c..82335500d8 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -70,7 +70,7 @@ class CarD: if prev_cp is not None: self.params.put("CarParamsPrevRoute", prev_cp) - # Write CarParams for radard + # Write CarParams for controls and radard cp_bytes = self.CP.to_bytes() self.params.put("CarParams", cp_bytes) self.params.put_nonblocking("CarParamsCache", cp_bytes) From c39c54a0d81dfe9067be84759e064c3c6b0eec1a Mon Sep 17 00:00:00 2001 From: mike8643 <98910897+mike8643@users.noreply.github.com> Date: Thu, 7 Mar 2024 13:57:41 -0500 Subject: [PATCH 122/599] otisserv: `set_destination` and `locations` endpoints for non-prime users (#243) ios shortcut support --- selfdrive/navd/otisserv.py | 61 +++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 11 deletions(-) diff --git a/selfdrive/navd/otisserv.py b/selfdrive/navd/otisserv.py index 1dbf2a5335..d8fca7fc44 100644 --- a/selfdrive/navd/otisserv.py +++ b/selfdrive/navd/otisserv.py @@ -50,7 +50,10 @@ class OtisServ(BaseHTTPRequestHandler): return if self.path == '/?reset=1': params.put("NavDestination", "") - if use_amap: + if self.path == '/locations': + self.get_locations() + return + elif use_amap: if self.path == '/style.css': self.send_response(200) self.send_header("Content-type", "text/css") @@ -108,16 +111,25 @@ class OtisServ(BaseHTTPRequestHandler): if self.get_app_token() is None: self.display_page_app_token() return - self.display_page_addr_input() + if self.path != '/locations': + self.display_page_addr_input() def do_POST(self): use_amap = params.get_bool("EnableAmap") use_gmap = not use_amap and params.get_bool("EnableGmap") postvars = self.parse_POST() - self.send_response(200) - self.send_header("Content-type", "text/html") - self.end_headers() + # set_destination endpoint + if self.path == '/set_destination': + self.send_response(200) + self.send_header("Content-type", "application/json") + self.end_headers() + response_data = {'success': True} + self.wfile.write(json.dumps(response_data).encode('utf-8')) + else: + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() if use_amap: # amap token @@ -172,6 +184,16 @@ class OtisServ(BaseHTTPRequestHandler): lng, lat = self.gcj02towgs84(lng, lat) params.put('NavDestination', "{\"latitude\": %f, \"longitude\": %f, \"place_name\": \"%s\"}" % (lat, lng, name)) self.to_json(lat, lng, save_type, name) + if postvars is not None: + latitude_value = postvars.get("latitude") + longitude_value = postvars.get("longitude") + if latitude_value is not None and latitude_value != "" and longitude_value is not None and longitude_value != "": + lat = float(latitude_value) + lng = float(longitude_value) + save_type = "recent" + name = postvars.get("place_name", [""]) + params.put('NavDestination', "{\"latitude\": %f, \"longitude\": %f, \"place_name\": \"%s\"}" % (lat, lng, name)) + self.to_json(lat, lng, save_type, name) # favorites if not use_gmap and "fav_val" in postvars: addr = postvars.get("fav_val")[0] @@ -208,12 +230,13 @@ class OtisServ(BaseHTTPRequestHandler): else: self.display_page_addr_input("Place Not Found") return - if use_amap: - self.display_page_amap() - elif use_gmap: - self.display_page_gmap() - else: - self.display_page_addr_input() + if self.path != '/set_destination': + if use_amap: + self.display_page_amap() + elif use_gmap: + self.display_page_gmap() + else: + self.display_page_addr_input() def get_logo(self): self.send_response(200) @@ -223,6 +246,14 @@ class OtisServ(BaseHTTPRequestHandler): self.wfile.write(f.read()) f.close() + def get_locations(self): + self.send_response(200) + self.send_header('Content-type','application/json') + self.end_headers() + val = params.get("ApiCache_NavDestinations", encoding='utf-8') + if val is not None: + self.wfile.write(val.encode('utf-8')) + def get_gmap_css(self): self.wfile.write(bytes(self.get_parsed_template("gmap/style.css"), "utf-8")) @@ -335,6 +366,14 @@ class OtisServ(BaseHTTPRequestHandler): postvars = parse_qs( self.rfile.read(length).decode('utf-8'), keep_blank_values=1) + elif ctype == 'application/json': + length = int(self.headers['content-length']) + post_data = self.rfile.read(length).decode('utf-8') + try: + postvars = json.loads(post_data) + except json.JSONDecodeError: + self.send_error(400, 'Invalid JSON data') + return None else: postvars = {} return postvars From 9cb256891fd68f146d840ef1a68a0adacfd0883e Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 14:01:33 -0500 Subject: [PATCH 123/599] test_updated: add test for no update (#31772) no update test --- selfdrive/updated/tests/test_updated.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/selfdrive/updated/tests/test_updated.py b/selfdrive/updated/tests/test_updated.py index d8ce9f3394..10d6e9d5a3 100755 --- a/selfdrive/updated/tests/test_updated.py +++ b/selfdrive/updated/tests/test_updated.py @@ -116,6 +116,22 @@ class TestUpdateD(unittest.TestCase): time.sleep(1) + def test_no_update(self): + # Start on release3, ensure we don't fetch any updates + self.setup_remote_release("release3") + self.setup_basedir_release("release3") + + with processes_context(["updated"]) as [updated]: + self._test_params("release3", False, False) + time.sleep(1) + self._test_params("release3", False, False) + + self.send_check_for_updates_signal(updated) + + self.wait_for_idle() + + self._test_params("release3", False, False) + def test_new_release(self): # Start on release3, simulate a release3 commit, ensure we fetch that update properly self.setup_remote_release("release3") From a919d27afc9a225978737e86241adbdba336bbdd Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 14:33:40 -0500 Subject: [PATCH 124/599] fix car test routes typing (#31773) * Fix typing * and fix test_car_model * fix --- selfdrive/car/tests/routes.py | 3 ++- selfdrive/car/tests/test_models.py | 25 +++++++++++-------------- tools/car_porting/test_car_model.py | 6 +++++- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 92ee7fa923..265f052b16 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -10,6 +10,7 @@ from openpilot.selfdrive.car.nissan.values import CAR as NISSAN from openpilot.selfdrive.car.mazda.values import CAR as MAZDA from openpilot.selfdrive.car.subaru.values import CAR as SUBARU from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA +from openpilot.selfdrive.car.values import Platform from openpilot.selfdrive.car.volkswagen.values import CAR as VOLKSWAGEN from openpilot.selfdrive.car.tesla.values import CAR as TESLA from openpilot.selfdrive.car.body.values import CAR as COMMA @@ -29,7 +30,7 @@ non_tested_cars = [ class CarTestRoute(NamedTuple): route: str - car_model: str | None + car_model: Platform | None segment: int | None = None diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index b7d20e5a83..1ef8c5b676 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -19,6 +19,7 @@ from openpilot.selfdrive.car.fingerprints import all_known_cars from openpilot.selfdrive.car.car_helpers import FRAME_FINGERPRINT, interfaces from openpilot.selfdrive.car.honda.values import CAR as HONDA, HondaFlags from openpilot.selfdrive.car.tests.routes import non_tested_cars, routes, CarTestRoute +from openpilot.selfdrive.car.values import PLATFORMS, Platform from openpilot.selfdrive.controls.controlsd import Controls from openpilot.selfdrive.test.helpers import read_segment_list from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT @@ -64,7 +65,7 @@ def get_test_cases() -> list[tuple[str, CarTestRoute | None]]: @pytest.mark.slow @pytest.mark.shared_download_cache class TestCarModelBase(unittest.TestCase): - car_model: str | None = None + platform: Platform | None = None test_route: CarTestRoute | None = None test_route_on_bucket: bool = True # whether the route is on the preserved CI bucket @@ -93,8 +94,8 @@ class TestCarModelBase(unittest.TestCase): car_fw = msg.carParams.carFw if msg.carParams.openpilotLongitudinalControl: experimental_long = True - if cls.car_model is None and not cls.ci: - cls.car_model = msg.carParams.carFingerprint + if cls.platform is None and not cls.ci: + cls.platform = PLATFORMS.get(msg.carParams.carFingerprint) # Log which can frame the panda safety mode left ELM327, for CAN validity checks elif msg.which() == 'pandaStates': @@ -155,15 +156,11 @@ class TestCarModelBase(unittest.TestCase): if cls.__name__ == 'TestCarModel' or cls.__name__.endswith('Base'): raise unittest.SkipTest - if 'FILTER' in os.environ: - if not cls.car_model.startswith(tuple(os.environ.get('FILTER').split(','))): - raise unittest.SkipTest - if cls.test_route is None: - if cls.car_model in non_tested_cars: - print(f"Skipping tests for {cls.car_model}: missing route") + if cls.platform in non_tested_cars: + print(f"Skipping tests for {cls.platform}: missing route") raise unittest.SkipTest - raise Exception(f"missing test route for {cls.car_model}") + raise Exception(f"missing test route for {cls.platform}") car_fw, can_msgs, experimental_long = cls.get_testing_data() @@ -172,10 +169,10 @@ class TestCarModelBase(unittest.TestCase): cls.can_msgs = sorted(can_msgs, key=lambda msg: msg.logMonoTime) - cls.CarInterface, cls.CarController, cls.CarState = interfaces[cls.car_model] - cls.CP = cls.CarInterface.get_params(cls.car_model, cls.fingerprint, car_fw, experimental_long, docs=False) + cls.CarInterface, cls.CarController, cls.CarState = interfaces[cls.platform] + cls.CP = cls.CarInterface.get_params(cls.platform, cls.fingerprint, car_fw, experimental_long, docs=False) assert cls.CP - assert cls.CP.carFingerprint == cls.car_model + assert cls.CP.carFingerprint == cls.platform os.environ["COMMA_CACHE"] = DEFAULT_DOWNLOAD_CACHE_ROOT @@ -478,7 +475,7 @@ class TestCarModelBase(unittest.TestCase): "This is fine to fail for WIP car ports, just let us know and we can upload your routes to the CI bucket.") -@parameterized_class(('car_model', 'test_route'), get_test_cases()) +@parameterized_class(('platform', 'test_route'), get_test_cases()) @pytest.mark.xdist_group_class_property('test_route') class TestCarModel(TestCarModelBase): pass diff --git a/tools/car_porting/test_car_model.py b/tools/car_porting/test_car_model.py index 86980b054b..1dfac7dcf3 100755 --- a/tools/car_porting/test_car_model.py +++ b/tools/car_porting/test_car_model.py @@ -5,6 +5,7 @@ import unittest from openpilot.selfdrive.car.tests.routes import CarTestRoute from openpilot.selfdrive.car.tests.test_models import TestCarModel +from openpilot.selfdrive.car.values import PLATFORMS from openpilot.tools.lib.route import SegmentName @@ -31,7 +32,10 @@ if __name__ == "__main__": route_or_segment_name = SegmentName(args.route_or_segment_name.strip(), allow_route_name=True) segment_num = route_or_segment_name.segment_num if route_or_segment_name.segment_num != -1 else None - test_route = CarTestRoute(route_or_segment_name.route_name.canonical_name, args.car, segment=segment_num) + + platform = PLATFORMS.get(args.car) + + test_route = CarTestRoute(route_or_segment_name.route_name.canonical_name, platform, segment=segment_num) test_suite = create_test_models_suite([test_route], ci=args.ci) unittest.TextTestRunner().run(test_suite) From 8d9b96cf230830b3ce88672e383b4b0e50f7f887 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 15:09:07 -0500 Subject: [PATCH 125/599] test helpers: http server context (#31774) * http context * fix * fix --- selfdrive/test/helpers.py | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/selfdrive/test/helpers.py b/selfdrive/test/helpers.py index b345b929ec..c157b98b62 100644 --- a/selfdrive/test/helpers.py +++ b/selfdrive/test/helpers.py @@ -88,23 +88,28 @@ def read_segment_list(segment_list_path): return [(platform[2:], segment) for platform, segment in zip(seg_list[::2], seg_list[1::2], strict=True)] +@contextlib.contextmanager +def http_server_context(handler, setup=None): + host = '127.0.0.1' + server = http.server.HTTPServer((host, 0), handler) + port = server.server_port + t = threading.Thread(target=server.serve_forever) + t.start() + + if setup is not None: + setup(host, port) + + try: + yield (host, port) + finally: + server.shutdown() + server.server_close() + t.join() + + def with_http_server(func, handler=http.server.BaseHTTPRequestHandler, setup=None): @wraps(func) def inner(*args, **kwargs): - host = '127.0.0.1' - server = http.server.HTTPServer((host, 0), handler) - port = server.server_port - t = threading.Thread(target=server.serve_forever) - t.start() - - if setup is not None: - setup(host, port) - - try: - return func(*args, f'http://{host}:{port}', **kwargs) - finally: - server.shutdown() - server.server_close() - t.join() - + with http_server_context(handler, setup) as (host, port): + return func(*args, f"http://{host}:{port}", **kwargs) return inner From 5b5938dc3a0ddc668b57ad98896a38c7b14b480d Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 7 Mar 2024 15:51:43 -0500 Subject: [PATCH 126/599] Update CHANGELOGS.md --- CHANGELOGS.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOGS.md b/CHANGELOGS.md index fd7c841de1..0f35e91564 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -5,6 +5,11 @@ sunnypilot - 0.9.7.0 (2024-xx-xx) ************************ * UPDATED: Synced with commaai's openpilot * master commit 56e343b (February 27, 2024) +* NEW❗: iOS Siri Shortcuts Navigation support thanks to twilsonco and mike86437! + * iOS and macOS Shortcuts to quickly set navigation destinations from your iOS device + * comma Prime support + * Personal Mapbox/Amap/Google Maps token support + * Instructions on how to set up your iOS Siri Shortcuts: https://routinehub.co/shortcut/17677/ sunnypilot - 0.9.6.1 (2024-02-27) ======================== From dcc49077a0b84d4886b617dfeeb3b8310b23813d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 16:00:09 -0500 Subject: [PATCH 127/599] test_updated: basic agnos update test (#31776) test agnos --- selfdrive/updated/tests/test_updated.py | 44 ++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/selfdrive/updated/tests/test_updated.py b/selfdrive/updated/tests/test_updated.py index 10d6e9d5a3..93b6e11383 100755 --- a/selfdrive/updated/tests/test_updated.py +++ b/selfdrive/updated/tests/test_updated.py @@ -21,7 +21,7 @@ def run(args, **kwargs): return subprocess.run(args, **kwargs, check=True) -def update_release(directory, name, version, release_notes): +def update_release(directory, name, version, agnos_version, release_notes): with open(directory / "RELEASES.md", "w") as f: f.write(release_notes) @@ -30,6 +30,9 @@ def update_release(directory, name, version, release_notes): with open(directory / "common" / "version.h", "w") as f: f.write(f'#define COMMA_VERSION "{version}"') + with open(directory / "launch_env.sh", "w") as f: + f.write(f'export AGNOS_VERSION="{agnos_version}"') + run(["git", "add", "."], cwd=directory) run(["git", "commit", "-m", f"openpilot release {version}"], cwd=directory) @@ -60,8 +63,8 @@ class TestUpdateD(unittest.TestCase): os.environ["UPDATER_LOCK_FILE"] = str(self.mock_update_path / "safe_staging_overlay.lock") self.MOCK_RELEASES = { - "release3": ("0.1.2", "0.1.2 release notes"), - "master": ("0.1.3", "0.1.3 release notes"), + "release3": ("0.1.2", "1.2", "0.1.2 release notes"), + "master": ("0.1.3", "1.2", "0.1.3 release notes"), } def set_target_branch(self, branch): @@ -97,7 +100,7 @@ class TestUpdateD(unittest.TestCase): self.assertEqual(self.params.get_bool("UpdaterFetchAvailable"), fetch_available) self.assertEqual(self.params.get_bool("UpdateAvailable"), update_available) - def _test_update_params(self, branch, version, release_notes): + def _test_update_params(self, branch, version, agnos_version, release_notes): self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}")) self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") @@ -142,7 +145,7 @@ class TestUpdateD(unittest.TestCase): time.sleep(1) self._test_params("release3", False, False) - self.MOCK_RELEASES["release3"] = ("0.1.3", "0.1.3 release notes") + self.MOCK_RELEASES["release3"] = ("0.1.3", "1.2", "0.1.3 release notes") self.update_remote_release("release3") self.send_check_for_updates_signal(updated) @@ -183,6 +186,37 @@ class TestUpdateD(unittest.TestCase): self._test_params("master", False, True) self._test_update_params("master", *self.MOCK_RELEASES["master"]) + def test_agnos_update(self): + # Start on release3, push an update with an agnos change + self.setup_remote_release("release3") + self.setup_basedir_release("release3") + + with mock.patch("openpilot.system.hardware.AGNOS", "True"), \ + mock.patch("openpilot.system.hardware.tici.hardware.Tici.get_os_version", "1.2"), \ + mock.patch("openpilot.system.hardware.tici.agnos.get_target_slot_number"), \ + mock.patch("openpilot.system.hardware.tici.agnos.flash_agnos_update"), \ + processes_context(["updated"]) as [updated]: + + self._test_params("release3", False, False) + time.sleep(1) + self._test_params("release3", False, False) + + self.MOCK_RELEASES["release3"] = ("0.1.3", "1.3", "0.1.3 release notes") + self.update_remote_release("release3") + + self.send_check_for_updates_signal(updated) + + self.wait_for_idle() + + self._test_params("release3", True, False) + + self.send_download_signal(updated) + + self.wait_for_idle() + + self._test_params("release3", False, True) + self._test_update_params("release3", *self.MOCK_RELEASES["release3"]) + if __name__ == "__main__": unittest.main() From 8ba5d660f38c9d74df208aa79d1c6ae85937f4c5 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 17:01:28 -0500 Subject: [PATCH 128/599] common PlatformFlags base class + test for < 32 bits (#31779) * add 32 bit check * space * this is not required * jk yes we do --- selfdrive/car/__init__.py | 5 +++++ selfdrive/car/chrysler/values.py | 5 ++--- selfdrive/car/ford/values.py | 6 +++--- selfdrive/car/honda/values.py | 6 +++--- selfdrive/car/hyundai/values.py | 6 +++--- selfdrive/car/mazda/values.py | 5 ++--- selfdrive/car/subaru/values.py | 6 +++--- selfdrive/car/toyota/values.py | 6 +++--- selfdrive/car/volkswagen/values.py | 6 +++--- 9 files changed, 27 insertions(+), 24 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 1f784a4ab2..525394590d 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -318,3 +318,8 @@ class Platforms(str, ReprEnum): for flag, platforms in platforms_with_flag.items(): print(f"{flag:32s}: {', '.join(p.name for p in platforms)}") + + +class PlatformFlags(IntFlag): + def __init__(self, value: int): + assert value < 2**32, "undefined behaviour with >32 bit flags" diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 7dcfa3749e..72972fcf4f 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -1,16 +1,15 @@ -from enum import IntFlag from dataclasses import dataclass, field from cereal import car from panda.python import uds -from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, PlatformFlags, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu -class ChryslerFlags(IntFlag): +class ChryslerFlags(PlatformFlags): # Detected flags HIGHER_MIN_STEERING_SPEED = 1 diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index add40368be..72131b650b 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -1,9 +1,9 @@ from dataclasses import dataclass, field -from enum import Enum, IntFlag +from enum import Enum import panda.python.uds as uds from cereal import car -from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, dbc_dict, DbcDict, PlatformConfig, Platforms +from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, PlatformFlags, dbc_dict, DbcDict, PlatformConfig, Platforms from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ Device from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -39,7 +39,7 @@ class CarControllerParams: pass -class FordFlags(IntFlag): +class FordFlags(PlatformFlags): # Static flags CANFD = 1 diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 4960380bbc..77aa8f6750 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -1,10 +1,10 @@ from dataclasses import dataclass -from enum import Enum, IntFlag +from enum import Enum from cereal import car from openpilot.common.conversions import Conversions as CV from panda.python import uds -from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, PlatformFlags, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -45,7 +45,7 @@ class CarControllerParams: self.STEER_LOOKUP_V = [v * -1 for v in CP.lateralParams.torqueV][1:][::-1] + list(CP.lateralParams.torqueV) -class HondaFlags(IntFlag): +class HondaFlags(PlatformFlags): # Detected flags # Bosch models with alternate set of LKAS_HUD messages BOSCH_EXT_HUD = 1 diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 199e0bba4d..dfd642e3c0 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -1,11 +1,11 @@ import re from dataclasses import dataclass, field -from enum import Enum, IntFlag +from enum import Enum from cereal import car from panda.python import uds from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, PlatformFlags, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 @@ -51,7 +51,7 @@ class CarControllerParams: self.STEER_MAX = 384 -class HyundaiFlags(IntFlag): +class HyundaiFlags(PlatformFlags): # Dynamic Flags CANFD_HDA2 = 1 CANFD_ALT_BUTTONS = 2 diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index b55690f39a..3a2a93ad09 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -1,9 +1,8 @@ from dataclasses import dataclass, field -from enum import IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, PlatformFlags, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -37,7 +36,7 @@ class MazdaCarSpecs(CarSpecs): tireStiffnessFactor: float = 0.7 # not optimized yet -class MazdaFlags(IntFlag): +class MazdaFlags(PlatformFlags): # Static flags # Gen 1 hardware: same CAN messages and same camera GEN1 = 1 diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index cc963404b7..77b30f89be 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -1,9 +1,9 @@ from dataclasses import dataclass, field -from enum import Enum, IntFlag +from enum import Enum from cereal import car from panda.python import uds -from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, PlatformFlags, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Tool, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -52,7 +52,7 @@ class CarControllerParams: BRAKE_LOOKUP_V = [BRAKE_MAX, BRAKE_MIN] -class SubaruFlags(IntFlag): +class SubaruFlags(PlatformFlags): # Detected flags SEND_INFOTAINMENT = 1 DISABLE_EYESIGHT = 2 diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 2be7ca1865..50a4195153 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -1,11 +1,11 @@ import re from collections import defaultdict from dataclasses import dataclass, field -from enum import Enum, IntFlag +from enum import Enum from cereal import car from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, PlatformFlags, Platforms from openpilot.selfdrive.car import AngleRateLimit, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarInfo, Column, CarParts, CarHarness from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -41,7 +41,7 @@ class CarControllerParams: self.STEER_DELTA_DOWN = 25 # always lower than 45 otherwise the Rav4 faults (Prius seems ok with 50) -class ToyotaFlags(IntFlag): +class ToyotaFlags(PlatformFlags): # Detected flags HYBRID = 1 SMART_DSU = 2 diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index a45ddf431f..5f658fb9eb 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -1,12 +1,12 @@ from collections import namedtuple from dataclasses import dataclass, field -from enum import Enum, IntFlag +from enum import Enum from cereal import car from panda.python import uds from opendbc.can.can_define import CANDefine from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms +from openpilot.selfdrive.car import PlatformFlags, dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ Device from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 @@ -109,7 +109,7 @@ class CANBUS: cam = 2 -class VolkswagenFlags(IntFlag): +class VolkswagenFlags(PlatformFlags): # Detected flags STOCK_HCA_PRESENT = 1 From 9f0201bdd42e87c15c8d822da12c19f757ea2017 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 17:41:58 -0500 Subject: [PATCH 129/599] vscode: remove non-symlinked openpilot directories from python analysis (#31780) anaylsis --- .vscode/settings.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index daf74ca777..a7c9b2ac44 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,5 +12,15 @@ "**/.git": true, "**/.venv": true, "**/__pycache__": true - } + }, + "python.analysis.exclude": [ + "**/.git", + "**/.venv", + "**/__pycache__", + // exclude directories should be using the symlinked version + "common/**", + "selfdrive/**", + "system/**", + "tools/**", + ] } \ No newline at end of file From 257db40d57b158b33dbd834c946fb86c2ed1e9bc Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 17:58:36 -0500 Subject: [PATCH 130/599] ruff: Exclude body and cereal (#31782) --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 8894d5eca2..10b99a9ddc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -177,6 +177,8 @@ lint.ignore = ["E741", "E402", "C408", "ISC003", "B027", "B024"] line-length = 160 target-version="py311" exclude = [ + "body", + "cereal", "panda", "opendbc", "rednose_repo", From 5d710ecf5720fcdf507557b6925a72dd63cc3e66 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 18:30:31 -0500 Subject: [PATCH 131/599] Subaru: log eyesight faults as acc faults (#31716) * log cruise fault * better comment * spacing * backwards * moved * copy the other one * localized Co-authored-by: Shane Smiskol --------- Co-authored-by: Shane Smiskol --- selfdrive/car/subaru/carstate.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/subaru/carstate.py b/selfdrive/car/subaru/carstate.py index ebf0ca9062..821ff2c151 100644 --- a/selfdrive/car/subaru/carstate.py +++ b/selfdrive/car/subaru/carstate.py @@ -29,6 +29,16 @@ class CarState(CarStateBase): cp_brakes = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp ret.brakePressed = cp_brakes.vl["Brake_Status"]["Brake"] == 1 + cp_es_distance = cp_body if self.CP.flags & (SubaruFlags.GLOBAL_GEN2 | SubaruFlags.HYBRID) else cp_cam + if not (self.CP.flags & SubaruFlags.HYBRID): + eyesight_fault = bool(cp_es_distance.vl["ES_Distance"]["Cruise_Fault"]) + + # if openpilot is controlling long, an eyesight fault is a non-critical fault. otherwise it's an ACC fault + if self.CP.openpilotLongitudinalControl: + ret.carFaultedNonCritical = eyesight_fault + else: + ret.accFaulted = eyesight_fault + cp_wheels = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp ret.wheelSpeeds = self.get_wheel_speeds( cp_wheels.vl["Wheel_Speeds"]["FL"], @@ -84,7 +94,6 @@ class CarState(CarStateBase): cp.vl["BodyInfo"]["DOOR_OPEN_FL"]]) ret.steerFaultPermanent = cp.vl["Steering_Torque"]["Steer_Error_1"] == 1 - cp_es_distance = cp_body if self.CP.flags & (SubaruFlags.GLOBAL_GEN2 | SubaruFlags.HYBRID) else cp_cam if self.CP.flags & SubaruFlags.PREGLOBAL: self.cruise_button = cp_cam.vl["ES_Distance"]["Cruise_Button"] self.ready = not cp_cam.vl["ES_DashStatus"]["Not_Ready_Startup"] From fbe6b2c73ba854de7f73ff99f0d1502cfeb9ef70 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 7 Mar 2024 16:40:13 -0800 Subject: [PATCH 132/599] cgpsd (#31781) * cgpsd * latlong is good * more sentences * little more * cleanup --------- Co-authored-by: Comma Device --- system/qcomgpsd/cgpsd.py | 102 ++++++++++++++++++++++++++++++++++++ system/qcomgpsd/qcomgpsd.py | 4 +- 2 files changed, 104 insertions(+), 2 deletions(-) create mode 100755 system/qcomgpsd/cgpsd.py diff --git a/system/qcomgpsd/cgpsd.py b/system/qcomgpsd/cgpsd.py new file mode 100755 index 0000000000..8c802ef4ef --- /dev/null +++ b/system/qcomgpsd/cgpsd.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +import time +import datetime +from collections import defaultdict + +from cereal import log +import cereal.messaging as messaging +from openpilot.common.swaglog import cloudlog +from openpilot.system.qcomgpsd.qcomgpsd import at_cmd, wait_for_modem + +""" +AT+CGPSGPOS=1 +response: '$GNGGA,220212.00,3245.09188,N,11711.76362,W,1,06,24.54,0.0,M,,M,,*77' + +AT+CGPSGPOS=2 +response: '$GNGSA,A,3,06,17,19,22,,,,,,,,,14.11,8.95,10.91,1*01 +$GNGSA,A,3,29,26,,,,,,,,,,,14.11,8.95,10.91,4*03' + +AT+CGPSGPOS=3 +response: '$GPGSV,3,1,11,06,55,047,22,19,29,053,20,22,19,115,14,05,01,177,,0*68 +$GPGSV,3,2,11,11,77,156,23,12,47,322,17,17,08,066,10,20,25,151,,0*6D +$GPGSV,3,3,11,24,44,232,,25,16,312,,29,02,260,,0*5D' + +AT+CGPSGPOS=4 +response: '$GBGSV,1,1,03,26,75,242,20,29,19,049,16,35,,,24,0*7D' + +AT+CGPSGPOS=5 +response: '$GNRMC,220216.00,A,3245.09531,N,11711.76043,W,,,070324,,,A,V*20' +""" + + +def sfloat(n: str): + return float(n) if len(n) > 0 else 0 + + +def main(): + wait_for_modem("AT+CGPS?") + + cmds = [ + "AT+GPSPORT=1", + "AT+CGPS=1", + ] + for c in cmds: + at_cmd(c) + + nmea = defaultdict(list) + pm = messaging.PubMaster(['gpsLocation']) + while True: + time.sleep(1) + try: + # TODO: read from streaming AT port instead of polling + out = at_cmd("AT+CGPS?") + + sentences = out.split("'")[1].splitlines() + new = {l.split(',')[0]: l.split(',') for l in sentences if l.startswith('$G')} + nmea.update(new) + if '$GNRMC' not in new: + print(f"no GNRMC:\n{out}\n") + continue + + gnrmc = nmea['$GNRMC'] + #print(gnrmc) + + msg = messaging.new_message('gpsLocation', valid=True) + gps = msg.gpsLocation + gps.latitude = (sfloat(gnrmc[3][:2]) + (sfloat(gnrmc[3][2:]) / 60)) * (1 if gnrmc[4] == "N" else -2) + gps.longitude = (sfloat(gnrmc[5][:3]) + (sfloat(gnrmc[5][3:]) / 60)) * (1 if gnrmc[6] == "E" else -1) + + date = gnrmc[9][:6] + dt = datetime.datetime.strptime(f"{date} {gnrmc[1]}", '%d%m%y %H%M%S.%f') + gps.unixTimestampMillis = dt.timestamp()*1e3 + + gps.flags = 1 if gnrmc[1] == 'A' else 0 + + # TODO: make our own source + gps.source = log.GpsLocationData.SensorSource.qcomdiag + + gps.speed = sfloat(gnrmc[7]) + gps.bearingDeg = sfloat(gnrmc[8]) + + if len(nmea['$GNGGA']): + gngga = nmea['$GNGGA'] + if gngga[10] == 'M': + gps.altitude = sfloat(nmea['$GNGGA'][9]) + + # TODO: set these from the module + gps.horizontalAccuracy = 3. + gps.verticalAccuracy = 3. + gps.bearingAccuracyDeg = 5. + gps.speedAccuracy = 3. + + # TODO: can we get this from the NMEA sentences? + #gps.vNED = vNED + + pm.send('gpsLocation', msg) + + except Exception: + cloudlog.exception("gps.issue") + + +if __name__ == "__main__": + main() diff --git a/system/qcomgpsd/qcomgpsd.py b/system/qcomgpsd/qcomgpsd.py index e8c407a627..25b547cf5e 100755 --- a/system/qcomgpsd/qcomgpsd.py +++ b/system/qcomgpsd/qcomgpsd.py @@ -205,10 +205,10 @@ def teardown_quectel(diag): try_setup_logs(diag, []) -def wait_for_modem(): +def wait_for_modem(cmd="AT+QGPS?"): cloudlog.warning("waiting for modem to come up") while True: - ret = subprocess.call("mmcli -m any --timeout 10 --command=\"AT+QGPS?\"", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True) + ret = subprocess.call(f"mmcli -m any --timeout 10 --command=\"{cmd}\"", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True) if ret == 0: return time.sleep(0.1) From 6de71bcddb83510cb48125f4e0440d4328c393a4 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 7 Mar 2024 17:02:11 -0800 Subject: [PATCH 133/599] better comment --- .vscode/settings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index a7c9b2ac44..811306f399 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,10 +17,10 @@ "**/.git", "**/.venv", "**/__pycache__", - // exclude directories should be using the symlinked version + // exclude directories that should be using the symlinked version "common/**", "selfdrive/**", "system/**", "tools/**", ] -} \ No newline at end of file +} From 428397a18ba734f5ec73c18cfe35d16e2c0b040f Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 7 Mar 2024 17:24:29 -0800 Subject: [PATCH 134/599] cgpsd: check checksums and log some accuracies (#31784) * check checksum * some accuracy --------- Co-authored-by: Comma Device --- system/qcomgpsd/cgpsd.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/system/qcomgpsd/cgpsd.py b/system/qcomgpsd/cgpsd.py index 8c802ef4ef..c0edc721fa 100755 --- a/system/qcomgpsd/cgpsd.py +++ b/system/qcomgpsd/cgpsd.py @@ -8,6 +8,7 @@ import cereal.messaging as messaging from openpilot.common.swaglog import cloudlog from openpilot.system.qcomgpsd.qcomgpsd import at_cmd, wait_for_modem +# https://campar.in.tum.de/twiki/pub/Chair/NaviGpsDemon/nmea.html#RMC """ AT+CGPSGPOS=1 response: '$GNGGA,220212.00,3245.09188,N,11711.76362,W,1,06,24.54,0.0,M,,M,,*77' @@ -32,6 +33,11 @@ response: '$GNRMC,220216.00,A,3245.09531,N,11711.76043,W,,,070324,,,A,V*20' def sfloat(n: str): return float(n) if len(n) > 0 else 0 +def checksum(s: str): + ret = 0 + for c in s[1:-3]: + ret ^= ord(c) + return format(ret, '02X') def main(): wait_for_modem("AT+CGPS?") @@ -58,6 +64,13 @@ def main(): print(f"no GNRMC:\n{out}\n") continue + # validate checksums + for s in nmea.values(): + sent = ','.join(s) + if checksum(sent) != s[-1].split('*')[1]: + cloudlog.error(f"invalid checksum: {repr(sent)}") + continue + gnrmc = nmea['$GNRMC'] #print(gnrmc) @@ -81,11 +94,15 @@ def main(): if len(nmea['$GNGGA']): gngga = nmea['$GNGGA'] if gngga[10] == 'M': - gps.altitude = sfloat(nmea['$GNGGA'][9]) + gps.altitude = sfloat(gngga[9]) + + if len(nmea['$GNGSA']): + # TODO: this is only for GPS sats + gngsa = nmea['$GNGSA'] + gps.horizontalAccuracy = sfloat(gngsa[4]) + gps.verticalAccuracy = sfloat(gngsa[5]) # TODO: set these from the module - gps.horizontalAccuracy = 3. - gps.verticalAccuracy = 3. gps.bearingAccuracyDeg = 5. gps.speedAccuracy = 3. From 90442e35971b273d36832bf90188dd010a32507e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 18:57:15 -0800 Subject: [PATCH 135/599] Subaru: make OBD query logging (#31785) * make OBD query logging * Update selfdrive/car/subaru/values.py Co-authored-by: Justin Newberry * wording --------- Co-authored-by: Justin Newberry --- selfdrive/car/subaru/values.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 77b30f89be..a4eb5ba7f9 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -234,21 +234,24 @@ FW_QUERY_CONFIG = FwQueryConfig( [StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], whitelist_ecus=[Ecu.abs, Ecu.eps, Ecu.fwdCamera, Ecu.engine, Ecu.transmission], + logging=True, ), + # Non-OBD requests # Some Eyesight modules fail on TESTER_PRESENT_REQUEST # TODO: check if this resolves the fingerprinting issue for the 2023 Ascent and other new Subaru cars Request( [SUBARU_VERSION_REQUEST], [SUBARU_VERSION_RESPONSE], whitelist_ecus=[Ecu.fwdCamera], + bus=0, ), - # Non-OBD requests Request( [StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], whitelist_ecus=[Ecu.abs, Ecu.eps, Ecu.fwdCamera, Ecu.engine, Ecu.transmission], bus=0, ), + # GEN2 powertrain bus query Request( [StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], From fd51bfb27bbdd089833810bec49e67e4ce7a1800 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 7 Mar 2024 18:57:27 -0800 Subject: [PATCH 136/599] tools: update replay route parsing for timeless format --- tools/replay/route.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/replay/route.cc b/tools/replay/route.cc index d0ddf7f3c8..d5847a94b8 100644 --- a/tools/replay/route.cc +++ b/tools/replay/route.cc @@ -18,7 +18,7 @@ Route::Route(const QString &route, const QString &data_dir) : data_dir_(data_dir } RouteIdentifier Route::parseRoute(const QString &str) { - QRegExp rx(R"(^(?:([a-z0-9]{16})([|_/]))?(\d{4}-\d{2}-\d{2}--\d{2}-\d{2}-\d{2})(?:(--|/)(\d*))?$)"); + QRegExp rx(R"(^(?:([a-z0-9]{16})([|_/]))?(.{20})(?:(--|/)(\d*))?$)"); if (rx.indexIn(str) == -1) return {}; const QStringList list = rx.capturedTexts(); From 158e36976b8793610ac1f39f51d82f5eeeb099b2 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 7 Mar 2024 19:22:06 -0800 Subject: [PATCH 137/599] fix old route sorting (#31787) * fix old route sorting * cleanup * Update system/loggerd/uploader.py --------- Co-authored-by: Comma Device --- system/loggerd/uploader.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/system/loggerd/uploader.py b/system/loggerd/uploader.py index 33ee8c1850..832a227798 100755 --- a/system/loggerd/uploader.py +++ b/system/loggerd/uploader.py @@ -44,7 +44,9 @@ class FakeResponse: def get_directory_sort(d: str) -> list[str]: - return [s.rjust(10, '0') for s in d.rsplit('--', 1)] + # ensure old format is sorted sooner + o = ["0", ] if d.startswith("2024-") else ["1", ] + return o + [s.rjust(10, '0') for s in d.rsplit('--', 1)] def listdir_by_creation(d: str) -> list[str]: if not os.path.isdir(d): From fdab60cad733836051fa7af237db50b9f842542e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 19:56:22 -0800 Subject: [PATCH 138/599] longitudinal planner: start at personality param (#31788) start at param --- selfdrive/controls/lib/longitudinal_planner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/controls/lib/longitudinal_planner.py b/selfdrive/controls/lib/longitudinal_planner.py index 018768f248..2b1fd01112 100755 --- a/selfdrive/controls/lib/longitudinal_planner.py +++ b/selfdrive/controls/lib/longitudinal_planner.py @@ -63,8 +63,8 @@ class LongitudinalPlanner: self.solverExecutionTime = 0.0 self.params = Params() self.param_read_counter = 0 - self.read_param() self.personality = log.LongitudinalPersonality.standard + self.read_param() def read_param(self): try: From 782b707824b6a0df65db01bd1f4f8533faaa25e7 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 7 Mar 2024 20:10:12 -0800 Subject: [PATCH 139/599] HKG CAN FD: add instrument cluster ECU (#31790) * Add instrument cluster in case it can tell us more about the car * and i thought I wanted to remove this test! --- selfdrive/car/hyundai/values.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index dfd642e3c0..9d27052f0c 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -710,7 +710,8 @@ PLATFORM_CODE_ECUS = [Ecu.fwdRadar, Ecu.fwdCamera, Ecu.eps] # TODO: there are date codes in the ABS firmware versions in hex DATE_FW_ECUS = [Ecu.fwdCamera] -ALL_HYUNDAI_ECUS = [Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.engine, Ecu.parkingAdas, Ecu.transmission, Ecu.adas, Ecu.hvac, Ecu.cornerRadar] +ALL_HYUNDAI_ECUS = [Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.engine, Ecu.parkingAdas, + Ecu.transmission, Ecu.adas, Ecu.hvac, Ecu.cornerRadar, Ecu.combinationMeter] FW_QUERY_CONFIG = FwQueryConfig( requests=[ @@ -810,10 +811,11 @@ FW_QUERY_CONFIG = FwQueryConfig( Ecu.abs: [CAR.PALISADE, CAR.SONATA], }, extra_ecus=[ - (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms - (Ecu.parkingAdas, 0x7b1, None), # ADAS Parking ECU (may exist on all platforms) - (Ecu.hvac, 0x7b3, None), # HVAC Control Assembly + (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms + (Ecu.parkingAdas, 0x7b1, None), # ADAS Parking ECU (may exist on all platforms) + (Ecu.hvac, 0x7b3, None), # HVAC Control Assembly (Ecu.cornerRadar, 0x7b7, None), + (Ecu.combinationMeter, 0x7c6, None), # CAN FD Instrument cluster ], # Custom fuzzy fingerprinting function using platform codes, part numbers + FW dates: match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, From 99610c88195301c65c35ba0d4b41ad09d242a269 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 8 Mar 2024 00:15:21 -0800 Subject: [PATCH 140/599] Revert "common PlatformFlags base class + test for < 32 bits" (#31793) Revert "common PlatformFlags base class + test for < 32 bits (#31779)" This reverts commit 8ba5d660f38c9d74df208aa79d1c6ae85937f4c5. --- selfdrive/car/__init__.py | 5 ----- selfdrive/car/chrysler/values.py | 5 +++-- selfdrive/car/ford/values.py | 6 +++--- selfdrive/car/honda/values.py | 6 +++--- selfdrive/car/hyundai/values.py | 6 +++--- selfdrive/car/mazda/values.py | 5 +++-- selfdrive/car/subaru/values.py | 6 +++--- selfdrive/car/toyota/values.py | 6 +++--- selfdrive/car/volkswagen/values.py | 6 +++--- 9 files changed, 24 insertions(+), 27 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 525394590d..1f784a4ab2 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -318,8 +318,3 @@ class Platforms(str, ReprEnum): for flag, platforms in platforms_with_flag.items(): print(f"{flag:32s}: {', '.join(p.name for p in platforms)}") - - -class PlatformFlags(IntFlag): - def __init__(self, value: int): - assert value < 2**32, "undefined behaviour with >32 bit flags" diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 72972fcf4f..7dcfa3749e 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -1,15 +1,16 @@ +from enum import IntFlag from dataclasses import dataclass, field from cereal import car from panda.python import uds -from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, PlatformFlags, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu -class ChryslerFlags(PlatformFlags): +class ChryslerFlags(IntFlag): # Detected flags HIGHER_MIN_STEERING_SPEED = 1 diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 72131b650b..add40368be 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -1,9 +1,9 @@ from dataclasses import dataclass, field -from enum import Enum +from enum import Enum, IntFlag import panda.python.uds as uds from cereal import car -from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, PlatformFlags, dbc_dict, DbcDict, PlatformConfig, Platforms +from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, dbc_dict, DbcDict, PlatformConfig, Platforms from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ Device from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -39,7 +39,7 @@ class CarControllerParams: pass -class FordFlags(PlatformFlags): +class FordFlags(IntFlag): # Static flags CANFD = 1 diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 77aa8f6750..4960380bbc 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -1,10 +1,10 @@ from dataclasses import dataclass -from enum import Enum +from enum import Enum, IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV from panda.python import uds -from openpilot.selfdrive.car import CarSpecs, PlatformConfig, PlatformFlags, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -45,7 +45,7 @@ class CarControllerParams: self.STEER_LOOKUP_V = [v * -1 for v in CP.lateralParams.torqueV][1:][::-1] + list(CP.lateralParams.torqueV) -class HondaFlags(PlatformFlags): +class HondaFlags(IntFlag): # Detected flags # Bosch models with alternate set of LKAS_HUD messages BOSCH_EXT_HUD = 1 diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 9d27052f0c..e79da0f473 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -1,11 +1,11 @@ import re from dataclasses import dataclass, field -from enum import Enum +from enum import Enum, IntFlag from cereal import car from panda.python import uds from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, PlatformFlags, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 @@ -51,7 +51,7 @@ class CarControllerParams: self.STEER_MAX = 384 -class HyundaiFlags(PlatformFlags): +class HyundaiFlags(IntFlag): # Dynamic Flags CANFD_HDA2 = 1 CANFD_ALT_BUTTONS = 2 diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index 3a2a93ad09..b55690f39a 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -1,8 +1,9 @@ from dataclasses import dataclass, field +from enum import IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, PlatformFlags, Platforms, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -36,7 +37,7 @@ class MazdaCarSpecs(CarSpecs): tireStiffnessFactor: float = 0.7 # not optimized yet -class MazdaFlags(PlatformFlags): +class MazdaFlags(IntFlag): # Static flags # Gen 1 hardware: same CAN messages and same camera GEN1 = 1 diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index a4eb5ba7f9..5e135ca658 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -1,9 +1,9 @@ from dataclasses import dataclass, field -from enum import Enum +from enum import Enum, IntFlag from cereal import car from panda.python import uds -from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, PlatformFlags, dbc_dict +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Tool, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -52,7 +52,7 @@ class CarControllerParams: BRAKE_LOOKUP_V = [BRAKE_MAX, BRAKE_MIN] -class SubaruFlags(PlatformFlags): +class SubaruFlags(IntFlag): # Detected flags SEND_INFOTAINMENT = 1 DISABLE_EYESIGHT = 2 diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 50a4195153..2be7ca1865 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -1,11 +1,11 @@ import re from collections import defaultdict from dataclasses import dataclass, field -from enum import Enum +from enum import Enum, IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import CarSpecs, PlatformConfig, PlatformFlags, Platforms +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms from openpilot.selfdrive.car import AngleRateLimit, dbc_dict from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarInfo, Column, CarParts, CarHarness from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries @@ -41,7 +41,7 @@ class CarControllerParams: self.STEER_DELTA_DOWN = 25 # always lower than 45 otherwise the Rav4 faults (Prius seems ok with 50) -class ToyotaFlags(PlatformFlags): +class ToyotaFlags(IntFlag): # Detected flags HYBRID = 1 SMART_DSU = 2 diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 5f658fb9eb..a45ddf431f 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -1,12 +1,12 @@ from collections import namedtuple from dataclasses import dataclass, field -from enum import Enum +from enum import Enum, IntFlag from cereal import car from panda.python import uds from opendbc.can.can_define import CANDefine from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import PlatformFlags, dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms +from openpilot.selfdrive.car import dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ Device from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 @@ -109,7 +109,7 @@ class CANBUS: cam = 2 -class VolkswagenFlags(PlatformFlags): +class VolkswagenFlags(IntFlag): # Detected flags STOCK_HCA_PRESENT = 1 From e964c5944d4342b6e08ca872eacf9d524a49b479 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 8 Mar 2024 02:49:24 -0800 Subject: [PATCH 141/599] LogReader: fix sort by time and union types (#31565) * fix :( * test_sort_by_time * this isn't required * not slow, and just compare sorted * messy * works * clean up * clean up * not here * clean up * clean up * clean up * makes network call --------- Co-authored-by: Justin Newberry --- tools/lib/logreader.py | 2 +- tools/lib/tests/test_logreader.py | 39 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py index 6247bbc9db..7a1e972e19 100755 --- a/tools/lib/logreader.py +++ b/tools/lib/logreader.py @@ -248,7 +248,7 @@ are uploaded or auto fallback to qlogs with '/a' selector at the end of the rout def _get_lr(self, i): if i not in self.__lrs: - self.__lrs[i] = _LogFileReader(self.logreader_identifiers[i]) + self.__lrs[i] = _LogFileReader(self.logreader_identifiers[i], sort_by_time=self.sort_by_time, only_union_types=self.only_union_types) return self.__lrs[i] def __iter__(self): diff --git a/tools/lib/tests/test_logreader.py b/tools/lib/tests/test_logreader.py index 2141915b87..fc72202b26 100755 --- a/tools/lib/tests/test_logreader.py +++ b/tools/lib/tests/test_logreader.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +import capnp import contextlib import io import shutil @@ -11,6 +12,7 @@ import requests from parameterized import parameterized from unittest import mock +from cereal import log as capnp_log from openpilot.tools.lib.logreader import LogIterable, LogReader, comma_api_source, parse_indirect, ReadMode, InternalUnavailableException from openpilot.tools.lib.route import SegmentRange from openpilot.tools.lib.url_file import URLFileException @@ -216,6 +218,43 @@ class TestLogReader(unittest.TestCase): log_len = len(list(lr)) self.assertEqual(qlog_len, log_len) + @pytest.mark.slow + def test_sort_by_time(self): + msgs = list(LogReader(f"{TEST_ROUTE}/0/q")) + self.assertNotEqual(msgs, sorted(msgs, key=lambda m: m.logMonoTime)) + + msgs = list(LogReader(f"{TEST_ROUTE}/0/q", sort_by_time=True)) + self.assertEqual(msgs, sorted(msgs, key=lambda m: m.logMonoTime)) + + def test_only_union_types(self): + with tempfile.NamedTemporaryFile() as qlog: + # write valid Event messages + num_msgs = 100 + with open(qlog.name, "wb") as f: + f.write(b"".join(capnp_log.Event.new_message().to_bytes() for _ in range(num_msgs))) + + msgs = list(LogReader(qlog.name)) + self.assertEqual(len(msgs), num_msgs) + [m.which() for m in msgs] + + # append non-union Event message + event_msg = capnp_log.Event.new_message() + non_union_bytes = bytearray(event_msg.to_bytes()) + non_union_bytes[event_msg.total_size.word_count * 8] = 0xff # set discriminant value out of range using Event word offset + with open(qlog.name, "ab") as f: + f.write(non_union_bytes) + + # ensure new message is added, but is not a union type + msgs = list(LogReader(qlog.name)) + self.assertEqual(len(msgs), num_msgs + 1) + with self.assertRaises(capnp.KjException): + [m.which() for m in msgs] + + # should not be added when only_union_types=True + msgs = list(LogReader(qlog.name, only_union_types=True)) + self.assertEqual(len(msgs), num_msgs) + [m.which() for m in msgs] + if __name__ == "__main__": unittest.main() From c30688fe3a04fe8a60f6805210e39296bdca825e Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 8 Mar 2024 13:42:17 -0500 Subject: [PATCH 142/599] test_updated: more consistent test (#31786) * consistent * bump timeout * bump again --- selfdrive/updated/tests/test_updated.py | 48 +++++++++++++++---------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/selfdrive/updated/tests/test_updated.py b/selfdrive/updated/tests/test_updated.py index 93b6e11383..4245763e99 100755 --- a/selfdrive/updated/tests/test_updated.py +++ b/selfdrive/updated/tests/test_updated.py @@ -85,9 +85,12 @@ class TestUpdateD(unittest.TestCase): def tearDown(self): mock.patch.stopall() - run(["sudo", "umount", "-l", str(self.staging_root / "merged")]) - run(["sudo", "umount", "-l", self.tmpdir]) - shutil.rmtree(self.tmpdir) + try: + run(["sudo", "umount", "-l", str(self.staging_root / "merged")]) + run(["sudo", "umount", "-l", self.tmpdir]) + shutil.rmtree(self.tmpdir) + except Exception: + print("cleanup failed...") def send_check_for_updates_signal(self, updated: ManagerProcess): updated.signal(signal.SIGUSR1.value) @@ -104,21 +107,28 @@ class TestUpdateD(unittest.TestCase): self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}")) self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") - def wait_for_idle(self, timeout=5, min_wait_time=2): + def wait_for_condition(self, condition, timeout=12): start = time.monotonic() - time.sleep(min_wait_time) - while True: waited = time.monotonic() - start - if self.params.get("UpdaterState", encoding="utf-8") == "idle": - print(f"waited {waited}s for idle") - break + if condition(): + print(f"waited {waited}s for condition ") + return waited if waited > timeout: - raise TimeoutError("timed out waiting for idle") + raise TimeoutError("timed out waiting for condition") time.sleep(1) + def wait_for_idle(self): + self.wait_for_condition(lambda: self.params.get("UpdaterState", encoding="utf-8") == "idle") + + def wait_for_fetch_available(self): + self.wait_for_condition(lambda: self.params.get_bool("UpdaterFetchAvailable")) + + def wait_for_update_available(self): + self.wait_for_condition(lambda: self.params.get_bool("UpdateAvailable")) + def test_no_update(self): # Start on release3, ensure we don't fetch any updates self.setup_remote_release("release3") @@ -126,7 +136,7 @@ class TestUpdateD(unittest.TestCase): with processes_context(["updated"]) as [updated]: self._test_params("release3", False, False) - time.sleep(1) + self.wait_for_idle() self._test_params("release3", False, False) self.send_check_for_updates_signal(updated) @@ -142,7 +152,7 @@ class TestUpdateD(unittest.TestCase): with processes_context(["updated"]) as [updated]: self._test_params("release3", False, False) - time.sleep(1) + self.wait_for_idle() self._test_params("release3", False, False) self.MOCK_RELEASES["release3"] = ("0.1.3", "1.2", "0.1.3 release notes") @@ -150,13 +160,13 @@ class TestUpdateD(unittest.TestCase): self.send_check_for_updates_signal(updated) - self.wait_for_idle() + self.wait_for_fetch_available() self._test_params("release3", True, False) self.send_download_signal(updated) - self.wait_for_idle() + self.wait_for_update_available() self._test_params("release3", False, True) self._test_update_params("release3", *self.MOCK_RELEASES["release3"]) @@ -175,13 +185,13 @@ class TestUpdateD(unittest.TestCase): self.set_target_branch("master") self.send_check_for_updates_signal(updated) - self.wait_for_idle() + self.wait_for_fetch_available() self._test_params("master", True, False) self.send_download_signal(updated) - self.wait_for_idle() + self.wait_for_update_available() self._test_params("master", False, True) self._test_update_params("master", *self.MOCK_RELEASES["master"]) @@ -198,7 +208,7 @@ class TestUpdateD(unittest.TestCase): processes_context(["updated"]) as [updated]: self._test_params("release3", False, False) - time.sleep(1) + self.wait_for_idle() self._test_params("release3", False, False) self.MOCK_RELEASES["release3"] = ("0.1.3", "1.3", "0.1.3 release notes") @@ -206,13 +216,13 @@ class TestUpdateD(unittest.TestCase): self.send_check_for_updates_signal(updated) - self.wait_for_idle() + self.wait_for_fetch_available() self._test_params("release3", True, False) self.send_download_signal(updated) - self.wait_for_idle() + self.wait_for_update_available() self._test_params("release3", False, True) self._test_update_params("release3", *self.MOCK_RELEASES["release3"]) From b93f6ce4f6fd34d33f990e86bde22b5cec49f2da Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 8 Mar 2024 13:46:57 -0500 Subject: [PATCH 143/599] updated: prep for new updater (#31695) * wip * wip * wip * wip * wip * wip * wip * proc * release * fix * this should move here * e2e update test * that too * fix * fix * fix running in docker * don't think GHA will work * also test switching branches * it's a test * lets not delete that yet * fix * fix2 * fix * fix * tests too * fix * cleanup / init * test agnos update * test agnos * move this back up * no diff --- selfdrive/updated/common.py | 100 ++++++ selfdrive/updated/git.py | 241 ++++++++++++++ .../tests/{test_updated.py => test_base.py} | 40 ++- selfdrive/updated/tests/test_git.py | 22 ++ selfdrive/updated/updated.py | 300 +++--------------- 5 files changed, 419 insertions(+), 284 deletions(-) create mode 100644 selfdrive/updated/common.py create mode 100644 selfdrive/updated/git.py rename selfdrive/updated/tests/{test_updated.py => test_base.py} (86%) mode change 100755 => 100644 create mode 100644 selfdrive/updated/tests/test_git.py diff --git a/selfdrive/updated/common.py b/selfdrive/updated/common.py new file mode 100644 index 0000000000..c522e075d5 --- /dev/null +++ b/selfdrive/updated/common.py @@ -0,0 +1,100 @@ +import abc +import os + +from pathlib import Path +import subprocess +from typing import List + +from markdown_it import MarkdownIt +from openpilot.common.params import Params +from openpilot.common.swaglog import cloudlog + + +LOCK_FILE = os.getenv("UPDATER_LOCK_FILE", "/tmp/safe_staging_overlay.lock") +STAGING_ROOT = os.getenv("UPDATER_STAGING_ROOT", "/data/safe_staging") +FINALIZED = os.path.join(STAGING_ROOT, "finalized") + + +def run(cmd: list[str], cwd: str = None) -> str: + return subprocess.check_output(cmd, cwd=cwd, stderr=subprocess.STDOUT, encoding='utf8') + + +class UpdateStrategy(abc.ABC): + def __init__(self): + self.params = Params() + + @abc.abstractmethod + def init(self) -> None: + pass + + @abc.abstractmethod + def cleanup(self) -> None: + pass + + @abc.abstractmethod + def get_available_channels(self) -> List[str]: + """List of available channels to install, (branches, releases, etc)""" + + @abc.abstractmethod + def current_channel(self) -> str: + """Current channel installed""" + + @abc.abstractmethod + def fetched_path(self) -> str: + """Path to the fetched update""" + + @property + def target_channel(self) -> str: + """Target Channel""" + b: str | None = self.params.get("UpdaterTargetBranch", encoding='utf-8') + if b is None: + b = self.current_channel() + return b + + @abc.abstractmethod + def update_ready(self) -> bool: + """Check if an update is ready to be installed""" + + @abc.abstractmethod + def update_available(self) -> bool: + """Check if an update is available for the current channel""" + + @abc.abstractmethod + def describe_current_channel(self) -> tuple[str, str]: + """Describe the current channel installed, (description, release_notes)""" + + @abc.abstractmethod + def describe_ready_channel(self) -> tuple[str, str]: + """Describe the channel that is ready to be installed, (description, release_notes)""" + + @abc.abstractmethod + def fetch_update(self) -> None: + pass + + @abc.abstractmethod + def finalize_update(self) -> None: + pass + + +def set_consistent_flag(consistent: bool) -> None: + os.sync() + consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) + if consistent: + consistent_file.touch() + elif not consistent: + consistent_file.unlink(missing_ok=True) + os.sync() + + +def parse_release_notes(releases_md: str) -> str: + try: + r = releases_md.split('\n\n', 1)[0] # Slice latest release notes + try: + return str(MarkdownIt().render(r)) + except Exception: + return r + "\n" + except FileNotFoundError: + pass + except Exception: + cloudlog.exception("failed to parse release notes") + return "" diff --git a/selfdrive/updated/git.py b/selfdrive/updated/git.py new file mode 100644 index 0000000000..29f95eeeff --- /dev/null +++ b/selfdrive/updated/git.py @@ -0,0 +1,241 @@ +import datetime +import os +import re +import shutil +import subprocess +import time + +from collections import defaultdict +from pathlib import Path +from typing import List + +from openpilot.common.basedir import BASEDIR +from openpilot.common.params import Params +from openpilot.common.swaglog import cloudlog +from openpilot.selfdrive.updated.common import FINALIZED, STAGING_ROOT, UpdateStrategy, parse_release_notes, set_consistent_flag, run + + +OVERLAY_UPPER = os.path.join(STAGING_ROOT, "upper") +OVERLAY_METADATA = os.path.join(STAGING_ROOT, "metadata") +OVERLAY_MERGED = os.path.join(STAGING_ROOT, "merged") +OVERLAY_INIT = Path(os.path.join(BASEDIR, ".overlay_init")) + + +def setup_git_options(cwd: str) -> None: + # We sync FS object atimes (which NEOS doesn't use) and mtimes, but ctimes + # are outside user control. Make sure Git is set up to ignore system ctimes, + # because they change when we make hard links during finalize. Otherwise, + # there is a lot of unnecessary churn. This appears to be a common need on + # OSX as well: https://www.git-tower.com/blog/make-git-rebase-safe-on-osx/ + + # We are using copytree to copy the directory, which also changes + # inode numbers. Ignore those changes too. + + # Set protocol to the new version (default after git 2.26) to reduce data + # usage on git fetch --dry-run from about 400KB to 18KB. + git_cfg = [ + ("core.trustctime", "false"), + ("core.checkStat", "minimal"), + ("protocol.version", "2"), + ("gc.auto", "0"), + ("gc.autoDetach", "false"), + ] + for option, value in git_cfg: + run(["git", "config", option, value], cwd) + + +def dismount_overlay() -> None: + if os.path.ismount(OVERLAY_MERGED): + cloudlog.info("unmounting existing overlay") + run(["sudo", "umount", "-l", OVERLAY_MERGED]) + + +def init_overlay() -> None: + + # Re-create the overlay if BASEDIR/.git has changed since we created the overlay + if OVERLAY_INIT.is_file() and os.path.ismount(OVERLAY_MERGED): + git_dir_path = os.path.join(BASEDIR, ".git") + new_files = run(["find", git_dir_path, "-newer", str(OVERLAY_INIT)]) + if not len(new_files.splitlines()): + # A valid overlay already exists + return + else: + cloudlog.info(".git directory changed, recreating overlay") + + cloudlog.info("preparing new safe staging area") + + params = Params() + params.put_bool("UpdateAvailable", False) + set_consistent_flag(False) + dismount_overlay() + run(["sudo", "rm", "-rf", STAGING_ROOT]) + if os.path.isdir(STAGING_ROOT): + shutil.rmtree(STAGING_ROOT) + + for dirname in [STAGING_ROOT, OVERLAY_UPPER, OVERLAY_METADATA, OVERLAY_MERGED]: + os.mkdir(dirname, 0o755) + + if os.lstat(BASEDIR).st_dev != os.lstat(OVERLAY_MERGED).st_dev: + raise RuntimeError("base and overlay merge directories are on different filesystems; not valid for overlay FS!") + + # Leave a timestamped canary in BASEDIR to check at startup. The device clock + # should be correct by the time we get here. If the init file disappears, or + # critical mtimes in BASEDIR are newer than .overlay_init, continue.sh can + # assume that BASEDIR has used for local development or otherwise modified, + # and skips the update activation attempt. + consistent_file = Path(os.path.join(BASEDIR, ".overlay_consistent")) + if consistent_file.is_file(): + consistent_file.unlink() + OVERLAY_INIT.touch() + + os.sync() + overlay_opts = f"lowerdir={BASEDIR},upperdir={OVERLAY_UPPER},workdir={OVERLAY_METADATA}" + + mount_cmd = ["mount", "-t", "overlay", "-o", overlay_opts, "none", OVERLAY_MERGED] + run(["sudo"] + mount_cmd) + run(["sudo", "chmod", "755", os.path.join(OVERLAY_METADATA, "work")]) + + git_diff = run(["git", "diff"], OVERLAY_MERGED) + params.put("GitDiff", git_diff) + cloudlog.info(f"git diff output:\n{git_diff}") + + +class GitUpdateStrategy(UpdateStrategy): + + def init(self) -> None: + init_overlay() + + def cleanup(self) -> None: + OVERLAY_INIT.unlink(missing_ok=True) + + def sync_branches(self): + excluded_branches = ('release2', 'release2-staging') + + output = run(["git", "ls-remote", "--heads"], OVERLAY_MERGED) + + self.branches = defaultdict(lambda: None) + for line in output.split('\n'): + ls_remotes_re = r'(?P\b[0-9a-f]{5,40}\b)(\s+)(refs\/heads\/)(?P.*$)' + x = re.fullmatch(ls_remotes_re, line.strip()) + if x is not None and x.group('branch_name') not in excluded_branches: + self.branches[x.group('branch_name')] = x.group('commit_sha') + + return self.branches + + def get_available_channels(self) -> List[str]: + self.sync_branches() + return list(self.branches.keys()) + + def update_ready(self) -> bool: + consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) + if consistent_file.is_file(): + hash_mismatch = self.get_commit_hash(BASEDIR) != self.branches[self.target_channel] + branch_mismatch = self.get_branch(BASEDIR) != self.target_channel + on_target_channel = self.get_branch(FINALIZED) == self.target_channel + return ((hash_mismatch or branch_mismatch) and on_target_channel) + return False + + def update_available(self) -> bool: + if os.path.isdir(OVERLAY_MERGED) and len(self.get_available_channels()) > 0: + hash_mismatch = self.get_commit_hash(OVERLAY_MERGED) != self.branches[self.target_channel] + branch_mismatch = self.get_branch(OVERLAY_MERGED) != self.target_channel + return hash_mismatch or branch_mismatch + return False + + def get_branch(self, path: str) -> str: + return run(["git", "rev-parse", "--abbrev-ref", "HEAD"], path).rstrip() + + def get_commit_hash(self, path) -> str: + return run(["git", "rev-parse", "HEAD"], path).rstrip() + + def get_current_channel(self) -> str: + return self.get_branch(BASEDIR) + + def current_channel(self) -> str: + return self.get_branch(BASEDIR) + + def describe_branch(self, basedir) -> str: + if not os.path.exists(basedir): + return "" + + version = "" + branch = "" + commit = "" + commit_date = "" + try: + branch = self.get_branch(basedir) + commit = self.get_commit_hash(basedir)[:7] + with open(os.path.join(basedir, "common", "version.h")) as f: + version = f.read().split('"')[1] + + commit_unix_ts = run(["git", "show", "-s", "--format=%ct", "HEAD"], basedir).rstrip() + dt = datetime.datetime.fromtimestamp(int(commit_unix_ts)) + commit_date = dt.strftime("%b %d") + except Exception: + cloudlog.exception("updater.get_description") + return f"{version} / {branch} / {commit} / {commit_date}" + + def release_notes_branch(self, basedir) -> str: + with open(os.path.join(basedir, "RELEASES.md"), "r") as f: + return parse_release_notes(f.read()) + + def describe_current_channel(self) -> tuple[str, str]: + return self.describe_branch(BASEDIR), self.release_notes_branch(BASEDIR) + + def describe_ready_channel(self) -> tuple[str, str]: + if self.update_ready(): + return self.describe_branch(FINALIZED), self.release_notes_branch(FINALIZED) + + return "", "" + + def fetch_update(self): + cloudlog.info("attempting git fetch inside staging overlay") + + setup_git_options(OVERLAY_MERGED) + + branch = self.target_channel + git_fetch_output = run(["git", "fetch", "origin", branch], OVERLAY_MERGED) + cloudlog.info("git fetch success: %s", git_fetch_output) + + cloudlog.info("git reset in progress") + cmds = [ + ["git", "checkout", "--force", "--no-recurse-submodules", "-B", branch, "FETCH_HEAD"], + ["git", "reset", "--hard"], + ["git", "clean", "-xdff"], + ["git", "submodule", "sync"], + ["git", "submodule", "update", "--init", "--recursive"], + ["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], + ] + r = [run(cmd, OVERLAY_MERGED) for cmd in cmds] + cloudlog.info("git reset success: %s", '\n'.join(r)) + + def fetched_path(self): + return str(OVERLAY_MERGED) + + def finalize_update(self) -> None: + """Take the current OverlayFS merged view and finalize a copy outside of + OverlayFS, ready to be swapped-in at BASEDIR. Copy using shutil.copytree""" + + # Remove the update ready flag and any old updates + cloudlog.info("creating finalized version of the overlay") + set_consistent_flag(False) + + # Copy the merged overlay view and set the update ready flag + if os.path.exists(FINALIZED): + shutil.rmtree(FINALIZED) + shutil.copytree(OVERLAY_MERGED, FINALIZED, symlinks=True) + + run(["git", "reset", "--hard"], FINALIZED) + run(["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], FINALIZED) + + cloudlog.info("Starting git cleanup in finalized update") + t = time.monotonic() + try: + run(["git", "gc"], FINALIZED) + run(["git", "lfs", "prune"], FINALIZED) + cloudlog.event("Done git cleanup", duration=time.monotonic() - t) + except subprocess.CalledProcessError: + cloudlog.exception(f"Failed git cleanup, took {time.monotonic() - t:.3f} s") + + set_consistent_flag(True) + cloudlog.info("done finalizing overlay") diff --git a/selfdrive/updated/tests/test_updated.py b/selfdrive/updated/tests/test_base.py old mode 100755 new mode 100644 similarity index 86% rename from selfdrive/updated/tests/test_updated.py rename to selfdrive/updated/tests/test_base.py index 4245763e99..f500145b6f --- a/selfdrive/updated/tests/test_updated.py +++ b/selfdrive/updated/tests/test_base.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 import os import pathlib import shutil @@ -33,12 +32,14 @@ def update_release(directory, name, version, agnos_version, release_notes): with open(directory / "launch_env.sh", "w") as f: f.write(f'export AGNOS_VERSION="{agnos_version}"') - run(["git", "add", "."], cwd=directory) - run(["git", "commit", "-m", f"openpilot release {version}"], cwd=directory) - @pytest.mark.slow # TODO: can we test overlayfs in GHA? -class TestUpdateD(unittest.TestCase): +class BaseUpdateTest(unittest.TestCase): + @classmethod + def setUpClass(cls): + if "Base" in cls.__name__: + raise unittest.SkipTest + def setUp(self): self.tmpdir = tempfile.mkdtemp() @@ -73,15 +74,15 @@ class TestUpdateD(unittest.TestCase): def setup_basedir_release(self, release): self.params = Params() self.set_target_branch(release) - run(["git", "clone", "-b", release, self.remote_dir, self.basedir]) def update_remote_release(self, release): - update_release(self.remote_dir, release, *self.MOCK_RELEASES[release]) + raise NotImplementedError("") def setup_remote_release(self, release): - run(["git", "init"], cwd=self.remote_dir) - run(["git", "checkout", "-b", release], cwd=self.remote_dir) - self.update_remote_release(release) + raise NotImplementedError("") + + def additional_context(self): + raise NotImplementedError("") def tearDown(self): mock.patch.stopall() @@ -134,7 +135,7 @@ class TestUpdateD(unittest.TestCase): self.setup_remote_release("release3") self.setup_basedir_release("release3") - with processes_context(["updated"]) as [updated]: + with self.additional_context(), processes_context(["updated"]) as [updated]: self._test_params("release3", False, False) self.wait_for_idle() self._test_params("release3", False, False) @@ -150,7 +151,7 @@ class TestUpdateD(unittest.TestCase): self.setup_remote_release("release3") self.setup_basedir_release("release3") - with processes_context(["updated"]) as [updated]: + with self.additional_context(), processes_context(["updated"]) as [updated]: self._test_params("release3", False, False) self.wait_for_idle() self._test_params("release3", False, False) @@ -177,7 +178,7 @@ class TestUpdateD(unittest.TestCase): self.setup_remote_release("master") self.setup_basedir_release("release3") - with processes_context(["updated"]) as [updated]: + with self.additional_context(), processes_context(["updated"]) as [updated]: self._test_params("release3", False, False) self.wait_for_idle() self._test_params("release3", False, False) @@ -201,10 +202,11 @@ class TestUpdateD(unittest.TestCase): self.setup_remote_release("release3") self.setup_basedir_release("release3") - with mock.patch("openpilot.system.hardware.AGNOS", "True"), \ - mock.patch("openpilot.system.hardware.tici.hardware.Tici.get_os_version", "1.2"), \ - mock.patch("openpilot.system.hardware.tici.agnos.get_target_slot_number"), \ - mock.patch("openpilot.system.hardware.tici.agnos.flash_agnos_update"), \ + with self.additional_context(), \ + mock.patch("openpilot.system.hardware.AGNOS", "True"), \ + mock.patch("openpilot.system.hardware.tici.hardware.Tici.get_os_version", "1.2"), \ + mock.patch("openpilot.system.hardware.tici.agnos.get_target_slot_number"), \ + mock.patch("openpilot.system.hardware.tici.agnos.flash_agnos_update"), \ processes_context(["updated"]) as [updated]: self._test_params("release3", False, False) @@ -226,7 +228,3 @@ class TestUpdateD(unittest.TestCase): self._test_params("release3", False, True) self._test_update_params("release3", *self.MOCK_RELEASES["release3"]) - - -if __name__ == "__main__": - unittest.main() diff --git a/selfdrive/updated/tests/test_git.py b/selfdrive/updated/tests/test_git.py new file mode 100644 index 0000000000..1a9c78242d --- /dev/null +++ b/selfdrive/updated/tests/test_git.py @@ -0,0 +1,22 @@ +import contextlib +from openpilot.selfdrive.updated.tests.test_base import BaseUpdateTest, run, update_release + + +class TestUpdateDGitStrategy(BaseUpdateTest): + def update_remote_release(self, release): + update_release(self.remote_dir, release, *self.MOCK_RELEASES[release]) + run(["git", "add", "."], cwd=self.remote_dir) + run(["git", "commit", "-m", f"openpilot release {release}"], cwd=self.remote_dir) + + def setup_remote_release(self, release): + run(["git", "init"], cwd=self.remote_dir) + run(["git", "checkout", "-b", release], cwd=self.remote_dir) + self.update_remote_release(release) + + def setup_basedir_release(self, release): + super().setup_basedir_release(release) + run(["git", "clone", "-b", release, self.remote_dir, self.basedir]) + + @contextlib.contextmanager + def additional_context(self): + yield diff --git a/selfdrive/updated/updated.py b/selfdrive/updated/updated.py index b6b395f254..92034cc806 100755 --- a/selfdrive/updated/updated.py +++ b/selfdrive/updated/updated.py @@ -1,35 +1,21 @@ #!/usr/bin/env python3 import os -import re +from pathlib import Path import datetime import subprocess import psutil -import shutil import signal import fcntl -import time import threading -from collections import defaultdict -from pathlib import Path -from markdown_it import MarkdownIt -from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params from openpilot.common.time import system_time_valid +from openpilot.selfdrive.updated.common import LOCK_FILE, STAGING_ROOT, UpdateStrategy, run, set_consistent_flag from openpilot.system.hardware import AGNOS, HARDWARE from openpilot.common.swaglog import cloudlog from openpilot.selfdrive.controls.lib.alertmanager import set_offroad_alert from openpilot.system.version import is_tested_branch - -LOCK_FILE = os.getenv("UPDATER_LOCK_FILE", "/tmp/safe_staging_overlay.lock") -STAGING_ROOT = os.getenv("UPDATER_STAGING_ROOT", "/data/safe_staging") - -OVERLAY_UPPER = os.path.join(STAGING_ROOT, "upper") -OVERLAY_METADATA = os.path.join(STAGING_ROOT, "metadata") -OVERLAY_MERGED = os.path.join(STAGING_ROOT, "merged") -FINALIZED = os.path.join(STAGING_ROOT, "finalized") - -OVERLAY_INIT = Path(os.path.join(BASEDIR, ".overlay_init")) +from openpilot.selfdrive.updated.git import GitUpdateStrategy DAYS_NO_CONNECTIVITY_MAX = 14 # do not allow to engage after this many days DAYS_NO_CONNECTIVITY_PROMPT = 10 # send an offroad prompt after this many days @@ -71,147 +57,13 @@ def read_time_from_param(params, param) -> datetime.datetime | None: pass return None -def run(cmd: list[str], cwd: str = None) -> str: - return subprocess.check_output(cmd, cwd=cwd, stderr=subprocess.STDOUT, encoding='utf8') - -def set_consistent_flag(consistent: bool) -> None: - os.sync() - consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) - if consistent: - consistent_file.touch() - elif not consistent: - consistent_file.unlink(missing_ok=True) - os.sync() - -def parse_release_notes(basedir: str) -> bytes: - try: - with open(os.path.join(basedir, "RELEASES.md"), "rb") as f: - r = f.read().split(b'\n\n', 1)[0] # Slice latest release notes - try: - return bytes(MarkdownIt().render(r.decode("utf-8")), encoding="utf-8") - except Exception: - return r + b"\n" - except FileNotFoundError: - pass - except Exception: - cloudlog.exception("failed to parse release notes") - return b"" - -def setup_git_options(cwd: str) -> None: - # We sync FS object atimes (which NEOS doesn't use) and mtimes, but ctimes - # are outside user control. Make sure Git is set up to ignore system ctimes, - # because they change when we make hard links during finalize. Otherwise, - # there is a lot of unnecessary churn. This appears to be a common need on - # OSX as well: https://www.git-tower.com/blog/make-git-rebase-safe-on-osx/ - - # We are using copytree to copy the directory, which also changes - # inode numbers. Ignore those changes too. - - # Set protocol to the new version (default after git 2.26) to reduce data - # usage on git fetch --dry-run from about 400KB to 18KB. - git_cfg = [ - ("core.trustctime", "false"), - ("core.checkStat", "minimal"), - ("protocol.version", "2"), - ("gc.auto", "0"), - ("gc.autoDetach", "false"), - ] - for option, value in git_cfg: - run(["git", "config", option, value], cwd) - - -def dismount_overlay() -> None: - if os.path.ismount(OVERLAY_MERGED): - cloudlog.info("unmounting existing overlay") - run(["sudo", "umount", "-l", OVERLAY_MERGED]) - - -def init_overlay() -> None: - - # Re-create the overlay if BASEDIR/.git has changed since we created the overlay - if OVERLAY_INIT.is_file() and os.path.ismount(OVERLAY_MERGED): - git_dir_path = os.path.join(BASEDIR, ".git") - new_files = run(["find", git_dir_path, "-newer", str(OVERLAY_INIT)]) - if not len(new_files.splitlines()): - # A valid overlay already exists - return - else: - cloudlog.info(".git directory changed, recreating overlay") - - cloudlog.info("preparing new safe staging area") - - params = Params() - params.put_bool("UpdateAvailable", False) - set_consistent_flag(False) - dismount_overlay() - run(["sudo", "rm", "-rf", STAGING_ROOT]) - if os.path.isdir(STAGING_ROOT): - shutil.rmtree(STAGING_ROOT) - - for dirname in [STAGING_ROOT, OVERLAY_UPPER, OVERLAY_METADATA, OVERLAY_MERGED]: - os.mkdir(dirname, 0o755) - - if os.lstat(BASEDIR).st_dev != os.lstat(OVERLAY_MERGED).st_dev: - raise RuntimeError("base and overlay merge directories are on different filesystems; not valid for overlay FS!") - - # Leave a timestamped canary in BASEDIR to check at startup. The device clock - # should be correct by the time we get here. If the init file disappears, or - # critical mtimes in BASEDIR are newer than .overlay_init, continue.sh can - # assume that BASEDIR has used for local development or otherwise modified, - # and skips the update activation attempt. - consistent_file = Path(os.path.join(BASEDIR, ".overlay_consistent")) - if consistent_file.is_file(): - consistent_file.unlink() - OVERLAY_INIT.touch() - - os.sync() - overlay_opts = f"lowerdir={BASEDIR},upperdir={OVERLAY_UPPER},workdir={OVERLAY_METADATA}" - - mount_cmd = ["mount", "-t", "overlay", "-o", overlay_opts, "none", OVERLAY_MERGED] - run(["sudo"] + mount_cmd) - run(["sudo", "chmod", "755", os.path.join(OVERLAY_METADATA, "work")]) - - git_diff = run(["git", "diff"], OVERLAY_MERGED) - params.put("GitDiff", git_diff) - cloudlog.info(f"git diff output:\n{git_diff}") - - -def finalize_update() -> None: - """Take the current OverlayFS merged view and finalize a copy outside of - OverlayFS, ready to be swapped-in at BASEDIR. Copy using shutil.copytree""" - - # Remove the update ready flag and any old updates - cloudlog.info("creating finalized version of the overlay") - set_consistent_flag(False) - - # Copy the merged overlay view and set the update ready flag - if os.path.exists(FINALIZED): - shutil.rmtree(FINALIZED) - shutil.copytree(OVERLAY_MERGED, FINALIZED, symlinks=True) - - run(["git", "reset", "--hard"], FINALIZED) - run(["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], FINALIZED) - - cloudlog.info("Starting git cleanup in finalized update") - t = time.monotonic() - try: - run(["git", "gc"], FINALIZED) - run(["git", "lfs", "prune"], FINALIZED) - cloudlog.event("Done git cleanup", duration=time.monotonic() - t) - except subprocess.CalledProcessError: - cloudlog.exception(f"Failed git cleanup, took {time.monotonic() - t:.3f} s") - - set_consistent_flag(True) - cloudlog.info("done finalizing overlay") - - -def handle_agnos_update() -> None: +def handle_agnos_update(fetched_path) -> None: from openpilot.system.hardware.tici.agnos import flash_agnos_update, get_target_slot_number cur_version = HARDWARE.get_os_version() updated_version = run(["bash", "-c", r"unset AGNOS_VERSION && source launch_env.sh && \ - echo -n $AGNOS_VERSION"], OVERLAY_MERGED).strip() + echo -n $AGNOS_VERSION"], fetched_path).strip() cloudlog.info(f"AGNOS version check: {cur_version} vs {updated_version}") if cur_version == updated_version: @@ -223,61 +75,44 @@ def handle_agnos_update() -> None: cloudlog.info(f"Beginning background installation for AGNOS {updated_version}") set_offroad_alert("Offroad_NeosUpdate", True) - manifest_path = os.path.join(OVERLAY_MERGED, "system/hardware/tici/agnos.json") + manifest_path = os.path.join(fetched_path, "system/hardware/tici/agnos.json") target_slot_number = get_target_slot_number() flash_agnos_update(manifest_path, target_slot_number, cloudlog) set_offroad_alert("Offroad_NeosUpdate", False) +STRATEGY = { + "git": GitUpdateStrategy, +} + class Updater: def __init__(self): self.params = Params() - self.branches = defaultdict(str) self._has_internet: bool = False + self.strategy: UpdateStrategy = STRATEGY[os.environ.get("UPDATER_STRATEGY", "git")]() + @property def has_internet(self) -> bool: return self._has_internet - @property - def target_branch(self) -> str: - b: str | None = self.params.get("UpdaterTargetBranch", encoding='utf-8') - if b is None: - b = self.get_branch(BASEDIR) - return b + def init(self): + self.strategy.init() - @property - def update_ready(self) -> bool: - consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) - if consistent_file.is_file(): - hash_mismatch = self.get_commit_hash(BASEDIR) != self.branches[self.target_branch] - branch_mismatch = self.get_branch(BASEDIR) != self.target_branch - on_target_branch = self.get_branch(FINALIZED) == self.target_branch - return ((hash_mismatch or branch_mismatch) and on_target_branch) - return False - - @property - def update_available(self) -> bool: - if os.path.isdir(OVERLAY_MERGED) and len(self.branches) > 0: - hash_mismatch = self.get_commit_hash(OVERLAY_MERGED) != self.branches[self.target_branch] - branch_mismatch = self.get_branch(OVERLAY_MERGED) != self.target_branch - return hash_mismatch or branch_mismatch - return False - - def get_branch(self, path: str) -> str: - return run(["git", "rev-parse", "--abbrev-ref", "HEAD"], path).rstrip() - - def get_commit_hash(self, path: str = OVERLAY_MERGED) -> str: - return run(["git", "rev-parse", "HEAD"], path).rstrip() + def cleanup(self): + self.strategy.cleanup() def set_params(self, update_success: bool, failed_count: int, exception: str | None) -> None: self.params.put("UpdateFailedCount", str(failed_count)) - self.params.put("UpdaterTargetBranch", self.target_branch) - self.params.put_bool("UpdaterFetchAvailable", self.update_available) - if len(self.branches): - self.params.put("UpdaterAvailableBranches", ','.join(self.branches.keys())) + if self.params.get("UpdaterTargetBranch") is None: + self.params.put("UpdaterTargetBranch", self.strategy.current_channel()) + + self.params.put_bool("UpdaterFetchAvailable", self.strategy.update_available()) + + available_channels = self.strategy.get_available_channels() + self.params.put("UpdaterAvailableBranches", ','.join(available_channels)) last_update = datetime.datetime.utcnow() if update_success: @@ -292,32 +127,14 @@ class Updater: else: self.params.put("LastUpdateException", exception) - # Write out current and new version info - def get_description(basedir: str) -> str: - if not os.path.exists(basedir): - return "" + description_current, release_notes_current = self.strategy.describe_current_channel() + description_ready, release_notes_ready = self.strategy.describe_ready_channel() - version = "" - branch = "" - commit = "" - commit_date = "" - try: - branch = self.get_branch(basedir) - commit = self.get_commit_hash(basedir)[:7] - with open(os.path.join(basedir, "common", "version.h")) as f: - version = f.read().split('"')[1] - - commit_unix_ts = run(["git", "show", "-s", "--format=%ct", "HEAD"], basedir).rstrip() - dt = datetime.datetime.fromtimestamp(int(commit_unix_ts)) - commit_date = dt.strftime("%b %d") - except Exception: - cloudlog.exception("updater.get_description") - return f"{version} / {branch} / {commit} / {commit_date}" - self.params.put("UpdaterCurrentDescription", get_description(BASEDIR)) - self.params.put("UpdaterCurrentReleaseNotes", parse_release_notes(BASEDIR)) - self.params.put("UpdaterNewDescription", get_description(FINALIZED)) - self.params.put("UpdaterNewReleaseNotes", parse_release_notes(FINALIZED)) - self.params.put_bool("UpdateAvailable", self.update_ready) + self.params.put("UpdaterCurrentDescription", description_current) + self.params.put("UpdaterCurrentReleaseNotes", release_notes_current) + self.params.put("UpdaterNewDescription", description_ready) + self.params.put("UpdaterNewReleaseNotes", release_notes_ready) + self.params.put_bool("UpdateAvailable", self.strategy.update_ready()) # Handle user prompt for alert in ("Offroad_UpdateFailed", "Offroad_ConnectivityNeeded", "Offroad_ConnectivityNeededPrompt"): @@ -341,67 +158,24 @@ class Updater: def check_for_update(self) -> None: cloudlog.info("checking for updates") - excluded_branches = ('release2', 'release2-staging') - - try: - run(["git", "ls-remote", "origin", "HEAD"], OVERLAY_MERGED) - self._has_internet = True - except subprocess.CalledProcessError: - self._has_internet = False - - setup_git_options(OVERLAY_MERGED) - output = run(["git", "ls-remote", "--heads"], OVERLAY_MERGED) - - self.branches = defaultdict(lambda: None) - for line in output.split('\n'): - ls_remotes_re = r'(?P\b[0-9a-f]{5,40}\b)(\s+)(refs\/heads\/)(?P.*$)' - x = re.fullmatch(ls_remotes_re, line.strip()) - if x is not None and x.group('branch_name') not in excluded_branches: - self.branches[x.group('branch_name')] = x.group('commit_sha') - - cur_branch = self.get_branch(OVERLAY_MERGED) - cur_commit = self.get_commit_hash(OVERLAY_MERGED) - new_branch = self.target_branch - new_commit = self.branches[new_branch] - if (cur_branch, cur_commit) != (new_branch, new_commit): - cloudlog.info(f"update available, {cur_branch} ({str(cur_commit)[:7]}) -> {new_branch} ({str(new_commit)[:7]})") - else: - cloudlog.info(f"up to date on {cur_branch} ({str(cur_commit)[:7]})") + self.strategy.update_available() def fetch_update(self) -> None: - cloudlog.info("attempting git fetch inside staging overlay") - self.params.put("UpdaterState", "downloading...") # TODO: cleanly interrupt this and invalidate old update set_consistent_flag(False) self.params.put_bool("UpdateAvailable", False) - setup_git_options(OVERLAY_MERGED) - - branch = self.target_branch - git_fetch_output = run(["git", "fetch", "origin", branch], OVERLAY_MERGED) - cloudlog.info("git fetch success: %s", git_fetch_output) - - cloudlog.info("git reset in progress") - cmds = [ - ["git", "checkout", "--force", "--no-recurse-submodules", "-B", branch, "FETCH_HEAD"], - ["git", "reset", "--hard"], - ["git", "clean", "-xdff"], - ["git", "submodule", "sync"], - ["git", "submodule", "update", "--init", "--recursive"], - ["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], - ] - r = [run(cmd, OVERLAY_MERGED) for cmd in cmds] - cloudlog.info("git reset success: %s", '\n'.join(r)) + self.strategy.fetch_update() # TODO: show agnos download progress if AGNOS: - handle_agnos_update() + handle_agnos_update(self.strategy.fetched_path()) # Create the finalized, ready-to-swap update self.params.put("UpdaterState", "finalizing update...") - finalize_update() + self.strategy.finalize_update() cloudlog.info("finalize success!") @@ -450,7 +224,7 @@ def main() -> None: exception = None try: # TODO: reuse overlay from previous updated instance if it looks clean - init_overlay() + updater.init() # ensure we have some params written soon after startup updater.set_params(False, update_failed_count, exception) @@ -486,11 +260,11 @@ def main() -> None: returncode=e.returncode ) exception = f"command failed: {e.cmd}\n{e.output}" - OVERLAY_INIT.unlink(missing_ok=True) + updater.cleanup() except Exception as e: cloudlog.exception("uncaught updated exception, shouldn't happen") exception = str(e) - OVERLAY_INIT.unlink(missing_ok=True) + updater.cleanup() try: params.put("UpdaterState", "idle") From a0389d7120624b35fb169d680889ae56e1adb10a Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 8 Mar 2024 11:32:38 -0800 Subject: [PATCH 144/599] add hasFix field to gpsLocation (#31778) * add hasFix field to gpsLocation * migration * update refs for ubloxd * cereal master --- cereal | 2 +- selfdrive/locationd/locationd.cc | 4 +--- selfdrive/locationd/test/test_locationd.py | 1 + .../locationd/test/test_locationd_scenarios.py | 3 ++- selfdrive/test/process_replay/migration.py | 17 +++++++++++++++++ selfdrive/test/process_replay/ref_commit | 2 +- system/qcomgpsd/qcomgpsd.py | 4 ++-- system/ubloxd/ublox_msg.cc | 1 + 8 files changed, 26 insertions(+), 8 deletions(-) diff --git a/cereal b/cereal index c5c2a60f1a..cf7bb3e749 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit c5c2a60f1aa796e7de464015349db3c336b79220 +Subproject commit cf7bb3e74974879abef94286fab4d39398fe402b diff --git a/selfdrive/locationd/locationd.cc b/selfdrive/locationd/locationd.cc index 26999cd684..2ac392a778 100644 --- a/selfdrive/locationd/locationd.cc +++ b/selfdrive/locationd/locationd.cc @@ -308,14 +308,12 @@ void Localizer::input_fake_gps_observations(double current_time) { } void Localizer::handle_gps(double current_time, const cereal::GpsLocationData::Reader& log, const double sensor_time_offset) { - // ignore the message if the fix is invalid - bool gps_invalid_flag = (log.getFlags() % 2 == 0); bool gps_unreasonable = (Vector2d(log.getHorizontalAccuracy(), log.getVerticalAccuracy()).norm() >= SANE_GPS_UNCERTAINTY); bool gps_accuracy_insane = ((log.getVerticalAccuracy() <= 0) || (log.getSpeedAccuracy() <= 0) || (log.getBearingAccuracyDeg() <= 0)); bool gps_lat_lng_alt_insane = ((std::abs(log.getLatitude()) > 90) || (std::abs(log.getLongitude()) > 180) || (std::abs(log.getAltitude()) > ALTITUDE_SANITY_CHECK)); bool gps_vel_insane = (floatlist2vector(log.getVNED()).norm() > TRANS_SANITY_CHECK); - if (gps_invalid_flag || gps_unreasonable || gps_accuracy_insane || gps_lat_lng_alt_insane || gps_vel_insane) { + if (!log.getHasFix() || gps_unreasonable || gps_accuracy_insane || gps_lat_lng_alt_insane || gps_vel_insane) { //this->gps_valid = false; this->determine_gps_mode(current_time); return; diff --git a/selfdrive/locationd/test/test_locationd.py b/selfdrive/locationd/test/test_locationd.py index 78de9216dc..cd032dbaf0 100755 --- a/selfdrive/locationd/test/test_locationd.py +++ b/selfdrive/locationd/test/test_locationd.py @@ -38,6 +38,7 @@ class TestLocationdProc(unittest.TestCase): if name == "gpsLocationExternal": msg.gpsLocationExternal.flags = 1 + msg.gpsLocationExternal.hasFix = True msg.gpsLocationExternal.verticalAccuracy = 1.0 msg.gpsLocationExternal.speedAccuracy = 1.0 msg.gpsLocationExternal.bearingAccuracyDeg = 1.0 diff --git a/selfdrive/locationd/test/test_locationd_scenarios.py b/selfdrive/locationd/test/test_locationd_scenarios.py index f48c83ce46..3fdd47275f 100755 --- a/selfdrive/locationd/test/test_locationd_scenarios.py +++ b/selfdrive/locationd/test/test_locationd_scenarios.py @@ -6,6 +6,7 @@ from collections import defaultdict from enum import Enum from openpilot.tools.lib.logreader import LogReader +from openpilot.selfdrive.test.process_replay.migration import migrate_all from openpilot.selfdrive.test.process_replay.process_replay import replay_process_with_name TEST_ROUTE = "ff2bd20623fcaeaa|2023-09-05--10-14-54/4" @@ -107,7 +108,7 @@ class TestLocationdScenarios(unittest.TestCase): @classmethod def setUpClass(cls): - cls.logs = list(LogReader(TEST_ROUTE)) + cls.logs = migrate_all(LogReader(TEST_ROUTE)) def test_base(self): """ diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index ef74314172..d480309169 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -7,9 +7,11 @@ from openpilot.selfdrive.manager.process_config import managed_processes from panda import Panda +# TODO: message migration should happen in-place def migrate_all(lr, old_logtime=False, manager_states=False, panda_states=False, camera_states=False): msgs = migrate_sensorEvents(lr, old_logtime) msgs = migrate_carParams(msgs, old_logtime) + msgs = migrate_gpsLocation(msgs) if manager_states: msgs = migrate_managerState(msgs) if panda_states: @@ -35,6 +37,21 @@ def migrate_managerState(lr): return all_msgs +def migrate_gpsLocation(lr): + all_msgs = [] + for msg in lr: + if msg.which() in ('gpsLocation', 'gpsLocationExternal'): + new_msg = msg.as_builder() + g = getattr(new_msg, new_msg.which()) + # hasFix is a newer field + if not g.hasFix and g.flags == 1: + g.hasFix = True + all_msgs.append(new_msg.as_reader()) + else: + all_msgs.append(msg) + return all_msgs + + def migrate_pandaStates(lr): all_msgs = [] # TODO: safety param migration should be handled automatically diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 46d684211c..97646ce064 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -43efe1cf08cba8c86bc1ae8234b3d3d084a40e5d +d53d44c21a89d7925d5ad16938e14794907f28b1 \ No newline at end of file diff --git a/system/qcomgpsd/qcomgpsd.py b/system/qcomgpsd/qcomgpsd.py index 25b547cf5e..859e024e68 100755 --- a/system/qcomgpsd/qcomgpsd.py +++ b/system/qcomgpsd/qcomgpsd.py @@ -352,8 +352,8 @@ def main() -> NoReturn: gps.bearingAccuracyDeg = report["q_FltHeadingUncRad"] * 180/math.pi if (report["q_FltHeadingUncRad"] != 0) else 180 gps.speedAccuracy = math.sqrt(sum([x**2 for x in vNEDsigma])) # quectel gps verticalAccuracy is clipped to 500, set invalid if so - gps.flags = 1 if gps.verticalAccuracy != 500 else 0 - if gps.flags: + gps.hasFix = gps.verticalAccuracy != 500 + if gps.hasFix: want_assistance = False stop_download_event.set() pm.send('gpsLocation', msg) diff --git a/system/ubloxd/ublox_msg.cc b/system/ubloxd/ublox_msg.cc index eb1a1e4b19..26b33a1e32 100644 --- a/system/ubloxd/ublox_msg.cc +++ b/system/ubloxd/ublox_msg.cc @@ -127,6 +127,7 @@ kj::Array UbloxMsgParser::gen_nav_pvt(ubx_t::nav_pvt_t *msg) { auto gpsLoc = msg_builder.initEvent().initGpsLocationExternal(); gpsLoc.setSource(cereal::GpsLocationData::SensorSource::UBLOX); gpsLoc.setFlags(msg->flags()); + gpsLoc.setHasFix((msg->flags() % 2) == 1); gpsLoc.setLatitude(msg->lat() * 1e-07); gpsLoc.setLongitude(msg->lon() * 1e-07); gpsLoc.setAltitude(msg->height() * 1e-03); From 358461896c115027a6372504505a4cd9be8dbeb2 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 8 Mar 2024 16:09:47 -0500 Subject: [PATCH 145/599] add helper for serving a directory (#31802) directory http server --- selfdrive/test/helpers.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/selfdrive/test/helpers.py b/selfdrive/test/helpers.py index c157b98b62..fe47637bdd 100644 --- a/selfdrive/test/helpers.py +++ b/selfdrive/test/helpers.py @@ -113,3 +113,12 @@ def with_http_server(func, handler=http.server.BaseHTTPRequestHandler, setup=Non with http_server_context(handler, setup) as (host, port): return func(*args, f"http://{host}:{port}", **kwargs) return inner + + +def DirectoryHttpServer(directory) -> type[http.server.SimpleHTTPRequestHandler]: + # creates an http server that serves files from directory + class Handler(http.server.SimpleHTTPRequestHandler): + def __init__(self, *args, **kwargs): + super().__init__(*args, directory=str(directory), **kwargs) + + return Handler From 33d1b127c9e7a3d563014a13f174939be202238d Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 8 Mar 2024 13:18:55 -0800 Subject: [PATCH 146/599] much commit --- release/check-submodules.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/check-submodules.sh b/release/check-submodules.sh index 5f4e307e49..bff8d7a28f 100755 --- a/release/check-submodules.sh +++ b/release/check-submodules.sh @@ -1,7 +1,7 @@ #!/bin/bash while read hash submodule ref; do - git -C $submodule fetch --depth 1000 origin master + git -C $submodule fetch --depth 2000 origin master git -C $submodule branch -r --contains $hash | grep "origin/master" if [ "$?" -eq 0 ]; then echo "$submodule ok" From bfd6ab68b5fb65da10b4c5c70c5b5782c998d4fe Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 8 Mar 2024 13:29:42 -0800 Subject: [PATCH 147/599] cgpsd: use hasFix --- system/qcomgpsd/cgpsd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/qcomgpsd/cgpsd.py b/system/qcomgpsd/cgpsd.py index c0edc721fa..04a92d4a45 100755 --- a/system/qcomgpsd/cgpsd.py +++ b/system/qcomgpsd/cgpsd.py @@ -83,7 +83,7 @@ def main(): dt = datetime.datetime.strptime(f"{date} {gnrmc[1]}", '%d%m%y %H%M%S.%f') gps.unixTimestampMillis = dt.timestamp()*1e3 - gps.flags = 1 if gnrmc[1] == 'A' else 0 + gps.hasFix = gnrmc[1] == 'A' # TODO: make our own source gps.source = log.GpsLocationData.SensorSource.qcomdiag From 74bf9dcdc7835f427eff132be8d32a86543a0cd4 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 8 Mar 2024 16:46:16 -0500 Subject: [PATCH 148/599] updated: more common helpers (#31804) update more helpers --- selfdrive/updated/common.py | 15 +++++++++++++++ selfdrive/updated/git.py | 17 ++++++----------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/selfdrive/updated/common.py b/selfdrive/updated/common.py index c522e075d5..6847147995 100644 --- a/selfdrive/updated/common.py +++ b/selfdrive/updated/common.py @@ -86,6 +86,11 @@ def set_consistent_flag(consistent: bool) -> None: os.sync() +def get_consistent_flag() -> bool: + consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) + return consistent_file.is_file() + + def parse_release_notes(releases_md: str) -> str: try: r = releases_md.split('\n\n', 1)[0] # Slice latest release notes @@ -98,3 +103,13 @@ def parse_release_notes(releases_md: str) -> str: except Exception: cloudlog.exception("failed to parse release notes") return "" + + +def get_version(path) -> str: + with open(os.path.join(path, "common", "version.h")) as f: + return f.read().split('"')[1] + + +def get_release_notes(path) -> str: + with open(os.path.join(path, "RELEASES.md"), "r") as f: + return parse_release_notes(f.read()) diff --git a/selfdrive/updated/git.py b/selfdrive/updated/git.py index 29f95eeeff..921b32ede2 100644 --- a/selfdrive/updated/git.py +++ b/selfdrive/updated/git.py @@ -12,7 +12,8 @@ from typing import List from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params from openpilot.common.swaglog import cloudlog -from openpilot.selfdrive.updated.common import FINALIZED, STAGING_ROOT, UpdateStrategy, parse_release_notes, set_consistent_flag, run +from openpilot.selfdrive.updated.common import FINALIZED, STAGING_ROOT, UpdateStrategy, \ + get_consistent_flag, get_release_notes, get_version, set_consistent_flag, run OVERLAY_UPPER = os.path.join(STAGING_ROOT, "upper") @@ -127,8 +128,7 @@ class GitUpdateStrategy(UpdateStrategy): return list(self.branches.keys()) def update_ready(self) -> bool: - consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) - if consistent_file.is_file(): + if get_consistent_flag(): hash_mismatch = self.get_commit_hash(BASEDIR) != self.branches[self.target_channel] branch_mismatch = self.get_branch(BASEDIR) != self.target_channel on_target_channel = self.get_branch(FINALIZED) == self.target_channel @@ -165,8 +165,7 @@ class GitUpdateStrategy(UpdateStrategy): try: branch = self.get_branch(basedir) commit = self.get_commit_hash(basedir)[:7] - with open(os.path.join(basedir, "common", "version.h")) as f: - version = f.read().split('"')[1] + version = get_version(basedir) commit_unix_ts = run(["git", "show", "-s", "--format=%ct", "HEAD"], basedir).rstrip() dt = datetime.datetime.fromtimestamp(int(commit_unix_ts)) @@ -175,16 +174,12 @@ class GitUpdateStrategy(UpdateStrategy): cloudlog.exception("updater.get_description") return f"{version} / {branch} / {commit} / {commit_date}" - def release_notes_branch(self, basedir) -> str: - with open(os.path.join(basedir, "RELEASES.md"), "r") as f: - return parse_release_notes(f.read()) - def describe_current_channel(self) -> tuple[str, str]: - return self.describe_branch(BASEDIR), self.release_notes_branch(BASEDIR) + return self.describe_branch(BASEDIR), get_release_notes(BASEDIR) def describe_ready_channel(self) -> tuple[str, str]: if self.update_ready(): - return self.describe_branch(FINALIZED), self.release_notes_branch(FINALIZED) + return self.describe_branch(FINALIZED), get_release_notes(FINALIZED) return "", "" From 06ab3de4de18553c8dfba936f9cfb59885899aba Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 8 Mar 2024 14:11:08 -0800 Subject: [PATCH 149/599] update cavli config --- system/hardware/tici/hardware.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/system/hardware/tici/hardware.py b/system/hardware/tici/hardware.py index c1cb9da438..45d20d976b 100644 --- a/system/hardware/tici/hardware.py +++ b/system/hardware/tici/hardware.py @@ -468,8 +468,9 @@ class Tici(HardwareBase): # use sim slot 'AT^SIMSWAP=1', - # configure ECM mode - 'AT$QCPCFG=usbNet,1' + # ethernet config + 'AT$QCPCFG=usbNet,0', + 'AT$QCNETDEVCTL=3,1', ] else: cmds += [ From 9c8a27ad2492cf613543103709ae8e3c4a3f5b31 Mon Sep 17 00:00:00 2001 From: Michel Le Bihan Date: Sat, 9 Mar 2024 00:13:02 +0100 Subject: [PATCH 150/599] simulator: Increase map size to contain road (#31805) --- tools/sim/scenarios/metadrive/stay_in_lane.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/sim/scenarios/metadrive/stay_in_lane.py b/tools/sim/scenarios/metadrive/stay_in_lane.py index 6d5f680247..17d3d28a2d 100755 --- a/tools/sim/scenarios/metadrive/stay_in_lane.py +++ b/tools/sim/scenarios/metadrive/stay_in_lane.py @@ -67,6 +67,7 @@ class MetaDriveBridge(SimulatorBridge): crash_object_done=True, traffic_density=0.0, map_config=create_map(), + map_region_size=2048, decision_repeat=1, physics_world_step_size=self.TICKS_PER_FRAME/100, preload_models=False From bc81daee8b9d4364e17918196692ea62be20e9c5 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 8 Mar 2024 18:31:24 -0500 Subject: [PATCH 151/599] test_updated: check the version and consistency of finalized dir (#31808) * check finalized * also check consistent --- selfdrive/updated/tests/test_base.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/selfdrive/updated/tests/test_base.py b/selfdrive/updated/tests/test_base.py index f500145b6f..9065899eb8 100644 --- a/selfdrive/updated/tests/test_base.py +++ b/selfdrive/updated/tests/test_base.py @@ -104,9 +104,12 @@ class BaseUpdateTest(unittest.TestCase): self.assertEqual(self.params.get_bool("UpdaterFetchAvailable"), fetch_available) self.assertEqual(self.params.get_bool("UpdateAvailable"), update_available) - def _test_update_params(self, branch, version, agnos_version, release_notes): + def _test_finalized_update(self, branch, version, agnos_version, release_notes): + from openpilot.selfdrive.updated.common import get_version, get_consistent_flag # this needs to be inline because common uses environment variables self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}")) self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") + self.assertEqual(get_version(str(self.staging_root / "finalized")), version) + self.assertEqual(get_consistent_flag(), True) def wait_for_condition(self, condition, timeout=12): start = time.monotonic() @@ -170,7 +173,7 @@ class BaseUpdateTest(unittest.TestCase): self.wait_for_update_available() self._test_params("release3", False, True) - self._test_update_params("release3", *self.MOCK_RELEASES["release3"]) + self._test_finalized_update("release3", *self.MOCK_RELEASES["release3"]) def test_switch_branches(self): # Start on release3, request to switch to master manually, ensure we switched @@ -195,7 +198,7 @@ class BaseUpdateTest(unittest.TestCase): self.wait_for_update_available() self._test_params("master", False, True) - self._test_update_params("master", *self.MOCK_RELEASES["master"]) + self._test_finalized_update("master", *self.MOCK_RELEASES["master"]) def test_agnos_update(self): # Start on release3, push an update with an agnos change @@ -227,4 +230,4 @@ class BaseUpdateTest(unittest.TestCase): self.wait_for_update_available() self._test_params("release3", False, True) - self._test_update_params("release3", *self.MOCK_RELEASES["release3"]) + self._test_finalized_update("release3", *self.MOCK_RELEASES["release3"]) From 7eb1e958848c6fdb0865da95eaba991252ca9fd6 Mon Sep 17 00:00:00 2001 From: ZwX1616 Date: Fri, 8 Mar 2024 16:43:18 -0800 Subject: [PATCH 152/599] camerad: OS04C10 operational (#31674) * it's something * backup * 16:10 * cleanup * this is fine * close * remove some junk * no heck * disos * real 10 * for some reason this is flipped * 20hz * no return * ae * tear * need curve laster * correct real gains * fix time * cleanup * why the scam * disable for now * 0.7 * hdr * that doesnt work * what * hugeoof * clean up * cleanup * fix regs * welp cant * is this corrent * it is sq * remove * back * add base comment * clean up * make orders clear * not abcd --------- Co-authored-by: Comma Device --- system/camerad/cameras/camera_common.cc | 8 +- system/camerad/cameras/real_debayer.cl | 169 ++++++++++++++------- system/camerad/sensors/ar0231.cc | 8 +- system/camerad/sensors/os04c10.cc | 53 +++---- system/camerad/sensors/os04c10_registers.h | 155 ++++++++++--------- system/camerad/sensors/ox03c10.cc | 6 +- system/camerad/sensors/sensor.h | 4 - 7 files changed, 232 insertions(+), 171 deletions(-) diff --git a/system/camerad/cameras/camera_common.cc b/system/camerad/cameras/camera_common.cc index fff4a62d31..aa815bfadf 100644 --- a/system/camerad/cameras/camera_common.cc +++ b/system/camerad/cameras/camera_common.cc @@ -27,14 +27,18 @@ public: "-cl-fast-relaxed-math -cl-denorms-are-zero " "-DFRAME_WIDTH=%d -DFRAME_HEIGHT=%d -DFRAME_STRIDE=%d -DFRAME_OFFSET=%d " "-DRGB_WIDTH=%d -DRGB_HEIGHT=%d -DYUV_STRIDE=%d -DUV_OFFSET=%d " - "-DIS_OX=%d -DCAM_NUM=%d%s", + "-DIS_OX=%d -DIS_OS=%d -DIS_BGGR=%d -DCAM_NUM=%d%s", ci->frame_width, ci->frame_height, ci->frame_stride, ci->frame_offset, b->rgb_width, b->rgb_height, buf_width, uv_offset, - ci->image_sensor == cereal::FrameData::ImageSensor::OX03C10, s->camera_num, s->camera_num==1 ? " -DVIGNETTING" : ""); + ci->image_sensor == cereal::FrameData::ImageSensor::OX03C10, + ci->image_sensor == cereal::FrameData::ImageSensor::OS04C10, + ci->image_sensor == cereal::FrameData::ImageSensor::OS04C10, + s->camera_num, s->camera_num==1 ? " -DVIGNETTING" : ""); const char *cl_file = "cameras/real_debayer.cl"; cl_program prg_debayer = cl_program_from_file(context, device_id, cl_file, args); krnl_ = CL_CHECK_ERR(clCreateKernel(prg_debayer, "debayer10", &err)); CL_CHECK(clReleaseProgram(prg_debayer)); + } void queue(cl_command_queue q, cl_mem cam_buf_cl, cl_mem buf_cl, int width, int height, cl_event *debayer_event) { diff --git a/system/camerad/cameras/real_debayer.cl b/system/camerad/cameras/real_debayer.cl index e15a873d6d..5f8d046cb5 100644 --- a/system/camerad/cameras/real_debayer.cl +++ b/system/camerad/cameras/real_debayer.cl @@ -8,7 +8,7 @@ float3 color_correct(float3 rgb) { // color correction - #if IS_OX + #if IS_OX | IS_OS float3 x = rgb.x * (float3)(1.5664815 , -0.29808738, -0.03973474); x += rgb.y * (float3)(-0.48672447, 1.41914433, -0.40295248); x += rgb.z * (float3)(-0.07975703, -0.12105695, 1.44268722); @@ -20,6 +20,8 @@ float3 color_correct(float3 rgb) { #if IS_OX return -0.507089*exp(-12.54124638*x)+0.9655*powr(x,0.5)-0.472597*x+0.507089; + #elif IS_OS + return powr(x,0.7); #else // tone mapping params const float gamma_k = 0.75; @@ -35,6 +37,9 @@ float3 color_correct(float3 rgb) { } float get_vignetting_s(float r) { + #if IS_OS + r = r / 2.2545f; + #endif if (r < 62500) { return (1.0f + 0.0000008f*r); } else if (r < 490000) { @@ -85,6 +90,24 @@ float4 val4_from_12(uchar8 pvs, float gain) { } +float4 val4_from_10(uchar8 pvs, uchar ext, bool aligned, float gain) { + uint4 parsed; + if (aligned) { + parsed = (uint4)(((uint)pvs.s0 << 2) + (pvs.s1 & 0b00000011), + ((uint)pvs.s2 << 2) + ((pvs.s6 & 0b11000000) / 64), + ((uint)pvs.s3 << 2) + ((pvs.s6 & 0b00110000) / 16), + ((uint)pvs.s4 << 2) + ((pvs.s6 & 0b00001100) / 4)); + } else { + parsed = (uint4)(((uint)pvs.s0 << 2) + ((pvs.s3 & 0b00110000) / 16), + ((uint)pvs.s1 << 2) + ((pvs.s3 & 0b00001100) / 4), + ((uint)pvs.s2 << 2) + ((pvs.s3 & 0b00000011)), + ((uint)pvs.s4 << 2) + ((ext & 0b11000000) / 64)); + } + + float4 pv = convert_float4(parsed) / 1024.0; + return clamp(pv*gain, 0.0, 1.0); +} + float get_k(float a, float b, float c, float d) { return 2.0 - (fabs(a - b) + fabs(c - d)); } @@ -94,20 +117,51 @@ __kernel void debayer10(const __global uchar * in, __global uchar * out) const int gid_x = get_global_id(0); const int gid_y = get_global_id(1); - const int y_top_mod = (gid_y == 0) ? 2: 0; - const int y_bot_mod = (gid_y == (RGB_HEIGHT/2 - 1)) ? 1: 3; + const int row_before_offset = (gid_y == 0) ? 2 : 0; + const int row_after_offset = (gid_y == (RGB_HEIGHT/2 - 1)) ? 1 : 3; float3 rgb; uchar3 rgb_out[4]; - int start = (2 * gid_y - 1) * FRAME_STRIDE + (3 * gid_x - 2) + (FRAME_STRIDE * FRAME_OFFSET); + #if IS_BGGR + constant int row_read_order[] = {3, 2, 1, 0}; + constant int rgb_write_order[] = {2, 3, 0, 1}; + #else + constant int row_read_order[] = {0, 1, 2, 3}; + constant int rgb_write_order[] = {0, 1, 2, 3}; + #endif + + int start_idx; + #if IS_10BIT + bool aligned10; + if (gid_x % 2 == 0) { + aligned10 = true; + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (5 * gid_x / 2 - 2) + (FRAME_STRIDE * FRAME_OFFSET); + } else { + aligned10 = false; + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (5 * (gid_x - 1) / 2 + 1) + (FRAME_STRIDE * FRAME_OFFSET); + } + #else + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (3 * gid_x - 2) + (FRAME_STRIDE * FRAME_OFFSET); + #endif // read in 8x4 chars uchar8 dat[4]; - dat[0] = vload8(0, in + start + FRAME_STRIDE*y_top_mod); - dat[1] = vload8(0, in + start + FRAME_STRIDE*1); - dat[2] = vload8(0, in + start + FRAME_STRIDE*2); - dat[3] = vload8(0, in + start + FRAME_STRIDE*y_bot_mod); + dat[0] = vload8(0, in + start_idx + FRAME_STRIDE*row_before_offset); + dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*1); + dat[2] = vload8(0, in + start_idx + FRAME_STRIDE*2); + dat[3] = vload8(0, in + start_idx + FRAME_STRIDE*row_after_offset); + + // need extra bit for 10-bit + #if IS_10BIT + uchar extra[4]; + if (!aligned10) { + extra[0] = in[start_idx + FRAME_STRIDE*row_before_offset + 8]; + extra[1] = in[start_idx + FRAME_STRIDE*1 + 8]; + extra[2] = in[start_idx + FRAME_STRIDE*2 + 8]; + extra[3] = in[start_idx + FRAME_STRIDE*row_after_offset + 8]; + } + #endif // correct vignetting #if VIGNETTING @@ -118,60 +172,69 @@ __kernel void debayer10(const __global uchar * in, __global uchar * out) const float gain = 1.0; #endif - // process them to floats - float4 va = val4_from_12(dat[0], gain); - float4 vb = val4_from_12(dat[1], gain); - float4 vc = val4_from_12(dat[2], gain); - float4 vd = val4_from_12(dat[3], gain); + float4 v_rows[4]; + // parse into floats + #if IS_10BIT + v_rows[row_read_order[0]] = val4_from_10(dat[0], extra[0], aligned10, 1.0); + v_rows[row_read_order[1]] = val4_from_10(dat[1], extra[1], aligned10, 1.0); + v_rows[row_read_order[2]] = val4_from_10(dat[2], extra[2], aligned10, 1.0); + v_rows[row_read_order[3]] = val4_from_10(dat[3], extra[3], aligned10, 1.0); + #else + v_rows[row_read_order[0]] = val4_from_12(dat[0], gain); + v_rows[row_read_order[1]] = val4_from_12(dat[1], gain); + v_rows[row_read_order[2]] = val4_from_12(dat[2], gain); + v_rows[row_read_order[3]] = val4_from_12(dat[3], gain); + #endif + // mirror padding if (gid_x == 0) { - va.s0 = va.s2; - vb.s0 = vb.s2; - vc.s0 = vc.s2; - vd.s0 = vd.s2; + v_rows[0].s0 = v_rows[0].s2; + v_rows[1].s0 = v_rows[1].s2; + v_rows[2].s0 = v_rows[2].s2; + v_rows[3].s0 = v_rows[3].s2; } else if (gid_x == RGB_WIDTH/2 - 1) { - va.s3 = va.s1; - vb.s3 = vb.s1; - vc.s3 = vc.s1; - vd.s3 = vd.s1; + v_rows[0].s3 = v_rows[0].s1; + v_rows[1].s3 = v_rows[1].s1; + v_rows[2].s3 = v_rows[2].s1; + v_rows[3].s3 = v_rows[3].s1; } // a simplified version of https://opensignalprocessingjournal.com/contents/volumes/V6/TOSIGPJ-6-1/TOSIGPJ-6-1.pdf - const float k01 = get_k(va.s0, vb.s1, va.s2, vb.s1); - const float k02 = get_k(va.s2, vb.s1, vc.s2, vb.s1); - const float k03 = get_k(vc.s0, vb.s1, vc.s2, vb.s1); - const float k04 = get_k(va.s0, vb.s1, vc.s0, vb.s1); - rgb.x = (k02*vb.s2+k04*vb.s0)/(k02+k04); // R_G1 - rgb.y = vb.s1; // G1(R) - rgb.z = (k01*va.s1+k03*vc.s1)/(k01+k03); // B_G1 - rgb_out[0] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); + const float k01 = get_k(v_rows[0].s0, v_rows[1].s1, v_rows[0].s2, v_rows[1].s1); + const float k02 = get_k(v_rows[0].s2, v_rows[1].s1, v_rows[2].s2, v_rows[1].s1); + const float k03 = get_k(v_rows[2].s0, v_rows[1].s1, v_rows[2].s2, v_rows[1].s1); + const float k04 = get_k(v_rows[0].s0, v_rows[1].s1, v_rows[2].s0, v_rows[1].s1); + rgb.x = (k02*v_rows[1].s2+k04*v_rows[1].s0)/(k02+k04); // R_G1 + rgb.y = v_rows[1].s1; // G1(R) + rgb.z = (k01*v_rows[0].s1+k03*v_rows[2].s1)/(k01+k03); // B_G1 + rgb_out[rgb_write_order[0]] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - const float k11 = get_k(va.s1, vc.s1, va.s3, vc.s3); - const float k12 = get_k(va.s2, vb.s1, vb.s3, vc.s2); - const float k13 = get_k(va.s1, va.s3, vc.s1, vc.s3); - const float k14 = get_k(va.s2, vb.s3, vc.s2, vb.s1); - rgb.x = vb.s2; // R - rgb.y = (k11*(va.s2+vc.s2)*0.5+k13*(vb.s3+vb.s1)*0.5)/(k11+k13); // G_R - rgb.z = (k12*(va.s3+vc.s1)*0.5+k14*(va.s1+vc.s3)*0.5)/(k12+k14); // B_R - rgb_out[1] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); + const float k11 = get_k(v_rows[0].s1, v_rows[2].s1, v_rows[0].s3, v_rows[2].s3); + const float k12 = get_k(v_rows[0].s2, v_rows[1].s1, v_rows[1].s3, v_rows[2].s2); + const float k13 = get_k(v_rows[0].s1, v_rows[0].s3, v_rows[2].s1, v_rows[2].s3); + const float k14 = get_k(v_rows[0].s2, v_rows[1].s3, v_rows[2].s2, v_rows[1].s1); + rgb.x = v_rows[1].s2; // R + rgb.y = (k11*(v_rows[0].s2+v_rows[2].s2)*0.5+k13*(v_rows[1].s3+v_rows[1].s1)*0.5)/(k11+k13); // G_R + rgb.z = (k12*(v_rows[0].s3+v_rows[2].s1)*0.5+k14*(v_rows[0].s1+v_rows[2].s3)*0.5)/(k12+k14); // B_R + rgb_out[rgb_write_order[1]] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - const float k21 = get_k(vb.s0, vd.s0, vb.s2, vd.s2); - const float k22 = get_k(vb.s1, vc.s0, vc.s2, vd.s1); - const float k23 = get_k(vb.s0, vb.s2, vd.s0, vd.s2); - const float k24 = get_k(vb.s1, vc.s2, vd.s1, vc.s0); - rgb.x = (k22*(vb.s2+vd.s0)*0.5+k24*(vb.s0+vd.s2)*0.5)/(k22+k24); // R_B - rgb.y = (k21*(vb.s1+vd.s1)*0.5+k23*(vc.s2+vc.s0)*0.5)/(k21+k23); // G_B - rgb.z = vc.s1; // B - rgb_out[2] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); + const float k21 = get_k(v_rows[1].s0, v_rows[3].s0, v_rows[1].s2, v_rows[3].s2); + const float k22 = get_k(v_rows[1].s1, v_rows[2].s0, v_rows[2].s2, v_rows[3].s1); + const float k23 = get_k(v_rows[1].s0, v_rows[1].s2, v_rows[3].s0, v_rows[3].s2); + const float k24 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[3].s1, v_rows[2].s0); + rgb.x = (k22*(v_rows[1].s2+v_rows[3].s0)*0.5+k24*(v_rows[1].s0+v_rows[3].s2)*0.5)/(k22+k24); // R_B + rgb.y = (k21*(v_rows[1].s1+v_rows[3].s1)*0.5+k23*(v_rows[2].s2+v_rows[2].s0)*0.5)/(k21+k23); // G_B + rgb.z = v_rows[2].s1; // B + rgb_out[rgb_write_order[2]] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - const float k31 = get_k(vb.s1, vc.s2, vb.s3, vc.s2); - const float k32 = get_k(vb.s3, vc.s2, vd.s3, vc.s2); - const float k33 = get_k(vd.s1, vc.s2, vd.s3, vc.s2); - const float k34 = get_k(vb.s1, vc.s2, vd.s1, vc.s2); - rgb.x = (k31*vb.s2+k33*vd.s2)/(k31+k33); // R_G2 - rgb.y = vc.s2; // G2(B) - rgb.z = (k32*vc.s3+k34*vc.s1)/(k32+k34); // B_G2 - rgb_out[3] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); + const float k31 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[1].s3, v_rows[2].s2); + const float k32 = get_k(v_rows[1].s3, v_rows[2].s2, v_rows[3].s3, v_rows[2].s2); + const float k33 = get_k(v_rows[3].s1, v_rows[2].s2, v_rows[3].s3, v_rows[2].s2); + const float k34 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[3].s1, v_rows[2].s2); + rgb.x = (k31*v_rows[1].s2+k33*v_rows[3].s2)/(k31+k33); // R_G2 + rgb.y = v_rows[2].s2; // G2(B) + rgb.z = (k32*v_rows[2].s3+k34*v_rows[2].s1)/(k32+k34); // B_G2 + rgb_out[rgb_write_order[3]] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); // write ys uchar2 yy = (uchar2)( diff --git a/system/camerad/sensors/ar0231.cc b/system/camerad/sensors/ar0231.cc index 1ca4b3f1ad..5c4934fb61 100644 --- a/system/camerad/sensors/ar0231.cc +++ b/system/camerad/sensors/ar0231.cc @@ -80,14 +80,14 @@ float ar0231_parse_temp_sensor(uint16_t calib1, uint16_t calib2, uint16_t data_r AR0231::AR0231() { image_sensor = cereal::FrameData::ImageSensor::AR0231; data_word = true; - frame_width = FRAME_WIDTH; - frame_height = FRAME_HEIGHT; - frame_stride = FRAME_STRIDE; + frame_width = 1928; + frame_height = 1208; + frame_stride = (frame_width * 12 / 8) + 4; extra_height = AR0231_REGISTERS_HEIGHT + AR0231_STATS_HEIGHT; registers_offset = 0; frame_offset = AR0231_REGISTERS_HEIGHT; - stats_offset = AR0231_REGISTERS_HEIGHT + FRAME_HEIGHT; + stats_offset = AR0231_REGISTERS_HEIGHT + frame_height; start_reg_array.assign(std::begin(start_reg_array_ar0231), std::end(start_reg_array_ar0231)); init_reg_array.assign(std::begin(init_array_ar0231), std::end(init_array_ar0231)); diff --git a/system/camerad/sensors/os04c10.cc b/system/camerad/sensors/os04c10.cc index 449e06be83..aaef9986b5 100644 --- a/system/camerad/sensors/os04c10.cc +++ b/system/camerad/sensors/os04c10.cc @@ -10,14 +10,11 @@ const float sensor_analog_gains_OS04C10[] = { 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5}; const uint32_t os04c10_analog_gains_reg[] = { - 0x100, 0x110, 0x120, 0x130, 0x140, 0x150, 0x160, 0x170, 0x180, 0x190, 0x1B0, - 0x1D0, 0x1F0, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0, 0x300, - 0x320, 0x360, 0x3A0, 0x3E0, 0x400, 0x440, 0x480, 0x4C0, 0x500, 0x540, 0x580, - 0x5C0, 0x600, 0x640, 0x680, 0x700, 0x780, 0x800, 0x880, 0x900, 0x980, 0xA00, - 0xA80, 0xB00, 0xB80, 0xC00, 0xC80, 0xD00, 0xD80, 0xE00, 0xE80, 0xF00, 0xF80}; - -const uint32_t VS_TIME_MIN_OS04C10 = 1; -//const uint32_t VS_TIME_MAX_OS04C10 = 34; // vs < 35 + 0x080, 0x088, 0x090, 0x098, 0x0A0, 0x0A8, 0x0B0, 0x0B8, 0x0C0, 0x0C8, 0x0D8, + 0x0E8, 0x0F8, 0x100, 0x110, 0x120, 0x130, 0x140, 0x150, 0x160, 0x170, 0x180, + 0x190, 0x1B0, 0x1D0, 0x1F0, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, + 0x2E0, 0x300, 0x320, 0x340, 0x380, 0x3C0, 0x400, 0x440, 0x480, 0x4C0, 0x500, + 0x540, 0x580, 0x5C0, 0x600, 0x640, 0x680, 0x6C0, 0x700, 0x740, 0x780, 0x7C0}; } // namespace @@ -25,15 +22,9 @@ OS04C10::OS04C10() { image_sensor = cereal::FrameData::ImageSensor::OS04C10; data_word = false; - frame_width = 1920; - frame_height = 1080; - frame_stride = (1920*10/8); - - /* - frame_width = 0xa80; - frame_height = 0x5f0; - frame_stride = 0xd20; - */ + frame_width = 2688; + frame_height = 1520; + frame_stride = (frame_width * 12 / 8); // no alignment extra_height = 0; frame_offset = 0; @@ -42,17 +33,17 @@ OS04C10::OS04C10() { init_reg_array.assign(std::begin(init_array_os04c10), std::end(init_array_os04c10)); probe_reg_addr = 0x300a; probe_expected_data = 0x5304; - mipi_format = CAM_FORMAT_MIPI_RAW_10; - frame_data_type = 0x2b; + mipi_format = CAM_FORMAT_MIPI_RAW_12; + frame_data_type = 0x2c; mclk_frequency = 24000000; // Hz - dc_gain_factor = 7.32; + dc_gain_factor = 1; dc_gain_min_weight = 1; // always on is fine dc_gain_max_weight = 1; dc_gain_on_grey = 0.9; dc_gain_off_grey = 1.0; exposure_time_min = 2; // 1x - exposure_time_max = 2016; + exposure_time_max = 2200; analog_gain_min_idx = 0x0; analog_gain_rec_idx = 0x0; // 1x analog_gain_max_idx = 0x36; @@ -62,30 +53,22 @@ OS04C10::OS04C10() { for (int i = 0; i <= analog_gain_max_idx; i++) { sensor_analog_gains[i] = sensor_analog_gains_OS04C10[i]; } - min_ev = (exposure_time_min + VS_TIME_MIN_OS04C10) * sensor_analog_gains[analog_gain_min_idx]; + min_ev = (exposure_time_min) * sensor_analog_gains[analog_gain_min_idx]; max_ev = exposure_time_max * dc_gain_factor * sensor_analog_gains[analog_gain_max_idx]; target_grey_factor = 0.01; } std::vector OS04C10::getExposureRegisters(int exposure_time, int new_exp_g, bool dc_gain_enabled) const { - // t_HCG&t_LCG + t_VS on LPD, t_SPD on SPD - uint32_t hcg_time = exposure_time; - //uint32_t lcg_time = hcg_time; - //uint32_t spd_time = std::min(std::max((uint32_t)exposure_time, (exposure_time_max + VS_TIME_MAX_OS04C10) / 3), exposure_time_max + VS_TIME_MAX_OS04C10); - //uint32_t vs_time = std::min(std::max((uint32_t)exposure_time / 40, VS_TIME_MIN_OS04C10), VS_TIME_MAX_OS04C10); - + uint32_t long_time = exposure_time; uint32_t real_gain = os04c10_analog_gains_reg[new_exp_g]; - hcg_time = 100; - real_gain = 0x320; + // uint32_t short_time = long_time > exposure_time_min*8 ? long_time / 8 : exposure_time_min; return { - {0x3501, hcg_time>>8}, {0x3502, hcg_time&0xFF}, - //{0x3581, lcg_time>>8}, {0x3582, lcg_time&0xFF}, - //{0x3541, spd_time>>8}, {0x3542, spd_time&0xFF}, - //{0x35c2, vs_time&0xFF}, - + {0x3501, long_time>>8}, {0x3502, long_time&0xFF}, + // {0x3511, short_time>>8}, {0x3512, short_time&0xFF}, {0x3508, real_gain>>8}, {0x3509, real_gain&0xFF}, + // {0x350c, real_gain>>8}, {0x350d, real_gain&0xFF}, }; } diff --git a/system/camerad/sensors/os04c10_registers.h b/system/camerad/sensors/os04c10_registers.h index ad91a02950..f2388d91b8 100644 --- a/system/camerad/sensors/os04c10_registers.h +++ b/system/camerad/sensors/os04c10_registers.h @@ -4,43 +4,33 @@ const struct i2c_random_wr_payload start_reg_array_os04c10[] = {{0x100, 1}}; const struct i2c_random_wr_payload stop_reg_array_os04c10[] = {{0x100, 0}}; const struct i2c_random_wr_payload init_array_os04c10[] = { - // OS04C10_AA_00_02_17_wAO_1920x1080_MIPI728Mbps_Linear12bit_20FPS_4Lane_MCLK24MHz + // OS04C10_AA_00_02_17_wAO_2688x1524_MIPI728Mbps_Linear12bit_20FPS_4Lane_MCLK24MHz {0x0103, 0x01}, - {0x0301, 0x84}, + + // PLL + {0x0301, 0xe4}, {0x0303, 0x01}, - {0x0305, 0x5b}, + {0x0305, 0xb6}, {0x0306, 0x01}, {0x0307, 0x17}, {0x0323, 0x04}, {0x0324, 0x01}, {0x0325, 0x62}, + {0x3012, 0x06}, {0x3013, 0x02}, {0x3016, 0x72}, {0x3021, 0x03}, {0x3106, 0x21}, {0x3107, 0xa1}, - {0x3500, 0x00}, - {0x3501, 0x00}, - {0x3502, 0x40}, - {0x3503, 0x88}, - {0x3508, 0x07}, - {0x3509, 0xc0}, - {0x350a, 0x04}, - {0x350b, 0x00}, - {0x350c, 0x07}, - {0x350d, 0xc0}, - {0x350e, 0x04}, - {0x350f, 0x00}, - {0x3510, 0x00}, - {0x3511, 0x00}, - {0x3512, 0x20}, + + // ? {0x3624, 0x00}, {0x3625, 0x4c}, - {0x3660, 0x00}, + {0x3660, 0x04}, {0x3666, 0xa5}, {0x3667, 0xa5}, - {0x366a, 0x64}, + {0x366a, 0x50}, {0x3673, 0x0d}, {0x3672, 0x0d}, {0x3671, 0x0d}, @@ -63,22 +53,22 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x36a0, 0x12}, {0x36a1, 0x5d}, {0x36a2, 0x66}, - {0x370a, 0x00}, + {0x370a, 0x02}, {0x370e, 0x0c}, {0x3710, 0x00}, {0x3713, 0x00}, {0x3725, 0x02}, {0x372a, 0x03}, {0x3738, 0xce}, - {0x3748, 0x00}, - {0x374a, 0x00}, - {0x374c, 0x00}, - {0x374e, 0x00}, + {0x3748, 0x02}, + {0x374a, 0x02}, + {0x374c, 0x02}, + {0x374e, 0x02}, {0x3756, 0x00}, - {0x3757, 0x0e}, + {0x3757, 0x00}, {0x3767, 0x00}, {0x3771, 0x00}, - {0x377b, 0x20}, + {0x377b, 0x28}, {0x377c, 0x00}, {0x377d, 0x0c}, {0x3781, 0x03}, @@ -111,6 +101,8 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3d8d, 0xe2}, {0x3f00, 0x0b}, {0x3f06, 0x04}, + + // BLC {0x400a, 0x01}, {0x400b, 0x50}, {0x400e, 0x08}, @@ -118,7 +110,7 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4045, 0x7e}, {0x4047, 0x7e}, {0x4049, 0x7e}, - {0x4090, 0x14}, + {0x4090, 0x04}, {0x40b0, 0x00}, {0x40b1, 0x00}, {0x40b2, 0x00}, @@ -128,24 +120,25 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x40b7, 0x00}, {0x40b8, 0x00}, {0x40b9, 0x00}, - {0x40ba, 0x00}, + {0x40ba, 0x01}, + {0x4301, 0x00}, {0x4303, 0x00}, {0x4502, 0x04}, {0x4503, 0x00}, {0x4504, 0x06}, {0x4506, 0x00}, - {0x4507, 0x64}, + {0x4507, 0x47}, {0x4803, 0x00}, {0x480c, 0x32}, - {0x480e, 0x00}, - {0x4813, 0x00}, + {0x480e, 0x04}, + {0x4813, 0xe4}, {0x4819, 0x70}, {0x481f, 0x30}, {0x4823, 0x3f}, {0x4825, 0x30}, {0x4833, 0x10}, - {0x484b, 0x07}, + {0x484b, 0x27}, {0x488b, 0x00}, {0x4d00, 0x04}, {0x4d01, 0xad}, @@ -156,31 +149,37 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4d0b, 0x01}, {0x4e00, 0x2a}, {0x4e0d, 0x00}, + + // ISP {0x5001, 0x09}, {0x5004, 0x00}, {0x5080, 0x04}, - {0x5036, 0x00}, + {0x5036, 0x80}, {0x5180, 0x70}, {0x5181, 0x10}, + + // DPC {0x520a, 0x03}, {0x520b, 0x06}, {0x520c, 0x0c}, + {0x580b, 0x0f}, {0x580d, 0x00}, {0x580f, 0x00}, {0x5820, 0x00}, {0x5821, 0x00}, + {0x301c, 0xf8}, {0x301e, 0xb4}, - {0x301f, 0xd0}, - {0x3022, 0x01}, + {0x301f, 0xf0}, + {0x3022, 0x61}, {0x3109, 0xe7}, {0x3600, 0x00}, {0x3610, 0x65}, {0x3611, 0x85}, {0x3613, 0x3a}, {0x3615, 0x60}, - {0x3621, 0x90}, + {0x3621, 0xb0}, {0x3620, 0x0c}, {0x3629, 0x00}, {0x3661, 0x04}, @@ -194,9 +193,9 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3701, 0x12}, {0x3703, 0x28}, {0x3704, 0x0e}, - {0x3706, 0x4a}, + {0x3706, 0x9d}, {0x3709, 0x4a}, - {0x370b, 0xa2}, + {0x370b, 0x48}, {0x370c, 0x01}, {0x370f, 0x04}, {0x3714, 0x24}, @@ -206,19 +205,19 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3720, 0x00}, {0x3724, 0x13}, {0x373f, 0xb0}, - {0x3741, 0x4a}, - {0x3743, 0x4a}, - {0x3745, 0x4a}, - {0x3747, 0x4a}, - {0x3749, 0xa2}, - {0x374b, 0xa2}, - {0x374d, 0xa2}, - {0x374f, 0xa2}, + {0x3741, 0x9d}, + {0x3743, 0x9d}, + {0x3745, 0x9d}, + {0x3747, 0x9d}, + {0x3749, 0x48}, + {0x374b, 0x48}, + {0x374d, 0x48}, + {0x374f, 0x48}, {0x3755, 0x10}, {0x376c, 0x00}, - {0x378d, 0x30}, - {0x3790, 0x4a}, - {0x3791, 0xa2}, + {0x378d, 0x3c}, + {0x3790, 0x01}, + {0x3791, 0x01}, {0x3798, 0x40}, {0x379e, 0x00}, {0x379f, 0x04}, @@ -249,29 +248,25 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4041, 0x07}, {0x4008, 0x02}, {0x4009, 0x0d}, - {0x3800, 0x01}, - {0x3801, 0x80}, - {0x3802, 0x00}, - {0x3803, 0xdc}, - {0x3804, 0x09}, - {0x3805, 0x0f}, - {0x3806, 0x05}, - {0x3807, 0x23}, - {0x3808, 0x07}, - {0x3809, 0x80}, - {0x380a, 0x04}, - {0x380b, 0x38}, - {0x380c, 0x04}, - {0x380d, 0x2e}, - {0x380e, 0x12}, - {0x380f, 0x70}, + + // 2704x1536 -> 2688x1520 out + {0x3800, 0x00}, {0x3801, 0x00}, + {0x3802, 0x00}, {0x3803, 0x00}, + {0x3804, 0x0a}, {0x3805, 0x8f}, + {0x3806, 0x05}, {0x3807, 0xff}, + {0x3808, 0x0a}, {0x3809, 0x80}, + {0x380a, 0x05}, {0x380b, 0xf0}, {0x3811, 0x08}, {0x3813, 0x08}, {0x3814, 0x01}, {0x3815, 0x01}, {0x3816, 0x01}, {0x3817, 0x01}, - {0x3820, 0xB0}, + + {0x380c, 0x08}, {0x380d, 0x5c}, // HTS + {0x380e, 0x09}, {0x380f, 0x38}, // VTS + + {0x3820, 0xb0}, {0x3821, 0x00}, {0x3880, 0x25}, {0x3882, 0x20}, @@ -281,12 +276,12 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3cae, 0x00}, {0x4000, 0xf3}, {0x4001, 0x60}, - {0x4003, 0x40}, + {0x4003, 0x80}, {0x4300, 0xff}, {0x4302, 0x0f}, {0x4305, 0x83}, {0x4505, 0x84}, - {0x4809, 0x1e}, + {0x4809, 0x0e}, {0x480a, 0x04}, {0x4837, 0x15}, {0x4c00, 0x08}, @@ -294,5 +289,25 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4c04, 0x00}, {0x4c05, 0x00}, {0x5000, 0xf9}, - {0x3c8c, 0x10}, + {0x3822, 0x14}, + + // initialize exposure + {0x3503, 0x88}, + + // long + {0x3500, 0x00}, {0x3501, 0x00}, {0x3502, 0x80}, + {0x3508, 0x00}, {0x3509, 0x80}, + {0x350a, 0x04}, {0x350b, 0x00}, + + // short + // {0x3510, 0x00}, {0x3511, 0x00}, {0x3512, 0x10}, + // {0x350c, 0x00}, {0x350d, 0x80}, + // {0x350e, 0x04}, {0x350f, 0x00}, + + // wb + {0x5100, 0x06}, {0x5101, 0xcb}, + {0x5102, 0x04}, {0x5103, 0x00}, + {0x5104, 0x08}, {0x5105, 0xde}, + + {0x5106, 0x02}, {0x5107, 0x00}, }; diff --git a/system/camerad/sensors/ox03c10.cc b/system/camerad/sensors/ox03c10.cc index 1f0609820b..c74274872f 100644 --- a/system/camerad/sensors/ox03c10.cc +++ b/system/camerad/sensors/ox03c10.cc @@ -24,9 +24,9 @@ const uint32_t VS_TIME_MAX_OX03C10 = 34; // vs < 35 OX03C10::OX03C10() { image_sensor = cereal::FrameData::ImageSensor::OX03C10; data_word = false; - frame_width = FRAME_WIDTH; - frame_height = FRAME_HEIGHT; - frame_stride = FRAME_STRIDE; // (0xa80*12//8) + frame_width = 1928; + frame_height = 1208; + frame_stride = (frame_width * 12 / 8) + 4; extra_height = 16; // top 2 + bot 14 frame_offset = 2; diff --git a/system/camerad/sensors/sensor.h b/system/camerad/sensors/sensor.h index 4e2194d914..d97fd32a9c 100644 --- a/system/camerad/sensors/sensor.h +++ b/system/camerad/sensors/sensor.h @@ -12,10 +12,6 @@ #include "system/camerad/sensors/os04c10_registers.h" #define ANALOG_GAIN_MAX_CNT 55 -const size_t FRAME_WIDTH = 1928; -const size_t FRAME_HEIGHT = 1208; -const size_t FRAME_STRIDE = 2896; // for 12 bit output. 1928 * 12 / 8 + 4 (alignment) - class SensorInfo { public: From 66adf8781eb09631687ca4809e92136cbbdc7f56 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 8 Mar 2024 17:00:07 -0800 Subject: [PATCH 153/599] Subaru: extra logging request for camera (#31783) * 7f - service not supported in active session * update refs * rm short * Apply suggestions from code review * bus 0 --- selfdrive/car/subaru/values.py | 7 +++++++ selfdrive/car/tests/test_fw_fingerprint.py | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 5e135ca658..0bf5e782f5 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -245,6 +245,13 @@ FW_QUERY_CONFIG = FwQueryConfig( whitelist_ecus=[Ecu.fwdCamera], bus=0, ), + Request( + [StdQueries.DEFAULT_DIAGNOSTIC_REQUEST, StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], + [StdQueries.DEFAULT_DIAGNOSTIC_RESPONSE, StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], + whitelist_ecus=[Ecu.fwdCamera], + bus=0, + logging=True, + ), Request( [StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index b9eadc8cd5..cc5496210e 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -263,7 +263,7 @@ class TestFwFingerprintTiming(unittest.TestCase): print(f'get_vin {name} case, query time={self.total_time / self.N} seconds') def test_fw_query_timing(self): - total_ref_time = {1: 8.4, 2: 9.3} + total_ref_time = {1: 8.5, 2: 9.4} brand_ref_times = { 1: { 'gm': 1.0, @@ -274,7 +274,7 @@ class TestFwFingerprintTiming(unittest.TestCase): 'hyundai': 1.05, 'mazda': 0.1, 'nissan': 0.8, - 'subaru': 0.45, + 'subaru': 0.55, 'tesla': 0.3, 'toyota': 1.6, 'volkswagen': 0.65, From 3862911ae697ec34f29fae41a434373d258cbc3d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 8 Mar 2024 17:01:31 -0800 Subject: [PATCH 154/599] [bot] Fingerprints: add missing FW versions from new users (#31732) Export fingerprints --- selfdrive/car/subaru/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/subaru/fingerprints.py b/selfdrive/car/subaru/fingerprints.py index 90fa6093d9..9f6177b4c0 100644 --- a/selfdrive/car/subaru/fingerprints.py +++ b/selfdrive/car/subaru/fingerprints.py @@ -26,6 +26,7 @@ FW_VERSIONS = { b'\xd1,\xa0q\x07', ], (Ecu.transmission, 0x7e1, None): [ + b'\x00>\xf0\x00\x00', b'\x00\xfe\xf7\x00\x00', b'\x01\xfe\xf7\x00\x00', b'\x01\xfe\xf9\x00\x00', From 5be3f0b7dbb1209f8e2543bfb6f0003e3fda01b6 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 8 Mar 2024 19:36:33 -0800 Subject: [PATCH 155/599] Subaru: log alt request (#31812) * add alt query (same as Hyundai) * refs --- selfdrive/car/subaru/values.py | 14 ++++++++++++++ selfdrive/car/tests/test_fw_fingerprint.py | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 0bf5e782f5..6f799e2206 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -228,6 +228,13 @@ SUBARU_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ SUBARU_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ p16(uds.DATA_IDENTIFIER_TYPE.APPLICATION_DATA_IDENTIFICATION) +# The EyeSight ECU takes 10s to respond to SUBARU_VERSION_REQUEST properly, +# log this alternate manufacturer-specific query +SUBARU_ALT_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ + p16(0xf100) +SUBARU_ALT_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ + p16(0xf100) + FW_QUERY_CONFIG = FwQueryConfig( requests=[ Request( @@ -245,6 +252,13 @@ FW_QUERY_CONFIG = FwQueryConfig( whitelist_ecus=[Ecu.fwdCamera], bus=0, ), + Request( + [SUBARU_ALT_VERSION_REQUEST], + [SUBARU_ALT_VERSION_RESPONSE], + whitelist_ecus=[Ecu.fwdCamera], + bus=0, + logging=True, + ), Request( [StdQueries.DEFAULT_DIAGNOSTIC_REQUEST, StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], [StdQueries.DEFAULT_DIAGNOSTIC_RESPONSE, StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index cc5496210e..d9bea3b965 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -263,7 +263,7 @@ class TestFwFingerprintTiming(unittest.TestCase): print(f'get_vin {name} case, query time={self.total_time / self.N} seconds') def test_fw_query_timing(self): - total_ref_time = {1: 8.5, 2: 9.4} + total_ref_time = {1: 8.6, 2: 9.5} brand_ref_times = { 1: { 'gm': 1.0, @@ -274,7 +274,7 @@ class TestFwFingerprintTiming(unittest.TestCase): 'hyundai': 1.05, 'mazda': 0.1, 'nissan': 0.8, - 'subaru': 0.55, + 'subaru': 0.65, 'tesla': 0.3, 'toyota': 1.6, 'volkswagen': 0.65, From 1589adddf17effbb526aafaaa2b4572542a98759 Mon Sep 17 00:00:00 2001 From: Yasushi Oh Date: Fri, 8 Mar 2024 21:49:12 -0800 Subject: [PATCH 156/599] bugfix: add support for Bronco Sport 2023 (#31794) * bugfix: add support for Bronco Sport 2023 * Apply suggestions from code review * update docs --------- Co-authored-by: Shane Smiskol --- docs/CARS.md | 2 +- selfdrive/car/ford/fingerprints.py | 3 +++ selfdrive/car/ford/values.py | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 591a76e4cb..8854a801ab 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -35,7 +35,7 @@ A supported vehicle is one that just works when you install a comma device. All |Chrysler|Pacifica Hybrid 2019-23|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |comma|body|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|None|| |Dodge|Durango 2020-21|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Ford|Bronco Sport 2021-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Ford|Bronco Sport 2021-23|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Escape 2020-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Escape Hybrid 2020-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Escape Plug-in Hybrid 2020-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index a5d465849a..504d27e681 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -8,16 +8,19 @@ FW_VERSIONS = { (Ecu.eps, 0x730, None): [ b'LX6C-14D003-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LX6C-14D003-AK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'LX6C-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.abs, 0x760, None): [ b'LX6C-2D053-RD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LX6C-2D053-RE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'LX6C-2D053-RF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x764, None): [ b'LB5T-14D049-AB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x706, None): [ b'M1PT-14F397-AC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'M1PT-14F397-AD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, CAR.ESCAPE_MK4: { diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index add40368be..15c0d3bdb7 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -86,7 +86,7 @@ class FordCANFDPlatformConfig(FordPlatformConfig): class CAR(Platforms): BRONCO_SPORT_MK1 = FordPlatformConfig( "FORD BRONCO SPORT 1ST GEN", - FordCarInfo("Ford Bronco Sport 2021-22"), + FordCarInfo("Ford Bronco Sport 2021-23"), CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), ) ESCAPE_MK4 = FordPlatformConfig( From 2c353a25a47a5ad6274b982c419ed21be3bfb213 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 8 Mar 2024 23:26:01 -0800 Subject: [PATCH 157/599] longitudinal personality: display in Toyota instrument cluster (#31760) * start at param * start by sending personality * change to personality * POC: button changes personality * what's wrong with this? * fix * not really possible but fuzzy test catches this * there's always a typo * dang, we're dropping messages * clean up * no comment * bump * rename * revert longplan * revert this * Fix check * more appropriate up here * consistenet * Update selfdrive/car/toyota/carstate.py * Update ref_commit --- selfdrive/car/toyota/carcontroller.py | 6 +++--- selfdrive/car/toyota/carstate.py | 1 - selfdrive/controls/controlsd.py | 1 + selfdrive/test/process_replay/ref_commit | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index 8e8e0292f2..71a595996d 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -141,9 +141,9 @@ class CarController(CarControllerBase): lead = hud_control.leadVisible or CS.out.vEgo < 12. # at low speed we always assume the lead is present so ACC can be engaged # Press distance button until we are at the correct bar length. Only change while enabled to avoid skipping startup popup - if self.frame % 6 == 0: - if CS.pcm_follow_distance_values.get(CS.pcm_follow_distance, "UNKNOWN") != "FAR" and CS.out.cruiseState.enabled and \ - self.CP.carFingerprint not in UNSUPPORTED_DSU_CAR: + if self.frame % 6 == 0 and self.CP.openpilotLongitudinalControl: + desired_distance = 4 - hud_control.leadDistanceBars + if CS.out.cruiseState.enabled and CS.pcm_follow_distance != desired_distance: self.distance_button = not self.distance_button else: self.distance_button = 0 diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index 65fced80f4..5d99467f25 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -44,7 +44,6 @@ class CarState(CarStateBase): self.distance_button = 0 self.pcm_follow_distance = 0 - self.pcm_follow_distance_values = can_define.dv['PCM_CRUISE_2']['PCM_FOLLOW_DISTANCE'] self.low_speed_lockout = False self.acc_type = 1 diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index e4f2542ea5..29358cb7b6 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -680,6 +680,7 @@ class Controls: hudControl.speedVisible = self.enabled hudControl.lanesVisible = self.enabled hudControl.leadVisible = self.sm['longitudinalPlan'].hasLead + hudControl.leadDistanceBars = self.sm['longitudinalPlan'].personality.raw + 1 hudControl.rightLaneVisible = True hudControl.leftLaneVisible = True diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 97646ce064..fe7d954a80 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -d53d44c21a89d7925d5ad16938e14794907f28b1 \ No newline at end of file +653f68e6be4689dc9dce1a93cb726d37b9c588d3 From a475417220d675fd1d27fd8dac89a2a23334d8ed Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 8 Mar 2024 23:28:23 -0800 Subject: [PATCH 158/599] [bot] Fingerprints: add missing FW versions from new users (#31731) * Export fingerprints * Update selfdrive/car/toyota/fingerprints.py --- selfdrive/car/honda/fingerprints.py | 1 + selfdrive/car/toyota/fingerprints.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index a842baac88..83c2c3f1eb 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -39,6 +39,7 @@ FW_VERSIONS = { b'37805-6B2-A810\x00\x00', b'37805-6B2-A820\x00\x00', b'37805-6B2-A920\x00\x00', + b'37805-6B2-A960\x00\x00', b'37805-6B2-AA10\x00\x00', b'37805-6B2-C520\x00\x00', b'37805-6B2-C540\x00\x00', diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 86d45532fa..64ad53a880 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -639,6 +639,7 @@ FW_VERSIONS = { (Ecu.dsu, 0x791, None): [ b'881510E01100\x00\x00\x00\x00', b'881510E01200\x00\x00\x00\x00', + b'881510E02200\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x750, 0xf): [ b'8821F4702100\x00\x00\x00\x00', @@ -686,6 +687,7 @@ FW_VERSIONS = { b'\x01896630EB1000\x00\x00\x00\x00', b'\x01896630EB1100\x00\x00\x00\x00', b'\x01896630EB1200\x00\x00\x00\x00', + b'\x01896630EB1300\x00\x00\x00\x00', b'\x01896630EB2000\x00\x00\x00\x00', b'\x01896630EB2100\x00\x00\x00\x00', b'\x01896630EB2200\x00\x00\x00\x00', @@ -1141,6 +1143,7 @@ FW_VERSIONS = { b'\x01F15264283300\x00\x00\x00\x00', b'\x01F152642F1000\x00\x00\x00\x00', b'\x01F152642F8000\x00\x00\x00\x00', + b'\x01F152642F8100\x00\x00\x00\x00', ], (Ecu.eps, 0x7a1, None): [ b'\x028965B0R11000\x00\x00\x00\x008965B0R12000\x00\x00\x00\x00', @@ -1153,6 +1156,7 @@ FW_VERSIONS = { b'\x01896634AF0000\x00\x00\x00\x00', b'\x01896634AJ2000\x00\x00\x00\x00', b'\x01896634AL5000\x00\x00\x00\x00', + b'\x01896634AL6000\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x750, 0xf): [ b'\x018821F0R03100\x00\x00\x00\x00', From 682f16d1b5c9c5d618711d864a16efde80af8e14 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Sun, 10 Mar 2024 04:54:54 +0000 Subject: [PATCH 159/599] Ford: fix counter in LateralMotionControl2 message (#31806) The counter should be between 0-15 inclusive. This only affects CAN FD cars. --- selfdrive/car/ford/carcontroller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/ford/carcontroller.py b/selfdrive/car/ford/carcontroller.py index 390325a8ec..7ce2ded6e3 100644 --- a/selfdrive/car/ford/carcontroller.py +++ b/selfdrive/car/ford/carcontroller.py @@ -73,7 +73,7 @@ class CarController(CarControllerBase): if self.CP.flags & FordFlags.CANFD: # TODO: extended mode mode = 1 if CC.latActive else 0 - counter = (self.frame // CarControllerParams.STEER_STEP) % 0xF + counter = (self.frame // CarControllerParams.STEER_STEP) % 0x10 can_sends.append(fordcan.create_lat_ctl2_msg(self.packer, self.CAN, mode, 0., 0., -apply_curvature, 0., counter)) else: can_sends.append(fordcan.create_lat_ctl_msg(self.packer, self.CAN, CC.latActive, 0., 0., -apply_curvature, 0.)) From 5ca733c41525b1c796e00a09518cea74f0bd0436 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sun, 10 Mar 2024 00:00:32 -0500 Subject: [PATCH 160/599] GM: Parse distance button from steering wheel (#31762) --- selfdrive/car/gm/carstate.py | 5 +++++ selfdrive/car/gm/interface.py | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/gm/carstate.py b/selfdrive/car/gm/carstate.py index c3d061de78..a1129c59c8 100644 --- a/selfdrive/car/gm/carstate.py +++ b/selfdrive/car/gm/carstate.py @@ -26,11 +26,16 @@ class CarState(CarStateBase): self.cam_lka_steering_cmd_counter = 0 self.buttons_counter = 0 + self.prev_distance_button = 0 + self.distance_button = 0 + def update(self, pt_cp, cam_cp, loopback_cp): ret = car.CarState.new_message() self.prev_cruise_buttons = self.cruise_buttons + self.prev_distance_button = self.distance_button self.cruise_buttons = pt_cp.vl["ASCMSteeringButton"]["ACCButtons"] + self.distance_button = pt_cp.vl["ASCMSteeringButton"]["DistanceButton"] self.buttons_counter = pt_cp.vl["ASCMSteeringButton"]["RollingCounter"] self.pscm_status = copy.copy(pt_cp.vl["PSCMStatus"]) # This is to avoid a fault where you engage while still moving backwards after shifting to D. diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 76f6a6b0a6..1336e23c70 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -208,8 +208,12 @@ class CarInterface(CarInterfaceBase): # Don't add event if transitioning from INIT, unless it's to an actual button if self.CS.cruise_buttons != CruiseButtons.UNPRESS or self.CS.prev_cruise_buttons != CruiseButtons.INIT: - ret.buttonEvents = create_button_events(self.CS.cruise_buttons, self.CS.prev_cruise_buttons, BUTTONS_DICT, - unpressed_btn=CruiseButtons.UNPRESS) + ret.buttonEvents = [ + *create_button_events(self.CS.cruise_buttons, self.CS.prev_cruise_buttons, BUTTONS_DICT, + unpressed_btn=CruiseButtons.UNPRESS), + *create_button_events(self.CS.distance_button, self.CS.prev_distance_button, + {1: ButtonType.gapAdjustCruise}) + ] # The ECM allows enabling on falling edge of set, but only rising edge of resume events = self.create_common_events(ret, extra_gears=[GearShifter.sport, GearShifter.low, From 1fe61569f720a30db58379b451452b84239c2e37 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sat, 9 Mar 2024 23:31:50 -0800 Subject: [PATCH 161/599] fix status -> state typo --- selfdrive/ui/ui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/ui.py b/selfdrive/ui/ui.py index ea2ee51a45..660495b1de 100755 --- a/selfdrive/ui/ui.py +++ b/selfdrive/ui/ui.py @@ -52,7 +52,7 @@ if __name__ == "__main__": onroad = sm.all_checks(['deviceState']) and sm['deviceState'].started if onroad: cs = sm['controlsState'] - color = ("grey" if str(cs.status) in ("overriding", "preEnabled") else "green") if cs.enabled else "blue" + color = ("grey" if str(cs.state) in ("overriding", "preEnabled") else "green") if cs.enabled else "blue" bg.setText("\U0001F44D" if cs.engageable else "\U0001F6D1") bg.setStyleSheet(f"font-size: 100px; background-color: {color};") bg.show() From 4d1b1001526970012364b843cbbb997bfd983842 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sat, 9 Mar 2024 23:33:24 -0800 Subject: [PATCH 162/599] cgpsd: use a real source --- cereal | 2 +- system/qcomgpsd/cgpsd.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cereal b/cereal index cf7bb3e749..93d3df3210 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit cf7bb3e74974879abef94286fab4d39398fe402b +Subproject commit 93d3df3210a8c4f4c7e6f45950f73dc8a2f09a2c diff --git a/system/qcomgpsd/cgpsd.py b/system/qcomgpsd/cgpsd.py index 04a92d4a45..54d3c623f3 100755 --- a/system/qcomgpsd/cgpsd.py +++ b/system/qcomgpsd/cgpsd.py @@ -57,6 +57,10 @@ def main(): # TODO: read from streaming AT port instead of polling out = at_cmd("AT+CGPS?") + if '+CGPS: 1' not in out: + for c in cmds: + at_cmd(c) + sentences = out.split("'")[1].splitlines() new = {l.split(',')[0]: l.split(',') for l in sentences if l.startswith('$G')} nmea.update(new) @@ -85,8 +89,7 @@ def main(): gps.hasFix = gnrmc[1] == 'A' - # TODO: make our own source - gps.source = log.GpsLocationData.SensorSource.qcomdiag + gps.source = log.GpsLocationData.SensorSource.unicore gps.speed = sfloat(gnrmc[7]) gps.bearingDeg = sfloat(gnrmc[8]) From d651bc802b540089acb4c3b9d5d984fb8b554487 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 10 Mar 2024 00:12:18 -0800 Subject: [PATCH 163/599] ButtonParamControl: use buttonClicked (#31817) --- selfdrive/ui/qt/widgets/controls.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/selfdrive/ui/qt/widgets/controls.h b/selfdrive/ui/qt/widgets/controls.h index e4630c6590..f6e099ce50 100644 --- a/selfdrive/ui/qt/widgets/controls.h +++ b/selfdrive/ui/qt/widgets/controls.h @@ -223,10 +223,8 @@ public: button_group->addButton(button, i); } - QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonToggled), [=](int id, bool checked) { - if (checked) { - params.put(key, std::to_string(id)); - } + QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonClicked), [=](int id) { + params.put(key, std::to_string(id)); }); } From 1b6178a77d723fc4b96c5010f0d37164f98ecd27 Mon Sep 17 00:00:00 2001 From: Mauricio Alvarez Leon <65101411+BBBmau@users.noreply.github.com> Date: Sun, 10 Mar 2024 10:11:41 -0700 Subject: [PATCH 164/599] Add autoconnect support for hidden WiFi networks (#31789) * add autoconnect to WifiManager::connect * set wifi/hidden to true * typo * add condition to only set connection[wireless][hidden] to true when connecting to a hidden network * default false value for is_hidden --- selfdrive/ui/qt/network/networking.cc | 10 +++++----- selfdrive/ui/qt/network/wifi_manager.cc | 3 ++- selfdrive/ui/qt/network/wifi_manager.h | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/selfdrive/ui/qt/network/networking.cc b/selfdrive/ui/qt/network/networking.cc index 5354a01fa0..d7cdddff44 100644 --- a/selfdrive/ui/qt/network/networking.cc +++ b/selfdrive/ui/qt/network/networking.cc @@ -82,11 +82,11 @@ void Networking::connectToNetwork(const Network n) { if (wifi->isKnownConnection(n.ssid)) { wifi->activateWifiConnection(n.ssid); } else if (n.security_type == SecurityType::OPEN) { - wifi->connect(n); + wifi->connect(n, false); } else if (n.security_type == SecurityType::WPA) { QString pass = InputDialog::getText(tr("Enter password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8); if (!pass.isEmpty()) { - wifi->connect(n, pass); + wifi->connect(n, false, pass); } } } @@ -96,7 +96,7 @@ void Networking::wrongPassword(const QString &ssid) { const Network &n = wifi->seenNetworks.value(ssid); QString pass = InputDialog::getText(tr("Wrong password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8); if (!pass.isEmpty()) { - wifi->connect(n, pass); + wifi->connect(n, false, pass); } } } @@ -192,9 +192,9 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid hidden_network.ssid = ssid.toUtf8(); if (!pass.isEmpty()) { hidden_network.security_type = SecurityType::WPA; - wifi->connect(hidden_network, pass); + wifi->connect(hidden_network, true, pass); } else { - wifi->connect(hidden_network); + wifi->connect(hidden_network, true); } emit requestWifiScreen(); } diff --git a/selfdrive/ui/qt/network/wifi_manager.cc b/selfdrive/ui/qt/network/wifi_manager.cc index ebb5cb8736..111726330d 100644 --- a/selfdrive/ui/qt/network/wifi_manager.cc +++ b/selfdrive/ui/qt/network/wifi_manager.cc @@ -166,7 +166,7 @@ SecurityType WifiManager::getSecurityType(const QVariantMap &properties) { } } -void WifiManager::connect(const Network &n, const QString &password, const QString &username) { +void WifiManager::connect(const Network &n, const bool is_hidden, const QString &password, const QString &username) { setCurrentConnecting(n.ssid); forgetConnection(n.ssid); // Clear all connections that may already exist to the network we are connecting Connection connection; @@ -176,6 +176,7 @@ void WifiManager::connect(const Network &n, const QString &password, const QStri connection["connection"]["autoconnect-retries"] = 0; connection["802-11-wireless"]["ssid"] = n.ssid; + connection["802-11-wireless"]["hidden"] = is_hidden; connection["802-11-wireless"]["mode"] = "infrastructure"; if (n.security_type == SecurityType::WPA) { diff --git a/selfdrive/ui/qt/network/wifi_manager.h b/selfdrive/ui/qt/network/wifi_manager.h index 7debffa452..933f25c9d4 100644 --- a/selfdrive/ui/qt/network/wifi_manager.h +++ b/selfdrive/ui/qt/network/wifi_manager.h @@ -52,7 +52,7 @@ public: std::optional activateWifiConnection(const QString &ssid); NetworkType currentNetworkType(); void updateGsmSettings(bool roaming, QString apn, bool metered); - void connect(const Network &ssid, const QString &password = {}, const QString &username = {}); + void connect(const Network &ssid, const bool is_hidden = false, const QString &password = {}, const QString &username = {}); // Tethering functions void setTetheringEnabled(bool enabled); From f6665f8488b9d407a710dda3dce7344acebf5e67 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 10 Mar 2024 14:29:50 -0700 Subject: [PATCH 165/599] thermald: add deviceType to logs (#31819) * thermald: add deviceType to logs * fix --- cereal | 2 +- selfdrive/thermald/thermald.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cereal b/cereal index 93d3df3210..724d1d22ac 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 93d3df3210a8c4f4c7e6f45950f73dc8a2f09a2c +Subproject commit 724d1d22ac877ff75058f0d62860cf51c27f3546 diff --git a/selfdrive/thermald/thermald.py b/selfdrive/thermald/thermald.py index 93ebd3ab87..bfc50c4478 100755 --- a/selfdrive/thermald/thermald.py +++ b/selfdrive/thermald/thermald.py @@ -216,6 +216,7 @@ def thermald_thread(end_event, hw_queue) -> None: peripheral_panda_present = peripheralState.pandaType != log.PandaState.PandaType.unknown msg = read_thermal(thermal_config) + msg.deviceState.deviceType = HARDWARE.get_device_type() if sm.updated['pandaStates'] and len(pandaStates) > 0: From 7436aa8b053aeccfc9bacb06bfaf4a42b3ec5f78 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 10 Mar 2024 16:39:40 -0700 Subject: [PATCH 166/599] modeld: prep for camera transform refactor (#31820) * modeld: prep for camera transform refactor * update refs * add pub * do setup --- selfdrive/modeld/modeld.py | 4 ++-- selfdrive/test/process_replay/model_replay.py | 20 +++++++++++-------- .../test/process_replay/process_replay.py | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index e086b8aaf8..fe523dbd35 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -153,7 +153,7 @@ def main(demo=False): # messaging pm = PubMaster(["modelV2", "cameraOdometry"]) - sm = SubMaster(["carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "navModel", "navInstruction", "carControl"]) + sm = SubMaster(["deviceState", "carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "navModel", "navInstruction", "carControl"]) publish_state = PublishState() params = Params() @@ -225,7 +225,7 @@ def main(demo=False): is_rhd = sm["driverMonitoringState"].isRHD frame_id = sm["roadCameraState"].frameId lateral_control_params = np.array([sm["carState"].vEgo, steer_delay], dtype=np.float32) - if sm.updated["liveCalibration"]: + if sm.updated["liveCalibration"] and sm.seen['roadCameraState'] and sm.seen['deviceState']: device_from_calib_euler = np.array(sm["liveCalibration"].rpyCalib, dtype=np.float32) model_transform_main = get_warp_matrix(device_from_calib_euler, main_wide_camera, False).astype(np.float32) model_transform_extra = get_warp_matrix(device_from_calib_euler, True, True).astype(np.float32) diff --git a/selfdrive/test/process_replay/model_replay.py b/selfdrive/test/process_replay/model_replay.py index 97b7c7c46c..94895285df 100755 --- a/selfdrive/test/process_replay/model_replay.py +++ b/selfdrive/test/process_replay/model_replay.py @@ -107,14 +107,17 @@ def model_replay(lr, frs): # modeld is using frame pairs modeld_logs = trim_logs_to_max_frames(lr, MAX_FRAMES, {"roadCameraState", "wideRoadCameraState"}, {"roadEncodeIdx", "wideRoadEncodeIdx", "carParams"}) dmodeld_logs = trim_logs_to_max_frames(lr, MAX_FRAMES, {"driverCameraState"}, {"driverEncodeIdx", "carParams"}) + if not SEND_EXTRA_INPUTS: - modeld_logs = [msg for msg in modeld_logs if msg.which() not in ["liveCalibration",]] - dmodeld_logs = [msg for msg in dmodeld_logs if msg.which() not in ["liveCalibration",]] - # initial calibration - cal_msg = next(msg for msg in lr if msg.which() == "liveCalibration").as_builder() - cal_msg.logMonoTime = lr[0].logMonoTime - modeld_logs.insert(0, cal_msg.as_reader()) - dmodeld_logs.insert(0, cal_msg.as_reader()) + modeld_logs = [msg for msg in modeld_logs if msg.which() != 'liveCalibration'] + dmodeld_logs = [msg for msg in dmodeld_logs if msg.which() != 'liveCalibration'] + + # initial setup + for s in ('liveCalibration', 'deviceState'): + msg = next(msg for msg in lr if msg.which() == s).as_builder() + msg.logMonoTime = lr[0].logMonoTime + modeld_logs.insert(1, msg.as_reader()) + dmodeld_logs.insert(1, msg.as_reader()) modeld = get_process_config("modeld") dmonitoringmodeld = get_process_config("dmonitoringmodeld") @@ -218,7 +221,8 @@ if __name__ == "__main__": results[TEST_ROUTE]["models"] = compare_logs(cmp_log, log_msgs, tolerance=tolerance, ignore_fields=ignore) diff_short, diff_long, failed = format_diff(results, log_paths, ref_commit) - print(diff_long) + if "CI" in os.environ: + print(diff_long) print('-------------\n'*5) print(diff_short) with open("model_diff.txt", "w") as f: diff --git a/selfdrive/test/process_replay/process_replay.py b/selfdrive/test/process_replay/process_replay.py index 5119be0a8c..233f5d746a 100755 --- a/selfdrive/test/process_replay/process_replay.py +++ b/selfdrive/test/process_replay/process_replay.py @@ -546,7 +546,7 @@ CONFIGS = [ ), ProcessConfig( proc_name="modeld", - pubs=["roadCameraState", "wideRoadCameraState", "liveCalibration", "driverMonitoringState"], + pubs=["deviceState", "roadCameraState", "wideRoadCameraState", "liveCalibration", "driverMonitoringState"], subs=["modelV2", "cameraOdometry"], ignore=["logMonoTime", "modelV2.frameDropPerc", "modelV2.modelExecutionTime"], should_recv_callback=ModeldCameraSyncRcvCallback(), From 6a7a99805839a7e2012b55c2282d545ee21bdff4 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 10 Mar 2024 16:44:21 -0700 Subject: [PATCH 167/599] disable that one for now --- release/build_release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/build_release.sh b/release/build_release.sh index fc15cf6cdf..08f8a5a185 100755 --- a/release/build_release.sh +++ b/release/build_release.sh @@ -94,7 +94,7 @@ cp -pR -n --parents $TEST_FILES $BUILD_DIR/ cd $BUILD_DIR RELEASE=1 selfdrive/test/test_onroad.py #selfdrive/manager/test/test_manager.py -selfdrive/car/tests/test_car_interfaces.py +#selfdrive/car/tests/test_car_interfaces.py rm -rf $TEST_FILES if [ ! -z "$RELEASE_BRANCH" ]; then From e3589e4b5cc783001c95b52cce066647b4ae0c6c Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 10 Mar 2024 16:56:50 -0700 Subject: [PATCH 168/599] refactor camera transformations (#31818) * refactor camera transormations * update users * more stuff * more fix * swap * tici * lil shorter --- common/transformations/camera.py | 86 ++++++++++---------- common/transformations/model.py | 21 +---- selfdrive/modeld/modeld.py | 6 +- selfdrive/modeld/tests/test_modeld.py | 11 +-- selfdrive/monitoring/driver_monitor.py | 6 +- selfdrive/test/process_replay/migration.py | 16 ++++ selfdrive/test/process_replay/regen.py | 4 +- selfdrive/test/process_replay/vision_meta.py | 10 +-- selfdrive/ui/tests/test_ui/run.py | 11 +-- system/loggerd/tests/test_loggerd.py | 9 +- tools/replay/lib/ui_helpers.py | 43 +--------- tools/replay/ui.py | 26 ++++-- 12 files changed, 114 insertions(+), 135 deletions(-) diff --git a/common/transformations/camera.py b/common/transformations/camera.py index c643cb5702..7a8495a9b2 100644 --- a/common/transformations/camera.py +++ b/common/transformations/camera.py @@ -1,55 +1,55 @@ +import itertools import numpy as np +from dataclasses import dataclass import openpilot.common.transformations.orientation as orient ## -- hardcoded hardware params -- -eon_f_focal_length = 910.0 -eon_d_focal_length = 650.0 -tici_f_focal_length = 2648.0 -tici_e_focal_length = tici_d_focal_length = 567.0 # probably wrong? magnification is not consistent across frame +@dataclass(frozen=True) +class CameraConfig: + width: int + height: int + focal_length: float -eon_f_frame_size = (1164, 874) -eon_d_frame_size = (816, 612) -tici_f_frame_size = tici_e_frame_size = tici_d_frame_size = (1928, 1208) + @property + def intrinsics(self): + # aka 'K' aka camera_frame_from_view_frame + return np.array([ + [self.focal_length, 0.0, float(self.width)/2], + [0.0, self.focal_length, float(self.height)/2], + [0.0, 0.0, 1.0] + ]) -# aka 'K' aka camera_frame_from_view_frame -eon_fcam_intrinsics = np.array([ - [eon_f_focal_length, 0.0, float(eon_f_frame_size[0])/2], - [0.0, eon_f_focal_length, float(eon_f_frame_size[1])/2], - [0.0, 0.0, 1.0]]) -eon_intrinsics = eon_fcam_intrinsics # xx + @property + def intrinsics_inv(self): + # aka 'K_inv' aka view_frame_from_camera_frame + return np.linalg.inv(self.intrinsics) -eon_dcam_intrinsics = np.array([ - [eon_d_focal_length, 0.0, float(eon_d_frame_size[0])/2], - [0.0, eon_d_focal_length, float(eon_d_frame_size[1])/2], - [0.0, 0.0, 1.0]]) +@dataclass(frozen=True) +class DeviceCameraConfig: + fcam: CameraConfig + dcam: CameraConfig + ecam: CameraConfig -tici_fcam_intrinsics = np.array([ - [tici_f_focal_length, 0.0, float(tici_f_frame_size[0])/2], - [0.0, tici_f_focal_length, float(tici_f_frame_size[1])/2], - [0.0, 0.0, 1.0]]) +ar_ox_fisheye = CameraConfig(1928, 1208, 567.0) # focal length probably wrong? magnification is not consistent across frame +ar_ox_config = DeviceCameraConfig(CameraConfig(1928, 1208, 2648.0), ar_ox_fisheye, ar_ox_fisheye) +os_fisheye = CameraConfig(2688, 1520, 567.0 / 2 * 3) +os_config = DeviceCameraConfig(CameraConfig(2688, 1520, 2648.0 * 2 / 3), os_fisheye, os_fisheye) -tici_dcam_intrinsics = np.array([ - [tici_d_focal_length, 0.0, float(tici_d_frame_size[0])/2], - [0.0, tici_d_focal_length, float(tici_d_frame_size[1])/2], - [0.0, 0.0, 1.0]]) +DEVICE_CAMERAS = { + # A "device camera" is defined by a device type and sensor -tici_ecam_intrinsics = tici_dcam_intrinsics - -# aka 'K_inv' aka view_frame_from_camera_frame -eon_fcam_intrinsics_inv = np.linalg.inv(eon_fcam_intrinsics) -eon_intrinsics_inv = eon_fcam_intrinsics_inv # xx - -tici_fcam_intrinsics_inv = np.linalg.inv(tici_fcam_intrinsics) -tici_ecam_intrinsics_inv = np.linalg.inv(tici_ecam_intrinsics) - - -FULL_FRAME_SIZE = tici_f_frame_size -FOCAL = tici_f_focal_length -fcam_intrinsics = tici_fcam_intrinsics - -W, H = FULL_FRAME_SIZE[0], FULL_FRAME_SIZE[1] + # sensor type was never set on eon/neo/two + ("neo", "unknown"): DeviceCameraConfig(CameraConfig(1164, 874, 910.0), CameraConfig(816, 612, 650.0), CameraConfig(0, 0, 0.)), + # unknown here is AR0231, field was added with OX03C10 support + ("tici", "unknown"): ar_ox_config, + # before deviceState.deviceType was set, assume tici AR config + ("unknown", "ar0231"): ar_ox_config, + ("unknown", "ox03c10"): ar_ox_config, +} +prods = itertools.product(('tici', 'tizi', 'mici'), (('ar0231', ar_ox_config), ('ox03c10', ar_ox_config), ('os04c10', os_config))) +DEVICE_CAMERAS.update({(d, c[0]): c[1] for d, c in prods}) # device/mesh : x->forward, y-> right, z->down # view : x->right, y->down, z->forward @@ -93,7 +93,7 @@ def roll_from_ke(m): -(m[0, 0] - m[0, 1] * m[2, 0] / m[2, 1])) -def normalize(img_pts, intrinsics=fcam_intrinsics): +def normalize(img_pts, intrinsics): # normalizes image coordinates # accepts single pt or array of pts intrinsics_inv = np.linalg.inv(intrinsics) @@ -106,7 +106,7 @@ def normalize(img_pts, intrinsics=fcam_intrinsics): return img_pts_normalized[:, :2].reshape(input_shape) -def denormalize(img_pts, intrinsics=fcam_intrinsics, width=np.inf, height=np.inf): +def denormalize(img_pts, intrinsics, width=np.inf, height=np.inf): # denormalizes image coordinates # accepts single pt or array of pts img_pts = np.array(img_pts) @@ -123,7 +123,7 @@ def denormalize(img_pts, intrinsics=fcam_intrinsics, width=np.inf, height=np.inf return img_pts_denormalized[:, :2].reshape(input_shape) -def get_calib_from_vp(vp, intrinsics=fcam_intrinsics): +def get_calib_from_vp(vp, intrinsics): vp_norm = normalize(vp, intrinsics) yaw_calib = np.arctan(vp_norm[0]) pitch_calib = -np.arctan(vp_norm[1]*np.cos(yaw_calib)) diff --git a/common/transformations/model.py b/common/transformations/model.py index 7e40767f63..aaa12d776a 100644 --- a/common/transformations/model.py +++ b/common/transformations/model.py @@ -1,19 +1,11 @@ import numpy as np from openpilot.common.transformations.orientation import rot_from_euler -from openpilot.common.transformations.camera import ( - FULL_FRAME_SIZE, get_view_frame_from_calib_frame, view_frame_from_device_frame, - eon_fcam_intrinsics, tici_ecam_intrinsics, tici_fcam_intrinsics) +from openpilot.common.transformations.camera import get_view_frame_from_calib_frame, view_frame_from_device_frame # segnet SEGNET_SIZE = (512, 384) -def get_segnet_frame_from_camera_frame(segnet_size=SEGNET_SIZE, full_frame_size=FULL_FRAME_SIZE): - return np.array([[float(segnet_size[0]) / full_frame_size[0], 0.0], - [0.0, float(segnet_size[1]) / full_frame_size[1]]]) -segnet_frame_from_camera_frame = get_segnet_frame_from_camera_frame() # xx - - # MED model MEDMODEL_INPUT_SIZE = (512, 256) MEDMODEL_YUV_SIZE = (MEDMODEL_INPUT_SIZE[0], MEDMODEL_INPUT_SIZE[1] * 3 // 2) @@ -63,16 +55,9 @@ calib_from_medmodel = np.linalg.inv(medmodel_frame_from_calib_frame[:, :3]) calib_from_sbigmodel = np.linalg.inv(sbigmodel_frame_from_calib_frame[:, :3]) # This function is verified to give similar results to xx.uncommon.utils.transform_img -def get_warp_matrix(device_from_calib_euler: np.ndarray, wide_camera: bool = False, bigmodel_frame: bool = False, tici: bool = True) -> np.ndarray: - if tici and wide_camera: - cam_intrinsics = tici_ecam_intrinsics - elif tici: - cam_intrinsics = tici_fcam_intrinsics - else: - cam_intrinsics = eon_fcam_intrinsics - +def get_warp_matrix(device_from_calib_euler: np.ndarray, intrinsics: np.ndarray, bigmodel_frame: bool = False) -> np.ndarray: calib_from_model = calib_from_sbigmodel if bigmodel_frame else calib_from_medmodel device_from_calib = rot_from_euler(device_from_calib_euler) - camera_from_calib = cam_intrinsics @ view_frame_from_device_frame @ device_from_calib + camera_from_calib = intrinsics @ view_frame_from_device_frame @ device_from_calib warp_matrix: np.ndarray = camera_from_calib @ calib_from_model return warp_matrix diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index fe523dbd35..c3b3918903 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -13,6 +13,7 @@ from openpilot.common.swaglog import cloudlog from openpilot.common.params import Params from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.realtime import config_realtime_process +from openpilot.common.transformations.camera import DEVICE_CAMERAS from openpilot.common.transformations.model import get_warp_matrix from openpilot.selfdrive import sentry from openpilot.selfdrive.car.car_helpers import get_demo_car_params @@ -227,8 +228,9 @@ def main(demo=False): lateral_control_params = np.array([sm["carState"].vEgo, steer_delay], dtype=np.float32) if sm.updated["liveCalibration"] and sm.seen['roadCameraState'] and sm.seen['deviceState']: device_from_calib_euler = np.array(sm["liveCalibration"].rpyCalib, dtype=np.float32) - model_transform_main = get_warp_matrix(device_from_calib_euler, main_wide_camera, False).astype(np.float32) - model_transform_extra = get_warp_matrix(device_from_calib_euler, True, True).astype(np.float32) + dc = DEVICE_CAMERAS[(str(sm['deviceState'].deviceType), str(sm['roadCameraState'].sensor))] + model_transform_main = get_warp_matrix(device_from_calib_euler, dc.ecam.intrinsics if main_wide_camera else dc.fcam.intrinsics, False).astype(np.float32) + model_transform_extra = get_warp_matrix(device_from_calib_euler, dc.ecam.intrinsics, True).astype(np.float32) live_calib_seen = True traffic_convention = np.zeros(2) diff --git a/selfdrive/modeld/tests/test_modeld.py b/selfdrive/modeld/tests/test_modeld.py index 257a9bc878..67c6f71038 100755 --- a/selfdrive/modeld/tests/test_modeld.py +++ b/selfdrive/modeld/tests/test_modeld.py @@ -5,13 +5,14 @@ import random import cereal.messaging as messaging from cereal.visionipc import VisionIpcServer, VisionStreamType -from openpilot.common.transformations.camera import tici_f_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS from openpilot.common.realtime import DT_MDL from openpilot.selfdrive.car.car_helpers import write_car_param from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.selfdrive.test.process_replay.vision_meta import meta_from_camera_state -IMG = np.zeros(int(tici_f_frame_size[0]*tici_f_frame_size[1]*(3/2)), dtype=np.uint8) +CAM = DEVICE_CAMERAS[("tici", "ar0231")].fcam +IMG = np.zeros(int(CAM.width*CAM.height*(3/2)), dtype=np.uint8) IMG_BYTES = IMG.flatten().tobytes() @@ -19,9 +20,9 @@ class TestModeld(unittest.TestCase): def setUp(self): self.vipc_server = VisionIpcServer("camerad") - self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_ROAD, 40, False, *tici_f_frame_size) - self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_DRIVER, 40, False, *tici_f_frame_size) - self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_WIDE_ROAD, 40, False, *tici_f_frame_size) + self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_ROAD, 40, False, CAM.width, CAM.height) + self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_DRIVER, 40, False, CAM.width, CAM.height) + self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_WIDE_ROAD, 40, False, CAM.width, CAM.height) self.vipc_server.start_listener() write_car_param() diff --git a/selfdrive/monitoring/driver_monitor.py b/selfdrive/monitoring/driver_monitor.py index 2279002f35..7c1c297fff 100644 --- a/selfdrive/monitoring/driver_monitor.py +++ b/selfdrive/monitoring/driver_monitor.py @@ -5,7 +5,7 @@ from openpilot.common.numpy_fast import interp from openpilot.common.realtime import DT_DMON from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.stat_live import RunningStatFilter -from openpilot.common.transformations.camera import tici_d_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS EventName = car.CarEvent.EventName @@ -71,9 +71,11 @@ class DRIVER_MONITOR_SETTINGS(): self._MAX_TERMINAL_DURATION = int(30 / self._DT_DMON) # not allowed to engage after 30s of terminal alerts +# TODO: get these live # model output refers to center of undistorted+leveled image EFL = 598.0 # focal length in K -W, H = tici_d_frame_size # corrected image has same size as raw +cam = DEVICE_CAMERAS[("tici", "ar0231")] # corrected image has same size as raw +W, H = (cam.dcam.width, cam.dcam.height) # corrected image has same size as raw class DistractedType: NOT_DISTRACTED = 0 diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index d480309169..afcf705ff9 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -12,6 +12,7 @@ def migrate_all(lr, old_logtime=False, manager_states=False, panda_states=False, msgs = migrate_sensorEvents(lr, old_logtime) msgs = migrate_carParams(msgs, old_logtime) msgs = migrate_gpsLocation(msgs) + msgs = migrate_deviceState(msgs) if manager_states: msgs = migrate_managerState(msgs) if panda_states: @@ -52,6 +53,21 @@ def migrate_gpsLocation(lr): return all_msgs +def migrate_deviceState(lr): + all_msgs = [] + dt = None + for msg in lr: + if msg.which() == 'initData': + dt = msg.initData.deviceType + if msg.which() == 'deviceState': + n = msg.as_builder() + n.deviceState.deviceType = dt + all_msgs.append(n.as_reader()) + else: + all_msgs.append(msg) + return all_msgs + + def migrate_pandaStates(lr): all_msgs = [] # TODO: safety param migration should be handled automatically diff --git a/selfdrive/test/process_replay/regen.py b/selfdrive/test/process_replay/regen.py index 8e882207b5..ec3023c5dc 100755 --- a/selfdrive/test/process_replay/regen.py +++ b/selfdrive/test/process_replay/regen.py @@ -10,7 +10,7 @@ from collections.abc import Iterable from openpilot.selfdrive.test.process_replay.process_replay import CONFIGS, FAKEDATA, ProcessConfig, replay_process, get_process_config, \ check_openpilot_enabled, get_custom_params_from_lr -from openpilot.selfdrive.test.process_replay.vision_meta import DRIVER_FRAME_SIZES +from openpilot.selfdrive.test.process_replay.vision_meta import DRIVER_CAMERA_FRAME_SIZES from openpilot.selfdrive.test.update_ci_routes import upload_route from openpilot.tools.lib.route import Route from openpilot.tools.lib.framereader import FrameReader, BaseFrameReader, FrameType @@ -37,7 +37,7 @@ class DummyFrameReader(BaseFrameReader): @staticmethod def zero_dcamera(): - return DummyFrameReader(*DRIVER_FRAME_SIZES["tici"], 1200, 0) + return DummyFrameReader(*DRIVER_CAMERA_FRAME_SIZES[("tici", "ar0231")], 1200, 0) def regen_segment( diff --git a/selfdrive/test/process_replay/vision_meta.py b/selfdrive/test/process_replay/vision_meta.py index b3c3dc0c9c..9bfe214c1e 100644 --- a/selfdrive/test/process_replay/vision_meta.py +++ b/selfdrive/test/process_replay/vision_meta.py @@ -1,17 +1,17 @@ from collections import namedtuple from cereal.visionipc import VisionStreamType from openpilot.common.realtime import DT_MDL, DT_DMON -from openpilot.common.transformations.camera import tici_f_frame_size, tici_d_frame_size, tici_e_frame_size, eon_f_frame_size, eon_d_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS VideoStreamMeta = namedtuple("VideoStreamMeta", ["camera_state", "encode_index", "stream", "dt", "frame_sizes"]) -ROAD_CAMERA_FRAME_SIZES = {"tici": tici_f_frame_size, "tizi": tici_f_frame_size, "neo": eon_f_frame_size} -WIDE_ROAD_CAMERA_FRAME_SIZES = {"tici": tici_e_frame_size, "tizi": tici_e_frame_size} -DRIVER_FRAME_SIZES = {"tici": tici_d_frame_size, "tizi": tici_d_frame_size, "neo": eon_d_frame_size} +ROAD_CAMERA_FRAME_SIZES = {k: (v.dcam.width, v.dcam.height) for k, v in DEVICE_CAMERAS.items()} +WIDE_ROAD_CAMERA_FRAME_SIZES = {k: (v.ecam.width, v.ecam.height) for k, v in DEVICE_CAMERAS.items() if v.ecam is not None} +DRIVER_CAMERA_FRAME_SIZES = {k: (v.dcam.width, v.dcam.height) for k, v in DEVICE_CAMERAS.items()} VIPC_STREAM_METADATA = [ # metadata: (state_msg_type, encode_msg_type, stream_type, dt, frame_sizes) ("roadCameraState", "roadEncodeIdx", VisionStreamType.VISION_STREAM_ROAD, DT_MDL, ROAD_CAMERA_FRAME_SIZES), ("wideRoadCameraState", "wideRoadEncodeIdx", VisionStreamType.VISION_STREAM_WIDE_ROAD, DT_MDL, WIDE_ROAD_CAMERA_FRAME_SIZES), - ("driverCameraState", "driverEncodeIdx", VisionStreamType.VISION_STREAM_DRIVER, DT_DMON, DRIVER_FRAME_SIZES), + ("driverCameraState", "driverEncodeIdx", VisionStreamType.VISION_STREAM_DRIVER, DT_DMON, DRIVER_CAMERA_FRAME_SIZES), ] diff --git a/selfdrive/ui/tests/test_ui/run.py b/selfdrive/ui/tests/test_ui/run.py index 7a2ac9a110..c834107780 100644 --- a/selfdrive/ui/tests/test_ui/run.py +++ b/selfdrive/ui/tests/test_ui/run.py @@ -18,7 +18,7 @@ from cereal.messaging import SubMaster, PubMaster from openpilot.common.mock import mock_messages from openpilot.common.params import Params from openpilot.common.realtime import DT_MDL -from openpilot.common.transformations.camera import tici_f_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS from openpilot.selfdrive.test.helpers import with_processes from openpilot.selfdrive.test.process_replay.vision_meta import meta_from_camera_state from openpilot.tools.webcam.camera import Camera @@ -69,15 +69,16 @@ def setup_onroad(click, pm: PubMaster): pm.send("pandaStates", dat) + d = DEVICE_CAMERAS[("tici", "ar0231")] server = VisionIpcServer("camerad") - server.create_buffers(VisionStreamType.VISION_STREAM_ROAD, 40, False, *tici_f_frame_size) - server.create_buffers(VisionStreamType.VISION_STREAM_DRIVER, 40, False, *tici_f_frame_size) - server.create_buffers(VisionStreamType.VISION_STREAM_WIDE_ROAD, 40, False, *tici_f_frame_size) + server.create_buffers(VisionStreamType.VISION_STREAM_ROAD, 40, False, d.fcam.width, d.fcam.height) + server.create_buffers(VisionStreamType.VISION_STREAM_DRIVER, 40, False, d.dcam.width, d.dcam.height) + server.create_buffers(VisionStreamType.VISION_STREAM_WIDE_ROAD, 40, False, d.fcam.width, d.fcam.height) server.start_listener() time.sleep(0.5) # give time for vipc server to start - IMG = Camera.bgr2nv12(np.random.randint(0, 255, (*tici_f_frame_size,3), dtype=np.uint8)) + IMG = Camera.bgr2nv12(np.random.randint(0, 255, (d.fcam.width, d.fcam.height, 3), dtype=np.uint8)) IMG_BYTES = IMG.flatten().tobytes() cams = ('roadCameraState', 'wideRoadCameraState') diff --git a/system/loggerd/tests/test_loggerd.py b/system/loggerd/tests/test_loggerd.py index c80dc19fce..fdea60a282 100755 --- a/system/loggerd/tests/test_loggerd.py +++ b/system/loggerd/tests/test_loggerd.py @@ -24,7 +24,7 @@ from openpilot.system.version import get_version from openpilot.tools.lib.helpers import RE from openpilot.tools.lib.logreader import LogReader from cereal.visionipc import VisionIpcServer, VisionStreamType -from openpilot.common.transformations.camera import tici_f_frame_size, tici_d_frame_size, tici_e_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS SentinelType = log.Sentinel.SentinelType @@ -142,10 +142,11 @@ class TestLoggerd: os.environ["LOGGERD_TEST"] = "1" Params().put("RecordFront", "1") + d = DEVICE_CAMERAS[("tici", "ar0231")] expected_files = {"rlog", "qlog", "qcamera.ts", "fcamera.hevc", "dcamera.hevc", "ecamera.hevc"} - streams = [(VisionStreamType.VISION_STREAM_ROAD, (*tici_f_frame_size, 2048*2346, 2048, 2048*1216), "roadCameraState"), - (VisionStreamType.VISION_STREAM_DRIVER, (*tici_d_frame_size, 2048*2346, 2048, 2048*1216), "driverCameraState"), - (VisionStreamType.VISION_STREAM_WIDE_ROAD, (*tici_e_frame_size, 2048*2346, 2048, 2048*1216), "wideRoadCameraState")] + streams = [(VisionStreamType.VISION_STREAM_ROAD, (d.fcam.width, d.fcam.height, 2048*2346, 2048, 2048*1216), "roadCameraState"), + (VisionStreamType.VISION_STREAM_DRIVER, (d.dcam.width, d.dcam.height, 2048*2346, 2048, 2048*1216), "driverCameraState"), + (VisionStreamType.VISION_STREAM_WIDE_ROAD, (d.ecam.width, d.ecam.height, 2048*2346, 2048, 2048*1216), "wideRoadCameraState")] pm = messaging.PubMaster(["roadCameraState", "driverCameraState", "wideRoadCameraState"]) vipc_server = VisionIpcServer("camerad") diff --git a/tools/replay/lib/ui_helpers.py b/tools/replay/lib/ui_helpers.py index 23f3563084..11b5182a6b 100644 --- a/tools/replay/lib/ui_helpers.py +++ b/tools/replay/lib/ui_helpers.py @@ -7,9 +7,7 @@ import pygame from matplotlib.backends.backend_agg import FigureCanvasAgg -from openpilot.common.transformations.camera import (eon_f_frame_size, eon_f_focal_length, - tici_f_frame_size, tici_f_focal_length, - get_view_frame_from_calib_frame) +from openpilot.common.transformations.camera import get_view_frame_from_calib_frame from openpilot.selfdrive.controls.radard import RADAR_TO_CAMERA @@ -20,9 +18,6 @@ YELLOW = (255, 255, 0) BLACK = (0, 0, 0) WHITE = (255, 255, 255) -_FULL_FRAME_SIZE = { -} - class UIParams: lidar_x, lidar_y, lidar_zoom = 384, 960, 6 lidar_car_x, lidar_car_y = lidar_x / 2., lidar_y / 1.1 @@ -32,45 +27,13 @@ class UIParams: car_color = 110 UP = UIParams -_BB_TO_FULL_FRAME = {} -_CALIB_BB_TO_FULL = {} -_FULL_FRAME_TO_BB = {} -_INTRINSICS = {} - -eon_f_qcam_frame_size = (480, 360) -tici_f_qcam_frame_size = (528, 330) - -cams = [(eon_f_frame_size, eon_f_focal_length, eon_f_frame_size), - (tici_f_frame_size, tici_f_focal_length, tici_f_frame_size), - (eon_f_qcam_frame_size, eon_f_focal_length, eon_f_frame_size), - (tici_f_qcam_frame_size, tici_f_focal_length, tici_f_frame_size)] -for size, focal, full_size in cams: - sz = size[0] * size[1] - _BB_SCALE = size[0] / 640. - _BB_TO_FULL_FRAME[sz] = np.asarray([ - [_BB_SCALE, 0., 0.], - [0., _BB_SCALE, 0.], - [0., 0., 1.]]) - calib_scale = full_size[0] / 640. - _CALIB_BB_TO_FULL[sz] = np.asarray([ - [calib_scale, 0., 0.], - [0., calib_scale, 0.], - [0., 0., 1.]]) - _FULL_FRAME_TO_BB[sz] = np.linalg.inv(_BB_TO_FULL_FRAME[sz]) - _FULL_FRAME_SIZE[sz] = (size[0], size[1]) - _INTRINSICS[sz] = np.array([ - [focal, 0., full_size[0] / 2.], - [0., focal, full_size[1] / 2.], - [0., 0., 1.]]) - - METER_WIDTH = 20 class Calibration: - def __init__(self, num_px, rpy, intrinsic): + def __init__(self, num_px, rpy, intrinsic, calib_scale): self.intrinsic = intrinsic self.extrinsics_matrix = get_view_frame_from_calib_frame(rpy[0], rpy[1], rpy[2], 0.0)[:,:3] - self.zoom = _CALIB_BB_TO_FULL[num_px][0, 0] + self.zoom = calib_scale def car_space_to_ff(self, x, y, z): car_space_projective = np.column_stack((x, y, z)).T diff --git a/tools/replay/ui.py b/tools/replay/ui.py index be80166e76..126340afc8 100755 --- a/tools/replay/ui.py +++ b/tools/replay/ui.py @@ -10,8 +10,9 @@ import pygame import cereal.messaging as messaging from openpilot.common.numpy_fast import clip from openpilot.common.basedir import BASEDIR -from openpilot.tools.replay.lib.ui_helpers import (_BB_TO_FULL_FRAME, UP, - _INTRINSICS, BLACK, GREEN, +from openpilot.common.transformations.camera import DEVICE_CAMERAS +from openpilot.tools.replay.lib.ui_helpers import (UP, + BLACK, GREEN, YELLOW, Calibration, get_blank_lid_overlay, init_plots, maybe_update_radar_points, plot_lead, @@ -55,7 +56,7 @@ def ui_thread(addr): top_down_surface = pygame.surface.Surface((UP.lidar_x, UP.lidar_y), 0, 8) sm = messaging.SubMaster(['carState', 'longitudinalPlan', 'carControl', 'radarState', 'liveCalibration', 'controlsState', - 'liveTracks', 'modelV2', 'liveParameters'], addr=addr) + 'liveTracks', 'modelV2', 'liveParameters', 'roadCameraState'], addr=addr) img = np.zeros((480, 640, 3), dtype='uint8') imgff = None @@ -112,20 +113,27 @@ def ui_thread(addr): vipc_client.connect(True) yuv_img_raw = vipc_client.recv() - if yuv_img_raw is None or not yuv_img_raw.data.any(): continue + sm.update(0) + + camera = DEVICE_CAMERAS[("three", str(sm['roadCameraState'].sensor))] + imgff = np.frombuffer(yuv_img_raw.data, dtype=np.uint8).reshape((len(yuv_img_raw.data) // vipc_client.stride, vipc_client.stride)) num_px = vipc_client.width * vipc_client.height rgb = cv2.cvtColor(imgff[:vipc_client.height * 3 // 2, :vipc_client.width], cv2.COLOR_YUV2RGB_NV12) - zoom_matrix = _BB_TO_FULL_FRAME[num_px] + qcam = "QCAM" in os.environ + bb_scale = (528 if qcam else camera.fcam.width) / 640. + calib_scale = camera.fcam.width / 640. + zoom_matrix = np.asarray([ + [bb_scale, 0., 0.], + [0., bb_scale, 0.], + [0., 0., 1.]]) cv2.warpAffine(rgb, zoom_matrix[:2], (img.shape[1], img.shape[0]), dst=img, flags=cv2.WARP_INVERSE_MAP) - intrinsic_matrix = _INTRINSICS[num_px] - - sm.update(0) + intrinsic_matrix = camera.fcam.intrinsics w = sm['controlsState'].lateralControlState.which() if w == 'lqrStateDEPRECATED': @@ -165,7 +173,7 @@ def ui_thread(addr): if sm.updated['liveCalibration'] and num_px: rpyCalib = np.asarray(sm['liveCalibration'].rpyCalib) - calibration = Calibration(num_px, rpyCalib, intrinsic_matrix) + calibration = Calibration(num_px, rpyCalib, intrinsic_matrix, calib_scale) # *** blits *** pygame.surfarray.blit_array(camera_surface, img.swapaxes(0, 1)) From 8a038845003d1a68896c71ea2c2c35455b27b6a0 Mon Sep 17 00:00:00 2001 From: Michel Le Bihan Date: Mon, 11 Mar 2024 18:27:32 +0100 Subject: [PATCH 169/599] simulator: Correctly handle arrival at destination (#31807) --- tools/sim/bridge/metadrive/metadrive_bridge.py | 1 + tools/sim/bridge/metadrive/metadrive_process.py | 8 +++++--- tools/sim/scenarios/metadrive/stay_in_lane.py | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/sim/bridge/metadrive/metadrive_bridge.py b/tools/sim/bridge/metadrive/metadrive_bridge.py index c2ea92798a..5c91238c55 100644 --- a/tools/sim/bridge/metadrive/metadrive_bridge.py +++ b/tools/sim/bridge/metadrive/metadrive_bridge.py @@ -75,6 +75,7 @@ class MetaDriveBridge(SimulatorBridge): on_continuous_line_done=False, crash_vehicle_done=False, crash_object_done=False, + arrive_dest_done=False, traffic_density=0.0, # traffic is incredibly expensive map_config=create_map(), decision_repeat=1, diff --git a/tools/sim/bridge/metadrive/metadrive_process.py b/tools/sim/bridge/metadrive/metadrive_process.py index 0e659c7a2d..79eefcd545 100644 --- a/tools/sim/bridge/metadrive/metadrive_process.py +++ b/tools/sim/bridge/metadrive/metadrive_process.py @@ -22,7 +22,7 @@ C3_HPR = Vec3(0, 0,0) metadrive_simulation_state = namedtuple("metadrive_simulation_state", ["running", "done", "done_info"]) metadrive_vehicle_state = namedtuple("metadrive_vehicle_state", ["velocity", "position", "bearing", "steering_angle"]) -def apply_metadrive_patches(): +def apply_metadrive_patches(arrive_dest_done=True): # By default, metadrive won't try to use cuda images unless it's used as a sensor for vehicles, so patch that in def add_image_sensor_patched(self, name: str, cls, args): if self.global_config["image_on_cuda"]:# and name == self.global_config["vehicle_config"]["image_source"]: @@ -44,12 +44,14 @@ def apply_metadrive_patches(): def arrive_destination_patch(self, *args, **kwargs): return False - MetaDriveEnv._is_arrive_destination = arrive_destination_patch + if not arrive_dest_done: + MetaDriveEnv._is_arrive_destination = arrive_destination_patch def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera_array, image_lock, controls_recv: Connection, simulation_state_send: Connection, vehicle_state_send: Connection, exit_event): - apply_metadrive_patches() + arrive_dest_done = config.pop("arrive_dest_done", True) + apply_metadrive_patches(arrive_dest_done) road_image = np.frombuffer(camera_array.get_obj(), dtype=np.uint8).reshape((H, W, 3)) if dual_camera: diff --git a/tools/sim/scenarios/metadrive/stay_in_lane.py b/tools/sim/scenarios/metadrive/stay_in_lane.py index 17d3d28a2d..683ce55162 100755 --- a/tools/sim/scenarios/metadrive/stay_in_lane.py +++ b/tools/sim/scenarios/metadrive/stay_in_lane.py @@ -65,6 +65,7 @@ class MetaDriveBridge(SimulatorBridge): on_continuous_line_done=True, crash_vehicle_done=True, crash_object_done=True, + arrive_dest_done=True, traffic_density=0.0, map_config=create_map(), map_region_size=2048, From 7779f6875fd14dcd26edea4c9f521feb6414ac7e Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 11 Mar 2024 13:40:42 -0400 Subject: [PATCH 170/599] test_updated: ensure symlinks are copied properly (#31825) test symlink --- selfdrive/updated/tests/test_base.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/selfdrive/updated/tests/test_base.py b/selfdrive/updated/tests/test_base.py index 9065899eb8..3060db1bdd 100644 --- a/selfdrive/updated/tests/test_base.py +++ b/selfdrive/updated/tests/test_base.py @@ -32,6 +32,10 @@ def update_release(directory, name, version, agnos_version, release_notes): with open(directory / "launch_env.sh", "w") as f: f.write(f'export AGNOS_VERSION="{agnos_version}"') + test_symlink = directory / "test_symlink" + if not os.path.exists(str(test_symlink)): + os.symlink("common/version.h", test_symlink) + @pytest.mark.slow # TODO: can we test overlayfs in GHA? class BaseUpdateTest(unittest.TestCase): @@ -111,6 +115,9 @@ class BaseUpdateTest(unittest.TestCase): self.assertEqual(get_version(str(self.staging_root / "finalized")), version) self.assertEqual(get_consistent_flag(), True) + with open(self.staging_root / "finalized" / "test_symlink") as f: + self.assertIn(version, f.read()) + def wait_for_condition(self, condition, timeout=12): start = time.monotonic() while True: From 72cab4342f447b96ab006b40fd7b4d41b48050e2 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 11 Mar 2024 10:56:38 -0700 Subject: [PATCH 171/599] [bot] Update Python packages and pre-commit hooks (#31824) Update Python packages and pre-commit hooks Co-authored-by: jnewb1 --- .pre-commit-config.yaml | 2 +- poetry.lock | 445 ++++++++++++++++++++-------------------- 2 files changed, 224 insertions(+), 223 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6db68e55bc..55e6b1e282 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,7 +33,7 @@ repos: - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.2.2 + rev: v0.3.2 hooks: - id: ruff exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)' diff --git a/poetry.lock b/poetry.lock index 588186d138..e8ea5e80fe 100644 --- a/poetry.lock +++ b/poetry.lock @@ -255,13 +255,13 @@ files = [ [[package]] name = "azure-core" -version = "1.30.0" +version = "1.30.1" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.30.0.tar.gz", hash = "sha256:6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35"}, - {file = "azure_core-1.30.0-py3-none-any.whl", hash = "sha256:3dae7962aad109610e68c9a7abb31d79720e1d982ddf61363038d175a5025e89"}, + {file = "azure-core-1.30.1.tar.gz", hash = "sha256:26273a254131f84269e8ea4464f3560c731f29c0c1f69ac99010845f239c1a8f"}, + {file = "azure_core-1.30.1-py3-none-any.whl", hash = "sha256:7c5ee397e48f281ec4dd773d67a0a47a0962ed6fa833036057f9ea067f688e74"}, ] [package.dependencies] @@ -291,13 +291,13 @@ msal-extensions = ">=0.3.0,<2.0.0" [[package]] name = "azure-storage-blob" -version = "12.19.0" +version = "12.19.1" description = "Microsoft Azure Blob Storage Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-storage-blob-12.19.0.tar.gz", hash = "sha256:26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897"}, - {file = "azure_storage_blob-12.19.0-py3-none-any.whl", hash = "sha256:7bbc2c9c16678f7a420367fef6b172ba8730a7e66df7f4d7a55d5b3c8216615b"}, + {file = "azure-storage-blob-12.19.1.tar.gz", hash = "sha256:13e16ba42fc54ac2c7e8f976062173a5c82b9ec0594728e134aac372965a11b0"}, + {file = "azure_storage_blob-12.19.1-py3-none-any.whl", hash = "sha256:c5530dc51c21c9564e4eb706cd499befca8819b10dd89716d3fc90d747556243"}, ] [package.dependencies] @@ -894,69 +894,69 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "cython" -version = "3.0.8" +version = "3.0.9" description = "The Cython compiler for writing C extensions in the Python language." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "Cython-3.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a846e0a38e2b24e9a5c5dc74b0e54c6e29420d88d1dafabc99e0fc0f3e338636"}, - {file = "Cython-3.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45523fdc2b78d79b32834cc1cc12dc2ca8967af87e22a3ee1bff20e77c7f5520"}, - {file = "Cython-3.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa0b7f3f841fe087410cab66778e2d3fb20ae2d2078a2be3dffe66c6574be39"}, - {file = "Cython-3.0.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e87294e33e40c289c77a135f491cd721bd089f193f956f7b8ed5aa2d0b8c558f"}, - {file = "Cython-3.0.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a1df7a129344b1215c20096d33c00193437df1a8fcca25b71f17c23b1a44f782"}, - {file = "Cython-3.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:13c2a5e57a0358da467d97667297bf820b62a1a87ae47c5f87938b9bb593acbd"}, - {file = "Cython-3.0.8-cp310-cp310-win32.whl", hash = "sha256:96b028f044f5880e3cb18ecdcfc6c8d3ce9d0af28418d5ab464509f26d8adf12"}, - {file = "Cython-3.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:8140597a8b5cc4f119a1190f5a2228a84f5ca6d8d9ec386cfce24663f48b2539"}, - {file = "Cython-3.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aae26f9663e50caf9657148403d9874eea41770ecdd6caf381d177c2b1bb82ba"}, - {file = "Cython-3.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:547eb3cdb2f8c6f48e6865d5a741d9dd051c25b3ce076fbca571727977b28ac3"}, - {file = "Cython-3.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a567d4b9ba70b26db89d75b243529de9e649a2f56384287533cf91512705bee"}, - {file = "Cython-3.0.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51d1426263b0e82fb22bda8ea60dc77a428581cc19e97741011b938445d383f1"}, - {file = "Cython-3.0.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c26daaeccda072459b48d211415fd1e5507c06bcd976fa0d5b8b9f1063467d7b"}, - {file = "Cython-3.0.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:289ce7838208211cd166e975865fd73b0649bf118170b6cebaedfbdaf4a37795"}, - {file = "Cython-3.0.8-cp311-cp311-win32.whl", hash = "sha256:c8aa05f5e17f8042a3be052c24f2edc013fb8af874b0bf76907d16c51b4e7871"}, - {file = "Cython-3.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:000dc9e135d0eec6ecb2b40a5b02d0868a2f8d2e027a41b0fe16a908a9e6de02"}, - {file = "Cython-3.0.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90d3fe31db55685d8cb97d43b0ec39ef614fcf660f83c77ed06aa670cb0e164f"}, - {file = "Cython-3.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e24791ddae2324e88e3c902a765595c738f19ae34ee66bfb1a6dac54b1833419"}, - {file = "Cython-3.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f020fa1c0552052e0660790b8153b79e3fc9a15dbd8f1d0b841fe5d204a6ae6"}, - {file = "Cython-3.0.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18bfa387d7a7f77d7b2526af69a65dbd0b731b8d941aaff5becff8e21f6d7717"}, - {file = "Cython-3.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fe81b339cffd87c0069c6049b4d33e28bdd1874625ee515785bf42c9fdff3658"}, - {file = "Cython-3.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80fd94c076e1e1b1ee40a309be03080b75f413e8997cddcf401a118879863388"}, - {file = "Cython-3.0.8-cp312-cp312-win32.whl", hash = "sha256:85077915a93e359a9b920280d214dc0cf8a62773e1f3d7d30fab8ea4daed670c"}, - {file = "Cython-3.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:0cb2dcc565c7851f75d496f724a384a790fab12d1b82461b663e66605bec429a"}, - {file = "Cython-3.0.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:870d2a0a7e3cbd5efa65aecdb38d715ea337a904ea7bb22324036e78fb7068e7"}, - {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e8f2454128974905258d86534f4fd4f91d2f1343605657ecab779d80c9d6d5e"}, - {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1949d6aa7bc792554bee2b67a9fe41008acbfe22f4f8df7b6ec7b799613a4b3"}, - {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9f2c6e1b8f3bcd6cb230bac1843f85114780bb8be8614855b1628b36bb510e0"}, - {file = "Cython-3.0.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:05d7eddc668ae7993643f32c7661f25544e791edb745758672ea5b1a82ecffa6"}, - {file = "Cython-3.0.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bfabe115deef4ada5d23c87bddb11289123336dcc14347011832c07db616dd93"}, - {file = "Cython-3.0.8-cp36-cp36m-win32.whl", hash = "sha256:0c38c9f0bcce2df0c3347285863621be904ac6b64c5792d871130569d893efd7"}, - {file = "Cython-3.0.8-cp36-cp36m-win_amd64.whl", hash = "sha256:6c46939c3983217d140999de7c238c3141f56b1ea349e47ca49cae899969aa2c"}, - {file = "Cython-3.0.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:115f0a50f752da6c99941b103b5cb090da63eb206abbc7c2ad33856ffc73f064"}, - {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c0f29246734561c90f36e70ed0506b61aa3d044e4cc4cba559065a2a741fae"}, - {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ab75242869ff71e5665fe5c96f3378e79e792fa3c11762641b6c5afbbbbe026"}, - {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6717c06e9cfc6c1df18543cd31a21f5d8e378a40f70c851fa2d34f0597037abc"}, - {file = "Cython-3.0.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9d3f74388db378a3c6fd06e79a809ed98df3f56484d317b81ee762dbf3c263e0"}, - {file = "Cython-3.0.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae7ac561fd8253a9ae96311e91d12af5f701383564edc11d6338a7b60b285a6f"}, - {file = "Cython-3.0.8-cp37-cp37m-win32.whl", hash = "sha256:97b2a45845b993304f1799664fa88da676ee19442b15fdcaa31f9da7e1acc434"}, - {file = "Cython-3.0.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9e2be2b340fea46fb849d378f9b80d3c08ff2e81e2bfbcdb656e2e3cd8c6b2dc"}, - {file = "Cython-3.0.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2cde23c555470db3f149ede78b518e8274853745289c956a0e06ad8d982e4db9"}, - {file = "Cython-3.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7990ca127e1f1beedaf8fc8bf66541d066ef4723ad7d8d47a7cbf842e0f47580"}, - {file = "Cython-3.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b983c8e6803f016146c26854d9150ddad5662960c804ea7f0c752c9266752f0"}, - {file = "Cython-3.0.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a973268d7ca1a2bdf78575e459a94a78e1a0a9bb62a7db0c50041949a73b02ff"}, - {file = "Cython-3.0.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:61a237bc9dd23c7faef0fcfce88c11c65d0c9bb73c74ccfa408b3a012073c20e"}, - {file = "Cython-3.0.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3a3d67f079598af49e90ff9655bf85bd358f093d727eb21ca2708f467c489cae"}, - {file = "Cython-3.0.8-cp38-cp38-win32.whl", hash = "sha256:17a642bb01a693e34c914106566f59844b4461665066613913463a719e0dd15d"}, - {file = "Cython-3.0.8-cp38-cp38-win_amd64.whl", hash = "sha256:2cdfc32252f3b6dc7c94032ab744dcedb45286733443c294d8f909a4854e7f83"}, - {file = "Cython-3.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa97893d99385386925d00074654aeae3a98867f298d1e12ceaf38a9054a9bae"}, - {file = "Cython-3.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f05c0bf9d085c031df8f583f0d506aa3be1692023de18c45d0aaf78685bbb944"}, - {file = "Cython-3.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de892422582f5758bd8de187e98ac829330ec1007bc42c661f687792999988a7"}, - {file = "Cython-3.0.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:314f2355a1f1d06e3c431eaad4708cf10037b5e91e4b231d89c913989d0bdafd"}, - {file = "Cython-3.0.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:78825a3774211e7d5089730f00cdf7f473042acc9ceb8b9eeebe13ed3a5541de"}, - {file = "Cython-3.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df8093deabc55f37028190cf5e575c26aad23fc673f34b85d5f45076bc37ce39"}, - {file = "Cython-3.0.8-cp39-cp39-win32.whl", hash = "sha256:1aca1b97e0095b3a9a6c33eada3f661a4ed0d499067d121239b193e5ba3bb4f0"}, - {file = "Cython-3.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:16873d78be63bd38ffb759da7ab82814b36f56c769ee02b1d5859560e4c3ac3c"}, - {file = "Cython-3.0.8-py2.py3-none-any.whl", hash = "sha256:171b27051253d3f9108e9759e504ba59ff06e7f7ba944457f94deaf9c21bf0b6"}, - {file = "Cython-3.0.8.tar.gz", hash = "sha256:8333423d8fd5765e7cceea3a9985dd1e0a5dfeb2734629e1a2ed2d6233d39de6"}, + {file = "Cython-3.0.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:296bd30d4445ac61b66c9d766567f6e81a6e262835d261e903c60c891a6729d3"}, + {file = "Cython-3.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f496b52845cb45568a69d6359a2c335135233003e708ea02155c10ce3548aa89"}, + {file = "Cython-3.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:858c3766b9aa3ab8a413392c72bbab1c144a9766b7c7bfdef64e2e414363fa0c"}, + {file = "Cython-3.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0eb1e6ef036028a52525fd9a012a556f6dd4788a0e8755fe864ba0e70cde2ff"}, + {file = "Cython-3.0.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c8191941073ea5896321de3c8c958fd66e5f304b0cd1f22c59edd0b86c4dd90d"}, + {file = "Cython-3.0.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e32b016030bc72a8a22a1f21f470a2f57573761a4f00fbfe8347263f4fbdb9f1"}, + {file = "Cython-3.0.9-cp310-cp310-win32.whl", hash = "sha256:d6f3ff1cd6123973fe03e0fb8ee936622f976c0c41138969975824d08886572b"}, + {file = "Cython-3.0.9-cp310-cp310-win_amd64.whl", hash = "sha256:56f3b643dbe14449248bbeb9a63fe3878a24256664bc8c8ef6efd45d102596d8"}, + {file = "Cython-3.0.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:35e6665a20d6b8a152d72b7fd87dbb2af6bb6b18a235b71add68122d594dbd41"}, + {file = "Cython-3.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92f4960c40ad027bd8c364c50db11104eadc59ffeb9e5b7f605ca2f05946e20"}, + {file = "Cython-3.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38df37d0e732fbd9a2fef898788492e82b770c33d1e4ed12444bbc8a3b3f89c0"}, + {file = "Cython-3.0.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad7fd88ebaeaf2e76fd729a8919fae80dab3d6ac0005e28494261d52ff347a8f"}, + {file = "Cython-3.0.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1365d5f76bf4d19df3d19ce932584c9bb76e9fb096185168918ef9b36e06bfa4"}, + {file = "Cython-3.0.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c232e7f279388ac9625c3e5a5a9f0078a9334959c5d6458052c65bbbba895e1e"}, + {file = "Cython-3.0.9-cp311-cp311-win32.whl", hash = "sha256:357e2fad46a25030b0c0496487e01a9dc0fdd0c09df0897f554d8ba3c1bc4872"}, + {file = "Cython-3.0.9-cp311-cp311-win_amd64.whl", hash = "sha256:1315aee506506e8d69cf6631d8769e6b10131fdcc0eb66df2698f2a3ddaeeff2"}, + {file = "Cython-3.0.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:157973807c2796addbed5fbc4d9c882ab34bbc60dc297ca729504901479d5df7"}, + {file = "Cython-3.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00b105b5d050645dd59e6767bc0f18b48a4aa11c85f42ec7dd8181606f4059e3"}, + {file = "Cython-3.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac5536d09bef240cae0416d5a703d298b74c7bbc397da803ac9d344e732d4369"}, + {file = "Cython-3.0.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09c44501d476d16aaa4cbc29c87f8c0f54fc20e69b650d59cbfa4863426fc70c"}, + {file = "Cython-3.0.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:cc9c3b9f20d8e298618e5ccd32083ca386e785b08f9893fbec4c50b6b85be772"}, + {file = "Cython-3.0.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a30d96938c633e3ec37000ac3796525da71254ef109e66bdfd78f29891af6454"}, + {file = "Cython-3.0.9-cp312-cp312-win32.whl", hash = "sha256:757ca93bdd80702546df4d610d2494ef2e74249cac4d5ba9464589fb464bd8a3"}, + {file = "Cython-3.0.9-cp312-cp312-win_amd64.whl", hash = "sha256:1dc320a9905ab95414013f6de805efbff9e17bb5fb3b90bbac533f017bec8136"}, + {file = "Cython-3.0.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4ae349960ebe0da0d33724eaa7f1eb866688fe5434cc67ce4dbc06d6a719fbfc"}, + {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63d2537bf688247f76ded6dee28ebd26274f019309aef1eb4f2f9c5c482fde2d"}, + {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f5a2dfc724bea1f710b649f02d802d80fc18320c8e6396684ba4a48412445a"}, + {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deaf4197d4b0bcd5714a497158ea96a2bd6d0f9636095437448f7e06453cc83d"}, + {file = "Cython-3.0.9-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:000af6deb7412eb7ac0c635ff5e637fb8725dd0a7b88cc58dfc2b3de14e701c4"}, + {file = "Cython-3.0.9-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:15c7f5c2d35bed9aa5f2a51eaac0df23ae72f2dbacf62fc672dd6bfaa75d2d6f"}, + {file = "Cython-3.0.9-cp36-cp36m-win32.whl", hash = "sha256:f49aa4970cd3bec66ac22e701def16dca2a49c59cceba519898dd7526e0be2c0"}, + {file = "Cython-3.0.9-cp36-cp36m-win_amd64.whl", hash = "sha256:4558814fa025b193058d42eeee498a53d6b04b2980d01339fc2444b23fd98e58"}, + {file = "Cython-3.0.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:539cd1d74fd61f6cfc310fa6bbbad5adc144627f2b7486a07075d4e002fd6aad"}, + {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3232926cd406ee02eabb732206f6e882c3aed9d58f0fea764013d9240405bcf"}, + {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33b6ac376538a7fc8c567b85d3c71504308a9318702ec0485dd66c059f3165cb"}, + {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2cc92504b5d22ac66031ffb827bd3a967fc75a5f0f76ab48bce62df19be6fdfd"}, + {file = "Cython-3.0.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:22b8fae756c5c0d8968691bed520876de452f216c28ec896a00739a12dba3bd9"}, + {file = "Cython-3.0.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9cda0d92a09f3520f29bd91009f1194ba9600777c02c30c6d2d4ac65fb63e40d"}, + {file = "Cython-3.0.9-cp37-cp37m-win32.whl", hash = "sha256:ec612418490941ed16c50c8d3784c7bdc4c4b2a10c361259871790b02ec8c1db"}, + {file = "Cython-3.0.9-cp37-cp37m-win_amd64.whl", hash = "sha256:976c8d2bedc91ff6493fc973d38b2dc01020324039e2af0e049704a8e1b22936"}, + {file = "Cython-3.0.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5055988b007c92256b6e9896441c3055556038c3497fcbf8c921a6c1fce90719"}, + {file = "Cython-3.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9360606d964c2d0492a866464efcf9d0a92715644eede3f6a2aa696de54a137"}, + {file = "Cython-3.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c6e809f060bed073dc7cba1648077fe3b68208863d517c8b39f3920eecf9dd"}, + {file = "Cython-3.0.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95ed792c966f969cea7489c32ff90150b415c1f3567db8d5a9d489c7c1602dac"}, + {file = "Cython-3.0.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8edd59d22950b400b03ca78d27dc694d2836a92ef0cac4f64cb4b2ff902f7e25"}, + {file = "Cython-3.0.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4cf0ed273bf60e97922fcbbdd380c39693922a597760160b4b4355e6078ca188"}, + {file = "Cython-3.0.9-cp38-cp38-win32.whl", hash = "sha256:5eb9bd4ae12ebb2bc79a193d95aacf090fbd8d7013e11ed5412711650cb34934"}, + {file = "Cython-3.0.9-cp38-cp38-win_amd64.whl", hash = "sha256:44457279da56e0f829bb1fc5a5dc0836e5d498dbcf9b2324f32f7cc9d2ec6569"}, + {file = "Cython-3.0.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4b419a1adc2af43f4660e2f6eaf1e4fac2dbac59490771eb8ac3d6063f22356"}, + {file = "Cython-3.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f836192140f033b2319a0128936367c295c2b32e23df05b03b672a6015757ea"}, + {file = "Cython-3.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fd198c1a7f8e9382904d622cc0efa3c184605881fd5262c64cbb7168c4c1ec5"}, + {file = "Cython-3.0.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a274fe9ca5c53fafbcf5c8f262f8ad6896206a466f0eeb40aaf36a7951e957c0"}, + {file = "Cython-3.0.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:158c38360bbc5063341b1e78d3737f1251050f89f58a3df0d10fb171c44262be"}, + {file = "Cython-3.0.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8bf30b045f7deda0014b042c1b41c1d272facc762ab657529e3b05505888e878"}, + {file = "Cython-3.0.9-cp39-cp39-win32.whl", hash = "sha256:9a001fd95c140c94d934078544ff60a3c46aca2dc86e75a76e4121d3cd1f4b33"}, + {file = "Cython-3.0.9-cp39-cp39-win_amd64.whl", hash = "sha256:530c01c4aebba709c0ec9c7ecefe07177d0b9fd7ffee29450a118d92192ccbdf"}, + {file = "Cython-3.0.9-py2.py3-none-any.whl", hash = "sha256:bf96417714353c5454c2e3238fca9338599330cf51625cdc1ca698684465646f"}, + {file = "Cython-3.0.9.tar.gz", hash = "sha256:a2d354f059d1f055d34cfaa62c5b68bc78ac2ceab6407148d47fb508cf3ba4f3"}, ] [[package]] @@ -1061,35 +1061,35 @@ typing = ["typing-extensions (>=4.8)"] [[package]] name = "fiona" -version = "1.9.5" +version = "1.9.6" description = "Fiona reads and writes spatial data files" optional = false python-versions = ">=3.7" files = [ - {file = "fiona-1.9.5-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:5f40a40529ecfca5294260316cf987a0420c77a2f0cf0849f529d1afbccd093e"}, - {file = "fiona-1.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:374efe749143ecb5cfdd79b585d83917d2bf8ecfbfc6953c819586b336ce9c63"}, - {file = "fiona-1.9.5-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:35dae4b0308eb44617cdc4461ceb91f891d944fdebbcba5479efe524ec5db8de"}, - {file = "fiona-1.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:5b4c6a3df53bee8f85bb46685562b21b43346be1fe96419f18f70fa1ab8c561c"}, - {file = "fiona-1.9.5-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:6ad04c1877b9fd742871b11965606c6a52f40706f56a48d66a87cc3073943828"}, - {file = "fiona-1.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fb9a24a8046c724787719e20557141b33049466145fc3e665764ac7caf5748c"}, - {file = "fiona-1.9.5-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:d722d7f01a66f4ab6cd08d156df3fdb92f0669cf5f8708ddcb209352f416f241"}, - {file = "fiona-1.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:7ede8ddc798f3d447536080c6db9a5fb73733ad8bdb190cb65eed4e289dd4c50"}, - {file = "fiona-1.9.5-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:8b098054a27c12afac4f819f98cb4d4bf2db9853f70b0c588d7d97d26e128c39"}, - {file = "fiona-1.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d9f29e9bcbb33232ff7fa98b4a3c2234db910c1dc6c4147fc36c0b8b930f2e0"}, - {file = "fiona-1.9.5-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:f1af08da4ecea5036cb81c9131946be4404245d1b434b5b24fd3871a1d4030d9"}, - {file = "fiona-1.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:c521e1135c78dec0d7774303e5a1b4c62e0efb0e602bb8f167550ef95e0a2691"}, - {file = "fiona-1.9.5-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:fce4b1dd98810cabccdaa1828430c7402d283295c2ae31bea4f34188ea9e88d7"}, - {file = "fiona-1.9.5-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:3ea04ec2d8c57b5f81a31200fb352cb3242aa106fc3e328963f30ffbdf0ff7c8"}, - {file = "fiona-1.9.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4877cc745d9e82b12b3eafce3719db75759c27bd8a695521202135b36b58c2e7"}, - {file = "fiona-1.9.5-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:ac2c250f509ec19fad7959d75b531984776517ef3c1222d1cc5b4f962825880b"}, - {file = "fiona-1.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4df21906235928faad856c288cfea0298e9647f09c9a69a230535cbc8eadfa21"}, - {file = "fiona-1.9.5-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:81d502369493687746cb8d3cd77e5ada4447fb71d513721c9a1826e4fb32b23a"}, - {file = "fiona-1.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:ce3b29230ef70947ead4e701f3f82be81082b7f37fd4899009b1445cc8fc276a"}, - {file = "fiona-1.9.5-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:8b53ce8de773fcd5e2e102e833c8c58479edd8796a522f3d83ef9e08b62bfeea"}, - {file = "fiona-1.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bd2355e859a1cd24a3e485c6dc5003129f27a2051629def70036535ffa7e16a4"}, - {file = "fiona-1.9.5-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:9a2da52f865db1aff0eaf41cdd4c87a7c079b3996514e8e7a1ca38457309e825"}, - {file = "fiona-1.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:cfef6db5b779d463298b1113b50daa6c5b55f26f834dc9e37752116fa17277c1"}, - {file = "fiona-1.9.5.tar.gz", hash = "sha256:99e2604332caa7692855c2ae6ed91e1fffdf9b59449aa8032dd18e070e59a2f7"}, + {file = "fiona-1.9.6-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:63e528b5ea3d8b1038d788e7c65117835c787ba7fdc94b1b42f09c2cbc0aaff2"}, + {file = "fiona-1.9.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:918bd27d8625416672e834593970f96dff63215108f81efb876fe5c0bc58a3b4"}, + {file = "fiona-1.9.6-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:e313210b30d09ed8f829bf625599e248dadd78622728030221f6526580ff26c5"}, + {file = "fiona-1.9.6-cp310-cp310-win_amd64.whl", hash = "sha256:89095c2d542325ee45894b8837e8048cdbb2f22274934e1be3b673ca628010d7"}, + {file = "fiona-1.9.6-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98cea6f435843b2119731c6b0470e5b7386aa16b6aa7edabbf1ed93aefe029c3"}, + {file = "fiona-1.9.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f4230eccbd896a79d1ebfa551d84bf90f512f7bcbe1ca61e3f82231321f1a532"}, + {file = "fiona-1.9.6-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:48b6218224e96de5e36b5eb259f37160092260e5de0dcd82ca200b1887aa9884"}, + {file = "fiona-1.9.6-cp311-cp311-win_amd64.whl", hash = "sha256:c1dd5fbc29b7303bb87eb683455e8451e1a53bb8faf20ef97fdcd843c9e4a7f6"}, + {file = "fiona-1.9.6-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:42d8a0e5570948d3821c493b6141866d9a4d7a64edad2be4ecbb89f81904baac"}, + {file = "fiona-1.9.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39819fb8f5ec6d9971cb01b912b4431615a3d3f50c83798565d8ce41917930db"}, + {file = "fiona-1.9.6-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:9b53034efdf93ada9295b081e6a8280af7c75496a20df82d4c2ca46d65b85905"}, + {file = "fiona-1.9.6-cp312-cp312-win_amd64.whl", hash = "sha256:1dcd6eca7524535baf2a39d7981b4a46d33ae28c313934a7c3eae62eecf9dfa5"}, + {file = "fiona-1.9.6-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e5404ed08c711489abcb3a50a184816825b8af06eb73ad2a99e18b8e7b47c96a"}, + {file = "fiona-1.9.6-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:53bedd2989e255df1bf3378ae9c06d6d241ec273c280c544bb44ffffebb97fb0"}, + {file = "fiona-1.9.6-cp37-cp37m-win_amd64.whl", hash = "sha256:77653a08564a44e634c44cd74a068d2f55d1d4029edd16d1c8aadcc4d8cc1d2c"}, + {file = "fiona-1.9.6-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:e7617563b36d2be99f048f0d0054b4d765f4aae454398f88f19de9c2c324b7f8"}, + {file = "fiona-1.9.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:50037c3b7a5f6f434b562b5b1a5b664f1caa7a4383b00af23cdb59bfc6ba852c"}, + {file = "fiona-1.9.6-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:bf51846ad602757bf27876f458c5c9f14b09421fac612f64273cc4e3fcabc441"}, + {file = "fiona-1.9.6-cp38-cp38-win_amd64.whl", hash = "sha256:11af1afc1255642a7787fe112c29d01f968f1053e4d4700fc6f3bb879c1622e0"}, + {file = "fiona-1.9.6-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:52e8fec650b72fc5253d8f86b63859acc687182281c29bfacd3930496cf982d1"}, + {file = "fiona-1.9.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9b92aa1badb2773e7cac19bef3064d73e9d80c67c42f0928db2520a04be6f2f"}, + {file = "fiona-1.9.6-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:0eaffbf3bfae9960484c0c08ea461b0c40e111497f04e9475ebf15ac7a22d9dc"}, + {file = "fiona-1.9.6-cp39-cp39-win_amd64.whl", hash = "sha256:f1b49d51a744874608b689f029766aa1e078dd72e94b44cf8eeef6d7bd2e9051"}, + {file = "fiona-1.9.6.tar.gz", hash = "sha256:791b3494f8b218c06ea56f892bd6ba893dfa23525347761d066fb7738acda3b1"}, ] [package.dependencies] @@ -1098,35 +1098,34 @@ certifi = "*" click = ">=8.0,<9.0" click-plugins = ">=1.0" cligj = ">=0.5" -setuptools = "*" six = "*" [package.extras] -all = ["Fiona[calc,s3,test]"] +all = ["fiona[calc,s3,test]"] calc = ["shapely"] s3 = ["boto3 (>=1.3.1)"] -test = ["Fiona[s3]", "pytest (>=7)", "pytest-cov", "pytz"] +test = ["fiona[s3]", "pytest (>=7)", "pytest-cov", "pytz"] [[package]] name = "flaky" -version = "3.7.0" -description = "Plugin for nose or pytest that automatically reruns flaky tests." +version = "3.8.0" +description = "Plugin for pytest that automatically reruns flaky tests." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.5" files = [ - {file = "flaky-3.7.0-py2.py3-none-any.whl", hash = "sha256:d6eda73cab5ae7364504b7c44670f70abed9e75f77dd116352f662817592ec9c"}, - {file = "flaky-3.7.0.tar.gz", hash = "sha256:3ad100780721a1911f57a165809b7ea265a7863305acb66708220820caf8aa0d"}, + {file = "flaky-3.8.0-py2.py3-none-any.whl", hash = "sha256:06152dc0582c18e2cc3d241feece008c074b17e1292658cb39ff8464ae19bd89"}, + {file = "flaky-3.8.0.tar.gz", hash = "sha256:3b4b9f5c15829c919c8e05b15582fa1c9c7f20a303581dd5d0bc56a66441389c"}, ] [[package]] name = "flatbuffers" -version = "23.5.26" +version = "24.3.7" description = "The FlatBuffers serialization format for Python" optional = false python-versions = "*" files = [ - {file = "flatbuffers-23.5.26-py2.py3-none-any.whl", hash = "sha256:c0ff356da363087b915fde4b8b45bdda73432fc17cddb3c8157472eab1422ad1"}, - {file = "flatbuffers-23.5.26.tar.gz", hash = "sha256:9ea1144cac05ce5d86e2859f431c6cd5e66cd9c78c558317c7955fb8d4c78d89"}, + {file = "flatbuffers-24.3.7-py2.py3-none-any.whl", hash = "sha256:80c4f5dcad0ee76b7e349671a0d657f2fbba927a0244f88dd3f5ed6a3694e1fc"}, + {file = "flatbuffers-24.3.7.tar.gz", hash = "sha256:0895c22b9a6019ff2f4de2e5e2f7cd15914043e6e7033a94c0c6369422690f22"}, ] [[package]] @@ -1469,49 +1468,51 @@ toy-text = ["pygame (==2.1.3)", "pygame (==2.1.3)"] [[package]] name = "h3" -version = "3.7.6" +version = "3.7.7" description = "Hierarchical hexagonal geospatial indexing system" optional = false python-versions = "*" files = [ - {file = "h3-3.7.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:cd4a5103a86a7d98cffa3be77eb82080aa2e9d676bbd1661f3db9ecad7a4ef2b"}, - {file = "h3-3.7.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:231959dceb4cc4ae86fe4fe2c385b176ed81712549e787b889dfa66f583676df"}, - {file = "h3-3.7.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:b9de9da755c90bbc90d6c041396a20c91816cd86a0bafa3b8899681cfdc2c4c6"}, - {file = "h3-3.7.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cda9a427b0de0d4069115ec765118888f180d0db915b5bc0dba52f5ae957b789"}, - {file = "h3-3.7.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bf1e080b9a47774754834e7f10155f3d2e3542bf895488a0519b2ae7d5b15db"}, - {file = "h3-3.7.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d3b93e3f38eb6c8fc5051d1b289b74614fb5f2415d272fea18085dea260d6b0"}, - {file = "h3-3.7.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:783b2ca4448360c5a184fd43b84fc5554e3a8fd02738ff31349506189c5b4b49"}, - {file = "h3-3.7.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3bae8b95f21f20f04141a35f15c8caa74f2046eb01ef49e35fc45e6a8edfc8df"}, - {file = "h3-3.7.6-cp310-cp310-win_amd64.whl", hash = "sha256:6ca9dd410e250d37f24a87c4ecb0615bb6d44a3f90eb5dbbf1b5e3d4489b8703"}, - {file = "h3-3.7.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:991ee991f2ae41f629feb1cd32fa677b8512c72696eb0ad94fcf359d61184b2e"}, - {file = "h3-3.7.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcbfff87d223279f8e38bbee3ebf52b1b96ae280e9e7de24674d3c284373d946"}, - {file = "h3-3.7.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eddf10d1d2139b3ea3ad1618c2074e1c47d3d36bddb5359e4955f5fd0b089d93"}, - {file = "h3-3.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76abc02f14a8df42fb5d80e6045023fb756c49d3cb08d69a8ceb9362b95d4bec"}, - {file = "h3-3.7.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc8030968586a7810aa192397ad9a4f7d7a963f57c9b3e210fc38de0aa5c2533"}, - {file = "h3-3.7.6-cp311-cp311-win_amd64.whl", hash = "sha256:1bdc790d91138e781973dcaade5231db7fe8a876330939e0903f602acc4fb64c"}, - {file = "h3-3.7.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:198718ab20a06ebe52f0aaafc02469e4a51964e5ba7990c3cc1d2fc32e7a54d9"}, - {file = "h3-3.7.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02faa911f2d8425c641a1f7c08f3dc9c10a5a3d81408832afa40748534b999c8"}, - {file = "h3-3.7.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b4db92ceaeb9a51cc875c302cdc5e1aa27eed776d95943ee55c941bc2f219a3"}, - {file = "h3-3.7.6-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4810ddb3d91411a6cbf87a28108fe31712f618ef223c349e1f6675602af2c473"}, - {file = "h3-3.7.6-cp36-cp36m-win_amd64.whl", hash = "sha256:211ef3317dcf7863e2d01a97ab6da319b8451d78cd1633dd28faaf69e66bc321"}, - {file = "h3-3.7.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:99b81620608378fc9910a5c630b0f17eb939156fa13e1adc55229d31f8c3f5ca"}, - {file = "h3-3.7.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f3175bd3ea3ee528dbf49308e7215a58351ce425e1c3a9838ae22526663311"}, - {file = "h3-3.7.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d7b69015f5bab2525914fad370b96dc386437e19a14cfed3eb13868589263db"}, - {file = "h3-3.7.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d0c2890fa10fa8695c020569c8d55da79e2c552a39533de4ae6991c7acb122e1"}, - {file = "h3-3.7.6-cp37-cp37m-win_amd64.whl", hash = "sha256:1cd4f07c49721023c5fef401a4de03c47000705dfd116579dc6b61cad821305d"}, - {file = "h3-3.7.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f8d1db3dcd8f6ce7f54e061e6c9fbecbb5c3978b9e54e44af05a53787c4f99b3"}, - {file = "h3-3.7.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:495e37b1dee0ec46ccd88b278e571234b0d0d30648f161799d65a8d7f390b3f2"}, - {file = "h3-3.7.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e2c4808b7691b176c89ebf23c173b3b23dd4ce42f8f494b32c6e31ceee49af"}, - {file = "h3-3.7.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58b1298bf1068704c6d9426749c8ae6021b53d982d5153cc4161c7042ecd810"}, - {file = "h3-3.7.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a2872f695168c4700c73edd6eab9c6181387d7ea177de13b130ae61e613ff7de"}, - {file = "h3-3.7.6-cp38-cp38-win_amd64.whl", hash = "sha256:98c3951c3b67ca3de06ef70aa74a9752640a3eca9b4d68e0d5d8e4fc6fa72337"}, - {file = "h3-3.7.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0724d4645c1da59e02b3305050c52b93ce1d8971d1d139433d464fcc103249a6"}, - {file = "h3-3.7.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e1f6ec0f2246381ce3a7f72da1ce825a5474eb7c8fb25a2ea1f16c6606ce34a7"}, - {file = "h3-3.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1471ff4d3875b25b521eeec5c2b72abe27b8e6af10ab99b7da5c0de545b0e832"}, - {file = "h3-3.7.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb96f2caae519d0ed17acde625af528476dca121b0336d3eb776429d40284ef6"}, - {file = "h3-3.7.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b1b1bce0dee05175f8d422e50ffa1afacb9a7e78ae0963059aebfbef50e10175"}, - {file = "h3-3.7.6-cp39-cp39-win_amd64.whl", hash = "sha256:36ea935833c37fdfd7ffbfc000d7cd20addcdf67f30b26a6b9bccb9210b03704"}, - {file = "h3-3.7.6.tar.gz", hash = "sha256:9bbd3dbac99532fa521d7d2e288ff55877bea3223b070f659ed7b5f8f1f213eb"}, + {file = "h3-3.7.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:951ecc9da0bcd5091670b13636928747bc98bc76891da0fa725524ec017cd9de"}, + {file = "h3-3.7.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26b9dd605541223ef927cc913deccb236cee024b16032f4a3e4387e2791479f2"}, + {file = "h3-3.7.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:996ebb32dc26dd607af7493149f94ce316117be6f42971f7b33bbd326ec695d2"}, + {file = "h3-3.7.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2a4aa888cd9476788b874b4e11e178293f5b86e8461c36596bf183c242d417"}, + {file = "h3-3.7.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0256e42687470c6f0044ca78fe375fe32a654be8b5a8313b4a68f52f513389c6"}, + {file = "h3-3.7.7-cp310-cp310-win_amd64.whl", hash = "sha256:a3e2bc125490f900e0513c30480722f129bab1415f23040b6cd3a3f8d5a39336"}, + {file = "h3-3.7.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7d59018a50cd3b6d0ff0b18a54fdfcbaf2f79c13c831842f54fd2780c4b561ea"}, + {file = "h3-3.7.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e74526d941c1656fe162cc63b459b61aa83a15e257e9477b1570f26c544b51a"}, + {file = "h3-3.7.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c7398dbab685fcf3fe92f7c4c5901ab258bc66f7fa05fd1da8693375a10a549"}, + {file = "h3-3.7.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d22ea488ab5fe01c94070e9a6b3222916905a4d3f7a9d33cb2298c93fa0ffd3"}, + {file = "h3-3.7.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c94836155e8169be393980fc059f06481a14dd1913bd9cba609f6f1e8864c171"}, + {file = "h3-3.7.7-cp311-cp311-win_amd64.whl", hash = "sha256:836e74313ff55324485cd7e07783bc67df3191ec08a318035d7cd8ee0b0badab"}, + {file = "h3-3.7.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:51c2f63ef5a57e4b18ebc9c0eb56656433e280ec45ab487a514127bb6e7d6a1f"}, + {file = "h3-3.7.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4d6e38dea47c220d9802af8e8bebc806f9f39358aee07b736191ff21e2c9921d"}, + {file = "h3-3.7.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e408342e94f558802a97bfcbe1baae2af8b1fd926ad9041d970ff9dbd0502099"}, + {file = "h3-3.7.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:644c3c84585aa4df62e81bc54fd305c4d6686324731de230b0ddbd7036ed172c"}, + {file = "h3-3.7.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bb4a3d5e82d0c89512dc71b4eac17976a29be29da250ba76bc94bc5b9e824f0e"}, + {file = "h3-3.7.7-cp312-cp312-win_amd64.whl", hash = "sha256:2ccff5f02589e80202597ed0b9f61ebd114e262e7dd0fe88059298602898192f"}, + {file = "h3-3.7.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ef2e71b619f984e71c4bd9d128152e2c7e3e788e2d2ec571b32cef1d295ddf38"}, + {file = "h3-3.7.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cb13f0213ed6da80e739355e5b62cfc81b7b1469af997be3384a6cbc3a1a750"}, + {file = "h3-3.7.7-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:701f72f703d892fb17e66b9fd7b6b2ad125e135b091eb7dd0ec11858b84d84d2"}, + {file = "h3-3.7.7-cp36-cp36m-win_amd64.whl", hash = "sha256:796622be7cb052690404c0ac03768183e51ae22505ce4a424b4537b2b7609fba"}, + {file = "h3-3.7.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bcd88a72d6aa97d0f3b3b87b7bfd9725a8909501e6cb9d0057d5b690b6bb37b0"}, + {file = "h3-3.7.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7358ba3f91193a2551c4a8d7ad7fd348e567b3a3581c9c161630029dfb23e07"}, + {file = "h3-3.7.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f34b204edc2e8f7d99a6db4ed1b5d202b7ea3ec6817d373ec432dee14efe04"}, + {file = "h3-3.7.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aa0f8ce89b5e694815ee7a5172a782d58f2652267329de7008354b110b53955"}, + {file = "h3-3.7.7-cp37-cp37m-win_amd64.whl", hash = "sha256:4c851baa1c2d4f29b01157ce2a4cdb1f3879fff5c36ff7861dad1526963a17a7"}, + {file = "h3-3.7.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6f3a9da5472820b0a4add342f96fe52f65fbb8f46984383885738517b38af69e"}, + {file = "h3-3.7.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1c57da776a3c1a01e2986b1f6a31d497ee0be8fcdbaaf9b23bb90f5a90eb8f0b"}, + {file = "h3-3.7.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a5c0c0ddd9c57694ecc3b9ba99cbef2842882f8943d6edc676a365e139dbc6d"}, + {file = "h3-3.7.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c1b5a0a652719b645387231bf6d7d4dd85150e4440a4ce72a804a10e86592ae"}, + {file = "h3-3.7.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:64f76dc827fef94e9f43f95a1daea2e11f2ad2e8c55deac072f3d59bd62412d4"}, + {file = "h3-3.7.7-cp38-cp38-win_amd64.whl", hash = "sha256:c993a36120d7f5607f24ba9e39caf715eaf9cd9d44f5d5660fd85e3f4e0c6bf7"}, + {file = "h3-3.7.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eb154d2af699870b888e10476e327c895078009d2d2a6ef2d053d7dcf0e2c270"}, + {file = "h3-3.7.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c96ad74e246bb7638d413efa8199dd4c58ee929424a4dcaadb16365195f77f87"}, + {file = "h3-3.7.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52901f14f8b6e2c82075fd52c0e70176b868f621d47b5dc93f468c510e963722"}, + {file = "h3-3.7.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9d82a0fcc647e7bab36ab2e7a7392d141edc95d113ccf972e0fb7b0ddf80a0"}, + {file = "h3-3.7.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f4417d09acb36f0452346052f576923d6e4334bff3459f217d6278d40397424"}, + {file = "h3-3.7.7-cp39-cp39-win_amd64.whl", hash = "sha256:7ae774cd43b057f68dc10c99e4522fa40ed6b32ab90b2df0025595ffa15e77a0"}, + {file = "h3-3.7.7.tar.gz", hash = "sha256:33d141c3cef0725a881771fd8cb80c06a0db84a6e4ca5c647ce095ae07c61e94"}, ] [package.extras] @@ -1610,22 +1611,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.0.1" +version = "7.0.2" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, - {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, + {file = "importlib_metadata-7.0.2-py3-none-any.whl", hash = "sha256:f4bc4c0c070c490abf4ce96d715f68e95923320370efb66143df00199bb6c100"}, + {file = "importlib_metadata-7.0.2.tar.gz", hash = "sha256:198f568f3230878cb1b44fbd7975f87906c22336dba2e4a7f05278c281fbd792"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -2418,38 +2419,38 @@ files = [ [[package]] name = "mypy" -version = "1.8.0" +version = "1.9.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485a8942f671120f76afffff70f259e1cd0f0cfe08f81c05d8816d958d4577d3"}, - {file = "mypy-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:df9824ac11deaf007443e7ed2a4a26bebff98d2bc43c6da21b2b64185da011c4"}, - {file = "mypy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afecd6354bbfb6e0160f4e4ad9ba6e4e003b767dd80d85516e71f2e955ab50d"}, - {file = "mypy-1.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8963b83d53ee733a6e4196954502b33567ad07dfd74851f32be18eb932fb1cb9"}, - {file = "mypy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e46f44b54ebddbeedbd3d5b289a893219065ef805d95094d16a0af6630f5d410"}, - {file = "mypy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:855fe27b80375e5c5878492f0729540db47b186509c98dae341254c8f45f42ae"}, - {file = "mypy-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c886c6cce2d070bd7df4ec4a05a13ee20c0aa60cb587e8d1265b6c03cf91da3"}, - {file = "mypy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d19c413b3c07cbecf1f991e2221746b0d2a9410b59cb3f4fb9557f0365a1a817"}, - {file = "mypy-1.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9261ed810972061388918c83c3f5cd46079d875026ba97380f3e3978a72f503d"}, - {file = "mypy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:51720c776d148bad2372ca21ca29256ed483aa9a4cdefefcef49006dff2a6835"}, - {file = "mypy-1.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:52825b01f5c4c1c4eb0db253ec09c7aa17e1a7304d247c48b6f3599ef40db8bd"}, - {file = "mypy-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5ac9a4eeb1ec0f1ccdc6f326bcdb464de5f80eb07fb38b5ddd7b0de6bc61e55"}, - {file = "mypy-1.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afe3fe972c645b4632c563d3f3eff1cdca2fa058f730df2b93a35e3b0c538218"}, - {file = "mypy-1.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:42c6680d256ab35637ef88891c6bd02514ccb7e1122133ac96055ff458f93fc3"}, - {file = "mypy-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:720a5ca70e136b675af3af63db533c1c8c9181314d207568bbe79051f122669e"}, - {file = "mypy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:028cf9f2cae89e202d7b6593cd98db6759379f17a319b5faf4f9978d7084cdc6"}, - {file = "mypy-1.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e6d97288757e1ddba10dd9549ac27982e3e74a49d8d0179fc14d4365c7add66"}, - {file = "mypy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f1478736fcebb90f97e40aff11a5f253af890c845ee0c850fe80aa060a267c6"}, - {file = "mypy-1.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42419861b43e6962a649068a61f4a4839205a3ef525b858377a960b9e2de6e0d"}, - {file = "mypy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b5b6c721bd4aabaadead3a5e6fa85c11c6c795e0c81a7215776ef8afc66de02"}, - {file = "mypy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c1538c38584029352878a0466f03a8ee7547d7bd9f641f57a0f3017a7c905b8"}, - {file = "mypy-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ef4be7baf08a203170f29e89d79064463b7fc7a0908b9d0d5114e8009c3a259"}, - {file = "mypy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178def594014aa6c35a8ff411cf37d682f428b3b5617ca79029d8ae72f5402b"}, - {file = "mypy-1.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab3c84fa13c04aeeeabb2a7f67a25ef5d77ac9d6486ff33ded762ef353aa5592"}, - {file = "mypy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:99b00bc72855812a60d253420d8a2eae839b0afa4938f09f4d2aa9bb4654263a"}, - {file = "mypy-1.8.0-py3-none-any.whl", hash = "sha256:538fd81bb5e430cc1381a443971c0475582ff9f434c16cd46d2c66763ce85d9d"}, - {file = "mypy-1.8.0.tar.gz", hash = "sha256:6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07"}, + {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, + {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, + {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, + {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, + {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, + {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, + {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, + {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, + {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, + {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, + {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, + {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, + {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, + {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, + {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, + {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, + {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, + {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, + {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, ] [package.dependencies] @@ -2715,13 +2716,13 @@ numpy = {version = ">=1.23.5", markers = "python_version >= \"3.11\""} [[package]] name = "packaging" -version = "23.2" +version = "24.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] [[package]] @@ -6294,13 +6295,13 @@ test = ["Mako", "pytest (>=7.0.0)"] [[package]] name = "pyopenssl" -version = "24.0.0" +version = "24.1.0" description = "Python wrapper module around the OpenSSL library" optional = false python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-24.0.0-py3-none-any.whl", hash = "sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3"}, - {file = "pyOpenSSL-24.0.0.tar.gz", hash = "sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf"}, + {file = "pyOpenSSL-24.1.0-py3-none-any.whl", hash = "sha256:17ed5be5936449c5418d1cd269a1a9e9081bc54c17aed272b45856a3d3dc86ad"}, + {file = "pyOpenSSL-24.1.0.tar.gz", hash = "sha256:cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f"}, ] [package.dependencies] @@ -6308,17 +6309,17 @@ cryptography = ">=41.0.5,<43" [package.extras] docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] -test = ["flaky", "pretend", "pytest (>=3.0.1)"] +test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"] [[package]] name = "pyparsing" -version = "3.1.1" +version = "3.1.2" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, ] [package.extras] @@ -6469,23 +6470,23 @@ cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "8.0.2" +version = "8.1.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"}, - {file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"}, + {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, + {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.3.0,<2.0" +pluggy = ">=1.4,<2.0" [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" @@ -6536,13 +6537,13 @@ pytest = "*" [[package]] name = "pytest-subtests" -version = "0.11.0" +version = "0.12.1" description = "unittest subTest() support and subtests fixture" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-subtests-0.11.0.tar.gz", hash = "sha256:51865c88457545f51fb72011942f0a3c6901ee9e24cbfb6d1b9dc1348bafbe37"}, - {file = "pytest_subtests-0.11.0-py3-none-any.whl", hash = "sha256:453389984952eec85ab0ce0c4f026337153df79587048271c7fd0f49119c07e4"}, + {file = "pytest-subtests-0.12.1.tar.gz", hash = "sha256:d6605dcb88647e0b7c1889d027f8ef1c17d7a2c60927ebfdc09c7b0d8120476d"}, + {file = "pytest_subtests-0.12.1-py3-none-any.whl", hash = "sha256:100d9f7eb966fc98efba7026c802812ae327e8b5b37181fb260a2ea93226495c"}, ] [package.dependencies] @@ -6551,17 +6552,17 @@ pytest = ">=7.0" [[package]] name = "pytest-timeout" -version = "2.2.0" +version = "2.3.1" description = "pytest plugin to abort hanging tests" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-timeout-2.2.0.tar.gz", hash = "sha256:3b0b95dabf3cb50bac9ef5ca912fa0cfc286526af17afc806824df20c2f72c90"}, - {file = "pytest_timeout-2.2.0-py3-none-any.whl", hash = "sha256:bde531e096466f49398a59f2dde76fa78429a09a12411466f88a07213e220de2"}, + {file = "pytest-timeout-2.3.1.tar.gz", hash = "sha256:12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9"}, + {file = "pytest_timeout-2.3.1-py3-none-any.whl", hash = "sha256:68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e"}, ] [package.dependencies] -pytest = ">=5.0.0" +pytest = ">=7.0.0" [[package]] name = "pytest-xdist" @@ -6585,13 +6586,13 @@ testing = ["filelock"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -6925,28 +6926,28 @@ docs = ["furo (==2023.9.10)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx [[package]] name = "ruff" -version = "0.2.2" +version = "0.3.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0a9efb032855ffb3c21f6405751d5e147b0c6b631e3ca3f6b20f917572b97eb6"}, - {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d450b7fbff85913f866a5384d8912710936e2b96da74541c82c1b458472ddb39"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecd46e3106850a5c26aee114e562c329f9a1fbe9e4821b008c4404f64ff9ce73"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e22676a5b875bd72acd3d11d5fa9075d3a5f53b877fe7b4793e4673499318ba"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1695700d1e25a99d28f7a1636d85bafcc5030bba9d0578c0781ba1790dbcf51c"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b0c232af3d0bd8f521806223723456ffebf8e323bd1e4e82b0befb20ba18388e"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f63d96494eeec2fc70d909393bcd76c69f35334cdbd9e20d089fb3f0640216ca"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a61ea0ff048e06de273b2e45bd72629f470f5da8f71daf09fe481278b175001"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1439c8f407e4f356470e54cdecdca1bd5439a0673792dbe34a2b0a551a2fe3"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:940de32dc8853eba0f67f7198b3e79bc6ba95c2edbfdfac2144c8235114d6726"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0c126da55c38dd917621552ab430213bdb3273bb10ddb67bc4b761989210eb6e"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3b65494f7e4bed2e74110dac1f0d17dc8e1f42faaa784e7c58a98e335ec83d7e"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1ec49be4fe6ddac0503833f3ed8930528e26d1e60ad35c2446da372d16651ce9"}, - {file = "ruff-0.2.2-py3-none-win32.whl", hash = "sha256:d920499b576f6c68295bc04e7b17b6544d9d05f196bb3aac4358792ef6f34325"}, - {file = "ruff-0.2.2-py3-none-win_amd64.whl", hash = "sha256:cc9a91ae137d687f43a44c900e5d95e9617cb37d4c989e462980ba27039d239d"}, - {file = "ruff-0.2.2-py3-none-win_arm64.whl", hash = "sha256:c9d15fc41e6054bfc7200478720570078f0b41c9ae4f010bcc16bd6f4d1aacdd"}, - {file = "ruff-0.2.2.tar.gz", hash = "sha256:e62ed7f36b3068a30ba39193a14274cd706bc486fad521276458022f7bccb31d"}, + {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77f2612752e25f730da7421ca5e3147b213dca4f9a0f7e0b534e9562c5441f01"}, + {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9966b964b2dd1107797be9ca7195002b874424d1d5472097701ae8f43eadef5d"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b83d17ff166aa0659d1e1deaf9f2f14cbe387293a906de09bc4860717eb2e2da"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb875c6cc87b3703aeda85f01c9aebdce3d217aeaca3c2e52e38077383f7268a"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be75e468a6a86426430373d81c041b7605137a28f7014a72d2fc749e47f572aa"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:967978ac2d4506255e2f52afe70dda023fc602b283e97685c8447d036863a302"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1231eacd4510f73222940727ac927bc5d07667a86b0cbe822024dd00343e77e9"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6d613b19e9a8021be2ee1d0e27710208d1603b56f47203d0abbde906929a9b"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8439338a6303585d27b66b4626cbde89bb3e50fa3cae86ce52c1db7449330a7"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:de8b480d8379620cbb5ea466a9e53bb467d2fb07c7eca54a4aa8576483c35d36"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b74c3de9103bd35df2bb05d8b2899bf2dbe4efda6474ea9681280648ec4d237d"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f380be9fc15a99765c9cf316b40b9da1f6ad2ab9639e551703e581a5e6da6745"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0ac06a3759c3ab9ef86bbeca665d31ad3aa9a4b1c17684aadb7e61c10baa0df4"}, + {file = "ruff-0.3.2-py3-none-win32.whl", hash = "sha256:9bd640a8f7dd07a0b6901fcebccedadeb1a705a50350fb86b4003b805c81385a"}, + {file = "ruff-0.3.2-py3-none-win_amd64.whl", hash = "sha256:0c1bdd9920cab5707c26c8b3bf33a064a4ca7842d91a99ec0634fec68f9f4037"}, + {file = "ruff-0.3.2-py3-none-win_arm64.whl", hash = "sha256:5f65103b1d76e0d600cabd577b04179ff592064eaa451a70a81085930e907d0b"}, + {file = "ruff-0.3.2.tar.gz", hash = "sha256:fa78ec9418eb1ca3db392811df3376b46471ae93792a81af2d1cbb0e5dcb5142"}, ] [[package]] @@ -7028,13 +7029,13 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "1.40.5" +version = "1.41.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.40.5.tar.gz", hash = "sha256:d2dca2392cc5c9a2cc9bb874dd7978ebb759682fe4fe889ee7e970ee8dd1c61e"}, - {file = "sentry_sdk-1.40.5-py2.py3-none-any.whl", hash = "sha256:d188b407c9bacbe2a50a824e1f8fb99ee1aeb309133310488c570cb6d7056643"}, + {file = "sentry-sdk-1.41.0.tar.gz", hash = "sha256:4f2d6c43c07925d8cd10dfbd0970ea7cb784f70e79523cca9dbcd72df38e5a46"}, + {file = "sentry_sdk-1.41.0-py2.py3-none-any.whl", hash = "sha256:be4f8f4b29a80b6a3b71f0f31487beb9e296391da20af8504498a328befed53f"}, ] [package.dependencies] @@ -7595,13 +7596,13 @@ telegram = ["requests"] [[package]] name = "types-requests" -version = "2.31.0.20240218" +version = "2.31.0.20240311" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240218.tar.gz", hash = "sha256:f1721dba8385958f504a5386240b92de4734e047a08a40751c1654d1ac3349c5"}, - {file = "types_requests-2.31.0.20240218-py3-none-any.whl", hash = "sha256:a82807ec6ddce8f00fe0e949da6d6bc1fbf1715420218a9640d695f70a9e5a9b"}, + {file = "types-requests-2.31.0.20240311.tar.gz", hash = "sha256:b1c1b66abfb7fa79aae09097a811c4aa97130eb8831c60e47aee4ca344731ca5"}, + {file = "types_requests-2.31.0.20240311-py3-none-any.whl", hash = "sha256:47872893d65a38e282ee9f277a4ee50d1b28bd592040df7d1fdaffdf3779937d"}, ] [package.dependencies] From 6768f13f6a9e5df40c438aae7f81b7fefeac8208 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 11 Mar 2024 11:36:45 -0700 Subject: [PATCH 172/599] [bot] Bump submodules (#31823) bump submodules Co-authored-by: jnewb1 --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index 41e9610ff8..4b6f6ac162 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 41e9610ff841e4cf62051c6df09c1870f5d12477 +Subproject commit 4b6f6ac1629d001ced6e86f43579d399230af614 From 1db30eae3a9ea929e295d1f340476431f400d6fa Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 11 Mar 2024 14:58:24 -0400 Subject: [PATCH 173/599] fix simulator device config (#31827) fix sim --- common/transformations/camera.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/transformations/camera.py b/common/transformations/camera.py index 7a8495a9b2..1a7b9c3f80 100644 --- a/common/transformations/camera.py +++ b/common/transformations/camera.py @@ -47,6 +47,9 @@ DEVICE_CAMERAS = { # before deviceState.deviceType was set, assume tici AR config ("unknown", "ar0231"): ar_ox_config, ("unknown", "ox03c10"): ar_ox_config, + + # simulator (emulates a tici) + ("pc", "unknown"): ar_ox_config, } prods = itertools.product(('tici', 'tizi', 'mici'), (('ar0231', ar_ox_config), ('ox03c10', ar_ox_config), ('os04c10', os_config))) DEVICE_CAMERAS.update({(d, c[0]): c[1] for d, c in prods}) From 3d7595dfe3c234e68412526e4aebc27fb90b296b Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 11 Mar 2024 16:31:01 -0400 Subject: [PATCH 174/599] GM Longitudinal: Display personality in instrument cluster (#31801) * GM Longitudinal: Display personality in instrument cluster * Correct value Co-authored-by: Shane Smiskol * update refs --------- Co-authored-by: Shane Smiskol --- selfdrive/car/gm/carcontroller.py | 2 +- selfdrive/car/gm/gmcan.py | 6 +++--- selfdrive/test/process_replay/ref_commit | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/selfdrive/car/gm/carcontroller.py b/selfdrive/car/gm/carcontroller.py index e010c56536..f8d747029b 100644 --- a/selfdrive/car/gm/carcontroller.py +++ b/selfdrive/car/gm/carcontroller.py @@ -118,7 +118,7 @@ class CarController(CarControllerBase): # Send dashboard UI commands (ACC status) send_fcw = hud_alert == VisualAlert.fcw can_sends.append(gmcan.create_acc_dashboard_command(self.packer_pt, CanBus.POWERTRAIN, CC.enabled, - hud_v_cruise * CV.MS_TO_KPH, hud_control.leadVisible, send_fcw)) + hud_v_cruise * CV.MS_TO_KPH, hud_control, send_fcw)) # Radar needs to know current speed and yaw rate (50hz), # and that ADAS is alive (10hz) diff --git a/selfdrive/car/gm/gmcan.py b/selfdrive/car/gm/gmcan.py index bd1e29ce3b..cea77985fb 100644 --- a/selfdrive/car/gm/gmcan.py +++ b/selfdrive/car/gm/gmcan.py @@ -102,17 +102,17 @@ def create_friction_brake_command(packer, bus, apply_brake, idx, enabled, near_s return packer.make_can_msg("EBCMFrictionBrakeCmd", bus, values) -def create_acc_dashboard_command(packer, bus, enabled, target_speed_kph, lead_car_in_sight, fcw): +def create_acc_dashboard_command(packer, bus, enabled, target_speed_kph, hud_control, fcw): target_speed = min(target_speed_kph, 255) values = { "ACCAlwaysOne": 1, "ACCResumeButton": 0, "ACCSpeedSetpoint": target_speed, - "ACCGapLevel": 3 * enabled, # 3 "far", 0 "inactive" + "ACCGapLevel": hud_control.leadDistanceBars * enabled, # 3 "far", 0 "inactive" "ACCCmdActive": enabled, "ACCAlwaysOne2": 1, - "ACCLeadCar": lead_car_in_sight, + "ACCLeadCar": hud_control.leadVisible, "FCWAlert": 0x3 if fcw else 0 } diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index fe7d954a80..0eedc6257b 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -653f68e6be4689dc9dce1a93cb726d37b9c588d3 +fba62008efd13fb578de325f0cdb0a87fe5e28f0 \ No newline at end of file From fb9f31efb703ac525a5f26e3d09c6246fd66cb15 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 11 Mar 2024 13:32:00 -0700 Subject: [PATCH 175/599] [bot] Fingerprints: add missing FW versions from new users (#31815) * Export fingerprints * Update selfdrive/car/toyota/fingerprints.py --- selfdrive/car/chrysler/fingerprints.py | 2 ++ selfdrive/car/toyota/fingerprints.py | 1 + 2 files changed, 3 insertions(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 3444b4cc5b..c021facba5 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -404,6 +404,7 @@ FW_VERSIONS = { b'68527383AD', b'68527387AE', b'68527403AC', + b'68527403AD', b'68546047AF', b'68631938AA', b'68631942AA', @@ -477,6 +478,7 @@ FW_VERSIONS = { ], (Ecu.engine, 0x7e0, None): [ b'05035699AG ', + b'05035841AC ', b'05036026AB ', b'05036065AE ', b'05036066AE ', diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 64ad53a880..a0d1ef20b2 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -1547,6 +1547,7 @@ FW_VERSIONS = { b'\x018966348W5100\x00\x00\x00\x00', b'\x018966348W9000\x00\x00\x00\x00', b'\x018966348X0000\x00\x00\x00\x00', + b'\x01896634D11000\x00\x00\x00\x00', b'\x01896634D12000\x00\x00\x00\x00', b'\x01896634D12100\x00\x00\x00\x00', b'\x01896634D43000\x00\x00\x00\x00', From 0e92097f7e80b32ba36e7a9eacbdbad9a6d577ef Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 11 Mar 2024 16:47:41 -0400 Subject: [PATCH 176/599] Params: remove unused key (#31826) --- common/params.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/common/params.cc b/common/params.cc index f68e1e4c6b..38d96a30b0 100644 --- a/common/params.cc +++ b/common/params.cc @@ -207,7 +207,6 @@ std::unordered_map keys = { {"UpdaterTargetBranch", CLEAR_ON_MANAGER_START}, {"UpdaterLastFetchTime", PERSISTENT}, {"Version", PERSISTENT}, - {"VisionRadarToggle", PERSISTENT}, }; } // namespace From 78d72d7dc390984496dd6633fd588bfd06ae1939 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 11 Mar 2024 18:23:10 -0700 Subject: [PATCH 177/599] remove RTC time pull (#31829) * remove RTC time pull * and syncing * bump panda * bump panda --- panda | 2 +- release/files_common | 1 - selfdrive/boardd/boardd.cc | 42 ------------------------------------ selfdrive/boardd/panda.cc | 39 --------------------------------- selfdrive/boardd/panda.h | 3 --- selfdrive/boardd/pandad.py | 5 ----- selfdrive/boardd/set_time.py | 38 -------------------------------- 7 files changed, 1 insertion(+), 129 deletions(-) delete mode 100755 selfdrive/boardd/set_time.py diff --git a/panda b/panda index 4b6f6ac162..895a7001c9 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 4b6f6ac1629d001ced6e86f43579d399230af614 +Subproject commit 895a7001c9d21ac7c4ace65debe70dfaee017443 diff --git a/release/files_common b/release/files_common index 4286c46c90..e483620052 100644 --- a/release/files_common +++ b/release/files_common @@ -82,7 +82,6 @@ selfdrive/boardd/panda.h selfdrive/boardd/spi.cc selfdrive/boardd/panda_comms.h selfdrive/boardd/panda_comms.cc -selfdrive/boardd/set_time.py selfdrive/boardd/pandad.py selfdrive/boardd/tests/test_boardd_loopback.py diff --git a/selfdrive/boardd/boardd.cc b/selfdrive/boardd/boardd.cc index b2b59d3752..c4db1eab40 100644 --- a/selfdrive/boardd/boardd.cc +++ b/selfdrive/boardd/boardd.cc @@ -49,12 +49,6 @@ std::atomic ignition(false); ExitHandler do_exit; -static std::string get_time_str(const struct tm &time) { - char s[30] = {'\0'}; - std::strftime(s, std::size(s), "%Y-%m-%d %H:%M:%S", &time); - return s; -} - bool check_all_connected(const std::vector &pandas) { for (const auto& panda : pandas) { if (!panda->connected()) { @@ -65,36 +59,6 @@ bool check_all_connected(const std::vector &pandas) { return true; } -enum class SyncTimeDir { TO_PANDA, FROM_PANDA }; - -void sync_time(Panda *panda, SyncTimeDir dir) { - if (!panda->has_rtc) return; - - setenv("TZ", "UTC", 1); - struct tm sys_time = util::get_time(); - struct tm rtc_time = panda->get_rtc(); - - if (dir == SyncTimeDir::TO_PANDA) { - if (util::time_valid(sys_time)) { - // Write time to RTC if it looks reasonable - double seconds = difftime(mktime(&rtc_time), mktime(&sys_time)); - if (std::abs(seconds) > 1.1) { - panda->set_rtc(sys_time); - LOGW("Updating panda RTC. dt = %.2f System: %s RTC: %s", - seconds, get_time_str(sys_time).c_str(), get_time_str(rtc_time).c_str()); - } - } - } else if (dir == SyncTimeDir::FROM_PANDA) { - LOGW("System time: %s, RTC time: %s", get_time_str(sys_time).c_str(), get_time_str(rtc_time).c_str()); - - if (!util::time_valid(sys_time) && util::time_valid(rtc_time)) { - const struct timeval tv = {mktime(&rtc_time), 0}; - settimeofday(&tv, 0); - LOGE("System time wrong, setting from RTC."); - } - } -} - bool safety_setter_thread(std::vector pandas) { LOGD("Starting safety setter thread"); @@ -195,7 +159,6 @@ Panda *connect(std::string serial="", uint32_t index=0) { throw std::runtime_error("Panda firmware out of date. Run pandad.py to update."); } - sync_time(panda.get(), SyncTimeDir::FROM_PANDA); return panda.release(); } @@ -581,11 +544,6 @@ void peripheral_control_thread(Panda *panda, bool no_fan_control) { panda->set_ir_pwr(ir_pwr); prev_ir_pwr = ir_pwr; } - - // Write to rtc once per minute when no ignition present - if (!ignition && (sm.frame % 120 == 1)) { - sync_time(panda, SyncTimeDir::TO_PANDA); - } } } diff --git a/selfdrive/boardd/panda.cc b/selfdrive/boardd/panda.cc index d738231c7b..95cfe04efd 100644 --- a/selfdrive/boardd/panda.cc +++ b/selfdrive/boardd/panda.cc @@ -25,10 +25,6 @@ Panda::Panda(std::string serial, uint32_t bus_offset) : bus_offset(bus_offset) { } hw_type = get_hw_type(); - has_rtc = (hw_type == cereal::PandaState::PandaType::UNO) || - (hw_type == cereal::PandaState::PandaType::DOS) || - (hw_type == cereal::PandaState::PandaType::TRES); - can_reset_communications(); return; @@ -77,41 +73,6 @@ cereal::PandaState::PandaType Panda::get_hw_type() { return (cereal::PandaState::PandaType)(hw_query[0]); } -void Panda::set_rtc(struct tm sys_time) { - // tm struct has year defined as years since 1900 - handle->control_write(0xa1, (uint16_t)(1900 + sys_time.tm_year), 0); - handle->control_write(0xa2, (uint16_t)(1 + sys_time.tm_mon), 0); - handle->control_write(0xa3, (uint16_t)sys_time.tm_mday, 0); - // handle->control_write(0xa4, (uint16_t)(1 + sys_time.tm_wday), 0); - handle->control_write(0xa5, (uint16_t)sys_time.tm_hour, 0); - handle->control_write(0xa6, (uint16_t)sys_time.tm_min, 0); - handle->control_write(0xa7, (uint16_t)sys_time.tm_sec, 0); -} - -struct tm Panda::get_rtc() { - struct __attribute__((packed)) timestamp_t { - uint16_t year; // Starts at 0 - uint8_t month; - uint8_t day; - uint8_t weekday; - uint8_t hour; - uint8_t minute; - uint8_t second; - } rtc_time = {0}; - - handle->control_read(0xa0, 0, 0, (unsigned char*)&rtc_time, sizeof(rtc_time)); - - struct tm new_time = { 0 }; - new_time.tm_year = rtc_time.year - 1900; // tm struct has year defined as years since 1900 - new_time.tm_mon = rtc_time.month - 1; - new_time.tm_mday = rtc_time.day; - new_time.tm_hour = rtc_time.hour; - new_time.tm_min = rtc_time.minute; - new_time.tm_sec = rtc_time.second; - - return new_time; -} - void Panda::set_fan_speed(uint16_t fan_speed) { handle->control_write(0xb1, fan_speed, 0); } diff --git a/selfdrive/boardd/panda.h b/selfdrive/boardd/panda.h index 9d4b1b2092..f46150dd95 100644 --- a/selfdrive/boardd/panda.h +++ b/selfdrive/boardd/panda.h @@ -50,7 +50,6 @@ public: Panda(std::string serial="", uint32_t bus_offset=0); cereal::PandaState::PandaType hw_type = cereal::PandaState::PandaType::UNKNOWN; - bool has_rtc = false; const uint32_t bus_offset; bool connected(); @@ -64,8 +63,6 @@ public: cereal::PandaState::PandaType get_hw_type(); void set_safety_model(cereal::CarParams::SafetyModel safety_model, uint16_t safety_param=0U); void set_alternative_experience(uint16_t alternative_experience); - void set_rtc(struct tm sys_time); - struct tm get_rtc(); void set_fan_speed(uint16_t fan_speed); uint16_t get_fan_speed(); void set_ir_pwr(uint16_t ir_pwr); diff --git a/selfdrive/boardd/pandad.py b/selfdrive/boardd/pandad.py index 988d1a2409..cf9938ec1d 100755 --- a/selfdrive/boardd/pandad.py +++ b/selfdrive/boardd/pandad.py @@ -10,7 +10,6 @@ from functools import cmp_to_key from panda import Panda, PandaDFU, PandaProtocolMismatch, FW_PATH from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params -from openpilot.selfdrive.boardd.set_time import set_time from openpilot.system.hardware import HARDWARE from openpilot.common.swaglog import cloudlog @@ -154,10 +153,6 @@ def main() -> NoReturn: cloudlog.event("panda.som_reset_triggered", health=health, serial=panda.get_usb_serial()) if first_run: - if panda.is_internal(): - # update time from RTC - set_time(cloudlog) - # reset panda to ensure we're in a good state cloudlog.info(f"Resetting panda {panda.get_usb_serial()}") if panda.is_internal(): diff --git a/selfdrive/boardd/set_time.py b/selfdrive/boardd/set_time.py deleted file mode 100755 index fe17f64e82..0000000000 --- a/selfdrive/boardd/set_time.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python3 -import os -import datetime -from panda import Panda - -from openpilot.common.time import MIN_DATE - -def set_time(logger): - sys_time = datetime.datetime.today() - if sys_time > MIN_DATE: - logger.info("System time valid") - return - - try: - ps = Panda.list() - if len(ps) == 0: - logger.error("Failed to set time, no pandas found") - return - - for s in ps: - with Panda(serial=s) as p: - if not p.is_internal(): - continue - - # Set system time from panda RTC time - panda_time = p.get_datetime() - if panda_time > MIN_DATE: - logger.info(f"adjusting time from '{sys_time}' to '{panda_time}'") - os.system(f"TZ=UTC date -s '{panda_time}'") - break - except Exception: - logger.exception("Failed to fetch time from panda") - -if __name__ == "__main__": - import logging - logging.basicConfig(level=logging.DEBUG) - - set_time(logging) From 011eed0daf167a780165ac8d2d2a7768a86a62e7 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Tue, 12 Mar 2024 03:30:09 +0000 Subject: [PATCH 178/599] Ford: show longitudinal personality in IPC (#31796) * Ford: show longitudinal personality in IPC Adjust the time gap to 2, 3 or 4 bars for openpilot long. TODO: set AccTGap_D_Dsply when value changes so that the popup appears with the new time gap Depends on #31760. * ACC UI: show time gap popup when distance changes * Revert "ACC UI: show time gap popup when distance changes" This reverts commit c4e8e10970078a534d5714ddced92d540e9e3c0c. * ACC UI: send on distance bars change * don't need this check - just send on first frame --- selfdrive/car/ford/carcontroller.py | 9 +++++++-- selfdrive/car/ford/fordcan.py | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/ford/carcontroller.py b/selfdrive/car/ford/carcontroller.py index 7ce2ded6e3..47082fb56f 100644 --- a/selfdrive/car/ford/carcontroller.py +++ b/selfdrive/car/ford/carcontroller.py @@ -35,6 +35,7 @@ class CarController(CarControllerBase): self.main_on_last = False self.lkas_enabled_last = False self.steer_alert_last = False + self.lead_distance_bars_last = None def update(self, CC, CS, now_nanos): can_sends = [] @@ -98,15 +99,19 @@ class CarController(CarControllerBase): # send lkas ui msg at 1Hz or if ui state changes if (self.frame % CarControllerParams.LKAS_UI_STEP) == 0 or send_ui: can_sends.append(fordcan.create_lkas_ui_msg(self.packer, self.CAN, main_on, CC.latActive, steer_alert, hud_control, CS.lkas_status_stock_values)) + # send acc ui msg at 5Hz or if ui state changes + if hud_control.leadDistanceBars != self.lead_distance_bars_last: + send_ui = True if (self.frame % CarControllerParams.ACC_UI_STEP) == 0 or send_ui: can_sends.append(fordcan.create_acc_ui_msg(self.packer, self.CAN, self.CP, main_on, CC.latActive, - fcw_alert, CS.out.cruiseState.standstill, hud_control, - CS.acc_tja_status_stock_values)) + fcw_alert, CS.out.cruiseState.standstill, hud_control, + CS.acc_tja_status_stock_values)) self.main_on_last = main_on self.lkas_enabled_last = CC.latActive self.steer_alert_last = steer_alert + self.lead_distance_bars_last = hud_control.leadDistanceBars new_actuators = actuators.copy() new_actuators.curvature = self.apply_curvature_last diff --git a/selfdrive/car/ford/fordcan.py b/selfdrive/car/ford/fordcan.py index c5ef0900f3..939084c4a0 100644 --- a/selfdrive/car/ford/fordcan.py +++ b/selfdrive/car/ford/fordcan.py @@ -212,7 +212,7 @@ def create_acc_ui_msg(packer, CAN: CanBus, CP, main_on: bool, enabled: bool, fcw "AccFllwMde_B_Dsply": 1 if hud_control.leadVisible else 0, # Lead indicator "AccStopMde_B_Dsply": 1 if standstill else 0, "AccWarn_D_Dsply": 0, # ACC warning - "AccTGap_D_Dsply": 4, # Fixed time gap in UI + "AccTGap_D_Dsply": hud_control.leadDistanceBars + 1, # Time gap }) # Forwards FCW alert from IPMA From adc15d69a2b8e8fa7a5ce5c71d4d4f78e87fca68 Mon Sep 17 00:00:00 2001 From: GRIFFIT807 <96277491+GRIFFIT807@users.noreply.github.com> Date: Mon, 11 Mar 2024 23:31:53 -0500 Subject: [PATCH 179/599] Add support for 2024 Ford Maverick (#31828) * Update fingerprints.py * Update values.py * 24 * Update CARS.md * hybrid should match up --------- Co-authored-by: Justin Newberry Co-authored-by: Shane Smiskol --- docs/CARS.md | 4 ++-- selfdrive/car/ford/fingerprints.py | 1 + selfdrive/car/ford/values.py | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 8854a801ab..6ed1ba7e62 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -47,9 +47,9 @@ A supported vehicle is one that just works when you install a comma device. All |Ford|Kuga Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Kuga Plug-in Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Maverick 2022|LARIAT Luxury|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Ford|Maverick 2023|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Ford|Maverick 2023-24|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Maverick Hybrid 2022|LARIAT Luxury|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Ford|Maverick Hybrid 2023|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Ford|Maverick Hybrid 2023-24|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G70 2020|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2017|All|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index 504d27e681..c32a982d78 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -136,6 +136,7 @@ FW_VERSIONS = { b'NZ6C-2D053-AG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-ED\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-EE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PZ6C-2D053-EF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x764, None): [ b'NZ6T-14D049-AA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 15c0d3bdb7..7b46e82abb 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -137,8 +137,8 @@ class CAR(Platforms): [ FordCarInfo("Ford Maverick 2022", "LARIAT Luxury"), FordCarInfo("Ford Maverick Hybrid 2022", "LARIAT Luxury"), - FordCarInfo("Ford Maverick 2023", "Co-Pilot360 Assist"), - FordCarInfo("Ford Maverick Hybrid 2023", "Co-Pilot360 Assist"), + FordCarInfo("Ford Maverick 2023-24", "Co-Pilot360 Assist"), + FordCarInfo("Ford Maverick Hybrid 2023-24", "Co-Pilot360 Assist"), ], CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) From 87cb00203abb4a9ded660cb2e321d3bc79dcf96f Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 00:45:52 -0400 Subject: [PATCH 180/599] Hyundai Longitudinal: Display personality in instrument cluster (#31798) * Hyundai Longitudinal: Display personality in instrument cluster * Support CAN-FD * Apply suggestions from code review --------- Co-authored-by: Shane Smiskol --- selfdrive/car/hyundai/carcontroller.py | 4 ++-- selfdrive/car/hyundai/hyundaican.py | 6 +++--- selfdrive/car/hyundai/hyundaicanfd.py | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/selfdrive/car/hyundai/carcontroller.py b/selfdrive/car/hyundai/carcontroller.py index ee7f441227..7829d764b0 100644 --- a/selfdrive/car/hyundai/carcontroller.py +++ b/selfdrive/car/hyundai/carcontroller.py @@ -129,7 +129,7 @@ class CarController(CarControllerBase): can_sends.extend(hyundaicanfd.create_adrv_messages(self.packer, self.CAN, self.frame)) if self.frame % 2 == 0: can_sends.append(hyundaicanfd.create_acc_control(self.packer, self.CAN, CC.enabled, self.accel_last, accel, stopping, CC.cruiseControl.override, - set_speed_in_units)) + set_speed_in_units, hud_control)) self.accel_last = accel else: # button presses @@ -148,7 +148,7 @@ class CarController(CarControllerBase): jerk = 3.0 if actuators.longControlState == LongCtrlState.pid else 1.0 use_fca = self.CP.flags & HyundaiFlags.USE_FCA.value can_sends.extend(hyundaican.create_acc_commands(self.packer, CC.enabled, accel, jerk, int(self.frame / 2), - hud_control.leadVisible, set_speed_in_units, stopping, + hud_control, set_speed_in_units, stopping, CC.cruiseControl.override, use_fca)) # 20 Hz LFA MFA message diff --git a/selfdrive/car/hyundai/hyundaican.py b/selfdrive/car/hyundai/hyundaican.py index 0bf29664e8..7cbeed0afb 100644 --- a/selfdrive/car/hyundai/hyundaican.py +++ b/selfdrive/car/hyundai/hyundaican.py @@ -126,12 +126,12 @@ def create_lfahda_mfc(packer, enabled, hda_set_speed=0): } return packer.make_can_msg("LFAHDA_MFC", 0, values) -def create_acc_commands(packer, enabled, accel, upper_jerk, idx, lead_visible, set_speed, stopping, long_override, use_fca): +def create_acc_commands(packer, enabled, accel, upper_jerk, idx, hud_control, set_speed, stopping, long_override, use_fca): commands = [] scc11_values = { "MainMode_ACC": 1, - "TauGapSet": 4, + "TauGapSet": hud_control.leadDistanceBars + 1, "VSetDis": set_speed if enabled else 0, "AliveCounterACC": idx % 0x10, "ObjValid": 1, # close lead makes controls tighter @@ -167,7 +167,7 @@ def create_acc_commands(packer, enabled, accel, upper_jerk, idx, lead_visible, s "JerkUpperLimit": upper_jerk, # stock usually is 1.0 but sometimes uses higher values "JerkLowerLimit": 5.0, # stock usually is 0.5 but sometimes uses higher values "ACCMode": 2 if enabled and long_override else 1 if enabled else 4, # stock will always be 4 instead of 0 after first disengage - "ObjGap": 2 if lead_visible else 0, # 5: >30, m, 4: 25-30 m, 3: 20-25 m, 2: < 20 m, 0: no lead + "ObjGap": 2 if hud_control.leadVisible else 0, # 5: >30, m, 4: 25-30 m, 3: 20-25 m, 2: < 20 m, 0: no lead } commands.append(packer.make_can_msg("SCC14", 0, scc14_values)) diff --git a/selfdrive/car/hyundai/hyundaicanfd.py b/selfdrive/car/hyundai/hyundaicanfd.py index a35fcb7779..17ec9dcdd2 100644 --- a/selfdrive/car/hyundai/hyundaicanfd.py +++ b/selfdrive/car/hyundai/hyundaicanfd.py @@ -121,7 +121,7 @@ def create_lfahda_cluster(packer, CAN, enabled): return packer.make_can_msg("LFAHDA_CLUSTER", CAN.ECAN, values) -def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_override, set_speed): +def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_override, set_speed, hud_control): jerk = 5 jn = jerk / 50 if not enabled or gas_override: @@ -146,7 +146,7 @@ def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_ov "SET_ME_2": 0x4, "SET_ME_3": 0x3, "SET_ME_TMP_64": 0x64, - "DISTANCE_SETTING": 4, + "DISTANCE_SETTING": hud_control.leadDistanceBars + 1, } return packer.make_can_msg("SCC_CONTROL", CAN.ECAN, values) From 32c0bcec3aee54cae552d500b783c80930f1e204 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 00:49:07 -0400 Subject: [PATCH 181/599] Honda: Parse distance button from steering wheel (#31763) --- selfdrive/car/honda/interface.py | 7 ++++--- selfdrive/car/honda/values.py | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index f791d4b639..d316626a94 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -4,8 +4,8 @@ from panda import Panda from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import interp from openpilot.selfdrive.car.honda.hondacan import CanBus -from openpilot.selfdrive.car.honda.values import CarControllerParams, CruiseButtons, HondaFlags, CAR, HONDA_BOSCH, HONDA_NIDEC_ALT_SCM_MESSAGES, \ - HONDA_BOSCH_RADARLESS +from openpilot.selfdrive.car.honda.values import CarControllerParams, CruiseButtons, CruiseSettings, HondaFlags, CAR, HONDA_BOSCH, \ + HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_RADARLESS from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.car.disable_ecu import disable_ecu @@ -16,6 +16,7 @@ EventName = car.CarEvent.EventName TransmissionType = car.CarParams.TransmissionType BUTTONS_DICT = {CruiseButtons.RES_ACCEL: ButtonType.accelCruise, CruiseButtons.DECEL_SET: ButtonType.decelCruise, CruiseButtons.MAIN: ButtonType.altButton3, CruiseButtons.CANCEL: ButtonType.cancel} +SETTINGS_BUTTONS_DICT = {CruiseSettings.DISTANCE: ButtonType.gapAdjustCruise, CruiseSettings.LKAS: ButtonType.altButton1} class CarInterface(CarInterfaceBase): @@ -236,7 +237,7 @@ class CarInterface(CarInterfaceBase): ret.buttonEvents = [ *create_button_events(self.CS.cruise_buttons, self.CS.prev_cruise_buttons, BUTTONS_DICT), - *create_button_events(self.CS.cruise_setting, self.CS.prev_cruise_setting, {1: ButtonType.altButton1}), + *create_button_events(self.CS.cruise_setting, self.CS.prev_cruise_setting, SETTINGS_BUTTONS_DICT), ] # events diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 4960380bbc..eed76c42ab 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -68,6 +68,11 @@ class CruiseButtons: MAIN = 1 +class CruiseSettings: + DISTANCE = 3 + LKAS = 1 + + # See dbc files for info on values VISUAL_HUD = { VisualAlert.none: 0, From ab5c0f90b5c7790db2edece444d29f64a3bd8a8e Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 00:53:19 -0400 Subject: [PATCH 182/599] Mazda: Parse distance button from steering wheel (#31765) * Mazda: Parse distance button from steering wheel * Update selfdrive/car/mazda/interface.py --------- Co-authored-by: Shane Smiskol --- selfdrive/car/mazda/carstate.py | 7 +++++++ selfdrive/car/mazda/interface.py | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/mazda/carstate.py b/selfdrive/car/mazda/carstate.py index 37a67ecd93..83b238fb68 100644 --- a/selfdrive/car/mazda/carstate.py +++ b/selfdrive/car/mazda/carstate.py @@ -18,9 +18,16 @@ class CarState(CarStateBase): self.lkas_allowed_speed = False self.lkas_disabled = False + self.prev_distance_button = 0 + self.distance_button = 0 + def update(self, cp, cp_cam): ret = car.CarState.new_message() + + self.prev_distance_button = self.distance_button + self.distance_button = cp.vl["CRZ_BTNS"]["DISTANCE_LESS"] + ret.wheelSpeeds = self.get_wheel_speeds( cp.vl["WHEEL_SPEEDS"]["FL"], cp.vl["WHEEL_SPEEDS"]["FR"], diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 85be0166ce..12d156fee8 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -2,7 +2,7 @@ from cereal import car from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.mazda.values import CAR, LKAS_LIMITS -from openpilot.selfdrive.car import get_safety_config +from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase ButtonType = car.CarState.ButtonEvent.Type @@ -34,6 +34,9 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) + # TODO: add button types for inc and dec + ret.buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) + # events events = self.create_common_events(ret) From 82fa0d762c11e2d42ea30fe108c1f0b60a5995f3 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 00:58:55 -0400 Subject: [PATCH 183/599] Nissan: Parse distance button from steering wheel (#31766) --- selfdrive/car/nissan/carstate.py | 6 ++++++ selfdrive/car/nissan/interface.py | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/nissan/carstate.py b/selfdrive/car/nissan/carstate.py index b2ba9ce290..694d6c3bb0 100644 --- a/selfdrive/car/nissan/carstate.py +++ b/selfdrive/car/nissan/carstate.py @@ -20,9 +20,15 @@ class CarState(CarStateBase): self.steeringTorqueSamples = deque(TORQUE_SAMPLES*[0], TORQUE_SAMPLES) self.shifter_values = can_define.dv["GEARBOX"]["GEAR_SHIFTER"] + self.prev_distance_button = 0 + self.distance_button = 0 + def update(self, cp, cp_adas, cp_cam): ret = car.CarState.new_message() + self.prev_distance_button = self.distance_button + self.distance_button = cp.vl["CRUISE_THROTTLE"]["FOLLOW_DISTANCE_BUTTON"] + if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA): ret.gas = cp.vl["GAS_PEDAL"]["GAS_PEDAL"] elif self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 60cc3a0090..3e82b5192e 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -1,9 +1,11 @@ from cereal import car from panda import Panda -from openpilot.selfdrive.car import get_safety_config +from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.car.nissan.values import CAR +ButtonType = car.CarState.ButtonEvent.Type + class CarInterface(CarInterfaceBase): @@ -30,6 +32,8 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_adas, self.cp_cam) + ret.buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) + events = self.create_common_events(ret, extra_gears=[car.CarState.GearShifter.brake]) if self.CS.lkas_enabled: From 7ca07f8be9360da788f65a988089fd23c3329b97 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 01:01:48 -0400 Subject: [PATCH 184/599] Volkswagen Longitudinal: Display personality in instrument cluster (#31800) --- selfdrive/car/volkswagen/carcontroller.py | 2 +- selfdrive/car/volkswagen/mqbcan.py | 4 ++-- selfdrive/car/volkswagen/pqcan.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index 1b1858703d..cfba43b4da 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -102,7 +102,7 @@ class CarController(CarControllerBase): # FIXME: follow the recent displayed-speed updates, also use mph_kmh toggle to fix display rounding problem? set_speed = hud_control.setSpeed * CV.MS_TO_KPH can_sends.append(self.CCS.create_acc_hud_control(self.packer_pt, CANBUS.pt, acc_hud_status, set_speed, - lead_distance)) + lead_distance, hud_control.leadDistanceBars)) # **** Stock ACC Button Controls **************************************** # diff --git a/selfdrive/car/volkswagen/mqbcan.py b/selfdrive/car/volkswagen/mqbcan.py index 787c7de530..6043533acf 100644 --- a/selfdrive/car/volkswagen/mqbcan.py +++ b/selfdrive/car/volkswagen/mqbcan.py @@ -125,11 +125,11 @@ def create_acc_accel_control(packer, bus, acc_type, acc_enabled, accel, acc_cont return commands -def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance): +def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, distance): values = { "ACC_Status_Anzeige": acc_hud_status, "ACC_Wunschgeschw_02": set_speed if set_speed < 250 else 327.36, - "ACC_Gesetzte_Zeitluecke": 3, + "ACC_Gesetzte_Zeitluecke": distance + 2, "ACC_Display_Prio": 3, "ACC_Abstandsindex": lead_distance, } diff --git a/selfdrive/car/volkswagen/pqcan.py b/selfdrive/car/volkswagen/pqcan.py index f42c3cf781..b77f33511f 100644 --- a/selfdrive/car/volkswagen/pqcan.py +++ b/selfdrive/car/volkswagen/pqcan.py @@ -91,7 +91,7 @@ def create_acc_accel_control(packer, bus, acc_type, acc_enabled, accel, acc_cont return commands -def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance): +def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, distance): values = { "ACA_StaACC": acc_hud_status, "ACA_Zeitluecke": 2, From 5f39a6f8be016c8a96ff377ead24a60029a9f0fb Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 01:05:27 -0400 Subject: [PATCH 185/599] Honda Longitudinal: Display personality in instrument cluster (#31799) * Honda Longitudinal: Display personality in instrument cluster * Simpler Co-authored-by: Shane Smiskol * cleanup * Update selfdrive/car/honda/hondacan.py --------- Co-authored-by: Shane Smiskol --- selfdrive/car/honda/carcontroller.py | 4 ++-- selfdrive/car/honda/hondacan.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 547abcd9b9..00cc54dcb3 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -96,7 +96,7 @@ def process_hud_alert(hud_alert): HUDData = namedtuple("HUDData", ["pcm_accel", "v_cruise", "lead_visible", - "lanes_visible", "fcw", "acc_alert", "steer_required"]) + "lanes_visible", "fcw", "acc_alert", "steer_required", "lead_distance_bars"]) def rate_limit_steer(new_steer, last_steer): @@ -251,7 +251,7 @@ class CarController(CarControllerBase): # Send dashboard UI commands. if self.frame % 10 == 0: hud = HUDData(int(pcm_accel), int(round(hud_v_cruise)), hud_control.leadVisible, - hud_control.lanesVisible, fcw_display, acc_alert, steer_required) + hud_control.lanesVisible, fcw_display, acc_alert, steer_required, hud_control.leadDistanceBars) can_sends.extend(hondacan.create_ui_commands(self.packer, self.CAN, self.CP, CC.enabled, pcm_speed, hud, CS.is_metric, CS.acc_hud, CS.lkas_hud)) if self.CP.openpilotLongitudinalControl and self.CP.carFingerprint not in HONDA_BOSCH: diff --git a/selfdrive/car/honda/hondacan.py b/selfdrive/car/honda/hondacan.py index d10d5576d9..efa5ba1f1e 100644 --- a/selfdrive/car/honda/hondacan.py +++ b/selfdrive/car/honda/hondacan.py @@ -143,7 +143,7 @@ def create_ui_commands(packer, CAN, CP, enabled, pcm_speed, hud, is_metric, acc_ acc_hud_values = { 'CRUISE_SPEED': hud.v_cruise, 'ENABLE_MINI_CAR': 1 if enabled else 0, - 'HUD_DISTANCE': 0, # max distance setting on display + 'HUD_DISTANCE': (hud.lead_distance_bars + 1) % 4, # wraps to 0 at 4 bars 'IMPERIAL_UNIT': int(not is_metric), 'HUD_LEAD': 2 if enabled and hud.lead_visible else 1 if enabled else 0, 'SET_ME_X01_2': 1, From 7a47fad5e3c2118d1b4807f24c07f114a6c7df9b Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 01:06:49 -0400 Subject: [PATCH 186/599] Volkswagen PQ Longitudinal: Display personality in instrument cluster (#31837) --- selfdrive/car/volkswagen/pqcan.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/volkswagen/pqcan.py b/selfdrive/car/volkswagen/pqcan.py index b77f33511f..307aaaa2a7 100644 --- a/selfdrive/car/volkswagen/pqcan.py +++ b/selfdrive/car/volkswagen/pqcan.py @@ -94,7 +94,7 @@ def create_acc_accel_control(packer, bus, acc_type, acc_enabled, accel, acc_cont def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, distance): values = { "ACA_StaACC": acc_hud_status, - "ACA_Zeitluecke": 2, + "ACA_Zeitluecke": distance + 2, "ACA_V_Wunsch": set_speed, "ACA_gemZeitl": lead_distance, "ACA_PrioDisp": 3, From 9ab735494e2effa67ef88fc1993ce46cf7894921 Mon Sep 17 00:00:00 2001 From: Erich Moraga <33645296+ErichMoraga@users.noreply.github.com> Date: Tue, 12 Mar 2024 00:13:34 -0500 Subject: [PATCH 187/599] Volkswagen: add engine/transmission/srs ECU versions for PASSAT_MK8 (#31777) `black_guru` 2021 VW Passat DongleID/route 9d09cc205c254c4b/00000000--03b770c463 --- selfdrive/car/volkswagen/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index f6b3c49982..416cbb6ad0 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -381,6 +381,7 @@ FW_VERSIONS = { b'\xf1\x8704L906026FP\xf1\x892012', b'\xf1\x8704L906026GA\xf1\x892013', b'\xf1\x8704L906026KD\xf1\x894798', + b'\xf1\x8705L906022A \xf1\x890827', b'\xf1\x873G0906259 \xf1\x890004', b'\xf1\x873G0906259B \xf1\x890002', b'\xf1\x873G0906264 \xf1\x890004', @@ -400,6 +401,7 @@ FW_VERSIONS = { b'\xf1\x870DL300011H \xf1\x895201', b'\xf1\x870GC300042H \xf1\x891404', b'\xf1\x870GC300043 \xf1\x892301', + b'\xf1\x870GC300046P \xf1\x892805', ], (Ecu.srs, 0x715, None): [ b'\xf1\x873Q0959655AE\xf1\x890195\xf1\x82\r56140056130012416612124111', @@ -415,6 +417,7 @@ FW_VERSIONS = { b'\xf1\x873Q0959655BK\xf1\x890703\xf1\x82\x0e5915005914001354701311542900', b'\xf1\x873Q0959655CN\xf1\x890720\xf1\x82\x0e5915005914001305701311052900', b'\xf1\x875Q0959655S \xf1\x890870\xf1\x82\x1315120011111200631145171716121691132111', + b'\xf1\x875QF959655S \xf1\x890639\xf1\x82\x13131100131300111111000120----2211114A48', ], (Ecu.eps, 0x712, None): [ b'\xf1\x873Q0909144J \xf1\x895063\xf1\x82\x0566B00611A1', From fedb2a93601fe07566118dcf3dfadd6600ce31af Mon Sep 17 00:00:00 2001 From: RandomHB Date: Tue, 12 Mar 2024 01:17:10 -0400 Subject: [PATCH 188/599] Update fingerprints.py 2022 Ford F-150 PowerBoost (fwdCamera) (#31462) * Update fingerprints.py 2022 Ford F-150 PowerBoost (fwdCamera) * update MY * also likely works for hybrid * fix that --------- Co-authored-by: Shane Smiskol --- selfdrive/car/ford/fingerprints.py | 1 + selfdrive/car/ford/values.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index c32a982d78..8b643f8997 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -86,6 +86,7 @@ FW_VERSIONS = { ], (Ecu.fwdCamera, 0x706, None): [ b'PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'ML3T-14H102-ABR\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, CAR.F_150_LIGHTNING_MK1: { diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 7b46e82abb..09c02d53a6 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -114,8 +114,8 @@ class CAR(Platforms): F_150_MK14 = FordCANFDPlatformConfig( "FORD F-150 14TH GEN", [ - FordCarInfo("Ford F-150 2023", "Co-Pilot360 Active 2.0"), - FordCarInfo("Ford F-150 Hybrid 2023", "Co-Pilot360 Active 2.0"), + FordCarInfo("Ford F-150 2022-23", "Co-Pilot360 Active 2.0"), + FordCarInfo("Ford F-150 Hybrid 2022-23", "Co-Pilot360 Active 2.0"), ], CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), ) From 398eaf5b5549a6ba8ba270402260bcd4faf09848 Mon Sep 17 00:00:00 2001 From: Joshua Mack Date: Tue, 12 Mar 2024 01:35:42 -0400 Subject: [PATCH 189/599] Mazda CX-5 2024 Fingerprint (#30882) 2024 Mazda CX-5 FP Added "aaaa_51443"'s 2024 Mazda CX-5's FPs --- selfdrive/car/mazda/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/mazda/fingerprints.py b/selfdrive/car/mazda/fingerprints.py index 292f407935..8143ad71af 100644 --- a/selfdrive/car/mazda/fingerprints.py +++ b/selfdrive/car/mazda/fingerprints.py @@ -10,6 +10,7 @@ FW_VERSIONS = { ], (Ecu.engine, 0x7e0, None): [ b'PEW5-188K2-A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PW67-188K2-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2G-188K2-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2H-188K2-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2H-188K2-J\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -31,6 +32,7 @@ FW_VERSIONS = { ], (Ecu.transmission, 0x7e1, None): [ b'PG69-21PS1-A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PW66-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PXDL-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PXFG-21PS1-A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PXFG-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', From 639d8dd75598474a0a2246ee399f4ebf24032eb1 Mon Sep 17 00:00:00 2001 From: pg3141 Date: Tue, 12 Mar 2024 07:42:11 +0200 Subject: [PATCH 190/599] Skoda Kodiaq Sportline 2023 fingerprints (#30845) * Update fingerprints.py for new skoda kodiaq * Update fingerprints.py to add 2 more ecu's found in the carFw array that had hyundai as brand * Update fingerprints.py --- selfdrive/car/volkswagen/fingerprints.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 416cbb6ad0..d0b5dc81ab 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -993,6 +993,7 @@ FW_VERSIONS = { b'\xf1\x8704L906026HT\xf1\x893617', b'\xf1\x8705E906018DJ\xf1\x890915', b'\xf1\x8705E906018DJ\xf1\x891903', + b'\xf1\x8705L906022GM\xf1\x893411', b'\xf1\x875NA906259E \xf1\x890003', b'\xf1\x875NA907115E \xf1\x890003', b'\xf1\x875NA907115E \xf1\x890005', @@ -1006,6 +1007,7 @@ FW_VERSIONS = { b'\xf1\x870DL300012N \xf1\x892110', b'\xf1\x870DL300013G \xf1\x892119', b'\xf1\x870GC300014N \xf1\x892801', + b'\xf1\x870GC300018S \xf1\x892803', b'\xf1\x870GC300019H \xf1\x892806', b'\xf1\x870GC300046Q \xf1\x892802', ], @@ -1018,6 +1020,7 @@ FW_VERSIONS = { b'\xf1\x873Q0959655CQ\xf1\x890720\xf1\x82\x0e1213111211001205212112052111', b'\xf1\x873Q0959655DJ\xf1\x890731\xf1\x82\x0e1513001511001205232113052J00', b'\xf1\x875QF959655AT\xf1\x890755\xf1\x82\x1311110011110011111100010200--1121240749', + b'\xf1\x875QF959655AT\xf1\x890755\xf1\x82\x1311110011110011111100010200--1121246149', ], (Ecu.eps, 0x712, None): [ b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820527T6050405', @@ -1025,6 +1028,7 @@ FW_VERSIONS = { b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820527T6070405', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T600G500', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T600G600', + b'\xf1\x875TA907145F \xf1\x891063\xf1\x82\x0025T6BA25OM', b'\xf1\x875TA907145F \xf1\x891063\xf1\x82\x002LT61A2LOM', ], (Ecu.fwdRadar, 0x757, None): [ From b648db6efe03101280465b4410acb2bb9a092f35 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 01:50:16 -0400 Subject: [PATCH 191/599] HKG: Add FW versions for Genesis G70 2023 (#30759) * HKG: Add FW versions for Genesis G70 2021 * bump model year --------- Co-authored-by: Shane Smiskol --- docs/CARS.md | 2 +- selfdrive/car/hyundai/fingerprints.py | 5 +++++ selfdrive/car/hyundai/values.py | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 6ed1ba7e62..13381ec202 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -51,7 +51,7 @@ A supported vehicle is one that just works when you install a comma device. All |Ford|Maverick Hybrid 2022|LARIAT Luxury|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Maverick Hybrid 2023-24|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|G70 2020|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G70 2020-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2017|All|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G90 2017-18|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 6349318fbf..63b66c2684 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -836,10 +836,12 @@ FW_VERSIONS = { b'\xf1\x00IK MDPS R 1.00 1.07 57700-G9420 4I4VL107', b'\xf1\x00IK MDPS R 1.00 1.08 57700-G9200 4I2CL108', b'\xf1\x00IK MDPS R 1.00 1.08 57700-G9420 4I4VL108', + b'\xf1\x00IK MDPS R 1.00 5.09 57700-G9520 4I4VL509', ], (Ecu.transmission, 0x7e1, None): [ b'\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB4\xecE\xefL', b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T20KB3Wuvz', + b'\xf1\x00bcsh8p54 E31\x00\x00\x00\x00\x00\x00\x00SIK0T33NH0\x0f\xa3Y*', b'\xf1\x87VCJLP18407832DN3\x88vXfvUVT\x97eFU\x87d7v\x88eVeveFU\x89\x98\x7f\xff\xb2\xb0\xf1\x81E25\x00\x00\x00', b'\xf1\x87VDJLC18480772DK9\x88eHfwfff\x87eFUeDEU\x98eFe\x86T5DVyo\xff\x87s\xf1\x81E25\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33KB5\x9f\xa5&\x81', b'\xf1\x87VDKLT18912362DN4wfVfwefeveVUwfvw\x88vWfvUFU\x89\xa9\x8f\xff\x87w\xf1\x81E25\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB4\xecE\xefL', @@ -847,16 +849,19 @@ FW_VERSIONS = { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 ', b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 \xf1\xa01.02', + b'\xf1\x00IK__ SCC FHCUP 1.00 1.00 99110-G9300 ', b'\xf1\x00IK__ SCC FHCUP 1.00 1.02 96400-G9000 ', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IK MFC AT KOR LHD 1.00 1.01 95740-G9000 170920', b'\xf1\x00IK MFC AT USA LHD 1.00 1.01 95740-G9000 170920', + b'\xf1\x00IK MFC AT USA LHD 1.00 1.04 99211-G9000 220401', ], (Ecu.engine, 0x7e0, None): [ b'\xf1\x81606G2051\x00\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x81640H0051\x00\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x81640J0051\x00\x00\x00\x00\x00\x00\x00\x00', + b'\xf1\x81640N2051\x00\x00\x00\x00\x00\x00\x00\x00', ], }, CAR.GENESIS_G80: { diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index e79da0f473..79cec1f787 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -569,7 +569,7 @@ class CAR(Platforms): ) GENESIS_G70_2020 = HyundaiPlatformConfig( "GENESIS G70 2020", - HyundaiCarInfo("Genesis G70 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + HyundaiCarInfo("Genesis G70 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), flags=HyundaiFlags.MANDO_RADAR, ) From 4f02bcfbf45697c5e6ba0a032797f6b2f37e16d3 Mon Sep 17 00:00:00 2001 From: Saber <81108166+Saber422@users.noreply.github.com> Date: Tue, 12 Mar 2024 13:54:05 +0800 Subject: [PATCH 192/599] VW MQB: Add FW for 2017 Touran (#30863) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit route name:0bbe367c98fa1538|2023-12-28--15-59-10--0 --- selfdrive/car/volkswagen/fingerprints.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index d0b5dc81ab..c05451b8ed 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -636,14 +636,17 @@ FW_VERSIONS = { }, CAR.TOURAN_MK2: { (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8704E906027HQ\xf1\x893746', b'\xf1\x8704L906026HM\xf1\x893017', b'\xf1\x8705E906018CQ\xf1\x890808', ], (Ecu.transmission, 0x7e1, None): [ b'\xf1\x870CW300041E \xf1\x891005', + b'\xf1\x870CW300041Q \xf1\x891606', b'\xf1\x870CW300051M \xf1\x891926', ], (Ecu.srs, 0x715, None): [ + b'\xf1\x875Q0959655AS\xf1\x890318\xf1\x82\x1336350021353335314132014730479333313100', b'\xf1\x875Q0959655AS\xf1\x890318\xf1\x82\x13363500213533353141324C4732479333313100', b'\xf1\x875Q0959655CH\xf1\x890421\xf1\x82\x1336350021353336314740025250529333613100', ], @@ -653,6 +656,7 @@ FW_VERSIONS = { ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x872Q0907572AA\xf1\x890396', + b'\xf1\x875Q0907572R \xf1\x890771', b'\xf1\x873Q0907572C \xf1\x890195', ], }, From 1e86269ab745a7e12d949f5470c342dff7c1c851 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 11 Mar 2024 23:04:32 -0700 Subject: [PATCH 193/599] Update ref_commit --- selfdrive/test/process_replay/ref_commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 0eedc6257b..91e32036b5 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -fba62008efd13fb578de325f0cdb0a87fe5e28f0 \ No newline at end of file +4f02bcfbf45697c5e6ba0a032797f6b2f37e16d3 From e657afbf340d159e8c52929fa41572bca3848ff9 Mon Sep 17 00:00:00 2001 From: Saber <81108166+Saber422@users.noreply.github.com> Date: Tue, 12 Mar 2024 14:21:45 +0800 Subject: [PATCH 194/599] VW MQB: Add FW for 2017 Kodiaq (#31368) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit route name:0bbe367c98fa1538|2024-02-08--11-02-38--0 --- selfdrive/car/volkswagen/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index c05451b8ed..858f2dff82 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -999,6 +999,7 @@ FW_VERSIONS = { b'\xf1\x8705E906018DJ\xf1\x891903', b'\xf1\x8705L906022GM\xf1\x893411', b'\xf1\x875NA906259E \xf1\x890003', + b'\xf1\x875NA907115D \xf1\x890003', b'\xf1\x875NA907115E \xf1\x890003', b'\xf1\x875NA907115E \xf1\x890005', b'\xf1\x8783A907115E \xf1\x890001', @@ -1007,6 +1008,7 @@ FW_VERSIONS = { b'\xf1\x870D9300014S \xf1\x895201', b'\xf1\x870D9300043 \xf1\x895202', b'\xf1\x870DL300011N \xf1\x892014', + b'\xf1\x870DL300012G \xf1\x892006', b'\xf1\x870DL300012M \xf1\x892107', b'\xf1\x870DL300012N \xf1\x892110', b'\xf1\x870DL300013G \xf1\x892119', @@ -1016,6 +1018,7 @@ FW_VERSIONS = { b'\xf1\x870GC300046Q \xf1\x892802', ], (Ecu.srs, 0x715, None): [ + b'\xf1\x873Q0959655AN\xf1\x890306\xf1\x82\r11110011110011031111310311', b'\xf1\x873Q0959655AP\xf1\x890306\xf1\x82\r11110011110011421111314211', b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1213001211001205212111052100', b'\xf1\x873Q0959655BJ\xf1\x890703\xf1\x82\x0e1213001211001205212111052100', From af177f3d10d03222aab403b625da5d5c315ec9fb Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 11 Mar 2024 23:43:25 -0700 Subject: [PATCH 195/599] [bot] Fingerprints: add missing FW versions from new users (#31839) Export fingerprints --- selfdrive/car/ford/fingerprints.py | 2 +- selfdrive/car/hyundai/fingerprints.py | 8 ++++++++ selfdrive/car/volkswagen/fingerprints.py | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index 8b643f8997..fae529aa00 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -85,8 +85,8 @@ FW_VERSIONS = { b'ML3T-14D049-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x706, None): [ - b'PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'ML3T-14H102-ABR\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, CAR.F_150_LIGHTNING_MK1: { diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 63b66c2684..12303f806a 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -535,25 +535,31 @@ FW_VERSIONS = { CAR.SANTA_FE_HEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TMhe SCC FHCUP 1.00 1.00 99110-CL500 ', + b'\xf1\x00TMhe SCC FHCUP 1.00 1.01 99110-CL500 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102', b'\xf1\x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102', b'\xf1\x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100', b'\xf1\x00TM MDPS R 1.00 1.05 57700-CL000 4TSHP105', + b'\xf1\x00TM MDPS R 1.00 1.06 57700-CL000 4TSHP106', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00TMA MFC AT USA LHD 1.00 1.03 99211-S2500 220414', b'\xf1\x00TMH MFC AT EUR LHD 1.00 1.06 99211-S1500 220727', + b'\xf1\x00TMH MFC AT KOR LHD 1.00 1.06 99211-S1500 220727', b'\xf1\x00TMH MFC AT USA LHD 1.00 1.03 99211-S1500 210224', + b'\xf1\x00TMH MFC AT USA LHD 1.00 1.05 99211-S1500 220126', b'\xf1\x00TMH MFC AT USA LHD 1.00 1.06 99211-S1500 220727', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2H16KA1\xc6\x15Q\x1e', b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2H16SA3\xa3\x1b\xe14', b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2H16UA3I\x94\xac\x8f', b'\xf1\x87959102T250\x00\x00\x00\x00\x00\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E14\x00\x00\x00\x00\x00\x00\x00TTM2H16SA2\x80\xd7l\xb2', ], (Ecu.engine, 0x7e0, None): [ + b'\xf1\x87391312MTA0', b'\xf1\x87391312MTC1', b'\xf1\x87391312MTE0', b'\xf1\x87391312MTL0', @@ -561,6 +567,7 @@ FW_VERSIONS = { }, CAR.SANTA_FE_PHEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00TMhe SCC F-CUP 1.00 1.00 99110-CL500 ', b'\xf1\x00TMhe SCC FHCUP 1.00 1.01 99110-CL500 ', b'\xf1\x8799110CL500\xf1\x00TMhe SCC FHCUP 1.00 1.00 99110-CL500 ', ], @@ -574,6 +581,7 @@ FW_VERSIONS = { b'\xf1\x00TMP MFC AT USA LHD 1.00 1.06 99211-S1500 220727', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA0o\x88^\xbe', b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA1\x0b\xc5\x0f\xea', b'\xf1\x8795441-3D121\x00\xf1\x81E16\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA0o\x88^\xbe', b'\xf1\x8795441-3D121\x00\xf1\x81E16\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA1\x0b\xc5\x0f\xea', diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 858f2dff82..c530288027 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -656,8 +656,8 @@ FW_VERSIONS = { ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x872Q0907572AA\xf1\x890396', - b'\xf1\x875Q0907572R \xf1\x890771', b'\xf1\x873Q0907572C \xf1\x890195', + b'\xf1\x875Q0907572R \xf1\x890771', ], }, CAR.TRANSPORTER_T61: { From de7f14dbd7f0f127f5903f10ed610da829eb67e6 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 12 Mar 2024 11:50:26 -0700 Subject: [PATCH 196/599] Fingerprints migration dictionary (#31838) move migration to op! --- selfdrive/car/fingerprints.py | 74 ++++++++++++++++++++++ selfdrive/debug/test_fw_query_on_routes.py | 6 +- 2 files changed, 75 insertions(+), 5 deletions(-) diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index 6a7c3c75be..eaf9002dcd 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -1,4 +1,8 @@ from openpilot.selfdrive.car.interfaces import get_interface_attr +from openpilot.selfdrive.car.honda.values import CAR as HONDA +from openpilot.selfdrive.car.hyundai.values import CAR as HYUNDAI +from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA +from openpilot.selfdrive.car.volkswagen.values import CAR as VW FW_VERSIONS = get_interface_attr('FW_VERSIONS', combine_brands=True, ignore_none=True) _FINGERPRINTS = get_interface_attr('FINGERPRINTS', combine_brands=True, ignore_none=True) @@ -44,3 +48,73 @@ def all_known_cars(): def all_legacy_fingerprint_cars(): """Returns a list of all known car strings, FPv1 only.""" return list(_FINGERPRINTS.keys()) + + +# A dict that maps old platform strings to their latest representations +MIGRATION = { + "ACURA ILX 2016 ACURAWATCH PLUS": HONDA.ACURA_ILX, + "ACURA RDX 2018 ACURAWATCH PLUS": HONDA.ACURA_RDX, + "ACURA RDX 2020 TECH": HONDA.ACURA_RDX_3G, + "AUDI A3": VW.AUDI_A3_MK3, + "HONDA ACCORD 2018 HYBRID TOURING": HONDA.ACCORD, + "HONDA ACCORD 1.5T 2018": HONDA.ACCORD, + "HONDA ACCORD 2018 LX 1.5T": HONDA.ACCORD, + "HONDA ACCORD 2018 SPORT 2T": HONDA.ACCORD, + "HONDA ACCORD 2T 2018": HONDA.ACCORD, + "HONDA ACCORD HYBRID 2018": HONDA.ACCORD, + "HONDA CIVIC 2016 TOURING": HONDA.CIVIC, + "HONDA CIVIC HATCHBACK 2017 SEDAN/COUPE 2019": HONDA.CIVIC_BOSCH, + "HONDA CIVIC SEDAN 1.6 DIESEL": HONDA.CIVIC_BOSCH_DIESEL, + "HONDA CR-V 2016 EXECUTIVE": HONDA.CRV_EU, + "HONDA CR-V 2016 TOURING": HONDA.CRV, + "HONDA CR-V 2017 EX": HONDA.CRV_5G, + "HONDA CR-V 2019 HYBRID": HONDA.CRV_HYBRID, + "HONDA FIT 2018 EX": HONDA.FIT, + "HONDA HRV 2019 TOURING": HONDA.HRV, + "HONDA INSIGHT 2019 TOURING": HONDA.INSIGHT, + "HONDA ODYSSEY 2018 EX-L": HONDA.ODYSSEY, + "HONDA ODYSSEY 2019 EXCLUSIVE CHN": HONDA.ODYSSEY_CHN, + "HONDA PILOT 2017 TOURING": HONDA.PILOT, + "HONDA PILOT 2019 ELITE": HONDA.PILOT, + "HONDA PILOT 2019": HONDA.PILOT, + "HONDA PASSPORT 2021": HONDA.PILOT, + "HONDA RIDGELINE 2017 BLACK EDITION": HONDA.RIDGELINE, + "HYUNDAI ELANTRA LIMITED ULTIMATE 2017": HYUNDAI.ELANTRA, + "HYUNDAI SANTA FE LIMITED 2019": HYUNDAI.SANTA_FE, + "HYUNDAI TUCSON DIESEL 2019": HYUNDAI.TUCSON, + "KIA OPTIMA 2016": HYUNDAI.KIA_OPTIMA_G4, + "KIA OPTIMA 2019": HYUNDAI.KIA_OPTIMA_G4_FL, + "KIA OPTIMA SX 2019 & 2016": HYUNDAI.KIA_OPTIMA_G4_FL, + "LEXUS CT 200H 2018": TOYOTA.LEXUS_CTH, + "LEXUS ES 300H 2018": TOYOTA.LEXUS_ES, + "LEXUS ES 300H 2019": TOYOTA.LEXUS_ES_TSS2, + "LEXUS IS300 2018": TOYOTA.LEXUS_IS, + "LEXUS NX300 2018": TOYOTA.LEXUS_NX, + "LEXUS NX300H 2018": TOYOTA.LEXUS_NX, + "LEXUS RX 350 2016": TOYOTA.LEXUS_RX, + "LEXUS RX350 2020": TOYOTA.LEXUS_RX_TSS2, + "LEXUS RX450 HYBRID 2020": TOYOTA.LEXUS_RX_TSS2, + "TOYOTA SIENNA XLE 2018": TOYOTA.SIENNA, + "TOYOTA C-HR HYBRID 2018": TOYOTA.CHR, + "TOYOTA COROLLA HYBRID TSS2 2019": TOYOTA.COROLLA_TSS2, + "TOYOTA RAV4 HYBRID 2019": TOYOTA.RAV4_TSS2, + "LEXUS ES HYBRID 2019": TOYOTA.LEXUS_ES_TSS2, + "LEXUS NX HYBRID 2018": TOYOTA.LEXUS_NX, + "LEXUS NX HYBRID 2020": TOYOTA.LEXUS_NX_TSS2, + "LEXUS RX HYBRID 2020": TOYOTA.LEXUS_RX_TSS2, + "TOYOTA ALPHARD HYBRID 2021": TOYOTA.ALPHARD_TSS2, + "TOYOTA AVALON HYBRID 2019": TOYOTA.AVALON_2019, + "TOYOTA AVALON HYBRID 2022": TOYOTA.AVALON_TSS2, + "TOYOTA CAMRY HYBRID 2018": TOYOTA.CAMRY, + "TOYOTA CAMRY HYBRID 2021": TOYOTA.CAMRY_TSS2, + "TOYOTA C-HR HYBRID 2022": TOYOTA.CHR_TSS2, + "TOYOTA HIGHLANDER HYBRID 2020": TOYOTA.HIGHLANDER_TSS2, + "TOYOTA RAV4 HYBRID 2022": TOYOTA.RAV4_TSS2_2022, + "TOYOTA RAV4 HYBRID 2023": TOYOTA.RAV4_TSS2_2023, + "TOYOTA HIGHLANDER HYBRID 2018": TOYOTA.HIGHLANDER, + "LEXUS ES HYBRID 2018": TOYOTA.LEXUS_ES, + "LEXUS RX HYBRID 2017": TOYOTA.LEXUS_RX, + "HYUNDAI TUCSON HYBRID 4TH GEN": HYUNDAI.TUCSON_4TH_GEN, + "KIA SPORTAGE HYBRID 5TH GEN": HYUNDAI.KIA_SPORTAGE_5TH_GEN, + "KIA SORENTO PLUG-IN HYBRID 4TH GEN": HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, +} diff --git a/selfdrive/debug/test_fw_query_on_routes.py b/selfdrive/debug/test_fw_query_on_routes.py index cc6fc2ae17..3c5733520e 100755 --- a/selfdrive/debug/test_fw_query_on_routes.py +++ b/selfdrive/debug/test_fw_query_on_routes.py @@ -9,6 +9,7 @@ from tqdm import tqdm from openpilot.tools.lib.logreader import LogReader, ReadMode from openpilot.tools.lib.route import SegmentRange from openpilot.selfdrive.car.car_helpers import interface_names +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.selfdrive.car.fw_versions import VERSIONS, match_fw_to_car @@ -17,11 +18,6 @@ SUPPORTED_BRANDS = VERSIONS.keys() SUPPORTED_CARS = [brand for brand in SUPPORTED_BRANDS for brand in interface_names[brand]] UNKNOWN_BRAND = "unknown" -try: - from xx.pipeline.lib.fingerprint import MIGRATION -except ImportError: - MIGRATION = {} - if __name__ == "__main__": parser = argparse.ArgumentParser(description='Run FW fingerprint on Qlog of route or list of routes') parser.add_argument('route', help='Route or file with list of routes') From c155749b29cacdd86d2fad90506dc2e276f99e04 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 12 Mar 2024 14:27:12 -0700 Subject: [PATCH 197/599] Reapply "ui: brighten cameraview (#29744)" (#31846) This reverts commit 023792c431828baa67e63012db55db77f9e8e02b. --- selfdrive/ui/qt/widgets/cameraview.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/ui/qt/widgets/cameraview.cc b/selfdrive/ui/qt/widgets/cameraview.cc index 7b1f2f1d24..7818da8669 100644 --- a/selfdrive/ui/qt/widgets/cameraview.cc +++ b/selfdrive/ui/qt/widgets/cameraview.cc @@ -41,6 +41,8 @@ const char frame_fragment_shader[] = "out vec4 colorOut;\n" "void main() {\n" " colorOut = texture(uTexture, vTexCoord);\n" + // gamma to improve worst case visibility when dark + " colorOut.rgb = pow(colorOut.rgb, vec3(1.0/1.28));\n" "}\n"; #else #ifdef __APPLE__ From 4c76d1b9a0d790d2fcea36707adba0d3ba49a496 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 12 Mar 2024 18:03:14 -0400 Subject: [PATCH 198/599] Chrysler: Parse distance button from steering wheel (#31764) --- selfdrive/car/chrysler/carstate.py | 6 ++++++ selfdrive/car/chrysler/interface.py | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/chrysler/carstate.py b/selfdrive/car/chrysler/carstate.py index eb1cf7e7d5..91b922c596 100644 --- a/selfdrive/car/chrysler/carstate.py +++ b/selfdrive/car/chrysler/carstate.py @@ -21,10 +21,16 @@ class CarState(CarStateBase): else: self.shifter_values = can_define.dv["GEAR"]["PRNDL"] + self.prev_distance_button = 0 + self.distance_button = 0 + def update(self, cp, cp_cam): ret = car.CarState.new_message() + self.prev_distance_button = self.distance_button + self.distance_button = cp.vl["CRUISE_BUTTONS"]["ACC_Distance_Dec"] + # lock info ret.doorOpen = any([cp.vl["BCM_1"]["DOOR_OPEN_FL"], cp.vl["BCM_1"]["DOOR_OPEN_FR"], diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index eb40bc6f6e..198bf63b10 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -1,10 +1,12 @@ #!/usr/bin/env python3 from cereal import car from panda import Panda -from openpilot.selfdrive.car import get_safety_config +from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.chrysler.values import CAR, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags from openpilot.selfdrive.car.interfaces import CarInterfaceBase +ButtonType = car.CarState.ButtonEvent.Type + class CarInterface(CarInterfaceBase): @staticmethod @@ -76,6 +78,8 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) + ret.buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) + # events events = self.create_common_events(ret, extra_gears=[car.CarState.GearShifter.low]) From 30ce6af49057a4e416c9924ad1283e9ae09e7df6 Mon Sep 17 00:00:00 2001 From: YassineYousfi Date: Tue, 12 Mar 2024 15:29:49 -0700 Subject: [PATCH 199/599] camera: add all_cams iterator, allow None camera, add camera size property (#31835) * camera: add neo_config for easy access * camera: add all_cams iterator and cam size * can be none * use FakeCameraConfig * rename to None --- common/transformations/camera.py | 36 +++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/common/transformations/camera.py b/common/transformations/camera.py index 1a7b9c3f80..dc3ca5f388 100644 --- a/common/transformations/camera.py +++ b/common/transformations/camera.py @@ -11,6 +11,10 @@ class CameraConfig: height: int focal_length: float + @property + def size(self): + return (self.width, self.height) + @property def intrinsics(self): # aka 'K' aka camera_frame_from_view_frame @@ -25,33 +29,45 @@ class CameraConfig: # aka 'K_inv' aka view_frame_from_camera_frame return np.linalg.inv(self.intrinsics) +@dataclass(frozen=True) +class _NoneCameraConfig(CameraConfig): + width: int = 0 + height: int = 0 + focal_length: float = 0 + @dataclass(frozen=True) class DeviceCameraConfig: fcam: CameraConfig dcam: CameraConfig ecam: CameraConfig -ar_ox_fisheye = CameraConfig(1928, 1208, 567.0) # focal length probably wrong? magnification is not consistent across frame -ar_ox_config = DeviceCameraConfig(CameraConfig(1928, 1208, 2648.0), ar_ox_fisheye, ar_ox_fisheye) -os_fisheye = CameraConfig(2688, 1520, 567.0 / 2 * 3) -os_config = DeviceCameraConfig(CameraConfig(2688, 1520, 2648.0 * 2 / 3), os_fisheye, os_fisheye) + def all_cams(self): + for cam in ['fcam', 'dcam', 'ecam']: + if not isinstance(getattr(self, cam), _NoneCameraConfig): + yield cam, getattr(self, cam) + +_ar_ox_fisheye = CameraConfig(1928, 1208, 567.0) # focal length probably wrong? magnification is not consistent across frame +_os_fisheye = CameraConfig(2688, 1520, 567.0 / 2 * 3) +_ar_ox_config = DeviceCameraConfig(CameraConfig(1928, 1208, 2648.0), _ar_ox_fisheye, _ar_ox_fisheye) +_os_config = DeviceCameraConfig(CameraConfig(2688, 1520, 2648.0 * 2 / 3), _os_fisheye, _os_fisheye) +_neo_config = DeviceCameraConfig(CameraConfig(1164, 874, 910.0), CameraConfig(816, 612, 650.0), _NoneCameraConfig()) DEVICE_CAMERAS = { # A "device camera" is defined by a device type and sensor # sensor type was never set on eon/neo/two - ("neo", "unknown"): DeviceCameraConfig(CameraConfig(1164, 874, 910.0), CameraConfig(816, 612, 650.0), CameraConfig(0, 0, 0.)), + ("neo", "unknown"): _neo_config, # unknown here is AR0231, field was added with OX03C10 support - ("tici", "unknown"): ar_ox_config, + ("tici", "unknown"): _ar_ox_config, # before deviceState.deviceType was set, assume tici AR config - ("unknown", "ar0231"): ar_ox_config, - ("unknown", "ox03c10"): ar_ox_config, + ("unknown", "ar0231"): _ar_ox_config, + ("unknown", "ox03c10"): _ar_ox_config, # simulator (emulates a tici) - ("pc", "unknown"): ar_ox_config, + ("pc", "unknown"): _ar_ox_config, } -prods = itertools.product(('tici', 'tizi', 'mici'), (('ar0231', ar_ox_config), ('ox03c10', ar_ox_config), ('os04c10', os_config))) +prods = itertools.product(('tici', 'tizi', 'mici'), (('ar0231', _ar_ox_config), ('ox03c10', _ar_ox_config), ('os04c10', _os_config))) DEVICE_CAMERAS.update({(d, c[0]): c[1] for d, c in prods}) # device/mesh : x->forward, y-> right, z->down From 147ccc7a582518e565755262e36799b540b5ddf7 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 12 Mar 2024 17:13:13 -0700 Subject: [PATCH 200/599] move pigeond to system/ubloxd/ (#31848) * move pigeond to system/ubloxd/ * update release * more * mv test --- Jenkinsfile | 2 +- release/files_common | 2 +- selfdrive/manager/process_config.py | 2 +- selfdrive/test/test_onroad.py | 2 +- system/{sensord => ubloxd}/pigeond.py | 0 system/{sensord => ubloxd}/tests/test_pigeond.py | 0 6 files changed, 4 insertions(+), 4 deletions(-) rename system/{sensord => ubloxd}/pigeond.py (100%) rename system/{sensord => ubloxd}/tests/test_pigeond.py (100%) diff --git a/Jenkinsfile b/Jenkinsfile index d716510bfe..4afb3964f7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -194,7 +194,7 @@ node { ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], ["test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"], ["test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py"], - ["test pigeond", "pytest system/sensord/tests/test_pigeond.py"], + ["test pigeond", "pytest system/ubloxd/tests/test_pigeond.py"], ["test manager", "pytest selfdrive/manager/test/test_manager.py"], ]) }, diff --git a/release/files_common b/release/files_common index e483620052..94af70eff2 100644 --- a/release/files_common +++ b/release/files_common @@ -182,6 +182,7 @@ system/hardware/pc/hardware.py system/ubloxd/.gitignore system/ubloxd/SConscript +system/ubloxd/pigeond.py system/ubloxd/generated/* system/ubloxd/*.h system/ubloxd/*.cc @@ -241,7 +242,6 @@ system/sensord/SConscript system/sensord/sensors_qcom2.cc system/sensord/sensors/*.cc system/sensord/sensors/*.h -system/sensord/pigeond.py system/webrtc/__init__.py system/webrtc/webrtcd.py diff --git a/selfdrive/manager/process_config.py b/selfdrive/manager/process_config.py index 4f292917fd..5c8dffb2be 100644 --- a/selfdrive/manager/process_config.py +++ b/selfdrive/manager/process_config.py @@ -73,7 +73,7 @@ procs = [ PythonProcess("pandad", "selfdrive.boardd.pandad", always_run), PythonProcess("paramsd", "selfdrive.locationd.paramsd", only_onroad), NativeProcess("ubloxd", "system/ubloxd", ["./ubloxd"], ublox, enabled=TICI), - PythonProcess("pigeond", "system.sensord.pigeond", ublox, enabled=TICI), + PythonProcess("pigeond", "system.ubloxd.pigeond", ublox, enabled=TICI), PythonProcess("plannerd", "selfdrive.controls.plannerd", only_onroad), PythonProcess("radard", "selfdrive.controls.radard", only_onroad), PythonProcess("thermald", "selfdrive.thermald.thermald", always_run), diff --git a/selfdrive/test/test_onroad.py b/selfdrive/test/test_onroad.py index 4be9b8a430..250534bf86 100755 --- a/selfdrive/test/test_onroad.py +++ b/selfdrive/test/test_onroad.py @@ -65,7 +65,7 @@ PROCS.update({ "tici": { "./boardd": 4.0, "./ubloxd": 0.02, - "system.sensord.pigeond": 6.0, + "system.ubloxd.pigeond": 6.0, }, "tizi": { "./boardd": 19.0, diff --git a/system/sensord/pigeond.py b/system/ubloxd/pigeond.py similarity index 100% rename from system/sensord/pigeond.py rename to system/ubloxd/pigeond.py diff --git a/system/sensord/tests/test_pigeond.py b/system/ubloxd/tests/test_pigeond.py similarity index 100% rename from system/sensord/tests/test_pigeond.py rename to system/ubloxd/tests/test_pigeond.py From a8192920737216fe07bd2f273efdee67669b8483 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 12 Mar 2024 23:04:17 -0400 Subject: [PATCH 201/599] logreader: fix auto source + interactive modes (#31847) * interactive modes * these exceptions don't matter --- tools/lib/logreader.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py index 7a1e972e19..669c1520db 100755 --- a/tools/lib/logreader.py +++ b/tools/lib/logreader.py @@ -89,7 +89,7 @@ def default_valid_file(fn: LogPath) -> bool: def auto_strategy(rlog_paths: LogPaths, qlog_paths: LogPaths, interactive: bool, valid_file: ValidFileCallable) -> LogPaths: # auto select logs based on availability - if any(rlog is None or not valid_file(rlog) for rlog in rlog_paths): + if any(rlog is None or not valid_file(rlog) for rlog in rlog_paths) and all(qlog is not None and valid_file(qlog) for qlog in qlog_paths): if interactive: if input("Some rlogs were not found, would you like to fallback to qlogs for those segments? (y/n) ").lower() != "y": return rlog_paths @@ -172,6 +172,15 @@ def auto_source(sr: SegmentRange, mode=ReadMode.RLOG) -> LogPaths: SOURCES: list[Source] = [internal_source, openpilotci_source, comma_api_source, comma_car_segments_source,] exceptions = [] + + # for automatic fallback modes, auto_source needs to first check if rlogs exist for any source + if mode in [ReadMode.AUTO, ReadMode.AUTO_INTERACTIVE]: + for source in SOURCES: + try: + return check_source(source, sr, ReadMode.RLOG) + except Exception: + pass + # Automatically determine viable source for source in SOURCES: try: From 4af932b74b95c99abc9d49c31dc0a023702a77d0 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 12 Mar 2024 22:33:45 -0700 Subject: [PATCH 202/599] unicore gps (#31852) * ugpsd * oops * cleanup * disable * more docs --------- Co-authored-by: Comma Device --- selfdrive/manager/process_config.py | 1 + system/qcomgpsd/cgpsd.py | 122 -------------------- system/ugpsd.py | 165 ++++++++++++++++++++++++++++ 3 files changed, 166 insertions(+), 122 deletions(-) delete mode 100755 system/qcomgpsd/cgpsd.py create mode 100755 system/ugpsd.py diff --git a/selfdrive/manager/process_config.py b/selfdrive/manager/process_config.py index 5c8dffb2be..8b616b7874 100644 --- a/selfdrive/manager/process_config.py +++ b/selfdrive/manager/process_config.py @@ -69,6 +69,7 @@ procs = [ PythonProcess("deleter", "system.loggerd.deleter", always_run), PythonProcess("dmonitoringd", "selfdrive.monitoring.dmonitoringd", driverview, enabled=(not PC or WEBCAM)), PythonProcess("qcomgpsd", "system.qcomgpsd.qcomgpsd", qcomgps, enabled=TICI), + #PythonProcess("ugpsd", "system.ugpsd", only_onroad, enabled=TICI), PythonProcess("navd", "selfdrive.navd.navd", only_onroad), PythonProcess("pandad", "selfdrive.boardd.pandad", always_run), PythonProcess("paramsd", "selfdrive.locationd.paramsd", only_onroad), diff --git a/system/qcomgpsd/cgpsd.py b/system/qcomgpsd/cgpsd.py deleted file mode 100755 index 54d3c623f3..0000000000 --- a/system/qcomgpsd/cgpsd.py +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env python3 -import time -import datetime -from collections import defaultdict - -from cereal import log -import cereal.messaging as messaging -from openpilot.common.swaglog import cloudlog -from openpilot.system.qcomgpsd.qcomgpsd import at_cmd, wait_for_modem - -# https://campar.in.tum.de/twiki/pub/Chair/NaviGpsDemon/nmea.html#RMC -""" -AT+CGPSGPOS=1 -response: '$GNGGA,220212.00,3245.09188,N,11711.76362,W,1,06,24.54,0.0,M,,M,,*77' - -AT+CGPSGPOS=2 -response: '$GNGSA,A,3,06,17,19,22,,,,,,,,,14.11,8.95,10.91,1*01 -$GNGSA,A,3,29,26,,,,,,,,,,,14.11,8.95,10.91,4*03' - -AT+CGPSGPOS=3 -response: '$GPGSV,3,1,11,06,55,047,22,19,29,053,20,22,19,115,14,05,01,177,,0*68 -$GPGSV,3,2,11,11,77,156,23,12,47,322,17,17,08,066,10,20,25,151,,0*6D -$GPGSV,3,3,11,24,44,232,,25,16,312,,29,02,260,,0*5D' - -AT+CGPSGPOS=4 -response: '$GBGSV,1,1,03,26,75,242,20,29,19,049,16,35,,,24,0*7D' - -AT+CGPSGPOS=5 -response: '$GNRMC,220216.00,A,3245.09531,N,11711.76043,W,,,070324,,,A,V*20' -""" - - -def sfloat(n: str): - return float(n) if len(n) > 0 else 0 - -def checksum(s: str): - ret = 0 - for c in s[1:-3]: - ret ^= ord(c) - return format(ret, '02X') - -def main(): - wait_for_modem("AT+CGPS?") - - cmds = [ - "AT+GPSPORT=1", - "AT+CGPS=1", - ] - for c in cmds: - at_cmd(c) - - nmea = defaultdict(list) - pm = messaging.PubMaster(['gpsLocation']) - while True: - time.sleep(1) - try: - # TODO: read from streaming AT port instead of polling - out = at_cmd("AT+CGPS?") - - if '+CGPS: 1' not in out: - for c in cmds: - at_cmd(c) - - sentences = out.split("'")[1].splitlines() - new = {l.split(',')[0]: l.split(',') for l in sentences if l.startswith('$G')} - nmea.update(new) - if '$GNRMC' not in new: - print(f"no GNRMC:\n{out}\n") - continue - - # validate checksums - for s in nmea.values(): - sent = ','.join(s) - if checksum(sent) != s[-1].split('*')[1]: - cloudlog.error(f"invalid checksum: {repr(sent)}") - continue - - gnrmc = nmea['$GNRMC'] - #print(gnrmc) - - msg = messaging.new_message('gpsLocation', valid=True) - gps = msg.gpsLocation - gps.latitude = (sfloat(gnrmc[3][:2]) + (sfloat(gnrmc[3][2:]) / 60)) * (1 if gnrmc[4] == "N" else -2) - gps.longitude = (sfloat(gnrmc[5][:3]) + (sfloat(gnrmc[5][3:]) / 60)) * (1 if gnrmc[6] == "E" else -1) - - date = gnrmc[9][:6] - dt = datetime.datetime.strptime(f"{date} {gnrmc[1]}", '%d%m%y %H%M%S.%f') - gps.unixTimestampMillis = dt.timestamp()*1e3 - - gps.hasFix = gnrmc[1] == 'A' - - gps.source = log.GpsLocationData.SensorSource.unicore - - gps.speed = sfloat(gnrmc[7]) - gps.bearingDeg = sfloat(gnrmc[8]) - - if len(nmea['$GNGGA']): - gngga = nmea['$GNGGA'] - if gngga[10] == 'M': - gps.altitude = sfloat(gngga[9]) - - if len(nmea['$GNGSA']): - # TODO: this is only for GPS sats - gngsa = nmea['$GNGSA'] - gps.horizontalAccuracy = sfloat(gngsa[4]) - gps.verticalAccuracy = sfloat(gngsa[5]) - - # TODO: set these from the module - gps.bearingAccuracyDeg = 5. - gps.speedAccuracy = 3. - - # TODO: can we get this from the NMEA sentences? - #gps.vNED = vNED - - pm.send('gpsLocation', msg) - - except Exception: - cloudlog.exception("gps.issue") - - -if __name__ == "__main__": - main() diff --git a/system/ugpsd.py b/system/ugpsd.py new file mode 100755 index 0000000000..34b20b01c8 --- /dev/null +++ b/system/ugpsd.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +import os +import time +import traceback +import serial +import datetime +import numpy as np +from collections import defaultdict + +from cereal import log +import cereal.messaging as messaging +from openpilot.common.retry import retry +from openpilot.common.swaglog import cloudlog +from openpilot.system.qcomgpsd.qcomgpsd import at_cmd, wait_for_modem + + +def sfloat(n: str): + return float(n) if len(n) > 0 else 0 + +def checksum(s: str): + ret = 0 + for c in s[1:-3]: + ret ^= ord(c) + return format(ret, '02X') + +class Unicore: + def __init__(self): + self.s = serial.Serial('/dev/ttyHS0', 115200) + self.s.timeout = 1 + self.s.writeTimeout = 1 + self.s.newline = b'\r\n' + + self.s.flush() + self.s.reset_input_buffer() + self.s.reset_output_buffer() + self.s.read(2048) + + def send(self, cmd): + self.s.write(cmd.encode('utf8') + b'\r') + resp = self.s.read(2048) + print(len(resp), cmd, "\n", resp) + assert b"OK" in resp + + def recv(self): + return self.s.readline() + +def build_msg(state): + """ + NMEA sentences: + https://campar.in.tum.de/twiki/pub/Chair/NaviGpsDemon/nmea.html#RMC + NAV messages: + https://www.unicorecomm.com/assets/upload/file/UFirebird_Standard_Positioning_Products_Protocol_Specification_CH.pdf + """ + + msg = messaging.new_message('gpsLocation', valid=True) + gps = msg.gpsLocation + + gnrmc = state['$GNRMC'] + gps.hasFix = gnrmc[1] == 'A' + gps.source = log.GpsLocationData.SensorSource.unicore + gps.latitude = (sfloat(gnrmc[3][:2]) + (sfloat(gnrmc[3][2:]) / 60)) * (1 if gnrmc[4] == "N" else -1) + gps.longitude = (sfloat(gnrmc[5][:3]) + (sfloat(gnrmc[5][3:]) / 60)) * (1 if gnrmc[6] == "E" else -1) + + try: + date = gnrmc[9][:6] + dt = datetime.datetime.strptime(f"{date} {gnrmc[1]}", '%d%m%y %H%M%S.%f') + gps.unixTimestampMillis = dt.timestamp()*1e3 + except Exception: + pass + + gps.bearingDeg = sfloat(gnrmc[8]) + + if len(state['$GNGGA']): + gngga = state['$GNGGA'] + if gngga[10] == 'M': + gps.altitude = sfloat(gngga[9]) + + if len(state['$GNGSA']): + gngsa = state['$GNGSA'] + gps.horizontalAccuracy = sfloat(gngsa[4]) + gps.verticalAccuracy = sfloat(gngsa[5]) + + #if len(state['$NAVACC']): + # # $NAVVEL,264415000,5,3,0.375,0.141,-0.735,-65.450*2A + # navacc = state['$NAVACC'] + # gps.horizontalAccuracy = sfloat(navacc[3]) + # gps.speedAccuracy = sfloat(navacc[4]) + # gps.bearingAccuracyDeg = sfloat(navacc[5]) + + if len(state['$NAVVEL']): + # $NAVVEL,264415000,5,3,0.375,0.141,-0.735,-65.450*2A + navvel = state['$NAVVEL'] + vECEF = [ + sfloat(navvel[4]), + sfloat(navvel[5]), + sfloat(navvel[6]), + ] + + lat = np.radians(gps.latitude) + lon = np.radians(gps.longitude) + R = np.array([ + [-np.sin(lat) * np.cos(lon), -np.sin(lon), -np.cos(lat) * np.cos(lon)], + [-np.sin(lat) * np.sin(lon), np.cos(lon), -np.cos(lat) * np.sin(lon)], + [np.cos(lat), 0, -np.sin(lat)] + ]) + + vNED = [float(x) for x in R.dot(vECEF)] + gps.vNED = vNED + gps.speed = np.linalg.norm(vNED) + + # TODO: set these from the module + gps.bearingAccuracyDeg = 5. + gps.speedAccuracy = 3. + + return msg + + +@retry(attempts=10, delay=0.1) +def setup(u): + at_cmd('AT+CGPS=0') + at_cmd('AT+CGPS=1') + time.sleep(1.0) + + # setup NAVXXX outputs + for i in range(4): + u.send(f"$CFGMSG,1,{i},1") + for i in (1, 3): + u.send(f"$CFGMSG,3,{i},1") + + # 10Hz NAV outputs + u.send("$CFGNAV,100,100,1000") + + +def main(): + wait_for_modem("AT+CGPS?") + + u = Unicore() + setup(u) + + state = defaultdict(list) + pm = messaging.PubMaster(['gpsLocation']) + while True: + try: + msg = u.recv().decode('utf8').strip() + if "DEBUG" in os.environ: + print(repr(msg)) + + if len(msg) > 0: + if checksum(msg) != msg.split('*')[1]: + cloudlog.error(f"invalid checksum: {repr(msg)}") + continue + + k = msg.split(',')[0] + state[k] = msg.split(',') + if '$GNRMC' not in msg: + continue + + pm.send('gpsLocation', build_msg(state)) + except Exception: + traceback.print_exc() + cloudlog.exception("gps.issue") + + +if __name__ == "__main__": + main() From e34432160a8f583c757d867a4d09bf213b5da71d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 12 Mar 2024 23:42:34 -0700 Subject: [PATCH 203/599] Honda Bosch Radarless: check nonAdaptive at all times (#31853) * doesn't work * Revert "doesn't work" This reverts commit 7a3587b60b65ed0525a9d658e676465ca8ecbef9. * always add to can parser * not sure if this is clean * minimal diff version, but more lines! --- selfdrive/car/honda/carstate.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index 7784581e1c..d429da33fb 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -204,6 +204,10 @@ class CarState(CarStateBase): ret.steeringPressed = abs(ret.steeringTorque) > STEER_THRESHOLD.get(self.CP.carFingerprint, 1200) if self.CP.carFingerprint in HONDA_BOSCH: + # The PCM always manages its own cruise control state, but doesn't publish it + if self.CP.carFingerprint in HONDA_BOSCH_RADARLESS: + ret.cruiseState.nonAdaptive = cp_cam.vl["ACC_HUD"]["CRUISE_CONTROL_LABEL"] != 0 + if not self.CP.openpilotLongitudinalControl: # ACC_HUD is on camera bus on radarless cars acc_hud = cp_cam.vl["ACC_HUD"] if self.CP.carFingerprint in HONDA_BOSCH_RADARLESS else cp.vl["ACC_HUD"] @@ -276,9 +280,10 @@ class CarState(CarStateBase): ] if CP.carFingerprint in HONDA_BOSCH_RADARLESS: - messages.append(("LKAS_HUD", 10)) - if not CP.openpilotLongitudinalControl: - messages.append(("ACC_HUD", 10)) + messages += [ + ("ACC_HUD", 10), + ("LKAS_HUD", 10), + ] elif CP.carFingerprint not in HONDA_BOSCH: messages += [ From 29e55f99a54d95215aa79ecf94a22363f82913a6 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 13 Mar 2024 00:57:57 -0700 Subject: [PATCH 204/599] Move personality to controlsState (#31855) * start at param * start by sending personality * change to personality * POC: button changes personality * what's wrong with this? * fix * not really possible but fuzzy test catches this * there's always a typo * dang, we're dropping messages * clean up * no comment * bump * rename * not all cars yet * works but at what cost * clean up * inside settings * write param so we save the distance button changes * setChecked activates buttonToggled and already writes param! * don't need this, we update from longitudinalPlan on changes * some clean up * more * ui * allow some time for ui to receive and write param * plannerd: only track changes in case no ui * Revert "plannerd: only track changes in case no ui" This reverts commit 2b081aa6ceb92c67a621b74592b2292756d29871. * write in plannerd as well, I assume this is atomic? * don't write when setting checked (only user clicks) * better nane * more * Update selfdrive/controls/lib/longitudinal_planner.py Co-authored-by: Cameron Clough * doesn't write param now * ParamWatcher is nice * no debug * Update translations * fix * odd drain sock proc replay behavior * vanish * Revert "odd drain sock proc replay behavior" This reverts commit 29b70b39413e1852bb512155af6b6a94a5bd9454. * add GM * only if OP long * move personality to controlsState, since eventually it won't be exclusive to long planner more bump * diff without translations * fix * put nonblocking * CS should start at up to date personality always (no ui flicker) * update toggle on cereal message change * fix * fix that * ubmp * mypy doesn't know this is an int :( * update translations * fix the tests * revert ui * not here * migrate controlsState * Revert "migrate controlsState" - i see no reason we need to test with any specific personality This reverts commit 6063508f2df1a5623f113cda34dcd59a1f4b2ac9. * Update ref_commit --------- Co-authored-by: Cameron Clough --- cereal | 2 +- selfdrive/controls/controlsd.py | 11 +++++++++- .../controls/lib/longitudinal_planner.py | 20 ++----------------- selfdrive/controls/tests/test_cruise_speed.py | 8 +++----- .../controls/tests/test_following_distance.py | 8 +++----- .../test/longitudinal_maneuvers/maneuver.py | 2 ++ .../test/longitudinal_maneuvers/plant.py | 4 +++- selfdrive/test/process_replay/ref_commit | 2 +- 8 files changed, 25 insertions(+), 32 deletions(-) diff --git a/cereal b/cereal index 724d1d22ac..430535068a 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 724d1d22ac877ff75058f0d62860cf51c27f3546 +Subproject commit 430535068ac3bb94d3e117a3cfbc348ef37eb72d diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 29358cb7b6..33336676f2 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -146,6 +146,7 @@ class Controls: self.steer_limited = False self.desired_curvature = 0.0 self.experimental_mode = False + self.personality = self.read_personality_param() self.v_cruise_helper = VCruiseHelper(self.CP) self.recalibrating_seen = False @@ -680,7 +681,7 @@ class Controls: hudControl.speedVisible = self.enabled hudControl.lanesVisible = self.enabled hudControl.leadVisible = self.sm['longitudinalPlan'].hasLead - hudControl.leadDistanceBars = self.sm['longitudinalPlan'].personality.raw + 1 + hudControl.leadDistanceBars = self.personality + 1 hudControl.rightLaneVisible = True hudControl.leftLaneVisible = True @@ -769,6 +770,7 @@ class Controls: controlsState.forceDecel = bool(force_decel) controlsState.canErrorCounter = self.card.can_rcv_cum_timeout_counter controlsState.experimentalMode = self.experimental_mode + controlsState.personality = self.personality lat_tuning = self.CP.lateralTuning.which() if self.joystick_mode: @@ -821,10 +823,17 @@ class Controls: self.CS_prev = CS + def read_personality_param(self): + try: + return int(self.params.get('LongitudinalPersonality')) + except (ValueError, TypeError): + return log.LongitudinalPersonality.standard + def params_thread(self, evt): while not evt.is_set(): self.is_metric = self.params.get_bool("IsMetric") self.experimental_mode = self.params.get_bool("ExperimentalMode") and self.CP.openpilotLongitudinalControl + self.personality = self.read_personality_param() if self.CP.notCar: self.joystick_mode = self.params.get_bool("JoystickDebugMode") time.sleep(0.1) diff --git a/selfdrive/controls/lib/longitudinal_planner.py b/selfdrive/controls/lib/longitudinal_planner.py index 2b1fd01112..6cc6e80d3d 100755 --- a/selfdrive/controls/lib/longitudinal_planner.py +++ b/selfdrive/controls/lib/longitudinal_planner.py @@ -2,8 +2,6 @@ import math import numpy as np from openpilot.common.numpy_fast import clip, interp -from openpilot.common.params import Params -from cereal import log import cereal.messaging as messaging from openpilot.common.conversions import Conversions as CV @@ -61,16 +59,6 @@ class LongitudinalPlanner: self.a_desired_trajectory = np.zeros(CONTROL_N) self.j_desired_trajectory = np.zeros(CONTROL_N) self.solverExecutionTime = 0.0 - self.params = Params() - self.param_read_counter = 0 - self.personality = log.LongitudinalPersonality.standard - self.read_param() - - def read_param(self): - try: - self.personality = int(self.params.get('LongitudinalPersonality')) - except (ValueError, TypeError): - self.personality = log.LongitudinalPersonality.standard @staticmethod def parse_model(model_msg, model_error): @@ -89,9 +77,6 @@ class LongitudinalPlanner: return x, v, a, j def update(self, sm): - if self.param_read_counter % 50 == 0: - self.read_param() - self.param_read_counter += 1 self.mpc.mode = 'blended' if sm['controlsState'].experimentalMode else 'acc' v_ego = sm['carState'].vEgo @@ -130,11 +115,11 @@ class LongitudinalPlanner: accel_limits_turns[0] = min(accel_limits_turns[0], self.a_desired + 0.05) accel_limits_turns[1] = max(accel_limits_turns[1], self.a_desired - 0.05) - self.mpc.set_weights(prev_accel_constraint, personality=self.personality) + self.mpc.set_weights(prev_accel_constraint, personality=sm['controlsState'].personality) self.mpc.set_accel_limits(accel_limits_turns[0], accel_limits_turns[1]) self.mpc.set_cur_state(self.v_desired_filter.x, self.a_desired) x, v, a, j = self.parse_model(sm['modelV2'], self.v_model_error) - self.mpc.update(sm['radarState'], v_cruise, x, v, a, j, personality=self.personality) + self.mpc.update(sm['radarState'], v_cruise, x, v, a, j, personality=sm['controlsState'].personality) self.v_desired_trajectory_full = np.interp(ModelConstants.T_IDXS, T_IDXS_MPC, self.mpc.v_solution) self.a_desired_trajectory_full = np.interp(ModelConstants.T_IDXS, T_IDXS_MPC, self.mpc.a_solution) @@ -170,6 +155,5 @@ class LongitudinalPlanner: longitudinalPlan.fcw = self.fcw longitudinalPlan.solverExecutionTime = self.mpc.solve_time - longitudinalPlan.personality = self.personality pm.send('longitudinalPlan', plan_send) diff --git a/selfdrive/controls/tests/test_cruise_speed.py b/selfdrive/controls/tests/test_cruise_speed.py index 76a2222e85..c46d03ad1e 100755 --- a/selfdrive/controls/tests/test_cruise_speed.py +++ b/selfdrive/controls/tests/test_cruise_speed.py @@ -5,7 +5,6 @@ import unittest from parameterized import parameterized_class from cereal import log -from openpilot.common.params import Params from openpilot.selfdrive.controls.lib.drive_helpers import VCruiseHelper, V_CRUISE_MIN, V_CRUISE_MAX, V_CRUISE_INITIAL, IMPERIAL_INCREMENT from cereal import car from openpilot.common.conversions import Conversions as CV @@ -15,7 +14,7 @@ ButtonEvent = car.CarState.ButtonEvent ButtonType = car.CarState.ButtonEvent.Type -def run_cruise_simulation(cruise, e2e, t_end=20.): +def run_cruise_simulation(cruise, e2e, personality, t_end=20.): man = Maneuver( '', duration=t_end, @@ -26,6 +25,7 @@ def run_cruise_simulation(cruise, e2e, t_end=20.): prob_lead_values=[0.0], breakpoints=[0.], e2e=e2e, + personality=personality, ) valid, output = man.evaluate() assert valid @@ -38,12 +38,10 @@ def run_cruise_simulation(cruise, e2e, t_end=20.): [5,35])) # speed class TestCruiseSpeed(unittest.TestCase): def test_cruise_speed(self): - params = Params() - params.put("LongitudinalPersonality", str(self.personality)) print(f'Testing {self.speed} m/s') cruise_speed = float(self.speed) - simulation_steady_state = run_cruise_simulation(cruise_speed, self.e2e) + simulation_steady_state = run_cruise_simulation(cruise_speed, self.e2e, self.personality) self.assertAlmostEqual(simulation_steady_state, cruise_speed, delta=.01, msg=f'Did not reach {self.speed} m/s') diff --git a/selfdrive/controls/tests/test_following_distance.py b/selfdrive/controls/tests/test_following_distance.py index 3b31632721..f58e6383c4 100755 --- a/selfdrive/controls/tests/test_following_distance.py +++ b/selfdrive/controls/tests/test_following_distance.py @@ -3,14 +3,13 @@ import unittest import itertools from parameterized import parameterized_class -from openpilot.common.params import Params from cereal import log from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import desired_follow_distance, get_T_FOLLOW from openpilot.selfdrive.test.longitudinal_maneuvers.maneuver import Maneuver -def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False): +def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False, personality=0): man = Maneuver( '', duration=t_end, @@ -20,6 +19,7 @@ def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False): speed_lead_values=[v_lead], breakpoints=[0.], e2e=e2e, + personality=personality, ) valid, output = man.evaluate() assert valid @@ -34,10 +34,8 @@ def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False): [0,10,35])) # speed class TestFollowingDistance(unittest.TestCase): def test_following_distance(self): - params = Params() - params.put("LongitudinalPersonality", str(self.personality)) v_lead = float(self.speed) - simulation_steady_state = run_following_distance_simulation(v_lead, e2e=self.e2e) + simulation_steady_state = run_following_distance_simulation(v_lead, e2e=self.e2e, personality=self.personality) correct_steady_state = desired_follow_distance(v_lead, v_lead, get_T_FOLLOW(self.personality)) err_ratio = 0.2 if self.e2e else 0.1 self.assertAlmostEqual(simulation_steady_state, correct_steady_state, delta=(err_ratio * correct_steady_state + .5)) diff --git a/selfdrive/test/longitudinal_maneuvers/maneuver.py b/selfdrive/test/longitudinal_maneuvers/maneuver.py index 000225ab77..6c8495cc3b 100644 --- a/selfdrive/test/longitudinal_maneuvers/maneuver.py +++ b/selfdrive/test/longitudinal_maneuvers/maneuver.py @@ -19,6 +19,7 @@ class Maneuver: self.ensure_start = kwargs.get("ensure_start", False) self.enabled = kwargs.get("enabled", True) self.e2e = kwargs.get("e2e", False) + self.personality = kwargs.get("personality", 0) self.force_decel = kwargs.get("force_decel", False) self.duration = duration @@ -33,6 +34,7 @@ class Maneuver: only_lead2=self.only_lead2, only_radar=self.only_radar, e2e=self.e2e, + personality=self.personality, force_decel=self.force_decel, ) diff --git a/selfdrive/test/longitudinal_maneuvers/plant.py b/selfdrive/test/longitudinal_maneuvers/plant.py index bb935fdc8e..3fb8b6bab0 100755 --- a/selfdrive/test/longitudinal_maneuvers/plant.py +++ b/selfdrive/test/longitudinal_maneuvers/plant.py @@ -15,7 +15,7 @@ class Plant: messaging_initialized = False def __init__(self, lead_relevancy=False, speed=0.0, distance_lead=2.0, - enabled=True, only_lead2=False, only_radar=False, e2e=False, force_decel=False): + enabled=True, only_lead2=False, only_radar=False, e2e=False, personality=0, force_decel=False): self.rate = 1. / DT_MDL if not Plant.messaging_initialized: @@ -39,6 +39,7 @@ class Plant: self.only_lead2 = only_lead2 self.only_radar = only_radar self.e2e = e2e + self.personality = personality self.force_decel = force_decel self.rk = Ratekeeper(self.rate, print_delay_threshold=100.0) @@ -112,6 +113,7 @@ class Plant: control.controlsState.longControlState = LongCtrlState.pid if self.enabled else LongCtrlState.off control.controlsState.vCruise = float(v_cruise * 3.6) control.controlsState.experimentalMode = self.e2e + control.controlsState.personality = self.personality control.controlsState.forceDecel = self.force_decel car_state.carState.vEgo = float(self.speed) car_state.carState.standstill = self.speed < 0.01 diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 91e32036b5..2c6096e756 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -4f02bcfbf45697c5e6ba0a032797f6b2f37e16d3 +5eedd32ba97f9109c64059afc8e0fb827567f2ed From 3d63c7093afec7ba24f447a44f02f7bea1f7282b Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 13 Mar 2024 01:05:02 -0700 Subject: [PATCH 205/599] longitudinal personality: change via steering wheel distance button (#31792) * start at param * start by sending personality * change to personality * POC: button changes personality * what's wrong with this? * fix * not really possible but fuzzy test catches this * there's always a typo * dang, we're dropping messages * clean up * no comment * bump * rename * not all cars yet * works but at what cost * clean up * inside settings * write param so we save the distance button changes * setChecked activates buttonToggled and already writes param! * don't need this, we update from longitudinalPlan on changes * some clean up * more * ui * allow some time for ui to receive and write param * plannerd: only track changes in case no ui * Revert "plannerd: only track changes in case no ui" This reverts commit 2b081aa6ceb92c67a621b74592b2292756d29871. * write in plannerd as well, I assume this is atomic? * don't write when setting checked (only user clicks) * better nane * more * Update selfdrive/controls/lib/longitudinal_planner.py Co-authored-by: Cameron Clough * doesn't write param now * ParamWatcher is nice * no debug * Update translations * fix * odd drain sock proc replay behavior * vanish * Revert "odd drain sock proc replay behavior" This reverts commit 29b70b39413e1852bb512155af6b6a94a5bd9454. * add GM * only if OP long * move personality to controlsState, since eventually it won't be exclusive to long planner more bump * diff without translations * fix * put nonblocking * CS should start at up to date personality always (no ui flicker) * update toggle on cereal message change * fix * fix that * ubmp * mypy doesn't know this is an int :( * update translations * fix the tests --------- Co-authored-by: Cameron Clough --- selfdrive/controls/controlsd.py | 6 ++++++ selfdrive/ui/qt/offroad/settings.cc | 19 ++++++++++++++++++- selfdrive/ui/qt/offroad/settings.h | 4 ++++ selfdrive/ui/qt/widgets/controls.h | 13 +++++++++++++ selfdrive/ui/translations/main_ar.ts | 8 ++++---- selfdrive/ui/translations/main_de.ts | 8 ++++---- selfdrive/ui/translations/main_fr.ts | 8 ++++---- selfdrive/ui/translations/main_ja.ts | 8 ++++---- selfdrive/ui/translations/main_ko.ts | 8 ++++---- selfdrive/ui/translations/main_pt-BR.ts | 8 ++++---- selfdrive/ui/translations/main_th.ts | 8 ++++---- selfdrive/ui/translations/main_tr.ts | 8 ++++---- selfdrive/ui/translations/main_zh-CHS.ts | 8 ++++---- selfdrive/ui/translations/main_zh-CHT.ts | 8 ++++---- selfdrive/ui/ui.h | 1 + 15 files changed, 82 insertions(+), 41 deletions(-) diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 33336676f2..4190e84fb8 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -651,6 +651,12 @@ class Controls: cloudlog.error(f"actuators.{p} not finite {actuators.to_dict()}") setattr(actuators, p, 0.0) + # decrement personality on distance button press + if self.CP.openpilotLongitudinalControl: + if any(not be.pressed and be.type == ButtonType.gapAdjustCruise for be in CS.buttonEvents): + self.personality = (self.personality - 1) % 3 + self.params.put_nonblocking('LongitudinalPersonality', str(self.personality)) + return CC, lac_log def publish_logs(self, CS, start_time, CC, lac_log): diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 85393cabc0..bc7989b773 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -91,9 +91,14 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { std::vector longi_button_texts{tr("Aggressive"), tr("Standard"), tr("Relaxed")}; long_personality_setting = new ButtonParamControl("LongitudinalPersonality", tr("Driving Personality"), tr("Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. " - "In relaxed mode openpilot will stay further away from lead cars."), + "In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with " + "your steering wheel distance button."), "../assets/offroad/icon_speed_limit.png", longi_button_texts); + + // set up uiState update for personality setting + QObject::connect(uiState(), &UIState::uiUpdate, this, &TogglesPanel::updateState); + for (auto &[param, title, desc, icon] : toggle_defs) { auto toggle = new ParamControl(param, title, desc, icon, this); @@ -119,6 +124,18 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { }); } +void TogglesPanel::updateState(const UIState &s) { + const SubMaster &sm = *(s.sm); + + if (sm.updated("controlsState")) { + auto personality = sm["controlsState"].getControlsState().getPersonality(); + if (personality != s.scene.personality && s.scene.started && isVisible()) { + long_personality_setting->setCheckedButton(static_cast(personality)); + } + uiState()->scene.personality = personality; + } +} + void TogglesPanel::expandToggleDescription(const QString ¶m) { toggles[param.toStdString()]->showDescription(); } diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index a5dd25b14f..581fc098f4 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -11,6 +11,7 @@ #include +#include "selfdrive/ui/ui.h" #include "selfdrive/ui/qt/util.h" #include "selfdrive/ui/qt/widgets/controls.h" @@ -64,6 +65,9 @@ public: public slots: void expandToggleDescription(const QString ¶m); +private slots: + void updateState(const UIState &s); + private: Params params; std::map toggles; diff --git a/selfdrive/ui/qt/widgets/controls.h b/selfdrive/ui/qt/widgets/controls.h index f6e099ce50..aa304e0df6 100644 --- a/selfdrive/ui/qt/widgets/controls.h +++ b/selfdrive/ui/qt/widgets/controls.h @@ -234,6 +234,19 @@ public: } } + void setCheckedButton(int id) { + button_group->button(id)->setChecked(true); + } + + void refresh() { + int value = atoi(params.get(key).c_str()); + button_group->button(value)->setChecked(true); + } + + void showEvent(QShowEvent *event) override { + refresh(); + } + private: std::string key; Params params; diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 7a431b8bf8..10c87d87bd 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -1103,10 +1103,6 @@ This may take up to a minute. Driving Personality شخصية القيادة - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - يوصى بالوضع القياسي. في الوضع الهجومي، سيتبع openpilot السيارات الرائدة بشكل أقرب، ويصبح أكثر هجومية في دواسات الوقود والمكابح. في وضعية الراحة يبقى openplot بعيداً لمسافة جيدة عن السيارة الرائدة. - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: يتم وضع openpilot بشكل قياسي في <b>وضعية الراحة</b>. يمكن الوضع التجريبي <b>ميزات المستوى ألفا</b> التي لا تكون جاهزة في وضع الراحة: @@ -1151,6 +1147,10 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. تمكين التحكم الطولي من openpilot (ألفا) للسماح بالوضع التجريبي. + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + +
Updater diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index ae2bdf33cb..cdcea24778 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -1105,10 +1105,6 @@ This may take up to a minute. On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - - End-to-End Longitudinal Control @@ -1137,6 +1133,10 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index ba496c1b89..b1c39db18e 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -1087,10 +1087,6 @@ Cela peut prendre jusqu'à une minute. Driving Personality Personnalité de conduite - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - Le mode standard est recommandé. En mode agressif, openpilot suivra de plus près les voitures de tête et sera plus agressif avec l'accélérateur et le frein. En mode détendu, openpilot restera plus éloigné des voitures de tête. - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: Par défaut, openpilot conduit en <b>mode détente</b>. Le mode expérimental permet d'activer des <b>fonctionnalités alpha</b> qui ne sont pas prêtes pour le mode détente. Les fonctionnalités expérimentales sont listées ci-dessous : @@ -1135,6 +1131,10 @@ Cela peut prendre jusqu'à une minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. Activer le contrôle longitudinal d'openpilot (en alpha) pour autoriser le mode expérimental. + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 54ff0fa4ae..5360c352d1 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -1097,10 +1097,6 @@ This may take up to a minute. On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - - End-to-End Longitudinal Control @@ -1129,6 +1125,10 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 3f98db2f9c..d1a1e55997 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -1103,10 +1103,6 @@ This may take up to a minute. Driving Personality 주행 모드 - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 표준 모드를 권장합니다. 공격적 모드에서 openpilot은 앞 차량을 더 가까이 따라가며 적극적으로 가감속합니다. 편안한 모드에서 openpilot은 앞 차량을 더 멀리서 따라갑니다. - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. openpilot 가감속 제어 알파 버전은 비 릴리즈 브랜치에서 실험 모드와 함께 테스트할 수 있습니다. @@ -1131,6 +1127,10 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. 주행 시각화는 저속으로 주행 시 도로를 향한 광각 카메라로 자동 전환되어 일부 곡선 경로를 더 잘 보여줍니다. 실험 모드 로고는 우측 상단에 표시됩니다. 내비게이션 목적지가 설정되고 주행 모델에 입력되면 지도의 주행 경로가 녹색으로 바뀝니다. + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index c4789ed42e..910466ba56 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1107,10 +1107,6 @@ Isso pode levar até um minuto. Driving Personality Temperamento de Direção - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - Neutro é o recomendado. No modo disputa o openpilot seguirá o carro da frente mais de perto e será mais agressivo com a aceleração e frenagem. No modo calmo o openpilot se manterá mais longe do carro da frente. - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. Uma versão embrionária do controle longitudinal openpilot pode ser testada em conjunto com o modo Experimental, em branches que não sejam de produção. @@ -1135,6 +1131,10 @@ Isso pode levar até um minuto. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. A visualização de condução fará a transição para a câmera grande angular voltada para a estrada em baixas velocidades para mostrar melhor algumas curvas. O logotipo do modo Experimental também será mostrado no canto superior direito. Quando um destino de navegação é definido e o modelo de condução o utiliza como entrada o caminho de condução no mapa fica verde. + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index c1f0039a3c..25a8aaeebd 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -1103,10 +1103,6 @@ This may take up to a minute. Driving Personality บุคลิกการขับขี่ - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - แนะนำให้ใช้แบบมาตรฐาน ในโหมดดุดัน openpilot จะตามรถคันหน้าใกล้ขึ้นและเร่งและเบรคแบบดุดันมากขึ้น ในโหมดผ่อนคลาย openpilot จะอยู่ห่างจากรถคันหน้ามากขึ้น - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. ระบบควบคุมการเร่ง/เบรคโดย openpilot เวอร์ชัน alpha สามารถทดสอบได้พร้อมกับโหมดการทดลอง บน branch ที่กำลังพัฒนา @@ -1131,6 +1127,10 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. เปิดระบบควบคุมการเร่ง/เบรคโดย openpilot (alpha) เพื่อเปิดใช้งานโหมดทดลอง + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index d19c9ff036..dfe4b3670b 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -1081,10 +1081,6 @@ This may take up to a minute. On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha. - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: @@ -1129,6 +1125,10 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 59d6874035..d985945f02 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -1103,10 +1103,6 @@ This may take up to a minute. Driving Personality 驾驶风格 - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 推荐使用标准模式。在积极模式中,openpilot 会更靠近前车并在加速和刹车方面更积极。在舒适模式中,openpilot 会与前车保持较远的距离。 - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. 在正式(release)版本以外的分支上,可以测试 openpilot 纵向控制的 Alpha 版本以及实验模式。 @@ -1131,6 +1127,10 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. 行驶画面将在低速时切换到道路朝向的广角摄像头,以更好地显示一些转弯。实验模式标志也将显示在右上角。当设置了导航目的地并且驾驶模型正在使用它作为输入时,地图上的驾驶路径将变为绿色。 + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 0079b47f7f..e64134f253 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -1103,10 +1103,6 @@ This may take up to a minute. Driving Personality 駕駛風格 - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 推薦使用標準模式。在積極模式中,openpilot 會更靠近前車並在加速和剎車方面更積極。在舒適模式中,openpilot 會與前車保持較遠的距離。 - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. 在正式 (release) 版以外的分支上可以測試 openpilot 縱向控制的 Alpha 版本以及實驗模式。 @@ -1131,6 +1127,10 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. 行駛畫面將在低速時切換至道路朝向的廣角鏡頭,以更好地顯示一些轉彎。實驗模式圖示也將顯示在右上角。當設定了導航目的地並且行駛模型正在將其作為輸入時,地圖上的行駛路徑將變為綠色。 + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + Updater diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index 86cd70f028..6efb72af9a 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -155,6 +155,7 @@ typedef struct UIScene { vec3 face_kpts_draw[std::size(default_face_kpts_3d)]; bool navigate_on_openpilot = false; + cereal::LongitudinalPersonality personality; float light_sensor; bool started, ignition, is_metric, map_on_left, longitudinal_control; From 7d0f234398be7cf2dee88a83cc4c12a9f4a06364 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 13 Mar 2024 01:53:15 -0700 Subject: [PATCH 206/599] Honda Nidec: show distance bars (#31854) * show lines nidec * lead * Update ref_commit --- selfdrive/car/honda/hondacan.py | 3 +++ selfdrive/test/process_replay/ref_commit | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/honda/hondacan.py b/selfdrive/car/honda/hondacan.py index efa5ba1f1e..e8a0c1bad3 100644 --- a/selfdrive/car/honda/hondacan.py +++ b/selfdrive/car/honda/hondacan.py @@ -143,6 +143,7 @@ def create_ui_commands(packer, CAN, CP, enabled, pcm_speed, hud, is_metric, acc_ acc_hud_values = { 'CRUISE_SPEED': hud.v_cruise, 'ENABLE_MINI_CAR': 1 if enabled else 0, + # only moves the lead car without ACC_ON 'HUD_DISTANCE': (hud.lead_distance_bars + 1) % 4, # wraps to 0 at 4 bars 'IMPERIAL_UNIT': int(not is_metric), 'HUD_LEAD': 2 if enabled and hud.lead_visible else 1 if enabled else 0, @@ -154,6 +155,8 @@ def create_ui_commands(packer, CAN, CP, enabled, pcm_speed, hud, is_metric, acc_ acc_hud_values['FCM_OFF'] = 1 acc_hud_values['FCM_OFF_2'] = 1 else: + # Shows the distance bars, TODO: stock camera shows updates temporarily while disabled + acc_hud_values['ACC_ON'] = int(enabled) acc_hud_values['PCM_SPEED'] = pcm_speed * CV.MS_TO_KPH acc_hud_values['PCM_GAS'] = hud.pcm_accel acc_hud_values['SET_ME_X01'] = 1 diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 2c6096e756..cb904630df 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -5eedd32ba97f9109c64059afc8e0fb827567f2ed +d544804a4fb54c0f160682b8f14af316a8383cd8 \ No newline at end of file From 98918b6afef5964b6e149ee0c46c785b2518891d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 13 Mar 2024 14:23:16 -0400 Subject: [PATCH 207/599] add third party to exclude (#31858) third_party as well --- .vscode/settings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index 811306f399..f0731c362d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -21,6 +21,7 @@ "common/**", "selfdrive/**", "system/**", + "third_party/**", "tools/**", ] } From 0efb62c11caeeccbbc366a0798975e525368a631 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 13 Mar 2024 14:40:26 -0400 Subject: [PATCH 208/599] devcontainer: add gh and azure cli (#31859) * add ghcli * nosudo * nl * fix * remove * link to the install page * it's already a feature :) * fix + add azure * no diff * Update Dockerfile --- .devcontainer/devcontainer.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f1cfc82159..0f1c4baf99 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -28,7 +28,9 @@ "installOhMyZsh": false, "upgradePackages": false, "username": "batman" - } + }, + "ghcr.io/devcontainers-contrib/features/gh-cli:1": {}, + "ghcr.io/devcontainers/features/azure-cli:1": {} }, "containerUser": "batman", "remoteUser": "batman", From d09dd75884edf0df96c912554a35cdcd38cf8e27 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 13 Mar 2024 17:01:56 -0400 Subject: [PATCH 209/599] Revert "updated: prep for new updater (#31695)" (#31860) * Revert "updated: prep for new updater (#31695)" This reverts commit b93f6ce4f6fd34d33f990e86bde22b5cec49f2da. * fix the test --- selfdrive/updated/common.py | 115 ---------- selfdrive/updated/git.py | 236 --------------------- selfdrive/updated/tests/test_base.py | 13 +- selfdrive/updated/updated.py | 300 +++++++++++++++++++++++---- 4 files changed, 274 insertions(+), 390 deletions(-) delete mode 100644 selfdrive/updated/common.py delete mode 100644 selfdrive/updated/git.py diff --git a/selfdrive/updated/common.py b/selfdrive/updated/common.py deleted file mode 100644 index 6847147995..0000000000 --- a/selfdrive/updated/common.py +++ /dev/null @@ -1,115 +0,0 @@ -import abc -import os - -from pathlib import Path -import subprocess -from typing import List - -from markdown_it import MarkdownIt -from openpilot.common.params import Params -from openpilot.common.swaglog import cloudlog - - -LOCK_FILE = os.getenv("UPDATER_LOCK_FILE", "/tmp/safe_staging_overlay.lock") -STAGING_ROOT = os.getenv("UPDATER_STAGING_ROOT", "/data/safe_staging") -FINALIZED = os.path.join(STAGING_ROOT, "finalized") - - -def run(cmd: list[str], cwd: str = None) -> str: - return subprocess.check_output(cmd, cwd=cwd, stderr=subprocess.STDOUT, encoding='utf8') - - -class UpdateStrategy(abc.ABC): - def __init__(self): - self.params = Params() - - @abc.abstractmethod - def init(self) -> None: - pass - - @abc.abstractmethod - def cleanup(self) -> None: - pass - - @abc.abstractmethod - def get_available_channels(self) -> List[str]: - """List of available channels to install, (branches, releases, etc)""" - - @abc.abstractmethod - def current_channel(self) -> str: - """Current channel installed""" - - @abc.abstractmethod - def fetched_path(self) -> str: - """Path to the fetched update""" - - @property - def target_channel(self) -> str: - """Target Channel""" - b: str | None = self.params.get("UpdaterTargetBranch", encoding='utf-8') - if b is None: - b = self.current_channel() - return b - - @abc.abstractmethod - def update_ready(self) -> bool: - """Check if an update is ready to be installed""" - - @abc.abstractmethod - def update_available(self) -> bool: - """Check if an update is available for the current channel""" - - @abc.abstractmethod - def describe_current_channel(self) -> tuple[str, str]: - """Describe the current channel installed, (description, release_notes)""" - - @abc.abstractmethod - def describe_ready_channel(self) -> tuple[str, str]: - """Describe the channel that is ready to be installed, (description, release_notes)""" - - @abc.abstractmethod - def fetch_update(self) -> None: - pass - - @abc.abstractmethod - def finalize_update(self) -> None: - pass - - -def set_consistent_flag(consistent: bool) -> None: - os.sync() - consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) - if consistent: - consistent_file.touch() - elif not consistent: - consistent_file.unlink(missing_ok=True) - os.sync() - - -def get_consistent_flag() -> bool: - consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) - return consistent_file.is_file() - - -def parse_release_notes(releases_md: str) -> str: - try: - r = releases_md.split('\n\n', 1)[0] # Slice latest release notes - try: - return str(MarkdownIt().render(r)) - except Exception: - return r + "\n" - except FileNotFoundError: - pass - except Exception: - cloudlog.exception("failed to parse release notes") - return "" - - -def get_version(path) -> str: - with open(os.path.join(path, "common", "version.h")) as f: - return f.read().split('"')[1] - - -def get_release_notes(path) -> str: - with open(os.path.join(path, "RELEASES.md"), "r") as f: - return parse_release_notes(f.read()) diff --git a/selfdrive/updated/git.py b/selfdrive/updated/git.py deleted file mode 100644 index 921b32ede2..0000000000 --- a/selfdrive/updated/git.py +++ /dev/null @@ -1,236 +0,0 @@ -import datetime -import os -import re -import shutil -import subprocess -import time - -from collections import defaultdict -from pathlib import Path -from typing import List - -from openpilot.common.basedir import BASEDIR -from openpilot.common.params import Params -from openpilot.common.swaglog import cloudlog -from openpilot.selfdrive.updated.common import FINALIZED, STAGING_ROOT, UpdateStrategy, \ - get_consistent_flag, get_release_notes, get_version, set_consistent_flag, run - - -OVERLAY_UPPER = os.path.join(STAGING_ROOT, "upper") -OVERLAY_METADATA = os.path.join(STAGING_ROOT, "metadata") -OVERLAY_MERGED = os.path.join(STAGING_ROOT, "merged") -OVERLAY_INIT = Path(os.path.join(BASEDIR, ".overlay_init")) - - -def setup_git_options(cwd: str) -> None: - # We sync FS object atimes (which NEOS doesn't use) and mtimes, but ctimes - # are outside user control. Make sure Git is set up to ignore system ctimes, - # because they change when we make hard links during finalize. Otherwise, - # there is a lot of unnecessary churn. This appears to be a common need on - # OSX as well: https://www.git-tower.com/blog/make-git-rebase-safe-on-osx/ - - # We are using copytree to copy the directory, which also changes - # inode numbers. Ignore those changes too. - - # Set protocol to the new version (default after git 2.26) to reduce data - # usage on git fetch --dry-run from about 400KB to 18KB. - git_cfg = [ - ("core.trustctime", "false"), - ("core.checkStat", "minimal"), - ("protocol.version", "2"), - ("gc.auto", "0"), - ("gc.autoDetach", "false"), - ] - for option, value in git_cfg: - run(["git", "config", option, value], cwd) - - -def dismount_overlay() -> None: - if os.path.ismount(OVERLAY_MERGED): - cloudlog.info("unmounting existing overlay") - run(["sudo", "umount", "-l", OVERLAY_MERGED]) - - -def init_overlay() -> None: - - # Re-create the overlay if BASEDIR/.git has changed since we created the overlay - if OVERLAY_INIT.is_file() and os.path.ismount(OVERLAY_MERGED): - git_dir_path = os.path.join(BASEDIR, ".git") - new_files = run(["find", git_dir_path, "-newer", str(OVERLAY_INIT)]) - if not len(new_files.splitlines()): - # A valid overlay already exists - return - else: - cloudlog.info(".git directory changed, recreating overlay") - - cloudlog.info("preparing new safe staging area") - - params = Params() - params.put_bool("UpdateAvailable", False) - set_consistent_flag(False) - dismount_overlay() - run(["sudo", "rm", "-rf", STAGING_ROOT]) - if os.path.isdir(STAGING_ROOT): - shutil.rmtree(STAGING_ROOT) - - for dirname in [STAGING_ROOT, OVERLAY_UPPER, OVERLAY_METADATA, OVERLAY_MERGED]: - os.mkdir(dirname, 0o755) - - if os.lstat(BASEDIR).st_dev != os.lstat(OVERLAY_MERGED).st_dev: - raise RuntimeError("base and overlay merge directories are on different filesystems; not valid for overlay FS!") - - # Leave a timestamped canary in BASEDIR to check at startup. The device clock - # should be correct by the time we get here. If the init file disappears, or - # critical mtimes in BASEDIR are newer than .overlay_init, continue.sh can - # assume that BASEDIR has used for local development or otherwise modified, - # and skips the update activation attempt. - consistent_file = Path(os.path.join(BASEDIR, ".overlay_consistent")) - if consistent_file.is_file(): - consistent_file.unlink() - OVERLAY_INIT.touch() - - os.sync() - overlay_opts = f"lowerdir={BASEDIR},upperdir={OVERLAY_UPPER},workdir={OVERLAY_METADATA}" - - mount_cmd = ["mount", "-t", "overlay", "-o", overlay_opts, "none", OVERLAY_MERGED] - run(["sudo"] + mount_cmd) - run(["sudo", "chmod", "755", os.path.join(OVERLAY_METADATA, "work")]) - - git_diff = run(["git", "diff"], OVERLAY_MERGED) - params.put("GitDiff", git_diff) - cloudlog.info(f"git diff output:\n{git_diff}") - - -class GitUpdateStrategy(UpdateStrategy): - - def init(self) -> None: - init_overlay() - - def cleanup(self) -> None: - OVERLAY_INIT.unlink(missing_ok=True) - - def sync_branches(self): - excluded_branches = ('release2', 'release2-staging') - - output = run(["git", "ls-remote", "--heads"], OVERLAY_MERGED) - - self.branches = defaultdict(lambda: None) - for line in output.split('\n'): - ls_remotes_re = r'(?P\b[0-9a-f]{5,40}\b)(\s+)(refs\/heads\/)(?P.*$)' - x = re.fullmatch(ls_remotes_re, line.strip()) - if x is not None and x.group('branch_name') not in excluded_branches: - self.branches[x.group('branch_name')] = x.group('commit_sha') - - return self.branches - - def get_available_channels(self) -> List[str]: - self.sync_branches() - return list(self.branches.keys()) - - def update_ready(self) -> bool: - if get_consistent_flag(): - hash_mismatch = self.get_commit_hash(BASEDIR) != self.branches[self.target_channel] - branch_mismatch = self.get_branch(BASEDIR) != self.target_channel - on_target_channel = self.get_branch(FINALIZED) == self.target_channel - return ((hash_mismatch or branch_mismatch) and on_target_channel) - return False - - def update_available(self) -> bool: - if os.path.isdir(OVERLAY_MERGED) and len(self.get_available_channels()) > 0: - hash_mismatch = self.get_commit_hash(OVERLAY_MERGED) != self.branches[self.target_channel] - branch_mismatch = self.get_branch(OVERLAY_MERGED) != self.target_channel - return hash_mismatch or branch_mismatch - return False - - def get_branch(self, path: str) -> str: - return run(["git", "rev-parse", "--abbrev-ref", "HEAD"], path).rstrip() - - def get_commit_hash(self, path) -> str: - return run(["git", "rev-parse", "HEAD"], path).rstrip() - - def get_current_channel(self) -> str: - return self.get_branch(BASEDIR) - - def current_channel(self) -> str: - return self.get_branch(BASEDIR) - - def describe_branch(self, basedir) -> str: - if not os.path.exists(basedir): - return "" - - version = "" - branch = "" - commit = "" - commit_date = "" - try: - branch = self.get_branch(basedir) - commit = self.get_commit_hash(basedir)[:7] - version = get_version(basedir) - - commit_unix_ts = run(["git", "show", "-s", "--format=%ct", "HEAD"], basedir).rstrip() - dt = datetime.datetime.fromtimestamp(int(commit_unix_ts)) - commit_date = dt.strftime("%b %d") - except Exception: - cloudlog.exception("updater.get_description") - return f"{version} / {branch} / {commit} / {commit_date}" - - def describe_current_channel(self) -> tuple[str, str]: - return self.describe_branch(BASEDIR), get_release_notes(BASEDIR) - - def describe_ready_channel(self) -> tuple[str, str]: - if self.update_ready(): - return self.describe_branch(FINALIZED), get_release_notes(FINALIZED) - - return "", "" - - def fetch_update(self): - cloudlog.info("attempting git fetch inside staging overlay") - - setup_git_options(OVERLAY_MERGED) - - branch = self.target_channel - git_fetch_output = run(["git", "fetch", "origin", branch], OVERLAY_MERGED) - cloudlog.info("git fetch success: %s", git_fetch_output) - - cloudlog.info("git reset in progress") - cmds = [ - ["git", "checkout", "--force", "--no-recurse-submodules", "-B", branch, "FETCH_HEAD"], - ["git", "reset", "--hard"], - ["git", "clean", "-xdff"], - ["git", "submodule", "sync"], - ["git", "submodule", "update", "--init", "--recursive"], - ["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], - ] - r = [run(cmd, OVERLAY_MERGED) for cmd in cmds] - cloudlog.info("git reset success: %s", '\n'.join(r)) - - def fetched_path(self): - return str(OVERLAY_MERGED) - - def finalize_update(self) -> None: - """Take the current OverlayFS merged view and finalize a copy outside of - OverlayFS, ready to be swapped-in at BASEDIR. Copy using shutil.copytree""" - - # Remove the update ready flag and any old updates - cloudlog.info("creating finalized version of the overlay") - set_consistent_flag(False) - - # Copy the merged overlay view and set the update ready flag - if os.path.exists(FINALIZED): - shutil.rmtree(FINALIZED) - shutil.copytree(OVERLAY_MERGED, FINALIZED, symlinks=True) - - run(["git", "reset", "--hard"], FINALIZED) - run(["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], FINALIZED) - - cloudlog.info("Starting git cleanup in finalized update") - t = time.monotonic() - try: - run(["git", "gc"], FINALIZED) - run(["git", "lfs", "prune"], FINALIZED) - cloudlog.event("Done git cleanup", duration=time.monotonic() - t) - except subprocess.CalledProcessError: - cloudlog.exception(f"Failed git cleanup, took {time.monotonic() - t:.3f} s") - - set_consistent_flag(True) - cloudlog.info("done finalizing overlay") diff --git a/selfdrive/updated/tests/test_base.py b/selfdrive/updated/tests/test_base.py index 3060db1bdd..b79785277a 100644 --- a/selfdrive/updated/tests/test_base.py +++ b/selfdrive/updated/tests/test_base.py @@ -37,6 +37,16 @@ def update_release(directory, name, version, agnos_version, release_notes): os.symlink("common/version.h", test_symlink) +def get_version(path: str) -> str: + with open(os.path.join(path, "common", "version.h")) as f: + return f.read().split('"')[1] + + +def get_consistent_flag(path: str) -> bool: + consistent_file = pathlib.Path(os.path.join(path, ".overlay_consistent")) + return consistent_file.is_file() + + @pytest.mark.slow # TODO: can we test overlayfs in GHA? class BaseUpdateTest(unittest.TestCase): @classmethod @@ -109,11 +119,10 @@ class BaseUpdateTest(unittest.TestCase): self.assertEqual(self.params.get_bool("UpdateAvailable"), update_available) def _test_finalized_update(self, branch, version, agnos_version, release_notes): - from openpilot.selfdrive.updated.common import get_version, get_consistent_flag # this needs to be inline because common uses environment variables self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}")) self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") self.assertEqual(get_version(str(self.staging_root / "finalized")), version) - self.assertEqual(get_consistent_flag(), True) + self.assertEqual(get_consistent_flag(str(self.staging_root / "finalized")), True) with open(self.staging_root / "finalized" / "test_symlink") as f: self.assertIn(version, f.read()) diff --git a/selfdrive/updated/updated.py b/selfdrive/updated/updated.py index 92034cc806..b6b395f254 100755 --- a/selfdrive/updated/updated.py +++ b/selfdrive/updated/updated.py @@ -1,21 +1,35 @@ #!/usr/bin/env python3 import os -from pathlib import Path +import re import datetime import subprocess import psutil +import shutil import signal import fcntl +import time import threading +from collections import defaultdict +from pathlib import Path +from markdown_it import MarkdownIt +from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params from openpilot.common.time import system_time_valid -from openpilot.selfdrive.updated.common import LOCK_FILE, STAGING_ROOT, UpdateStrategy, run, set_consistent_flag from openpilot.system.hardware import AGNOS, HARDWARE from openpilot.common.swaglog import cloudlog from openpilot.selfdrive.controls.lib.alertmanager import set_offroad_alert from openpilot.system.version import is_tested_branch -from openpilot.selfdrive.updated.git import GitUpdateStrategy + +LOCK_FILE = os.getenv("UPDATER_LOCK_FILE", "/tmp/safe_staging_overlay.lock") +STAGING_ROOT = os.getenv("UPDATER_STAGING_ROOT", "/data/safe_staging") + +OVERLAY_UPPER = os.path.join(STAGING_ROOT, "upper") +OVERLAY_METADATA = os.path.join(STAGING_ROOT, "metadata") +OVERLAY_MERGED = os.path.join(STAGING_ROOT, "merged") +FINALIZED = os.path.join(STAGING_ROOT, "finalized") + +OVERLAY_INIT = Path(os.path.join(BASEDIR, ".overlay_init")) DAYS_NO_CONNECTIVITY_MAX = 14 # do not allow to engage after this many days DAYS_NO_CONNECTIVITY_PROMPT = 10 # send an offroad prompt after this many days @@ -57,13 +71,147 @@ def read_time_from_param(params, param) -> datetime.datetime | None: pass return None +def run(cmd: list[str], cwd: str = None) -> str: + return subprocess.check_output(cmd, cwd=cwd, stderr=subprocess.STDOUT, encoding='utf8') -def handle_agnos_update(fetched_path) -> None: + +def set_consistent_flag(consistent: bool) -> None: + os.sync() + consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) + if consistent: + consistent_file.touch() + elif not consistent: + consistent_file.unlink(missing_ok=True) + os.sync() + +def parse_release_notes(basedir: str) -> bytes: + try: + with open(os.path.join(basedir, "RELEASES.md"), "rb") as f: + r = f.read().split(b'\n\n', 1)[0] # Slice latest release notes + try: + return bytes(MarkdownIt().render(r.decode("utf-8")), encoding="utf-8") + except Exception: + return r + b"\n" + except FileNotFoundError: + pass + except Exception: + cloudlog.exception("failed to parse release notes") + return b"" + +def setup_git_options(cwd: str) -> None: + # We sync FS object atimes (which NEOS doesn't use) and mtimes, but ctimes + # are outside user control. Make sure Git is set up to ignore system ctimes, + # because they change when we make hard links during finalize. Otherwise, + # there is a lot of unnecessary churn. This appears to be a common need on + # OSX as well: https://www.git-tower.com/blog/make-git-rebase-safe-on-osx/ + + # We are using copytree to copy the directory, which also changes + # inode numbers. Ignore those changes too. + + # Set protocol to the new version (default after git 2.26) to reduce data + # usage on git fetch --dry-run from about 400KB to 18KB. + git_cfg = [ + ("core.trustctime", "false"), + ("core.checkStat", "minimal"), + ("protocol.version", "2"), + ("gc.auto", "0"), + ("gc.autoDetach", "false"), + ] + for option, value in git_cfg: + run(["git", "config", option, value], cwd) + + +def dismount_overlay() -> None: + if os.path.ismount(OVERLAY_MERGED): + cloudlog.info("unmounting existing overlay") + run(["sudo", "umount", "-l", OVERLAY_MERGED]) + + +def init_overlay() -> None: + + # Re-create the overlay if BASEDIR/.git has changed since we created the overlay + if OVERLAY_INIT.is_file() and os.path.ismount(OVERLAY_MERGED): + git_dir_path = os.path.join(BASEDIR, ".git") + new_files = run(["find", git_dir_path, "-newer", str(OVERLAY_INIT)]) + if not len(new_files.splitlines()): + # A valid overlay already exists + return + else: + cloudlog.info(".git directory changed, recreating overlay") + + cloudlog.info("preparing new safe staging area") + + params = Params() + params.put_bool("UpdateAvailable", False) + set_consistent_flag(False) + dismount_overlay() + run(["sudo", "rm", "-rf", STAGING_ROOT]) + if os.path.isdir(STAGING_ROOT): + shutil.rmtree(STAGING_ROOT) + + for dirname in [STAGING_ROOT, OVERLAY_UPPER, OVERLAY_METADATA, OVERLAY_MERGED]: + os.mkdir(dirname, 0o755) + + if os.lstat(BASEDIR).st_dev != os.lstat(OVERLAY_MERGED).st_dev: + raise RuntimeError("base and overlay merge directories are on different filesystems; not valid for overlay FS!") + + # Leave a timestamped canary in BASEDIR to check at startup. The device clock + # should be correct by the time we get here. If the init file disappears, or + # critical mtimes in BASEDIR are newer than .overlay_init, continue.sh can + # assume that BASEDIR has used for local development or otherwise modified, + # and skips the update activation attempt. + consistent_file = Path(os.path.join(BASEDIR, ".overlay_consistent")) + if consistent_file.is_file(): + consistent_file.unlink() + OVERLAY_INIT.touch() + + os.sync() + overlay_opts = f"lowerdir={BASEDIR},upperdir={OVERLAY_UPPER},workdir={OVERLAY_METADATA}" + + mount_cmd = ["mount", "-t", "overlay", "-o", overlay_opts, "none", OVERLAY_MERGED] + run(["sudo"] + mount_cmd) + run(["sudo", "chmod", "755", os.path.join(OVERLAY_METADATA, "work")]) + + git_diff = run(["git", "diff"], OVERLAY_MERGED) + params.put("GitDiff", git_diff) + cloudlog.info(f"git diff output:\n{git_diff}") + + +def finalize_update() -> None: + """Take the current OverlayFS merged view and finalize a copy outside of + OverlayFS, ready to be swapped-in at BASEDIR. Copy using shutil.copytree""" + + # Remove the update ready flag and any old updates + cloudlog.info("creating finalized version of the overlay") + set_consistent_flag(False) + + # Copy the merged overlay view and set the update ready flag + if os.path.exists(FINALIZED): + shutil.rmtree(FINALIZED) + shutil.copytree(OVERLAY_MERGED, FINALIZED, symlinks=True) + + run(["git", "reset", "--hard"], FINALIZED) + run(["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], FINALIZED) + + cloudlog.info("Starting git cleanup in finalized update") + t = time.monotonic() + try: + run(["git", "gc"], FINALIZED) + run(["git", "lfs", "prune"], FINALIZED) + cloudlog.event("Done git cleanup", duration=time.monotonic() - t) + except subprocess.CalledProcessError: + cloudlog.exception(f"Failed git cleanup, took {time.monotonic() - t:.3f} s") + + set_consistent_flag(True) + cloudlog.info("done finalizing overlay") + + +def handle_agnos_update() -> None: from openpilot.system.hardware.tici.agnos import flash_agnos_update, get_target_slot_number cur_version = HARDWARE.get_os_version() updated_version = run(["bash", "-c", r"unset AGNOS_VERSION && source launch_env.sh && \ - echo -n $AGNOS_VERSION"], fetched_path).strip() + echo -n $AGNOS_VERSION"], OVERLAY_MERGED).strip() cloudlog.info(f"AGNOS version check: {cur_version} vs {updated_version}") if cur_version == updated_version: @@ -75,44 +223,61 @@ def handle_agnos_update(fetched_path) -> None: cloudlog.info(f"Beginning background installation for AGNOS {updated_version}") set_offroad_alert("Offroad_NeosUpdate", True) - manifest_path = os.path.join(fetched_path, "system/hardware/tici/agnos.json") + manifest_path = os.path.join(OVERLAY_MERGED, "system/hardware/tici/agnos.json") target_slot_number = get_target_slot_number() flash_agnos_update(manifest_path, target_slot_number, cloudlog) set_offroad_alert("Offroad_NeosUpdate", False) -STRATEGY = { - "git": GitUpdateStrategy, -} - class Updater: def __init__(self): self.params = Params() + self.branches = defaultdict(str) self._has_internet: bool = False - self.strategy: UpdateStrategy = STRATEGY[os.environ.get("UPDATER_STRATEGY", "git")]() - @property def has_internet(self) -> bool: return self._has_internet - def init(self): - self.strategy.init() + @property + def target_branch(self) -> str: + b: str | None = self.params.get("UpdaterTargetBranch", encoding='utf-8') + if b is None: + b = self.get_branch(BASEDIR) + return b - def cleanup(self): - self.strategy.cleanup() + @property + def update_ready(self) -> bool: + consistent_file = Path(os.path.join(FINALIZED, ".overlay_consistent")) + if consistent_file.is_file(): + hash_mismatch = self.get_commit_hash(BASEDIR) != self.branches[self.target_branch] + branch_mismatch = self.get_branch(BASEDIR) != self.target_branch + on_target_branch = self.get_branch(FINALIZED) == self.target_branch + return ((hash_mismatch or branch_mismatch) and on_target_branch) + return False + + @property + def update_available(self) -> bool: + if os.path.isdir(OVERLAY_MERGED) and len(self.branches) > 0: + hash_mismatch = self.get_commit_hash(OVERLAY_MERGED) != self.branches[self.target_branch] + branch_mismatch = self.get_branch(OVERLAY_MERGED) != self.target_branch + return hash_mismatch or branch_mismatch + return False + + def get_branch(self, path: str) -> str: + return run(["git", "rev-parse", "--abbrev-ref", "HEAD"], path).rstrip() + + def get_commit_hash(self, path: str = OVERLAY_MERGED) -> str: + return run(["git", "rev-parse", "HEAD"], path).rstrip() def set_params(self, update_success: bool, failed_count: int, exception: str | None) -> None: self.params.put("UpdateFailedCount", str(failed_count)) + self.params.put("UpdaterTargetBranch", self.target_branch) - if self.params.get("UpdaterTargetBranch") is None: - self.params.put("UpdaterTargetBranch", self.strategy.current_channel()) - - self.params.put_bool("UpdaterFetchAvailable", self.strategy.update_available()) - - available_channels = self.strategy.get_available_channels() - self.params.put("UpdaterAvailableBranches", ','.join(available_channels)) + self.params.put_bool("UpdaterFetchAvailable", self.update_available) + if len(self.branches): + self.params.put("UpdaterAvailableBranches", ','.join(self.branches.keys())) last_update = datetime.datetime.utcnow() if update_success: @@ -127,14 +292,32 @@ class Updater: else: self.params.put("LastUpdateException", exception) - description_current, release_notes_current = self.strategy.describe_current_channel() - description_ready, release_notes_ready = self.strategy.describe_ready_channel() + # Write out current and new version info + def get_description(basedir: str) -> str: + if not os.path.exists(basedir): + return "" - self.params.put("UpdaterCurrentDescription", description_current) - self.params.put("UpdaterCurrentReleaseNotes", release_notes_current) - self.params.put("UpdaterNewDescription", description_ready) - self.params.put("UpdaterNewReleaseNotes", release_notes_ready) - self.params.put_bool("UpdateAvailable", self.strategy.update_ready()) + version = "" + branch = "" + commit = "" + commit_date = "" + try: + branch = self.get_branch(basedir) + commit = self.get_commit_hash(basedir)[:7] + with open(os.path.join(basedir, "common", "version.h")) as f: + version = f.read().split('"')[1] + + commit_unix_ts = run(["git", "show", "-s", "--format=%ct", "HEAD"], basedir).rstrip() + dt = datetime.datetime.fromtimestamp(int(commit_unix_ts)) + commit_date = dt.strftime("%b %d") + except Exception: + cloudlog.exception("updater.get_description") + return f"{version} / {branch} / {commit} / {commit_date}" + self.params.put("UpdaterCurrentDescription", get_description(BASEDIR)) + self.params.put("UpdaterCurrentReleaseNotes", parse_release_notes(BASEDIR)) + self.params.put("UpdaterNewDescription", get_description(FINALIZED)) + self.params.put("UpdaterNewReleaseNotes", parse_release_notes(FINALIZED)) + self.params.put_bool("UpdateAvailable", self.update_ready) # Handle user prompt for alert in ("Offroad_UpdateFailed", "Offroad_ConnectivityNeeded", "Offroad_ConnectivityNeededPrompt"): @@ -158,24 +341,67 @@ class Updater: def check_for_update(self) -> None: cloudlog.info("checking for updates") - self.strategy.update_available() + excluded_branches = ('release2', 'release2-staging') + + try: + run(["git", "ls-remote", "origin", "HEAD"], OVERLAY_MERGED) + self._has_internet = True + except subprocess.CalledProcessError: + self._has_internet = False + + setup_git_options(OVERLAY_MERGED) + output = run(["git", "ls-remote", "--heads"], OVERLAY_MERGED) + + self.branches = defaultdict(lambda: None) + for line in output.split('\n'): + ls_remotes_re = r'(?P\b[0-9a-f]{5,40}\b)(\s+)(refs\/heads\/)(?P.*$)' + x = re.fullmatch(ls_remotes_re, line.strip()) + if x is not None and x.group('branch_name') not in excluded_branches: + self.branches[x.group('branch_name')] = x.group('commit_sha') + + cur_branch = self.get_branch(OVERLAY_MERGED) + cur_commit = self.get_commit_hash(OVERLAY_MERGED) + new_branch = self.target_branch + new_commit = self.branches[new_branch] + if (cur_branch, cur_commit) != (new_branch, new_commit): + cloudlog.info(f"update available, {cur_branch} ({str(cur_commit)[:7]}) -> {new_branch} ({str(new_commit)[:7]})") + else: + cloudlog.info(f"up to date on {cur_branch} ({str(cur_commit)[:7]})") def fetch_update(self) -> None: + cloudlog.info("attempting git fetch inside staging overlay") + self.params.put("UpdaterState", "downloading...") # TODO: cleanly interrupt this and invalidate old update set_consistent_flag(False) self.params.put_bool("UpdateAvailable", False) - self.strategy.fetch_update() + setup_git_options(OVERLAY_MERGED) + + branch = self.target_branch + git_fetch_output = run(["git", "fetch", "origin", branch], OVERLAY_MERGED) + cloudlog.info("git fetch success: %s", git_fetch_output) + + cloudlog.info("git reset in progress") + cmds = [ + ["git", "checkout", "--force", "--no-recurse-submodules", "-B", branch, "FETCH_HEAD"], + ["git", "reset", "--hard"], + ["git", "clean", "-xdff"], + ["git", "submodule", "sync"], + ["git", "submodule", "update", "--init", "--recursive"], + ["git", "submodule", "foreach", "--recursive", "git", "reset", "--hard"], + ] + r = [run(cmd, OVERLAY_MERGED) for cmd in cmds] + cloudlog.info("git reset success: %s", '\n'.join(r)) # TODO: show agnos download progress if AGNOS: - handle_agnos_update(self.strategy.fetched_path()) + handle_agnos_update() # Create the finalized, ready-to-swap update self.params.put("UpdaterState", "finalizing update...") - self.strategy.finalize_update() + finalize_update() cloudlog.info("finalize success!") @@ -224,7 +450,7 @@ def main() -> None: exception = None try: # TODO: reuse overlay from previous updated instance if it looks clean - updater.init() + init_overlay() # ensure we have some params written soon after startup updater.set_params(False, update_failed_count, exception) @@ -260,11 +486,11 @@ def main() -> None: returncode=e.returncode ) exception = f"command failed: {e.cmd}\n{e.output}" - updater.cleanup() + OVERLAY_INIT.unlink(missing_ok=True) except Exception as e: cloudlog.exception("uncaught updated exception, shouldn't happen") exception = str(e) - updater.cleanup() + OVERLAY_INIT.unlink(missing_ok=True) try: params.put("UpdaterState", "idle") From 5d4e324ddf105f45a84f24849b3e2baafd22a84b Mon Sep 17 00:00:00 2001 From: Lee Jong Mun <43285072+crwusiz@users.noreply.github.com> Date: Thu, 14 Mar 2024 14:39:42 +0900 Subject: [PATCH 210/599] Multilang: kor translation update (#31864) --- selfdrive/ui/translations/main_ko.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index d1a1e55997..ed751912a6 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -634,7 +634,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + 시스템 재설정이 시작되었습니다. 모든 콘텐츠와 설정을 지우려면 확인을 누르시고 부팅을 재개하려면 취소를 누르세요.
@@ -744,15 +744,15 @@ This may take up to a minute. Choose Software to Install - + 설치할 소프트웨어 선택 openpilot - openpilot + openpilot Custom Software - + 커스텀 소프트웨어 @@ -1129,7 +1129,7 @@ This may take up to a minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - + 표준 모드를 권장합니다. 공격적 모드의 openpilot은 선두 차량을 더 가까이 따라가고 가감속제어를 사용하여 더욱 공격적으로 움직입니다. 편안한 모드의 openpilot은 선두 차량으로부터 더 멀리 떨어져 있습니다. 지원되는 차량에서는 스티어링 휠 거리 버튼을 사용하여 이러한 특성을 순환할 수 있습니다. From a3f2c7bf3ea008394156aab16cc226cdf36af8d5 Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Thu, 14 Mar 2024 02:40:20 -0300 Subject: [PATCH 211/599] Multilang: update pt-BR translation (#31861) * update pt-BR translation * this come from darkness?? --- selfdrive/ui/translations/main_pt-BR.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 910466ba56..c32aeacaa3 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1133,7 +1133,7 @@ Isso pode levar até um minuto. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - + Neutro é o recomendado. No modo disputa o openpilot seguirá o carro da frente mais de perto e será mais agressivo com a aceleração e frenagem. No modo calmo o openpilot se manterá mais longe do carro da frente. Em carros compatíveis, você pode alternar esses temperamentos com o botão de distância do volante. From 39d432e3cda37ecceb63e04967896a2981054d04 Mon Sep 17 00:00:00 2001 From: ShaydeNZ Date: Fri, 15 Mar 2024 10:26:21 +1300 Subject: [PATCH 212/599] Added fingerprints for my 2019 Golf R Mk7.5 (#31850) --- selfdrive/car/volkswagen/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index c530288027..cf3e9287cc 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -175,6 +175,7 @@ FW_VERSIONS = { b'\xf1\x875G0906259T \xf1\x890003', b'\xf1\x878V0906259H \xf1\x890002', b'\xf1\x878V0906259J \xf1\x890003', + b'\xf1\x878V0906259J \xf1\x890103', b'\xf1\x878V0906259K \xf1\x890001', b'\xf1\x878V0906259K \xf1\x890003', b'\xf1\x878V0906259P \xf1\x890001', @@ -220,6 +221,7 @@ FW_VERSIONS = { b'\xf1\x870DD300046F \xf1\x891601', b'\xf1\x870GC300012A \xf1\x891401', b'\xf1\x870GC300012A \xf1\x891403', + b'\xf1\x870GC300012M \xf1\x892301', b'\xf1\x870GC300014B \xf1\x892401', b'\xf1\x870GC300014B \xf1\x892403', b'\xf1\x870GC300014B \xf1\x892405', @@ -238,6 +240,7 @@ FW_VERSIONS = { b'\xf1\x875Q0959655AR\xf1\x890317\xf1\x82\x13141500111233003142114A2131219333313100', b'\xf1\x875Q0959655BH\xf1\x890336\xf1\x82\x1314160011123300314211012230229333423100', b'\xf1\x875Q0959655BH\xf1\x890336\xf1\x82\x1314160011123300314211012230229333463100', + b'\xf1\x875Q0959655BJ\xf1\x890339\xf1\x82\x13141600111233003142115A2232229333463100', b'\xf1\x875Q0959655BS\xf1\x890403\xf1\x82\x1314160011123300314240012250229333463100', b'\xf1\x875Q0959655BT\xf1\x890403\xf1\x82\x13141600111233003142404A2251229333463100', b'\xf1\x875Q0959655BT\xf1\x890403\xf1\x82\x13141600111233003142404A2252229333463100', From 4dd5fd4619cb73df9b396aacda94c6afc553a9f1 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Thu, 14 Mar 2024 22:00:16 +0000 Subject: [PATCH 213/599] ui.py fix typo (#31870) --- tools/replay/ui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/replay/ui.py b/tools/replay/ui.py index 126340afc8..aa03ae193c 100755 --- a/tools/replay/ui.py +++ b/tools/replay/ui.py @@ -118,7 +118,7 @@ def ui_thread(addr): sm.update(0) - camera = DEVICE_CAMERAS[("three", str(sm['roadCameraState'].sensor))] + camera = DEVICE_CAMERAS[("tici", str(sm['roadCameraState'].sensor))] imgff = np.frombuffer(yuv_img_raw.data, dtype=np.uint8).reshape((len(yuv_img_raw.data) // vipc_client.stride, vipc_client.stride)) num_px = vipc_client.width * vipc_client.height From c1d0d35f8bc043df098c483154c36bb8e955b02d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 14 Mar 2024 19:20:02 -0400 Subject: [PATCH 214/599] gha: remove trailing spaces (#31872) remove trailing spaces --- .github/workflows/auto-cache/action.yaml | 2 +- .github/workflows/selfdrive_tests.yaml | 14 +++++++------- .github/workflows/setup-pre-commit/action.yaml | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/auto-cache/action.yaml b/.github/workflows/auto-cache/action.yaml index 173803f7f0..c5506e4769 100644 --- a/.github/workflows/auto-cache/action.yaml +++ b/.github/workflows/auto-cache/action.yaml @@ -19,7 +19,7 @@ runs: using: "composite" steps: - name: setup namespace cache - if: ${{ contains(runner.name, 'nsc') }} + if: ${{ contains(runner.name, 'nsc') }} uses: namespacelabs/nscloud-cache-action@v1 with: path: ${{ inputs.path }} diff --git a/.github/workflows/selfdrive_tests.yaml b/.github/workflows/selfdrive_tests.yaml index d1dff147f2..ce7dd7413c 100644 --- a/.github/workflows/selfdrive_tests.yaml +++ b/.github/workflows/selfdrive_tests.yaml @@ -69,7 +69,7 @@ jobs: matrix: arch: ${{ fromJson( ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || + ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && '["x86_64", "aarch64"]' || '["x86_64"]' ) }} runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-20.04' }} steps: @@ -122,7 +122,7 @@ jobs: static_analysis: name: static analysis runs-on: ${{ ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || + ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} steps: - uses: actions/checkout@v4 @@ -155,7 +155,7 @@ jobs: unit_tests: name: unit tests runs-on: ${{ ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || + ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} steps: - uses: actions/checkout@v4 @@ -186,7 +186,7 @@ jobs: process_replay: name: process replay runs-on: ${{ ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || + ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} steps: - uses: actions/checkout@v4 @@ -235,7 +235,7 @@ jobs: regen: name: regen runs-on: 'ubuntu-20.04' - steps: + steps: - uses: actions/checkout@v4 with: submodules: true @@ -293,7 +293,7 @@ jobs: test_cars: name: cars runs-on: ${{ ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || + ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} strategy: fail-fast: false @@ -395,7 +395,7 @@ jobs: run: > ${{ env.RUN }} "PYTHONWARNINGS=ignore && source selfdrive/test/setup_xvfb.sh && - export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' && + export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' && python selfdrive/ui/tests/test_ui/run.py" - name: Upload Test Report uses: actions/upload-artifact@v2 diff --git a/.github/workflows/setup-pre-commit/action.yaml b/.github/workflows/setup-pre-commit/action.yaml index 1b3e16e73f..f07a106861 100644 --- a/.github/workflows/setup-pre-commit/action.yaml +++ b/.github/workflows/setup-pre-commit/action.yaml @@ -4,7 +4,7 @@ runs: using: "composite" steps: - uses: ./.github/workflows/auto-cache - with: + with: path: .ci_cache/pre-commit key: pre-commit-${{ hashFiles('**/.pre-commit-config.yaml') }} restore-keys: | From f6afb09924bf5db88f7d1e8caa0e17410a3fa537 Mon Sep 17 00:00:00 2001 From: thomasgtsr <163129375+thomasgtsr@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:42:37 -0500 Subject: [PATCH 215/599] Hyundai: Santa Cruz 2024 fingerprint (#31856) * Update fingerprints.py * Update fingerprints.py * Update fingerprints.py * Update fingerprints.py * run bot --------- Co-authored-by: Shane Smiskol --- docs/CARS.md | 2 +- selfdrive/car/hyundai/fingerprints.py | 1 + selfdrive/car/hyundai/values.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 13381ec202..eed06f7110 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -110,7 +110,7 @@ A supported vehicle is one that just works when you install a comma device. All |Hyundai|Kona Electric (with HDA II, Korea only) 2023[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai R connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai I connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Palisade 2020-22|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Santa Cruz 2022-23[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Santa Cruz 2022-24[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe 2019-20|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe 2021-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe Hybrid 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 12303f806a..bd5503b47e 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1595,6 +1595,7 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-CW000 14M', b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-CW010 14X', + b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-CW020 14Z', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00NX4__ 1.00 1.00 99110-K5000 ', diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 79cec1f787..bc03d83925 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -360,7 +360,7 @@ class CAR(Platforms): ) SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI SANTA CRUZ 1ST GEN", - HyundaiCarInfo("Hyundai Santa Cruz 2022-23", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarInfo("Hyundai Santa Cruz 2022-24", car_parts=CarParts.common([CarHarness.hyundai_n])), # weight from Limited trim - the only supported trim, steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), ) From 1ecbbef46b265a36bce71cc45c0fdc521d849e06 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 14 Mar 2024 21:03:39 -0400 Subject: [PATCH 216/599] controlsd: fix saturation warning (#31869) fix saturation --- selfdrive/controls/controlsd.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 4190e84fb8..77bc787078 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -142,7 +142,6 @@ class Controls: self.current_alert_types = [ET.PERMANENT] self.logged_comm_issue = None self.not_running_prev = None - self.last_actuators = car.CarControl.Actuators.new_message() self.steer_limited = False self.desired_curvature = 0.0 self.experimental_mode = False @@ -621,7 +620,7 @@ class Controls: undershooting = abs(lac_log.desiredLateralAccel) / abs(1e-3 + lac_log.actualLateralAccel) > 1.2 turning = abs(lac_log.desiredLateralAccel) > 1.0 good_speed = CS.vEgo > 5 - max_torque = abs(self.last_actuators.steer) > 0.99 + max_torque = abs(actuators.steer) > 0.99 if undershooting and turning and good_speed and max_torque: lac_log.active and self.events.add(EventName.steerSaturated) elif lac_log.saturated: From ca5a2ed942c7560f11dd85b812c914f944318250 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 15 Mar 2024 00:58:25 -0400 Subject: [PATCH 217/599] move getting platform to get_params (#31871) * better * string * not here --- selfdrive/car/car_helpers.py | 5 +---- selfdrive/car/interfaces.py | 25 ++++++++++++++----------- selfdrive/car/tests/test_models.py | 4 ++-- tools/car_porting/test_car_model.py | 5 +---- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index b16e2e5a47..32a9dd84bd 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -5,7 +5,6 @@ from collections.abc import Callable from cereal import car from openpilot.common.params import Params from openpilot.common.basedir import BASEDIR -from openpilot.selfdrive.car.values import PLATFORMS from openpilot.system.version import is_comma_remote, is_tested_branch from openpilot.selfdrive.car.interfaces import get_interface_attr from openpilot.selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars @@ -192,9 +191,7 @@ def fingerprint(logcan, sendcan, num_pandas): fw_count=len(car_fw), ecu_responses=list(ecu_rx_addrs), vin_rx_addr=vin_rx_addr, vin_rx_bus=vin_rx_bus, fingerprints=repr(finger), fw_query_time=fw_query_time, error=True) - car_platform = PLATFORMS.get(car_fingerprint, MOCK.MOCK) - - return car_platform, finger, vin, car_fw, source, exact_match + return car_fingerprint, finger, vin, car_fw, source, exact_match def get_car_interface(CP): diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 9e9e668981..86f4cc7388 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -14,7 +14,8 @@ from openpilot.common.simple_kalman import KF1D, get_kalman_gain from openpilot.common.numpy_fast import clip from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, STD_CARGO_KG -from openpilot.selfdrive.car.values import Platform +from openpilot.selfdrive.car.mock.values import CAR as MOCK +from openpilot.selfdrive.car.values import PLATFORMS from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, get_friction from openpilot.selfdrive.controls.lib.events import Events from openpilot.selfdrive.controls.lib.vehicle_model import VehicleModel @@ -102,24 +103,26 @@ class CarInterfaceBase(ABC): return ACCEL_MIN, ACCEL_MAX @classmethod - def get_non_essential_params(cls, candidate: Platform): + def get_non_essential_params(cls, candidate: str): """ Parameters essential to controlling the car may be incomplete or wrong without FW versions or fingerprints. """ return cls.get_params(candidate, gen_empty_fingerprint(), list(), False, False) @classmethod - def get_params(cls, candidate: Platform, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, docs: bool): + def get_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, docs: bool): + platform = PLATFORMS.get(candidate, MOCK.MOCK) + ret = CarInterfaceBase.get_std_params(candidate) - ret.mass = candidate.config.specs.mass - ret.wheelbase = candidate.config.specs.wheelbase - ret.steerRatio = candidate.config.specs.steerRatio - ret.centerToFront = ret.wheelbase * candidate.config.specs.centerToFrontRatio - ret.minEnableSpeed = candidate.config.specs.minEnableSpeed - ret.minSteerSpeed = candidate.config.specs.minSteerSpeed - ret.tireStiffnessFactor = candidate.config.specs.tireStiffnessFactor - ret.flags |= int(candidate.config.flags) + ret.mass = platform.config.specs.mass + ret.wheelbase = platform.config.specs.wheelbase + ret.steerRatio = platform.config.specs.steerRatio + ret.centerToFront = ret.wheelbase * platform.config.specs.centerToFrontRatio + ret.minEnableSpeed = platform.config.specs.minEnableSpeed + ret.minSteerSpeed = platform.config.specs.minSteerSpeed + ret.tireStiffnessFactor = platform.config.specs.tireStiffnessFactor + ret.flags |= int(platform.config.flags) ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs) diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 1ef8c5b676..81dfe195b2 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -19,7 +19,7 @@ from openpilot.selfdrive.car.fingerprints import all_known_cars from openpilot.selfdrive.car.car_helpers import FRAME_FINGERPRINT, interfaces from openpilot.selfdrive.car.honda.values import CAR as HONDA, HondaFlags from openpilot.selfdrive.car.tests.routes import non_tested_cars, routes, CarTestRoute -from openpilot.selfdrive.car.values import PLATFORMS, Platform +from openpilot.selfdrive.car.values import Platform from openpilot.selfdrive.controls.controlsd import Controls from openpilot.selfdrive.test.helpers import read_segment_list from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT @@ -95,7 +95,7 @@ class TestCarModelBase(unittest.TestCase): if msg.carParams.openpilotLongitudinalControl: experimental_long = True if cls.platform is None and not cls.ci: - cls.platform = PLATFORMS.get(msg.carParams.carFingerprint) + cls.platform = msg.carParams.carFingerprint # Log which can frame the panda safety mode left ELM327, for CAN validity checks elif msg.which() == 'pandaStates': diff --git a/tools/car_porting/test_car_model.py b/tools/car_porting/test_car_model.py index 1dfac7dcf3..b4d263667c 100755 --- a/tools/car_porting/test_car_model.py +++ b/tools/car_porting/test_car_model.py @@ -5,7 +5,6 @@ import unittest from openpilot.selfdrive.car.tests.routes import CarTestRoute from openpilot.selfdrive.car.tests.test_models import TestCarModel -from openpilot.selfdrive.car.values import PLATFORMS from openpilot.tools.lib.route import SegmentName @@ -33,9 +32,7 @@ if __name__ == "__main__": route_or_segment_name = SegmentName(args.route_or_segment_name.strip(), allow_route_name=True) segment_num = route_or_segment_name.segment_num if route_or_segment_name.segment_num != -1 else None - platform = PLATFORMS.get(args.car) - - test_route = CarTestRoute(route_or_segment_name.route_name.canonical_name, platform, segment=segment_num) + test_route = CarTestRoute(route_or_segment_name.route_name.canonical_name, args.car, segment=segment_num) test_suite = create_test_models_suite([test_route], ci=args.ci) unittest.TextTestRunner().run(test_suite) From d5852ab1b35b42a8d66bd37eee66820ab357a094 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 14 Mar 2024 22:27:32 -0700 Subject: [PATCH 218/599] CarInterface: no platform config fallback (#31873) * no mock default * rm --- selfdrive/car/interfaces.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 86f4cc7388..97c9e84c96 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -14,7 +14,6 @@ from openpilot.common.simple_kalman import KF1D, get_kalman_gain from openpilot.common.numpy_fast import clip from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, STD_CARGO_KG -from openpilot.selfdrive.car.mock.values import CAR as MOCK from openpilot.selfdrive.car.values import PLATFORMS from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, get_friction from openpilot.selfdrive.controls.lib.events import Events @@ -111,10 +110,9 @@ class CarInterfaceBase(ABC): @classmethod def get_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, docs: bool): - platform = PLATFORMS.get(candidate, MOCK.MOCK) - ret = CarInterfaceBase.get_std_params(candidate) + platform = PLATFORMS[candidate] ret.mass = platform.config.specs.mass ret.wheelbase = platform.config.specs.wheelbase ret.steerRatio = platform.config.specs.steerRatio From bdae188c6f48bc1572f6ca0cc61c4735d11d02fb Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 15 Mar 2024 00:11:41 -0700 Subject: [PATCH 219/599] docs: don't support multi-type car info (#31875) don't support multi-type car info --- selfdrive/car/__init__.py | 5 +- selfdrive/car/body/values.py | 2 +- selfdrive/car/chrysler/values.py | 16 ++--- selfdrive/car/docs.py | 5 +- selfdrive/car/ford/values.py | 6 +- selfdrive/car/gm/values.py | 24 +++---- selfdrive/car/honda/values.py | 36 +++++----- selfdrive/car/hyundai/values.py | 104 ++++++++++++++--------------- selfdrive/car/mazda/values.py | 12 ++-- selfdrive/car/mock/values.py | 2 +- selfdrive/car/nissan/values.py | 10 +-- selfdrive/car/subaru/values.py | 26 ++++---- selfdrive/car/tesla/values.py | 6 +- selfdrive/car/toyota/values.py | 20 +++--- selfdrive/car/volkswagen/values.py | 30 ++++----- 15 files changed, 149 insertions(+), 155 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 1f784a4ab2..a875447762 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -245,9 +245,6 @@ class CanSignalRateCalculator: return self.rate -CarInfos = CarInfo | list[CarInfo] | None - - @dataclass(frozen=True, kw_only=True) class CarSpecs: mass: float # kg, curb weight @@ -265,7 +262,7 @@ class CarSpecs: @dataclass(order=True) class PlatformConfig(Freezable): platform_str: str - car_info: CarInfos + car_info: list[CarInfo] specs: CarSpecs dbc_dict: DbcDict diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index 46afa857aa..bbc7a86756 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -22,7 +22,7 @@ class CarControllerParams: class CAR(Platforms): BODY = PlatformConfig( "COMMA BODY", - CarInfo("comma body", package="All"), + [CarInfo("comma body", package="All")], CarSpecs(mass=9, wheelbase=0.406, steerRatio=0.5, centerToFrontRatio=0.44), dbc_dict('comma_body', None), ) diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 7dcfa3749e..3fa74a9539 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -34,22 +34,22 @@ class CAR(Platforms): # Chrysler PACIFICA_2017_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2017", - ChryslerCarInfo("Chrysler Pacifica Hybrid 2017"), + [ChryslerCarInfo("Chrysler Pacifica Hybrid 2017")], ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2), ) PACIFICA_2018_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2018", - ChryslerCarInfo("Chrysler Pacifica Hybrid 2018"), + [ChryslerCarInfo("Chrysler Pacifica Hybrid 2018")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2019_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2019", - ChryslerCarInfo("Chrysler Pacifica Hybrid 2019-23"), + [ChryslerCarInfo("Chrysler Pacifica Hybrid 2019-23")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2018 = ChryslerPlatformConfig( "CHRYSLER PACIFICA 2018", - ChryslerCarInfo("Chrysler Pacifica 2017-18"), + [ChryslerCarInfo("Chrysler Pacifica 2017-18")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2020 = ChryslerPlatformConfig( @@ -64,27 +64,27 @@ class CAR(Platforms): # Dodge DODGE_DURANGO = ChryslerPlatformConfig( "DODGE DURANGO 2021", - ChryslerCarInfo("Dodge Durango 2020-21"), + [ChryslerCarInfo("Dodge Durango 2020-21")], PACIFICA_2017_HYBRID.specs, ) # Jeep JEEP_GRAND_CHEROKEE = ChryslerPlatformConfig( # includes 2017 Trailhawk "JEEP GRAND CHEROKEE V6 2018", - ChryslerCarInfo("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk"), + [ChryslerCarInfo("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk")], ChryslerCarSpecs(mass=1778., wheelbase=2.71, steerRatio=16.7), ) JEEP_GRAND_CHEROKEE_2019 = ChryslerPlatformConfig( # includes 2020 Trailhawk "JEEP GRAND CHEROKEE 2019", - ChryslerCarInfo("Jeep Grand Cherokee 2019-21", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4"), + [ChryslerCarInfo("Jeep Grand Cherokee 2019-21", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4")], JEEP_GRAND_CHEROKEE.specs, ) # Ram RAM_1500 = ChryslerPlatformConfig( "RAM 1500 5TH GEN", - ChryslerCarInfo("Ram 1500 2019-24", car_parts=CarParts.common([CarHarness.ram])), + [ChryslerCarInfo("Ram 1500 2019-24", car_parts=CarParts.common([CarHarness.ram]))], ChryslerCarSpecs(mass=2493., wheelbase=3.88, steerRatio=16.3, minSteerSpeed=14.5), dbc_dict('chrysler_ram_dt_generated', None), ) diff --git a/selfdrive/car/docs.py b/selfdrive/car/docs.py index ce46bd93c2..24660261cb 100755 --- a/selfdrive/car/docs.py +++ b/selfdrive/car/docs.py @@ -34,13 +34,10 @@ def get_all_car_info() -> list[CarInfo]: CP = interfaces[model][0].get_params(platform, fingerprint=gen_empty_fingerprint(), car_fw=[car.CarParams.CarFw(ecu="unknown")], experimental_long=True, docs=True) - if CP.dashcamOnly or car_info is None: + if CP.dashcamOnly or not len(car_info): continue # A platform can include multiple car models - if not isinstance(car_info, list): - car_info = [car_info,] - for _car_info in car_info: if not hasattr(_car_info, "row"): _car_info.init_make(CP) diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 09c02d53a6..3b76be8c69 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -86,7 +86,7 @@ class FordCANFDPlatformConfig(FordPlatformConfig): class CAR(Platforms): BRONCO_SPORT_MK1 = FordPlatformConfig( "FORD BRONCO SPORT 1ST GEN", - FordCarInfo("Ford Bronco Sport 2021-23"), + [FordCarInfo("Ford Bronco Sport 2021-23")], CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), ) ESCAPE_MK4 = FordPlatformConfig( @@ -121,7 +121,7 @@ class CAR(Platforms): ) F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( "FORD F-150 LIGHTNING 1ST GEN", - FordCarInfo("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0"), + [FordCarInfo("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), ) FOCUS_MK4 = FordPlatformConfig( @@ -144,7 +144,7 @@ class CAR(Platforms): ) MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( "FORD MUSTANG MACH-E 1ST GEN", - FordCarInfo("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0"), + [FordCarInfo("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 5401963ee6..9e18ea18d5 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -92,52 +92,52 @@ class GMPlatformConfig(PlatformConfig): class CAR(Platforms): HOLDEN_ASTRA = GMPlatformConfig( "HOLDEN ASTRA RS-V BK 2017", - GMCarInfo("Holden Astra 2017"), + [GMCarInfo("Holden Astra 2017")], GMCarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), ) VOLT = GMPlatformConfig( "CHEVROLET VOLT PREMIER 2017", - GMCarInfo("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ"), + [GMCarInfo("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ")], GMCarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45, tireStiffnessFactor=0.469), ) CADILLAC_ATS = GMPlatformConfig( "CADILLAC ATS Premium Performance 2018", - GMCarInfo("Cadillac ATS Premium Performance 2018"), + [GMCarInfo("Cadillac ATS Premium Performance 2018")], GMCarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), ) MALIBU = GMPlatformConfig( "CHEVROLET MALIBU PREMIER 2017", - GMCarInfo("Chevrolet Malibu Premier 2017"), + [GMCarInfo("Chevrolet Malibu Premier 2017")], GMCarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), ) ACADIA = GMPlatformConfig( "GMC ACADIA DENALI 2018", - GMCarInfo("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo"), + [GMCarInfo("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo")], GMCarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), ) BUICK_LACROSSE = GMPlatformConfig( "BUICK LACROSSE 2017", - GMCarInfo("Buick LaCrosse 2017-19", "Driver Confidence Package 2"), + [GMCarInfo("Buick LaCrosse 2017-19", "Driver Confidence Package 2")], GMCarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), ) BUICK_REGAL = GMPlatformConfig( "BUICK REGAL ESSENCE 2018", - GMCarInfo("Buick Regal Essence 2018"), + [GMCarInfo("Buick Regal Essence 2018")], GMCarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), ) ESCALADE = GMPlatformConfig( "CADILLAC ESCALADE 2017", - GMCarInfo("Cadillac Escalade 2017", "Driver Assist Package"), + [GMCarInfo("Cadillac Escalade 2017", "Driver Assist Package")], GMCarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), ) ESCALADE_ESV = GMPlatformConfig( "CADILLAC ESCALADE ESV 2016", - GMCarInfo("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS"), + [GMCarInfo("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS")], GMCarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3, tireStiffnessFactor=1.0), ) ESCALADE_ESV_2019 = GMPlatformConfig( "CADILLAC ESCALADE ESV 2019", - GMCarInfo("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS"), + [GMCarInfo("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS")], ESCALADE_ESV.specs, ) BOLT_EUV = GMPlatformConfig( @@ -158,12 +158,12 @@ class CAR(Platforms): ) EQUINOX = GMPlatformConfig( "CHEVROLET EQUINOX 2019", - GMCarInfo("Chevrolet Equinox 2019-22"), + [GMCarInfo("Chevrolet Equinox 2019-22")], GMCarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), ) TRAILBLAZER = GMPlatformConfig( "CHEVROLET TRAILBLAZER 2021", - GMCarInfo("Chevrolet Trailblazer 2021-22"), + [GMCarInfo("Chevrolet Trailblazer 2021-22")], GMCarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index eed76c42ab..96de8b0b29 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -138,7 +138,7 @@ class CAR(Platforms): ) CIVIC_BOSCH_DIESEL = HondaBoschPlatformConfig( "HONDA CIVIC SEDAN 1.6 DIESEL 2019", - None, # don't show in docs + [], # don't show in docs CIVIC_BOSCH.specs, dbc_dict('honda_accord_2018_can_generated', None), ) @@ -154,7 +154,7 @@ class CAR(Platforms): ) CRV_5G = HondaBoschPlatformConfig( "HONDA CR-V 2017", - HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), + [HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS)], # steerRatio: 12.3 is spec end-to-end CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), @@ -162,34 +162,34 @@ class CAR(Platforms): ) CRV_HYBRID = HondaBoschPlatformConfig( "HONDA CR-V HYBRID 2019", - HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS), + [HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS)], # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_accord_2018_can_generated', None), ) HRV_3G = HondaBoschPlatformConfig( "HONDA HR-V 2023", - HondaCarInfo("Honda HR-V 2023", "All"), + [HondaCarInfo("Honda HR-V 2023", "All")], CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41, tireStiffnessFactor=0.5), dbc_dict('honda_civic_ex_2022_can_generated', None), flags=HondaFlags.BOSCH_RADARLESS | HondaFlags.BOSCH_ALT_BRAKE, ) ACURA_RDX_3G = HondaBoschPlatformConfig( "ACURA RDX 2020", - HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + [HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), # as spec dbc_dict('acura_rdx_2020_can_generated', None), flags=HondaFlags.BOSCH_ALT_BRAKE, ) INSIGHT = HondaBoschPlatformConfig( "HONDA INSIGHT 2019", - HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + [HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39, tireStiffnessFactor=0.82), # as spec dbc_dict('honda_insight_ex_2019_can_generated', None), ) HONDA_E = HondaBoschPlatformConfig( "HONDA E 2020", - HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), + [HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71, tireStiffnessFactor=0.82), dbc_dict('acura_rdx_2020_can_generated', None), ) @@ -197,63 +197,63 @@ class CAR(Platforms): # Nidec Cars ACURA_ILX = HondaNidecPlatformConfig( "ACURA ILX 2016", - HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), + [HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS)], CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37, tireStiffnessFactor=0.72), # 15.3 is spec end-to-end dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV = HondaNidecPlatformConfig( "HONDA CR-V 2016", - HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS), + [HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41, tireStiffnessFactor=0.444), # as spec dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV_EU = HondaNidecPlatformConfig( "HONDA CR-V EU 2016", - None, # Euro version of CRV Touring, don't show in docs + [], # Euro version of CRV Touring, don't show in docs CRV.specs, dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FIT = HondaNidecPlatformConfig( "HONDA FIT 2018", - HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS), + [HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FREED = HondaNidecPlatformConfig( "HONDA FREED 2020", - HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS), + [HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), # mostly copied from FIT dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) HRV = HondaNidecPlatformConfig( "HONDA HRV 2019", - HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS), + [HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS)], HRV_3G.specs, dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) ODYSSEY = HondaNidecPlatformConfig( "HONDA ODYSSEY 2018", - HondaCarInfo("Honda Odyssey 2018-20"), + [HondaCarInfo("Honda Odyssey 2018-20")], CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41, tireStiffnessFactor=0.82), dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_PCM_ACCEL, ) ODYSSEY_CHN = HondaNidecPlatformConfig( "HONDA ODYSSEY CHN 2019", - None, # Chinese version of Odyssey, don't show in docs + [], # Chinese version of Odyssey, don't show in docs ODYSSEY.specs, dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) ACURA_RDX = HondaNidecPlatformConfig( "ACURA RDX 2018", - HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), + [HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, @@ -270,14 +270,14 @@ class CAR(Platforms): ) RIDGELINE = HondaNidecPlatformConfig( "HONDA RIDGELINE 2017", - HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS), + [HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CIVIC = HondaNidecPlatformConfig( "HONDA CIVIC 2016", - HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE"), + [HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE")], CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), ) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index bc03d83925..c17d57880c 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -136,7 +136,7 @@ class CAR(Platforms): # Hyundai AZERA_6TH_GEN = HyundaiPlatformConfig( "HYUNDAI AZERA 6TH GEN", - HyundaiCarInfo("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + [HyundaiCarInfo("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=1600, wheelbase=2.885, steerRatio=14.5), ) AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( @@ -170,14 +170,14 @@ class CAR(Platforms): ) ELANTRA_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA 2021", - HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), + [HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=2800 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8, ) ELANTRA_HEV_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA HYBRID 2021", - HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", - car_parts=CarParts.common([CarHarness.hyundai_k])), + [HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", + car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) @@ -193,114 +193,114 @@ class CAR(Platforms): ) IONIQ = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2017-2019", - HyundaiCarInfo("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c])), + [HyundaiCarInfo("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2020-2022", - HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h])), # TODO: confirm 2020-21 harness, + [HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h]))], # TODO: confirm 2020-21 harness, CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) IONIQ_EV_LTD = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC LIMITED 2019", - HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), + [HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_EV_2020 = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC 2020", - HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + [HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV, ) IONIQ_PHEV_2019 = HyundaiPlatformConfig( "HYUNDAI IONIQ PLUG-IN HYBRID 2019", - HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), + [HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_PHEV = HyundaiPlatformConfig( "HYUNDAI IONIQ PHEV 2020", - HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + [HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID, ) KONA = HyundaiPlatformConfig( "HYUNDAI KONA 2020", - HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b])), + [HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b]))], CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CLUSTER_GEARS, ) KONA_EV = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2019", - HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g])), + [HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g]))], CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV, ) KONA_EV_2022 = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2022", - HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o])), + [HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o]))], CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV, ) KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI KONA ELECTRIC 2ND GEN", - HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", - car_parts=CarParts.common([CarHarness.hyundai_r])), + [HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", + car_parts=CarParts.common([CarHarness.hyundai_r]))], CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) KONA_HEV = HyundaiPlatformConfig( "HYUNDAI KONA HYBRID 2020", - HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i])), # TODO: check packages, + [HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i]))], # TODO: check packages, CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID, ) SANTA_FE = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2019", - HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", - car_parts=CarParts.common([CarHarness.hyundai_d])), + [HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", + car_parts=CarParts.common([CarHarness.hyundai_d]))], CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) SANTA_FE_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2022", - HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", - car_parts=CarParts.common([CarHarness.hyundai_l])), + [HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", + car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8, ) SANTA_FE_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE HYBRID 2022", - HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + [HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE PlUG-IN HYBRID 2022", - HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + [HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) SONATA = HyundaiPlatformConfig( "HYUNDAI SONATA 2020", - HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", - car_parts=CarParts.common([CarHarness.hyundai_a])), + [HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", + car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) SONATA_LF = HyundaiPlatformConfig( "HYUNDAI SONATA 2019", - HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + [HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI STARIA 4TH GEN", - HyundaiCarInfo("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + [HyundaiCarInfo("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=2205, wheelbase=3.273, steerRatio=11.94), # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf ) TUCSON = HyundaiPlatformConfig( @@ -323,13 +323,13 @@ class CAR(Platforms): ) VELOSTER = HyundaiPlatformConfig( "HYUNDAI VELOSTER 2019", - HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e])), + [HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS, ) SONATA_HYBRID = HyundaiPlatformConfig( "HYUNDAI SONATA HYBRID 2021", - HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + [HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], SONATA.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) @@ -345,7 +345,7 @@ class CAR(Platforms): ) IONIQ_6 = HyundaiCanFDPlatformConfig( "HYUNDAI IONIQ 6 2023", - HyundaiCarInfo("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])), + [HyundaiCarInfo("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p]))], IONIQ_5.specs, flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) @@ -360,13 +360,13 @@ class CAR(Platforms): ) SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI SANTA CRUZ 1ST GEN", - HyundaiCarInfo("Hyundai Santa Cruz 2022-24", car_parts=CarParts.common([CarHarness.hyundai_n])), + [HyundaiCarInfo("Hyundai Santa Cruz 2022-24", car_parts=CarParts.common([CarHarness.hyundai_n]))], # weight from Limited trim - the only supported trim, steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), ) CUSTIN_1ST_GEN = HyundaiPlatformConfig( "HYUNDAI CUSTIN 1ST GEN", - HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + [HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner flags=HyundaiFlags.CHECKSUM_CRC8, ) @@ -382,19 +382,19 @@ class CAR(Platforms): ) KIA_K5_2021 = HyundaiPlatformConfig( "KIA K5 2021", - HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a])), + [HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=3381 * CV.LB_TO_KG, wheelbase=2.85, steerRatio=13.27, tireStiffnessFactor=0.5), # 2021 Kia K5 Steering Ratio (all trims) flags=HyundaiFlags.CHECKSUM_CRC8, ) KIA_K5_HEV_2020 = HyundaiPlatformConfig( "KIA K5 HYBRID 2020", - HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a])), + [HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_K5_2021.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) KIA_K8_HEV_1ST_GEN = HyundaiCanFDPlatformConfig( "KIA K8 HYBRID 1ST GEN", - HyundaiCarInfo("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), + [HyundaiCarInfo("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q]))], # mass: https://carprices.ae/brands/kia/2023/k8/1.6-turbo-hybrid, steerRatio: guesstimate from K5 platform CarSpecs(mass=1630, wheelbase=2.895, steerRatio=13.27) ) @@ -411,7 +411,7 @@ class CAR(Platforms): ) KIA_NIRO_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO EV 2ND GEN", - HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + [HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_NIRO_EV.specs, flags=HyundaiFlags.EV, ) @@ -445,38 +445,38 @@ class CAR(Platforms): ) KIA_NIRO_HEV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO HYBRID 2ND GEN", - HyundaiCarInfo("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a])), + [HyundaiCarInfo("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_NIRO_EV.specs, ) KIA_OPTIMA_G4 = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN", - HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", - car_parts=CarParts.common([CarHarness.hyundai_b])), # TODO: may support 2016, 2018 + [HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", + car_parts=CarParts.common([CarHarness.hyundai_b]))], # TODO: may support 2016, 2018 CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) KIA_OPTIMA_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN FACELIFT", - HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g])), + [HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) # TODO: may support adjacent years. may have a non-zero minimum steering speed KIA_OPTIMA_H = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 2017 & SPORTS 2019", - HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c])), + [HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) KIA_OPTIMA_H_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 4TH GEN FACELIFT", - HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h])), + [HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, ) KIA_SELTOS = HyundaiPlatformConfig( "KIA SELTOS 2021", - HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a])), + [HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=1337, wheelbase=2.63, steerRatio=14.56), flags=HyundaiFlags.CHECKSUM_CRC8, ) @@ -501,7 +501,7 @@ class CAR(Platforms): ) KIA_SORENTO_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA SORENTO 4TH GEN", - HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k])), + [HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms flags=HyundaiFlags.RADAR_SCC, ) @@ -516,18 +516,18 @@ class CAR(Platforms): ) KIA_STINGER = HyundaiPlatformConfig( "KIA STINGER GT2 2018", - HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", - car_parts=CarParts.common([CarHarness.hyundai_c])), + [HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", + car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1825, wheelbase=2.78, steerRatio=14.4 * 1.15) # 15% higher at the center seems reasonable ) KIA_STINGER_2022 = HyundaiPlatformConfig( "KIA STINGER 2022", - HyundaiCarInfo("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + [HyundaiCarInfo("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], KIA_STINGER.specs, ) KIA_CEED = HyundaiPlatformConfig( "KIA CEED INTRO ED 2019", - HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e])), + [HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=1450, wheelbase=2.65, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY, ) @@ -563,13 +563,13 @@ class CAR(Platforms): ) GENESIS_G70 = HyundaiPlatformConfig( "GENESIS G70 2018", - HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + [HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), flags=HyundaiFlags.LEGACY, ) GENESIS_G70_2020 = HyundaiPlatformConfig( "GENESIS G70 2020", - HyundaiCarInfo("Genesis G70 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + [HyundaiCarInfo("Genesis G70 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), flags=HyundaiFlags.MANDO_RADAR, ) @@ -584,18 +584,18 @@ class CAR(Platforms): ) GENESIS_G80 = HyundaiPlatformConfig( "GENESIS G80 2017", - HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + [HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5), flags=HyundaiFlags.LEGACY, ) GENESIS_G90 = HyundaiPlatformConfig( "GENESIS G90 2017", - HyundaiCarInfo("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), + [HyundaiCarInfo("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=2200, wheelbase=3.15, steerRatio=12.069), ) GENESIS_GV80 = HyundaiCanFDPlatformConfig( "GENESIS GV80 2023", - HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), + [HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m]))], CarSpecs(mass=2258, wheelbase=2.95, steerRatio=14.14), flags=HyundaiFlags.RADAR_SCC, ) diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index b55690f39a..2bb5b4ff08 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -52,32 +52,32 @@ class MazdaPlatformConfig(PlatformConfig): class CAR(Platforms): CX5 = MazdaPlatformConfig( "MAZDA CX-5", - MazdaCarInfo("Mazda CX-5 2017-21"), + [MazdaCarInfo("Mazda CX-5 2017-21")], MazdaCarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) ) CX9 = MazdaPlatformConfig( "MAZDA CX-9", - MazdaCarInfo("Mazda CX-9 2016-20"), + [MazdaCarInfo("Mazda CX-9 2016-20")], MazdaCarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) ) MAZDA3 = MazdaPlatformConfig( "MAZDA 3", - MazdaCarInfo("Mazda 3 2017-18"), + [MazdaCarInfo("Mazda 3 2017-18")], MazdaCarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) ) MAZDA6 = MazdaPlatformConfig( "MAZDA 6", - MazdaCarInfo("Mazda 6 2017-20"), + [MazdaCarInfo("Mazda 6 2017-20")], MazdaCarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) ) CX9_2021 = MazdaPlatformConfig( "MAZDA CX-9 2021", - MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4"), + [MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4")], CX9.specs ) CX5_2022 = MazdaPlatformConfig( "MAZDA CX-5 2022", - MazdaCarInfo("Mazda CX-5 2022-24"), + [MazdaCarInfo("Mazda CX-5 2022-24")], CX5.specs, ) diff --git a/selfdrive/car/mock/values.py b/selfdrive/car/mock/values.py index ddab599a93..214c6809db 100644 --- a/selfdrive/car/mock/values.py +++ b/selfdrive/car/mock/values.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms class CAR(Platforms): MOCK = PlatformConfig( 'mock', - None, + [], CarSpecs(mass=1700, wheelbase=2.7, steerRatio=13), {} ) diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index c0ccb0febf..dd51437dd9 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -39,26 +39,26 @@ class NissanPlaformConfig(PlatformConfig): class CAR(Platforms): XTRAIL = NissanPlaformConfig( "NISSAN X-TRAIL 2017", - NissanCarInfo("Nissan X-Trail 2017"), + [NissanCarInfo("Nissan X-Trail 2017")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) LEAF = NissanPlaformConfig( "NISSAN LEAF 2018", - NissanCarInfo("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY"), + [NissanCarInfo("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY")], NissanCarSpecs(mass=1610, wheelbase=2.705), dbc_dict('nissan_leaf_2018_generated', None), ) # Leaf with ADAS ECU found behind instrument cluster instead of glovebox # Currently the only known difference between them is the inverted seatbelt signal. - LEAF_IC = LEAF.override(platform_str="NISSAN LEAF 2018 Instrument Cluster", car_info=None) + LEAF_IC = LEAF.override(platform_str="NISSAN LEAF 2018 Instrument Cluster", car_info=[]) ROGUE = NissanPlaformConfig( "NISSAN ROGUE 2019", - NissanCarInfo("Nissan Rogue 2018-20"), + [NissanCarInfo("Nissan Rogue 2018-20")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) ALTIMA = NissanPlaformConfig( "NISSAN ALTIMA 2020", - NissanCarInfo("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b])), + [NissanCarInfo("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b]))], NissanCarSpecs(mass=1492, wheelbase=2.824) ) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 6f799e2206..d1faed47f0 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -122,17 +122,17 @@ class CAR(Platforms): # Global platform ASCENT = SubaruPlatformConfig( "SUBARU ASCENT LIMITED 2019", - SubaruCarInfo("Subaru Ascent 2019-21", "All"), + [SubaruCarInfo("Subaru Ascent 2019-21", "All")], CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), ) OUTBACK = SubaruGen2PlatformConfig( "SUBARU OUTBACK 6TH GEN", - SubaruCarInfo("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), + [SubaruCarInfo("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), ) LEGACY = SubaruGen2PlatformConfig( "SUBARU LEGACY 7TH GEN", - SubaruCarInfo("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), + [SubaruCarInfo("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], OUTBACK.specs, ) IMPREZA = SubaruPlatformConfig( @@ -157,47 +157,47 @@ class CAR(Platforms): # TODO: is there an XV and Impreza too? CROSSTREK_HYBRID = SubaruPlatformConfig( "SUBARU CROSSTREK HYBRID 2020", - SubaruCarInfo("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b])), + [SubaruCarInfo("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b]))], CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.HYBRID, ) FORESTER = SubaruPlatformConfig( "SUBARU FORESTER 2019", - SubaruCarInfo("Subaru Forester 2019-21", "All"), + [SubaruCarInfo("Subaru Forester 2019-21", "All")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.STEER_RATE_LIMITED, ) FORESTER_HYBRID = SubaruPlatformConfig( "SUBARU FORESTER HYBRID 2020", - SubaruCarInfo("Subaru Forester Hybrid 2020"), + [SubaruCarInfo("Subaru Forester Hybrid 2020")], FORESTER.specs, flags=SubaruFlags.HYBRID, ) # Pre-global FORESTER_PREGLOBAL = SubaruPlatformConfig( "SUBARU FORESTER 2017 - 2018", - SubaruCarInfo("Subaru Forester 2017-18"), + [SubaruCarInfo("Subaru Forester 2017-18")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), dbc_dict('subaru_forester_2017_generated', None), flags=SubaruFlags.PREGLOBAL, ) LEGACY_PREGLOBAL = SubaruPlatformConfig( "SUBARU LEGACY 2015 - 2018", - SubaruCarInfo("Subaru Legacy 2015-18"), + [SubaruCarInfo("Subaru Legacy 2015-18")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), dbc_dict('subaru_outback_2015_generated', None), flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL = SubaruPlatformConfig( "SUBARU OUTBACK 2015 - 2017", - SubaruCarInfo("Subaru Outback 2015-17"), + [SubaruCarInfo("Subaru Outback 2015-17")], FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2015_generated', None), flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( "SUBARU OUTBACK 2018 - 2019", - SubaruCarInfo("Subaru Outback 2018-19"), + [SubaruCarInfo("Subaru Outback 2018-19")], FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2019_generated', None), flags=SubaruFlags.PREGLOBAL, @@ -205,19 +205,19 @@ class CAR(Platforms): # Angle LKAS FORESTER_2022 = SubaruPlatformConfig( "SUBARU FORESTER 2022", - SubaruCarInfo("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c])), + [SubaruCarInfo("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c]))], FORESTER.specs, flags=SubaruFlags.LKAS_ANGLE, ) OUTBACK_2023 = SubaruGen2PlatformConfig( "SUBARU OUTBACK 7TH GEN", - SubaruCarInfo("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), + [SubaruCarInfo("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], OUTBACK.specs, flags=SubaruFlags.LKAS_ANGLE, ) ASCENT_2023 = SubaruGen2PlatformConfig( "SUBARU ASCENT 2023", - SubaruCarInfo("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), + [SubaruCarInfo("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], ASCENT.specs, flags=SubaruFlags.LKAS_ANGLE, ) diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index ca3bb38a7a..d098e93182 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -12,19 +12,19 @@ Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values']) class CAR(Platforms): AP1_MODELS = PlatformConfig( 'TESLA AP1 MODEL S', - CarInfo("Tesla AP1 Model S", "All"), + [CarInfo("Tesla AP1 Model S", "All")], CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0), dbc_dict('tesla_powertrain', 'tesla_radar_bosch_generated', chassis_dbc='tesla_can') ) AP2_MODELS = PlatformConfig( 'TESLA AP2 MODEL S', - CarInfo("Tesla AP2 Model S", "All"), + [CarInfo("Tesla AP2 Model S", "All")], AP1_MODELS.specs, AP1_MODELS.dbc_dict ) MODELS_RAVEN = PlatformConfig( 'TESLA MODEL S RAVEN', - CarInfo("Tesla Model S Raven", "All"), + [CarInfo("Tesla Model S Raven", "All")], AP1_MODELS.specs, dbc_dict('tesla_powertrain', 'tesla_radar_continental_generated', chassis_dbc='tesla_can') ) diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 2be7ca1865..ce035ae573 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -158,7 +158,7 @@ class CAR(Platforms): ) COROLLA = PlatformConfig( "TOYOTA COROLLA 2017", - ToyotaCarInfo("Toyota Corolla 2017-19"), + [ToyotaCarInfo("Toyota Corolla 2017-19")], CarSpecs(mass=2860. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=18.27, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) @@ -207,7 +207,7 @@ class CAR(Platforms): ) PRIUS_V = PlatformConfig( "TOYOTA PRIUS v 2017", - ToyotaCarInfo("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED), + [ToyotaCarInfo("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED)], CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, @@ -267,12 +267,12 @@ class CAR(Platforms): ) MIRAI = ToyotaTSS2PlatformConfig( "TOYOTA MIRAI 2021", # TSS 2.5 - ToyotaCarInfo("Toyota Mirai 2021"), + [ToyotaCarInfo("Toyota Mirai 2021")], CarSpecs(mass=4300. * CV.LB_TO_KG, wheelbase=2.91, steerRatio=14.8, tireStiffnessFactor=0.8), ) SIENNA = PlatformConfig( "TOYOTA SIENNA 2018", - ToyotaCarInfo("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED), + [ToyotaCarInfo("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED)], CarSpecs(mass=4590. * CV.LB_TO_KG, wheelbase=3.03, steerRatio=15.5, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER, @@ -281,7 +281,7 @@ class CAR(Platforms): # Lexus LEXUS_CTH = PlatformConfig( "LEXUS CT HYBRID 2018", - ToyotaCarInfo("Lexus CT Hybrid 2017-18", "Lexus Safety System+"), + [ToyotaCarInfo("Lexus CT Hybrid 2017-18", "Lexus Safety System+")], CarSpecs(mass=3108. * CV.LB_TO_KG, wheelbase=2.6, steerRatio=18.6, tireStiffnessFactor=0.517), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) @@ -304,14 +304,14 @@ class CAR(Platforms): ) LEXUS_IS = PlatformConfig( "LEXUS IS 2018", - ToyotaCarInfo("Lexus IS 2017-19"), + [ToyotaCarInfo("Lexus IS 2017-19")], CarSpecs(mass=3736.8 * CV.LB_TO_KG, wheelbase=2.79908, steerRatio=13.3, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, ) LEXUS_IS_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS IS 2023", - ToyotaCarInfo("Lexus IS 2022-23"), + [ToyotaCarInfo("Lexus IS 2022-23")], LEXUS_IS.specs, ) LEXUS_NX = PlatformConfig( @@ -333,12 +333,12 @@ class CAR(Platforms): ) LEXUS_LC_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS LC 2024", - ToyotaCarInfo("Lexus LC 2024"), + [ToyotaCarInfo("Lexus LC 2024")], CarSpecs(mass=4500. * CV.LB_TO_KG, wheelbase=2.87, steerRatio=13.0, tireStiffnessFactor=0.444), ) LEXUS_RC = PlatformConfig( "LEXUS RC 2020", - ToyotaCarInfo("Lexus RC 2018-20"), + [ToyotaCarInfo("Lexus RC 2018-20")], LEXUS_IS.specs, dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, @@ -365,7 +365,7 @@ class CAR(Platforms): ) LEXUS_GS_F = PlatformConfig( "LEXUS GS F 2016", - ToyotaCarInfo("Lexus GS F 2016"), + [ToyotaCarInfo("Lexus GS F 2016")], CarSpecs(mass=4034. * CV.LB_TO_KG, wheelbase=2.84988, steerRatio=13.3, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index a45ddf431f..83b30d2569 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -250,7 +250,7 @@ class CAR(Platforms): ) PASSAT_NMS = VolkswagenPQPlatformConfig( "VOLKSWAGEN PASSAT NMS", # Chassis A3 - VWCarInfo("Volkswagen Passat NMS 2017-22"), + [VWCarInfo("Volkswagen Passat NMS 2017-22")], VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS), ) POLO_MK6 = VolkswagenMQBPlatformConfig( @@ -271,12 +271,12 @@ class CAR(Platforms): ) TAOS_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TAOS 1ST GEN", # Chassis B2 - VWCarInfo("Volkswagen Taos 2022-23"), + [VWCarInfo("Volkswagen Taos 2022-23")], VolkswagenCarSpecs(mass=1498, wheelbase=2.69), ) TCROSS_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN T-CROSS 1ST GEN", # Chassis C1 - VWCarInfo("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0]), + [VWCarInfo("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1150, wheelbase=2.60), ) TIGUAN_MK2 = VolkswagenMQBPlatformConfig( @@ -289,7 +289,7 @@ class CAR(Platforms): ) TOURAN_MK2 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TOURAN 2ND GEN", # Chassis 1T - VWCarInfo("Volkswagen Touran 2016-23"), + [VWCarInfo("Volkswagen Touran 2016-23")], VolkswagenCarSpecs(mass=1516, wheelbase=2.79), ) TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( @@ -302,7 +302,7 @@ class CAR(Platforms): ) TROC_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN T-ROC 1ST GEN", # Chassis A1 - VWCarInfo("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0]), + [VWCarInfo("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1413, wheelbase=2.63), ) AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( @@ -317,42 +317,42 @@ class CAR(Platforms): ) AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( "AUDI Q2 1ST GEN", # Chassis GA - VWCarInfo("Audi Q2 2018"), + [VWCarInfo("Audi Q2 2018")], VolkswagenCarSpecs(mass=1205, wheelbase=2.61), ) AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( "AUDI Q3 2ND GEN", # Chassis 8U/F3/FS - VWCarInfo("Audi Q3 2019-23"), + [VWCarInfo("Audi Q3 2019-23")], VolkswagenCarSpecs(mass=1623, wheelbase=2.68), ) SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( "SEAT ATECA 1ST GEN", # Chassis 5F - VWCarInfo("SEAT Ateca 2018"), + [VWCarInfo("SEAT Ateca 2018")], VolkswagenCarSpecs(mass=1900, wheelbase=2.64), ) SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( "SEAT LEON 3RD GEN", # Chassis 5F - VWCarInfo("SEAT Leon 2014-20"), + [VWCarInfo("SEAT Leon 2014-20")], VolkswagenCarSpecs(mass=1227, wheelbase=2.64), ) SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( "SKODA FABIA 4TH GEN", # Chassis PJ - VWCarInfo("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0]), + [VWCarInfo("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1266, wheelbase=2.56), ) SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KAMIQ 1ST GEN", # Chassis NW - VWCarInfo("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ]), + [VWCarInfo("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ])], VolkswagenCarSpecs(mass=1265, wheelbase=2.66), ) SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KAROQ 1ST GEN", # Chassis NU - VWCarInfo("Škoda Karoq 2019-23"), + [VWCarInfo("Škoda Karoq 2019-23")], VolkswagenCarSpecs(mass=1278, wheelbase=2.66), ) SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KODIAQ 1ST GEN", # Chassis NS - VWCarInfo("Škoda Kodiaq 2017-23"), + [VWCarInfo("Škoda Kodiaq 2017-23")], VolkswagenCarSpecs(mass=1569, wheelbase=2.79), ) SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( @@ -365,12 +365,12 @@ class CAR(Platforms): ) SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( "SKODA SCALA 1ST GEN", # Chassis NW - VWCarInfo("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0]), + [VWCarInfo("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1192, wheelbase=2.65), ) SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( "SKODA SUPERB 3RD GEN", # Chassis 3V/NP - VWCarInfo("Škoda Superb 2015-22"), + [VWCarInfo("Škoda Superb 2015-22")], VolkswagenCarSpecs(mass=1505, wheelbase=2.84), ) From 1d7860701f6d2b2c65d8cefd18b7d882a0d4c51c Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 15 Mar 2024 11:09:37 -0700 Subject: [PATCH 220/599] close > bad PR --- docs/BOUNTIES.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/BOUNTIES.md b/docs/BOUNTIES.md index 5ff5dd939f..3f55707423 100644 --- a/docs/BOUNTIES.md +++ b/docs/BOUNTIES.md @@ -10,7 +10,8 @@ Get paid to improve openpilot! * open a ticket at [comma.ai/support](https://comma.ai/support/shop-order) with links to your PRs to claim * get an extra 20% if you redeem your bounty in [comma shop](https://comma.ai/shop) credit (including refunds on previous orders) -New bounties can be proposed in the [**#contributing**](https://discord.com/channels/469524606043160576/1183173332531687454) channel in Discord. +We put up each bounty with the intention that it'll get merged, but ocasionally the right resolution is to close the bounty, which only becomes clear once some effort is put in. +This is still valuable work, so we'll pay out $100 for getting any bounty closed with a good explanation. ## Issue bounties @@ -20,6 +21,8 @@ We've tagged bounty-eligible issues across openpilot and the rest of our repos; * **$500** - a few days of work for an experienced openpilot developer * **$1k+** - a week or two of work (could be less for the right person) +New bounties can be proposed in the [**#contributing**](https://discord.com/channels/469524606043160576/1183173332531687454) channel in Discord. + ## Car bounties The car bounties only apply to cars that have a path to ship in openpilot release, which excludes unsupportable cars (e.g. Fords with a steering lockout) or cars that require extra hardware (Honda Accord with serial steering). From 824782d6376998f06637fba87807430fc93ea99e Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 15 Mar 2024 11:11:54 -0700 Subject: [PATCH 221/599] fix typo --- docs/BOUNTIES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/BOUNTIES.md b/docs/BOUNTIES.md index 3f55707423..7e7ee3b8d3 100644 --- a/docs/BOUNTIES.md +++ b/docs/BOUNTIES.md @@ -10,7 +10,7 @@ Get paid to improve openpilot! * open a ticket at [comma.ai/support](https://comma.ai/support/shop-order) with links to your PRs to claim * get an extra 20% if you redeem your bounty in [comma shop](https://comma.ai/shop) credit (including refunds on previous orders) -We put up each bounty with the intention that it'll get merged, but ocasionally the right resolution is to close the bounty, which only becomes clear once some effort is put in. +We put up each bounty with the intention that it'll get merged, but occasionally the right resolution is to close the bounty, which only becomes clear once some effort is put in. This is still valuable work, so we'll pay out $100 for getting any bounty closed with a good explanation. ## Issue bounties From 655e5f7c3e0312054da1f3075bf6b20d97d8a15c Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 15 Mar 2024 14:45:44 -0400 Subject: [PATCH 222/599] rename CarInfo to CarDocs (#31879) car info to car docs --- .github/PULL_REQUEST_TEMPLATE/car_port.md | 2 +- .github/pull_request_template.md | 2 +- selfdrive/car/__init__.py | 4 +- selfdrive/car/body/values.py | 4 +- selfdrive/car/chrysler/values.py | 28 ++-- selfdrive/car/docs.py | 12 +- selfdrive/car/docs_definitions.py | 6 +- selfdrive/car/ford/values.py | 46 +++--- selfdrive/car/gm/values.py | 36 ++--- selfdrive/car/honda/values.py | 52 +++--- selfdrive/car/hyundai/values.py | 186 +++++++++++----------- selfdrive/car/mazda/values.py | 16 +- selfdrive/car/nissan/values.py | 12 +- selfdrive/car/subaru/values.py | 42 ++--- selfdrive/car/tesla/values.py | 8 +- selfdrive/car/tests/test_docs.py | 2 +- selfdrive/car/toyota/values.py | 136 ++++++++-------- selfdrive/car/volkswagen/values.py | 120 +++++++------- 18 files changed, 357 insertions(+), 357 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/car_port.md b/.github/PULL_REQUEST_TEMPLATE/car_port.md index 690c24c9b0..c7aa2b96c2 100644 --- a/.github/PULL_REQUEST_TEMPLATE/car_port.md +++ b/.github/PULL_REQUEST_TEMPLATE/car_port.md @@ -8,7 +8,7 @@ assignees: '' **Checklist** -- [ ] added entry to CarInfo in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs +- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs - [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py) - [ ] route with openpilot: - [ ] route with stock system: diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 3e3f42dcbc..2b4a5ed48f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -44,7 +44,7 @@ Explain how you tested this bug fix. **Checklist** -- [ ] added entry to CarInfo in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs +- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs - [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py) - [ ] route with openpilot: - [ ] route with stock system: diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index a875447762..3c6d8b7996 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -9,7 +9,7 @@ import capnp from cereal import car from openpilot.common.numpy_fast import clip, interp from openpilot.common.utils import Freezable -from openpilot.selfdrive.car.docs_definitions import CarInfo +from openpilot.selfdrive.car.docs_definitions import CarDocs # kg of standard extra cargo to count for drive, gas, etc... @@ -262,7 +262,7 @@ class CarSpecs: @dataclass(order=True) class PlatformConfig(Freezable): platform_str: str - car_info: list[CarInfo] + car_info: list[CarDocs] specs: CarSpecs dbc_dict: DbcDict diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index bbc7a86756..d1ba0159fb 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -1,6 +1,6 @@ from cereal import car from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarInfo +from openpilot.selfdrive.car.docs_definitions import CarDocs from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -22,7 +22,7 @@ class CarControllerParams: class CAR(Platforms): BODY = PlatformConfig( "COMMA BODY", - [CarInfo("comma body", package="All")], + [CarDocs("comma body", package="All")], CarSpecs(mass=9, wheelbase=0.406, steerRatio=0.5, centerToFrontRatio=0.44), dbc_dict('comma_body', None), ) diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 3fa74a9539..dfda1d1aaa 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -4,7 +4,7 @@ from dataclasses import dataclass, field from cereal import car from panda.python import uds from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts +from openpilot.selfdrive.car.docs_definitions import CarHarness, CarDocs, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu @@ -15,7 +15,7 @@ class ChryslerFlags(IntFlag): HIGHER_MIN_STEERING_SPEED = 1 @dataclass -class ChryslerCarInfo(CarInfo): +class ChryslerCarDocs(CarDocs): package: str = "Adaptive Cruise Control (ACC)" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.fca])) @@ -34,29 +34,29 @@ class CAR(Platforms): # Chrysler PACIFICA_2017_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2017", - [ChryslerCarInfo("Chrysler Pacifica Hybrid 2017")], + [ChryslerCarDocs("Chrysler Pacifica Hybrid 2017")], ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2), ) PACIFICA_2018_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2018", - [ChryslerCarInfo("Chrysler Pacifica Hybrid 2018")], + [ChryslerCarDocs("Chrysler Pacifica Hybrid 2018")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2019_HYBRID = ChryslerPlatformConfig( "CHRYSLER PACIFICA HYBRID 2019", - [ChryslerCarInfo("Chrysler Pacifica Hybrid 2019-23")], + [ChryslerCarDocs("Chrysler Pacifica Hybrid 2019-23")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2018 = ChryslerPlatformConfig( "CHRYSLER PACIFICA 2018", - [ChryslerCarInfo("Chrysler Pacifica 2017-18")], + [ChryslerCarDocs("Chrysler Pacifica 2017-18")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2020 = ChryslerPlatformConfig( "CHRYSLER PACIFICA 2020", [ - ChryslerCarInfo("Chrysler Pacifica 2019-20"), - ChryslerCarInfo("Chrysler Pacifica 2021-23", package="All"), + ChryslerCarDocs("Chrysler Pacifica 2019-20"), + ChryslerCarDocs("Chrysler Pacifica 2021-23", package="All"), ], PACIFICA_2017_HYBRID.specs, ) @@ -64,35 +64,35 @@ class CAR(Platforms): # Dodge DODGE_DURANGO = ChryslerPlatformConfig( "DODGE DURANGO 2021", - [ChryslerCarInfo("Dodge Durango 2020-21")], + [ChryslerCarDocs("Dodge Durango 2020-21")], PACIFICA_2017_HYBRID.specs, ) # Jeep JEEP_GRAND_CHEROKEE = ChryslerPlatformConfig( # includes 2017 Trailhawk "JEEP GRAND CHEROKEE V6 2018", - [ChryslerCarInfo("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk")], + [ChryslerCarDocs("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk")], ChryslerCarSpecs(mass=1778., wheelbase=2.71, steerRatio=16.7), ) JEEP_GRAND_CHEROKEE_2019 = ChryslerPlatformConfig( # includes 2020 Trailhawk "JEEP GRAND CHEROKEE 2019", - [ChryslerCarInfo("Jeep Grand Cherokee 2019-21", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4")], + [ChryslerCarDocs("Jeep Grand Cherokee 2019-21", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4")], JEEP_GRAND_CHEROKEE.specs, ) # Ram RAM_1500 = ChryslerPlatformConfig( "RAM 1500 5TH GEN", - [ChryslerCarInfo("Ram 1500 2019-24", car_parts=CarParts.common([CarHarness.ram]))], + [ChryslerCarDocs("Ram 1500 2019-24", car_parts=CarParts.common([CarHarness.ram]))], ChryslerCarSpecs(mass=2493., wheelbase=3.88, steerRatio=16.3, minSteerSpeed=14.5), dbc_dict('chrysler_ram_dt_generated', None), ) RAM_HD = ChryslerPlatformConfig( "RAM HD 5TH GEN", [ - ChryslerCarInfo("Ram 2500 2020-24", car_parts=CarParts.common([CarHarness.ram])), - ChryslerCarInfo("Ram 3500 2019-22", car_parts=CarParts.common([CarHarness.ram])), + ChryslerCarDocs("Ram 2500 2020-24", car_parts=CarParts.common([CarHarness.ram])), + ChryslerCarDocs("Ram 3500 2019-22", car_parts=CarParts.common([CarHarness.ram])), ], ChryslerCarSpecs(mass=3405., wheelbase=3.785, steerRatio=15.61, minSteerSpeed=16.), dbc_dict('chrysler_ram_hd_generated', None), diff --git a/selfdrive/car/docs.py b/selfdrive/car/docs.py index 24660261cb..4d0a1f45b2 100755 --- a/selfdrive/car/docs.py +++ b/selfdrive/car/docs.py @@ -9,7 +9,7 @@ from natsort import natsorted from cereal import car from openpilot.common.basedir import BASEDIR from openpilot.selfdrive.car import gen_empty_fingerprint -from openpilot.selfdrive.car.docs_definitions import CarInfo, Column, CommonFootnote, PartType +from openpilot.selfdrive.car.docs_definitions import CarDocs, Column, CommonFootnote, PartType from openpilot.selfdrive.car.car_helpers import interfaces, get_interface_attr from openpilot.selfdrive.car.values import PLATFORMS @@ -25,8 +25,8 @@ CARS_MD_OUT = os.path.join(BASEDIR, "docs", "CARS.md") CARS_MD_TEMPLATE = os.path.join(BASEDIR, "selfdrive", "car", "CARS_template.md") -def get_all_car_info() -> list[CarInfo]: - all_car_info: list[CarInfo] = [] +def get_all_car_info() -> list[CarDocs]: + all_car_info: list[CarDocs] = [] footnotes = get_all_footnotes() for model, platform in PLATFORMS.items(): car_info = platform.config.car_info @@ -45,18 +45,18 @@ def get_all_car_info() -> list[CarInfo]: all_car_info.append(_car_info) # Sort cars by make and model + year - sorted_cars: list[CarInfo] = natsorted(all_car_info, key=lambda car: car.name.lower()) + sorted_cars: list[CarDocs] = natsorted(all_car_info, key=lambda car: car.name.lower()) return sorted_cars -def group_by_make(all_car_info: list[CarInfo]) -> dict[str, list[CarInfo]]: +def group_by_make(all_car_info: list[CarDocs]) -> dict[str, list[CarDocs]]: sorted_car_info = defaultdict(list) for car_info in all_car_info: sorted_car_info[car_info.make].append(car_info) return dict(sorted_car_info) -def generate_cars_md(all_car_info: list[CarInfo], template_fn: str) -> str: +def generate_cars_md(all_car_info: list[CarDocs], template_fn: str) -> str: with open(template_fn) as f: template = jinja2.Template(f.read(), trim_blocks=True, lstrip_blocks=True) diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py index 1adf78b1c8..c9d8dd10a8 100644 --- a/selfdrive/car/docs_definitions.py +++ b/selfdrive/car/docs_definitions.py @@ -220,7 +220,7 @@ def split_name(name: str) -> tuple[str, str, str]: @dataclass -class CarInfo: +class CarDocs: # make + model + model years name: str @@ -266,7 +266,7 @@ class CarInfo: # min steer & enable speed columns # TODO: set all the min steer speeds in carParams and remove this if self.min_steer_speed is not None: - assert CP.minSteerSpeed == 0, f"{CP.carFingerprint}: Minimum steer speed set in both CarInfo and CarParams" + assert CP.minSteerSpeed == 0, f"{CP.carFingerprint}: Minimum steer speed set in both CarDocs and CarParams" else: self.min_steer_speed = CP.minSteerSpeed @@ -317,7 +317,7 @@ class CarInfo: return self def init_make(self, CP: car.CarParams): - """CarInfo subclasses can add make-specific logic for harness selection, footnotes, etc.""" + """CarDocs subclasses can add make-specific logic for harness selection, footnotes, etc.""" def get_detail_sentence(self, CP): if not CP.notCar: diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 3b76be8c69..5869a800a3 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -4,7 +4,7 @@ from enum import Enum, IntFlag import panda.python.uds as uds from cereal import car from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, dbc_dict, DbcDict, PlatformConfig, Platforms -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, \ Device from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 @@ -58,7 +58,7 @@ class Footnote(Enum): @dataclass -class FordCarInfo(CarInfo): +class FordCarDocs(CarDocs): package: str = "Co-Pilot360 Assist+" def init_make(self, CP: car.CarParams): @@ -86,65 +86,65 @@ class FordCANFDPlatformConfig(FordPlatformConfig): class CAR(Platforms): BRONCO_SPORT_MK1 = FordPlatformConfig( "FORD BRONCO SPORT 1ST GEN", - [FordCarInfo("Ford Bronco Sport 2021-23")], + [FordCarDocs("Ford Bronco Sport 2021-23")], CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), ) ESCAPE_MK4 = FordPlatformConfig( "FORD ESCAPE 4TH GEN", [ - FordCarInfo("Ford Escape 2020-22"), - FordCarInfo("Ford Escape Hybrid 2020-22"), - FordCarInfo("Ford Escape Plug-in Hybrid 2020-22"), - FordCarInfo("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering"), - FordCarInfo("Ford Kuga Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), - FordCarInfo("Ford Kuga Plug-in Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), + FordCarDocs("Ford Escape 2020-22"), + FordCarDocs("Ford Escape Hybrid 2020-22"), + FordCarDocs("Ford Escape Plug-in Hybrid 2020-22"), + FordCarDocs("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering"), + FordCarDocs("Ford Kuga Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), + FordCarDocs("Ford Kuga Plug-in Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), ], CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), ) EXPLORER_MK6 = FordPlatformConfig( "FORD EXPLORER 6TH GEN", [ - FordCarInfo("Ford Explorer 2020-23"), - FordCarInfo("Ford Explorer Hybrid 2020-23"), # Limited and Platinum only - FordCarInfo("Lincoln Aviator 2020-23", "Co-Pilot360 Plus"), - FordCarInfo("Lincoln Aviator Plug-in Hybrid 2020-23", "Co-Pilot360 Plus"), # Grand Touring only + FordCarDocs("Ford Explorer 2020-23"), + FordCarDocs("Ford Explorer Hybrid 2020-23"), # Limited and Platinum only + FordCarDocs("Lincoln Aviator 2020-23", "Co-Pilot360 Plus"), + FordCarDocs("Lincoln Aviator Plug-in Hybrid 2020-23", "Co-Pilot360 Plus"), # Grand Touring only ], CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), ) F_150_MK14 = FordCANFDPlatformConfig( "FORD F-150 14TH GEN", [ - FordCarInfo("Ford F-150 2022-23", "Co-Pilot360 Active 2.0"), - FordCarInfo("Ford F-150 Hybrid 2022-23", "Co-Pilot360 Active 2.0"), + FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0"), + FordCarDocs("Ford F-150 Hybrid 2022-23", "Co-Pilot360 Active 2.0"), ], CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), ) F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( "FORD F-150 LIGHTNING 1ST GEN", - [FordCarInfo("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0")], + [FordCarDocs("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), ) FOCUS_MK4 = FordPlatformConfig( "FORD FOCUS 4TH GEN", [ - FordCarInfo("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), - FordCarInfo("Ford Focus Hybrid 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), # mHEV only + FordCarDocs("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), + FordCarDocs("Ford Focus Hybrid 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), # mHEV only ], CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), ) MAVERICK_MK1 = FordPlatformConfig( "FORD MAVERICK 1ST GEN", [ - FordCarInfo("Ford Maverick 2022", "LARIAT Luxury"), - FordCarInfo("Ford Maverick Hybrid 2022", "LARIAT Luxury"), - FordCarInfo("Ford Maverick 2023-24", "Co-Pilot360 Assist"), - FordCarInfo("Ford Maverick Hybrid 2023-24", "Co-Pilot360 Assist"), + FordCarDocs("Ford Maverick 2022", "LARIAT Luxury"), + FordCarDocs("Ford Maverick Hybrid 2022", "LARIAT Luxury"), + FordCarDocs("Ford Maverick 2023-24", "Co-Pilot360 Assist"), + FordCarDocs("Ford Maverick Hybrid 2023-24", "Co-Pilot360 Assist"), ], CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( "FORD MUSTANG MACH-E 1ST GEN", - [FordCarInfo("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0")], + [FordCarDocs("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 9e18ea18d5..ec6453757b 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -3,7 +3,7 @@ from enum import Enum from cereal import car from openpilot.selfdrive.car import dbc_dict, PlatformConfig, DbcDict, Platforms, CarSpecs -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -68,7 +68,7 @@ class Footnote(Enum): @dataclass -class GMCarInfo(CarInfo): +class GMCarDocs(CarDocs): package: str = "Adaptive Cruise Control (ACC)" def init_make(self, CP: car.CarParams): @@ -92,78 +92,78 @@ class GMPlatformConfig(PlatformConfig): class CAR(Platforms): HOLDEN_ASTRA = GMPlatformConfig( "HOLDEN ASTRA RS-V BK 2017", - [GMCarInfo("Holden Astra 2017")], + [GMCarDocs("Holden Astra 2017")], GMCarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), ) VOLT = GMPlatformConfig( "CHEVROLET VOLT PREMIER 2017", - [GMCarInfo("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ")], + [GMCarDocs("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ")], GMCarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45, tireStiffnessFactor=0.469), ) CADILLAC_ATS = GMPlatformConfig( "CADILLAC ATS Premium Performance 2018", - [GMCarInfo("Cadillac ATS Premium Performance 2018")], + [GMCarDocs("Cadillac ATS Premium Performance 2018")], GMCarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), ) MALIBU = GMPlatformConfig( "CHEVROLET MALIBU PREMIER 2017", - [GMCarInfo("Chevrolet Malibu Premier 2017")], + [GMCarDocs("Chevrolet Malibu Premier 2017")], GMCarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), ) ACADIA = GMPlatformConfig( "GMC ACADIA DENALI 2018", - [GMCarInfo("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo")], + [GMCarDocs("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo")], GMCarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), ) BUICK_LACROSSE = GMPlatformConfig( "BUICK LACROSSE 2017", - [GMCarInfo("Buick LaCrosse 2017-19", "Driver Confidence Package 2")], + [GMCarDocs("Buick LaCrosse 2017-19", "Driver Confidence Package 2")], GMCarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), ) BUICK_REGAL = GMPlatformConfig( "BUICK REGAL ESSENCE 2018", - [GMCarInfo("Buick Regal Essence 2018")], + [GMCarDocs("Buick Regal Essence 2018")], GMCarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), ) ESCALADE = GMPlatformConfig( "CADILLAC ESCALADE 2017", - [GMCarInfo("Cadillac Escalade 2017", "Driver Assist Package")], + [GMCarDocs("Cadillac Escalade 2017", "Driver Assist Package")], GMCarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), ) ESCALADE_ESV = GMPlatformConfig( "CADILLAC ESCALADE ESV 2016", - [GMCarInfo("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS")], + [GMCarDocs("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS")], GMCarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3, tireStiffnessFactor=1.0), ) ESCALADE_ESV_2019 = GMPlatformConfig( "CADILLAC ESCALADE ESV 2019", - [GMCarInfo("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS")], + [GMCarDocs("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS")], ESCALADE_ESV.specs, ) BOLT_EUV = GMPlatformConfig( "CHEVROLET BOLT EUV 2022", [ - GMCarInfo("Chevrolet Bolt EUV 2022-23", "Premier or Premier Redline Trim without Super Cruise Package", video_link="https://youtu.be/xvwzGMUA210"), - GMCarInfo("Chevrolet Bolt EV 2022-23", "2LT Trim with Adaptive Cruise Control Package"), + GMCarDocs("Chevrolet Bolt EUV 2022-23", "Premier or Premier Redline Trim without Super Cruise Package", video_link="https://youtu.be/xvwzGMUA210"), + GMCarDocs("Chevrolet Bolt EV 2022-23", "2LT Trim with Adaptive Cruise Control Package"), ], GMCarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) SILVERADO = GMPlatformConfig( "CHEVROLET SILVERADO 1500 2020", [ - GMCarInfo("Chevrolet Silverado 1500 2020-21", "Safety Package II"), - GMCarInfo("GMC Sierra 1500 2020-21", "Driver Alert Package II", video_link="https://youtu.be/5HbNoBLzRwE"), + GMCarDocs("Chevrolet Silverado 1500 2020-21", "Safety Package II"), + GMCarDocs("GMC Sierra 1500 2020-21", "Driver Alert Package II", video_link="https://youtu.be/5HbNoBLzRwE"), ], GMCarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3, tireStiffnessFactor=1.0), ) EQUINOX = GMPlatformConfig( "CHEVROLET EQUINOX 2019", - [GMCarInfo("Chevrolet Equinox 2019-22")], + [GMCarDocs("Chevrolet Equinox 2019-22")], GMCarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), ) TRAILBLAZER = GMPlatformConfig( "CHEVROLET TRAILBLAZER 2021", - [GMCarInfo("Chevrolet Trailblazer 2021-22")], + [GMCarDocs("Chevrolet Trailblazer 2021-22")], GMCarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 96de8b0b29..6789667fe6 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -5,7 +5,7 @@ from cereal import car from openpilot.common.conversions import Conversions as CV from panda.python import uds from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 Ecu = car.CarParams.Ecu @@ -87,7 +87,7 @@ VISUAL_HUD = { @dataclass -class HondaCarInfo(CarInfo): +class HondaCarDocs(CarDocs): package: str = "Honda Sensing" def init_make(self, CP: car.CarParams): @@ -118,9 +118,9 @@ class CAR(Platforms): ACCORD = HondaBoschPlatformConfig( "HONDA ACCORD 2018", [ - HondaCarInfo("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), - HondaCarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), - HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarDocs("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarDocs("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarDocs("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), ], # steerRatio: 11.82 is spec end-to-end CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39, tireStiffnessFactor=0.8467), @@ -129,9 +129,9 @@ class CAR(Platforms): CIVIC_BOSCH = HondaBoschPlatformConfig( "HONDA CIVIC (BOSCH) 2019", [ - HondaCarInfo("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", + HondaCarDocs("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), - HondaCarInfo("Honda Civic Hatchback 2017-21", min_steer_speed=12. * CV.MPH_TO_MS), + HondaCarDocs("Honda Civic Hatchback 2017-21", min_steer_speed=12. * CV.MPH_TO_MS), ], CarSpecs(mass=1326, wheelbase=2.7, steerRatio=15.38, centerToFrontRatio=0.4), # steerRatio: 10.93 is end-to-end spec dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), @@ -145,8 +145,8 @@ class CAR(Platforms): CIVIC_2022 = HondaBoschPlatformConfig( "HONDA CIVIC 2022", [ - HondaCarInfo("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), - HondaCarInfo("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), + HondaCarDocs("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), + HondaCarDocs("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), ], CIVIC_BOSCH.specs, dbc_dict('honda_civic_ex_2022_can_generated', None), @@ -154,7 +154,7 @@ class CAR(Platforms): ) CRV_5G = HondaBoschPlatformConfig( "HONDA CR-V 2017", - [HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS)], # steerRatio: 12.3 is spec end-to-end CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), @@ -162,34 +162,34 @@ class CAR(Platforms): ) CRV_HYBRID = HondaBoschPlatformConfig( "HONDA CR-V HYBRID 2019", - [HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS)], # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_accord_2018_can_generated', None), ) HRV_3G = HondaBoschPlatformConfig( "HONDA HR-V 2023", - [HondaCarInfo("Honda HR-V 2023", "All")], + [HondaCarDocs("Honda HR-V 2023", "All")], CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41, tireStiffnessFactor=0.5), dbc_dict('honda_civic_ex_2022_can_generated', None), flags=HondaFlags.BOSCH_RADARLESS | HondaFlags.BOSCH_ALT_BRAKE, ) ACURA_RDX_3G = HondaBoschPlatformConfig( "ACURA RDX 2020", - [HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], + [HondaCarDocs("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), # as spec dbc_dict('acura_rdx_2020_can_generated', None), flags=HondaFlags.BOSCH_ALT_BRAKE, ) INSIGHT = HondaBoschPlatformConfig( "HONDA INSIGHT 2019", - [HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39, tireStiffnessFactor=0.82), # as spec dbc_dict('honda_insight_ex_2019_can_generated', None), ) HONDA_E = HondaBoschPlatformConfig( "HONDA E 2020", - [HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71, tireStiffnessFactor=0.82), dbc_dict('acura_rdx_2020_can_generated', None), ) @@ -197,14 +197,14 @@ class CAR(Platforms): # Nidec Cars ACURA_ILX = HondaNidecPlatformConfig( "ACURA ILX 2016", - [HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS)], + [HondaCarDocs("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS)], CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37, tireStiffnessFactor=0.72), # 15.3 is spec end-to-end dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV = HondaNidecPlatformConfig( "HONDA CR-V 2016", - [HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41, tireStiffnessFactor=0.444), # as spec dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, @@ -218,28 +218,28 @@ class CAR(Platforms): ) FIT = HondaNidecPlatformConfig( "HONDA FIT 2018", - [HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FREED = HondaNidecPlatformConfig( "HONDA FREED 2020", - [HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), # mostly copied from FIT dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) HRV = HondaNidecPlatformConfig( "HONDA HRV 2019", - [HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS)], HRV_3G.specs, dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) ODYSSEY = HondaNidecPlatformConfig( "HONDA ODYSSEY 2018", - [HondaCarInfo("Honda Odyssey 2018-20")], + [HondaCarDocs("Honda Odyssey 2018-20")], CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41, tireStiffnessFactor=0.82), dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_PCM_ACCEL, @@ -253,7 +253,7 @@ class CAR(Platforms): ) ACURA_RDX = HondaNidecPlatformConfig( "ACURA RDX 2018", - [HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, @@ -261,8 +261,8 @@ class CAR(Platforms): PILOT = HondaNidecPlatformConfig( "HONDA PILOT 2017", [ - HondaCarInfo("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), - HondaCarInfo("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), + HondaCarDocs("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), + HondaCarDocs("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), ], CarSpecs(mass=4278 * CV.LB_TO_KG, wheelbase=2.86, centerToFrontRatio=0.428, steerRatio=16.0, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), @@ -270,14 +270,14 @@ class CAR(Platforms): ) RIDGELINE = HondaNidecPlatformConfig( "HONDA RIDGELINE 2017", - [HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CIVIC = HondaNidecPlatformConfig( "HONDA CIVIC 2016", - [HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE")], + [HondaCarDocs("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE")], CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), ) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index c17d57880c..4419cde27f 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -6,7 +6,7 @@ from cereal import car from panda.python import uds from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu @@ -104,7 +104,7 @@ class Footnote(Enum): @dataclass -class HyundaiCarInfo(CarInfo): +class HyundaiCarDocs(CarDocs): package: str = "Smart Cruise Control (SCC)" def init_make(self, CP: car.CarParams): @@ -136,14 +136,14 @@ class CAR(Platforms): # Hyundai AZERA_6TH_GEN = HyundaiPlatformConfig( "HYUNDAI AZERA 6TH GEN", - [HyundaiCarInfo("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], + [HyundaiCarDocs("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=1600, wheelbase=2.885, steerRatio=14.5), ) AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( "HYUNDAI AZERA HYBRID 6TH GEN", [ - HyundaiCarInfo("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + HyundaiCarDocs("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarDocs("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), ], CarSpecs(mass=1675, wheelbase=2.885, steerRatio=14.5), flags=HyundaiFlags.HYBRID, @@ -152,8 +152,8 @@ class CAR(Platforms): "HYUNDAI ELANTRA 2017", [ # TODO: 2017-18 could be Hyundai G - HyundaiCarInfo("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), - HyundaiCarInfo("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])), + HyundaiCarDocs("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), + HyundaiCarDocs("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])), ], # steerRatio: 14 is Stock | Settled Params Learner values are steerRatio: 15.401566348670535, stiffnessFactor settled on 1.0081302973865127 CarSpecs(mass=1275, wheelbase=2.7, steerRatio=15.4, tireStiffnessFactor=0.385), @@ -162,21 +162,21 @@ class CAR(Platforms): ELANTRA_GT_I30 = HyundaiPlatformConfig( "HYUNDAI I30 N LINE 2019 & GT 2018 DCT", [ - HyundaiCarInfo("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), - HyundaiCarInfo("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + HyundaiCarDocs("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + HyundaiCarDocs("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), ], ELANTRA.specs, flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) ELANTRA_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA 2021", - [HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], + [HyundaiCarDocs("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=2800 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8, ) ELANTRA_HEV_2021 = HyundaiPlatformConfig( "HYUNDAI ELANTRA HYBRID 2021", - [HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", + [HyundaiCarDocs("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, @@ -185,129 +185,129 @@ class CAR(Platforms): "HYUNDAI GENESIS 2015-2016", [ # TODO: check 2015 packages - HyundaiCarInfo("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), - HyundaiCarInfo("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), + HyundaiCarDocs("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), + HyundaiCarDocs("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), ], CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5, minSteerSpeed=60 * CV.KPH_TO_MS), flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY, ) IONIQ = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2017-2019", - [HyundaiCarInfo("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c]))], + [HyundaiCarDocs("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI IONIQ HYBRID 2020-2022", - [HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h]))], # TODO: confirm 2020-21 harness, + [HyundaiCarDocs("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h]))], # TODO: confirm 2020-21 harness, CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) IONIQ_EV_LTD = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC LIMITED 2019", - [HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], + [HyundaiCarDocs("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_EV_2020 = HyundaiPlatformConfig( "HYUNDAI IONIQ ELECTRIC 2020", - [HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], + [HyundaiCarDocs("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV, ) IONIQ_PHEV_2019 = HyundaiPlatformConfig( "HYUNDAI IONIQ PLUG-IN HYBRID 2019", - [HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], + [HyundaiCarDocs("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_PHEV = HyundaiPlatformConfig( "HYUNDAI IONIQ PHEV 2020", - [HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], + [HyundaiCarDocs("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID, ) KONA = HyundaiPlatformConfig( "HYUNDAI KONA 2020", - [HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b]))], + [HyundaiCarDocs("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b]))], CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CLUSTER_GEARS, ) KONA_EV = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2019", - [HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g]))], + [HyundaiCarDocs("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g]))], CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV, ) KONA_EV_2022 = HyundaiPlatformConfig( "HYUNDAI KONA ELECTRIC 2022", - [HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o]))], + [HyundaiCarDocs("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o]))], CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV, ) KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI KONA ELECTRIC 2ND GEN", - [HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", + [HyundaiCarDocs("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", car_parts=CarParts.common([CarHarness.hyundai_r]))], CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) KONA_HEV = HyundaiPlatformConfig( "HYUNDAI KONA HYBRID 2020", - [HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i]))], # TODO: check packages, + [HyundaiCarDocs("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i]))], # TODO: check packages, CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID, ) SANTA_FE = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2019", - [HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", + [HyundaiCarDocs("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", car_parts=CarParts.common([CarHarness.hyundai_d]))], CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) SANTA_FE_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE 2022", - [HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", + [HyundaiCarDocs("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8, ) SANTA_FE_HEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE HYBRID 2022", - [HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], + [HyundaiCarDocs("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( "HYUNDAI SANTA FE PlUG-IN HYBRID 2022", - [HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], + [HyundaiCarDocs("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) SONATA = HyundaiPlatformConfig( "HYUNDAI SONATA 2020", - [HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", + [HyundaiCarDocs("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) SONATA_LF = HyundaiPlatformConfig( "HYUNDAI SONATA 2019", - [HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e]))], + [HyundaiCarDocs("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI STARIA 4TH GEN", - [HyundaiCarInfo("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], + [HyundaiCarDocs("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=2205, wheelbase=3.273, steerRatio=11.94), # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf ) TUCSON = HyundaiPlatformConfig( "HYUNDAI TUCSON 2019", [ - HyundaiCarInfo("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarDocs("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarDocs("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), ], CarSpecs(mass=3520 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=16.1, tireStiffnessFactor=0.385), flags=HyundaiFlags.TCU_GEARS, @@ -315,58 +315,58 @@ class CAR(Platforms): PALISADE = HyundaiPlatformConfig( "HYUNDAI PALISADE 2020", [ - HyundaiCarInfo("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), - HyundaiCarInfo("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + HyundaiCarDocs("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), + HyundaiCarDocs("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), ], CarSpecs(mass=1999, wheelbase=2.9, steerRatio=15.6 * 1.15, tireStiffnessFactor=0.63), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) VELOSTER = HyundaiPlatformConfig( "HYUNDAI VELOSTER 2019", - [HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e]))], + [HyundaiCarDocs("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS, ) SONATA_HYBRID = HyundaiPlatformConfig( "HYUNDAI SONATA HYBRID 2021", - [HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], + [HyundaiCarDocs("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], SONATA.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) IONIQ_5 = HyundaiCanFDPlatformConfig( "HYUNDAI IONIQ 5 2022", [ - HyundaiCarInfo("Hyundai Ioniq 5 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_q])), - HyundaiCarInfo("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), - HyundaiCarInfo("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), + HyundaiCarDocs("Hyundai Ioniq 5 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_q])), + HyundaiCarDocs("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), + HyundaiCarDocs("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), ], CarSpecs(mass=1948, wheelbase=2.97, steerRatio=14.26, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV, ) IONIQ_6 = HyundaiCanFDPlatformConfig( "HYUNDAI IONIQ 6 2023", - [HyundaiCarInfo("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p]))], + [HyundaiCarDocs("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p]))], IONIQ_5.specs, flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI TUCSON 4TH GEN", [ - HyundaiCarInfo("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), ], CarSpecs(mass=1630, wheelbase=2.756, steerRatio=16, tireStiffnessFactor=0.385), ) SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI SANTA CRUZ 1ST GEN", - [HyundaiCarInfo("Hyundai Santa Cruz 2022-24", car_parts=CarParts.common([CarHarness.hyundai_n]))], + [HyundaiCarDocs("Hyundai Santa Cruz 2022-24", car_parts=CarParts.common([CarHarness.hyundai_n]))], # weight from Limited trim - the only supported trim, steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), ) CUSTIN_1ST_GEN = HyundaiPlatformConfig( "HYUNDAI CUSTIN 1ST GEN", - [HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], + [HyundaiCarDocs("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner flags=HyundaiFlags.CHECKSUM_CRC8, ) @@ -375,52 +375,52 @@ class CAR(Platforms): KIA_FORTE = HyundaiPlatformConfig( "KIA FORTE E 2018 & GT 2021", [ - HyundaiCarInfo("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), - HyundaiCarInfo("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), + HyundaiCarDocs("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), + HyundaiCarDocs("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), ], CarSpecs(mass=2878 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5) ) KIA_K5_2021 = HyundaiPlatformConfig( "KIA K5 2021", - [HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a]))], + [HyundaiCarDocs("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=3381 * CV.LB_TO_KG, wheelbase=2.85, steerRatio=13.27, tireStiffnessFactor=0.5), # 2021 Kia K5 Steering Ratio (all trims) flags=HyundaiFlags.CHECKSUM_CRC8, ) KIA_K5_HEV_2020 = HyundaiPlatformConfig( "KIA K5 HYBRID 2020", - [HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a]))], + [HyundaiCarDocs("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_K5_2021.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) KIA_K8_HEV_1ST_GEN = HyundaiCanFDPlatformConfig( "KIA K8 HYBRID 1ST GEN", - [HyundaiCarInfo("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q]))], + [HyundaiCarDocs("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q]))], # mass: https://carprices.ae/brands/kia/2023/k8/1.6-turbo-hybrid, steerRatio: guesstimate from K5 platform CarSpecs(mass=1630, wheelbase=2.895, steerRatio=13.27) ) KIA_NIRO_EV = HyundaiPlatformConfig( "KIA NIRO EV 2020", [ - HyundaiCarInfo("Kia Niro EV 2019", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), - HyundaiCarInfo("Kia Niro EV 2020", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_f])), - HyundaiCarInfo("Kia Niro EV 2021", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), + HyundaiCarDocs("Kia Niro EV 2019", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), + HyundaiCarDocs("Kia Niro EV 2020", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_f])), + HyundaiCarDocs("Kia Niro EV 2021", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarDocs("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), ], CarSpecs(mass=3543 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=13.6, tireStiffnessFactor=0.385), # average of all the cars flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV, ) KIA_NIRO_EV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO EV 2ND GEN", - [HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], + [HyundaiCarDocs("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_NIRO_EV.specs, flags=HyundaiFlags.EV, ) KIA_NIRO_PHEV = HyundaiPlatformConfig( "KIA NIRO HYBRID 2019", [ - HyundaiCarInfo("Kia Niro Hybrid 2018", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarDocs("Kia Niro Hybrid 2018", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), ], KIA_NIRO_EV.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.MIN_STEER_32_MPH, @@ -428,8 +428,8 @@ class CAR(Platforms): KIA_NIRO_PHEV_2022 = HyundaiPlatformConfig( "KIA NIRO PLUG-IN HYBRID 2022", [ - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2021", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2021", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), ], KIA_NIRO_EV.specs, flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR, @@ -437,54 +437,54 @@ class CAR(Platforms): KIA_NIRO_HEV_2021 = HyundaiPlatformConfig( "KIA NIRO HYBRID 2021", [ - HyundaiCarInfo("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), - HyundaiCarInfo("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), + HyundaiCarDocs("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarDocs("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), ], KIA_NIRO_EV.specs, flags=HyundaiFlags.HYBRID, ) KIA_NIRO_HEV_2ND_GEN = HyundaiCanFDPlatformConfig( "KIA NIRO HYBRID 2ND GEN", - [HyundaiCarInfo("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a]))], + [HyundaiCarDocs("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_NIRO_EV.specs, ) KIA_OPTIMA_G4 = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN", - [HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", + [HyundaiCarDocs("Kia Optima 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_b]))], # TODO: may support 2016, 2018 CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) KIA_OPTIMA_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA 4TH GEN FACELIFT", - [HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g]))], + [HyundaiCarDocs("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) # TODO: may support adjacent years. may have a non-zero minimum steering speed KIA_OPTIMA_H = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 2017 & SPORTS 2019", - [HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c]))], + [HyundaiCarDocs("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) KIA_OPTIMA_H_G4_FL = HyundaiPlatformConfig( "KIA OPTIMA HYBRID 4TH GEN FACELIFT", - [HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h]))], + [HyundaiCarDocs("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, ) KIA_SELTOS = HyundaiPlatformConfig( "KIA SELTOS 2021", - [HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a]))], + [HyundaiCarDocs("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=1337, wheelbase=2.63, steerRatio=14.56), flags=HyundaiFlags.CHECKSUM_CRC8, ) KIA_SPORTAGE_5TH_GEN = HyundaiCanFDPlatformConfig( "KIA SPORTAGE 5TH GEN", [ - HyundaiCarInfo("Kia Sportage 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Kia Sportage 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), ], # weight from SX and above trims, average of FWD and AWD version, steering ratio according to Kia News https://www.kiamedia.com/us/en/models/sportage/2023/specifications CarSpecs(mass=1725, wheelbase=2.756, steerRatio=13.6), @@ -492,51 +492,51 @@ class CAR(Platforms): KIA_SORENTO = HyundaiPlatformConfig( "KIA SORENTO GT LINE 2018", [ - HyundaiCarInfo("Kia Sorento 2018", "Advanced Smart Cruise Control & LKAS", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", + HyundaiCarDocs("Kia Sorento 2018", "Advanced Smart Cruise Control & LKAS", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), - HyundaiCarInfo("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), + HyundaiCarDocs("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), ], CarSpecs(mass=1985, wheelbase=2.78, steerRatio=14.4 * 1.1), # 10% higher at the center seems reasonable flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, ) KIA_SORENTO_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA SORENTO 4TH GEN", - [HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k]))], + [HyundaiCarDocs("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms flags=HyundaiFlags.RADAR_SCC, ) KIA_SORENTO_HEV_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA SORENTO HYBRID 4TH GEN", [ - HyundaiCarInfo("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarDocs("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarDocs("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), ], CarSpecs(mass=4395 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms flags=HyundaiFlags.RADAR_SCC, ) KIA_STINGER = HyundaiPlatformConfig( "KIA STINGER GT2 2018", - [HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", + [HyundaiCarDocs("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1825, wheelbase=2.78, steerRatio=14.4 * 1.15) # 15% higher at the center seems reasonable ) KIA_STINGER_2022 = HyundaiPlatformConfig( "KIA STINGER 2022", - [HyundaiCarInfo("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], + [HyundaiCarDocs("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], KIA_STINGER.specs, ) KIA_CEED = HyundaiPlatformConfig( "KIA CEED INTRO ED 2019", - [HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e]))], + [HyundaiCarDocs("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=1450, wheelbase=2.65, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY, ) KIA_EV6 = HyundaiCanFDPlatformConfig( "KIA EV6 2022", [ - HyundaiCarInfo("Kia EV6 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_p])), - HyundaiCarInfo("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) + HyundaiCarDocs("Kia EV6 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_p])), + HyundaiCarDocs("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarDocs("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) ], CarSpecs(mass=2055, wheelbase=2.9, steerRatio=16, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV, @@ -544,8 +544,8 @@ class CAR(Platforms): KIA_CARNIVAL_4TH_GEN = HyundaiCanFDPlatformConfig( "KIA CARNIVAL 4TH GEN", [ - HyundaiCarInfo("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) + HyundaiCarDocs("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarDocs("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) ], CarSpecs(mass=2087, wheelbase=3.09, steerRatio=14.23), flags=HyundaiFlags.RADAR_SCC, @@ -555,47 +555,47 @@ class CAR(Platforms): GENESIS_GV60_EV_1ST_GEN = HyundaiCanFDPlatformConfig( "GENESIS GV60 ELECTRIC 1ST GEN", [ - HyundaiCarInfo("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + HyundaiCarDocs("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarDocs("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), ], CarSpecs(mass=2205, wheelbase=2.9, steerRatio=12.6), # steerRatio: https://www.motor1.com/reviews/586376/2023-genesis-gv60-first-drive/#:~:text=Relative%20to%20the%20related%20Ioniq,5%2FEV6%27s%2014.3%3A1. flags=HyundaiFlags.EV, ) GENESIS_G70 = HyundaiPlatformConfig( "GENESIS G70 2018", - [HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], + [HyundaiCarDocs("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), flags=HyundaiFlags.LEGACY, ) GENESIS_G70_2020 = HyundaiPlatformConfig( "GENESIS G70 2020", - [HyundaiCarInfo("Genesis G70 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], + [HyundaiCarDocs("Genesis G70 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), flags=HyundaiFlags.MANDO_RADAR, ) GENESIS_GV70_1ST_GEN = HyundaiCanFDPlatformConfig( "GENESIS GV70 1ST GEN", [ - HyundaiCarInfo("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), + HyundaiCarDocs("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarDocs("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), ], CarSpecs(mass=1950, wheelbase=2.87, steerRatio=14.6), flags=HyundaiFlags.RADAR_SCC, ) GENESIS_G80 = HyundaiPlatformConfig( "GENESIS G80 2017", - [HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], + [HyundaiCarDocs("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5), flags=HyundaiFlags.LEGACY, ) GENESIS_G90 = HyundaiPlatformConfig( "GENESIS G90 2017", - [HyundaiCarInfo("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c]))], + [HyundaiCarDocs("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=2200, wheelbase=3.15, steerRatio=12.069), ) GENESIS_GV80 = HyundaiCanFDPlatformConfig( "GENESIS GV80 2023", - [HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m]))], + [HyundaiCarDocs("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m]))], CarSpecs(mass=2258, wheelbase=2.95, steerRatio=14.14), flags=HyundaiFlags.RADAR_SCC, ) diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index 2bb5b4ff08..d10b47e2b4 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -4,7 +4,7 @@ from enum import IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts +from openpilot.selfdrive.car.docs_definitions import CarHarness, CarDocs, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -27,7 +27,7 @@ class CarControllerParams: @dataclass -class MazdaCarInfo(CarInfo): +class MazdaCarDocs(CarDocs): package: str = "All" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda])) @@ -52,32 +52,32 @@ class MazdaPlatformConfig(PlatformConfig): class CAR(Platforms): CX5 = MazdaPlatformConfig( "MAZDA CX-5", - [MazdaCarInfo("Mazda CX-5 2017-21")], + [MazdaCarDocs("Mazda CX-5 2017-21")], MazdaCarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) ) CX9 = MazdaPlatformConfig( "MAZDA CX-9", - [MazdaCarInfo("Mazda CX-9 2016-20")], + [MazdaCarDocs("Mazda CX-9 2016-20")], MazdaCarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) ) MAZDA3 = MazdaPlatformConfig( "MAZDA 3", - [MazdaCarInfo("Mazda 3 2017-18")], + [MazdaCarDocs("Mazda 3 2017-18")], MazdaCarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) ) MAZDA6 = MazdaPlatformConfig( "MAZDA 6", - [MazdaCarInfo("Mazda 6 2017-20")], + [MazdaCarDocs("Mazda 6 2017-20")], MazdaCarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) ) CX9_2021 = MazdaPlatformConfig( "MAZDA CX-9 2021", - [MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4")], + [MazdaCarDocs("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4")], CX9.specs ) CX5_2022 = MazdaPlatformConfig( "MAZDA CX-5 2022", - [MazdaCarInfo("Mazda CX-5 2022-24")], + [MazdaCarDocs("Mazda CX-5 2022-24")], CX5.specs, ) diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index dd51437dd9..f2123cad56 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -3,7 +3,7 @@ from dataclasses import dataclass, field from cereal import car from panda.python import uds from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarInfo, CarHarness, CarParts +from openpilot.selfdrive.car.docs_definitions import CarDocs, CarHarness, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -20,7 +20,7 @@ class CarControllerParams: @dataclass -class NissanCarInfo(CarInfo): +class NissanCarDocs(CarDocs): package: str = "ProPILOT Assist" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.nissan_a])) @@ -39,12 +39,12 @@ class NissanPlaformConfig(PlatformConfig): class CAR(Platforms): XTRAIL = NissanPlaformConfig( "NISSAN X-TRAIL 2017", - [NissanCarInfo("Nissan X-Trail 2017")], + [NissanCarDocs("Nissan X-Trail 2017")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) LEAF = NissanPlaformConfig( "NISSAN LEAF 2018", - [NissanCarInfo("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY")], + [NissanCarDocs("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY")], NissanCarSpecs(mass=1610, wheelbase=2.705), dbc_dict('nissan_leaf_2018_generated', None), ) @@ -53,12 +53,12 @@ class CAR(Platforms): LEAF_IC = LEAF.override(platform_str="NISSAN LEAF 2018 Instrument Cluster", car_info=[]) ROGUE = NissanPlaformConfig( "NISSAN ROGUE 2019", - [NissanCarInfo("Nissan Rogue 2018-20")], + [NissanCarDocs("Nissan Rogue 2018-20")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) ALTIMA = NissanPlaformConfig( "NISSAN ALTIMA 2020", - [NissanCarInfo("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b]))], + [NissanCarDocs("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b]))], NissanCarSpecs(mass=1492, wheelbase=2.824) ) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index d1faed47f0..3a57fde39d 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -4,7 +4,7 @@ from enum import Enum, IntFlag from cereal import car from panda.python import uds from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Tool, Column +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Tool, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 Ecu = car.CarParams.Ecu @@ -88,7 +88,7 @@ class Footnote(Enum): @dataclass -class SubaruCarInfo(CarInfo): +class SubaruCarDocs(CarDocs): package: str = "EyeSight Driver Assistance" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.subaru_a])) footnotes: list[Enum] = field(default_factory=lambda: [Footnote.GLOBAL]) @@ -122,34 +122,34 @@ class CAR(Platforms): # Global platform ASCENT = SubaruPlatformConfig( "SUBARU ASCENT LIMITED 2019", - [SubaruCarInfo("Subaru Ascent 2019-21", "All")], + [SubaruCarDocs("Subaru Ascent 2019-21", "All")], CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), ) OUTBACK = SubaruGen2PlatformConfig( "SUBARU OUTBACK 6TH GEN", - [SubaruCarInfo("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], + [SubaruCarDocs("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), ) LEGACY = SubaruGen2PlatformConfig( "SUBARU LEGACY 7TH GEN", - [SubaruCarInfo("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], + [SubaruCarDocs("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], OUTBACK.specs, ) IMPREZA = SubaruPlatformConfig( "SUBARU IMPREZA LIMITED 2019", [ - SubaruCarInfo("Subaru Impreza 2017-19"), - SubaruCarInfo("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), - SubaruCarInfo("Subaru XV 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), + SubaruCarDocs("Subaru Impreza 2017-19"), + SubaruCarDocs("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), + SubaruCarDocs("Subaru XV 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), ], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=15), ) IMPREZA_2020 = SubaruPlatformConfig( "SUBARU IMPREZA SPORT 2020", [ - SubaruCarInfo("Subaru Impreza 2020-22"), - SubaruCarInfo("Subaru Crosstrek 2020-23"), - SubaruCarInfo("Subaru XV 2020-21"), + SubaruCarDocs("Subaru Impreza 2020-22"), + SubaruCarDocs("Subaru Crosstrek 2020-23"), + SubaruCarDocs("Subaru XV 2020-21"), ], CarSpecs(mass=1480, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.STEER_RATE_LIMITED, @@ -157,47 +157,47 @@ class CAR(Platforms): # TODO: is there an XV and Impreza too? CROSSTREK_HYBRID = SubaruPlatformConfig( "SUBARU CROSSTREK HYBRID 2020", - [SubaruCarInfo("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b]))], + [SubaruCarDocs("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b]))], CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.HYBRID, ) FORESTER = SubaruPlatformConfig( "SUBARU FORESTER 2019", - [SubaruCarInfo("Subaru Forester 2019-21", "All")], + [SubaruCarDocs("Subaru Forester 2019-21", "All")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.STEER_RATE_LIMITED, ) FORESTER_HYBRID = SubaruPlatformConfig( "SUBARU FORESTER HYBRID 2020", - [SubaruCarInfo("Subaru Forester Hybrid 2020")], + [SubaruCarDocs("Subaru Forester Hybrid 2020")], FORESTER.specs, flags=SubaruFlags.HYBRID, ) # Pre-global FORESTER_PREGLOBAL = SubaruPlatformConfig( "SUBARU FORESTER 2017 - 2018", - [SubaruCarInfo("Subaru Forester 2017-18")], + [SubaruCarDocs("Subaru Forester 2017-18")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), dbc_dict('subaru_forester_2017_generated', None), flags=SubaruFlags.PREGLOBAL, ) LEGACY_PREGLOBAL = SubaruPlatformConfig( "SUBARU LEGACY 2015 - 2018", - [SubaruCarInfo("Subaru Legacy 2015-18")], + [SubaruCarDocs("Subaru Legacy 2015-18")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), dbc_dict('subaru_outback_2015_generated', None), flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL = SubaruPlatformConfig( "SUBARU OUTBACK 2015 - 2017", - [SubaruCarInfo("Subaru Outback 2015-17")], + [SubaruCarDocs("Subaru Outback 2015-17")], FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2015_generated', None), flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( "SUBARU OUTBACK 2018 - 2019", - [SubaruCarInfo("Subaru Outback 2018-19")], + [SubaruCarDocs("Subaru Outback 2018-19")], FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2019_generated', None), flags=SubaruFlags.PREGLOBAL, @@ -205,19 +205,19 @@ class CAR(Platforms): # Angle LKAS FORESTER_2022 = SubaruPlatformConfig( "SUBARU FORESTER 2022", - [SubaruCarInfo("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c]))], + [SubaruCarDocs("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c]))], FORESTER.specs, flags=SubaruFlags.LKAS_ANGLE, ) OUTBACK_2023 = SubaruGen2PlatformConfig( "SUBARU OUTBACK 7TH GEN", - [SubaruCarInfo("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], + [SubaruCarDocs("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], OUTBACK.specs, flags=SubaruFlags.LKAS_ANGLE, ) ASCENT_2023 = SubaruGen2PlatformConfig( "SUBARU ASCENT 2023", - [SubaruCarInfo("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], + [SubaruCarDocs("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], ASCENT.specs, flags=SubaruFlags.LKAS_ANGLE, ) diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index d098e93182..74f38f2dc0 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -2,7 +2,7 @@ from collections import namedtuple from cereal import car from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarInfo +from openpilot.selfdrive.car.docs_definitions import CarDocs from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -12,19 +12,19 @@ Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values']) class CAR(Platforms): AP1_MODELS = PlatformConfig( 'TESLA AP1 MODEL S', - [CarInfo("Tesla AP1 Model S", "All")], + [CarDocs("Tesla AP1 Model S", "All")], CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0), dbc_dict('tesla_powertrain', 'tesla_radar_bosch_generated', chassis_dbc='tesla_can') ) AP2_MODELS = PlatformConfig( 'TESLA AP2 MODEL S', - [CarInfo("Tesla AP2 Model S", "All")], + [CarDocs("Tesla AP2 Model S", "All")], AP1_MODELS.specs, AP1_MODELS.dbc_dict ) MODELS_RAVEN = PlatformConfig( 'TESLA MODEL S RAVEN', - [CarInfo("Tesla Model S Raven", "All")], + [CarDocs("Tesla Model S Raven", "All")], AP1_MODELS.specs, dbc_dict('tesla_powertrain', 'tesla_radar_continental_generated', chassis_dbc='tesla_can') ) diff --git a/selfdrive/car/tests/test_docs.py b/selfdrive/car/tests/test_docs.py index 0ee35dd92d..f64effc437 100755 --- a/selfdrive/car/tests/test_docs.py +++ b/selfdrive/car/tests/test_docs.py @@ -46,7 +46,7 @@ class TestCarDocs(unittest.TestCase): all_car_info_platforms = [name for name, config in PLATFORMS.items()] for platform in sorted(interfaces.keys()): with self.subTest(platform=platform): - self.assertTrue(platform in all_car_info_platforms, f"Platform: {platform} doesn't have a CarInfo entry") + self.assertTrue(platform in all_car_info_platforms, f"Platform: {platform} doesn't have a CarDocs entry") def test_naming_conventions(self): # Asserts market-standard car naming conventions by brand diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index ce035ae573..9a3e73048a 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -7,7 +7,7 @@ from cereal import car from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms from openpilot.selfdrive.car import AngleRateLimit, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarInfo, Column, CarParts, CarHarness +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarDocs, Column, CarParts, CarHarness from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -67,7 +67,7 @@ class Footnote(Enum): @dataclass -class ToyotaCarInfo(CarInfo): +class ToyotaCarDocs(CarDocs): package: str = "All" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.toyota_a])) @@ -88,16 +88,16 @@ class CAR(Platforms): ALPHARD_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA ALPHARD 2020", [ - ToyotaCarInfo("Toyota Alphard 2019-20"), - ToyotaCarInfo("Toyota Alphard Hybrid 2021"), + ToyotaCarDocs("Toyota Alphard 2019-20"), + ToyotaCarDocs("Toyota Alphard Hybrid 2021"), ], CarSpecs(mass=4305. * CV.LB_TO_KG, wheelbase=3.0, steerRatio=14.2, tireStiffnessFactor=0.444), ) AVALON = PlatformConfig( "TOYOTA AVALON 2016", [ - ToyotaCarInfo("Toyota Avalon 2016", "Toyota Safety Sense P"), - ToyotaCarInfo("Toyota Avalon 2017-18"), + ToyotaCarDocs("Toyota Avalon 2016", "Toyota Safety Sense P"), + ToyotaCarDocs("Toyota Avalon 2017-18"), ], CarSpecs(mass=3505. * CV.LB_TO_KG, wheelbase=2.82, steerRatio=14.8, tireStiffnessFactor=0.7983), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), @@ -105,8 +105,8 @@ class CAR(Platforms): AVALON_2019 = PlatformConfig( "TOYOTA AVALON 2019", [ - ToyotaCarInfo("Toyota Avalon 2019-21"), - ToyotaCarInfo("Toyota Avalon Hybrid 2019-21"), + ToyotaCarDocs("Toyota Avalon 2019-21"), + ToyotaCarDocs("Toyota Avalon Hybrid 2019-21"), ], AVALON.specs, dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), @@ -114,16 +114,16 @@ class CAR(Platforms): AVALON_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA AVALON 2022", # TSS 2.5 [ - ToyotaCarInfo("Toyota Avalon 2022"), - ToyotaCarInfo("Toyota Avalon Hybrid 2022"), + ToyotaCarDocs("Toyota Avalon 2022"), + ToyotaCarDocs("Toyota Avalon Hybrid 2022"), ], AVALON.specs, ) CAMRY = PlatformConfig( "TOYOTA CAMRY 2018", [ - ToyotaCarInfo("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), - ToyotaCarInfo("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), + ToyotaCarDocs("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), + ToyotaCarDocs("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), ], CarSpecs(mass=3400. * CV.LB_TO_KG, wheelbase=2.82448, steerRatio=13.7, tireStiffnessFactor=0.7933), dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), @@ -132,16 +132,16 @@ class CAR(Platforms): CAMRY_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA CAMRY 2021", # TSS 2.5 [ - ToyotaCarInfo("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), - ToyotaCarInfo("Toyota Camry Hybrid 2021-24"), + ToyotaCarDocs("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), + ToyotaCarDocs("Toyota Camry Hybrid 2021-24"), ], CAMRY.specs, ) CHR = PlatformConfig( "TOYOTA C-HR 2018", [ - ToyotaCarInfo("Toyota C-HR 2017-20"), - ToyotaCarInfo("Toyota C-HR Hybrid 2017-20"), + ToyotaCarDocs("Toyota C-HR 2017-20"), + ToyotaCarDocs("Toyota C-HR Hybrid 2017-20"), ], CarSpecs(mass=3300. * CV.LB_TO_KG, wheelbase=2.63906, steerRatio=13.6, tireStiffnessFactor=0.7933), dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), @@ -150,15 +150,15 @@ class CAR(Platforms): CHR_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA C-HR 2021", [ - ToyotaCarInfo("Toyota C-HR 2021"), - ToyotaCarInfo("Toyota C-HR Hybrid 2021-22"), + ToyotaCarDocs("Toyota C-HR 2021"), + ToyotaCarDocs("Toyota C-HR Hybrid 2021-22"), ], CHR.specs, flags=ToyotaFlags.RADAR_ACC, ) COROLLA = PlatformConfig( "TOYOTA COROLLA 2017", - [ToyotaCarInfo("Toyota Corolla 2017-19")], + [ToyotaCarDocs("Toyota Corolla 2017-19")], CarSpecs(mass=2860. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=18.27, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) @@ -166,22 +166,22 @@ class CAR(Platforms): COROLLA_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA COROLLA TSS2 2019", [ - ToyotaCarInfo("Toyota Corolla 2020-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), - ToyotaCarInfo("Toyota Corolla Cross (Non-US only) 2020-23", min_enable_speed=7.5), - ToyotaCarInfo("Toyota Corolla Hatchback 2019-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), + ToyotaCarDocs("Toyota Corolla 2020-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), + ToyotaCarDocs("Toyota Corolla Cross (Non-US only) 2020-23", min_enable_speed=7.5), + ToyotaCarDocs("Toyota Corolla Hatchback 2019-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), # Hybrid platforms - ToyotaCarInfo("Toyota Corolla Hybrid 2020-22"), - ToyotaCarInfo("Toyota Corolla Hybrid (Non-US only) 2020-23", min_enable_speed=7.5), - ToyotaCarInfo("Toyota Corolla Cross Hybrid (Non-US only) 2020-22", min_enable_speed=7.5), - ToyotaCarInfo("Lexus UX Hybrid 2019-23"), + ToyotaCarDocs("Toyota Corolla Hybrid 2020-22"), + ToyotaCarDocs("Toyota Corolla Hybrid (Non-US only) 2020-23", min_enable_speed=7.5), + ToyotaCarDocs("Toyota Corolla Cross Hybrid (Non-US only) 2020-22", min_enable_speed=7.5), + ToyotaCarDocs("Lexus UX Hybrid 2019-23"), ], CarSpecs(mass=3060. * CV.LB_TO_KG, wheelbase=2.67, steerRatio=13.9, tireStiffnessFactor=0.444), ) HIGHLANDER = PlatformConfig( "TOYOTA HIGHLANDER 2017", [ - ToyotaCarInfo("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), - ToyotaCarInfo("Toyota Highlander Hybrid 2017-19"), + ToyotaCarDocs("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), + ToyotaCarDocs("Toyota Highlander Hybrid 2017-19"), ], CarSpecs(mass=4516. * CV.LB_TO_KG, wheelbase=2.8194, steerRatio=16.0, tireStiffnessFactor=0.8), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), @@ -190,24 +190,24 @@ class CAR(Platforms): HIGHLANDER_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA HIGHLANDER 2020", [ - ToyotaCarInfo("Toyota Highlander 2020-23"), - ToyotaCarInfo("Toyota Highlander Hybrid 2020-23"), + ToyotaCarDocs("Toyota Highlander 2020-23"), + ToyotaCarDocs("Toyota Highlander Hybrid 2020-23"), ], HIGHLANDER.specs, ) PRIUS = PlatformConfig( "TOYOTA PRIUS 2017", [ - ToyotaCarInfo("Toyota Prius 2016", "Toyota Safety Sense P", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), - ToyotaCarInfo("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), - ToyotaCarInfo("Toyota Prius Prime 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ToyotaCarDocs("Toyota Prius 2016", "Toyota Safety Sense P", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ToyotaCarDocs("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ToyotaCarDocs("Toyota Prius Prime 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), ], CarSpecs(mass=3045. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.74, tireStiffnessFactor=0.6371), dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), ) PRIUS_V = PlatformConfig( "TOYOTA PRIUS v 2017", - [ToyotaCarInfo("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED)], + [ToyotaCarDocs("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED)], CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, @@ -215,16 +215,16 @@ class CAR(Platforms): PRIUS_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA PRIUS TSS2 2021", [ - ToyotaCarInfo("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), - ToyotaCarInfo("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), + ToyotaCarDocs("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), + ToyotaCarDocs("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), ], CarSpecs(mass=3115. * CV.LB_TO_KG, wheelbase=2.70002, steerRatio=13.4, tireStiffnessFactor=0.6371), ) RAV4 = PlatformConfig( "TOYOTA RAV4 2017", [ - ToyotaCarInfo("Toyota RAV4 2016", "Toyota Safety Sense P"), - ToyotaCarInfo("Toyota RAV4 2017-18") + ToyotaCarDocs("Toyota RAV4 2016", "Toyota Safety Sense P"), + ToyotaCarDocs("Toyota RAV4 2017-18") ], CarSpecs(mass=3650. * CV.LB_TO_KG, wheelbase=2.65, steerRatio=16.88, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), @@ -232,8 +232,8 @@ class CAR(Platforms): RAV4H = PlatformConfig( "TOYOTA RAV4 HYBRID 2017", [ - ToyotaCarInfo("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") + ToyotaCarDocs("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), + ToyotaCarDocs("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") ], RAV4.specs, dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), @@ -242,16 +242,16 @@ class CAR(Platforms): RAV4_TSS2 = ToyotaTSS2PlatformConfig( "TOYOTA RAV4 2019", [ - ToyotaCarInfo("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2019-21"), + ToyotaCarDocs("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), + ToyotaCarDocs("Toyota RAV4 Hybrid 2019-21"), ], CarSpecs(mass=3585. * CV.LB_TO_KG, wheelbase=2.68986, steerRatio=14.3, tireStiffnessFactor=0.7933), ) RAV4_TSS2_2022 = ToyotaTSS2PlatformConfig( "TOYOTA RAV4 2022", [ - ToyotaCarInfo("Toyota RAV4 2022"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), + ToyotaCarDocs("Toyota RAV4 2022"), + ToyotaCarDocs("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), ], RAV4_TSS2.specs, flags=ToyotaFlags.RADAR_ACC, @@ -259,20 +259,20 @@ class CAR(Platforms): RAV4_TSS2_2023 = ToyotaTSS2PlatformConfig( "TOYOTA RAV4 2023", [ - ToyotaCarInfo("Toyota RAV4 2023-24"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2023-24"), + ToyotaCarDocs("Toyota RAV4 2023-24"), + ToyotaCarDocs("Toyota RAV4 Hybrid 2023-24"), ], RAV4_TSS2.specs, flags=ToyotaFlags.RADAR_ACC | ToyotaFlags.ANGLE_CONTROL, ) MIRAI = ToyotaTSS2PlatformConfig( "TOYOTA MIRAI 2021", # TSS 2.5 - [ToyotaCarInfo("Toyota Mirai 2021")], + [ToyotaCarDocs("Toyota Mirai 2021")], CarSpecs(mass=4300. * CV.LB_TO_KG, wheelbase=2.91, steerRatio=14.8, tireStiffnessFactor=0.8), ) SIENNA = PlatformConfig( "TOYOTA SIENNA 2018", - [ToyotaCarInfo("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED)], + [ToyotaCarDocs("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED)], CarSpecs(mass=4590. * CV.LB_TO_KG, wheelbase=3.03, steerRatio=15.5, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER, @@ -281,15 +281,15 @@ class CAR(Platforms): # Lexus LEXUS_CTH = PlatformConfig( "LEXUS CT HYBRID 2018", - [ToyotaCarInfo("Lexus CT Hybrid 2017-18", "Lexus Safety System+")], + [ToyotaCarDocs("Lexus CT Hybrid 2017-18", "Lexus Safety System+")], CarSpecs(mass=3108. * CV.LB_TO_KG, wheelbase=2.6, steerRatio=18.6, tireStiffnessFactor=0.517), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) LEXUS_ES = PlatformConfig( "LEXUS ES 2018", [ - ToyotaCarInfo("Lexus ES 2017-18"), - ToyotaCarInfo("Lexus ES Hybrid 2017-18"), + ToyotaCarDocs("Lexus ES 2017-18"), + ToyotaCarDocs("Lexus ES Hybrid 2017-18"), ], CarSpecs(mass=3677. * CV.LB_TO_KG, wheelbase=2.8702, steerRatio=16.0, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), @@ -297,28 +297,28 @@ class CAR(Platforms): LEXUS_ES_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS ES 2019", [ - ToyotaCarInfo("Lexus ES 2019-24"), - ToyotaCarInfo("Lexus ES Hybrid 2019-24", video_link="https://youtu.be/BZ29osRVJeg?t=12"), + ToyotaCarDocs("Lexus ES 2019-24"), + ToyotaCarDocs("Lexus ES Hybrid 2019-24", video_link="https://youtu.be/BZ29osRVJeg?t=12"), ], LEXUS_ES.specs, ) LEXUS_IS = PlatformConfig( "LEXUS IS 2018", - [ToyotaCarInfo("Lexus IS 2017-19")], + [ToyotaCarDocs("Lexus IS 2017-19")], CarSpecs(mass=3736.8 * CV.LB_TO_KG, wheelbase=2.79908, steerRatio=13.3, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, ) LEXUS_IS_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS IS 2023", - [ToyotaCarInfo("Lexus IS 2022-23")], + [ToyotaCarDocs("Lexus IS 2022-23")], LEXUS_IS.specs, ) LEXUS_NX = PlatformConfig( "LEXUS NX 2018", [ - ToyotaCarInfo("Lexus NX 2018-19"), - ToyotaCarInfo("Lexus NX Hybrid 2018-19"), + ToyotaCarDocs("Lexus NX 2018-19"), + ToyotaCarDocs("Lexus NX Hybrid 2018-19"), ], CarSpecs(mass=4070. * CV.LB_TO_KG, wheelbase=2.66, steerRatio=14.7, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), @@ -326,19 +326,19 @@ class CAR(Platforms): LEXUS_NX_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS NX 2020", [ - ToyotaCarInfo("Lexus NX 2020-21"), - ToyotaCarInfo("Lexus NX Hybrid 2020-21"), + ToyotaCarDocs("Lexus NX 2020-21"), + ToyotaCarDocs("Lexus NX Hybrid 2020-21"), ], LEXUS_NX.specs, ) LEXUS_LC_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS LC 2024", - [ToyotaCarInfo("Lexus LC 2024")], + [ToyotaCarDocs("Lexus LC 2024")], CarSpecs(mass=4500. * CV.LB_TO_KG, wheelbase=2.87, steerRatio=13.0, tireStiffnessFactor=0.444), ) LEXUS_RC = PlatformConfig( "LEXUS RC 2020", - [ToyotaCarInfo("Lexus RC 2018-20")], + [ToyotaCarDocs("Lexus RC 2018-20")], LEXUS_IS.specs, dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, @@ -346,11 +346,11 @@ class CAR(Platforms): LEXUS_RX = PlatformConfig( "LEXUS RX 2016", [ - ToyotaCarInfo("Lexus RX 2016", "Lexus Safety System+"), - ToyotaCarInfo("Lexus RX 2017-19"), + ToyotaCarDocs("Lexus RX 2016", "Lexus Safety System+"), + ToyotaCarDocs("Lexus RX 2017-19"), # Hybrid platforms - ToyotaCarInfo("Lexus RX Hybrid 2016", "Lexus Safety System+"), - ToyotaCarInfo("Lexus RX Hybrid 2017-19"), + ToyotaCarDocs("Lexus RX Hybrid 2016", "Lexus Safety System+"), + ToyotaCarDocs("Lexus RX Hybrid 2017-19"), ], CarSpecs(mass=4481. * CV.LB_TO_KG, wheelbase=2.79, steerRatio=16., tireStiffnessFactor=0.5533), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), @@ -358,14 +358,14 @@ class CAR(Platforms): LEXUS_RX_TSS2 = ToyotaTSS2PlatformConfig( "LEXUS RX 2020", [ - ToyotaCarInfo("Lexus RX 2020-22"), - ToyotaCarInfo("Lexus RX Hybrid 2020-22"), + ToyotaCarDocs("Lexus RX 2020-22"), + ToyotaCarDocs("Lexus RX Hybrid 2020-22"), ], LEXUS_RX.specs, ) LEXUS_GS_F = PlatformConfig( "LEXUS GS F 2016", - [ToyotaCarInfo("Lexus GS F 2016")], + [ToyotaCarDocs("Lexus GS F 2016")], CarSpecs(mass=4034. * CV.LB_TO_KG, wheelbase=2.84988, steerRatio=13.3, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 83b30d2569..9019d857b8 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -7,7 +7,7 @@ from panda.python import uds from opendbc.can.can_define import CANDefine from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, \ Device from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 @@ -158,7 +158,7 @@ class Footnote(Enum): @dataclass -class VWCarInfo(CarInfo): +class VWCarDocs(CarDocs): package: str = "Adaptive Cruise Control (ACC) & Lane Assist" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.j533])) @@ -180,197 +180,197 @@ class CAR(Platforms): ARTEON_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN ARTEON 1ST GEN", # Chassis AN [ - VWCarInfo("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), - VWCarInfo("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), - VWCarInfo("Volkswagen Arteon eHybrid 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), - VWCarInfo("Volkswagen CC 2018-22", video_link="https://youtu.be/FAomFKPFlDA"), + VWCarDocs("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), + VWCarDocs("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), + VWCarDocs("Volkswagen Arteon eHybrid 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), + VWCarDocs("Volkswagen CC 2018-22", video_link="https://youtu.be/FAomFKPFlDA"), ], VolkswagenCarSpecs(mass=1733, wheelbase=2.84), ) ATLAS_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN ATLAS 1ST GEN", # Chassis CA [ - VWCarInfo("Volkswagen Atlas 2018-23"), - VWCarInfo("Volkswagen Atlas Cross Sport 2020-22"), - VWCarInfo("Volkswagen Teramont 2018-22"), - VWCarInfo("Volkswagen Teramont Cross Sport 2021-22"), - VWCarInfo("Volkswagen Teramont X 2021-22"), + VWCarDocs("Volkswagen Atlas 2018-23"), + VWCarDocs("Volkswagen Atlas Cross Sport 2020-22"), + VWCarDocs("Volkswagen Teramont 2018-22"), + VWCarDocs("Volkswagen Teramont Cross Sport 2021-22"), + VWCarDocs("Volkswagen Teramont X 2021-22"), ], VolkswagenCarSpecs(mass=2011, wheelbase=2.98), ) CADDY_MK3 = VolkswagenPQPlatformConfig( "VOLKSWAGEN CADDY 3RD GEN", # Chassis 2K [ - VWCarInfo("Volkswagen Caddy 2019"), - VWCarInfo("Volkswagen Caddy Maxi 2019"), + VWCarDocs("Volkswagen Caddy 2019"), + VWCarDocs("Volkswagen Caddy Maxi 2019"), ], VolkswagenCarSpecs(mass=1613, wheelbase=2.6, minSteerSpeed=21 * CV.KPH_TO_MS), ) CRAFTER_MK2 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN CRAFTER 2ND GEN", # Chassis SY/SZ [ - VWCarInfo("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), - VWCarInfo("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), - VWCarInfo("Volkswagen Grand California 2019-23", video_link="https://youtu.be/4100gLeabmo"), - VWCarInfo("MAN TGE 2017-23", video_link="https://youtu.be/4100gLeabmo"), - VWCarInfo("MAN eTGE 2020-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("Volkswagen Grand California 2019-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("MAN TGE 2017-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("MAN eTGE 2020-23", video_link="https://youtu.be/4100gLeabmo"), ], VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), ) GOLF_MK7 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN GOLF 7TH GEN", # Chassis 5G/AU/BA/BE [ - VWCarInfo("Volkswagen e-Golf 2014-20"), - VWCarInfo("Volkswagen Golf 2015-20", auto_resume=False), - VWCarInfo("Volkswagen Golf Alltrack 2015-19", auto_resume=False), - VWCarInfo("Volkswagen Golf GTD 2015-20"), - VWCarInfo("Volkswagen Golf GTE 2015-20"), - VWCarInfo("Volkswagen Golf GTI 2015-21", auto_resume=False), - VWCarInfo("Volkswagen Golf R 2015-19"), - VWCarInfo("Volkswagen Golf SportsVan 2015-20"), + VWCarDocs("Volkswagen e-Golf 2014-20"), + VWCarDocs("Volkswagen Golf 2015-20", auto_resume=False), + VWCarDocs("Volkswagen Golf Alltrack 2015-19", auto_resume=False), + VWCarDocs("Volkswagen Golf GTD 2015-20"), + VWCarDocs("Volkswagen Golf GTE 2015-20"), + VWCarDocs("Volkswagen Golf GTI 2015-21", auto_resume=False), + VWCarDocs("Volkswagen Golf R 2015-19"), + VWCarDocs("Volkswagen Golf SportsVan 2015-20"), ], VolkswagenCarSpecs(mass=1397, wheelbase=2.62), ) JETTA_MK7 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN JETTA 7TH GEN", # Chassis BU [ - VWCarInfo("Volkswagen Jetta 2018-24"), - VWCarInfo("Volkswagen Jetta GLI 2021-24"), + VWCarDocs("Volkswagen Jetta 2018-24"), + VWCarDocs("Volkswagen Jetta GLI 2021-24"), ], VolkswagenCarSpecs(mass=1328, wheelbase=2.71), ) PASSAT_MK8 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN PASSAT 8TH GEN", # Chassis 3G [ - VWCarInfo("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), - VWCarInfo("Volkswagen Passat Alltrack 2015-22"), - VWCarInfo("Volkswagen Passat GTE 2015-22"), + VWCarDocs("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), + VWCarDocs("Volkswagen Passat Alltrack 2015-22"), + VWCarDocs("Volkswagen Passat GTE 2015-22"), ], VolkswagenCarSpecs(mass=1551, wheelbase=2.79), ) PASSAT_NMS = VolkswagenPQPlatformConfig( "VOLKSWAGEN PASSAT NMS", # Chassis A3 - [VWCarInfo("Volkswagen Passat NMS 2017-22")], + [VWCarDocs("Volkswagen Passat NMS 2017-22")], VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS), ) POLO_MK6 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN POLO 6TH GEN", # Chassis AW [ - VWCarInfo("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), - VWCarInfo("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), + VWCarDocs("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), + VWCarDocs("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), ], VolkswagenCarSpecs(mass=1230, wheelbase=2.55), ) SHARAN_MK2 = VolkswagenPQPlatformConfig( "VOLKSWAGEN SHARAN 2ND GEN", # Chassis 7N [ - VWCarInfo("Volkswagen Sharan 2018-22"), - VWCarInfo("SEAT Alhambra 2018-20"), + VWCarDocs("Volkswagen Sharan 2018-22"), + VWCarDocs("SEAT Alhambra 2018-20"), ], VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50*CV.KPH_TO_MS), ) TAOS_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TAOS 1ST GEN", # Chassis B2 - [VWCarInfo("Volkswagen Taos 2022-23")], + [VWCarDocs("Volkswagen Taos 2022-23")], VolkswagenCarSpecs(mass=1498, wheelbase=2.69), ) TCROSS_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN T-CROSS 1ST GEN", # Chassis C1 - [VWCarInfo("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], + [VWCarDocs("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1150, wheelbase=2.60), ) TIGUAN_MK2 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TIGUAN 2ND GEN", # Chassis AD/BW [ - VWCarInfo("Volkswagen Tiguan 2018-24"), - VWCarInfo("Volkswagen Tiguan eHybrid 2021-23"), + VWCarDocs("Volkswagen Tiguan 2018-24"), + VWCarDocs("Volkswagen Tiguan eHybrid 2021-23"), ], VolkswagenCarSpecs(mass=1715, wheelbase=2.74), ) TOURAN_MK2 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TOURAN 2ND GEN", # Chassis 1T - [VWCarInfo("Volkswagen Touran 2016-23")], + [VWCarDocs("Volkswagen Touran 2016-23")], VolkswagenCarSpecs(mass=1516, wheelbase=2.79), ) TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN TRANSPORTER T6.1", # Chassis 7H/7L [ - VWCarInfo("Volkswagen Caravelle 2020"), - VWCarInfo("Volkswagen California 2021-23"), + VWCarDocs("Volkswagen Caravelle 2020"), + VWCarDocs("Volkswagen California 2021-23"), ], VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), ) TROC_MK1 = VolkswagenMQBPlatformConfig( "VOLKSWAGEN T-ROC 1ST GEN", # Chassis A1 - [VWCarInfo("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0])], + [VWCarDocs("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1413, wheelbase=2.63), ) AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( "AUDI A3 3RD GEN", # Chassis 8V/FF [ - VWCarInfo("Audi A3 2014-19"), - VWCarInfo("Audi A3 Sportback e-tron 2017-18"), - VWCarInfo("Audi RS3 2018"), - VWCarInfo("Audi S3 2015-17"), + VWCarDocs("Audi A3 2014-19"), + VWCarDocs("Audi A3 Sportback e-tron 2017-18"), + VWCarDocs("Audi RS3 2018"), + VWCarDocs("Audi S3 2015-17"), ], VolkswagenCarSpecs(mass=1335, wheelbase=2.61), ) AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( "AUDI Q2 1ST GEN", # Chassis GA - [VWCarInfo("Audi Q2 2018")], + [VWCarDocs("Audi Q2 2018")], VolkswagenCarSpecs(mass=1205, wheelbase=2.61), ) AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( "AUDI Q3 2ND GEN", # Chassis 8U/F3/FS - [VWCarInfo("Audi Q3 2019-23")], + [VWCarDocs("Audi Q3 2019-23")], VolkswagenCarSpecs(mass=1623, wheelbase=2.68), ) SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( "SEAT ATECA 1ST GEN", # Chassis 5F - [VWCarInfo("SEAT Ateca 2018")], + [VWCarDocs("SEAT Ateca 2018")], VolkswagenCarSpecs(mass=1900, wheelbase=2.64), ) SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( "SEAT LEON 3RD GEN", # Chassis 5F - [VWCarInfo("SEAT Leon 2014-20")], + [VWCarDocs("SEAT Leon 2014-20")], VolkswagenCarSpecs(mass=1227, wheelbase=2.64), ) SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( "SKODA FABIA 4TH GEN", # Chassis PJ - [VWCarInfo("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0])], + [VWCarDocs("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1266, wheelbase=2.56), ) SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KAMIQ 1ST GEN", # Chassis NW - [VWCarInfo("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ])], + [VWCarDocs("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ])], VolkswagenCarSpecs(mass=1265, wheelbase=2.66), ) SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KAROQ 1ST GEN", # Chassis NU - [VWCarInfo("Škoda Karoq 2019-23")], + [VWCarDocs("Škoda Karoq 2019-23")], VolkswagenCarSpecs(mass=1278, wheelbase=2.66), ) SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( "SKODA KODIAQ 1ST GEN", # Chassis NS - [VWCarInfo("Škoda Kodiaq 2017-23")], + [VWCarDocs("Škoda Kodiaq 2017-23")], VolkswagenCarSpecs(mass=1569, wheelbase=2.79), ) SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( "SKODA OCTAVIA 3RD GEN", # Chassis NE [ - VWCarInfo("Škoda Octavia 2015-19"), - VWCarInfo("Škoda Octavia RS 2016"), + VWCarDocs("Škoda Octavia 2015-19"), + VWCarDocs("Škoda Octavia RS 2016"), ], VolkswagenCarSpecs(mass=1388, wheelbase=2.68), ) SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( "SKODA SCALA 1ST GEN", # Chassis NW - [VWCarInfo("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0])], + [VWCarDocs("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1192, wheelbase=2.65), ) SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( "SKODA SUPERB 3RD GEN", # Chassis 3V/NP - [VWCarInfo("Škoda Superb 2015-22")], + [VWCarDocs("Škoda Superb 2015-22")], VolkswagenCarSpecs(mass=1505, wheelbase=2.84), ) From 07ec5e5fdb322977c6c7c24286e537b76e5f9203 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 15 Mar 2024 17:10:38 -0400 Subject: [PATCH 223/599] test_updated: test permissions are preserved (#31881) * test perserved * space --- selfdrive/updated/tests/test_base.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/selfdrive/updated/tests/test_base.py b/selfdrive/updated/tests/test_base.py index b79785277a..1d81459883 100644 --- a/selfdrive/updated/tests/test_base.py +++ b/selfdrive/updated/tests/test_base.py @@ -2,6 +2,7 @@ import os import pathlib import shutil import signal +import stat import subprocess import tempfile import time @@ -29,9 +30,13 @@ def update_release(directory, name, version, agnos_version, release_notes): with open(directory / "common" / "version.h", "w") as f: f.write(f'#define COMMA_VERSION "{version}"') - with open(directory / "launch_env.sh", "w") as f: + launch_env = directory / "launch_env.sh" + with open(launch_env, "w") as f: f.write(f'export AGNOS_VERSION="{agnos_version}"') + st = os.stat(launch_env) + os.chmod(launch_env, st.st_mode | stat.S_IEXEC) + test_symlink = directory / "test_symlink" if not os.path.exists(str(test_symlink)): os.symlink("common/version.h", test_symlink) @@ -123,6 +128,7 @@ class BaseUpdateTest(unittest.TestCase): self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") self.assertEqual(get_version(str(self.staging_root / "finalized")), version) self.assertEqual(get_consistent_flag(str(self.staging_root / "finalized")), True) + self.assertTrue(os.access(str(self.staging_root / "finalized" / "launch_env.sh"), os.X_OK)) with open(self.staging_root / "finalized" / "test_symlink") as f: self.assertIn(version, f.read()) From 91933b5f428332028e7b5be3ac58cb063486ca89 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 15 Mar 2024 14:46:29 -0700 Subject: [PATCH 224/599] Hyundai CAN FD: allow more platforms to use enhanced fuzzy fingerprinting (#31882) * K8 has hybrid descriptor (GL3H), AND we detect hybrid now * don't know if Carnival's hybrid variant has them, but it's not out yet, and we detect hybrid fixes: ec32d6aa1c7735d1/2024-03-15--16-41-46 * cmt --- selfdrive/car/hyundai/values.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 4419cde27f..f4c256fda9 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -701,7 +701,9 @@ DATE_FW_PATTERN = re.compile(b'(?<=[ -])([0-9]{6}$)') PART_NUMBER_FW_PATTERN = re.compile(b'(?<=[0-9][.,][0-9]{2} )([0-9]{5}[-/]?[A-Z][A-Z0-9]{3}[0-9])') # We've seen both ICE and hybrid for these platforms, and they have hybrid descriptors (e.g. MQ4 vs MQ4H) -CANFD_FUZZY_WHITELIST = {CAR.KIA_SORENTO_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN} +CANFD_FUZZY_WHITELIST = {CAR.KIA_SORENTO_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN, CAR.KIA_K8_HEV_1ST_GEN, + # TODO: the hybrid variant is not out yet + CAR.KIA_CARNIVAL_4TH_GEN} # List of ECUs expected to have platform codes, camera and radar should exist on all cars # TODO: use abs, it has the platform code and part number on many platforms From 5746c4672dffbdee0209318b6492a37c48977b3e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 15 Mar 2024 15:37:29 -0700 Subject: [PATCH 225/599] Ford: hybrid docs (#31874) * kinda works * fix * clean up * rm hybrid entries * shorter * shorter * fix that * one line! * we can get rid of this now! --- selfdrive/car/ford/values.py | 44 +++++++++++++++++------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 5869a800a3..917f50d6fd 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -1,4 +1,5 @@ -from dataclasses import dataclass, field +import copy +from dataclasses import dataclass, field, replace from enum import Enum, IntFlag import panda.python.uds as uds @@ -60,6 +61,8 @@ class Footnote(Enum): @dataclass class FordCarDocs(CarDocs): package: str = "Co-Pilot360 Assist+" + hybrid: bool = False + plug_in_hybrid: bool = False def init_make(self, CP: car.CarParams): harness = CarHarness.ford_q4 if CP.flags & FordFlags.CANFD else CarHarness.ford_q3 @@ -73,6 +76,15 @@ class FordCarDocs(CarDocs): class FordPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('ford_lincoln_base_pt', RADAR.DELPHI_MRR)) + def init(self): + for car_info in list(self.car_info): + if car_info.hybrid: + name = f"{car_info.make} {car_info.model} Hybrid {car_info.years}" + self.car_info.append(replace(copy.deepcopy(car_info), name=name)) + if car_info.plug_in_hybrid: + name = f"{car_info.make} {car_info.model} Plug-in Hybrid {car_info.years}" + self.car_info.append(replace(copy.deepcopy(car_info), name=name)) + @dataclass class FordCANFDPlatformConfig(FordPlatformConfig): @@ -92,31 +104,22 @@ class CAR(Platforms): ESCAPE_MK4 = FordPlatformConfig( "FORD ESCAPE 4TH GEN", [ - FordCarDocs("Ford Escape 2020-22"), - FordCarDocs("Ford Escape Hybrid 2020-22"), - FordCarDocs("Ford Escape Plug-in Hybrid 2020-22"), - FordCarDocs("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering"), - FordCarDocs("Ford Kuga Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), - FordCarDocs("Ford Kuga Plug-in Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), + FordCarDocs("Ford Escape 2020-22", hybrid=True, plug_in_hybrid=True), + FordCarDocs("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering", hybrid=True, plug_in_hybrid=True), ], CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), ) EXPLORER_MK6 = FordPlatformConfig( "FORD EXPLORER 6TH GEN", [ - FordCarDocs("Ford Explorer 2020-23"), - FordCarDocs("Ford Explorer Hybrid 2020-23"), # Limited and Platinum only - FordCarDocs("Lincoln Aviator 2020-23", "Co-Pilot360 Plus"), - FordCarDocs("Lincoln Aviator Plug-in Hybrid 2020-23", "Co-Pilot360 Plus"), # Grand Touring only + FordCarDocs("Ford Explorer 2020-23", hybrid=True), # Hybrid: Limited and Platinum only + FordCarDocs("Lincoln Aviator 2020-23", "Co-Pilot360 Plus", plug_in_hybrid=True), # Hybrid: Grand Touring only ], CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), ) F_150_MK14 = FordCANFDPlatformConfig( "FORD F-150 14TH GEN", - [ - FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0"), - FordCarDocs("Ford F-150 Hybrid 2022-23", "Co-Pilot360 Active 2.0"), - ], + [FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0", hybrid=True)], CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), ) F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( @@ -126,19 +129,14 @@ class CAR(Platforms): ) FOCUS_MK4 = FordPlatformConfig( "FORD FOCUS 4TH GEN", - [ - FordCarDocs("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), - FordCarDocs("Ford Focus Hybrid 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), # mHEV only - ], + [FordCarDocs("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS], hybrid=True)], # mHEV only CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), ) MAVERICK_MK1 = FordPlatformConfig( "FORD MAVERICK 1ST GEN", [ - FordCarDocs("Ford Maverick 2022", "LARIAT Luxury"), - FordCarDocs("Ford Maverick Hybrid 2022", "LARIAT Luxury"), - FordCarDocs("Ford Maverick 2023-24", "Co-Pilot360 Assist"), - FordCarDocs("Ford Maverick Hybrid 2023-24", "Co-Pilot360 Assist"), + FordCarDocs("Ford Maverick 2022", "LARIAT Luxury", hybrid=True), + FordCarDocs("Ford Maverick 2023-24", "Co-Pilot360 Assist", hybrid=True), ], CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) From 6f9b663ff23716ed5b20c1809066001d7a137c06 Mon Sep 17 00:00:00 2001 From: Stanley Lee Date: Fri, 15 Mar 2024 16:12:07 -0700 Subject: [PATCH 226/599] VW MQB: Add FW for 2024 Volkswagen Tiguan (#30978) * VW MQB: Add FW for 2024 Volkswagen Tiguan * VW MQB: Update sort order of new 2024 Volkswagen Tiguan FW --- selfdrive/car/volkswagen/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index cf3e9287cc..8792b66f91 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -581,6 +581,7 @@ FW_VERSIONS = { b'\xf1\x8709G927158GM\xf1\x893936', b'\xf1\x8709G927158GN\xf1\x893938', b'\xf1\x8709G927158HB\xf1\x894069', + b'\xf1\x8709G927158HC\xf1\x894070', b'\xf1\x870D9300043 \xf1\x895202', b'\xf1\x870DD300046K \xf1\x892302', b'\xf1\x870DL300011N \xf1\x892001', From 1610010ad2b174ec43ea33a5852b0c9ea721285e Mon Sep 17 00:00:00 2001 From: ilxszh <124226489+ilxszh@users.noreply.github.com> Date: Sat, 16 Mar 2024 07:24:19 +0800 Subject: [PATCH 227/599] Add VW Touran CN model fingerprint (#31295) * Update fingerprints.py Add Touran CN model support * Update fingerprints.py Remove repeated FR fwVersion. * run bot --------- Co-authored-by: Shane Smiskol --- selfdrive/car/volkswagen/fingerprints.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 8792b66f91..b31e8cf39d 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -640,11 +640,13 @@ FW_VERSIONS = { }, CAR.TOURAN_MK2: { (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8704E906025BE\xf1\x890720', b'\xf1\x8704E906027HQ\xf1\x893746', b'\xf1\x8704L906026HM\xf1\x893017', b'\xf1\x8705E906018CQ\xf1\x890808', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x870CW300020A \xf1\x891936', b'\xf1\x870CW300041E \xf1\x891005', b'\xf1\x870CW300041Q \xf1\x891606', b'\xf1\x870CW300051M \xf1\x891926', @@ -653,10 +655,12 @@ FW_VERSIONS = { b'\xf1\x875Q0959655AS\xf1\x890318\xf1\x82\x1336350021353335314132014730479333313100', b'\xf1\x875Q0959655AS\xf1\x890318\xf1\x82\x13363500213533353141324C4732479333313100', b'\xf1\x875Q0959655CH\xf1\x890421\xf1\x82\x1336350021353336314740025250529333613100', + b'\xf1\x875QD959655AJ\xf1\x890421\xf1\x82\x1336350021313300314240023330339333663100', ], (Ecu.eps, 0x712, None): [ b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820531B0062105', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567A8090400', + b'\xf1\x875QD909144F \xf1\x891082\xf1\x82\x0521A00642A1', ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x872Q0907572AA\xf1\x890396', From 0821201dc4edf3c75ae18ec2a30c1fbfca76dfcd Mon Sep 17 00:00:00 2001 From: "fri.K" Date: Sat, 16 Mar 2024 00:32:39 +0100 Subject: [PATCH 228/599] Fingerprint for Skoda Octavia MK3 Scout with 6 speed DSG (#31574) Fingerprint for Skoda Octavia MK3 Scout with DSG retrofitted ACC with Audi A3 rounded radar --- selfdrive/car/volkswagen/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index b31e8cf39d..8a30b94cb7 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -1062,6 +1062,7 @@ FW_VERSIONS = { b'\xf1\x8704E906027HD\xf1\x893742', b'\xf1\x8704E906027MH\xf1\x894786', b'\xf1\x8704L906021DT\xf1\x898127', + b'\xf1\x8704L906021ER\xf1\x898361', b'\xf1\x8704L906026BP\xf1\x897608', b'\xf1\x8704L906026BS\xf1\x891541', b'\xf1\x875G0906259C \xf1\x890002', @@ -1071,6 +1072,7 @@ FW_VERSIONS = { b'\xf1\x870CW300041N \xf1\x891605', b'\xf1\x870CW300043B \xf1\x891601', b'\xf1\x870CW300043P \xf1\x891605', + b'\xf1\x870D9300012H \xf1\x894518', b'\xf1\x870D9300041C \xf1\x894936', b'\xf1\x870D9300041H \xf1\x895220', b'\xf1\x870D9300041J \xf1\x894902', @@ -1096,6 +1098,7 @@ FW_VERSIONS = { b'\xf1\x875QD909144E \xf1\x891081\xf1\x82\x0521T00503A1', ], (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x875Q0907567P \xf1\x890100\xf1\x82\x0101', b'\xf1\x875Q0907572D \xf1\x890304\xf1\x82\x0101', b'\xf1\x875Q0907572F \xf1\x890400\xf1\x82\x0101', b'\xf1\x875Q0907572H \xf1\x890620', From a790b49fd5e0217744d7dd0209606a497b10ae50 Mon Sep 17 00:00:00 2001 From: Chase Bolt Date: Fri, 15 Mar 2024 17:03:45 -0700 Subject: [PATCH 229/599] Kia: add 2024 Sportage X-Pro Prestige camera FW version (#31581) * adding fingerprint for 2024 Kia Sportage X-Pro Prestige * update docs --------- Co-authored-by: Shane Smiskol --- docs/CARS.md | 2 +- selfdrive/car/hyundai/fingerprints.py | 1 + selfdrive/car/hyundai/values.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index eed06f7110..6202b2f0c2 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -160,7 +160,7 @@ A supported vehicle is one that just works when you install a comma device. All |Kia|Sorento 2021-23[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Sorento Hybrid 2021-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Sorento Plug-in Hybrid 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sportage 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sportage 2023-24[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Sportage Hybrid 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Stinger 2018-20|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Stinger 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index bd5503b47e..d438130967 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1609,6 +1609,7 @@ FW_VERSIONS = { b'\xf1\x00NQ5 FR_CMR AT USA LHD 1.00 1.00 99211-P1030 662', b'\xf1\x00NQ5 FR_CMR AT USA LHD 1.00 1.00 99211-P1040 663', b'\xf1\x00NQ5 FR_CMR AT USA LHD 1.00 1.00 99211-P1060 665', + b'\xf1\x00NQ5 FR_CMR AT USA LHD 1.00 1.00 99211-P1070 690', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00NQ5__ 1.00 1.02 99110-P1000 ', diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index f4c256fda9..003484f2bd 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -483,7 +483,7 @@ class CAR(Platforms): KIA_SPORTAGE_5TH_GEN = HyundaiCanFDPlatformConfig( "KIA SPORTAGE 5TH GEN", [ - HyundaiCarDocs("Kia Sportage 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Kia Sportage 2023-24", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarDocs("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), ], # weight from SX and above trims, average of FWD and AWD version, steering ratio according to Kia News https://www.kiamedia.com/us/en/models/sportage/2023/specifications From 1723d27b9cc2a7bda6a4d40d3e887b2d85d8e4ca Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 15 Mar 2024 17:33:38 -0700 Subject: [PATCH 230/599] Kia Niro Plug-in Hybrid: update required package (#31888) * from https://www.applewoodkialangley.ca/new/2022-Kia-Niro%20plug_in%20hybrid-brochure.html?lang=ENGLISH&vehicle=kia-niropluginhybrid-2022 * LXS on 2021 also lacks SCC - https://www.kiamedia.com/us/en/models/niro-phev/2021/documents * 2020 too?! https://www.kiamedia.com/us/en/models/niro-phev/2020/documents * update --- docs/CARS.md | 6 +++--- selfdrive/car/hyundai/values.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 6202b2f0c2..f760f29912 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -148,9 +148,9 @@ A supported vehicle is one that just works when you install a comma device. All |Kia|Niro Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Plug-in Hybrid 2018-19|All|Stock|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro Plug-in Hybrid 2020|All|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro Plug-in Hybrid 2021|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro Plug-in Hybrid 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Plug-in Hybrid 2020|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Plug-in Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Plug-in Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Optima 2017|Advanced Smart Cruise Control|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Optima 2019-20|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai G connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Optima Hybrid 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 003484f2bd..f274e5e9e1 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -420,7 +420,7 @@ class CAR(Platforms): [ HyundaiCarDocs("Kia Niro Hybrid 2018", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarDocs("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarDocs("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_d])), ], KIA_NIRO_EV.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.MIN_STEER_32_MPH, @@ -428,8 +428,8 @@ class CAR(Platforms): KIA_NIRO_PHEV_2022 = HyundaiPlatformConfig( "KIA NIRO PLUG-IN HYBRID 2022", [ - HyundaiCarDocs("Kia Niro Plug-in Hybrid 2021", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), - HyundaiCarDocs("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), ], KIA_NIRO_EV.specs, flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR, From 1cb49ae44d8a5c2ecc2e8a38cb6aea2d5cfcb674 Mon Sep 17 00:00:00 2001 From: James <91348155+FrogAi@users.noreply.github.com> Date: Fri, 15 Mar 2024 22:56:04 -0700 Subject: [PATCH 231/599] Fix radard comment (#31891) --- selfdrive/controls/radard.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/controls/radard.py b/selfdrive/controls/radard.py index 4de4208e9d..16c9e0635c 100755 --- a/selfdrive/controls/radard.py +++ b/selfdrive/controls/radard.py @@ -133,7 +133,7 @@ def match_vision_to_track(v_ego: float, lead: capnp._DynamicStructReader, tracks prob_y = laplacian_pdf(c.yRel, -lead.y[0], lead.yStd[0]) prob_v = laplacian_pdf(c.vRel + v_ego, lead.v[0], lead.vStd[0]) - # This is isn't exactly right, but good heuristic + # This isn't exactly right, but it's a good heuristic return prob_d * prob_y * prob_v track = max(tracks.values(), key=prob) From 93c06eaf43e525b4eeb9e53de889a0fb8d542c4d Mon Sep 17 00:00:00 2001 From: ishfaaq Date: Sun, 17 Mar 2024 04:44:26 -0400 Subject: [PATCH 232/599] Updating steerRatio for 4th gen Hyundai Tucson (2022+) (#31877) Update values.py --- selfdrive/car/hyundai/values.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index f274e5e9e1..4b99fb096d 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -356,7 +356,7 @@ class CAR(Platforms): HyundaiCarDocs("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarDocs("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), ], - CarSpecs(mass=1630, wheelbase=2.756, steerRatio=16, tireStiffnessFactor=0.385), + CarSpecs(mass=1630, wheelbase=2.756, steerRatio=13.7, tireStiffnessFactor=0.385), ) SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( "HYUNDAI SANTA CRUZ 1ST GEN", From 9d5c70fbc9349d420c181ff098250e24d03eba07 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 17 Mar 2024 03:55:48 -0500 Subject: [PATCH 233/599] Toyota: check FW valid (#31898) * basic check * basic check * fix --- selfdrive/car/toyota/tests/test_toyota.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/selfdrive/car/toyota/tests/test_toyota.py b/selfdrive/car/toyota/tests/test_toyota.py index d9d4fe087f..6a2476dff9 100755 --- a/selfdrive/car/toyota/tests/test_toyota.py +++ b/selfdrive/car/toyota/tests/test_toyota.py @@ -13,6 +13,10 @@ Ecu = car.CarParams.Ecu ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} +def check_fw_version(fw_version: bytes) -> bool: + return b'?' not in fw_version + + class TestToyotaInterfaces(unittest.TestCase): def test_car_sets(self): self.assertTrue(len(ANGLE_CONTROL_CAR - TSS2_CAR) == 0) @@ -59,6 +63,14 @@ class TestToyotaFingerprint(unittest.TestCase): car_model in FW_QUERY_CONFIG.non_essential_ecus[Ecu.engine], f"Car model unexpectedly {'not ' if len(engine_ecus) > 1 else ''}in non-essential list") + def test_valid_fw_versions(self): + # Asserts all FW versions are valid + for car_model, ecus in FW_VERSIONS.items(): + with self.subTest(car_model=car_model.value): + for fws in ecus.values(): + for fw in fws: + self.assertTrue(check_fw_version(fw), fw) + # Tests for part numbers, platform codes, and sub-versions which Toyota will use to fuzzy # fingerprint in the absence of full FW matches: @settings(max_examples=100) From 96aa3223e523a555c04a10ab68a64ef43ef35803 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 17 Mar 2024 04:05:13 -0500 Subject: [PATCH 234/599] [bot] Fingerprints: add missing FW versions from new users (#31897) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 4 ++++ selfdrive/car/honda/fingerprints.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index c021facba5..219ec3e2b8 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -95,6 +95,7 @@ FW_VERSIONS = { b'68405327AC', b'68436233AB', b'68436233AC', + b'68436234AB', b'68436250AE', b'68529067AA', b'68594993AB', @@ -379,6 +380,7 @@ FW_VERSIONS = { b'68434859AC', b'68434860AC', b'68453483AC', + b'68453483AD', b'68453487AD', b'68453491AC', b'68453499AD', @@ -511,11 +513,13 @@ FW_VERSIONS = { b'68455145AE ', b'68455146AC ', b'68467915AC ', + b'68467916AC ', b'68467936AC ', b'68500630AD', b'68500630AE', b'68502719AC ', b'68502722AC ', + b'68502733AC ', b'68502734AF ', b'68502740AF ', b'68502741AF ', diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 83c2c3f1eb..5296a91e50 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -922,6 +922,7 @@ FW_VERSIONS = { b'54008-TG7-A530\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ + b'28101-5EY-A040\x00\x00', b'28101-5EY-A050\x00\x00', b'28101-5EY-A100\x00\x00', b'28101-5EY-A430\x00\x00', @@ -942,6 +943,7 @@ FW_VERSIONS = { b'37805-RLV-4070\x00\x00', b'37805-RLV-5140\x00\x00', b'37805-RLV-5230\x00\x00', + b'37805-RLV-A630\x00\x00', b'37805-RLV-A830\x00\x00', b'37805-RLV-A840\x00\x00', b'37805-RLV-B210\x00\x00', @@ -1057,6 +1059,7 @@ FW_VERSIONS = { b'57114-TG7-A630\x00\x00', b'57114-TG7-A730\x00\x00', b'57114-TG8-A140\x00\x00', + b'57114-TG8-A230\x00\x00', b'57114-TG8-A240\x00\x00', b'57114-TG8-A630\x00\x00', b'57114-TG8-A730\x00\x00', From 04382115c1cf9a2082ce9f644106d63f7d99d837 Mon Sep 17 00:00:00 2001 From: gittyhubbyfrankybobby Date: Sun, 17 Mar 2024 05:14:01 -0400 Subject: [PATCH 235/599] Add Genesis G90 2020 Fingerprint (#31893) * add 2020 G90 fingerprint * Add G90 fingerprint * Add 2020 G90 transmission and fwdRadar fingerprints * run bot * probably fine to include 2019 --------- Co-authored-by: Dwight Awesome Co-authored-by: Shane Smiskol --- docs/CARS.md | 2 +- selfdrive/car/hyundai/fingerprints.py | 3 +++ selfdrive/car/hyundai/values.py | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index f760f29912..251ceb4780 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -54,7 +54,7 @@ A supported vehicle is one that just works when you install a comma device. All |Genesis|G70 2020-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2017|All|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|G90 2017-18|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G90 2017-20|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|GV60 (Advanced Trim) 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|GV60 (Performance Trim) 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|GV70 (2.5T Trim) 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index d438130967..4116c65b3f 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -900,16 +900,19 @@ FW_VERSIONS = { }, CAR.GENESIS_G90: { (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SHI0G50NH0\xff\x80\xc2*', b'\xf1\x87VDGMD15352242DD3w\x87gxwvgv\x87wvw\x88wXwffVfffUfw\x88o\xff\x06J\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', b'\xf1\x87VDGMD15866192DD3x\x88x\x89wuFvvfUf\x88vWwgwwwvfVgx\x87o\xff\xbc^\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', b'\xf1\x87VDHMD16446682DD3WwwxxvGw\x88\x88\x87\x88\x88whxx\x87\x87\x87\x85fUfwu_\xffT\xf8\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00HI__ SCC F-CUP 1.00 1.01 96400-D2100 ', + b'\xf1\x00HI__ SCC FHCUP 1.00 1.02 99110-D2100 ', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00HI LKAS AT USA LHD 1.00 1.00 95895-D2020 160302', b'\xf1\x00HI LKAS AT USA LHD 1.00 1.00 95895-D2030 170208', + b'\xf1\x00HI MFC AT USA LHD 1.00 1.03 99211-D2000 190831', ], (Ecu.engine, 0x7e0, None): [ b'\xf1\x810000000000\x00', diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 4b99fb096d..d81d9ad510 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -590,7 +590,7 @@ class CAR(Platforms): ) GENESIS_G90 = HyundaiPlatformConfig( "GENESIS G90 2017", - [HyundaiCarDocs("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c]))], + [HyundaiCarDocs("Genesis G90 2017-20", "All", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=2200, wheelbase=3.15, steerRatio=12.069), ) GENESIS_GV80 = HyundaiCanFDPlatformConfig( From 7e9a909e0e57ecb31df4c87c5b9a06b1204fd034 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 17 Mar 2024 04:23:44 -0500 Subject: [PATCH 236/599] [bot] Fingerprints: add missing Volkswagen FW versions from new users (#31734) Export fingerprints --- selfdrive/car/volkswagen/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 8a30b94cb7..e39e65b52c 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -80,6 +80,7 @@ FW_VERSIONS = { b'\xf1\x873Q0959655BN\xf1\x890713\xf1\x82\x0e2214152212001105141122052900', b'\xf1\x873Q0959655DB\xf1\x890720\xf1\x82\x0e1114151112001105111122052900', b'\xf1\x873Q0959655DB\xf1\x890720\xf1\x82\x0e2214152212001105141122052900', + b'\xf1\x873Q0959655DM\xf1\x890732\xf1\x82\x0e1114151112001105111122052J00', b'\xf1\x873Q0959655DM\xf1\x890732\xf1\x82\x0e1114151112001105161122052J00', b'\xf1\x873Q0959655DM\xf1\x890732\xf1\x82\x0e1115151112001105171122052J00', ], @@ -87,6 +88,7 @@ FW_VERSIONS = { b'\xf1\x873QF909144B \xf1\x891582\xf1\x82\x0571B60924A1', b'\xf1\x873QF909144B \xf1\x891582\xf1\x82\x0571B6G920A1', b'\xf1\x873QF909144B \xf1\x891582\xf1\x82\x0571B6M921A1', + b'\xf1\x873QF909144B \xf1\x891582\xf1\x82\x0571B6N920A1', b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820528B6080105', b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820528B6090105', ], @@ -331,6 +333,7 @@ FW_VERSIONS = { b'\xf1\x8704E906024BC\xf1\x899971', b'\xf1\x8704E906024BG\xf1\x891057', b'\xf1\x8704E906024C \xf1\x899970', + b'\xf1\x8704E906024C \xf1\x899971', b'\xf1\x8704E906024L \xf1\x895595', b'\xf1\x8704E906024L \xf1\x899970', b'\xf1\x8704E906027MS\xf1\x896223', From 3e816e7df89eccb6375f87c8ae4276312116e5ad Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Sun, 17 Mar 2024 18:17:29 +0000 Subject: [PATCH 237/599] cabana(DBCFile): interleave msg and signal comments (#31899) This matches the behaviour of CANdb++ --- tools/cabana/dbc/dbcfile.cc | 8 ++++---- tools/cabana/tests/test_cabana.cc | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/tools/cabana/dbc/dbcfile.cc b/tools/cabana/dbc/dbcfile.cc index fbbb54fd58..69ca5b6309 100644 --- a/tools/cabana/dbc/dbcfile.cc +++ b/tools/cabana/dbc/dbcfile.cc @@ -191,12 +191,12 @@ void DBCFile::parse(const QString &content) { } QString DBCFile::generateDBC() { - QString dbc_string, signal_comment, message_comment, val_desc; + QString dbc_string, comment, val_desc; for (const auto &[address, m] : msgs) { const QString transmitter = m.transmitter.isEmpty() ? DEFAULT_NODE_NAME : m.transmitter; dbc_string += QString("BO_ %1 %2: %3 %4\n").arg(address).arg(m.name).arg(m.size).arg(transmitter); if (!m.comment.isEmpty()) { - message_comment += QString("CM_ BO_ %1 \"%2\";\n").arg(address).arg(m.comment); + comment += QString("CM_ BO_ %1 \"%2\";\n").arg(address).arg(m.comment); } for (auto sig : m.getSignals()) { QString multiplexer_indicator; @@ -219,7 +219,7 @@ QString DBCFile::generateDBC() { .arg(sig->unit) .arg(sig->receiver_name.isEmpty() ? DEFAULT_NODE_NAME : sig->receiver_name); if (!sig->comment.isEmpty()) { - signal_comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(sig->comment); + comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(sig->comment); } if (!sig->val_desc.empty()) { QStringList text; @@ -231,5 +231,5 @@ QString DBCFile::generateDBC() { } dbc_string += "\n"; } - return dbc_string + message_comment + signal_comment + val_desc; + return dbc_string + comment + val_desc; } diff --git a/tools/cabana/tests/test_cabana.cc b/tools/cabana/tests/test_cabana.cc index bf7550be0b..8b09fdac34 100644 --- a/tools/cabana/tests/test_cabana.cc +++ b/tools/cabana/tests/test_cabana.cc @@ -28,6 +28,23 @@ TEST_CASE("DBCFile::generateDBC") { } } +TEST_CASE("DBCFile::generateDBC - comment order") { + // Ensure that message comments are followed by signal comments and in the correct order + auto content = R"(BO_ 160 message_1: 8 EON + SG_ signal_1 : 0|12@1+ (1,0) [0|4095] "unit" XXX + +BO_ 162 message_2: 8 EON + SG_ signal_2 : 0|12@1+ (1,0) [0|4095] "unit" XXX + +CM_ BO_ 160 "message comment"; +CM_ SG_ 160 signal_1 "signal comment"; +CM_ BO_ 162 "message comment"; +CM_ SG_ 162 signal_2 "signal comment"; +)"; + DBCFile dbc("", content); + REQUIRE(dbc.generateDBC() == content); +} + TEST_CASE("parse_dbc") { QString content = R"( BO_ 160 message_1: 8 EON From 0b92f4e9ee59b9de7ef0895d6d35e06027d3891c Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Sun, 17 Mar 2024 19:53:57 -0400 Subject: [PATCH 238/599] more car info -> car docs (#31885) --- .github/workflows/selfdrive_tests.yaml | 4 +-- scripts/count_cars.py | 4 +-- selfdrive/car/CARS_template.md | 6 ++-- selfdrive/car/__init__.py | 2 +- selfdrive/car/docs.py | 36 +++++++++---------- selfdrive/car/ford/values.py | 14 ++++---- selfdrive/car/nissan/values.py | 2 +- selfdrive/car/tests/test_docs.py | 20 +++++------ .../{dump_car_info.py => dump_car_docs.py} | 8 ++--- selfdrive/debug/print_docs_diff.py | 34 +++++++++--------- .../examples/subaru_fuzzy_fingerprint.ipynb | 8 ++--- 11 files changed, 69 insertions(+), 69 deletions(-) rename selfdrive/debug/{dump_car_info.py => dump_car_docs.py} (64%) diff --git a/.github/workflows/selfdrive_tests.yaml b/.github/workflows/selfdrive_tests.yaml index ce7dd7413c..bfd2b82dc8 100644 --- a/.github/workflows/selfdrive_tests.yaml +++ b/.github/workflows/selfdrive_tests.yaml @@ -340,7 +340,7 @@ jobs: - uses: ./.github/workflows/setup-with-retry - name: Get base car info run: | - ${{ env.RUN }} "scons -j$(nproc) && python selfdrive/debug/dump_car_info.py --path /tmp/openpilot_cache/base_car_info" + ${{ env.RUN }} "scons -j$(nproc) && python selfdrive/debug/dump_car_docs.py --path /tmp/openpilot_cache/base_car_docs" sudo chown -R $USER:$USER ${{ github.workspace }} - uses: actions/checkout@v4 with: @@ -352,7 +352,7 @@ jobs: run: | cd current ${{ env.RUN }} "scons -j$(nproc)" - output=$(${{ env.RUN }} "python selfdrive/debug/print_docs_diff.py --path /tmp/openpilot_cache/base_car_info") + output=$(${{ env.RUN }} "python selfdrive/debug/print_docs_diff.py --path /tmp/openpilot_cache/base_car_docs") output="${output//$'\n'/'%0A'}" echo "::set-output name=diff::$output" - name: Find comment diff --git a/scripts/count_cars.py b/scripts/count_cars.py index 8c0892bb82..28057ddb04 100755 --- a/scripts/count_cars.py +++ b/scripts/count_cars.py @@ -2,10 +2,10 @@ from collections import Counter from pprint import pprint -from openpilot.selfdrive.car.docs import get_all_car_info +from openpilot.selfdrive.car.docs import get_all_car_docs if __name__ == "__main__": - cars = get_all_car_info() + cars = get_all_car_docs() make_count = Counter(l.make for l in cars) print("\n", "*" * 20, len(cars), "total", "*" * 20, "\n") pprint(make_count) diff --git a/selfdrive/car/CARS_template.md b/selfdrive/car/CARS_template.md index 73ddb02899..9f9f6c2638 100644 --- a/selfdrive/car/CARS_template.md +++ b/selfdrive/car/CARS_template.md @@ -12,12 +12,12 @@ A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. -# {{all_car_info | length}} Supported Cars +# {{all_car_docs | length}} Supported Cars |{{Column | map(attribute='value') | join('|') | replace(hardware_col_name, wide_hardware_col_name)}}| |---|---|---|{% for _ in range((Column | length) - 3) %}{{':---:|'}}{% endfor +%} -{% for car_info in all_car_info %} -|{% for column in Column %}{{car_info.get_column(column, star_icon, video_icon, footnote_tag)}}|{% endfor %} +{% for car_docs in all_car_docs %} +|{% for column in Column %}{{car_docs.get_column(column, star_icon, video_icon, footnote_tag)}}|{% endfor %} {% endfor %} diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 3c6d8b7996..106aedd2c6 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -262,7 +262,7 @@ class CarSpecs: @dataclass(order=True) class PlatformConfig(Freezable): platform_str: str - car_info: list[CarDocs] + car_docs: list[CarDocs] specs: CarSpecs dbc_dict: DbcDict diff --git a/selfdrive/car/docs.py b/selfdrive/car/docs.py index 4d0a1f45b2..7bf6a6ad22 100755 --- a/selfdrive/car/docs.py +++ b/selfdrive/car/docs.py @@ -25,43 +25,43 @@ CARS_MD_OUT = os.path.join(BASEDIR, "docs", "CARS.md") CARS_MD_TEMPLATE = os.path.join(BASEDIR, "selfdrive", "car", "CARS_template.md") -def get_all_car_info() -> list[CarDocs]: - all_car_info: list[CarDocs] = [] +def get_all_car_docs() -> list[CarDocs]: + all_car_docs: list[CarDocs] = [] footnotes = get_all_footnotes() for model, platform in PLATFORMS.items(): - car_info = platform.config.car_info + car_docs = platform.config.car_docs # If available, uses experimental longitudinal limits for the docs CP = interfaces[model][0].get_params(platform, fingerprint=gen_empty_fingerprint(), car_fw=[car.CarParams.CarFw(ecu="unknown")], experimental_long=True, docs=True) - if CP.dashcamOnly or not len(car_info): + if CP.dashcamOnly or not len(car_docs): continue # A platform can include multiple car models - for _car_info in car_info: - if not hasattr(_car_info, "row"): - _car_info.init_make(CP) - _car_info.init(CP, footnotes) - all_car_info.append(_car_info) + for _car_docs in car_docs: + if not hasattr(_car_docs, "row"): + _car_docs.init_make(CP) + _car_docs.init(CP, footnotes) + all_car_docs.append(_car_docs) # Sort cars by make and model + year - sorted_cars: list[CarDocs] = natsorted(all_car_info, key=lambda car: car.name.lower()) + sorted_cars: list[CarDocs] = natsorted(all_car_docs, key=lambda car: car.name.lower()) return sorted_cars -def group_by_make(all_car_info: list[CarDocs]) -> dict[str, list[CarDocs]]: - sorted_car_info = defaultdict(list) - for car_info in all_car_info: - sorted_car_info[car_info.make].append(car_info) - return dict(sorted_car_info) +def group_by_make(all_car_docs: list[CarDocs]) -> dict[str, list[CarDocs]]: + sorted_car_docs = defaultdict(list) + for car_docs in all_car_docs: + sorted_car_docs[car_docs.make].append(car_docs) + return dict(sorted_car_docs) -def generate_cars_md(all_car_info: list[CarDocs], template_fn: str) -> str: +def generate_cars_md(all_car_docs: list[CarDocs], template_fn: str) -> str: with open(template_fn) as f: template = jinja2.Template(f.read(), trim_blocks=True, lstrip_blocks=True) footnotes = [fn.value.text for fn in get_all_footnotes()] - cars_md: str = template.render(all_car_info=all_car_info, PartType=PartType, + cars_md: str = template.render(all_car_docs=all_car_docs, PartType=PartType, group_by_make=group_by_make, footnotes=footnotes, Column=Column) return cars_md @@ -76,5 +76,5 @@ if __name__ == "__main__": args = parser.parse_args() with open(args.out, 'w') as f: - f.write(generate_cars_md(get_all_car_info(), args.template)) + f.write(generate_cars_md(get_all_car_docs(), args.template)) print(f"Generated and written to {args.out}") diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index 917f50d6fd..eeafc47ae2 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -77,13 +77,13 @@ class FordPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('ford_lincoln_base_pt', RADAR.DELPHI_MRR)) def init(self): - for car_info in list(self.car_info): - if car_info.hybrid: - name = f"{car_info.make} {car_info.model} Hybrid {car_info.years}" - self.car_info.append(replace(copy.deepcopy(car_info), name=name)) - if car_info.plug_in_hybrid: - name = f"{car_info.make} {car_info.model} Plug-in Hybrid {car_info.years}" - self.car_info.append(replace(copy.deepcopy(car_info), name=name)) + for car_docs in list(self.car_docs): + if car_docs.hybrid: + name = f"{car_docs.make} {car_docs.model} Hybrid {car_docs.years}" + self.car_docs.append(replace(copy.deepcopy(car_docs), name=name)) + if car_docs.plug_in_hybrid: + name = f"{car_docs.make} {car_docs.model} Plug-in Hybrid {car_docs.years}" + self.car_docs.append(replace(copy.deepcopy(car_docs), name=name)) @dataclass diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index f2123cad56..83e9bf0b46 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -50,7 +50,7 @@ class CAR(Platforms): ) # Leaf with ADAS ECU found behind instrument cluster instead of glovebox # Currently the only known difference between them is the inverted seatbelt signal. - LEAF_IC = LEAF.override(platform_str="NISSAN LEAF 2018 Instrument Cluster", car_info=[]) + LEAF_IC = LEAF.override(platform_str="NISSAN LEAF 2018 Instrument Cluster", car_docs=[]) ROGUE = NissanPlaformConfig( "NISSAN ROGUE 2019", [NissanCarDocs("Nissan Rogue 2018-20")], diff --git a/selfdrive/car/tests/test_docs.py b/selfdrive/car/tests/test_docs.py index f64effc437..7f88dba18b 100755 --- a/selfdrive/car/tests/test_docs.py +++ b/selfdrive/car/tests/test_docs.py @@ -6,18 +6,18 @@ import unittest from openpilot.common.basedir import BASEDIR from openpilot.selfdrive.car.car_helpers import interfaces -from openpilot.selfdrive.car.docs import CARS_MD_OUT, CARS_MD_TEMPLATE, generate_cars_md, get_all_car_info +from openpilot.selfdrive.car.docs import CARS_MD_OUT, CARS_MD_TEMPLATE, generate_cars_md, get_all_car_docs from openpilot.selfdrive.car.docs_definitions import Cable, Column, PartType, Star from openpilot.selfdrive.car.honda.values import CAR as HONDA from openpilot.selfdrive.car.values import PLATFORMS -from openpilot.selfdrive.debug.dump_car_info import dump_car_info -from openpilot.selfdrive.debug.print_docs_diff import print_car_info_diff +from openpilot.selfdrive.debug.dump_car_docs import dump_car_docs +from openpilot.selfdrive.debug.print_docs_diff import print_car_docs_diff class TestCarDocs(unittest.TestCase): @classmethod def setUpClass(cls): - cls.all_cars = get_all_car_info() + cls.all_cars = get_all_car_docs() def test_generator(self): generated_cars_md = generate_cars_md(self.all_cars, CARS_MD_TEMPLATE) @@ -29,24 +29,24 @@ class TestCarDocs(unittest.TestCase): def test_docs_diff(self): dump_path = os.path.join(BASEDIR, "selfdrive", "car", "tests", "cars_dump") - dump_car_info(dump_path) - print_car_info_diff(dump_path) + dump_car_docs(dump_path) + print_car_docs_diff(dump_path) os.remove(dump_path) def test_duplicate_years(self): make_model_years = defaultdict(list) for car in self.all_cars: - with self.subTest(car_info_name=car.name): + with self.subTest(car_docs_name=car.name): make_model = (car.make, car.model) for year in car.year_list: self.assertNotIn(year, make_model_years[make_model], f"{car.name}: Duplicate model year") make_model_years[make_model].append(year) - def test_missing_car_info(self): - all_car_info_platforms = [name for name, config in PLATFORMS.items()] + def test_missing_car_docs(self): + all_car_docs_platforms = [name for name, config in PLATFORMS.items()] for platform in sorted(interfaces.keys()): with self.subTest(platform=platform): - self.assertTrue(platform in all_car_info_platforms, f"Platform: {platform} doesn't have a CarDocs entry") + self.assertTrue(platform in all_car_docs_platforms, f"Platform: {platform} doesn't have a CarDocs entry") def test_naming_conventions(self): # Asserts market-standard car naming conventions by brand diff --git a/selfdrive/debug/dump_car_info.py b/selfdrive/debug/dump_car_docs.py similarity index 64% rename from selfdrive/debug/dump_car_info.py rename to selfdrive/debug/dump_car_docs.py index 6af328926b..f09c602cff 100755 --- a/selfdrive/debug/dump_car_info.py +++ b/selfdrive/debug/dump_car_docs.py @@ -2,12 +2,12 @@ import argparse import pickle -from openpilot.selfdrive.car.docs import get_all_car_info +from openpilot.selfdrive.car.docs import get_all_car_docs -def dump_car_info(path): +def dump_car_docs(path): with open(path, 'wb') as f: - pickle.dump(get_all_car_info(), f) + pickle.dump(get_all_car_docs(), f) print(f'Dumping car info to {path}') @@ -15,4 +15,4 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--path", required=True) args = parser.parse_args() - dump_car_info(args.path) + dump_car_docs(args.path) diff --git a/selfdrive/debug/print_docs_diff.py b/selfdrive/debug/print_docs_diff.py index 3d35532496..7ef89a6eca 100755 --- a/selfdrive/debug/print_docs_diff.py +++ b/selfdrive/debug/print_docs_diff.py @@ -4,7 +4,7 @@ from collections import defaultdict import difflib import pickle -from openpilot.selfdrive.car.docs import get_all_car_info +from openpilot.selfdrive.car.docs import get_all_car_docs from openpilot.selfdrive.car.docs_definitions import Column FOOTNOTE_TAG = "{}" @@ -17,7 +17,7 @@ COLUMN_HEADER = "|---|---|---|{}|".format("|".join([":---:"] * (len(Column) - 3) ARROW_SYMBOL = "➡️" -def load_base_car_info(path): +def load_base_car_docs(path): with open(path, "rb") as f: return pickle.load(f) @@ -57,31 +57,31 @@ def format_row(builder): return "|" + "|".join(builder) + "|" -def print_car_info_diff(path): - base_car_info = defaultdict(list) - new_car_info = defaultdict(list) +def print_car_docs_diff(path): + base_car_docs = defaultdict(list) + new_car_docs = defaultdict(list) - for car in load_base_car_info(path): - base_car_info[car.car_fingerprint].append(car) - for car in get_all_car_info(): - new_car_info[car.car_fingerprint].append(car) + for car in load_base_car_docs(path): + base_car_docs[car.car_fingerprint].append(car) + for car in get_all_car_docs(): + new_car_docs[car.car_fingerprint].append(car) # Add new platforms to base cars so we can detect additions and removals in one pass - base_car_info.update({car: [] for car in new_car_info if car not in base_car_info}) + base_car_docs.update({car: [] for car in new_car_docs if car not in base_car_docs}) changes = defaultdict(list) - for base_car_model, base_cars in base_car_info.items(): + for base_car_model, base_cars in base_car_docs.items(): # Match car info changes, and get additions and removals - new_cars = new_car_info[base_car_model] + new_cars = new_car_docs[base_car_model] car_changes, car_additions, car_removals = match_cars(base_cars, new_cars) # Removals - for car_info in car_removals: - changes["removals"].append(format_row([car_info.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) + for car_docs in car_removals: + changes["removals"].append(format_row([car_docs.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) # Additions - for car_info in car_additions: - changes["additions"].append(format_row([car_info.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) + for car_docs in car_additions: + changes["additions"].append(format_row([car_docs.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) for new_car, base_car in car_changes: # Column changes @@ -117,4 +117,4 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--path", required=True) args = parser.parse_args() - print_car_info_diff(args.path) + print_car_docs_diff(args.path) diff --git a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb index dd223667d8..9376f6a253 100644 --- a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb +++ b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb @@ -146,10 +146,10 @@ ], "source": [ "def test_year_code(platform, year):\n", - " car_info = CAR(platform).config.car_info\n", - " if isinstance(car_info, list):\n", - " car_info = car_info[0]\n", - " years = [int(y) for y in car_info.year_list]\n", + " car_docs = CAR(platform).config.car_docs\n", + " if isinstance(car_docs, list):\n", + " car_docs = car_docs[0]\n", + " years = [int(y) for y in car_docs.year_list]\n", " correct_year = year in years\n", " print(f\"{correct_year=!s: <6} {platform=: <32} {year=: <5} {years=}\")\n", "\n", From b122725a680f7c06a2396941ead1fdfe60143c77 Mon Sep 17 00:00:00 2001 From: James <91348155+FrogAi@users.noreply.github.com> Date: Sun, 17 Mar 2024 17:33:47 -0700 Subject: [PATCH 239/599] Remove duplicate TimezoneFinder declaration (#31901) --- system/timed.py | 1 - 1 file changed, 1 deletion(-) diff --git a/system/timed.py b/system/timed.py index 39acb2ba12..ab82f8c72d 100755 --- a/system/timed.py +++ b/system/timed.py @@ -56,7 +56,6 @@ def main() -> NoReturn: """ params = Params() - tf = TimezoneFinder() # Restore timezone from param tz = params.get("Timezone", encoding='utf8') From e79cb0edaf88bde8ebdf1b0ac1b6fb5c6b5122d3 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 18 Mar 2024 12:55:27 +0800 Subject: [PATCH 240/599] replay: fix segfault in `Replay::queueSegment` (#31902) --- tools/replay/replay.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index 9657375be7..70b3f380e1 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -225,7 +225,7 @@ void Replay::queueSegment() { if (cur == segments_.end()) return; auto begin = std::prev(cur, std::min(segment_cache_limit / 2, std::distance(segments_.begin(), cur))); - auto end = std::next(begin, std::min(segment_cache_limit, segments_.size())); + auto end = std::next(begin, std::min(segment_cache_limit, std::distance(begin, segments_.end()))); // load one segment at a time auto it = std::find_if(cur, end, [](auto &it) { return !it.second || !it.second->isLoaded(); }); if (it != end && !it->second) { From e3afa373aa389826ff2a15673561a4191ca9deed Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 17 Mar 2024 22:16:16 -0700 Subject: [PATCH 241/599] Update RELEASES.md --- RELEASES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASES.md b/RELEASES.md index 4ec4c4fad5..2af124d4e6 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,6 +1,7 @@ Version 0.9.7 (2024-XX-XX) ======================== * New driving model +* Adjust driving personality with the follow distance button * Support for hybrid variants of supported Ford models Version 0.9.6 (2024-02-27) From fa12a6722868d436f15bea31537df1277bcc4027 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 17 Mar 2024 22:42:49 -0700 Subject: [PATCH 242/599] remove pedal (#31903) * remove pedal * bump panda * fix * update refs --- panda | 2 +- selfdrive/car/__init__.py | 21 --------------- selfdrive/car/honda/carcontroller.py | 20 ++------------- selfdrive/car/honda/carstate.py | 13 ++-------- selfdrive/car/honda/interface.py | 10 ++------ selfdrive/car/tests/routes.py | 2 -- selfdrive/car/tests/test_car_interfaces.py | 4 --- selfdrive/car/toyota/carcontroller.py | 30 +++------------------- selfdrive/car/toyota/carstate.py | 12 ++------- selfdrive/car/toyota/interface.py | 10 +++----- selfdrive/controls/lib/longcontrol.py | 2 -- selfdrive/test/process_replay/migration.py | 2 +- selfdrive/test/process_replay/ref_commit | 2 +- tools/sim/lib/simulated_car.py | 3 +-- 14 files changed, 19 insertions(+), 114 deletions(-) diff --git a/panda b/panda index 895a7001c9..aa1a355536 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 895a7001c9d21ac7c4ace65debe70dfaee017443 +Subproject commit aa1a35553667db2825cee392e6b082966238343c diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 106aedd2c6..45da5a8b92 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -179,27 +179,6 @@ def crc8_pedal(data): return crc -def create_gas_interceptor_command(packer, gas_amount, idx): - # Common gas pedal msg generator - enable = gas_amount > 0.001 - - values = { - "ENABLE": enable, - "COUNTER_PEDAL": idx & 0xF, - } - - if enable: - values["GAS_COMMAND"] = gas_amount * 255. - values["GAS_COMMAND2"] = gas_amount * 255. - - dat = packer.make_can_msg("GAS_COMMAND", 0, values)[2] - - checksum = crc8_pedal(dat[:-1]) - values["CHECKSUM_PEDAL"] = checksum - - return packer.make_can_msg("GAS_COMMAND", 0, values) - - def make_can_msg(addr, dat, bus): return [addr, 0, dat, bus] diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 00cc54dcb3..6fe8c27585 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -4,7 +4,6 @@ from cereal import car from openpilot.common.numpy_fast import clip, interp from openpilot.common.realtime import DT_CTRL from opendbc.can.packer import CANPacker -from openpilot.selfdrive.car import create_gas_interceptor_command from openpilot.selfdrive.car.honda import hondacan from openpilot.selfdrive.car.honda.values import CruiseButtons, VISUAL_HUD, HONDA_BOSCH, HONDA_BOSCH_RADARLESS, HONDA_NIDEC_ALT_PCM_ACCEL, CarControllerParams from openpilot.selfdrive.car.interfaces import CarControllerBase @@ -183,7 +182,7 @@ class CarController(CarControllerBase): 0.5] # The Honda ODYSSEY seems to have different PCM_ACCEL # msgs, is it other cars too? - if self.CP.enableGasInterceptor or not CC.longActive: + if not CC.longActive: pcm_speed = 0.0 pcm_accel = int(0.0) elif self.CP.carFingerprint in HONDA_NIDEC_ALT_PCM_ACCEL: @@ -235,19 +234,6 @@ class CarController(CarControllerBase): self.apply_brake_last = apply_brake self.brake = apply_brake / self.params.NIDEC_BRAKE_MAX - if self.CP.enableGasInterceptor: - # way too aggressive at low speed without this - gas_mult = interp(CS.out.vEgo, [0., 10.], [0.4, 1.0]) - # send exactly zero if apply_gas is zero. Interceptor will send the max between read value and apply_gas. - # This prevents unexpected pedal range rescaling - # Sending non-zero gas when OP is not enabled will cause the PCM not to respond to throttle as expected - # when you do enable. - if CC.longActive: - self.gas = clip(gas_mult * (gas - brake + wind_brake * 3 / 4), 0., 1.) - else: - self.gas = 0.0 - can_sends.append(create_gas_interceptor_command(self.packer, self.gas, self.frame // 2)) - # Send dashboard UI commands. if self.frame % 10 == 0: hud = HUDData(int(pcm_accel), int(round(hud_v_cruise)), hud_control.leadVisible, @@ -256,9 +242,7 @@ class CarController(CarControllerBase): if self.CP.openpilotLongitudinalControl and self.CP.carFingerprint not in HONDA_BOSCH: self.speed = pcm_speed - - if not self.CP.enableGasInterceptor: - self.gas = pcm_accel / self.params.NIDEC_GAS_MAX + self.gas = pcm_accel / self.params.NIDEC_GAS_MAX new_actuators = actuators.copy() new_actuators.speed = self.speed diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index d429da33fb..976511f113 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -72,10 +72,6 @@ def get_can_messages(CP, gearbox_msg): else: messages.append(("DOORS_STATUS", 3)) - # add gas interceptor reading if we are using it - if CP.enableGasInterceptor: - messages.append(("GAS_SENSOR", 50)) - if CP.carFingerprint in HONDA_BOSCH_RADARLESS: messages.append(("CRUISE_FAULT_STATUS", 50)) elif CP.openpilotLongitudinalControl: @@ -191,13 +187,8 @@ class CarState(CarStateBase): gear = int(cp.vl[self.gearbox_msg]["GEAR_SHIFTER"]) ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(gear, None)) - if self.CP.enableGasInterceptor: - # Same threshold as panda, equivalent to 1e-5 with previous DBC scaling - ret.gas = (cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS"] + cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS2"]) // 2 - ret.gasPressed = ret.gas > 492 - else: - ret.gas = cp.vl["POWERTRAIN_DATA"]["PEDAL_GAS"] - ret.gasPressed = ret.gas > 1e-5 + ret.gas = cp.vl["POWERTRAIN_DATA"]["PEDAL_GAS"] + ret.gasPressed = ret.gas > 1e-5 ret.steeringTorque = cp.vl["STEER_STATUS"]["STEER_TORQUE_SENSOR"] ret.steeringTorqueEps = cp.vl["STEER_MOTOR_TORQUE"]["MOTOR_TORQUE"] diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index d316626a94..812b60d479 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -24,8 +24,6 @@ class CarInterface(CarInterfaceBase): def get_pid_accel_limits(CP, current_speed, cruise_speed): if CP.carFingerprint in HONDA_BOSCH: return CarControllerParams.BOSCH_ACCEL_MIN, CarControllerParams.BOSCH_ACCEL_MAX - elif CP.enableGasInterceptor: - return CarControllerParams.NIDEC_ACCEL_MIN, CarControllerParams.NIDEC_ACCEL_MAX else: # NIDECs don't allow acceleration near cruise_speed, # so limit limits of pid to prevent windup @@ -50,10 +48,9 @@ class CarInterface(CarInterfaceBase): ret.pcmCruise = not ret.openpilotLongitudinalControl else: ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.hondaNidec)] - ret.enableGasInterceptor = 0x201 in fingerprint[CAN.pt] ret.openpilotLongitudinalControl = True - ret.pcmCruise = not ret.enableGasInterceptor + ret.pcmCruise = True if candidate == CAR.CRV_5G: ret.enableBsm = 0x12f8bfa7 in fingerprint[CAN.radar] @@ -209,16 +206,13 @@ class CarInterface(CarInterfaceBase): if ret.openpilotLongitudinalControl and candidate in HONDA_BOSCH: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_BOSCH_LONG - if ret.enableGasInterceptor and candidate not in HONDA_BOSCH: - ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_GAS_INTERCEPTOR - if candidate in HONDA_BOSCH_RADARLESS: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_RADARLESS # min speed to enable ACC. if car can do stop and go, then set enabling speed # to a negative value, so it won't matter. Otherwise, add 0.5 mph margin to not # conflict with PCM acc - ret.autoResumeSng = candidate in (HONDA_BOSCH | {CAR.CIVIC}) or ret.enableGasInterceptor + ret.autoResumeSng = candidate in (HONDA_BOSCH | {CAR.CIVIC}) ret.minEnableSpeed = -1. if ret.autoResumeSng else 25.5 * CV.MPH_TO_MS ret.steerActuatorDelay = 0.1 diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 265f052b16..48ae36ffcc 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -293,8 +293,6 @@ routes = [ CarTestRoute("66c1699b7697267d/2024-03-03--13-09-53", TESLA.MODELS_RAVEN), # Segments that test specific issues - # Controls mismatch due to interceptor threshold - CarTestRoute("cfb32f0fb91b173b|2022-04-06--14-54-45", HONDA.CIVIC, segment=21), # Controls mismatch due to standstill threshold CarTestRoute("bec2dcfde6a64235|2022-04-08--14-21-32", HONDA.CRV_HYBRID, segment=22), ] diff --git a/selfdrive/car/tests/test_car_interfaces.py b/selfdrive/car/tests/test_car_interfaces.py index 02a8d60e3c..72c1e27ab9 100755 --- a/selfdrive/car/tests/test_car_interfaces.py +++ b/selfdrive/car/tests/test_car_interfaces.py @@ -74,10 +74,6 @@ class TestCarInterfaces(unittest.TestCase): self.assertEqual(len(car_params.longitudinalTuning.kiV), len(car_params.longitudinalTuning.kiBP)) self.assertEqual(len(car_params.longitudinalTuning.deadzoneV), len(car_params.longitudinalTuning.deadzoneBP)) - # If we're using the interceptor for gasPressed, we should be commanding gas with it - if car_params.enableGasInterceptor: - self.assertTrue(car_params.openpilotLongitudinalControl) - # Lateral sanity checks if car_params.steerControlType != car.CarParams.SteerControlType.angle: tune = car_params.lateralTuning diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index 71a595996d..2bb3fc3c34 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -1,11 +1,10 @@ from cereal import car -from openpilot.common.numpy_fast import clip, interp -from openpilot.selfdrive.car import apply_meas_steer_torque_limits, apply_std_steer_angle_limits, common_fault_avoidance, \ - create_gas_interceptor_command, make_can_msg +from openpilot.common.numpy_fast import clip +from openpilot.selfdrive.car import apply_meas_steer_torque_limits, apply_std_steer_angle_limits, common_fault_avoidance, make_can_msg from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.toyota import toyotacan from openpilot.selfdrive.car.toyota.values import CAR, STATIC_DSU_MSGS, NO_STOP_TIMER_CAR, TSS2_CAR, \ - MIN_ACC_SPEED, PEDAL_TRANSITION, CarControllerParams, ToyotaFlags, \ + CarControllerParams, ToyotaFlags, \ UNSUPPORTED_DSU_CAR from opendbc.can.packer import CANPacker @@ -101,21 +100,6 @@ class CarController(CarControllerBase): lta_active, self.frame // 2, torque_wind_down)) # *** gas and brake *** - if self.CP.enableGasInterceptor and CC.longActive: - MAX_INTERCEPTOR_GAS = 0.5 - # RAV4 has very sensitive gas pedal - if self.CP.carFingerprint in (CAR.RAV4, CAR.RAV4H, CAR.HIGHLANDER): - PEDAL_SCALE = interp(CS.out.vEgo, [0.0, MIN_ACC_SPEED, MIN_ACC_SPEED + PEDAL_TRANSITION], [0.15, 0.3, 0.0]) - elif self.CP.carFingerprint in (CAR.COROLLA,): - PEDAL_SCALE = interp(CS.out.vEgo, [0.0, MIN_ACC_SPEED, MIN_ACC_SPEED + PEDAL_TRANSITION], [0.3, 0.4, 0.0]) - else: - PEDAL_SCALE = interp(CS.out.vEgo, [0.0, MIN_ACC_SPEED, MIN_ACC_SPEED + PEDAL_TRANSITION], [0.4, 0.5, 0.0]) - # offset for creep and windbrake - pedal_offset = interp(CS.out.vEgo, [0.0, 2.3, MIN_ACC_SPEED + PEDAL_TRANSITION], [-.4, 0.0, 0.2]) - pedal_command = PEDAL_SCALE * (actuators.accel + pedal_offset) - interceptor_gas_cmd = clip(pedal_command, 0., MAX_INTERCEPTOR_GAS) - else: - interceptor_gas_cmd = 0. pcm_accel_cmd = clip(actuators.accel, self.params.ACCEL_MIN, self.params.ACCEL_MAX) # TODO: probably can delete this. CS.pcm_acc_status uses a different signal @@ -124,7 +108,7 @@ class CarController(CarControllerBase): pcm_cancel_cmd = 1 # on entering standstill, send standstill request - if CS.out.standstill and not self.last_standstill and (self.CP.carFingerprint not in NO_STOP_TIMER_CAR or self.CP.enableGasInterceptor): + if CS.out.standstill and not self.last_standstill and (self.CP.carFingerprint not in NO_STOP_TIMER_CAR): self.standstill_req = True if CS.pcm_acc_status != 8: # pcm entered standstill or it's disabled @@ -158,12 +142,6 @@ class CarController(CarControllerBase): else: can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False, self.distance_button)) - if self.frame % 2 == 0 and self.CP.enableGasInterceptor and self.CP.openpilotLongitudinalControl: - # send exactly zero if gas cmd is zero. Interceptor will send the max between read value and gas cmd. - # This prevents unexpected pedal range rescaling - can_sends.append(create_gas_interceptor_command(self.packer, interceptor_gas_cmd, self.frame // 2)) - self.gas = interceptor_gas_cmd - # *** hud ui *** if self.CP.carFingerprint != CAR.PRIUS_V: # ui mesg is at 1Hz but we send asap if: diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index 5d99467f25..8a20c57196 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -59,12 +59,8 @@ class CarState(CarStateBase): ret.brakePressed = cp.vl["BRAKE_MODULE"]["BRAKE_PRESSED"] != 0 ret.brakeHoldActive = cp.vl["ESP_CONTROL"]["BRAKE_HOLD_ACTIVE"] == 1 - if self.CP.enableGasInterceptor: - ret.gas = (cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS"] + cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS2"]) // 2 - ret.gasPressed = ret.gas > 805 - else: - # TODO: find a common gas pedal percentage signal - ret.gasPressed = cp.vl["PCM_CRUISE"]["GAS_RELEASED"] == 0 + + ret.gasPressed = cp.vl["PCM_CRUISE"]["GAS_RELEASED"] == 0 ret.wheelSpeeds = self.get_wheel_speeds( cp.vl["WHEEL_SPEEDS"]["WHEEL_SPEED_FL"], @@ -208,10 +204,6 @@ class CarState(CarStateBase): else: messages.append(("PCM_CRUISE_2", 33)) - # add gas interceptor reading if we are using it - if CP.enableGasInterceptor: - messages.append(("GAS_SENSOR", 50)) - if CP.enableBsm: messages.append(("BSM", 1)) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 7ad9feed3d..3683e7d049 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -133,22 +133,18 @@ class CarInterface(CarInterfaceBase): # - TSS-P DSU-less cars w/ CAN filter installed (no radar parser yet) ret.openpilotLongitudinalControl = use_sdsu or ret.enableDsu or candidate in (TSS2_CAR - RADAR_ACC_CAR) or bool(ret.flags & ToyotaFlags.DISABLE_RADAR.value) ret.autoResumeSng = ret.openpilotLongitudinalControl and candidate in NO_STOP_TIMER_CAR - ret.enableGasInterceptor = 0x201 in fingerprint[0] and ret.openpilotLongitudinalControl if not ret.openpilotLongitudinalControl: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL - if ret.enableGasInterceptor: - ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_GAS_INTERCEPTOR - # min speed to enable ACC. if car can do stop and go, then set enabling speed # to a negative value, so it won't matter. - ret.minEnableSpeed = -1. if (stop_and_go or ret.enableGasInterceptor) else MIN_ACC_SPEED + ret.minEnableSpeed = -1. if stop_and_go else MIN_ACC_SPEED tune = ret.longitudinalTuning tune.deadzoneBP = [0., 9.] tune.deadzoneV = [.0, .15] - if candidate in TSS2_CAR or ret.enableGasInterceptor: + if candidate in TSS2_CAR: tune.kpBP = [0., 5., 20.] tune.kpV = [1.3, 1.0, 0.7] tune.kiBP = [0., 5., 12., 20., 27.] @@ -188,7 +184,7 @@ class CarInterface(CarInterfaceBase): events.add(EventName.vehicleSensorsInvalid) if self.CP.openpilotLongitudinalControl: - if ret.cruiseState.standstill and not ret.brakePressed and not self.CP.enableGasInterceptor: + if ret.cruiseState.standstill and not ret.brakePressed: events.add(EventName.resumeRequired) if self.CS.low_speed_lockout: events.add(EventName.lowSpeedLockout) diff --git a/selfdrive/controls/lib/longcontrol.py b/selfdrive/controls/lib/longcontrol.py index ee65c4a69e..2dd3390bb0 100644 --- a/selfdrive/controls/lib/longcontrol.py +++ b/selfdrive/controls/lib/longcontrol.py @@ -10,8 +10,6 @@ LongCtrlState = car.CarControl.Actuators.LongControlState def long_control_state_trans(CP, active, long_control_state, v_ego, v_target, v_target_1sec, brake_pressed, cruise_standstill): - # Ignore cruise standstill if car has a gas interceptor - cruise_standstill = cruise_standstill and not CP.enableGasInterceptor accelerating = v_target_1sec > v_target planned_stop = (v_target < CP.vEgoStopping and v_target_1sec < CP.vEgoStopping and diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index afcf705ff9..099513a753 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -73,7 +73,7 @@ def migrate_pandaStates(lr): # TODO: safety param migration should be handled automatically safety_param_migration = { "TOYOTA PRIUS 2017": EPS_SCALE["TOYOTA PRIUS 2017"] | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL, - "TOYOTA RAV4 2017": EPS_SCALE["TOYOTA RAV4 2017"] | Panda.FLAG_TOYOTA_ALT_BRAKE | Panda.FLAG_TOYOTA_GAS_INTERCEPTOR, + "TOYOTA RAV4 2017": EPS_SCALE["TOYOTA RAV4 2017"] | Panda.FLAG_TOYOTA_ALT_BRAKE, "KIA EV6 2022": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CANFD_HDA2, } diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index cb904630df..dd3d530f70 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -d544804a4fb54c0f160682b8f14af316a8383cd8 \ No newline at end of file +e29856a02cca7ab76461b2cc0acd25826a894667 \ No newline at end of file diff --git a/tools/sim/lib/simulated_car.py b/tools/sim/lib/simulated_car.py index f6319dd819..9148d0ddb2 100644 --- a/tools/sim/lib/simulated_car.py +++ b/tools/sim/lib/simulated_car.py @@ -6,7 +6,6 @@ from openpilot.common.params import Params from openpilot.selfdrive.boardd.boardd_api_impl import can_list_to_can_capnp from openpilot.selfdrive.car import crc8_pedal from openpilot.tools.sim.lib.common import SimulatorState -from panda.python import Panda class SimulatedCar: @@ -116,7 +115,7 @@ class SimulatedCar: 'controlsAllowed': True, 'safetyModel': 'hondaNidec', 'alternativeExperience': self.sm["carParams"].alternativeExperience, - 'safetyParam': Panda.FLAG_HONDA_GAS_INTERCEPTOR + 'safetyParam': 0, } self.pm.send('pandaStates', dat) From aca566bd6a7c1eb094361cb046635e7ee55dcbcc Mon Sep 17 00:00:00 2001 From: YassineYousfi Date: Mon, 18 Mar 2024 09:08:41 -0700 Subject: [PATCH 243/599] bump panda (#31908) --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index aa1a355536..567dbfe6d8 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit aa1a35553667db2825cee392e6b082966238343c +Subproject commit 567dbfe6d86ddda6d803da371942603c6dbe36c8 From 881b38d061e6ae516a6069e216725a228591ddf6 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 18 Mar 2024 09:56:37 -0700 Subject: [PATCH 244/599] [bot] Update Python packages and pre-commit hooks (#31906) Update Python packages and pre-commit hooks Co-authored-by: jnewb1 --- .pre-commit-config.yaml | 2 +- poetry.lock | 2769 ++++++++++++++++++++------------------- 2 files changed, 1395 insertions(+), 1376 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 55e6b1e282..1d152fee2a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,7 +33,7 @@ repos: - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.2 + rev: v0.3.3 hooks: - id: ruff exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)' diff --git a/poetry.lock b/poetry.lock index e8ea5e80fe..c2e0baad9c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -112,34 +112,34 @@ ifaddr = ">=0.2.0" [[package]] name = "aiortc" -version = "1.7.0" +version = "1.8.0" description = "An implementation of WebRTC and ORTC" optional = false python-versions = ">=3.8" files = [ - {file = "aiortc-1.7.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aba47eac61ee7fb7e89876f40e4132aa66a13ed2a730dff003342e57219f34c0"}, - {file = "aiortc-1.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:169abaaa0c11a1695942b3eeea9d9032ea4992c6e84958c1b31c6ba22fcf4b0e"}, - {file = "aiortc-1.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5323a347d02d53989e61944eead19e550d930afbb872dd0fb51b3d065aaa833"}, - {file = "aiortc-1.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71c18762ebfeb239352705672e598c57f0e56e5c1b7955dba27651c801c56ea2"}, - {file = "aiortc-1.7.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:817526c2e429a1ef1226ca9cdb4ff3c5d03857eb31de0f5a00433dc4cb5569f3"}, - {file = "aiortc-1.7.0-cp38-abi3-win32.whl", hash = "sha256:a63c4da5c4a9d96ef6e3948c1f4675e02b0b908605eff4cea8b5e2fa5a34da4e"}, - {file = "aiortc-1.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:e60f19f810a552690bf6e969429c624df39af2b5079ee0d95fb75d110b978e20"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7407d7065cbc649adf866927c007d84f94eeb3fcaa65f44eb94def8c2c5bbca"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35e1dce2697762841dd3cc5a6e23ef8a0d96207e3fd33b834b5a8686748f6143"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f77cc2d757d7c3c37c6157cce36fe13fc161c5cb5aea62759c8b0d3e6d7f45f9"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80465daa66f89e4fd22b6afd3a6ae71ffd506343cf30025dbc36eb5453f95330"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8fcf352df6fabad32fd337dc51b629060de80d06987a8544c3c842ecc04254f8"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b1427673e3ef8889dbd1c4f05d3d2aa7895cbfdc985532d54892ad6f96fc08c"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec2d018bd01c7532188be5842e11de252a1346156880ff3387d4f879c9f163d2"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f21e0024c0c7b07fec87e1ffcc30b6dbd57d1b822324d9c0128731388a82f08"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd267c338bd6578b46fb8f664418f9a48ad5d1582895eb029b4c5087e105fc89"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:919b6edbc1e462cb00e313d44368798066c3ebe81525ec6fb6008e0cad572c97"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:573314501d4aa2ef5e8826abe7e675742c92d25908f5f6b48ea2f5fababdfb4b"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:791f525577033572ee937853159cff2c63121d1e30d9c93df4ef3a4c94eec5ec"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52e945b2ba536e4e78c106e6c923f73b1838bf0c35592d729ea9b3ba6791b108"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89a8aef4067c68ccbc97872d506b9b80d5ed39e0cc41a46d641b66c518e00240"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0b7248716706c52e3bc1f21a89a1a9ca205e95a74c0b4aa4b2863d2162fd2552"}, - {file = "aiortc-1.7.0.tar.gz", hash = "sha256:4fd900797b419a9189443b7c95a2ce4bf5aa0d9542d8d19edfabf30aa5fbc296"}, + {file = "aiortc-1.8.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ac0bc48c9f98a744f6696be287b0403648deb3e20bd7f8fa91eb841e1c6c4e8d"}, + {file = "aiortc-1.8.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:639afa23b7d5c6f7d4f3f7af5fadb9cc67c82d56e17840b4433d2e5f73958bb5"}, + {file = "aiortc-1.8.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:173dcfa6f0e989f65eb9d38f151d8834677df0f696f9f4ad925ee9795e914eaf"}, + {file = "aiortc-1.8.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b453def215c246486747e8ba5c1307a538071d6bfbb2a4e74ebfef583771a429"}, + {file = "aiortc-1.8.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22efeb53dab9eb58a1a6c2dcdeb72ae526de0a2b30334fc40782341df92a657d"}, + {file = "aiortc-1.8.0-cp38-abi3-win32.whl", hash = "sha256:4ec0c5c284c3345a9d994253ced4ad909acf9e375271a7ff01db165b09890ce8"}, + {file = "aiortc-1.8.0-cp38-abi3-win_amd64.whl", hash = "sha256:76454c55a59441a76f6ab7cd1218454389520d6a3cc9b0d13d428f6a3f2ebbcc"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b0eb1342595e386befcad56cd0f91cd5cd16daa7612ffc5c8abf7e5b58e529f5"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cbbdf78ac55e05d838fe4de326ed095ca6df1cd10d571958d2ef8f23792203b"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bb565acb623474d8052926f2ee768dbf1f87a71d271df78482319c0bec7c817"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd50def722eb6b999ebc831eca7bea79019d2eda71dc79f4219a9ab19d65c961"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4054f42f9ef875c67e38c0e86532e85e7ba528957052bc3d99e7c7caf273c456"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ef40f132262a670169121b888a448e1973e892f1ed8a5f5980ab05a12ee78a32"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53d9f999104a2438c0c23f2cbc991c5e15e46c0fe71476d60c222b62e4c5a70"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a1ef2e0d657aaca42106558c7c8d6e84c7088d0b70bc1fe3f93c555c242e38"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:454012e08c9ef5027c2543d4e97b6f1323ce027ec395202478a7e431b2519c5b"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09dd2fad7a52f8fc66c86cdd2dd4d281b9815afd996e41301dd2706ccd57438a"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d669b635bbd8cf76fce63d3ceb83da5b219cea8bae4b566233f68618e69446cb"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ccc4da8821e7ecdd2179bc5eb7fd5f12e50db8fc6affdbc8baa55f3f14dd377"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29ba65bcb4c4cd1b25109d1e7ee5cf303654b757a3b7b59a28e162953e5f6c36"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1be4571e70e15b443f5b9ae651e24ac9dafb8b9abc1cdeb14e5f4bf028639944"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2e20fe3cb4a8b6db4f5e8f625ff1eb9dafc67b7c0c9a0cb9969b646570aebd34"}, + {file = "aiortc-1.8.0.tar.gz", hash = "sha256:2363c08d1d2cb3aaed563c1fb256f5dae9f3ba75b70ad5e5df6d448504122591"}, ] [package.dependencies] @@ -751,63 +751,63 @@ test = ["pytest", "pytest-timeout"] [[package]] name = "coverage" -version = "7.4.3" +version = "7.4.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8580b827d4746d47294c0e0b92854c85a92c2227927433998f0d3320ae8a71b6"}, - {file = "coverage-7.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718187eeb9849fc6cc23e0d9b092bc2348821c5e1a901c9f8975df0bc785bfd4"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:767b35c3a246bcb55b8044fd3a43b8cd553dd1f9f2c1eeb87a302b1f8daa0524"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae7f19afe0cce50039e2c782bff379c7e347cba335429678450b8fe81c4ef96d"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba3a8aaed13770e970b3df46980cb068d1c24af1a1968b7818b69af8c4347efb"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee866acc0861caebb4f2ab79f0b94dbfbdbfadc19f82e6e9c93930f74e11d7a0"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:506edb1dd49e13a2d4cac6a5173317b82a23c9d6e8df63efb4f0380de0fbccbc"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd6545d97c98a192c5ac995d21c894b581f1fd14cf389be90724d21808b657e2"}, - {file = "coverage-7.4.3-cp310-cp310-win32.whl", hash = "sha256:f6a09b360d67e589236a44f0c39218a8efba2593b6abdccc300a8862cffc2f94"}, - {file = "coverage-7.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:18d90523ce7553dd0b7e23cbb28865db23cddfd683a38fb224115f7826de78d0"}, - {file = "coverage-7.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbbe5e739d45a52f3200a771c6d2c7acf89eb2524890a4a3aa1a7fa0695d2a47"}, - {file = "coverage-7.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:489763b2d037b164846ebac0cbd368b8a4ca56385c4090807ff9fad817de4113"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451f433ad901b3bb00184d83fd83d135fb682d780b38af7944c9faeecb1e0bfe"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcc66e222cf4c719fe7722a403888b1f5e1682d1679bd780e2b26c18bb648cdc"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ec74cfef2d985e145baae90d9b1b32f85e1741b04cd967aaf9cfa84c1334f3"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:abbbd8093c5229c72d4c2926afaee0e6e3140de69d5dcd918b2921f2f0c8baba"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:35eb581efdacf7b7422af677b92170da4ef34500467381e805944a3201df2079"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8249b1c7334be8f8c3abcaaa996e1e4927b0e5a23b65f5bf6cfe3180d8ca7840"}, - {file = "coverage-7.4.3-cp311-cp311-win32.whl", hash = "sha256:cf30900aa1ba595312ae41978b95e256e419d8a823af79ce670835409fc02ad3"}, - {file = "coverage-7.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:18c7320695c949de11a351742ee001849912fd57e62a706d83dfc1581897fa2e"}, - {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"}, - {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"}, - {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"}, - {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"}, - {file = "coverage-7.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28ca2098939eabab044ad68850aac8f8db6bf0b29bc7f2887d05889b17346454"}, - {file = "coverage-7.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:280459f0a03cecbe8800786cdc23067a8fc64c0bd51dc614008d9c36e1659d7e"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0cdedd3500e0511eac1517bf560149764b7d8e65cb800d8bf1c63ebf39edd2"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a9babb9466fe1da12417a4aed923e90124a534736de6201794a3aea9d98484e"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dec9de46a33cf2dd87a5254af095a409ea3bf952d85ad339751e7de6d962cde6"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:16bae383a9cc5abab9bb05c10a3e5a52e0a788325dc9ba8499e821885928968c"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2c854ce44e1ee31bda4e318af1dbcfc929026d12c5ed030095ad98197eeeaed0"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ce8c50520f57ec57aa21a63ea4f325c7b657386b3f02ccaedeccf9ebe27686e1"}, - {file = "coverage-7.4.3-cp38-cp38-win32.whl", hash = "sha256:708a3369dcf055c00ddeeaa2b20f0dd1ce664eeabde6623e516c5228b753654f"}, - {file = "coverage-7.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:1bf25fbca0c8d121a3e92a2a0555c7e5bc981aee5c3fdaf4bb7809f410f696b9"}, - {file = "coverage-7.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b253094dbe1b431d3a4ac2f053b6d7ede2664ac559705a704f621742e034f1f"}, - {file = "coverage-7.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77fbfc5720cceac9c200054b9fab50cb2a7d79660609200ab83f5db96162d20c"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6679060424faa9c11808598504c3ab472de4531c571ab2befa32f4971835788e"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af154d617c875b52651dd8dd17a31270c495082f3d55f6128e7629658d63765"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8640f1fde5e1b8e3439fe482cdc2b0bb6c329f4bb161927c28d2e8879c6029ee"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:69b9f6f66c0af29642e73a520b6fed25ff9fd69a25975ebe6acb297234eda501"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0842571634f39016a6c03e9d4aba502be652a6e4455fadb73cd3a3a49173e38f"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a78ed23b08e8ab524551f52953a8a05d61c3a760781762aac49f8de6eede8c45"}, - {file = "coverage-7.4.3-cp39-cp39-win32.whl", hash = "sha256:c0524de3ff096e15fcbfe8f056fdb4ea0bf497d584454f344d59fce069d3e6e9"}, - {file = "coverage-7.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:0209a6369ccce576b43bb227dc8322d8ef9e323d089c6f3f26a597b09cb4d2aa"}, - {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"}, - {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"}, + {file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"}, + {file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"}, + {file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"}, + {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"}, + {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"}, + {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"}, + {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"}, + {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"}, + {file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"}, + {file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"}, + {file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"}, + {file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"}, + {file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"}, + {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"}, + {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"}, + {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"}, + {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"}, + {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"}, + {file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"}, + {file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"}, + {file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"}, + {file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"}, + {file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"}, + {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"}, + {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"}, + {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"}, + {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"}, + {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"}, + {file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"}, + {file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"}, + {file = "coverage-7.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ae728ff3b5401cc320d792866987e7e7e880e6ebd24433b70a33b643bb0384"}, + {file = "coverage-7.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc4f1358cb0c78edef3ed237ef2c86056206bb8d9140e73b6b89fbcfcbdd40e1"}, + {file = "coverage-7.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8130a2aa2acb8788e0b56938786c33c7c98562697bf9f4c7d6e8e5e3a0501e4a"}, + {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf271892d13e43bc2b51e6908ec9a6a5094a4df1d8af0bfc360088ee6c684409"}, + {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4cdc86d54b5da0df6d3d3a2f0b710949286094c3a6700c21e9015932b81447e"}, + {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae71e7ddb7a413dd60052e90528f2f65270aad4b509563af6d03d53e979feafd"}, + {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:38dd60d7bf242c4ed5b38e094baf6401faa114fc09e9e6632374388a404f98e7"}, + {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa5b1c1bfc28384f1f53b69a023d789f72b2e0ab1b3787aae16992a7ca21056c"}, + {file = "coverage-7.4.4-cp38-cp38-win32.whl", hash = "sha256:dfa8fe35a0bb90382837b238fff375de15f0dcdb9ae68ff85f7a63649c98527e"}, + {file = "coverage-7.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2991665420a803495e0b90a79233c1433d6ed77ef282e8e152a324bbbc5e0c8"}, + {file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"}, + {file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"}, + {file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"}, + {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"}, + {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"}, + {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"}, + {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"}, + {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"}, + {file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"}, + {file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"}, + {file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"}, + {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, ] [package.extras] @@ -1108,13 +1108,13 @@ test = ["fiona[s3]", "pytest (>=7)", "pytest-cov", "pytz"] [[package]] name = "flaky" -version = "3.8.0" +version = "3.8.1" description = "Plugin for pytest that automatically reruns flaky tests." optional = false python-versions = ">=3.5" files = [ - {file = "flaky-3.8.0-py2.py3-none-any.whl", hash = "sha256:06152dc0582c18e2cc3d241feece008c074b17e1292658cb39ff8464ae19bd89"}, - {file = "flaky-3.8.0.tar.gz", hash = "sha256:3b4b9f5c15829c919c8e05b15582fa1c9c7f20a303581dd5d0bc56a66441389c"}, + {file = "flaky-3.8.1-py2.py3-none-any.whl", hash = "sha256:194ccf4f0d3a22b2de7130f4b62e45e977ac1b5ccad74d4d48f3005dcc38815e"}, + {file = "flaky-3.8.1.tar.gz", hash = "sha256:47204a81ec905f3d5acfbd61daeabcada8f9d4031616d9bcb0618461729699f5"}, ] [[package]] @@ -1130,53 +1130,53 @@ files = [ [[package]] name = "fonttools" -version = "4.49.0" +version = "4.50.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717"}, - {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc"}, - {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559"}, - {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29"}, - {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532"}, - {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828"}, - {file = "fonttools-4.49.0-cp310-cp310-win32.whl", hash = "sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b"}, - {file = "fonttools-4.49.0-cp310-cp310-win_amd64.whl", hash = "sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf"}, - {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e"}, - {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814"}, - {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22"}, - {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942"}, - {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a"}, - {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86"}, - {file = "fonttools-4.49.0-cp311-cp311-win32.whl", hash = "sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e"}, - {file = "fonttools-4.49.0-cp311-cp311-win_amd64.whl", hash = "sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6"}, - {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075"}, - {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e"}, - {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff"}, - {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5"}, - {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb"}, - {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7"}, - {file = "fonttools-4.49.0-cp312-cp312-win32.whl", hash = "sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880"}, - {file = "fonttools-4.49.0-cp312-cp312-win_amd64.whl", hash = "sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034"}, - {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb"}, - {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4"}, - {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75"}, - {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9"}, - {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd"}, - {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036"}, - {file = "fonttools-4.49.0-cp38-cp38-win32.whl", hash = "sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844"}, - {file = "fonttools-4.49.0-cp38-cp38-win_amd64.whl", hash = "sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a"}, - {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc"}, - {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb"}, - {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2"}, - {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42"}, - {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be"}, - {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c"}, - {file = "fonttools-4.49.0-cp39-cp39-win32.whl", hash = "sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133"}, - {file = "fonttools-4.49.0-cp39-cp39-win_amd64.whl", hash = "sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836"}, - {file = "fonttools-4.49.0-py3-none-any.whl", hash = "sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18"}, - {file = "fonttools-4.49.0.tar.gz", hash = "sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321"}, + {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effd303fb422f8ce06543a36ca69148471144c534cc25f30e5be752bc4f46736"}, + {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7913992ab836f621d06aabac118fc258b9947a775a607e1a737eb3a91c360335"}, + {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0a1c5bd2f63da4043b63888534b52c5a1fd7ae187c8ffc64cbb7ae475b9dab"}, + {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d40fc98540fa5360e7ecf2c56ddf3c6e7dd04929543618fd7b5cc76e66390562"}, + {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fff65fbb7afe137bac3113827855e0204482727bddd00a806034ab0d3951d0d"}, + {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1aeae3dd2ee719074a9372c89ad94f7c581903306d76befdaca2a559f802472"}, + {file = "fonttools-4.50.0-cp310-cp310-win32.whl", hash = "sha256:e9623afa319405da33b43c85cceb0585a6f5d3a1d7c604daf4f7e1dd55c03d1f"}, + {file = "fonttools-4.50.0-cp310-cp310-win_amd64.whl", hash = "sha256:778c5f43e7e654ef7fe0605e80894930bc3a7772e2f496238e57218610140f54"}, + {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3dfb102e7f63b78c832e4539969167ffcc0375b013080e6472350965a5fe8048"}, + {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e58fe34cb379ba3d01d5d319d67dd3ce7ca9a47ad044ea2b22635cd2d1247fc"}, + {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c673ab40d15a442a4e6eb09bf007c1dda47c84ac1e2eecbdf359adacb799c24"}, + {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b3ac35cdcd1a4c90c23a5200212c1bb74fa05833cc7c14291d7043a52ca2aaa"}, + {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8844e7a2c5f7ecf977e82eb6b3014f025c8b454e046d941ece05b768be5847ae"}, + {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f849bd3c5c2249b49c98eca5aaebb920d2bfd92b3c69e84ca9bddf133e9f83f0"}, + {file = "fonttools-4.50.0-cp311-cp311-win32.whl", hash = "sha256:39293ff231b36b035575e81c14626dfc14407a20de5262f9596c2cbb199c3625"}, + {file = "fonttools-4.50.0-cp311-cp311-win_amd64.whl", hash = "sha256:c33d5023523b44d3481624f840c8646656a1def7630ca562f222eb3ead16c438"}, + {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b4a886a6dbe60100ba1cd24de962f8cd18139bd32808da80de1fa9f9f27bf1dc"}, + {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b2ca1837bfbe5eafa11313dbc7edada79052709a1fffa10cea691210af4aa1fa"}, + {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0493dd97ac8977e48ffc1476b932b37c847cbb87fd68673dee5182004906828"}, + {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77844e2f1b0889120b6c222fc49b2b75c3d88b930615e98893b899b9352a27ea"}, + {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3566bfb8c55ed9100afe1ba6f0f12265cd63a1387b9661eb6031a1578a28bad1"}, + {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:35e10ddbc129cf61775d58a14f2d44121178d89874d32cae1eac722e687d9019"}, + {file = "fonttools-4.50.0-cp312-cp312-win32.whl", hash = "sha256:cc8140baf9fa8f9b903f2b393a6c413a220fa990264b215bf48484f3d0bf8710"}, + {file = "fonttools-4.50.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ccc85fd96373ab73c59833b824d7a73846670a0cb1f3afbaee2b2c426a8f931"}, + {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e270a406219af37581d96c810172001ec536e29e5593aa40d4c01cca3e145aa6"}, + {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac2463de667233372e9e1c7e9de3d914b708437ef52a3199fdbf5a60184f190c"}, + {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47abd6669195abe87c22750dbcd366dc3a0648f1b7c93c2baa97429c4dc1506e"}, + {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:074841375e2e3d559aecc86e1224caf78e8b8417bb391e7d2506412538f21adc"}, + {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0743fd2191ad7ab43d78cd747215b12033ddee24fa1e088605a3efe80d6984de"}, + {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3d7080cce7be5ed65bee3496f09f79a82865a514863197ff4d4d177389e981b0"}, + {file = "fonttools-4.50.0-cp38-cp38-win32.whl", hash = "sha256:a467ba4e2eadc1d5cc1a11d355abb945f680473fbe30d15617e104c81f483045"}, + {file = "fonttools-4.50.0-cp38-cp38-win_amd64.whl", hash = "sha256:f77e048f805e00870659d6318fd89ef28ca4ee16a22b4c5e1905b735495fc422"}, + {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b6245eafd553c4e9a0708e93be51392bd2288c773523892fbd616d33fd2fda59"}, + {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a4062cc7e8de26f1603323ef3ae2171c9d29c8a9f5e067d555a2813cd5c7a7e0"}, + {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34692850dfd64ba06af61e5791a441f664cb7d21e7b544e8f385718430e8f8e4"}, + {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678dd95f26a67e02c50dcb5bf250f95231d455642afbc65a3b0bcdacd4e4dd38"}, + {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f2ce7b0b295fe64ac0a85aef46a0f2614995774bd7bc643b85679c0283287f9"}, + {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d346f4dc2221bfb7ab652d1e37d327578434ce559baf7113b0f55768437fe6a0"}, + {file = "fonttools-4.50.0-cp39-cp39-win32.whl", hash = "sha256:a51eeaf52ba3afd70bf489be20e52fdfafe6c03d652b02477c6ce23c995222f4"}, + {file = "fonttools-4.50.0-cp39-cp39-win_amd64.whl", hash = "sha256:8639be40d583e5d9da67795aa3eeeda0488fb577a1d42ae11a5036f18fb16d93"}, + {file = "fonttools-4.50.0-py3-none-any.whl", hash = "sha256:48fa36da06247aa8282766cfd63efff1bb24e55f020f29a335939ed3844d20d3"}, + {file = "fonttools-4.50.0.tar.gz", hash = "sha256:fa5cf61058c7dbb104c2ac4e782bf1b2016a8cf2f69de6e4dd6a865d2c969bb5"}, ] [package.extras] @@ -3115,22 +3115,22 @@ files = [ [[package]] name = "protobuf" -version = "4.25.3" +version = "5.26.0" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, - {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, - {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, - {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, - {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, - {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, - {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, - {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, - {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, + {file = "protobuf-5.26.0-cp310-abi3-win32.whl", hash = "sha256:f9ecc8eb6f18037e0cbf43256db0325d4723f429bca7ef5cd358b7c29d65f628"}, + {file = "protobuf-5.26.0-cp310-abi3-win_amd64.whl", hash = "sha256:dfd29f6eb34107dccf289a93d44fb6b131e68888d090b784b691775ac84e8213"}, + {file = "protobuf-5.26.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:7e47c57303466c867374a17b2b5e99c5a7c8b72a94118e2f28efb599f19b4069"}, + {file = "protobuf-5.26.0-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e184175276edc222e2d5e314a72521e10049938a9a4961fe4bea9b25d073c03f"}, + {file = "protobuf-5.26.0-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:6ee9d1aa02f951c5ce10bf8c6cfb7604133773038e33f913183c8b5201350600"}, + {file = "protobuf-5.26.0-cp38-cp38-win32.whl", hash = "sha256:2c334550e1cb4efac5c8a3987384bf13a4334abaf5ab59e40479e7b70ecd6b19"}, + {file = "protobuf-5.26.0-cp38-cp38-win_amd64.whl", hash = "sha256:8eef61a90631c21b06b4f492a27e199a269827f046de3bb68b61aa84fcf50905"}, + {file = "protobuf-5.26.0-cp39-cp39-win32.whl", hash = "sha256:ca825f4eecb8c342d2ec581e6a5ad1ad1a47bededaecd768e0d3451ae4aaac2b"}, + {file = "protobuf-5.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:efd4f5894c50bd76cbcfdd668cd941021333861ed0f441c78a83d8254a01cc9f"}, + {file = "protobuf-5.26.0-py3-none-any.whl", hash = "sha256:a49b6c5359bf34fb7bf965bf21abfab4476e4527d822ab5289ee3bf73f291159"}, + {file = "protobuf-5.26.0.tar.gz", hash = "sha256:82f5870d74c99addfe4152777bdf8168244b9cf0ac65f8eccf045ddfa9d80d9b"}, ] [[package]] @@ -3496,2741 +3496,2762 @@ files = [ [[package]] name = "pyobjc" -version = "10.1" +version = "10.2" description = "Python<->ObjC Interoperability Module" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-10.1-py3-none-any.whl", hash = "sha256:2687ff02217e7b2aba52c6b948bccea864a8f034af6c90528564d496b343c418"}, - {file = "pyobjc-10.1.tar.gz", hash = "sha256:f54baff4c40d53c3fb3812816ebd130d3186805936628cc1f212f95979af5b98"}, + {file = "pyobjc-10.2-py3-none-any.whl", hash = "sha256:976c8f8af49a91195307b3efbc2d63517be63aae2b4b3689dcff4f317669c23a"}, + {file = "pyobjc-10.2.tar.gz", hash = "sha256:bfea9891750ce3af6439ee102e8e417917f1a7ed7fc4f54b5da9d7457fbb7fc6"}, ] [package.dependencies] -pyobjc-core = "10.1" -pyobjc-framework-Accessibility = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-Accounts = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-AddressBook = "10.1" -pyobjc-framework-AdServices = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-AdSupport = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-AppleScriptKit = "10.1" -pyobjc-framework-AppleScriptObjC = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-ApplicationServices = "10.1" -pyobjc-framework-AppTrackingTransparency = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-AudioVideoBridging = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-AuthenticationServices = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-AutomaticAssessmentConfiguration = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Automator = "10.1" -pyobjc-framework-AVFoundation = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-AVKit = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-AVRouting = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-BackgroundAssets = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-BusinessChat = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-CalendarStore = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-CallKit = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-CFNetwork = "10.1" -pyobjc-framework-Cinematic = {version = "10.1", markers = "platform_release >= \"23.0\""} -pyobjc-framework-ClassKit = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-CloudKit = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-Cocoa = "10.1" -pyobjc-framework-Collaboration = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-ColorSync = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-Contacts = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-ContactsUI = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-CoreAudio = "10.1" -pyobjc-framework-CoreAudioKit = "10.1" -pyobjc-framework-CoreBluetooth = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-CoreData = "10.1" -pyobjc-framework-CoreHaptics = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-CoreLocation = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-CoreMedia = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-CoreMediaIO = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-CoreMIDI = "10.1" -pyobjc-framework-CoreML = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-CoreMotion = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-CoreServices = "10.1" -pyobjc-framework-CoreSpotlight = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-CoreText = "10.1" -pyobjc-framework-CoreWLAN = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-CryptoTokenKit = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-DataDetection = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-DeviceCheck = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-DictionaryServices = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-DiscRecording = "10.1" -pyobjc-framework-DiscRecordingUI = "10.1" -pyobjc-framework-DiskArbitration = "10.1" -pyobjc-framework-DVDPlayback = "10.1" -pyobjc-framework-EventKit = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-ExceptionHandling = "10.1" -pyobjc-framework-ExecutionPolicy = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ExtensionKit = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ExternalAccessory = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-FileProvider = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-FileProviderUI = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-FinderSync = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-FSEvents = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-GameCenter = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-GameController = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-GameKit = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-GameplayKit = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-HealthKit = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ImageCaptureCore = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-InputMethodKit = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-InstallerPlugins = "10.1" -pyobjc-framework-InstantMessage = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-Intents = {version = "10.1", markers = "platform_release >= \"16.0\""} -pyobjc-framework-IntentsUI = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-IOBluetooth = "10.1" -pyobjc-framework-IOBluetoothUI = "10.1" -pyobjc-framework-IOSurface = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-iTunesLibrary = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-KernelManagement = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-LatentSemanticMapping = "10.1" -pyobjc-framework-LaunchServices = "10.1" -pyobjc-framework-libdispatch = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-libxpc = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-LinkPresentation = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-LocalAuthentication = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-LocalAuthenticationEmbeddedUI = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MailKit = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MapKit = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaAccessibility = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaLibrary = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaPlayer = {version = "10.1", markers = "platform_release >= \"16.0\""} -pyobjc-framework-MediaToolbox = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-Metal = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MetalFX = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-MetalKit = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MetalPerformanceShaders = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-MetalPerformanceShadersGraph = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-MetricKit = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MLCompute = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-ModelIO = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MultipeerConnectivity = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-NaturalLanguage = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-NetFS = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-Network = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-NetworkExtension = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-NotificationCenter = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-OpenDirectory = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-OSAKit = "10.1" -pyobjc-framework-OSLog = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-PassKit = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-PencilKit = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-PHASE = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-Photos = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-PhotosUI = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-PreferencePanes = "10.1" -pyobjc-framework-PubSub = {version = "10.1", markers = "platform_release >= \"9.0\" and platform_release < \"18.0\""} -pyobjc-framework-PushKit = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Quartz = "10.1" -pyobjc-framework-QuickLookThumbnailing = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ReplayKit = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-SafariServices = {version = "10.1", markers = "platform_release >= \"16.0\""} -pyobjc-framework-SafetyKit = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-SceneKit = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-ScreenCaptureKit = {version = "10.1", markers = "platform_release >= \"21.4\""} -pyobjc-framework-ScreenSaver = "10.1" -pyobjc-framework-ScreenTime = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-ScriptingBridge = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-SearchKit = "10.1" -pyobjc-framework-Security = "10.1" -pyobjc-framework-SecurityFoundation = "10.1" -pyobjc-framework-SecurityInterface = "10.1" -pyobjc-framework-SensitiveContentAnalysis = {version = "10.1", markers = "platform_release >= \"23.0\""} -pyobjc-framework-ServiceManagement = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-SharedWithYou = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-SharedWithYouCore = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ShazamKit = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-Social = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-SoundAnalysis = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Speech = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-SpriteKit = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-StoreKit = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-Symbols = {version = "10.1", markers = "platform_release >= \"23.0\""} -pyobjc-framework-SyncServices = "10.1" -pyobjc-framework-SystemConfiguration = "10.1" -pyobjc-framework-SystemExtensions = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ThreadNetwork = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-UniformTypeIdentifiers = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-UserNotifications = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-UserNotificationsUI = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-VideoSubscriberAccount = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-VideoToolbox = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-Virtualization = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-Vision = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-WebKit = "10.1" +pyobjc-core = "10.2" +pyobjc-framework-Accessibility = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-Accounts = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-AddressBook = "10.2" +pyobjc-framework-AdServices = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-AdSupport = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-AppleScriptKit = "10.2" +pyobjc-framework-AppleScriptObjC = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-ApplicationServices = "10.2" +pyobjc-framework-AppTrackingTransparency = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-AudioVideoBridging = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-AuthenticationServices = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-AutomaticAssessmentConfiguration = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Automator = "10.2" +pyobjc-framework-AVFoundation = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-AVKit = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-AVRouting = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-BackgroundAssets = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-BrowserEngineKit = {version = "10.2", markers = "platform_release >= \"23.4\""} +pyobjc-framework-BusinessChat = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-CalendarStore = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-CallKit = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-CFNetwork = "10.2" +pyobjc-framework-Cinematic = {version = "10.2", markers = "platform_release >= \"23.0\""} +pyobjc-framework-ClassKit = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-CloudKit = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-Cocoa = "10.2" +pyobjc-framework-Collaboration = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-ColorSync = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-Contacts = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-ContactsUI = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-CoreAudio = "10.2" +pyobjc-framework-CoreAudioKit = "10.2" +pyobjc-framework-CoreBluetooth = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-CoreData = "10.2" +pyobjc-framework-CoreHaptics = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-CoreLocation = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-CoreMedia = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-CoreMediaIO = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-CoreMIDI = "10.2" +pyobjc-framework-CoreML = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-CoreMotion = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-CoreServices = "10.2" +pyobjc-framework-CoreSpotlight = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-CoreText = "10.2" +pyobjc-framework-CoreWLAN = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-CryptoTokenKit = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-DataDetection = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-DeviceCheck = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-DictionaryServices = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-DiscRecording = "10.2" +pyobjc-framework-DiscRecordingUI = "10.2" +pyobjc-framework-DiskArbitration = "10.2" +pyobjc-framework-DVDPlayback = "10.2" +pyobjc-framework-EventKit = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-ExceptionHandling = "10.2" +pyobjc-framework-ExecutionPolicy = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ExtensionKit = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ExternalAccessory = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-FileProvider = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-FileProviderUI = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-FinderSync = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-FSEvents = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-GameCenter = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-GameController = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-GameKit = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-GameplayKit = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-HealthKit = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ImageCaptureCore = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-InputMethodKit = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-InstallerPlugins = "10.2" +pyobjc-framework-InstantMessage = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-Intents = {version = "10.2", markers = "platform_release >= \"16.0\""} +pyobjc-framework-IntentsUI = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-IOBluetooth = "10.2" +pyobjc-framework-IOBluetoothUI = "10.2" +pyobjc-framework-IOSurface = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-iTunesLibrary = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-KernelManagement = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-LatentSemanticMapping = "10.2" +pyobjc-framework-LaunchServices = "10.2" +pyobjc-framework-libdispatch = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-libxpc = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-LinkPresentation = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-LocalAuthentication = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-LocalAuthenticationEmbeddedUI = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MailKit = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MapKit = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaAccessibility = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaLibrary = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaPlayer = {version = "10.2", markers = "platform_release >= \"16.0\""} +pyobjc-framework-MediaToolbox = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-Metal = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MetalFX = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-MetalKit = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MetalPerformanceShaders = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-MetalPerformanceShadersGraph = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-MetricKit = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MLCompute = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-ModelIO = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MultipeerConnectivity = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-NaturalLanguage = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-NetFS = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-Network = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-NetworkExtension = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-NotificationCenter = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-OpenDirectory = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-OSAKit = "10.2" +pyobjc-framework-OSLog = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-PassKit = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-PencilKit = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-PHASE = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-Photos = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-PhotosUI = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-PreferencePanes = "10.2" +pyobjc-framework-PubSub = {version = "10.2", markers = "platform_release >= \"9.0\" and platform_release < \"18.0\""} +pyobjc-framework-PushKit = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Quartz = "10.2" +pyobjc-framework-QuickLookThumbnailing = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ReplayKit = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-SafariServices = {version = "10.2", markers = "platform_release >= \"16.0\""} +pyobjc-framework-SafetyKit = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-SceneKit = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-ScreenCaptureKit = {version = "10.2", markers = "platform_release >= \"21.4\""} +pyobjc-framework-ScreenSaver = "10.2" +pyobjc-framework-ScreenTime = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-ScriptingBridge = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-SearchKit = "10.2" +pyobjc-framework-Security = "10.2" +pyobjc-framework-SecurityFoundation = "10.2" +pyobjc-framework-SecurityInterface = "10.2" +pyobjc-framework-SensitiveContentAnalysis = {version = "10.2", markers = "platform_release >= \"23.0\""} +pyobjc-framework-ServiceManagement = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-SharedWithYou = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-SharedWithYouCore = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ShazamKit = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-Social = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-SoundAnalysis = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Speech = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-SpriteKit = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-StoreKit = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-Symbols = {version = "10.2", markers = "platform_release >= \"23.0\""} +pyobjc-framework-SyncServices = "10.2" +pyobjc-framework-SystemConfiguration = "10.2" +pyobjc-framework-SystemExtensions = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ThreadNetwork = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-UniformTypeIdentifiers = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-UserNotifications = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-UserNotificationsUI = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-VideoSubscriberAccount = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-VideoToolbox = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-Virtualization = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-Vision = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-WebKit = "10.2" [package.extras] -allbindings = ["pyobjc-core (==10.1)", "pyobjc-framework-AVFoundation (==10.1)", "pyobjc-framework-AVKit (==10.1)", "pyobjc-framework-AVRouting (==10.1)", "pyobjc-framework-Accessibility (==10.1)", "pyobjc-framework-Accounts (==10.1)", "pyobjc-framework-AdServices (==10.1)", "pyobjc-framework-AdSupport (==10.1)", "pyobjc-framework-AddressBook (==10.1)", "pyobjc-framework-AppTrackingTransparency (==10.1)", "pyobjc-framework-AppleScriptKit (==10.1)", "pyobjc-framework-AppleScriptObjC (==10.1)", "pyobjc-framework-ApplicationServices (==10.1)", "pyobjc-framework-AudioVideoBridging (==10.1)", "pyobjc-framework-AuthenticationServices (==10.1)", "pyobjc-framework-AutomaticAssessmentConfiguration (==10.1)", "pyobjc-framework-Automator (==10.1)", "pyobjc-framework-BackgroundAssets (==10.1)", "pyobjc-framework-BusinessChat (==10.1)", "pyobjc-framework-CFNetwork (==10.1)", "pyobjc-framework-CalendarStore (==10.1)", "pyobjc-framework-CallKit (==10.1)", "pyobjc-framework-Cinematic (==10.1)", "pyobjc-framework-ClassKit (==10.1)", "pyobjc-framework-CloudKit (==10.1)", "pyobjc-framework-Cocoa (==10.1)", "pyobjc-framework-Collaboration (==10.1)", "pyobjc-framework-ColorSync (==10.1)", "pyobjc-framework-Contacts (==10.1)", "pyobjc-framework-ContactsUI (==10.1)", "pyobjc-framework-CoreAudio (==10.1)", "pyobjc-framework-CoreAudioKit (==10.1)", "pyobjc-framework-CoreBluetooth (==10.1)", "pyobjc-framework-CoreData (==10.1)", "pyobjc-framework-CoreHaptics (==10.1)", "pyobjc-framework-CoreLocation (==10.1)", "pyobjc-framework-CoreMIDI (==10.1)", "pyobjc-framework-CoreML (==10.1)", "pyobjc-framework-CoreMedia (==10.1)", "pyobjc-framework-CoreMediaIO (==10.1)", "pyobjc-framework-CoreMotion (==10.1)", "pyobjc-framework-CoreServices (==10.1)", "pyobjc-framework-CoreSpotlight (==10.1)", "pyobjc-framework-CoreText (==10.1)", "pyobjc-framework-CoreWLAN (==10.1)", "pyobjc-framework-CryptoTokenKit (==10.1)", "pyobjc-framework-DVDPlayback (==10.1)", "pyobjc-framework-DataDetection (==10.1)", "pyobjc-framework-DeviceCheck (==10.1)", "pyobjc-framework-DictionaryServices (==10.1)", "pyobjc-framework-DiscRecording (==10.1)", "pyobjc-framework-DiscRecordingUI (==10.1)", "pyobjc-framework-DiskArbitration (==10.1)", "pyobjc-framework-EventKit (==10.1)", "pyobjc-framework-ExceptionHandling (==10.1)", "pyobjc-framework-ExecutionPolicy (==10.1)", "pyobjc-framework-ExtensionKit (==10.1)", "pyobjc-framework-ExternalAccessory (==10.1)", "pyobjc-framework-FSEvents (==10.1)", "pyobjc-framework-FileProvider (==10.1)", "pyobjc-framework-FileProviderUI (==10.1)", "pyobjc-framework-FinderSync (==10.1)", "pyobjc-framework-GameCenter (==10.1)", "pyobjc-framework-GameController (==10.1)", "pyobjc-framework-GameKit (==10.1)", "pyobjc-framework-GameplayKit (==10.1)", "pyobjc-framework-HealthKit (==10.1)", "pyobjc-framework-IOBluetooth (==10.1)", "pyobjc-framework-IOBluetoothUI (==10.1)", "pyobjc-framework-IOSurface (==10.1)", "pyobjc-framework-ImageCaptureCore (==10.1)", "pyobjc-framework-InputMethodKit (==10.1)", "pyobjc-framework-InstallerPlugins (==10.1)", "pyobjc-framework-InstantMessage (==10.1)", "pyobjc-framework-Intents (==10.1)", "pyobjc-framework-IntentsUI (==10.1)", "pyobjc-framework-KernelManagement (==10.1)", "pyobjc-framework-LatentSemanticMapping (==10.1)", "pyobjc-framework-LaunchServices (==10.1)", "pyobjc-framework-LinkPresentation (==10.1)", "pyobjc-framework-LocalAuthentication (==10.1)", "pyobjc-framework-LocalAuthenticationEmbeddedUI (==10.1)", "pyobjc-framework-MLCompute (==10.1)", "pyobjc-framework-MailKit (==10.1)", "pyobjc-framework-MapKit (==10.1)", "pyobjc-framework-MediaAccessibility (==10.1)", "pyobjc-framework-MediaLibrary (==10.1)", "pyobjc-framework-MediaPlayer (==10.1)", "pyobjc-framework-MediaToolbox (==10.1)", "pyobjc-framework-Metal (==10.1)", "pyobjc-framework-MetalFX (==10.1)", "pyobjc-framework-MetalKit (==10.1)", "pyobjc-framework-MetalPerformanceShaders (==10.1)", "pyobjc-framework-MetalPerformanceShadersGraph (==10.1)", "pyobjc-framework-MetricKit (==10.1)", "pyobjc-framework-ModelIO (==10.1)", "pyobjc-framework-MultipeerConnectivity (==10.1)", "pyobjc-framework-NaturalLanguage (==10.1)", "pyobjc-framework-NetFS (==10.1)", "pyobjc-framework-Network (==10.1)", "pyobjc-framework-NetworkExtension (==10.1)", "pyobjc-framework-NotificationCenter (==10.1)", "pyobjc-framework-OSAKit (==10.1)", "pyobjc-framework-OSLog (==10.1)", "pyobjc-framework-OpenDirectory (==10.1)", "pyobjc-framework-PHASE (==10.1)", "pyobjc-framework-PassKit (==10.1)", "pyobjc-framework-PencilKit (==10.1)", "pyobjc-framework-Photos (==10.1)", "pyobjc-framework-PhotosUI (==10.1)", "pyobjc-framework-PreferencePanes (==10.1)", "pyobjc-framework-PubSub (==10.1)", "pyobjc-framework-PushKit (==10.1)", "pyobjc-framework-Quartz (==10.1)", "pyobjc-framework-QuickLookThumbnailing (==10.1)", "pyobjc-framework-ReplayKit (==10.1)", "pyobjc-framework-SafariServices (==10.1)", "pyobjc-framework-SafetyKit (==10.1)", "pyobjc-framework-SceneKit (==10.1)", "pyobjc-framework-ScreenCaptureKit (==10.1)", "pyobjc-framework-ScreenSaver (==10.1)", "pyobjc-framework-ScreenTime (==10.1)", "pyobjc-framework-ScriptingBridge (==10.1)", "pyobjc-framework-SearchKit (==10.1)", "pyobjc-framework-Security (==10.1)", "pyobjc-framework-SecurityFoundation (==10.1)", "pyobjc-framework-SecurityInterface (==10.1)", "pyobjc-framework-SensitiveContentAnalysis (==10.1)", "pyobjc-framework-ServiceManagement (==10.1)", "pyobjc-framework-SharedWithYou (==10.1)", "pyobjc-framework-SharedWithYouCore (==10.1)", "pyobjc-framework-ShazamKit (==10.1)", "pyobjc-framework-Social (==10.1)", "pyobjc-framework-SoundAnalysis (==10.1)", "pyobjc-framework-Speech (==10.1)", "pyobjc-framework-SpriteKit (==10.1)", "pyobjc-framework-StoreKit (==10.1)", "pyobjc-framework-Symbols (==10.1)", "pyobjc-framework-SyncServices (==10.1)", "pyobjc-framework-SystemConfiguration (==10.1)", "pyobjc-framework-SystemExtensions (==10.1)", "pyobjc-framework-ThreadNetwork (==10.1)", "pyobjc-framework-UniformTypeIdentifiers (==10.1)", "pyobjc-framework-UserNotifications (==10.1)", "pyobjc-framework-UserNotificationsUI (==10.1)", "pyobjc-framework-VideoSubscriberAccount (==10.1)", "pyobjc-framework-VideoToolbox (==10.1)", "pyobjc-framework-Virtualization (==10.1)", "pyobjc-framework-Vision (==10.1)", "pyobjc-framework-WebKit (==10.1)", "pyobjc-framework-iTunesLibrary (==10.1)", "pyobjc-framework-libdispatch (==10.1)", "pyobjc-framework-libxpc (==10.1)"] +allbindings = ["pyobjc-core (==10.2)", "pyobjc-framework-AVFoundation (==10.2)", "pyobjc-framework-AVKit (==10.2)", "pyobjc-framework-AVRouting (==10.2)", "pyobjc-framework-Accessibility (==10.2)", "pyobjc-framework-Accounts (==10.2)", "pyobjc-framework-AdServices (==10.2)", "pyobjc-framework-AdSupport (==10.2)", "pyobjc-framework-AddressBook (==10.2)", "pyobjc-framework-AppTrackingTransparency (==10.2)", "pyobjc-framework-AppleScriptKit (==10.2)", "pyobjc-framework-AppleScriptObjC (==10.2)", "pyobjc-framework-ApplicationServices (==10.2)", "pyobjc-framework-AudioVideoBridging (==10.2)", "pyobjc-framework-AuthenticationServices (==10.2)", "pyobjc-framework-AutomaticAssessmentConfiguration (==10.2)", "pyobjc-framework-Automator (==10.2)", "pyobjc-framework-BackgroundAssets (==10.2)", "pyobjc-framework-BrowserEngineKit (==10.2)", "pyobjc-framework-BusinessChat (==10.2)", "pyobjc-framework-CFNetwork (==10.2)", "pyobjc-framework-CalendarStore (==10.2)", "pyobjc-framework-CallKit (==10.2)", "pyobjc-framework-Cinematic (==10.2)", "pyobjc-framework-ClassKit (==10.2)", "pyobjc-framework-CloudKit (==10.2)", "pyobjc-framework-Cocoa (==10.2)", "pyobjc-framework-Collaboration (==10.2)", "pyobjc-framework-ColorSync (==10.2)", "pyobjc-framework-Contacts (==10.2)", "pyobjc-framework-ContactsUI (==10.2)", "pyobjc-framework-CoreAudio (==10.2)", "pyobjc-framework-CoreAudioKit (==10.2)", "pyobjc-framework-CoreBluetooth (==10.2)", "pyobjc-framework-CoreData (==10.2)", "pyobjc-framework-CoreHaptics (==10.2)", "pyobjc-framework-CoreLocation (==10.2)", "pyobjc-framework-CoreMIDI (==10.2)", "pyobjc-framework-CoreML (==10.2)", "pyobjc-framework-CoreMedia (==10.2)", "pyobjc-framework-CoreMediaIO (==10.2)", "pyobjc-framework-CoreMotion (==10.2)", "pyobjc-framework-CoreServices (==10.2)", "pyobjc-framework-CoreSpotlight (==10.2)", "pyobjc-framework-CoreText (==10.2)", "pyobjc-framework-CoreWLAN (==10.2)", "pyobjc-framework-CryptoTokenKit (==10.2)", "pyobjc-framework-DVDPlayback (==10.2)", "pyobjc-framework-DataDetection (==10.2)", "pyobjc-framework-DeviceCheck (==10.2)", "pyobjc-framework-DictionaryServices (==10.2)", "pyobjc-framework-DiscRecording (==10.2)", "pyobjc-framework-DiscRecordingUI (==10.2)", "pyobjc-framework-DiskArbitration (==10.2)", "pyobjc-framework-EventKit (==10.2)", "pyobjc-framework-ExceptionHandling (==10.2)", "pyobjc-framework-ExecutionPolicy (==10.2)", "pyobjc-framework-ExtensionKit (==10.2)", "pyobjc-framework-ExternalAccessory (==10.2)", "pyobjc-framework-FSEvents (==10.2)", "pyobjc-framework-FileProvider (==10.2)", "pyobjc-framework-FileProviderUI (==10.2)", "pyobjc-framework-FinderSync (==10.2)", "pyobjc-framework-GameCenter (==10.2)", "pyobjc-framework-GameController (==10.2)", "pyobjc-framework-GameKit (==10.2)", "pyobjc-framework-GameplayKit (==10.2)", "pyobjc-framework-HealthKit (==10.2)", "pyobjc-framework-IOBluetooth (==10.2)", "pyobjc-framework-IOBluetoothUI (==10.2)", "pyobjc-framework-IOSurface (==10.2)", "pyobjc-framework-ImageCaptureCore (==10.2)", "pyobjc-framework-InputMethodKit (==10.2)", "pyobjc-framework-InstallerPlugins (==10.2)", "pyobjc-framework-InstantMessage (==10.2)", "pyobjc-framework-Intents (==10.2)", "pyobjc-framework-IntentsUI (==10.2)", "pyobjc-framework-KernelManagement (==10.2)", "pyobjc-framework-LatentSemanticMapping (==10.2)", "pyobjc-framework-LaunchServices (==10.2)", "pyobjc-framework-LinkPresentation (==10.2)", "pyobjc-framework-LocalAuthentication (==10.2)", "pyobjc-framework-LocalAuthenticationEmbeddedUI (==10.2)", "pyobjc-framework-MLCompute (==10.2)", "pyobjc-framework-MailKit (==10.2)", "pyobjc-framework-MapKit (==10.2)", "pyobjc-framework-MediaAccessibility (==10.2)", "pyobjc-framework-MediaLibrary (==10.2)", "pyobjc-framework-MediaPlayer (==10.2)", "pyobjc-framework-MediaToolbox (==10.2)", "pyobjc-framework-Metal (==10.2)", "pyobjc-framework-MetalFX (==10.2)", "pyobjc-framework-MetalKit (==10.2)", "pyobjc-framework-MetalPerformanceShaders (==10.2)", "pyobjc-framework-MetalPerformanceShadersGraph (==10.2)", "pyobjc-framework-MetricKit (==10.2)", "pyobjc-framework-ModelIO (==10.2)", "pyobjc-framework-MultipeerConnectivity (==10.2)", "pyobjc-framework-NaturalLanguage (==10.2)", "pyobjc-framework-NetFS (==10.2)", "pyobjc-framework-Network (==10.2)", "pyobjc-framework-NetworkExtension (==10.2)", "pyobjc-framework-NotificationCenter (==10.2)", "pyobjc-framework-OSAKit (==10.2)", "pyobjc-framework-OSLog (==10.2)", "pyobjc-framework-OpenDirectory (==10.2)", "pyobjc-framework-PHASE (==10.2)", "pyobjc-framework-PassKit (==10.2)", "pyobjc-framework-PencilKit (==10.2)", "pyobjc-framework-Photos (==10.2)", "pyobjc-framework-PhotosUI (==10.2)", "pyobjc-framework-PreferencePanes (==10.2)", "pyobjc-framework-PubSub (==10.2)", "pyobjc-framework-PushKit (==10.2)", "pyobjc-framework-Quartz (==10.2)", "pyobjc-framework-QuickLookThumbnailing (==10.2)", "pyobjc-framework-ReplayKit (==10.2)", "pyobjc-framework-SafariServices (==10.2)", "pyobjc-framework-SafetyKit (==10.2)", "pyobjc-framework-SceneKit (==10.2)", "pyobjc-framework-ScreenCaptureKit (==10.2)", "pyobjc-framework-ScreenSaver (==10.2)", "pyobjc-framework-ScreenTime (==10.2)", "pyobjc-framework-ScriptingBridge (==10.2)", "pyobjc-framework-SearchKit (==10.2)", "pyobjc-framework-Security (==10.2)", "pyobjc-framework-SecurityFoundation (==10.2)", "pyobjc-framework-SecurityInterface (==10.2)", "pyobjc-framework-SensitiveContentAnalysis (==10.2)", "pyobjc-framework-ServiceManagement (==10.2)", "pyobjc-framework-SharedWithYou (==10.2)", "pyobjc-framework-SharedWithYouCore (==10.2)", "pyobjc-framework-ShazamKit (==10.2)", "pyobjc-framework-Social (==10.2)", "pyobjc-framework-SoundAnalysis (==10.2)", "pyobjc-framework-Speech (==10.2)", "pyobjc-framework-SpriteKit (==10.2)", "pyobjc-framework-StoreKit (==10.2)", "pyobjc-framework-Symbols (==10.2)", "pyobjc-framework-SyncServices (==10.2)", "pyobjc-framework-SystemConfiguration (==10.2)", "pyobjc-framework-SystemExtensions (==10.2)", "pyobjc-framework-ThreadNetwork (==10.2)", "pyobjc-framework-UniformTypeIdentifiers (==10.2)", "pyobjc-framework-UserNotifications (==10.2)", "pyobjc-framework-UserNotificationsUI (==10.2)", "pyobjc-framework-VideoSubscriberAccount (==10.2)", "pyobjc-framework-VideoToolbox (==10.2)", "pyobjc-framework-Virtualization (==10.2)", "pyobjc-framework-Vision (==10.2)", "pyobjc-framework-WebKit (==10.2)", "pyobjc-framework-iTunesLibrary (==10.2)", "pyobjc-framework-libdispatch (==10.2)", "pyobjc-framework-libxpc (==10.2)"] [[package]] name = "pyobjc-core" -version = "10.1" +version = "10.2" description = "Python<->ObjC Interoperability Module" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-core-10.1.tar.gz", hash = "sha256:1844f1c8e282839e6fdcb9a9722396c1c12fb1e9331eb68828a26f28a3b2b2b1"}, - {file = "pyobjc_core-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2a72a88222539ad07b5c8be411edc52ff9147d7cef311a2c849869d7bb9603fd"}, - {file = "pyobjc_core-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fe1b9987b7b0437685fb529832876c2a8463500114960d4e76bb8ae96b6bf208"}, - {file = "pyobjc_core-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9f628779c345d3abd0e20048fb0e256d894c22254577a81a6dcfdb92c3647682"}, - {file = "pyobjc_core-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25a9e5a2de19238787d24cfa7def6b7fbb94bbe89c0e3109f71c1cb108e8ab44"}, - {file = "pyobjc_core-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:2d43205d3a784aa87055b84c0ec0dfa76498e5f18d1ad16bdc58a3dcf5a7d5d0"}, - {file = "pyobjc_core-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0aa9799b5996a893944999a2f1afcf1de119cab3551c169ad9f54d12e1d38c99"}, + {file = "pyobjc-core-10.2.tar.gz", hash = "sha256:0153206e15d0e0d7abd53ee8a7fbaf5606602a032e177a028fc8589516a8771c"}, + {file = "pyobjc_core-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b8eab50ce7f17017a0f1d68c3b7e88bb1bb033415fdff62b8e0a9ee4ab72f242"}, + {file = "pyobjc_core-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f2115971463073426ab926416e17e5c16de5b90d1a1f2a2d8724637eb1c21308"}, + {file = "pyobjc_core-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a70546246177c23acb323c9324330e37638f1a0a3d13664abcba3bb75e43012c"}, + {file = "pyobjc_core-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a9b5a215080d13bd7526031d21d5eb27a410780878d863f486053a0eba7ca9a5"}, + {file = "pyobjc_core-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:eb1ab700a44bcc4ceb125091dfaae0b998b767b49990df5fdc83eb58158d8e3f"}, + {file = "pyobjc_core-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9a7163aff9c47d654f835f80361c1b112886ec754800d34e75d1e02ff52c3d7"}, ] [[package]] name = "pyobjc-framework-accessibility" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Accessibility on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Accessibility-10.1.tar.gz", hash = "sha256:70b812cf2b04b57a520c3fde9df4184c2783795fb355b416a8058114e52ad24a"}, - {file = "pyobjc_framework_Accessibility-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ef8524f2b67240fb3c3f7928f2d73e9050a8b80e18db8336e7ba4d4ba1d368df"}, - {file = "pyobjc_framework_Accessibility-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d351d7799b197524a200c54bebe450e87f9c52812f6162811b7e84823e8946df"}, - {file = "pyobjc_framework_Accessibility-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1dc4e0acedaa0232103714dd2daa3244a628426bee6e933078c89e8eb86b7961"}, + {file = "pyobjc-framework-Accessibility-10.2.tar.gz", hash = "sha256:275c9ac0df1350bf751dbddc81d98f7702cf03ad66e0271876cef9aa70ca5c24"}, + {file = "pyobjc_framework_Accessibility-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c801ad06fadc17f281102408d8a98a844739b3496b9799e2cef2b630a8bec312"}, + {file = "pyobjc_framework_Accessibility-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:861c6f7683c1bd769df85e677905a051f17f01a99a59cbba63b68c2f4bf46066"}, + {file = "pyobjc_framework_Accessibility-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7e0a716b0cc89fbfb68d4ac0eba4bbd9c50a092255efa2794c4bb93b27b05b98"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-accounts" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Accounts on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Accounts-10.1.tar.gz", hash = "sha256:cb436af5b60f1d6a8a59f94d84ea6decba663598d5624fce29a0babf6fad0a89"}, - {file = "pyobjc_framework_Accounts-10.1-py2.py3-none-any.whl", hash = "sha256:30da31a76f2cfd0a4021eff4d4ff69e0a70b2f293290372f5909ae267d15a010"}, + {file = "pyobjc-framework-Accounts-10.2.tar.gz", hash = "sha256:40c8d7299b58b2300db0a6189a7c7056d38385e58700cb40137a744bb03708b7"}, + {file = "pyobjc_framework_Accounts-10.2-py2.py3-none-any.whl", hash = "sha256:9616c8c27f08baadfeea7c27fb1efac043e0785fbbbfbe05f20021402ac5295f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-addressbook" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AddressBook on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AddressBook-10.1.tar.gz", hash = "sha256:9b8e01da07703990f0e745945b01cc75c59ade41913edbd6824194e21522efff"}, - {file = "pyobjc_framework_AddressBook-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2c6cb2278161ed55fba8b47515ff777a95265e484c51ad7a1c952747d8a411ee"}, - {file = "pyobjc_framework_AddressBook-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:10236b9112c8e5d83526804ca734a5f176bba435c2451c4b43c1247e76d9f73d"}, - {file = "pyobjc_framework_AddressBook-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e4305cf6366fa2e01040f490360283f572103be0a45d190774869915c2707c54"}, + {file = "pyobjc-framework-AddressBook-10.2.tar.gz", hash = "sha256:d6969fcbde1d78ec9fa0ebcefc2f453090e35d7590c4b4baf62174e060de6bce"}, + {file = "pyobjc_framework_AddressBook-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6558b05e9d40a7f40650cddde9b71cb6fb536edf891985c977d4abc626f07a63"}, + {file = "pyobjc_framework_AddressBook-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c57347c04b11310f980e3d6cadc84ebc701d2216853108f9b708c03b0d295a59"}, + {file = "pyobjc_framework_AddressBook-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ba6eff580e4764dc9616b73cf4794cd44b4389b98f95696bac0bb5190f6a1211"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-adservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AdServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AdServices-10.1.tar.gz", hash = "sha256:54d2dd3084374213e31760bae9df1e6e9da3b3f1cc04787dae3ad53f8fc12f69"}, - {file = "pyobjc_framework_AdServices-10.1-py2.py3-none-any.whl", hash = "sha256:79ec6eb744635b72ffd0bdd5e55cb5ec57603633716861bbf40b236d8dba0dfd"}, + {file = "pyobjc-framework-AdServices-10.2.tar.gz", hash = "sha256:76eafba018c819c1770f88daa68d25fc5f06dc93a9f5e369d329d0f341dec3af"}, + {file = "pyobjc_framework_AdServices-10.2-py2.py3-none-any.whl", hash = "sha256:b03fcd460b632fc1b3fd8275060255e518933d1d0da06d6eda9b128b4e2999ec"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-adsupport" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AdSupport on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AdSupport-10.1.tar.gz", hash = "sha256:df6b2d1cc1202905dcf6bcdbf35121acc45c346a57b1048f5f4d1ea15bc29c9c"}, - {file = "pyobjc_framework_AdSupport-10.1-py2.py3-none-any.whl", hash = "sha256:d61f2e44f6c2ed5c33b6520754ef8ea22470f8ac3154912aa44bee4fb792255c"}, + {file = "pyobjc-framework-AdSupport-10.2.tar.gz", hash = "sha256:1eb76dc039d081e6d25b4fd334a3987bd9f73527a17844c421bcc8289dd16968"}, + {file = "pyobjc_framework_AdSupport-10.2-py2.py3-none-any.whl", hash = "sha256:4883ac30f1d78d764b57aacb46af78018f2302b9f7e8f4e1fccb25c3cb44ab74"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-applescriptkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AppleScriptKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AppleScriptKit-10.1.tar.gz", hash = "sha256:e41cd0037cbe0af4ffecc42339d1b6255f2539dfb6dedf4f2ae00ac1a260eecf"}, - {file = "pyobjc_framework_AppleScriptKit-10.1-py2.py3-none-any.whl", hash = "sha256:b88bc8ae9e000d382c3e1d72b3c4f39499323fbe88cc84af259925448c187387"}, + {file = "pyobjc-framework-AppleScriptKit-10.2.tar.gz", hash = "sha256:871452c17b15ce33337cd7ebd293fe31daef9f02f16ebb649efc36165cfb02da"}, + {file = "pyobjc_framework_AppleScriptKit-10.2-py2.py3-none-any.whl", hash = "sha256:15af7d97f017563ff3771127a2b7c515496aa6083497415cbe8c27dd5811c50f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-applescriptobjc" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AppleScriptObjC on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AppleScriptObjC-10.1.tar.gz", hash = "sha256:cfcec31b25a4c201188936347697ff3eb1f79885a43af26559a572391c50cdf9"}, - {file = "pyobjc_framework_AppleScriptObjC-10.1-py2.py3-none-any.whl", hash = "sha256:500ed0e39bf2a4f2413d8d6dc398bb58f233ca3670f6946aa5c6d14d1b563465"}, + {file = "pyobjc-framework-AppleScriptObjC-10.2.tar.gz", hash = "sha256:71f90e41be6beb392a833d915d3af13d10526bfb29bf35cb9af1578b5ec52566"}, + {file = "pyobjc_framework_AppleScriptObjC-10.2-py2.py3-none-any.whl", hash = "sha256:41156fcc36acc3ca7bd0a62af47af4ab8089330c6072db6047b91b52f815f049"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-applicationservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ApplicationServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ApplicationServices-10.1.tar.gz", hash = "sha256:bb780eabadad0fbf36a128041dccfd71e30bbeb6b110852d37fd5c98f4a2ec04"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a74a0922b48ad5ac4e402a1ac5dda5d6ee0d177870b7e244be61bc95d639ba85"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff352c33cad3f7bf8dd9b955ebb5db02d451d88eb04478d83edf0edd0cc8bf5d"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:6d0706d5d9436298c8d619a1bb5be11a1f4ff9f4733797a393c6a706568de110"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:95bd111583c3bf20656393c2a056a457b0cf08c76c0ab27cfcaedf92f707e8a9"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:90a2350ddae3d9fb7b2e35e3b672b64854edae497fda8d7d4d798679c8280fed"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8bc830ac60b73a4cab24d1b1fdd8b044f25fe02e0af63a92cd96c43a51808c96"}, + {file = "pyobjc-framework-ApplicationServices-10.2.tar.gz", hash = "sha256:f83d6ed3320afb6648be6defafe0f05bac00d0281fc84ee4766ff977309b659f"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2aebfed888f9bcb4f11d93f9ef9a76d561e92848dcb6011da5d5e9d3593371be"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:edfd3153e64ee9573bcff7ccaa1fbbbd6964658f187464c461ad34f24552bc85"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d2c89b246c19a041221ff36e9121c92e86a4422016f809a40f5ce3d647882d9"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ee1e69947f31aad5fdec44921ce37f7f921faf50a0ceb27ed40b6d54f4b15d0e"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:101f5b09d71e55bd39e6e91f0787433805d422622336b72fde969a7c54528045"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a3ef00c9aea09c5ef5840b8749d0753249869bc30e124145b763cd0b4b81155"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreText = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreText = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-apptrackingtransparency" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AppTrackingTransparency on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AppTrackingTransparency-10.1.tar.gz", hash = "sha256:7d75a1d2c07b4d60e79c014b509f7a217b8e43ffb856b05aac5e12dfb03aa662"}, - {file = "pyobjc_framework_AppTrackingTransparency-10.1-py2.py3-none-any.whl", hash = "sha256:5dee7e163a6b325315410ca4929f1e07162403fc0f62d7d6a8dd504b544e1626"}, + {file = "pyobjc-framework-AppTrackingTransparency-10.2.tar.gz", hash = "sha256:2eb7276fc70c676562e33c3f7b2fe254175236f968516c63cc8507f325ac56db"}, + {file = "pyobjc_framework_AppTrackingTransparency-10.2-py2.py3-none-any.whl", hash = "sha256:de140b6b6ca1df928d13d986b093f19b8be0c9ab7c42f4121bdbf58f5c69df48"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-audiovideobridging" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AudioVideoBridging on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AudioVideoBridging-10.1.tar.gz", hash = "sha256:73d049a9d203541c12a672af37676c8dddf68217a3e9212510544cb457e77db0"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:574ead9349db4d37ec6db865cf71d8fdf74d5b4d4b577aa5c56c77a5c17f4fff"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e9ea894545e5ed1fa9b772dcea876bdb16dac9300e021a81f8b92ec8ed876efb"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:be025276db7bf431361f908c45af631c5c97a138069127ca43e679640fd2b935"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a8d470904288e9ea7a9fb758cb704cbbebaec941c1e11d358c5260f117cbcad6"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a4ad2cb237ffaa3868eed2ed8869488cb44a8a85a63b2dfe6421be2cb5cbde9e"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:41e9ed25b14b30e5eb488a8278fd86cb0973a5677698b534a18c4917b7ec9f9d"}, + {file = "pyobjc-framework-AudioVideoBridging-10.2.tar.gz", hash = "sha256:94d77284aae3a151124aa170074c2902537f540debb076376d49f5ee54fb9ce1"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:180e0d1862ba7748a8e4dff0bfeb5dc162bc4d7b0c0888a333f11dbf2569af74"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1d68f51143e8da14940ea54edd1236e5cd229dcbc83350551945df285b482704"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e0bd4ed2f8a16795b1b46ea9bed746995044f2cd6afb808018ac9c1549dc60b4"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2300d1c9ac22cfa8ef80a86dcdf3bc0be1cfa26a61c560f976fbcd0abfb4f13c"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a5d48b8192385ef2e0bea47c7b65ca1e0d06d1bdc4a7da59f3d1df3932c5f11c"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3883a0f76187a120ad1478f674be245d2949d1bae436d697786ad4086d878b18"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-authenticationservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AuthenticationServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AuthenticationServices-10.1.tar.gz", hash = "sha256:2d686019564f18390ac16d3b225c6c8fead03d929e8cee16942fc532599e15be"}, - {file = "pyobjc_framework_AuthenticationServices-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:364b4f94171c78d5da9172fdf30ef71958da010d923f6fc8f673f8d2e3c8e9ef"}, - {file = "pyobjc_framework_AuthenticationServices-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:09636bd6614d440e0475ba05beba42aa79a73c4fe310e9e79dea4821e57685ae"}, - {file = "pyobjc_framework_AuthenticationServices-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:dd03dc0c4ad5c40a688ceca813b5c05ae99b72e6201a5a700d1d2722eee8fba3"}, + {file = "pyobjc-framework-AuthenticationServices-10.2.tar.gz", hash = "sha256:1be0f05458c4ebfc3e018cb59b4a8bd9022c42b18fea449b0fbf5def0b5f7ef7"}, + {file = "pyobjc_framework_AuthenticationServices-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c797abcd8fb1d9f0f48849093fcbf480814256fca9f1a835445f551a369541e2"}, + {file = "pyobjc_framework_AuthenticationServices-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cf172a06ffab3faa98a95041ce5205ec6c516b59513390d48cfafe17ff4add08"}, + {file = "pyobjc_framework_AuthenticationServices-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3d6b81342caa28dbdc44c3f32820958e0b3865bd3e5bac7ba5ce9efc293e0d75"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-automaticassessmentconfiguration" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AutomaticAssessmentConfiguration on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AutomaticAssessmentConfiguration-10.1.tar.gz", hash = "sha256:c8f32f5586f7d7f9fd12343714c7439a1dfad5b5393f403aee440b5f91ef9f7d"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf009cddaa8d62eedaeb4878cc7acab80f4e9bb0bd83a5dff79590bab08b81ce"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c0ea6fa98e07a9cbcd90b7482022be5e1dc99e3170dcf2d4937ab17c5c2879dd"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4d47b95c515781fa5553443f38782f5e9b1aa7c1938449bcbb2377776441c54c"}, + {file = "pyobjc-framework-AutomaticAssessmentConfiguration-10.2.tar.gz", hash = "sha256:ead3f75200ad74dd013b4a6372054b84b2adeacdac656ca31e763e42fb76cf7b"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f4a60e1f1dae0d8d9223cb09c945aeb5688c09b3dffa9c6e9457981b05902874"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1ca34d71b7def8bf4e820e0ee64cae0d732309c6ddc126699a5bbd0c5719dc48"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:cb3242e2943768e02208c13b4eef47068f0e1ff8ad5572fabfaef7964737daaa"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-automator" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Automator on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Automator-10.1.tar.gz", hash = "sha256:0e95fc90a2930d108d38b61b4365f3678edd5aa25d26598fe39924c890813e80"}, - {file = "pyobjc_framework_Automator-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5c46ca5a97f6193432ad5195f6dfc261d66f70aea8371aa04f5c0ef85eb959f9"}, - {file = "pyobjc_framework_Automator-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e16540ca8f432de665997566e1cf1b43e8c7bea90a3460ab0aaccdb51bdac13c"}, - {file = "pyobjc_framework_Automator-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0a8b26890e1b0728c7150cd81dfb7c3d091752e71550a5a8db27c703915b7f40"}, + {file = "pyobjc-framework-Automator-10.2.tar.gz", hash = "sha256:fb753e5bd40bfe720fa9e60e2ea5a1777b4c92082ffeba42b4055cdd56cb022d"}, + {file = "pyobjc_framework_Automator-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0034f9e64c3e77b8e1adc54170868954af67b50457b768982de705d8cd170792"}, + {file = "pyobjc_framework_Automator-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e3b66af8ecd2effca8d51b512518137173b026ab13c30dbdac3d0d7ee059fc48"}, + {file = "pyobjc_framework_Automator-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d7f26be322fee0476125bfb2658a08db81b705ce0e8880e91c627562419a9821"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-avfoundation" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AVFoundation on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AVFoundation-10.1.tar.gz", hash = "sha256:07e065c6904fbd6afc434a79888461cdd4097b4153dd592dcbe9c8bef01ee701"}, - {file = "pyobjc_framework_AVFoundation-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3475f2a5c18cab80a23266470bc7014a88c8e1e8894e96f9f75e960b82679723"}, - {file = "pyobjc_framework_AVFoundation-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fad5c9190d633f51193a62c4354f2fb7be3511c31a0c58f17e351bb30bfadad3"}, - {file = "pyobjc_framework_AVFoundation-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:6ee76be15a6ad7caf9db71c682fb677d29df6c1bb2972ed2f21283f1b3e99f45"}, + {file = "pyobjc-framework-AVFoundation-10.2.tar.gz", hash = "sha256:4d394014f2477c0c6a596dbb01ef5d92944058d0e0d954ce6121a676ae9395ce"}, + {file = "pyobjc_framework_AVFoundation-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5f20c11a8870d7d58f0e4f20f918e45e922520aa5c9dbee61dc59ca4bc4bd26d"}, + {file = "pyobjc_framework_AVFoundation-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:283355d1f96c184e5f5f479870eb3bf510747307697616737bbc5d224af3abcb"}, + {file = "pyobjc_framework_AVFoundation-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a63a4e26c088023b0b1cb29d7da2c2246aa8eca2b56767fe1cc36a18c6fb650b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreAudio = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreAudio = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-avkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AVKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AVKit-10.1.tar.gz", hash = "sha256:15779995d4bb3b231a09d9032cf42e8f2681e4271ee677076a08c60a1b45fac7"}, - {file = "pyobjc_framework_AVKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e73da23397f0d9397a5f78223b06a49873d11cce71f06d486316a006220b587"}, - {file = "pyobjc_framework_AVKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2ea71aa0c9230c37da6dab710b237ea67ea16a5ed2cd5f6123a562c8c6b6fa20"}, - {file = "pyobjc_framework_AVKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3c00b4448d0480e92d7a0dfe62d92d42554ddb45c7183c256931e47dafca1dce"}, + {file = "pyobjc-framework-AVKit-10.2.tar.gz", hash = "sha256:6497a5109a29235a7fd8bddcb6d79bd495ccd9373b41e84ca3f012a642e5b880"}, + {file = "pyobjc_framework_AVKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:480766be9da6bb1a6272a4f13f6a327ec952fe1cd41eb0e7c3a07abb07a3491f"}, + {file = "pyobjc_framework_AVKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c9cfdc9ef8f7c9abe53841e8e548b2671f0a425ce9e0e4961314f5d080401e68"}, + {file = "pyobjc_framework_AVKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ff811fc88fb9d676a4892adea21a1a82384777af53153c74bb829501721f3374"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-avrouting" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AVRouting on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AVRouting-10.1.tar.gz", hash = "sha256:148fc29d0d5e73fb23ed64edede3f74d902ec41b7a7869435816a7a1b37aa038"}, - {file = "pyobjc_framework_AVRouting-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2a2d6524ac870a0b022beb33f0a9ec8870dfb62524d778b7cb54b7946705a3ac"}, - {file = "pyobjc_framework_AVRouting-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:643412674490719dc05c3e4c010e464d50b51e834428e97739510f513ecc008d"}, - {file = "pyobjc_framework_AVRouting-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:103e99db20099331afe637d4bcc39ec7c5d8fe3edefa2dd0a865d6f5d15b0f65"}, + {file = "pyobjc-framework-AVRouting-10.2.tar.gz", hash = "sha256:133d646cf36cfa329c2b3a060c7b81368a95bfbb24f30e2bae2804be65b93ec9"}, + {file = "pyobjc_framework_AVRouting-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1f72c23e92981311e218a04f3cfcd0ef4c3a93058af6e0042c7cf835320300cc"}, + {file = "pyobjc_framework_AVRouting-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a91d65fda866e64bd249c0f11017d0d9f569b3e9d6d159c38e64e1b144a04d85"}, + {file = "pyobjc_framework_AVRouting-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3357ed6b9bf583ded7eee4531ac1854c6e1cdfe91a278f2dec18593d2381d488"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-backgroundassets" -version = "10.1" +version = "10.2" description = "Wrappers for the framework BackgroundAssets on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-BackgroundAssets-10.1.tar.gz", hash = "sha256:0a770f77f7fe6d715cf02e95a5efb70895ee19736cf0fa0ecbb3c320f4fa3430"}, - {file = "pyobjc_framework_BackgroundAssets-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:82bfc758b8c542e0b155a922e0dc901fdcd6b6a7574f4575725cfadb8d248825"}, - {file = "pyobjc_framework_BackgroundAssets-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a4f6e2dea9f2cb507e94e0c3c621e2e6af613770a8595ff17aedb34dc2fa56b4"}, - {file = "pyobjc_framework_BackgroundAssets-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4dfe00a649dd7c7aee0f25daf96c8c35438ed69ec324bcad81d5a87110759a72"}, + {file = "pyobjc-framework-BackgroundAssets-10.2.tar.gz", hash = "sha256:97ad7b0c693e406950c0c4af2edc9320eac9aef7fdf33274903f526b4682fcb7"}, + {file = "pyobjc_framework_BackgroundAssets-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a71de388248ed05eda85abc440dbe3f04ff39567745785df25b1d5316b2aa9f1"}, + {file = "pyobjc_framework_BackgroundAssets-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:476a7fc80a4083405c82b0bb0d8551cccd10f998a2a9d35c8eab76c82915d25e"}, + {file = "pyobjc_framework_BackgroundAssets-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:9c8721ea4695f1cd5f1f7d6b2a70b3e2b9cefe484289b7427cfda5d23b48e7b6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" + +[[package]] +name = "pyobjc-framework-browserenginekit" +version = "10.2" +description = "Wrappers for the framework BrowserEngineKit on macOS" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-BrowserEngineKit-10.2.tar.gz", hash = "sha256:a47648e62d3482d39179ffe51543322817dd7a639cef9dcd555dfcc7d6a6497f"}, + {file = "pyobjc_framework_BrowserEngineKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:98563b461e2c96ad387abe1885e91f7bc0686868b39c273774e087bbf1b500ac"}, + {file = "pyobjc_framework_BrowserEngineKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5eb3d8f9e198aaeb01a4a85aa739624942c39b626400d232271d632f1ee30e09"}, + {file = "pyobjc_framework_BrowserEngineKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:6824c528e10da1b560d83f55e258232b8916d49d12a578dd00d3ec4e702d3011"}, +] + +[package.dependencies] +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreAudio = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-businesschat" -version = "10.1" +version = "10.2" description = "Wrappers for the framework BusinessChat on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-BusinessChat-10.1.tar.gz", hash = "sha256:f361139464532d84bb29d520f2b045a4a63e960d07a0dd574c6c15dd67f890ed"}, - {file = "pyobjc_framework_BusinessChat-10.1-py2.py3-none-any.whl", hash = "sha256:60df5660a9a90a461c68a6cb49326c25e81f3412e951e84be7ccc98b62eb5404"}, + {file = "pyobjc-framework-BusinessChat-10.2.tar.gz", hash = "sha256:44ecf240da59ce36f2d75d1ed9f58e05f2df46b9b1989ee0cc184a46c779fb4e"}, + {file = "pyobjc_framework_BusinessChat-10.2-py2.py3-none-any.whl", hash = "sha256:aa51d4d0b3b3eb050242e0d0e48b29e020ccfeb82a39c0d3a2289512734f53e4"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-calendarstore" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CalendarStore on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CalendarStore-10.1.tar.gz", hash = "sha256:6274d7eb94353813aefca236276c5b6dc6445a48fff39e832478db17c47e34c1"}, - {file = "pyobjc_framework_CalendarStore-10.1-py2.py3-none-any.whl", hash = "sha256:cbd8ec495d9b13cc986b018d8740e25a4e18a25732ee19de1311f0c30ab53120"}, + {file = "pyobjc-framework-CalendarStore-10.2.tar.gz", hash = "sha256:131c14faa227a251d7254afd9c00fef203361dd76224d9700ba5e99682e191d8"}, + {file = "pyobjc_framework_CalendarStore-10.2-py2.py3-none-any.whl", hash = "sha256:e289236df651953a41be8ee4ce548f477a6ab8e90aa8bbd73f46ad29032ff13f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-callkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CallKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CallKit-10.1.tar.gz", hash = "sha256:9a5165f35e31d98b7d1539c9b979cabd01064926903389fc558cbc71bf86ddd4"}, - {file = "pyobjc_framework_CallKit-10.1-py2.py3-none-any.whl", hash = "sha256:f82e791b2dbae4adfcc596949975573309a0127ba02d4c35743501f6665ec610"}, + {file = "pyobjc-framework-CallKit-10.2.tar.gz", hash = "sha256:45cd81a5b6b0107ba56e26d8e54e852b8a15b3487b7291b5818e10e94beee6d0"}, + {file = "pyobjc_framework_CallKit-10.2-py2.py3-none-any.whl", hash = "sha256:f3f26c877743a340718e0647ccee4604f9d87aa8ad5c3268c794d94f6f9246ee"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-cfnetwork" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CFNetwork on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CFNetwork-10.1.tar.gz", hash = "sha256:898fa3ec863b9d72b3262135e1b0a24bc73879b65c69a2a7b213fe840e2a11de"}, - {file = "pyobjc_framework_CFNetwork-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:82f6fa09d67e25ef1cd92596b25328a6c295341c40a572e899c9e858ce949a1d"}, - {file = "pyobjc_framework_CFNetwork-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c598f18e50480a92df3c69c22cd1752844eb487176ada5e1c1b80670fb05e4eb"}, - {file = "pyobjc_framework_CFNetwork-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:90697ae10c7fb83d81f25d3800f33846329121bedefd495b45d47a0f0d996a73"}, + {file = "pyobjc-framework-CFNetwork-10.2.tar.gz", hash = "sha256:18ebd22c645b5b77c1df6d973a91cc035ddd4666346912b2a0c847803c23f4d4"}, + {file = "pyobjc_framework_CFNetwork-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6050428c99505e09db1fe5d0eafaaca4ead407ffaaab8a5c1e5ec09e7ad31053"}, + {file = "pyobjc_framework_CFNetwork-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f7a305d7f94a11dd32d3ab9159cde1f9655f107282373841668624b124935af8"}, + {file = "pyobjc_framework_CFNetwork-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:41a211b934afebbc9dd9ce76cb5c2862244a699a41badb660ab46c198414c4cb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-cinematic" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Cinematic on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Cinematic-10.1.tar.gz", hash = "sha256:a1210338de5a739b00304555ce15b70b36deebdbd3c6940f8e9531253219edce"}, - {file = "pyobjc_framework_Cinematic-10.1-py2.py3-none-any.whl", hash = "sha256:73408d3bfd9b08389eb6787b0b5df4fe9c351c936fa9b1f95a9c723951e9a988"}, + {file = "pyobjc-framework-Cinematic-10.2.tar.gz", hash = "sha256:514effad241be5c8df4ef870683fa1387909970a7f7d8bbf343c06e840931854"}, + {file = "pyobjc_framework_Cinematic-10.2-py2.py3-none-any.whl", hash = "sha256:962af237b284605ecd30d584d2d7fb75fda40e429327578de5d651644d0316da"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-AVFoundation = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" -pyobjc-framework-Metal = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-AVFoundation = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Metal = ">=10.2" [[package]] name = "pyobjc-framework-classkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ClassKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ClassKit-10.1.tar.gz", hash = "sha256:baf79b1296662525d0fa486d4488720cceebe63595765cfeade61aeb78a4216f"}, - {file = "pyobjc_framework_ClassKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:502949573701363947bf64f7ac9dedab7247037c0e53c7db080c871f3ca52aa8"}, - {file = "pyobjc_framework_ClassKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e6d7c2e8b87b285ce21582c602be23960349e23111c8d02bcc3b9192090b437e"}, - {file = "pyobjc_framework_ClassKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5ac34c1d491e15f81df83b406a281d3176fff8476e053bb8476cad7e4fa102e7"}, + {file = "pyobjc-framework-ClassKit-10.2.tar.gz", hash = "sha256:252e47e3284491e48000d4d87948b31e396aaa78eaf2447ba03a71f4b97cb989"}, + {file = "pyobjc_framework_ClassKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9d5f69e7bba660ca989e699d4b38a93db7ee3f8cff45e67a23fb852ac3caab49"}, + {file = "pyobjc_framework_ClassKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e1acc7231ef030125eaf7302f324909c56ba1c58ff91f4e160b6632938db64df"}, + {file = "pyobjc_framework_ClassKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:87158ca3d7cd78c50af353c23f32e1e8eb0adec47dc15fa4e4d777017d308b80"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-cloudkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CloudKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CloudKit-10.1.tar.gz", hash = "sha256:8f0109f29ac6554c22cc21c06f6fd0a23e3e49556b0ab2532eb1d69ac2a7cd96"}, - {file = "pyobjc_framework_CloudKit-10.1-py2.py3-none-any.whl", hash = "sha256:ffdedaaa8384a64df6b30d45c834dffa002a63b8e74578012b6261780f31c28c"}, + {file = "pyobjc-framework-CloudKit-10.2.tar.gz", hash = "sha256:497a0dda5f5a9aafc795e1941ef3e3662c2f3240096ce68893d0d5de6d54a474"}, + {file = "pyobjc_framework_CloudKit-10.2-py2.py3-none-any.whl", hash = "sha256:32bd77c2b9109113b2321feb6ed6d754af99df6569d953371f1547123be80467"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Accounts = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreData = ">=10.1" -pyobjc-framework-CoreLocation = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Accounts = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreData = ">=10.2" +pyobjc-framework-CoreLocation = ">=10.2" [[package]] name = "pyobjc-framework-cocoa" -version = "10.1" +version = "10.2" description = "Wrappers for the Cocoa frameworks on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Cocoa-10.1.tar.gz", hash = "sha256:8faaf1292a112e488b777d0c19862d993f3f384f3927dc6eca0d8d2221906a14"}, - {file = "pyobjc_framework_Cocoa-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2e82c2e20b89811d92a7e6e487b6980f360b7c142e2576e90f0e7569caf8202b"}, - {file = "pyobjc_framework_Cocoa-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0860a9beb7e5c72a1f575679a6d1428a398fa19ad710fb116df899972912e304"}, - {file = "pyobjc_framework_Cocoa-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:34b791ea740e1afce211f19334e45469fea9a48d8fce5072e146199fd19ff49f"}, - {file = "pyobjc_framework_Cocoa-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1398c1a9bebad1a0f2549980e20f4aade00c341b9bac56b4493095a65917d34a"}, - {file = "pyobjc_framework_Cocoa-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:22be21226e223d26c9e77645564225787f2b12a750dd17c7ad99c36f428eda14"}, - {file = "pyobjc_framework_Cocoa-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0280561f4fb98a864bd23f2c480d907b0edbffe1048654f5dfab160cea8198e6"}, + {file = "pyobjc-framework-Cocoa-10.2.tar.gz", hash = "sha256:6383141379636b13855dca1b39c032752862b829f93a49d7ddb35046abfdc035"}, + {file = "pyobjc_framework_Cocoa-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9227b4f271fda2250f5a88cbc686ff30ae02c0f923bb7854bb47972397496b2"}, + {file = "pyobjc_framework_Cocoa-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6a6042b7703bdc33b7491959c715c1e810a3f8c7a560c94b36e00ef321480797"}, + {file = "pyobjc_framework_Cocoa-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:18886d5013cd7dc7ecd6e0df5134c767569b5247fc10a5e293c72ee3937b217b"}, + {file = "pyobjc_framework_Cocoa-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ecf01400ee698d2e0ff4c907bcf9608d9d710e97203fbb97b37d208507a9362"}, + {file = "pyobjc_framework_Cocoa-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:0def036a7b24e3ae37a244c77bec96b7c9c8384bf6bb4d33369f0a0c8807a70d"}, + {file = "pyobjc_framework_Cocoa-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f47ecc393bc1019c4b47e8653207188df784ac006ad54d8c2eb528906ff7013"}, ] [package.dependencies] -pyobjc-core = ">=10.1" +pyobjc-core = ">=10.2" [[package]] name = "pyobjc-framework-collaboration" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Collaboration on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Collaboration-10.1.tar.gz", hash = "sha256:e85c6bd8b74b1707f66847ed71de077565d5e9fe6e7ed4db3cdafc2408723da5"}, - {file = "pyobjc_framework_Collaboration-10.1-py2.py3-none-any.whl", hash = "sha256:9a2137aaed1ad71bf6c92c7c275253c2dc6f0062af9d2d8a1590d00bf30c1ecb"}, + {file = "pyobjc-framework-Collaboration-10.2.tar.gz", hash = "sha256:32e3a7fe8447f38fd3be5ea1fe9c1e52efef3889f4bd5781dffa3c5fa044fe20"}, + {file = "pyobjc_framework_Collaboration-10.2-py2.py3-none-any.whl", hash = "sha256:239a0505d702d49b5c3f0a3524531f9be63d599ea2cd3cbb5953147b34dbdcc1"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-colorsync" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ColorSync on Mac OS X" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ColorSync-10.1.tar.gz", hash = "sha256:2c6ee65dfca6bc41f0e9dffaf1adebc78a7fb5cee63740b092ade226710c1c32"}, - {file = "pyobjc_framework_ColorSync-10.1-py2.py3-none-any.whl", hash = "sha256:58596365b270453c3ce10bb168383c615321fa377a983eba3021f664c98f852a"}, + {file = "pyobjc-framework-ColorSync-10.2.tar.gz", hash = "sha256:108105c281b375dff7d226fcc3f860621a4880dcbab711660b74dc458a506231"}, + {file = "pyobjc_framework_ColorSync-10.2-py2.py3-none-any.whl", hash = "sha256:2fcc68eb6fa6300d34b95b1da1cc8d244f6999aed4b83099a3323d32e0349f98"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-contacts" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Contacts on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Contacts-10.1.tar.gz", hash = "sha256:949d61ff7f4f07956949f8945ad627ffa89cce3d10af9442591e519791a25cc4"}, - {file = "pyobjc_framework_Contacts-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b10c068b5a79fcb0240ea4cd1048162277f36567a84333a0bd0168f851168f99"}, - {file = "pyobjc_framework_Contacts-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a3bb6fb24deae41a0879ac321e6401b43e5fbedba0a75ced67b2048a4852c3ff"}, - {file = "pyobjc_framework_Contacts-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:16556f06202b1b4fd9da8e3186b6140b582a4032437cdab2f5f8b32b24f3e3ed"}, + {file = "pyobjc-framework-Contacts-10.2.tar.gz", hash = "sha256:5a9de975f41c7dac3c219b4c60cd08b8ba385685db7997c8622f19e0a43e6857"}, + {file = "pyobjc_framework_Contacts-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b5ff801009c9346927b7efc82434ac14a0c2798bd018daf1e7d8aad74484b490"}, + {file = "pyobjc_framework_Contacts-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:52dd5e4b4574b2438420a56867ca2069e29414087dc27ad03e7c46d536f1e641"}, + {file = "pyobjc_framework_Contacts-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8a387c47e90c74a3e6f4bc81187f1fde18a020bb1d08067497a0c35f462299f9"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-contactsui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ContactsUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ContactsUI-10.1.tar.gz", hash = "sha256:0b97e4c5599ab269f53597dd8f47a45599434c833e72185d5d3a257413a6faf4"}, - {file = "pyobjc_framework_ContactsUI-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5c70ff6b07e48331f25138bc159f7215d9b5d6825da844fec26ba403aad53f52"}, - {file = "pyobjc_framework_ContactsUI-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:876c1280fcb13c89a5fd89e7c3ace04bfd3c3b418cb64b6579dcbee1e9156377"}, - {file = "pyobjc_framework_ContactsUI-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a5ee22f1e893eb79633ed425972e50c5ec9b0a1d20cf6fbf21bf68d1bbfec436"}, + {file = "pyobjc-framework-ContactsUI-10.2.tar.gz", hash = "sha256:2dd5f1993c36caf13527de0890c6c49c08a339e58bc3b3fa303d5a04b672b418"}, + {file = "pyobjc_framework_ContactsUI-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c8af8b52853ba2a09664dad40255613f01089c9bc77e5316b29d27c65603863c"}, + {file = "pyobjc_framework_ContactsUI-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:47a8fd0aa5cb680b0ba0f1fdd37f56525729e5ed998df2a312e9f81feea8fbb0"}, + {file = "pyobjc_framework_ContactsUI-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0575650e6e5985950bcd424da0b50e981ea5e6819d1c6fbccb075585e424e121"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Contacts = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Contacts = ">=10.2" [[package]] name = "pyobjc-framework-coreaudio" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreAudio on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreAudio-10.1.tar.gz", hash = "sha256:713ca82fc363ea6cf373d2db0b183f39058bcadceb8229d9e8839b783104f8e2"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9348f613a1f35bbeb7d1d899e2ee3876881cd0433e59f584f30ba96e179d960a"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0192dddd2f99db51cdb0959e80f29f9f531ba8bd0421e06ae9212f34a05c48a"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b1a4612ce87dfcca3c939ec5885d4578955f5ff4d017f95d4459d5fb3bdc8970"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:678d2b916850daf7fe38a95af0f73b4dd39b463ea87ec36fe287d81d050c31f7"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:807fa54de91d53ff64537e50aa123c5b262952c57eea6928ecb3d526078229c2"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:db149cabae1b91ea437536e1741b6e7573a71ec2aae4274318172936a5ac7190"}, + {file = "pyobjc-framework-CoreAudio-10.2.tar.gz", hash = "sha256:5e97ae7a65be85aee83aef004b31146c5fbf28325d870362959f7312b303fb67"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:65ce01a9963692d9cf94aef36d8e342eb2e75b855a2f362f9cbcef9f3782a690"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:22b5017ed340f9d3137baacb5f0c2354266017a4ed21890a795a0667788fc0cd"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32608ce881b5e6a7cb332c2732762fa93829ac495c5344c33e8e8b72a2431b23"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5182342257be1cdaa64bc38045cd81aca5b60bb86a9444194adbff58706ce91"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:94ec138f95801019ec7f3e7010ad6f2c575aea69d2428aa9f5b159bf0355034a"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:04ad3dddff27cb65d31a432aa1aa6290ff5d82a54bc5825da44ed7d80bcdb925"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coreaudiokit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreAudioKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreAudioKit-10.1.tar.gz", hash = "sha256:85472aaee6360940f679a5e068b5a21160f8cee676d9fd0937b43b39c447d78e"}, - {file = "pyobjc_framework_CoreAudioKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bde3012be239328fdc928d0ff9da9f4627e6ab4832e05faaa0c0ea4e11078d14"}, - {file = "pyobjc_framework_CoreAudioKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:43e9643ce390e36c64dca98a1bbcb0c2c282c527d31eb52aa2b7a18e2f7c97d1"}, - {file = "pyobjc_framework_CoreAudioKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:65bb2c5870b1739703fce056cdc4daddcdcf644c1ddcb590e4b88b5ed2fc45a4"}, + {file = "pyobjc-framework-CoreAudioKit-10.2.tar.gz", hash = "sha256:38dfafba8eddb655aac352a967c0e713a90e10a4dd40d4ea1abbb4db01c5d33f"}, + {file = "pyobjc_framework_CoreAudioKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:aede4cd58a67008b014757178a01b984ee585cc055133a9eb8f10b310d764de8"}, + {file = "pyobjc_framework_CoreAudioKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4fb992025df80b8799fbd1605b0dd4b4b3f6b467c375a16da1b286f6ac2e2854"}, + {file = "pyobjc_framework_CoreAudioKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:28f17803e5eaf35a73caa327cbd0c857efbfdea57307637a60ff8309834b7a95"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreAudio = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreAudio = ">=10.2" [[package]] name = "pyobjc-framework-corebluetooth" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreBluetooth on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreBluetooth-10.1.tar.gz", hash = "sha256:81f50fcd9ee24332f1ad85798d489cfc05be739fcc1389caa6d682e034215efd"}, - {file = "pyobjc_framework_CoreBluetooth-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:145540ae4f35992774e559840a778554f3d3d29b359ff6d7f450c954cacccf0f"}, - {file = "pyobjc_framework_CoreBluetooth-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1ef97e8479895048fa96d5afa2f88139a8432158d6b0fb80ad1db03666c1d4ad"}, - {file = "pyobjc_framework_CoreBluetooth-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e8bce7f425caa55a87b7519eff03eaa7d08ff5e5e09e9318706d3f5087b63b08"}, + {file = "pyobjc-framework-CoreBluetooth-10.2.tar.gz", hash = "sha256:fb69d2c61082935b2b12827c1ba4bb22146eb3d251695fa1d58bbd5835260729"}, + {file = "pyobjc_framework_CoreBluetooth-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6e118f08ae08289195841e0066389632206b68a8377ac384b30ac0c7e262b779"}, + {file = "pyobjc_framework_CoreBluetooth-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:411de4f937264b5e2935be25b78362c58118e2ab9f6a7af4d4d005813c458354"}, + {file = "pyobjc_framework_CoreBluetooth-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:81da4426a492089f9dd9ca50814766101f97574675782f7be7ce1a63197d497a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coredata" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreData on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreData-10.1.tar.gz", hash = "sha256:01dfbf2bfdaa4e0aa3e636025dc868ddb62aedf710890e6af94106278f1659aa"}, - {file = "pyobjc_framework_CoreData-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ff280c893c6d472168696fa0732690809af2694167081b5db87395c25cdf6e27"}, - {file = "pyobjc_framework_CoreData-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c51d8e4723ed113684d0ddd4240900a937682859a9e75d830f35783098f04e95"}, - {file = "pyobjc_framework_CoreData-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a8a8d509ff17f65f4cec7fb35d77a21937f2c8232b5ce357e783cbf971616ad9"}, + {file = "pyobjc-framework-CoreData-10.2.tar.gz", hash = "sha256:0260bbf8f4ce6071749686fdc079618b3bd2b07976db7db4c864ecc62316bb3b"}, + {file = "pyobjc_framework_CoreData-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:41a22fe04544ba35e82232d89ad751b452c2314f07df6c72129a5ad6c3e4cbec"}, + {file = "pyobjc_framework_CoreData-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c29c6dce8ce155e15e960b9c542618516923c3ef55a50bf98ec95e60afe0aa3d"}, + {file = "pyobjc_framework_CoreData-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:cd7c419d9067ce9a9f83f6abd3c072caeb3aa20091f779881375067f7c1c417b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-corehaptics" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreHaptics on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreHaptics-10.1.tar.gz", hash = "sha256:87c1913078963b2d7dba231839566f831f47499c4c029f8beaa46209630e75e1"}, - {file = "pyobjc_framework_CoreHaptics-10.1-py2.py3-none-any.whl", hash = "sha256:ae6143c041b0846a58199826c0094cfb2fb9080f139c93e6b63f51a6b2766552"}, + {file = "pyobjc-framework-CoreHaptics-10.2.tar.gz", hash = "sha256:7b98bd70b63506aef63401a6e03f67391d7582f39fbe8aa7bb7258dd66ab0e55"}, + {file = "pyobjc_framework_CoreHaptics-10.2-py2.py3-none-any.whl", hash = "sha256:c67fae4b543fc070cece622cfe5803796016a36d1020812428e0f22e5f5674aa"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-corelocation" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreLocation on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreLocation-10.1.tar.gz", hash = "sha256:f43637443c4386233c52b0af3131a545968229543f7b0050764298cac1604fd8"}, - {file = "pyobjc_framework_CoreLocation-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:66bad050f37966526017763e5a8c424e257a0974cfbe0c8875fa149bdc1d41c2"}, - {file = "pyobjc_framework_CoreLocation-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:eaa4ff8e3cc388f045a6c15f3ee5a950860164f6fb5a13aed29e37b6cb481607"}, - {file = "pyobjc_framework_CoreLocation-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f4dcf52c4934e99b20056f2ebc8398c9f8f8a61ceac0e5de1e2bb719b0f844c2"}, + {file = "pyobjc-framework-CoreLocation-10.2.tar.gz", hash = "sha256:59497cc210023479e03191495c880e61fb6f44ad6c435ed1c8dd8def39f3aada"}, + {file = "pyobjc_framework_CoreLocation-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c2e02352a4dfbc090cebc9c0d3716470031e584d4d33f22d97307f04c23ef01f"}, + {file = "pyobjc_framework_CoreLocation-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f7eda101abb366be52d2fd85e15c79fdf0b9f64de9aab87dc0577653375595de"}, + {file = "pyobjc_framework_CoreLocation-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8f67af17b8267aa2a066684b518e66bbe7fee9651b779e372d6286d65914df82"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coremedia" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreMedia on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreMedia-10.1.tar.gz", hash = "sha256:8210d03ff9533d5cef3244515c1aa4bb54abaeb93dfc20be6d87e3a6b3377b36"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7bd43d614f0427732ce1690e0640f1d7a40a73dd90142ac08c5dab2ba0d49e8d"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5c1f849ce7de96da6fc81dc8975ecf04444c7179129976b3fe064d9f85a91082"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ab9e44e0d3ce584a119c3b3d539de9d228b635cb98bf60f1e1a221f8aa20681e"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fffc355c038dfaa83f7d7c01497fb20590f9090421564b275cd8fd12e8e10e8e"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:e4e9221c5a4c0b7ff7484eb8a21e06be0cafc1c95b9bcc27a57c139b64692dbe"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b61e986b686d4e928208c26a4a2163210e101fcec56eeb61d62b969802eaa8ca"}, + {file = "pyobjc-framework-CoreMedia-10.2.tar.gz", hash = "sha256:d726d86636217eaa135e5626d05c7eb0f9b4529ce1ed504e08069fe1e0421483"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0c91037fd4f9995021be9e849f1d7ac74579291d0130ad6898e3cb1940f870e1"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:63ed4f6dbe33e5f3d5293a78674329cb516a256df34ef92e7c1fefacdb5c32db"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7fa13166a14d384bb6442e5f635310dd075c2a4b3b3bd67ac63b1e2e1fd2d65e"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd7da9da1fad7168a63466d5c267dea8bce706808557baa960b6a931010dca48"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c48c7f0c3709a900cd11002018950a72626af39a096d1001bb9a871574db794f"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d3e86d03c6d7909058b8f1b8e54d9b5d93679049c7980eb0a5d930a5a63410e0"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coremediaio" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreMediaIO on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreMediaIO-10.1.tar.gz", hash = "sha256:c07177c58c88b6de229f88f3b88b4d97bfc59d2406f751b5aff6bed5cac4d938"}, - {file = "pyobjc_framework_CoreMediaIO-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d44781e21632f3af8eab86194b2fe32ce235b6c6a03ff87f09e0ba034a1e7a73"}, - {file = "pyobjc_framework_CoreMediaIO-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c97bd803a17204a2ec2d9f22c14176009067359efe80b9df69e8ec197783091c"}, - {file = "pyobjc_framework_CoreMediaIO-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d137b0eef1533af244c70ab02f1ed5716dcc8739b0ba6b6c703d36a61d9bab2e"}, + {file = "pyobjc-framework-CoreMediaIO-10.2.tar.gz", hash = "sha256:12f9fd93e610e61258f1acb023b868ed196e9444c69e38dfd314f8c256d07c9e"}, + {file = "pyobjc_framework_CoreMediaIO-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4ede4da59fa2a611b4a9d5a532e0c09731f448186af6cc957ab733b388f86d5b"}, + {file = "pyobjc_framework_CoreMediaIO-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:184854c2ebc3d12466ad39e640b5f3d2bdb3792d8675c83f499bb48b078d3d91"}, + {file = "pyobjc_framework_CoreMediaIO-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:aa9418277d16a1d5c0b576ad8a35f8e239d3461da60bb296df310090147331f7"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coremidi" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreMIDI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreMIDI-10.1.tar.gz", hash = "sha256:e2e407dcb9d5ed53e0a8ed4622429a56c9770c26e2e4455dcb76a6620a12eba6"}, - {file = "pyobjc_framework_CoreMIDI-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b632773bea0c943a1f733166aece7560f32237a42706124d1f001b10620c4bcc"}, - {file = "pyobjc_framework_CoreMIDI-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:065cf89ee58b01700780fbbed0c00e1c5f5f383ac3d54f31642ee6d59e3c03c2"}, - {file = "pyobjc_framework_CoreMIDI-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8984ad04837efc8bc7cbf1d48ff3433eb7fea1d298ed8b72344ec1641826df48"}, + {file = "pyobjc-framework-CoreMIDI-10.2.tar.gz", hash = "sha256:8168cb1e57e5dbc31648cd68d9afe3306cd2751de03275ef5f7f9b6483f17c07"}, + {file = "pyobjc_framework_CoreMIDI-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:809a79fbf384df94884dfddcab4dad3e68eba9e85591f7b55d24f4af2fb8db94"}, + {file = "pyobjc_framework_CoreMIDI-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a48176d5f49f9e893f5a7ac86f7cd7ee63b66dc7941ef74c04876f87a1ae3475"}, + {file = "pyobjc_framework_CoreMIDI-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:cce95647865c7f374d3c9cf853a3a8a44ae06fda6fa2e65fc7ad6450dc60e50f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coreml" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreML on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreML-10.1.tar.gz", hash = "sha256:4cda220d5ad5b677a95d4d29256b076b411b692b64219c2dcb81c702fc34d57d"}, - {file = "pyobjc_framework_CoreML-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:fb85e653a0f7984fff908890b7988d9d5ac42ff92b213cd9371bb255982ee787"}, - {file = "pyobjc_framework_CoreML-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a361d35c75e749a975330f7647084a58c2166f076ecc5573491542b96bc84c28"}, - {file = "pyobjc_framework_CoreML-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4c3b43da4afb279b02bbb6a57a3c5fb4d24ad6d48ef40c20efcda783e41077d2"}, + {file = "pyobjc-framework-CoreML-10.2.tar.gz", hash = "sha256:a1d7743a91160d096ccd3f5f5d824dafdd6b99d0c4342e8c18852333c9b3318e"}, + {file = "pyobjc_framework_CoreML-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ab99248b8ace0bebb11d15eb4094d8017093ebf76dadf828e324cacc9f1866f1"}, + {file = "pyobjc_framework_CoreML-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:074b81c0e0e4177d33b2da8267d377fb7842b47eb7b977bb07d674b9b05c32b5"}, + {file = "pyobjc_framework_CoreML-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:baedffd5ab34dc0294c2c30ad1b5bcff175957f51f107b1f9f8b20f80e15cc9c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coremotion" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreMotion on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreMotion-10.1.tar.gz", hash = "sha256:907a2f6da592f61d49f06559b34fc5addd8c0f2b85f9f277c5e4ea5d95247b67"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:630487c14e22c0c05ddc33a149db673d8a28a876b59a78ed672f1a4825ebf40e"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2219096ceb41aea91819df747c08059885f94ca14c66a078d3161ba49c1cb56e"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:de694971994df2791047c2a1039556ea54683fd09cdc30c23ee5891c63414232"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:81b138a672519ecbea8a2f2392a7f015f3d7caf150368f83b3b278cb60743e8c"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b6cbbee7d26ef1837e382566316cb5d5fae6bca10418437608ebc312f396f898"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9968b07199532b1c4ff56d1d6a6195e8ce8bc2beabbf55dc53193f473b3741f9"}, + {file = "pyobjc-framework-CoreMotion-10.2.tar.gz", hash = "sha256:1e1827f2f811ada123dd42809bc86f04a4c1ae3cec619ccf0f05a9387412bec1"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:804abc6b22db933e7fb7ba3e60b30f4c60e8921f8bb5790c3612375f7b4a6f03"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:76d5a2ed1cba375e3c423887bd93bbaab849c7a961156c5cead8e1429c26c24d"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c0a8022dca1404795e93cd7317bca9f8ad601f3ecec7bed71312d80adad296e4"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b727d5301ec386b8aa94de69a9257a412a4edbd69ca394d76b83d9f2bec6bc96"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7e4571a08475428a8171a237284036a990011f212497f141222d281fa7e2ca5c"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bef81c52af0d1be75b3bd7514d5f9ef7c6e868f385f0dd8c28ad62e5d3faeeb6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coreservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreServices-10.1.tar.gz", hash = "sha256:43d507f2b3d84a5aab808c3f67bf21fb6a7d1367d506e2e9877bf1cac9bad2eb"}, - {file = "pyobjc_framework_CoreServices-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:73162798c506f6d767e2684d7c739907c96a5547045d42e01bee47639130b848"}, - {file = "pyobjc_framework_CoreServices-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:eba7abba8f5ba194a5ef1ffeb5f9d3c0daa751e07ef0d3662e35e27e75a24d73"}, - {file = "pyobjc_framework_CoreServices-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:924bca5a67e9046e8c6146dbc1301fe22c2a1bd49bef92358fd6330ef19cfa65"}, + {file = "pyobjc-framework-CoreServices-10.2.tar.gz", hash = "sha256:90fa09e68e840fdd229b33354f4b2e55e9f95a221fcc30612f4bd92cdc530518"}, + {file = "pyobjc_framework_CoreServices-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2b0c6142490c7099c5be0a2fa10b1816e4280bc04ac4e5a4a9af17a9c2006482"}, + {file = "pyobjc_framework_CoreServices-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c2c05674d9d142abc62fcc8e39c8484bdcdfd3ad8a17f009b8aa7c631e227571"}, + {file = "pyobjc_framework_CoreServices-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f87ad202d896e596b31c98a9d0378b2e6d2e6732a2dfc7b82ceae4c70863364d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-FSEvents = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-FSEvents = ">=10.2" [[package]] name = "pyobjc-framework-corespotlight" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreSpotlight on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreSpotlight-10.1.tar.gz", hash = "sha256:b50e13d55d90b88800c2cc2955c000ea6b1de6481ff6e0092c7b7bf94fceea69"}, - {file = "pyobjc_framework_CoreSpotlight-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:421e18ded971c212fd3f2878658c209c81d1f8859eb62dd6a965abcb19a4ce5a"}, - {file = "pyobjc_framework_CoreSpotlight-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c775e0d42ee21f7d6b9374b01df1a0d4ece0b765e99c7011cb2ea74a2c2ef275"}, - {file = "pyobjc_framework_CoreSpotlight-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7dc11f607429e21c2aee18f950cdde141a414c874369dbb66920930802cfd0fa"}, + {file = "pyobjc-framework-CoreSpotlight-10.2.tar.gz", hash = "sha256:bc4ac490953db29f6a58bc6fca6f819f8a810d0bb15d5f067451b3a8cad1cb50"}, + {file = "pyobjc_framework_CoreSpotlight-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f69dc88ddfa116262009b15ac302b880aef2dad878bf472cbf574f4473f4b059"}, + {file = "pyobjc_framework_CoreSpotlight-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:09912188648e658a0f579bbfd2cf6765afb8e0f466ee666e24019cc9931b6bc5"}, + {file = "pyobjc_framework_CoreSpotlight-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:75ba49ee4bfdbf4df733bc8c508b4417f47c442a56b83ffe5527e76e1c5bad67"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coretext" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreText on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreText-10.1.tar.gz", hash = "sha256:b6a112e2ae8720be42af19e0fe9b866b43d7e9196726caa366d61d18294e6248"}, - {file = "pyobjc_framework_CoreText-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6ea2920c126a8a39e8a13b6de731b78b391300cec242812c9fbcf65a66ae40cf"}, - {file = "pyobjc_framework_CoreText-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:37b203d832dd82bd9566c72eea815eb89f00f128a4c9a2f352843914da4effec"}, - {file = "pyobjc_framework_CoreText-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:083700483b18f337b0c43bdfaafc43467846f8555075669d4962d460d9d6cd00"}, - {file = "pyobjc_framework_CoreText-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:59472cd1a33e83803fa62b3db20ac0e899f5ed706d22704ea81129d3f49ff0c7"}, - {file = "pyobjc_framework_CoreText-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:cc1a63ca2c6921768b1c794ce60e2a278e0177731aa4bf8f620fdde857e4835e"}, - {file = "pyobjc_framework_CoreText-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fbbdde4ce747bcad45c2aded36167ad00fead309a265d89ab22289c221038e57"}, + {file = "pyobjc-framework-CoreText-10.2.tar.gz", hash = "sha256:59ef8ca8d88bb53ce9980dda0b8094daa3e2dabe355847365ba965ff0b49f961"}, + {file = "pyobjc_framework_CoreText-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:44052f752f42b62d342fa8aced5d1b8928831e70830eccddc594726d40500d5c"}, + {file = "pyobjc_framework_CoreText-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0bc278f509a3fd3eea89124d81e77de11af10167c0df0d0cc15a369f060465a0"}, + {file = "pyobjc_framework_CoreText-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7b819119dc859e49c0ce9040ae09d6a3bd66658003793f486ef5a21e46a2d34f"}, + {file = "pyobjc_framework_CoreText-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2719c57ff08af6e4fdcddd0fa5eda56113808a1690c3325f1c6926740817f9a1"}, + {file = "pyobjc_framework_CoreText-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:8239ce92f9496587a60fc1bfd4994136832bad99405bb45572f92d960cbe746e"}, + {file = "pyobjc_framework_CoreText-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:80a1d207fcdb2999841daa430c83d760ac1a3f2f65c605949fc5ff789425b1f6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-corewlan" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreWLAN on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreWLAN-10.1.tar.gz", hash = "sha256:a4316e992521878fb75ccff6bd633ee9c9a9bf72d5e2741e8804b43e8eeef8ac"}, - {file = "pyobjc_framework_CoreWLAN-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e5374ebd6e258d6cdaa9fdeb21c10830c50fc1c00eaa91b2293833b0182479f7"}, - {file = "pyobjc_framework_CoreWLAN-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:57cb3fbb69500df92a111655c129b0f658ec16e14e57b08b9c1ef400f33f3bb5"}, - {file = "pyobjc_framework_CoreWLAN-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:eb2360b20ab14a0f6cc7d06dc7bf2b0832d0c95892d9f364e03c6ecf77dfc328"}, + {file = "pyobjc-framework-CoreWLAN-10.2.tar.gz", hash = "sha256:f47dcf735145eb2f817db5c2134321a7cfb9274a634161ff3069617fd2afff42"}, + {file = "pyobjc_framework_CoreWLAN-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8dc102d7d08437b5421856ae8aac32e3e9846e546c1742e4d57343abd694688f"}, + {file = "pyobjc_framework_CoreWLAN-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:85bcf84fd38a2e949760dda3201f13f8bef73b341a623f6736834b7420386f16"}, + {file = "pyobjc_framework_CoreWLAN-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ada346a6da1075e16bf5f022ccad488632fe6de972d2d925616add87e3eb9fad"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-cryptotokenkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CryptoTokenKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CryptoTokenKit-10.1.tar.gz", hash = "sha256:ad8fb3c4f314cc5f35cd26a5e3fdd68dd71ea0f7b063f31cffb9d78050ce76f0"}, - {file = "pyobjc_framework_CryptoTokenKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e691877b2e96c8f257873943147315561cda79b63c911afa8d0103d6b351a88f"}, - {file = "pyobjc_framework_CryptoTokenKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5a4ce0650ad70eedadc46091d61878e28a4cf491d1c2e8da32feab2f661a4ee5"}, - {file = "pyobjc_framework_CryptoTokenKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c0013c7795d208547d9f92c0539bc7fec09ca049d791458b62c177585552abc4"}, + {file = "pyobjc-framework-CryptoTokenKit-10.2.tar.gz", hash = "sha256:c0adfde2d53da7df1f8827bdf0cbf4419590151dd1041711ab2f66a32bd986f5"}, + {file = "pyobjc_framework_CryptoTokenKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:89264d38ca58e8b5a586a3c13260d490ee2cdc9c1498211a804cec67f7659cd7"}, + {file = "pyobjc_framework_CryptoTokenKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e13d92966273420a154cde6694b4bc7dd3dc7679e93d651534dcf2b0c5246546"}, + {file = "pyobjc_framework_CryptoTokenKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a56af323d597332090a0787c00d16c40152c62cb278d951a59723006cd3e10de"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-datadetection" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DataDetection on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DataDetection-10.1.tar.gz", hash = "sha256:f81d1ca971aa8034faeb6e457144df0832f870d7e19905886593bafe4cbfe21f"}, - {file = "pyobjc_framework_DataDetection-10.1-py2.py3-none-any.whl", hash = "sha256:f23fa282297ed385c9df384a0765e4f9743b8916de8a58137f981ab0425b80f5"}, + {file = "pyobjc-framework-DataDetection-10.2.tar.gz", hash = "sha256:9532bb697b96ec4ffc04310550bf21c45c8494fc07d8067fc41cbfd94c8ba27d"}, + {file = "pyobjc_framework_DataDetection-10.2-py2.py3-none-any.whl", hash = "sha256:4435ebaa3b3fa3de855690469fefd2d8a3568f702f51540707efaf4363ec94aa"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-devicecheck" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DeviceCheck on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DeviceCheck-10.1.tar.gz", hash = "sha256:f89e3acd15ec48134f95bf027778ca1d7e3088b9c2204e48f8c6e3bdcb28cf82"}, - {file = "pyobjc_framework_DeviceCheck-10.1-py2.py3-none-any.whl", hash = "sha256:31d5a83d85a4d95e238f432ac66cbf110a7b70afa82fd230ab4b911a5e2b9cb4"}, + {file = "pyobjc-framework-DeviceCheck-10.2.tar.gz", hash = "sha256:f620ede18e12dd36d92f24d1a68278821bcf7aeaea6577993fbfb328c118569d"}, + {file = "pyobjc_framework_DeviceCheck-10.2-py2.py3-none-any.whl", hash = "sha256:c9c87ae40af41c4c296af40317018732bba85e589111f5286b2f136f022c8ecd"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-dictionaryservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DictionaryServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DictionaryServices-10.1.tar.gz", hash = "sha256:03b3b19a9b911beb3bdc8809f5d02356a497a75dbefa0f355825ec610c050a3e"}, - {file = "pyobjc_framework_DictionaryServices-10.1-py2.py3-none-any.whl", hash = "sha256:7ace031cc3df1fa9a4eb663ff55eee0a4c7c8c34653aa1529988d579d273150b"}, + {file = "pyobjc-framework-DictionaryServices-10.2.tar.gz", hash = "sha256:858b4edce36dfbb0f906f17c6aac1aae06350d508cf0b295949113ebf383bfb4"}, + {file = "pyobjc_framework_DictionaryServices-10.2-py2.py3-none-any.whl", hash = "sha256:39b577b35c52a033cbac030df1fdcd16fb109144e8c59cb2044a13fcd803ab49"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-CoreServices = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-CoreServices = ">=10.2" [[package]] name = "pyobjc-framework-discrecording" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DiscRecording on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DiscRecording-10.1.tar.gz", hash = "sha256:321c69b6494c57d75d4a0ecf5d90ceac3800441bf877eac8196ab25dcf15ebde"}, - {file = "pyobjc_framework_DiscRecording-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:581141bd645436d009cc6b42ca6255322de9a3a36052e7dcf497e90959c7bc77"}, - {file = "pyobjc_framework_DiscRecording-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2c4144c4d1d7bf7ad537c6159cefb490876b7eff62ec95d4af7bc857813b95cd"}, - {file = "pyobjc_framework_DiscRecording-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1c52f7ace5936edbe160aa4d6cb456a49e7bc1a43a5e34572d48cd65dee22d1e"}, + {file = "pyobjc-framework-DiscRecording-10.2.tar.gz", hash = "sha256:9670018a0970553882feb10e066585ad791c502539712f4117bad4a6647c79b3"}, + {file = "pyobjc_framework_DiscRecording-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cbf0d9904a24bece47a71b56f87090a769e96338c0acb3f33385c3e584ed1c96"}, + {file = "pyobjc_framework_DiscRecording-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0a7d9980ab9f59903d60d09172de4085028bbb97a63112f78b9cca0051a73639"}, + {file = "pyobjc_framework_DiscRecording-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8a6512d0b7e61064ca167ca0a9c95a3f49f8fa7216fe5e1d77eab01ce56a9414"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-discrecordingui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DiscRecordingUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DiscRecordingUI-10.1.tar.gz", hash = "sha256:2a44278b19738e8d4f2180433df37b59a0b645d9ddc0f3c3a6c81e506afc1953"}, - {file = "pyobjc_framework_DiscRecordingUI-10.1-py2.py3-none-any.whl", hash = "sha256:684925119e4c8f8ea43cfede1a3e39f785b5aa94a48f1aa7a98fd4cdc4c1d2e3"}, + {file = "pyobjc-framework-DiscRecordingUI-10.2.tar.gz", hash = "sha256:afda9756a8f9e8ce1f83930eca3b1a263a29f48c1618269457f4aba63fc1644f"}, + {file = "pyobjc_framework_DiscRecordingUI-10.2-py2.py3-none-any.whl", hash = "sha256:e0423c548851cd9eb4ad7e9e085da4db2cde2420e1f3e05d46e649498edf97d8"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-DiscRecording = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-DiscRecording = ">=10.2" [[package]] name = "pyobjc-framework-diskarbitration" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DiskArbitration on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DiskArbitration-10.1.tar.gz", hash = "sha256:c3ab3dc91375dabaf4d3470e01358e4acfecf6b425abf9ad95a26a7a56398f56"}, - {file = "pyobjc_framework_DiskArbitration-10.1-py2.py3-none-any.whl", hash = "sha256:a3bd1883b60aa1d8cff3bc18957f81ed14e5d0406d18a4a9095539ddf51dd72e"}, + {file = "pyobjc-framework-DiskArbitration-10.2.tar.gz", hash = "sha256:25b74db4f39a7128599e153533db0f88c680ad55f366c5ab6a6d7dede96eeb57"}, + {file = "pyobjc_framework_DiskArbitration-10.2-py2.py3-none-any.whl", hash = "sha256:dd14eb448865ca4c49e15a543f748f1ef6501ea0044eaa2cf04860547205c84f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-dvdplayback" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DVDPlayback on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DVDPlayback-10.1.tar.gz", hash = "sha256:2af92907a50a47c44a8dd1521217a564ad9a3dd9e9056f0a76b13275d380bee1"}, - {file = "pyobjc_framework_DVDPlayback-10.1-py2.py3-none-any.whl", hash = "sha256:bcbfb832a3f04e47aef03606a21fd58458bc28e25e1a444e7a9388bfee2f9dd3"}, + {file = "pyobjc-framework-DVDPlayback-10.2.tar.gz", hash = "sha256:0869a6e8da1c2d93713699785b4f0bbe5dd1b2820a0ff4a6adf06227b1bb96ac"}, + {file = "pyobjc_framework_DVDPlayback-10.2-py2.py3-none-any.whl", hash = "sha256:f3fb90eb3d616290d2ab652214ce682130cd19d1fd3205def6ab0ba295535dd9"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-eventkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Accounts on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-EventKit-10.1.tar.gz", hash = "sha256:53473df48000b39dec276e3b8ead88b153c66cf0fdc07b016f759b42f0b2ec50"}, - {file = "pyobjc_framework_EventKit-10.1-py2.py3-none-any.whl", hash = "sha256:3265ef0bfab38508c50febfa922b4abf6ebc55a44f105d499e19231c225a027c"}, + {file = "pyobjc-framework-EventKit-10.2.tar.gz", hash = "sha256:13c8262344f06096514d1e72d3c026fa4002d917846ce81217d4258acd861324"}, + {file = "pyobjc_framework_EventKit-10.2-py2.py3-none-any.whl", hash = "sha256:c9afa63fc2924281fdf1ef6c86cc2ba01b7b84a8545a826ddd89e4abd7077e81"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-exceptionhandling" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ExceptionHandling on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ExceptionHandling-10.1.tar.gz", hash = "sha256:ac75ac230249d6f26f750beb406c133a49d4a284e7ee62ba1139e9d9bc5ec44d"}, - {file = "pyobjc_framework_ExceptionHandling-10.1-py2.py3-none-any.whl", hash = "sha256:b8eb9142f141361982e498610bfd33803acb4f471f80b5cd9df8d382142449e9"}, + {file = "pyobjc-framework-ExceptionHandling-10.2.tar.gz", hash = "sha256:cf4cd143c24504d66ef9d4e67b4b88e2ac892716e6ead2aa9585a7d39278d943"}, + {file = "pyobjc_framework_ExceptionHandling-10.2-py2.py3-none-any.whl", hash = "sha256:fd7dfc197c29ccf187718dbb0b1dcd966a8c04ee6549ee9472959912e76a0609"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-executionpolicy" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ExecutionPolicy on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ExecutionPolicy-10.1.tar.gz", hash = "sha256:5ab7da37722b468a5e230354fa45a6a96e545c6c2aab5a76029e2227b1bae326"}, - {file = "pyobjc_framework_ExecutionPolicy-10.1-py2.py3-none-any.whl", hash = "sha256:556aa28220438b64e6f75f539f133616a343abe3e2565f0d016091f4dc4a9c3d"}, + {file = "pyobjc-framework-ExecutionPolicy-10.2.tar.gz", hash = "sha256:8976c35a58c2e51d6574123ecfcd58459bbdb32b3992716119a3c001d3cc2bcf"}, + {file = "pyobjc_framework_ExecutionPolicy-10.2-py2.py3-none-any.whl", hash = "sha256:4d95d55f82a15286035bb5bc01b339d6c36103a1cbf7d6a3d7a9feac71663626"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-extensionkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ExtensionKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ExtensionKit-10.1.tar.gz", hash = "sha256:4f0a5256149502eeb1b4e1af1455de629a3c3326aaf4d766937212e56355ad58"}, - {file = "pyobjc_framework_ExtensionKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:82eece8d6d807bafb5cf8a220c58f2b42b350a0bc9131cb0cdfd29e90294858d"}, - {file = "pyobjc_framework_ExtensionKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9936cfe8a17c09457aa10c21f90f77151328596bd72b55fd9b6c3e78a11384"}, - {file = "pyobjc_framework_ExtensionKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:94cdc24e19ed554bc1d8e9d11139839033b26997f5b29a381ed4be8633ad2569"}, + {file = "pyobjc-framework-ExtensionKit-10.2.tar.gz", hash = "sha256:343c17ec1696947cde6764b32f741d00d7424a620cdbaa91d9bcf47025b77718"}, + {file = "pyobjc_framework_ExtensionKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:69981d3a0f7146b57b16f1132c114419a2b89fa201677c7e240f861bc7e56670"}, + {file = "pyobjc_framework_ExtensionKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:30fa27de3f97436c867ca3e89d8e95f141337a9377f71be3c8a036795b5557fb"}, + {file = "pyobjc_framework_ExtensionKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:09e1402c9fd7c6fcacd662caa2198d79342b812665980fd9a66e906743bddf69"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-externalaccessory" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ExternalAccessory on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ExternalAccessory-10.1.tar.gz", hash = "sha256:1c206f2e27aedb0258a3cf425ed89cbea0657521829f061362b4fca586e033a8"}, - {file = "pyobjc_framework_ExternalAccessory-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:519c36e63011a797f1747306132957168eed53456e801973c38c52b06b265a0e"}, - {file = "pyobjc_framework_ExternalAccessory-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8c54367b52cc74231df057c9bbf722896d98efd91f6d6a7415e0ca7227f311b9"}, - {file = "pyobjc_framework_ExternalAccessory-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:64facb48377840e72e459f9ae88d482d0d17a1726733b2d79205de4e4449eb89"}, + {file = "pyobjc-framework-ExternalAccessory-10.2.tar.gz", hash = "sha256:e62af0029b2fd7e07c17a4abe52b20495dba05cba45d7e901acbd43ad19c4cc3"}, + {file = "pyobjc_framework_ExternalAccessory-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b279672b05f0f8a11201a5ed8754bcea5b8d3e6226ec16c6b59127e2c6e25259"}, + {file = "pyobjc_framework_ExternalAccessory-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5fbe16bb4831a30659cba6a53b77dca94b72ff12bfd318c76f118f39557427c5"}, + {file = "pyobjc_framework_ExternalAccessory-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f446ce468a369650c4c49947bb7329c58c68cd44aee801506e60be1f26cd6265"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-fileprovider" -version = "10.1" +version = "10.2" description = "Wrappers for the framework FileProvider on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-FileProvider-10.1.tar.gz", hash = "sha256:617811be28bd5d9b0cc87389073ade7593f89ee342a5d6d5ce619912748d8e00"}, - {file = "pyobjc_framework_FileProvider-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9e98efd27f69c8275dc8220dfb2bb41a486400c1fb839940cd298b8d1e44adca"}, - {file = "pyobjc_framework_FileProvider-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7046144d86b94707fea6d8bb00b2850f99e0ebaef136ee2b3db884516b585529"}, - {file = "pyobjc_framework_FileProvider-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2f4c816b87237ab2ddfb0314296e5824411cec11f9c1b5919f8b4e8c02069ff1"}, - {file = "pyobjc_framework_FileProvider-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8476daf2c291f6bc1c9f4a26f4492236a2e427774fd02a03c561c667e9ec0931"}, - {file = "pyobjc_framework_FileProvider-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:de3dcbe70943b3bf057f634be4003fdcc112e3d7296f1631be1bf20f494db212"}, - {file = "pyobjc_framework_FileProvider-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a53ebe7e4a6ef24cf3ade1c936a96a1cb0c40dd7639899e3e238e050d4813417"}, + {file = "pyobjc-framework-FileProvider-10.2.tar.gz", hash = "sha256:1accc2965c59395152d04b2f4a096cb4a5364bca8094695ce2b60d2f794bff74"}, + {file = "pyobjc_framework_FileProvider-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e69d294b0ac9fdcafb28fbb1b9770e1e851cc5467dc0ae1d7b182882ce16d1d"}, + {file = "pyobjc_framework_FileProvider-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1d5cc02d43f2c6851934c8208cd4a66ad007daf0db673f72d1938677c90b1208"}, + {file = "pyobjc_framework_FileProvider-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0ae00a293e3ac511cc9eb54ee05b67583ea35d490b47f23f448a3da6652c189b"}, + {file = "pyobjc_framework_FileProvider-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fab7da3c7961e77b09f34cb71a876205ea8d73f9d10d5db78080f7282dd5066f"}, + {file = "pyobjc_framework_FileProvider-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:5d2b581c8cb1c15304676f5a77c42e430aaad886ac92d8b2d4e5cec57cb86be3"}, + {file = "pyobjc_framework_FileProvider-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c471c0d27d9d6a7bba3d06f679f14ac8d719ed3660d9a8e6788a31e1521e71d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-fileproviderui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework FileProviderUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-FileProviderUI-10.1.tar.gz", hash = "sha256:e8f40b41f63d51401fb2aa5881dbf57ef6eacaa6c4d95f3dd1d9eb1b392a2d84"}, - {file = "pyobjc_framework_FileProviderUI-10.1-py2.py3-none-any.whl", hash = "sha256:ef85cead617c3e9b851589505503d201197bbc0ee27117a77243a1a4e99fad7d"}, + {file = "pyobjc-framework-FileProviderUI-10.2.tar.gz", hash = "sha256:a22204c1fad818e4c8d94ecb544fec59387e01a0074cbe2ca6e58de1a12c157e"}, + {file = "pyobjc_framework_FileProviderUI-10.2-py2.py3-none-any.whl", hash = "sha256:5fac2067c09a23a436708e05d71faf65d64f4c36b45ad254617720b1a682aad6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-FileProvider = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-FileProvider = ">=10.2" [[package]] name = "pyobjc-framework-findersync" -version = "10.1" +version = "10.2" description = "Wrappers for the framework FinderSync on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-FinderSync-10.1.tar.gz", hash = "sha256:5b1fb13c10d0f9bf8bccdacd0ecd894d79376747bd13aca5a410f65306bcbc29"}, - {file = "pyobjc_framework_FinderSync-10.1-py2.py3-none-any.whl", hash = "sha256:e5a5ff1e7d55edb5208ce04868fcf2f92611053476fbbf8f48daa3064d56deb5"}, + {file = "pyobjc-framework-FinderSync-10.2.tar.gz", hash = "sha256:5ecbe9bf7fe77f28204fbe358ee541fdd2786fc076a631c4f11b74377d60ea05"}, + {file = "pyobjc_framework_FinderSync-10.2-py2.py3-none-any.whl", hash = "sha256:11d569492efe74a52883e6086038ca9d5a712a08db828f3ca43c03e756013801"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-fsevents" -version = "10.1" +version = "10.2" description = "Wrappers for the framework FSEvents on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-FSEvents-10.1.tar.gz", hash = "sha256:f5dee8cfbd878006814db264c5f70aeb1a43c06620e98f628ca6c0008beb1b1d"}, - {file = "pyobjc_framework_FSEvents-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3c2bf6ffd49fd21df73a39e61b81d7c6651e1063f72b62b2218c6ab4bf91dc02"}, - {file = "pyobjc_framework_FSEvents-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e57dccf14720c0789811580cb99e325353259cc96514e2622ca512e70f392c2"}, - {file = "pyobjc_framework_FSEvents-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f026f417b25f804c6994d49af0743177ca7119d5d9e885a80d71c624e12a5d47"}, + {file = "pyobjc-framework-FSEvents-10.2.tar.gz", hash = "sha256:3a75f38bb1d5d2cf6a0d3e92801b3510f32e96cf6443d81b9dd92a84d72eff0a"}, + {file = "pyobjc_framework_FSEvents-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:129f9654ab9074eff29ccb8dd09625e3740058744a38f9776d0349387f518715"}, + {file = "pyobjc_framework_FSEvents-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c71699f24482d99ee8f6b7a8d36c4c294655c670d8cbd0f3c6f146a2fda6283c"}, + {file = "pyobjc_framework_FSEvents-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a0ff7bb8c1a357181345ff3a90b7f808cd55c4757df60c723541f0f469323190"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-gamecenter" -version = "10.1" +version = "10.2" description = "Wrappers for the framework GameCenter on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-GameCenter-10.1.tar.gz", hash = "sha256:0d124b3f18bb1b3e134268c99bf92c29791e8c62a97095c1fb1eb912ebe495e0"}, - {file = "pyobjc_framework_GameCenter-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5d6cf2405e5107c8befcb61a5339c0766fbab9448a2c4e8f5dd4401a7ef380ab"}, - {file = "pyobjc_framework_GameCenter-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8ede397f1ca31022e7507cb1cf801617094e407300ee29c19415fd32f64fa758"}, - {file = "pyobjc_framework_GameCenter-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:db4e36a573e91715d8ed5250f6784fe5b03c8b2e769b97f8cf836eb7111c3777"}, + {file = "pyobjc-framework-GameCenter-10.2.tar.gz", hash = "sha256:43341b428cad2e50710cb974728924280e520e04ae9f750bc7beda5006457ae3"}, + {file = "pyobjc_framework_GameCenter-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f14ad00713519b508f4c956a8212bff01f6b6279b2a76e87d99a18262e61dfda"}, + {file = "pyobjc_framework_GameCenter-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b52932e90c6b6d90ce8c895b0ac878dc4e639d493724a5789fc990e1efec3d05"}, + {file = "pyobjc_framework_GameCenter-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:dc9de1b3d0db1921fb197ad964226ebc271744aee0cc792f9fe66afaf92b24f0"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-gamecontroller" -version = "10.1" +version = "10.2" description = "Wrappers for the framework GameController on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-GameController-10.1.tar.gz", hash = "sha256:50a17fdd151f31b3a5eae9ae811f6f48680316a5c2686413b9a607c25b6be4bc"}, - {file = "pyobjc_framework_GameController-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ec7e84c2dbc90065db8d0293c29e34d95b4fa14beeb3fb3c818fa3bcdf24d89a"}, - {file = "pyobjc_framework_GameController-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:672d99f849b803c6c6b8e89445e2c446379ae23f1f0f7e355a2a94f91d591fea"}, - {file = "pyobjc_framework_GameController-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c56232fc2f0e95901e66534d18a008857c59363078ac75fedb2d18dcbd5dda63"}, + {file = "pyobjc-framework-GameController-10.2.tar.gz", hash = "sha256:81ad502346904995ec04b0580bab94ab32ca847fad06bca88cdf2ec6222b80ae"}, + {file = "pyobjc_framework_GameController-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:47e6dfcf10353a17adcfa7649d0f5d0cba4d4dc3ce3a66826d873574ae2afcb1"}, + {file = "pyobjc_framework_GameController-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8ef6fcb5308c1c31d1de3969165a13750b74f52c80249b722383307fc558edff"}, + {file = "pyobjc_framework_GameController-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:89a7aac243b0347c3ef10fc2bcedcb1b2ae9eb14daabccb3f3cfe1cf12c7e572"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-gamekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework GameKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-GameKit-10.1.tar.gz", hash = "sha256:6fa87a29556cdaf78c86851fc61edb6d384f1a7370a75a66bdd208ed1250899f"}, - {file = "pyobjc_framework_GameKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bb00618d256f67b6f784b49db78bde80677a2004af4558266009de30e8804660"}, - {file = "pyobjc_framework_GameKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:38bcce65b781c5967eb7985b551ca015cda89903d18f29eab74518a52f626fec"}, - {file = "pyobjc_framework_GameKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:773e6f645731dac7c2b6e55ec7ecd92928b070f7a33b4c5ce33a3a52565ecd49"}, + {file = "pyobjc-framework-GameKit-10.2.tar.gz", hash = "sha256:0ef877db88e8888ecf682b09b9fb1ee6b879f23d521ce3a738a1b0fb2b885974"}, + {file = "pyobjc_framework_GameKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c23025087bec023a37fe0c84fcdc592cdc100d9187b49250446587f09571dbeb"}, + {file = "pyobjc_framework_GameKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6867159762db0a72046abe42df8dff080620c2f9cdf20927445eec28f3f04124"}, + {file = "pyobjc_framework_GameKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e7d91d28c4c8d240f0fbab80f84545efbeeb5a42db4c6fbd4ccb1f3face88c9c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-gameplaykit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework GameplayKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-GameplayKit-10.1.tar.gz", hash = "sha256:12a5d1dc59668df155436250476af029b1765ca68e7a1e2d440158e7130232a3"}, - {file = "pyobjc_framework_GameplayKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f877d2c449aea09187856540b3d5a3e6a98573673a09af6163b1217040d93e5f"}, - {file = "pyobjc_framework_GameplayKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:86e320c79707ab7a3de2f23d0d32bd151b685865f43d13fb58daa2963b4da5cc"}, - {file = "pyobjc_framework_GameplayKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:93a1e62c2875d7705d1aa70115f646258ecffc4d4702ed940a5214dc0ea580f5"}, + {file = "pyobjc-framework-GameplayKit-10.2.tar.gz", hash = "sha256:068ee6f3586f4033d25ed3b0451eab8f388b2970be1dfbe39be01accca7a9b2e"}, + {file = "pyobjc_framework_GameplayKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c9e87b8221a74599c813640b823f3a2546aa6076b04087f26fd3ecc8c78cbe01"}, + {file = "pyobjc_framework_GameplayKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a1f81c969347d63a1200818ae12350ad39353e85842f34040b9d997e55f7ec89"}, + {file = "pyobjc_framework_GameplayKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f438c4b98e1d00dec84fedc8796761063e99814f913151441bc7147ac8b23068"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-SpriteKit = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-SpriteKit = ">=10.2" [[package]] name = "pyobjc-framework-healthkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework HealthKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-HealthKit-10.1.tar.gz", hash = "sha256:9479c467514c506f9083889f11da6b8f34d705f716ffe9cbbb5a3157000d24de"}, - {file = "pyobjc_framework_HealthKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b32171f6d4ee6fa37718f5b299c6b866a4ae395ff8764ccc040b9d1263a3e74f"}, - {file = "pyobjc_framework_HealthKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a628c777c02df6c5dbbc5f26576f52239dab79ac1afe5ca53d40d561d55adb52"}, - {file = "pyobjc_framework_HealthKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4d44c5ace78dce1f0c76b96010d9446b90a9474946a25bfb33d373a152e22524"}, + {file = "pyobjc-framework-HealthKit-10.2.tar.gz", hash = "sha256:abcc4e6bd0e11eace7257887958b6cc5332f8aad4efa6b94e930425016540789"}, + {file = "pyobjc_framework_HealthKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:093687705413b88efe47097f09c7be84b6ccbb7ec0f9b943b4ad19fe9fbdc01c"}, + {file = "pyobjc_framework_HealthKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1fb83b08ed28b9adc9a8a2379dbf5f7515e01009160a86847e1a5f71b491a49c"}, + {file = "pyobjc_framework_HealthKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b84d3857c54076a63feea7072ecf98d925f68f96413ca40164d04b2fd865a4dc"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-imagecapturecore" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ImageCaptureCore on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ImageCaptureCore-10.1.tar.gz", hash = "sha256:29b85ee9af77bba7e1ea9191bf84edad39d07681b9bd267c8f5057db3b0cdd64"}, - {file = "pyobjc_framework_ImageCaptureCore-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d8d2dbc09aed984f7d92e7b835e87608d356f5f4b6dd03e84258963391791ae5"}, - {file = "pyobjc_framework_ImageCaptureCore-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5eef95798d340000ddfb9c59c9468b75bb4cd389d311fd27078c3f4a4a3af29a"}, - {file = "pyobjc_framework_ImageCaptureCore-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:832cbe0d957935553183586556d2036cfcc9aae593defe71e6a0726e5c63abf6"}, + {file = "pyobjc-framework-ImageCaptureCore-10.2.tar.gz", hash = "sha256:68f1f96982282e786c9c387c177c3b14202d560d68000136562eba1ed3f45a6e"}, + {file = "pyobjc_framework_ImageCaptureCore-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:69c19e235de32bc707a622fd2865fa53f6e7692b52851d559ea0c23664ee7665"}, + {file = "pyobjc_framework_ImageCaptureCore-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3bdbae9adf6456b4b4e2847135e5da214516545638dd715f01573ec6b6324af6"}, + {file = "pyobjc_framework_ImageCaptureCore-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:46b90bc950646b69b416949bb50ee7d2189b42b7aa77692e01d7c1b4062ddc19"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-inputmethodkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework InputMethodKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-InputMethodKit-10.1.tar.gz", hash = "sha256:b995f43a8859016474098c894c966718afe9fbcc18996ce3c6bebfc6a64cfad7"}, - {file = "pyobjc_framework_InputMethodKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5288d12d1a2a6da9261c0cadbee03f31c80a0a3bb77645b4e7c2836864f54533"}, - {file = "pyobjc_framework_InputMethodKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e04ac004ac848492242fda193e63322abce87ecdef081f1b7268cac7f2af8ad"}, - {file = "pyobjc_framework_InputMethodKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:538d5955a8ab3a9c7a7286c72dba87634ba0babe7cd0a4cec335100df8789c01"}, + {file = "pyobjc-framework-InputMethodKit-10.2.tar.gz", hash = "sha256:294cf2c50cdbb4cdc8f06946924a01faf45a7356ef86652d73c1f310fc1ce99f"}, + {file = "pyobjc_framework_InputMethodKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f8bcb156dcd1dc77826f720ff70f9a12c72ad45e97d4faa7ca88e85fc2d7843a"}, + {file = "pyobjc_framework_InputMethodKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d96a18dd92dc19f631ed50c524355ab29f79975e081f516ad3cea2d902a277e7"}, + {file = "pyobjc_framework_InputMethodKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fdea1320a3cf6e409ab8f602b90b167110f7ca58f44f95a52f188c6f59f08753"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-installerplugins" -version = "10.1" +version = "10.2" description = "Wrappers for the framework InstallerPlugins on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-InstallerPlugins-10.1.tar.gz", hash = "sha256:4c9f8b46d43f1277aad3bea648f84754e9f48251a6fb385ad8119c1b44dffe9b"}, - {file = "pyobjc_framework_InstallerPlugins-10.1-py2.py3-none-any.whl", hash = "sha256:195e7d559421bf36479b085bf74d56f8549fff715596fc21e0e0c95989a3149a"}, + {file = "pyobjc-framework-InstallerPlugins-10.2.tar.gz", hash = "sha256:001e9ec6489e49fc22bbec1ef050518213292e8d56239ed004f98ed038b164e2"}, + {file = "pyobjc_framework_InstallerPlugins-10.2-py2.py3-none-any.whl", hash = "sha256:754b8fdf462b6e568f30249255af50f9bd3ac90edacfe6e02d0fe77f276c049b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-instantmessage" -version = "10.1" +version = "10.2" description = "Wrappers for the framework InstantMessage on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-InstantMessage-10.1.tar.gz", hash = "sha256:8e8e7e2c64a3a6b0aa67cace58f7cea1971bb93de57be40b7ba285e305fab0b5"}, - {file = "pyobjc_framework_InstantMessage-10.1-py2.py3-none-any.whl", hash = "sha256:c03a9a99faaa14ff0a477114b691d628117422a15995523deb25ff2d1d07a36d"}, + {file = "pyobjc-framework-InstantMessage-10.2.tar.gz", hash = "sha256:4aa7627697fa57120594477f1f287bc41836ec7a4107215d3060c26416cf72c9"}, + {file = "pyobjc_framework_InstantMessage-10.2-py2.py3-none-any.whl", hash = "sha256:65db5cb1f163700a6cb915506f8f7ae2f28d8d3f6464f7b122b0535b1694859a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-intents" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Intents on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Intents-10.1.tar.gz", hash = "sha256:85a84a5912b8d8a876767ca8fa220dc24bf1c075ed81b58c386d25c835cec804"}, - {file = "pyobjc_framework_Intents-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:64a3cef4af536de1153937d99a4cb8d0568ca20ee5c74458dca4f270b01a3c1a"}, - {file = "pyobjc_framework_Intents-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:89f49f82245d4facb329dd65434a602506246e6585f544ab78b0ab4bd151f4f7"}, - {file = "pyobjc_framework_Intents-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:bc6f93d151c4474150b6c76fe43067d2d0d06446851d66df3bb9968682a2d225"}, + {file = "pyobjc-framework-Intents-10.2.tar.gz", hash = "sha256:ec27d5d19212fcec180ff04e2bc617fee0a018e2eaf29b2590c5512da167aa6a"}, + {file = "pyobjc_framework_Intents-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6a4e2ba2b5319c15ceeabdfd06f258789174e7e31011a24eab489d685066ed69"}, + {file = "pyobjc_framework_Intents-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9a3c08ec0dd199305989786e6e3c68d27f40b9eae3050bbf0207f053190f3513"}, + {file = "pyobjc_framework_Intents-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3dc9233522564ea8850a02961398a591446e0a0a0e63cd42cf7820daa0242f6a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-intentsui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Intents on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-IntentsUI-10.1.tar.gz", hash = "sha256:01948fbd8f956a79d3c2e27f75bc9954ad12cb4113982f58654122cfa8095ebb"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e829659751ff47e3b85980075897ddebbf62d5644478c1bb2ff1dcdc116b8897"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0d6ac451433ec0602c661b32216cd3c44b1c99b9f41781b3af79b7941118552"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1806e6189cf09c0b031594ad445da1a93c30c399298c6fce2369a49bac7eade4"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:33518f549b6c501d7c6c36542154ae5d2255d7223804470e14cd76b325676a48"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:91498d3cf4098fe412ea66c01b080919906dd23d53653d49addc7a26c50e570f"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c73626bfad3f098eed4a446cee90154dec39d9a9c0775532980c5266bc91a4c"}, + {file = "pyobjc-framework-IntentsUI-10.2.tar.gz", hash = "sha256:4b9ca6f868b6cb7945ef4c285e73d220433efc35dfcad6b4a356bfce55e96c09"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ec579d0f25cba0e1225f7690f52ed092bef5e01962fbe83ffbb70ec39861674"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:91331fec42522596500bd0a580c633b7b84831c6316b2ec7458425d60b37da9e"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:81f9d337473b3cb51f2aa4aa98156d6e294778d24fe011f41f0123b2676d824c"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1c52fa06e8d65a003e384afcc1322051f2fbbfeac2c91ab852b407c552fd5652"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c514ecef1277ff00c07f78f7890e3a6cbe3c8fe44184f2f6da1a7b4b32851605"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:22c40c11d5de5a866a5db2b4ba57e9663e79180c323928709eced30c5c03ac81"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Intents = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Intents = ">=10.2" [[package]] name = "pyobjc-framework-iobluetooth" -version = "10.1" +version = "10.2" description = "Wrappers for the framework IOBluetooth on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-IOBluetooth-10.1.tar.gz", hash = "sha256:9a30554f1c9229ba120b2626d420fb44059e4aa7013c11f36ab9637dc3aba21f"}, - {file = "pyobjc_framework_IOBluetooth-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5fd71294464b9d891d3a7ebb674bcc462feb6fbdf33ebd08c1411ef104460f7f"}, - {file = "pyobjc_framework_IOBluetooth-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:88e44f1bb3495c3104d9b0a73b2155e4326366c5f08a6e31ef431ab17f342b24"}, - {file = "pyobjc_framework_IOBluetooth-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:15c1a049e1431996188352784defe54a37181da38a7e5a378fcda77fdc007aea"}, + {file = "pyobjc-framework-IOBluetooth-10.2.tar.gz", hash = "sha256:8c4d6a82d0f550c84dce72188369adb9347ad6ee1c8adef996ee1a8c376c51ee"}, + {file = "pyobjc_framework_IOBluetooth-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:15e8a35431740d3e4ee484d4af01afef0b6b8aee2bdfe7b6dbe6cf7c7cc563fa"}, + {file = "pyobjc_framework_IOBluetooth-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:03ee5ecc3a2d2f6a0b4de9b36bc1c56f820624e8176abca0014c9ef3c86b0cd0"}, + {file = "pyobjc_framework_IOBluetooth-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b91c0b370047b386e9b333ba3c12ac121089fa94291c721e8b1ad6945b5763dd"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-iobluetoothui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework IOBluetoothUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-IOBluetoothUI-10.1.tar.gz", hash = "sha256:979c0d9638c0f31e62afe90d8089e61a912d08e0db893a47d3e423b9b23e0db2"}, - {file = "pyobjc_framework_IOBluetoothUI-10.1-py2.py3-none-any.whl", hash = "sha256:809eeb98ce71d0d4a7538fb77f14d1e7cd2c2b91c10605fb8c0d69dbac205de5"}, + {file = "pyobjc-framework-IOBluetoothUI-10.2.tar.gz", hash = "sha256:ed9f4cb62eeda769b3f530ce396fd332f82441c5d22b9cf7b58058670c262d10"}, + {file = "pyobjc_framework_IOBluetoothUI-10.2-py2.py3-none-any.whl", hash = "sha256:f833efa3b1636f7a6cf8b5b2d25fc566757c2c7c06ee7945023aeb992493d96e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-IOBluetooth = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-IOBluetooth = ">=10.2" [[package]] name = "pyobjc-framework-iosurface" -version = "10.1" +version = "10.2" description = "Wrappers for the framework IOSurface on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-IOSurface-10.1.tar.gz", hash = "sha256:e41c635c5e259019df243da8910675db10480a36d0c316539a8ab3fa0d941000"}, - {file = "pyobjc_framework_IOSurface-10.1-py2.py3-none-any.whl", hash = "sha256:46239320148b82c1f2364d5468999b48fa9c94fc404aff6c5451d23896ece694"}, + {file = "pyobjc-framework-IOSurface-10.2.tar.gz", hash = "sha256:f1412c2f029aa1d60add57abefe63ea4116b990892ef7530ae27a974efafdb42"}, + {file = "pyobjc_framework_IOSurface-10.2-py2.py3-none-any.whl", hash = "sha256:b571335a2150e865828d3e52e2a742531499c88dd85215c14d07e68e9bed70a7"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-ituneslibrary" -version = "10.1" +version = "10.2" description = "Wrappers for the framework iTunesLibrary on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-iTunesLibrary-10.1.tar.gz", hash = "sha256:18766b2fb016d33cde8ec2c81b05ddfb77d65cb8c92e16864d0c288edd02e812"}, - {file = "pyobjc_framework_iTunesLibrary-10.1-py2.py3-none-any.whl", hash = "sha256:043a2ede182f41a3ca70be50bf95f18641e2945f0077797ff2bb42a3e1984e37"}, + {file = "pyobjc-framework-iTunesLibrary-10.2.tar.gz", hash = "sha256:c60d1dc9eabb28b036b766b89ea7d18198e21deb8925fc5a5753777c905ecddf"}, + {file = "pyobjc_framework_iTunesLibrary-10.2-py2.py3-none-any.whl", hash = "sha256:4e6cf6073a902f77e0b0c33d2d52e3ab3f0c869cb339b7685b5e7f079df8ef4e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-kernelmanagement" -version = "10.1" +version = "10.2" description = "Wrappers for the framework KernelManagement on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-KernelManagement-10.1.tar.gz", hash = "sha256:da8ac0e6a2de33b823e07ce0462a64340cfebd04f24426b1022374933bbd8d0a"}, - {file = "pyobjc_framework_KernelManagement-10.1-py2.py3-none-any.whl", hash = "sha256:923ff2bbab35a92b9becd9762348f6f690fa463ef07a0e5c4a2b8eb1d3e096af"}, + {file = "pyobjc-framework-KernelManagement-10.2.tar.gz", hash = "sha256:effd1d3230c8a3b8628e7fd315f0aac10fbf1ea99f2ed923999cb1ab787c317a"}, + {file = "pyobjc_framework_KernelManagement-10.2-py2.py3-none-any.whl", hash = "sha256:d8dca9dc1f756bfa894a32f56857ecefb4d188aec590433ee302529261dffb68"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-latentsemanticmapping" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LatentSemanticMapping on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LatentSemanticMapping-10.1.tar.gz", hash = "sha256:46e95532c71083d1e63bcfa4b89a56fcf860288f8fb04fc0313e4c40685d1916"}, - {file = "pyobjc_framework_LatentSemanticMapping-10.1-py2.py3-none-any.whl", hash = "sha256:f0b14a1a2a6d6b25b902a2cc5949f0145926f0b0a3132d17210b1a580dc7f0f5"}, + {file = "pyobjc-framework-LatentSemanticMapping-10.2.tar.gz", hash = "sha256:eb3ddd5e04c39b0151a64bd356f7de3c66062257e3802e8abea7a882e972ff21"}, + {file = "pyobjc_framework_LatentSemanticMapping-10.2-py2.py3-none-any.whl", hash = "sha256:dadd4352b9af681dd85d04712a6cf1d2c574acbf0b8178c35f42231ec8c5a6d1"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-launchservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LaunchServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LaunchServices-10.1.tar.gz", hash = "sha256:c0ef72f7cee77556c81e620ae8c511e73bdea4f644a233c8a5e3a333f5cd3d7d"}, - {file = "pyobjc_framework_LaunchServices-10.1-py2.py3-none-any.whl", hash = "sha256:b792a863427a2c59c884952737041e25ef05bdb541471ce94fb26a05b48abbbc"}, + {file = "pyobjc-framework-LaunchServices-10.2.tar.gz", hash = "sha256:d9f78d702dea13a363de8a7c1c382e1ca872993980c164781cb2758ee49353d2"}, + {file = "pyobjc_framework_LaunchServices-10.2-py2.py3-none-any.whl", hash = "sha256:15b7c96e3059550c218ed5cb5de11dddc7aae21c67c0808b130a5d49b8f4cc0f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-CoreServices = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-CoreServices = ">=10.2" [[package]] name = "pyobjc-framework-libdispatch" -version = "10.1" +version = "10.2" description = "Wrappers for libdispatch on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-libdispatch-10.1.tar.gz", hash = "sha256:444ca20e348cbdd2963523b89661d67743a6c87a57caf9e5d546665baf384a5b"}, - {file = "pyobjc_framework_libdispatch-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da0fa1e63b7e72010c69341bcd2f523ade827c7f30e0ef5c901a2536f43a1262"}, - {file = "pyobjc_framework_libdispatch-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bd72ff7f399079eaf8135503c3658b3ce967076a9e3fdcd155c8a589134e476a"}, - {file = "pyobjc_framework_libdispatch-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ec061cba47247a5fd5788c3b9d5eba30936df3328f91fea63a565d09c53a0a02"}, - {file = "pyobjc_framework_libdispatch-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c71c8c9dca56b0e89ac7c4aff4b53bc74f64a2290e48c31cc77d87771c5203bd"}, - {file = "pyobjc_framework_libdispatch-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b24a76fe2de4422685323e4f533b7bfd11a27edf06094c0f730f3f243f94a8bd"}, - {file = "pyobjc_framework_libdispatch-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:606954514e5747b05f9c608614f1affa44512888d18805452fade5d9b7938c14"}, + {file = "pyobjc-framework-libdispatch-10.2.tar.gz", hash = "sha256:ae17602efbe628fa0432bcf436ee8137d2239a70669faefad420cd527e3ad567"}, + {file = "pyobjc_framework_libdispatch-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:955d3e3e5ee74f6707ab06cc76ad3fae27e78c180dea13f1b85e2659f9135889"}, + {file = "pyobjc_framework_libdispatch-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:011736d708067d9b21a4722bae0ed776cbf84c8625fc81648de26228ca093f6b"}, + {file = "pyobjc_framework_libdispatch-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:28c2a2ab2b4d2930f7c7865ad96c1157ad50ac93c58ffff64d889f769917a280"}, + {file = "pyobjc_framework_libdispatch-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6cb0879e1f6773ad0bbeb82d495ad0d76d8c24b196a314ac9a6eab8eed1736e0"}, + {file = "pyobjc_framework_libdispatch-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:aa921cd469a1c2e20d8ba9118989fe4e827cbb98e947fd11ae0392f36db3afcc"}, + {file = "pyobjc_framework_libdispatch-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6f3d57d24f81878d1b5dcb00a13f85465ede5b91589394f4f1b9dcf312f3bd99"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-libxpc" -version = "10.1" +version = "10.2" description = "Wrappers for xpc on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-libxpc-10.1.tar.gz", hash = "sha256:8e768bb3052b30ef3938c41c9b9a52ad9d454c105d2011f5247f9ffb151e3702"}, - {file = "pyobjc_framework_libxpc-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c5a3efe43b370fdc4d166ddfd8d1f74b5c3ae5f9b273e5738253c3d9a2bebf27"}, - {file = "pyobjc_framework_libxpc-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:dc16190cbcaf8639f4783058ec63b1aa5d03e3586311f171177b9275ed5725d8"}, - {file = "pyobjc_framework_libxpc-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3f0756945995da4cb503dc9ca31b0633b7044722b08348a240ebe6f594d43c0c"}, - {file = "pyobjc_framework_libxpc-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8d5a7f06f437c6a23c469299a3a15b62f8b4661563499b0f04d9fe8ea5e75a95"}, - {file = "pyobjc_framework_libxpc-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9341237ffaedb3169037a666564615fefd921e190e6ec3e951dc75384169a320"}, - {file = "pyobjc_framework_libxpc-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:57eaa7242ef4afe3e8d1fbe48f259613322549353250400c8d508afff251dde4"}, + {file = "pyobjc-framework-libxpc-10.2.tar.gz", hash = "sha256:04deac1f9dbd1c19c10d175846017f8e8e51d2b52a2674482638d6b289e883a6"}, + {file = "pyobjc_framework_libxpc-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b57089f792d51ad687c9933dd2d3669cd5e6f84d1f9213738ecc5833dba9aa8c"}, + {file = "pyobjc_framework_libxpc-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e31cb4f7fdb76defc53fe0b56c3f1db953c1dcf3519093835527f270c37315c3"}, + {file = "pyobjc_framework_libxpc-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:978cc2a9cc668e0c4aef13af81cec6129e7b98877b44c952232c0083a8fd352e"}, + {file = "pyobjc_framework_libxpc-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5dd057a556398b48982fdae84f8e08ee9b69b6e5918b6782bd842ef9ad97820d"}, + {file = "pyobjc_framework_libxpc-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:df394dc08eab33430f565a2252906f27cd4f7c41fd431f75b4ae35d3a76f4eab"}, + {file = "pyobjc_framework_libxpc-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fd3608a32ebe65253c24b7590ad96977135aa847dd188e4c2168f0da9e74e47"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-linkpresentation" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LinkPresentation on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LinkPresentation-10.1.tar.gz", hash = "sha256:d35f9436f6a72c0877479083118f57a42c0d01879df41ee832378bebef37e93c"}, - {file = "pyobjc_framework_LinkPresentation-10.1-py2.py3-none-any.whl", hash = "sha256:077c28c038b1aac0e5cd158cbf8b80863627f1254f0a1884440fabf95d46d62f"}, + {file = "pyobjc-framework-LinkPresentation-10.2.tar.gz", hash = "sha256:4ccae5f593b58dfe9cb422645e0ccf5adab906ec008d3e20eb710cd62bbb4717"}, + {file = "pyobjc_framework_LinkPresentation-10.2-py2.py3-none-any.whl", hash = "sha256:1cada96d3eb03e51e1bbb7e7c10b9c08c80fd098132541b4e992234fe43cfa37"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-localauthentication" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LocalAuthentication on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LocalAuthentication-10.1.tar.gz", hash = "sha256:e2b06bf7af1b6f8ba08bd59e1a3616732d801284362dd5482181b0b1488eca2d"}, - {file = "pyobjc_framework_LocalAuthentication-10.1-py2.py3-none-any.whl", hash = "sha256:3df6ac268f79f28e5b5e76b4fd6e095bdc9a200e1908f24cc33e805fa789f716"}, + {file = "pyobjc-framework-LocalAuthentication-10.2.tar.gz", hash = "sha256:26e899e8b4a90632958eb323abbc06d7b55c64d894d4530a9cc92d49dc115a7e"}, + {file = "pyobjc_framework_LocalAuthentication-10.2-py2.py3-none-any.whl", hash = "sha256:442f6cae70300f29c9133ed7f2e01c294976b9aae55fe180c64983d5dee62254"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Security = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Security = ">=10.2" [[package]] name = "pyobjc-framework-localauthenticationembeddedui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LocalAuthenticationEmbeddedUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LocalAuthenticationEmbeddedUI-10.1.tar.gz", hash = "sha256:5a201e26c7710f8e8a6507dbb861baa545dc5abcbe0f3f6a19b2e270562c7bec"}, - {file = "pyobjc_framework_LocalAuthenticationEmbeddedUI-10.1-py2.py3-none-any.whl", hash = "sha256:a8e8101ca74441a862ffb8e2309fe382789c759d0951fb7b7b4e46652b4cb068"}, + {file = "pyobjc-framework-LocalAuthenticationEmbeddedUI-10.2.tar.gz", hash = "sha256:52acdef34ea38d1381a95de15b19c9543a607aeff11db603371d0224917a8830"}, + {file = "pyobjc_framework_LocalAuthenticationEmbeddedUI-10.2-py2.py3-none-any.whl", hash = "sha256:eafbbc321082ff012cdb14e38abae7ced94c6d962cb64af43d6d515da976e175"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-LocalAuthentication = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-LocalAuthentication = ">=10.2" [[package]] name = "pyobjc-framework-mailkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MailKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MailKit-10.1.tar.gz", hash = "sha256:a4589b13361a49ff0b3e9be43cd6f935a35acfc7a9f0da8b5db64283401da181"}, - {file = "pyobjc_framework_MailKit-10.1-py2.py3-none-any.whl", hash = "sha256:498d743e56d876d6d128970e6c0674470d9a4bcf9c021f0b115aa0c6ade1f5ae"}, + {file = "pyobjc-framework-MailKit-10.2.tar.gz", hash = "sha256:8d8fceff5498df0cfa630b7088814f8daa8a25794a36d4b57cfde8c2c14cdc70"}, + {file = "pyobjc_framework_MailKit-10.2-py2.py3-none-any.whl", hash = "sha256:d8bc9e6649e7e500d2d4d4ab288304846d9bfa06952ebeee621fe095dc2f51eb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-mapkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MapKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MapKit-10.1.tar.gz", hash = "sha256:4e5b295ce1e94ed38888a0c4e3a5a92004e63e6d2ba9a86b5a277bbe658ddf05"}, - {file = "pyobjc_framework_MapKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7628e7d8e4181f06fc3138b7426593d09fe3d49a056e7e3d5853f7bbcc62b240"}, - {file = "pyobjc_framework_MapKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d5d78c56b2806148f7b4a2975e580bc039f1898ca8953041405683ba6c22f19b"}, - {file = "pyobjc_framework_MapKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b9c942b3a705021561de2a4e1590c58212131c2c7dc721290f68371558a42f35"}, + {file = "pyobjc-framework-MapKit-10.2.tar.gz", hash = "sha256:35dfe7aa5ec9e51abc47d6ceb0f83d3c2b5876258591a568e85e2db8218427c4"}, + {file = "pyobjc_framework_MapKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ce322299b04eef212706185764771041a1220f7a611606e33f95ac355d913238"}, + {file = "pyobjc_framework_MapKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:339a8c8181047fc9eb612eb47c51f017423a6b074e2a4838cd6b06e36af6c160"}, + {file = "pyobjc_framework_MapKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:85a110693198798234d3edbd3b606d9d9c9b4817e4ed70d2b2e18357422783c6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreLocation = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreLocation = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-mediaaccessibility" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MediaAccessibility on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MediaAccessibility-10.1.tar.gz", hash = "sha256:f487d83f948c12679c1ce06caabaedade1f4aee1f35163f835213c251a4639c7"}, - {file = "pyobjc_framework_MediaAccessibility-10.1-py2.py3-none-any.whl", hash = "sha256:2301cc554396efe449b079f99a0b5812e8e3dc364195dfcd2cc2b8a9c8915f11"}, + {file = "pyobjc-framework-MediaAccessibility-10.2.tar.gz", hash = "sha256:acce0baf11270c9276a219f5a0dfb6d8241e01ac775144bfe3a83e088dcd1308"}, + {file = "pyobjc_framework_MediaAccessibility-10.2-py2.py3-none-any.whl", hash = "sha256:55dbf7519028fadf3ac6cb1ef185156f6df649655075a015cf87cee370255e82"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-medialibrary" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MediaLibrary on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MediaLibrary-10.1.tar.gz", hash = "sha256:cd4815cb270aa2f28acdad8185a4b9d4b76a6177f70e8ed62a610484f4bd44a9"}, - {file = "pyobjc_framework_MediaLibrary-10.1-py2.py3-none-any.whl", hash = "sha256:420d5006c624aaaf583058666fd5900a5619ff1f230e99cdd3acb76c12351a37"}, + {file = "pyobjc-framework-MediaLibrary-10.2.tar.gz", hash = "sha256:b3e1bd3e70f0013bbaccd0b43727a0f16ecf23f7d708ca81b8474faaa1f8e8fc"}, + {file = "pyobjc_framework_MediaLibrary-10.2-py2.py3-none-any.whl", hash = "sha256:98b9687f1399365889529c337d99d7f19edf3a94beb05884cf15a29f4fc178af"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-mediaplayer" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MediaPlayer on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MediaPlayer-10.1.tar.gz", hash = "sha256:394acea4fb61f8c4605494c7c64c52a105760aa2ec7e2c34db484e576ed10ad6"}, - {file = "pyobjc_framework_MediaPlayer-10.1-py2.py3-none-any.whl", hash = "sha256:10e25a8682cd0d1d8fc0041f0a34e8acf785b541d8c1ebe493c2d17caeef5648"}, + {file = "pyobjc-framework-MediaPlayer-10.2.tar.gz", hash = "sha256:4b6d296b084e01fb6e5c782b7b6308077db09f4051f50b0a6c3298ffbd1f1d70"}, + {file = "pyobjc_framework_MediaPlayer-10.2-py2.py3-none-any.whl", hash = "sha256:c501ea19380bfbf6b04fbe909fcfe9a78c5ff2a9b58dae87be259066b1ae3521"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-AVFoundation = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-AVFoundation = ">=10.2" [[package]] name = "pyobjc-framework-mediatoolbox" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MediaToolbox on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MediaToolbox-10.1.tar.gz", hash = "sha256:56906cd90e1f969656db1fecd5874c6345e160044f54596c288fb0ffdb35cdc5"}, - {file = "pyobjc_framework_MediaToolbox-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:23b02872d910481a75db8eeb9c053a16b9a3cff1e030ca29d855ba8291c9501a"}, - {file = "pyobjc_framework_MediaToolbox-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c96557db9540ed18748f47d4cd0b2ba7273acb756bf7e91d8b2a943211850614"}, - {file = "pyobjc_framework_MediaToolbox-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:17ee7f045f39e3f11945bf951dfb4238c695ca49938e8b43c78fe12a8eb05628"}, + {file = "pyobjc-framework-MediaToolbox-10.2.tar.gz", hash = "sha256:614ec0a28c810395274aa1d5348a447f67bae4629a3a8372d14162f38e2fc597"}, + {file = "pyobjc_framework_MediaToolbox-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ca7443bca94dfd9863d5290d2680247b7d577cf031dcfc854c414e5fdd9cdb03"}, + {file = "pyobjc_framework_MediaToolbox-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c34dca15560507286eb9ef045d6234ac1db1e50f22c63397662155a7f01ea9ac"}, + {file = "pyobjc_framework_MediaToolbox-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:696d6cadbb643f98750f5a791663ca264f0a0f4db2aeec7c8cf59c02face1683"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-metal" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Metal on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Metal-10.1.tar.gz", hash = "sha256:bde76fe5d285c9c875d411a7cf6cdd7617559eabf4fb9a588f90762a0634148c"}, - {file = "pyobjc_framework_Metal-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0701fe5e5aaa5471843fa0d5fe8fe3279313ff83c8bf5230ab6e11f7cba79a78"}, - {file = "pyobjc_framework_Metal-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5f542aaab62b9803e7e644b86dd82718aa9f1bcfc11cb4a666a59f248b3ae2e0"}, - {file = "pyobjc_framework_Metal-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:90ba5118ebf56a152e2404336ad7732dc60f252cd2414d34c9b32c07897f4512"}, + {file = "pyobjc-framework-Metal-10.2.tar.gz", hash = "sha256:652050cf9f5627dba36b31ad134e56c49040d0dcfaf93a7026018ef17330a01e"}, + {file = "pyobjc_framework_Metal-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c68e4025c52e8c8b0fa584abeb058debe49ac3174e8c421408bf873e5951fd02"}, + {file = "pyobjc_framework_Metal-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:49f333f41556f08e28750bb4e09a7053ac55434f4a29a3e228ed4fd9bae8f57d"}, + {file = "pyobjc_framework_Metal-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0cb39a4f4a70f45f88f79c3641b00b6db0c9b9ed90bee21840a725a8d7c7eaca"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-metalfx" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetalFX on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetalFX-10.1.tar.gz", hash = "sha256:64c96595c2489e41d93a1c75d1eace70619d973e5c9e90e7cfca29c934fc5d06"}, - {file = "pyobjc_framework_MetalFX-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3d456581a76fde824a9109f9dfdd3fc4819e81ae27527b23d2855656ed0ab6ed"}, - {file = "pyobjc_framework_MetalFX-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a3fd4384c83c0818484a3a90120131114a0866b2004309cda24ce873e4ff1e50"}, - {file = "pyobjc_framework_MetalFX-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:76a9ef5abf114c1e2d60b1e971619183f87918eafeb0719a281d1475c88592ad"}, + {file = "pyobjc-framework-MetalFX-10.2.tar.gz", hash = "sha256:d98a0fd1f0d2d3ea54efa768e6817a8773566c820ae7a3a23497e1c492e11da7"}, + {file = "pyobjc_framework_MetalFX-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e7f1b50316db47ffb1e9505726dfe5bf552f32188d21b6ef979078fec9f58077"}, + {file = "pyobjc_framework_MetalFX-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:526687ac36b71b9822613bf552bff99930ee2620414b0b932f5e0d327d62809e"}, + {file = "pyobjc_framework_MetalFX-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a8c78a8f9c3ee59cb5ba96e4db56c3ab8cc78860f9d42ca5732168d8691cb17b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Metal = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Metal = ">=10.2" [[package]] name = "pyobjc-framework-metalkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetalKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetalKit-10.1.tar.gz", hash = "sha256:da0357868824e6ec506ff92d18d729f8462c4c5ca8f26ecc86e8c031d78fa80d"}, - {file = "pyobjc_framework_MetalKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8723c6b009bf0ce7eb77aa7bdc54f1ee6d0450a3bc2f8ce85523170e92a62152"}, - {file = "pyobjc_framework_MetalKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e94303a78a883e3aa53115c4ebb8329989fcf36be353e908252bba3ba3dc807d"}, - {file = "pyobjc_framework_MetalKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:184922a11f273e604f2c5af2e14ce1f4ef2dce0f5c09aadda857c5a5ca6acab1"}, + {file = "pyobjc-framework-MetalKit-10.2.tar.gz", hash = "sha256:42fc61371d49c2b86828d2a668b7badb2418c0ecce7595fce790830607bd8040"}, + {file = "pyobjc_framework_MetalKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:abcdabdad3d9810730c67f493b70139254f7438ebba0149b5dcd848384a08a85"}, + {file = "pyobjc_framework_MetalKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7990b05194919d187a6af8be7fe51007ab666cfdb3512b6fb022da9049d9957d"}, + {file = "pyobjc_framework_MetalKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c26c2e2965ae6547edecbc8e250117401c26f62f9a55e351eca42f2e557721e7"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Metal = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Metal = ">=10.2" [[package]] name = "pyobjc-framework-metalperformanceshaders" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetalPerformanceShaders on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetalPerformanceShaders-10.1.tar.gz", hash = "sha256:335a49c69ac95e412c581592a148a32c0fcf434097e50da378f21fe09be13738"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a410b6dce52f7a2adebdb66891bfc33939ffe24bd75691fc30c1f7539521df86"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7218e89bccadc451f5ba040d84b049fe8b4a4bf7d9a4fdfb20fe6851e433cd49"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:9452e07d38c7a199c2eebb1280227285f918b97d3d597940e1e6e6471636b44a"}, + {file = "pyobjc-framework-MetalPerformanceShaders-10.2.tar.gz", hash = "sha256:66e6f671279b1f7edbaed1bea8ab1eb57f617e000c1e871c190b60ad60c1d727"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a65c201921fffb992955aa143ffcb36be3e7c5aee86334941d3214428f0c7ad8"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9fd437d0b1a83a3bdc866727ba17a00b49ee239205b2d14b617f5ca4f566c4f7"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0f862a65ffc0159e6b9ad46115b8d7ecbce5f56fe920c709b943982d4a70d63c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Metal = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Metal = ">=10.2" [[package]] name = "pyobjc-framework-metalperformanceshadersgraph" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetalPerformanceShadersGraph on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetalPerformanceShadersGraph-10.1.tar.gz", hash = "sha256:f587a0728e5240669d23a649f50bb25c10577f9775ba4f2576b19423575464a0"}, - {file = "pyobjc_framework_MetalPerformanceShadersGraph-10.1-py2.py3-none-any.whl", hash = "sha256:467e84983c5ded8cfaea8cb425872d5069eda8c4cc1f803ca3afaed0e184c763"}, + {file = "pyobjc-framework-MetalPerformanceShadersGraph-10.2.tar.gz", hash = "sha256:4fffad1c37e700fc38b2ca8eb006d7532b3b5cb700580ce7dfd31af35e0fb6e8"}, + {file = "pyobjc_framework_MetalPerformanceShadersGraph-10.2-py2.py3-none-any.whl", hash = "sha256:7fedd831f9fc58708f6b01888abd42a2f08151c86db47280fe47be0f709811bf"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-MetalPerformanceShaders = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-MetalPerformanceShaders = ">=10.2" [[package]] name = "pyobjc-framework-metrickit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetricKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetricKit-10.1.tar.gz", hash = "sha256:6887cec4b7aa489ec16af2f77f7c447bc0a0493456fe1c4910d95a5b3e587fcd"}, - {file = "pyobjc_framework_MetricKit-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02c8775000effbb00f6dde0a493b9ae955e54be4f9e72c4d0f2350d0864b46ac"}, - {file = "pyobjc_framework_MetricKit-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:49f6d9d9c46eb6605799fe0d898945cb62fc5c2d2fea1f7e51950765bbf7b03b"}, - {file = "pyobjc_framework_MetricKit-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:6494dac683181dd1ca55b2fc912f693f51483a4e468a3fac05543539a643ca40"}, - {file = "pyobjc_framework_MetricKit-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cb7b318a2e2f4bb841a5427ab53448c827de0f2617123b804c41e6d595581321"}, - {file = "pyobjc_framework_MetricKit-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:5484980ef21e68389ed452f8a4d357f00dabf8711cb5268efe683f758441f23f"}, - {file = "pyobjc_framework_MetricKit-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7dc5a4da156e7f8724969ae329c8bae4fab58c2d7376ae96f62e2d646cc1175c"}, + {file = "pyobjc-framework-MetricKit-10.2.tar.gz", hash = "sha256:14cb02fd8fc338f6f15df5fd14c95419871b768cc8f5f71b1e0e99fde46b4712"}, + {file = "pyobjc_framework_MetricKit-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:585a494a5126c5481afc34ac5bfdc28a1a2b7044d8b0e3427fbd5313e72c59fb"}, + {file = "pyobjc_framework_MetricKit-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b330ccffa45f4ccf2fc23c73112bf3b652515eb025fddeb3e2c81ca25f1a168"}, + {file = "pyobjc_framework_MetricKit-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fc336ff6db376bff4cab0bd7db962aae1ff11f4584026cd5c4d3f66283018ce7"}, + {file = "pyobjc_framework_MetricKit-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d1403302d753686b49aa0d6fc0a4c05e6ead18aa1b9de9668322fd0e81c51f"}, + {file = "pyobjc_framework_MetricKit-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:82b01a838203000c262f9f52420b1387850505f0a7b742b29a73cc8c6a9e0c25"}, + {file = "pyobjc_framework_MetricKit-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:79971789bff04540200bd443ec3c6ae13f83eea827d2dab0f33bc9c6e6af9ab0"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-mlcompute" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MLCompute on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MLCompute-10.1.tar.gz", hash = "sha256:02e947ddb90c236acb2cb34f41838e6c78cb070886ddfb98bb71a8f02f991fd6"}, - {file = "pyobjc_framework_MLCompute-10.1-py2.py3-none-any.whl", hash = "sha256:25ed4d3002bd33c039f4ad9bf05b4830d53f67282a8399df7c65bd1430a01183"}, + {file = "pyobjc-framework-MLCompute-10.2.tar.gz", hash = "sha256:6f5bff2317b2ae45c092a94a05e7831d0dc7a002fc68b03648abbac5a2ce33a3"}, + {file = "pyobjc_framework_MLCompute-10.2-py2.py3-none-any.whl", hash = "sha256:a191abf1c6aef061b4eab1aa8d4cf886fd6c98e53f6fedcd738ddd904571b933"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-modelio" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ModelIO on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ModelIO-10.1.tar.gz", hash = "sha256:75fe5405165264a5059c16bfd492593e3becba50811a47dedbfc699ff73d4bfb"}, - {file = "pyobjc_framework_ModelIO-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6911dfa7821e1b97cf48b593d3ccd6c9f2401ed1715a677df3cdfdfeec7dad14"}, - {file = "pyobjc_framework_ModelIO-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e1a1f3b276999032ff13b1f985ae06a95b5ffc9c53771b10ea3496a70e809d58"}, - {file = "pyobjc_framework_ModelIO-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8c6d43cca1c952858b2f31cab7b9ef01daae5aa1322240895d2e965cc72230cd"}, + {file = "pyobjc-framework-ModelIO-10.2.tar.gz", hash = "sha256:8ae1444375260a346d1c77838f84e2c04dfabaf2769b2970a3588becb670431e"}, + {file = "pyobjc_framework_ModelIO-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6d226b059a4c99669ec3dc03c1dde9b0daeba392a198cdb36398394396512a26"}, + {file = "pyobjc_framework_ModelIO-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c2fff57596d54b95507a1c180a6df877e28e561e5e71941619d70ac67d5bec4d"}, + {file = "pyobjc_framework_ModelIO-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e6b119d66cefde55ce63e406c4fd12d626fb017ee88d9e01fdd25434f6ddc831"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-multipeerconnectivity" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MultipeerConnectivity on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MultipeerConnectivity-10.1.tar.gz", hash = "sha256:ab83e57953bb3f3476c77ed863e1138ab58a0711a77a1a11924b9d22e90f116b"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e5770351b75484bbb4f6b0f0a20e0a0197a0b192a35228b087bc06f149242b0f"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a06db4ee86ee85bd085659a965f1448b27bf0018f1842ae3fb6ec1c195b5352c"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:becab88974b1669f5ca9c76dddb5591d4ed9acb4176980d763e22d298b6ba83d"}, + {file = "pyobjc-framework-MultipeerConnectivity-10.2.tar.gz", hash = "sha256:e3c1e5f39715621786f4ad5ecffa2cc9445a218e5ab3e94295c16fbcb754ee5a"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ce68b7b5030e95e78bc94e898adb09f1e3f30c738e7140101146c52c64ff5493"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f158aaaabcfd0d1e6d77585ec24797dbedf6bde640675b26dcfb4e2093d3a0ce"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0e02f9ecdbf2c4aacd5ab8cd019415584bed7fa1656d525c8f841466d6e58993"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-naturallanguage" -version = "10.1" +version = "10.2" description = "Wrappers for the framework NaturalLanguage on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-NaturalLanguage-10.1.tar.gz", hash = "sha256:b017a75d7275606f1732fef891198e916743871ca7663ddbb1ffae7d4d93a855"}, - {file = "pyobjc_framework_NaturalLanguage-10.1-py2.py3-none-any.whl", hash = "sha256:02bb4df955ecf329cf6da77ca6952777e5b2a10aee67452ea6314ec632cbc475"}, + {file = "pyobjc-framework-NaturalLanguage-10.2.tar.gz", hash = "sha256:eba7de67bea4a6a071e04e79c8a4de0547c25a09635fe3d4ee6cd58fb6aeaf65"}, + {file = "pyobjc_framework_NaturalLanguage-10.2-py2.py3-none-any.whl", hash = "sha256:0165735973a720f09bd5a2333f32e16aac52332fb595425480d7a2215472d4fb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-netfs" -version = "10.1" +version = "10.2" description = "Wrappers for the framework NetFS on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-NetFS-10.1.tar.gz", hash = "sha256:0bd9c58a0939df29729c0ab5c5fe3e7eb7fc066a15bd885ddbbbfc6d6b1524b6"}, - {file = "pyobjc_framework_NetFS-10.1-py2.py3-none-any.whl", hash = "sha256:a317c30a367af22f94858ca73cfe38a0dc4b63d0783f93532cb33780cd98a942"}, + {file = "pyobjc-framework-NetFS-10.2.tar.gz", hash = "sha256:05de46b15d19abecbb9e7d04745ca27dba9ec121f16ea7bafc9dc87a12c0e828"}, + {file = "pyobjc_framework_NetFS-10.2-py2.py3-none-any.whl", hash = "sha256:e7a84497be6114ea2e47776efda640d9d8becaaa07214d712a204b5d446e3d95"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-network" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Network on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Network-10.1.tar.gz", hash = "sha256:39c02fdcac4e487e14296f5d60458b9a0cd58c2a830591a7cfacc0bca191e03f"}, - {file = "pyobjc_framework_Network-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5a31831cd9949efbc82bcea854ea3c22dcb5dc85072f909710cde666efd5cfb6"}, - {file = "pyobjc_framework_Network-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6704cbbf5f50d73208e7c9d92a1212f581280430da2606e07e88669120c82a36"}, - {file = "pyobjc_framework_Network-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fe52bac9aa16429f7a138aad4cbb1e95a2be5c052c1cfda7e8c4dd16d1147dec"}, + {file = "pyobjc-framework-Network-10.2.tar.gz", hash = "sha256:b39bc26f89cf9fc56cc9c4a99099aef68c388d45b62dc1ec16772ee290b225d4"}, + {file = "pyobjc_framework_Network-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4f465400cd4402b7495a27de4c9099bcc127afa4d1cb587f75b987750c0ea032"}, + {file = "pyobjc_framework_Network-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:39966aa35d17b00973fa85e334b6360311cfd1a097d26d79b5957bc7cd7fad4a"}, + {file = "pyobjc_framework_Network-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5542660d0c7183dc4599bd20763ed3b59772cf17211ca3720a4175f886a8eada"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-networkextension" -version = "10.1" +version = "10.2" description = "Wrappers for the framework NetworkExtension on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-NetworkExtension-10.1.tar.gz", hash = "sha256:f49a3bd117ca40a1ea8ae751aca630f7b7e7d7305aa5dfa969beb07299eb2784"}, - {file = "pyobjc_framework_NetworkExtension-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bfc5a7b402c8daced465c6b18683930a2ece91e98134cc1801657ad0a9256b1e"}, - {file = "pyobjc_framework_NetworkExtension-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:dfd808295c3b68a2f225410a67645b184187848be86abc2e6ba90db27e5c470f"}, - {file = "pyobjc_framework_NetworkExtension-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a925cfdabb4d882e8b9c3524a729c3b683e7a7ca18e291509625d3e63d3840cb"}, + {file = "pyobjc-framework-NetworkExtension-10.2.tar.gz", hash = "sha256:14f237bd96a822c55374584e99f2d79581b2d60570f34e4863800f934a44b82d"}, + {file = "pyobjc_framework_NetworkExtension-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:280dc76901628b2c9750766bb2424a29de3f1f49b41e5f29634701cfe0ab0524"}, + {file = "pyobjc_framework_NetworkExtension-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ce6cfdff6f65f512137ee382ba04ee2b52e0fb51deacb651e385daf5349d28b7"}, + {file = "pyobjc_framework_NetworkExtension-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ed2cf32a802ec872466c743013ce9ef17757e89e21a49cbeeeffddfaefb89fc4"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-notificationcenter" -version = "10.1" +version = "10.2" description = "Wrappers for the framework NotificationCenter on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-NotificationCenter-10.1.tar.gz", hash = "sha256:697e29da4fdd5899e5db5bda7bdb5afc97f4a6e4d959caf2316aef3b300c5575"}, - {file = "pyobjc_framework_NotificationCenter-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f9078ba52e1cfa77c797a9aed972c182acfcc79cc2eb083c7b06ba76738b5f6d"}, - {file = "pyobjc_framework_NotificationCenter-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:25bf6f521f99ccb057d0df063242d5d28223672525706317134caa887ffd6b07"}, - {file = "pyobjc_framework_NotificationCenter-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7a6876f4b25023562ddf2558fba5e52d72a7ce3ec41c8e96533779d25e2b7722"}, + {file = "pyobjc-framework-NotificationCenter-10.2.tar.gz", hash = "sha256:3771c7a8b8e839d07c7cb51eef2e83666254bdd88bd873b0ba7e385245cda684"}, + {file = "pyobjc_framework_NotificationCenter-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f982ce1d0916f9ba3322ebbffd9b936b5b9aeb6d8ec21bd2c3c5245c467c1a12"}, + {file = "pyobjc_framework_NotificationCenter-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:dd1d8364d2212a671b2224ab6bf7785ba5b2aae46610ec46ae35d27c4d55cb15"}, + {file = "pyobjc_framework_NotificationCenter-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1e8aaaef40b6c0deaffd979b3741d1f9de7d804995b7b92fa88ba7839615230e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-opendirectory" -version = "10.1" +version = "10.2" description = "Wrappers for the framework OpenDirectory on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-OpenDirectory-10.1.tar.gz", hash = "sha256:5d25c254876378966ce58e0de9e3d3594ca25922773d6526235b5e2f2c4103e1"}, - {file = "pyobjc_framework_OpenDirectory-10.1-py2.py3-none-any.whl", hash = "sha256:83601f3b5694b1087616566019c300aa38b2a15b59d215e96c5dae18430e8c96"}, + {file = "pyobjc-framework-OpenDirectory-10.2.tar.gz", hash = "sha256:ecca3346275e1ee7be812e428da7f243e37258d8152708a2baa246001b7f5996"}, + {file = "pyobjc_framework_OpenDirectory-10.2-py2.py3-none-any.whl", hash = "sha256:7996985a746f4cceee72233eb5671983e9ee9c9bce3fa9c2fd03d65e766a4efd"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-osakit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework OSAKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-OSAKit-10.1.tar.gz", hash = "sha256:59ad344fed2ddbc24c5dad3345f596cd6ecb73e4c97a05051e3680709f66a42f"}, - {file = "pyobjc_framework_OSAKit-10.1-py2.py3-none-any.whl", hash = "sha256:af34b4dccc17a772d80c283c9356bdb5a5a300bd54c2557c26671aca4f2f86cb"}, + {file = "pyobjc-framework-OSAKit-10.2.tar.gz", hash = "sha256:6efba4a1733e9ab0bf0e7b4f2eb3e0c84b2a4af1b0b4bbc3a310ae041ccaf92d"}, + {file = "pyobjc_framework_OSAKit-10.2-py2.py3-none-any.whl", hash = "sha256:fbad23e47e31d795a005c18a20d84bff68d90d6dd0f87b6a343e46f87c00034a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-oslog" -version = "10.1" +version = "10.2" description = "Wrappers for the framework OSLog on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-OSLog-10.1.tar.gz", hash = "sha256:bfce0067351115ae273489768f93692dcda88bd5b54f28bb741c08855c114dfe"}, - {file = "pyobjc_framework_OSLog-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:57b2920c5c9393fb4fe9e1d5d87eabead32ebe821853d06d577bdb5503327a49"}, - {file = "pyobjc_framework_OSLog-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e94a3ce153fe72f7fe463e468d94e3657db54b133aaf5a313fb31b6b52ed60f2"}, - {file = "pyobjc_framework_OSLog-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:09e64565e4a293f3a9d486e1376f2c9651d5cec500b2c2245de9ae0baecfb29e"}, + {file = "pyobjc-framework-OSLog-10.2.tar.gz", hash = "sha256:2377637a0de7dd60f610caab4bcd7efa165d23dba4ac896fd542f1fab2fc588a"}, + {file = "pyobjc_framework_OSLog-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ef1ddc15f98243be9b03f4f4bcb839318333fb135842085ba40499a58c8bd342"}, + {file = "pyobjc_framework_OSLog-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7958957503310ec8df90a0a036ae8a075b90610c0b797769ad117bf635b0caa6"}, + {file = "pyobjc_framework_OSLog-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:67796f02b77c1cc893b3f112f88c58714b1e16a38b59bc52748c25798db71c29"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-passkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PassKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PassKit-10.1.tar.gz", hash = "sha256:bc19a46fad004137f207a5a9643d3f9a3602ea3f1d75c57841de986019a3c805"}, - {file = "pyobjc_framework_PassKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:011e2f32bc465b634d171a2500e6a153b479b807a50659cc164883bbeec74e59"}, - {file = "pyobjc_framework_PassKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:791f7d4317164130e8232e75e40ba565633a01bc5777dc3d0ba0a8b5f4aeab92"}, - {file = "pyobjc_framework_PassKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:58115c31a2e8b8a57ca048de408444cc4ba94da386656e0eeeac919b157f03a4"}, + {file = "pyobjc-framework-PassKit-10.2.tar.gz", hash = "sha256:0c879d632f0f0bf586161a7abbbba3dad9ba9894a3edbce06f4160491c2c134c"}, + {file = "pyobjc_framework_PassKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:15891c8c1e23081961d652946d4750fd3cd1308efc953a1c77713394726798a6"}, + {file = "pyobjc_framework_PassKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d68061729743be30c66f7eb3cb649850ef12a24b1d1896233036a390e7d69aa7"}, + {file = "pyobjc_framework_PassKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7290369b34be3317463a32c9e78a0ed734db4793414851a9e73295413cf17317"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-pencilkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PencilKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PencilKit-10.1.tar.gz", hash = "sha256:712654dc9373014aa5472b10ba269d95f455c722ebb7504caa04dfae209ed63a"}, - {file = "pyobjc_framework_PencilKit-10.1-py2.py3-none-any.whl", hash = "sha256:baf856d274653d74d66099ae81005ddb3923f7128d36d2f87100481cbb8b2b27"}, + {file = "pyobjc-framework-PencilKit-10.2.tar.gz", hash = "sha256:2338ea384b9a9e67a7f34c300a898ccb997bcff9a2a27e5f9bf7642760c016a0"}, + {file = "pyobjc_framework_PencilKit-10.2-py2.py3-none-any.whl", hash = "sha256:d3e605f104548f26c708957ab7939a64147c422c35d45c4ff4c8d01b5c248c4d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-phase" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PHASE on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PHASE-10.1.tar.gz", hash = "sha256:b7e0ef3567359a4f8ab3e5f8319f2201e775e3db6d7498409701664568c8c7c6"}, - {file = "pyobjc_framework_PHASE-10.1-py2.py3-none-any.whl", hash = "sha256:329cd6dd040a7ef8091dda9d8e57d9613bc9c8edf3cfd3af549f5cd9d64a0941"}, + {file = "pyobjc-framework-PHASE-10.2.tar.gz", hash = "sha256:047ba5b7a869ed93c3c7af2cf7e3ffc83299038275d47c8229e7c09006785402"}, + {file = "pyobjc_framework_PHASE-10.2-py2.py3-none-any.whl", hash = "sha256:f29cd40e5be860758d8444e761d43f313915e2750b8b03b8a080dd86260f6f91"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-AVFoundation = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-AVFoundation = ">=10.2" [[package]] name = "pyobjc-framework-photos" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Photos on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Photos-10.1.tar.gz", hash = "sha256:eb0e83d01c8eb0652fac8382e68fd9643b7530f6580c2a51846444cae09ec094"}, - {file = "pyobjc_framework_Photos-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d91ead1ec33e05bf9e42b7df3f8fe7e3d4cf2814482f6878060c259453491d65"}, - {file = "pyobjc_framework_Photos-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f8415346689213b30488eb023d699c0512fcddeb7e1e4aa833860c312dddf780"}, - {file = "pyobjc_framework_Photos-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:61174248e07025d4696b6164346b43147250d03ae8378f70a458c0583e003656"}, + {file = "pyobjc-framework-Photos-10.2.tar.gz", hash = "sha256:ba05d1208158e6de6d14782c182991c0d157254be7254b8d3bb0a9a53bf113fb"}, + {file = "pyobjc_framework_Photos-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4f2c2aa73f3ac331a84ee1f7b5e0edc26471776b2de2190640f041e3c1cc8ef3"}, + {file = "pyobjc_framework_Photos-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:17d69ce116a7f7db1d78ed12a8a81bec1b580735ad40611c0037d8c2977b2eb8"}, + {file = "pyobjc_framework_Photos-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e53d0759c26c7eac4ebfc7bd0018dfd7e3be8ab88a042684ee45e9184e0ac90e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-photosui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PhotosUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PhotosUI-10.1.tar.gz", hash = "sha256:4b90755c6c62a0668782cf05d92fca6277485f2cb3473981760c0dc0e40de1d8"}, - {file = "pyobjc_framework_PhotosUI-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:206641f2f7f3169fecc0014b9b93c89b5503841014e911d4686684de137c79f9"}, - {file = "pyobjc_framework_PhotosUI-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:02c1861bcce433294b00f6c614559addc87fcf57aaa1ede2b6dfea50a3795378"}, - {file = "pyobjc_framework_PhotosUI-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8df716fb2e9994bfc2d716d6930defb3e3911a0337788ef36eea0c2eb0f899ad"}, + {file = "pyobjc-framework-PhotosUI-10.2.tar.gz", hash = "sha256:d0bbcae82b4cc652bb60d3221c557cc19be62ff430575ec8e6d233beb936f73b"}, + {file = "pyobjc_framework_PhotosUI-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a27607419652b45053e0be5ede2780b48e6a8dded2b365ded1732e80dafacea0"}, + {file = "pyobjc_framework_PhotosUI-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7eddf0343fae6c327a3dc941d0d7b216f5d186edb2e511d7c54668f6ff2be701"}, + {file = "pyobjc_framework_PhotosUI-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d6715ac72c7967761c33502f6cd552534ec0f727f009f22a2c273dc12076d52d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-preferencepanes" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PreferencePanes on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PreferencePanes-10.1.tar.gz", hash = "sha256:3a26cd8959dac30203410eb432a361caf2a0b8552c74edd3d7406d722ecc1014"}, - {file = "pyobjc_framework_PreferencePanes-10.1-py2.py3-none-any.whl", hash = "sha256:9b16c93d7f684cbe097932c8260a0b6460ad9fc68230648981340b7e3ee7053e"}, + {file = "pyobjc-framework-PreferencePanes-10.2.tar.gz", hash = "sha256:f1fba8727d172a3e9b58d764695702f7752dfb585d0378e588915f3d8363728c"}, + {file = "pyobjc_framework_PreferencePanes-10.2-py2.py3-none-any.whl", hash = "sha256:4da63d42bc2f2de547b6c817236e902ad6155efa05e5305daa38be830b70a19d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-pubsub" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PubSub on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PubSub-10.1.tar.gz", hash = "sha256:7992344ae82d9566d300b3d2c92ff9fa9a28e060bd42d0988df351f5fb729156"}, - {file = "pyobjc_framework_PubSub-10.1-py2.py3-none-any.whl", hash = "sha256:af0b1ed0328f06d7d96390a4b95bfb4a790d5b38142825a222923f908dc46db9"}, + {file = "pyobjc-framework-PubSub-10.2.tar.gz", hash = "sha256:68ca9701b29c5e87f7837490cad3dab0b6cd539dfaff3ffe84b1f3f1bf4dc764"}, + {file = "pyobjc_framework_PubSub-10.2-py2.py3-none-any.whl", hash = "sha256:b44f7f87de3f92ce9655344c476672f8f7a912f86ab7a615fec30cebbe7a8827"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-pushkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PushKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PushKit-10.1.tar.gz", hash = "sha256:12798ad9ae87f7e78690d2bce2ea46f0714d30dd938f5b288717660120a00795"}, - {file = "pyobjc_framework_PushKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:99edcd057d5cc7e015fe6b464b83f07c843fba878f5b0636ff30cd6377ec2915"}, - {file = "pyobjc_framework_PushKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:986216b9021ed6aff3a528c2b6a3885426e8acac9a744397ede998d2e7a83d06"}, - {file = "pyobjc_framework_PushKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:cf27a49a3b9eadde0bc518b54f7b38fd5d0e1c2203350d1286527b6177afa3c3"}, + {file = "pyobjc-framework-PushKit-10.2.tar.gz", hash = "sha256:e30fc4926a9fcd3427701e48a8908f72e546720e52b1e0f457ba2fa017974917"}, + {file = "pyobjc_framework_PushKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1015e4473a8eac7eba09902807b8d8edd47c536e3a50a0b3fe7ab7211e454ad8"}, + {file = "pyobjc_framework_PushKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6f68b2630f84dc6d94046f7676d415e5342b2bb3f0368f3b9e81d0c5744c219b"}, + {file = "pyobjc_framework_PushKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5fe75738ea08c05e42460a58acbf0a8af67a3df26ca2a7bddd48d801b00772ed"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-quartz" -version = "10.1" +version = "10.2" description = "Wrappers for the Quartz frameworks on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Quartz-10.1.tar.gz", hash = "sha256:b7439c0a3be9590d261cd2d340ba8dd24a75877b0be3ebce56e022a19cc05738"}, - {file = "pyobjc_framework_Quartz-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:69db14ac9814839471e3cf5a8d81fb5edd1b762739ad806d3cf244836dac0154"}, - {file = "pyobjc_framework_Quartz-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ddcd18e96511e618ce43e288a043e25524c131f5e6d58775db7aaf15553d849"}, - {file = "pyobjc_framework_Quartz-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4257a2fb5580e5ebe927a66cf36a11749685a4681a30f90e954a3f08894cb62"}, - {file = "pyobjc_framework_Quartz-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28315ca6e04a08ae9e4eaf35b364ee77e081605d5865021018217626097c5e80"}, - {file = "pyobjc_framework_Quartz-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9cb859a2fd7e15f2de85c16b028148dea06002d1a4142922b3441d3802fab372"}, - {file = "pyobjc_framework_Quartz-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:993c71009e6374e57205e6aeaa577b7af2df245a5d1d2feff0f88ca0fa7b8626"}, + {file = "pyobjc-framework-Quartz-10.2.tar.gz", hash = "sha256:9b947e081f5bd6cd01c99ab5d62c36500d2d6e8d3b87421c1cbb7f9c885555eb"}, + {file = "pyobjc_framework_Quartz-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bc0ab739259a717d9d13a739434991b54eb8963ad7c27f9f6d04d68531fb479b"}, + {file = "pyobjc_framework_Quartz-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2a74d00e933c1e1a1820839323dc5cf252bee8bb98e2a298d961f7ae7905ce71"}, + {file = "pyobjc_framework_Quartz-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3e8e33246d966c2bd7f5ee2cf3b431582fa434a6ec2b6dbe580045ebf1f55be5"}, + {file = "pyobjc_framework_Quartz-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c6ca490eff1be0dd8dc7726edde79c97e21ec1afcf55f75962a79e27b4eb2961"}, + {file = "pyobjc_framework_Quartz-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d3d54d9fa50de09ee8994248151def58f30b4738eb20755b0bdd5ee1e1f5883d"}, + {file = "pyobjc_framework_Quartz-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:520c8031b2389110f80070b078dde1968caaecb10921f8070046c26132ac9286"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-quicklookthumbnailing" -version = "10.1" +version = "10.2" description = "Wrappers for the framework QuickLookThumbnailing on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-QuickLookThumbnailing-10.1.tar.gz", hash = "sha256:b6c4ea3701cb18abaffcceb65adc9dcfd6bb28811af7a99148c71e71d538a3a6"}, - {file = "pyobjc_framework_QuickLookThumbnailing-10.1-py2.py3-none-any.whl", hash = "sha256:984e4e92727caa5b2ebbe8c91fcde6acc416f15dd8e7aef94cb3999c4a7028ec"}, + {file = "pyobjc-framework-QuickLookThumbnailing-10.2.tar.gz", hash = "sha256:91497a4dc601c99ccc11ad7976ff729b57f724d9eff071bc24c519940d129dca"}, + {file = "pyobjc_framework_QuickLookThumbnailing-10.2-py2.py3-none-any.whl", hash = "sha256:34349ff0b07b39ecfe5757eb80341a45f9d4426558b93946225f8b4fa2781c4c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-replaykit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ReplayKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ReplayKit-10.1.tar.gz", hash = "sha256:c74d092afd8da7448e3b96a28d9cde09ad11269b345a5df21ce971c87671e421"}, - {file = "pyobjc_framework_ReplayKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:592cd22d78a92691d3dce98cd526e95fbb692142541a62c99d989c8941ec9f55"}, - {file = "pyobjc_framework_ReplayKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:05358af8daef82de6fa40fb5e04639d0f29d3f22f34b0901d5a224f8d2a7da69"}, - {file = "pyobjc_framework_ReplayKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:771af451363b7c81c920a1290f673501762da6f691f54920d0866028098390dd"}, + {file = "pyobjc-framework-ReplayKit-10.2.tar.gz", hash = "sha256:12544028e59ef25ea5c96ebd451cee70d1833d6b5991d3a1b324c6d81ecfb49e"}, + {file = "pyobjc_framework_ReplayKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4e34b006879ed2e86df044e3dd36482d78e6297c954aeda29f60f4b9006c8114"}, + {file = "pyobjc_framework_ReplayKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a6e7ae17d41a381d379d10bd240e1681fc83664b89495999a4dd8d0f42d4b542"}, + {file = "pyobjc_framework_ReplayKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3c57b4019563aaae3c37a250d6c064cbcb5c0d3b227b5b4f1e18bf4a1effcf0e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-safariservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SafariServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SafariServices-10.1.tar.gz", hash = "sha256:5a9105d3aea43cd214583acd06609f56ed704ce816cb103916324e8ed8388fce"}, - {file = "pyobjc_framework_SafariServices-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f672434748e7d9b303535969bcb03d99cdbf79162292ad439c0347455f38f1db"}, - {file = "pyobjc_framework_SafariServices-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:64d37455a8bd541bd799604ee9e41120cc7c9c19f26776b6d8e16f1902738b70"}, - {file = "pyobjc_framework_SafariServices-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a5aa2fb6333ec0929f6b9689992b76eb6442e5ef4bad8b5a72c7796f24898868"}, + {file = "pyobjc-framework-SafariServices-10.2.tar.gz", hash = "sha256:723de09afb718b05d03cbbed42f90d36356294b038ca6422c88d50240047b067"}, + {file = "pyobjc_framework_SafariServices-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2cd4b4210bd3c05d74d41e5bf2760e841289927601184f0e6ca3ef85019aa5dd"}, + {file = "pyobjc_framework_SafariServices-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6c8aa0becaa7d4ce0d0d1ada4e14e1eae2bf8e5be7ef49cc1861a41d3a4eeade"}, + {file = "pyobjc_framework_SafariServices-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:aecc109b096b3e995b896bfb97c09ef156600788e2a46c498bb4e2e355faa2bc"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-safetykit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SafetyKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SafetyKit-10.1.tar.gz", hash = "sha256:f1ac7201d32129c9c1a200724a5d3e75c6da8793f9c8a628be206cdebcd548e5"}, - {file = "pyobjc_framework_SafetyKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3499fd9d85c8c93ae7be2949c1b2e91e0f74b9a0d39be9c66440c40195ef4633"}, - {file = "pyobjc_framework_SafetyKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ab7d47dbcdeafb56f0c2c6e1be847e74840038c19fecbbaf883e68cd44511eb9"}, - {file = "pyobjc_framework_SafetyKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5c68ab2994c21bd32540595ec92922b0234e48fbb6998fcb22bacee46286e999"}, + {file = "pyobjc-framework-SafetyKit-10.2.tar.gz", hash = "sha256:b5822cda3b1dc0209fa58027551fa17457763275902c7d42fc23d5b13de9ee67"}, + {file = "pyobjc_framework_SafetyKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:947d42faf40b4ddd71bce75b8b913b7b67e0640fffa508562f4e502ca99426d4"}, + {file = "pyobjc_framework_SafetyKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:65feaff614eeacceb8c405030ddd79f8eda2366d2a73f44ea595f48f7969bcf0"}, + {file = "pyobjc_framework_SafetyKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a6c3201dfb649523fa2f7569ca1274d1322527e210ee19d7c2395d0e3d18e0a2"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-scenekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SceneKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SceneKit-10.1.tar.gz", hash = "sha256:f6565f3dba3bacf6099677ef713f9c95bcb9d8c4ea755c1866d113f95f110fc9"}, - {file = "pyobjc_framework_SceneKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:70d3a7f78238255bf62fab33a3e9ac20e13ec228eafd1aa0ef579b3792e5d9b9"}, - {file = "pyobjc_framework_SceneKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1bbdee819b638530c53271a4f302357cf8c829dbfc6e40b062335c900816bb01"}, - {file = "pyobjc_framework_SceneKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e179e37613814661be86c8316dd92497012cec48bb4febdc3d432ac5e7594a3f"}, + {file = "pyobjc-framework-SceneKit-10.2.tar.gz", hash = "sha256:53d2ffac43684bb7834ae570d3537bd15f2a7711b77cc9e8b7b81f63a697ba03"}, + {file = "pyobjc_framework_SceneKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac80bf8c4cf957add63a0bd2f1811097fb62eafb4fc26192f4087cd7853e85fd"}, + {file = "pyobjc_framework_SceneKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:86c3d23b63b0bb4d8fea370cb08aac778bc3fdb64b639b8b9ea87dacc54fd1cf"}, + {file = "pyobjc_framework_SceneKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:00676f4e11f3069545b07357e51781054ecf4785ed24ea8747515e018db1618c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-screencapturekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ScreenCaptureKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ScreenCaptureKit-10.1.tar.gz", hash = "sha256:a00d85c97bf0cdd454d57181c371f372b8549c4edd949e2b66f42782f426f855"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bc05248b9ae9ed4aa474b4e54927216046c284a4c6c27d30db9df659887b7b1d"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:98eaec608bd9858a265541b14d6708bcc0b8c8276c2a5b41b80d828c0c2a8c64"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ff8657865f6280a942d175b87933ff0f1b6064e672a7f1efb5e66d864b435c27"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:30615c2a9f0a04cca41afe0cee21e3179f72f055e9cac94fe1e4f31fcccb0919"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:2cbd9957e9823615a494b2fd6815688eb0ad2eed7df007b25e3f7d83261653a9"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a3b732bad05c973844ea3b25ccabf0d41b4c3eec4f7b5d78650337685cb43142"}, + {file = "pyobjc-framework-ScreenCaptureKit-10.2.tar.gz", hash = "sha256:86f64377be94db1b95e77ca53301ed94c0a7a82c0251c9e960bcae24b6a5841b"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e15b0af8a1155b7bc975ccd54192c5feae2706a8e17da6effa4273a3302d4dce"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bdcc687d022b8b6264dca74c1f72897c91528b0c701d76f1466faeead8030a11"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f53caee8edca7868449f2cce60574cedea4299c324fa692c944824a627b7b8a4"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4cdd6add328e2318550df325210c83d1de68774a634d3914da2bfbd1cb7d929f"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:e51c6c632b1c6ff773cfcf7d3e2b349693e06d52259b8c8485cfaa6c6cd602b3"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b63d9dc8635e7a3e59163a4abc13a9014de702729a55d290a22518702f4679fc"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" [[package]] name = "pyobjc-framework-screensaver" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ScreenSaver on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ScreenSaver-10.1.tar.gz", hash = "sha256:d1b890c7cae9e5c43582fe834aebcb6a1ecf52467a8ed7a28ba9d873bbf582d5"}, - {file = "pyobjc_framework_ScreenSaver-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b464de6398ef3a700c4ac19ed92b25cf2d30900b574533a659967446fddede3b"}, - {file = "pyobjc_framework_ScreenSaver-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cc8f81b2073920ca84d8e83435b95731e798ad422e0a3d67b09feb208a3920c6"}, - {file = "pyobjc_framework_ScreenSaver-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:96868cd9dc6613144821bb4db50ca68efa3ae8e07c31a626ce02d78b4eeaaeff"}, + {file = "pyobjc-framework-ScreenSaver-10.2.tar.gz", hash = "sha256:00c6a312467abb516fd2f19e3166c4609eed939edc0f2c888ccd8c9f0fdd30f1"}, + {file = "pyobjc_framework_ScreenSaver-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:830b2fc85ff7d48824eb6f12100915c2aa480a1a408b53c30f6b81906dc8b1ea"}, + {file = "pyobjc_framework_ScreenSaver-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1cb8a31bd2a0597727553d0459c91803bf02c52ffb5ac94aa5ad484ddc46d88d"}, + {file = "pyobjc_framework_ScreenSaver-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ca00a5c4cd89450e629962bfafe6a4a25b7bae93eb3fdd3ecb314c6c5755cbcf"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-screentime" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ScreenTime on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ScreenTime-10.1.tar.gz", hash = "sha256:6221e0f5122042b280212a6555f72d94020c2fd62319c4562cdfc7b58960dd07"}, - {file = "pyobjc_framework_ScreenTime-10.1-py2.py3-none-any.whl", hash = "sha256:734e090debb954a890a564869f2af20b55b9f7b7875d360795c9875279d09bd9"}, + {file = "pyobjc-framework-ScreenTime-10.2.tar.gz", hash = "sha256:fd516f0dd7c16f15ab6ed3eeb8180460136f72b7eaa3d6e849d4a462438bfdf2"}, + {file = "pyobjc_framework_ScreenTime-10.2-py2.py3-none-any.whl", hash = "sha256:43afabfd0fd61eed91f11aba3de95091a4f05d7c7e63341f493026e5ff7b90e4"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-scriptingbridge" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ScriptingBridge on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ScriptingBridge-10.1.tar.gz", hash = "sha256:7dce35a25d1f3b125e4b68a07c7f9eaa33fc9f00dde32356d0f7f73eb09429a3"}, - {file = "pyobjc_framework_ScriptingBridge-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:15e60d3783d7611f4d35e6b2905921a01162cfa04eb1a6426135585c84806d19"}, - {file = "pyobjc_framework_ScriptingBridge-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:30c0aac8623d0e96442801219004c32d527d4b4bbbf5c271517d73c5eeae85a3"}, - {file = "pyobjc_framework_ScriptingBridge-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ca0dc8ccb443f5a3ab9afb500d6c730723faf38c5880a243a65b4e44be64fa55"}, + {file = "pyobjc-framework-ScriptingBridge-10.2.tar.gz", hash = "sha256:c02d88b4a4d48d54ce2260f5c7e1757e74cd91281352cdd32492a4c7ee4b0e7c"}, + {file = "pyobjc_framework_ScriptingBridge-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:466ad2d483edadf97dc38629c393902a790141547e145e83f6bd34351d10f4c9"}, + {file = "pyobjc_framework_ScriptingBridge-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1e3e0c19afd0f8189ebee5c57ab2b0c177dddccc9b56811c665ec6848007ac6a"}, + {file = "pyobjc_framework_ScriptingBridge-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:560dff883edd251f1e0bf86dde681c1e19845399720fd2434734c91120eafdd0"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-searchkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SearchKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SearchKit-10.1.tar.gz", hash = "sha256:75234ee6e8490cf792453bf9a9854d7b5f1cebd65e81903d5ce0ecc3e65fc277"}, - {file = "pyobjc_framework_SearchKit-10.1-py2.py3-none-any.whl", hash = "sha256:2e42e7cacb0a7f9b327d1c770e52fe13dfaaac377cb4e413b609e478993552e0"}, + {file = "pyobjc-framework-SearchKit-10.2.tar.gz", hash = "sha256:c1e16457e727c5282b620d20b2d764352947cd4509966475a874f2750a9c5d11"}, + {file = "pyobjc_framework_SearchKit-10.2-py2.py3-none-any.whl", hash = "sha256:ddd9e2f207ae578f04ec2358fdf485f26978d6de4909640b58486a8a9e4e639c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-CoreServices = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-CoreServices = ">=10.2" [[package]] name = "pyobjc-framework-security" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Security on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Security-10.1.tar.gz", hash = "sha256:33becccea5488a4044792034d8cf4faf1913f8ca9ba912dceeaa54db311bd284"}, - {file = "pyobjc_framework_Security-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:72955f4faf503e6a41076fcaa3ec138eb1cc794f483db77104acf2ee480f8a04"}, - {file = "pyobjc_framework_Security-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b02075026d78feda8c1af9462199c2cde65b87e4adde65b90ca6965f06cb422"}, - {file = "pyobjc_framework_Security-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1d19785d8531a6cdcdbb4c545b560f63306ff947592e7fad27811f87ee64854c"}, - {file = "pyobjc_framework_Security-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:569a9243d4044e3e433335ded891dc357880787df647de8220659f022a03f467"}, - {file = "pyobjc_framework_Security-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d8b8c402c395ac3868727f04e98b2ded675534de1349df8f5813b3c483b50a2c"}, - {file = "pyobjc_framework_Security-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:aaca360a28b6333a8a93b091426daa5ffd22006bbb1122d3d6a78d33177f612a"}, + {file = "pyobjc-framework-Security-10.2.tar.gz", hash = "sha256:20ec8ebb41506037d54b40606590b90f66a89adceeddd9a40674b0c7ea7c8c82"}, + {file = "pyobjc_framework_Security-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5a9c1bf88db62ebe1186dbecb40c6fdf8dab2d614012b5da8e9b90ee3bd8575e"}, + {file = "pyobjc_framework_Security-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9119f8bad7bead85e5b57c8538d319ef19eb5159500a0e3677c11ddbb774a17a"}, + {file = "pyobjc_framework_Security-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:317add1dcbc6866ce2e9389ef5a2a46db82e042aca6e5fad9aa5ce17782493fe"}, + {file = "pyobjc_framework_Security-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:75f061f0d03c3099d01b7818409eb602b882f6a31b4381bbf289f10ce1cf7753"}, + {file = "pyobjc_framework_Security-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d99aeba0e3a7ee95bf5582b06885a5d6f8115ff3a2e47506562514117022f170"}, + {file = "pyobjc_framework_Security-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:186a97497209acdb8d56aa7bbd56ab8021663fff2fb83f0d0e1b4e1f57ac5bbb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-securityfoundation" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SecurityFoundation on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SecurityFoundation-10.1.tar.gz", hash = "sha256:11def85a7a4ea490fa24df79d01ea137f378534fedf1da248068ddf137f38c7e"}, - {file = "pyobjc_framework_SecurityFoundation-10.1-py2.py3-none-any.whl", hash = "sha256:bbd67737afec25f2e3d41c8c2e7b4a6f9aae4231242e215b82a950eef6432ce0"}, + {file = "pyobjc-framework-SecurityFoundation-10.2.tar.gz", hash = "sha256:ed612afab0f70e24b29f2e2b3a31cfefb1ad17244b5c147e7bcad8dfc7e60bd1"}, + {file = "pyobjc_framework_SecurityFoundation-10.2-py2.py3-none-any.whl", hash = "sha256:296f7f9ff96a35c19e4aef7621a567c0efe584aafd20ac25a2839dd96bf46a04"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Security = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Security = ">=10.2" [[package]] name = "pyobjc-framework-securityinterface" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SecurityInterface on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SecurityInterface-10.1.tar.gz", hash = "sha256:444a0dc7d50390750c28185b6496ee913011ac886d9e634bfc9a0856372d0a94"}, - {file = "pyobjc_framework_SecurityInterface-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c0e52408e25845a960b0fe339c274650fd211f9fee5944c643d9ba16861e45ac"}, - {file = "pyobjc_framework_SecurityInterface-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:bef4a63d31808531f5806006945d1f9b5650221e4adc973302387ab7b2e1b349"}, - {file = "pyobjc_framework_SecurityInterface-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:479e555df16ff7f79bf7622ab3341b0ef176fbd85ef3f7301931a57d2def682f"}, + {file = "pyobjc-framework-SecurityInterface-10.2.tar.gz", hash = "sha256:43930539fed05e74f3c692f5ee7848681e7e65c44387af300447514fe8e23ab6"}, + {file = "pyobjc_framework_SecurityInterface-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:70f2cb61261e84fb366f43a9a44fb19a19188cf650d3cf3f3e6ee3a16a73e62d"}, + {file = "pyobjc_framework_SecurityInterface-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:52a18a18af6d47f7fbdfeef898a038ff3ab7537a694c591ddcf8f895b9e55cce"}, + {file = "pyobjc_framework_SecurityInterface-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b2472e3714cc17b22e5bb0173887aac77c80ccc2188ec2c40d2b906bd2490f6b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Security = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Security = ">=10.2" [[package]] name = "pyobjc-framework-sensitivecontentanalysis" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SensitiveContentAnalysis on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SensitiveContentAnalysis-10.1.tar.gz", hash = "sha256:435906a3fcc6cba50cd7c5bfd693368c6042c17c5f64bcd560a3761d947425de"}, - {file = "pyobjc_framework_SensitiveContentAnalysis-10.1-py2.py3-none-any.whl", hash = "sha256:472c0fb0f1ad9c370cbc7cf636bb5888cbcf0ee8c9ecb9c5f6de25e2587771e5"}, + {file = "pyobjc-framework-SensitiveContentAnalysis-10.2.tar.gz", hash = "sha256:ef111cb8a85bc86e47954cdb01e3ccb654aba64a3d855f17a0c786361859aef8"}, + {file = "pyobjc_framework_SensitiveContentAnalysis-10.2-py2.py3-none-any.whl", hash = "sha256:3c875856837e217c9eba68e5c2b4f5b862dee1bb64513b463a7af8c3e67e5a50"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-servicemanagement" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ServiceManagement on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ServiceManagement-10.1.tar.gz", hash = "sha256:ebe38b80ed74112fdd356e19165c365f6281baad83818774a0da6d790fd13044"}, - {file = "pyobjc_framework_ServiceManagement-10.1-py2.py3-none-any.whl", hash = "sha256:d05289948558cf4c7fbc101946f6ccadcc33826b2056c14d5494a8ae7f136936"}, + {file = "pyobjc-framework-ServiceManagement-10.2.tar.gz", hash = "sha256:62413cd911932cc16262710a3853061fdae341ed95e1aa0426b4ff0011d18c0c"}, + {file = "pyobjc_framework_ServiceManagement-10.2-py2.py3-none-any.whl", hash = "sha256:e5a1c1746788d0e125cc87cbe0749b2b824fb7a08bc4344c06c9ac6007859187"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-sharedwithyou" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SharedWithYou on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SharedWithYou-10.1.tar.gz", hash = "sha256:bcac8ffa2642589a416c62ff436148586db9c41f92419a0164b1e9d6f6c73e38"}, - {file = "pyobjc_framework_SharedWithYou-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:05fceedcd7b6e8753cb8dc5f09a947686dd454c304965c959bc101cfd7349fcd"}, - {file = "pyobjc_framework_SharedWithYou-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6f4f9fb6d335b54eb0a02b277ca8a2cb87962a579bafdc9df5f94c8af1063ee4"}, - {file = "pyobjc_framework_SharedWithYou-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a1c7c688c15117f1c6ea638e83285ce1b2fbd9d8c76ee405e43b24fa4fea766d"}, + {file = "pyobjc-framework-SharedWithYou-10.2.tar.gz", hash = "sha256:bc13756ef20af488cd3022c036a11a0f7572e1b286e9eb7d31c61a8cb7655c70"}, + {file = "pyobjc_framework_SharedWithYou-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b69169db01c78bef3178b8795fb5e2a9eccfa4c26b7de008e23a5aa6f0c709f0"}, + {file = "pyobjc_framework_SharedWithYou-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e4ec724f103b0904893212d473c68c462f8fbe46a470b0c9f88cb8330969a94e"}, + {file = "pyobjc_framework_SharedWithYou-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:04b477d42a6edd25c187fc61422ce62156fd5d8670b7007ff3f1a10723b1b4b8"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-SharedWithYouCore = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-SharedWithYouCore = ">=10.2" [[package]] name = "pyobjc-framework-sharedwithyoucore" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SharedWithYouCore on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SharedWithYouCore-10.1.tar.gz", hash = "sha256:2b4f62b0df4bd44198f6d3a3aae4d054592261d36fc2af71f9dd81744aa99815"}, - {file = "pyobjc_framework_SharedWithYouCore-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a7f41415a3ca40d4ee18955155a4141e0d2d55e713b513aa567305ae54716cb7"}, - {file = "pyobjc_framework_SharedWithYouCore-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc133f07a71cb828073dc671cb1e8ffa5bde714b376a8eba0a8110ac41927ae9"}, - {file = "pyobjc_framework_SharedWithYouCore-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d7169a2492ed4fd7d45ad0eafbecebffec0b22f08e756f2e251eda62cd5ba42a"}, + {file = "pyobjc-framework-SharedWithYouCore-10.2.tar.gz", hash = "sha256:cc8faa9f549f6c931be33cf99f49b8cde11db52cb542e3797c3a27f98e5e9a2a"}, + {file = "pyobjc_framework_SharedWithYouCore-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:275b50a6b9205b1c0a08632c2ede98293b26df28d6c35bc34714ec9d5a7065d6"}, + {file = "pyobjc_framework_SharedWithYouCore-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:55aaac1bea38e566e70084cbe348b2af0f5cda782c8da54c6bbbd70345a50b27"}, + {file = "pyobjc_framework_SharedWithYouCore-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b118ba79e7bb2fab26369927316b90aa952795976a29e7dc49dcb47a87f7924c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-shazamkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ShazamKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ShazamKit-10.1.tar.gz", hash = "sha256:d091c5104adda8d54e65463862550e59f86646fdafcdcd234c9a7a2624584f1d"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6670ed380dacc6aa86f571a18d9e321bd075da11bf144cba2802b19bb0868a21"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d4efd57dac3f50621cc23be38cefbd6c80b4b55f0339312b4f2a340cd6ffde9b"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:07e58fc6b70bf961f230044cf46324ab4239864955299957e231ba7cda8fafa9"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be2da82d9a58c2605a1a17a88fbc389931b8fd8ad7d60926755b50316fe5e04f"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:e500c6794f2b7cea57dea6f64c1fc9e067a14ddb9446e9d7739dcb57683b5a8a"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4289a1109148a1a314c6bae9b33e90eca6d18a06a767b431cdff1178024f3310"}, + {file = "pyobjc-framework-ShazamKit-10.2.tar.gz", hash = "sha256:f3359be7a0ffe0084d047b8813dd9e9b5339a0970baecad89cbe85513e838e74"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a33d2ad28cc7731e67906eccf324c441383ba741399c88e993b5375e734509ba"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13976c21722389e81d9e10ab419dfb0904f48cec639f0932aada0f039d78dac3"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:380992e9da3000ebefe45b50f65ed3bf88ba87574c4a6486a29553cfbfc04c22"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e8494bfcf6ceb8b59e1bf2678073e00155f6dd2afbec01eaefd2128d3a4f5c76"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:71cb7db481c791a52d261b924063431b72c4c288afd14a00cf7106274596a1c3"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0a537e1f86f47ddde742fd0491173c669e6cda6b9edddbe72e56a148a40111f8"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-social" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Social on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Social-10.1.tar.gz", hash = "sha256:50757d982c712090e93b6ee4bd97ed3f6acfe7005f981f060433e94b7aca818b"}, - {file = "pyobjc_framework_Social-10.1-py2.py3-none-any.whl", hash = "sha256:81363d9d06c9c8ede16d96ec1d3cdba6deef195ef54cc64618e58c7fc1f574df"}, + {file = "pyobjc-framework-Social-10.2.tar.gz", hash = "sha256:34995cd0c0f6c4adbe7bfa9049463058c7a8676d34d3d5b9de37f87416f22a0a"}, + {file = "pyobjc_framework_Social-10.2-py2.py3-none-any.whl", hash = "sha256:76ed463e3a77c58e5b527c37eb8b2dd60658dd736ba243cfa24b4704580b58c4"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-soundanalysis" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SoundAnalysis on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SoundAnalysis-10.1.tar.gz", hash = "sha256:42e0ae24f11ef8cf097c71e5b2378eaba26f66cb39959fec4ca79812bc0ed417"}, - {file = "pyobjc_framework_SoundAnalysis-10.1-py2.py3-none-any.whl", hash = "sha256:a33bc8a1ecee11387beb9db06aaf9c362f7dc171d60da913277ac482d67beabb"}, + {file = "pyobjc-framework-SoundAnalysis-10.2.tar.gz", hash = "sha256:960434f16a130da4fe5cd86ceac832b7eb17831a1e739472f7636aceea65e018"}, + {file = "pyobjc_framework_SoundAnalysis-10.2-py2.py3-none-any.whl", hash = "sha256:a09b49acca76a3c161b937002e5d034cf32c33d033677a8143d446eb53ca941d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-speech" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Speech on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Speech-10.1.tar.gz", hash = "sha256:a9eddebd4e4bcdb9c165129bea510c5e9f1353528a8211cc38c22711792bf30d"}, - {file = "pyobjc_framework_Speech-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0cc26aca43d738d25f615def32eb8ce27675fc616584c009e57f6b82dec75cc5"}, - {file = "pyobjc_framework_Speech-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9a448c58149f5bbf0128f2c6492ea281b51f50bdc4f0ecd52bea43c80f7e2063"}, - {file = "pyobjc_framework_Speech-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:76a528fc587c8eb86cdba61bf6b94ddb7e3fb38a41f1a46217e2ce7fc21d6c26"}, + {file = "pyobjc-framework-Speech-10.2.tar.gz", hash = "sha256:4cb3445ff31a3f8d50492d420941723e07967b4fc4fc46c336403d8ca245c086"}, + {file = "pyobjc_framework_Speech-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:175195f945d89d2382c0f6052b798ef3ee41384b8bfa4954c16add126dc181f6"}, + {file = "pyobjc_framework_Speech-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c65cbda4b8d357b80d41695b1b505a759d3be8b63bca9dd7675053876878577"}, + {file = "pyobjc_framework_Speech-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b139f64cc3636f1cfdc78a4071068d34e9ea70283201fd7a821e41d5bbbcf306"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-spritekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SpriteKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SpriteKit-10.1.tar.gz", hash = "sha256:998be1d6c7fd5cc66bd54bae37c45cf3394df7bc689b5d0c813f0449c8eee53f"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:23f6657e48f7d8cb434bcf6a76b2c336eb29be69ade933f88299465a0c83cb3b"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b5556d8469b20fe35a0ec5f9e493c30ebc531bce3be4e48fc99cb87338ba5cfb"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:aa51855f7bfed3dc1bcda95b140d71c4dc1e21c3480216df19f6fddc7dc7ce39"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2210920a4f9a39dc3bea9287e012cdfb740a0748faa6ab13bf8a58d07da913cc"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:66df1436d17bf0c17432d2d66ebeef8efee012240297e5aabc1118b014947375"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5564ed8648afba01f9877062204ed03d3fef8a980b6b4155c69d3662e4732947"}, + {file = "pyobjc-framework-SpriteKit-10.2.tar.gz", hash = "sha256:31b3e639a617c456574df8f3ce18275eff613cf49e98ea8df974cda05d13a7fc"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7b312677a70a7fe684af8726a39837e935fd6660f0271246885934f60d773506"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a8e015451fa701c7d9b383a95315809208145790d8e68a542def9fb10d6c2ce2"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:803138edacb0c5bbc40bfeb964c70521259a7fb9c0dd31a79824b36be3942f59"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ae44f20076286dd0d600f9b4c8c31f144abe1f44dbd37ca96ecdba98732bfb4a"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9f5b65ac9fd0a40e28673a15c6c7785208402c02422a1e150f713b2c82681b51"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a8f2e140ad818d6891f654369853f9439d0f280302bf5750c28df8a4fcc019ec"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-storekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework StoreKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-StoreKit-10.1.tar.gz", hash = "sha256:4e91d77d1b9745eca6730ddf6cde964e2bd956fafad303591f671ebd1d4de64b"}, - {file = "pyobjc_framework_StoreKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:456641cbe97eab4bb68dccec6f8bf3bc435adaa0b2ae6a7a4a3da0adc84a9405"}, - {file = "pyobjc_framework_StoreKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:356966d260bd1e19c7cdba7551b3e477078d3d4b0df04b7f38013dd044913727"}, - {file = "pyobjc_framework_StoreKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:652657006d3c8fefcdbb662f8f33ef6ee8e01ba30a0b4d6e2fcd2e4046951766"}, + {file = "pyobjc-framework-StoreKit-10.2.tar.gz", hash = "sha256:44cf0b5fe605b9e5dc6aed2ae9e09d807d04d5f2eaf78afb8c04e3f109a0d680"}, + {file = "pyobjc_framework_StoreKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f9e511ebf2d954f10999c2a46e5ecffee0235e0c35eda24c8fcfdb433768935d"}, + {file = "pyobjc_framework_StoreKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e22a701666a787d4df9f45bf1507cf41e45357b22c55ad79c608b24a506981e1"}, + {file = "pyobjc_framework_StoreKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:44c0a65bd39e64e276d8a7b991d93b59b149b3b886cadddb6a38253d48b123e5"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-symbols" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Symbols on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Symbols-10.1.tar.gz", hash = "sha256:63f5345fa90b31ea017c01ffd39e6e0289ef0258c6af7941263083d2289f5d3d"}, - {file = "pyobjc_framework_Symbols-10.1-py2.py3-none-any.whl", hash = "sha256:88b48102ba33ac3d8bc5c047cc892ab21e8e102c3b25b4186b77c5d1f5c1bc40"}, + {file = "pyobjc-framework-Symbols-10.2.tar.gz", hash = "sha256:b1874e79fdcaf65deaadda35a3c9dbd24eb92d7dc8aa4db5d7f14f2b06d8a312"}, + {file = "pyobjc_framework_Symbols-10.2-py2.py3-none-any.whl", hash = "sha256:3b5fa1e162acb04eab092e0e1dbe686e2fb61cf648850953e15314edb56fb05f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-syncservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SyncServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SyncServices-10.1.tar.gz", hash = "sha256:644d394b84468fa6178b5aa609771252ca416ca2be2bac5501222b3c5151846d"}, - {file = "pyobjc_framework_SyncServices-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:edf7d5de135ec44b8ecf260265cb7bd9bf938d3fcc2204282aea674a86918c60"}, - {file = "pyobjc_framework_SyncServices-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:53ef6096359d182952fdb40734f17302edf35757578c0c52314f703322d855cb"}, - {file = "pyobjc_framework_SyncServices-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b9d7ec3f784fc89847ad136bb3d67d159310a2e072a724d4ffddccf0ee5dec2b"}, + {file = "pyobjc-framework-SyncServices-10.2.tar.gz", hash = "sha256:1c76073484924201336e6aab40f10358573bc640a92ed4066b8062c748957576"}, + {file = "pyobjc_framework_SyncServices-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf40e4194bd42bb447212037876ca3e90e0e5a7aa21e59a6987f300209a83fb7"}, + {file = "pyobjc_framework_SyncServices-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4e438c0cf74aecb95c2a86db9c39236fee3edf0a91814255e2aff18bf24e7e82"}, + {file = "pyobjc_framework_SyncServices-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:dffc9ddf9235176c1f1575095beae97d6d2ffa9cffe9c195f815c46f69070787"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreData = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreData = ">=10.2" [[package]] name = "pyobjc-framework-systemconfiguration" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SystemConfiguration on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SystemConfiguration-10.1.tar.gz", hash = "sha256:7e125872d4b54c8d04f15d83e7f7f706c18bd87960b3873c797e6a71b95030b0"}, - {file = "pyobjc_framework_SystemConfiguration-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ab80e4272937643de8569a711e5adee8afca2bf071b6cfc6b7fc4143010d258"}, - {file = "pyobjc_framework_SystemConfiguration-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:431c32557bde3dad18fb245bf1e5ce80963f28caa4d2691b5a82e6db2b5efc2f"}, - {file = "pyobjc_framework_SystemConfiguration-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7e8ae510b11ceca8800bc7b4b0c7735cf26de803771199d6c2d8f24fbb5467df"}, + {file = "pyobjc-framework-SystemConfiguration-10.2.tar.gz", hash = "sha256:e9ec946ca56514a68e28040c55c79ba105c9a70b56698635767250e629c37e49"}, + {file = "pyobjc_framework_SystemConfiguration-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d25ff4b8525f087fc004ece9518b38d365ef6bbc06e4c0f847d70cb72ca961df"}, + {file = "pyobjc_framework_SystemConfiguration-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2fc0a9d1c1c6a5d5b9d9289ee8e5de0d4ef8cb4c9bc03e8a33513217580a307b"}, + {file = "pyobjc_framework_SystemConfiguration-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d33ebea6881c2e4b9ddd03f8def7495dc884b7e53fe3d6e1340d9f9cc7441878"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-systemextensions" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SystemExtensions on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SystemExtensions-10.1.tar.gz", hash = "sha256:3eb7ad8f1a6901294b02cd6d6581bd6960a48fcfd82475f5970d1c909f12670d"}, - {file = "pyobjc_framework_SystemExtensions-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8dc306dd07f9ff071759bb2237b7f7fddd0d2624966bdb0801dc5a70b026f431"}, - {file = "pyobjc_framework_SystemExtensions-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c76c6d7dbf253abe11ebfa83bbbfa7f2fc4c700db052771075c26dabbd5ee1e9"}, - {file = "pyobjc_framework_SystemExtensions-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:2586323fbe9382edebd7ca5dfe50b432c842b7ef45ef26444edcb7238bcf006f"}, + {file = "pyobjc-framework-SystemExtensions-10.2.tar.gz", hash = "sha256:883c41cb257fb2b5baadafa4213dc0f0fffc97edb35ebaf6ed95a185a786eb85"}, + {file = "pyobjc_framework_SystemExtensions-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8a85c71121abe33a83742b84d046684e30e5400c5d2bbb4bca4322c4e9d5506b"}, + {file = "pyobjc_framework_SystemExtensions-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3374105ebc3992e8898b46ba85e860ac1f2f24985c640834bf2b9da26a8f40a7"}, + {file = "pyobjc_framework_SystemExtensions-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5b699c94a05a7253d803fb75b6ea5c67d2c59eb906deceb7f3d0a44f42b5d7a8"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-threadnetwork" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ThreadNetwork on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ThreadNetwork-10.1.tar.gz", hash = "sha256:72694dce8b10937f4d8fef67d14e15fa65ba590dec8298df439fd0cc953a83fa"}, - {file = "pyobjc_framework_ThreadNetwork-10.1-py2.py3-none-any.whl", hash = "sha256:720d4a14619598431a22be2a720bf877f996d65cee430b96c5d7ec833b676b68"}, + {file = "pyobjc-framework-ThreadNetwork-10.2.tar.gz", hash = "sha256:864ebabdb187cef16e1fba0f5439a73b1ed9a4e66b888f7954b12150c323c0f8"}, + {file = "pyobjc_framework_ThreadNetwork-10.2-py2.py3-none-any.whl", hash = "sha256:f7ad31b4a67f9ed00097a21c7bbd48ffa4ce2c22174a52ac508beedf7cb2aa9e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-uniformtypeidentifiers" -version = "10.1" +version = "10.2" description = "Wrappers for the framework UniformTypeIdentifiers on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-UniformTypeIdentifiers-10.1.tar.gz", hash = "sha256:e8a6e8d4c3c6d8213d18fab44704055a5fca91e0a74891b4f1bfe6574cd51d97"}, - {file = "pyobjc_framework_UniformTypeIdentifiers-10.1-py2.py3-none-any.whl", hash = "sha256:4c867b298956d74398d2b6354bd932dc109431d9726c8ea2fc9c83e6946a2a7d"}, + {file = "pyobjc-framework-UniformTypeIdentifiers-10.2.tar.gz", hash = "sha256:4d3e7add89766fe7abc6fd6e29387e92d7b38343b37d365607c9d287c5e758f6"}, + {file = "pyobjc_framework_UniformTypeIdentifiers-10.2-py2.py3-none-any.whl", hash = "sha256:25b72005063a88c5e67bf91d1355973f4bbf3dd7c1b3fb8eb00503020a837b33"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-usernotifications" -version = "10.1" +version = "10.2" description = "Wrappers for the framework UserNotifications on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-UserNotifications-10.1.tar.gz", hash = "sha256:eca638b04b60d5d8f5efecafc1fd021a1b55d4a6d1ebd22e65771eddb3dd478f"}, - {file = "pyobjc_framework_UserNotifications-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a44b89659eae1015da9148fc24f931108ff7a05ba61509bfab34af50806beb0c"}, - {file = "pyobjc_framework_UserNotifications-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:00aa84f29bcbe8f302d20c96ef51fb48af519d83e0b72d22bd075ea1af86629f"}, - {file = "pyobjc_framework_UserNotifications-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fe9170b5c4da8e75288ada553cc821b9e3fc1279eb56fa9e3d4278b35a26c5ce"}, + {file = "pyobjc-framework-UserNotifications-10.2.tar.gz", hash = "sha256:3a1b7d77c95dff109f904451525752ece3c38f38cfa0825fd01735388c2b0264"}, + {file = "pyobjc_framework_UserNotifications-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f4ce290d1874d8b4ec36b2fae9181fa230e6ce0dced3aeb0fd0d88b7cda6a75a"}, + {file = "pyobjc_framework_UserNotifications-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8bc0c9599d7bbf35bb79eb661d537d6ea506859d2f1332ae2ee34b140bd937ef"}, + {file = "pyobjc_framework_UserNotifications-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:12d1ea6683af36813e3bdbdb065c28d71d01dfed7ea4deedeb3585e55179cbbb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-usernotificationsui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework UserNotificationsUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-UserNotificationsUI-10.1.tar.gz", hash = "sha256:09df08f47a7e605642a6c6846e365cab8b8631a7f87b41a65c35c52e484b9f8a"}, - {file = "pyobjc_framework_UserNotificationsUI-10.1-py2.py3-none-any.whl", hash = "sha256:6640c6d04f459b6927096696dac98ce5fcb702a507a757d6d1b909b341bb8a0d"}, + {file = "pyobjc-framework-UserNotificationsUI-10.2.tar.gz", hash = "sha256:f476d4a9f5b0746beda3d06ed6eb8a1b072372e644c707e675f4e11703528a81"}, + {file = "pyobjc_framework_UserNotificationsUI-10.2-py2.py3-none-any.whl", hash = "sha256:b0909b11655a7ae14e54ba6f80f1c6d34d46de5e8b565d0a51c22f87604ad3d3"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-UserNotifications = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-UserNotifications = ">=10.2" [[package]] name = "pyobjc-framework-videosubscriberaccount" -version = "10.1" +version = "10.2" description = "Wrappers for the framework VideoSubscriberAccount on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-VideoSubscriberAccount-10.1.tar.gz", hash = "sha256:6410c68ea37a4ba4667b8c71fbfd3c011bf6ecdb9f1d6adf3c9a35584b7c8804"}, - {file = "pyobjc_framework_VideoSubscriberAccount-10.1-py2.py3-none-any.whl", hash = "sha256:f32716070f849989e3ff052effb54f951b89a538208651426848d9d924ac1625"}, + {file = "pyobjc-framework-VideoSubscriberAccount-10.2.tar.gz", hash = "sha256:26ea7fe843ba316eea90c488ed3ff46651b94b51b6e3bd87db2ff93f9fa8e496"}, + {file = "pyobjc_framework_VideoSubscriberAccount-10.2-py2.py3-none-any.whl", hash = "sha256:300c9f419821aab400ab9798bed9fc659984f19eb8577934e6faae0428b89096"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-videotoolbox" -version = "10.1" +version = "10.2" description = "Wrappers for the framework VideoToolbox on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-VideoToolbox-10.1.tar.gz", hash = "sha256:56c9d4b74965fe79f050884ffa560ff71ffe709c24923d3d0b34459fb626eb11"}, - {file = "pyobjc_framework_VideoToolbox-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a4115690b8ed4266e52a4d200c870e68dd03119993280020a1a4d6a9d4764fcf"}, - {file = "pyobjc_framework_VideoToolbox-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:64874d253c2996216c6d56e03e848cf845c3f0eac84d06ba97d83871dbf19490"}, - {file = "pyobjc_framework_VideoToolbox-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:977b2981532442c4c99fff75ffcc2b5a4b0f8108abcabdafcda2addf8b2ffa21"}, + {file = "pyobjc-framework-VideoToolbox-10.2.tar.gz", hash = "sha256:347259a8e920dbc3dd1fada5ab0d829485cef3165166fa65f78c23ada4f9b80a"}, + {file = "pyobjc_framework_VideoToolbox-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb8147d673defdb02526b80b1584369f94b94721016950bb12425b2309b92c88"}, + {file = "pyobjc_framework_VideoToolbox-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6527180eede44301c21790baa7e1a5f5429893e3995e61640f3941c3b6fb08f9"}, + {file = "pyobjc_framework_VideoToolbox-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:de55d7629a9659439901a16d6074e9fc9b229e93a555097a1c92e0df6cfb5cdb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-virtualization" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Virtualization on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Virtualization-10.1.tar.gz", hash = "sha256:48f2484a7627caa246f55daf203927f10600e615e620a2d9ca22e483ed0bb9b4"}, - {file = "pyobjc_framework_Virtualization-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a434c40038c0c1acd31805795f28f959ea231252dc3ab34ed5a268c21227682c"}, - {file = "pyobjc_framework_Virtualization-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8ad3e40ec5970e881f92af337354be68c1f2512690545a2da826684daeaa3535"}, - {file = "pyobjc_framework_Virtualization-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:2aba907617075394718bc8883c650197e21b2ea0d284ca51811229386114040a"}, + {file = "pyobjc-framework-Virtualization-10.2.tar.gz", hash = "sha256:49eb8d0ec3017c2194620f0698e95ccf20b8b706c73ab3b1b50902c57f0f86ff"}, + {file = "pyobjc_framework_Virtualization-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:492daa384cf3117749ff35127f81313bd1ea9bbd09385c2a882b82ca4ca0797e"}, + {file = "pyobjc_framework_Virtualization-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1bea91b57d419d91e76865f9621ba4762793e05f7a694cefe73206f3a19b4eda"}, + {file = "pyobjc_framework_Virtualization-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c1198bcd31e4711c6a0c6816c77483361217a1ed2f0ad69608f9ba5633efc144"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-vision" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Vision on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Vision-10.1.tar.gz", hash = "sha256:ff50fb7577be8d8862a076a6cde5ebdc9ef07d9045e2158faaf0f04b5b051208"}, - {file = "pyobjc_framework_Vision-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c6330d8b22f75f1e7d9a5456f3e2c7299d05d575b2e9b2f1e50230b18f17abed"}, - {file = "pyobjc_framework_Vision-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:91b4d740b6943f6b228915ece2e027555f28ccf49c8d063a580b8f9e5af56fd0"}, - {file = "pyobjc_framework_Vision-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:bb2d7334b4b725c5e5346a8cce2a0064259a09e90ec189b0c776304d5fc01e49"}, + {file = "pyobjc-framework-Vision-10.2.tar.gz", hash = "sha256:722e0a6da64738b5fc3c763a102445cad5892c0af94597637e89455099da397e"}, + {file = "pyobjc_framework_Vision-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:42b7383c317c2076edcb44f7ad8ed4a6e675250a3fd20e87eef8e0e4233b1b58"}, + {file = "pyobjc_framework_Vision-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5e3adb56fca35d41a4bb113f3eadbe45e9667d8e3edf64908da3d6b130e14a8c"}, + {file = "pyobjc_framework_Vision-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e424d106052112897c8aa882d8334ac984e12509f9a473a285827ba47bfbcc9a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreML = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreML = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-webkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework WebKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-WebKit-10.1.tar.gz", hash = "sha256:311974b626facee73cab5a7e53da4cc8966cbe60b606ba11fd0f3547e0ba1762"}, - {file = "pyobjc_framework_WebKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ad9e1bd2fa9885818e1228c60e0d95100df69252f230ea8bb451fae73fcace61"}, - {file = "pyobjc_framework_WebKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c901fc6977b3298de789002a76a34c353ed38faedfc5ba63ef94a149ec9e5b02"}, - {file = "pyobjc_framework_WebKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f2d45dfc2c41792a5a983263d5b06c4fe70bf2f24943e2bf3097e4c9449a4516"}, + {file = "pyobjc-framework-WebKit-10.2.tar.gz", hash = "sha256:3717104dbc901a1bd46d97886c5adb6eb32798ff4451c4544e04740e41706083"}, + {file = "pyobjc_framework_WebKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0d128a9e053b3dfaa71857eba6e6aadfbde88347382e1e58e288b5e410b71226"}, + {file = "pyobjc_framework_WebKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d20344d55c3cb4aa27314e096f59db5cefa70539112d8c1658f2a2076df58612"}, + {file = "pyobjc_framework_WebKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f7dcf2e51964406cc2440e556c855d087c4706289c5f53464e8ffb0fba37adda"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyopencl" @@ -6926,28 +6947,28 @@ docs = ["furo (==2023.9.10)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx [[package]] name = "ruff" -version = "0.3.2" +version = "0.3.3" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77f2612752e25f730da7421ca5e3147b213dca4f9a0f7e0b534e9562c5441f01"}, - {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9966b964b2dd1107797be9ca7195002b874424d1d5472097701ae8f43eadef5d"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b83d17ff166aa0659d1e1deaf9f2f14cbe387293a906de09bc4860717eb2e2da"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb875c6cc87b3703aeda85f01c9aebdce3d217aeaca3c2e52e38077383f7268a"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be75e468a6a86426430373d81c041b7605137a28f7014a72d2fc749e47f572aa"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:967978ac2d4506255e2f52afe70dda023fc602b283e97685c8447d036863a302"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1231eacd4510f73222940727ac927bc5d07667a86b0cbe822024dd00343e77e9"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6d613b19e9a8021be2ee1d0e27710208d1603b56f47203d0abbde906929a9b"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8439338a6303585d27b66b4626cbde89bb3e50fa3cae86ce52c1db7449330a7"}, - {file = "ruff-0.3.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:de8b480d8379620cbb5ea466a9e53bb467d2fb07c7eca54a4aa8576483c35d36"}, - {file = "ruff-0.3.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b74c3de9103bd35df2bb05d8b2899bf2dbe4efda6474ea9681280648ec4d237d"}, - {file = "ruff-0.3.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f380be9fc15a99765c9cf316b40b9da1f6ad2ab9639e551703e581a5e6da6745"}, - {file = "ruff-0.3.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0ac06a3759c3ab9ef86bbeca665d31ad3aa9a4b1c17684aadb7e61c10baa0df4"}, - {file = "ruff-0.3.2-py3-none-win32.whl", hash = "sha256:9bd640a8f7dd07a0b6901fcebccedadeb1a705a50350fb86b4003b805c81385a"}, - {file = "ruff-0.3.2-py3-none-win_amd64.whl", hash = "sha256:0c1bdd9920cab5707c26c8b3bf33a064a4ca7842d91a99ec0634fec68f9f4037"}, - {file = "ruff-0.3.2-py3-none-win_arm64.whl", hash = "sha256:5f65103b1d76e0d600cabd577b04179ff592064eaa451a70a81085930e907d0b"}, - {file = "ruff-0.3.2.tar.gz", hash = "sha256:fa78ec9418eb1ca3db392811df3376b46471ae93792a81af2d1cbb0e5dcb5142"}, + {file = "ruff-0.3.3-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:973a0e388b7bc2e9148c7f9be8b8c6ae7471b9be37e1cc732f8f44a6f6d7720d"}, + {file = "ruff-0.3.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:cfa60d23269d6e2031129b053fdb4e5a7b0637fc6c9c0586737b962b2f834493"}, + {file = "ruff-0.3.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eca7ff7a47043cf6ce5c7f45f603b09121a7cc047447744b029d1b719278eb5"}, + {file = "ruff-0.3.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7d3f6762217c1da954de24b4a1a70515630d29f71e268ec5000afe81377642d"}, + {file = "ruff-0.3.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b24c19e8598916d9c6f5a5437671f55ee93c212a2c4c569605dc3842b6820386"}, + {file = "ruff-0.3.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5a6cbf216b69c7090f0fe4669501a27326c34e119068c1494f35aaf4cc683778"}, + {file = "ruff-0.3.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352e95ead6964974b234e16ba8a66dad102ec7bf8ac064a23f95371d8b198aab"}, + {file = "ruff-0.3.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d6ab88c81c4040a817aa432484e838aaddf8bfd7ca70e4e615482757acb64f8"}, + {file = "ruff-0.3.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79bca3a03a759cc773fca69e0bdeac8abd1c13c31b798d5bb3c9da4a03144a9f"}, + {file = "ruff-0.3.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2700a804d5336bcffe063fd789ca2c7b02b552d2e323a336700abb8ae9e6a3f8"}, + {file = "ruff-0.3.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fd66469f1a18fdb9d32e22b79f486223052ddf057dc56dea0caaf1a47bdfaf4e"}, + {file = "ruff-0.3.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:45817af234605525cdf6317005923bf532514e1ea3d9270acf61ca2440691376"}, + {file = "ruff-0.3.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0da458989ce0159555ef224d5b7c24d3d2e4bf4c300b85467b08c3261c6bc6a8"}, + {file = "ruff-0.3.3-py3-none-win32.whl", hash = "sha256:f2831ec6a580a97f1ea82ea1eda0401c3cdf512cf2045fa3c85e8ef109e87de0"}, + {file = "ruff-0.3.3-py3-none-win_amd64.whl", hash = "sha256:be90bcae57c24d9f9d023b12d627e958eb55f595428bafcb7fec0791ad25ddfc"}, + {file = "ruff-0.3.3-py3-none-win_arm64.whl", hash = "sha256:0171aab5fecdc54383993389710a3d1227f2da124d76a2784a7098e818f92d61"}, + {file = "ruff-0.3.3.tar.gz", hash = "sha256:38671be06f57a2f8aba957d9f701ea889aa5736be806f18c0cd03d6ff0cbca8d"}, ] [[package]] @@ -6994,18 +7015,15 @@ test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", [[package]] name = "scons" -version = "4.6.0.post1" +version = "4.7.0" description = "Open Source next-generation build tool." optional = false python-versions = ">=3.6" files = [ - {file = "SCons-4.6.0.post1-py3-none-any.whl", hash = "sha256:9e0527b7a924e7af2b312c1f8961ef2776847bdc46a4d886af5a75f301da7ce3"}, - {file = "SCons-4.6.0.post1.tar.gz", hash = "sha256:d467a34546f5366a32e4d4419611d0138dd680210f24aa8491ebe9e4b83456cf"}, + {file = "SCons-4.7.0-py3-none-any.whl", hash = "sha256:93308e564966760a63a4c1e016b2cc15d07bb40db67b1c907732da0b9e9f8959"}, + {file = "SCons-4.7.0.tar.gz", hash = "sha256:d8b617f6610a73e46509de70dcf82f76861b79762ff602d546f4e80918ec81f3"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "seaborn" version = "0.13.2" @@ -7029,13 +7047,13 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "1.41.0" +version = "1.42.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.41.0.tar.gz", hash = "sha256:4f2d6c43c07925d8cd10dfbd0970ea7cb784f70e79523cca9dbcd72df38e5a46"}, - {file = "sentry_sdk-1.41.0-py2.py3-none-any.whl", hash = "sha256:be4f8f4b29a80b6a3b71f0f31487beb9e296391da20af8504498a328befed53f"}, + {file = "sentry-sdk-1.42.0.tar.gz", hash = "sha256:4a8364b8f7edbf47f95f7163e48334c96100d9c098f0ae6606e2e18183c223e6"}, + {file = "sentry_sdk-1.42.0-py2.py3-none-any.whl", hash = "sha256:a654ee7e497a3f5f6368b36d4f04baeab1fe92b3105f7f6965d6ef0de35a9ba4"}, ] [package.dependencies] @@ -7059,6 +7077,7 @@ grpcio = ["grpcio (>=1.21.1)"] httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] loguru = ["loguru (>=0.5)"] +openai = ["openai (>=1.0.0)", "tiktoken (>=0.3.0)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] pure-eval = ["asttokens", "executing", "pure-eval"] @@ -7174,18 +7193,18 @@ test = ["pytest"] [[package]] name = "setuptools" -version = "69.1.1" +version = "69.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, - {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, + {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, + {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -7544,23 +7563,23 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "timezonefinder" -version = "6.4.0" +version = "6.5.0" description = "python package for finding the timezone of any point on earth (coordinates) offline" optional = false -python-versions = ">=3.9,<4" +python-versions = ">=3.8,<4" files = [ - {file = "timezonefinder-6.4.0-cp310-cp310-manylinux_2_35_x86_64.whl", hash = "sha256:b4d4cefcdfcd46ffc04858d12cb23b58faca06dad05f68b6b704421be9fc70bc"}, - {file = "timezonefinder-6.4.0.tar.gz", hash = "sha256:7d82ebbc822d5fa012dbfbde510999afce0d7d1482794838e6c4daf6cc327f97"}, + {file = "timezonefinder-6.5.0-cp38-cp38-manylinux_2_35_x86_64.whl", hash = "sha256:3c70e1ea468ecac11272aa0a727450fd7cf43039ae2a2c62f7900a0a42efb6d6"}, + {file = "timezonefinder-6.5.0.tar.gz", hash = "sha256:7afdb1516927e7766deb6da80c8bd66734a44ba3d898038fe73aef1e9cd39bb0"}, ] [package.dependencies] cffi = ">=1.15.1,<2" h3 = ">=3.7.6,<4" -numpy = ">=1.18,<2" +numpy = {version = ">=1.23,<2", markers = "python_version >= \"3.9\""} setuptools = ">=65.5" [package.extras] -numba = ["numba (>=0.59,<1)"] +numba = ["numba (>=0.56,<1)", "numba (>=0.59,<1)"] pytz = ["pytz (>=2022.7.1)"] [[package]] @@ -7815,18 +7834,18 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.17.0" +version = "3.18.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, + {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, + {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" From d82fc7f27bd92a5e972416610b53eea3804bcfdc Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 18 Mar 2024 18:02:34 -0500 Subject: [PATCH 245/599] [bot] Fingerprints: add missing FW versions from new users (#31842) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 2 ++ selfdrive/car/subaru/fingerprints.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 219ec3e2b8..aafd7f0519 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -409,6 +409,7 @@ FW_VERSIONS = { b'68527403AD', b'68546047AF', b'68631938AA', + b'68631940AA', b'68631942AA', ], (Ecu.srs, 0x744, None): [ @@ -530,6 +531,7 @@ FW_VERSIONS = { b'68586101AA ', b'68586105AB ', b'68629922AC ', + b'68629925AC ', b'68629926AC ', ], (Ecu.transmission, 0x7e1, None): [ diff --git a/selfdrive/car/subaru/fingerprints.py b/selfdrive/car/subaru/fingerprints.py index 9f6177b4c0..f0ab307274 100644 --- a/selfdrive/car/subaru/fingerprints.py +++ b/selfdrive/car/subaru/fingerprints.py @@ -149,6 +149,7 @@ FW_VERSIONS = { b'\xe3\xf5C\x00\x00', b'\xe3\xf5F\x00\x00', b'\xe3\xf5G\x00\x00', + b'\xe4\xe5\x021\x00', b'\xe4\xe5\x061\x00', b'\xe4\xf5\x02\x00\x00', b'\xe4\xf5\x07\x00\x00', @@ -196,6 +197,7 @@ FW_VERSIONS = { b'\xe6"fp\x07', b'\xf3"f@\x07', b'\xf3"fp\x07', + b'\xf3"fr\x07', ], (Ecu.transmission, 0x7e1, None): [ b'\xe6\xf5\x04\x00\x00', From 2aaaa3f1674d5aa2f0d9c685f8257d2466141d5c Mon Sep 17 00:00:00 2001 From: YassineYousfi Date: Mon, 18 Mar 2024 16:37:15 -0700 Subject: [PATCH 246/599] duck amigo model (#31883) * 026c8008-1728-4549-baf4-ab0436f2927d/700 * update model replay ref * update again --- selfdrive/modeld/models/supercombo.onnx | 4 ++-- selfdrive/test/process_replay/model_replay_ref_commit | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/modeld/models/supercombo.onnx b/selfdrive/modeld/models/supercombo.onnx index 68e39514d9..7991fef662 100644 --- a/selfdrive/modeld/models/supercombo.onnx +++ b/selfdrive/modeld/models/supercombo.onnx @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd4b0cc83d5ff275ee77ec430ea686603ad50fd6ad874f599ea6e95b123afc3e -size 48193749 +oid sha256:b4fb2cec9ef759cb1164ee2d27b338338a5a9302f427ad95f9b021361b02e1a2 +size 52263406 diff --git a/selfdrive/test/process_replay/model_replay_ref_commit b/selfdrive/test/process_replay/model_replay_ref_commit index 786c2f2731..85ba5fb840 100644 --- a/selfdrive/test/process_replay/model_replay_ref_commit +++ b/selfdrive/test/process_replay/model_replay_ref_commit @@ -1 +1 @@ -e8b359a82316e6dfce3b6fb0fb9684431bfa0a1b +60b00d102b3aedcc74a91722d1210cc6905b0c8f From 4c424eb4b05836b379469d17aabd7cbef47edf2b Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 18 Mar 2024 22:13:47 -0700 Subject: [PATCH 247/599] won't need this --- release/verify.sh | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100755 release/verify.sh diff --git a/release/verify.sh b/release/verify.sh deleted file mode 100755 index ec5266bd81..0000000000 --- a/release/verify.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -set -e - -RED="\033[0;31m" -GREEN="\033[0;32m" -CLEAR="\033[0m" - -BRANCHES="devel release3" -for b in $BRANCHES; do - if git diff --quiet origin/$b origin/$b-staging && [ "$(git rev-parse origin/$b)" = "$(git rev-parse origin/$b-staging)" ]; then - printf "%-10s $GREEN ok $CLEAR\n" "$b" - else - printf "%-10s $RED mismatch $CLEAR\n" "$b" - fi -done From 9e1639c3f18e399ece90c0f795933b5c62e043c7 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 19 Mar 2024 13:37:17 +0800 Subject: [PATCH 248/599] cabana: fix the suppress highlight breaks after seeking (#31912) --- tools/cabana/streams/abstractstream.cc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tools/cabana/streams/abstractstream.cc b/tools/cabana/streams/abstractstream.cc index 8a20086b5c..afb1ec200c 100644 --- a/tools/cabana/streams/abstractstream.cc +++ b/tools/cabana/streams/abstractstream.cc @@ -127,22 +127,27 @@ const CanData &AbstractStream::lastMessage(const MessageId &id) { // it is thread safe to update data in updateLastMsgsTo. // updateLastMsgsTo is always called in UI thread. void AbstractStream::updateLastMsgsTo(double sec) { - new_msgs_.clear(); - messages_.clear(); - current_sec_ = sec; uint64_t last_ts = (sec + routeStartTime()) * 1e9; + std::unordered_map msgs; + for (const auto &[id, ev] : events_) { auto it = std::upper_bound(ev.begin(), ev.end(), last_ts, CompareCanEvent()); if (it != ev.begin()) { auto prev = std::prev(it); double ts = (*prev)->mono_time / 1e9 - routeStartTime(); - auto &m = messages_[id]; + auto &m = msgs[id]; + // Keep last changes + if (auto old_m = messages_.find(id); old_m != messages_.end()) { + m.last_changes = old_m->second.last_changes; + } m.compute(id, (*prev)->dat, (*prev)->size, ts, getSpeed(), {}); m.count = std::distance(ev.begin(), prev) + 1; } } + new_msgs_.clear(); + messages_ = std::move(msgs); bool id_changed = messages_.size() != last_msgs.size() || std::any_of(messages_.cbegin(), messages_.cend(), [this](const auto &m) { return !last_msgs.count(m.first); }); @@ -183,8 +188,6 @@ void AbstractStream::mergeEvents(const std::vector &events) { lastest_event_ts = all_events_.empty() ? 0 : all_events_.back()->mono_time; } -// CanData - namespace { enum Color { GREYISH_BLUE, CYAN, RED}; From 5a805df3402c8a0661a9b663d88378313b19784e Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Tue, 19 Mar 2024 05:37:45 +0000 Subject: [PATCH 249/599] cabana(DBCFile): preserve original header (#31900) * cabana(DBCFile): preserve original header * add trailing space --- tools/cabana/dbc/dbcfile.cc | 13 ++++++++++++- tools/cabana/dbc/dbcfile.h | 1 + tools/cabana/tests/test_cabana.cc | 20 ++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/tools/cabana/dbc/dbcfile.cc b/tools/cabana/dbc/dbcfile.cc index 69ca5b6309..e7f7fdc6ef 100644 --- a/tools/cabana/dbc/dbcfile.cc +++ b/tools/cabana/dbc/dbcfile.cc @@ -98,10 +98,13 @@ void DBCFile::parse(const QString &content) { QTextStream stream((QString *)&content); cabana::Msg *current_msg = nullptr; int multiplexor_cnt = 0; + bool seen_first = false; while (!stream.atEnd()) { ++line_num; QString raw_line = stream.readLine(); line = raw_line.trimmed(); + + bool seen = true; if (line.startsWith("BO_ ")) { multiplexor_cnt = 0; auto match = bo_regexp.match(line); @@ -182,6 +185,14 @@ void DBCFile::parse(const QString &content) { if (auto s = get_sig(match.captured(1).toUInt(), match.captured(2))) { s->comment = match.captured(3).trimmed(); } + } else { + seen = false; + } + + if (seen) { + seen_first = true; + } else if (!seen_first) { + header += raw_line + "\n"; } } @@ -231,5 +242,5 @@ QString DBCFile::generateDBC() { } dbc_string += "\n"; } - return dbc_string + comment + val_desc; + return header + dbc_string + comment + val_desc; } diff --git a/tools/cabana/dbc/dbcfile.h b/tools/cabana/dbc/dbcfile.h index 551bac4946..29f19a80e4 100644 --- a/tools/cabana/dbc/dbcfile.h +++ b/tools/cabana/dbc/dbcfile.h @@ -34,6 +34,7 @@ public: private: void parse(const QString &content); + QString header; std::map msgs; QString name_; }; diff --git a/tools/cabana/tests/test_cabana.cc b/tools/cabana/tests/test_cabana.cc index 8b09fdac34..98c2de12b6 100644 --- a/tools/cabana/tests/test_cabana.cc +++ b/tools/cabana/tests/test_cabana.cc @@ -45,6 +45,26 @@ CM_ SG_ 162 signal_2 "signal comment"; REQUIRE(dbc.generateDBC() == content); } +TEST_CASE("DBCFile::generateDBC -- preserve original header") { + QString content = R"(VERSION "1.0" + +NS_ : + CM_ + +BS_: + +BU_: EON + +BO_ 160 message_1: 8 EON + SG_ signal_1 : 0|12@1+ (1,0) [0|4095] "unit" XXX + +CM_ BO_ 160 "message comment"; +CM_ SG_ 160 signal_1 "signal comment"; +)"; + DBCFile dbc("", content); + REQUIRE(dbc.generateDBC() == content); +} + TEST_CASE("parse_dbc") { QString content = R"( BO_ 160 message_1: 8 EON From 489528dcae3888311f92075ba9e0f68626725121 Mon Sep 17 00:00:00 2001 From: thenhnn <162156666+thenhnn@users.noreply.github.com> Date: Tue, 19 Mar 2024 21:16:02 +0300 Subject: [PATCH 250/599] PlatformConfig: automatically get platform_str from the enum name (#31868) * get platform_str from the enum name * fix tests * add migration table * remove impossible todo * Add link to PR in MIGRATION table Co-authored-by: Adeeb Shihadeh * Remove useless brand name comments and rename RAM_1500 to RAM_1500_5TH_GEN * rename RAM_HD to RAM_HD_5TH_GEN * rename references to RAM_HD and RAM_1500 * change "mock" to "MOCK" and rename torque data of Nissan Leaf 2018 IC * remove MOCK from fingerprints.py * change hard-coded car model in test_can_fingerprint.py/test_timing * migration * update ref * space * prius --------- Co-authored-by: Adeeb Shihadeh Co-authored-by: justin newberry Co-authored-by: Justin Newberry --- scripts/launch_corolla.sh | 2 +- selfdrive/car/__init__.py | 17 +- selfdrive/car/body/values.py | 1 - selfdrive/car/car_helpers.py | 2 +- selfdrive/car/chrysler/fingerprints.py | 4 +- selfdrive/car/chrysler/interface.py | 4 +- selfdrive/car/chrysler/values.py | 18 +- selfdrive/car/docs_definitions.py | 2 +- selfdrive/car/fingerprints.py | 218 ++++++++++++++++++ selfdrive/car/ford/values.py | 8 - selfdrive/car/gm/values.py | 14 -- selfdrive/car/honda/values.py | 22 -- selfdrive/car/hyundai/values.py | 65 ------ selfdrive/car/mazda/values.py | 6 - selfdrive/car/mock/values.py | 1 - selfdrive/car/nissan/values.py | 6 +- selfdrive/car/subaru/values.py | 15 -- selfdrive/car/tesla/values.py | 3 - selfdrive/car/tests/routes.py | 4 +- selfdrive/car/tests/test_can_fingerprint.py | 2 +- selfdrive/car/tests/test_platform_configs.py | 6 +- .../car/torque_data/neural_ff_weights.json | 2 +- selfdrive/car/torque_data/override.toml | 112 ++++----- selfdrive/car/torque_data/params.toml | 162 ++++++------- selfdrive/car/torque_data/substitute.toml | 150 ++++++------ selfdrive/car/toyota/values.py | 40 +--- selfdrive/car/volkswagen/values.py | 84 +++---- selfdrive/debug/cycle_alerts.py | 2 +- selfdrive/test/helpers.py | 2 +- selfdrive/test/process_replay/migration.py | 8 +- selfdrive/test/process_replay/ref_commit | 2 +- .../test/process_replay/test_processes.py | 2 +- selfdrive/test/process_replay/test_regen.py | 2 +- selfdrive/ui/tests/body.py | 2 +- tools/cabana/dbc/generate_dbc_json.py | 2 +- tools/car_porting/README.md | 4 +- tools/car_porting/auto_fingerprint.py | 2 +- tools/lib/tests/test_comma_car_segments.py | 2 +- tools/sim/launch_openpilot.sh | 2 +- 39 files changed, 511 insertions(+), 491 deletions(-) diff --git a/scripts/launch_corolla.sh b/scripts/launch_corolla.sh index 146fbacf0a..aa0243e600 100755 --- a/scripts/launch_corolla.sh +++ b/scripts/launch_corolla.sh @@ -2,6 +2,6 @@ DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" -export FINGERPRINT="TOYOTA COROLLA TSS2 2019" +export FINGERPRINT="COROLLA_TSS2" export SKIP_FW_QUERY="1" $DIR/../launch_openpilot.sh diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 45da5a8b92..f7d6140640 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -1,7 +1,7 @@ # functions common among cars from collections import defaultdict, namedtuple from dataclasses import dataclass -from enum import IntFlag, ReprEnum +from enum import IntFlag, ReprEnum, EnumType from dataclasses import replace import capnp @@ -240,7 +240,6 @@ class CarSpecs: @dataclass(order=True) class PlatformConfig(Freezable): - platform_str: str car_docs: list[CarDocs] specs: CarSpecs @@ -248,6 +247,8 @@ class PlatformConfig(Freezable): flags: int = 0 + platform_str: str | None = None + def __hash__(self) -> int: return hash(self.platform_str) @@ -259,10 +260,18 @@ class PlatformConfig(Freezable): def __post_init__(self): self.init() - self.freeze() -class Platforms(str, ReprEnum): +class PlatformsType(EnumType): + def __new__(metacls, cls, bases, classdict, *, boundary=None, _simple=False, **kwds): + for key in classdict._member_names.keys(): + cfg: PlatformConfig = classdict[key] + cfg.platform_str = key + cfg.freeze() + return super().__new__(metacls, cls, bases, classdict, boundary=boundary, _simple=_simple, **kwds) + + +class Platforms(str, ReprEnum, metaclass=PlatformsType): config: PlatformConfig def __new__(cls, platform_config: PlatformConfig): diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index d1ba0159fb..e570af0f69 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -21,7 +21,6 @@ class CarControllerParams: class CAR(Platforms): BODY = PlatformConfig( - "COMMA BODY", [CarDocs("comma body", package="All")], CarSpecs(mass=9, wheelbase=0.406, steerRatio=0.5, centerToFrontRatio=0.44), dbc_dict('comma_body', None), diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 32a9dd84bd..f6f3960475 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -204,7 +204,7 @@ def get_car(logcan, sendcan, experimental_long_allowed, num_pandas=1): if candidate is None: cloudlog.event("car doesn't match any fingerprints", fingerprints=repr(fingerprints), error=True) - candidate = "mock" + candidate = "MOCK" CarInterface, _, _ = interfaces[candidate] CP = CarInterface.get_params(candidate, fingerprints, car_fw, experimental_long_allowed, docs=False) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index aafd7f0519..f3edd8a888 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -363,7 +363,7 @@ FW_VERSIONS = { b'68503664AC', ], }, - CAR.RAM_1500: { + CAR.RAM_1500_5TH_GEN: { (Ecu.combinationMeter, 0x742, None): [ b'68294051AG', b'68294051AI', @@ -567,7 +567,7 @@ FW_VERSIONS = { b'68629936AC', ], }, - CAR.RAM_HD: { + CAR.RAM_HD_5TH_GEN: { (Ecu.combinationMeter, 0x742, None): [ b'68361606AH', b'68437735AC', diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 198bf63b10..e799767f26 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -51,14 +51,14 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 0.00006 # Ram - elif candidate == CAR.RAM_1500: + elif candidate == CAR.RAM_1500_5TH_GEN: ret.steerActuatorDelay = 0.2 ret.wheelbase = 3.88 # Older EPS FW allow steer to zero if any(fw.ecu == 'eps' and b"68" < fw.fwVersion[:4] <= b"6831" for fw in car_fw): ret.minSteerSpeed = 0. - elif candidate == CAR.RAM_HD: + elif candidate == CAR.RAM_HD_5TH_GEN: ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning, 1.0, False) diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index dfda1d1aaa..78d5131df5 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -33,27 +33,22 @@ class ChryslerCarSpecs(CarSpecs): class CAR(Platforms): # Chrysler PACIFICA_2017_HYBRID = ChryslerPlatformConfig( - "CHRYSLER PACIFICA HYBRID 2017", [ChryslerCarDocs("Chrysler Pacifica Hybrid 2017")], ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2), ) PACIFICA_2018_HYBRID = ChryslerPlatformConfig( - "CHRYSLER PACIFICA HYBRID 2018", [ChryslerCarDocs("Chrysler Pacifica Hybrid 2018")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2019_HYBRID = ChryslerPlatformConfig( - "CHRYSLER PACIFICA HYBRID 2019", [ChryslerCarDocs("Chrysler Pacifica Hybrid 2019-23")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2018 = ChryslerPlatformConfig( - "CHRYSLER PACIFICA 2018", [ChryslerCarDocs("Chrysler Pacifica 2017-18")], PACIFICA_2017_HYBRID.specs, ) PACIFICA_2020 = ChryslerPlatformConfig( - "CHRYSLER PACIFICA 2020", [ ChryslerCarDocs("Chrysler Pacifica 2019-20"), ChryslerCarDocs("Chrysler Pacifica 2021-23", package="All"), @@ -63,33 +58,28 @@ class CAR(Platforms): # Dodge DODGE_DURANGO = ChryslerPlatformConfig( - "DODGE DURANGO 2021", [ChryslerCarDocs("Dodge Durango 2020-21")], PACIFICA_2017_HYBRID.specs, ) # Jeep JEEP_GRAND_CHEROKEE = ChryslerPlatformConfig( # includes 2017 Trailhawk - "JEEP GRAND CHEROKEE V6 2018", [ChryslerCarDocs("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk")], ChryslerCarSpecs(mass=1778., wheelbase=2.71, steerRatio=16.7), ) JEEP_GRAND_CHEROKEE_2019 = ChryslerPlatformConfig( # includes 2020 Trailhawk - "JEEP GRAND CHEROKEE 2019", [ChryslerCarDocs("Jeep Grand Cherokee 2019-21", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4")], JEEP_GRAND_CHEROKEE.specs, ) # Ram - RAM_1500 = ChryslerPlatformConfig( - "RAM 1500 5TH GEN", + RAM_1500_5TH_GEN = ChryslerPlatformConfig( [ChryslerCarDocs("Ram 1500 2019-24", car_parts=CarParts.common([CarHarness.ram]))], ChryslerCarSpecs(mass=2493., wheelbase=3.88, steerRatio=16.3, minSteerSpeed=14.5), dbc_dict('chrysler_ram_dt_generated', None), ) - RAM_HD = ChryslerPlatformConfig( - "RAM HD 5TH GEN", + RAM_HD_5TH_GEN = ChryslerPlatformConfig( [ ChryslerCarDocs("Ram 2500 2020-24", car_parts=CarParts.common([CarHarness.ram])), ChryslerCarDocs("Ram 3500 2019-22", car_parts=CarParts.common([CarHarness.ram])), @@ -119,8 +109,8 @@ class CarControllerParams: STEER_THRESHOLD = 120 -RAM_DT = {CAR.RAM_1500, } -RAM_HD = {CAR.RAM_HD, } +RAM_DT = {CAR.RAM_1500_5TH_GEN, } +RAM_HD = {CAR.RAM_HD_5TH_GEN, } RAM_CARS = RAM_DT | RAM_HD diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py index c9d8dd10a8..02e31fa8e6 100644 --- a/selfdrive/car/docs_definitions.py +++ b/selfdrive/car/docs_definitions.py @@ -346,7 +346,7 @@ class CarDocs: return sentence_builder.format(car_model=f"{self.make} {self.model}", alc=alc, acc=acc) else: - if CP.carFingerprint == "COMMA BODY": + if CP.carFingerprint == "BODY": return "The body is a robotics dev kit that can run openpilot. Learn more." else: raise Exception(f"This notCar does not have a detail sentence: {CP.carFingerprint}") diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index eaf9002dcd..31c45876c2 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -1,6 +1,14 @@ from openpilot.selfdrive.car.interfaces import get_interface_attr +from openpilot.selfdrive.car.body.values import CAR as BODY +from openpilot.selfdrive.car.chrysler.values import CAR as CHRYSLER +from openpilot.selfdrive.car.ford.values import CAR as FORD +from openpilot.selfdrive.car.gm.values import CAR as GM from openpilot.selfdrive.car.honda.values import CAR as HONDA from openpilot.selfdrive.car.hyundai.values import CAR as HYUNDAI +from openpilot.selfdrive.car.mazda.values import CAR as MAZDA +from openpilot.selfdrive.car.nissan.values import CAR as NISSAN +from openpilot.selfdrive.car.subaru.values import CAR as SUBARU +from openpilot.selfdrive.car.tesla.values import CAR as TESLA from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA from openpilot.selfdrive.car.volkswagen.values import CAR as VW @@ -117,4 +125,214 @@ MIGRATION = { "HYUNDAI TUCSON HYBRID 4TH GEN": HYUNDAI.TUCSON_4TH_GEN, "KIA SPORTAGE HYBRID 5TH GEN": HYUNDAI.KIA_SPORTAGE_5TH_GEN, "KIA SORENTO PLUG-IN HYBRID 4TH GEN": HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, + + # Removal of platform_str, see https://github.com/commaai/openpilot/pull/31868/ + "COMMA BODY": BODY.BODY, + "CHRYSLER PACIFICA HYBRID 2017": CHRYSLER.PACIFICA_2017_HYBRID, + "CHRYSLER PACIFICA HYBRID 2018": CHRYSLER.PACIFICA_2018_HYBRID, + "CHRYSLER PACIFICA HYBRID 2019": CHRYSLER.PACIFICA_2019_HYBRID, + "CHRYSLER PACIFICA 2018": CHRYSLER.PACIFICA_2018, + "CHRYSLER PACIFICA 2020": CHRYSLER.PACIFICA_2020, + "DODGE DURANGO 2021": CHRYSLER.DODGE_DURANGO, + "RAM 1500 5TH GEN": CHRYSLER.RAM_1500_5TH_GEN, + "RAM HD 5TH GEN": CHRYSLER.RAM_HD_5TH_GEN, + "FORD BRONCO SPORT 1ST GEN": FORD.BRONCO_SPORT_MK1, + "FORD ESCAPE 4TH GEN": FORD.ESCAPE_MK4, + "FORD EXPLORER 6TH GEN": FORD.EXPLORER_MK6, + "FORD F-150 14TH GEN": FORD.F_150_MK14, + "FORD F-150 LIGHTNING 1ST GEN": FORD.F_150_LIGHTNING_MK1, + "FORD FOCUS 4TH GEN": FORD.FOCUS_MK4, + "FORD MAVERICK 1ST GEN": FORD.MAVERICK_MK1, + "FORD MUSTANG MACH-E 1ST GEN": FORD.MUSTANG_MACH_E_MK1, + "HOLDEN ASTRA RS-V BK 2017": GM.HOLDEN_ASTRA, + "CHEVROLET VOLT PREMIER 2017": GM.VOLT, + "CADILLAC ATS Premium Performance 2018": GM.CADILLAC_ATS, + "CHEVROLET MALIBU PREMIER 2017": GM.MALIBU, + "GMC ACADIA DENALI 2018": GM.ACADIA, + "BUICK LACROSSE 2017": GM.BUICK_LACROSSE, + "BUICK REGAL ESSENCE 2018": GM.BUICK_REGAL, + "CADILLAC ESCALADE 2017": GM.ESCALADE, + "CADILLAC ESCALADE ESV 2016": GM.ESCALADE_ESV, + "CADILLAC ESCALADE ESV 2019": GM.ESCALADE_ESV_2019, + "CHEVROLET BOLT EUV 2022": GM.BOLT_EUV, + "CHEVROLET SILVERADO 1500 2020": GM.SILVERADO, + "CHEVROLET EQUINOX 2019": GM.EQUINOX, + "CHEVROLET TRAILBLAZER 2021": GM.TRAILBLAZER, + "HONDA ACCORD 2018": HONDA.ACCORD, + "HONDA CIVIC (BOSCH) 2019": HONDA.CIVIC_BOSCH, + "HONDA CIVIC SEDAN 1.6 DIESEL 2019": HONDA.CIVIC_BOSCH_DIESEL, + "HONDA CIVIC 2022": HONDA.CIVIC_2022, + "HONDA CR-V 2017": HONDA.CRV_5G, + "HONDA CR-V HYBRID 2019": HONDA.CRV_HYBRID, + "HONDA HR-V 2023": HONDA.HRV_3G, + "ACURA RDX 2020": HONDA.ACURA_RDX_3G, + "HONDA INSIGHT 2019": HONDA.INSIGHT, + "HONDA E 2020": HONDA.HONDA_E, + "ACURA ILX 2016": HONDA.ACURA_ILX, + "HONDA CR-V 2016": HONDA.CRV, + "HONDA CR-V EU 2016": HONDA.CRV_EU, + "HONDA FIT 2018": HONDA.FIT, + "HONDA FREED 2020": HONDA.FREED, + "HONDA HRV 2019": HONDA.HRV, + "HONDA ODYSSEY 2018": HONDA.ODYSSEY, + "HONDA ODYSSEY CHN 2019": HONDA.ODYSSEY_CHN, + "ACURA RDX 2018": HONDA.ACURA_RDX, + "HONDA PILOT 2017": HONDA.PILOT, + "HONDA RIDGELINE 2017": HONDA.RIDGELINE, + "HONDA CIVIC 2016": HONDA.CIVIC, + "HYUNDAI AZERA 6TH GEN": HYUNDAI.AZERA_6TH_GEN, + "HYUNDAI AZERA HYBRID 6TH GEN": HYUNDAI.AZERA_HEV_6TH_GEN, + "HYUNDAI ELANTRA 2017": HYUNDAI.ELANTRA, + "HYUNDAI I30 N LINE 2019 & GT 2018 DCT": HYUNDAI.ELANTRA_GT_I30, + "HYUNDAI ELANTRA 2021": HYUNDAI.ELANTRA_2021, + "HYUNDAI ELANTRA HYBRID 2021": HYUNDAI.ELANTRA_HEV_2021, + "HYUNDAI GENESIS 2015-2016": HYUNDAI.HYUNDAI_GENESIS, + "HYUNDAI IONIQ HYBRID 2017-2019": HYUNDAI.IONIQ, + "HYUNDAI IONIQ HYBRID 2020-2022": HYUNDAI.IONIQ_HEV_2022, + "HYUNDAI IONIQ ELECTRIC LIMITED 2019": HYUNDAI.IONIQ_EV_LTD, + "HYUNDAI IONIQ ELECTRIC 2020": HYUNDAI.IONIQ_EV_2020, + "HYUNDAI IONIQ PLUG-IN HYBRID 2019": HYUNDAI.IONIQ_PHEV_2019, + "HYUNDAI IONIQ PHEV 2020": HYUNDAI.IONIQ_PHEV, + "HYUNDAI KONA 2020": HYUNDAI.KONA, + "HYUNDAI KONA ELECTRIC 2019": HYUNDAI.KONA_EV, + "HYUNDAI KONA ELECTRIC 2022": HYUNDAI.KONA_EV_2022, + "HYUNDAI KONA ELECTRIC 2ND GEN": HYUNDAI.KONA_EV_2ND_GEN, + "HYUNDAI KONA HYBRID 2020": HYUNDAI.KONA_HEV, + "HYUNDAI SANTA FE 2019": HYUNDAI.SANTA_FE, + "HYUNDAI SANTA FE 2022": HYUNDAI.SANTA_FE_2022, + "HYUNDAI SANTA FE HYBRID 2022": HYUNDAI.SANTA_FE_HEV_2022, + "HYUNDAI SANTA FE PlUG-IN HYBRID 2022": HYUNDAI.SANTA_FE_PHEV_2022, + "HYUNDAI SONATA 2020": HYUNDAI.SONATA, + "HYUNDAI SONATA 2019": HYUNDAI.SONATA_LF, + "HYUNDAI STARIA 4TH GEN": HYUNDAI.STARIA_4TH_GEN, + "HYUNDAI TUCSON 2019": HYUNDAI.TUCSON, + "HYUNDAI PALISADE 2020": HYUNDAI.PALISADE, + "HYUNDAI VELOSTER 2019": HYUNDAI.VELOSTER, + "HYUNDAI SONATA HYBRID 2021": HYUNDAI.SONATA_HYBRID, + "HYUNDAI IONIQ 5 2022": HYUNDAI.IONIQ_5, + "HYUNDAI IONIQ 6 2023": HYUNDAI.IONIQ_6, + "HYUNDAI TUCSON 4TH GEN": HYUNDAI.TUCSON_4TH_GEN, + "HYUNDAI SANTA CRUZ 1ST GEN": HYUNDAI.SANTA_CRUZ_1ST_GEN, + "HYUNDAI CUSTIN 1ST GEN": HYUNDAI.CUSTIN_1ST_GEN, + "KIA FORTE E 2018 & GT 2021": HYUNDAI.KIA_FORTE, + "KIA K5 2021": HYUNDAI.KIA_K5_2021, + "KIA K5 HYBRID 2020": HYUNDAI.KIA_K5_HEV_2020, + "KIA K8 HYBRID 1ST GEN": HYUNDAI.KIA_K8_HEV_1ST_GEN, + "KIA NIRO EV 2020": HYUNDAI.KIA_NIRO_EV, + "KIA NIRO EV 2ND GEN": HYUNDAI.KIA_NIRO_EV_2ND_GEN, + "KIA NIRO HYBRID 2019": HYUNDAI.KIA_NIRO_PHEV, + "KIA NIRO PLUG-IN HYBRID 2022": HYUNDAI.KIA_NIRO_PHEV_2022, + "KIA NIRO HYBRID 2021": HYUNDAI.KIA_NIRO_HEV_2021, + "KIA NIRO HYBRID 2ND GEN": HYUNDAI.KIA_NIRO_HEV_2ND_GEN, + "KIA OPTIMA 4TH GEN": HYUNDAI.KIA_OPTIMA_G4, + "KIA OPTIMA 4TH GEN FACELIFT": HYUNDAI.KIA_OPTIMA_G4_FL, + "KIA OPTIMA HYBRID 2017 & SPORTS 2019": HYUNDAI.KIA_OPTIMA_H, + "KIA OPTIMA HYBRID 4TH GEN FACELIFT": HYUNDAI.KIA_OPTIMA_H_G4_FL, + "KIA SELTOS 2021": HYUNDAI.KIA_SELTOS, + "KIA SPORTAGE 5TH GEN": HYUNDAI.KIA_SPORTAGE_5TH_GEN, + "KIA SORENTO GT LINE 2018": HYUNDAI.KIA_SORENTO, + "KIA SORENTO 4TH GEN": HYUNDAI.KIA_SORENTO_4TH_GEN, + "KIA SORENTO HYBRID 4TH GEN": HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, + "KIA STINGER GT2 2018": HYUNDAI.KIA_STINGER, + "KIA STINGER 2022": HYUNDAI.KIA_STINGER_2022, + "KIA CEED INTRO ED 2019": HYUNDAI.KIA_CEED, + "KIA EV6 2022": HYUNDAI.KIA_EV6, + "KIA CARNIVAL 4TH GEN": HYUNDAI.KIA_CARNIVAL_4TH_GEN, + "GENESIS GV60 ELECTRIC 1ST GEN": HYUNDAI.GENESIS_GV60_EV_1ST_GEN, + "GENESIS G70 2018": HYUNDAI.GENESIS_G70, + "GENESIS G70 2020": HYUNDAI.GENESIS_G70_2020, + "GENESIS GV70 1ST GEN": HYUNDAI.GENESIS_GV70_1ST_GEN, + "GENESIS G80 2017": HYUNDAI.GENESIS_G80, + "GENESIS G90 2017": HYUNDAI.GENESIS_G90, + "GENESIS GV80 2023": HYUNDAI.GENESIS_GV80, + "MAZDA CX-5": MAZDA.CX5, + "MAZDA CX-9": MAZDA.CX9, + "MAZDA 3": MAZDA.MAZDA3, + "MAZDA 6": MAZDA.MAZDA6, + "MAZDA CX-9 2021": MAZDA.CX9_2021, + "MAZDA CX-5 2022": MAZDA.CX5_2022, + "NISSAN X-TRAIL 2017": NISSAN.XTRAIL, + "NISSAN LEAF 2018": NISSAN.LEAF, + "NISSAN ROGUE 2019": NISSAN.ROGUE, + "NISSAN ALTIMA 2020": NISSAN.ALTIMA, + "SUBARU ASCENT LIMITED 2019": SUBARU.ASCENT, + "SUBARU OUTBACK 6TH GEN": SUBARU.OUTBACK, + "SUBARU LEGACY 7TH GEN": SUBARU.LEGACY, + "SUBARU IMPREZA LIMITED 2019": SUBARU.IMPREZA, + "SUBARU IMPREZA SPORT 2020": SUBARU.IMPREZA_2020, + "SUBARU CROSSTREK HYBRID 2020": SUBARU.CROSSTREK_HYBRID, + "SUBARU FORESTER 2019": SUBARU.FORESTER, + "SUBARU FORESTER HYBRID 2020": SUBARU.FORESTER_HYBRID, + "SUBARU FORESTER 2017 - 2018": SUBARU.FORESTER_PREGLOBAL, + "SUBARU LEGACY 2015 - 2018": SUBARU.LEGACY_PREGLOBAL, + "SUBARU OUTBACK 2015 - 2017": SUBARU.OUTBACK_PREGLOBAL, + "SUBARU OUTBACK 2018 - 2019": SUBARU.OUTBACK_PREGLOBAL_2018, + "SUBARU FORESTER 2022": SUBARU.FORESTER_2022, + "SUBARU OUTBACK 7TH GEN": SUBARU.OUTBACK_2023, + "SUBARU ASCENT 2023": SUBARU.ASCENT_2023, + 'TESLA AP1 MODEL S': TESLA.AP1_MODELS, + 'TESLA AP2 MODEL S': TESLA.AP2_MODELS, + 'TESLA MODEL S RAVEN': TESLA.MODELS_RAVEN, + "TOYOTA ALPHARD 2020": TOYOTA.ALPHARD_TSS2, + "TOYOTA AVALON 2016": TOYOTA.AVALON, + "TOYOTA AVALON 2019": TOYOTA.AVALON_2019, + "TOYOTA AVALON 2022": TOYOTA.AVALON_TSS2, + "TOYOTA CAMRY 2018": TOYOTA.CAMRY, + "TOYOTA CAMRY 2021": TOYOTA.CAMRY_TSS2, + "TOYOTA C-HR 2018": TOYOTA.CHR, + "TOYOTA C-HR 2021": TOYOTA.CHR_TSS2, + "TOYOTA COROLLA 2017": TOYOTA.COROLLA, + "TOYOTA COROLLA TSS2 2019": TOYOTA.COROLLA_TSS2, + "TOYOTA HIGHLANDER 2017": TOYOTA.HIGHLANDER, + "TOYOTA HIGHLANDER 2020": TOYOTA.HIGHLANDER_TSS2, + "TOYOTA PRIUS 2017": TOYOTA.PRIUS, + "TOYOTA PRIUS v 2017": TOYOTA.PRIUS_V, + "TOYOTA PRIUS TSS2 2021": TOYOTA.PRIUS_TSS2, + "TOYOTA RAV4 2017": TOYOTA.RAV4, + "TOYOTA RAV4 HYBRID 2017": TOYOTA.RAV4H, + "TOYOTA RAV4 2019": TOYOTA.RAV4_TSS2, + "TOYOTA RAV4 2022": TOYOTA.RAV4_TSS2_2022, + "TOYOTA RAV4 2023": TOYOTA.RAV4_TSS2_2023, + "TOYOTA MIRAI 2021": TOYOTA.MIRAI, + "TOYOTA SIENNA 2018": TOYOTA.SIENNA, + "LEXUS CT HYBRID 2018": TOYOTA.LEXUS_CTH, + "LEXUS ES 2018": TOYOTA.LEXUS_ES, + "LEXUS ES 2019": TOYOTA.LEXUS_ES_TSS2, + "LEXUS IS 2018": TOYOTA.LEXUS_IS, + "LEXUS IS 2023": TOYOTA.LEXUS_IS_TSS2, + "LEXUS NX 2018": TOYOTA.LEXUS_NX, + "LEXUS NX 2020": TOYOTA.LEXUS_NX_TSS2, + "LEXUS LC 2024": TOYOTA.LEXUS_LC_TSS2, + "LEXUS RC 2020": TOYOTA.LEXUS_RC, + "LEXUS RX 2016": TOYOTA.LEXUS_RX, + "LEXUS RX 2020": TOYOTA.LEXUS_RX_TSS2, + "LEXUS GS F 2016": TOYOTA.LEXUS_GS_F, + "VOLKSWAGEN ARTEON 1ST GEN": VW.ARTEON_MK1, + "VOLKSWAGEN ATLAS 1ST GEN": VW.ATLAS_MK1, + "VOLKSWAGEN CADDY 3RD GEN": VW.CADDY_MK3, + "VOLKSWAGEN CRAFTER 2ND GEN": VW.CRAFTER_MK2, + "VOLKSWAGEN GOLF 7TH GEN": VW.GOLF_MK7, + "VOLKSWAGEN JETTA 7TH GEN": VW.JETTA_MK7, + "VOLKSWAGEN PASSAT 8TH GEN": VW.PASSAT_MK8, + "VOLKSWAGEN PASSAT NMS": VW.PASSAT_NMS, + "VOLKSWAGEN POLO 6TH GEN": VW.POLO_MK6, + "VOLKSWAGEN SHARAN 2ND GEN": VW.SHARAN_MK2, + "VOLKSWAGEN TAOS 1ST GEN": VW.TAOS_MK1, + "VOLKSWAGEN T-CROSS 1ST GEN": VW.TCROSS_MK1, + "VOLKSWAGEN TIGUAN 2ND GEN": VW.TIGUAN_MK2, + "VOLKSWAGEN TOURAN 2ND GEN": VW.TOURAN_MK2, + "VOLKSWAGEN TRANSPORTER T6.1": VW.TRANSPORTER_T61, + "VOLKSWAGEN T-ROC 1ST GEN": VW.TROC_MK1, + "AUDI A3 3RD GEN": VW.AUDI_A3_MK3, + "AUDI Q2 1ST GEN": VW.AUDI_Q2_MK1, + "AUDI Q3 2ND GEN": VW.AUDI_Q3_MK2, + "SEAT ATECA 1ST GEN": VW.SEAT_ATECA_MK1, + "SEAT LEON 3RD GEN": VW.SEAT_LEON_MK3, + "SKODA FABIA 4TH GEN": VW.SKODA_FABIA_MK4, + "SKODA KAMIQ 1ST GEN": VW.SKODA_KAMIQ_MK1, + "SKODA KAROQ 1ST GEN": VW.SKODA_KAROQ_MK1, + "SKODA KODIAQ 1ST GEN": VW.SKODA_KODIAQ_MK1, + "SKODA OCTAVIA 3RD GEN": VW.SKODA_OCTAVIA_MK3, + "SKODA SCALA 1ST GEN": VW.SKODA_SCALA_MK1, + "SKODA SUPERB 3RD GEN": VW.SKODA_SUPERB_MK3, } diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index eeafc47ae2..c8b0da3fd3 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -97,12 +97,10 @@ class FordCANFDPlatformConfig(FordPlatformConfig): class CAR(Platforms): BRONCO_SPORT_MK1 = FordPlatformConfig( - "FORD BRONCO SPORT 1ST GEN", [FordCarDocs("Ford Bronco Sport 2021-23")], CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), ) ESCAPE_MK4 = FordPlatformConfig( - "FORD ESCAPE 4TH GEN", [ FordCarDocs("Ford Escape 2020-22", hybrid=True, plug_in_hybrid=True), FordCarDocs("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering", hybrid=True, plug_in_hybrid=True), @@ -110,7 +108,6 @@ class CAR(Platforms): CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), ) EXPLORER_MK6 = FordPlatformConfig( - "FORD EXPLORER 6TH GEN", [ FordCarDocs("Ford Explorer 2020-23", hybrid=True), # Hybrid: Limited and Platinum only FordCarDocs("Lincoln Aviator 2020-23", "Co-Pilot360 Plus", plug_in_hybrid=True), # Hybrid: Grand Touring only @@ -118,22 +115,18 @@ class CAR(Platforms): CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), ) F_150_MK14 = FordCANFDPlatformConfig( - "FORD F-150 14TH GEN", [FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0", hybrid=True)], CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), ) F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( - "FORD F-150 LIGHTNING 1ST GEN", [FordCarDocs("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), ) FOCUS_MK4 = FordPlatformConfig( - "FORD FOCUS 4TH GEN", [FordCarDocs("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS], hybrid=True)], # mHEV only CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), ) MAVERICK_MK1 = FordPlatformConfig( - "FORD MAVERICK 1ST GEN", [ FordCarDocs("Ford Maverick 2022", "LARIAT Luxury", hybrid=True), FordCarDocs("Ford Maverick 2023-24", "Co-Pilot360 Assist", hybrid=True), @@ -141,7 +134,6 @@ class CAR(Platforms): CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( - "FORD MUSTANG MACH-E 1ST GEN", [FordCarDocs("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index ec6453757b..24ec9dfb66 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -91,57 +91,46 @@ class GMPlatformConfig(PlatformConfig): class CAR(Platforms): HOLDEN_ASTRA = GMPlatformConfig( - "HOLDEN ASTRA RS-V BK 2017", [GMCarDocs("Holden Astra 2017")], GMCarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), ) VOLT = GMPlatformConfig( - "CHEVROLET VOLT PREMIER 2017", [GMCarDocs("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ")], GMCarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45, tireStiffnessFactor=0.469), ) CADILLAC_ATS = GMPlatformConfig( - "CADILLAC ATS Premium Performance 2018", [GMCarDocs("Cadillac ATS Premium Performance 2018")], GMCarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), ) MALIBU = GMPlatformConfig( - "CHEVROLET MALIBU PREMIER 2017", [GMCarDocs("Chevrolet Malibu Premier 2017")], GMCarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), ) ACADIA = GMPlatformConfig( - "GMC ACADIA DENALI 2018", [GMCarDocs("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo")], GMCarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), ) BUICK_LACROSSE = GMPlatformConfig( - "BUICK LACROSSE 2017", [GMCarDocs("Buick LaCrosse 2017-19", "Driver Confidence Package 2")], GMCarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), ) BUICK_REGAL = GMPlatformConfig( - "BUICK REGAL ESSENCE 2018", [GMCarDocs("Buick Regal Essence 2018")], GMCarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), ) ESCALADE = GMPlatformConfig( - "CADILLAC ESCALADE 2017", [GMCarDocs("Cadillac Escalade 2017", "Driver Assist Package")], GMCarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), ) ESCALADE_ESV = GMPlatformConfig( - "CADILLAC ESCALADE ESV 2016", [GMCarDocs("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS")], GMCarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3, tireStiffnessFactor=1.0), ) ESCALADE_ESV_2019 = GMPlatformConfig( - "CADILLAC ESCALADE ESV 2019", [GMCarDocs("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS")], ESCALADE_ESV.specs, ) BOLT_EUV = GMPlatformConfig( - "CHEVROLET BOLT EUV 2022", [ GMCarDocs("Chevrolet Bolt EUV 2022-23", "Premier or Premier Redline Trim without Super Cruise Package", video_link="https://youtu.be/xvwzGMUA210"), GMCarDocs("Chevrolet Bolt EV 2022-23", "2LT Trim with Adaptive Cruise Control Package"), @@ -149,7 +138,6 @@ class CAR(Platforms): GMCarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) SILVERADO = GMPlatformConfig( - "CHEVROLET SILVERADO 1500 2020", [ GMCarDocs("Chevrolet Silverado 1500 2020-21", "Safety Package II"), GMCarDocs("GMC Sierra 1500 2020-21", "Driver Alert Package II", video_link="https://youtu.be/5HbNoBLzRwE"), @@ -157,12 +145,10 @@ class CAR(Platforms): GMCarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3, tireStiffnessFactor=1.0), ) EQUINOX = GMPlatformConfig( - "CHEVROLET EQUINOX 2019", [GMCarDocs("Chevrolet Equinox 2019-22")], GMCarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), ) TRAILBLAZER = GMPlatformConfig( - "CHEVROLET TRAILBLAZER 2021", [GMCarDocs("Chevrolet Trailblazer 2021-22")], GMCarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 6789667fe6..ef565e89bf 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -116,7 +116,6 @@ class HondaNidecPlatformConfig(PlatformConfig): class CAR(Platforms): # Bosch Cars ACCORD = HondaBoschPlatformConfig( - "HONDA ACCORD 2018", [ HondaCarDocs("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), HondaCarDocs("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), @@ -127,7 +126,6 @@ class CAR(Platforms): dbc_dict('honda_accord_2018_can_generated', None), ) CIVIC_BOSCH = HondaBoschPlatformConfig( - "HONDA CIVIC (BOSCH) 2019", [ HondaCarDocs("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), @@ -137,13 +135,11 @@ class CAR(Platforms): dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), ) CIVIC_BOSCH_DIESEL = HondaBoschPlatformConfig( - "HONDA CIVIC SEDAN 1.6 DIESEL 2019", [], # don't show in docs CIVIC_BOSCH.specs, dbc_dict('honda_accord_2018_can_generated', None), ) CIVIC_2022 = HondaBoschPlatformConfig( - "HONDA CIVIC 2022", [ HondaCarDocs("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), HondaCarDocs("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), @@ -153,7 +149,6 @@ class CAR(Platforms): flags=HondaFlags.BOSCH_RADARLESS, ) CRV_5G = HondaBoschPlatformConfig( - "HONDA CR-V 2017", [HondaCarDocs("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS)], # steerRatio: 12.3 is spec end-to-end CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), @@ -161,34 +156,29 @@ class CAR(Platforms): flags=HondaFlags.BOSCH_ALT_BRAKE, ) CRV_HYBRID = HondaBoschPlatformConfig( - "HONDA CR-V HYBRID 2019", [HondaCarDocs("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS)], # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_accord_2018_can_generated', None), ) HRV_3G = HondaBoschPlatformConfig( - "HONDA HR-V 2023", [HondaCarDocs("Honda HR-V 2023", "All")], CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41, tireStiffnessFactor=0.5), dbc_dict('honda_civic_ex_2022_can_generated', None), flags=HondaFlags.BOSCH_RADARLESS | HondaFlags.BOSCH_ALT_BRAKE, ) ACURA_RDX_3G = HondaBoschPlatformConfig( - "ACURA RDX 2020", [HondaCarDocs("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), # as spec dbc_dict('acura_rdx_2020_can_generated', None), flags=HondaFlags.BOSCH_ALT_BRAKE, ) INSIGHT = HondaBoschPlatformConfig( - "HONDA INSIGHT 2019", [HondaCarDocs("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39, tireStiffnessFactor=0.82), # as spec dbc_dict('honda_insight_ex_2019_can_generated', None), ) HONDA_E = HondaBoschPlatformConfig( - "HONDA E 2020", [HondaCarDocs("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71, tireStiffnessFactor=0.82), dbc_dict('acura_rdx_2020_can_generated', None), @@ -196,70 +186,60 @@ class CAR(Platforms): # Nidec Cars ACURA_ILX = HondaNidecPlatformConfig( - "ACURA ILX 2016", [HondaCarDocs("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS)], CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37, tireStiffnessFactor=0.72), # 15.3 is spec end-to-end dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV = HondaNidecPlatformConfig( - "HONDA CR-V 2016", [HondaCarDocs("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41, tireStiffnessFactor=0.444), # as spec dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CRV_EU = HondaNidecPlatformConfig( - "HONDA CR-V EU 2016", [], # Euro version of CRV Touring, don't show in docs CRV.specs, dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FIT = HondaNidecPlatformConfig( - "HONDA FIT 2018", [HondaCarDocs("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) FREED = HondaNidecPlatformConfig( - "HONDA FREED 2020", [HondaCarDocs("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), # mostly copied from FIT dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) HRV = HondaNidecPlatformConfig( - "HONDA HRV 2019", [HondaCarDocs("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS)], HRV_3G.specs, dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) ODYSSEY = HondaNidecPlatformConfig( - "HONDA ODYSSEY 2018", [HondaCarDocs("Honda Odyssey 2018-20")], CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41, tireStiffnessFactor=0.82), dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_PCM_ACCEL, ) ODYSSEY_CHN = HondaNidecPlatformConfig( - "HONDA ODYSSEY CHN 2019", [], # Chinese version of Odyssey, don't show in docs ODYSSEY.specs, dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) ACURA_RDX = HondaNidecPlatformConfig( - "ACURA RDX 2018", [HondaCarDocs("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) PILOT = HondaNidecPlatformConfig( - "HONDA PILOT 2017", [ HondaCarDocs("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), HondaCarDocs("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), @@ -269,14 +249,12 @@ class CAR(Platforms): flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) RIDGELINE = HondaNidecPlatformConfig( - "HONDA RIDGELINE 2017", [HondaCarDocs("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) CIVIC = HondaNidecPlatformConfig( - "HONDA CIVIC 2016", [HondaCarDocs("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE")], CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index d81d9ad510..81587fc68a 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -135,12 +135,10 @@ class HyundaiCanFDPlatformConfig(PlatformConfig): class CAR(Platforms): # Hyundai AZERA_6TH_GEN = HyundaiPlatformConfig( - "HYUNDAI AZERA 6TH GEN", [HyundaiCarDocs("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=1600, wheelbase=2.885, steerRatio=14.5), ) AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( - "HYUNDAI AZERA HYBRID 6TH GEN", [ HyundaiCarDocs("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarDocs("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), @@ -149,7 +147,6 @@ class CAR(Platforms): flags=HyundaiFlags.HYBRID, ) ELANTRA = HyundaiPlatformConfig( - "HYUNDAI ELANTRA 2017", [ # TODO: 2017-18 could be Hyundai G HyundaiCarDocs("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), @@ -160,7 +157,6 @@ class CAR(Platforms): flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) ELANTRA_GT_I30 = HyundaiPlatformConfig( - "HYUNDAI I30 N LINE 2019 & GT 2018 DCT", [ HyundaiCarDocs("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), HyundaiCarDocs("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), @@ -169,20 +165,17 @@ class CAR(Platforms): flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) ELANTRA_2021 = HyundaiPlatformConfig( - "HYUNDAI ELANTRA 2021", [HyundaiCarDocs("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=2800 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8, ) ELANTRA_HEV_2021 = HyundaiPlatformConfig( - "HYUNDAI ELANTRA HYBRID 2021", [HyundaiCarDocs("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) HYUNDAI_GENESIS = HyundaiPlatformConfig( - "HYUNDAI GENESIS 2015-2016", [ # TODO: check 2015 packages HyundaiCarDocs("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), @@ -192,119 +185,100 @@ class CAR(Platforms): flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY, ) IONIQ = HyundaiPlatformConfig( - "HYUNDAI IONIQ HYBRID 2017-2019", [HyundaiCarDocs("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_HEV_2022 = HyundaiPlatformConfig( - "HYUNDAI IONIQ HYBRID 2020-2022", [HyundaiCarDocs("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h]))], # TODO: confirm 2020-21 harness, CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) IONIQ_EV_LTD = HyundaiPlatformConfig( - "HYUNDAI IONIQ ELECTRIC LIMITED 2019", [HyundaiCarDocs("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_EV_2020 = HyundaiPlatformConfig( - "HYUNDAI IONIQ ELECTRIC 2020", [HyundaiCarDocs("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV, ) IONIQ_PHEV_2019 = HyundaiPlatformConfig( - "HYUNDAI IONIQ PLUG-IN HYBRID 2019", [HyundaiCarDocs("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) IONIQ_PHEV = HyundaiPlatformConfig( - "HYUNDAI IONIQ PHEV 2020", [HyundaiCarDocs("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID, ) KONA = HyundaiPlatformConfig( - "HYUNDAI KONA 2020", [HyundaiCarDocs("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b]))], CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CLUSTER_GEARS, ) KONA_EV = HyundaiPlatformConfig( - "HYUNDAI KONA ELECTRIC 2019", [HyundaiCarDocs("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g]))], CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV, ) KONA_EV_2022 = HyundaiPlatformConfig( - "HYUNDAI KONA ELECTRIC 2022", [HyundaiCarDocs("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o]))], CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV, ) KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( - "HYUNDAI KONA ELECTRIC 2ND GEN", [HyundaiCarDocs("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", car_parts=CarParts.common([CarHarness.hyundai_r]))], CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) KONA_HEV = HyundaiPlatformConfig( - "HYUNDAI KONA HYBRID 2020", [HyundaiCarDocs("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i]))], # TODO: check packages, CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID, ) SANTA_FE = HyundaiPlatformConfig( - "HYUNDAI SANTA FE 2019", [HyundaiCarDocs("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", car_parts=CarParts.common([CarHarness.hyundai_d]))], CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) SANTA_FE_2022 = HyundaiPlatformConfig( - "HYUNDAI SANTA FE 2022", [HyundaiCarDocs("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8, ) SANTA_FE_HEV_2022 = HyundaiPlatformConfig( - "HYUNDAI SANTA FE HYBRID 2022", [HyundaiCarDocs("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( - "HYUNDAI SANTA FE PlUG-IN HYBRID 2022", [HyundaiCarDocs("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) SONATA = HyundaiPlatformConfig( - "HYUNDAI SONATA 2020", [HyundaiCarDocs("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) SONATA_LF = HyundaiPlatformConfig( - "HYUNDAI SONATA 2019", [HyundaiCarDocs("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( - "HYUNDAI STARIA 4TH GEN", [HyundaiCarDocs("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=2205, wheelbase=3.273, steerRatio=11.94), # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf ) TUCSON = HyundaiPlatformConfig( - "HYUNDAI TUCSON 2019", [ HyundaiCarDocs("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarDocs("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), @@ -313,7 +287,6 @@ class CAR(Platforms): flags=HyundaiFlags.TCU_GEARS, ) PALISADE = HyundaiPlatformConfig( - "HYUNDAI PALISADE 2020", [ HyundaiCarDocs("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), HyundaiCarDocs("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), @@ -322,19 +295,16 @@ class CAR(Platforms): flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) VELOSTER = HyundaiPlatformConfig( - "HYUNDAI VELOSTER 2019", [HyundaiCarDocs("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS, ) SONATA_HYBRID = HyundaiPlatformConfig( - "HYUNDAI SONATA HYBRID 2021", [HyundaiCarDocs("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], SONATA.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) IONIQ_5 = HyundaiCanFDPlatformConfig( - "HYUNDAI IONIQ 5 2022", [ HyundaiCarDocs("Hyundai Ioniq 5 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_q])), HyundaiCarDocs("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), @@ -344,13 +314,11 @@ class CAR(Platforms): flags=HyundaiFlags.EV, ) IONIQ_6 = HyundaiCanFDPlatformConfig( - "HYUNDAI IONIQ 6 2023", [HyundaiCarDocs("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p]))], IONIQ_5.specs, flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( - "HYUNDAI TUCSON 4TH GEN", [ HyundaiCarDocs("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarDocs("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), @@ -359,13 +327,11 @@ class CAR(Platforms): CarSpecs(mass=1630, wheelbase=2.756, steerRatio=13.7, tireStiffnessFactor=0.385), ) SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( - "HYUNDAI SANTA CRUZ 1ST GEN", [HyundaiCarDocs("Hyundai Santa Cruz 2022-24", car_parts=CarParts.common([CarHarness.hyundai_n]))], # weight from Limited trim - the only supported trim, steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), ) CUSTIN_1ST_GEN = HyundaiPlatformConfig( - "HYUNDAI CUSTIN 1ST GEN", [HyundaiCarDocs("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner flags=HyundaiFlags.CHECKSUM_CRC8, @@ -373,7 +339,6 @@ class CAR(Platforms): # Kia KIA_FORTE = HyundaiPlatformConfig( - "KIA FORTE E 2018 & GT 2021", [ HyundaiCarDocs("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), HyundaiCarDocs("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), @@ -381,25 +346,21 @@ class CAR(Platforms): CarSpecs(mass=2878 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5) ) KIA_K5_2021 = HyundaiPlatformConfig( - "KIA K5 2021", [HyundaiCarDocs("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=3381 * CV.LB_TO_KG, wheelbase=2.85, steerRatio=13.27, tireStiffnessFactor=0.5), # 2021 Kia K5 Steering Ratio (all trims) flags=HyundaiFlags.CHECKSUM_CRC8, ) KIA_K5_HEV_2020 = HyundaiPlatformConfig( - "KIA K5 HYBRID 2020", [HyundaiCarDocs("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_K5_2021.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) KIA_K8_HEV_1ST_GEN = HyundaiCanFDPlatformConfig( - "KIA K8 HYBRID 1ST GEN", [HyundaiCarDocs("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q]))], # mass: https://carprices.ae/brands/kia/2023/k8/1.6-turbo-hybrid, steerRatio: guesstimate from K5 platform CarSpecs(mass=1630, wheelbase=2.895, steerRatio=13.27) ) KIA_NIRO_EV = HyundaiPlatformConfig( - "KIA NIRO EV 2020", [ HyundaiCarDocs("Kia Niro EV 2019", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), HyundaiCarDocs("Kia Niro EV 2020", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_f])), @@ -410,13 +371,11 @@ class CAR(Platforms): flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV, ) KIA_NIRO_EV_2ND_GEN = HyundaiCanFDPlatformConfig( - "KIA NIRO EV 2ND GEN", [HyundaiCarDocs("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_NIRO_EV.specs, flags=HyundaiFlags.EV, ) KIA_NIRO_PHEV = HyundaiPlatformConfig( - "KIA NIRO HYBRID 2019", [ HyundaiCarDocs("Kia Niro Hybrid 2018", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarDocs("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), @@ -426,7 +385,6 @@ class CAR(Platforms): flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.MIN_STEER_32_MPH, ) KIA_NIRO_PHEV_2022 = HyundaiPlatformConfig( - "KIA NIRO PLUG-IN HYBRID 2022", [ HyundaiCarDocs("Kia Niro Plug-in Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), HyundaiCarDocs("Kia Niro Plug-in Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), @@ -435,7 +393,6 @@ class CAR(Platforms): flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR, ) KIA_NIRO_HEV_2021 = HyundaiPlatformConfig( - "KIA NIRO HYBRID 2021", [ HyundaiCarDocs("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), HyundaiCarDocs("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), @@ -444,44 +401,37 @@ class CAR(Platforms): flags=HyundaiFlags.HYBRID, ) KIA_NIRO_HEV_2ND_GEN = HyundaiCanFDPlatformConfig( - "KIA NIRO HYBRID 2ND GEN", [HyundaiCarDocs("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a]))], KIA_NIRO_EV.specs, ) KIA_OPTIMA_G4 = HyundaiPlatformConfig( - "KIA OPTIMA 4TH GEN", [HyundaiCarDocs("Kia Optima 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_b]))], # TODO: may support 2016, 2018 CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) KIA_OPTIMA_G4_FL = HyundaiPlatformConfig( - "KIA OPTIMA 4TH GEN FACELIFT", [HyundaiCarDocs("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) # TODO: may support adjacent years. may have a non-zero minimum steering speed KIA_OPTIMA_H = HyundaiPlatformConfig( - "KIA OPTIMA HYBRID 2017 & SPORTS 2019", [HyundaiCarDocs("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) KIA_OPTIMA_H_G4_FL = HyundaiPlatformConfig( - "KIA OPTIMA HYBRID 4TH GEN FACELIFT", [HyundaiCarDocs("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, ) KIA_SELTOS = HyundaiPlatformConfig( - "KIA SELTOS 2021", [HyundaiCarDocs("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=1337, wheelbase=2.63, steerRatio=14.56), flags=HyundaiFlags.CHECKSUM_CRC8, ) KIA_SPORTAGE_5TH_GEN = HyundaiCanFDPlatformConfig( - "KIA SPORTAGE 5TH GEN", [ HyundaiCarDocs("Kia Sportage 2023-24", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarDocs("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), @@ -490,7 +440,6 @@ class CAR(Platforms): CarSpecs(mass=1725, wheelbase=2.756, steerRatio=13.6), ) KIA_SORENTO = HyundaiPlatformConfig( - "KIA SORENTO GT LINE 2018", [ HyundaiCarDocs("Kia Sorento 2018", "Advanced Smart Cruise Control & LKAS", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), @@ -500,13 +449,11 @@ class CAR(Platforms): flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, ) KIA_SORENTO_4TH_GEN = HyundaiCanFDPlatformConfig( - "KIA SORENTO 4TH GEN", [HyundaiCarDocs("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms flags=HyundaiFlags.RADAR_SCC, ) KIA_SORENTO_HEV_4TH_GEN = HyundaiCanFDPlatformConfig( - "KIA SORENTO HYBRID 4TH GEN", [ HyundaiCarDocs("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarDocs("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), @@ -515,24 +462,20 @@ class CAR(Platforms): flags=HyundaiFlags.RADAR_SCC, ) KIA_STINGER = HyundaiPlatformConfig( - "KIA STINGER GT2 2018", [HyundaiCarDocs("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1825, wheelbase=2.78, steerRatio=14.4 * 1.15) # 15% higher at the center seems reasonable ) KIA_STINGER_2022 = HyundaiPlatformConfig( - "KIA STINGER 2022", [HyundaiCarDocs("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], KIA_STINGER.specs, ) KIA_CEED = HyundaiPlatformConfig( - "KIA CEED INTRO ED 2019", [HyundaiCarDocs("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=1450, wheelbase=2.65, steerRatio=13.75, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY, ) KIA_EV6 = HyundaiCanFDPlatformConfig( - "KIA EV6 2022", [ HyundaiCarDocs("Kia EV6 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_p])), HyundaiCarDocs("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), @@ -542,7 +485,6 @@ class CAR(Platforms): flags=HyundaiFlags.EV, ) KIA_CARNIVAL_4TH_GEN = HyundaiCanFDPlatformConfig( - "KIA CARNIVAL 4TH GEN", [ HyundaiCarDocs("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarDocs("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) @@ -553,7 +495,6 @@ class CAR(Platforms): # Genesis GENESIS_GV60_EV_1ST_GEN = HyundaiCanFDPlatformConfig( - "GENESIS GV60 ELECTRIC 1ST GEN", [ HyundaiCarDocs("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), HyundaiCarDocs("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), @@ -562,19 +503,16 @@ class CAR(Platforms): flags=HyundaiFlags.EV, ) GENESIS_G70 = HyundaiPlatformConfig( - "GENESIS G70 2018", [HyundaiCarDocs("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), flags=HyundaiFlags.LEGACY, ) GENESIS_G70_2020 = HyundaiPlatformConfig( - "GENESIS G70 2020", [HyundaiCarDocs("Genesis G70 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), flags=HyundaiFlags.MANDO_RADAR, ) GENESIS_GV70_1ST_GEN = HyundaiCanFDPlatformConfig( - "GENESIS GV70 1ST GEN", [ HyundaiCarDocs("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarDocs("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), @@ -583,18 +521,15 @@ class CAR(Platforms): flags=HyundaiFlags.RADAR_SCC, ) GENESIS_G80 = HyundaiPlatformConfig( - "GENESIS G80 2017", [HyundaiCarDocs("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5), flags=HyundaiFlags.LEGACY, ) GENESIS_G90 = HyundaiPlatformConfig( - "GENESIS G90 2017", [HyundaiCarDocs("Genesis G90 2017-20", "All", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=2200, wheelbase=3.15, steerRatio=12.069), ) GENESIS_GV80 = HyundaiCanFDPlatformConfig( - "GENESIS GV80 2023", [HyundaiCarDocs("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m]))], CarSpecs(mass=2258, wheelbase=2.95, steerRatio=14.14), flags=HyundaiFlags.RADAR_SCC, diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index d10b47e2b4..9d8278f951 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -51,32 +51,26 @@ class MazdaPlatformConfig(PlatformConfig): class CAR(Platforms): CX5 = MazdaPlatformConfig( - "MAZDA CX-5", [MazdaCarDocs("Mazda CX-5 2017-21")], MazdaCarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) ) CX9 = MazdaPlatformConfig( - "MAZDA CX-9", [MazdaCarDocs("Mazda CX-9 2016-20")], MazdaCarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) ) MAZDA3 = MazdaPlatformConfig( - "MAZDA 3", [MazdaCarDocs("Mazda 3 2017-18")], MazdaCarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) ) MAZDA6 = MazdaPlatformConfig( - "MAZDA 6", [MazdaCarDocs("Mazda 6 2017-20")], MazdaCarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) ) CX9_2021 = MazdaPlatformConfig( - "MAZDA CX-9 2021", [MazdaCarDocs("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4")], CX9.specs ) CX5_2022 = MazdaPlatformConfig( - "MAZDA CX-5 2022", [MazdaCarDocs("Mazda CX-5 2022-24")], CX5.specs, ) diff --git a/selfdrive/car/mock/values.py b/selfdrive/car/mock/values.py index 214c6809db..f98aac2ee3 100644 --- a/selfdrive/car/mock/values.py +++ b/selfdrive/car/mock/values.py @@ -3,7 +3,6 @@ from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms class CAR(Platforms): MOCK = PlatformConfig( - 'mock', [], CarSpecs(mass=1700, wheelbase=2.7, steerRatio=13), {} diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index 83e9bf0b46..35503a9306 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -38,26 +38,22 @@ class NissanPlaformConfig(PlatformConfig): class CAR(Platforms): XTRAIL = NissanPlaformConfig( - "NISSAN X-TRAIL 2017", [NissanCarDocs("Nissan X-Trail 2017")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) LEAF = NissanPlaformConfig( - "NISSAN LEAF 2018", [NissanCarDocs("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY")], NissanCarSpecs(mass=1610, wheelbase=2.705), dbc_dict('nissan_leaf_2018_generated', None), ) # Leaf with ADAS ECU found behind instrument cluster instead of glovebox # Currently the only known difference between them is the inverted seatbelt signal. - LEAF_IC = LEAF.override(platform_str="NISSAN LEAF 2018 Instrument Cluster", car_docs=[]) + LEAF_IC = LEAF.override(car_docs=[]) ROGUE = NissanPlaformConfig( - "NISSAN ROGUE 2019", [NissanCarDocs("Nissan Rogue 2018-20")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) ALTIMA = NissanPlaformConfig( - "NISSAN ALTIMA 2020", [NissanCarDocs("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b]))], NissanCarSpecs(mass=1492, wheelbase=2.824) ) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 3a57fde39d..80263c1e94 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -121,22 +121,18 @@ class SubaruGen2PlatformConfig(SubaruPlatformConfig): class CAR(Platforms): # Global platform ASCENT = SubaruPlatformConfig( - "SUBARU ASCENT LIMITED 2019", [SubaruCarDocs("Subaru Ascent 2019-21", "All")], CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), ) OUTBACK = SubaruGen2PlatformConfig( - "SUBARU OUTBACK 6TH GEN", [SubaruCarDocs("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), ) LEGACY = SubaruGen2PlatformConfig( - "SUBARU LEGACY 7TH GEN", [SubaruCarDocs("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], OUTBACK.specs, ) IMPREZA = SubaruPlatformConfig( - "SUBARU IMPREZA LIMITED 2019", [ SubaruCarDocs("Subaru Impreza 2017-19"), SubaruCarDocs("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), @@ -145,7 +141,6 @@ class CAR(Platforms): CarSpecs(mass=1568, wheelbase=2.67, steerRatio=15), ) IMPREZA_2020 = SubaruPlatformConfig( - "SUBARU IMPREZA SPORT 2020", [ SubaruCarDocs("Subaru Impreza 2020-22"), SubaruCarDocs("Subaru Crosstrek 2020-23"), @@ -156,47 +151,40 @@ class CAR(Platforms): ) # TODO: is there an XV and Impreza too? CROSSTREK_HYBRID = SubaruPlatformConfig( - "SUBARU CROSSTREK HYBRID 2020", [SubaruCarDocs("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b]))], CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.HYBRID, ) FORESTER = SubaruPlatformConfig( - "SUBARU FORESTER 2019", [SubaruCarDocs("Subaru Forester 2019-21", "All")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.STEER_RATE_LIMITED, ) FORESTER_HYBRID = SubaruPlatformConfig( - "SUBARU FORESTER HYBRID 2020", [SubaruCarDocs("Subaru Forester Hybrid 2020")], FORESTER.specs, flags=SubaruFlags.HYBRID, ) # Pre-global FORESTER_PREGLOBAL = SubaruPlatformConfig( - "SUBARU FORESTER 2017 - 2018", [SubaruCarDocs("Subaru Forester 2017-18")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), dbc_dict('subaru_forester_2017_generated', None), flags=SubaruFlags.PREGLOBAL, ) LEGACY_PREGLOBAL = SubaruPlatformConfig( - "SUBARU LEGACY 2015 - 2018", [SubaruCarDocs("Subaru Legacy 2015-18")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), dbc_dict('subaru_outback_2015_generated', None), flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL = SubaruPlatformConfig( - "SUBARU OUTBACK 2015 - 2017", [SubaruCarDocs("Subaru Outback 2015-17")], FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2015_generated', None), flags=SubaruFlags.PREGLOBAL, ) OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( - "SUBARU OUTBACK 2018 - 2019", [SubaruCarDocs("Subaru Outback 2018-19")], FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2019_generated', None), @@ -204,19 +192,16 @@ class CAR(Platforms): ) # Angle LKAS FORESTER_2022 = SubaruPlatformConfig( - "SUBARU FORESTER 2022", [SubaruCarDocs("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c]))], FORESTER.specs, flags=SubaruFlags.LKAS_ANGLE, ) OUTBACK_2023 = SubaruGen2PlatformConfig( - "SUBARU OUTBACK 7TH GEN", [SubaruCarDocs("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], OUTBACK.specs, flags=SubaruFlags.LKAS_ANGLE, ) ASCENT_2023 = SubaruGen2PlatformConfig( - "SUBARU ASCENT 2023", [SubaruCarDocs("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], ASCENT.specs, flags=SubaruFlags.LKAS_ANGLE, diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index 74f38f2dc0..84dd8c51a3 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -11,19 +11,16 @@ Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values']) class CAR(Platforms): AP1_MODELS = PlatformConfig( - 'TESLA AP1 MODEL S', [CarDocs("Tesla AP1 Model S", "All")], CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0), dbc_dict('tesla_powertrain', 'tesla_radar_bosch_generated', chassis_dbc='tesla_can') ) AP2_MODELS = PlatformConfig( - 'TESLA AP2 MODEL S', [CarDocs("Tesla AP2 Model S", "All")], AP1_MODELS.specs, AP1_MODELS.dbc_dict ) MODELS_RAVEN = PlatformConfig( - 'TESLA MODEL S RAVEN', [CarDocs("Tesla Model S Raven", "All")], AP1_MODELS.specs, dbc_dict('tesla_powertrain', 'tesla_radar_continental_generated', chassis_dbc='tesla_can') diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 48ae36ffcc..9b2cbeeb52 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -44,8 +44,8 @@ routes = [ CarTestRoute("378472f830ee7395|2021-05-28--07-38-43", CHRYSLER.PACIFICA_2018_HYBRID), CarTestRoute("8190c7275a24557b|2020-01-29--08-33-58", CHRYSLER.PACIFICA_2019_HYBRID), CarTestRoute("3d84727705fecd04|2021-05-25--08-38-56", CHRYSLER.PACIFICA_2020), - CarTestRoute("221c253375af4ee9|2022-06-15--18-38-24", CHRYSLER.RAM_1500), - CarTestRoute("8fb5eabf914632ae|2022-08-04--17-28-53", CHRYSLER.RAM_HD, segment=6), + CarTestRoute("221c253375af4ee9|2022-06-15--18-38-24", CHRYSLER.RAM_1500_5TH_GEN), + CarTestRoute("8fb5eabf914632ae|2022-08-04--17-28-53", CHRYSLER.RAM_HD_5TH_GEN, segment=6), CarTestRoute("3379c85aeedc8285|2023-12-07--17-49-39", CHRYSLER.DODGE_DURANGO), CarTestRoute("54827bf84c38b14f|2023-01-25--14-14-11", FORD.BRONCO_SPORT_MK1), diff --git a/selfdrive/car/tests/test_can_fingerprint.py b/selfdrive/car/tests/test_can_fingerprint.py index 63621b459d..e768abd20f 100755 --- a/selfdrive/car/tests/test_can_fingerprint.py +++ b/selfdrive/car/tests/test_can_fingerprint.py @@ -28,7 +28,7 @@ class TestCanFingerprint(unittest.TestCase): def test_timing(self): # just pick any CAN fingerprinting car - car_model = 'CHEVROLET BOLT EUV 2022' + car_model = "BOLT_EUV" fingerprint = FINGERPRINTS[car_model][0] cases = [] diff --git a/selfdrive/car/tests/test_platform_configs.py b/selfdrive/car/tests/test_platform_configs.py index 0b42a2b289..523c331b9e 100755 --- a/selfdrive/car/tests/test_platform_configs.py +++ b/selfdrive/car/tests/test_platform_configs.py @@ -8,14 +8,16 @@ from openpilot.selfdrive.car.values import PLATFORMS class TestPlatformConfigs(unittest.TestCase): def test_configs(self): - for platform in PLATFORMS.values(): + for name, platform in PLATFORMS.items(): with self.subTest(platform=str(platform)): self.assertTrue(platform.config._frozen) - if platform != "mock": + if platform != "MOCK": self.assertIn("pt", platform.config.dbc_dict) self.assertTrue(len(platform.config.platform_str) > 0) + self.assertEqual(name, platform.config.platform_str) + self.assertIsNotNone(platform.config.specs) diff --git a/selfdrive/car/torque_data/neural_ff_weights.json b/selfdrive/car/torque_data/neural_ff_weights.json index c526f07fa2..47d7ced4f9 100644 --- a/selfdrive/car/torque_data/neural_ff_weights.json +++ b/selfdrive/car/torque_data/neural_ff_weights.json @@ -1 +1 @@ -{"CHEVROLET BOLT EUV 2022": {"w_1": [[0.3452189564704895, -0.15614677965641022, -0.04062516987323761, -0.5960758328437805, 0.3211185932159424, 0.31732726097106934, -0.04430829733610153, -0.37327295541763306, -0.14118380844593048, 0.12712529301643372, 0.2641555070877075, -0.3451094627380371, -0.005127656273543835, 0.6185108423233032, 0.03725295141339302, 0.3763789236545563], [-0.0708412230014801, 0.3667356073856354, 0.031383827328681946, 0.1740853488445282, -0.04695861041545868, 0.018055908381938934, 0.009072160348296165, -0.23640218377113342, -0.10362917929887772, 0.022628149017691612, -0.224413201212883, 0.20718418061733246, -0.016947750002145767, -0.3872031271457672, -0.15500062704086304, -0.06375953555107117], [-0.0838046595454216, -0.0242826659232378, -0.07765661180019379, 0.028858814388513565, -0.09516210108995438, 0.008368706330657005, 0.1689300835132599, 0.015036891214549541, -0.15121428668498993, 0.1388195902109146, 0.11486363410949707, 0.0651545450091362, 0.13559958338737488, 0.04300367832183838, -0.13856294751167297, -0.058136988431215286], [-0.006249868310987949, 0.08809533715248108, -0.040690965950489044, 0.02359287068247795, -0.00766348373144865, 0.24816390872001648, -0.17360293865203857, -0.03676899895071983, -0.17564819753170013, 0.18998438119888306, -0.050583917647600174, -0.006488069426268339, 0.10649101436138153, -0.024557121098041534, -0.103276826441288, 0.18448011577129364]], "b_1": [0.2935388386249542, 0.10967712104320526, -0.014007942751049995, 0.211833655834198, 0.33605605363845825, 0.37722209095954895, -0.16615016758441925, 0.3134673535823822, 0.06695777177810669, 0.3425212800502777, 0.3769673705101013, 0.23186539113521576, 0.5770409107208252, -0.05929069593548775, 0.01839117519557476, 0.03828774020075798], "w_2": [[-0.06261160969734192, 0.010185074992477894, -0.06083013117313385, -0.04531499370932579, -0.08979734033346176, 0.3432150185108185, -0.019801849499344826, 0.3010321259498596], [0.19698476791381836, -0.009238275699317455, 0.08842222392559052, -0.09516377002000809, -0.05022778362035751, 0.13626104593276978, -0.052890390157699585, 0.15569131076335907], [0.0724768117070198, -0.09018408507108688, 0.06850195676088333, -0.025572121143341064, 0.0680626779794693, -0.07648195326328278, 0.07993496209383011, -0.059752143919467926], [1.267876386642456, -0.05755887180566788, -0.08429178595542908, 0.021366603672504425, -0.0006479775765910745, -1.4292563199996948, -0.08077696710824966, -1.414825439453125], [0.04535430669784546, 0.06555880606174469, -0.027145234867930412, -0.07661093026399612, -0.05702832341194153, 0.23650476336479187, 0.0024587824009358883, 0.20126521587371826], [0.006042032968252897, 0.042880818247795105, 0.002187949838116765, -0.017126334831118584, -0.08352015167474747, 0.19801731407642365, -0.029196614399552345, 0.23713473975658417], [-0.01644900068640709, -0.04358499124646187, 0.014584392309188843, 0.07155826687812805, -0.09354910999536514, -0.033351872116327286, 0.07138452678918839, -0.04755295440554619], [-1.1012420654296875, -0.03534531593322754, 0.02167935110628605, -0.01116552110761404, -0.08436500281095505, 1.1038788557052612, 0.027903547510504723, 1.0676132440567017], [0.03843916580080986, -0.0952216386795044, 0.039226632565259933, 0.002778085647150874, -0.020275786519050598, -0.07848760485649109, 0.04803166165947914, 0.015538203530013561], [0.018385495990514755, -0.025189843028783798, 0.0036680365446954966, -0.02105865254998207, 0.04808586835861206, 0.1575016975402832, 0.02703506126999855, 0.23039312660694122], [-0.0033881019335240126, -0.10210853815078735, -0.04877309128642082, 0.006989633198827505, 0.046798162162303925, 0.38676899671554565, -0.032304272055625916, 0.2345031052827835], [0.22092825174331665, -0.09642873704433441, 0.04499409720301628, 0.05108088254928589, -0.10191166400909424, 0.12818090617656708, -0.021021494641900063, 0.09440375864505768], [0.1212429478764534, -0.028194155544042587, -0.0981956496834755, 0.08226924389600754, 0.055346839129924774, 0.27067816257476807, -0.09064067900180817, 0.12580905854701996], [-1.6740131378173828, -0.02066155895590782, -0.05924689769744873, 0.06347910314798355, -0.07821853458881378, 1.2807466983795166, 0.04589352011680603, 1.310766577720642], [-0.09893272817134857, -0.04093599319458008, -0.02502273954451084, 0.09490344673395157, -0.0211324505507946, -0.09021010994911194, 0.07936318963766098, -0.03593116253614426], [-0.08490308374166489, -0.015558987855911255, -0.048692114651203156, -0.007421435788273811, -0.040531404316425323, 0.25889304280281067, 0.06012800335884094, 0.27946868538856506]], "b_2": [0.07973937690258026, -0.010446485131978989, -0.003066520905122161, -0.031895797699689865, 0.006032303906977177, 0.24106740951538086, -0.008969511836767197, 0.2872662842273712], "w_3": [[-1.364486813545227, -0.11682678014039993, 0.01764785870909691, 0.03926877677440643], [-0.05695437639951706, 0.05472218990325928, 0.1266128271818161, 0.09950875490903854], [0.11415273696184158, -0.10069356113672256, 0.0864749327301979, -0.043946366757154465], [-0.10138195008039474, -0.040128443390131, -0.08937158435583115, -0.0048376512713730335], [-0.0028251828625798225, -0.04743027314543724, 0.06340016424655914, 0.07277824729681015], [0.49482327699661255, -0.06410001963376999, -0.0999293103814125, -0.14250673353672028], [0.042802367359399796, 0.0015462725423276424, -0.05991362780332565, 0.1022040992975235], [0.3523194193840027, 0.07343732565641403, 0.04157765582203865, -0.12358107417821884]], "b_3": [0.2653026282787323, -0.058485131710767746, -0.0744510293006897, 0.012550175189971924], "w_4": [[0.5988775491714478, 0.09668736904859543], [-0.04360569268465042, 0.06491032242774963], [-0.11868984252214432, -0.09601487964391708], [-0.06554870307445526, -0.14189276099205017]], "b_4": [-0.08148707449436188, -2.8251802921295166], "input_norm_mat": [[-3.0, 3.0], [-3.0, 3.0], [0.0, 40.0], [-3.0, 3.0]], "output_norm_mat": [-1.0, 1.0], "temperature": 100.0}} \ No newline at end of file +{"BOLT_EUV": {"w_1": [[0.3452189564704895, -0.15614677965641022, -0.04062516987323761, -0.5960758328437805, 0.3211185932159424, 0.31732726097106934, -0.04430829733610153, -0.37327295541763306, -0.14118380844593048, 0.12712529301643372, 0.2641555070877075, -0.3451094627380371, -0.005127656273543835, 0.6185108423233032, 0.03725295141339302, 0.3763789236545563], [-0.0708412230014801, 0.3667356073856354, 0.031383827328681946, 0.1740853488445282, -0.04695861041545868, 0.018055908381938934, 0.009072160348296165, -0.23640218377113342, -0.10362917929887772, 0.022628149017691612, -0.224413201212883, 0.20718418061733246, -0.016947750002145767, -0.3872031271457672, -0.15500062704086304, -0.06375953555107117], [-0.0838046595454216, -0.0242826659232378, -0.07765661180019379, 0.028858814388513565, -0.09516210108995438, 0.008368706330657005, 0.1689300835132599, 0.015036891214549541, -0.15121428668498993, 0.1388195902109146, 0.11486363410949707, 0.0651545450091362, 0.13559958338737488, 0.04300367832183838, -0.13856294751167297, -0.058136988431215286], [-0.006249868310987949, 0.08809533715248108, -0.040690965950489044, 0.02359287068247795, -0.00766348373144865, 0.24816390872001648, -0.17360293865203857, -0.03676899895071983, -0.17564819753170013, 0.18998438119888306, -0.050583917647600174, -0.006488069426268339, 0.10649101436138153, -0.024557121098041534, -0.103276826441288, 0.18448011577129364]], "b_1": [0.2935388386249542, 0.10967712104320526, -0.014007942751049995, 0.211833655834198, 0.33605605363845825, 0.37722209095954895, -0.16615016758441925, 0.3134673535823822, 0.06695777177810669, 0.3425212800502777, 0.3769673705101013, 0.23186539113521576, 0.5770409107208252, -0.05929069593548775, 0.01839117519557476, 0.03828774020075798], "w_2": [[-0.06261160969734192, 0.010185074992477894, -0.06083013117313385, -0.04531499370932579, -0.08979734033346176, 0.3432150185108185, -0.019801849499344826, 0.3010321259498596], [0.19698476791381836, -0.009238275699317455, 0.08842222392559052, -0.09516377002000809, -0.05022778362035751, 0.13626104593276978, -0.052890390157699585, 0.15569131076335907], [0.0724768117070198, -0.09018408507108688, 0.06850195676088333, -0.025572121143341064, 0.0680626779794693, -0.07648195326328278, 0.07993496209383011, -0.059752143919467926], [1.267876386642456, -0.05755887180566788, -0.08429178595542908, 0.021366603672504425, -0.0006479775765910745, -1.4292563199996948, -0.08077696710824966, -1.414825439453125], [0.04535430669784546, 0.06555880606174469, -0.027145234867930412, -0.07661093026399612, -0.05702832341194153, 0.23650476336479187, 0.0024587824009358883, 0.20126521587371826], [0.006042032968252897, 0.042880818247795105, 0.002187949838116765, -0.017126334831118584, -0.08352015167474747, 0.19801731407642365, -0.029196614399552345, 0.23713473975658417], [-0.01644900068640709, -0.04358499124646187, 0.014584392309188843, 0.07155826687812805, -0.09354910999536514, -0.033351872116327286, 0.07138452678918839, -0.04755295440554619], [-1.1012420654296875, -0.03534531593322754, 0.02167935110628605, -0.01116552110761404, -0.08436500281095505, 1.1038788557052612, 0.027903547510504723, 1.0676132440567017], [0.03843916580080986, -0.0952216386795044, 0.039226632565259933, 0.002778085647150874, -0.020275786519050598, -0.07848760485649109, 0.04803166165947914, 0.015538203530013561], [0.018385495990514755, -0.025189843028783798, 0.0036680365446954966, -0.02105865254998207, 0.04808586835861206, 0.1575016975402832, 0.02703506126999855, 0.23039312660694122], [-0.0033881019335240126, -0.10210853815078735, -0.04877309128642082, 0.006989633198827505, 0.046798162162303925, 0.38676899671554565, -0.032304272055625916, 0.2345031052827835], [0.22092825174331665, -0.09642873704433441, 0.04499409720301628, 0.05108088254928589, -0.10191166400909424, 0.12818090617656708, -0.021021494641900063, 0.09440375864505768], [0.1212429478764534, -0.028194155544042587, -0.0981956496834755, 0.08226924389600754, 0.055346839129924774, 0.27067816257476807, -0.09064067900180817, 0.12580905854701996], [-1.6740131378173828, -0.02066155895590782, -0.05924689769744873, 0.06347910314798355, -0.07821853458881378, 1.2807466983795166, 0.04589352011680603, 1.310766577720642], [-0.09893272817134857, -0.04093599319458008, -0.02502273954451084, 0.09490344673395157, -0.0211324505507946, -0.09021010994911194, 0.07936318963766098, -0.03593116253614426], [-0.08490308374166489, -0.015558987855911255, -0.048692114651203156, -0.007421435788273811, -0.040531404316425323, 0.25889304280281067, 0.06012800335884094, 0.27946868538856506]], "b_2": [0.07973937690258026, -0.010446485131978989, -0.003066520905122161, -0.031895797699689865, 0.006032303906977177, 0.24106740951538086, -0.008969511836767197, 0.2872662842273712], "w_3": [[-1.364486813545227, -0.11682678014039993, 0.01764785870909691, 0.03926877677440643], [-0.05695437639951706, 0.05472218990325928, 0.1266128271818161, 0.09950875490903854], [0.11415273696184158, -0.10069356113672256, 0.0864749327301979, -0.043946366757154465], [-0.10138195008039474, -0.040128443390131, -0.08937158435583115, -0.0048376512713730335], [-0.0028251828625798225, -0.04743027314543724, 0.06340016424655914, 0.07277824729681015], [0.49482327699661255, -0.06410001963376999, -0.0999293103814125, -0.14250673353672028], [0.042802367359399796, 0.0015462725423276424, -0.05991362780332565, 0.1022040992975235], [0.3523194193840027, 0.07343732565641403, 0.04157765582203865, -0.12358107417821884]], "b_3": [0.2653026282787323, -0.058485131710767746, -0.0744510293006897, 0.012550175189971924], "w_4": [[0.5988775491714478, 0.09668736904859543], [-0.04360569268465042, 0.06491032242774963], [-0.11868984252214432, -0.09601487964391708], [-0.06554870307445526, -0.14189276099205017]], "b_4": [-0.08148707449436188, -2.8251802921295166], "input_norm_mat": [[-3.0, 3.0], [-3.0, 3.0], [0.0, 40.0], [-3.0, 3.0]], "output_norm_mat": [-1.0, 1.0], "temperature": 100.0}} \ No newline at end of file diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index 3de33b88db..11308fad79 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -1,76 +1,76 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] ### angle control # Nissan appears to have torque -"NISSAN X-TRAIL 2017" = [nan, 1.5, nan] -"NISSAN ALTIMA 2020" = [nan, 1.5, nan] -"NISSAN LEAF 2018 Instrument Cluster" = [nan, 1.5, nan] -"NISSAN LEAF 2018" = [nan, 1.5, nan] -"NISSAN ROGUE 2019" = [nan, 1.5, nan] +"XTRAIL" = [nan, 1.5, nan] +"ALTIMA" = [nan, 1.5, nan] +"LEAF_IC" = [nan, 1.5, nan] +"LEAF" = [nan, 1.5, nan] +"ROGUE" = [nan, 1.5, nan] # New subarus angle based controllers -"SUBARU FORESTER 2022" = [nan, 3.0, nan] -"SUBARU OUTBACK 7TH GEN" = [nan, 3.0, nan] -"SUBARU ASCENT 2023" = [nan, 3.0, nan] +"FORESTER_2022" = [nan, 3.0, nan] +"OUTBACK_2023" = [nan, 3.0, nan] +"ASCENT_2023" = [nan, 3.0, nan] # Toyota LTA also has torque -"TOYOTA RAV4 2023" = [nan, 3.0, nan] +"RAV4_TSS2_2023" = [nan, 3.0, nan] # Tesla has high torque -"TESLA AP1 MODEL S" = [nan, 2.5, nan] -"TESLA AP2 MODEL S" = [nan, 2.5, nan] -"TESLA MODEL S RAVEN" = [nan, 2.5, nan] +"AP1_MODELS" = [nan, 2.5, nan] +"AP2_MODELS" = [nan, 2.5, nan] +"MODELS_RAVEN" = [nan, 2.5, nan] # Guess -"FORD BRONCO SPORT 1ST GEN" = [nan, 1.5, nan] -"FORD ESCAPE 4TH GEN" = [nan, 1.5, nan] -"FORD EXPLORER 6TH GEN" = [nan, 1.5, nan] -"FORD F-150 14TH GEN" = [nan, 1.5, nan] -"FORD FOCUS 4TH GEN" = [nan, 1.5, nan] -"FORD MAVERICK 1ST GEN" = [nan, 1.5, nan] -"FORD F-150 LIGHTNING 1ST GEN" = [nan, 1.5, nan] -"FORD MUSTANG MACH-E 1ST GEN" = [nan, 1.5, nan] +"BRONCO_SPORT_MK1" = [nan, 1.5, nan] +"ESCAPE_MK4" = [nan, 1.5, nan] +"EXPLORER_MK6" = [nan, 1.5, nan] +"F_150_MK14" = [nan, 1.5, nan] +"FOCUS_MK4" = [nan, 1.5, nan] +"MAVERICK_MK1" = [nan, 1.5, nan] +"F_150_LIGHTNING_MK1" = [nan, 1.5, nan] +"MUSTANG_MACH_E_MK1" = [nan, 1.5, nan] ### # No steering wheel -"COMMA BODY" = [nan, 1000, nan] +"BODY" = [nan, 1000, nan] # Totally new cars -"RAM 1500 5TH GEN" = [2.0, 2.0, 0.05] -"RAM HD 5TH GEN" = [1.4, 1.4, 0.05] -"SUBARU OUTBACK 6TH GEN" = [2.0, 2.0, 0.2] -"CADILLAC ESCALADE 2017" = [1.899999976158142, 1.842270016670227, 0.1120000034570694] -"CADILLAC ESCALADE ESV 2019" = [1.15, 1.3, 0.2] -"CHEVROLET BOLT EUV 2022" = [2.0, 2.0, 0.05] -"CHEVROLET SILVERADO 1500 2020" = [1.9, 1.9, 0.112] -"CHEVROLET TRAILBLAZER 2021" = [1.33, 1.9, 0.16] -"CHEVROLET EQUINOX 2019" = [2.5, 2.5, 0.05] -"VOLKSWAGEN CADDY 3RD GEN" = [1.2, 1.2, 0.1] -"VOLKSWAGEN PASSAT NMS" = [2.5, 2.5, 0.1] -"VOLKSWAGEN SHARAN 2ND GEN" = [2.5, 2.5, 0.1] -"HYUNDAI SANTA CRUZ 1ST GEN" = [2.7, 2.7, 0.1] -"KIA SPORTAGE 5TH GEN" = [2.6, 2.6, 0.1] -"GENESIS GV70 1ST GEN" = [2.42, 2.42, 0.1] -"GENESIS GV60 ELECTRIC 1ST GEN" = [2.5, 2.5, 0.1] -"KIA SORENTO 4TH GEN" = [2.5, 2.5, 0.1] -"KIA SORENTO HYBRID 4TH GEN" = [2.5, 2.5, 0.1] -"KIA NIRO HYBRID 2ND GEN" = [2.42, 2.5, 0.12] -"KIA NIRO EV 2ND GEN" = [2.05, 2.5, 0.14] -"GENESIS GV80 2023" = [2.5, 2.5, 0.1] -"KIA CARNIVAL 4TH GEN" = [1.75, 1.75, 0.15] -"GMC ACADIA DENALI 2018" = [1.6, 1.6, 0.2] -"LEXUS IS 2023" = [2.0, 2.0, 0.1] -"HYUNDAI KONA ELECTRIC 2ND GEN" = [2.5, 2.5, 0.1] -"HYUNDAI IONIQ 6 2023" = [2.5, 2.5, 0.1] -"HYUNDAI AZERA 6TH GEN" = [1.8, 1.8, 0.1] -"HYUNDAI AZERA HYBRID 6TH GEN" = [1.8, 1.8, 0.1] -"KIA K8 HYBRID 1ST GEN" = [2.5, 2.5, 0.1] -"HYUNDAI CUSTIN 1ST GEN" = [2.5, 2.5, 0.1] -"LEXUS GS F 2016" = [2.5, 2.5, 0.08] -"HYUNDAI STARIA 4TH GEN" = [1.8, 2.0, 0.15] +"RAM_1500_5TH_GEN" = [2.0, 2.0, 0.05] +"RAM_HD_5TH_GEN" = [1.4, 1.4, 0.05] +"OUTBACK" = [2.0, 2.0, 0.2] +"ESCALADE" = [1.899999976158142, 1.842270016670227, 0.1120000034570694] +"ESCALADE_ESV_2019" = [1.15, 1.3, 0.2] +"BOLT_EUV" = [2.0, 2.0, 0.05] +"SILVERADO" = [1.9, 1.9, 0.112] +"TRAILBLAZER" = [1.33, 1.9, 0.16] +"EQUINOX" = [2.5, 2.5, 0.05] +"CADDY_MK3" = [1.2, 1.2, 0.1] +"PASSAT_NMS" = [2.5, 2.5, 0.1] +"SHARAN_MK2" = [2.5, 2.5, 0.1] +"SANTA_CRUZ_1ST_GEN" = [2.7, 2.7, 0.1] +"KIA_SPORTAGE_5TH_GEN" = [2.6, 2.6, 0.1] +"GENESIS_GV70_1ST_GEN" = [2.42, 2.42, 0.1] +"GENESIS_GV60_EV_1ST_GEN" = [2.5, 2.5, 0.1] +"KIA_SORENTO_4TH_GEN" = [2.5, 2.5, 0.1] +"KIA_SORENTO_HEV_4TH_GEN" = [2.5, 2.5, 0.1] +"KIA_NIRO_HEV_2ND_GEN" = [2.42, 2.5, 0.12] +"KIA_NIRO_EV_2ND_GEN" = [2.05, 2.5, 0.14] +"GENESIS_GV80" = [2.5, 2.5, 0.1] +"KIA_CARNIVAL_4TH_GEN" = [1.75, 1.75, 0.15] +"ACADIA" = [1.6, 1.6, 0.2] +"LEXUS_IS_TSS2" = [2.0, 2.0, 0.1] +"KONA_EV_2ND_GEN" = [2.5, 2.5, 0.1] +"IONIQ_6" = [2.5, 2.5, 0.1] +"AZERA_6TH_GEN" = [1.8, 1.8, 0.1] +"AZERA_HEV_6TH_GEN" = [1.8, 1.8, 0.1] +"KIA_K8_HEV_1ST_GEN" = [2.5, 2.5, 0.1] +"CUSTIN_1ST_GEN" = [2.5, 2.5, 0.1] +"LEXUS_GS_F" = [2.5, 2.5, 0.08] +"STARIA_4TH_GEN" = [1.8, 2.0, 0.15] # Dashcam or fallback configured as ideal car -"mock" = [10.0, 10, 0.0] +"MOCK" = [10.0, 10, 0.0] # Manually checked -"HONDA CIVIC 2022" = [2.5, 1.2, 0.15] -"HONDA HR-V 2023" = [2.5, 1.2, 0.2] +"CIVIC_2022" = [2.5, 1.2, 0.15] +"HRV_3G" = [2.5, 1.2, 0.2] diff --git a/selfdrive/car/torque_data/params.toml b/selfdrive/car/torque_data/params.toml index 142332b220..048c5a1812 100644 --- a/selfdrive/car/torque_data/params.toml +++ b/selfdrive/car/torque_data/params.toml @@ -1,85 +1,85 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] -"ACURA ILX 2016" = [1.524988973896102, 0.519011053086259, 0.34236219253028] -"ACURA RDX 2018" = [0.9987728568686902, 0.5323765166196301, 0.303218805715844] -"ACURA RDX 2020" = [1.4314459806646749, 0.33874701282109954, 0.18048847083897598] -"AUDI A3 3RD GEN" = [1.5122414863077502, 1.7443517531719404, 0.15194151892450905] -"AUDI Q3 2ND GEN" = [1.4439223359448605, 1.2254955789112076, 0.1413798895978097] -"CHEVROLET VOLT PREMIER 2017" = [1.5961527626411784, 1.8422651988094612, 0.1572393918005158] -"CHRYSLER PACIFICA 2018" = [2.07140, 1.3366521181047952, 0.13776367250652022] -"CHRYSLER PACIFICA 2020" = [1.86206, 1.509076559398423, 0.14328246159386085] -"CHRYSLER PACIFICA HYBRID 2017" = [1.79422, 1.06831764583744, 0.116237] -"CHRYSLER PACIFICA HYBRID 2018" = [2.08887, 1.2943025830995154, 0.114818] -"CHRYSLER PACIFICA HYBRID 2019" = [1.90120, 1.1958788168371808, 0.131520] -"GENESIS G70 2018" = [3.8520195946707947, 2.354697063349854, 0.06830285485626221] -"HONDA ACCORD 2018" = [1.6893333799149202, 0.3246749081720698, 0.2120497022936265] -"HONDA CIVIC (BOSCH) 2019" = [1.691708637466905, 0.40132900729454185, 0.25460295304024094] -"HONDA CIVIC 2016" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] -"HONDA CR-V 2016" = [0.7667141440182675, 0.5927571534745969, 0.40909087636157127] -"HONDA CR-V 2017" = [2.01323205142022, 0.2700612209345081, 0.2238412881331528] -"HONDA CR-V HYBRID 2019" = [2.072034634644233, 0.7152085160516978, 0.20237105008376083] -"HONDA FIT 2018" = [1.5719981427109775, 0.5712761407108976, 0.110773383324281] -"HONDA HRV 2019" = [2.0661212805710205, 0.7521343418694775, 0.17760375789242094] -"HONDA INSIGHT 2019" = [1.5201671214069354, 0.5660229120683284, 0.25808042580281876] -"HONDA ODYSSEY 2018" = [1.8774809275211801, 0.8394431662987996, 0.2096978613792822] -"HONDA PILOT 2017" = [1.7262026201812795, 0.9470005614967523, 0.21351430733218763] -"HONDA RIDGELINE 2017" = [1.4146525028237624, 0.7356572861629564, 0.23307177552211328] -"HYUNDAI ELANTRA 2021" = [3.169, 2.1259108157250735, 0.0819] -"HYUNDAI GENESIS 2015-2016" = [2.7807965280270794, 2.325, 0.0984484465421171] -"HYUNDAI IONIQ 5 2022" = [3.172929, 2.713050, 0.096019] -"HYUNDAI IONIQ ELECTRIC LIMITED 2019" = [1.7662975472852054, 1.613755614526594, 0.17087579756306276] -"HYUNDAI IONIQ PHEV 2020" = [3.2928700076638537, 2.1193482926455656, 0.12463700961468778] -"HYUNDAI IONIQ PLUG-IN HYBRID 2019" = [2.970807902012267, 1.6312321830002083, 0.1088964990357482] -"HYUNDAI KONA ELECTRIC 2019" = [3.078814714619148, 2.307336938253934, 0.12359762054065548] -"HYUNDAI PALISADE 2020" = [2.544642494803999, 1.8721703683337008, 0.1301424599248651] -"HYUNDAI SANTA FE 2019" = [3.0787027729757632, 2.6173437483495565, 0.1207019341823945] -"HYUNDAI SANTA FE HYBRID 2022" = [3.501877602644835, 2.729064118456137, 0.10384068104538963] -"HYUNDAI SANTA FE PlUG-IN HYBRID 2022" = [1.6953050513611045, 1.5837614296206861, 0.12672855941458458] -"HYUNDAI SONATA 2019" = [2.2200457811703953, 1.2967330275895228, 0.14039920986586393] -"HYUNDAI SONATA 2020" = [2.9638737459977467, 2.1259108157250735, 0.07813665616927593] -"HYUNDAI SONATA HYBRID 2021" = [2.8990264092395734, 2.061410192222139, 0.0899805488717382] -"HYUNDAI TUCSON 4TH GEN" = [2.960174, 2.860284, 0.108745] -"JEEP GRAND CHEROKEE 2019" = [2.30972, 1.289689569171081, 0.117048] -"JEEP GRAND CHEROKEE V6 2018" = [2.27116, 1.4057367824262523, 0.11725947414922003] -"KIA EV6 2022" = [3.2, 2.093457, 0.05] -"KIA K5 2021" = [2.405339728085138, 1.460032270828705, 0.11650989850813716] -"KIA NIRO EV 2020" = [2.9215954981365337, 2.1500583840260044, 0.09236802474810267] -"KIA SORENTO GT LINE 2018" = [2.464854685101844, 1.5335274218367956, 0.12056170567599558] -"KIA STINGER GT2 2018" = [2.7499043387418967, 1.849652021986449, 0.12048334239559202] -"LEXUS ES 2019" = [2.0357564999999997, 1.999082295195227, 0.101533] -"LEXUS NX 2018" = [2.3525924753753613, 1.9731412277641067, 0.15168101064205927] -"LEXUS NX 2020" = [2.4331999786982936, 2.1045680431705414, 0.14099899317761067] -"LEXUS RX 2016" = [1.6430539050086406, 1.181960058934143, 0.19768806040843034] -"LEXUS RX 2020" = [1.5375561442049257, 1.343166476215164, 0.1931062001527557] -"MAZDA CX-9 2021" = [1.7601682915983443, 1.0889677335154337, 0.17713792194297195] -"SKODA SUPERB 3RD GEN" = [1.166437404652981, 1.1686163012668165, 0.12194533036948708] -"SUBARU FORESTER 2019" = [3.6617001649776793, 2.342197172531713, 0.11075960785398745] -"SUBARU IMPREZA LIMITED 2019" = [1.0670704910352047, 0.8234374840709592, 0.20986563268614938] -"SUBARU IMPREZA SPORT 2020" = [2.6068223389108303, 2.134872342760203, 0.15261513193561627] -"TOYOTA AVALON 2016" = [2.5185770183845646, 1.7153346784214922, 0.10603968787111022] -"TOYOTA AVALON 2019" = [1.7036141952825095, 1.239619084240008, 0.08459830394899492] -"TOYOTA AVALON 2022" = [2.3154403649717357, 2.7777922854327124, 0.11453999639164605] -"TOYOTA C-HR 2018" = [1.5591084333664578, 1.271271459066948, 0.20259087058453193] -"TOYOTA C-HR 2021" = [1.7678810166088303, 1.3742176337919942, 0.2319674583741509] -"TOYOTA CAMRY 2018" = [2.0568162685952505, 1.7576185169559122, 0.108878753] -"TOYOTA CAMRY 2021" = [2.3548324999999997, 2.368900128946771, 0.118436] -"TOYOTA COROLLA 2017" = [3.117154369115421, 1.8438132575043773, 0.12289685869250652] -"TOYOTA COROLLA TSS2 2019" = [1.991132339206426, 1.868866242720403, 0.19570063298031432] -"TOYOTA HIGHLANDER 2017" = [1.8108348718624456, 1.6348421600679828, 0.15972686105120398] -"TOYOTA HIGHLANDER 2020" = [1.9617570834136164, 1.8611643317268927, 0.14519673256119725] -"TOYOTA MIRAI 2021" = [2.506899832157829, 1.7417213930750164, 0.20182618449440565] -"TOYOTA PRIUS 2017" = [1.60, 1.5023147650693636, 0.151515] -"TOYOTA PRIUS TSS2 2021" = [1.972600, 1.9104337425537743, 0.170968] -"TOYOTA RAV4 2017" = [2.085695074355425, 2.2142832316984733, 0.13339165270103975] -"TOYOTA RAV4 2019" = [2.279239424615458, 2.087101966779332, 0.13682208413446817] +"ACURA_ILX" = [1.524988973896102, 0.519011053086259, 0.34236219253028] +"ACURA_RDX" = [0.9987728568686902, 0.5323765166196301, 0.303218805715844] +"ACURA_RDX_3G" = [1.4314459806646749, 0.33874701282109954, 0.18048847083897598] +"AUDI_A3_MK3" = [1.5122414863077502, 1.7443517531719404, 0.15194151892450905] +"AUDI_Q3_MK2" = [1.4439223359448605, 1.2254955789112076, 0.1413798895978097] +"VOLT" = [1.5961527626411784, 1.8422651988094612, 0.1572393918005158] +"PACIFICA_2018" = [2.07140, 1.3366521181047952, 0.13776367250652022] +"PACIFICA_2020" = [1.86206, 1.509076559398423, 0.14328246159386085] +"PACIFICA_2017_HYBRID" = [1.79422, 1.06831764583744, 0.116237] +"PACIFICA_2018_HYBRID" = [2.08887, 1.2943025830995154, 0.114818] +"PACIFICA_2019_HYBRID" = [1.90120, 1.1958788168371808, 0.131520] +"GENESIS_G70" = [3.8520195946707947, 2.354697063349854, 0.06830285485626221] +"ACCORD" = [1.6893333799149202, 0.3246749081720698, 0.2120497022936265] +"CIVIC_BOSCH" = [1.691708637466905, 0.40132900729454185, 0.25460295304024094] +"CIVIC" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] +"CRV" = [0.7667141440182675, 0.5927571534745969, 0.40909087636157127] +"CRV_5G" = [2.01323205142022, 0.2700612209345081, 0.2238412881331528] +"CRV_HYBRID" = [2.072034634644233, 0.7152085160516978, 0.20237105008376083] +"FIT" = [1.5719981427109775, 0.5712761407108976, 0.110773383324281] +"HRV" = [2.0661212805710205, 0.7521343418694775, 0.17760375789242094] +"INSIGHT" = [1.5201671214069354, 0.5660229120683284, 0.25808042580281876] +"ODYSSEY" = [1.8774809275211801, 0.8394431662987996, 0.2096978613792822] +"PILOT" = [1.7262026201812795, 0.9470005614967523, 0.21351430733218763] +"RIDGELINE" = [1.4146525028237624, 0.7356572861629564, 0.23307177552211328] +"ELANTRA_2021" = [3.169, 2.1259108157250735, 0.0819] +"HYUNDAI_GENESIS" = [2.7807965280270794, 2.325, 0.0984484465421171] +"IONIQ_5" = [3.172929, 2.713050, 0.096019] +"IONIQ_EV_LTD" = [1.7662975472852054, 1.613755614526594, 0.17087579756306276] +"IONIQ_PHEV" = [3.2928700076638537, 2.1193482926455656, 0.12463700961468778] +"IONIQ_PHEV_2019" = [2.970807902012267, 1.6312321830002083, 0.1088964990357482] +"KONA_EV" = [3.078814714619148, 2.307336938253934, 0.12359762054065548] +"PALISADE" = [2.544642494803999, 1.8721703683337008, 0.1301424599248651] +"SANTA_FE" = [3.0787027729757632, 2.6173437483495565, 0.1207019341823945] +"SANTA_FE_HEV_2022" = [3.501877602644835, 2.729064118456137, 0.10384068104538963] +"SANTA_FE_PHEV_2022" = [1.6953050513611045, 1.5837614296206861, 0.12672855941458458] +"SONATA_LF" = [2.2200457811703953, 1.2967330275895228, 0.14039920986586393] +"SONATA" = [2.9638737459977467, 2.1259108157250735, 0.07813665616927593] +"SONATA_HYBRID" = [2.8990264092395734, 2.061410192222139, 0.0899805488717382] +"TUCSON_4TH_GEN" = [2.960174, 2.860284, 0.108745] +"JEEP_GRAND_CHEROKEE_2019" = [2.30972, 1.289689569171081, 0.117048] +"JEEP_GRAND_CHEROKEE" = [2.27116, 1.4057367824262523, 0.11725947414922003] +"KIA_EV6" = [3.2, 2.093457, 0.05] +"KIA_K5_2021" = [2.405339728085138, 1.460032270828705, 0.11650989850813716] +"KIA_NIRO_EV" = [2.9215954981365337, 2.1500583840260044, 0.09236802474810267] +"KIA_SORENTO" = [2.464854685101844, 1.5335274218367956, 0.12056170567599558] +"KIA_STINGER" = [2.7499043387418967, 1.849652021986449, 0.12048334239559202] +"LEXUS_ES_TSS2" = [2.0357564999999997, 1.999082295195227, 0.101533] +"LEXUS_NX" = [2.3525924753753613, 1.9731412277641067, 0.15168101064205927] +"LEXUS_NX_TSS2" = [2.4331999786982936, 2.1045680431705414, 0.14099899317761067] +"LEXUS_RX" = [1.6430539050086406, 1.181960058934143, 0.19768806040843034] +"LEXUS_RX_TSS2" = [1.5375561442049257, 1.343166476215164, 0.1931062001527557] +"CX9_2021" = [1.7601682915983443, 1.0889677335154337, 0.17713792194297195] +"SKODA_SUPERB_MK3" = [1.166437404652981, 1.1686163012668165, 0.12194533036948708] +"FORESTER" = [3.6617001649776793, 2.342197172531713, 0.11075960785398745] +"IMPREZA" = [1.0670704910352047, 0.8234374840709592, 0.20986563268614938] +"IMPREZA_2020" = [2.6068223389108303, 2.134872342760203, 0.15261513193561627] +"AVALON" = [2.5185770183845646, 1.7153346784214922, 0.10603968787111022] +"AVALON_2019" = [1.7036141952825095, 1.239619084240008, 0.08459830394899492] +"AVALON_TSS2" = [2.3154403649717357, 2.7777922854327124, 0.11453999639164605] +"CHR" = [1.5591084333664578, 1.271271459066948, 0.20259087058453193] +"CHR_TSS2" = [1.7678810166088303, 1.3742176337919942, 0.2319674583741509] +"CAMRY" = [2.0568162685952505, 1.7576185169559122, 0.108878753] +"CAMRY_TSS2" = [2.3548324999999997, 2.368900128946771, 0.118436] +"COROLLA" = [3.117154369115421, 1.8438132575043773, 0.12289685869250652] +"COROLLA_TSS2" = [1.991132339206426, 1.868866242720403, 0.19570063298031432] +"HIGHLANDER" = [1.8108348718624456, 1.6348421600679828, 0.15972686105120398] +"HIGHLANDER_TSS2" = [1.9617570834136164, 1.8611643317268927, 0.14519673256119725] +"MIRAI" = [2.506899832157829, 1.7417213930750164, 0.20182618449440565] +"PRIUS" = [1.60, 1.5023147650693636, 0.151515] +"PRIUS_TSS2" = [1.972600, 1.9104337425537743, 0.170968] +"RAV4" = [2.085695074355425, 2.2142832316984733, 0.13339165270103975] +"RAV4_TSS2" = [2.279239424615458, 2.087101966779332, 0.13682208413446817] "TOYOTA RAV4 2019 8965" = [2.3080951748210854, 2.1189367835820603, 0.12942102328134028] "TOYOTA RAV4 2019 x02" = [2.762293266024922, 2.243615865975329, 0.11113568178327986] -"TOYOTA RAV4 HYBRID 2017" = [1.9796257271652042, 1.7503987331707576, 0.14628860048885406] -"TOYOTA RAV4 2022" = [2.241883248393209, 1.9304407208090029, 0.112174] +"RAV4H" = [1.9796257271652042, 1.7503987331707576, 0.14628860048885406] +"RAV4_TSS2_2022" = [2.241883248393209, 1.9304407208090029, 0.112174] "TOYOTA RAV4 2022 x02" = [3.044930631831037, 2.3979189796380918, 0.14023209146703736] -"TOYOTA SIENNA 2018" = [1.689726, 1.3208264576110418, 0.140456] -"VOLKSWAGEN ARTEON 1ST GEN" = [1.45136518053819, 1.3639364049316804, 0.23806361745695032] -"VOLKSWAGEN ATLAS 1ST GEN" = [1.4677006726964945, 1.6733266634075656, 0.12959584092073367] -"VOLKSWAGEN GOLF 7TH GEN" = [1.3750394140491293, 1.5814743077200641, 0.2018321939386586] -"VOLKSWAGEN JETTA 7TH GEN" = [1.2271623034089392, 1.216955117387, 0.19437384688370712] -"VOLKSWAGEN PASSAT 8TH GEN" = [1.3432120736752917, 1.7087275587362314, 0.19444383787326647] -"VOLKSWAGEN TIGUAN 2ND GEN" = [0.9711965500094828, 1.0001565939459098, 0.1465626137072916] +"SIENNA" = [1.689726, 1.3208264576110418, 0.140456] +"ARTEON_MK1" = [1.45136518053819, 1.3639364049316804, 0.23806361745695032] +"ATLAS_MK1" = [1.4677006726964945, 1.6733266634075656, 0.12959584092073367] +"GOLF_MK7" = [1.3750394140491293, 1.5814743077200641, 0.2018321939386586] +"JETTA_MK7" = [1.2271623034089392, 1.216955117387, 0.19437384688370712] +"PASSAT_MK8" = [1.3432120736752917, 1.7087275587362314, 0.19444383787326647] +"TIGUAN_MK2" = [0.9711965500094828, 1.0001565939459098, 0.1465626137072916] diff --git a/selfdrive/car/torque_data/substitute.toml b/selfdrive/car/torque_data/substitute.toml index 6822ef437b..2cf5bf41e5 100644 --- a/selfdrive/car/torque_data/substitute.toml +++ b/selfdrive/car/torque_data/substitute.toml @@ -1,85 +1,85 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] -"MAZDA 3" = "MAZDA CX-9 2021" -"MAZDA 6" = "MAZDA CX-9 2021" -"MAZDA CX-5" = "MAZDA CX-9 2021" -"MAZDA CX-5 2022" = "MAZDA CX-9 2021" -"MAZDA CX-9" = "MAZDA CX-9 2021" +"MAZDA3" = "CX9_2021" +"MAZDA6" = "CX9_2021" +"CX5" = "CX9_2021" +"CX5_2022" = "CX9_2021" +"CX9" = "CX9_2021" -"DODGE DURANGO 2021" = "CHRYSLER PACIFICA 2020" +"DODGE_DURANGO" = "PACIFICA_2020" -"TOYOTA ALPHARD 2020" = "TOYOTA SIENNA 2018" -"TOYOTA PRIUS v 2017" = "TOYOTA PRIUS 2017" -"LEXUS IS 2018" = "LEXUS NX 2018" -"LEXUS CT HYBRID 2018" = "LEXUS NX 2018" -"LEXUS ES 2018" = "TOYOTA CAMRY 2018" -"LEXUS RC 2020" = "LEXUS NX 2020" -"LEXUS LC 2024" = "LEXUS NX 2020" +"ALPHARD_TSS2" = "SIENNA" +"PRIUS_V" = "PRIUS" +"LEXUS_IS" = "LEXUS_NX" +"LEXUS_CTH" = "LEXUS_NX" +"LEXUS_ES" = "CAMRY" +"LEXUS_RC" = "LEXUS_NX_TSS2" +"LEXUS_LC_TSS2" = "LEXUS_NX_TSS2" -"KIA OPTIMA 4TH GEN" = "HYUNDAI SONATA 2020" -"KIA OPTIMA 4TH GEN FACELIFT" = "HYUNDAI SONATA 2020" -"KIA OPTIMA HYBRID 2017 & SPORTS 2019" = "HYUNDAI SONATA 2020" -"KIA OPTIMA HYBRID 4TH GEN FACELIFT" = "HYUNDAI SONATA 2020" -"KIA FORTE E 2018 & GT 2021" = "HYUNDAI SONATA 2020" -"KIA CEED INTRO ED 2019" = "HYUNDAI SONATA 2020" -"KIA SELTOS 2021" = "HYUNDAI SONATA 2020" -"KIA NIRO HYBRID 2019" = "KIA NIRO EV 2020" -"KIA NIRO PLUG-IN HYBRID 2022" = "KIA NIRO EV 2020" -"KIA NIRO HYBRID 2021" = "KIA NIRO EV 2020" -"HYUNDAI VELOSTER 2019" = "HYUNDAI SONATA 2019" -"HYUNDAI KONA 2020" = "HYUNDAI KONA ELECTRIC 2019" -"HYUNDAI KONA HYBRID 2020" = "HYUNDAI KONA ELECTRIC 2019" -"HYUNDAI KONA ELECTRIC 2022" = "HYUNDAI KONA ELECTRIC 2019" -"HYUNDAI IONIQ HYBRID 2017-2019" = "HYUNDAI IONIQ PLUG-IN HYBRID 2019" -"HYUNDAI IONIQ HYBRID 2020-2022" = "HYUNDAI IONIQ PLUG-IN HYBRID 2019" -"HYUNDAI IONIQ ELECTRIC 2020" = "HYUNDAI IONIQ PLUG-IN HYBRID 2019" -"HYUNDAI ELANTRA 2017" = "HYUNDAI SONATA 2019" -"HYUNDAI I30 N LINE 2019 & GT 2018 DCT" = "HYUNDAI SONATA 2019" -"HYUNDAI ELANTRA HYBRID 2021" = "HYUNDAI SONATA 2020" -"HYUNDAI TUCSON 2019" = "HYUNDAI SANTA FE 2019" -"HYUNDAI SANTA FE 2022" = "HYUNDAI SANTA FE HYBRID 2022" -"KIA K5 HYBRID 2020" = "KIA K5 2021" -"KIA STINGER 2022" = "KIA STINGER GT2 2018" -"GENESIS G90 2017" = "GENESIS G70 2018" -"GENESIS G80 2017" = "GENESIS G70 2018" -"GENESIS G70 2020" = "HYUNDAI SONATA 2020" +"KIA_OPTIMA_G4" = "SONATA" +"KIA_OPTIMA_G4_FL" = "SONATA" +"KIA_OPTIMA_H" = "SONATA" +"KIA_OPTIMA_H_G4_FL" = "SONATA" +"KIA_FORTE" = "SONATA" +"KIA_CEED" = "SONATA" +"KIA_SELTOS" = "SONATA" +"KIA_NIRO_PHEV" = "KIA_NIRO_EV" +"KIA_NIRO_PHEV_2022" = "KIA_NIRO_EV" +"KIA_NIRO_HEV_2021" = "KIA_NIRO_EV" +"VELOSTER" = "SONATA_LF" +"KONA" = "KONA_EV" +"KONA_HEV" = "KONA_EV" +"KONA_EV_2022" = "KONA_EV" +"IONIQ" = "IONIQ_PHEV_2019" +"IONIQ_HEV_2022" = "IONIQ_PHEV_2019" +"IONIQ_EV_2020" = "IONIQ_PHEV_2019" +"ELANTRA" = "SONATA_LF" +"ELANTRA_GT_I30" = "SONATA_LF" +"ELANTRA_HEV_2021" = "SONATA" +"TUCSON" = "SANTA_FE" +"SANTA_FE_2022" = "SANTA_FE_HEV_2022" +"KIA_K5_HEV_2020" = "KIA_K5_2021" +"KIA_STINGER_2022" = "KIA_STINGER" +"GENESIS_G90" = "GENESIS_G70" +"GENESIS_G80" = "GENESIS_G70" +"GENESIS_G70_2020" = "SONATA" -"HONDA FREED 2020" = "HONDA ODYSSEY 2018" -"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" +"FREED" = "ODYSSEY" +"CRV_EU" = "CRV" +"CIVIC_BOSCH_DIESEL" = "CIVIC_BOSCH" +"HONDA_E" = "CIVIC_BOSCH" +"ODYSSEY_CHN" = "ODYSSEY" -"BUICK LACROSSE 2017" = "CHEVROLET VOLT PREMIER 2017" -"BUICK REGAL ESSENCE 2018" = "CHEVROLET VOLT PREMIER 2017" -"CADILLAC ESCALADE ESV 2016" = "CHEVROLET VOLT PREMIER 2017" -"CADILLAC ATS Premium Performance 2018" = "CHEVROLET VOLT PREMIER 2017" -"CHEVROLET MALIBU PREMIER 2017" = "CHEVROLET VOLT PREMIER 2017" -"HOLDEN ASTRA RS-V BK 2017" = "CHEVROLET VOLT PREMIER 2017" +"BUICK_LACROSSE" = "VOLT" +"BUICK_REGAL" = "VOLT" +"ESCALADE_ESV" = "VOLT" +"CADILLAC_ATS" = "VOLT" +"MALIBU" = "VOLT" +"HOLDEN_ASTRA" = "VOLT" -"SKODA FABIA 4TH GEN" = "VOLKSWAGEN GOLF 7TH GEN" -"SKODA OCTAVIA 3RD GEN" = "SKODA SUPERB 3RD GEN" -"SKODA SCALA 1ST GEN" = "SKODA SUPERB 3RD GEN" -"SKODA KODIAQ 1ST GEN" = "SKODA SUPERB 3RD GEN" -"SKODA KAROQ 1ST GEN" = "SKODA SUPERB 3RD GEN" -"SKODA KAMIQ 1ST GEN" = "SKODA SUPERB 3RD GEN" -"VOLKSWAGEN CRAFTER 2ND GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN T-ROC 1ST GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN T-CROSS 1ST GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN TOURAN 2ND GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN TRANSPORTER T6.1" = "VOLKSWAGEN TIGUAN 2ND GEN" -"AUDI Q2 1ST GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN TAOS 1ST GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN POLO 6TH GEN" = "VOLKSWAGEN GOLF 7TH GEN" -"SEAT LEON 3RD GEN" = "VOLKSWAGEN GOLF 7TH GEN" -"SEAT ATECA 1ST GEN" = "VOLKSWAGEN GOLF 7TH GEN" +"SKODA_FABIA_MK4" = "GOLF_MK7" +"SKODA_OCTAVIA_MK3" = "SKODA_SUPERB_MK3" +"SKODA_SCALA_MK1" = "SKODA_SUPERB_MK3" +"SKODA_KODIAQ_MK1" = "SKODA_SUPERB_MK3" +"SKODA_KAROQ_MK1" = "SKODA_SUPERB_MK3" +"SKODA_KAMIQ_MK1" = "SKODA_SUPERB_MK3" +"CRAFTER_MK2" = "TIGUAN_MK2" +"TROC_MK1" = "TIGUAN_MK2" +"TCROSS_MK1" = "TIGUAN_MK2" +"TOURAN_MK2" = "TIGUAN_MK2" +"TRANSPORTER_T61" = "TIGUAN_MK2" +"AUDI_Q2_MK1" = "TIGUAN_MK2" +"TAOS_MK1" = "TIGUAN_MK2" +"POLO_MK6" = "GOLF_MK7" +"SEAT_LEON_MK3" = "GOLF_MK7" +"SEAT_ATECA_MK1" = "GOLF_MK7" -"SUBARU CROSSTREK HYBRID 2020" = "SUBARU IMPREZA SPORT 2020" -"SUBARU FORESTER HYBRID 2020" = "SUBARU IMPREZA SPORT 2020" -"SUBARU LEGACY 7TH GEN" = "SUBARU OUTBACK 6TH GEN" +"CROSSTREK_HYBRID" = "IMPREZA_2020" +"FORESTER_HYBRID" = "IMPREZA_2020" +"LEGACY" = "OUTBACK" # Old subarus don't have much data guessing it's like low torque impreza" -"SUBARU OUTBACK 2018 - 2019" = "SUBARU IMPREZA LIMITED 2019" -"SUBARU OUTBACK 2015 - 2017" = "SUBARU IMPREZA LIMITED 2019" -"SUBARU FORESTER 2017 - 2018" = "SUBARU IMPREZA LIMITED 2019" -"SUBARU LEGACY 2015 - 2018" = "SUBARU IMPREZA LIMITED 2019" -"SUBARU ASCENT LIMITED 2019" = "SUBARU FORESTER 2019" +"OUTBACK_PREGLOBAL_2018" = "IMPREZA" +"OUTBACK_PREGLOBAL" = "IMPREZA" +"FORESTER_PREGLOBAL" = "IMPREZA" +"LEGACY_PREGLOBAL" = "IMPREZA" +"ASCENT" = "FORESTER" diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 9a3e73048a..d8c28d8a8a 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -86,7 +86,6 @@ class ToyotaTSS2PlatformConfig(PlatformConfig): class CAR(Platforms): # Toyota ALPHARD_TSS2 = ToyotaTSS2PlatformConfig( - "TOYOTA ALPHARD 2020", [ ToyotaCarDocs("Toyota Alphard 2019-20"), ToyotaCarDocs("Toyota Alphard Hybrid 2021"), @@ -94,7 +93,6 @@ class CAR(Platforms): CarSpecs(mass=4305. * CV.LB_TO_KG, wheelbase=3.0, steerRatio=14.2, tireStiffnessFactor=0.444), ) AVALON = PlatformConfig( - "TOYOTA AVALON 2016", [ ToyotaCarDocs("Toyota Avalon 2016", "Toyota Safety Sense P"), ToyotaCarDocs("Toyota Avalon 2017-18"), @@ -103,7 +101,6 @@ class CAR(Platforms): dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), ) AVALON_2019 = PlatformConfig( - "TOYOTA AVALON 2019", [ ToyotaCarDocs("Toyota Avalon 2019-21"), ToyotaCarDocs("Toyota Avalon Hybrid 2019-21"), @@ -111,8 +108,7 @@ class CAR(Platforms): AVALON.specs, dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), ) - AVALON_TSS2 = ToyotaTSS2PlatformConfig( - "TOYOTA AVALON 2022", # TSS 2.5 + AVALON_TSS2 = ToyotaTSS2PlatformConfig( # TSS 2.5 [ ToyotaCarDocs("Toyota Avalon 2022"), ToyotaCarDocs("Toyota Avalon Hybrid 2022"), @@ -120,7 +116,6 @@ class CAR(Platforms): AVALON.specs, ) CAMRY = PlatformConfig( - "TOYOTA CAMRY 2018", [ ToyotaCarDocs("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), ToyotaCarDocs("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), @@ -129,8 +124,7 @@ class CAR(Platforms): dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_DSU, ) - CAMRY_TSS2 = ToyotaTSS2PlatformConfig( - "TOYOTA CAMRY 2021", # TSS 2.5 + CAMRY_TSS2 = ToyotaTSS2PlatformConfig( # TSS 2.5 [ ToyotaCarDocs("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), ToyotaCarDocs("Toyota Camry Hybrid 2021-24"), @@ -138,7 +132,6 @@ class CAR(Platforms): CAMRY.specs, ) CHR = PlatformConfig( - "TOYOTA C-HR 2018", [ ToyotaCarDocs("Toyota C-HR 2017-20"), ToyotaCarDocs("Toyota C-HR Hybrid 2017-20"), @@ -148,7 +141,6 @@ class CAR(Platforms): flags=ToyotaFlags.NO_DSU, ) CHR_TSS2 = ToyotaTSS2PlatformConfig( - "TOYOTA C-HR 2021", [ ToyotaCarDocs("Toyota C-HR 2021"), ToyotaCarDocs("Toyota C-HR Hybrid 2021-22"), @@ -157,14 +149,12 @@ class CAR(Platforms): flags=ToyotaFlags.RADAR_ACC, ) COROLLA = PlatformConfig( - "TOYOTA COROLLA 2017", [ToyotaCarDocs("Toyota Corolla 2017-19")], CarSpecs(mass=2860. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=18.27, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) # LSS2 Lexus UX Hybrid is same as a TSS2 Corolla Hybrid COROLLA_TSS2 = ToyotaTSS2PlatformConfig( - "TOYOTA COROLLA TSS2 2019", [ ToyotaCarDocs("Toyota Corolla 2020-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), ToyotaCarDocs("Toyota Corolla Cross (Non-US only) 2020-23", min_enable_speed=7.5), @@ -178,7 +168,6 @@ class CAR(Platforms): CarSpecs(mass=3060. * CV.LB_TO_KG, wheelbase=2.67, steerRatio=13.9, tireStiffnessFactor=0.444), ) HIGHLANDER = PlatformConfig( - "TOYOTA HIGHLANDER 2017", [ ToyotaCarDocs("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), ToyotaCarDocs("Toyota Highlander Hybrid 2017-19"), @@ -188,7 +177,6 @@ class CAR(Platforms): flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, ) HIGHLANDER_TSS2 = ToyotaTSS2PlatformConfig( - "TOYOTA HIGHLANDER 2020", [ ToyotaCarDocs("Toyota Highlander 2020-23"), ToyotaCarDocs("Toyota Highlander Hybrid 2020-23"), @@ -196,7 +184,6 @@ class CAR(Platforms): HIGHLANDER.specs, ) PRIUS = PlatformConfig( - "TOYOTA PRIUS 2017", [ ToyotaCarDocs("Toyota Prius 2016", "Toyota Safety Sense P", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), ToyotaCarDocs("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), @@ -206,14 +193,12 @@ class CAR(Platforms): dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), ) PRIUS_V = PlatformConfig( - "TOYOTA PRIUS v 2017", [ToyotaCarDocs("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED)], CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, ) PRIUS_TSS2 = ToyotaTSS2PlatformConfig( - "TOYOTA PRIUS TSS2 2021", [ ToyotaCarDocs("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), ToyotaCarDocs("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), @@ -221,7 +206,6 @@ class CAR(Platforms): CarSpecs(mass=3115. * CV.LB_TO_KG, wheelbase=2.70002, steerRatio=13.4, tireStiffnessFactor=0.6371), ) RAV4 = PlatformConfig( - "TOYOTA RAV4 2017", [ ToyotaCarDocs("Toyota RAV4 2016", "Toyota Safety Sense P"), ToyotaCarDocs("Toyota RAV4 2017-18") @@ -230,7 +214,6 @@ class CAR(Platforms): dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) RAV4H = PlatformConfig( - "TOYOTA RAV4 HYBRID 2017", [ ToyotaCarDocs("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), ToyotaCarDocs("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") @@ -240,7 +223,6 @@ class CAR(Platforms): flags=ToyotaFlags.NO_STOP_TIMER, ) RAV4_TSS2 = ToyotaTSS2PlatformConfig( - "TOYOTA RAV4 2019", [ ToyotaCarDocs("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), ToyotaCarDocs("Toyota RAV4 Hybrid 2019-21"), @@ -248,7 +230,6 @@ class CAR(Platforms): CarSpecs(mass=3585. * CV.LB_TO_KG, wheelbase=2.68986, steerRatio=14.3, tireStiffnessFactor=0.7933), ) RAV4_TSS2_2022 = ToyotaTSS2PlatformConfig( - "TOYOTA RAV4 2022", [ ToyotaCarDocs("Toyota RAV4 2022"), ToyotaCarDocs("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), @@ -257,7 +238,6 @@ class CAR(Platforms): flags=ToyotaFlags.RADAR_ACC, ) RAV4_TSS2_2023 = ToyotaTSS2PlatformConfig( - "TOYOTA RAV4 2023", [ ToyotaCarDocs("Toyota RAV4 2023-24"), ToyotaCarDocs("Toyota RAV4 Hybrid 2023-24"), @@ -265,13 +245,11 @@ class CAR(Platforms): RAV4_TSS2.specs, flags=ToyotaFlags.RADAR_ACC | ToyotaFlags.ANGLE_CONTROL, ) - MIRAI = ToyotaTSS2PlatformConfig( - "TOYOTA MIRAI 2021", # TSS 2.5 + MIRAI = ToyotaTSS2PlatformConfig( # TSS 2.5 [ToyotaCarDocs("Toyota Mirai 2021")], CarSpecs(mass=4300. * CV.LB_TO_KG, wheelbase=2.91, steerRatio=14.8, tireStiffnessFactor=0.8), ) SIENNA = PlatformConfig( - "TOYOTA SIENNA 2018", [ToyotaCarDocs("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED)], CarSpecs(mass=4590. * CV.LB_TO_KG, wheelbase=3.03, steerRatio=15.5, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), @@ -280,13 +258,11 @@ class CAR(Platforms): # Lexus LEXUS_CTH = PlatformConfig( - "LEXUS CT HYBRID 2018", [ToyotaCarDocs("Lexus CT Hybrid 2017-18", "Lexus Safety System+")], CarSpecs(mass=3108. * CV.LB_TO_KG, wheelbase=2.6, steerRatio=18.6, tireStiffnessFactor=0.517), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) LEXUS_ES = PlatformConfig( - "LEXUS ES 2018", [ ToyotaCarDocs("Lexus ES 2017-18"), ToyotaCarDocs("Lexus ES Hybrid 2017-18"), @@ -295,7 +271,6 @@ class CAR(Platforms): dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) LEXUS_ES_TSS2 = ToyotaTSS2PlatformConfig( - "LEXUS ES 2019", [ ToyotaCarDocs("Lexus ES 2019-24"), ToyotaCarDocs("Lexus ES Hybrid 2019-24", video_link="https://youtu.be/BZ29osRVJeg?t=12"), @@ -303,19 +278,16 @@ class CAR(Platforms): LEXUS_ES.specs, ) LEXUS_IS = PlatformConfig( - "LEXUS IS 2018", [ToyotaCarDocs("Lexus IS 2017-19")], CarSpecs(mass=3736.8 * CV.LB_TO_KG, wheelbase=2.79908, steerRatio=13.3, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, ) LEXUS_IS_TSS2 = ToyotaTSS2PlatformConfig( - "LEXUS IS 2023", [ToyotaCarDocs("Lexus IS 2022-23")], LEXUS_IS.specs, ) LEXUS_NX = PlatformConfig( - "LEXUS NX 2018", [ ToyotaCarDocs("Lexus NX 2018-19"), ToyotaCarDocs("Lexus NX Hybrid 2018-19"), @@ -324,7 +296,6 @@ class CAR(Platforms): dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), ) LEXUS_NX_TSS2 = ToyotaTSS2PlatformConfig( - "LEXUS NX 2020", [ ToyotaCarDocs("Lexus NX 2020-21"), ToyotaCarDocs("Lexus NX Hybrid 2020-21"), @@ -332,19 +303,16 @@ class CAR(Platforms): LEXUS_NX.specs, ) LEXUS_LC_TSS2 = ToyotaTSS2PlatformConfig( - "LEXUS LC 2024", [ToyotaCarDocs("Lexus LC 2024")], CarSpecs(mass=4500. * CV.LB_TO_KG, wheelbase=2.87, steerRatio=13.0, tireStiffnessFactor=0.444), ) LEXUS_RC = PlatformConfig( - "LEXUS RC 2020", [ToyotaCarDocs("Lexus RC 2018-20")], LEXUS_IS.specs, dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.UNSUPPORTED_DSU, ) LEXUS_RX = PlatformConfig( - "LEXUS RX 2016", [ ToyotaCarDocs("Lexus RX 2016", "Lexus Safety System+"), ToyotaCarDocs("Lexus RX 2017-19"), @@ -356,7 +324,6 @@ class CAR(Platforms): dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), ) LEXUS_RX_TSS2 = ToyotaTSS2PlatformConfig( - "LEXUS RX 2020", [ ToyotaCarDocs("Lexus RX 2020-22"), ToyotaCarDocs("Lexus RX Hybrid 2020-22"), @@ -364,7 +331,6 @@ class CAR(Platforms): LEXUS_RX.specs, ) LEXUS_GS_F = PlatformConfig( - "LEXUS GS F 2016", [ToyotaCarDocs("Lexus GS F 2016")], CarSpecs(mass=4034. * CV.LB_TO_KG, wheelbase=2.84988, steerRatio=13.3, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 9019d857b8..c8116de579 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -177,8 +177,7 @@ class VWCarDocs(CarDocs): # Exception: SEAT Leon and SEAT Ateca share a chassis code class CAR(Platforms): - ARTEON_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN ARTEON 1ST GEN", # Chassis AN + ARTEON_MK1 = VolkswagenMQBPlatformConfig( # Chassis AN [ VWCarDocs("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), VWCarDocs("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), @@ -187,8 +186,7 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1733, wheelbase=2.84), ) - ATLAS_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN ATLAS 1ST GEN", # Chassis CA + ATLAS_MK1 = VolkswagenMQBPlatformConfig( # Chassis CA [ VWCarDocs("Volkswagen Atlas 2018-23"), VWCarDocs("Volkswagen Atlas Cross Sport 2020-22"), @@ -198,16 +196,14 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=2011, wheelbase=2.98), ) - CADDY_MK3 = VolkswagenPQPlatformConfig( - "VOLKSWAGEN CADDY 3RD GEN", # Chassis 2K + CADDY_MK3 = VolkswagenPQPlatformConfig( # Chassis 2K [ VWCarDocs("Volkswagen Caddy 2019"), VWCarDocs("Volkswagen Caddy Maxi 2019"), ], VolkswagenCarSpecs(mass=1613, wheelbase=2.6, minSteerSpeed=21 * CV.KPH_TO_MS), ) - CRAFTER_MK2 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN CRAFTER 2ND GEN", # Chassis SY/SZ + CRAFTER_MK2 = VolkswagenMQBPlatformConfig( # Chassis SY/SZ [ VWCarDocs("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), VWCarDocs("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), @@ -217,8 +213,7 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), ) - GOLF_MK7 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN GOLF 7TH GEN", # Chassis 5G/AU/BA/BE + GOLF_MK7 = VolkswagenMQBPlatformConfig( # Chassis 5G/AU/BA/BE [ VWCarDocs("Volkswagen e-Golf 2014-20"), VWCarDocs("Volkswagen Golf 2015-20", auto_resume=False), @@ -231,16 +226,14 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1397, wheelbase=2.62), ) - JETTA_MK7 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN JETTA 7TH GEN", # Chassis BU + JETTA_MK7 = VolkswagenMQBPlatformConfig( # Chassis BU [ VWCarDocs("Volkswagen Jetta 2018-24"), VWCarDocs("Volkswagen Jetta GLI 2021-24"), ], VolkswagenCarSpecs(mass=1328, wheelbase=2.71), ) - PASSAT_MK8 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN PASSAT 8TH GEN", # Chassis 3G + PASSAT_MK8 = VolkswagenMQBPlatformConfig( # Chassis 3G [ VWCarDocs("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), VWCarDocs("Volkswagen Passat Alltrack 2015-22"), @@ -248,65 +241,55 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1551, wheelbase=2.79), ) - PASSAT_NMS = VolkswagenPQPlatformConfig( - "VOLKSWAGEN PASSAT NMS", # Chassis A3 + PASSAT_NMS = VolkswagenPQPlatformConfig( # Chassis A3 [VWCarDocs("Volkswagen Passat NMS 2017-22")], VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS), ) - POLO_MK6 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN POLO 6TH GEN", # Chassis AW + POLO_MK6 = VolkswagenMQBPlatformConfig( # Chassis AW [ VWCarDocs("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), VWCarDocs("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), ], VolkswagenCarSpecs(mass=1230, wheelbase=2.55), ) - SHARAN_MK2 = VolkswagenPQPlatformConfig( - "VOLKSWAGEN SHARAN 2ND GEN", # Chassis 7N + SHARAN_MK2 = VolkswagenPQPlatformConfig( # Chassis 7N [ VWCarDocs("Volkswagen Sharan 2018-22"), VWCarDocs("SEAT Alhambra 2018-20"), ], VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50*CV.KPH_TO_MS), ) - TAOS_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN TAOS 1ST GEN", # Chassis B2 + TAOS_MK1 = VolkswagenMQBPlatformConfig( # Chassis B2 [VWCarDocs("Volkswagen Taos 2022-23")], VolkswagenCarSpecs(mass=1498, wheelbase=2.69), ) - TCROSS_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN T-CROSS 1ST GEN", # Chassis C1 + TCROSS_MK1 = VolkswagenMQBPlatformConfig( # Chassis C1 [VWCarDocs("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1150, wheelbase=2.60), ) - TIGUAN_MK2 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN TIGUAN 2ND GEN", # Chassis AD/BW + TIGUAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis AD/BW [ VWCarDocs("Volkswagen Tiguan 2018-24"), VWCarDocs("Volkswagen Tiguan eHybrid 2021-23"), ], VolkswagenCarSpecs(mass=1715, wheelbase=2.74), ) - TOURAN_MK2 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN TOURAN 2ND GEN", # Chassis 1T + TOURAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis 1T [VWCarDocs("Volkswagen Touran 2016-23")], VolkswagenCarSpecs(mass=1516, wheelbase=2.79), ) - TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN TRANSPORTER T6.1", # Chassis 7H/7L + TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( # Chassis 7H/7L [ VWCarDocs("Volkswagen Caravelle 2020"), VWCarDocs("Volkswagen California 2021-23"), ], VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), ) - TROC_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN T-ROC 1ST GEN", # Chassis A1 + TROC_MK1 = VolkswagenMQBPlatformConfig( # Chassis A1 [VWCarDocs("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1413, wheelbase=2.63), ) - AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( - "AUDI A3 3RD GEN", # Chassis 8V/FF + AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( # Chassis 8V/FF [ VWCarDocs("Audi A3 2014-19"), VWCarDocs("Audi A3 Sportback e-tron 2017-18"), @@ -315,61 +298,50 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1335, wheelbase=2.61), ) - AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( - "AUDI Q2 1ST GEN", # Chassis GA + AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( # Chassis GA [VWCarDocs("Audi Q2 2018")], VolkswagenCarSpecs(mass=1205, wheelbase=2.61), ) - AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( - "AUDI Q3 2ND GEN", # Chassis 8U/F3/FS + AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( # Chassis 8U/F3/FS [VWCarDocs("Audi Q3 2019-23")], VolkswagenCarSpecs(mass=1623, wheelbase=2.68), ) - SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( - "SEAT ATECA 1ST GEN", # Chassis 5F + SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( # Chassis 5F [VWCarDocs("SEAT Ateca 2018")], VolkswagenCarSpecs(mass=1900, wheelbase=2.64), ) - SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( - "SEAT LEON 3RD GEN", # Chassis 5F + SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( # Chassis 5F [VWCarDocs("SEAT Leon 2014-20")], VolkswagenCarSpecs(mass=1227, wheelbase=2.64), ) - SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( - "SKODA FABIA 4TH GEN", # Chassis PJ + SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( # Chassis PJ [VWCarDocs("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1266, wheelbase=2.56), ) - SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( - "SKODA KAMIQ 1ST GEN", # Chassis NW + SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW [VWCarDocs("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ])], VolkswagenCarSpecs(mass=1265, wheelbase=2.66), ) - SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( - "SKODA KAROQ 1ST GEN", # Chassis NU + SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NU [VWCarDocs("Škoda Karoq 2019-23")], VolkswagenCarSpecs(mass=1278, wheelbase=2.66), ) - SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( - "SKODA KODIAQ 1ST GEN", # Chassis NS + SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NS [VWCarDocs("Škoda Kodiaq 2017-23")], VolkswagenCarSpecs(mass=1569, wheelbase=2.79), ) - SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( - "SKODA OCTAVIA 3RD GEN", # Chassis NE + SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( # Chassis NE [ VWCarDocs("Škoda Octavia 2015-19"), VWCarDocs("Škoda Octavia RS 2016"), ], VolkswagenCarSpecs(mass=1388, wheelbase=2.68), ) - SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( - "SKODA SCALA 1ST GEN", # Chassis NW + SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW [VWCarDocs("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1192, wheelbase=2.65), ) - SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( - "SKODA SUPERB 3RD GEN", # Chassis 3V/NP + SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( # Chassis 3V/NP [VWCarDocs("Škoda Superb 2015-22")], VolkswagenCarSpecs(mass=1505, wheelbase=2.84), ) diff --git a/selfdrive/debug/cycle_alerts.py b/selfdrive/debug/cycle_alerts.py index 42561f70f0..db845ed58f 100755 --- a/selfdrive/debug/cycle_alerts.py +++ b/selfdrive/debug/cycle_alerts.py @@ -52,7 +52,7 @@ def cycle_alerts(duration=200, is_metric=False): cameras = ['roadCameraState', 'wideRoadCameraState', 'driverCameraState'] CS = car.CarState.new_message() - CP = CarInterface.get_non_essential_params("HONDA CIVIC 2016") + CP = CarInterface.get_non_essential_params("CIVIC") sm = messaging.SubMaster(['deviceState', 'pandaStates', 'roadCameraState', 'modelV2', 'liveCalibration', 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman', 'managerState'] + cameras) diff --git a/selfdrive/test/helpers.py b/selfdrive/test/helpers.py index fe47637bdd..44090cce1a 100644 --- a/selfdrive/test/helpers.py +++ b/selfdrive/test/helpers.py @@ -14,7 +14,7 @@ from openpilot.system.version import training_version, terms_version def set_params_enabled(): - os.environ['FINGERPRINT'] = "TOYOTA COROLLA TSS2 2019" + os.environ['FINGERPRINT'] = "COROLLA_TSS2" os.environ['LOGPRINT'] = "debug" params = Params() diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index 099513a753..e88f62c10c 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -1,6 +1,7 @@ from collections import defaultdict from cereal import messaging +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.selfdrive.test.process_replay.vision_meta import meta_from_encode_index from openpilot.selfdrive.car.toyota.values import EPS_SCALE from openpilot.selfdrive.manager.process_config import managed_processes @@ -72,9 +73,9 @@ def migrate_pandaStates(lr): all_msgs = [] # TODO: safety param migration should be handled automatically safety_param_migration = { - "TOYOTA PRIUS 2017": EPS_SCALE["TOYOTA PRIUS 2017"] | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL, - "TOYOTA RAV4 2017": EPS_SCALE["TOYOTA RAV4 2017"] | Panda.FLAG_TOYOTA_ALT_BRAKE, - "KIA EV6 2022": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CANFD_HDA2, + "PRIUS": EPS_SCALE["PRIUS"] | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL, + "RAV4": EPS_SCALE["RAV4"] | Panda.FLAG_TOYOTA_ALT_BRAKE, + "KIA_EV6": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CANFD_HDA2, } # Migrate safety param base on carState @@ -185,6 +186,7 @@ def migrate_carParams(lr, old_logtime=False): CP = messaging.new_message('carParams') CP.valid = True CP.carParams = msg.carParams.as_builder() + CP.carParams.carFingerprint = MIGRATION.get(CP.carParams.carFingerprint, CP.carParams.carFingerprint) for car_fw in CP.carParams.carFw: car_fw.brand = CP.carParams.carName if old_logtime: diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index dd3d530f70..cd0876f2af 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -e29856a02cca7ab76461b2cc0acd25826a894667 \ No newline at end of file +9338c27947c1d8c1aa8e74ccc2a646e541f1ca8c \ No newline at end of file diff --git a/selfdrive/test/process_replay/test_processes.py b/selfdrive/test/process_replay/test_processes.py index 88e46abb06..99f04600a5 100755 --- a/selfdrive/test/process_replay/test_processes.py +++ b/selfdrive/test/process_replay/test_processes.py @@ -26,7 +26,7 @@ source_segments = [ ("HONDA", "eb140f119469d9ab|2021-06-12--10-46-24--27"), # HONDA.CIVIC (NIDEC) ("HONDA2", "7d2244f34d1bbcda|2021-06-25--12-25-37--26"), # HONDA.ACCORD (BOSCH) ("CHRYSLER", "4deb27de11bee626|2021-02-20--11-28-55--8"), # CHRYSLER.PACIFICA_2018_HYBRID - ("RAM", "17fc16d840fe9d21|2023-04-26--13-28-44--5"), # CHRYSLER.RAM_1500 + ("RAM", "17fc16d840fe9d21|2023-04-26--13-28-44--5"), # CHRYSLER.RAM_1500_5TH_GEN ("SUBARU", "341dccd5359e3c97|2022-09-12--10-35-33--3"), # SUBARU.OUTBACK ("GM", "0c58b6a25109da2b|2021-02-23--16-35-50--11"), # GM.VOLT ("GM2", "376bf99325883932|2022-10-27--13-41-22--1"), # GM.BOLT_EUV diff --git a/selfdrive/test/process_replay/test_regen.py b/selfdrive/test/process_replay/test_regen.py index 41d67ea376..a0343d7d2d 100755 --- a/selfdrive/test/process_replay/test_regen.py +++ b/selfdrive/test/process_replay/test_regen.py @@ -11,7 +11,7 @@ from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.framereader import FrameReader TESTED_SEGMENTS = [ - ("PRIUS_C2", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA PRIUS 2017: NEO, pandaStateDEPRECATED, no peripheralState, sensorEventsDEPRECATED + ("PRIUS_C2", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA.PRIUS: NEO, pandaStateDEPRECATED, no peripheralState, sensorEventsDEPRECATED # Enable these once regen on CI becomes faster or use them for different tests running controlsd in isolation # ("MAZDA_C3", "bd6a637565e91581|2021-10-30--15-14-53--4"), # MAZDA.CX9_2021: TICI, incomplete managerState # ("FORD_C3", "54827bf84c38b14f|2023-01-26--21-59-07--4"), # FORD.BRONCO_SPORT_MK1: TICI diff --git a/selfdrive/ui/tests/body.py b/selfdrive/ui/tests/body.py index c34e717eaf..7e24c2beb7 100755 --- a/selfdrive/ui/tests/body.py +++ b/selfdrive/ui/tests/body.py @@ -8,7 +8,7 @@ if __name__ == "__main__": batt = 1. while True: msg = messaging.new_message('carParams') - msg.carParams.carName = "COMMA BODY" + msg.carParams.carName = "BODY" msg.carParams.notCar = True pm.send('carParams', msg) diff --git a/tools/cabana/dbc/generate_dbc_json.py b/tools/cabana/dbc/generate_dbc_json.py index 5a8ef21d8b..dec1766a7e 100755 --- a/tools/cabana/dbc/generate_dbc_json.py +++ b/tools/cabana/dbc/generate_dbc_json.py @@ -6,7 +6,7 @@ from openpilot.selfdrive.car.values import create_platform_map def generate_dbc_json() -> str: - dbc_map = create_platform_map(lambda platform: platform.config.dbc_dict["pt"] if platform != "mock" else None) + dbc_map = create_platform_map(lambda platform: platform.config.dbc_dict["pt"] if platform != "MOCK" else None) return json.dumps(dict(sorted(dbc_map.items())), indent=2) diff --git a/tools/car_porting/README.md b/tools/car_porting/README.md index 8db17b0976..a32e9f96c9 100644 --- a/tools/car_porting/README.md +++ b/tools/car_porting/README.md @@ -21,8 +21,8 @@ Given a route and platform, automatically inserts FW fingerprints from the platf Example: ```bash -> python tools/car_porting/auto_fingerprint.py '1bbe6bf2d62f58a8|2022-07-14--17-11-43' 'SUBARU OUTBACK 6TH GEN' -Attempting to add fw version for: SUBARU OUTBACK 6TH GEN +> python tools/car_porting/auto_fingerprint.py '1bbe6bf2d62f58a8|2022-07-14--17-11-43' 'OUTBACK' +Attempting to add fw version for: OUTBACK ``` ### [selfdrive/car/tests/test_car_interfaces.py](/selfdrive/car/tests/test_car_interfaces.py) diff --git a/tools/car_porting/auto_fingerprint.py b/tools/car_porting/auto_fingerprint.py index f122c2774e..8b0ae6762d 100755 --- a/tools/car_porting/auto_fingerprint.py +++ b/tools/car_porting/auto_fingerprint.py @@ -46,7 +46,7 @@ if __name__ == "__main__": if len(possible_platforms) != 1: print(f"Unable to auto-determine platform, possible platforms: {possible_platforms}") - if carPlatform != "mock": + if carPlatform != "MOCK": print("Using platform from route") platform = carPlatform else: diff --git a/tools/lib/tests/test_comma_car_segments.py b/tools/lib/tests/test_comma_car_segments.py index b293251583..5c8906f92d 100644 --- a/tools/lib/tests/test_comma_car_segments.py +++ b/tools/lib/tests/test_comma_car_segments.py @@ -19,7 +19,7 @@ class TestCommaCarSegments(unittest.TestCase): def test_download_segment(self): database = get_comma_car_segments_database() - fp = "SUBARU FORESTER 2019" + fp = "FORESTER" segment = database[fp][0] diff --git a/tools/sim/launch_openpilot.sh b/tools/sim/launch_openpilot.sh index 9532537283..06984b690b 100755 --- a/tools/sim/launch_openpilot.sh +++ b/tools/sim/launch_openpilot.sh @@ -4,7 +4,7 @@ export PASSIVE="0" export NOBOARD="1" export SIMULATION="1" export SKIP_FW_QUERY="1" -export FINGERPRINT="HONDA CIVIC 2016" +export FINGERPRINT="CIVIC" export BLOCK="${BLOCK},camerad,loggerd,encoderd,micd,logmessaged" if [[ "$CI" ]]; then From 530bc62baa15937ac93925d5dcf39c6b868dc22a Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 19 Mar 2024 13:16:36 -0500 Subject: [PATCH 251/599] [bot] Fingerprints: add missing FW versions from new users (#31917) --- selfdrive/car/chrysler/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index f3edd8a888..5f3438fd92 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -142,6 +142,7 @@ FW_VERSIONS = { b'68443120AE ', b'68443123AC ', b'68443125AC ', + b'68496650AI ', b'68526752AD ', b'68526752AE ', b'68526754AE ', From d647361fae99b94c31e5071cbb6d81410b68c32e Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 20 Mar 2024 02:46:39 +0800 Subject: [PATCH 252/599] replay: get route datetime from INIT_DATA (#31913) get datetime from INIT_DATA --- tools/cabana/streams/replaystream.h | 2 +- tools/replay/replay.cc | 14 ++++++++++++-- tools/replay/replay.h | 4 +++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/cabana/streams/replaystream.h b/tools/cabana/streams/replaystream.h index b4e4be4db6..d92a2e426b 100644 --- a/tools/cabana/streams/replaystream.h +++ b/tools/cabana/streams/replaystream.h @@ -23,7 +23,7 @@ public: inline QString routeName() const override { return replay->route()->name(); } inline QString carFingerprint() const override { return replay->carFingerprint().c_str(); } double totalSeconds() const override { return replay->totalSeconds(); } - inline QDateTime beginDateTime() const { return replay->route()->datetime(); } + inline QDateTime beginDateTime() const { return replay->routeDateTime(); } inline double routeStartTime() const override { return replay->routeStartTime() / (double)1e9; } inline const Route *route() const { return replay->route(); } inline void setSpeed(float speed) override { replay->setSpeed(speed); } diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index 70b3f380e1..7c8c1ad43f 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -290,12 +290,22 @@ void Replay::mergeSegments(const SegmentMap::iterator &begin, const SegmentMap:: void Replay::startStream(const Segment *cur_segment) { const auto &events = cur_segment->log->events; - // each segment has an INIT_DATA route_start_ts_ = events.front()->mono_time; cur_mono_time_ += route_start_ts_ - 1; + // get datetime from INIT_DATA, fallback to datetime in the route name + route_date_time_ = route()->datetime(); + auto it = std::find_if(events.cbegin(), events.cend(), + [](auto e) { return e->which == cereal::Event::Which::INIT_DATA; }); + if (it != events.cend()) { + uint64_t wall_time = (*it)->event.getInitData().getWallTimeNanos(); + if (wall_time > 0) { + route_date_time_ = QDateTime::fromMSecsSinceEpoch(wall_time / 1e6); + } + } + // write CarParams - auto it = std::find_if(events.begin(), events.end(), [](auto e) { return e->which == cereal::Event::Which::CAR_PARAMS; }); + it = std::find_if(events.begin(), events.end(), [](auto e) { return e->which == cereal::Event::Which::CAR_PARAMS; }); if (it != events.end()) { car_fingerprint_ = (*it)->event.getCarParams().getCarFingerprint(); capnp::MallocMessageBuilder builder; diff --git a/tools/replay/replay.h b/tools/replay/replay.h index 1a74b69c3d..3859b69380 100644 --- a/tools/replay/replay.h +++ b/tools/replay/replay.h @@ -72,7 +72,8 @@ public: inline void removeFlag(REPLAY_FLAGS flag) { flags_ &= ~flag; } inline const Route* route() const { return route_.get(); } inline double currentSeconds() const { return double(cur_mono_time_ - route_start_ts_) / 1e9; } - inline QDateTime currentDateTime() const { return route_->datetime().addSecs(currentSeconds()); } + inline QDateTime routeDateTime() const { return route_date_time_; } + inline QDateTime currentDateTime() const { return route_date_time_.addSecs(currentSeconds()); } inline uint64_t routeStartTime() const { return route_start_ts_; } inline double toSeconds(uint64_t mono_time) const { return (mono_time - route_start_ts_) / 1e9; } inline int totalSeconds() const { return (!segments_.empty()) ? (segments_.rbegin()->first + 1) * 60 : 0; } @@ -121,6 +122,7 @@ protected: std::atomic exit_ = false; bool paused_ = false; bool events_updated_ = false; + QDateTime route_date_time_; uint64_t route_start_ts_ = 0; std::atomic cur_mono_time_ = 0; std::unique_ptr> events_; From 4fbc8a389662f82018eeabd03294cc761b87ce75 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 19 Mar 2024 15:39:09 -0400 Subject: [PATCH 253/599] move git commands to common/git.py (#31921) move git into common/git.py --- common/git.py | 42 +++++++++++++ common/run.py | 13 ++++ common/utils.py | 12 ++++ selfdrive/athena/athenad.py | 3 +- selfdrive/athena/manage_athenad.py | 3 +- selfdrive/controls/controlsd.py | 2 +- selfdrive/controls/lib/events.py | 2 +- selfdrive/manager/manager.py | 5 +- selfdrive/sentry.py | 4 +- selfdrive/test/process_replay/model_replay.py | 2 +- selfdrive/test/process_replay/test_debayer.py | 2 +- .../test/process_replay/test_processes.py | 2 +- selfdrive/tombstoned.py | 2 +- system/version.py | 61 ++----------------- 14 files changed, 86 insertions(+), 69 deletions(-) create mode 100644 common/git.py create mode 100644 common/run.py diff --git a/common/git.py b/common/git.py new file mode 100644 index 0000000000..e15a5051d2 --- /dev/null +++ b/common/git.py @@ -0,0 +1,42 @@ +import subprocess +from openpilot.common.utils import cache +from openpilot.common.run import run_cmd, run_cmd_default + + +@cache +def get_commit(branch: str = "HEAD") -> str: + return run_cmd_default(["git", "rev-parse", branch]) + + +@cache +def get_commit_date(commit: str = "HEAD") -> str: + return run_cmd_default(["git", "show", "--no-patch", "--format='%ct %ci'", commit]) + + +@cache +def get_short_branch() -> str: + return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"]) + + +@cache +def get_branch() -> str: + return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"]) + + +@cache +def get_origin() -> str: + try: + local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"]) + tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"]) + return run_cmd(["git", "config", "remote." + tracking_remote + ".url"]) + except subprocess.CalledProcessError: # Not on a branch, fallback + return run_cmd_default(["git", "config", "--get", "remote.origin.url"]) + + +@cache +def get_normalized_origin() -> str: + return get_origin() \ + .replace("git@", "", 1) \ + .replace(".git", "", 1) \ + .replace("https://", "", 1) \ + .replace(":", "/", 1) diff --git a/common/run.py b/common/run.py new file mode 100644 index 0000000000..25abe98c41 --- /dev/null +++ b/common/run.py @@ -0,0 +1,13 @@ +import subprocess + + +def run_cmd(cmd: list[str]) -> str: + return subprocess.check_output(cmd, encoding='utf8').strip() + + +def run_cmd_default(cmd: list[str], default: str = "") -> str: + try: + return run_cmd(cmd) + except subprocess.CalledProcessError: + return default + diff --git a/common/utils.py b/common/utils.py index b9de020ee6..e37f2448c5 100644 --- a/common/utils.py +++ b/common/utils.py @@ -1,3 +1,11 @@ +from collections.abc import Callable +from functools import lru_cache +from typing import TypeVar + + +_RT = TypeVar("_RT") + + class Freezable: _frozen: bool = False @@ -9,3 +17,7 @@ class Freezable: if self._frozen: raise Exception("cannot modify frozen object") super().__setattr__(*args, **kwargs) + + +def cache(user_function: Callable[..., _RT], /) -> Callable[..., _RT]: + return lru_cache(maxsize=None)(user_function) diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index 9f901498b7..d228af572c 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -32,12 +32,13 @@ from cereal import log from cereal.services import SERVICE_LIST from openpilot.common.api import Api from openpilot.common.file_helpers import CallbackReader +from openpilot.common.git import get_commit, get_normalized_origin, get_short_branch from openpilot.common.params import Params from openpilot.common.realtime import set_core_affinity from openpilot.system.hardware import HARDWARE, PC from openpilot.system.loggerd.xattr_cache import getxattr, setxattr from openpilot.common.swaglog import cloudlog -from openpilot.system.version import get_commit, get_normalized_origin, get_short_branch, get_version +from openpilot.system.version import get_version from openpilot.system.hardware.hw import Paths diff --git a/selfdrive/athena/manage_athenad.py b/selfdrive/athena/manage_athenad.py index 486e426911..3065bed5c7 100755 --- a/selfdrive/athena/manage_athenad.py +++ b/selfdrive/athena/manage_athenad.py @@ -7,7 +7,8 @@ from openpilot.common.params import Params from openpilot.selfdrive.manager.process import launcher from openpilot.common.swaglog import cloudlog from openpilot.system.hardware import HARDWARE -from openpilot.system.version import get_version, get_normalized_origin, get_short_branch, get_commit, is_dirty +from openpilot.common.git import get_commit, get_normalized_origin, get_short_branch +from openpilot.system.version import get_version, is_dirty ATHENA_MGR_PID_PARAM = "AthenadPid" diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 77bc787078..e6f91130b9 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -12,6 +12,7 @@ from cereal.visionipc import VisionIpcClient, VisionStreamType from openpilot.common.conversions import Conversions as CV +from openpilot.common.git import get_short_branch from openpilot.common.numpy_fast import clip from openpilot.common.params import Params from openpilot.common.realtime import config_realtime_process, Priority, Ratekeeper, DT_CTRL @@ -30,7 +31,6 @@ from openpilot.selfdrive.controls.lib.longcontrol import LongControl from openpilot.selfdrive.controls.lib.vehicle_model import VehicleModel from openpilot.system.hardware import HARDWARE -from openpilot.system.version import get_short_branch SOFT_DISABLE_TIME = 3 # seconds LDW_MIN_SPEED = 31 * CV.MPH_TO_MS diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index c5228ef7f2..c6e9504f35 100755 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -7,9 +7,9 @@ from collections.abc import Callable from cereal import log, car import cereal.messaging as messaging from openpilot.common.conversions import Conversions as CV +from openpilot.common.git import get_short_branch from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.locationd.calibrationd import MIN_SPEED_FILTER -from openpilot.system.version import get_short_branch AlertSize = log.ControlsState.AlertSize AlertStatus = log.ControlsState.AlertStatus diff --git a/selfdrive/manager/manager.py b/selfdrive/manager/manager.py index 24dceaaf08..f30b81861a 100755 --- a/selfdrive/manager/manager.py +++ b/selfdrive/manager/manager.py @@ -16,9 +16,10 @@ from openpilot.selfdrive.manager.process import ensure_running from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.selfdrive.athena.registration import register, UNREGISTERED_DONGLE_ID from openpilot.common.swaglog import cloudlog, add_file_handler -from openpilot.system.version import is_dirty, get_commit, get_version, get_origin, get_short_branch, \ +from openpilot.common.git import get_commit, get_origin, get_short_branch, get_commit_date +from openpilot.system.version import is_dirty, get_version, \ get_normalized_origin, terms_version, training_version, \ - is_tested_branch, is_release_branch, get_commit_date + is_tested_branch, is_release_branch diff --git a/selfdrive/sentry.py b/selfdrive/sentry.py index 5b63a9fe2d..889178610f 100644 --- a/selfdrive/sentry.py +++ b/selfdrive/sentry.py @@ -6,9 +6,9 @@ from sentry_sdk.integrations.threading import ThreadingIntegration from openpilot.common.params import Params from openpilot.selfdrive.athena.registration import is_registered_device from openpilot.system.hardware import HARDWARE, PC +from openpilot.common.git import get_commit, get_branch, get_origin from openpilot.common.swaglog import cloudlog -from openpilot.system.version import get_branch, get_commit, get_origin, get_version, \ - is_comma_remote, is_dirty, is_tested_branch +from openpilot.system.version import get_version, is_comma_remote, is_dirty, is_tested_branch class SentryProject(Enum): diff --git a/selfdrive/test/process_replay/model_replay.py b/selfdrive/test/process_replay/model_replay.py index 94895285df..9db05cfc82 100755 --- a/selfdrive/test/process_replay/model_replay.py +++ b/selfdrive/test/process_replay/model_replay.py @@ -6,13 +6,13 @@ from collections import defaultdict from typing import Any import cereal.messaging as messaging +from openpilot.common.git import get_commit from openpilot.common.params import Params from openpilot.system.hardware import PC from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.tools.lib.openpilotci import BASE_URL, get_url from openpilot.selfdrive.test.process_replay.compare_logs import compare_logs, format_diff from openpilot.selfdrive.test.process_replay.process_replay import get_process_config, replay_process -from openpilot.system.version import get_commit from openpilot.tools.lib.framereader import FrameReader from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.helpers import save_log diff --git a/selfdrive/test/process_replay/test_debayer.py b/selfdrive/test/process_replay/test_debayer.py index edf2cbd469..805d73db88 100755 --- a/selfdrive/test/process_replay/test_debayer.py +++ b/selfdrive/test/process_replay/test_debayer.py @@ -9,7 +9,7 @@ import pyopencl as cl # install with `PYOPENCL_CL_PRETEND_VERSION=2.0 pip insta from openpilot.system.hardware import PC, TICI from openpilot.common.basedir import BASEDIR from openpilot.tools.lib.openpilotci import BASE_URL -from openpilot.system.version import get_commit +from openpilot.common.git import get_commit from openpilot.system.camerad.snapshot.snapshot import yuv_to_rgb from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.filereader import FileReader diff --git a/selfdrive/test/process_replay/test_processes.py b/selfdrive/test/process_replay/test_processes.py index 99f04600a5..ce1daddf42 100755 --- a/selfdrive/test/process_replay/test_processes.py +++ b/selfdrive/test/process_replay/test_processes.py @@ -7,11 +7,11 @@ from collections import defaultdict from tqdm import tqdm from typing import Any +from openpilot.common.git import get_commit from openpilot.selfdrive.car.car_helpers import interface_names from openpilot.tools.lib.openpilotci import get_url, upload_file from openpilot.selfdrive.test.process_replay.compare_logs import compare_logs, format_diff from openpilot.selfdrive.test.process_replay.process_replay import CONFIGS, PROC_REPLAY_DIR, FAKEDATA, check_openpilot_enabled, replay_process -from openpilot.system.version import get_commit from openpilot.tools.lib.filereader import FileReader from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.helpers import save_log diff --git a/selfdrive/tombstoned.py b/selfdrive/tombstoned.py index ba3582d130..f1b8c88083 100755 --- a/selfdrive/tombstoned.py +++ b/selfdrive/tombstoned.py @@ -11,8 +11,8 @@ from typing import NoReturn import openpilot.selfdrive.sentry as sentry from openpilot.system.hardware.hw import Paths +from openpilot.common.git import get_commit from openpilot.common.swaglog import cloudlog -from openpilot.system.version import get_commit MAX_SIZE = 1_000_000 * 100 # allow up to 100M MAX_TOMBSTONE_FN_LEN = 62 # 85 - 23 ("/crash/") diff --git a/system/version.py b/system/version.py index 4319ef2140..7452506846 100755 --- a/system/version.py +++ b/system/version.py @@ -1,12 +1,13 @@ #!/usr/bin/env python3 import os import subprocess -from typing import TypeVar -from collections.abc import Callable -from functools import lru_cache + from openpilot.common.basedir import BASEDIR from openpilot.common.swaglog import cloudlog +from openpilot.common.utils import cache +from openpilot.common.git import get_origin, get_branch, get_short_branch, get_normalized_origin, get_commit_date + RELEASE_BRANCHES = ['release3-staging', 'release3', 'nightly'] TESTED_BRANCHES = RELEASE_BRANCHES + ['devel', 'devel-staging'] @@ -14,60 +15,6 @@ TESTED_BRANCHES = RELEASE_BRANCHES + ['devel', 'devel-staging'] training_version: bytes = b"0.2.0" terms_version: bytes = b"2" -_RT = TypeVar("_RT") -def cache(user_function: Callable[..., _RT], /) -> Callable[..., _RT]: - return lru_cache(maxsize=None)(user_function) - - -def run_cmd(cmd: list[str]) -> str: - return subprocess.check_output(cmd, encoding='utf8').strip() - - -def run_cmd_default(cmd: list[str], default: str = "") -> str: - try: - return run_cmd(cmd) - except subprocess.CalledProcessError: - return default - - -@cache -def get_commit(branch: str = "HEAD") -> str: - return run_cmd_default(["git", "rev-parse", branch]) - - -@cache -def get_commit_date(commit: str = "HEAD") -> str: - return run_cmd_default(["git", "show", "--no-patch", "--format='%ct %ci'", commit]) - - -@cache -def get_short_branch() -> str: - return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"]) - - -@cache -def get_branch() -> str: - return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"]) - - -@cache -def get_origin() -> str: - try: - local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"]) - tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"]) - return run_cmd(["git", "config", "remote." + tracking_remote + ".url"]) - except subprocess.CalledProcessError: # Not on a branch, fallback - return run_cmd_default(["git", "config", "--get", "remote.origin.url"]) - - -@cache -def get_normalized_origin() -> str: - return get_origin() \ - .replace("git@", "", 1) \ - .replace(".git", "", 1) \ - .replace("https://", "", 1) \ - .replace(":", "/", 1) - @cache def get_version() -> str: From 018b6d0fae1660b4e2916d9ce834daad47503668 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 19 Mar 2024 15:58:30 -0400 Subject: [PATCH 254/599] parameterize get_version and add get_release_notes function (#31922) version --- system/version.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/system/version.py b/system/version.py index 7452506846..7ae8313089 100755 --- a/system/version.py +++ b/system/version.py @@ -16,12 +16,17 @@ training_version: bytes = b"0.2.0" terms_version: bytes = b"2" -@cache -def get_version() -> str: - with open(os.path.join(BASEDIR, "common", "version.h")) as _versionf: +def get_version(path: str = BASEDIR) -> str: + with open(os.path.join(path, "common", "version.h")) as _versionf: version = _versionf.read().split('"')[1] return version + +def get_release_notes(path: str = BASEDIR) -> str: + with open(os.path.join(path, "RELEASES.md"), "r") as f: + return f.read().split('\n\n', 1)[0] + + @cache def get_short_version() -> str: return get_version().split('-')[0] From 3a7582d9a624ab7b43fd6cf98a19657252b11850 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 19 Mar 2024 13:46:31 -0700 Subject: [PATCH 255/599] Abstract out common CarInterface.apply (#31924) --- selfdrive/car/body/interface.py | 3 --- selfdrive/car/chrysler/interface.py | 3 --- selfdrive/car/ford/interface.py | 3 --- selfdrive/car/gm/interface.py | 3 --- selfdrive/car/honda/interface.py | 5 ----- selfdrive/car/hyundai/interface.py | 3 --- selfdrive/car/interfaces.py | 10 +++++----- selfdrive/car/mazda/interface.py | 3 --- selfdrive/car/mock/interface.py | 4 ---- selfdrive/car/nissan/interface.py | 3 --- selfdrive/car/subaru/interface.py | 3 --- selfdrive/car/tesla/interface.py | 3 --- selfdrive/car/toyota/interface.py | 5 ----- selfdrive/car/volkswagen/carcontroller.py | 7 ++++--- selfdrive/car/volkswagen/interface.py | 7 +------ 15 files changed, 10 insertions(+), 55 deletions(-) diff --git a/selfdrive/car/body/interface.py b/selfdrive/car/body/interface.py index 4d72d2f604..f797a7ecf8 100644 --- a/selfdrive/car/body/interface.py +++ b/selfdrive/car/body/interface.py @@ -37,6 +37,3 @@ class CarInterface(CarInterfaceBase): self.frame += 1 return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index e799767f26..34298a1ead 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -94,6 +94,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index ed8b010491..7dca458083 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -71,6 +71,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 1336e23c70..f470d6f468 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -237,6 +237,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 812b60d479..9d76beb649 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -257,8 +257,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - # pass in a car.CarControl - # to be called @ 100hz - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 69b5132806..7f8cf05907 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -175,6 +175,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 97c9e84c96..be1518a25a 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -93,10 +93,13 @@ class CarInterfaceBase(ABC): self.cp_loopback = self.CS.get_loopback_can_parser(CP) self.can_parsers = [self.cp, self.cp_cam, self.cp_adas, self.cp_body, self.cp_loopback] - self.CC = None + self.CC: CarControllerBase = None if CarController is not None: self.CC = CarController(self.cp.dbc_name, CP, self.VM) + def apply(self, c: car.CarControl, now_nanos: int) -> tuple[car.CarControl.Actuators, list[tuple[int, int, bytes, int]]]: + return self.CC.update(c, self.CS, now_nanos) + @staticmethod def get_pid_accel_limits(CP, current_speed, cruise_speed): return ACCEL_MIN, ACCEL_MAX @@ -250,9 +253,6 @@ class CarInterfaceBase(ABC): return reader - @abstractmethod - def apply(self, c: car.CarControl, now_nanos: int) -> tuple[car.CarControl.Actuators, list[bytes]]: - pass def create_common_events(self, cs_out, extra_gears=None, pcm_enable=True, allow_enable=True, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise)): @@ -460,7 +460,7 @@ SendCan = tuple[int, int, bytes, int] class CarControllerBase(ABC): @abstractmethod - def update(self, CC, CS, now_nanos) -> tuple[car.CarControl.Actuators, list[SendCan]]: + def update(self, CC: car.CarControl.Actuators, CS: car.CarState, now_nanos: int) -> tuple[car.CarControl.Actuators, list[SendCan]]: pass diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 12d156fee8..a0fa73c021 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -48,6 +48,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/mock/interface.py b/selfdrive/car/mock/interface.py index 2e4ac43033..6100717a74 100755 --- a/selfdrive/car/mock/interface.py +++ b/selfdrive/car/mock/interface.py @@ -29,7 +29,3 @@ class CarInterface(CarInterfaceBase): ret.vEgoRaw = self.sm[gps_sock].speed return ret - - def apply(self, c, now_nanos): - actuators = car.CarControl.Actuators.new_message() - return actuators, [] diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 3e82b5192e..170f7de287 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -42,6 +42,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 30e186bd09..340090ffa9 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -114,6 +114,3 @@ class CarInterface(CarInterfaceBase): def init(CP, logcan, sendcan): if CP.flags & SubaruFlags.DISABLE_EYESIGHT: disable_ecu(logcan, sendcan, bus=2, addr=GLOBAL_ES_ADDR, com_cont_req=b'\x28\x03\x01') - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/tesla/interface.py b/selfdrive/car/tesla/interface.py index f989886738..9577578f5d 100755 --- a/selfdrive/car/tesla/interface.py +++ b/selfdrive/car/tesla/interface.py @@ -50,6 +50,3 @@ class CarInterface(CarInterfaceBase): ret.events = self.create_common_events(ret).to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 3683e7d049..424a885d53 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -200,8 +200,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - # pass in a car.CarControl - # to be called @ 100hz - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index cfba43b4da..37a4ed36b8 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -18,6 +18,7 @@ class CarController(CarControllerBase): self.CCP = CarControllerParams(CP) self.CCS = pqcan if CP.flags & VolkswagenFlags.PQ else mqbcan self.packer_pt = CANPacker(dbc_name) + self.ext_bus = CANBUS.pt if CP.networkLocation == car.CarParams.NetworkLocation.fwdCamera else CANBUS.cam self.apply_steer_last = 0 self.gra_acc_counter_last = None @@ -26,7 +27,7 @@ class CarController(CarControllerBase): self.hca_frame_timer_running = 0 self.hca_frame_same_torque = 0 - def update(self, CC, CS, ext_bus, now_nanos): + def update(self, CC, CS, now_nanos): actuators = CC.actuators hud_control = CC.hudControl can_sends = [] @@ -108,7 +109,7 @@ class CarController(CarControllerBase): gra_send_ready = self.CP.pcmCruise and CS.gra_stock_values["COUNTER"] != self.gra_acc_counter_last if gra_send_ready and (CC.cruiseControl.cancel or CC.cruiseControl.resume): - can_sends.append(self.CCS.create_acc_buttons_control(self.packer_pt, ext_bus, CS.gra_stock_values, + can_sends.append(self.CCS.create_acc_buttons_control(self.packer_pt, self.ext_bus, CS.gra_stock_values, cancel=CC.cruiseControl.cancel, resume=CC.cruiseControl.resume)) new_actuators = actuators.copy() @@ -117,4 +118,4 @@ class CarController(CarControllerBase): self.gra_acc_counter_last = CS.gra_stock_values["COUNTER"] self.frame += 1 - return new_actuators, can_sends, self.eps_timer_soft_disable_alert + return new_actuators, can_sends diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 43a8bcdddc..83a8cde9a8 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -19,8 +19,6 @@ class CarInterface(CarInterfaceBase): self.ext_bus = CANBUS.cam self.cp_ext = self.cp_cam - self.eps_timer_soft_disable_alert = False - @staticmethod def _get_params(ret, candidate: CAR, fingerprint, car_fw, experimental_long, docs): ret.carName = "volkswagen" @@ -126,13 +124,10 @@ class CarInterface(CarInterfaceBase): if c.enabled and ret.vEgo < self.CP.minEnableSpeed: events.add(EventName.speedTooLow) - if self.eps_timer_soft_disable_alert: + if self.CC.eps_timer_soft_disable_alert: events.add(EventName.steerTimeLimit) ret.events = events.to_msg() return ret - def apply(self, c, now_nanos): - new_actuators, can_sends, self.eps_timer_soft_disable_alert = self.CC.update(c, self.CS, self.ext_bus, now_nanos) - return new_actuators, can_sends From afc96972c80743378ad0e091d9dca8c216b09298 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 19 Mar 2024 14:16:33 -0700 Subject: [PATCH 256/599] car: CarController and CarState are always present (#31925) * always set * add mock * little more * fix * fix --- selfdrive/car/car_helpers.py | 14 ++------------ selfdrive/car/interfaces.py | 30 +++++++++++++++-------------- selfdrive/car/mock/carcontroller.py | 5 +++++ selfdrive/car/mock/carstate.py | 4 ++++ 4 files changed, 27 insertions(+), 26 deletions(-) create mode 100644 selfdrive/car/mock/carcontroller.py create mode 100644 selfdrive/car/mock/carstate.py diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index f6f3960475..fd8ecc5020 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -4,7 +4,6 @@ from collections.abc import Callable from cereal import car from openpilot.common.params import Params -from openpilot.common.basedir import BASEDIR from openpilot.system.version import is_comma_remote, is_tested_branch from openpilot.selfdrive.car.interfaces import get_interface_attr from openpilot.selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars @@ -48,17 +47,8 @@ def load_interfaces(brand_names): for brand_name in brand_names: path = f'openpilot.selfdrive.car.{brand_name}' CarInterface = __import__(path + '.interface', fromlist=['CarInterface']).CarInterface - - if os.path.exists(BASEDIR + '/' + path.replace('.', '/') + '/carstate.py'): - CarState = __import__(path + '.carstate', fromlist=['CarState']).CarState - else: - CarState = None - - if os.path.exists(BASEDIR + '/' + path.replace('.', '/') + '/carcontroller.py'): - CarController = __import__(path + '.carcontroller', fromlist=['CarController']).CarController - else: - CarController = None - + CarState = __import__(path + '.carstate', fromlist=['CarState']).CarState + CarController = __import__(path + '.carcontroller', fromlist=['CarController']).CarController for model_name in brand_names[brand_name]: ret[model_name] = (CarInterface, CarController, CarState) return ret diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index be1518a25a..b6a626edec 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -81,21 +81,16 @@ class CarInterfaceBase(ABC): self.silent_steer_warning = True self.v_ego_cluster_seen = False - self.CS = None - self.can_parsers = [] - if CarState is not None: - self.CS = CarState(CP) + self.CS = CarState(CP) + self.cp = self.CS.get_can_parser(CP) + self.cp_cam = self.CS.get_cam_can_parser(CP) + self.cp_adas = self.CS.get_adas_can_parser(CP) + self.cp_body = self.CS.get_body_can_parser(CP) + self.cp_loopback = self.CS.get_loopback_can_parser(CP) + self.can_parsers = [self.cp, self.cp_cam, self.cp_adas, self.cp_body, self.cp_loopback] - self.cp = self.CS.get_can_parser(CP) - self.cp_cam = self.CS.get_cam_can_parser(CP) - self.cp_adas = self.CS.get_adas_can_parser(CP) - self.cp_body = self.CS.get_body_can_parser(CP) - self.cp_loopback = self.CS.get_loopback_can_parser(CP) - self.can_parsers = [self.cp, self.cp_cam, self.cp_adas, self.cp_body, self.cp_loopback] - - self.CC: CarControllerBase = None - if CarController is not None: - self.CC = CarController(self.cp.dbc_name, CP, self.VM) + dbc_name = "" if self.cp is None else self.cp.dbc_name + self.CC: CarControllerBase = CarController(dbc_name, CP, self.VM) def apply(self, c: car.CarControl, now_nanos: int) -> tuple[car.CarControl.Actuators, list[tuple[int, int, bytes, int]]]: return self.CC.update(c, self.CS, now_nanos) @@ -438,6 +433,10 @@ class CarStateBase(ABC): } return d.get(gear.upper(), GearShifter.unknown) + @staticmethod + def get_can_parser(CP): + return None + @staticmethod def get_cam_can_parser(CP): return None @@ -459,6 +458,9 @@ SendCan = tuple[int, int, bytes, int] class CarControllerBase(ABC): + def __init__(self, dbc_name: str, CP, VM): + pass + @abstractmethod def update(self, CC: car.CarControl.Actuators, CS: car.CarState, now_nanos: int) -> tuple[car.CarControl.Actuators, list[SendCan]]: pass diff --git a/selfdrive/car/mock/carcontroller.py b/selfdrive/car/mock/carcontroller.py new file mode 100644 index 0000000000..2b2da954ff --- /dev/null +++ b/selfdrive/car/mock/carcontroller.py @@ -0,0 +1,5 @@ +from openpilot.selfdrive.car.interfaces import CarControllerBase + +class CarController(CarControllerBase): + def update(self, CC, CS, now_nanos): + return CC.actuators.copy(), [] diff --git a/selfdrive/car/mock/carstate.py b/selfdrive/car/mock/carstate.py new file mode 100644 index 0000000000..ece908b51c --- /dev/null +++ b/selfdrive/car/mock/carstate.py @@ -0,0 +1,4 @@ +from openpilot.selfdrive.car.interfaces import CarStateBase + +class CarState(CarStateBase): + pass From b0eb3ba4f477142797624580eb3fdb6448f068d6 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 19 Mar 2024 20:29:50 -0400 Subject: [PATCH 257/599] cars: platform enums -> prepend brand name (#31927) * with brand name * migrate * Fix * fixes * more * passes * fix * fix the doc * collects * these too * more stuff * body exception :/ * more * hardcode i guess * update ref * toyota * more toyota * and here * final! * fix notebooks and ccs * move this here --- scripts/launch_corolla.sh | 2 +- selfdrive/car/body/fingerprints.py | 4 +- selfdrive/car/body/values.py | 2 +- selfdrive/car/chrysler/fingerprints.py | 10 +- selfdrive/car/chrysler/interface.py | 5 +- selfdrive/car/chrysler/values.py | 20 +- selfdrive/car/docs_definitions.py | 2 +- selfdrive/car/fingerprints.py | 364 +++++++++--------- selfdrive/car/ford/fingerprints.py | 16 +- selfdrive/car/ford/values.py | 18 +- selfdrive/car/gm/fingerprints.py | 18 +- selfdrive/car/gm/gmcan.py | 2 +- selfdrive/car/gm/interface.py | 30 +- selfdrive/car/gm/tests/test_gm.py | 4 +- selfdrive/car/gm/values.py | 26 +- selfdrive/car/honda/carstate.py | 26 +- selfdrive/car/honda/fingerprints.py | 36 +- selfdrive/car/honda/hondacan.py | 2 +- selfdrive/car/honda/interface.py | 38 +- selfdrive/car/honda/values.py | 68 ++-- selfdrive/car/hyundai/carstate.py | 2 +- selfdrive/car/hyundai/fingerprints.py | 76 ++-- selfdrive/car/hyundai/hyundaican.py | 12 +- selfdrive/car/hyundai/interface.py | 2 +- selfdrive/car/hyundai/tests/test_hyundai.py | 28 +- selfdrive/car/hyundai/values.py | 88 ++--- selfdrive/car/mazda/fingerprints.py | 12 +- selfdrive/car/mazda/interface.py | 4 +- selfdrive/car/mazda/values.py | 16 +- selfdrive/car/nissan/carcontroller.py | 6 +- selfdrive/car/nissan/carstate.py | 44 +-- selfdrive/car/nissan/fingerprints.py | 18 +- selfdrive/car/nissan/interface.py | 2 +- selfdrive/car/nissan/nissancan.py | 2 +- selfdrive/car/nissan/values.py | 10 +- selfdrive/car/subaru/fingerprints.py | 30 +- selfdrive/car/subaru/interface.py | 18 +- selfdrive/car/subaru/values.py | 46 +-- selfdrive/car/tesla/carstate.py | 8 +- selfdrive/car/tesla/fingerprints.py | 6 +- selfdrive/car/tesla/interface.py | 2 +- selfdrive/car/tesla/radar_interface.py | 4 +- selfdrive/car/tesla/values.py | 12 +- selfdrive/car/tests/routes.py | 340 ++++++++-------- selfdrive/car/tests/test_can_fingerprint.py | 2 +- selfdrive/car/tests/test_docs.py | 2 +- selfdrive/car/tests/test_lateral_limits.py | 4 +- selfdrive/car/tests/test_models.py | 4 +- .../car/torque_data/neural_ff_weights.json | 2 +- selfdrive/car/torque_data/override.toml | 82 ++-- selfdrive/car/torque_data/params.toml | 125 +++--- selfdrive/car/torque_data/substitute.toml | 118 +++--- selfdrive/car/toyota/carcontroller.py | 2 +- selfdrive/car/toyota/carstate.py | 8 +- selfdrive/car/toyota/fingerprints.py | 44 +-- selfdrive/car/toyota/interface.py | 10 +- selfdrive/car/toyota/tests/test_toyota.py | 12 +- selfdrive/car/toyota/values.py | 116 +++--- selfdrive/car/volkswagen/fingerprints.py | 32 +- selfdrive/car/volkswagen/values.py | 34 +- .../controls/lib/tests/test_latcontrol.py | 2 +- .../controls/lib/tests/test_vehicle_model.py | 2 +- selfdrive/controls/tests/test_leads.py | 2 +- selfdrive/controls/tests/test_startup.py | 12 +- selfdrive/test/helpers.py | 2 +- .../test/longitudinal_maneuvers/plant.py | 2 +- selfdrive/test/process_replay/migration.py | 4 +- selfdrive/test/process_replay/ref_commit | 2 +- selfdrive/test/process_replay/test_fuzzy.py | 2 +- .../test/process_replay/test_processes.py | 36 +- selfdrive/test/process_replay/test_regen.py | 2 +- selfdrive/test/profiling/profiler.py | 4 +- .../examples/subaru_fuzzy_fingerprint.ipynb | 14 +- .../examples/subaru_long_accel.ipynb | 4 +- .../examples/subaru_steer_temp_fault.ipynb | 4 +- tools/lib/comma_car_segments.py | 11 +- tools/lib/tests/test_comma_car_segments.py | 8 +- 77 files changed, 1099 insertions(+), 1092 deletions(-) diff --git a/scripts/launch_corolla.sh b/scripts/launch_corolla.sh index aa0243e600..4e5bca6ce5 100755 --- a/scripts/launch_corolla.sh +++ b/scripts/launch_corolla.sh @@ -2,6 +2,6 @@ DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" -export FINGERPRINT="COROLLA_TSS2" +export FINGERPRINT="TOYOTA_COROLLA_TSS2" export SKIP_FW_QUERY="1" $DIR/../launch_openpilot.sh diff --git a/selfdrive/car/body/fingerprints.py b/selfdrive/car/body/fingerprints.py index 6efaabc137..ab7a5f8d7b 100644 --- a/selfdrive/car/body/fingerprints.py +++ b/selfdrive/car/body/fingerprints.py @@ -8,13 +8,13 @@ Ecu = car.CarParams.Ecu FINGERPRINTS = { - CAR.BODY: [{ + CAR.COMMA_BODY: [{ 513: 8, 516: 8, 514: 3, 515: 4 }], } FW_VERSIONS = { - CAR.BODY: { + CAR.COMMA_BODY: { (Ecu.engine, 0x720, None): [ b'0.0.01', b'0.3.00a', diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index e570af0f69..a1195f7cb5 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -20,7 +20,7 @@ class CarControllerParams: class CAR(Platforms): - BODY = PlatformConfig( + COMMA_BODY = PlatformConfig( [CarDocs("comma body", package="All")], CarSpecs(mass=9, wheelbase=0.406, steerRatio=0.5, centerToFrontRatio=0.44), dbc_dict('comma_body', None), diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 5f3438fd92..81533e6629 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car.chrysler.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.PACIFICA_2017_HYBRID: { + CAR.CHRYSLER_PACIFICA_2017_HYBRID: { (Ecu.combinationMeter, 0x742, None): [ b'68239262AH', b'68239262AI', @@ -33,7 +33,7 @@ FW_VERSIONS = { b'05190226AK', ], }, - CAR.PACIFICA_2018: { + CAR.CHRYSLER_PACIFICA_2018: { (Ecu.combinationMeter, 0x742, None): [ b'68227902AF', b'68227902AG', @@ -90,7 +90,7 @@ FW_VERSIONS = { b'68380571AB', ], }, - CAR.PACIFICA_2020: { + CAR.CHRYSLER_PACIFICA_2020: { (Ecu.combinationMeter, 0x742, None): [ b'68405327AC', b'68436233AB', @@ -162,7 +162,7 @@ FW_VERSIONS = { b'68586231AD', ], }, - CAR.PACIFICA_2018_HYBRID: { + CAR.CHRYSLER_PACIFICA_2018_HYBRID: { (Ecu.combinationMeter, 0x742, None): [ b'68358439AE', b'68358439AG', @@ -189,7 +189,7 @@ FW_VERSIONS = { b'05190226AM', ], }, - CAR.PACIFICA_2019_HYBRID: { + CAR.CHRYSLER_PACIFICA_2019_HYBRID: { (Ecu.combinationMeter, 0x742, None): [ b'68405292AC', b'68434956AC', diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 34298a1ead..217a1a756c 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -29,13 +29,14 @@ class CarInterface(CarInterfaceBase): CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) if candidate not in RAM_CARS: # Newer FW versions standard on the following platforms, or flashed by a dealer onto older platforms have a higher minimum steering speed. - new_eps_platform = candidate in (CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.JEEP_GRAND_CHEROKEE_2019, CAR.DODGE_DURANGO) + new_eps_platform = candidate in (CAR.CHRYSLER_PACIFICA_2019_HYBRID, CAR.CHRYSLER_PACIFICA_2020, CAR.JEEP_GRAND_CHEROKEE_2019, CAR.DODGE_DURANGO) new_eps_firmware = any(fw.ecu == 'eps' and fw.fwVersion[:4] >= b"6841" for fw in car_fw) if new_eps_platform or new_eps_firmware: ret.flags |= ChryslerFlags.HIGHER_MIN_STEERING_SPEED.value # Chrysler - if candidate in (CAR.PACIFICA_2017_HYBRID, CAR.PACIFICA_2018, CAR.PACIFICA_2018_HYBRID, CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.DODGE_DURANGO): + if candidate in (CAR.CHRYSLER_PACIFICA_2017_HYBRID, CAR.CHRYSLER_PACIFICA_2018, CAR.CHRYSLER_PACIFICA_2018_HYBRID, \ + CAR.CHRYSLER_PACIFICA_2019_HYBRID, CAR.CHRYSLER_PACIFICA_2020, CAR.DODGE_DURANGO): ret.lateralTuning.init('pid') ret.lateralTuning.pid.kpBP, ret.lateralTuning.pid.kiBP = [[9., 20.], [9., 20.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.15, 0.30], [0.03, 0.05]] diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 78d5131df5..42ea94cf86 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -32,34 +32,34 @@ class ChryslerCarSpecs(CarSpecs): class CAR(Platforms): # Chrysler - PACIFICA_2017_HYBRID = ChryslerPlatformConfig( + CHRYSLER_PACIFICA_2017_HYBRID = ChryslerPlatformConfig( [ChryslerCarDocs("Chrysler Pacifica Hybrid 2017")], ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2), ) - PACIFICA_2018_HYBRID = ChryslerPlatformConfig( + CHRYSLER_PACIFICA_2018_HYBRID = ChryslerPlatformConfig( [ChryslerCarDocs("Chrysler Pacifica Hybrid 2018")], - PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) - PACIFICA_2019_HYBRID = ChryslerPlatformConfig( + CHRYSLER_PACIFICA_2019_HYBRID = ChryslerPlatformConfig( [ChryslerCarDocs("Chrysler Pacifica Hybrid 2019-23")], - PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) - PACIFICA_2018 = ChryslerPlatformConfig( + CHRYSLER_PACIFICA_2018 = ChryslerPlatformConfig( [ChryslerCarDocs("Chrysler Pacifica 2017-18")], - PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) - PACIFICA_2020 = ChryslerPlatformConfig( + CHRYSLER_PACIFICA_2020 = ChryslerPlatformConfig( [ ChryslerCarDocs("Chrysler Pacifica 2019-20"), ChryslerCarDocs("Chrysler Pacifica 2021-23", package="All"), ], - PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) # Dodge DODGE_DURANGO = ChryslerPlatformConfig( [ChryslerCarDocs("Dodge Durango 2020-21")], - PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) # Jeep diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py index 02e31fa8e6..fe717d930e 100644 --- a/selfdrive/car/docs_definitions.py +++ b/selfdrive/car/docs_definitions.py @@ -346,7 +346,7 @@ class CarDocs: return sentence_builder.format(car_model=f"{self.make} {self.model}", alc=alc, acc=acc) else: - if CP.carFingerprint == "BODY": + if CP.carFingerprint == "COMMA_BODY": return "The body is a robotics dev kit that can run openpilot. Learn more." else: raise Exception(f"This notCar does not have a detail sentence: {CP.carFingerprint}") diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index 31c45876c2..977df6bc9f 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -64,32 +64,32 @@ MIGRATION = { "ACURA RDX 2018 ACURAWATCH PLUS": HONDA.ACURA_RDX, "ACURA RDX 2020 TECH": HONDA.ACURA_RDX_3G, "AUDI A3": VW.AUDI_A3_MK3, - "HONDA ACCORD 2018 HYBRID TOURING": HONDA.ACCORD, - "HONDA ACCORD 1.5T 2018": HONDA.ACCORD, - "HONDA ACCORD 2018 LX 1.5T": HONDA.ACCORD, - "HONDA ACCORD 2018 SPORT 2T": HONDA.ACCORD, - "HONDA ACCORD 2T 2018": HONDA.ACCORD, - "HONDA ACCORD HYBRID 2018": HONDA.ACCORD, - "HONDA CIVIC 2016 TOURING": HONDA.CIVIC, - "HONDA CIVIC HATCHBACK 2017 SEDAN/COUPE 2019": HONDA.CIVIC_BOSCH, - "HONDA CIVIC SEDAN 1.6 DIESEL": HONDA.CIVIC_BOSCH_DIESEL, - "HONDA CR-V 2016 EXECUTIVE": HONDA.CRV_EU, - "HONDA CR-V 2016 TOURING": HONDA.CRV, - "HONDA CR-V 2017 EX": HONDA.CRV_5G, - "HONDA CR-V 2019 HYBRID": HONDA.CRV_HYBRID, - "HONDA FIT 2018 EX": HONDA.FIT, - "HONDA HRV 2019 TOURING": HONDA.HRV, - "HONDA INSIGHT 2019 TOURING": HONDA.INSIGHT, - "HONDA ODYSSEY 2018 EX-L": HONDA.ODYSSEY, - "HONDA ODYSSEY 2019 EXCLUSIVE CHN": HONDA.ODYSSEY_CHN, - "HONDA PILOT 2017 TOURING": HONDA.PILOT, - "HONDA PILOT 2019 ELITE": HONDA.PILOT, - "HONDA PILOT 2019": HONDA.PILOT, - "HONDA PASSPORT 2021": HONDA.PILOT, - "HONDA RIDGELINE 2017 BLACK EDITION": HONDA.RIDGELINE, - "HYUNDAI ELANTRA LIMITED ULTIMATE 2017": HYUNDAI.ELANTRA, - "HYUNDAI SANTA FE LIMITED 2019": HYUNDAI.SANTA_FE, - "HYUNDAI TUCSON DIESEL 2019": HYUNDAI.TUCSON, + "HONDA ACCORD 2018 HYBRID TOURING": HONDA.HONDA_ACCORD, + "HONDA ACCORD 1.5T 2018": HONDA.HONDA_ACCORD, + "HONDA ACCORD 2018 LX 1.5T": HONDA.HONDA_ACCORD, + "HONDA ACCORD 2018 SPORT 2T": HONDA.HONDA_ACCORD, + "HONDA ACCORD 2T 2018": HONDA.HONDA_ACCORD, + "HONDA ACCORD HYBRID 2018": HONDA.HONDA_ACCORD, + "HONDA CIVIC 2016 TOURING": HONDA.HONDA_CIVIC, + "HONDA CIVIC HATCHBACK 2017 SEDAN/COUPE 2019": HONDA.HONDA_CIVIC_BOSCH, + "HONDA CIVIC SEDAN 1.6 DIESEL": HONDA.HONDA_CIVIC_BOSCH_DIESEL, + "HONDA CR-V 2016 EXECUTIVE": HONDA.HONDA_CRV_EU, + "HONDA CR-V 2016 TOURING": HONDA.HONDA_CRV, + "HONDA CR-V 2017 EX": HONDA.HONDA_CRV_5G, + "HONDA CR-V 2019 HYBRID": HONDA.HONDA_CRV_HYBRID, + "HONDA FIT 2018 EX": HONDA.HONDA_FIT, + "HONDA HRV 2019 TOURING": HONDA.HONDA_HRV, + "HONDA INSIGHT 2019 TOURING": HONDA.HONDA_INSIGHT, + "HONDA ODYSSEY 2018 EX-L": HONDA.HONDA_ODYSSEY, + "HONDA ODYSSEY 2019 EXCLUSIVE CHN": HONDA.HONDA_ODYSSEY_CHN, + "HONDA PILOT 2017 TOURING": HONDA.HONDA_PILOT, + "HONDA PILOT 2019 ELITE": HONDA.HONDA_PILOT, + "HONDA PILOT 2019": HONDA.HONDA_PILOT, + "HONDA PASSPORT 2021": HONDA.HONDA_PILOT, + "HONDA RIDGELINE 2017 BLACK EDITION": HONDA.HONDA_RIDGELINE, + "HYUNDAI ELANTRA LIMITED ULTIMATE 2017": HYUNDAI.HYUNDAI_ELANTRA, + "HYUNDAI SANTA FE LIMITED 2019": HYUNDAI.HYUNDAI_SANTA_FE, + "HYUNDAI TUCSON DIESEL 2019": HYUNDAI.HYUNDAI_TUCSON, "KIA OPTIMA 2016": HYUNDAI.KIA_OPTIMA_G4, "KIA OPTIMA 2019": HYUNDAI.KIA_OPTIMA_G4_FL, "KIA OPTIMA SX 2019 & 2016": HYUNDAI.KIA_OPTIMA_G4_FL, @@ -102,118 +102,118 @@ MIGRATION = { "LEXUS RX 350 2016": TOYOTA.LEXUS_RX, "LEXUS RX350 2020": TOYOTA.LEXUS_RX_TSS2, "LEXUS RX450 HYBRID 2020": TOYOTA.LEXUS_RX_TSS2, - "TOYOTA SIENNA XLE 2018": TOYOTA.SIENNA, - "TOYOTA C-HR HYBRID 2018": TOYOTA.CHR, - "TOYOTA COROLLA HYBRID TSS2 2019": TOYOTA.COROLLA_TSS2, - "TOYOTA RAV4 HYBRID 2019": TOYOTA.RAV4_TSS2, + "TOYOTA SIENNA XLE 2018": TOYOTA.TOYOTA_SIENNA, + "TOYOTA C-HR HYBRID 2018": TOYOTA.TOYOTA_CHR, + "TOYOTA COROLLA HYBRID TSS2 2019": TOYOTA.TOYOTA_COROLLA_TSS2, + "TOYOTA RAV4 HYBRID 2019": TOYOTA.TOYOTA_RAV4_TSS2, "LEXUS ES HYBRID 2019": TOYOTA.LEXUS_ES_TSS2, "LEXUS NX HYBRID 2018": TOYOTA.LEXUS_NX, "LEXUS NX HYBRID 2020": TOYOTA.LEXUS_NX_TSS2, "LEXUS RX HYBRID 2020": TOYOTA.LEXUS_RX_TSS2, - "TOYOTA ALPHARD HYBRID 2021": TOYOTA.ALPHARD_TSS2, - "TOYOTA AVALON HYBRID 2019": TOYOTA.AVALON_2019, - "TOYOTA AVALON HYBRID 2022": TOYOTA.AVALON_TSS2, - "TOYOTA CAMRY HYBRID 2018": TOYOTA.CAMRY, - "TOYOTA CAMRY HYBRID 2021": TOYOTA.CAMRY_TSS2, - "TOYOTA C-HR HYBRID 2022": TOYOTA.CHR_TSS2, - "TOYOTA HIGHLANDER HYBRID 2020": TOYOTA.HIGHLANDER_TSS2, - "TOYOTA RAV4 HYBRID 2022": TOYOTA.RAV4_TSS2_2022, - "TOYOTA RAV4 HYBRID 2023": TOYOTA.RAV4_TSS2_2023, - "TOYOTA HIGHLANDER HYBRID 2018": TOYOTA.HIGHLANDER, + "TOYOTA ALPHARD HYBRID 2021": TOYOTA.TOYOTA_ALPHARD_TSS2, + "TOYOTA AVALON HYBRID 2019": TOYOTA.TOYOTA_AVALON_2019, + "TOYOTA AVALON HYBRID 2022": TOYOTA.TOYOTA_AVALON_TSS2, + "TOYOTA CAMRY HYBRID 2018": TOYOTA.TOYOTA_CAMRY, + "TOYOTA CAMRY HYBRID 2021": TOYOTA.TOYOTA_CAMRY_TSS2, + "TOYOTA C-HR HYBRID 2022": TOYOTA.TOYOTA_CHR_TSS2, + "TOYOTA HIGHLANDER HYBRID 2020": TOYOTA.TOYOTA_HIGHLANDER_TSS2, + "TOYOTA RAV4 HYBRID 2022": TOYOTA.TOYOTA_RAV4_TSS2_2022, + "TOYOTA RAV4 HYBRID 2023": TOYOTA.TOYOTA_RAV4_TSS2_2023, + "TOYOTA HIGHLANDER HYBRID 2018": TOYOTA.TOYOTA_HIGHLANDER, "LEXUS ES HYBRID 2018": TOYOTA.LEXUS_ES, "LEXUS RX HYBRID 2017": TOYOTA.LEXUS_RX, - "HYUNDAI TUCSON HYBRID 4TH GEN": HYUNDAI.TUCSON_4TH_GEN, + "HYUNDAI TUCSON HYBRID 4TH GEN": HYUNDAI.HYUNDAI_TUCSON_4TH_GEN, "KIA SPORTAGE HYBRID 5TH GEN": HYUNDAI.KIA_SPORTAGE_5TH_GEN, "KIA SORENTO PLUG-IN HYBRID 4TH GEN": HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, # Removal of platform_str, see https://github.com/commaai/openpilot/pull/31868/ - "COMMA BODY": BODY.BODY, - "CHRYSLER PACIFICA HYBRID 2017": CHRYSLER.PACIFICA_2017_HYBRID, - "CHRYSLER PACIFICA HYBRID 2018": CHRYSLER.PACIFICA_2018_HYBRID, - "CHRYSLER PACIFICA HYBRID 2019": CHRYSLER.PACIFICA_2019_HYBRID, - "CHRYSLER PACIFICA 2018": CHRYSLER.PACIFICA_2018, - "CHRYSLER PACIFICA 2020": CHRYSLER.PACIFICA_2020, + "COMMA BODY": BODY.COMMA_BODY, + "CHRYSLER PACIFICA HYBRID 2017": CHRYSLER.CHRYSLER_PACIFICA_2017_HYBRID, + "CHRYSLER PACIFICA HYBRID 2018": CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID, + "CHRYSLER PACIFICA HYBRID 2019": CHRYSLER.CHRYSLER_PACIFICA_2019_HYBRID, + "CHRYSLER PACIFICA 2018": CHRYSLER.CHRYSLER_PACIFICA_2018, + "CHRYSLER PACIFICA 2020": CHRYSLER.CHRYSLER_PACIFICA_2020, "DODGE DURANGO 2021": CHRYSLER.DODGE_DURANGO, "RAM 1500 5TH GEN": CHRYSLER.RAM_1500_5TH_GEN, "RAM HD 5TH GEN": CHRYSLER.RAM_HD_5TH_GEN, - "FORD BRONCO SPORT 1ST GEN": FORD.BRONCO_SPORT_MK1, - "FORD ESCAPE 4TH GEN": FORD.ESCAPE_MK4, - "FORD EXPLORER 6TH GEN": FORD.EXPLORER_MK6, - "FORD F-150 14TH GEN": FORD.F_150_MK14, - "FORD F-150 LIGHTNING 1ST GEN": FORD.F_150_LIGHTNING_MK1, - "FORD FOCUS 4TH GEN": FORD.FOCUS_MK4, - "FORD MAVERICK 1ST GEN": FORD.MAVERICK_MK1, - "FORD MUSTANG MACH-E 1ST GEN": FORD.MUSTANG_MACH_E_MK1, + "FORD BRONCO SPORT 1ST GEN": FORD.FORD_BRONCO_SPORT_MK1, + "FORD ESCAPE 4TH GEN": FORD.FORD_ESCAPE_MK4, + "FORD EXPLORER 6TH GEN": FORD.FORD_EXPLORER_MK6, + "FORD F-150 14TH GEN": FORD.FORD_F_150_MK14, + "FORD F-150 LIGHTNING 1ST GEN": FORD.FORD_F_150_LIGHTNING_MK1, + "FORD FOCUS 4TH GEN": FORD.FORD_FOCUS_MK4, + "FORD MAVERICK 1ST GEN": FORD.FORD_MAVERICK_MK1, + "FORD MUSTANG MACH-E 1ST GEN": FORD.FORD_MUSTANG_MACH_E_MK1, "HOLDEN ASTRA RS-V BK 2017": GM.HOLDEN_ASTRA, - "CHEVROLET VOLT PREMIER 2017": GM.VOLT, + "CHEVROLET VOLT PREMIER 2017": GM.CHEVROLET_VOLT, "CADILLAC ATS Premium Performance 2018": GM.CADILLAC_ATS, - "CHEVROLET MALIBU PREMIER 2017": GM.MALIBU, - "GMC ACADIA DENALI 2018": GM.ACADIA, + "CHEVROLET MALIBU PREMIER 2017": GM.CHEVROLET_MALIBU, + "GMC ACADIA DENALI 2018": GM.GMC_ACADIA, "BUICK LACROSSE 2017": GM.BUICK_LACROSSE, "BUICK REGAL ESSENCE 2018": GM.BUICK_REGAL, - "CADILLAC ESCALADE 2017": GM.ESCALADE, - "CADILLAC ESCALADE ESV 2016": GM.ESCALADE_ESV, - "CADILLAC ESCALADE ESV 2019": GM.ESCALADE_ESV_2019, - "CHEVROLET BOLT EUV 2022": GM.BOLT_EUV, - "CHEVROLET SILVERADO 1500 2020": GM.SILVERADO, - "CHEVROLET EQUINOX 2019": GM.EQUINOX, - "CHEVROLET TRAILBLAZER 2021": GM.TRAILBLAZER, - "HONDA ACCORD 2018": HONDA.ACCORD, - "HONDA CIVIC (BOSCH) 2019": HONDA.CIVIC_BOSCH, - "HONDA CIVIC SEDAN 1.6 DIESEL 2019": HONDA.CIVIC_BOSCH_DIESEL, - "HONDA CIVIC 2022": HONDA.CIVIC_2022, - "HONDA CR-V 2017": HONDA.CRV_5G, - "HONDA CR-V HYBRID 2019": HONDA.CRV_HYBRID, - "HONDA HR-V 2023": HONDA.HRV_3G, + "CADILLAC ESCALADE 2017": GM.CADILLAC_ESCALADE, + "CADILLAC ESCALADE ESV 2016": GM.CADILLAC_ESCALADE_ESV, + "CADILLAC ESCALADE ESV 2019": GM.CADILLAC_ESCALADE_ESV_2019, + "CHEVROLET BOLT EUV 2022": GM.CHEVROLET_BOLT_EUV, + "CHEVROLET SILVERADO 1500 2020": GM.CHEVROLET_SILVERADO, + "CHEVROLET EQUINOX 2019": GM.CHEVROLET_EQUINOX, + "CHEVROLET TRAILBLAZER 2021": GM.CHEVROLET_TRAILBLAZER, + "HONDA ACCORD 2018": HONDA.HONDA_ACCORD, + "HONDA CIVIC (BOSCH) 2019": HONDA.HONDA_CIVIC_BOSCH, + "HONDA CIVIC SEDAN 1.6 DIESEL 2019": HONDA.HONDA_CIVIC_BOSCH_DIESEL, + "HONDA CIVIC 2022": HONDA.HONDA_CIVIC_2022, + "HONDA CR-V 2017": HONDA.HONDA_CRV_5G, + "HONDA CR-V HYBRID 2019": HONDA.HONDA_CRV_HYBRID, + "HONDA HR-V 2023": HONDA.HONDA_HRV_3G, "ACURA RDX 2020": HONDA.ACURA_RDX_3G, - "HONDA INSIGHT 2019": HONDA.INSIGHT, + "HONDA INSIGHT 2019": HONDA.HONDA_INSIGHT, "HONDA E 2020": HONDA.HONDA_E, "ACURA ILX 2016": HONDA.ACURA_ILX, - "HONDA CR-V 2016": HONDA.CRV, - "HONDA CR-V EU 2016": HONDA.CRV_EU, - "HONDA FIT 2018": HONDA.FIT, - "HONDA FREED 2020": HONDA.FREED, - "HONDA HRV 2019": HONDA.HRV, - "HONDA ODYSSEY 2018": HONDA.ODYSSEY, - "HONDA ODYSSEY CHN 2019": HONDA.ODYSSEY_CHN, + "HONDA CR-V 2016": HONDA.HONDA_CRV, + "HONDA CR-V EU 2016": HONDA.HONDA_CRV_EU, + "HONDA FIT 2018": HONDA.HONDA_FIT, + "HONDA FREED 2020": HONDA.HONDA_FREED, + "HONDA HRV 2019": HONDA.HONDA_HRV, + "HONDA ODYSSEY 2018": HONDA.HONDA_ODYSSEY, + "HONDA ODYSSEY CHN 2019": HONDA.HONDA_ODYSSEY_CHN, "ACURA RDX 2018": HONDA.ACURA_RDX, - "HONDA PILOT 2017": HONDA.PILOT, - "HONDA RIDGELINE 2017": HONDA.RIDGELINE, - "HONDA CIVIC 2016": HONDA.CIVIC, - "HYUNDAI AZERA 6TH GEN": HYUNDAI.AZERA_6TH_GEN, - "HYUNDAI AZERA HYBRID 6TH GEN": HYUNDAI.AZERA_HEV_6TH_GEN, - "HYUNDAI ELANTRA 2017": HYUNDAI.ELANTRA, - "HYUNDAI I30 N LINE 2019 & GT 2018 DCT": HYUNDAI.ELANTRA_GT_I30, - "HYUNDAI ELANTRA 2021": HYUNDAI.ELANTRA_2021, - "HYUNDAI ELANTRA HYBRID 2021": HYUNDAI.ELANTRA_HEV_2021, + "HONDA PILOT 2017": HONDA.HONDA_PILOT, + "HONDA RIDGELINE 2017": HONDA.HONDA_RIDGELINE, + "HONDA CIVIC 2016": HONDA.HONDA_CIVIC, + "HYUNDAI AZERA 6TH GEN": HYUNDAI.HYUNDAI_AZERA_6TH_GEN, + "HYUNDAI AZERA HYBRID 6TH GEN": HYUNDAI.HYUNDAI_AZERA_HEV_6TH_GEN, + "HYUNDAI ELANTRA 2017": HYUNDAI.HYUNDAI_ELANTRA, + "HYUNDAI I30 N LINE 2019 & GT 2018 DCT": HYUNDAI.HYUNDAI_ELANTRA_GT_I30, + "HYUNDAI ELANTRA 2021": HYUNDAI.HYUNDAI_ELANTRA_2021, + "HYUNDAI ELANTRA HYBRID 2021": HYUNDAI.HYUNDAI_ELANTRA_HEV_2021, "HYUNDAI GENESIS 2015-2016": HYUNDAI.HYUNDAI_GENESIS, - "HYUNDAI IONIQ HYBRID 2017-2019": HYUNDAI.IONIQ, - "HYUNDAI IONIQ HYBRID 2020-2022": HYUNDAI.IONIQ_HEV_2022, - "HYUNDAI IONIQ ELECTRIC LIMITED 2019": HYUNDAI.IONIQ_EV_LTD, - "HYUNDAI IONIQ ELECTRIC 2020": HYUNDAI.IONIQ_EV_2020, - "HYUNDAI IONIQ PLUG-IN HYBRID 2019": HYUNDAI.IONIQ_PHEV_2019, - "HYUNDAI IONIQ PHEV 2020": HYUNDAI.IONIQ_PHEV, - "HYUNDAI KONA 2020": HYUNDAI.KONA, - "HYUNDAI KONA ELECTRIC 2019": HYUNDAI.KONA_EV, - "HYUNDAI KONA ELECTRIC 2022": HYUNDAI.KONA_EV_2022, - "HYUNDAI KONA ELECTRIC 2ND GEN": HYUNDAI.KONA_EV_2ND_GEN, - "HYUNDAI KONA HYBRID 2020": HYUNDAI.KONA_HEV, - "HYUNDAI SANTA FE 2019": HYUNDAI.SANTA_FE, - "HYUNDAI SANTA FE 2022": HYUNDAI.SANTA_FE_2022, - "HYUNDAI SANTA FE HYBRID 2022": HYUNDAI.SANTA_FE_HEV_2022, - "HYUNDAI SANTA FE PlUG-IN HYBRID 2022": HYUNDAI.SANTA_FE_PHEV_2022, - "HYUNDAI SONATA 2020": HYUNDAI.SONATA, - "HYUNDAI SONATA 2019": HYUNDAI.SONATA_LF, - "HYUNDAI STARIA 4TH GEN": HYUNDAI.STARIA_4TH_GEN, - "HYUNDAI TUCSON 2019": HYUNDAI.TUCSON, - "HYUNDAI PALISADE 2020": HYUNDAI.PALISADE, - "HYUNDAI VELOSTER 2019": HYUNDAI.VELOSTER, - "HYUNDAI SONATA HYBRID 2021": HYUNDAI.SONATA_HYBRID, - "HYUNDAI IONIQ 5 2022": HYUNDAI.IONIQ_5, - "HYUNDAI IONIQ 6 2023": HYUNDAI.IONIQ_6, - "HYUNDAI TUCSON 4TH GEN": HYUNDAI.TUCSON_4TH_GEN, - "HYUNDAI SANTA CRUZ 1ST GEN": HYUNDAI.SANTA_CRUZ_1ST_GEN, - "HYUNDAI CUSTIN 1ST GEN": HYUNDAI.CUSTIN_1ST_GEN, + "HYUNDAI IONIQ HYBRID 2017-2019": HYUNDAI.HYUNDAI_IONIQ, + "HYUNDAI IONIQ HYBRID 2020-2022": HYUNDAI.HYUNDAI_IONIQ_HEV_2022, + "HYUNDAI IONIQ ELECTRIC LIMITED 2019": HYUNDAI.HYUNDAI_IONIQ_EV_LTD, + "HYUNDAI IONIQ ELECTRIC 2020": HYUNDAI.HYUNDAI_IONIQ_EV_2020, + "HYUNDAI IONIQ PLUG-IN HYBRID 2019": HYUNDAI.HYUNDAI_IONIQ_PHEV_2019, + "HYUNDAI IONIQ PHEV 2020": HYUNDAI.HYUNDAI_IONIQ_PHEV, + "HYUNDAI KONA 2020": HYUNDAI.HYUNDAI_KONA, + "HYUNDAI KONA ELECTRIC 2019": HYUNDAI.HYUNDAI_KONA_EV, + "HYUNDAI KONA ELECTRIC 2022": HYUNDAI.HYUNDAI_KONA_EV_2022, + "HYUNDAI KONA ELECTRIC 2ND GEN": HYUNDAI.HYUNDAI_KONA_EV_2ND_GEN, + "HYUNDAI KONA HYBRID 2020": HYUNDAI.HYUNDAI_KONA_HEV, + "HYUNDAI SANTA FE 2019": HYUNDAI.HYUNDAI_SANTA_FE, + "HYUNDAI SANTA FE 2022": HYUNDAI.HYUNDAI_SANTA_FE_2022, + "HYUNDAI SANTA FE HYBRID 2022": HYUNDAI.HYUNDAI_SANTA_FE_HEV_2022, + "HYUNDAI SANTA FE PlUG-IN HYBRID 2022": HYUNDAI.HYUNDAI_SANTA_FE_PHEV_2022, + "HYUNDAI SONATA 2020": HYUNDAI.HYUNDAI_SONATA, + "HYUNDAI SONATA 2019": HYUNDAI.HYUNDAI_SONATA_LF, + "HYUNDAI STARIA 4TH GEN": HYUNDAI.HYUNDAI_STARIA_4TH_GEN, + "HYUNDAI TUCSON 2019": HYUNDAI.HYUNDAI_TUCSON, + "HYUNDAI PALISADE 2020": HYUNDAI.HYUNDAI_PALISADE, + "HYUNDAI VELOSTER 2019": HYUNDAI.HYUNDAI_VELOSTER, + "HYUNDAI SONATA HYBRID 2021": HYUNDAI.HYUNDAI_SONATA_HYBRID, + "HYUNDAI IONIQ 5 2022": HYUNDAI.HYUNDAI_IONIQ_5, + "HYUNDAI IONIQ 6 2023": HYUNDAI.HYUNDAI_IONIQ_6, + "HYUNDAI TUCSON 4TH GEN": HYUNDAI.HYUNDAI_TUCSON_4TH_GEN, + "HYUNDAI SANTA CRUZ 1ST GEN": HYUNDAI.HYUNDAI_SANTA_CRUZ_1ST_GEN, + "HYUNDAI CUSTIN 1ST GEN": HYUNDAI.HYUNDAI_CUSTIN_1ST_GEN, "KIA FORTE E 2018 & GT 2021": HYUNDAI.KIA_FORTE, "KIA K5 2021": HYUNDAI.KIA_K5_2021, "KIA K5 HYBRID 2020": HYUNDAI.KIA_K5_HEV_2020, @@ -245,56 +245,56 @@ MIGRATION = { "GENESIS G80 2017": HYUNDAI.GENESIS_G80, "GENESIS G90 2017": HYUNDAI.GENESIS_G90, "GENESIS GV80 2023": HYUNDAI.GENESIS_GV80, - "MAZDA CX-5": MAZDA.CX5, - "MAZDA CX-9": MAZDA.CX9, - "MAZDA 3": MAZDA.MAZDA3, - "MAZDA 6": MAZDA.MAZDA6, - "MAZDA CX-9 2021": MAZDA.CX9_2021, - "MAZDA CX-5 2022": MAZDA.CX5_2022, - "NISSAN X-TRAIL 2017": NISSAN.XTRAIL, - "NISSAN LEAF 2018": NISSAN.LEAF, - "NISSAN ROGUE 2019": NISSAN.ROGUE, - "NISSAN ALTIMA 2020": NISSAN.ALTIMA, - "SUBARU ASCENT LIMITED 2019": SUBARU.ASCENT, - "SUBARU OUTBACK 6TH GEN": SUBARU.OUTBACK, - "SUBARU LEGACY 7TH GEN": SUBARU.LEGACY, - "SUBARU IMPREZA LIMITED 2019": SUBARU.IMPREZA, - "SUBARU IMPREZA SPORT 2020": SUBARU.IMPREZA_2020, - "SUBARU CROSSTREK HYBRID 2020": SUBARU.CROSSTREK_HYBRID, - "SUBARU FORESTER 2019": SUBARU.FORESTER, - "SUBARU FORESTER HYBRID 2020": SUBARU.FORESTER_HYBRID, - "SUBARU FORESTER 2017 - 2018": SUBARU.FORESTER_PREGLOBAL, - "SUBARU LEGACY 2015 - 2018": SUBARU.LEGACY_PREGLOBAL, - "SUBARU OUTBACK 2015 - 2017": SUBARU.OUTBACK_PREGLOBAL, - "SUBARU OUTBACK 2018 - 2019": SUBARU.OUTBACK_PREGLOBAL_2018, - "SUBARU FORESTER 2022": SUBARU.FORESTER_2022, - "SUBARU OUTBACK 7TH GEN": SUBARU.OUTBACK_2023, - "SUBARU ASCENT 2023": SUBARU.ASCENT_2023, - 'TESLA AP1 MODEL S': TESLA.AP1_MODELS, - 'TESLA AP2 MODEL S': TESLA.AP2_MODELS, - 'TESLA MODEL S RAVEN': TESLA.MODELS_RAVEN, - "TOYOTA ALPHARD 2020": TOYOTA.ALPHARD_TSS2, - "TOYOTA AVALON 2016": TOYOTA.AVALON, - "TOYOTA AVALON 2019": TOYOTA.AVALON_2019, - "TOYOTA AVALON 2022": TOYOTA.AVALON_TSS2, - "TOYOTA CAMRY 2018": TOYOTA.CAMRY, - "TOYOTA CAMRY 2021": TOYOTA.CAMRY_TSS2, - "TOYOTA C-HR 2018": TOYOTA.CHR, - "TOYOTA C-HR 2021": TOYOTA.CHR_TSS2, - "TOYOTA COROLLA 2017": TOYOTA.COROLLA, - "TOYOTA COROLLA TSS2 2019": TOYOTA.COROLLA_TSS2, - "TOYOTA HIGHLANDER 2017": TOYOTA.HIGHLANDER, - "TOYOTA HIGHLANDER 2020": TOYOTA.HIGHLANDER_TSS2, - "TOYOTA PRIUS 2017": TOYOTA.PRIUS, - "TOYOTA PRIUS v 2017": TOYOTA.PRIUS_V, - "TOYOTA PRIUS TSS2 2021": TOYOTA.PRIUS_TSS2, - "TOYOTA RAV4 2017": TOYOTA.RAV4, - "TOYOTA RAV4 HYBRID 2017": TOYOTA.RAV4H, - "TOYOTA RAV4 2019": TOYOTA.RAV4_TSS2, - "TOYOTA RAV4 2022": TOYOTA.RAV4_TSS2_2022, - "TOYOTA RAV4 2023": TOYOTA.RAV4_TSS2_2023, - "TOYOTA MIRAI 2021": TOYOTA.MIRAI, - "TOYOTA SIENNA 2018": TOYOTA.SIENNA, + "MAZDA CX-5": MAZDA.MAZDA_CX5, + "MAZDA CX-9": MAZDA.MAZDA_CX9, + "MAZDA 3": MAZDA.MAZDA_3, + "MAZDA 6": MAZDA.MAZDA_6, + "MAZDA CX-9 2021": MAZDA.MAZDA_CX9_2021, + "MAZDA CX-5 2022": MAZDA.MAZDA_CX5_2022, + "NISSAN X-TRAIL 2017": NISSAN.NISSAN_XTRAIL, + "NISSAN LEAF 2018": NISSAN.NISSAN_LEAF, + "NISSAN ROGUE 2019": NISSAN.NISSAN_ROGUE, + "NISSAN ALTIMA 2020": NISSAN.NISSAN_ALTIMA, + "SUBARU ASCENT LIMITED 2019": SUBARU.SUBARU_ASCENT, + "SUBARU OUTBACK 6TH GEN": SUBARU.SUBARU_OUTBACK, + "SUBARU LEGACY 7TH GEN": SUBARU.SUBARU_LEGACY, + "SUBARU IMPREZA LIMITED 2019": SUBARU.SUBARU_IMPREZA, + "SUBARU IMPREZA SPORT 2020": SUBARU.SUBARU_IMPREZA_2020, + "SUBARU CROSSTREK HYBRID 2020": SUBARU.SUBARU_CROSSTREK_HYBRID, + "SUBARU FORESTER 2019": SUBARU.SUBARU_FORESTER, + "SUBARU FORESTER HYBRID 2020": SUBARU.SUBARU_FORESTER_HYBRID, + "SUBARU FORESTER 2017 - 2018": SUBARU.SUBARU_FORESTER_PREGLOBAL, + "SUBARU LEGACY 2015 - 2018": SUBARU.SUBARU_LEGACY_PREGLOBAL, + "SUBARU OUTBACK 2015 - 2017": SUBARU.SUBARU_OUTBACK_PREGLOBAL, + "SUBARU OUTBACK 2018 - 2019": SUBARU.SUBARU_OUTBACK_PREGLOBAL_2018, + "SUBARU FORESTER 2022": SUBARU.SUBARU_FORESTER_2022, + "SUBARU OUTBACK 7TH GEN": SUBARU.SUBARU_OUTBACK_2023, + "SUBARU ASCENT 2023": SUBARU.SUBARU_ASCENT_2023, + 'TESLA AP1 MODEL S': TESLA.TESLA_AP1_MODELS, + 'TESLA AP2 MODEL S': TESLA.TESLA_AP2_MODELS, + 'TESLA MODEL S RAVEN': TESLA.TESLA_MODELS_RAVEN, + "TOYOTA ALPHARD 2020": TOYOTA.TOYOTA_ALPHARD_TSS2, + "TOYOTA AVALON 2016": TOYOTA.TOYOTA_AVALON, + "TOYOTA AVALON 2019": TOYOTA.TOYOTA_AVALON_2019, + "TOYOTA AVALON 2022": TOYOTA.TOYOTA_AVALON_TSS2, + "TOYOTA CAMRY 2018": TOYOTA.TOYOTA_CAMRY, + "TOYOTA CAMRY 2021": TOYOTA.TOYOTA_CAMRY_TSS2, + "TOYOTA C-HR 2018": TOYOTA.TOYOTA_CHR, + "TOYOTA C-HR 2021": TOYOTA.TOYOTA_CHR_TSS2, + "TOYOTA COROLLA 2017": TOYOTA.TOYOTA_COROLLA, + "TOYOTA COROLLA TSS2 2019": TOYOTA.TOYOTA_COROLLA_TSS2, + "TOYOTA HIGHLANDER 2017": TOYOTA.TOYOTA_HIGHLANDER, + "TOYOTA HIGHLANDER 2020": TOYOTA.TOYOTA_HIGHLANDER_TSS2, + "TOYOTA PRIUS 2017": TOYOTA.TOYOTA_PRIUS, + "TOYOTA PRIUS v 2017": TOYOTA.TOYOTA_PRIUS_V, + "TOYOTA PRIUS TSS2 2021": TOYOTA.TOYOTA_PRIUS_TSS2, + "TOYOTA RAV4 2017": TOYOTA.TOYOTA_RAV4, + "TOYOTA RAV4 HYBRID 2017": TOYOTA.TOYOTA_RAV4H, + "TOYOTA RAV4 2019": TOYOTA.TOYOTA_RAV4_TSS2, + "TOYOTA RAV4 2022": TOYOTA.TOYOTA_RAV4_TSS2_2022, + "TOYOTA RAV4 2023": TOYOTA.TOYOTA_RAV4_TSS2_2023, + "TOYOTA MIRAI 2021": TOYOTA.TOYOTA_MIRAI, + "TOYOTA SIENNA 2018": TOYOTA.TOYOTA_SIENNA, "LEXUS CT HYBRID 2018": TOYOTA.LEXUS_CTH, "LEXUS ES 2018": TOYOTA.LEXUS_ES, "LEXUS ES 2019": TOYOTA.LEXUS_ES_TSS2, @@ -307,22 +307,22 @@ MIGRATION = { "LEXUS RX 2016": TOYOTA.LEXUS_RX, "LEXUS RX 2020": TOYOTA.LEXUS_RX_TSS2, "LEXUS GS F 2016": TOYOTA.LEXUS_GS_F, - "VOLKSWAGEN ARTEON 1ST GEN": VW.ARTEON_MK1, - "VOLKSWAGEN ATLAS 1ST GEN": VW.ATLAS_MK1, - "VOLKSWAGEN CADDY 3RD GEN": VW.CADDY_MK3, - "VOLKSWAGEN CRAFTER 2ND GEN": VW.CRAFTER_MK2, - "VOLKSWAGEN GOLF 7TH GEN": VW.GOLF_MK7, - "VOLKSWAGEN JETTA 7TH GEN": VW.JETTA_MK7, - "VOLKSWAGEN PASSAT 8TH GEN": VW.PASSAT_MK8, - "VOLKSWAGEN PASSAT NMS": VW.PASSAT_NMS, - "VOLKSWAGEN POLO 6TH GEN": VW.POLO_MK6, - "VOLKSWAGEN SHARAN 2ND GEN": VW.SHARAN_MK2, - "VOLKSWAGEN TAOS 1ST GEN": VW.TAOS_MK1, - "VOLKSWAGEN T-CROSS 1ST GEN": VW.TCROSS_MK1, - "VOLKSWAGEN TIGUAN 2ND GEN": VW.TIGUAN_MK2, - "VOLKSWAGEN TOURAN 2ND GEN": VW.TOURAN_MK2, - "VOLKSWAGEN TRANSPORTER T6.1": VW.TRANSPORTER_T61, - "VOLKSWAGEN T-ROC 1ST GEN": VW.TROC_MK1, + "VOLKSWAGEN ARTEON 1ST GEN": VW.VOLKSWAGEN_ARTEON_MK1, + "VOLKSWAGEN ATLAS 1ST GEN": VW.VOLKSWAGEN_ATLAS_MK1, + "VOLKSWAGEN CADDY 3RD GEN": VW.VOLKSWAGEN_CADDY_MK3, + "VOLKSWAGEN CRAFTER 2ND GEN": VW.VOLKSWAGEN_CRAFTER_MK2, + "VOLKSWAGEN GOLF 7TH GEN": VW.VOLKSWAGEN_GOLF_MK7, + "VOLKSWAGEN JETTA 7TH GEN": VW.VOLKSWAGEN_JETTA_MK7, + "VOLKSWAGEN PASSAT 8TH GEN": VW.VOLKSWAGEN_PASSAT_MK8, + "VOLKSWAGEN PASSAT NMS": VW.VOLKSWAGEN_PASSAT_NMS, + "VOLKSWAGEN POLO 6TH GEN": VW.VOLKSWAGEN_POLO_MK6, + "VOLKSWAGEN SHARAN 2ND GEN": VW.VOLKSWAGEN_SHARAN_MK2, + "VOLKSWAGEN TAOS 1ST GEN": VW.VOLKSWAGEN_TAOS_MK1, + "VOLKSWAGEN T-CROSS 1ST GEN": VW.VOLKSWAGEN_TCROSS_MK1, + "VOLKSWAGEN TIGUAN 2ND GEN": VW.VOLKSWAGEN_TIGUAN_MK2, + "VOLKSWAGEN TOURAN 2ND GEN": VW.VOLKSWAGEN_TOURAN_MK2, + "VOLKSWAGEN TRANSPORTER T6.1": VW.VOLKSWAGEN_TRANSPORTER_T61, + "VOLKSWAGEN T-ROC 1ST GEN": VW.VOLKSWAGEN_TROC_MK1, "AUDI A3 3RD GEN": VW.AUDI_A3_MK3, "AUDI Q2 1ST GEN": VW.AUDI_Q2_MK1, "AUDI Q3 2ND GEN": VW.AUDI_Q3_MK2, diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index fae529aa00..32d331b2db 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car.ford.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.BRONCO_SPORT_MK1: { + CAR.FORD_BRONCO_SPORT_MK1: { (Ecu.eps, 0x730, None): [ b'LX6C-14D003-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LX6C-14D003-AK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -23,7 +23,7 @@ FW_VERSIONS = { b'M1PT-14F397-AD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.ESCAPE_MK4: { + CAR.FORD_ESCAPE_MK4: { (Ecu.eps, 0x730, None): [ b'LX6C-14D003-AF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LX6C-14D003-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -46,7 +46,7 @@ FW_VERSIONS = { b'LV4T-14F397-GG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.EXPLORER_MK6: { + CAR.FORD_EXPLORER_MK6: { (Ecu.eps, 0x730, None): [ b'L1MC-14D003-AJ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'L1MC-14D003-AK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -74,7 +74,7 @@ FW_VERSIONS = { b'LC5T-14F397-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.F_150_MK14: { + CAR.FORD_F_150_MK14: { (Ecu.eps, 0x730, None): [ b'ML3V-14D003-BC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -89,7 +89,7 @@ FW_VERSIONS = { b'PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.F_150_LIGHTNING_MK1: { + CAR.FORD_F_150_LIGHTNING_MK1: { (Ecu.abs, 0x760, None): [ b'PL38-2D053-AA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -100,7 +100,7 @@ FW_VERSIONS = { b'ML3T-14D049-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.MUSTANG_MACH_E_MK1: { + CAR.FORD_MUSTANG_MACH_E_MK1: { (Ecu.eps, 0x730, None): [ b'LJ9C-14D003-AM\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LJ9C-14D003-CC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -115,7 +115,7 @@ FW_VERSIONS = { b'ML3T-14H102-ABS\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.FOCUS_MK4: { + CAR.FORD_FOCUS_MK4: { (Ecu.eps, 0x730, None): [ b'JX6C-14D003-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -129,7 +129,7 @@ FW_VERSIONS = { b'JX7T-14F397-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.MAVERICK_MK1: { + CAR.FORD_MAVERICK_MK1: { (Ecu.eps, 0x730, None): [ b'NZ6C-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index c8b0da3fd3..d1e6686ea0 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -66,7 +66,7 @@ class FordCarDocs(CarDocs): def init_make(self, CP: car.CarParams): harness = CarHarness.ford_q4 if CP.flags & FordFlags.CANFD else CarHarness.ford_q3 - if CP.carFingerprint in (CAR.BRONCO_SPORT_MK1, CAR.MAVERICK_MK1, CAR.F_150_MK14, CAR.F_150_LIGHTNING_MK1): + if CP.carFingerprint in (CAR.FORD_BRONCO_SPORT_MK1, CAR.FORD_MAVERICK_MK1, CAR.FORD_F_150_MK14, CAR.FORD_F_150_LIGHTNING_MK1): self.car_parts = CarParts([Device.threex_angled_mount, harness]) else: self.car_parts = CarParts([Device.threex, harness]) @@ -96,44 +96,44 @@ class FordCANFDPlatformConfig(FordPlatformConfig): class CAR(Platforms): - BRONCO_SPORT_MK1 = FordPlatformConfig( + FORD_BRONCO_SPORT_MK1 = FordPlatformConfig( [FordCarDocs("Ford Bronco Sport 2021-23")], CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), ) - ESCAPE_MK4 = FordPlatformConfig( + FORD_ESCAPE_MK4 = FordPlatformConfig( [ FordCarDocs("Ford Escape 2020-22", hybrid=True, plug_in_hybrid=True), FordCarDocs("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering", hybrid=True, plug_in_hybrid=True), ], CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), ) - EXPLORER_MK6 = FordPlatformConfig( + FORD_EXPLORER_MK6 = FordPlatformConfig( [ FordCarDocs("Ford Explorer 2020-23", hybrid=True), # Hybrid: Limited and Platinum only FordCarDocs("Lincoln Aviator 2020-23", "Co-Pilot360 Plus", plug_in_hybrid=True), # Hybrid: Grand Touring only ], CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), ) - F_150_MK14 = FordCANFDPlatformConfig( + FORD_F_150_MK14 = FordCANFDPlatformConfig( [FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0", hybrid=True)], CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), ) - F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( + FORD_F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( [FordCarDocs("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), ) - FOCUS_MK4 = FordPlatformConfig( + FORD_FOCUS_MK4 = FordPlatformConfig( [FordCarDocs("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS], hybrid=True)], # mHEV only CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), ) - MAVERICK_MK1 = FordPlatformConfig( + FORD_MAVERICK_MK1 = FordPlatformConfig( [ FordCarDocs("Ford Maverick 2022", "LARIAT Luxury", hybrid=True), FordCarDocs("Ford Maverick 2023-24", "Co-Pilot360 Assist", hybrid=True), ], CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) - MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( + FORD_MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( [FordCarDocs("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) diff --git a/selfdrive/car/gm/fingerprints.py b/selfdrive/car/gm/fingerprints.py index 73a205a250..3752fbb8d3 100644 --- a/selfdrive/car/gm/fingerprints.py +++ b/selfdrive/car/gm/fingerprints.py @@ -9,7 +9,7 @@ FINGERPRINTS = { CAR.HOLDEN_ASTRA: [{ 190: 8, 193: 8, 197: 8, 199: 4, 201: 8, 209: 7, 211: 8, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 6, 384: 4, 386: 8, 388: 8, 393: 8, 398: 8, 401: 8, 413: 8, 417: 8, 419: 8, 422: 1, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 8, 455: 7, 456: 8, 458: 5, 479: 8, 481: 7, 485: 8, 489: 8, 497: 8, 499: 3, 500: 8, 501: 8, 508: 8, 528: 5, 532: 6, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 567: 5, 647: 5, 707: 8, 715: 8, 723: 8, 753: 5, 761: 7, 806: 1, 810: 8, 840: 5, 842: 5, 844: 8, 866: 4, 961: 8, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1009: 8, 1011: 6, 1017: 8, 1019: 3, 1020: 8, 1105: 6, 1217: 8, 1221: 5, 1225: 8, 1233: 8, 1249: 8, 1257: 6, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 8, 1280: 4, 1300: 8, 1328: 4, 1417: 8, 1906: 7, 1907: 7, 1908: 7, 1912: 7, 1919: 7 }], - CAR.VOLT: [{ + CAR.CHEVROLET_VOLT: [{ 170: 8, 171: 8, 189: 7, 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 209: 7, 211: 2, 241: 6, 288: 5, 289: 8, 298: 8, 304: 1, 308: 4, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 6, 384: 4, 386: 8, 388: 8, 389: 2, 390: 7, 417: 7, 419: 1, 426: 7, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 528: 4, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 5, 567: 3, 568: 1, 573: 1, 577: 8, 647: 3, 707: 8, 711: 6, 715: 8, 761: 7, 810: 8, 840: 5, 842: 5, 844: 8, 866: 4, 961: 8, 969: 8, 977: 8, 979: 7, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1017: 8, 1019: 2, 1020: 8, 1105: 6, 1187: 4, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1249: 8, 1257: 6, 1265: 8, 1267: 1, 1273: 3, 1275: 3, 1280: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1417: 8, 1601: 8, 1905: 7, 1906: 7, 1907: 7, 1910: 7, 1912: 7, 1922: 7, 1927: 7, 1928: 7, 2016: 8, 2020: 8, 2024: 8, 2028: 8 }, { @@ -27,31 +27,31 @@ FINGERPRINTS = { CAR.CADILLAC_ATS: [{ 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 368: 3, 381: 6, 384: 4, 386: 8, 388: 8, 393: 7, 398: 8, 401: 8, 407: 7, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 455: 7, 456: 8, 462: 4, 479: 3, 481: 7, 485: 8, 487: 8, 489: 8, 491: 2, 493: 8, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 528: 5, 532: 6, 534: 2, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 565: 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, 719: 5, 723: 2, 753: 5, 761: 7, 801: 8, 804: 3, 810: 8, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 882: 8, 890: 1, 892: 2, 893: 2, 894: 1, 961: 8, 967: 4, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1005: 6, 1009: 8, 1011: 6, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1033: 7, 1034: 7, 1105: 6, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1233: 8, 1241: 3, 1249: 8, 1257: 6, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 1, 1271: 8, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1417: 8, 1601: 8, 1904: 7, 1906: 7, 1907: 7, 1912: 7, 1916: 7, 1917: 7, 1918: 7, 1919: 7, 1920: 7, 1930: 7, 2016: 8, 2024: 8 }], - CAR.MALIBU: [{ + CAR.CHEVROLET_MALIBU: [{ 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 6, 384: 4, 386: 8, 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, 455: 7, 456: 8, 479: 3, 481: 7, 485: 8, 487: 8, 489: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 528: 5, 532: 6, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 565: 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, 810: 8, 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, 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, 1906: 7, 1907: 7, 1912: 7, 1919: 7, 1930: 7, 2016: 8, 2024: 8 }], - CAR.ACADIA: [{ + CAR.GMC_ACADIA: [{ 190: 6, 192: 5, 193: 8, 197: 8, 199: 4, 201: 6, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 289: 1, 290: 1, 298: 8, 304: 8, 309: 8, 313: 8, 320: 8, 322: 7, 328: 1, 352: 7, 368: 8, 381: 8, 384: 8, 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, 458: 8, 460: 4, 462: 4, 463: 3, 479: 3, 481: 7, 485: 8, 489: 5, 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, 567: 5, 568: 2, 573: 1, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 789: 5, 800: 6, 801: 8, 803: 8, 804: 3, 805: 8, 832: 8, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 961: 8, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1003: 5, 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, 1906: 7, 1907: 7, 1912: 7, 1914: 7, 1918: 7, 1919: 7, 1920: 7, 1930: 7 }, { 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: [{ + CAR.CADILLAC_ESCALADE: [{ 170: 8, 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 381: 6, 384: 4, 386: 8, 388: 8, 393: 7, 398: 8, 407: 4, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 454: 8, 455: 7, 460: 5, 462: 4, 463: 3, 479: 3, 481: 7, 485: 8, 487: 8, 489: 8, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 532: 6, 534: 2, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 573: 1, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 719: 5, 761: 7, 801: 8, 804: 3, 810: 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, 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, 1609: 8, 1613: 8, 1649: 8, 1792: 8, 1798: 8, 1824: 8, 1825: 8, 1840: 8, 1842: 8, 1858: 8, 1860: 8, 1863: 8, 1872: 8, 1875: 8, 1882: 8, 1888: 8, 1889: 8, 1892: 8, 1906: 7, 1907: 7, 1912: 7, 1914: 7, 1917: 7, 1918: 7, 1919: 7, 1920: 7, 1930: 7, 1937: 8, 1953: 8, 1968: 8, 2001: 8, 2017: 8, 2018: 8, 2020: 8, 2026: 8 }], - CAR.ESCALADE_ESV: [{ + CAR.CADILLAC_ESCALADE_ESV: [{ 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 }], - CAR.ESCALADE_ESV_2019: [{ + CAR.CADILLAC_ESCALADE_ESV_2019: [{ 715: 8, 840: 5, 717: 5, 869: 4, 880: 6, 289: 8, 454: 8, 842: 5, 460: 5, 463: 3, 801: 8, 170: 8, 190: 6, 241: 6, 201: 8, 417: 7, 211: 2, 419: 1, 398: 8, 426: 7, 487: 8, 442: 8, 451: 8, 452: 8, 453: 6, 479: 3, 311: 8, 500: 6, 647: 6, 193: 8, 707: 8, 197: 8, 209: 7, 199: 4, 455: 7, 313: 8, 481: 7, 485: 8, 489: 8, 249: 8, 393: 7, 407: 7, 413: 8, 422: 4, 431: 8, 501: 8, 499: 3, 810: 8, 508: 8, 381: 8, 462: 4, 532: 6, 562: 8, 386: 8, 761: 7, 573: 1, 554: 3, 719: 5, 560: 8, 1279: 4, 388: 8, 288: 5, 1005: 6, 497: 8, 844: 8, 961: 8, 967: 4, 977: 8, 979: 8, 985: 5, 1001: 8, 1017: 8, 1019: 2, 1020: 8, 1217: 8, 510: 8, 866: 4, 304: 1, 969: 8, 384: 4, 1033: 7, 1009: 8, 1034: 7, 1296: 4, 1930: 7, 1105: 5, 1013: 5, 1225: 7, 1919: 7, 320: 3, 534: 2, 352: 5, 298: 8, 1223: 2, 1233: 8, 608: 8, 1265: 8, 609: 6, 1267: 1, 1417: 8, 610: 6, 1906: 7, 611: 6, 612: 8, 613: 8, 208: 8, 564: 5, 309: 8, 1221: 5, 1280: 4, 1249: 8, 1907: 7, 1257: 6, 1300: 8, 1920: 7, 563: 5, 1322: 6, 1323: 4, 1328: 4, 1917: 7, 328: 1, 1912: 7, 1914: 7, 804: 3, 1918: 7 }], - CAR.BOLT_EUV: [{ + CAR.CHEVROLET_BOLT_EUV: [{ 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, 587: 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, 1611: 8, 1930: 7 }], - CAR.SILVERADO: [{ + CAR.CHEVROLET_SILVERADO: [{ 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, 534: 2, 560: 8, 562: 8, 563: 5, 565: 5, 587: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 707: 8, 715: 8, 717: 5, 761: 7, 789: 5, 800: 6, 801: 8, 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, 1611: 8, 1930: 7 }], - CAR.EQUINOX: [{ + CAR.CHEVROLET_EQUINOX: [{ 190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 249: 8, 257: 8, 288: 5, 289: 8, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 413: 8, 451: 8, 452: 8, 453: 6, 455: 7, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 500: 6, 501: 8, 510: 8, 528: 5, 532: 6, 560: 8, 562: 8, 563: 5, 565: 5, 587: 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, 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, 1611: 8, 1930: 7 }, { diff --git a/selfdrive/car/gm/gmcan.py b/selfdrive/car/gm/gmcan.py index cea77985fb..e833e77636 100644 --- a/selfdrive/car/gm/gmcan.py +++ b/selfdrive/car/gm/gmcan.py @@ -76,7 +76,7 @@ def create_friction_brake_command(packer, bus, apply_brake, idx, enabled, near_s mode = 0x1 # TODO: Understand this better. Volts and ICE Camera ACC cars are 0x1 when enabled with no brake - if enabled and CP.carFingerprint in (CAR.BOLT_EUV,): + if enabled and CP.carFingerprint in (CAR.CHEVROLET_BOLT_EUV,): mode = 0x9 if apply_brake > 0: diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index f470d6f468..358bc9e5ba 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -22,9 +22,9 @@ BUTTONS_DICT = {CruiseButtons.RES_ACCEL: ButtonType.accelCruise, CruiseButtons.D NON_LINEAR_TORQUE_PARAMS = { - CAR.BOLT_EUV: [2.6531724862969748, 1.0, 0.1919764879840985, 0.009054123646805178], - CAR.ACADIA: [4.78003305, 1.0, 0.3122, 0.05591772], - CAR.SILVERADO: [3.29974374, 1.0, 0.25571356, 0.0465122] + CAR.CHEVROLET_BOLT_EUV: [2.6531724862969748, 1.0, 0.1919764879840985, 0.009054123646805178], + CAR.GMC_ACADIA: [4.78003305, 1.0, 0.3122, 0.05591772], + CAR.CHEVROLET_SILVERADO: [3.29974374, 1.0, 0.25571356, 0.0465122] } NEURAL_PARAMS_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/neural_ff_weights.json') @@ -43,7 +43,7 @@ class CarInterface(CarInterfaceBase): return 0.10006696 * sigmoid * (v_ego + 3.12485927) def get_steer_feedforward_function(self): - if self.CP.carFingerprint == CAR.VOLT: + if self.CP.carFingerprint == CAR.CHEVROLET_VOLT: return self.get_steer_feedforward_volt else: return CarInterfaceBase.get_steer_feedforward_default @@ -74,7 +74,7 @@ class CarInterface(CarInterfaceBase): return float(self.neural_ff_model.predict(inputs)) + friction def torque_from_lateral_accel(self) -> TorqueFromLateralAccelCallbackType: - if self.CP.carFingerprint == CAR.BOLT_EUV: + if self.CP.carFingerprint == CAR.CHEVROLET_BOLT_EUV: 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: @@ -137,7 +137,7 @@ class CarInterface(CarInterfaceBase): # 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 # added to selfdrive/car/tests/routes.py, we can remove it from this list. - ret.dashcamOnly = candidate in {CAR.CADILLAC_ATS, CAR.HOLDEN_ASTRA, CAR.MALIBU, CAR.BUICK_REGAL} or \ + ret.dashcamOnly = candidate in {CAR.CADILLAC_ATS, CAR.HOLDEN_ASTRA, CAR.CHEVROLET_MALIBU, CAR.BUICK_REGAL} or \ (ret.networkLocation == NetworkLocation.gateway and ret.radarUnavailable) # Start with a baseline tuning for all GM vehicles. Override tuning as needed in each model section below. @@ -150,7 +150,7 @@ class CarInterface(CarInterfaceBase): ret.radarTimeStep = 0.0667 # GM radar runs at 15Hz instead of standard 20Hz ret.longitudinalActuatorDelayUpperBound = 0.5 # large delay to initially start braking - if candidate == CAR.VOLT: + if candidate == CAR.CHEVROLET_VOLT: ret.lateralTuning.pid.kpBP = [0., 40.] ret.lateralTuning.pid.kpV = [0., 0.17] ret.lateralTuning.pid.kiBP = [0.] @@ -158,7 +158,7 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 1. # get_steer_feedforward_volt() ret.steerActuatorDelay = 0.2 - elif candidate == CAR.ACADIA: + elif candidate == CAR.GMC_ACADIA: ret.minEnableSpeed = -1. # engage speed is decided by pcm ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) @@ -166,14 +166,14 @@ class CarInterface(CarInterfaceBase): elif candidate == CAR.BUICK_LACROSSE: CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.ESCALADE: + elif candidate == CAR.CADILLAC_ESCALADE: ret.minEnableSpeed = -1. # engage speed is decided by pcm CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate in (CAR.ESCALADE_ESV, CAR.ESCALADE_ESV_2019): + elif candidate in (CAR.CADILLAC_ESCALADE_ESV, CAR.CADILLAC_ESCALADE_ESV_2019): ret.minEnableSpeed = -1. # engage speed is decided by pcm - if candidate == CAR.ESCALADE_ESV: + if candidate == CAR.CADILLAC_ESCALADE_ESV: ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[10., 41.0], [10., 41.0]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.13, 0.24], [0.01, 0.02]] ret.lateralTuning.pid.kf = 0.000045 @@ -181,11 +181,11 @@ class CarInterface(CarInterfaceBase): ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.BOLT_EUV: + elif candidate == CAR.CHEVROLET_BOLT_EUV: ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.SILVERADO: + elif candidate == CAR.CHEVROLET_SILVERADO: # On the Bolt, the ECM and camera independently check that you are either above 5 kph or at a stop # with foot on brake to allow engagement, but this platform only has that check in the camera. # TODO: check if this is split by EV/ICE with more platforms in the future @@ -193,10 +193,10 @@ class CarInterface(CarInterfaceBase): ret.minEnableSpeed = -1. CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.EQUINOX: + elif candidate == CAR.CHEVROLET_EQUINOX: CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.TRAILBLAZER: + elif candidate == CAR.CHEVROLET_TRAILBLAZER: ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) diff --git a/selfdrive/car/gm/tests/test_gm.py b/selfdrive/car/gm/tests/test_gm.py index 2aea5b231b..9b56cfdf08 100755 --- a/selfdrive/car/gm/tests/test_gm.py +++ b/selfdrive/car/gm/tests/test_gm.py @@ -14,11 +14,11 @@ class TestGMFingerprint(unittest.TestCase): self.assertGreater(len(fingerprints), 0) # Trailblazer is in dashcam - if car_model != CAR.TRAILBLAZER: + if car_model != CAR.CHEVROLET_TRAILBLAZER: self.assertTrue(all(len(finger) for finger in fingerprints)) # The camera can sometimes be communicating on startup - if car_model in CAMERA_ACC_CAR - {CAR.TRAILBLAZER}: + if car_model in CAMERA_ACC_CAR - {CAR.CHEVROLET_TRAILBLAZER}: for finger in fingerprints: for required_addr in (CAMERA_DIAGNOSTIC_ADDRESS, CAMERA_DIAGNOSTIC_ADDRESS + GM_RX_OFFSET): self.assertEqual(finger.get(required_addr), 8, required_addr) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 24ec9dfb66..46d15431ca 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -94,7 +94,7 @@ class CAR(Platforms): [GMCarDocs("Holden Astra 2017")], GMCarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), ) - VOLT = GMPlatformConfig( + CHEVROLET_VOLT = GMPlatformConfig( [GMCarDocs("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ")], GMCarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45, tireStiffnessFactor=0.469), ) @@ -102,11 +102,11 @@ class CAR(Platforms): [GMCarDocs("Cadillac ATS Premium Performance 2018")], GMCarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), ) - MALIBU = GMPlatformConfig( + CHEVROLET_MALIBU = GMPlatformConfig( [GMCarDocs("Chevrolet Malibu Premier 2017")], GMCarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), ) - ACADIA = GMPlatformConfig( + GMC_ACADIA = GMPlatformConfig( [GMCarDocs("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo")], GMCarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), ) @@ -118,37 +118,37 @@ class CAR(Platforms): [GMCarDocs("Buick Regal Essence 2018")], GMCarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), ) - ESCALADE = GMPlatformConfig( + CADILLAC_ESCALADE = GMPlatformConfig( [GMCarDocs("Cadillac Escalade 2017", "Driver Assist Package")], GMCarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), ) - ESCALADE_ESV = GMPlatformConfig( + CADILLAC_ESCALADE_ESV = GMPlatformConfig( [GMCarDocs("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS")], GMCarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3, tireStiffnessFactor=1.0), ) - ESCALADE_ESV_2019 = GMPlatformConfig( + CADILLAC_ESCALADE_ESV_2019 = GMPlatformConfig( [GMCarDocs("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS")], - ESCALADE_ESV.specs, + CADILLAC_ESCALADE_ESV.specs, ) - BOLT_EUV = GMPlatformConfig( + CHEVROLET_BOLT_EUV = GMPlatformConfig( [ GMCarDocs("Chevrolet Bolt EUV 2022-23", "Premier or Premier Redline Trim without Super Cruise Package", video_link="https://youtu.be/xvwzGMUA210"), GMCarDocs("Chevrolet Bolt EV 2022-23", "2LT Trim with Adaptive Cruise Control Package"), ], GMCarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) - SILVERADO = GMPlatformConfig( + CHEVROLET_SILVERADO = GMPlatformConfig( [ GMCarDocs("Chevrolet Silverado 1500 2020-21", "Safety Package II"), GMCarDocs("GMC Sierra 1500 2020-21", "Driver Alert Package II", video_link="https://youtu.be/5HbNoBLzRwE"), ], GMCarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3, tireStiffnessFactor=1.0), ) - EQUINOX = GMPlatformConfig( + CHEVROLET_EQUINOX = GMPlatformConfig( [GMCarDocs("Chevrolet Equinox 2019-22")], GMCarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), ) - TRAILBLAZER = GMPlatformConfig( + CHEVROLET_TRAILBLAZER = GMPlatformConfig( [GMCarDocs("Chevrolet Trailblazer 2021-22")], GMCarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) @@ -226,10 +226,10 @@ FW_QUERY_CONFIG = FwQueryConfig( extra_ecus=[(Ecu.fwdCamera, 0x24b, None)], ) -EV_CAR = {CAR.VOLT, CAR.BOLT_EUV} +EV_CAR = {CAR.CHEVROLET_VOLT, CAR.CHEVROLET_BOLT_EUV} # We're integrated at the camera with VOACC on these cars (instead of ASCM w/ OBD-II harness) -CAMERA_ACC_CAR = {CAR.BOLT_EUV, CAR.SILVERADO, CAR.EQUINOX, CAR.TRAILBLAZER} +CAMERA_ACC_CAR = {CAR.CHEVROLET_BOLT_EUV, CAR.CHEVROLET_SILVERADO, CAR.CHEVROLET_EQUINOX, CAR.CHEVROLET_TRAILBLAZER} STEER_THRESHOLD = 1.0 diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index 976511f113..c98d1a72d3 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -28,7 +28,7 @@ def get_can_messages(CP, gearbox_msg): ("STEER_MOTOR_TORQUE", 0), # TODO: not on every car ] - if CP.carFingerprint == CAR.ODYSSEY_CHN: + if CP.carFingerprint == CAR.HONDA_ODYSSEY_CHN: messages += [ ("SCM_FEEDBACK", 25), ("SCM_BUTTONS", 50), @@ -39,7 +39,7 @@ def get_can_messages(CP, gearbox_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.HONDA_CRV_HYBRID, CAR.HONDA_CIVIC_BOSCH_DIESEL, CAR.ACURA_RDX_3G, CAR.HONDA_E): messages.append((gearbox_msg, 50)) else: messages.append((gearbox_msg, 100)) @@ -47,7 +47,7 @@ def get_can_messages(CP, gearbox_msg): if CP.flags & HondaFlags.BOSCH_ALT_BRAKE: messages.append(("BRAKE_MODULE", 50)) - if CP.carFingerprint in (HONDA_BOSCH | {CAR.CIVIC, CAR.ODYSSEY, CAR.ODYSSEY_CHN}): + if CP.carFingerprint in (HONDA_BOSCH | {CAR.HONDA_CIVIC, CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN}): messages.append(("EPB_STATUS", 50)) if CP.carFingerprint in HONDA_BOSCH: @@ -58,16 +58,16 @@ def get_can_messages(CP, gearbox_msg): ("ACC_CONTROL", 50), ] else: # Nidec signals - if CP.carFingerprint == CAR.ODYSSEY_CHN: + if CP.carFingerprint == CAR.HONDA_ODYSSEY_CHN: messages.append(("CRUISE_PARAMS", 10)) else: messages.append(("CRUISE_PARAMS", 50)) # TODO: clean this up - if CP.carFingerprint in (CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, - CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.HRV_3G): + if CP.carFingerprint in (CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_BOSCH_DIESEL, CAR.HONDA_CRV_HYBRID, CAR.HONDA_INSIGHT, + CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.HONDA_CIVIC_2022, CAR.HONDA_HRV_3G): pass - elif CP.carFingerprint in (CAR.ODYSSEY_CHN, CAR.FREED, CAR.HRV): + elif CP.carFingerprint in (CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_FREED, CAR.HONDA_HRV): pass else: messages.append(("DOORS_STATUS", 3)) @@ -85,7 +85,7 @@ class CarState(CarStateBase): super().__init__(CP) can_define = CANDefine(DBC[CP.carFingerprint]["pt"]) self.gearbox_msg = "GEARBOX" - if CP.carFingerprint == CAR.ACCORD and CP.transmissionType == TransmissionType.cvt: + if CP.carFingerprint == CAR.HONDA_ACCORD and CP.transmissionType == TransmissionType.cvt: self.gearbox_msg = "GEARBOX_15T" self.main_on_sig_msg = "SCM_FEEDBACK" @@ -125,10 +125,10 @@ class CarState(CarStateBase): # 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.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, - CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.HRV_3G): + if self.CP.carFingerprint in (CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_BOSCH_DIESEL, CAR.HONDA_CRV_HYBRID, CAR.HONDA_INSIGHT, + CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.HONDA_CIVIC_2022, CAR.HONDA_HRV_3G): ret.doorOpen = bool(cp.vl["SCM_FEEDBACK"]["DRIVERS_DOOR_OPEN"]) - elif self.CP.carFingerprint in (CAR.ODYSSEY_CHN, CAR.FREED, CAR.HRV): + elif self.CP.carFingerprint in (CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_FREED, CAR.HONDA_HRV): ret.doorOpen = bool(cp.vl["SCM_BUTTONS"]["DRIVERS_DOOR_OPEN"]) else: ret.doorOpen = any([cp.vl["DOORS_STATUS"]["DOOR_OPEN_FL"], cp.vl["DOORS_STATUS"]["DOOR_OPEN_FR"], @@ -181,7 +181,7 @@ class CarState(CarStateBase): ret.brakeHoldActive = cp.vl["VSA_STATUS"]["BRAKE_HOLD_ACTIVE"] == 1 # TODO: set for all cars - if self.CP.carFingerprint in (HONDA_BOSCH | {CAR.CIVIC, CAR.ODYSSEY, CAR.ODYSSEY_CHN}): + if self.CP.carFingerprint in (HONDA_BOSCH | {CAR.HONDA_CIVIC, CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN}): ret.parkingBrake = cp.vl["EPB_STATUS"]["EPB_STATE"] != 0 gear = int(cp.vl[self.gearbox_msg]["GEAR_SHIFTER"]) @@ -232,7 +232,7 @@ class CarState(CarStateBase): ret.cruiseState.available = bool(cp.vl[self.main_on_sig_msg]["MAIN_ON"]) # Gets rid of Pedal Grinding noise when brake is pressed at slow speeds for some models - if self.CP.carFingerprint in (CAR.PILOT, CAR.RIDGELINE): + if self.CP.carFingerprint in (CAR.HONDA_PILOT, CAR.HONDA_RIDGELINE): if ret.brake > 0.1: ret.brakePressed = True diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 5296a91e50..8068c63308 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -10,7 +10,7 @@ Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.ACCORD: { + CAR.HONDA_ACCORD: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-6A0-8720\x00\x00', b'37805-6A0-9520\x00\x00', @@ -205,7 +205,7 @@ FW_VERSIONS = { b'38897-TWD-J020\x00\x00', ], }, - CAR.CIVIC: { + CAR.HONDA_CIVIC: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-5AA-A640\x00\x00', b'37805-5AA-A650\x00\x00', @@ -305,7 +305,7 @@ FW_VERSIONS = { b'38897-TBA-A020\x00\x00', ], }, - CAR.CIVIC_BOSCH: { + CAR.HONDA_CIVIC_BOSCH: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-5AA-A940\x00\x00', b'37805-5AA-A950\x00\x00', @@ -490,7 +490,7 @@ FW_VERSIONS = { b'39494-TGL-G030\x00\x00', ], }, - CAR.CIVIC_BOSCH_DIESEL: { + CAR.HONDA_CIVIC_BOSCH_DIESEL: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-59N-G630\x00\x00', b'37805-59N-G830\x00\x00', @@ -528,7 +528,7 @@ FW_VERSIONS = { b'38897-TBA-A020\x00\x00', ], }, - CAR.CRV: { + CAR.HONDA_CRV: { (Ecu.vsa, 0x18da28f1, None): [ b'57114-T1W-A230\x00\x00', b'57114-T1W-A240\x00\x00', @@ -548,7 +548,7 @@ FW_VERSIONS = { b'36161-T1X-A830\x00\x00', ], }, - CAR.CRV_5G: { + CAR.HONDA_CRV_5G: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-5PA-3060\x00\x00', b'37805-5PA-3080\x00\x00', @@ -676,7 +676,7 @@ FW_VERSIONS = { b'77959-TMM-F040\x00\x00', ], }, - CAR.CRV_EU: { + CAR.HONDA_CRV_EU: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-R5Z-G740\x00\x00', b'37805-R5Z-G780\x00\x00', @@ -702,7 +702,7 @@ FW_VERSIONS = { b'77959-T1G-G940\x00\x00', ], }, - CAR.CRV_HYBRID: { + CAR.HONDA_CRV_HYBRID: { (Ecu.vsa, 0x18da28f1, None): [ b'57114-TMB-H030\x00\x00', b'57114-TPA-G020\x00\x00', @@ -747,7 +747,7 @@ FW_VERSIONS = { b'77959-TLA-H240\x00\x00', ], }, - CAR.FIT: { + CAR.HONDA_FIT: { (Ecu.vsa, 0x18da28f1, None): [ b'57114-T5R-L020\x00\x00', b'57114-T5R-L220\x00\x00', @@ -774,7 +774,7 @@ FW_VERSIONS = { b'77959-T5R-A230\x00\x00', ], }, - CAR.FREED: { + CAR.HONDA_FREED: { (Ecu.gateway, 0x18daeff1, None): [ b'38897-TDK-J010\x00\x00', ], @@ -796,7 +796,7 @@ FW_VERSIONS = { b'36161-TDK-J530\x00\x00', ], }, - CAR.ODYSSEY: { + CAR.HONDA_ODYSSEY: { (Ecu.gateway, 0x18daeff1, None): [ b'38897-THR-A010\x00\x00', b'38897-THR-A020\x00\x00', @@ -899,7 +899,7 @@ FW_VERSIONS = { b'54008-THR-A020\x00\x00', ], }, - CAR.ODYSSEY_CHN: { + CAR.HONDA_ODYSSEY_CHN: { (Ecu.eps, 0x18da30f1, None): [ b'39990-T6D-H220\x00\x00', ], @@ -916,7 +916,7 @@ FW_VERSIONS = { b'77959-T6A-P110\x00\x00', ], }, - CAR.PILOT: { + CAR.HONDA_PILOT: { (Ecu.shiftByWire, 0x18da0bf1, None): [ b'54008-TG7-A520\x00\x00', b'54008-TG7-A530\x00\x00', @@ -1178,7 +1178,7 @@ FW_VERSIONS = { b'39990-TJB-A130\x00\x00', ], }, - CAR.RIDGELINE: { + CAR.HONDA_RIDGELINE: { (Ecu.eps, 0x18da30f1, None): [ b'39990-T6Z-A020\x00\x00', b'39990-T6Z-A030\x00\x00', @@ -1221,7 +1221,7 @@ FW_VERSIONS = { b'57114-TJZ-A520\x00\x00', ], }, - CAR.INSIGHT: { + CAR.HONDA_INSIGHT: { (Ecu.eps, 0x18da30f1, None): [ b'39990-TXM-A040\x00\x00', ], @@ -1254,7 +1254,7 @@ FW_VERSIONS = { b'78109-TXM-C010\x00\x00', ], }, - CAR.HRV: { + CAR.HONDA_HRV: { (Ecu.gateway, 0x18daeff1, None): [ b'38897-T7A-A010\x00\x00', b'38897-T7A-A110\x00\x00', @@ -1280,7 +1280,7 @@ FW_VERSIONS = { b'78109-THX-C220\x00\x00', ], }, - CAR.HRV_3G: { + CAR.HONDA_HRV_3G: { (Ecu.eps, 0x18da30f1, None): [ b'39990-3W0-A030\x00\x00', ], @@ -1350,7 +1350,7 @@ FW_VERSIONS = { b'57114-TYF-E030\x00\x00', ], }, - CAR.CIVIC_2022: { + CAR.HONDA_CIVIC_2022: { (Ecu.eps, 0x18da30f1, None): [ b'39990-T24-T120\x00\x00', b'39990-T39-A130\x00\x00', diff --git a/selfdrive/car/honda/hondacan.py b/selfdrive/car/honda/hondacan.py index e8a0c1bad3..1be496d951 100644 --- a/selfdrive/car/honda/hondacan.py +++ b/selfdrive/car/honda/hondacan.py @@ -195,7 +195,7 @@ def create_ui_commands(packer, CAN, CP, enabled, pcm_speed, hud, is_metric, acc_ } commands.append(packer.make_can_msg('RADAR_HUD', CAN.pt, radar_hud_values)) - if CP.carFingerprint == CAR.CIVIC_BOSCH: + if CP.carFingerprint == CAR.HONDA_CIVIC_BOSCH: commands.append(packer.make_can_msg("LEGACY_BRAKE_COMMAND", CAN.pt, {})) return commands diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 9d76beb649..2a5a07093d 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -52,7 +52,7 @@ class CarInterface(CarInterfaceBase): ret.pcmCruise = True - if candidate == CAR.CRV_5G: + if candidate == CAR.HONDA_CRV_5G: ret.enableBsm = 0x12f8bfa7 in fingerprint[CAN.radar] # Detect Bosch cars with new HUD msgs @@ -60,7 +60,7 @@ class CarInterface(CarInterfaceBase): ret.flags |= HondaFlags.BOSCH_EXT_HUD.value # Accord ICE 1.5T CVT has different gearbox message - if candidate == CAR.ACCORD and 0x191 in fingerprint[CAN.pt]: + if candidate == CAR.HONDA_ACCORD and 0x191 in fingerprint[CAN.pt]: ret.transmissionType = TransmissionType.cvt # Certain Hondas have an extra steering sensor at the bottom of the steering rack, @@ -89,7 +89,7 @@ class CarInterface(CarInterfaceBase): if fw.ecu == "eps" and b"," in fw.fwVersion: eps_modified = True - if candidate == CAR.CIVIC: + if candidate == CAR.HONDA_CIVIC: if eps_modified: # stock request input values: 0x0000, 0x00DE, 0x014D, 0x01EF, 0x0290, 0x0377, 0x0454, 0x0610, 0x06EE # stock request output values: 0x0000, 0x0917, 0x0DC5, 0x1017, 0x119F, 0x140B, 0x1680, 0x1680, 0x1680 @@ -103,11 +103,11 @@ class CarInterface(CarInterfaceBase): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2560], [0, 2560]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[1.1], [0.33]] - elif candidate in (CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CIVIC_2022): + elif candidate in (CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_BOSCH_DIESEL, CAR.HONDA_CIVIC_2022): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # 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.ACCORD: + elif candidate == CAR.HONDA_ACCORD: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end if eps_modified: @@ -119,12 +119,12 @@ class CarInterface(CarInterfaceBase): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] # 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 in (CAR.CRV, CAR.CRV_EU): + elif candidate in (CAR.HONDA_CRV, CAR.HONDA_CRV_EU): 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]] ret.wheelSpeedFactor = 1.025 - elif candidate == CAR.CRV_5G: + elif candidate == CAR.HONDA_CRV_5G: if eps_modified: # stock request input values: 0x0000, 0x00DB, 0x01BB, 0x0296, 0x0377, 0x0454, 0x0532, 0x0610, 0x067F # stock request output values: 0x0000, 0x0500, 0x0A15, 0x0E6D, 0x1100, 0x1200, 0x129A, 0x134D, 0x1400 @@ -136,22 +136,22 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.64], [0.192]] ret.wheelSpeedFactor = 1.025 - elif candidate == CAR.CRV_HYBRID: + elif candidate == CAR.HONDA_CRV_HYBRID: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] ret.wheelSpeedFactor = 1.025 - elif candidate == CAR.FIT: + elif candidate == CAR.HONDA_FIT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]] - elif candidate == CAR.FREED: + elif candidate == CAR.HONDA_FREED: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]] - elif candidate in (CAR.HRV, CAR.HRV_3G): + elif candidate in (CAR.HONDA_HRV, CAR.HONDA_HRV_3G): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] - if candidate == CAR.HRV: + if candidate == CAR.HONDA_HRV: ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.16], [0.025]] ret.wheelSpeedFactor = 1.025 else: @@ -165,22 +165,22 @@ class CarInterface(CarInterfaceBase): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.06]] - elif candidate in (CAR.ODYSSEY, CAR.ODYSSEY_CHN): + elif candidate in (CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.28], [0.08]] - if candidate == CAR.ODYSSEY_CHN: + if candidate == CAR.HONDA_ODYSSEY_CHN: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 32767], [0, 32767]] # TODO: determine if there is a dead zone at the top end else: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - elif candidate == CAR.PILOT: + elif candidate == CAR.HONDA_PILOT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]] - elif candidate == CAR.RIDGELINE: + elif candidate == CAR.HONDA_RIDGELINE: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]] - elif candidate == CAR.INSIGHT: + elif candidate == CAR.HONDA_INSIGHT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] @@ -193,7 +193,7 @@ class CarInterface(CarInterfaceBase): # These cars use alternate user brake msg (0x1BE) # TODO: Only detect feature for Accord/Accord Hybrid, not all Bosch DBCs have BRAKE_MODULE - if 0x1BE in fingerprint[CAN.pt] and candidate == CAR.ACCORD: + if 0x1BE in fingerprint[CAN.pt] and candidate == CAR.HONDA_ACCORD: ret.flags |= HondaFlags.BOSCH_ALT_BRAKE.value if ret.flags & HondaFlags.BOSCH_ALT_BRAKE: @@ -212,7 +212,7 @@ class CarInterface(CarInterfaceBase): # min speed to enable ACC. if car can do stop and go, then set enabling speed # to a negative value, so it won't matter. Otherwise, add 0.5 mph margin to not # conflict with PCM acc - ret.autoResumeSng = candidate in (HONDA_BOSCH | {CAR.CIVIC}) + ret.autoResumeSng = candidate in (HONDA_BOSCH | {CAR.HONDA_CIVIC}) ret.minEnableSpeed = -1. if ret.autoResumeSng else 25.5 * CV.MPH_TO_MS ret.steerActuatorDelay = 0.1 diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index ef565e89bf..533e01e9b4 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -115,7 +115,7 @@ class HondaNidecPlatformConfig(PlatformConfig): class CAR(Platforms): # Bosch Cars - ACCORD = HondaBoschPlatformConfig( + HONDA_ACCORD = HondaBoschPlatformConfig( [ HondaCarDocs("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), HondaCarDocs("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), @@ -125,7 +125,7 @@ class CAR(Platforms): CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39, tireStiffnessFactor=0.8467), dbc_dict('honda_accord_2018_can_generated', None), ) - CIVIC_BOSCH = HondaBoschPlatformConfig( + HONDA_CIVIC_BOSCH = HondaBoschPlatformConfig( [ HondaCarDocs("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), @@ -134,34 +134,34 @@ class CAR(Platforms): CarSpecs(mass=1326, wheelbase=2.7, steerRatio=15.38, centerToFrontRatio=0.4), # steerRatio: 10.93 is end-to-end spec dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), ) - CIVIC_BOSCH_DIESEL = HondaBoschPlatformConfig( + HONDA_CIVIC_BOSCH_DIESEL = HondaBoschPlatformConfig( [], # don't show in docs - CIVIC_BOSCH.specs, + HONDA_CIVIC_BOSCH.specs, dbc_dict('honda_accord_2018_can_generated', None), ) - CIVIC_2022 = HondaBoschPlatformConfig( + HONDA_CIVIC_2022 = HondaBoschPlatformConfig( [ HondaCarDocs("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), HondaCarDocs("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), ], - CIVIC_BOSCH.specs, + HONDA_CIVIC_BOSCH.specs, dbc_dict('honda_civic_ex_2022_can_generated', None), flags=HondaFlags.BOSCH_RADARLESS, ) - CRV_5G = HondaBoschPlatformConfig( + HONDA_CRV_5G = HondaBoschPlatformConfig( [HondaCarDocs("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS)], # steerRatio: 12.3 is spec end-to-end CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), flags=HondaFlags.BOSCH_ALT_BRAKE, ) - CRV_HYBRID = HondaBoschPlatformConfig( + HONDA_CRV_HYBRID = HondaBoschPlatformConfig( [HondaCarDocs("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS)], # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_accord_2018_can_generated', None), ) - HRV_3G = HondaBoschPlatformConfig( + HONDA_HRV_3G = HondaBoschPlatformConfig( [HondaCarDocs("Honda HR-V 2023", "All")], CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41, tireStiffnessFactor=0.5), dbc_dict('honda_civic_ex_2022_can_generated', None), @@ -173,7 +173,7 @@ class CAR(Platforms): dbc_dict('acura_rdx_2020_can_generated', None), flags=HondaFlags.BOSCH_ALT_BRAKE, ) - INSIGHT = HondaBoschPlatformConfig( + HONDA_INSIGHT = HondaBoschPlatformConfig( [HondaCarDocs("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39, tireStiffnessFactor=0.82), # as spec dbc_dict('honda_insight_ex_2019_can_generated', None), @@ -191,45 +191,45 @@ class CAR(Platforms): dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - CRV = HondaNidecPlatformConfig( + HONDA_CRV = HondaNidecPlatformConfig( [HondaCarDocs("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41, tireStiffnessFactor=0.444), # as spec dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - CRV_EU = HondaNidecPlatformConfig( + HONDA_CRV_EU = HondaNidecPlatformConfig( [], # Euro version of CRV Touring, don't show in docs - CRV.specs, + HONDA_CRV.specs, dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - FIT = HondaNidecPlatformConfig( + HONDA_FIT = HondaNidecPlatformConfig( [HondaCarDocs("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - FREED = HondaNidecPlatformConfig( + HONDA_FREED = HondaNidecPlatformConfig( [HondaCarDocs("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), # mostly copied from FIT dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - HRV = HondaNidecPlatformConfig( + HONDA_HRV = HondaNidecPlatformConfig( [HondaCarDocs("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS)], - HRV_3G.specs, + HONDA_HRV_3G.specs, dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - ODYSSEY = HondaNidecPlatformConfig( + HONDA_ODYSSEY = HondaNidecPlatformConfig( [HondaCarDocs("Honda Odyssey 2018-20")], CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41, tireStiffnessFactor=0.82), dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_PCM_ACCEL, ) - ODYSSEY_CHN = HondaNidecPlatformConfig( + HONDA_ODYSSEY_CHN = HondaNidecPlatformConfig( [], # Chinese version of Odyssey, don't show in docs - ODYSSEY.specs, + HONDA_ODYSSEY.specs, dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) @@ -239,7 +239,7 @@ class CAR(Platforms): dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - PILOT = HondaNidecPlatformConfig( + HONDA_PILOT = HondaNidecPlatformConfig( [ HondaCarDocs("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), HondaCarDocs("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), @@ -248,13 +248,13 @@ class CAR(Platforms): dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - RIDGELINE = HondaNidecPlatformConfig( + HONDA_RIDGELINE = HondaNidecPlatformConfig( [HondaCarDocs("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS)], CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59, tireStiffnessFactor=0.444), # as spec dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, ) - CIVIC = HondaNidecPlatformConfig( + HONDA_CIVIC = HondaNidecPlatformConfig( [HondaCarDocs("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE")], CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), @@ -307,16 +307,16 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.programmedFuelInjection: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.transmission: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.srs: [CAR.ACCORD], - Ecu.eps: [CAR.ACCORD], - Ecu.vsa: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.combinationMeter: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.gateway: [CAR.ACCORD, CAR.CIVIC, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.electricBrakeBooster: [CAR.ACCORD, CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.shiftByWire: [CAR.ACCORD], # existence correlates with transmission type for ICE - Ecu.hud: [CAR.ACCORD], # existence correlates with trim level + Ecu.programmedFuelInjection: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.transmission: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.srs: [CAR.HONDA_ACCORD], + Ecu.eps: [CAR.HONDA_ACCORD], + Ecu.vsa: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.combinationMeter: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.gateway: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.electricBrakeBooster: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.shiftByWire: [CAR.HONDA_ACCORD], # existence correlates with transmission type for ICE + Ecu.hud: [CAR.HONDA_ACCORD], # existence correlates with trim level }, extra_ecus=[ # The only other ECU on PT bus accessible by camera on radarless Civic @@ -327,7 +327,7 @@ FW_QUERY_CONFIG = FwQueryConfig( STEER_THRESHOLD = { # default is 1200, overrides go here CAR.ACURA_RDX: 400, - CAR.CRV_EU: 400, + CAR.HONDA_CRV_EU: 400, } HONDA_NIDEC_ALT_PCM_ACCEL = CAR.with_flags(HondaFlags.NIDEC_ALT_PCM_ACCEL) diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index 64a9fdf2ce..eac91d5293 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -207,7 +207,7 @@ class CarState(CarStateBase): # TODO: alt signal usage may be described by cp.vl['BLINKERS']['USE_ALT_LAMP'] left_blinker_sig, right_blinker_sig = "LEFT_LAMP", "RIGHT_LAMP" - if self.CP.carFingerprint == CAR.KONA_EV_2ND_GEN: + if self.CP.carFingerprint == CAR.HYUNDAI_KONA_EV_2ND_GEN: left_blinker_sig, right_blinker_sig = "LEFT_LAMP_ALT", "RIGHT_LAMP_ALT" ret.leftBlinker, ret.rightBlinker = self.update_blinker_from_lamp(50, cp.vl["BLINKERS"][left_blinker_sig], cp.vl["BLINKERS"][right_blinker_sig]) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 4116c65b3f..b7f9cb3384 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -5,7 +5,7 @@ from openpilot.selfdrive.car.hyundai.values import CAR Ecu = car.CarParams.Ecu FINGERPRINTS = { - CAR.SANTA_FE: [{ + CAR.HYUNDAI_SANTA_FE: [{ 67: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1155: 8, 1156: 8, 1162: 8, 1164: 8, 1168: 7, 1170: 8, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1227: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1379: 8, 1384: 8, 1407: 8, 1414: 3, 1419: 8, 1427: 6, 1456: 4, 1470: 8 }, { @@ -14,7 +14,7 @@ FINGERPRINTS = { { 67: 8, 68: 8, 80: 4, 160: 8, 161: 8, 272: 8, 288: 4, 339: 8, 356: 8, 357: 8, 399: 8, 544: 8, 608: 8, 672: 8, 688: 5, 704: 1, 790: 8, 809: 8, 848: 8, 880: 8, 898: 8, 900: 8, 901: 8, 904: 8, 1056: 8, 1064: 8, 1065: 8, 1072: 8, 1075: 8, 1087: 8, 1088: 8, 1151: 8, 1200: 8, 1201: 8, 1232: 4, 1264: 8, 1265: 8, 1266: 8, 1296: 8, 1306: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1348: 8, 1349: 8, 1369: 8, 1370: 8, 1371: 8, 1407: 8, 1415: 8, 1419: 8, 1440: 8, 1442: 4, 1461: 8, 1470: 8 }], - CAR.SONATA: [{ + CAR.HYUNDAI_SONATA: [{ 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 546: 8, 549: 8, 550: 8, 576: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 8, 865: 8, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 908: 8, 909: 8, 912: 7, 913: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1089: 5, 1096: 8, 1107: 5, 1108: 8, 1114: 8, 1136: 8, 1145: 8, 1151: 8, 1155: 8, 1156: 8, 1157: 4, 1162: 8, 1164: 8, 1168: 8, 1170: 8, 1173: 8, 1180: 8, 1183: 8, 1184: 8, 1186: 2, 1191: 2, 1193: 8, 1210: 8, 1225: 8, 1227: 8, 1265: 4, 1268: 8, 1280: 8, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1330: 8, 1339: 8, 1342: 6, 1343: 8, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 8, 1379: 8, 1384: 8, 1394: 8, 1407: 8, 1419: 8, 1427: 6, 1446: 8, 1456: 4, 1460: 8, 1470: 8, 1485: 8, 1504: 3, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2008: 8, 2012: 8, 2015: 8 }], CAR.KIA_STINGER: [{ @@ -23,13 +23,13 @@ FINGERPRINTS = { CAR.GENESIS_G90: [{ 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 359: 8, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1162: 4, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 3, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1434: 2, 1456: 4, 1470: 8, 1988: 8, 2000: 8, 2003: 8, 2004: 8, 2005: 8, 2008: 8, 2011: 8, 2012: 8, 2013: 8 }], - CAR.IONIQ_EV_2020: [{ + CAR.HYUNDAI_IONIQ_EV_2020: [{ 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 524: 8, 544: 7, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 8, 1151: 6, 1155: 8, 1156: 8, 1157: 4, 1164: 8, 1168: 7, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1225: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1379: 8, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1456: 4, 1470: 8, 1473: 8, 1507: 8, 1535: 8, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2005: 8, 2008: 8, 2012: 8, 2013: 8 }], - CAR.KONA_EV: [{ + CAR.HYUNDAI_KONA_EV: [{ 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 544: 8, 549: 8, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 8, 1151: 6, 1168: 7, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1225: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1307: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1378: 4, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1456: 4, 1470: 8, 1473: 8, 1507: 8, 1535: 8, 2000: 8, 2004: 8, 2008: 8, 2012: 8, 1157: 4, 1193: 8, 1379: 8, 1988: 8, 1996: 8 }], - CAR.KONA_EV_2022: [{ + CAR.HYUNDAI_KONA_EV_2022: [{ 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 544: 8, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 913: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1069: 8, 1078: 4, 1136: 8, 1145: 8, 1151: 8, 1155: 8, 1156: 8, 1157: 4, 1162: 8, 1164: 8, 1168: 8, 1173: 8, 1183: 8, 1188: 8, 1191: 2, 1193: 8, 1225: 8, 1227: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1339: 8, 1342: 8, 1343: 8, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1379: 8, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1446: 8, 1456: 4, 1470: 8, 1473: 8, 1485: 8, 1507: 8, 1535: 8, 1990: 8, 1998: 8 }], CAR.KIA_NIRO_EV: [{ @@ -44,7 +44,7 @@ FINGERPRINTS = { } FW_VERSIONS = { - CAR.AZERA_6TH_GEN: { + CAR.HYUNDAI_AZERA_6TH_GEN: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00IG__ SCC F-CU- 1.00 1.00 99110-G8100 ', ], @@ -61,7 +61,7 @@ FW_VERSIONS = { b'\xf1\x81641KA051\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.AZERA_HEV_6TH_GEN: { + CAR.HYUNDAI_AZERA_HEV_6TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IGH MFC AT KOR LHD 1.00 1.00 99211-G8000 180903', b'\xf1\x00IGH MFC AT KOR LHD 1.00 1.01 99211-G8000 181109', @@ -93,7 +93,7 @@ FW_VERSIONS = { b'\xf1\x00DH LKAS 1.5 -140425', ], }, - CAR.IONIQ: { + CAR.HYUNDAI_IONIQ: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2000 ', ], @@ -110,7 +110,7 @@ FW_VERSIONS = { b'\xf1\x816U3H1051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H1051\x00\x00HAE0G16US2\x00\x00\x00\x00', ], }, - CAR.IONIQ_PHEV_2019: { + CAR.HYUNDAI_IONIQ_PHEV_2019: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2100 ', ], @@ -128,7 +128,7 @@ FW_VERSIONS = { b'\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PAE0G16NS1\xdbD\r\x81', ], }, - CAR.IONIQ_PHEV: { + CAR.HYUNDAI_IONIQ_PHEV: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEhe SCC F-CUP 1.00 1.00 99110-G2200 ', b'\xf1\x00AEhe SCC F-CUP 1.00 1.00 99110-G2600 ', @@ -162,7 +162,7 @@ FW_VERSIONS = { b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL2\x00\x00\x00\x00', ], }, - CAR.IONIQ_EV_2020: { + CAR.HYUNDAI_IONIQ_EV_2020: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEev SCC F-CUP 1.00 1.00 99110-G7200 ', b'\xf1\x00AEev SCC F-CUP 1.00 1.00 99110-G7500 ', @@ -180,7 +180,7 @@ FW_VERSIONS = { b'\xf1\x00AEE MFC AT EUR RHD 1.00 1.01 95740-G2600 190819', ], }, - CAR.IONIQ_EV_LTD: { + CAR.HYUNDAI_IONIQ_EV_LTD: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEev SCC F-CUP 1.00 1.00 96400-G7000 ', b'\xf1\x00AEev SCC F-CUP 1.00 1.00 96400-G7100 ', @@ -199,7 +199,7 @@ FW_VERSIONS = { b'\xf1\x00AEE MFC AT USA LHD 1.00 1.00 95740-G2400 180222', ], }, - CAR.IONIQ_HEV_2022: { + CAR.HYUNDAI_IONIQ_HEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEhe SCC F-CUP 1.00 1.00 99110-G2600 ', b'\xf1\x00AEhe SCC FHCUP 1.00 1.00 99110-G2600 ', @@ -218,7 +218,7 @@ FW_VERSIONS = { b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HAE0G16NL2\x00\x00\x00\x00', ], }, - CAR.SONATA: { + CAR.HYUNDAI_SONATA: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DN8_ SCC F-CU- 1.00 1.00 99110-L0000 ', b'\xf1\x00DN8_ SCC F-CUP 1.00 1.00 99110-L0000 ', @@ -361,7 +361,7 @@ FW_VERSIONS = { b'\xf1\x87SANFB45889451GC7wx\x87\x88gw\x87x\x88\x88x\x88\x87wxw\x87wxw\x87\x8f\xfc\xffeU\x8f\xff+Q\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', ], }, - CAR.SONATA_LF: { + CAR.HYUNDAI_SONATA_LF: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00LF__ SCC F-CUP 1.00 1.00 96401-C2200 ', ], @@ -389,7 +389,7 @@ FW_VERSIONS = { b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B4051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24SL2n\x8d\xbe\xd8', ], }, - CAR.TUCSON: { + CAR.HYUNDAI_TUCSON: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TL__ FCA F-CUP 1.00 1.01 99110-D3500 ', b'\xf1\x00TL__ FCA F-CUP 1.00 1.02 99110-D3510 ', @@ -407,7 +407,7 @@ FW_VERSIONS = { b'\xf1\x87LBJXAN202299KF22\x87x\x87\x88ww\x87xx\x88\x97\x88\x87\x88\x98x\x88\x99\x98\x89\x87o\xf6\xff\x87w\x7f\xff\x12\x9a\xf1\x81U083\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U083\x00\x00\x00\x00\x00\x00TTL2V20KL1\x8fRn\x8a', ], }, - CAR.SANTA_FE: { + CAR.HYUNDAI_SANTA_FE: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TM__ SCC F-CUP 1.00 1.00 99110-S1210 ', b'\xf1\x00TM__ SCC F-CUP 1.00 1.01 99110-S2000 ', @@ -470,7 +470,7 @@ FW_VERSIONS = { b'\xf1\x87SDKXAA2443414GG1vfvgwv\x87h\x88\x88\x88\x88ww\x87wwwww\x99_\xfc\xffvD?\xffl\xd2\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4G24NS6\x00\x00\x00\x00', ], }, - CAR.SANTA_FE_2022: { + CAR.HYUNDAI_SANTA_FE_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TM__ SCC F-CUP 1.00 1.00 99110-S1500 ', b'\xf1\x00TM__ SCC FHCUP 1.00 1.00 99110-S1500 ', @@ -532,7 +532,7 @@ FW_VERSIONS = { b'\xf1\x87SDMXCA9087684GN1VfvgUUeVwwgwwwwwffffU?\xfb\xff\x97\x88\x7f\xff+\xa4\xf1\x89HT6WAD00A1\xf1\x82STM4G25NH1\x00\x00\x00\x00\x00\x00', ], }, - CAR.SANTA_FE_HEV_2022: { + CAR.HYUNDAI_SANTA_FE_HEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TMhe SCC FHCUP 1.00 1.00 99110-CL500 ', b'\xf1\x00TMhe SCC FHCUP 1.00 1.01 99110-CL500 ', @@ -565,7 +565,7 @@ FW_VERSIONS = { b'\xf1\x87391312MTL0', ], }, - CAR.SANTA_FE_PHEV_2022: { + CAR.HYUNDAI_SANTA_FE_PHEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TMhe SCC F-CUP 1.00 1.00 99110-CL500 ', b'\xf1\x00TMhe SCC FHCUP 1.00 1.01 99110-CL500 ', @@ -591,7 +591,7 @@ FW_VERSIONS = { b'\xf1\x87391312MTF1', ], }, - CAR.CUSTIN_1ST_GEN: { + CAR.HYUNDAI_CUSTIN_1ST_GEN: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00KU ESC \x01 101!\x02\x03 58910-O3200', ], @@ -685,7 +685,7 @@ FW_VERSIONS = { b'\xf1\x87VCNLF11383972DK1vffV\x99\x99\x89\x98\x86eUU\x88wg\x89vfff\x97fff\x99\x87o\xff"\xc1\xf1\x81E30\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E30\x00\x00\x00\x00\x00\x00\x00SCK0T33GH0\xbe`\xfb\xc6', ], }, - CAR.PALISADE: { + CAR.HYUNDAI_PALISADE: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00LX2 SCC FHCUP 1.00 1.04 99110-S8100 ', b'\xf1\x00LX2_ SCC F-CUP 1.00 1.04 99110-S8100 ', @@ -792,7 +792,7 @@ FW_VERSIONS = { b'\xf1\x87LDMVBN950669KF37\x97www\x96fffy\x99\xa7\x99\xa9\x99\xaa\x99g\x88\x96x\xb8\x8f\xf9\xffTD/\xff\xa7\xcb\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', ], }, - CAR.VELOSTER: { + CAR.HYUNDAI_VELOSTER: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00JS__ SCC H-CUP 1.00 1.02 95650-J3200 ', b'\xf1\x00JS__ SCC HNCUP 1.00 1.02 95650-J3100 ', @@ -918,7 +918,7 @@ FW_VERSIONS = { b'\xf1\x810000000000\x00', ], }, - CAR.KONA: { + CAR.HYUNDAI_KONA: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00OS__ SCC F-CUP 1.00 1.00 95655-J9200 ', ], @@ -1063,7 +1063,7 @@ FW_VERSIONS = { b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TDL2H20KA5T\xf2\xc9\xc2', ], }, - CAR.KONA_EV: { + CAR.HYUNDAI_KONA_EV: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00OS IEB \x01 212 \x11\x13 58520-K4000', b'\xf1\x00OS IEB \x02 212 \x11\x13 58520-K4000', @@ -1091,7 +1091,7 @@ FW_VERSIONS = { b'\xf1\x00OSev SCC FNCUP 1.00 1.01 99110-K4000 ', ], }, - CAR.KONA_EV_2022: { + CAR.HYUNDAI_KONA_EV_2022: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00OS IEB \x02 102"\x05\x16 58520-K4010', b'\xf1\x00OS IEB \x03 102"\x05\x16 58520-K4010', @@ -1120,7 +1120,7 @@ FW_VERSIONS = { b'\xf1\x00YB__ FCA ----- 1.00 1.01 99110-K4500 \x00\x00\x00', ], }, - CAR.KONA_EV_2ND_GEN: { + CAR.HYUNDAI_KONA_EV_2ND_GEN: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00SXev RDR ----- 1.00 1.00 99110-BF000 ', ], @@ -1320,7 +1320,7 @@ FW_VERSIONS = { b'\xf1\x816H6D1051\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.ELANTRA: { + CAR.HYUNDAI_ELANTRA: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AD LKAS AT USA LHD 1.01 1.01 95895-F2000 251', b'\xf1\x00ADP LKAS AT USA LHD 1.00 1.03 99211-F2000 X31', @@ -1347,7 +1347,7 @@ FW_VERSIONS = { b'\xf1\x00AD__ SCC H-CUP 1.00 1.01 96400-F2100 ', ], }, - CAR.ELANTRA_GT_I30: { + CAR.HYUNDAI_ELANTRA_GT_I30: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00PD LKAS AT KOR LHD 1.00 1.02 95740-G3000 A51', b'\xf1\x00PD LKAS AT USA LHD 1.00 1.02 95740-G3000 A51', @@ -1375,7 +1375,7 @@ FW_VERSIONS = { b'\xf1\x00PD__ SCC FNCUP 1.01 1.00 96400-G3000 ', ], }, - CAR.ELANTRA_2021: { + CAR.HYUNDAI_ELANTRA_2021: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00CN7_ SCC F-CUP 1.00 1.01 99110-AA000 ', b'\xf1\x00CN7_ SCC FHCUP 1.00 1.01 99110-AA000 ', @@ -1417,7 +1417,7 @@ FW_VERSIONS = { b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M2_0a0_HC0', ], }, - CAR.ELANTRA_HEV_2021: { + CAR.HYUNDAI_ELANTRA_HEV_2021: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00CN7HMFC AT USA LHD 1.00 1.03 99210-AA000 200819', b'\xf1\x00CN7HMFC AT USA LHD 1.00 1.05 99210-AA000 210930', @@ -1448,7 +1448,7 @@ FW_VERSIONS = { b'\xf1\x816H6G8051\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.KONA_HEV: { + CAR.HYUNDAI_KONA_HEV: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00OS IEB \x01 104 \x11 58520-CM000', ], @@ -1468,7 +1468,7 @@ FW_VERSIONS = { b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.SONATA_HYBRID: { + CAR.HYUNDAI_SONATA_HYBRID: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DNhe SCC F-CUP 1.00 1.02 99110-L5000 ', b'\xf1\x00DNhe SCC FHCUP 1.00 1.00 99110-L5000 ', @@ -1544,7 +1544,7 @@ FW_VERSIONS = { b'\xf1\x00CV1 MFC AT USA LHD 1.00 1.06 99210-CV000 220328', ], }, - CAR.IONIQ_5: { + CAR.HYUNDAI_IONIQ_5: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00NE1_ RDR ----- 1.00 1.00 99110-GI000 ', ], @@ -1564,7 +1564,7 @@ FW_VERSIONS = { b'\xf1\x00NE1 MFC AT USA LHD 1.00 1.06 99211-GI010 230110', ], }, - CAR.IONIQ_6: { + CAR.HYUNDAI_IONIQ_6: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00CE__ RDR ----- 1.00 1.01 99110-KL000 ', ], @@ -1574,7 +1574,7 @@ FW_VERSIONS = { b'\xf1\x00CE MFC AT USA LHD 1.00 1.04 99211-KL000 221213', ], }, - CAR.TUCSON_4TH_GEN: { + CAR.HYUNDAI_TUCSON_4TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00NX4 FR_CMR AT CAN LHD 1.00 1.01 99211-N9100 14A', b'\xf1\x00NX4 FR_CMR AT EUR LHD 1.00 1.00 99211-N9220 14K', @@ -1594,7 +1594,7 @@ FW_VERSIONS = { b'\xf1\x00NX4__ 1.01 1.00 99110-N9100 ', ], }, - CAR.SANTA_CRUZ_1ST_GEN: { + CAR.HYUNDAI_SANTA_CRUZ_1ST_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-CW000 14M', b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-CW010 14X', @@ -1708,7 +1708,7 @@ FW_VERSIONS = { b'\xf1\x00GL3_ RDR ----- 1.00 1.02 99110-L8000 ', ], }, - CAR.STARIA_4TH_GEN: { + CAR.HYUNDAI_STARIA_4TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00US4 MFC AT KOR LHD 1.00 1.06 99211-CG000 230524', ], diff --git a/selfdrive/car/hyundai/hyundaican.py b/selfdrive/car/hyundai/hyundaican.py index 7cbeed0afb..fe43def2ae 100644 --- a/selfdrive/car/hyundai/hyundaican.py +++ b/selfdrive/car/hyundai/hyundaican.py @@ -33,12 +33,12 @@ def create_lkas11(packer, frame, CP, apply_steer, steer_req, values["CF_Lkas_ToiFlt"] = torque_fault # seems to allow actuation on CR_Lkas_StrToqReq values["CF_Lkas_MsgCount"] = frame % 0x10 - if CP.carFingerprint in (CAR.SONATA, CAR.PALISADE, CAR.KIA_NIRO_EV, CAR.KIA_NIRO_HEV_2021, CAR.SANTA_FE, - CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.KIA_SELTOS, CAR.ELANTRA_2021, CAR.GENESIS_G70_2020, - CAR.ELANTRA_HEV_2021, CAR.SONATA_HYBRID, CAR.KONA_EV, CAR.KONA_HEV, CAR.KONA_EV_2022, - CAR.SANTA_FE_2022, CAR.KIA_K5_2021, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022, - CAR.SANTA_FE_PHEV_2022, CAR.KIA_STINGER_2022, CAR.KIA_K5_HEV_2020, CAR.KIA_CEED, - CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.CUSTIN_1ST_GEN): + if CP.carFingerprint in (CAR.HYUNDAI_SONATA, CAR.HYUNDAI_PALISADE, CAR.KIA_NIRO_EV, CAR.KIA_NIRO_HEV_2021, CAR.HYUNDAI_SANTA_FE, + CAR.HYUNDAI_IONIQ_EV_2020, CAR.HYUNDAI_IONIQ_PHEV, CAR.KIA_SELTOS, CAR.HYUNDAI_ELANTRA_2021, CAR.GENESIS_G70_2020, + CAR.HYUNDAI_ELANTRA_HEV_2021, CAR.HYUNDAI_SONATA_HYBRID, CAR.HYUNDAI_KONA_EV, CAR.HYUNDAI_KONA_HEV, CAR.HYUNDAI_KONA_EV_2022, + CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_IONIQ_HEV_2022, CAR.HYUNDAI_SANTA_FE_HEV_2022, + CAR.HYUNDAI_SANTA_FE_PHEV_2022, CAR.KIA_STINGER_2022, CAR.KIA_K5_HEV_2020, CAR.KIA_CEED, + CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_CUSTIN_1ST_GEN): values["CF_Lkas_LdwsActivemode"] = int(left_lane) + (int(right_lane) << 1) values["CF_Lkas_LdwsOpt_USM"] = 2 diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index 7f8cf05907..00452a9ae0 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -132,7 +132,7 @@ class CarInterface(CarInterfaceBase): elif ret.flags & HyundaiFlags.EV: ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_HYUNDAI_EV_GAS - if candidate in (CAR.KONA, CAR.KONA_EV, CAR.KONA_HEV, CAR.KONA_EV_2022): + if candidate in (CAR.HYUNDAI_KONA, CAR.HYUNDAI_KONA_EV, CAR.HYUNDAI_KONA_HEV, CAR.HYUNDAI_KONA_EV_2022): ret.flags |= HyundaiFlags.ALT_LIMITS.value ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_HYUNDAI_ALT_LIMITS diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index 61b11a1992..c9ec972313 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -18,22 +18,22 @@ ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} NO_DATES_PLATFORMS = { # CAN FD CAR.KIA_SPORTAGE_5TH_GEN, - CAR.SANTA_CRUZ_1ST_GEN, - CAR.TUCSON_4TH_GEN, + CAR.HYUNDAI_SANTA_CRUZ_1ST_GEN, + CAR.HYUNDAI_TUCSON_4TH_GEN, # CAN - CAR.ELANTRA, - CAR.ELANTRA_GT_I30, + CAR.HYUNDAI_ELANTRA, + CAR.HYUNDAI_ELANTRA_GT_I30, CAR.KIA_CEED, CAR.KIA_FORTE, CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.KIA_SORENTO, - CAR.KONA, - CAR.KONA_EV, - CAR.KONA_EV_2022, - CAR.KONA_HEV, - CAR.SONATA_LF, - CAR.VELOSTER, + CAR.HYUNDAI_KONA, + CAR.HYUNDAI_KONA_EV, + CAR.HYUNDAI_KONA_EV_2022, + CAR.HYUNDAI_KONA_HEV, + CAR.HYUNDAI_SONATA_LF, + CAR.HYUNDAI_VELOSTER, } @@ -67,7 +67,7 @@ class TestHyundaiFingerprint(unittest.TestCase): # Tucson having Santa Cruz camera and EPS for example for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): - if car_model == CAR.SANTA_CRUZ_1ST_GEN: + if car_model == CAR.HYUNDAI_SANTA_CRUZ_1ST_GEN: raise unittest.SkipTest("Skip checking Santa Cruz for its parts") for code, _ in get_platform_codes(ecus[(Ecu.fwdCamera, 0x7c4, None)]): @@ -108,9 +108,9 @@ class TestHyundaiFingerprint(unittest.TestCase): # Third and fourth character are usually EV/hybrid identifiers codes = {code.split(b"-")[0][:2] for code, _ in get_platform_codes(fws)} - if car_model == CAR.PALISADE: + if car_model == CAR.HYUNDAI_PALISADE: self.assertEqual(codes, {b"LX", b"ON"}, f"Car has unexpected platform codes: {car_model} {codes}") - elif car_model == CAR.KONA_EV and ecu[0] == Ecu.fwdCamera: + elif car_model == CAR.HYUNDAI_KONA_EV and ecu[0] == Ecu.fwdCamera: self.assertEqual(codes, {b"OE", b"OS"}, f"Car has unexpected platform codes: {car_model} {codes}") else: self.assertEqual(len(codes), 1, f"Car has multiple platform codes: {car_model} {codes}") @@ -120,7 +120,7 @@ class TestHyundaiFingerprint(unittest.TestCase): def test_platform_code_ecus_available(self): # TODO: add queries for these non-CAN FD cars to get EPS no_eps_platforms = CANFD_CAR | {CAR.KIA_SORENTO, CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.KIA_OPTIMA_H, - CAR.KIA_OPTIMA_H_G4_FL, CAR.SONATA_LF, CAR.TUCSON, CAR.GENESIS_G90, CAR.GENESIS_G80, CAR.ELANTRA} + CAR.KIA_OPTIMA_H_G4_FL, CAR.HYUNDAI_SONATA_LF, CAR.HYUNDAI_TUCSON, CAR.GENESIS_G90, CAR.GENESIS_G80, CAR.HYUNDAI_ELANTRA} # Asserts ECU keys essential for fuzzy fingerprinting are available on all platforms for car_model, ecus in FW_VERSIONS.items(): diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 81587fc68a..f1a3c3ebc6 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -35,8 +35,8 @@ class CarControllerParams: # To determine the limit for your car, find the maximum value that the stock LKAS will request. # If the max stock LKAS request is <384, add your car to this list. - elif CP.carFingerprint in (CAR.GENESIS_G80, CAR.GENESIS_G90, CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.IONIQ, - CAR.IONIQ_EV_LTD, CAR.SANTA_FE_PHEV_2022, CAR.SONATA_LF, CAR.KIA_FORTE, CAR.KIA_NIRO_PHEV, + elif CP.carFingerprint in (CAR.GENESIS_G80, CAR.GENESIS_G90, CAR.HYUNDAI_ELANTRA, CAR.HYUNDAI_ELANTRA_GT_I30, CAR.HYUNDAI_IONIQ, + CAR.HYUNDAI_IONIQ_EV_LTD, CAR.HYUNDAI_SANTA_FE_PHEV_2022, CAR.HYUNDAI_SONATA_LF, CAR.KIA_FORTE, CAR.KIA_NIRO_PHEV, CAR.KIA_OPTIMA_H, CAR.KIA_OPTIMA_H_G4_FL, CAR.KIA_SORENTO): self.STEER_MAX = 255 @@ -134,11 +134,11 @@ class HyundaiCanFDPlatformConfig(PlatformConfig): class CAR(Platforms): # Hyundai - AZERA_6TH_GEN = HyundaiPlatformConfig( + HYUNDAI_AZERA_6TH_GEN = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=1600, wheelbase=2.885, steerRatio=14.5), ) - AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( + HYUNDAI_AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( [ HyundaiCarDocs("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), HyundaiCarDocs("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), @@ -146,7 +146,7 @@ class CAR(Platforms): CarSpecs(mass=1675, wheelbase=2.885, steerRatio=14.5), flags=HyundaiFlags.HYBRID, ) - ELANTRA = HyundaiPlatformConfig( + HYUNDAI_ELANTRA = HyundaiPlatformConfig( [ # TODO: 2017-18 could be Hyundai G HyundaiCarDocs("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), @@ -156,20 +156,20 @@ class CAR(Platforms): CarSpecs(mass=1275, wheelbase=2.7, steerRatio=15.4, tireStiffnessFactor=0.385), flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) - ELANTRA_GT_I30 = HyundaiPlatformConfig( + HYUNDAI_ELANTRA_GT_I30 = HyundaiPlatformConfig( [ HyundaiCarDocs("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), HyundaiCarDocs("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), ], - ELANTRA.specs, + HYUNDAI_ELANTRA.specs, flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, ) - ELANTRA_2021 = HyundaiPlatformConfig( + HYUNDAI_ELANTRA_2021 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=2800 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), flags=HyundaiFlags.CHECKSUM_CRC8, ) - ELANTRA_HEV_2021 = HyundaiPlatformConfig( + HYUNDAI_ELANTRA_HEV_2021 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), @@ -184,101 +184,101 @@ class CAR(Platforms): CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5, minSteerSpeed=60 * CV.KPH_TO_MS), flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY, ) - IONIQ = HyundaiPlatformConfig( + HYUNDAI_IONIQ = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) - IONIQ_HEV_2022 = HyundaiPlatformConfig( + HYUNDAI_IONIQ_HEV_2022 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h]))], # TODO: confirm 2020-21 harness, CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, ) - IONIQ_EV_LTD = HyundaiPlatformConfig( + HYUNDAI_IONIQ_EV_LTD = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH, ) - IONIQ_EV_2020 = HyundaiPlatformConfig( + HYUNDAI_IONIQ_EV_2020 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV, ) - IONIQ_PHEV_2019 = HyundaiPlatformConfig( + HYUNDAI_IONIQ_PHEV_2019 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, ) - IONIQ_PHEV = HyundaiPlatformConfig( + HYUNDAI_IONIQ_PHEV = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID, ) - KONA = HyundaiPlatformConfig( + HYUNDAI_KONA = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b]))], CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CLUSTER_GEARS, ) - KONA_EV = HyundaiPlatformConfig( + HYUNDAI_KONA_EV = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g]))], CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV, ) - KONA_EV_2022 = HyundaiPlatformConfig( + HYUNDAI_KONA_EV_2022 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o]))], CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV, ) - KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( + HYUNDAI_KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( [HyundaiCarDocs("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", car_parts=CarParts.common([CarHarness.hyundai_r]))], CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) - KONA_HEV = HyundaiPlatformConfig( + HYUNDAI_KONA_HEV = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i]))], # TODO: check packages, CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), flags=HyundaiFlags.HYBRID, ) - SANTA_FE = HyundaiPlatformConfig( + HYUNDAI_SANTA_FE = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", car_parts=CarParts.common([CarHarness.hyundai_d]))], CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) - SANTA_FE_2022 = HyundaiPlatformConfig( + HYUNDAI_SANTA_FE_2022 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", car_parts=CarParts.common([CarHarness.hyundai_l]))], - SANTA_FE.specs, + HYUNDAI_SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8, ) - SANTA_FE_HEV_2022 = HyundaiPlatformConfig( + HYUNDAI_SANTA_FE_HEV_2022 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], - SANTA_FE.specs, + HYUNDAI_SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) - SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( + HYUNDAI_SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], - SANTA_FE.specs, + HYUNDAI_SANTA_FE.specs, flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) - SONATA = HyundaiPlatformConfig( + HYUNDAI_SONATA = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", car_parts=CarParts.common([CarHarness.hyundai_a]))], CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) - SONATA_LF = HyundaiPlatformConfig( + HYUNDAI_SONATA_LF = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, ) - STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( + HYUNDAI_STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( [HyundaiCarDocs("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=2205, wheelbase=3.273, steerRatio=11.94), # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf ) - TUCSON = HyundaiPlatformConfig( + HYUNDAI_TUCSON = HyundaiPlatformConfig( [ HyundaiCarDocs("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), HyundaiCarDocs("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), @@ -286,7 +286,7 @@ class CAR(Platforms): CarSpecs(mass=3520 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=16.1, tireStiffnessFactor=0.385), flags=HyundaiFlags.TCU_GEARS, ) - PALISADE = HyundaiPlatformConfig( + HYUNDAI_PALISADE = HyundaiPlatformConfig( [ HyundaiCarDocs("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), HyundaiCarDocs("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), @@ -294,17 +294,17 @@ class CAR(Platforms): CarSpecs(mass=1999, wheelbase=2.9, steerRatio=15.6 * 1.15, tireStiffnessFactor=0.63), flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, ) - VELOSTER = HyundaiPlatformConfig( + HYUNDAI_VELOSTER = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e]))], CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor=0.5), flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS, ) - SONATA_HYBRID = HyundaiPlatformConfig( + HYUNDAI_SONATA_HYBRID = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], - SONATA.specs, + HYUNDAI_SONATA.specs, flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, ) - IONIQ_5 = HyundaiCanFDPlatformConfig( + HYUNDAI_IONIQ_5 = HyundaiCanFDPlatformConfig( [ HyundaiCarDocs("Hyundai Ioniq 5 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_q])), HyundaiCarDocs("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), @@ -313,12 +313,12 @@ class CAR(Platforms): CarSpecs(mass=1948, wheelbase=2.97, steerRatio=14.26, tireStiffnessFactor=0.65), flags=HyundaiFlags.EV, ) - IONIQ_6 = HyundaiCanFDPlatformConfig( + HYUNDAI_IONIQ_6 = HyundaiCanFDPlatformConfig( [HyundaiCarDocs("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p]))], - IONIQ_5.specs, + HYUNDAI_IONIQ_5.specs, flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, ) - TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( + HYUNDAI_TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( [ HyundaiCarDocs("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarDocs("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), @@ -326,12 +326,12 @@ class CAR(Platforms): ], CarSpecs(mass=1630, wheelbase=2.756, steerRatio=13.7, tireStiffnessFactor=0.385), ) - SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( + HYUNDAI_SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( [HyundaiCarDocs("Hyundai Santa Cruz 2022-24", car_parts=CarParts.common([CarHarness.hyundai_n]))], # weight from Limited trim - the only supported trim, steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), ) - CUSTIN_1ST_GEN = HyundaiPlatformConfig( + HYUNDAI_CUSTIN_1ST_GEN = HyundaiPlatformConfig( [HyundaiCarDocs("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner flags=HyundaiFlags.CHECKSUM_CRC8, @@ -743,9 +743,9 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.transmission: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.PALISADE, CAR.SONATA], - Ecu.engine: [CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.PALISADE, CAR.SONATA], - Ecu.abs: [CAR.PALISADE, CAR.SONATA], + Ecu.transmission: [CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA], + Ecu.engine: [CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA], + Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA], }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms diff --git a/selfdrive/car/mazda/fingerprints.py b/selfdrive/car/mazda/fingerprints.py index 8143ad71af..e7396d566e 100644 --- a/selfdrive/car/mazda/fingerprints.py +++ b/selfdrive/car/mazda/fingerprints.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car.mazda.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.CX5_2022: { + CAR.MAZDA_CX5_2022: { (Ecu.eps, 0x730, None): [ b'KSD5-3210X-C-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -41,7 +41,7 @@ FW_VERSIONS = { b'SH51-21PS1-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.CX5: { + CAR.MAZDA_CX5: { (Ecu.eps, 0x730, None): [ b'K319-3210X-A-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'KCB8-3210X-B-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -110,7 +110,7 @@ FW_VERSIONS = { b'SH9T-21PS1-D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.CX9: { + CAR.MAZDA_CX9: { (Ecu.eps, 0x730, None): [ b'K070-3210X-C-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'KJ01-3210X-G-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -160,7 +160,7 @@ FW_VERSIONS = { b'PYFM-21PS1-D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.MAZDA3: { + CAR.MAZDA_3: { (Ecu.eps, 0x730, None): [ b'BHN1-3210X-J-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'K070-3210X-C-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -195,7 +195,7 @@ FW_VERSIONS = { b'PYKE-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.MAZDA6: { + CAR.MAZDA_6: { (Ecu.eps, 0x730, None): [ b'GBEF-3210X-B-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'GBEF-3210X-C-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -227,7 +227,7 @@ FW_VERSIONS = { b'PYH7-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.CX9_2021: { + CAR.MAZDA_CX9_2021: { (Ecu.eps, 0x730, None): [ b'TC3M-3210X-A-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index a0fa73c021..6992d49ffe 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -16,14 +16,14 @@ class CarInterface(CarInterfaceBase): ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.mazda)] ret.radarUnavailable = True - ret.dashcamOnly = candidate not in (CAR.CX5_2022, CAR.CX9_2021) + ret.dashcamOnly = candidate not in (CAR.MAZDA_CX5_2022, CAR.MAZDA_CX9_2021) ret.steerActuatorDelay = 0.1 ret.steerLimitTimer = 0.8 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - if candidate not in (CAR.CX5_2022, ): + if candidate not in (CAR.MAZDA_CX5_2022, ): ret.minSteerSpeed = LKAS_LIMITS.DISABLE_SPEED * CV.KPH_TO_MS ret.centerToFront = ret.wheelbase * 0.41 diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index 9d8278f951..a8c808d582 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -50,29 +50,29 @@ class MazdaPlatformConfig(PlatformConfig): class CAR(Platforms): - CX5 = MazdaPlatformConfig( + MAZDA_CX5 = MazdaPlatformConfig( [MazdaCarDocs("Mazda CX-5 2017-21")], MazdaCarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) ) - CX9 = MazdaPlatformConfig( + MAZDA_CX9 = MazdaPlatformConfig( [MazdaCarDocs("Mazda CX-9 2016-20")], MazdaCarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) ) - MAZDA3 = MazdaPlatformConfig( + MAZDA_3 = MazdaPlatformConfig( [MazdaCarDocs("Mazda 3 2017-18")], MazdaCarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) ) - MAZDA6 = MazdaPlatformConfig( + MAZDA_6 = MazdaPlatformConfig( [MazdaCarDocs("Mazda 6 2017-20")], MazdaCarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) ) - CX9_2021 = MazdaPlatformConfig( + MAZDA_CX9_2021 = MazdaPlatformConfig( [MazdaCarDocs("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4")], - CX9.specs + MAZDA_CX9.specs ) - CX5_2022 = MazdaPlatformConfig( + MAZDA_CX5_2022 = MazdaPlatformConfig( [MazdaCarDocs("Mazda CX-5 2022-24")], - CX5.specs, + MAZDA_CX5.specs, ) diff --git a/selfdrive/car/nissan/carcontroller.py b/selfdrive/car/nissan/carcontroller.py index 6aa4bb9438..83775462b7 100644 --- a/selfdrive/car/nissan/carcontroller.py +++ b/selfdrive/car/nissan/carcontroller.py @@ -51,21 +51,21 @@ class CarController(CarControllerBase): self.apply_angle_last = apply_angle - if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA) and pcm_cancel_cmd: + if self.CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL, CAR.NISSAN_ALTIMA) and pcm_cancel_cmd: can_sends.append(nissancan.create_acc_cancel_cmd(self.packer, self.car_fingerprint, CS.cruise_throttle_msg)) # TODO: Find better way to cancel! # For some reason spamming the cancel button is unreliable on the Leaf # We now cancel by making propilot think the seatbelt is unlatched, # this generates a beep and a warning message every time you disengage - if self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC) and self.frame % 2 == 0: + if self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC) and self.frame % 2 == 0: can_sends.append(nissancan.create_cancel_msg(self.packer, CS.cancel_msg, pcm_cancel_cmd)) can_sends.append(nissancan.create_steering_control( self.packer, apply_angle, self.frame, CC.latActive, self.lkas_max_torque)) # Below are the HUD messages. We copy the stock message and modify - if self.CP.carFingerprint != CAR.ALTIMA: + if self.CP.carFingerprint != CAR.NISSAN_ALTIMA: if self.frame % 2 == 0: can_sends.append(nissancan.create_lkas_hud_msg(self.packer, CS.lkas_hud_msg, CC.enabled, hud_control.leftLaneVisible, hud_control.rightLaneVisible, hud_control.leftLaneDepart, hud_control.rightLaneDepart)) diff --git a/selfdrive/car/nissan/carstate.py b/selfdrive/car/nissan/carstate.py index 694d6c3bb0..57146b49c4 100644 --- a/selfdrive/car/nissan/carstate.py +++ b/selfdrive/car/nissan/carstate.py @@ -29,16 +29,16 @@ class CarState(CarStateBase): self.prev_distance_button = self.distance_button self.distance_button = cp.vl["CRUISE_THROTTLE"]["FOLLOW_DISTANCE_BUTTON"] - if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA): + if self.CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL, CAR.NISSAN_ALTIMA): ret.gas = cp.vl["GAS_PEDAL"]["GAS_PEDAL"] - elif self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + elif self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): ret.gas = cp.vl["CRUISE_THROTTLE"]["GAS_PEDAL"] ret.gasPressed = bool(ret.gas > 3) - if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA): + if self.CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL, CAR.NISSAN_ALTIMA): ret.brakePressed = bool(cp.vl["DOORS_LIGHTS"]["USER_BRAKE_PRESSED"]) - elif self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + elif self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): ret.brakePressed = bool(cp.vl["CRUISE_THROTTLE"]["USER_BRAKE_PRESSED"]) ret.wheelSpeeds = self.get_wheel_speeds( @@ -52,38 +52,38 @@ class CarState(CarStateBase): ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.standstill = cp.vl["WHEEL_SPEEDS_REAR"]["WHEEL_SPEED_RL"] == 0.0 and cp.vl["WHEEL_SPEEDS_REAR"]["WHEEL_SPEED_RR"] == 0.0 - if self.CP.carFingerprint == CAR.ALTIMA: + if self.CP.carFingerprint == CAR.NISSAN_ALTIMA: ret.cruiseState.enabled = bool(cp.vl["CRUISE_STATE"]["CRUISE_ENABLED"]) else: ret.cruiseState.enabled = bool(cp_adas.vl["CRUISE_STATE"]["CRUISE_ENABLED"]) - if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL): + if self.CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL): ret.seatbeltUnlatched = cp.vl["HUD"]["SEATBELT_DRIVER_LATCHED"] == 0 ret.cruiseState.available = bool(cp_cam.vl["PRO_PILOT"]["CRUISE_ON"]) - elif self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): - if self.CP.carFingerprint == CAR.LEAF: + elif self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): + if self.CP.carFingerprint == CAR.NISSAN_LEAF: ret.seatbeltUnlatched = cp.vl["SEATBELT"]["SEATBELT_DRIVER_LATCHED"] == 0 - elif self.CP.carFingerprint == CAR.LEAF_IC: + elif self.CP.carFingerprint == CAR.NISSAN_LEAF_IC: ret.seatbeltUnlatched = cp.vl["CANCEL_MSG"]["CANCEL_SEATBELT"] == 1 ret.cruiseState.available = bool(cp.vl["CRUISE_THROTTLE"]["CRUISE_AVAILABLE"]) - elif self.CP.carFingerprint == CAR.ALTIMA: + elif self.CP.carFingerprint == CAR.NISSAN_ALTIMA: ret.seatbeltUnlatched = cp.vl["HUD"]["SEATBELT_DRIVER_LATCHED"] == 0 ret.cruiseState.available = bool(cp_adas.vl["PRO_PILOT"]["CRUISE_ON"]) - if self.CP.carFingerprint == CAR.ALTIMA: + if self.CP.carFingerprint == CAR.NISSAN_ALTIMA: speed = cp.vl["PROPILOT_HUD"]["SET_SPEED"] else: speed = cp_adas.vl["PROPILOT_HUD"]["SET_SPEED"] if speed != 255: - if self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + if self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): conversion = CV.MPH_TO_MS if cp.vl["HUD_SETTINGS"]["SPEED_MPH"] else CV.KPH_TO_MS else: conversion = CV.MPH_TO_MS if cp.vl["HUD"]["SPEED_MPH"] else CV.KPH_TO_MS ret.cruiseState.speed = speed * conversion ret.cruiseState.speedCluster = (speed - 1) * conversion # Speed on HUD is always 1 lower than actually sent on can bus - if self.CP.carFingerprint == CAR.ALTIMA: + if self.CP.carFingerprint == CAR.NISSAN_ALTIMA: ret.steeringTorque = cp_cam.vl["STEER_TORQUE_SENSOR"]["STEER_TORQUE_DRIVER"] else: ret.steeringTorque = cp.vl["STEER_TORQUE_SENSOR"]["STEER_TORQUE_DRIVER"] @@ -107,17 +107,17 @@ class CarState(CarStateBase): can_gear = int(cp.vl["GEARBOX"]["GEAR_SHIFTER"]) ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(can_gear, None)) - if self.CP.carFingerprint == CAR.ALTIMA: + if self.CP.carFingerprint == CAR.NISSAN_ALTIMA: self.lkas_enabled = bool(cp.vl["LKAS_SETTINGS"]["LKAS_ENABLED"]) else: self.lkas_enabled = bool(cp_adas.vl["LKAS_SETTINGS"]["LKAS_ENABLED"]) self.cruise_throttle_msg = copy.copy(cp.vl["CRUISE_THROTTLE"]) - if self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + if self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): self.cancel_msg = copy.copy(cp.vl["CANCEL_MSG"]) - if self.CP.carFingerprint != CAR.ALTIMA: + if self.CP.carFingerprint != CAR.NISSAN_ALTIMA: self.lkas_hud_msg = copy.copy(cp_adas.vl["PROPILOT_HUD"]) self.lkas_hud_info_msg = copy.copy(cp_adas.vl["PROPILOT_HUD_INFO_MSG"]) @@ -136,14 +136,14 @@ class CarState(CarStateBase): ("LIGHTS", 10), ] - if CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA): + if CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL, CAR.NISSAN_ALTIMA): messages += [ ("GAS_PEDAL", 100), ("CRUISE_THROTTLE", 50), ("HUD", 25), ] - elif CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + elif CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): messages += [ ("BRAKE_PEDAL", 100), ("CRUISE_THROTTLE", 50), @@ -152,7 +152,7 @@ class CarState(CarStateBase): ("SEATBELT", 10), ] - if CP.carFingerprint == CAR.ALTIMA: + if CP.carFingerprint == CAR.NISSAN_ALTIMA: messages += [ ("CRUISE_STATE", 10), ("LKAS_SETTINGS", 10), @@ -168,7 +168,7 @@ class CarState(CarStateBase): def get_adas_can_parser(CP): # this function generates lists for signal, messages and initial values - if CP.carFingerprint == CAR.ALTIMA: + if CP.carFingerprint == CAR.NISSAN_ALTIMA: messages = [ ("LKAS", 100), ("PRO_PILOT", 100), @@ -188,9 +188,9 @@ class CarState(CarStateBase): def get_cam_can_parser(CP): messages = [] - if CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL): + if CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL): messages.append(("PRO_PILOT", 100)) - elif CP.carFingerprint == CAR.ALTIMA: + elif CP.carFingerprint == CAR.NISSAN_ALTIMA: messages.append(("STEER_TORQUE_SENSOR", 100)) return CANParser(DBC[CP.carFingerprint]["pt"], messages, 0) diff --git a/selfdrive/car/nissan/fingerprints.py b/selfdrive/car/nissan/fingerprints.py index 19267ded46..743feeace9 100644 --- a/selfdrive/car/nissan/fingerprints.py +++ b/selfdrive/car/nissan/fingerprints.py @@ -5,31 +5,31 @@ from openpilot.selfdrive.car.nissan.values import CAR Ecu = car.CarParams.Ecu FINGERPRINTS = { - CAR.XTRAIL: [{ + CAR.NISSAN_XTRAIL: [{ 2: 5, 42: 6, 346: 6, 347: 5, 348: 8, 349: 7, 361: 8, 386: 8, 389: 8, 397: 8, 398: 8, 403: 8, 520: 2, 523: 6, 548: 8, 645: 8, 658: 8, 665: 8, 666: 8, 674: 2, 682: 8, 683: 8, 689: 8, 723: 8, 758: 3, 768: 2, 783: 3, 851: 8, 855: 8, 1041: 8, 1055: 2, 1104: 4, 1105: 6, 1107: 4, 1108: 8, 1111: 4, 1227: 8, 1228: 8, 1247: 4, 1266: 8, 1273: 7, 1342: 1, 1376: 6, 1401: 8, 1474: 2, 1497: 3, 1821: 8, 1823: 8, 1837: 8, 2015: 8, 2016: 8, 2024: 8 }, { 2: 5, 42: 6, 346: 6, 347: 5, 348: 8, 349: 7, 361: 8, 386: 8, 389: 8, 397: 8, 398: 8, 403: 8, 520: 2, 523: 6, 527: 1, 548: 8, 637: 4, 645: 8, 658: 8, 665: 8, 666: 8, 674: 2, 682: 8, 683: 8, 689: 8, 723: 8, 758: 3, 768: 6, 783: 3, 851: 8, 855: 8, 1041: 8, 1055: 2, 1104: 4, 1105: 6, 1107: 4, 1108: 8, 1111: 4, 1227: 8, 1228: 8, 1247: 4, 1266: 8, 1273: 7, 1342: 1, 1376: 6, 1401: 8, 1474: 8, 1497: 3, 1534: 6, 1792: 8, 1821: 8, 1823: 8, 1837: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 2015: 8, 2016: 8, 2024: 8 }], - CAR.LEAF: [{ + CAR.NISSAN_LEAF: [{ 2: 5, 42: 6, 264: 3, 361: 8, 372: 8, 384: 8, 389: 8, 403: 8, 459: 7, 460: 4, 470: 8, 520: 1, 569: 8, 581: 8, 634: 7, 640: 8, 644: 8, 645: 8, 646: 5, 658: 8, 682: 8, 683: 8, 689: 8, 724: 6, 758: 3, 761: 2, 783: 3, 852: 8, 853: 8, 856: 8, 861: 8, 944: 1, 976: 6, 1008: 7, 1011: 7, 1057: 3, 1227: 8, 1228: 8, 1261: 5, 1342: 1, 1354: 8, 1361: 8, 1459: 8, 1477: 8, 1497: 3, 1549: 8, 1573: 6, 1821: 8, 1837: 8, 1856: 8, 1859: 8, 1861: 8, 1864: 8, 1874: 8, 1888: 8, 1891: 8, 1893: 8, 1906: 8, 1947: 8, 1949: 8, 1979: 8, 1981: 8, 2016: 8, 2017: 8, 2021: 8, 643: 5, 1792: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 1988: 8, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2015: 8 }, { 2: 5, 42: 8, 264: 3, 361: 8, 372: 8, 384: 8, 389: 8, 403: 8, 459: 7, 460: 4, 470: 8, 520: 1, 569: 8, 581: 8, 634: 7, 640: 8, 643: 5, 644: 8, 645: 8, 646: 5, 658: 8, 682: 8, 683: 8, 689: 8, 724: 6, 758: 3, 761: 2, 772: 8, 773: 6, 774: 7, 775: 8, 776: 6, 777: 7, 778: 6, 783: 3, 852: 8, 853: 8, 856: 8, 861: 8, 943: 8, 944: 1, 976: 6, 1008: 7, 1009: 8, 1010: 8, 1011: 7, 1012: 8, 1013: 8, 1019: 8, 1020: 8, 1021: 8, 1022: 8, 1057: 3, 1227: 8, 1228: 8, 1261: 5, 1342: 1, 1354: 8, 1361: 8, 1402: 8, 1459: 8, 1477: 8, 1497: 3, 1549: 8, 1573: 6, 1821: 8, 1837: 8 }], - CAR.LEAF_IC: [{ + CAR.NISSAN_LEAF_IC: [{ 2: 5, 42: 6, 264: 3, 282: 8, 361: 8, 372: 8, 384: 8, 389: 8, 403: 8, 459: 7, 460: 4, 470: 8, 520: 1, 569: 8, 581: 8, 634: 7, 640: 8, 643: 5, 644: 8, 645: 8, 646: 5, 658: 8, 682: 8, 683: 8, 689: 8, 756: 5, 758: 3, 761: 2, 783: 3, 830: 2, 852: 8, 853: 8, 856: 8, 861: 8, 943: 8, 944: 1, 1001: 6, 1057: 3, 1227: 8, 1228: 8, 1229: 8, 1342: 1, 1354: 8, 1361: 8, 1459: 8, 1477: 8, 1497: 3, 1514: 6, 1549: 8, 1573: 6, 1792: 8, 1821: 8, 1822: 8, 1837: 8, 1838: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 1988: 8, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2015: 8, 2016: 8, 2017: 8 }], - CAR.ROGUE: [{ + CAR.NISSAN_ROGUE: [{ 2: 5, 42: 6, 346: 6, 347: 5, 348: 8, 349: 7, 361: 8, 386: 8, 389: 8, 397: 8, 398: 8, 403: 8, 520: 2, 523: 6, 548: 8, 634: 7, 643: 5, 645: 8, 658: 8, 665: 8, 666: 8, 674: 2, 682: 8, 683: 8, 689: 8, 723: 8, 758: 3, 772: 8, 773: 6, 774: 7, 775: 8, 776: 6, 777: 7, 778: 6, 783: 3, 851: 8, 855: 8, 1041: 8, 1042: 8, 1055: 2, 1104: 4, 1105: 6, 1107: 4, 1108: 8, 1110: 7, 1111: 7, 1227: 8, 1228: 8, 1247: 4, 1266: 8, 1273: 7, 1342: 1, 1376: 6, 1401: 8, 1474: 2, 1497: 3, 1534: 7, 1792: 8, 1821: 8, 1823: 8, 1837: 8, 1839: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 1988: 8, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2015: 8, 2016: 8, 2017: 8, 2024: 8, 2025: 8 }], - CAR.ALTIMA: [{ + CAR.NISSAN_ALTIMA: [{ 2: 5, 42: 6, 346: 6, 347: 5, 348: 8, 349: 7, 361: 8, 386: 8, 389: 8, 397: 8, 398: 8, 403: 8, 438: 8, 451: 8, 517: 8, 520: 2, 522: 8, 523: 6, 539: 8, 541: 7, 542: 8, 543: 8, 544: 8, 545: 8, 546: 8, 547: 8, 548: 8, 570: 8, 576: 8, 577: 8, 582: 8, 583: 8, 584: 8, 586: 8, 587: 8, 588: 8, 589: 8, 590: 8, 591: 8, 592: 8, 600: 8, 601: 8, 610: 8, 611: 8, 612: 8, 614: 8, 615: 8, 616: 8, 617: 8, 622: 8, 623: 8, 634: 7, 638: 8, 645: 8, 648: 5, 654: 6, 658: 8, 659: 8, 660: 8, 661: 8, 665: 8, 666: 8, 674: 2, 675: 8, 676: 8, 682: 8, 683: 8, 684: 8, 685: 8, 686: 8, 687: 8, 689: 8, 690: 8, 703: 8, 708: 7, 709: 7, 711: 7, 712: 7, 713: 7, 714: 8, 715: 8, 716: 8, 717: 7, 718: 7, 719: 7, 720: 7, 723: 8, 726: 7, 727: 7, 728: 7, 735: 8, 746: 8, 748: 6, 749: 6, 750: 8, 758: 3, 772: 8, 773: 6, 774: 7, 775: 8, 776: 6, 777: 7, 778: 6, 779: 7, 781: 7, 782: 7, 783: 3, 851: 8, 855: 5, 1001: 6, 1041: 8, 1042: 8, 1055: 3, 1100: 7, 1104: 4, 1105: 6, 1107: 4, 1108: 8, 1110: 7, 1111: 7, 1144: 7, 1145: 7, 1227: 8, 1228: 8, 1229: 8, 1232: 8, 1247: 4, 1258: 8, 1259: 8, 1266: 8, 1273: 7, 1306: 1, 1314: 8, 1323: 8, 1324: 8, 1342: 1, 1376: 8, 1401: 8, 1454: 8, 1497: 3, 1514: 6, 1526: 8, 1527: 5, 1792: 8, 1821: 8, 1823: 8, 1837: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 1988: 8, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2015: 8, 2016: 8, 2017: 8, 2024: 8, 2025: 8 }], } FW_VERSIONS = { - CAR.ALTIMA: { + CAR.NISSAN_ALTIMA: { (Ecu.fwdCamera, 0x707, None): [ b'284N86CA1D', ], @@ -43,7 +43,7 @@ FW_VERSIONS = { b'284U29HE0A', ], }, - CAR.LEAF: { + CAR.NISSAN_LEAF: { (Ecu.abs, 0x740, None): [ b'476605SA1C', b'476605SA7D', @@ -72,7 +72,7 @@ FW_VERSIONS = { b'284U26WK0C', ], }, - CAR.LEAF_IC: { + CAR.NISSAN_LEAF_IC: { (Ecu.fwdCamera, 0x707, None): [ b'5SH1BDB\x04\x18\x00\x00\x00\x00\x00_-?\x04\x91\xf2\x00\x00\x00\x80', b'5SH4BDB\x04\x18\x00\x00\x00\x00\x00_-?\x04\x91\xf2\x00\x00\x00\x80', @@ -94,7 +94,7 @@ FW_VERSIONS = { b'284U25SK2D', ], }, - CAR.XTRAIL: { + CAR.NISSAN_XTRAIL: { (Ecu.fwdCamera, 0x707, None): [ b'284N86FR2A', ], diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 170f7de287..2e9a990610 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -22,7 +22,7 @@ class CarInterface(CarInterfaceBase): ret.steerControlType = car.CarParams.SteerControlType.angle ret.radarUnavailable = True - if candidate == CAR.ALTIMA: + if candidate == CAR.NISSAN_ALTIMA: # Altima has EPS on C-CAN unlike the others that have it on V-CAN ret.safetyConfigs[0].safetyParam |= Panda.FLAG_NISSAN_ALT_EPS_BUS diff --git a/selfdrive/car/nissan/nissancan.py b/selfdrive/car/nissan/nissancan.py index 49dcd6fe93..b9a1b4f843 100644 --- a/selfdrive/car/nissan/nissancan.py +++ b/selfdrive/car/nissan/nissancan.py @@ -39,7 +39,7 @@ def create_acc_cancel_cmd(packer, car_fingerprint, cruise_throttle_msg): "unsure2", "unsure3", ]} - can_bus = 1 if car_fingerprint == CAR.ALTIMA else 2 + can_bus = 1 if car_fingerprint == CAR.NISSAN_ALTIMA else 2 values["CANCEL_BUTTON"] = 1 values["NO_BUTTON_PRESSED"] = 0 diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index 35503a9306..bdd2dec5f4 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -37,23 +37,23 @@ class NissanPlaformConfig(PlatformConfig): class CAR(Platforms): - XTRAIL = NissanPlaformConfig( + NISSAN_XTRAIL = NissanPlaformConfig( [NissanCarDocs("Nissan X-Trail 2017")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) - LEAF = NissanPlaformConfig( + NISSAN_LEAF = NissanPlaformConfig( [NissanCarDocs("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY")], NissanCarSpecs(mass=1610, wheelbase=2.705), dbc_dict('nissan_leaf_2018_generated', None), ) # Leaf with ADAS ECU found behind instrument cluster instead of glovebox # Currently the only known difference between them is the inverted seatbelt signal. - LEAF_IC = LEAF.override(car_docs=[]) - ROGUE = NissanPlaformConfig( + NISSAN_LEAF_IC = NISSAN_LEAF.override(car_docs=[]) + NISSAN_ROGUE = NissanPlaformConfig( [NissanCarDocs("Nissan Rogue 2018-20")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) - ALTIMA = NissanPlaformConfig( + NISSAN_ALTIMA = NissanPlaformConfig( [NissanCarDocs("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b]))], NissanCarSpecs(mass=1492, wheelbase=2.824) ) diff --git a/selfdrive/car/subaru/fingerprints.py b/selfdrive/car/subaru/fingerprints.py index f0ab307274..c9b0b859f4 100644 --- a/selfdrive/car/subaru/fingerprints.py +++ b/selfdrive/car/subaru/fingerprints.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car.subaru.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.ASCENT: { + CAR.SUBARU_ASCENT: { (Ecu.abs, 0x7b0, None): [ b'\xa5 \x19\x02\x00', b'\xa5 !\x02\x00', @@ -33,7 +33,7 @@ FW_VERSIONS = { b'\x01\xfe\xfa\x00\x00', ], }, - CAR.ASCENT_2023: { + CAR.SUBARU_ASCENT_2023: { (Ecu.abs, 0x7b0, None): [ b'\xa5 #\x03\x00', ], @@ -50,7 +50,7 @@ FW_VERSIONS = { b'\x04\xfe\xf3\x00\x00', ], }, - CAR.LEGACY: { + CAR.SUBARU_LEGACY: { (Ecu.abs, 0x7b0, None): [ b'\xa1 \x02\x01', b'\xa1 \x02\x02', @@ -78,7 +78,7 @@ FW_VERSIONS = { b'\xa7\xfe\xc4@\x00', ], }, - CAR.IMPREZA: { + CAR.SUBARU_IMPREZA: { (Ecu.abs, 0x7b0, None): [ b'z\x84\x19\x90\x00', b'z\x94\x08\x90\x00', @@ -158,7 +158,7 @@ FW_VERSIONS = { b'\xe5\xf5B\x00\x00', ], }, - CAR.IMPREZA_2020: { + CAR.SUBARU_IMPREZA_2020: { (Ecu.abs, 0x7b0, None): [ b'\xa2 \x193\x00', b'\xa2 \x194\x00', @@ -212,7 +212,7 @@ FW_VERSIONS = { b'\xe9\xf6F0\x00', ], }, - CAR.CROSSTREK_HYBRID: { + CAR.SUBARU_CROSSTREK_HYBRID: { (Ecu.abs, 0x7b0, None): [ b'\xa2 \x19e\x01', b'\xa2 !e\x01', @@ -230,7 +230,7 @@ FW_VERSIONS = { b'\xf4!`0\x07', ], }, - CAR.FORESTER: { + CAR.SUBARU_FORESTER: { (Ecu.abs, 0x7b0, None): [ b'\xa3 \x18\x14\x00', b'\xa3 \x18&\x00', @@ -270,7 +270,7 @@ FW_VERSIONS = { b'\x1a\xf6b`\x00', ], }, - CAR.FORESTER_HYBRID: { + CAR.SUBARU_FORESTER_HYBRID: { (Ecu.abs, 0x7b0, None): [ b'\xa3 \x19T\x00', ], @@ -287,7 +287,7 @@ FW_VERSIONS = { b'\x1b\xa7@a\x00', ], }, - CAR.FORESTER_PREGLOBAL: { + CAR.SUBARU_FORESTER_PREGLOBAL: { (Ecu.abs, 0x7b0, None): [ b'm\x97\x14@', b'}\x97\x14@', @@ -318,7 +318,7 @@ FW_VERSIONS = { b'\xdc\xf2`\x81\x00', ], }, - CAR.LEGACY_PREGLOBAL: { + CAR.SUBARU_LEGACY_PREGLOBAL: { (Ecu.abs, 0x7b0, None): [ b'[\x97D\x00', b'[\xba\xc4\x03', @@ -351,7 +351,7 @@ FW_VERSIONS = { b'\xbf\xfb\xc0\x80\x00', ], }, - CAR.OUTBACK_PREGLOBAL: { + CAR.SUBARU_OUTBACK_PREGLOBAL: { (Ecu.abs, 0x7b0, None): [ b'[\xba\xac\x03', b'[\xf7\xac\x00', @@ -404,7 +404,7 @@ FW_VERSIONS = { b'\xbf\xfb\xe0b\x00', ], }, - CAR.OUTBACK_PREGLOBAL_2018: { + CAR.SUBARU_OUTBACK_PREGLOBAL_2018: { (Ecu.abs, 0x7b0, None): [ b'\x8b\x97\xac\x00', b'\x8b\x97\xbc\x00', @@ -447,7 +447,7 @@ FW_VERSIONS = { b'\xbc\xfb\xe0\x80\x00', ], }, - CAR.OUTBACK: { + CAR.SUBARU_OUTBACK: { (Ecu.abs, 0x7b0, None): [ b'\xa1 \x06\x00', b'\xa1 \x06\x01', @@ -496,7 +496,7 @@ FW_VERSIONS = { b'\xa7\xfe\xf4@\x00', ], }, - CAR.FORESTER_2022: { + CAR.SUBARU_FORESTER_2022: { (Ecu.abs, 0x7b0, None): [ b'\xa3 !v\x00', b'\xa3 !x\x00', @@ -529,7 +529,7 @@ FW_VERSIONS = { b'\x1e\xf6D0\x00', ], }, - CAR.OUTBACK_2023: { + CAR.SUBARU_OUTBACK_2023: { (Ecu.abs, 0x7b0, None): [ b'\xa1 #\x14\x00', b'\xa1 #\x17\x00', diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 340090ffa9..1aa4bd95ea 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -40,45 +40,45 @@ class CarInterface(CarInterfaceBase): else: CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - if candidate in (CAR.ASCENT, CAR.ASCENT_2023): + if candidate in (CAR.SUBARU_ASCENT, CAR.SUBARU_ASCENT_2023): ret.steerActuatorDelay = 0.3 # end-to-end angle controller ret.lateralTuning.init('pid') ret.lateralTuning.pid.kf = 0.00003 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 20.], [0., 20.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.0025, 0.1], [0.00025, 0.01]] - elif candidate == CAR.IMPREZA: + elif candidate == CAR.SUBARU_IMPREZA: ret.steerActuatorDelay = 0.4 # end-to-end angle controller ret.lateralTuning.init('pid') ret.lateralTuning.pid.kf = 0.00005 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 20.], [0., 20.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2, 0.3], [0.02, 0.03]] - elif candidate == CAR.IMPREZA_2020: + elif candidate == CAR.SUBARU_IMPREZA_2020: ret.lateralTuning.init('pid') 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]] - elif candidate == CAR.CROSSTREK_HYBRID: + elif candidate == CAR.SUBARU_CROSSTREK_HYBRID: ret.steerActuatorDelay = 0.1 - elif candidate in (CAR.FORESTER, CAR.FORESTER_2022, CAR.FORESTER_HYBRID): + elif candidate in (CAR.SUBARU_FORESTER, CAR.SUBARU_FORESTER_2022, CAR.SUBARU_FORESTER_HYBRID): ret.lateralTuning.init('pid') 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]] - elif candidate in (CAR.OUTBACK, CAR.LEGACY, CAR.OUTBACK_2023): + elif candidate in (CAR.SUBARU_OUTBACK, CAR.SUBARU_LEGACY, CAR.SUBARU_OUTBACK_2023): ret.steerActuatorDelay = 0.1 - elif candidate in (CAR.FORESTER_PREGLOBAL, CAR.OUTBACK_PREGLOBAL_2018): + elif candidate in (CAR.SUBARU_FORESTER_PREGLOBAL, CAR.SUBARU_OUTBACK_PREGLOBAL_2018): ret.safetyConfigs[0].safetyParam = Panda.FLAG_SUBARU_PREGLOBAL_REVERSED_DRIVER_TORQUE # Outback 2018-2019 and Forester have reversed driver torque signal - elif candidate == CAR.LEGACY_PREGLOBAL: + elif candidate == CAR.SUBARU_LEGACY_PREGLOBAL: ret.steerActuatorDelay = 0.15 - elif candidate == CAR.OUTBACK_PREGLOBAL: + elif candidate == CAR.SUBARU_OUTBACK_PREGLOBAL: pass else: raise ValueError(f"unknown car: {candidate}") diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 80263c1e94..0542635370 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -23,7 +23,7 @@ class CarControllerParams: self.STEER_MAX = 1000 self.STEER_DELTA_UP = 40 self.STEER_DELTA_DOWN = 40 - elif CP.carFingerprint == CAR.IMPREZA_2020: + elif CP.carFingerprint == CAR.SUBARU_IMPREZA_2020: self.STEER_MAX = 1439 else: self.STEER_MAX = 2047 @@ -120,19 +120,19 @@ class SubaruGen2PlatformConfig(SubaruPlatformConfig): class CAR(Platforms): # Global platform - ASCENT = SubaruPlatformConfig( + SUBARU_ASCENT = SubaruPlatformConfig( [SubaruCarDocs("Subaru Ascent 2019-21", "All")], CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), ) - OUTBACK = SubaruGen2PlatformConfig( + SUBARU_OUTBACK = SubaruGen2PlatformConfig( [SubaruCarDocs("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), ) - LEGACY = SubaruGen2PlatformConfig( + SUBARU_LEGACY = SubaruGen2PlatformConfig( [SubaruCarDocs("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], - OUTBACK.specs, + SUBARU_OUTBACK.specs, ) - IMPREZA = SubaruPlatformConfig( + SUBARU_IMPREZA = SubaruPlatformConfig( [ SubaruCarDocs("Subaru Impreza 2017-19"), SubaruCarDocs("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), @@ -140,7 +140,7 @@ class CAR(Platforms): ], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=15), ) - IMPREZA_2020 = SubaruPlatformConfig( + SUBARU_IMPREZA_2020 = SubaruPlatformConfig( [ SubaruCarDocs("Subaru Impreza 2020-22"), SubaruCarDocs("Subaru Crosstrek 2020-23"), @@ -150,60 +150,60 @@ class CAR(Platforms): flags=SubaruFlags.STEER_RATE_LIMITED, ) # TODO: is there an XV and Impreza too? - CROSSTREK_HYBRID = SubaruPlatformConfig( + SUBARU_CROSSTREK_HYBRID = SubaruPlatformConfig( [SubaruCarDocs("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b]))], CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.HYBRID, ) - FORESTER = SubaruPlatformConfig( + SUBARU_FORESTER = SubaruPlatformConfig( [SubaruCarDocs("Subaru Forester 2019-21", "All")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), flags=SubaruFlags.STEER_RATE_LIMITED, ) - FORESTER_HYBRID = SubaruPlatformConfig( + SUBARU_FORESTER_HYBRID = SubaruPlatformConfig( [SubaruCarDocs("Subaru Forester Hybrid 2020")], - FORESTER.specs, + SUBARU_FORESTER.specs, flags=SubaruFlags.HYBRID, ) # Pre-global - FORESTER_PREGLOBAL = SubaruPlatformConfig( + SUBARU_FORESTER_PREGLOBAL = SubaruPlatformConfig( [SubaruCarDocs("Subaru Forester 2017-18")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), dbc_dict('subaru_forester_2017_generated', None), flags=SubaruFlags.PREGLOBAL, ) - LEGACY_PREGLOBAL = SubaruPlatformConfig( + SUBARU_LEGACY_PREGLOBAL = SubaruPlatformConfig( [SubaruCarDocs("Subaru Legacy 2015-18")], CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), dbc_dict('subaru_outback_2015_generated', None), flags=SubaruFlags.PREGLOBAL, ) - OUTBACK_PREGLOBAL = SubaruPlatformConfig( + SUBARU_OUTBACK_PREGLOBAL = SubaruPlatformConfig( [SubaruCarDocs("Subaru Outback 2015-17")], - FORESTER_PREGLOBAL.specs, + SUBARU_FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2015_generated', None), flags=SubaruFlags.PREGLOBAL, ) - OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( + SUBARU_OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( [SubaruCarDocs("Subaru Outback 2018-19")], - FORESTER_PREGLOBAL.specs, + SUBARU_FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2019_generated', None), flags=SubaruFlags.PREGLOBAL, ) # Angle LKAS - FORESTER_2022 = SubaruPlatformConfig( + SUBARU_FORESTER_2022 = SubaruPlatformConfig( [SubaruCarDocs("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c]))], - FORESTER.specs, + SUBARU_FORESTER.specs, flags=SubaruFlags.LKAS_ANGLE, ) - OUTBACK_2023 = SubaruGen2PlatformConfig( + SUBARU_OUTBACK_2023 = SubaruGen2PlatformConfig( [SubaruCarDocs("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], - OUTBACK.specs, + SUBARU_OUTBACK.specs, flags=SubaruFlags.LKAS_ANGLE, ) - ASCENT_2023 = SubaruGen2PlatformConfig( + SUBARU_ASCENT_2023 = SubaruGen2PlatformConfig( [SubaruCarDocs("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], - ASCENT.specs, + SUBARU_ASCENT.specs, flags=SubaruFlags.LKAS_ANGLE, ) diff --git a/selfdrive/car/tesla/carstate.py b/selfdrive/car/tesla/carstate.py index bee652ff30..645ea46014 100644 --- a/selfdrive/car/tesla/carstate.py +++ b/selfdrive/car/tesla/carstate.py @@ -37,7 +37,7 @@ class CarState(CarStateBase): ret.brakePressed = bool(cp.vl["BrakeMessage"]["driverBrakeStatus"] != 1) # Steering wheel - epas_status = cp_cam.vl["EPAS3P_sysStatus"] if self.CP.carFingerprint == CAR.MODELS_RAVEN else cp.vl["EPAS_sysStatus"] + epas_status = cp_cam.vl["EPAS3P_sysStatus"] if self.CP.carFingerprint == CAR.TESLA_MODELS_RAVEN else cp.vl["EPAS_sysStatus"] self.hands_on_level = epas_status["EPAS_handsOnLevel"] self.steer_warning = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacErrorCode"].get(int(epas_status["EPAS_eacErrorCode"]), None) @@ -87,7 +87,7 @@ class CarState(CarStateBase): ret.rightBlinker = (cp.vl["GTW_carState"]["BC_indicatorRStatus"] == 1) # Seatbelt - if self.CP.carFingerprint == CAR.MODELS_RAVEN: + if self.CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: ret.seatbeltUnlatched = (cp.vl["DriverSeat"]["buckleStatus"] != 1) else: ret.seatbeltUnlatched = (cp.vl["SDM1"]["SDM_bcklDrivStatus"] != 1) @@ -119,7 +119,7 @@ class CarState(CarStateBase): ("BrakeMessage", 50), ] - if CP.carFingerprint == CAR.MODELS_RAVEN: + if CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: messages.append(("DriverSeat", 20)) else: messages.append(("SDM1", 10)) @@ -133,7 +133,7 @@ class CarState(CarStateBase): ("DAS_control", 40), ] - if CP.carFingerprint == CAR.MODELS_RAVEN: + if CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: messages.append(("EPAS3P_sysStatus", 100)) return CANParser(DBC[CP.carFingerprint]['chassis'], messages, CANBUS.autopilot_chassis) diff --git a/selfdrive/car/tesla/fingerprints.py b/selfdrive/car/tesla/fingerprints.py index 9b6f3865be..5a87986e45 100644 --- a/selfdrive/car/tesla/fingerprints.py +++ b/selfdrive/car/tesla/fingerprints.py @@ -5,13 +5,13 @@ from openpilot.selfdrive.car.tesla.values import CAR Ecu = car.CarParams.Ecu FINGERPRINTS = { - CAR.AP1_MODELS: [{ + CAR.TESLA_AP1_MODELS: [{ 1: 8, 3: 8, 14: 8, 21: 4, 69: 8, 109: 4, 257: 3, 264: 8, 267: 5, 277: 6, 280: 6, 283: 5, 293: 4, 296: 4, 309: 5, 325: 8, 328: 5, 336: 8, 341: 8, 360: 7, 373: 8, 389: 8, 415: 8, 513: 5, 516: 8, 520: 4, 522: 8, 524: 8, 526: 8, 532: 3, 536: 8, 537: 3, 542: 8, 551: 5, 552: 2, 556: 8, 558: 8, 568: 8, 569: 8, 574: 8, 577: 8, 582: 5, 584: 4, 585: 8, 590: 8, 606: 8, 622: 8, 627: 6, 638: 8, 641: 8, 643: 8, 660: 5, 693: 8, 696: 8, 697: 8, 712: 8, 728: 8, 744: 8, 760: 8, 772: 8, 775: 8, 776: 8, 777: 8, 778: 8, 782: 8, 788: 8, 791: 8, 792: 8, 796: 2, 797: 8, 798: 6, 799: 8, 804: 8, 805: 8, 807: 8, 808: 1, 809: 8, 812: 8, 813: 8, 814: 5, 815: 8, 820: 8, 823: 8, 824: 8, 829: 8, 830: 5, 836: 8, 840: 8, 841: 8, 845: 8, 846: 5, 852: 8, 856: 4, 857: 6, 861: 8, 862: 5, 872: 8, 873: 8, 877: 8, 878: 8, 879: 8, 880: 8, 884: 8, 888: 8, 889: 8, 893: 8, 896: 8, 901: 6, 904: 3, 905: 8, 908: 2, 909: 8, 920: 8, 921: 8, 925: 4, 936: 8, 937: 8, 941: 8, 949: 8, 952: 8, 953: 6, 957: 8, 968: 8, 973: 8, 984: 8, 987: 8, 989: 8, 990: 8, 1000: 8, 1001: 8, 1006: 8, 1016: 8, 1026: 8, 1028: 8, 1029: 8, 1030: 8, 1032: 1, 1033: 1, 1034: 8, 1048: 1, 1064: 8, 1070: 8, 1080: 8, 1160: 4, 1281: 8, 1329: 8, 1332: 8, 1335: 8, 1337: 8, 1368: 8, 1412: 8, 1436: 8, 1465: 8, 1476: 8, 1497: 8, 1524: 8, 1527: 8, 1601: 8, 1605: 8, 1611: 8, 1614: 8, 1617: 8, 1621: 8, 1627: 8, 1630: 8, 1800: 4, 1804: 8, 1812: 8, 1815: 8, 1816: 8, 1828: 8, 1831: 8, 1832: 8, 1840: 8, 1848: 8, 1864: 8, 1880: 8, 1892: 8, 1896: 8, 1912: 8, 1960: 8, 1992: 8, 2008: 3, 2043: 5, 2045: 4 }], } FW_VERSIONS = { - CAR.AP2_MODELS: { + CAR.TESLA_AP2_MODELS: { (Ecu.adas, 0x649, None): [ b'\x01\x00\x8b\x07\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11', ], @@ -25,7 +25,7 @@ FW_VERSIONS = { b'\x10#\x01', ], }, - CAR.MODELS_RAVEN: { + CAR.TESLA_MODELS_RAVEN: { (Ecu.electricBrakeBooster, 0x64d, None): [ b'1037123-00-A', ], diff --git a/selfdrive/car/tesla/interface.py b/selfdrive/car/tesla/interface.py index 9577578f5d..e039859263 100755 --- a/selfdrive/car/tesla/interface.py +++ b/selfdrive/car/tesla/interface.py @@ -28,7 +28,7 @@ class CarInterface(CarInterfaceBase): # Check if we have messages on an auxiliary panda, and that 0x2bf (DAS_control) is present on the AP powertrain bus # If so, we assume that it is connected to the longitudinal harness. - flags = (Panda.FLAG_TESLA_RAVEN if candidate == CAR.MODELS_RAVEN else 0) + flags = (Panda.FLAG_TESLA_RAVEN if candidate == CAR.TESLA_MODELS_RAVEN else 0) if (CANBUS.autopilot_powertrain in fingerprint.keys()) and (0x2bf in fingerprint[CANBUS.autopilot_powertrain].keys()): ret.openpilotLongitudinalControl = True flags |= Panda.FLAG_TESLA_LONG_CONTROL diff --git a/selfdrive/car/tesla/radar_interface.py b/selfdrive/car/tesla/radar_interface.py index 599ab31059..ae5077824b 100755 --- a/selfdrive/car/tesla/radar_interface.py +++ b/selfdrive/car/tesla/radar_interface.py @@ -10,7 +10,7 @@ class RadarInterface(RadarInterfaceBase): super().__init__(CP) self.CP = CP - if CP.carFingerprint == CAR.MODELS_RAVEN: + if CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: messages = [('RadarStatus', 16)] self.num_points = 40 self.trigger_msg = 1119 @@ -46,7 +46,7 @@ class RadarInterface(RadarInterfaceBase): if not self.rcp.can_valid: errors.append('canError') - if self.CP.carFingerprint == CAR.MODELS_RAVEN: + if self.CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: radar_status = self.rcp.vl['RadarStatus'] if radar_status['sensorBlocked'] or radar_status['shortTermUnavailable'] or radar_status['vehDynamicsError']: errors.append('fault') diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index 84dd8c51a3..0f9cd00f63 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -10,19 +10,19 @@ Ecu = car.CarParams.Ecu Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values']) class CAR(Platforms): - AP1_MODELS = PlatformConfig( + TESLA_AP1_MODELS = PlatformConfig( [CarDocs("Tesla AP1 Model S", "All")], CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0), dbc_dict('tesla_powertrain', 'tesla_radar_bosch_generated', chassis_dbc='tesla_can') ) - AP2_MODELS = PlatformConfig( + TESLA_AP2_MODELS = PlatformConfig( [CarDocs("Tesla AP2 Model S", "All")], - AP1_MODELS.specs, - AP1_MODELS.dbc_dict + TESLA_AP1_MODELS.specs, + TESLA_AP1_MODELS.dbc_dict ) - MODELS_RAVEN = PlatformConfig( + TESLA_MODELS_RAVEN = PlatformConfig( [CarDocs("Tesla Model S Raven", "All")], - AP1_MODELS.specs, + TESLA_AP1_MODELS.specs, dbc_dict('tesla_powertrain', 'tesla_radar_continental_generated', chassis_dbc='tesla_can') ) diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 9b2cbeeb52..036f39c1f3 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -17,14 +17,14 @@ from openpilot.selfdrive.car.body.values import CAR as COMMA # TODO: add routes for these cars non_tested_cars = [ - FORD.F_150_MK14, + FORD.FORD_F_150_MK14, GM.CADILLAC_ATS, GM.HOLDEN_ASTRA, - GM.MALIBU, + GM.CHEVROLET_MALIBU, HYUNDAI.GENESIS_G90, - HONDA.ODYSSEY_CHN, - VOLKSWAGEN.CRAFTER_MK2, # need a route from an ACC-equipped Crafter - SUBARU.FORESTER_HYBRID, + HONDA.HONDA_ODYSSEY_CHN, + VOLKSWAGEN.VOLKSWAGEN_CRAFTER_MK2, # need a route from an ACC-equipped Crafter + SUBARU.SUBARU_FORESTER_HYBRID, ] @@ -35,81 +35,81 @@ class CarTestRoute(NamedTuple): routes = [ - CarTestRoute("efdf9af95e71cd84|2022-05-13--19-03-31", COMMA.BODY), + CarTestRoute("efdf9af95e71cd84|2022-05-13--19-03-31", COMMA.COMMA_BODY), CarTestRoute("0c94aa1e1296d7c6|2021-05-05--19-48-37", CHRYSLER.JEEP_GRAND_CHEROKEE), CarTestRoute("91dfedae61d7bd75|2021-05-22--20-07-52", CHRYSLER.JEEP_GRAND_CHEROKEE_2019), - CarTestRoute("420a8e183f1aed48|2020-03-05--07-15-29", CHRYSLER.PACIFICA_2017_HYBRID), - CarTestRoute("43a685a66291579b|2021-05-27--19-47-29", CHRYSLER.PACIFICA_2018), - CarTestRoute("378472f830ee7395|2021-05-28--07-38-43", CHRYSLER.PACIFICA_2018_HYBRID), - CarTestRoute("8190c7275a24557b|2020-01-29--08-33-58", CHRYSLER.PACIFICA_2019_HYBRID), - CarTestRoute("3d84727705fecd04|2021-05-25--08-38-56", CHRYSLER.PACIFICA_2020), + CarTestRoute("420a8e183f1aed48|2020-03-05--07-15-29", CHRYSLER.CHRYSLER_PACIFICA_2017_HYBRID), + CarTestRoute("43a685a66291579b|2021-05-27--19-47-29", CHRYSLER.CHRYSLER_PACIFICA_2018), + CarTestRoute("378472f830ee7395|2021-05-28--07-38-43", CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID), + CarTestRoute("8190c7275a24557b|2020-01-29--08-33-58", CHRYSLER.CHRYSLER_PACIFICA_2019_HYBRID), + CarTestRoute("3d84727705fecd04|2021-05-25--08-38-56", CHRYSLER.CHRYSLER_PACIFICA_2020), CarTestRoute("221c253375af4ee9|2022-06-15--18-38-24", CHRYSLER.RAM_1500_5TH_GEN), CarTestRoute("8fb5eabf914632ae|2022-08-04--17-28-53", CHRYSLER.RAM_HD_5TH_GEN, segment=6), CarTestRoute("3379c85aeedc8285|2023-12-07--17-49-39", CHRYSLER.DODGE_DURANGO), - CarTestRoute("54827bf84c38b14f|2023-01-25--14-14-11", FORD.BRONCO_SPORT_MK1), - CarTestRoute("f8eaaccd2a90aef8|2023-05-04--15-10-09", FORD.ESCAPE_MK4), - CarTestRoute("62241b0c7fea4589|2022-09-01--15-32-49", FORD.EXPLORER_MK6), - CarTestRoute("e886087f430e7fe7|2023-06-16--23-06-36", FORD.FOCUS_MK4), - CarTestRoute("bd37e43731e5964b|2023-04-30--10-42-26", FORD.MAVERICK_MK1), - CarTestRoute("112e4d6e0cad05e1|2023-11-14--08-21-43", FORD.F_150_LIGHTNING_MK1), - CarTestRoute("83a4e056c7072678|2023-11-13--16-51-33", FORD.MUSTANG_MACH_E_MK1), + CarTestRoute("54827bf84c38b14f|2023-01-25--14-14-11", FORD.FORD_BRONCO_SPORT_MK1), + CarTestRoute("f8eaaccd2a90aef8|2023-05-04--15-10-09", FORD.FORD_ESCAPE_MK4), + CarTestRoute("62241b0c7fea4589|2022-09-01--15-32-49", FORD.FORD_EXPLORER_MK6), + CarTestRoute("e886087f430e7fe7|2023-06-16--23-06-36", FORD.FORD_FOCUS_MK4), + CarTestRoute("bd37e43731e5964b|2023-04-30--10-42-26", FORD.FORD_MAVERICK_MK1), + CarTestRoute("112e4d6e0cad05e1|2023-11-14--08-21-43", FORD.FORD_F_150_LIGHTNING_MK1), + CarTestRoute("83a4e056c7072678|2023-11-13--16-51-33", FORD.FORD_MUSTANG_MACH_E_MK1), #TestRoute("f1b4c567731f4a1b|2018-04-30--10-15-35", FORD.FUSION), - CarTestRoute("7cc2a8365b4dd8a9|2018-12-02--12-10-44", GM.ACADIA), + CarTestRoute("7cc2a8365b4dd8a9|2018-12-02--12-10-44", GM.GMC_ACADIA), CarTestRoute("aa20e335f61ba898|2019-02-05--16-59-04", GM.BUICK_REGAL), CarTestRoute("75a6bcb9b8b40373|2023-03-11--22-47-33", GM.BUICK_LACROSSE), - CarTestRoute("e746f59bc96fd789|2024-01-31--22-25-58", GM.EQUINOX), - CarTestRoute("ef8f2185104d862e|2023-02-09--18-37-13", GM.ESCALADE), - CarTestRoute("46460f0da08e621e|2021-10-26--07-21-46", GM.ESCALADE_ESV), - CarTestRoute("168f8b3be57f66ae|2023-09-12--21-44-42", GM.ESCALADE_ESV_2019), - CarTestRoute("c950e28c26b5b168|2018-05-30--22-03-41", GM.VOLT), - CarTestRoute("f08912a233c1584f|2022-08-11--18-02-41", GM.BOLT_EUV, segment=1), - CarTestRoute("555d4087cf86aa91|2022-12-02--12-15-07", GM.BOLT_EUV, segment=14), # Bolt EV - CarTestRoute("38aa7da107d5d252|2022-08-15--16-01-12", GM.SILVERADO), - CarTestRoute("5085c761395d1fe6|2023-04-07--18-20-06", GM.TRAILBLAZER), + CarTestRoute("e746f59bc96fd789|2024-01-31--22-25-58", GM.CHEVROLET_EQUINOX), + CarTestRoute("ef8f2185104d862e|2023-02-09--18-37-13", GM.CADILLAC_ESCALADE), + CarTestRoute("46460f0da08e621e|2021-10-26--07-21-46", GM.CADILLAC_ESCALADE_ESV), + CarTestRoute("168f8b3be57f66ae|2023-09-12--21-44-42", GM.CADILLAC_ESCALADE_ESV_2019), + CarTestRoute("c950e28c26b5b168|2018-05-30--22-03-41", GM.CHEVROLET_VOLT), + CarTestRoute("f08912a233c1584f|2022-08-11--18-02-41", GM.CHEVROLET_BOLT_EUV, segment=1), + CarTestRoute("555d4087cf86aa91|2022-12-02--12-15-07", GM.CHEVROLET_BOLT_EUV, segment=14), # Bolt EV + CarTestRoute("38aa7da107d5d252|2022-08-15--16-01-12", GM.CHEVROLET_SILVERADO), + CarTestRoute("5085c761395d1fe6|2023-04-07--18-20-06", GM.CHEVROLET_TRAILBLAZER), CarTestRoute("0e7a2ba168465df5|2020-10-18--14-14-22", HONDA.ACURA_RDX_3G), - CarTestRoute("a74b011b32b51b56|2020-07-26--17-09-36", HONDA.CIVIC), - CarTestRoute("a859a044a447c2b0|2020-03-03--18-42-45", HONDA.CRV_EU), - CarTestRoute("68aac44ad69f838e|2021-05-18--20-40-52", HONDA.CRV), - CarTestRoute("14fed2e5fa0aa1a5|2021-05-25--14-59-42", HONDA.CRV_HYBRID), - CarTestRoute("52f3e9ae60c0d886|2021-05-23--15-59-43", HONDA.FIT), - CarTestRoute("2c4292a5cd10536c|2021-08-19--21-32-15", HONDA.FREED), - CarTestRoute("03be5f2fd5c508d1|2020-04-19--18-44-15", HONDA.HRV), - CarTestRoute("320098ff6c5e4730|2023-04-13--17-47-46", HONDA.HRV_3G), + CarTestRoute("a74b011b32b51b56|2020-07-26--17-09-36", HONDA.HONDA_CIVIC), + CarTestRoute("a859a044a447c2b0|2020-03-03--18-42-45", HONDA.HONDA_CRV_EU), + CarTestRoute("68aac44ad69f838e|2021-05-18--20-40-52", HONDA.HONDA_CRV), + CarTestRoute("14fed2e5fa0aa1a5|2021-05-25--14-59-42", HONDA.HONDA_CRV_HYBRID), + CarTestRoute("52f3e9ae60c0d886|2021-05-23--15-59-43", HONDA.HONDA_FIT), + CarTestRoute("2c4292a5cd10536c|2021-08-19--21-32-15", HONDA.HONDA_FREED), + CarTestRoute("03be5f2fd5c508d1|2020-04-19--18-44-15", HONDA.HONDA_HRV), + CarTestRoute("320098ff6c5e4730|2023-04-13--17-47-46", HONDA.HONDA_HRV_3G), CarTestRoute("917b074700869333|2021-05-24--20-40-20", HONDA.ACURA_ILX), - CarTestRoute("08a3deb07573f157|2020-03-06--16-11-19", HONDA.ACCORD), # 1.5T - CarTestRoute("1da5847ac2488106|2021-05-24--19-31-50", HONDA.ACCORD), # 2.0T - CarTestRoute("085ac1d942c35910|2021-03-25--20-11-15", HONDA.ACCORD), # 2021 with new style HUD msgs - CarTestRoute("07585b0da3c88459|2021-05-26--18-52-04", HONDA.ACCORD), # hybrid - CarTestRoute("f29e2b57a55e7ad5|2021-03-24--20-52-38", HONDA.ACCORD), # hybrid, 2021 with new style HUD msgs - CarTestRoute("1ad763dd22ef1a0e|2020-02-29--18-37-03", HONDA.CRV_5G), - CarTestRoute("0a96f86fcfe35964|2020-02-05--07-25-51", HONDA.ODYSSEY), - CarTestRoute("d83f36766f8012a5|2020-02-05--18-42-21", HONDA.CIVIC_BOSCH_DIESEL), - CarTestRoute("f0890d16a07a236b|2021-05-25--17-27-22", HONDA.INSIGHT), - CarTestRoute("07d37d27996096b6|2020-03-04--21-57-27", HONDA.PILOT), - CarTestRoute("684e8f96bd491a0e|2021-11-03--11-08-42", HONDA.PILOT), # Passport - CarTestRoute("0a78dfbacc8504ef|2020-03-04--13-29-55", HONDA.CIVIC_BOSCH), + CarTestRoute("08a3deb07573f157|2020-03-06--16-11-19", HONDA.HONDA_ACCORD), # 1.5T + CarTestRoute("1da5847ac2488106|2021-05-24--19-31-50", HONDA.HONDA_ACCORD), # 2.0T + CarTestRoute("085ac1d942c35910|2021-03-25--20-11-15", HONDA.HONDA_ACCORD), # 2021 with new style HUD msgs + CarTestRoute("07585b0da3c88459|2021-05-26--18-52-04", HONDA.HONDA_ACCORD), # hybrid + CarTestRoute("f29e2b57a55e7ad5|2021-03-24--20-52-38", HONDA.HONDA_ACCORD), # hybrid, 2021 with new style HUD msgs + CarTestRoute("1ad763dd22ef1a0e|2020-02-29--18-37-03", HONDA.HONDA_CRV_5G), + CarTestRoute("0a96f86fcfe35964|2020-02-05--07-25-51", HONDA.HONDA_ODYSSEY), + CarTestRoute("d83f36766f8012a5|2020-02-05--18-42-21", HONDA.HONDA_CIVIC_BOSCH_DIESEL), + CarTestRoute("f0890d16a07a236b|2021-05-25--17-27-22", HONDA.HONDA_INSIGHT), + CarTestRoute("07d37d27996096b6|2020-03-04--21-57-27", HONDA.HONDA_PILOT), + CarTestRoute("684e8f96bd491a0e|2021-11-03--11-08-42", HONDA.HONDA_PILOT), # Passport + CarTestRoute("0a78dfbacc8504ef|2020-03-04--13-29-55", HONDA.HONDA_CIVIC_BOSCH), CarTestRoute("f34a60d68d83b1e5|2020-10-06--14-35-55", HONDA.ACURA_RDX), - CarTestRoute("54fd8451b3974762|2021-04-01--14-50-10", HONDA.RIDGELINE), + CarTestRoute("54fd8451b3974762|2021-04-01--14-50-10", HONDA.HONDA_RIDGELINE), CarTestRoute("2d5808fae0b38ac6|2021-09-01--17-14-11", HONDA.HONDA_E), - CarTestRoute("f44aa96ace22f34a|2021-12-22--06-22-31", HONDA.CIVIC_2022), + CarTestRoute("f44aa96ace22f34a|2021-12-22--06-22-31", HONDA.HONDA_CIVIC_2022), - CarTestRoute("87d7f06ade479c2e|2023-09-11--23-30-11", HYUNDAI.AZERA_6TH_GEN), - CarTestRoute("66189dd8ec7b50e6|2023-09-20--07-02-12", HYUNDAI.AZERA_HEV_6TH_GEN), + CarTestRoute("87d7f06ade479c2e|2023-09-11--23-30-11", HYUNDAI.HYUNDAI_AZERA_6TH_GEN), + CarTestRoute("66189dd8ec7b50e6|2023-09-20--07-02-12", HYUNDAI.HYUNDAI_AZERA_HEV_6TH_GEN), CarTestRoute("6fe86b4e410e4c37|2020-07-22--16-27-13", HYUNDAI.HYUNDAI_GENESIS), CarTestRoute("b5d6dc830ad63071|2022-12-12--21-28-25", HYUNDAI.GENESIS_GV60_EV_1ST_GEN, segment=12), CarTestRoute("70c5bec28ec8e345|2020-08-08--12-22-23", HYUNDAI.GENESIS_G70), CarTestRoute("ca4de5b12321bd98|2022-10-18--21-15-59", HYUNDAI.GENESIS_GV70_1ST_GEN), CarTestRoute("6b301bf83f10aa90|2020-11-22--16-45-07", HYUNDAI.GENESIS_G80), - CarTestRoute("0bbe367c98fa1538|2023-09-16--00-16-49", HYUNDAI.CUSTIN_1ST_GEN), - CarTestRoute("f0709d2bc6ca451f|2022-10-15--08-13-54", HYUNDAI.SANTA_CRUZ_1ST_GEN), - CarTestRoute("4dbd55df87507948|2022-03-01--09-45-38", HYUNDAI.SANTA_FE), - CarTestRoute("bf43d9df2b660eb0|2021-09-23--14-16-37", HYUNDAI.SANTA_FE_2022), - CarTestRoute("37398f32561a23ad|2021-11-18--00-11-35", HYUNDAI.SANTA_FE_HEV_2022), - CarTestRoute("656ac0d830792fcc|2021-12-28--14-45-56", HYUNDAI.SANTA_FE_PHEV_2022, segment=1), + CarTestRoute("0bbe367c98fa1538|2023-09-16--00-16-49", HYUNDAI.HYUNDAI_CUSTIN_1ST_GEN), + CarTestRoute("f0709d2bc6ca451f|2022-10-15--08-13-54", HYUNDAI.HYUNDAI_SANTA_CRUZ_1ST_GEN), + CarTestRoute("4dbd55df87507948|2022-03-01--09-45-38", HYUNDAI.HYUNDAI_SANTA_FE), + CarTestRoute("bf43d9df2b660eb0|2021-09-23--14-16-37", HYUNDAI.HYUNDAI_SANTA_FE_2022), + CarTestRoute("37398f32561a23ad|2021-11-18--00-11-35", HYUNDAI.HYUNDAI_SANTA_FE_HEV_2022), + CarTestRoute("656ac0d830792fcc|2021-12-28--14-45-56", HYUNDAI.HYUNDAI_SANTA_FE_PHEV_2022, segment=1), CarTestRoute("de59124955b921d8|2023-06-24--00-12-50", HYUNDAI.KIA_CARNIVAL_4TH_GEN), CarTestRoute("409c9409979a8abc|2023-07-11--09-06-44", HYUNDAI.KIA_CARNIVAL_4TH_GEN), # Chinese model CarTestRoute("e0e98335f3ebc58f|2021-03-07--16-38-29", HYUNDAI.KIA_CEED), @@ -118,36 +118,36 @@ routes = [ CarTestRoute("f9716670b2481438|2023-08-23--14-49-50", HYUNDAI.KIA_OPTIMA_H), CarTestRoute("6a42c1197b2a8179|2023-09-21--10-23-44", HYUNDAI.KIA_OPTIMA_H_G4_FL), CarTestRoute("c75a59efa0ecd502|2021-03-11--20-52-55", HYUNDAI.KIA_SELTOS), - CarTestRoute("5b7c365c50084530|2020-04-15--16-13-24", HYUNDAI.SONATA), - CarTestRoute("b2a38c712dcf90bd|2020-05-18--18-12-48", HYUNDAI.SONATA_LF), - CarTestRoute("c344fd2492c7a9d2|2023-12-11--09-03-23", HYUNDAI.STARIA_4TH_GEN), - CarTestRoute("fb3fd42f0baaa2f8|2022-03-30--15-25-05", HYUNDAI.TUCSON), - CarTestRoute("db68bbe12250812c|2022-12-05--00-54-12", HYUNDAI.TUCSON_4TH_GEN), # 2023 - CarTestRoute("36e10531feea61a4|2022-07-25--13-37-42", HYUNDAI.TUCSON_4TH_GEN), # hybrid + CarTestRoute("5b7c365c50084530|2020-04-15--16-13-24", HYUNDAI.HYUNDAI_SONATA), + CarTestRoute("b2a38c712dcf90bd|2020-05-18--18-12-48", HYUNDAI.HYUNDAI_SONATA_LF), + CarTestRoute("c344fd2492c7a9d2|2023-12-11--09-03-23", HYUNDAI.HYUNDAI_STARIA_4TH_GEN), + CarTestRoute("fb3fd42f0baaa2f8|2022-03-30--15-25-05", HYUNDAI.HYUNDAI_TUCSON), + CarTestRoute("db68bbe12250812c|2022-12-05--00-54-12", HYUNDAI.HYUNDAI_TUCSON_4TH_GEN), # 2023 + CarTestRoute("36e10531feea61a4|2022-07-25--13-37-42", HYUNDAI.HYUNDAI_TUCSON_4TH_GEN), # hybrid CarTestRoute("5875672fc1d4bf57|2020-07-23--21-33-28", HYUNDAI.KIA_SORENTO), CarTestRoute("1d0d000db3370fd0|2023-01-04--22-28-42", HYUNDAI.KIA_SORENTO_4TH_GEN, segment=5), CarTestRoute("fc19648042eb6896|2023-08-16--11-43-27", HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, segment=14), CarTestRoute("628935d7d3e5f4f7|2022-11-30--01-12-46", HYUNDAI.KIA_SORENTO_HEV_4TH_GEN), # plug-in hybrid - CarTestRoute("9c917ba0d42ffe78|2020-04-17--12-43-19", HYUNDAI.PALISADE), - CarTestRoute("05a8f0197fdac372|2022-10-19--14-14-09", HYUNDAI.IONIQ_5), # HDA2 - CarTestRoute("eb4eae1476647463|2023-08-26--18-07-04", HYUNDAI.IONIQ_6, segment=6), # HDA2 - CarTestRoute("3f29334d6134fcd4|2022-03-30--22-00-50", HYUNDAI.IONIQ_PHEV_2019), - CarTestRoute("fa8db5869167f821|2021-06-10--22-50-10", HYUNDAI.IONIQ_PHEV), - CarTestRoute("e1107f9d04dfb1e2|2023-09-05--22-32-12", HYUNDAI.IONIQ_PHEV), # openpilot longitudinal enabled - CarTestRoute("2c5cf2dd6102e5da|2020-12-17--16-06-44", HYUNDAI.IONIQ_EV_2020), - CarTestRoute("610ebb9faaad6b43|2020-06-13--15-28-36", HYUNDAI.IONIQ_EV_LTD), - CarTestRoute("2c5cf2dd6102e5da|2020-06-26--16-00-08", HYUNDAI.IONIQ), - CarTestRoute("012c95f06918eca4|2023-01-15--11-19-36", HYUNDAI.IONIQ), # openpilot longitudinal enabled - CarTestRoute("ab59fe909f626921|2021-10-18--18-34-28", HYUNDAI.IONIQ_HEV_2022), - CarTestRoute("22d955b2cd499c22|2020-08-10--19-58-21", HYUNDAI.KONA), - CarTestRoute("efc48acf44b1e64d|2021-05-28--21-05-04", HYUNDAI.KONA_EV), - CarTestRoute("f90d3cd06caeb6fa|2023-09-06--17-15-47", HYUNDAI.KONA_EV), # openpilot longitudinal enabled - CarTestRoute("ff973b941a69366f|2022-07-28--22-01-19", HYUNDAI.KONA_EV_2022, segment=11), - CarTestRoute("1618132d68afc876|2023-08-27--09-32-14", HYUNDAI.KONA_EV_2ND_GEN, segment=13), - CarTestRoute("49f3c13141b6bc87|2021-07-28--08-05-13", HYUNDAI.KONA_HEV), + CarTestRoute("9c917ba0d42ffe78|2020-04-17--12-43-19", HYUNDAI.HYUNDAI_PALISADE), + CarTestRoute("05a8f0197fdac372|2022-10-19--14-14-09", HYUNDAI.HYUNDAI_IONIQ_5), # HDA2 + CarTestRoute("eb4eae1476647463|2023-08-26--18-07-04", HYUNDAI.HYUNDAI_IONIQ_6, segment=6), # HDA2 + CarTestRoute("3f29334d6134fcd4|2022-03-30--22-00-50", HYUNDAI.HYUNDAI_IONIQ_PHEV_2019), + CarTestRoute("fa8db5869167f821|2021-06-10--22-50-10", HYUNDAI.HYUNDAI_IONIQ_PHEV), + CarTestRoute("e1107f9d04dfb1e2|2023-09-05--22-32-12", HYUNDAI.HYUNDAI_IONIQ_PHEV), # openpilot longitudinal enabled + CarTestRoute("2c5cf2dd6102e5da|2020-12-17--16-06-44", HYUNDAI.HYUNDAI_IONIQ_EV_2020), + CarTestRoute("610ebb9faaad6b43|2020-06-13--15-28-36", HYUNDAI.HYUNDAI_IONIQ_EV_LTD), + CarTestRoute("2c5cf2dd6102e5da|2020-06-26--16-00-08", HYUNDAI.HYUNDAI_IONIQ), + CarTestRoute("012c95f06918eca4|2023-01-15--11-19-36", HYUNDAI.HYUNDAI_IONIQ), # openpilot longitudinal enabled + CarTestRoute("ab59fe909f626921|2021-10-18--18-34-28", HYUNDAI.HYUNDAI_IONIQ_HEV_2022), + CarTestRoute("22d955b2cd499c22|2020-08-10--19-58-21", HYUNDAI.HYUNDAI_KONA), + CarTestRoute("efc48acf44b1e64d|2021-05-28--21-05-04", HYUNDAI.HYUNDAI_KONA_EV), + CarTestRoute("f90d3cd06caeb6fa|2023-09-06--17-15-47", HYUNDAI.HYUNDAI_KONA_EV), # openpilot longitudinal enabled + CarTestRoute("ff973b941a69366f|2022-07-28--22-01-19", HYUNDAI.HYUNDAI_KONA_EV_2022, segment=11), + CarTestRoute("1618132d68afc876|2023-08-27--09-32-14", HYUNDAI.HYUNDAI_KONA_EV_2ND_GEN, segment=13), + CarTestRoute("49f3c13141b6bc87|2021-07-28--08-05-13", HYUNDAI.HYUNDAI_KONA_HEV), CarTestRoute("5dddcbca6eb66c62|2020-07-26--13-24-19", HYUNDAI.KIA_STINGER), CarTestRoute("5b50b883a4259afb|2022-11-09--15-00-42", HYUNDAI.KIA_STINGER_2022), - CarTestRoute("d624b3d19adce635|2020-08-01--14-59-12", HYUNDAI.VELOSTER), + CarTestRoute("d624b3d19adce635|2020-08-01--14-59-12", HYUNDAI.HYUNDAI_VELOSTER), CarTestRoute("d545129f3ca90f28|2022-10-19--09-22-54", HYUNDAI.KIA_EV6), # HDA2 CarTestRoute("68d6a96e703c00c9|2022-09-10--16-09-39", HYUNDAI.KIA_EV6), # HDA1 CarTestRoute("9b25e8c1484a1b67|2023-04-13--10-41-45", HYUNDAI.KIA_EV6), @@ -164,37 +164,37 @@ routes = [ CarTestRoute("192283cdbb7a58c2|2022-10-15--01-43-18", HYUNDAI.KIA_SPORTAGE_5TH_GEN), CarTestRoute("09559f1fcaed4704|2023-11-16--02-24-57", HYUNDAI.KIA_SPORTAGE_5TH_GEN), # openpilot longitudinal CarTestRoute("b3537035ffe6a7d6|2022-10-17--15-23-49", HYUNDAI.KIA_SPORTAGE_5TH_GEN), # hybrid - CarTestRoute("c5ac319aa9583f83|2021-06-01--18-18-31", HYUNDAI.ELANTRA), - CarTestRoute("734ef96182ddf940|2022-10-02--16-41-44", HYUNDAI.ELANTRA_GT_I30), - CarTestRoute("82e9cdd3f43bf83e|2021-05-15--02-42-51", HYUNDAI.ELANTRA_2021), - CarTestRoute("715ac05b594e9c59|2021-06-20--16-21-07", HYUNDAI.ELANTRA_HEV_2021), - CarTestRoute("7120aa90bbc3add7|2021-08-02--07-12-31", HYUNDAI.SONATA_HYBRID), + CarTestRoute("c5ac319aa9583f83|2021-06-01--18-18-31", HYUNDAI.HYUNDAI_ELANTRA), + CarTestRoute("734ef96182ddf940|2022-10-02--16-41-44", HYUNDAI.HYUNDAI_ELANTRA_GT_I30), + CarTestRoute("82e9cdd3f43bf83e|2021-05-15--02-42-51", HYUNDAI.HYUNDAI_ELANTRA_2021), + CarTestRoute("715ac05b594e9c59|2021-06-20--16-21-07", HYUNDAI.HYUNDAI_ELANTRA_HEV_2021), + CarTestRoute("7120aa90bbc3add7|2021-08-02--07-12-31", HYUNDAI.HYUNDAI_SONATA_HYBRID), CarTestRoute("715ac05b594e9c59|2021-10-27--23-24-56", HYUNDAI.GENESIS_G70_2020), CarTestRoute("6b0d44d22df18134|2023-05-06--10-36-55", HYUNDAI.GENESIS_GV80), - CarTestRoute("00c829b1b7613dea|2021-06-24--09-10-10", TOYOTA.ALPHARD_TSS2), - CarTestRoute("912119ebd02c7a42|2022-03-19--07-24-50", TOYOTA.ALPHARD_TSS2), # hybrid - CarTestRoute("000cf3730200c71c|2021-05-24--10-42-05", TOYOTA.AVALON), - CarTestRoute("0bb588106852abb7|2021-05-26--12-22-01", TOYOTA.AVALON_2019), - CarTestRoute("87bef2930af86592|2021-05-30--09-40-54", TOYOTA.AVALON_2019), # hybrid - CarTestRoute("e9966711cfb04ce3|2022-01-11--07-59-43", TOYOTA.AVALON_TSS2), - CarTestRoute("eca1080a91720a54|2022-03-17--13-32-29", TOYOTA.AVALON_TSS2), # hybrid - CarTestRoute("6cdecc4728d4af37|2020-02-23--15-44-18", TOYOTA.CAMRY), - CarTestRoute("2f37c007683e85ba|2023-09-02--14-39-44", TOYOTA.CAMRY), # openpilot longitudinal, with radar CAN filter - CarTestRoute("54034823d30962f5|2021-05-24--06-37-34", TOYOTA.CAMRY), # hybrid - CarTestRoute("3456ad0cd7281b24|2020-12-13--17-45-56", TOYOTA.CAMRY_TSS2), - CarTestRoute("ffccc77938ddbc44|2021-01-04--16-55-41", TOYOTA.CAMRY_TSS2), # hybrid - CarTestRoute("4e45c89c38e8ec4d|2021-05-02--02-49-28", TOYOTA.COROLLA), - CarTestRoute("5f5afb36036506e4|2019-05-14--02-09-54", TOYOTA.COROLLA_TSS2), - CarTestRoute("5ceff72287a5c86c|2019-10-19--10-59-02", TOYOTA.COROLLA_TSS2), # hybrid - CarTestRoute("d2525c22173da58b|2021-04-25--16-47-04", TOYOTA.PRIUS), - CarTestRoute("b14c5b4742e6fc85|2020-07-28--19-50-11", TOYOTA.RAV4), - CarTestRoute("32a7df20486b0f70|2020-02-06--16-06-50", TOYOTA.RAV4H), - CarTestRoute("cdf2f7de565d40ae|2019-04-25--03-53-41", TOYOTA.RAV4_TSS2), - CarTestRoute("a5c341bb250ca2f0|2022-05-18--16-05-17", TOYOTA.RAV4_TSS2_2022), - CarTestRoute("ad5a3fa719bc2f83|2023-10-17--19-48-42", TOYOTA.RAV4_TSS2_2023), - CarTestRoute("7e34a988419b5307|2019-12-18--19-13-30", TOYOTA.RAV4_TSS2), # hybrid - CarTestRoute("2475fb3eb2ffcc2e|2022-04-29--12-46-23", TOYOTA.RAV4_TSS2_2022), # hybrid + CarTestRoute("00c829b1b7613dea|2021-06-24--09-10-10", TOYOTA.TOYOTA_ALPHARD_TSS2), + CarTestRoute("912119ebd02c7a42|2022-03-19--07-24-50", TOYOTA.TOYOTA_ALPHARD_TSS2), # hybrid + CarTestRoute("000cf3730200c71c|2021-05-24--10-42-05", TOYOTA.TOYOTA_AVALON), + CarTestRoute("0bb588106852abb7|2021-05-26--12-22-01", TOYOTA.TOYOTA_AVALON_2019), + CarTestRoute("87bef2930af86592|2021-05-30--09-40-54", TOYOTA.TOYOTA_AVALON_2019), # hybrid + CarTestRoute("e9966711cfb04ce3|2022-01-11--07-59-43", TOYOTA.TOYOTA_AVALON_TSS2), + CarTestRoute("eca1080a91720a54|2022-03-17--13-32-29", TOYOTA.TOYOTA_AVALON_TSS2), # hybrid + CarTestRoute("6cdecc4728d4af37|2020-02-23--15-44-18", TOYOTA.TOYOTA_CAMRY), + CarTestRoute("2f37c007683e85ba|2023-09-02--14-39-44", TOYOTA.TOYOTA_CAMRY), # openpilot longitudinal, with radar CAN filter + CarTestRoute("54034823d30962f5|2021-05-24--06-37-34", TOYOTA.TOYOTA_CAMRY), # hybrid + CarTestRoute("3456ad0cd7281b24|2020-12-13--17-45-56", TOYOTA.TOYOTA_CAMRY_TSS2), + CarTestRoute("ffccc77938ddbc44|2021-01-04--16-55-41", TOYOTA.TOYOTA_CAMRY_TSS2), # hybrid + CarTestRoute("4e45c89c38e8ec4d|2021-05-02--02-49-28", TOYOTA.TOYOTA_COROLLA), + CarTestRoute("5f5afb36036506e4|2019-05-14--02-09-54", TOYOTA.TOYOTA_COROLLA_TSS2), + CarTestRoute("5ceff72287a5c86c|2019-10-19--10-59-02", TOYOTA.TOYOTA_COROLLA_TSS2), # hybrid + CarTestRoute("d2525c22173da58b|2021-04-25--16-47-04", TOYOTA.TOYOTA_PRIUS), + CarTestRoute("b14c5b4742e6fc85|2020-07-28--19-50-11", TOYOTA.TOYOTA_RAV4), + CarTestRoute("32a7df20486b0f70|2020-02-06--16-06-50", TOYOTA.TOYOTA_RAV4H), + CarTestRoute("cdf2f7de565d40ae|2019-04-25--03-53-41", TOYOTA.TOYOTA_RAV4_TSS2), + CarTestRoute("a5c341bb250ca2f0|2022-05-18--16-05-17", TOYOTA.TOYOTA_RAV4_TSS2_2022), + CarTestRoute("ad5a3fa719bc2f83|2023-10-17--19-48-42", TOYOTA.TOYOTA_RAV4_TSS2_2023), + CarTestRoute("7e34a988419b5307|2019-12-18--19-13-30", TOYOTA.TOYOTA_RAV4_TSS2), # hybrid + CarTestRoute("2475fb3eb2ffcc2e|2022-04-29--12-46-23", TOYOTA.TOYOTA_RAV4_TSS2_2022), # hybrid CarTestRoute("7a31f030957b9c85|2023-04-01--14-12-51", TOYOTA.LEXUS_ES), CarTestRoute("37041c500fd30100|2020-12-30--12-17-24", TOYOTA.LEXUS_ES), # hybrid CarTestRoute("e6a24be49a6cd46e|2019-10-29--10-52-42", TOYOTA.LEXUS_ES_TSS2), @@ -211,39 +211,39 @@ routes = [ CarTestRoute("3fd5305f8b6ca765|2021-04-28--19-26-49", TOYOTA.LEXUS_NX_TSS2), CarTestRoute("09ae96064ed85a14|2022-06-09--12-22-31", TOYOTA.LEXUS_NX_TSS2), # hybrid CarTestRoute("4765fbbf59e3cd88|2024-02-06--17-45-32", TOYOTA.LEXUS_LC_TSS2), - CarTestRoute("0a302ffddbb3e3d3|2020-02-08--16-19-08", TOYOTA.HIGHLANDER_TSS2), - CarTestRoute("437e4d2402abf524|2021-05-25--07-58-50", TOYOTA.HIGHLANDER_TSS2), # hybrid - CarTestRoute("3183cd9b021e89ce|2021-05-25--10-34-44", TOYOTA.HIGHLANDER), - CarTestRoute("80d16a262e33d57f|2021-05-23--20-01-43", TOYOTA.HIGHLANDER), # hybrid - CarTestRoute("eb6acd681135480d|2019-06-20--20-00-00", TOYOTA.SIENNA), + CarTestRoute("0a302ffddbb3e3d3|2020-02-08--16-19-08", TOYOTA.TOYOTA_HIGHLANDER_TSS2), + CarTestRoute("437e4d2402abf524|2021-05-25--07-58-50", TOYOTA.TOYOTA_HIGHLANDER_TSS2), # hybrid + CarTestRoute("3183cd9b021e89ce|2021-05-25--10-34-44", TOYOTA.TOYOTA_HIGHLANDER), + CarTestRoute("80d16a262e33d57f|2021-05-23--20-01-43", TOYOTA.TOYOTA_HIGHLANDER), # hybrid + CarTestRoute("eb6acd681135480d|2019-06-20--20-00-00", TOYOTA.TOYOTA_SIENNA), CarTestRoute("2e07163a1ba9a780|2019-08-25--13-15-13", TOYOTA.LEXUS_IS), CarTestRoute("649bf2997ada6e3a|2023-08-08--18-04-22", TOYOTA.LEXUS_IS_TSS2), - CarTestRoute("0a0de17a1e6a2d15|2020-09-21--21-24-41", TOYOTA.PRIUS_TSS2), - CarTestRoute("9b36accae406390e|2021-03-30--10-41-38", TOYOTA.MIRAI), - CarTestRoute("cd9cff4b0b26c435|2021-05-13--15-12-39", TOYOTA.CHR), - CarTestRoute("57858ede0369a261|2021-05-18--20-34-20", TOYOTA.CHR), # hybrid - CarTestRoute("ea8fbe72b96a185c|2023-02-08--15-11-46", TOYOTA.CHR_TSS2), - CarTestRoute("ea8fbe72b96a185c|2023-02-22--09-20-34", TOYOTA.CHR_TSS2), # openpilot longitudinal, with smartDSU - CarTestRoute("6719965b0e1d1737|2023-02-09--22-44-05", TOYOTA.CHR_TSS2), # hybrid - CarTestRoute("6719965b0e1d1737|2023-08-29--06-40-05", TOYOTA.CHR_TSS2), # hybrid, openpilot longitudinal, radar disabled - CarTestRoute("14623aae37e549f3|2021-10-24--01-20-49", TOYOTA.PRIUS_V), + CarTestRoute("0a0de17a1e6a2d15|2020-09-21--21-24-41", TOYOTA.TOYOTA_PRIUS_TSS2), + CarTestRoute("9b36accae406390e|2021-03-30--10-41-38", TOYOTA.TOYOTA_MIRAI), + CarTestRoute("cd9cff4b0b26c435|2021-05-13--15-12-39", TOYOTA.TOYOTA_CHR), + CarTestRoute("57858ede0369a261|2021-05-18--20-34-20", TOYOTA.TOYOTA_CHR), # hybrid + CarTestRoute("ea8fbe72b96a185c|2023-02-08--15-11-46", TOYOTA.TOYOTA_CHR_TSS2), + CarTestRoute("ea8fbe72b96a185c|2023-02-22--09-20-34", TOYOTA.TOYOTA_CHR_TSS2), # openpilot longitudinal, with smartDSU + CarTestRoute("6719965b0e1d1737|2023-02-09--22-44-05", TOYOTA.TOYOTA_CHR_TSS2), # hybrid + CarTestRoute("6719965b0e1d1737|2023-08-29--06-40-05", TOYOTA.TOYOTA_CHR_TSS2), # hybrid, openpilot longitudinal, radar disabled + CarTestRoute("14623aae37e549f3|2021-10-24--01-20-49", TOYOTA.TOYOTA_PRIUS_V), - CarTestRoute("202c40641158a6e5|2021-09-21--09-43-24", VOLKSWAGEN.ARTEON_MK1), - CarTestRoute("2c68dda277d887ac|2021-05-11--15-22-20", VOLKSWAGEN.ATLAS_MK1), - CarTestRoute("ffcd23abbbd02219|2024-02-28--14-59-38", VOLKSWAGEN.CADDY_MK3), - CarTestRoute("cae14e88932eb364|2021-03-26--14-43-28", VOLKSWAGEN.GOLF_MK7), # Stock ACC - CarTestRoute("3cfdec54aa035f3f|2022-10-13--14-58-58", VOLKSWAGEN.GOLF_MK7), # openpilot longitudinal - CarTestRoute("58a7d3b707987d65|2021-03-25--17-26-37", VOLKSWAGEN.JETTA_MK7), - CarTestRoute("4d134e099430fba2|2021-03-26--00-26-06", VOLKSWAGEN.PASSAT_MK8), - CarTestRoute("3cfdec54aa035f3f|2022-07-19--23-45-10", VOLKSWAGEN.PASSAT_NMS), - CarTestRoute("0cd0b7f7e31a3853|2021-11-03--19-30-22", VOLKSWAGEN.POLO_MK6), - CarTestRoute("064d1816e448f8eb|2022-09-29--15-32-34", VOLKSWAGEN.SHARAN_MK2), - CarTestRoute("7d82b2f3a9115f1f|2021-10-21--15-39-42", VOLKSWAGEN.TAOS_MK1), - CarTestRoute("2744c89a8dda9a51|2021-07-24--21-28-06", VOLKSWAGEN.TCROSS_MK1), - CarTestRoute("2cef8a0b898f331a|2021-03-25--20-13-57", VOLKSWAGEN.TIGUAN_MK2), - CarTestRoute("a589dcc642fdb10a|2021-06-14--20-54-26", VOLKSWAGEN.TOURAN_MK2), - CarTestRoute("a459f4556782eba1|2021-09-19--09-48-00", VOLKSWAGEN.TRANSPORTER_T61), - CarTestRoute("0cd0b7f7e31a3853|2021-11-18--00-38-32", VOLKSWAGEN.TROC_MK1), + CarTestRoute("202c40641158a6e5|2021-09-21--09-43-24", VOLKSWAGEN.VOLKSWAGEN_ARTEON_MK1), + CarTestRoute("2c68dda277d887ac|2021-05-11--15-22-20", VOLKSWAGEN.VOLKSWAGEN_ATLAS_MK1), + CarTestRoute("ffcd23abbbd02219|2024-02-28--14-59-38", VOLKSWAGEN.VOLKSWAGEN_CADDY_MK3), + CarTestRoute("cae14e88932eb364|2021-03-26--14-43-28", VOLKSWAGEN.VOLKSWAGEN_GOLF_MK7), # Stock ACC + CarTestRoute("3cfdec54aa035f3f|2022-10-13--14-58-58", VOLKSWAGEN.VOLKSWAGEN_GOLF_MK7), # openpilot longitudinal + CarTestRoute("58a7d3b707987d65|2021-03-25--17-26-37", VOLKSWAGEN.VOLKSWAGEN_JETTA_MK7), + CarTestRoute("4d134e099430fba2|2021-03-26--00-26-06", VOLKSWAGEN.VOLKSWAGEN_PASSAT_MK8), + CarTestRoute("3cfdec54aa035f3f|2022-07-19--23-45-10", VOLKSWAGEN.VOLKSWAGEN_PASSAT_NMS), + CarTestRoute("0cd0b7f7e31a3853|2021-11-03--19-30-22", VOLKSWAGEN.VOLKSWAGEN_POLO_MK6), + CarTestRoute("064d1816e448f8eb|2022-09-29--15-32-34", VOLKSWAGEN.VOLKSWAGEN_SHARAN_MK2), + CarTestRoute("7d82b2f3a9115f1f|2021-10-21--15-39-42", VOLKSWAGEN.VOLKSWAGEN_TAOS_MK1), + CarTestRoute("2744c89a8dda9a51|2021-07-24--21-28-06", VOLKSWAGEN.VOLKSWAGEN_TCROSS_MK1), + CarTestRoute("2cef8a0b898f331a|2021-03-25--20-13-57", VOLKSWAGEN.VOLKSWAGEN_TIGUAN_MK2), + CarTestRoute("a589dcc642fdb10a|2021-06-14--20-54-26", VOLKSWAGEN.VOLKSWAGEN_TOURAN_MK2), + CarTestRoute("a459f4556782eba1|2021-09-19--09-48-00", VOLKSWAGEN.VOLKSWAGEN_TRANSPORTER_T61), + CarTestRoute("0cd0b7f7e31a3853|2021-11-18--00-38-32", VOLKSWAGEN.VOLKSWAGEN_TROC_MK1), CarTestRoute("07667b885add75fd|2021-01-23--19-48-42", VOLKSWAGEN.AUDI_A3_MK3), CarTestRoute("6c6b466346192818|2021-06-06--14-17-47", VOLKSWAGEN.AUDI_Q2_MK1), CarTestRoute("0cd0b7f7e31a3853|2021-12-03--03-12-05", VOLKSWAGEN.AUDI_Q3_MK2), @@ -257,42 +257,42 @@ routes = [ CarTestRoute("026b6d18fba6417f|2021-03-26--09-17-04", VOLKSWAGEN.SKODA_SCALA_MK1), CarTestRoute("b2e9858e29db492b|2021-03-26--16-58-42", VOLKSWAGEN.SKODA_SUPERB_MK3), - CarTestRoute("3c8f0c502e119c1c|2020-06-30--12-58-02", SUBARU.ASCENT), - CarTestRoute("c321c6b697c5a5ff|2020-06-23--11-04-33", SUBARU.FORESTER), - CarTestRoute("791340bc01ed993d|2019-03-10--16-28-08", SUBARU.IMPREZA), - CarTestRoute("8bf7e79a3ce64055|2021-05-24--09-36-27", SUBARU.IMPREZA_2020), - CarTestRoute("8de015561e1ea4a0|2023-08-29--17-08-31", SUBARU.IMPREZA), # openpilot longitudinal + CarTestRoute("3c8f0c502e119c1c|2020-06-30--12-58-02", SUBARU.SUBARU_ASCENT), + CarTestRoute("c321c6b697c5a5ff|2020-06-23--11-04-33", SUBARU.SUBARU_FORESTER), + CarTestRoute("791340bc01ed993d|2019-03-10--16-28-08", SUBARU.SUBARU_IMPREZA), + CarTestRoute("8bf7e79a3ce64055|2021-05-24--09-36-27", SUBARU.SUBARU_IMPREZA_2020), + CarTestRoute("8de015561e1ea4a0|2023-08-29--17-08-31", SUBARU.SUBARU_IMPREZA), # openpilot longitudinal # CarTestRoute("c3d1ccb52f5f9d65|2023-07-22--01-23-20", SUBARU.OUTBACK, segment=9), # gen2 longitudinal, eyesight disabled - CarTestRoute("1bbe6bf2d62f58a8|2022-07-14--17-11-43", SUBARU.OUTBACK, segment=10), - CarTestRoute("c56e69bbc74b8fad|2022-08-18--09-43-51", SUBARU.LEGACY, segment=3), - CarTestRoute("f4e3a0c511a076f4|2022-08-04--16-16-48", SUBARU.CROSSTREK_HYBRID, segment=2), - CarTestRoute("7fd1e4f3a33c1673|2022-12-04--15-09-53", SUBARU.FORESTER_2022, segment=4), - CarTestRoute("f3b34c0d2632aa83|2023-07-23--20-43-25", SUBARU.OUTBACK_2023, segment=7), - CarTestRoute("99437cef6d5ff2ee|2023-03-13--21-21-38", SUBARU.ASCENT_2023, segment=7), + CarTestRoute("1bbe6bf2d62f58a8|2022-07-14--17-11-43", SUBARU.SUBARU_OUTBACK, segment=10), + CarTestRoute("c56e69bbc74b8fad|2022-08-18--09-43-51", SUBARU.SUBARU_LEGACY, segment=3), + CarTestRoute("f4e3a0c511a076f4|2022-08-04--16-16-48", SUBARU.SUBARU_CROSSTREK_HYBRID, segment=2), + CarTestRoute("7fd1e4f3a33c1673|2022-12-04--15-09-53", SUBARU.SUBARU_FORESTER_2022, segment=4), + CarTestRoute("f3b34c0d2632aa83|2023-07-23--20-43-25", SUBARU.SUBARU_OUTBACK_2023, segment=7), + CarTestRoute("99437cef6d5ff2ee|2023-03-13--21-21-38", SUBARU.SUBARU_ASCENT_2023, segment=7), # Pre-global, dashcam - CarTestRoute("95441c38ae8c130e|2020-06-08--12-10-17", SUBARU.FORESTER_PREGLOBAL), - CarTestRoute("df5ca7660000fba8|2020-06-16--17-37-19", SUBARU.LEGACY_PREGLOBAL), - CarTestRoute("5ab784f361e19b78|2020-06-08--16-30-41", SUBARU.OUTBACK_PREGLOBAL), - CarTestRoute("e19eb5d5353b1ac1|2020-08-09--14-37-56", SUBARU.OUTBACK_PREGLOBAL_2018), + CarTestRoute("95441c38ae8c130e|2020-06-08--12-10-17", SUBARU.SUBARU_FORESTER_PREGLOBAL), + CarTestRoute("df5ca7660000fba8|2020-06-16--17-37-19", SUBARU.SUBARU_LEGACY_PREGLOBAL), + CarTestRoute("5ab784f361e19b78|2020-06-08--16-30-41", SUBARU.SUBARU_OUTBACK_PREGLOBAL), + CarTestRoute("e19eb5d5353b1ac1|2020-08-09--14-37-56", SUBARU.SUBARU_OUTBACK_PREGLOBAL_2018), - CarTestRoute("fbbfa6af821552b9|2020-03-03--08-09-43", NISSAN.XTRAIL), - CarTestRoute("5b7c365c50084530|2020-03-25--22-10-13", NISSAN.LEAF), - CarTestRoute("22c3dcce2dd627eb|2020-12-30--16-38-48", NISSAN.LEAF_IC), - CarTestRoute("059ab9162e23198e|2020-05-30--09-41-01", NISSAN.ROGUE), - CarTestRoute("b72d3ec617c0a90f|2020-12-11--15-38-17", NISSAN.ALTIMA), + CarTestRoute("fbbfa6af821552b9|2020-03-03--08-09-43", NISSAN.NISSAN_XTRAIL), + CarTestRoute("5b7c365c50084530|2020-03-25--22-10-13", NISSAN.NISSAN_LEAF), + CarTestRoute("22c3dcce2dd627eb|2020-12-30--16-38-48", NISSAN.NISSAN_LEAF_IC), + CarTestRoute("059ab9162e23198e|2020-05-30--09-41-01", NISSAN.NISSAN_ROGUE), + CarTestRoute("b72d3ec617c0a90f|2020-12-11--15-38-17", NISSAN.NISSAN_ALTIMA), - CarTestRoute("32a319f057902bb3|2020-04-27--15-18-58", MAZDA.CX5), - CarTestRoute("10b5a4b380434151|2020-08-26--17-11-45", MAZDA.CX9), - CarTestRoute("74f1038827005090|2020-08-26--20-05-50", MAZDA.MAZDA3), - CarTestRoute("fb53c640f499b73d|2021-06-01--04-17-56", MAZDA.MAZDA6), - CarTestRoute("f6d5b1a9d7a1c92e|2021-07-08--06-56-59", MAZDA.CX9_2021), - CarTestRoute("a4af1602d8e668ac|2022-02-03--12-17-07", MAZDA.CX5_2022), + CarTestRoute("32a319f057902bb3|2020-04-27--15-18-58", MAZDA.MAZDA_CX5), + CarTestRoute("10b5a4b380434151|2020-08-26--17-11-45", MAZDA.MAZDA_CX9), + CarTestRoute("74f1038827005090|2020-08-26--20-05-50", MAZDA.MAZDA_3), + CarTestRoute("fb53c640f499b73d|2021-06-01--04-17-56", MAZDA.MAZDA_6), + CarTestRoute("f6d5b1a9d7a1c92e|2021-07-08--06-56-59", MAZDA.MAZDA_CX9_2021), + CarTestRoute("a4af1602d8e668ac|2022-02-03--12-17-07", MAZDA.MAZDA_CX5_2022), - CarTestRoute("6c14ee12b74823ce|2021-06-30--11-49-02", TESLA.AP1_MODELS), - CarTestRoute("bb50caf5f0945ab1|2021-06-19--17-20-18", TESLA.AP2_MODELS), - CarTestRoute("66c1699b7697267d/2024-03-03--13-09-53", TESLA.MODELS_RAVEN), + CarTestRoute("6c14ee12b74823ce|2021-06-30--11-49-02", TESLA.TESLA_AP1_MODELS), + CarTestRoute("bb50caf5f0945ab1|2021-06-19--17-20-18", TESLA.TESLA_AP2_MODELS), + CarTestRoute("66c1699b7697267d/2024-03-03--13-09-53", TESLA.TESLA_MODELS_RAVEN), # Segments that test specific issues # Controls mismatch due to standstill threshold - CarTestRoute("bec2dcfde6a64235|2022-04-08--14-21-32", HONDA.CRV_HYBRID, segment=22), + CarTestRoute("bec2dcfde6a64235|2022-04-08--14-21-32", HONDA.HONDA_CRV_HYBRID, segment=22), ] diff --git a/selfdrive/car/tests/test_can_fingerprint.py b/selfdrive/car/tests/test_can_fingerprint.py index e768abd20f..8df7007339 100755 --- a/selfdrive/car/tests/test_can_fingerprint.py +++ b/selfdrive/car/tests/test_can_fingerprint.py @@ -28,7 +28,7 @@ class TestCanFingerprint(unittest.TestCase): def test_timing(self): # just pick any CAN fingerprinting car - car_model = "BOLT_EUV" + car_model = "CHEVROLET_BOLT_EUV" fingerprint = FINGERPRINTS[car_model][0] cases = [] diff --git a/selfdrive/car/tests/test_docs.py b/selfdrive/car/tests/test_docs.py index 7f88dba18b..143b402d5f 100755 --- a/selfdrive/car/tests/test_docs.py +++ b/selfdrive/car/tests/test_docs.py @@ -69,7 +69,7 @@ class TestCarDocs(unittest.TestCase): for car in self.all_cars: with self.subTest(car=car): # honda sanity check, it's the definition of a no torque star - if car.car_fingerprint in (HONDA.ACCORD, HONDA.CIVIC, HONDA.CRV, HONDA.ODYSSEY, HONDA.PILOT): + if car.car_fingerprint in (HONDA.HONDA_ACCORD, HONDA.HONDA_CIVIC, HONDA.HONDA_CRV, HONDA.HONDA_ODYSSEY, HONDA.HONDA_PILOT): self.assertEqual(car.row[Column.STEERING_TORQUE], Star.EMPTY, f"{car.name} has full torque star") elif car.car_name in ("toyota", "hyundai"): self.assertNotEqual(car.row[Column.STEERING_TORQUE], Star.EMPTY, f"{car.name} has no torque star") diff --git a/selfdrive/car/tests/test_lateral_limits.py b/selfdrive/car/tests/test_lateral_limits.py index 083cdd5a5e..8f1cee269e 100755 --- a/selfdrive/car/tests/test_lateral_limits.py +++ b/selfdrive/car/tests/test_lateral_limits.py @@ -24,8 +24,8 @@ JERK_MEAS_T = 0.5 # TODO: put these cars within limits ABOVE_LIMITS_CARS = [ - SUBARU.LEGACY, - SUBARU.OUTBACK, + SUBARU.SUBARU_LEGACY, + SUBARU.SUBARU_OUTBACK, ] car_model_jerks: defaultdict[str, dict[str, float]] = defaultdict(dict) diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 81dfe195b2..f561fa2ad8 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -367,7 +367,7 @@ class TestCarModelBase(unittest.TestCase): # TODO: remove this exception once this mismatch is resolved brake_pressed = CS.brakePressed if CS.brakePressed and not self.safety.get_brake_pressed_prev(): - if self.CP.carFingerprint in (HONDA.PILOT, HONDA.RIDGELINE) and CS.brake > 0.05: + if self.CP.carFingerprint in (HONDA.HONDA_PILOT, HONDA.HONDA_RIDGELINE) and CS.brake > 0.05: brake_pressed = False self.assertEqual(brake_pressed, self.safety.get_brake_pressed_prev()) @@ -430,7 +430,7 @@ class TestCarModelBase(unittest.TestCase): # TODO: remove this exception once this mismatch is resolved brake_pressed = CS.brakePressed if CS.brakePressed and not self.safety.get_brake_pressed_prev(): - if self.CP.carFingerprint in (HONDA.PILOT, HONDA.RIDGELINE) and CS.brake > 0.05: + if self.CP.carFingerprint in (HONDA.HONDA_PILOT, HONDA.HONDA_RIDGELINE) and CS.brake > 0.05: brake_pressed = False checks['brakePressed'] += brake_pressed != self.safety.get_brake_pressed_prev() checks['regenBraking'] += CS.regenBraking != self.safety.get_regen_braking_prev() diff --git a/selfdrive/car/torque_data/neural_ff_weights.json b/selfdrive/car/torque_data/neural_ff_weights.json index 47d7ced4f9..251b66efb0 100644 --- a/selfdrive/car/torque_data/neural_ff_weights.json +++ b/selfdrive/car/torque_data/neural_ff_weights.json @@ -1 +1 @@ -{"BOLT_EUV": {"w_1": [[0.3452189564704895, -0.15614677965641022, -0.04062516987323761, -0.5960758328437805, 0.3211185932159424, 0.31732726097106934, -0.04430829733610153, -0.37327295541763306, -0.14118380844593048, 0.12712529301643372, 0.2641555070877075, -0.3451094627380371, -0.005127656273543835, 0.6185108423233032, 0.03725295141339302, 0.3763789236545563], [-0.0708412230014801, 0.3667356073856354, 0.031383827328681946, 0.1740853488445282, -0.04695861041545868, 0.018055908381938934, 0.009072160348296165, -0.23640218377113342, -0.10362917929887772, 0.022628149017691612, -0.224413201212883, 0.20718418061733246, -0.016947750002145767, -0.3872031271457672, -0.15500062704086304, -0.06375953555107117], [-0.0838046595454216, -0.0242826659232378, -0.07765661180019379, 0.028858814388513565, -0.09516210108995438, 0.008368706330657005, 0.1689300835132599, 0.015036891214549541, -0.15121428668498993, 0.1388195902109146, 0.11486363410949707, 0.0651545450091362, 0.13559958338737488, 0.04300367832183838, -0.13856294751167297, -0.058136988431215286], [-0.006249868310987949, 0.08809533715248108, -0.040690965950489044, 0.02359287068247795, -0.00766348373144865, 0.24816390872001648, -0.17360293865203857, -0.03676899895071983, -0.17564819753170013, 0.18998438119888306, -0.050583917647600174, -0.006488069426268339, 0.10649101436138153, -0.024557121098041534, -0.103276826441288, 0.18448011577129364]], "b_1": [0.2935388386249542, 0.10967712104320526, -0.014007942751049995, 0.211833655834198, 0.33605605363845825, 0.37722209095954895, -0.16615016758441925, 0.3134673535823822, 0.06695777177810669, 0.3425212800502777, 0.3769673705101013, 0.23186539113521576, 0.5770409107208252, -0.05929069593548775, 0.01839117519557476, 0.03828774020075798], "w_2": [[-0.06261160969734192, 0.010185074992477894, -0.06083013117313385, -0.04531499370932579, -0.08979734033346176, 0.3432150185108185, -0.019801849499344826, 0.3010321259498596], [0.19698476791381836, -0.009238275699317455, 0.08842222392559052, -0.09516377002000809, -0.05022778362035751, 0.13626104593276978, -0.052890390157699585, 0.15569131076335907], [0.0724768117070198, -0.09018408507108688, 0.06850195676088333, -0.025572121143341064, 0.0680626779794693, -0.07648195326328278, 0.07993496209383011, -0.059752143919467926], [1.267876386642456, -0.05755887180566788, -0.08429178595542908, 0.021366603672504425, -0.0006479775765910745, -1.4292563199996948, -0.08077696710824966, -1.414825439453125], [0.04535430669784546, 0.06555880606174469, -0.027145234867930412, -0.07661093026399612, -0.05702832341194153, 0.23650476336479187, 0.0024587824009358883, 0.20126521587371826], [0.006042032968252897, 0.042880818247795105, 0.002187949838116765, -0.017126334831118584, -0.08352015167474747, 0.19801731407642365, -0.029196614399552345, 0.23713473975658417], [-0.01644900068640709, -0.04358499124646187, 0.014584392309188843, 0.07155826687812805, -0.09354910999536514, -0.033351872116327286, 0.07138452678918839, -0.04755295440554619], [-1.1012420654296875, -0.03534531593322754, 0.02167935110628605, -0.01116552110761404, -0.08436500281095505, 1.1038788557052612, 0.027903547510504723, 1.0676132440567017], [0.03843916580080986, -0.0952216386795044, 0.039226632565259933, 0.002778085647150874, -0.020275786519050598, -0.07848760485649109, 0.04803166165947914, 0.015538203530013561], [0.018385495990514755, -0.025189843028783798, 0.0036680365446954966, -0.02105865254998207, 0.04808586835861206, 0.1575016975402832, 0.02703506126999855, 0.23039312660694122], [-0.0033881019335240126, -0.10210853815078735, -0.04877309128642082, 0.006989633198827505, 0.046798162162303925, 0.38676899671554565, -0.032304272055625916, 0.2345031052827835], [0.22092825174331665, -0.09642873704433441, 0.04499409720301628, 0.05108088254928589, -0.10191166400909424, 0.12818090617656708, -0.021021494641900063, 0.09440375864505768], [0.1212429478764534, -0.028194155544042587, -0.0981956496834755, 0.08226924389600754, 0.055346839129924774, 0.27067816257476807, -0.09064067900180817, 0.12580905854701996], [-1.6740131378173828, -0.02066155895590782, -0.05924689769744873, 0.06347910314798355, -0.07821853458881378, 1.2807466983795166, 0.04589352011680603, 1.310766577720642], [-0.09893272817134857, -0.04093599319458008, -0.02502273954451084, 0.09490344673395157, -0.0211324505507946, -0.09021010994911194, 0.07936318963766098, -0.03593116253614426], [-0.08490308374166489, -0.015558987855911255, -0.048692114651203156, -0.007421435788273811, -0.040531404316425323, 0.25889304280281067, 0.06012800335884094, 0.27946868538856506]], "b_2": [0.07973937690258026, -0.010446485131978989, -0.003066520905122161, -0.031895797699689865, 0.006032303906977177, 0.24106740951538086, -0.008969511836767197, 0.2872662842273712], "w_3": [[-1.364486813545227, -0.11682678014039993, 0.01764785870909691, 0.03926877677440643], [-0.05695437639951706, 0.05472218990325928, 0.1266128271818161, 0.09950875490903854], [0.11415273696184158, -0.10069356113672256, 0.0864749327301979, -0.043946366757154465], [-0.10138195008039474, -0.040128443390131, -0.08937158435583115, -0.0048376512713730335], [-0.0028251828625798225, -0.04743027314543724, 0.06340016424655914, 0.07277824729681015], [0.49482327699661255, -0.06410001963376999, -0.0999293103814125, -0.14250673353672028], [0.042802367359399796, 0.0015462725423276424, -0.05991362780332565, 0.1022040992975235], [0.3523194193840027, 0.07343732565641403, 0.04157765582203865, -0.12358107417821884]], "b_3": [0.2653026282787323, -0.058485131710767746, -0.0744510293006897, 0.012550175189971924], "w_4": [[0.5988775491714478, 0.09668736904859543], [-0.04360569268465042, 0.06491032242774963], [-0.11868984252214432, -0.09601487964391708], [-0.06554870307445526, -0.14189276099205017]], "b_4": [-0.08148707449436188, -2.8251802921295166], "input_norm_mat": [[-3.0, 3.0], [-3.0, 3.0], [0.0, 40.0], [-3.0, 3.0]], "output_norm_mat": [-1.0, 1.0], "temperature": 100.0}} \ No newline at end of file +{"CHEVROLET_BOLT_EUV": {"w_1": [[0.3452189564704895, -0.15614677965641022, -0.04062516987323761, -0.5960758328437805, 0.3211185932159424, 0.31732726097106934, -0.04430829733610153, -0.37327295541763306, -0.14118380844593048, 0.12712529301643372, 0.2641555070877075, -0.3451094627380371, -0.005127656273543835, 0.6185108423233032, 0.03725295141339302, 0.3763789236545563], [-0.0708412230014801, 0.3667356073856354, 0.031383827328681946, 0.1740853488445282, -0.04695861041545868, 0.018055908381938934, 0.009072160348296165, -0.23640218377113342, -0.10362917929887772, 0.022628149017691612, -0.224413201212883, 0.20718418061733246, -0.016947750002145767, -0.3872031271457672, -0.15500062704086304, -0.06375953555107117], [-0.0838046595454216, -0.0242826659232378, -0.07765661180019379, 0.028858814388513565, -0.09516210108995438, 0.008368706330657005, 0.1689300835132599, 0.015036891214549541, -0.15121428668498993, 0.1388195902109146, 0.11486363410949707, 0.0651545450091362, 0.13559958338737488, 0.04300367832183838, -0.13856294751167297, -0.058136988431215286], [-0.006249868310987949, 0.08809533715248108, -0.040690965950489044, 0.02359287068247795, -0.00766348373144865, 0.24816390872001648, -0.17360293865203857, -0.03676899895071983, -0.17564819753170013, 0.18998438119888306, -0.050583917647600174, -0.006488069426268339, 0.10649101436138153, -0.024557121098041534, -0.103276826441288, 0.18448011577129364]], "b_1": [0.2935388386249542, 0.10967712104320526, -0.014007942751049995, 0.211833655834198, 0.33605605363845825, 0.37722209095954895, -0.16615016758441925, 0.3134673535823822, 0.06695777177810669, 0.3425212800502777, 0.3769673705101013, 0.23186539113521576, 0.5770409107208252, -0.05929069593548775, 0.01839117519557476, 0.03828774020075798], "w_2": [[-0.06261160969734192, 0.010185074992477894, -0.06083013117313385, -0.04531499370932579, -0.08979734033346176, 0.3432150185108185, -0.019801849499344826, 0.3010321259498596], [0.19698476791381836, -0.009238275699317455, 0.08842222392559052, -0.09516377002000809, -0.05022778362035751, 0.13626104593276978, -0.052890390157699585, 0.15569131076335907], [0.0724768117070198, -0.09018408507108688, 0.06850195676088333, -0.025572121143341064, 0.0680626779794693, -0.07648195326328278, 0.07993496209383011, -0.059752143919467926], [1.267876386642456, -0.05755887180566788, -0.08429178595542908, 0.021366603672504425, -0.0006479775765910745, -1.4292563199996948, -0.08077696710824966, -1.414825439453125], [0.04535430669784546, 0.06555880606174469, -0.027145234867930412, -0.07661093026399612, -0.05702832341194153, 0.23650476336479187, 0.0024587824009358883, 0.20126521587371826], [0.006042032968252897, 0.042880818247795105, 0.002187949838116765, -0.017126334831118584, -0.08352015167474747, 0.19801731407642365, -0.029196614399552345, 0.23713473975658417], [-0.01644900068640709, -0.04358499124646187, 0.014584392309188843, 0.07155826687812805, -0.09354910999536514, -0.033351872116327286, 0.07138452678918839, -0.04755295440554619], [-1.1012420654296875, -0.03534531593322754, 0.02167935110628605, -0.01116552110761404, -0.08436500281095505, 1.1038788557052612, 0.027903547510504723, 1.0676132440567017], [0.03843916580080986, -0.0952216386795044, 0.039226632565259933, 0.002778085647150874, -0.020275786519050598, -0.07848760485649109, 0.04803166165947914, 0.015538203530013561], [0.018385495990514755, -0.025189843028783798, 0.0036680365446954966, -0.02105865254998207, 0.04808586835861206, 0.1575016975402832, 0.02703506126999855, 0.23039312660694122], [-0.0033881019335240126, -0.10210853815078735, -0.04877309128642082, 0.006989633198827505, 0.046798162162303925, 0.38676899671554565, -0.032304272055625916, 0.2345031052827835], [0.22092825174331665, -0.09642873704433441, 0.04499409720301628, 0.05108088254928589, -0.10191166400909424, 0.12818090617656708, -0.021021494641900063, 0.09440375864505768], [0.1212429478764534, -0.028194155544042587, -0.0981956496834755, 0.08226924389600754, 0.055346839129924774, 0.27067816257476807, -0.09064067900180817, 0.12580905854701996], [-1.6740131378173828, -0.02066155895590782, -0.05924689769744873, 0.06347910314798355, -0.07821853458881378, 1.2807466983795166, 0.04589352011680603, 1.310766577720642], [-0.09893272817134857, -0.04093599319458008, -0.02502273954451084, 0.09490344673395157, -0.0211324505507946, -0.09021010994911194, 0.07936318963766098, -0.03593116253614426], [-0.08490308374166489, -0.015558987855911255, -0.048692114651203156, -0.007421435788273811, -0.040531404316425323, 0.25889304280281067, 0.06012800335884094, 0.27946868538856506]], "b_2": [0.07973937690258026, -0.010446485131978989, -0.003066520905122161, -0.031895797699689865, 0.006032303906977177, 0.24106740951538086, -0.008969511836767197, 0.2872662842273712], "w_3": [[-1.364486813545227, -0.11682678014039993, 0.01764785870909691, 0.03926877677440643], [-0.05695437639951706, 0.05472218990325928, 0.1266128271818161, 0.09950875490903854], [0.11415273696184158, -0.10069356113672256, 0.0864749327301979, -0.043946366757154465], [-0.10138195008039474, -0.040128443390131, -0.08937158435583115, -0.0048376512713730335], [-0.0028251828625798225, -0.04743027314543724, 0.06340016424655914, 0.07277824729681015], [0.49482327699661255, -0.06410001963376999, -0.0999293103814125, -0.14250673353672028], [0.042802367359399796, 0.0015462725423276424, -0.05991362780332565, 0.1022040992975235], [0.3523194193840027, 0.07343732565641403, 0.04157765582203865, -0.12358107417821884]], "b_3": [0.2653026282787323, -0.058485131710767746, -0.0744510293006897, 0.012550175189971924], "w_4": [[0.5988775491714478, 0.09668736904859543], [-0.04360569268465042, 0.06491032242774963], [-0.11868984252214432, -0.09601487964391708], [-0.06554870307445526, -0.14189276099205017]], "b_4": [-0.08148707449436188, -2.8251802921295166], "input_norm_mat": [[-3.0, 3.0], [-3.0, 3.0], [0.0, 40.0], [-3.0, 3.0]], "output_norm_mat": [-1.0, 1.0], "temperature": 100.0}} \ No newline at end of file diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index 11308fad79..4d9646a54a 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -1,53 +1,53 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] ### angle control # Nissan appears to have torque -"XTRAIL" = [nan, 1.5, nan] -"ALTIMA" = [nan, 1.5, nan] -"LEAF_IC" = [nan, 1.5, nan] -"LEAF" = [nan, 1.5, nan] -"ROGUE" = [nan, 1.5, nan] +"NISSAN_XTRAIL" = [nan, 1.5, nan] +"NISSAN_ALTIMA" = [nan, 1.5, nan] +"NISSAN_LEAF_IC" = [nan, 1.5, nan] +"NISSAN_LEAF" = [nan, 1.5, nan] +"NISSAN_ROGUE" = [nan, 1.5, nan] # New subarus angle based controllers -"FORESTER_2022" = [nan, 3.0, nan] -"OUTBACK_2023" = [nan, 3.0, nan] -"ASCENT_2023" = [nan, 3.0, nan] +"SUBARU_FORESTER_2022" = [nan, 3.0, nan] +"SUBARU_OUTBACK_2023" = [nan, 3.0, nan] +"SUBARU_ASCENT_2023" = [nan, 3.0, nan] # Toyota LTA also has torque -"RAV4_TSS2_2023" = [nan, 3.0, nan] +"TOYOTA_RAV4_TSS2_2023" = [nan, 3.0, nan] # Tesla has high torque -"AP1_MODELS" = [nan, 2.5, nan] -"AP2_MODELS" = [nan, 2.5, nan] -"MODELS_RAVEN" = [nan, 2.5, nan] +"TESLA_AP1_MODELS" = [nan, 2.5, nan] +"TESLA_AP2_MODELS" = [nan, 2.5, nan] +"TESLA_MODELS_RAVEN" = [nan, 2.5, nan] # Guess -"BRONCO_SPORT_MK1" = [nan, 1.5, nan] -"ESCAPE_MK4" = [nan, 1.5, nan] -"EXPLORER_MK6" = [nan, 1.5, nan] -"F_150_MK14" = [nan, 1.5, nan] -"FOCUS_MK4" = [nan, 1.5, nan] -"MAVERICK_MK1" = [nan, 1.5, nan] -"F_150_LIGHTNING_MK1" = [nan, 1.5, nan] -"MUSTANG_MACH_E_MK1" = [nan, 1.5, nan] +"FORD_BRONCO_SPORT_MK1" = [nan, 1.5, nan] +"FORD_ESCAPE_MK4" = [nan, 1.5, nan] +"FORD_EXPLORER_MK6" = [nan, 1.5, nan] +"FORD_F_150_MK14" = [nan, 1.5, nan] +"FORD_FOCUS_MK4" = [nan, 1.5, nan] +"FORD_MAVERICK_MK1" = [nan, 1.5, nan] +"FORD_F_150_LIGHTNING_MK1" = [nan, 1.5, nan] +"FORD_MUSTANG_MACH_E_MK1" = [nan, 1.5, nan] ### # No steering wheel -"BODY" = [nan, 1000, nan] +"COMMA_BODY" = [nan, 1000, nan] # Totally new cars "RAM_1500_5TH_GEN" = [2.0, 2.0, 0.05] "RAM_HD_5TH_GEN" = [1.4, 1.4, 0.05] -"OUTBACK" = [2.0, 2.0, 0.2] -"ESCALADE" = [1.899999976158142, 1.842270016670227, 0.1120000034570694] -"ESCALADE_ESV_2019" = [1.15, 1.3, 0.2] -"BOLT_EUV" = [2.0, 2.0, 0.05] -"SILVERADO" = [1.9, 1.9, 0.112] -"TRAILBLAZER" = [1.33, 1.9, 0.16] -"EQUINOX" = [2.5, 2.5, 0.05] -"CADDY_MK3" = [1.2, 1.2, 0.1] -"PASSAT_NMS" = [2.5, 2.5, 0.1] -"SHARAN_MK2" = [2.5, 2.5, 0.1] -"SANTA_CRUZ_1ST_GEN" = [2.7, 2.7, 0.1] +"SUBARU_OUTBACK" = [2.0, 2.0, 0.2] +"CADILLAC_ESCALADE" = [1.899999976158142, 1.842270016670227, 0.1120000034570694] +"CADILLAC_ESCALADE_ESV_2019" = [1.15, 1.3, 0.2] +"CHEVROLET_BOLT_EUV" = [2.0, 2.0, 0.05] +"CHEVROLET_SILVERADO" = [1.9, 1.9, 0.112] +"CHEVROLET_TRAILBLAZER" = [1.33, 1.9, 0.16] +"CHEVROLET_EQUINOX" = [2.5, 2.5, 0.05] +"VOLKSWAGEN_CADDY_MK3" = [1.2, 1.2, 0.1] +"VOLKSWAGEN_PASSAT_NMS" = [2.5, 2.5, 0.1] +"VOLKSWAGEN_SHARAN_MK2" = [2.5, 2.5, 0.1] +"HYUNDAI_SANTA_CRUZ_1ST_GEN" = [2.7, 2.7, 0.1] "KIA_SPORTAGE_5TH_GEN" = [2.6, 2.6, 0.1] "GENESIS_GV70_1ST_GEN" = [2.42, 2.42, 0.1] "GENESIS_GV60_EV_1ST_GEN" = [2.5, 2.5, 0.1] @@ -57,20 +57,20 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "KIA_NIRO_EV_2ND_GEN" = [2.05, 2.5, 0.14] "GENESIS_GV80" = [2.5, 2.5, 0.1] "KIA_CARNIVAL_4TH_GEN" = [1.75, 1.75, 0.15] -"ACADIA" = [1.6, 1.6, 0.2] +"GMC_ACADIA" = [1.6, 1.6, 0.2] "LEXUS_IS_TSS2" = [2.0, 2.0, 0.1] -"KONA_EV_2ND_GEN" = [2.5, 2.5, 0.1] -"IONIQ_6" = [2.5, 2.5, 0.1] -"AZERA_6TH_GEN" = [1.8, 1.8, 0.1] -"AZERA_HEV_6TH_GEN" = [1.8, 1.8, 0.1] +"HYUNDAI_KONA_EV_2ND_GEN" = [2.5, 2.5, 0.1] +"HYUNDAI_IONIQ_6" = [2.5, 2.5, 0.1] +"HYUNDAI_AZERA_6TH_GEN" = [1.8, 1.8, 0.1] +"HYUNDAI_AZERA_HEV_6TH_GEN" = [1.8, 1.8, 0.1] "KIA_K8_HEV_1ST_GEN" = [2.5, 2.5, 0.1] -"CUSTIN_1ST_GEN" = [2.5, 2.5, 0.1] +"HYUNDAI_CUSTIN_1ST_GEN" = [2.5, 2.5, 0.1] "LEXUS_GS_F" = [2.5, 2.5, 0.08] -"STARIA_4TH_GEN" = [1.8, 2.0, 0.15] +"HYUNDAI_STARIA_4TH_GEN" = [1.8, 2.0, 0.15] # Dashcam or fallback configured as ideal car "MOCK" = [10.0, 10, 0.0] # Manually checked -"CIVIC_2022" = [2.5, 1.2, 0.15] -"HRV_3G" = [2.5, 1.2, 0.2] +"HONDA_CIVIC_2022" = [2.5, 1.2, 0.15] +"HONDA_HRV_3G" = [2.5, 1.2, 0.2] diff --git a/selfdrive/car/torque_data/params.toml b/selfdrive/car/torque_data/params.toml index 048c5a1812..f91bc3abab 100644 --- a/selfdrive/car/torque_data/params.toml +++ b/selfdrive/car/torque_data/params.toml @@ -4,40 +4,40 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "ACURA_RDX_3G" = [1.4314459806646749, 0.33874701282109954, 0.18048847083897598] "AUDI_A3_MK3" = [1.5122414863077502, 1.7443517531719404, 0.15194151892450905] "AUDI_Q3_MK2" = [1.4439223359448605, 1.2254955789112076, 0.1413798895978097] -"VOLT" = [1.5961527626411784, 1.8422651988094612, 0.1572393918005158] -"PACIFICA_2018" = [2.07140, 1.3366521181047952, 0.13776367250652022] -"PACIFICA_2020" = [1.86206, 1.509076559398423, 0.14328246159386085] -"PACIFICA_2017_HYBRID" = [1.79422, 1.06831764583744, 0.116237] -"PACIFICA_2018_HYBRID" = [2.08887, 1.2943025830995154, 0.114818] -"PACIFICA_2019_HYBRID" = [1.90120, 1.1958788168371808, 0.131520] +"CHEVROLET_VOLT" = [1.5961527626411784, 1.8422651988094612, 0.1572393918005158] +"CHRYSLER_PACIFICA_2018" = [2.07140, 1.3366521181047952, 0.13776367250652022] +"CHRYSLER_PACIFICA_2020" = [1.86206, 1.509076559398423, 0.14328246159386085] +"CHRYSLER_PACIFICA_2017_HYBRID" = [1.79422, 1.06831764583744, 0.116237] +"CHRYSLER_PACIFICA_2018_HYBRID" = [2.08887, 1.2943025830995154, 0.114818] +"CHRYSLER_PACIFICA_2019_HYBRID" = [1.90120, 1.1958788168371808, 0.131520] "GENESIS_G70" = [3.8520195946707947, 2.354697063349854, 0.06830285485626221] -"ACCORD" = [1.6893333799149202, 0.3246749081720698, 0.2120497022936265] -"CIVIC_BOSCH" = [1.691708637466905, 0.40132900729454185, 0.25460295304024094] -"CIVIC" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] -"CRV" = [0.7667141440182675, 0.5927571534745969, 0.40909087636157127] -"CRV_5G" = [2.01323205142022, 0.2700612209345081, 0.2238412881331528] -"CRV_HYBRID" = [2.072034634644233, 0.7152085160516978, 0.20237105008376083] -"FIT" = [1.5719981427109775, 0.5712761407108976, 0.110773383324281] -"HRV" = [2.0661212805710205, 0.7521343418694775, 0.17760375789242094] -"INSIGHT" = [1.5201671214069354, 0.5660229120683284, 0.25808042580281876] -"ODYSSEY" = [1.8774809275211801, 0.8394431662987996, 0.2096978613792822] -"PILOT" = [1.7262026201812795, 0.9470005614967523, 0.21351430733218763] -"RIDGELINE" = [1.4146525028237624, 0.7356572861629564, 0.23307177552211328] -"ELANTRA_2021" = [3.169, 2.1259108157250735, 0.0819] +"HONDA_ACCORD" = [1.6893333799149202, 0.3246749081720698, 0.2120497022936265] +"HONDA_CIVIC_BOSCH" = [1.691708637466905, 0.40132900729454185, 0.25460295304024094] +"HONDA_CIVIC" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] +"HONDA_CRV" = [0.7667141440182675, 0.5927571534745969, 0.40909087636157127] +"HONDA_CRV_5G" = [2.01323205142022, 0.2700612209345081, 0.2238412881331528] +"HONDA_CRV_HYBRID" = [2.072034634644233, 0.7152085160516978, 0.20237105008376083] +"HONDA_FIT" = [1.5719981427109775, 0.5712761407108976, 0.110773383324281] +"HONDA_HRV" = [2.0661212805710205, 0.7521343418694775, 0.17760375789242094] +"HONDA_INSIGHT" = [1.5201671214069354, 0.5660229120683284, 0.25808042580281876] +"HONDA_ODYSSEY" = [1.8774809275211801, 0.8394431662987996, 0.2096978613792822] +"HONDA_PILOT" = [1.7262026201812795, 0.9470005614967523, 0.21351430733218763] +"HONDA_RIDGELINE" = [1.4146525028237624, 0.7356572861629564, 0.23307177552211328] +"HYUNDAI_ELANTRA_2021" = [3.169, 2.1259108157250735, 0.0819] "HYUNDAI_GENESIS" = [2.7807965280270794, 2.325, 0.0984484465421171] -"IONIQ_5" = [3.172929, 2.713050, 0.096019] -"IONIQ_EV_LTD" = [1.7662975472852054, 1.613755614526594, 0.17087579756306276] -"IONIQ_PHEV" = [3.2928700076638537, 2.1193482926455656, 0.12463700961468778] -"IONIQ_PHEV_2019" = [2.970807902012267, 1.6312321830002083, 0.1088964990357482] -"KONA_EV" = [3.078814714619148, 2.307336938253934, 0.12359762054065548] -"PALISADE" = [2.544642494803999, 1.8721703683337008, 0.1301424599248651] -"SANTA_FE" = [3.0787027729757632, 2.6173437483495565, 0.1207019341823945] -"SANTA_FE_HEV_2022" = [3.501877602644835, 2.729064118456137, 0.10384068104538963] -"SANTA_FE_PHEV_2022" = [1.6953050513611045, 1.5837614296206861, 0.12672855941458458] -"SONATA_LF" = [2.2200457811703953, 1.2967330275895228, 0.14039920986586393] -"SONATA" = [2.9638737459977467, 2.1259108157250735, 0.07813665616927593] -"SONATA_HYBRID" = [2.8990264092395734, 2.061410192222139, 0.0899805488717382] -"TUCSON_4TH_GEN" = [2.960174, 2.860284, 0.108745] +"HYUNDAI_IONIQ_5" = [3.172929, 2.713050, 0.096019] +"HYUNDAI_IONIQ_EV_LTD" = [1.7662975472852054, 1.613755614526594, 0.17087579756306276] +"HYUNDAI_IONIQ_PHEV" = [3.2928700076638537, 2.1193482926455656, 0.12463700961468778] +"HYUNDAI_IONIQ_PHEV_2019" = [2.970807902012267, 1.6312321830002083, 0.1088964990357482] +"HYUNDAI_KONA_EV" = [3.078814714619148, 2.307336938253934, 0.12359762054065548] +"HYUNDAI_PALISADE" = [2.544642494803999, 1.8721703683337008, 0.1301424599248651] +"HYUNDAI_SANTA_FE" = [3.0787027729757632, 2.6173437483495565, 0.1207019341823945] +"HYUNDAI_SANTA_FE_HEV_2022" = [3.501877602644835, 2.729064118456137, 0.10384068104538963] +"HYUNDAI_SANTA_FE_PHEV_2022" = [1.6953050513611045, 1.5837614296206861, 0.12672855941458458] +"HYUNDAI_SONATA_LF" = [2.2200457811703953, 1.2967330275895228, 0.14039920986586393] +"HYUNDAI_SONATA" = [2.9638737459977467, 2.1259108157250735, 0.07813665616927593] +"HYUNDAI_SONATA_HYBRID" = [2.8990264092395734, 2.061410192222139, 0.0899805488717382] +"HYUNDAI_TUCSON_4TH_GEN" = [2.960174, 2.860284, 0.108745] "JEEP_GRAND_CHEROKEE_2019" = [2.30972, 1.289689569171081, 0.117048] "JEEP_GRAND_CHEROKEE" = [2.27116, 1.4057367824262523, 0.11725947414922003] "KIA_EV6" = [3.2, 2.093457, 0.05] @@ -50,36 +50,33 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "LEXUS_NX_TSS2" = [2.4331999786982936, 2.1045680431705414, 0.14099899317761067] "LEXUS_RX" = [1.6430539050086406, 1.181960058934143, 0.19768806040843034] "LEXUS_RX_TSS2" = [1.5375561442049257, 1.343166476215164, 0.1931062001527557] -"CX9_2021" = [1.7601682915983443, 1.0889677335154337, 0.17713792194297195] +"MAZDA_CX9_2021" = [1.7601682915983443, 1.0889677335154337, 0.17713792194297195] "SKODA_SUPERB_MK3" = [1.166437404652981, 1.1686163012668165, 0.12194533036948708] -"FORESTER" = [3.6617001649776793, 2.342197172531713, 0.11075960785398745] -"IMPREZA" = [1.0670704910352047, 0.8234374840709592, 0.20986563268614938] -"IMPREZA_2020" = [2.6068223389108303, 2.134872342760203, 0.15261513193561627] -"AVALON" = [2.5185770183845646, 1.7153346784214922, 0.10603968787111022] -"AVALON_2019" = [1.7036141952825095, 1.239619084240008, 0.08459830394899492] -"AVALON_TSS2" = [2.3154403649717357, 2.7777922854327124, 0.11453999639164605] -"CHR" = [1.5591084333664578, 1.271271459066948, 0.20259087058453193] -"CHR_TSS2" = [1.7678810166088303, 1.3742176337919942, 0.2319674583741509] -"CAMRY" = [2.0568162685952505, 1.7576185169559122, 0.108878753] -"CAMRY_TSS2" = [2.3548324999999997, 2.368900128946771, 0.118436] -"COROLLA" = [3.117154369115421, 1.8438132575043773, 0.12289685869250652] -"COROLLA_TSS2" = [1.991132339206426, 1.868866242720403, 0.19570063298031432] -"HIGHLANDER" = [1.8108348718624456, 1.6348421600679828, 0.15972686105120398] -"HIGHLANDER_TSS2" = [1.9617570834136164, 1.8611643317268927, 0.14519673256119725] -"MIRAI" = [2.506899832157829, 1.7417213930750164, 0.20182618449440565] -"PRIUS" = [1.60, 1.5023147650693636, 0.151515] -"PRIUS_TSS2" = [1.972600, 1.9104337425537743, 0.170968] -"RAV4" = [2.085695074355425, 2.2142832316984733, 0.13339165270103975] -"RAV4_TSS2" = [2.279239424615458, 2.087101966779332, 0.13682208413446817] -"TOYOTA RAV4 2019 8965" = [2.3080951748210854, 2.1189367835820603, 0.12942102328134028] -"TOYOTA RAV4 2019 x02" = [2.762293266024922, 2.243615865975329, 0.11113568178327986] -"RAV4H" = [1.9796257271652042, 1.7503987331707576, 0.14628860048885406] -"RAV4_TSS2_2022" = [2.241883248393209, 1.9304407208090029, 0.112174] -"TOYOTA RAV4 2022 x02" = [3.044930631831037, 2.3979189796380918, 0.14023209146703736] -"SIENNA" = [1.689726, 1.3208264576110418, 0.140456] -"ARTEON_MK1" = [1.45136518053819, 1.3639364049316804, 0.23806361745695032] -"ATLAS_MK1" = [1.4677006726964945, 1.6733266634075656, 0.12959584092073367] -"GOLF_MK7" = [1.3750394140491293, 1.5814743077200641, 0.2018321939386586] -"JETTA_MK7" = [1.2271623034089392, 1.216955117387, 0.19437384688370712] -"PASSAT_MK8" = [1.3432120736752917, 1.7087275587362314, 0.19444383787326647] -"TIGUAN_MK2" = [0.9711965500094828, 1.0001565939459098, 0.1465626137072916] +"SUBARU_FORESTER" = [3.6617001649776793, 2.342197172531713, 0.11075960785398745] +"SUBARU_IMPREZA" = [1.0670704910352047, 0.8234374840709592, 0.20986563268614938] +"SUBARU_IMPREZA_2020" = [2.6068223389108303, 2.134872342760203, 0.15261513193561627] +"TOYOTA_AVALON" = [2.5185770183845646, 1.7153346784214922, 0.10603968787111022] +"TOYOTA_AVALON_2019" = [1.7036141952825095, 1.239619084240008, 0.08459830394899492] +"TOYOTA_AVALON_TSS2" = [2.3154403649717357, 2.7777922854327124, 0.11453999639164605] +"TOYOTA_CHR" = [1.5591084333664578, 1.271271459066948, 0.20259087058453193] +"TOYOTA_CHR_TSS2" = [1.7678810166088303, 1.3742176337919942, 0.2319674583741509] +"TOYOTA_CAMRY" = [2.0568162685952505, 1.7576185169559122, 0.108878753] +"TOYOTA_CAMRY_TSS2" = [2.3548324999999997, 2.368900128946771, 0.118436] +"TOYOTA_COROLLA" = [3.117154369115421, 1.8438132575043773, 0.12289685869250652] +"TOYOTA_COROLLA_TSS2" = [1.991132339206426, 1.868866242720403, 0.19570063298031432] +"TOYOTA_HIGHLANDER" = [1.8108348718624456, 1.6348421600679828, 0.15972686105120398] +"TOYOTA_HIGHLANDER_TSS2" = [1.9617570834136164, 1.8611643317268927, 0.14519673256119725] +"TOYOTA_MIRAI" = [2.506899832157829, 1.7417213930750164, 0.20182618449440565] +"TOYOTA_PRIUS" = [1.60, 1.5023147650693636, 0.151515] +"TOYOTA_PRIUS_TSS2" = [1.972600, 1.9104337425537743, 0.170968] +"TOYOTA_RAV4" = [2.085695074355425, 2.2142832316984733, 0.13339165270103975] +"TOYOTA_RAV4_TSS2" = [2.279239424615458, 2.087101966779332, 0.13682208413446817] +"TOYOTA_RAV4H" = [1.9796257271652042, 1.7503987331707576, 0.14628860048885406] +"TOYOTA_RAV4_TSS2_2022" = [2.241883248393209, 1.9304407208090029, 0.112174] +"TOYOTA_SIENNA" = [1.689726, 1.3208264576110418, 0.140456] +"VOLKSWAGEN_ARTEON_MK1" = [1.45136518053819, 1.3639364049316804, 0.23806361745695032] +"VOLKSWAGEN_ATLAS_MK1" = [1.4677006726964945, 1.6733266634075656, 0.12959584092073367] +"VOLKSWAGEN_GOLF_MK7" = [1.3750394140491293, 1.5814743077200641, 0.2018321939386586] +"VOLKSWAGEN_JETTA_MK7" = [1.2271623034089392, 1.216955117387, 0.19437384688370712] +"VOLKSWAGEN_PASSAT_MK8" = [1.3432120736752917, 1.7087275587362314, 0.19444383787326647] +"VOLKSWAGEN_TIGUAN_MK2" = [0.9711965500094828, 1.0001565939459098, 0.1465626137072916] diff --git a/selfdrive/car/torque_data/substitute.toml b/selfdrive/car/torque_data/substitute.toml index 2cf5bf41e5..22ee134ae3 100644 --- a/selfdrive/car/torque_data/substitute.toml +++ b/selfdrive/car/torque_data/substitute.toml @@ -1,85 +1,85 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] -"MAZDA3" = "CX9_2021" -"MAZDA6" = "CX9_2021" -"CX5" = "CX9_2021" -"CX5_2022" = "CX9_2021" -"CX9" = "CX9_2021" +"MAZDA_3" = "MAZDA_CX9_2021" +"MAZDA_6" = "MAZDA_CX9_2021" +"MAZDA_CX5" = "MAZDA_CX9_2021" +"MAZDA_CX5_2022" = "MAZDA_CX9_2021" +"MAZDA_CX9" = "MAZDA_CX9_2021" -"DODGE_DURANGO" = "PACIFICA_2020" +"DODGE_DURANGO" = "CHRYSLER_PACIFICA_2020" -"ALPHARD_TSS2" = "SIENNA" -"PRIUS_V" = "PRIUS" +"TOYOTA_ALPHARD_TSS2" = "TOYOTA_SIENNA" +"TOYOTA_PRIUS_V" = "TOYOTA_PRIUS" "LEXUS_IS" = "LEXUS_NX" "LEXUS_CTH" = "LEXUS_NX" -"LEXUS_ES" = "CAMRY" +"LEXUS_ES" = "TOYOTA_CAMRY" "LEXUS_RC" = "LEXUS_NX_TSS2" "LEXUS_LC_TSS2" = "LEXUS_NX_TSS2" -"KIA_OPTIMA_G4" = "SONATA" -"KIA_OPTIMA_G4_FL" = "SONATA" -"KIA_OPTIMA_H" = "SONATA" -"KIA_OPTIMA_H_G4_FL" = "SONATA" -"KIA_FORTE" = "SONATA" -"KIA_CEED" = "SONATA" -"KIA_SELTOS" = "SONATA" +"KIA_OPTIMA_G4" = "HYUNDAI_SONATA" +"KIA_OPTIMA_G4_FL" = "HYUNDAI_SONATA" +"KIA_OPTIMA_H" = "HYUNDAI_SONATA" +"KIA_OPTIMA_H_G4_FL" = "HYUNDAI_SONATA" +"KIA_FORTE" = "HYUNDAI_SONATA" +"KIA_CEED" = "HYUNDAI_SONATA" +"KIA_SELTOS" = "HYUNDAI_SONATA" "KIA_NIRO_PHEV" = "KIA_NIRO_EV" "KIA_NIRO_PHEV_2022" = "KIA_NIRO_EV" "KIA_NIRO_HEV_2021" = "KIA_NIRO_EV" -"VELOSTER" = "SONATA_LF" -"KONA" = "KONA_EV" -"KONA_HEV" = "KONA_EV" -"KONA_EV_2022" = "KONA_EV" -"IONIQ" = "IONIQ_PHEV_2019" -"IONIQ_HEV_2022" = "IONIQ_PHEV_2019" -"IONIQ_EV_2020" = "IONIQ_PHEV_2019" -"ELANTRA" = "SONATA_LF" -"ELANTRA_GT_I30" = "SONATA_LF" -"ELANTRA_HEV_2021" = "SONATA" -"TUCSON" = "SANTA_FE" -"SANTA_FE_2022" = "SANTA_FE_HEV_2022" +"HYUNDAI_VELOSTER" = "HYUNDAI_SONATA_LF" +"HYUNDAI_KONA" = "HYUNDAI_KONA_EV" +"HYUNDAI_KONA_HEV" = "HYUNDAI_KONA_EV" +"HYUNDAI_KONA_EV_2022" = "HYUNDAI_KONA_EV" +"HYUNDAI_IONIQ" = "HYUNDAI_IONIQ_PHEV_2019" +"HYUNDAI_IONIQ_HEV_2022" = "HYUNDAI_IONIQ_PHEV_2019" +"HYUNDAI_IONIQ_EV_2020" = "HYUNDAI_IONIQ_PHEV_2019" +"HYUNDAI_ELANTRA" = "HYUNDAI_SONATA_LF" +"HYUNDAI_ELANTRA_GT_I30" = "HYUNDAI_SONATA_LF" +"HYUNDAI_ELANTRA_HEV_2021" = "HYUNDAI_SONATA" +"HYUNDAI_TUCSON" = "HYUNDAI_SANTA_FE" +"HYUNDAI_SANTA_FE_2022" = "HYUNDAI_SANTA_FE_HEV_2022" "KIA_K5_HEV_2020" = "KIA_K5_2021" "KIA_STINGER_2022" = "KIA_STINGER" "GENESIS_G90" = "GENESIS_G70" "GENESIS_G80" = "GENESIS_G70" -"GENESIS_G70_2020" = "SONATA" +"GENESIS_G70_2020" = "HYUNDAI_SONATA" -"FREED" = "ODYSSEY" -"CRV_EU" = "CRV" -"CIVIC_BOSCH_DIESEL" = "CIVIC_BOSCH" -"HONDA_E" = "CIVIC_BOSCH" -"ODYSSEY_CHN" = "ODYSSEY" +"HONDA_FREED" = "HONDA_ODYSSEY" +"HONDA_CRV_EU" = "HONDA_CRV" +"HONDA_CIVIC_BOSCH_DIESEL" = "HONDA_CIVIC_BOSCH" +"HONDA_E" = "HONDA_CIVIC_BOSCH" +"HONDA_ODYSSEY_CHN" = "HONDA_ODYSSEY" -"BUICK_LACROSSE" = "VOLT" -"BUICK_REGAL" = "VOLT" -"ESCALADE_ESV" = "VOLT" -"CADILLAC_ATS" = "VOLT" -"MALIBU" = "VOLT" -"HOLDEN_ASTRA" = "VOLT" +"BUICK_LACROSSE" = "CHEVROLET_VOLT" +"BUICK_REGAL" = "CHEVROLET_VOLT" +"CADILLAC_ESCALADE_ESV" = "CHEVROLET_VOLT" +"CADILLAC_ATS" = "CHEVROLET_VOLT" +"CHEVROLET_MALIBU" = "CHEVROLET_VOLT" +"HOLDEN_ASTRA" = "CHEVROLET_VOLT" -"SKODA_FABIA_MK4" = "GOLF_MK7" +"SKODA_FABIA_MK4" = "VOLKSWAGEN_GOLF_MK7" "SKODA_OCTAVIA_MK3" = "SKODA_SUPERB_MK3" "SKODA_SCALA_MK1" = "SKODA_SUPERB_MK3" "SKODA_KODIAQ_MK1" = "SKODA_SUPERB_MK3" "SKODA_KAROQ_MK1" = "SKODA_SUPERB_MK3" "SKODA_KAMIQ_MK1" = "SKODA_SUPERB_MK3" -"CRAFTER_MK2" = "TIGUAN_MK2" -"TROC_MK1" = "TIGUAN_MK2" -"TCROSS_MK1" = "TIGUAN_MK2" -"TOURAN_MK2" = "TIGUAN_MK2" -"TRANSPORTER_T61" = "TIGUAN_MK2" -"AUDI_Q2_MK1" = "TIGUAN_MK2" -"TAOS_MK1" = "TIGUAN_MK2" -"POLO_MK6" = "GOLF_MK7" -"SEAT_LEON_MK3" = "GOLF_MK7" -"SEAT_ATECA_MK1" = "GOLF_MK7" +"VOLKSWAGEN_CRAFTER_MK2" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TROC_MK1" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TCROSS_MK1" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TOURAN_MK2" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TRANSPORTER_T61" = "VOLKSWAGEN_TIGUAN_MK2" +"AUDI_Q2_MK1" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TAOS_MK1" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_POLO_MK6" = "VOLKSWAGEN_GOLF_MK7" +"SEAT_LEON_MK3" = "VOLKSWAGEN_GOLF_MK7" +"SEAT_ATECA_MK1" = "VOLKSWAGEN_GOLF_MK7" -"CROSSTREK_HYBRID" = "IMPREZA_2020" -"FORESTER_HYBRID" = "IMPREZA_2020" -"LEGACY" = "OUTBACK" +"SUBARU_CROSSTREK_HYBRID" = "SUBARU_IMPREZA_2020" +"SUBARU_FORESTER_HYBRID" = "SUBARU_IMPREZA_2020" +"SUBARU_LEGACY" = "SUBARU_OUTBACK" # Old subarus don't have much data guessing it's like low torque impreza" -"OUTBACK_PREGLOBAL_2018" = "IMPREZA" -"OUTBACK_PREGLOBAL" = "IMPREZA" -"FORESTER_PREGLOBAL" = "IMPREZA" -"LEGACY_PREGLOBAL" = "IMPREZA" -"ASCENT" = "FORESTER" +"SUBARU_OUTBACK_PREGLOBAL_2018" = "SUBARU_IMPREZA" +"SUBARU_OUTBACK_PREGLOBAL" = "SUBARU_IMPREZA" +"SUBARU_FORESTER_PREGLOBAL" = "SUBARU_IMPREZA" +"SUBARU_LEGACY_PREGLOBAL" = "SUBARU_IMPREZA" +"SUBARU_ASCENT" = "SUBARU_FORESTER" diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index 2bb3fc3c34..f2d8a4a7bc 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -143,7 +143,7 @@ class CarController(CarControllerBase): can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False, self.distance_button)) # *** hud ui *** - if self.CP.carFingerprint != CAR.PRIUS_V: + if self.CP.carFingerprint != CAR.TOYOTA_PRIUS_V: # ui mesg is at 1Hz but we send asap if: # - there is something to display # - there is something to stop displaying diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index 8a20c57196..0efa065dc2 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -96,7 +96,7 @@ class CarState(CarStateBase): ret.leftBlinker = cp.vl["BLINKERS_STATE"]["TURN_SIGNALS"] == 1 ret.rightBlinker = cp.vl["BLINKERS_STATE"]["TURN_SIGNALS"] == 2 - if self.CP.carFingerprint != CAR.MIRAI: + if self.CP.carFingerprint != CAR.TOYOTA_MIRAI: ret.engineRpm = cp.vl["ENGINE_RPM"]["RPM"] ret.steeringTorque = cp.vl["STEER_TORQUE_SENSOR"]["STEER_TORQUE_DRIVER"] @@ -161,7 +161,7 @@ class CarState(CarStateBase): ret.leftBlindspot = (cp.vl["BSM"]["L_ADJACENT"] == 1) or (cp.vl["BSM"]["L_APPROACHING"] == 1) ret.rightBlindspot = (cp.vl["BSM"]["R_ADJACENT"] == 1) or (cp.vl["BSM"]["R_APPROACHING"] == 1) - if self.CP.carFingerprint != CAR.PRIUS_V: + if self.CP.carFingerprint != CAR.TOYOTA_PRIUS_V: self.lkas_hud = copy.copy(cp_cam.vl["LKAS_HUD"]) if self.CP.carFingerprint not in UNSUPPORTED_DSU_CAR: @@ -195,7 +195,7 @@ class CarState(CarStateBase): ("STEER_TORQUE_SENSOR", 50), ] - if CP.carFingerprint != CAR.MIRAI: + if CP.carFingerprint != CAR.TOYOTA_MIRAI: messages.append(("ENGINE_RPM", 42)) if CP.carFingerprint in UNSUPPORTED_DSU_CAR: @@ -232,7 +232,7 @@ class CarState(CarStateBase): def get_cam_can_parser(CP): messages = [] - if CP.carFingerprint != CAR.PRIUS_V: + if CP.carFingerprint != CAR.TOYOTA_PRIUS_V: messages += [ ("LKAS_HUD", 1), ] diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index a0d1ef20b2..1803b00255 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car.toyota.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.AVALON: { + CAR.TOYOTA_AVALON: { (Ecu.abs, 0x7b0, None): [ b'F152607060\x00\x00\x00\x00\x00\x00', ], @@ -30,7 +30,7 @@ FW_VERSIONS = { b'8646F0703000\x00\x00\x00\x00', ], }, - CAR.AVALON_2019: { + CAR.TOYOTA_AVALON_2019: { (Ecu.abs, 0x7b0, None): [ b'F152607110\x00\x00\x00\x00\x00\x00', b'F152607140\x00\x00\x00\x00\x00\x00', @@ -71,7 +71,7 @@ FW_VERSIONS = { b'8646F0702100\x00\x00\x00\x00', ], }, - CAR.AVALON_TSS2: { + CAR.TOYOTA_AVALON_TSS2: { (Ecu.abs, 0x7b0, None): [ b'\x01F152607240\x00\x00\x00\x00\x00\x00', b'\x01F152607250\x00\x00\x00\x00\x00\x00', @@ -95,7 +95,7 @@ FW_VERSIONS = { b'\x028646F4104100\x00\x00\x00\x008646G5301200\x00\x00\x00\x00', ], }, - CAR.CAMRY: { + CAR.TOYOTA_CAMRY: { (Ecu.engine, 0x700, None): [ b'\x018966306L3100\x00\x00\x00\x00', b'\x018966306L4200\x00\x00\x00\x00', @@ -222,7 +222,7 @@ FW_VERSIONS = { b'8646F0607100 ', ], }, - CAR.CAMRY_TSS2: { + CAR.TOYOTA_CAMRY_TSS2: { (Ecu.eps, 0x7a1, None): [ b'8965B33630\x00\x00\x00\x00\x00\x00', b'8965B33640\x00\x00\x00\x00\x00\x00', @@ -268,7 +268,7 @@ FW_VERSIONS = { b'\x028646F3305500\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, - CAR.CHR: { + CAR.TOYOTA_CHR: { (Ecu.engine, 0x700, None): [ b'\x01896631017100\x00\x00\x00\x00', b'\x01896631017200\x00\x00\x00\x00', @@ -353,7 +353,7 @@ FW_VERSIONS = { b'8646FF407100 ', ], }, - CAR.CHR_TSS2: { + CAR.TOYOTA_CHR_TSS2: { (Ecu.abs, 0x7b0, None): [ b'F152610041\x00\x00\x00\x00\x00\x00', b'F152610260\x00\x00\x00\x00\x00\x00', @@ -385,7 +385,7 @@ FW_VERSIONS = { b'\x028646FF413100\x00\x00\x00\x008646GF411100\x00\x00\x00\x00', ], }, - CAR.COROLLA: { + CAR.TOYOTA_COROLLA: { (Ecu.engine, 0x7e0, None): [ b'\x0230ZC2000\x00\x00\x00\x00\x00\x00\x00\x0050212000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x0230ZC2100\x00\x00\x00\x00\x00\x00\x00\x0050212000\x00\x00\x00\x00\x00\x00\x00\x00', @@ -419,7 +419,7 @@ FW_VERSIONS = { b'8646F0201200\x00\x00\x00\x00', ], }, - CAR.COROLLA_TSS2: { + CAR.TOYOTA_COROLLA_TSS2: { (Ecu.engine, 0x700, None): [ b'\x01896630A22000\x00\x00\x00\x00', b'\x01896630ZG2000\x00\x00\x00\x00', @@ -594,7 +594,7 @@ FW_VERSIONS = { b'\x028646F7605100\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, - CAR.HIGHLANDER: { + CAR.TOYOTA_HIGHLANDER: { (Ecu.engine, 0x700, None): [ b'\x01896630E09000\x00\x00\x00\x00', b'\x01896630E43000\x00\x00\x00\x00', @@ -650,7 +650,7 @@ FW_VERSIONS = { b'8646F0E01300\x00\x00\x00\x00', ], }, - CAR.HIGHLANDER_TSS2: { + CAR.TOYOTA_HIGHLANDER_TSS2: { (Ecu.eps, 0x7a1, None): [ b'8965B48241\x00\x00\x00\x00\x00\x00', b'8965B48310\x00\x00\x00\x00\x00\x00', @@ -796,7 +796,7 @@ FW_VERSIONS = { b'\x028646F5303400\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, - CAR.PRIUS: { + CAR.TOYOTA_PRIUS: { (Ecu.engine, 0x700, None): [ b'\x02896634761000\x00\x00\x00\x008966A4703000\x00\x00\x00\x00', b'\x02896634761100\x00\x00\x00\x008966A4703000\x00\x00\x00\x00', @@ -894,7 +894,7 @@ FW_VERSIONS = { b'8646F4705200\x00\x00\x00\x00', ], }, - CAR.PRIUS_V: { + CAR.TOYOTA_PRIUS_V: { (Ecu.abs, 0x7b0, None): [ b'F152647280\x00\x00\x00\x00\x00\x00', ], @@ -911,7 +911,7 @@ FW_VERSIONS = { b'8646F4703300\x00\x00\x00\x00', ], }, - CAR.RAV4: { + CAR.TOYOTA_RAV4: { (Ecu.engine, 0x7e0, None): [ b'\x02342Q1000\x00\x00\x00\x00\x00\x00\x00\x0054212000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x02342Q1100\x00\x00\x00\x00\x00\x00\x00\x0054212000\x00\x00\x00\x00\x00\x00\x00\x00', @@ -952,7 +952,7 @@ FW_VERSIONS = { b'8646F4204000\x00\x00\x00\x00', ], }, - CAR.RAV4H: { + CAR.TOYOTA_RAV4H: { (Ecu.engine, 0x7e0, None): [ b'\x02342N9000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x02342N9100\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', @@ -989,7 +989,7 @@ FW_VERSIONS = { b'8646F4204000\x00\x00\x00\x00', ], }, - CAR.RAV4_TSS2: { + CAR.TOYOTA_RAV4_TSS2: { (Ecu.engine, 0x700, None): [ b'\x01896630R58000\x00\x00\x00\x00', b'\x01896630R58100\x00\x00\x00\x00', @@ -1099,7 +1099,7 @@ FW_VERSIONS = { b'\x028646F4203800\x00\x00\x00\x008646G2601500\x00\x00\x00\x00', ], }, - CAR.RAV4_TSS2_2022: { + CAR.TOYOTA_RAV4_TSS2_2022: { (Ecu.abs, 0x7b0, None): [ b'\x01F15260R350\x00\x00\x00\x00\x00\x00', b'\x01F15260R361\x00\x00\x00\x00\x00\x00', @@ -1135,7 +1135,7 @@ FW_VERSIONS = { b'\x028646F0R02100\x00\x00\x00\x008646G0R01100\x00\x00\x00\x00', ], }, - CAR.RAV4_TSS2_2023: { + CAR.TOYOTA_RAV4_TSS2_2023: { (Ecu.abs, 0x7b0, None): [ b'\x01F15260R450\x00\x00\x00\x00\x00\x00', b'\x01F15260R51000\x00\x00\x00\x00', @@ -1167,7 +1167,7 @@ FW_VERSIONS = { b'\x028646F0R11000\x00\x00\x00\x008646G0R04000\x00\x00\x00\x00', ], }, - CAR.SIENNA: { + CAR.TOYOTA_SIENNA: { (Ecu.engine, 0x700, None): [ b'\x01896630832100\x00\x00\x00\x00', b'\x01896630832200\x00\x00\x00\x00', @@ -1591,7 +1591,7 @@ FW_VERSIONS = { b'\x028646F4810400\x00\x00\x00\x008646G2601400\x00\x00\x00\x00', ], }, - CAR.PRIUS_TSS2: { + CAR.TOYOTA_PRIUS_TSS2: { (Ecu.engine, 0x700, None): [ b'\x028966347B1000\x00\x00\x00\x008966A4703000\x00\x00\x00\x00', b'\x028966347C4000\x00\x00\x00\x008966A4703000\x00\x00\x00\x00', @@ -1622,7 +1622,7 @@ FW_VERSIONS = { b'\x028646F4712000\x00\x00\x00\x008646G2601500\x00\x00\x00\x00', ], }, - CAR.MIRAI: { + CAR.TOYOTA_MIRAI: { (Ecu.abs, 0x7d1, None): [ b'\x01898A36203000\x00\x00\x00\x00', ], @@ -1640,7 +1640,7 @@ FW_VERSIONS = { b'\x028646F6201400\x00\x00\x00\x008646G5301200\x00\x00\x00\x00', ], }, - CAR.ALPHARD_TSS2: { + CAR.TOYOTA_ALPHARD_TSS2: { (Ecu.engine, 0x7e0, None): [ b'\x0235870000\x00\x00\x00\x00\x00\x00\x00\x00A0202000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x0235879000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 424a885d53..4b4b0a6cc7 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -57,7 +57,7 @@ class CarInterface(CarInterfaceBase): ret.enableDsu = len(found_ecus) > 0 and Ecu.dsu not in found_ecus and candidate not in (NO_DSU_CAR | UNSUPPORTED_DSU_CAR) \ and not (ret.flags & ToyotaFlags.SMART_DSU) - if candidate == CAR.PRIUS: + if candidate == CAR.TOYOTA_PRIUS: stop_and_go = True # Only give steer angle deadzone to for bad angle sensor prius for fw in car_fw: @@ -69,12 +69,12 @@ class CarInterface(CarInterfaceBase): stop_and_go = True ret.wheelSpeedFactor = 1.035 - elif candidate in (CAR.AVALON, CAR.AVALON_2019, CAR.AVALON_TSS2): + elif candidate in (CAR.TOYOTA_AVALON, CAR.TOYOTA_AVALON_2019, CAR.TOYOTA_AVALON_TSS2): # starting from 2019, all Avalon variants have stop and go # https://engage.toyota.com/static/images/toyota_safety_sense/TSS_Applicability_Chart.pdf - stop_and_go = candidate != CAR.AVALON + stop_and_go = candidate != CAR.TOYOTA_AVALON - elif candidate in (CAR.RAV4_TSS2, CAR.RAV4_TSS2_2022, CAR.RAV4_TSS2_2023): + elif candidate in (CAR.TOYOTA_RAV4_TSS2, CAR.TOYOTA_RAV4_TSS2_2022, CAR.TOYOTA_RAV4_TSS2_2023): ret.lateralTuning.init('pid') ret.lateralTuning.pid.kiBP = [0.0] ret.lateralTuning.pid.kpBP = [0.0] @@ -91,7 +91,7 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 0.00004 break - elif candidate in (CAR.RAV4H, CAR.CHR, CAR.CAMRY, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_NX): + elif candidate in (CAR.TOYOTA_RAV4H, CAR.TOYOTA_CHR, CAR.TOYOTA_CAMRY, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_NX): # TODO: Some of these platforms are not advertised to have full range ACC, are they similar to SNG_WITHOUT_DSU cars? stop_and_go = True diff --git a/selfdrive/car/toyota/tests/test_toyota.py b/selfdrive/car/toyota/tests/test_toyota.py index 6a2476dff9..ba131a0185 100755 --- a/selfdrive/car/toyota/tests/test_toyota.py +++ b/selfdrive/car/toyota/tests/test_toyota.py @@ -24,7 +24,7 @@ class TestToyotaInterfaces(unittest.TestCase): def test_lta_platforms(self): # At this time, only RAV4 2023 is expected to use LTA/angle control - self.assertEqual(ANGLE_CONTROL_CAR, {CAR.RAV4_TSS2_2023}) + self.assertEqual(ANGLE_CONTROL_CAR, {CAR.TOYOTA_RAV4_TSS2_2023}) def test_tss2_dbc(self): # We make some assumptions about TSS2 platforms, @@ -43,13 +43,13 @@ class TestToyotaInterfaces(unittest.TestCase): self.assertEqual(len(missing_ecus), 0) # Some exceptions for other common ECUs - if car_model not in (CAR.ALPHARD_TSS2,): + if car_model not in (CAR.TOYOTA_ALPHARD_TSS2,): self.assertIn(Ecu.abs, present_ecus) - if car_model not in (CAR.MIRAI,): + if car_model not in (CAR.TOYOTA_MIRAI,): self.assertIn(Ecu.engine, present_ecus) - if car_model not in (CAR.PRIUS_V, CAR.LEXUS_CTH): + if car_model not in (CAR.TOYOTA_PRIUS_V, CAR.LEXUS_CTH): self.assertIn(Ecu.eps, present_ecus) @@ -85,9 +85,9 @@ class TestToyotaFingerprint(unittest.TestCase): for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): for platform_code_ecu in PLATFORM_CODE_ECUS: - if platform_code_ecu == Ecu.eps and car_model in (CAR.PRIUS_V, CAR.LEXUS_CTH,): + if platform_code_ecu == Ecu.eps and car_model in (CAR.TOYOTA_PRIUS_V, CAR.LEXUS_CTH,): continue - if platform_code_ecu == Ecu.abs and car_model in (CAR.ALPHARD_TSS2,): + if platform_code_ecu == Ecu.abs and car_model in (CAR.TOYOTA_ALPHARD_TSS2,): continue self.assertIn(platform_code_ecu, [e[0] for e in ecus]) diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index d8c28d8a8a..c20736d5bc 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -85,14 +85,14 @@ class ToyotaTSS2PlatformConfig(PlatformConfig): class CAR(Platforms): # Toyota - ALPHARD_TSS2 = ToyotaTSS2PlatformConfig( + TOYOTA_ALPHARD_TSS2 = ToyotaTSS2PlatformConfig( [ ToyotaCarDocs("Toyota Alphard 2019-20"), ToyotaCarDocs("Toyota Alphard Hybrid 2021"), ], CarSpecs(mass=4305. * CV.LB_TO_KG, wheelbase=3.0, steerRatio=14.2, tireStiffnessFactor=0.444), ) - AVALON = PlatformConfig( + TOYOTA_AVALON = PlatformConfig( [ ToyotaCarDocs("Toyota Avalon 2016", "Toyota Safety Sense P"), ToyotaCarDocs("Toyota Avalon 2017-18"), @@ -100,22 +100,22 @@ class CAR(Platforms): CarSpecs(mass=3505. * CV.LB_TO_KG, wheelbase=2.82, steerRatio=14.8, tireStiffnessFactor=0.7983), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), ) - AVALON_2019 = PlatformConfig( + TOYOTA_AVALON_2019 = PlatformConfig( [ ToyotaCarDocs("Toyota Avalon 2019-21"), ToyotaCarDocs("Toyota Avalon Hybrid 2019-21"), ], - AVALON.specs, + TOYOTA_AVALON.specs, dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), ) - AVALON_TSS2 = ToyotaTSS2PlatformConfig( # TSS 2.5 + TOYOTA_AVALON_TSS2 = ToyotaTSS2PlatformConfig( # TSS 2.5 [ ToyotaCarDocs("Toyota Avalon 2022"), ToyotaCarDocs("Toyota Avalon Hybrid 2022"), ], - AVALON.specs, + TOYOTA_AVALON.specs, ) - CAMRY = PlatformConfig( + TOYOTA_CAMRY = PlatformConfig( [ ToyotaCarDocs("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), ToyotaCarDocs("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), @@ -124,14 +124,14 @@ class CAR(Platforms): dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_DSU, ) - CAMRY_TSS2 = ToyotaTSS2PlatformConfig( # TSS 2.5 + TOYOTA_CAMRY_TSS2 = ToyotaTSS2PlatformConfig( # TSS 2.5 [ ToyotaCarDocs("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), ToyotaCarDocs("Toyota Camry Hybrid 2021-24"), ], - CAMRY.specs, + TOYOTA_CAMRY.specs, ) - CHR = PlatformConfig( + TOYOTA_CHR = PlatformConfig( [ ToyotaCarDocs("Toyota C-HR 2017-20"), ToyotaCarDocs("Toyota C-HR Hybrid 2017-20"), @@ -140,21 +140,21 @@ class CAR(Platforms): dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_DSU, ) - CHR_TSS2 = ToyotaTSS2PlatformConfig( + TOYOTA_CHR_TSS2 = ToyotaTSS2PlatformConfig( [ ToyotaCarDocs("Toyota C-HR 2021"), ToyotaCarDocs("Toyota C-HR Hybrid 2021-22"), ], - CHR.specs, + TOYOTA_CHR.specs, flags=ToyotaFlags.RADAR_ACC, ) - COROLLA = PlatformConfig( + TOYOTA_COROLLA = PlatformConfig( [ToyotaCarDocs("Toyota Corolla 2017-19")], CarSpecs(mass=2860. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=18.27, tireStiffnessFactor=0.444), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) # LSS2 Lexus UX Hybrid is same as a TSS2 Corolla Hybrid - COROLLA_TSS2 = ToyotaTSS2PlatformConfig( + TOYOTA_COROLLA_TSS2 = ToyotaTSS2PlatformConfig( [ ToyotaCarDocs("Toyota Corolla 2020-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), ToyotaCarDocs("Toyota Corolla Cross (Non-US only) 2020-23", min_enable_speed=7.5), @@ -167,7 +167,7 @@ class CAR(Platforms): ], CarSpecs(mass=3060. * CV.LB_TO_KG, wheelbase=2.67, steerRatio=13.9, tireStiffnessFactor=0.444), ) - HIGHLANDER = PlatformConfig( + TOYOTA_HIGHLANDER = PlatformConfig( [ ToyotaCarDocs("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), ToyotaCarDocs("Toyota Highlander Hybrid 2017-19"), @@ -176,14 +176,14 @@ class CAR(Platforms): dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, ) - HIGHLANDER_TSS2 = ToyotaTSS2PlatformConfig( + TOYOTA_HIGHLANDER_TSS2 = ToyotaTSS2PlatformConfig( [ ToyotaCarDocs("Toyota Highlander 2020-23"), ToyotaCarDocs("Toyota Highlander Hybrid 2020-23"), ], - HIGHLANDER.specs, + TOYOTA_HIGHLANDER.specs, ) - PRIUS = PlatformConfig( + TOYOTA_PRIUS = PlatformConfig( [ ToyotaCarDocs("Toyota Prius 2016", "Toyota Safety Sense P", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), ToyotaCarDocs("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), @@ -192,20 +192,20 @@ class CAR(Platforms): CarSpecs(mass=3045. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.74, tireStiffnessFactor=0.6371), dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), ) - PRIUS_V = PlatformConfig( + TOYOTA_PRIUS_V = PlatformConfig( [ToyotaCarDocs("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED)], CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, ) - PRIUS_TSS2 = ToyotaTSS2PlatformConfig( + TOYOTA_PRIUS_TSS2 = ToyotaTSS2PlatformConfig( [ ToyotaCarDocs("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), ToyotaCarDocs("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), ], CarSpecs(mass=3115. * CV.LB_TO_KG, wheelbase=2.70002, steerRatio=13.4, tireStiffnessFactor=0.6371), ) - RAV4 = PlatformConfig( + TOYOTA_RAV4 = PlatformConfig( [ ToyotaCarDocs("Toyota RAV4 2016", "Toyota Safety Sense P"), ToyotaCarDocs("Toyota RAV4 2017-18") @@ -213,43 +213,43 @@ class CAR(Platforms): CarSpecs(mass=3650. * CV.LB_TO_KG, wheelbase=2.65, steerRatio=16.88, tireStiffnessFactor=0.5533), dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), ) - RAV4H = PlatformConfig( + TOYOTA_RAV4H = PlatformConfig( [ ToyotaCarDocs("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), ToyotaCarDocs("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") ], - RAV4.specs, + TOYOTA_RAV4.specs, dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), flags=ToyotaFlags.NO_STOP_TIMER, ) - RAV4_TSS2 = ToyotaTSS2PlatformConfig( + TOYOTA_RAV4_TSS2 = ToyotaTSS2PlatformConfig( [ ToyotaCarDocs("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), ToyotaCarDocs("Toyota RAV4 Hybrid 2019-21"), ], CarSpecs(mass=3585. * CV.LB_TO_KG, wheelbase=2.68986, steerRatio=14.3, tireStiffnessFactor=0.7933), ) - RAV4_TSS2_2022 = ToyotaTSS2PlatformConfig( + TOYOTA_RAV4_TSS2_2022 = ToyotaTSS2PlatformConfig( [ ToyotaCarDocs("Toyota RAV4 2022"), ToyotaCarDocs("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), ], - RAV4_TSS2.specs, + TOYOTA_RAV4_TSS2.specs, flags=ToyotaFlags.RADAR_ACC, ) - RAV4_TSS2_2023 = ToyotaTSS2PlatformConfig( + TOYOTA_RAV4_TSS2_2023 = ToyotaTSS2PlatformConfig( [ ToyotaCarDocs("Toyota RAV4 2023-24"), ToyotaCarDocs("Toyota RAV4 Hybrid 2023-24"), ], - RAV4_TSS2.specs, + TOYOTA_RAV4_TSS2.specs, flags=ToyotaFlags.RADAR_ACC | ToyotaFlags.ANGLE_CONTROL, ) - MIRAI = ToyotaTSS2PlatformConfig( # TSS 2.5 + TOYOTA_MIRAI = ToyotaTSS2PlatformConfig( # TSS 2.5 [ToyotaCarDocs("Toyota Mirai 2021")], CarSpecs(mass=4300. * CV.LB_TO_KG, wheelbase=2.91, steerRatio=14.8, tireStiffnessFactor=0.8), ) - SIENNA = PlatformConfig( + TOYOTA_SIENNA = PlatformConfig( [ToyotaCarDocs("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED)], CarSpecs(mass=4590. * CV.LB_TO_KG, wheelbase=3.03, steerRatio=15.5, tireStiffnessFactor=0.444), dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), @@ -340,32 +340,33 @@ class CAR(Platforms): # (addr, cars, bus, 1/freq*100, vl) STATIC_DSU_MSGS = [ - (0x128, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.AVALON), 1, 3, b'\xf4\x01\x90\x83\x00\x37'), - (0x128, (CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES), 1, 3, b'\x03\x00\x20\x00\x00\x52'), - (0x141, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 1, 2, b'\x00\x00\x00\x46'), - (0x160, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 1, 7, b'\x00\x00\x08\x12\x01\x31\x9c\x51'), - (0x161, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.AVALON, CAR.PRIUS_V), + (0x128, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_AVALON), \ + 1, 3, b'\xf4\x01\x90\x83\x00\x37'), + (0x128, (CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES), 1, 3, b'\x03\x00\x20\x00\x00\x52'), + (0x141, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 1, 2, b'\x00\x00\x00\x46'), + (0x160, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 1, 7, b'\x00\x00\x08\x12\x01\x31\x9c\x51'), + (0x161, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_AVALON, CAR.TOYOTA_PRIUS_V), 1, 7, b'\x00\x1e\x00\x00\x00\x80\x07'), - (0X161, (CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES), 1, 7, b'\x00\x1e\x00\xd4\x00\x00\x5b'), - (0x283, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 0, 3, b'\x00\x00\x00\x00\x00\x00\x8c'), - (0x2E6, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX), 0, 3, b'\xff\xf8\x00\x08\x7f\xe0\x00\x4e'), - (0x2E7, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX), 0, 3, b'\xa8\x9c\x31\x9c\x00\x00\x00\x02'), - (0x33E, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX), 0, 20, b'\x0f\xff\x26\x40\x00\x1f\x00'), - (0x344, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 0, 5, b'\x00\x00\x01\x00\x00\x00\x00\x50'), - (0x365, (CAR.PRIUS, CAR.LEXUS_NX, CAR.HIGHLANDER), 0, 20, b'\x00\x00\x00\x80\x03\x00\x08'), - (0x365, (CAR.RAV4, CAR.RAV4H, CAR.COROLLA, CAR.AVALON, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.LEXUS_RX, - CAR.PRIUS_V), 0, 20, b'\x00\x00\x00\x80\xfc\x00\x08'), - (0x366, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.HIGHLANDER), 0, 20, b'\x00\x00\x4d\x82\x40\x02\x00'), - (0x366, (CAR.RAV4, CAR.COROLLA, CAR.AVALON, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), + (0X161, (CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES), 1, 7, b'\x00\x1e\x00\xd4\x00\x00\x5b'), + (0x283, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 0, 3, b'\x00\x00\x00\x00\x00\x00\x8c'), + (0x2E6, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX), 0, 3, b'\xff\xf8\x00\x08\x7f\xe0\x00\x4e'), + (0x2E7, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX), 0, 3, b'\xa8\x9c\x31\x9c\x00\x00\x00\x02'), + (0x33E, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX), 0, 20, b'\x0f\xff\x26\x40\x00\x1f\x00'), + (0x344, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 0, 5, b'\x00\x00\x01\x00\x00\x00\x00\x50'), + (0x365, (CAR.TOYOTA_PRIUS, CAR.LEXUS_NX, CAR.TOYOTA_HIGHLANDER), 0, 20, b'\x00\x00\x00\x80\x03\x00\x08'), + (0x365, (CAR.TOYOTA_RAV4, CAR.TOYOTA_RAV4H, CAR.TOYOTA_COROLLA, CAR.TOYOTA_AVALON, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.LEXUS_RX, + CAR.TOYOTA_PRIUS_V), 0, 20, b'\x00\x00\x00\x80\xfc\x00\x08'), + (0x366, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_HIGHLANDER), 0, 20, b'\x00\x00\x4d\x82\x40\x02\x00'), + (0x366, (CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_AVALON, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 0, 20, b'\x00\x72\x07\xff\x09\xfe\x00'), - (0x470, (CAR.PRIUS, CAR.LEXUS_RX), 1, 100, b'\x00\x00\x02\x7a'), - (0x470, (CAR.HIGHLANDER, CAR.RAV4H, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 1, 100, b'\x00\x00\x01\x79'), - (0x4CB, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 0, 100, b'\x0c\x00\x00\x00\x00\x00\x00\x00'), + (0x470, (CAR.TOYOTA_PRIUS, CAR.LEXUS_RX), 1, 100, b'\x00\x00\x02\x7a'), + (0x470, (CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_RAV4H, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 1, 100, b'\x00\x00\x01\x79'), + (0x4CB, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 0, 100, b'\x0c\x00\x00\x00\x00\x00\x00\x00'), ] @@ -513,9 +514,9 @@ FW_QUERY_CONFIG = FwQueryConfig( ], non_essential_ecus={ # FIXME: On some models, abs can sometimes be missing - Ecu.abs: [CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_IS, CAR.ALPHARD_TSS2], + Ecu.abs: [CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_SIENNA, CAR.LEXUS_IS, CAR.TOYOTA_ALPHARD_TSS2], # On some models, the engine can show on two different addresses - Ecu.engine: [CAR.HIGHLANDER, CAR.CAMRY, CAR.COROLLA_TSS2, CAR.CHR, CAR.CHR_TSS2, CAR.LEXUS_IS, + Ecu.engine: [CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_CAMRY, CAR.TOYOTA_COROLLA_TSS2, CAR.TOYOTA_CHR, CAR.TOYOTA_CHR_TSS2, CAR.LEXUS_IS, CAR.LEXUS_IS_TSS2, CAR.LEXUS_RC, CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2, CAR.LEXUS_RX, CAR.LEXUS_RX_TSS2], }, extra_ecus=[ @@ -557,7 +558,8 @@ FW_QUERY_CONFIG = FwQueryConfig( STEER_THRESHOLD = 100 # These cars have non-standard EPS torque scale factors. All others are 73 -EPS_SCALE = defaultdict(lambda: 73, {CAR.PRIUS: 66, CAR.COROLLA: 88, CAR.LEXUS_IS: 77, CAR.LEXUS_RC: 77, CAR.LEXUS_CTH: 100, CAR.PRIUS_V: 100}) +EPS_SCALE = defaultdict(lambda: 73, + {CAR.TOYOTA_PRIUS: 66, CAR.TOYOTA_COROLLA: 88, CAR.LEXUS_IS: 77, CAR.LEXUS_RC: 77, CAR.LEXUS_CTH: 100, CAR.TOYOTA_PRIUS_V: 100}) # Toyota/Lexus Safety Sense 2.0 and 2.5 TSS2_CAR = CAR.with_flags(ToyotaFlags.TSS2) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index e39e65b52c..71aee67815 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -7,7 +7,7 @@ Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.ARTEON_MK1: { + CAR.VOLKSWAGEN_ARTEON_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x873G0906259AH\xf1\x890001', b'\xf1\x873G0906259F \xf1\x890004', @@ -49,7 +49,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.ATLAS_MK1: { + CAR.VOLKSWAGEN_ATLAS_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8703H906026AA\xf1\x899970', b'\xf1\x8703H906026AG\xf1\x899973', @@ -101,7 +101,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572P \xf1\x890682', ], }, - CAR.CADDY_MK3: { + CAR.VOLKSWAGEN_CADDY_MK3: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906027T \xf1\x892363', ], @@ -112,7 +112,7 @@ FW_VERSIONS = { b'\xf1\x877N0907572C \xf1\x890211\xf1\x82\x0155', ], }, - CAR.CRAFTER_MK2: { + CAR.VOLKSWAGEN_CRAFTER_MK2: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906056BP\xf1\x894729', b'\xf1\x8704L906056EK\xf1\x896391', @@ -134,7 +134,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572M \xf1\x890233', ], }, - CAR.GOLF_MK7: { + CAR.VOLKSWAGEN_GOLF_MK7: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906016A \xf1\x897697', b'\xf1\x8704E906016AD\xf1\x895758', @@ -325,7 +325,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572S \xf1\x890780', ], }, - CAR.JETTA_MK7: { + CAR.VOLKSWAGEN_JETTA_MK7: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906024AK\xf1\x899937', b'\xf1\x8704E906024AS\xf1\x899912', @@ -377,7 +377,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.PASSAT_MK8: { + CAR.VOLKSWAGEN_PASSAT_MK8: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8703N906026E \xf1\x892114', b'\xf1\x8704E906023AH\xf1\x893379', @@ -450,7 +450,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.PASSAT_NMS: { + CAR.VOLKSWAGEN_PASSAT_NMS: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8706K906016C \xf1\x899609', b'\xf1\x8706K906016E \xf1\x899830', @@ -472,7 +472,7 @@ FW_VERSIONS = { b'\xf1\x877N0907572C \xf1\x890211\xf1\x82\x0152', ], }, - CAR.POLO_MK6: { + CAR.VOLKSWAGEN_POLO_MK6: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704C906025H \xf1\x895177', b'\xf1\x8705C906032J \xf1\x891702', @@ -496,7 +496,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572R \xf1\x890372', ], }, - CAR.SHARAN_MK2: { + CAR.VOLKSWAGEN_SHARAN_MK2: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906016HE\xf1\x894635', ], @@ -507,7 +507,7 @@ FW_VERSIONS = { b'\xf1\x877N0907572C \xf1\x890211\xf1\x82\x0153', ], }, - CAR.TAOS_MK1: { + CAR.VOLKSWAGEN_TAOS_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906025CK\xf1\x892228', b'\xf1\x8704E906027NJ\xf1\x891445', @@ -537,7 +537,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572T \xf1\x890383', ], }, - CAR.TCROSS_MK1: { + CAR.VOLKSWAGEN_TCROSS_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704C906025AK\xf1\x897053', ], @@ -554,7 +554,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572T \xf1\x890383', ], }, - CAR.TIGUAN_MK2: { + CAR.VOLKSWAGEN_TIGUAN_MK2: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8703N906026D \xf1\x893680', b'\xf1\x8704E906024AP\xf1\x891461', @@ -641,7 +641,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572T \xf1\x890383', ], }, - CAR.TOURAN_MK2: { + CAR.VOLKSWAGEN_TOURAN_MK2: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906025BE\xf1\x890720', b'\xf1\x8704E906027HQ\xf1\x893746', @@ -671,7 +671,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.TRANSPORTER_T61: { + CAR.VOLKSWAGEN_TRANSPORTER_T61: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906056AG\xf1\x899970', b'\xf1\x8704L906056AL\xf1\x899970', @@ -703,7 +703,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572R \xf1\x890372', ], }, - CAR.TROC_MK1: { + CAR.VOLKSWAGEN_TROC_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8705E906018AT\xf1\x899640', b'\xf1\x8705E906018CK\xf1\x890863', diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index c8116de579..ab4008d643 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -167,7 +167,7 @@ class VWCarDocs(CarDocs): if "SKODA" in CP.carFingerprint: self.footnotes.append(Footnote.SKODA_HEATED_WINDSHIELD) - if CP.carFingerprint in (CAR.CRAFTER_MK2, CAR.TRANSPORTER_T61): + if CP.carFingerprint in (CAR.VOLKSWAGEN_CRAFTER_MK2, CAR.VOLKSWAGEN_TRANSPORTER_T61): self.car_parts = CarParts([Device.threex_angled_mount, CarHarness.j533]) @@ -177,7 +177,7 @@ class VWCarDocs(CarDocs): # Exception: SEAT Leon and SEAT Ateca share a chassis code class CAR(Platforms): - ARTEON_MK1 = VolkswagenMQBPlatformConfig( # Chassis AN + VOLKSWAGEN_ARTEON_MK1 = VolkswagenMQBPlatformConfig( # Chassis AN [ VWCarDocs("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), VWCarDocs("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), @@ -186,7 +186,7 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1733, wheelbase=2.84), ) - ATLAS_MK1 = VolkswagenMQBPlatformConfig( # Chassis CA + VOLKSWAGEN_ATLAS_MK1 = VolkswagenMQBPlatformConfig( # Chassis CA [ VWCarDocs("Volkswagen Atlas 2018-23"), VWCarDocs("Volkswagen Atlas Cross Sport 2020-22"), @@ -196,14 +196,14 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=2011, wheelbase=2.98), ) - CADDY_MK3 = VolkswagenPQPlatformConfig( # Chassis 2K + VOLKSWAGEN_CADDY_MK3 = VolkswagenPQPlatformConfig( # Chassis 2K [ VWCarDocs("Volkswagen Caddy 2019"), VWCarDocs("Volkswagen Caddy Maxi 2019"), ], VolkswagenCarSpecs(mass=1613, wheelbase=2.6, minSteerSpeed=21 * CV.KPH_TO_MS), ) - CRAFTER_MK2 = VolkswagenMQBPlatformConfig( # Chassis SY/SZ + VOLKSWAGEN_CRAFTER_MK2 = VolkswagenMQBPlatformConfig( # Chassis SY/SZ [ VWCarDocs("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), VWCarDocs("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), @@ -213,7 +213,7 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), ) - GOLF_MK7 = VolkswagenMQBPlatformConfig( # Chassis 5G/AU/BA/BE + VOLKSWAGEN_GOLF_MK7 = VolkswagenMQBPlatformConfig( # Chassis 5G/AU/BA/BE [ VWCarDocs("Volkswagen e-Golf 2014-20"), VWCarDocs("Volkswagen Golf 2015-20", auto_resume=False), @@ -226,14 +226,14 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1397, wheelbase=2.62), ) - JETTA_MK7 = VolkswagenMQBPlatformConfig( # Chassis BU + VOLKSWAGEN_JETTA_MK7 = VolkswagenMQBPlatformConfig( # Chassis BU [ VWCarDocs("Volkswagen Jetta 2018-24"), VWCarDocs("Volkswagen Jetta GLI 2021-24"), ], VolkswagenCarSpecs(mass=1328, wheelbase=2.71), ) - PASSAT_MK8 = VolkswagenMQBPlatformConfig( # Chassis 3G + VOLKSWAGEN_PASSAT_MK8 = VolkswagenMQBPlatformConfig( # Chassis 3G [ VWCarDocs("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), VWCarDocs("Volkswagen Passat Alltrack 2015-22"), @@ -241,51 +241,51 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1551, wheelbase=2.79), ) - PASSAT_NMS = VolkswagenPQPlatformConfig( # Chassis A3 + VOLKSWAGEN_PASSAT_NMS = VolkswagenPQPlatformConfig( # Chassis A3 [VWCarDocs("Volkswagen Passat NMS 2017-22")], VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS), ) - POLO_MK6 = VolkswagenMQBPlatformConfig( # Chassis AW + VOLKSWAGEN_POLO_MK6 = VolkswagenMQBPlatformConfig( # Chassis AW [ VWCarDocs("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), VWCarDocs("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), ], VolkswagenCarSpecs(mass=1230, wheelbase=2.55), ) - SHARAN_MK2 = VolkswagenPQPlatformConfig( # Chassis 7N + VOLKSWAGEN_SHARAN_MK2 = VolkswagenPQPlatformConfig( # Chassis 7N [ VWCarDocs("Volkswagen Sharan 2018-22"), VWCarDocs("SEAT Alhambra 2018-20"), ], VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50*CV.KPH_TO_MS), ) - TAOS_MK1 = VolkswagenMQBPlatformConfig( # Chassis B2 + VOLKSWAGEN_TAOS_MK1 = VolkswagenMQBPlatformConfig( # Chassis B2 [VWCarDocs("Volkswagen Taos 2022-23")], VolkswagenCarSpecs(mass=1498, wheelbase=2.69), ) - TCROSS_MK1 = VolkswagenMQBPlatformConfig( # Chassis C1 + VOLKSWAGEN_TCROSS_MK1 = VolkswagenMQBPlatformConfig( # Chassis C1 [VWCarDocs("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1150, wheelbase=2.60), ) - TIGUAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis AD/BW + VOLKSWAGEN_TIGUAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis AD/BW [ VWCarDocs("Volkswagen Tiguan 2018-24"), VWCarDocs("Volkswagen Tiguan eHybrid 2021-23"), ], VolkswagenCarSpecs(mass=1715, wheelbase=2.74), ) - TOURAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis 1T + VOLKSWAGEN_TOURAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis 1T [VWCarDocs("Volkswagen Touran 2016-23")], VolkswagenCarSpecs(mass=1516, wheelbase=2.79), ) - TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( # Chassis 7H/7L + VOLKSWAGEN_TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( # Chassis 7H/7L [ VWCarDocs("Volkswagen Caravelle 2020"), VWCarDocs("Volkswagen California 2021-23"), ], VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), ) - TROC_MK1 = VolkswagenMQBPlatformConfig( # Chassis A1 + VOLKSWAGEN_TROC_MK1 = VolkswagenMQBPlatformConfig( # Chassis A1 [VWCarDocs("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1413, wheelbase=2.63), ) diff --git a/selfdrive/controls/lib/tests/test_latcontrol.py b/selfdrive/controls/lib/tests/test_latcontrol.py index 866270ca60..838023af72 100755 --- a/selfdrive/controls/lib/tests/test_latcontrol.py +++ b/selfdrive/controls/lib/tests/test_latcontrol.py @@ -17,7 +17,7 @@ from openpilot.common.mock.generators import generate_liveLocationKalman class TestLatControl(unittest.TestCase): - @parameterized.expand([(HONDA.CIVIC, LatControlPID), (TOYOTA.RAV4, LatControlTorque), (NISSAN.LEAF, LatControlAngle)]) + @parameterized.expand([(HONDA.HONDA_CIVIC, LatControlPID), (TOYOTA.TOYOTA_RAV4, LatControlTorque), (NISSAN.NISSAN_LEAF, LatControlAngle)]) def test_saturation(self, car_name, controller): CarInterface, CarController, CarState = interfaces[car_name] CP = CarInterface.get_non_essential_params(car_name) diff --git a/selfdrive/controls/lib/tests/test_vehicle_model.py b/selfdrive/controls/lib/tests/test_vehicle_model.py index d016e87527..c3997afdf3 100755 --- a/selfdrive/controls/lib/tests/test_vehicle_model.py +++ b/selfdrive/controls/lib/tests/test_vehicle_model.py @@ -12,7 +12,7 @@ from openpilot.selfdrive.controls.lib.vehicle_model import VehicleModel, dyn_ss_ class TestVehicleModel(unittest.TestCase): def setUp(self): - CP = CarInterface.get_non_essential_params(CAR.CIVIC) + CP = CarInterface.get_non_essential_params(CAR.HONDA_CIVIC) self.VM = VehicleModel(CP) def test_round_trip_yaw_rate(self): diff --git a/selfdrive/controls/tests/test_leads.py b/selfdrive/controls/tests/test_leads.py index 268d9c47a7..a06387a087 100755 --- a/selfdrive/controls/tests/test_leads.py +++ b/selfdrive/controls/tests/test_leads.py @@ -25,7 +25,7 @@ class TestLeads(unittest.TestCase): return msgs msgs = [m for _ in range(3) for m in single_iter_pkg()] - out = replay_process_with_name("radard", msgs, fingerprint=TOYOTA.COROLLA_TSS2) + out = replay_process_with_name("radard", msgs, fingerprint=TOYOTA.TOYOTA_COROLLA_TSS2) states = [m for m in out if m.which() == "radarState"] failures = [not state.valid and len(state.radarState.radarErrors) for state in states] diff --git a/selfdrive/controls/tests/test_startup.py b/selfdrive/controls/tests/test_startup.py index 34d14fbb39..23cc96a2e4 100644 --- a/selfdrive/controls/tests/test_startup.py +++ b/selfdrive/controls/tests/test_startup.py @@ -39,12 +39,12 @@ CX5_FW_VERSIONS = [ # TODO: test EventName.startup for release branches # officially supported car - (EventName.startupMaster, TOYOTA.COROLLA, COROLLA_FW_VERSIONS, "toyota"), - (EventName.startupMaster, TOYOTA.COROLLA, COROLLA_FW_VERSIONS, "toyota"), + (EventName.startupMaster, TOYOTA.TOYOTA_COROLLA, COROLLA_FW_VERSIONS, "toyota"), + (EventName.startupMaster, TOYOTA.TOYOTA_COROLLA, COROLLA_FW_VERSIONS, "toyota"), # dashcamOnly car - (EventName.startupNoControl, MAZDA.CX5, CX5_FW_VERSIONS, "mazda"), - (EventName.startupNoControl, MAZDA.CX5, CX5_FW_VERSIONS, "mazda"), + (EventName.startupNoControl, MAZDA.MAZDA_CX5, CX5_FW_VERSIONS, "mazda"), + (EventName.startupNoControl, MAZDA.MAZDA_CX5, CX5_FW_VERSIONS, "mazda"), # unrecognized car with no fw (EventName.startupNoFw, None, None, ""), @@ -55,8 +55,8 @@ CX5_FW_VERSIONS = [ (EventName.startupNoCar, None, COROLLA_FW_VERSIONS[:1], "toyota"), # fuzzy match - (EventName.startupMaster, TOYOTA.COROLLA, COROLLA_FW_VERSIONS_FUZZY, "toyota"), - (EventName.startupMaster, TOYOTA.COROLLA, COROLLA_FW_VERSIONS_FUZZY, "toyota"), + (EventName.startupMaster, TOYOTA.TOYOTA_COROLLA, COROLLA_FW_VERSIONS_FUZZY, "toyota"), + (EventName.startupMaster, TOYOTA.TOYOTA_COROLLA, COROLLA_FW_VERSIONS_FUZZY, "toyota"), ]) def test_startup_alert(expected_event, car_model, fw_versions, brand): controls_sock = messaging.sub_sock("controlsState") diff --git a/selfdrive/test/helpers.py b/selfdrive/test/helpers.py index 44090cce1a..43eadd38f4 100644 --- a/selfdrive/test/helpers.py +++ b/selfdrive/test/helpers.py @@ -14,7 +14,7 @@ from openpilot.system.version import training_version, terms_version def set_params_enabled(): - os.environ['FINGERPRINT'] = "COROLLA_TSS2" + os.environ['FINGERPRINT'] = "TOYOTA_COROLLA_TSS2" os.environ['LOGPRINT'] = "debug" params = Params() diff --git a/selfdrive/test/longitudinal_maneuvers/plant.py b/selfdrive/test/longitudinal_maneuvers/plant.py index 3fb8b6bab0..ac54967f88 100755 --- a/selfdrive/test/longitudinal_maneuvers/plant.py +++ b/selfdrive/test/longitudinal_maneuvers/plant.py @@ -50,7 +50,7 @@ class Plant: from openpilot.selfdrive.car.honda.values import CAR from openpilot.selfdrive.car.honda.interface import CarInterface - self.planner = LongitudinalPlanner(CarInterface.get_non_essential_params(CAR.CIVIC), init_v=self.speed) + self.planner = LongitudinalPlanner(CarInterface.get_non_essential_params(CAR.HONDA_CIVIC), init_v=self.speed) @property def current_time(self): diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index e88f62c10c..152f281948 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -73,8 +73,8 @@ def migrate_pandaStates(lr): all_msgs = [] # TODO: safety param migration should be handled automatically safety_param_migration = { - "PRIUS": EPS_SCALE["PRIUS"] | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL, - "RAV4": EPS_SCALE["RAV4"] | Panda.FLAG_TOYOTA_ALT_BRAKE, + "TOYOTA_PRIUS": EPS_SCALE["TOYOTA_PRIUS"] | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL, + "TOYOTA_RAV4": EPS_SCALE["TOYOTA_RAV4"] | Panda.FLAG_TOYOTA_ALT_BRAKE, "KIA_EV6": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CANFD_HDA2, } diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index cd0876f2af..7defed3f68 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -9338c27947c1d8c1aa8e74ccc2a646e541f1ca8c \ No newline at end of file +4e5e37be9d70450154f8b100ed88151bb3612331 \ No newline at end of file diff --git a/selfdrive/test/process_replay/test_fuzzy.py b/selfdrive/test/process_replay/test_fuzzy.py index adff06f88a..6c81119fbf 100755 --- a/selfdrive/test/process_replay/test_fuzzy.py +++ b/selfdrive/test/process_replay/test_fuzzy.py @@ -27,7 +27,7 @@ class TestFuzzProcesses(unittest.TestCase): msgs = FuzzyGenerator.get_random_event_msg(data.draw, events=cfg.pubs, real_floats=True) lr = [log.Event.new_message(**m).as_reader() for m in msgs] cfg.timeout = 5 - pr.replay_process(cfg, lr, fingerprint=TOYOTA.COROLLA_TSS2, disable_progress=True) + pr.replay_process(cfg, lr, fingerprint=TOYOTA.TOYOTA_COROLLA_TSS2, disable_progress=True) if __name__ == "__main__": unittest.main() diff --git a/selfdrive/test/process_replay/test_processes.py b/selfdrive/test/process_replay/test_processes.py index ce1daddf42..5fa80f0e09 100755 --- a/selfdrive/test/process_replay/test_processes.py +++ b/selfdrive/test/process_replay/test_processes.py @@ -17,27 +17,27 @@ from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.helpers import save_log source_segments = [ - ("BODY", "937ccb7243511b65|2022-05-24--16-03-09--1"), # COMMA.BODY - ("HYUNDAI", "02c45f73a2e5c6e9|2021-01-01--19-08-22--1"), # HYUNDAI.SONATA - ("HYUNDAI2", "d545129f3ca90f28|2022-11-07--20-43-08--3"), # HYUNDAI.KIA_EV6 (+ QCOM GPS) - ("TOYOTA", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA.PRIUS - ("TOYOTA2", "0982d79ebb0de295|2021-01-03--20-03-36--6"), # TOYOTA.RAV4 - ("TOYOTA3", "f7d7e3538cda1a2a|2021-08-16--08-55-34--6"), # TOYOTA.COROLLA_TSS2 - ("HONDA", "eb140f119469d9ab|2021-06-12--10-46-24--27"), # HONDA.CIVIC (NIDEC) - ("HONDA2", "7d2244f34d1bbcda|2021-06-25--12-25-37--26"), # HONDA.ACCORD (BOSCH) - ("CHRYSLER", "4deb27de11bee626|2021-02-20--11-28-55--8"), # CHRYSLER.PACIFICA_2018_HYBRID + ("BODY", "937ccb7243511b65|2022-05-24--16-03-09--1"), # COMMA.COMMA_BODY + ("HYUNDAI", "02c45f73a2e5c6e9|2021-01-01--19-08-22--1"), # HYUNDAI.HYUNDAI_SONATA + ("HYUNDAI2", "d545129f3ca90f28|2022-11-07--20-43-08--3"), # HYUNDAI.HYUNDAI_KIA_EV6 (+ QCOM GPS) + ("TOYOTA", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA.TOYOTA_PRIUS + ("TOYOTA2", "0982d79ebb0de295|2021-01-03--20-03-36--6"), # TOYOTA.TOYOTA_RAV4 + ("TOYOTA3", "f7d7e3538cda1a2a|2021-08-16--08-55-34--6"), # TOYOTA.TOYOTA_COROLLA_TSS2 + ("HONDA", "eb140f119469d9ab|2021-06-12--10-46-24--27"), # HONDA.HONDA_CIVIC (NIDEC) + ("HONDA2", "7d2244f34d1bbcda|2021-06-25--12-25-37--26"), # HONDA.HONDA_ACCORD (BOSCH) + ("CHRYSLER", "4deb27de11bee626|2021-02-20--11-28-55--8"), # CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID ("RAM", "17fc16d840fe9d21|2023-04-26--13-28-44--5"), # CHRYSLER.RAM_1500_5TH_GEN - ("SUBARU", "341dccd5359e3c97|2022-09-12--10-35-33--3"), # SUBARU.OUTBACK - ("GM", "0c58b6a25109da2b|2021-02-23--16-35-50--11"), # GM.VOLT - ("GM2", "376bf99325883932|2022-10-27--13-41-22--1"), # GM.BOLT_EUV - ("NISSAN", "35336926920f3571|2021-02-12--18-38-48--46"), # NISSAN.XTRAIL - ("VOLKSWAGEN", "de9592456ad7d144|2021-06-29--11-00-15--6"), # VOLKSWAGEN.GOLF - ("MAZDA", "bd6a637565e91581|2021-10-30--15-14-53--4"), # MAZDA.CX9_2021 - ("FORD", "54827bf84c38b14f|2023-01-26--21-59-07--4"), # FORD.BRONCO_SPORT_MK1 + ("SUBARU", "341dccd5359e3c97|2022-09-12--10-35-33--3"), # SUBARU.SUBARU_OUTBACK + ("GM", "0c58b6a25109da2b|2021-02-23--16-35-50--11"), # GM.CHEVROLET_VOLT + ("GM2", "376bf99325883932|2022-10-27--13-41-22--1"), # GM.CHEVROLET_BOLT_EUV + ("NISSAN", "35336926920f3571|2021-02-12--18-38-48--46"), # NISSAN.NISSAN_XTRAIL + ("VOLKSWAGEN", "de9592456ad7d144|2021-06-29--11-00-15--6"), # VOLKSWAGEN.VOLKSWAGEN_GOLF + ("MAZDA", "bd6a637565e91581|2021-10-30--15-14-53--4"), # MAZDA.MAZDA_CX9_2021 + ("FORD", "54827bf84c38b14f|2023-01-26--21-59-07--4"), # FORD.FORD_BRONCO_SPORT_MK1 # Enable when port is tested and dashcamOnly is no longer set - #("TESLA", "bb50caf5f0945ab1|2021-06-19--17-20-18--3"), # TESLA.AP2_MODELS - #("VOLKSWAGEN2", "3cfdec54aa035f3f|2022-07-19--23-45-10--2"), # VOLKSWAGEN.PASSAT_NMS + #("TESLA", "bb50caf5f0945ab1|2021-06-19--17-20-18--3"), # TESLA.TESLA_AP2_MODELS + #("VOLKSWAGEN2", "3cfdec54aa035f3f|2022-07-19--23-45-10--2"), # VOLKSWAGEN.VOLKSWAGEN_PASSAT_NMS ] segments = [ diff --git a/selfdrive/test/process_replay/test_regen.py b/selfdrive/test/process_replay/test_regen.py index a0343d7d2d..d989635497 100755 --- a/selfdrive/test/process_replay/test_regen.py +++ b/selfdrive/test/process_replay/test_regen.py @@ -11,7 +11,7 @@ from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.framereader import FrameReader TESTED_SEGMENTS = [ - ("PRIUS_C2", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA.PRIUS: NEO, pandaStateDEPRECATED, no peripheralState, sensorEventsDEPRECATED + ("PRIUS_C2", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA.TOYOTA_PRIUS: NEO, pandaStateDEPRECATED, no peripheralState, sensorEventsDEPRECATED # Enable these once regen on CI becomes faster or use them for different tests running controlsd in isolation # ("MAZDA_C3", "bd6a637565e91581|2021-10-30--15-14-53--4"), # MAZDA.CX9_2021: TICI, incomplete managerState # ("FORD_C3", "54827bf84c38b14f|2023-01-26--21-59-07--4"), # FORD.BRONCO_SPORT_MK1: TICI diff --git a/selfdrive/test/profiling/profiler.py b/selfdrive/test/profiling/profiler.py index 6571825418..2cd547171a 100755 --- a/selfdrive/test/profiling/profiler.py +++ b/selfdrive/test/profiling/profiler.py @@ -16,8 +16,8 @@ from openpilot.selfdrive.car.volkswagen.values import CAR as VW BASE_URL = "https://commadataci.blob.core.windows.net/openpilotci/" CARS = { - 'toyota': ("0982d79ebb0de295|2021-01-03--20-03-36/6", TOYOTA.RAV4), - 'honda': ("0982d79ebb0de295|2021-01-08--10-13-10/6", HONDA.CIVIC), + 'toyota': ("0982d79ebb0de295|2021-01-03--20-03-36/6", TOYOTA.TOYOTA_RAV4), + 'honda': ("0982d79ebb0de295|2021-01-08--10-13-10/6", HONDA.HONDA_CIVIC), "vw": ("ef895f46af5fd73f|2021-05-22--14-06-35/6", VW.AUDI_A3_MK3), } diff --git a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb index 9376f6a253..99efc45aca 100644 --- a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb +++ b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -27,18 +27,18 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "PLATFORM_CODES = {\n", " Ecu.abs: {\n", " 0: {\n", - " b'\\xa5': [CAR.ASCENT, CAR.ASCENT_2023],\n", - " b'\\xa2': [CAR.IMPREZA, CAR.IMPREZA_2020, CAR.CROSSTREK_HYBRID],\n", - " b'\\xa1': [CAR.OUTBACK, CAR.LEGACY, CAR.OUTBACK_2023],\n", - " b'\\xa3': [CAR.FORESTER, CAR.FORESTER_HYBRID, CAR.FORESTER_2022],\n", - " b'z': [CAR.IMPREZA],\n", + " b'\\xa5': [CAR.SUBARU_ASCENT, CAR.SUBARU_ASCENT_2023],\n", + " b'\\xa2': [CAR.SUBARU_IMPREZA, CAR.SUBARU_IMPREZA_2020, CAR.SUBARU_CROSSTREK_HYBRID],\n", + " b'\\xa1': [CAR.SUBARU_OUTBACK, CAR.SUBARU_LEGACY, CAR.SUBARU_OUTBACK_2023],\n", + " b'\\xa3': [CAR.SUBARU_FORESTER, CAR.SUBARU_FORESTER_HYBRID, CAR.SUBARU_FORESTER_2022],\n", + " b'z': [CAR.SUBARU_IMPREZA],\n", " }\n", " }\n", "}\n", diff --git a/tools/car_porting/examples/subaru_long_accel.ipynb b/tools/car_porting/examples/subaru_long_accel.ipynb index 24470b44d2..9d18a114df 100644 --- a/tools/car_porting/examples/subaru_long_accel.ipynb +++ b/tools/car_porting/examples/subaru_long_accel.ipynb @@ -9,7 +9,7 @@ "segments = [\n", " \"d9df6f87e8feff94|2023-03-28--17-41-10/1:12\"\n", "]\n", - "platform = \"SUBARU OUTBACK 6TH GEN\"\n" + "platform = \"SUBARU_OUTBACK\"\n" ] }, { @@ -56,7 +56,7 @@ " es_status_history.append(copy.copy(cp.vl[\"ES_Status\"]))\n", "\n", " acceleration_history.append(last_acc)\n", - " \n", + "\n", " if msg.which() == \"carState\":\n", " last_acc = msg.carState.aEgo" ] diff --git a/tools/car_porting/examples/subaru_steer_temp_fault.ipynb b/tools/car_porting/examples/subaru_steer_temp_fault.ipynb index 46d8dc413e..3d5055cbc2 100644 --- a/tools/car_porting/examples/subaru_steer_temp_fault.ipynb +++ b/tools/car_porting/examples/subaru_steer_temp_fault.ipynb @@ -11,7 +11,7 @@ "segments = [\n", " \"c3d1ccb52f5f9d65|2023-07-22--01-23-20/6:10\",\n", "]\n", - "platform = \"SUBARU OUTBACK 6TH GEN\"" + "platform = \"SUBARU_OUTBACK\"" ] }, { @@ -52,7 +52,7 @@ " for msg in can_msgs:\n", " cp.update_strings([msg.as_builder().to_bytes()])\n", " steering_torque_history.append(copy.copy(cp.vl[\"Steering_Torque\"]))\n", - " \n", + "\n", " steer_warning_last = False\n", " for i, steering_torque_msg in enumerate(steering_torque_history):\n", " steer_warning = steering_torque_msg[\"Steer_Warning\"]\n", diff --git a/tools/lib/comma_car_segments.py b/tools/lib/comma_car_segments.py index 9027fec637..78825504e6 100644 --- a/tools/lib/comma_car_segments.py +++ b/tools/lib/comma_car_segments.py @@ -1,13 +1,22 @@ import os import requests + # Forks with additional car support can fork the commaCarSegments repo on huggingface or host the LFS files themselves COMMA_CAR_SEGMENTS_REPO = os.environ.get("COMMA_CAR_SEGMENTS_REPO", "https://huggingface.co/datasets/commaai/commaCarSegments") COMMA_CAR_SEGMENTS_BRANCH = os.environ.get("COMMA_CAR_SEGMENTS_BRANCH", "main") COMMA_CAR_SEGMENTS_LFS_INSTANCE = os.environ.get("COMMA_CAR_SEGMENTS_LFS_INSTANCE", COMMA_CAR_SEGMENTS_REPO) def get_comma_car_segments_database(): - return requests.get(get_repo_raw_url("database.json")).json() + from openpilot.selfdrive.car.fingerprints import MIGRATION + + database = requests.get(get_repo_raw_url("database.json")).json() + + ret = {} + for platform in database: + ret[MIGRATION.get(platform, platform)] = database[platform] + + return ret # Helpers related to interfacing with the commaCarSegments repository, which contains a collection of public segments for users to perform validation on. diff --git a/tools/lib/tests/test_comma_car_segments.py b/tools/lib/tests/test_comma_car_segments.py index 5c8906f92d..91bab94343 100644 --- a/tools/lib/tests/test_comma_car_segments.py +++ b/tools/lib/tests/test_comma_car_segments.py @@ -1,7 +1,7 @@ import pytest import unittest - import requests +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.tools.lib.comma_car_segments import get_comma_car_segments_database, get_url from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.route import SegmentRange @@ -19,7 +19,7 @@ class TestCommaCarSegments(unittest.TestCase): def test_download_segment(self): database = get_comma_car_segments_database() - fp = "FORESTER" + fp = "SUBARU_FORESTER" segment = database[fp][0] @@ -31,10 +31,8 @@ class TestCommaCarSegments(unittest.TestCase): self.assertEqual(resp.status_code, 200) lr = LogReader(url) - CP = lr.first("carParams") - - self.assertEqual(CP.carFingerprint, fp) + self.assertEqual(MIGRATION.get(CP.carFingerprint, CP.carFingerprint), fp) if __name__ == "__main__": From 9ed5c78a805263908df030d7037efdfecb9323d2 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 20 Mar 2024 10:03:23 +0800 Subject: [PATCH 258/599] cabana: horizontal scrolling with Shift+wheel (#31929) --- tools/cabana/messageswidget.cc | 12 +++++++++++- tools/cabana/messageswidget.h | 6 +++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc index 0cec551017..720553dcb3 100644 --- a/tools/cabana/messageswidget.cc +++ b/tools/cabana/messageswidget.cc @@ -85,7 +85,9 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget Byte color
constant changing
increasing
- decreasing + decreasing
+ Shortcuts
+ Horizontal Scrolling:  shift+wheel  )")); } @@ -391,6 +393,14 @@ void MessageView::updateBytesSectionSize() { header()->resizeSection(MessageListModel::Column::DATA, delegate->sizeForBytes(max_bytes).width()); } +void MessageView::wheelEvent(QWheelEvent *event) { + if (event->modifiers() == Qt::ShiftModifier) { + QApplication::sendEvent(horizontalScrollBar(), event); + } else { + QTreeView::wheelEvent(event); + } +} + // MessageViewHeader MessageViewHeader::MessageViewHeader(QWidget *parent) : QHeaderView(Qt::Horizontal, parent) { diff --git a/tools/cabana/messageswidget.h b/tools/cabana/messageswidget.h index 4f54941c64..e7f1f8c033 100644 --- a/tools/cabana/messageswidget.h +++ b/tools/cabana/messageswidget.h @@ -12,6 +12,7 @@ #include #include #include +#include #include "tools/cabana/dbc/dbcmanager.h" #include "tools/cabana/streams/abstractstream.h" @@ -65,10 +66,13 @@ class MessageView : public QTreeView { Q_OBJECT public: MessageView(QWidget *parent) : QTreeView(parent) {} + void updateBytesSectionSize(); + +protected: void drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const override {} void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()) override; - void updateBytesSectionSize(); + void wheelEvent(QWheelEvent *event) override; }; class MessageViewHeader : public QHeaderView { From 8f174d82d6d1b9719b267cdc2106a02b63c075e9 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 19 Mar 2024 23:10:20 -0500 Subject: [PATCH 259/599] Toyota: RAV4 Hybrid cannot do stop and go as stock (#31931) * rav4 also like this * docs --- docs/CARS.md | 4 ++-- selfdrive/car/toyota/interface.py | 2 +- selfdrive/car/toyota/values.py | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 251ceb4780..35a77fd78f 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -256,8 +256,8 @@ A supported vehicle is one that just works when you install a comma device. All |Toyota|RAV4 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 2023-24|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|RAV4 Hybrid 2017-18|All|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|RAV4 Hybrid 2017-18|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 Hybrid 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 Hybrid 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 Hybrid 2023-24|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 4b4b0a6cc7..3ea05f9fef 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -91,7 +91,7 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 0.00004 break - elif candidate in (CAR.TOYOTA_RAV4H, CAR.TOYOTA_CHR, CAR.TOYOTA_CAMRY, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_NX): + elif candidate in (CAR.TOYOTA_CHR, CAR.TOYOTA_CAMRY, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_NX): # TODO: Some of these platforms are not advertised to have full range ACC, are they similar to SNG_WITHOUT_DSU cars? stop_and_go = True diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index c20736d5bc..179e3f97e3 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -220,7 +220,8 @@ class CAR(Platforms): ], TOYOTA_RAV4.specs, dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - flags=ToyotaFlags.NO_STOP_TIMER, + # Note that the ICE RAV4 does not respect positive acceleration commands under 19 mph + flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, ) TOYOTA_RAV4_TSS2 = ToyotaTSS2PlatformConfig( [ From 6d8534758f545660cd68665a7c36678f1f874826 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 20 Mar 2024 00:39:30 -0500 Subject: [PATCH 260/599] Honda: allow fingerprinting without comma power for some platforms (#31933) * pending * notes * these are ready! * do odyssey * Freed * ACURA_RDX_3G * HONDA_HRV * new lines * sort * clean up * comment new line comment new line --- selfdrive/car/honda/values.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 533e01e9b4..d0df8e2da4 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -307,16 +307,20 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.programmedFuelInjection: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - Ecu.transmission: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - Ecu.srs: [CAR.HONDA_ACCORD], - Ecu.eps: [CAR.HONDA_ACCORD], - Ecu.vsa: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - Ecu.combinationMeter: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - Ecu.gateway: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - Ecu.electricBrakeBooster: [CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - Ecu.shiftByWire: [CAR.HONDA_ACCORD], # existence correlates with transmission type for ICE - Ecu.hud: [CAR.HONDA_ACCORD], # existence correlates with trim level + Ecu.programmedFuelInjection: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD], + Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD], + Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.combinationMeter: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, + CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_ODYSSEY_CHN], + Ecu.gateway: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FREED, + CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_ODYSSEY_CHN], + Ecu.electricBrakeBooster: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + # existence correlates with transmission type for Accord ICE + Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD], + # existence correlates with trim level + Ecu.hud: [CAR.HONDA_ACCORD], }, extra_ecus=[ # The only other ECU on PT bus accessible by camera on radarless Civic From 1b930ae616ac31d0fc7aa63eeb1f96866f6bf1ac Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 20 Mar 2024 00:47:08 -0500 Subject: [PATCH 261/599] Honda E: allow fingerprinting without comma power (#31934) HONDA_E --- selfdrive/car/honda/values.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index d0df8e2da4..32846f87a2 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -309,16 +309,16 @@ FW_QUERY_CONFIG = FwQueryConfig( non_essential_ecus={ Ecu.programmedFuelInjection: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD], - Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD], - Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], + Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], + Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_E], Ecu.combinationMeter: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, - CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_ODYSSEY_CHN], + CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_E, CAR.HONDA_ODYSSEY_CHN], Ecu.gateway: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FREED, - CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_ODYSSEY_CHN], + CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_E, CAR.HONDA_ODYSSEY_CHN], Ecu.electricBrakeBooster: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], # existence correlates with transmission type for Accord ICE - Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD], + Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], # existence correlates with trim level Ecu.hud: [CAR.HONDA_ACCORD], }, From 23e8ad73979735479131dfb303e249b861829468 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 20 Mar 2024 10:35:33 -0700 Subject: [PATCH 262/599] cleanup pedal crc --- selfdrive/car/__init__.py | 14 -------------- tools/sim/lib/simulated_car.py | 3 --- 2 files changed, 17 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index f7d6140640..3898d46534 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -165,20 +165,6 @@ def common_fault_avoidance(fault_condition: bool, request: bool, above_limit_fra return above_limit_frames, request -def crc8_pedal(data): - crc = 0xFF # standard init value - poly = 0xD5 # standard crc8: x8+x7+x6+x4+x2+1 - size = len(data) - for i in range(size - 1, -1, -1): - crc ^= data[i] - for _ in range(8): - if ((crc & 0x80) != 0): - crc = ((crc << 1) ^ poly) & 0xFF - else: - crc <<= 1 - return crc - - def make_can_msg(addr, dat, bus): return [addr, 0, dat, bus] diff --git a/tools/sim/lib/simulated_car.py b/tools/sim/lib/simulated_car.py index 9148d0ddb2..746886ba43 100644 --- a/tools/sim/lib/simulated_car.py +++ b/tools/sim/lib/simulated_car.py @@ -4,7 +4,6 @@ from opendbc.can.packer import CANPacker from opendbc.can.parser import CANParser from openpilot.common.params import Params from openpilot.selfdrive.boardd.boardd_api_impl import can_list_to_can_capnp -from openpilot.selfdrive.car import crc8_pedal from openpilot.tools.sim.lib.common import SimulatorState @@ -55,8 +54,6 @@ class SimulatedCar: "INTERCEPTOR_GAS": simulator_state.user_gas * 2**12, "INTERCEPTOR_GAS2": simulator_state.user_gas * 2**12, } - checksum = crc8_pedal(self.packer.make_can_msg("GAS_SENSOR", 0, values)[2][:-1]) - values["CHECKSUM_PEDAL"] = checksum msg.append(self.packer.make_can_msg("GAS_SENSOR", 0, values)) msg.append(self.packer.make_can_msg("GEARBOX", 0, {"GEAR": 4, "GEAR_SHIFTER": 8})) From 90ff0dd04728c55237a71ec99ece7adcd03c1e21 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Wed, 20 Mar 2024 17:57:28 +0000 Subject: [PATCH 263/599] test_models: migrate fingerprint (#31936) --- selfdrive/car/tests/test_models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index f561fa2ad8..69220ae2b9 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -15,7 +15,7 @@ from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import gen_empty_fingerprint -from openpilot.selfdrive.car.fingerprints import all_known_cars +from openpilot.selfdrive.car.fingerprints import all_known_cars, MIGRATION from openpilot.selfdrive.car.car_helpers import FRAME_FINGERPRINT, interfaces from openpilot.selfdrive.car.honda.values import CAR as HONDA, HondaFlags from openpilot.selfdrive.car.tests.routes import non_tested_cars, routes, CarTestRoute @@ -95,7 +95,8 @@ class TestCarModelBase(unittest.TestCase): if msg.carParams.openpilotLongitudinalControl: experimental_long = True if cls.platform is None and not cls.ci: - cls.platform = msg.carParams.carFingerprint + live_fingerprint = msg.carParams.carFingerprint + cls.platform = MIGRATION.get(live_fingerprint, live_fingerprint) # Log which can frame the panda safety mode left ELM327, for CAN validity checks elif msg.which() == 'pandaStates': From 1f424bf7dcbe13a6a60212816cfd3057da6f5a1f Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 20 Mar 2024 13:57:41 -0400 Subject: [PATCH 264/599] cabana: migrate dbc map (#31920) * fix cabana * within platform map --- selfdrive/car/fingerprints.py | 14 ++++++++++++++ selfdrive/car/values.py | 8 +------- tools/cabana/dbc/generate_dbc_json.py | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index 977df6bc9f..e25b5486a0 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -1,3 +1,4 @@ +from typing import Any, Callable from openpilot.selfdrive.car.interfaces import get_interface_attr from openpilot.selfdrive.car.body.values import CAR as BODY from openpilot.selfdrive.car.chrysler.values import CAR as CHRYSLER @@ -10,6 +11,7 @@ from openpilot.selfdrive.car.nissan.values import CAR as NISSAN from openpilot.selfdrive.car.subaru.values import CAR as SUBARU from openpilot.selfdrive.car.tesla.values import CAR as TESLA from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA +from openpilot.selfdrive.car.values import PLATFORMS, Platform from openpilot.selfdrive.car.volkswagen.values import CAR as VW FW_VERSIONS = get_interface_attr('FW_VERSIONS', combine_brands=True, ignore_none=True) @@ -336,3 +338,15 @@ MIGRATION = { "SKODA SCALA 1ST GEN": VW.SKODA_SCALA_MK1, "SKODA SUPERB 3RD GEN": VW.SKODA_SUPERB_MK3, } + + +MapFunc = Callable[[Platform], Any] + + +def create_platform_map(func: MapFunc): + ret = {str(platform): func(platform) for platform in PLATFORMS.values() if func(platform) is not None} + + for m in MIGRATION: + ret[m] = ret[MIGRATION[m]] + + return ret diff --git a/selfdrive/car/values.py b/selfdrive/car/values.py index 0c8249838b..dfbcf3b74f 100644 --- a/selfdrive/car/values.py +++ b/selfdrive/car/values.py @@ -1,4 +1,4 @@ -from typing import Any, Callable, cast +from typing import cast from openpilot.selfdrive.car.body.values import CAR as BODY from openpilot.selfdrive.car.chrysler.values import CAR as CHRYSLER from openpilot.selfdrive.car.ford.values import CAR as FORD @@ -17,9 +17,3 @@ Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN BRANDS = [BODY, CHRYSLER, FORD, GM, HONDA, HYUNDAI, MAZDA, MOCK, NISSAN, SUBARU, TESLA, TOYOTA, VOLKSWAGEN] PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in cast(list[Platform], brand)} - -MapFunc = Callable[[Platform], Any] - - -def create_platform_map(func: MapFunc): - return {str(platform): func(platform) for platform in PLATFORMS.values() if func(platform) is not None} diff --git a/tools/cabana/dbc/generate_dbc_json.py b/tools/cabana/dbc/generate_dbc_json.py index dec1766a7e..deda0909c4 100755 --- a/tools/cabana/dbc/generate_dbc_json.py +++ b/tools/cabana/dbc/generate_dbc_json.py @@ -2,7 +2,7 @@ import argparse import json -from openpilot.selfdrive.car.values import create_platform_map +from openpilot.selfdrive.car.fingerprints import create_platform_map def generate_dbc_json() -> str: From d75c32eaaaf4c7e1858a3b31238ffb35e7a67b5e Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 20 Mar 2024 17:59:31 +0000 Subject: [PATCH 265/599] and juggler --- tools/plotjuggler/juggle.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/plotjuggler/juggle.py b/tools/plotjuggler/juggle.py index 0caf5a18ff..fd26020bf9 100755 --- a/tools/plotjuggler/juggle.py +++ b/tools/plotjuggler/juggle.py @@ -11,6 +11,7 @@ import argparse from functools import partial from openpilot.common.basedir import BASEDIR +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.tools.lib.helpers import save_log from openpilot.tools.lib.logreader import LogReader, ReadMode @@ -82,7 +83,7 @@ def juggle_route(route_or_segment_name, can, layout, dbc=None): for cp in [m for m in all_data if m.which() == 'carParams']: try: DBC = __import__(f"openpilot.selfdrive.car.{cp.carParams.carName}.values", fromlist=['DBC']).DBC - dbc = DBC[cp.carParams.carFingerprint]['pt'] + dbc = DBC[MIGRATION.get(cp.carParams.carFingerprint, cp.carParams.carFingerprint)]['pt'] except Exception: pass break From b489550b7ff8866bda726b97283efe7dfa00f0e3 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 20 Mar 2024 18:03:04 +0000 Subject: [PATCH 266/599] Revert "and juggler" This reverts commit d75c32eaaaf4c7e1858a3b31238ffb35e7a67b5e. --- tools/plotjuggler/juggle.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/plotjuggler/juggle.py b/tools/plotjuggler/juggle.py index fd26020bf9..0caf5a18ff 100755 --- a/tools/plotjuggler/juggle.py +++ b/tools/plotjuggler/juggle.py @@ -11,7 +11,6 @@ import argparse from functools import partial from openpilot.common.basedir import BASEDIR -from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.tools.lib.helpers import save_log from openpilot.tools.lib.logreader import LogReader, ReadMode @@ -83,7 +82,7 @@ def juggle_route(route_or_segment_name, can, layout, dbc=None): for cp in [m for m in all_data if m.which() == 'carParams']: try: DBC = __import__(f"openpilot.selfdrive.car.{cp.carParams.carName}.values", fromlist=['DBC']).DBC - dbc = DBC[MIGRATION.get(cp.carParams.carFingerprint, cp.carParams.carFingerprint)]['pt'] + dbc = DBC[cp.carParams.carFingerprint]['pt'] except Exception: pass break From a0b589eda9c749c697fa4db80b6129b2545e8fee Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 20 Mar 2024 17:35:19 -0500 Subject: [PATCH 267/599] Honda: allow fingerprinting without comma power for more platforms (#31935) * 4 more platforms * only the first is missing srs?! * vsa didn't respond on these 8 routes * acura is good! * do CRV Hybrid * CRV is already done * new line * Revert "new line" This reverts commit 411c92c77b695d3df716f84b6f302fa0f791d555. --- selfdrive/car/honda/values.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 32846f87a2..a050cf8e2a 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -311,14 +311,14 @@ FW_QUERY_CONFIG = FwQueryConfig( Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], - Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_E], - Ecu.combinationMeter: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, - CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_E, CAR.HONDA_ODYSSEY_CHN], - Ecu.gateway: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FREED, - CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_E, CAR.HONDA_ODYSSEY_CHN], + Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E], + Ecu.combinationMeter: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, + CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_ODYSSEY_CHN], + Ecu.gateway: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, CAR.HONDA_FREED, + CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_ODYSSEY_CHN], Ecu.electricBrakeBooster: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], # existence correlates with transmission type for Accord ICE - Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], + Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E], # existence correlates with trim level Ecu.hud: [CAR.HONDA_ACCORD], }, From 1a03da9df336c136c7bf0e93cb2d2f3731f89555 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 20 Mar 2024 18:19:18 -0500 Subject: [PATCH 268/599] Honda Ridgeline and Insight: allow fingerprinting without comma power (#31938) * Ridgeline and Insight * ridgeline * Insight --- selfdrive/car/honda/values.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index a050cf8e2a..7a8c4314ac 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -311,14 +311,15 @@ FW_QUERY_CONFIG = FwQueryConfig( Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], - Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E], + Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, + CAR.HONDA_E, CAR.HONDA_INSIGHT], Ecu.combinationMeter: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, - CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_ODYSSEY_CHN], + CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY_CHN], Ecu.gateway: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, CAR.HONDA_FREED, - CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_ODYSSEY_CHN], + CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY_CHN], Ecu.electricBrakeBooster: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], # existence correlates with transmission type for Accord ICE - Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E], + Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT], # existence correlates with trim level Ecu.hud: [CAR.HONDA_ACCORD], }, From 38d03b997958effea805a6c3860d2c5edaf2ae65 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 20 Mar 2024 19:43:58 -0400 Subject: [PATCH 269/599] add get_build_metadata function (#31923) * version * Get build metadata * two lines * channel * cwd * default to unknown * dataclass --- common/git.py | 16 ++++++++-------- common/run.py | 8 ++++---- system/version.py | 42 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 13 deletions(-) diff --git a/common/git.py b/common/git.py index e15a5051d2..1ab8b87099 100644 --- a/common/git.py +++ b/common/git.py @@ -4,23 +4,23 @@ from openpilot.common.run import run_cmd, run_cmd_default @cache -def get_commit(branch: str = "HEAD") -> str: - return run_cmd_default(["git", "rev-parse", branch]) +def get_commit(cwd: str = None, branch: str = "HEAD") -> str: + return run_cmd_default(["git", "rev-parse", branch], cwd=cwd) @cache -def get_commit_date(commit: str = "HEAD") -> str: - return run_cmd_default(["git", "show", "--no-patch", "--format='%ct %ci'", commit]) +def get_commit_date(cwd: str = None, commit: str = "HEAD") -> str: + return run_cmd_default(["git", "show", "--no-patch", "--format='%ct %ci'", commit], cwd=cwd) @cache -def get_short_branch() -> str: - return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"]) +def get_short_branch(cwd: str = None) -> str: + return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=cwd) @cache -def get_branch() -> str: - return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"]) +def get_branch(cwd: str = None) -> str: + return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], cwd=cwd) @cache diff --git a/common/run.py b/common/run.py index 25abe98c41..c1a36bf041 100644 --- a/common/run.py +++ b/common/run.py @@ -1,13 +1,13 @@ import subprocess -def run_cmd(cmd: list[str]) -> str: - return subprocess.check_output(cmd, encoding='utf8').strip() +def run_cmd(cmd: list[str], cwd=None) -> str: + return subprocess.check_output(cmd, encoding='utf8', cwd=cwd).strip() -def run_cmd_default(cmd: list[str], default: str = "") -> str: +def run_cmd_default(cmd: list[str], default: str = "", cwd=None) -> str: try: - return run_cmd(cmd) + return run_cmd(cmd, cwd=cwd) except subprocess.CalledProcessError: return default diff --git a/system/version.py b/system/version.py index 7ae8313089..8866026152 100755 --- a/system/version.py +++ b/system/version.py @@ -1,17 +1,22 @@ #!/usr/bin/env python3 +from dataclasses import dataclass +import json import os +import pathlib import subprocess from openpilot.common.basedir import BASEDIR from openpilot.common.swaglog import cloudlog from openpilot.common.utils import cache -from openpilot.common.git import get_origin, get_branch, get_short_branch, get_normalized_origin, get_commit_date +from openpilot.common.git import get_commit, get_origin, get_branch, get_short_branch, get_normalized_origin, get_commit_date RELEASE_BRANCHES = ['release3-staging', 'release3', 'nightly'] TESTED_BRANCHES = RELEASE_BRANCHES + ['devel', 'devel-staging'] +BUILD_METADATA_FILENAME = "build.json" + training_version: bytes = b"0.2.0" terms_version: bytes = b"2" @@ -75,6 +80,41 @@ def is_dirty() -> bool: return dirty +@dataclass(frozen=True) +class OpenpilotMetadata: + version: str + release_notes: str + git_commit: str + + +@dataclass(frozen=True) +class BuildMetadata: + channel: str + openpilot: OpenpilotMetadata + + + +def get_build_metadata(path: str = BASEDIR) -> BuildMetadata | None: + build_metadata_path = pathlib.Path(path) / BUILD_METADATA_FILENAME + + if build_metadata_path.exists(): + build_metadata = json.loads(build_metadata_path.read_text()) + openpilot_metadata = build_metadata.get("openpilot", {}) + + channel = build_metadata.get("channel", "unknown") + version = openpilot_metadata.get("version", "unknown") + release_notes = openpilot_metadata.get("release_notes", "unknown") + git_commit = openpilot_metadata.get("git_commit", "unknown") + return BuildMetadata(channel, OpenpilotMetadata(version, release_notes, git_commit)) + + git_folder = pathlib.Path(path) / ".git" + + if git_folder.exists(): + return BuildMetadata(get_short_branch(path), OpenpilotMetadata(get_version(path), get_release_notes(path), get_commit(path))) + + return None + + if __name__ == "__main__": from openpilot.common.params import Params From 0a30af327d3de444dfb69e5180626a1dde80bd99 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 20 Mar 2024 22:08:12 -0500 Subject: [PATCH 270/599] Honda Pilot: allow fingerprinting without comma power (#31945) * pilot * pilot * clean up --- selfdrive/car/honda/values.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 7a8c4314ac..cf0aef8ce3 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -307,8 +307,8 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.programmedFuelInjection: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], + Ecu.programmedFuelInjection: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_PILOT], + Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_PILOT], Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, @@ -316,10 +316,11 @@ FW_QUERY_CONFIG = FwQueryConfig( Ecu.combinationMeter: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY_CHN], Ecu.gateway: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, CAR.HONDA_FREED, - CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY_CHN], + CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, + CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_PILOT], Ecu.electricBrakeBooster: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], # existence correlates with transmission type for Accord ICE - Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT], + Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_PILOT], # existence correlates with trim level Ecu.hud: [CAR.HONDA_ACCORD], }, From 2be012aa39a84e475d1c098220948e527cc4f842 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 20 Mar 2024 23:31:53 -0500 Subject: [PATCH 271/599] Honda: allow fingerprinting without comma power (#31926) * pending * acura ilx * do odyssey * clean up --- selfdrive/car/honda/values.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index cf0aef8ce3..1f59bd24d0 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -313,10 +313,10 @@ FW_QUERY_CONFIG = FwQueryConfig( Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT], - Ecu.combinationMeter: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, + Ecu.combinationMeter: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY_CHN], - Ecu.gateway: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, CAR.HONDA_FREED, - CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, + Ecu.gateway: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, CAR.HONDA_FREED, + CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_PILOT], Ecu.electricBrakeBooster: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], # existence correlates with transmission type for Accord ICE From 35b31df7f716d4d5de045d6dd5305572c20d01f9 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 21 Mar 2024 12:34:09 +0800 Subject: [PATCH 272/599] util/timeAgo: add missing translation (#31944) * add missing translation * update languages --- selfdrive/ui/qt/util.cc | 2 +- selfdrive/ui/translations/main_ar.ts | 4 ++++ selfdrive/ui/translations/main_de.ts | 4 ++++ selfdrive/ui/translations/main_fr.ts | 4 ++++ selfdrive/ui/translations/main_ja.ts | 4 ++++ selfdrive/ui/translations/main_ko.ts | 4 ++++ selfdrive/ui/translations/main_pt-BR.ts | 4 ++++ selfdrive/ui/translations/main_th.ts | 4 ++++ selfdrive/ui/translations/main_tr.ts | 4 ++++ selfdrive/ui/translations/main_zh-CHS.ts | 4 ++++ selfdrive/ui/translations/main_zh-CHT.ts | 4 ++++ 11 files changed, 41 insertions(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/util.cc b/selfdrive/ui/qt/util.cc index bc3c494fa7..9138f8bca5 100644 --- a/selfdrive/ui/qt/util.cc +++ b/selfdrive/ui/qt/util.cc @@ -61,7 +61,7 @@ QString timeAgo(const QDateTime &date) { QString s; if (diff < 60) { - s = "now"; + s = QObject::tr("now"); } else if (diff < 60 * 60) { int minutes = diff / 60; s = QObject::tr("%n minute(s) ago", "", minutes); diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 10c87d87bd..64cb8d9812 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -615,6 +615,10 @@ ft قدم + + now + +
Reset diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index cdcea24778..e8bd89db9a 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -598,6 +598,10 @@ ft fuß + + now + + Reset diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index b1c39db18e..340ab694ff 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -599,6 +599,10 @@ ft ft + + now + + Reset diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 5360c352d1..332b443ddd 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -594,6 +594,10 @@ ft フィート + + now + + Reset diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index ed751912a6..48ccb1a712 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -595,6 +595,10 @@ ft ft + + now + + Reset diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index c32aeacaa3..fed4077667 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -599,6 +599,10 @@ ft pés + + now + + Reset diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index 25a8aaeebd..ff74ba66c6 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -595,6 +595,10 @@ ft ฟุต + + now + + Reset diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index dfe4b3670b..69946fa318 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -594,6 +594,10 @@ ft ft + + now + + Reset diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index d985945f02..4a314c94bd 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -595,6 +595,10 @@ ft ft + + now + + Reset diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index e64134f253..b013890956 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -595,6 +595,10 @@ ft ft + + now + + Reset From 806f743e126b4bfcccec0b0b8458b5473da9c1b4 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 12:47:26 -0400 Subject: [PATCH 273/599] git commands: more parameterization on path (#31942) * more cwd * here top * and here * basedir --- common/git.py | 14 +++++++------- system/version.py | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/common/git.py b/common/git.py index 1ab8b87099..bfb18ce25d 100644 --- a/common/git.py +++ b/common/git.py @@ -24,18 +24,18 @@ def get_branch(cwd: str = None) -> str: @cache -def get_origin() -> str: +def get_origin(cwd: str = None) -> str: try: - local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"]) - tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"]) - return run_cmd(["git", "config", "remote." + tracking_remote + ".url"]) + local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"], cwd=cwd) + tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"], cwd=cwd) + return run_cmd(["git", "config", "remote." + tracking_remote + ".url"], cwd=cwd) except subprocess.CalledProcessError: # Not on a branch, fallback - return run_cmd_default(["git", "config", "--get", "remote.origin.url"]) + return run_cmd_default(["git", "config", "--get", "remote.origin.url"], cwd=cwd) @cache -def get_normalized_origin() -> str: - return get_origin() \ +def get_normalized_origin(cwd: str = None) -> str: + return get_origin(cwd) \ .replace("git@", "", 1) \ .replace(".git", "", 1) \ .replace("https://", "", 1) \ diff --git a/system/version.py b/system/version.py index 8866026152..7b3ea940f4 100755 --- a/system/version.py +++ b/system/version.py @@ -37,8 +37,8 @@ def get_short_version() -> str: return get_version().split('-')[0] @cache -def is_prebuilt() -> bool: - return os.path.exists(os.path.join(BASEDIR, 'prebuilt')) +def is_prebuilt(path: str = BASEDIR) -> bool: + return os.path.exists(os.path.join(path, 'prebuilt')) @cache @@ -56,23 +56,23 @@ def is_release_branch() -> bool: return get_short_branch() in RELEASE_BRANCHES @cache -def is_dirty() -> bool: - origin = get_origin() - branch = get_branch() +def is_dirty(cwd: str = BASEDIR) -> bool: + origin = get_origin(cwd) + branch = get_branch(cwd) if not origin or not branch: return True dirty = False try: # Actually check dirty files - if not is_prebuilt(): + if not is_prebuilt(cwd): # This is needed otherwise touched files might show up as modified try: - subprocess.check_call(["git", "update-index", "--refresh"]) + subprocess.check_call(["git", "update-index", "--refresh"], cwd=cwd) except subprocess.CalledProcessError: pass - dirty = (subprocess.call(["git", "diff-index", "--quiet", branch, "--"]) != 0) + dirty = (subprocess.call(["git", "diff-index", "--quiet", branch, "--"], cwd=cwd)) != 0 except subprocess.CalledProcessError: cloudlog.exception("git subprocess failed while checking dirty") dirty = True From effee900c4e9f3950b88a43b08da40bdbc47aed0 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 13:15:29 -0400 Subject: [PATCH 274/599] use build_metadata everywhere we used to use get_version, get_commit, etc (#31941) * use build_metadata * fix normailzed * also normalized * and here * fix diff * and that one * cleanup --- selfdrive/athena/athenad.py | 12 ++-- selfdrive/athena/manage_athenad.py | 15 ++--- selfdrive/car/car_helpers.py | 5 +- selfdrive/manager/build.py | 5 +- selfdrive/manager/manager.py | 41 +++++++------- selfdrive/sentry.py | 18 +++--- selfdrive/statsd.py | 12 ++-- selfdrive/tombstoned.py | 6 +- selfdrive/updated/updated.py | 5 +- system/version.py | 88 ++++++++++++++++++------------ 10 files changed, 118 insertions(+), 89 deletions(-) diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index d228af572c..989e284e74 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -32,13 +32,12 @@ from cereal import log from cereal.services import SERVICE_LIST from openpilot.common.api import Api from openpilot.common.file_helpers import CallbackReader -from openpilot.common.git import get_commit, get_normalized_origin, get_short_branch from openpilot.common.params import Params from openpilot.common.realtime import set_core_affinity from openpilot.system.hardware import HARDWARE, PC from openpilot.system.loggerd.xattr_cache import getxattr, setxattr from openpilot.common.swaglog import cloudlog -from openpilot.system.version import get_version +from openpilot.system.version import get_build_metadata from openpilot.system.hardware.hw import Paths @@ -320,11 +319,12 @@ def getMessage(service: str, timeout: int = 1000) -> dict: @dispatcher.add_method def getVersion() -> dict[str, str]: + build_metadata = get_build_metadata() return { - "version": get_version(), - "remote": get_normalized_origin(), - "branch": get_short_branch(), - "commit": get_commit(), + "version": build_metadata.openpilot.version, + "remote": build_metadata.openpilot.git_normalized_origin, + "branch": build_metadata.channel, + "commit": build_metadata.openpilot.git_commit, } diff --git a/selfdrive/athena/manage_athenad.py b/selfdrive/athena/manage_athenad.py index 3065bed5c7..2ec92cc3e0 100755 --- a/selfdrive/athena/manage_athenad.py +++ b/selfdrive/athena/manage_athenad.py @@ -7,8 +7,7 @@ from openpilot.common.params import Params from openpilot.selfdrive.manager.process import launcher from openpilot.common.swaglog import cloudlog from openpilot.system.hardware import HARDWARE -from openpilot.common.git import get_commit, get_normalized_origin, get_short_branch -from openpilot.system.version import get_version, is_dirty +from openpilot.system.version import get_build_metadata ATHENA_MGR_PID_PARAM = "AthenadPid" @@ -16,12 +15,14 @@ ATHENA_MGR_PID_PARAM = "AthenadPid" def main(): params = Params() dongle_id = params.get("DongleId").decode('utf-8') + build_metadata = get_build_metadata() + cloudlog.bind_global(dongle_id=dongle_id, - version=get_version(), - origin=get_normalized_origin(), - branch=get_short_branch(), - commit=get_commit(), - dirty=is_dirty(), + version=build_metadata.openpilot.version, + origin=build_metadata.openpilot.git_normalized_origin, + branch=build_metadata.channel, + commit=build_metadata.openpilot.git_commit, + dirty=build_metadata.openpilot.is_dirty, device=HARDWARE.get_device_type()) try: diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index fd8ecc5020..0e2443d330 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -4,7 +4,6 @@ from collections.abc import Callable from cereal import car from openpilot.common.params import Params -from openpilot.system.version import is_comma_remote, is_tested_branch from openpilot.selfdrive.car.interfaces import get_interface_attr from openpilot.selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars from openpilot.selfdrive.car.vin import get_vin, is_valid_vin, VIN_UNKNOWN @@ -13,6 +12,7 @@ from openpilot.selfdrive.car.mock.values import CAR as MOCK from openpilot.common.swaglog import cloudlog import cereal.messaging as messaging from openpilot.selfdrive.car import gen_empty_fingerprint +from openpilot.system.version import get_build_metadata FRAME_FINGERPRINT = 100 # 1s @@ -20,7 +20,8 @@ EventName = car.CarEvent.EventName def get_startup_event(car_recognized, controller_available, fw_seen): - if is_comma_remote() and is_tested_branch(): + build_metadata = get_build_metadata() + if build_metadata.openpilot.comma_remote and build_metadata.tested_channel: event = EventName.startup else: event = EventName.startupMaster diff --git a/selfdrive/manager/build.py b/selfdrive/manager/build.py index 067e1b5a1e..859d0920c3 100755 --- a/selfdrive/manager/build.py +++ b/selfdrive/manager/build.py @@ -9,7 +9,7 @@ from openpilot.common.spinner import Spinner from openpilot.common.text_window import TextWindow from openpilot.system.hardware import AGNOS from openpilot.common.swaglog import cloudlog, add_file_handler -from openpilot.system.version import is_dirty +from openpilot.system.version import get_build_metadata MAX_CACHE_SIZE = 4e9 if "CI" in os.environ else 2e9 CACHE_DIR = Path("/data/scons_cache" if AGNOS else "/tmp/scons_cache") @@ -86,4 +86,5 @@ def build(spinner: Spinner, dirty: bool = False, minimal: bool = False) -> None: if __name__ == "__main__": spinner = Spinner() spinner.update_progress(0, 100) - build(spinner, is_dirty(), minimal = AGNOS) + build_metadata = get_build_metadata() + build(spinner, build_metadata.openpilot.is_dirty, minimal = AGNOS) diff --git a/selfdrive/manager/manager.py b/selfdrive/manager/manager.py index f30b81861a..512320a8db 100755 --- a/selfdrive/manager/manager.py +++ b/selfdrive/manager/manager.py @@ -16,21 +16,20 @@ from openpilot.selfdrive.manager.process import ensure_running from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.selfdrive.athena.registration import register, UNREGISTERED_DONGLE_ID from openpilot.common.swaglog import cloudlog, add_file_handler -from openpilot.common.git import get_commit, get_origin, get_short_branch, get_commit_date -from openpilot.system.version import is_dirty, get_version, \ - get_normalized_origin, terms_version, training_version, \ - is_tested_branch, is_release_branch +from openpilot.system.version import get_build_metadata, terms_version, training_version def manager_init() -> None: save_bootlog() + build_metadata = get_build_metadata() + params = Params() params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START) params.clear_all(ParamKeyType.CLEAR_ON_ONROAD_TRANSITION) params.clear_all(ParamKeyType.CLEAR_ON_OFFROAD_TRANSITION) - if is_release_branch(): + if build_metadata.release_channel: params.clear_all(ParamKeyType.DEVELOPMENT_ONLY) default_params: list[tuple[str, str | bytes]] = [ @@ -62,15 +61,15 @@ def manager_init() -> None: print("WARNING: failed to make /dev/shm") # set version params - params.put("Version", get_version()) + params.put("Version", build_metadata.openpilot.version) params.put("TermsVersion", terms_version) params.put("TrainingVersion", training_version) - params.put("GitCommit", get_commit()) - params.put("GitCommitDate", get_commit_date()) - params.put("GitBranch", get_short_branch()) - params.put("GitRemote", get_origin()) - params.put_bool("IsTestedBranch", is_tested_branch()) - params.put_bool("IsReleaseBranch", is_release_branch()) + params.put("GitCommit", build_metadata.openpilot.git_commit) + params.put("GitCommitDate", build_metadata.openpilot.git_commit_date) + params.put("GitBranch", build_metadata.channel) + params.put("GitRemote", build_metadata.openpilot.git_origin) + params.put_bool("IsTestedBranch", build_metadata.tested_channel) + params.put_bool("IsReleaseBranch", build_metadata.release_channel) # set dongle id reg_res = register(show_spinner=True) @@ -80,21 +79,21 @@ def manager_init() -> None: serial = params.get("HardwareSerial") raise Exception(f"Registration failed for device {serial}") os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog - os.environ['GIT_ORIGIN'] = get_normalized_origin() # Needed for swaglog - os.environ['GIT_BRANCH'] = get_short_branch() # Needed for swaglog - os.environ['GIT_COMMIT'] = get_commit() # Needed for swaglog + os.environ['GIT_ORIGIN'] = build_metadata.openpilot.git_normalized_origin # Needed for swaglog + os.environ['GIT_BRANCH'] = build_metadata.channel # Needed for swaglog + os.environ['GIT_COMMIT'] = build_metadata.openpilot.git_commit # Needed for swaglog - if not is_dirty(): + if not build_metadata.openpilot.is_dirty: os.environ['CLEAN'] = '1' # init logging sentry.init(sentry.SentryProject.SELFDRIVE) cloudlog.bind_global(dongle_id=dongle_id, - version=get_version(), - origin=get_normalized_origin(), - branch=get_short_branch(), - commit=get_commit(), - dirty=is_dirty(), + version=build_metadata.openpilot.version, + origin=build_metadata.openpilot.git_normalized_origin, + branch=build_metadata.channel, + commit=build_metadata.openpilot.git_commit, + dirty=build_metadata.openpilot.is_dirty, device=HARDWARE.get_device_type()) # preimport all processes diff --git a/selfdrive/sentry.py b/selfdrive/sentry.py index 889178610f..204d9cab09 100644 --- a/selfdrive/sentry.py +++ b/selfdrive/sentry.py @@ -6,9 +6,8 @@ from sentry_sdk.integrations.threading import ThreadingIntegration from openpilot.common.params import Params from openpilot.selfdrive.athena.registration import is_registered_device from openpilot.system.hardware import HARDWARE, PC -from openpilot.common.git import get_commit, get_branch, get_origin from openpilot.common.swaglog import cloudlog -from openpilot.system.version import get_version, is_comma_remote, is_dirty, is_tested_branch +from openpilot.system.version import get_build_metadata, get_version class SentryProject(Enum): @@ -43,12 +42,13 @@ def set_tag(key: str, value: str) -> None: def init(project: SentryProject) -> bool: + build_metadata = get_build_metadata() # forks like to mess with this, so double check - comma_remote = is_comma_remote() and "commaai" in get_origin() + comma_remote = build_metadata.openpilot.comma_remote and "commaai" in build_metadata.openpilot.git_origin if not comma_remote or not is_registered_device() or PC: return False - env = "release" if is_tested_branch() else "master" + env = "release" if build_metadata.tested_channel else "master" dongle_id = Params().get("DongleId", encoding='utf-8') integrations = [] @@ -63,11 +63,13 @@ def init(project: SentryProject) -> bool: max_value_length=8192, environment=env) + build_metadata = get_build_metadata() + sentry_sdk.set_user({"id": dongle_id}) - sentry_sdk.set_tag("dirty", is_dirty()) - sentry_sdk.set_tag("origin", get_origin()) - sentry_sdk.set_tag("branch", get_branch()) - sentry_sdk.set_tag("commit", get_commit()) + sentry_sdk.set_tag("dirty", build_metadata.openpilot.is_dirty) + sentry_sdk.set_tag("origin", build_metadata.openpilot.git_origin) + sentry_sdk.set_tag("branch", build_metadata.channel) + sentry_sdk.set_tag("commit", build_metadata.openpilot.git_commit) sentry_sdk.set_tag("device", HARDWARE.get_device_type()) if project == SentryProject.SELFDRIVE: diff --git a/selfdrive/statsd.py b/selfdrive/statsd.py index 299aa295d7..2f9149b096 100755 --- a/selfdrive/statsd.py +++ b/selfdrive/statsd.py @@ -13,7 +13,7 @@ from openpilot.system.hardware.hw import Paths from openpilot.common.swaglog import cloudlog from openpilot.system.hardware import HARDWARE from openpilot.common.file_helpers import atomic_write_in_dir -from openpilot.system.version import get_normalized_origin, get_short_branch, get_short_version, is_dirty +from openpilot.system.version import get_build_metadata from openpilot.system.loggerd.config import STATS_DIR_FILE_LIMIT, STATS_SOCKET, STATS_FLUSH_TIME_S @@ -86,13 +86,15 @@ def main() -> NoReturn: # initialize stats directory Path(STATS_DIR).mkdir(parents=True, exist_ok=True) + build_metadata = get_build_metadata() + # initialize tags tags = { 'started': False, - 'version': get_short_version(), - 'branch': get_short_branch(), - 'dirty': is_dirty(), - 'origin': get_normalized_origin(), + 'version': build_metadata.openpilot.version, + 'branch': build_metadata.channel, + 'dirty': build_metadata.openpilot.is_dirty, + 'origin': build_metadata.openpilot.git_normalized_origin, 'deviceType': HARDWARE.get_device_type(), } diff --git a/selfdrive/tombstoned.py b/selfdrive/tombstoned.py index f1b8c88083..2c99c7eafe 100755 --- a/selfdrive/tombstoned.py +++ b/selfdrive/tombstoned.py @@ -11,8 +11,8 @@ from typing import NoReturn import openpilot.selfdrive.sentry as sentry from openpilot.system.hardware.hw import Paths -from openpilot.common.git import get_commit from openpilot.common.swaglog import cloudlog +from openpilot.system.version import get_build_metadata MAX_SIZE = 1_000_000 * 100 # allow up to 100M MAX_TOMBSTONE_FN_LEN = 62 # 85 - 23 ("/crash/") @@ -124,7 +124,9 @@ def report_tombstone_apport(fn): clean_path = path.replace('/', '_') date = datetime.datetime.now().strftime("%Y-%m-%d--%H-%M-%S") - new_fn = f"{date}_{(get_commit() or 'nocommit')[:8]}_{safe_fn(clean_path)}"[:MAX_TOMBSTONE_FN_LEN] + build_metadata = get_build_metadata() + + new_fn = f"{date}_{(build_metadata.openpilot.git_commit or 'nocommit')[:8]}_{safe_fn(clean_path)}"[:MAX_TOMBSTONE_FN_LEN] crashlog_dir = os.path.join(Paths.log_root(), "crash") os.makedirs(crashlog_dir, exist_ok=True) diff --git a/selfdrive/updated/updated.py b/selfdrive/updated/updated.py index b6b395f254..3a710ba02f 100755 --- a/selfdrive/updated/updated.py +++ b/selfdrive/updated/updated.py @@ -19,7 +19,7 @@ from openpilot.common.time import system_time_valid from openpilot.system.hardware import AGNOS, HARDWARE from openpilot.common.swaglog import cloudlog from openpilot.selfdrive.controls.lib.alertmanager import set_offroad_alert -from openpilot.system.version import is_tested_branch +from openpilot.system.version import get_build_metadata LOCK_FILE = os.getenv("UPDATER_LOCK_FILE", "/tmp/safe_staging_overlay.lock") STAGING_ROOT = os.getenv("UPDATER_STAGING_ROOT", "/data/safe_staging") @@ -325,8 +325,9 @@ class Updater: now = datetime.datetime.utcnow() dt = now - last_update + build_metadata = get_build_metadata() if failed_count > 15 and exception is not None and self.has_internet: - if is_tested_branch(): + if build_metadata.tested_channel: extra_text = "Ensure the software is correctly installed. Uninstall and re-install if this error persists." else: extra_text = exception diff --git a/system/version.py b/system/version.py index 7b3ea940f4..f370beb4ae 100755 --- a/system/version.py +++ b/system/version.py @@ -9,7 +9,7 @@ import subprocess from openpilot.common.basedir import BASEDIR from openpilot.common.swaglog import cloudlog from openpilot.common.utils import cache -from openpilot.common.git import get_commit, get_origin, get_branch, get_short_branch, get_normalized_origin, get_commit_date +from openpilot.common.git import get_commit, get_origin, get_branch, get_short_branch, get_commit_date RELEASE_BRANCHES = ['release3-staging', 'release3', 'nightly'] @@ -32,33 +32,15 @@ def get_release_notes(path: str = BASEDIR) -> str: return f.read().split('\n\n', 1)[0] -@cache -def get_short_version() -> str: - return get_version().split('-')[0] - @cache def is_prebuilt(path: str = BASEDIR) -> bool: return os.path.exists(os.path.join(path, 'prebuilt')) -@cache -def is_comma_remote() -> bool: - # note to fork maintainers, this is used for release metrics. please do not - # touch this to get rid of the orange startup alert. there's better ways to do that - return get_normalized_origin() == "github.com/commaai/openpilot" - -@cache -def is_tested_branch() -> bool: - return get_short_branch() in TESTED_BRANCHES - -@cache -def is_release_branch() -> bool: - return get_short_branch() in RELEASE_BRANCHES - @cache def is_dirty(cwd: str = BASEDIR) -> bool: - origin = get_origin(cwd) - branch = get_branch(cwd) + origin = get_origin() + branch = get_branch() if not origin or not branch: return True @@ -85,6 +67,27 @@ class OpenpilotMetadata: version: str release_notes: str git_commit: str + git_origin: str + git_commit_date: str + is_dirty: bool # whether there are local changes + + @property + def short_version(self) -> str: + return self.version.split('-')[0] + + @property + def comma_remote(self) -> bool: + # note to fork maintainers, this is used for release metrics. please do not + # touch this to get rid of the orange startup alert. there's better ways to do that + return self.git_normalized_origin == "github.com/commaai/openpilot" + + @property + def git_normalized_origin(self) -> str: + return self.git_origin \ + .replace("git@", "", 1) \ + .replace(".git", "", 1) \ + .replace("https://", "", 1) \ + .replace(":", "/", 1) @dataclass(frozen=True) @@ -92,9 +95,17 @@ class BuildMetadata: channel: str openpilot: OpenpilotMetadata + @property + def tested_channel(self) -> bool: + return self.channel in TESTED_BRANCHES + + @property + def release_channel(self) -> bool: + return self.channel in RELEASE_BRANCHES -def get_build_metadata(path: str = BASEDIR) -> BuildMetadata | None: + +def get_build_metadata(path: str = BASEDIR) -> BuildMetadata: build_metadata_path = pathlib.Path(path) / BUILD_METADATA_FILENAME if build_metadata_path.exists(): @@ -105,14 +116,31 @@ def get_build_metadata(path: str = BASEDIR) -> BuildMetadata | None: version = openpilot_metadata.get("version", "unknown") release_notes = openpilot_metadata.get("release_notes", "unknown") git_commit = openpilot_metadata.get("git_commit", "unknown") - return BuildMetadata(channel, OpenpilotMetadata(version, release_notes, git_commit)) + git_origin = openpilot_metadata.get("git_origin", "unknown") + git_commit_date = openpilot_metadata.get("git_commit_date", "unknown") + return BuildMetadata(channel, + OpenpilotMetadata( + version=version, + release_notes=release_notes, + git_commit=git_commit, + git_origin=git_origin, + git_commit_date=git_commit_date, + is_dirty=False)) git_folder = pathlib.Path(path) / ".git" if git_folder.exists(): - return BuildMetadata(get_short_branch(path), OpenpilotMetadata(get_version(path), get_release_notes(path), get_commit(path))) + return BuildMetadata(get_short_branch(path), + OpenpilotMetadata( + version=get_version(path), + release_notes=get_release_notes(path), + git_commit=get_commit(path), + git_origin=get_origin(path), + git_commit_date=get_commit_date(path), + is_dirty=is_dirty(path))) - return None + cloudlog.exception("unable to get build metadata") + raise Exception("invalid build metadata") if __name__ == "__main__": @@ -122,12 +150,4 @@ if __name__ == "__main__": params.put("TermsVersion", terms_version) params.put("TrainingVersion", training_version) - print(f"Dirty: {is_dirty()}") - print(f"Version: {get_version()}") - print(f"Short version: {get_short_version()}") - print(f"Origin: {get_origin()}") - print(f"Normalized origin: {get_normalized_origin()}") - print(f"Branch: {get_branch()}") - print(f"Short branch: {get_short_branch()}") - print(f"Prebuilt: {is_prebuilt()}") - print(f"Commit date: {get_commit_date()}") + print(get_build_metadata()) From e28edf874b4caa68a47326a98018a0e21fe22f58 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 22 Mar 2024 01:58:05 +0800 Subject: [PATCH 275/599] ui/sidebar: do not send the `userFlag` while offroad (#31952) --- selfdrive/ui/qt/sidebar.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/sidebar.cc b/selfdrive/ui/qt/sidebar.cc index e952940056..75b966c9aa 100644 --- a/selfdrive/ui/qt/sidebar.cc +++ b/selfdrive/ui/qt/sidebar.cc @@ -55,7 +55,7 @@ void Sidebar::mouseReleaseEvent(QMouseEvent *event) { flag_pressed = settings_pressed = false; update(); } - if (home_btn.contains(event->pos())) { + if (onroad && home_btn.contains(event->pos())) { MessageBuilder msg; msg.initEvent().initUserFlag(); pm->send("userFlag", msg); From 27d2a6066d944255608d953c9a8fc7c8cb79f828 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Thu, 21 Mar 2024 17:58:35 +0000 Subject: [PATCH 276/599] tools: remove unused timestamp_to_datetime (#31950) --- tools/lib/helpers.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/tools/lib/helpers.py b/tools/lib/helpers.py index 653eb3d7e0..e9b4b85e70 100644 --- a/tools/lib/helpers.py +++ b/tools/lib/helpers.py @@ -1,7 +1,4 @@ import bz2 -import datetime - -TIME_FMT = "%Y-%m-%d--%H-%M-%S" # regex patterns @@ -23,13 +20,6 @@ class RE: OP_SEGMENT_DIR = fr'^(?P{SEGMENT_NAME})$' -def timestamp_to_datetime(t: str) -> datetime.datetime: - """ - Convert an openpilot route timestamp to a python datetime - """ - return datetime.datetime.strptime(t, TIME_FMT) - - def save_log(dest, log_msgs, compress=True): dat = b"".join(msg.as_builder().to_bytes() for msg in log_msgs) From 028f6938b2e28d79054e9c11f1b95eba150bfcad Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 22 Mar 2024 01:58:48 +0800 Subject: [PATCH 277/599] ui.py: quit if the "X"(exit) button is clicked (#31949) --- tools/replay/ui.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/replay/ui.py b/tools/replay/ui.py index aa03ae193c..31e4fff74d 100755 --- a/tools/replay/ui.py +++ b/tools/replay/ui.py @@ -101,8 +101,11 @@ def ui_thread(addr): draw_plots = init_plots(plot_arr, name_to_arr_idx, plot_xlims, plot_ylims, plot_names, plot_colors, plot_styles) vipc_client = VisionIpcClient("camerad", VisionStreamType.VISION_STREAM_ROAD, True) - while 1: - list(pygame.event.get()) + while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + sys.exit() screen.fill((64, 64, 64)) lid_overlay = lid_overlay_blank.copy() From 0201c786e85c22aea6e79d873a367b274016648e Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 22 Mar 2024 02:02:26 +0800 Subject: [PATCH 278/599] ui: pairing device in settings (#31947) --- selfdrive/ui/qt/offroad/settings.cc | 21 +++++++++++++++- selfdrive/ui/qt/offroad/settings.h | 3 +++ selfdrive/ui/qt/onroad.cc | 31 ++++++++++++++---------- selfdrive/ui/qt/onroad.h | 1 + selfdrive/ui/translations/main_ar.ts | 12 +++++++++ selfdrive/ui/translations/main_de.ts | 12 +++++++++ selfdrive/ui/translations/main_fr.ts | 12 +++++++++ selfdrive/ui/translations/main_ja.ts | 12 +++++++++ selfdrive/ui/translations/main_ko.ts | 12 +++++++++ selfdrive/ui/translations/main_pt-BR.ts | 12 +++++++++ selfdrive/ui/translations/main_th.ts | 12 +++++++++ selfdrive/ui/translations/main_tr.ts | 12 +++++++++ selfdrive/ui/translations/main_zh-CHS.ts | 12 +++++++++ selfdrive/ui/translations/main_zh-CHT.ts | 12 +++++++++ 14 files changed, 162 insertions(+), 14 deletions(-) diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index bc7989b773..185d5457e3 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -16,6 +16,7 @@ #include "system/hardware/hw.h" #include "selfdrive/ui/qt/widgets/controls.h" #include "selfdrive/ui/qt/widgets/input.h" +#include "selfdrive/ui/qt/widgets/prime.h" #include "selfdrive/ui/qt/widgets/scrollview.h" #include "selfdrive/ui/qt/widgets/ssh_keys.h" #include "selfdrive/ui/qt/widgets/toggle.h" @@ -215,6 +216,14 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { addItem(new LabelControl(tr("Dongle ID"), getDongleId().value_or(tr("N/A")))); addItem(new LabelControl(tr("Serial"), params.get("HardwareSerial").c_str())); + pair_device = new ButtonControl(tr("Pair Device"), tr("Pair"), + tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.")); + connect(pair_device, &ButtonControl::clicked, [=]() { + PairingPopup popup(this); + popup.exec(); + }); + addItem(pair_device); + // offroad-only buttons auto dcamBtn = new ButtonControl(tr("Driver Camera"), tr("PREVIEW"), @@ -262,9 +271,14 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { }); addItem(translateBtn); + QObject::connect(uiState(), &UIState::primeChanged, [this] (bool prime) { + pair_device->setVisible(!prime); + }); QObject::connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { for (auto btn : findChildren()) { - btn->setEnabled(offroad); + if (btn != pair_device) { + btn->setEnabled(offroad); + } } }); @@ -345,6 +359,11 @@ void DevicePanel::poweroff() { } } +void DevicePanel::showEvent(QShowEvent *event) { + pair_device->setVisible(!uiState()->primeType()); + ListWidget::showEvent(event); +} + void SettingsWindow::showEvent(QShowEvent *event) { setCurrentPanel(0); } diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index 581fc098f4..f9e1648447 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -43,6 +43,8 @@ class DevicePanel : public ListWidget { Q_OBJECT public: explicit DevicePanel(SettingsWindow *parent); + void showEvent(QShowEvent *event) override; + signals: void reviewTrainingGuide(); void showDriverView(); @@ -54,6 +56,7 @@ private slots: private: Params params; + ButtonControl *pair_device; }; class TogglesPanel : public ListWidget { diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index 01750eaf2f..40ae436c65 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -105,26 +105,29 @@ void OnroadWindow::mousePressEvent(QMouseEvent* e) { QWidget::mousePressEvent(e); } +void OnroadWindow::createMapWidget() { +#ifdef ENABLE_MAPS + auto m = new MapPanel(get_mapbox_settings()); + map = m; + QObject::connect(m, &MapPanel::mapPanelRequested, this, &OnroadWindow::mapPanelRequested); + QObject::connect(nvg->map_settings_btn, &MapSettingsButton::clicked, m, &MapPanel::toggleMapSettings); + nvg->map_settings_btn->setEnabled(true); + + m->setFixedWidth(topWidget(this)->width() / 2 - UI_BORDER_SIZE); + split->insertWidget(0, m); + // hidden by default, made visible when navRoute is published + m->setVisible(false); +#endif +} + void OnroadWindow::offroadTransition(bool offroad) { #ifdef ENABLE_MAPS if (!offroad) { if (map == nullptr && (uiState()->hasPrime() || !MAPBOX_TOKEN.isEmpty())) { - auto m = new MapPanel(get_mapbox_settings()); - map = m; - - QObject::connect(m, &MapPanel::mapPanelRequested, this, &OnroadWindow::mapPanelRequested); - QObject::connect(nvg->map_settings_btn, &MapSettingsButton::clicked, m, &MapPanel::toggleMapSettings); - nvg->map_settings_btn->setEnabled(true); - - m->setFixedWidth(topWidget(this)->width() / 2 - UI_BORDER_SIZE); - split->insertWidget(0, m); - - // hidden by default, made visible when navRoute is published - m->setVisible(false); + createMapWidget(); } } #endif - alerts->updateAlert({}); } @@ -135,6 +138,8 @@ void OnroadWindow::primeChanged(bool prime) { nvg->map_settings_btn->setVisible(false); map->deleteLater(); map = nullptr; + } else if (!map && (prime || !MAPBOX_TOKEN.isEmpty())) { + createMapWidget(); } #endif } diff --git a/selfdrive/ui/qt/onroad.h b/selfdrive/ui/qt/onroad.h index b3ba411453..c72d1225e6 100644 --- a/selfdrive/ui/qt/onroad.h +++ b/selfdrive/ui/qt/onroad.h @@ -127,6 +127,7 @@ signals: void mapPanelRequested(); private: + void createMapWidget(); void paintEvent(QPaintEvent *event); void mousePressEvent(QMouseEvent* e) override; OnroadAlerts *alerts; diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 64cb8d9812..024ca0d4f6 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -293,6 +293,18 @@ Review مراجعة + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + اقرن جهازك بجهاز (connect.comma.ai) واحصل على عرضك من comma prime. + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index e8bd89db9a..d849b27103 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -293,6 +293,18 @@ Review Überprüfen + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Koppele dein Gerät mit Comma Connect (connect.comma.ai) und sichere dir dein Comma Prime Angebot. + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 340ab694ff..2294ba7af9 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -293,6 +293,18 @@ Disengage to Power Off Désengager pour éteindre + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Associez votre appareil avec comma connect (connect.comma.ai) et profitez de l'offre comma prime. + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 332b443ddd..7b07866efc 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -293,6 +293,18 @@ Review 確認 + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + デバイスを comma connect (connect.comma.ai)でペアリングし、comma primeの特典を申請してください。 + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 48ccb1a712..e8fcb44228 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -293,6 +293,18 @@ Review 다시보기 + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + 장치를 comma connect (connect.comma.ai)에서 페어링하고 comma prime 무료 이용권을 사용하세요. + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index fed4077667..a61f3a9949 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -293,6 +293,18 @@ Review Revisar + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Pareie seu dispositivo com comma connect (connect.comma.ai) e reivindique sua oferta de comma prime. + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index ff74ba66c6..eae564d645 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -293,6 +293,18 @@ Review ทบทวน + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + จับคู่อุปกรณ์ของคุณกับ comma connect (connect.comma.ai) และรับข้อเสนอ comma prime ของคุณ + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index 69946fa318..33773af16b 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -293,6 +293,18 @@ Review + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Cihazınızı comma connect (connect.comma.ai) ile eşleştirin ve comma prime aboneliğine göz atın. + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 4a314c94bd..fa858b8a8c 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -293,6 +293,18 @@ Review 预览 + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + 将您的设备与comma connect (connect.comma.ai)配对并领取您的comma prime优惠。 + + + Pair Device + + + + Pair + + DriverViewWindow diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index b013890956..12ae9fbe13 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -293,6 +293,18 @@ Review 回顧 + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + 將您的設備與 comma connect (connect.comma.ai) 配對並領取您的 comma 高級會員優惠。 + + + Pair Device + + + + Pair + + DriverViewWindow From 77bbeb442ebeb66bcb00289df66084ee0475196e Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 22 Mar 2024 02:40:01 +0800 Subject: [PATCH 279/599] ui/cameraview: fix accessing uninitialized variable (#31951) --- selfdrive/ui/qt/widgets/cameraview.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/widgets/cameraview.cc b/selfdrive/ui/qt/widgets/cameraview.cc index 7818da8669..e4f1396268 100644 --- a/selfdrive/ui/qt/widgets/cameraview.cc +++ b/selfdrive/ui/qt/widgets/cameraview.cc @@ -98,7 +98,7 @@ mat4 get_fit_view_transform(float widget_aspect_ratio, float frame_aspect_ratio) } // namespace CameraWidget::CameraWidget(std::string stream_name, VisionStreamType type, bool zoom, QWidget* parent) : - stream_name(stream_name), requested_stream_type(type), zoomed_view(zoom), QOpenGLWidget(parent) { + stream_name(stream_name), active_stream_type(type), requested_stream_type(type), zoomed_view(zoom), QOpenGLWidget(parent) { setAttribute(Qt::WA_OpaquePaintEvent); qRegisterMetaType>("availableStreams"); QObject::connect(this, &CameraWidget::vipcThreadConnected, this, &CameraWidget::vipcConnected, Qt::BlockingQueuedConnection); From 9feb027de53d4ea7bcd8bee2177ef9df37340426 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 21 Mar 2024 11:41:08 -0700 Subject: [PATCH 280/599] bump panda --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index 567dbfe6d8..86348b431f 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 567dbfe6d86ddda6d803da371942603c6dbe36c8 +Subproject commit 86348b431f78b58dfaafd78460aa70ff9b9a1c5d From c3bbc58a85f515c834e6f4eb92c2d0ec45c9317e Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 14:55:54 -0400 Subject: [PATCH 281/599] build nightly casync build in jenkins (#31880) * casync in jenkins * rename some stuff, add a readme * slightly better names * clean * more cleanup * cleaner * release3 staging too * always rm the signed version * cleanups * in build dir * better name * simpler * more * divider * built * build * and contains * add channel description * and git branches * and build required * move this up * these are terms * updates * 3/3x * bullets * wording * version metadata * git type * more channel -> release * more build * just release * more channel to release * also fix jenkins * use build_metadata * fix normailzed * also normalized * and here * use build_metadata * dont commit that * don't touch the git stuff * branch * don't need that * or that * improved names * build_metadata * use this instead * fix * build * test nightly build again * fix * fixes * Revert "test nightly build again" This reverts commit be5e7aa7089bfc0947c9b2b484d0277c109ee089. --- Jenkinsfile | 25 +++++++++++---- release/README.md | 44 ++++++++++++++++++++++++++ release/copy_build_files.sh | 15 +++++++++ release/create_casync_build.sh | 21 +++++++++++++ release/create_casync_release.py | 25 +++++++++++++++ release/create_prebuilt.sh | 34 ++++++++++++++++++++ release/upload_casync_release.sh | 9 ++++++ system/updated/casync/common.py | 53 ++++++++++++++++++++++++++++++++ 8 files changed, 220 insertions(+), 6 deletions(-) create mode 100644 release/README.md create mode 100755 release/copy_build_files.sh create mode 100755 release/create_casync_build.sh create mode 100755 release/create_casync_release.py create mode 100755 release/create_prebuilt.sh create mode 100755 release/upload_casync_release.sh create mode 100644 system/updated/casync/common.py diff --git a/Jenkinsfile b/Jenkinsfile index 4afb3964f7..efe598c275 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -142,6 +142,23 @@ def setupCredentials() { } +def build_release(String channel_name) { + return parallel ( + "${channel_name} (git)": { + deviceStage("build git", "tici-needs-can", [], [ + ["build ${channel_name}", "RELEASE_BRANCH=${channel_name} $SOURCE_DIR/release/build_release.sh"], + ]) + }, + "${channel_name} (casync)": { + deviceStage("build casync", "tici-needs-can", [], [ + ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot_build CASYNC_DIR=/data/casync $SOURCE_DIR/release/create_casync_build.sh"], + //["upload ${channel_name}", "OPENPILOT_CHANNEL=${channel_name} $SOURCE_DIR/release/upload_casync_release.sh"], + ]) + } + ) +} + + node { env.CI = "1" env.PYTHONWARNINGS = "error" @@ -164,15 +181,11 @@ node { try { if (env.BRANCH_NAME == 'devel-staging') { - deviceStage("build release3-staging", "tici-needs-can", [], [ - ["build release3-staging", "RELEASE_BRANCH=release3-staging $SOURCE_DIR/release/build_release.sh"], - ]) + build_release("release3-staging") } if (env.BRANCH_NAME == 'master-ci') { - deviceStage("build nightly", "tici-needs-can", [], [ - ["build nightly", "RELEASE_BRANCH=nightly $SOURCE_DIR/release/build_release.sh"], - ]) + build_release("nightly") } if (!env.BRANCH_NAME.matches(excludeRegex)) { diff --git a/release/README.md b/release/README.md new file mode 100644 index 0000000000..77cd15ad69 --- /dev/null +++ b/release/README.md @@ -0,0 +1,44 @@ +# openpilot releases + + +## terms + +- `channel` - a named version of openpilot (git branch, casync caidx) which receives updates +- `build` - a release which is already built for the comma 3/3x and contains only required files for running openpilot and identifying the release + +- `build_style` - type of build, either `debug` or `release` + - `debug` - build with `ALLOW_DEBUG=true`, can test experimental features like longitudinal on alpha cars + - `release` - build with `ALLOW_DEBUG=false`, experimental features disabled + + +## openpilot channels + +| channel | build_style | description | +| ----------- | ----------- | ---------- | +| release | `release` | stable release of openpilot | +| staging | `release` | release candidate of openpilot for final verification | +| nightly | `release` | generated nightly from last commit passing CI tests | +| master | `debug` | current master commit with experimental features enabled | +| git branches | `debug` | installed manually, experimental features enabled, build required | + + +## creating casync build + +`create_casync_build.sh` - creates a casync openpilot build, ready to upload to `openpilot-releases` + +```bash +# run on a tici, within the directory you want to create the build from. +# creates a prebuilt version of openpilot into BUILD_DIR and outputs the caidx +# and other casync files into CASYNC_DIR for uploading to openpilot-releases. +BUILD_DIR=/data/openpilot_build \ +CASYNC_DIR=/data/casync \ +OPENPILOT_CHANNEL=nightly \ +release/create_casync_build.sh +``` + +`upload_casync_release.sh` - helper for uploading a casync build to `openpilot-releases` + + +## release builds + +to create a release build, set `RELEASE=1` environment variable when running the build script diff --git a/release/copy_build_files.sh b/release/copy_build_files.sh new file mode 100755 index 0000000000..31fd8af778 --- /dev/null +++ b/release/copy_build_files.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +SOURCE_DIR=$1 +TARGET_DIR=$2 + +if [ -f /TICI ]; then + FILES_SRC="release/files_tici" +else + echo "no release files set" + exit 1 +fi + +cd $SOURCE_DIR +cp -pR --parents $(cat release/files_common) $BUILD_DIR/ +cp -pR --parents $(cat $FILES_SRC) $TARGET_DIR/ diff --git a/release/create_casync_build.sh b/release/create_casync_build.sh new file mode 100755 index 0000000000..d41909a6ab --- /dev/null +++ b/release/create_casync_build.sh @@ -0,0 +1,21 @@ +#!/usr/bin/bash + +set -ex + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" + +CASYNC_DIR="${CASYNC_DIR:=/tmp/casync}" +SOURCE_DIR="$(git -C $DIR rev-parse --show-toplevel)" +BUILD_DIR="${BUILD_DIR:=$(mktemp -d)}" + +echo "Creating casync release from $SOURCE_DIR to $CASYNC_DIR" + +mkdir -p $CASYNC_DIR +rm -rf $BUILD_DIR +mkdir -p $BUILD_DIR + +release/copy_build_files.sh $SOURCE_DIR $BUILD_DIR +release/create_prebuilt.sh $BUILD_DIR + +cd $SOURCE_DIR +release/create_casync_release.py $BUILD_DIR $CASYNC_DIR $OPENPILOT_CHANNEL diff --git a/release/create_casync_release.py b/release/create_casync_release.py new file mode 100755 index 0000000000..8977e09abc --- /dev/null +++ b/release/create_casync_release.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +import argparse +import pathlib + +from openpilot.system.updated.casync.common import create_caexclude_file, create_casync_release, create_build_metadata_file +from openpilot.system.version import get_build_metadata + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="creates a casync release") + parser.add_argument("target_dir", type=str, help="target directory to build channel from") + parser.add_argument("output_dir", type=str, help="output directory for the channel") + parser.add_argument("channel", type=str, help="what channel this build is") + args = parser.parse_args() + + target_dir = pathlib.Path(args.target_dir) + output_dir = pathlib.Path(args.output_dir) + + create_build_metadata_file(target_dir, get_build_metadata(), args.channel) + create_caexclude_file(target_dir) + + digest, caidx = create_casync_release(target_dir, output_dir, args.channel) + + print(f"Created casync release from {target_dir} to {caidx} with digest {digest}") diff --git a/release/create_prebuilt.sh b/release/create_prebuilt.sh new file mode 100755 index 0000000000..6d3768c536 --- /dev/null +++ b/release/create_prebuilt.sh @@ -0,0 +1,34 @@ +#!/usr/bin/bash -e + +# runs on tici to create a prebuilt version of a release + +set -ex + +BUILD_DIR=$1 + +cd $BUILD_DIR + +# Build +export PYTHONPATH="$BUILD_DIR" + +rm -f panda/board/obj/panda.bin.signed +rm -f panda/board/obj/panda_h7.bin.signed + +if [ -n "$RELEASE" ]; then + export CERT=/data/pandaextra/certs/release +fi + +scons -j$(nproc) + +# Cleanup +find . -name '*.a' -delete +find . -name '*.o' -delete +find . -name '*.os' -delete +find . -name '*.pyc' -delete +find . -name 'moc_*' -delete +find . -name '__pycache__' -delete +rm -rf .sconsign.dblite Jenkinsfile release/ +rm selfdrive/modeld/models/supercombo.onnx + +# Mark as prebuilt release +touch prebuilt diff --git a/release/upload_casync_release.sh b/release/upload_casync_release.sh new file mode 100755 index 0000000000..02ced8338e --- /dev/null +++ b/release/upload_casync_release.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +CASYNC_DIR="${CASYNC_DIR:=/tmp/casync}" + +OPENPILOT_RELEASES="https://commadist.blob.core.windows.net/openpilot-releases/" + +SAS="$(python -c 'from tools.lib.azure_container import get_container_sas;print(get_container_sas("commadist","openpilot-releases"))')" + +azcopy cp "$CASYNC_DIR*" "$OPENPILOT_RELEASES?$SAS" --recursive diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py new file mode 100644 index 0000000000..1703c74a76 --- /dev/null +++ b/system/updated/casync/common.py @@ -0,0 +1,53 @@ +import dataclasses +import json +import pathlib +import subprocess + +from openpilot.system.version import BUILD_METADATA_FILENAME, BuildMetadata + + +CASYNC_ARGS = ["--with=symlinks", "--with=permissions"] +CASYNC_FILES = [BUILD_METADATA_FILENAME, ".caexclude"] + + +def run(cmd): + return subprocess.check_output(cmd) + + +def get_exclude_set(path) -> set[str]: + exclude_set = set(CASYNC_FILES) + + for file in path.rglob("*"): + if file.is_file() or file.is_symlink(): + + while file.resolve() != path.resolve(): + exclude_set.add(str(file.relative_to(path))) + + file = file.parent + + return exclude_set + + +def create_caexclude_file(path: pathlib.Path): + with open(path / ".caexclude", "w") as f: + # exclude everything except the paths already in the release + f.write("*\n") + f.write(".*\n") + + for file in sorted(get_exclude_set(path)): + f.write(f"!{file}\n") + + +def create_build_metadata_file(path: pathlib.Path, build_metadata: BuildMetadata, channel: str): + with open(path / BUILD_METADATA_FILENAME, "w") as f: + build_metadata_dict = dataclasses.asdict(build_metadata) + build_metadata_dict["channel"] = channel + build_metadata_dict["openpilot"].pop("is_dirty") # this is determined at runtime + f.write(json.dumps(build_metadata_dict)) + + +def create_casync_release(target_dir: pathlib.Path, output_dir: pathlib.Path, channel: str): + caidx_file = output_dir / f"{channel}.caidx" + run(["casync", "make", *CASYNC_ARGS, caidx_file, target_dir]) + digest = run(["casync", "digest", *CASYNC_ARGS, target_dir]).decode("utf-8").strip() + return digest, caidx_file From efc32c2930a7d85fbdd308e1d9110ff270e4667d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 15:58:16 -0400 Subject: [PATCH 282/599] common/run: add environment variable argument (#31957) run add environment argument --- common/run.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/run.py b/common/run.py index c1a36bf041..06deb6388d 100644 --- a/common/run.py +++ b/common/run.py @@ -1,13 +1,13 @@ import subprocess -def run_cmd(cmd: list[str], cwd=None) -> str: - return subprocess.check_output(cmd, encoding='utf8', cwd=cwd).strip() +def run_cmd(cmd: list[str], cwd=None, env=None) -> str: + return subprocess.check_output(cmd, encoding='utf8', cwd=cwd, env=env).strip() -def run_cmd_default(cmd: list[str], default: str = "", cwd=None) -> str: +def run_cmd_default(cmd: list[str], default: str = "", cwd=None, env=None) -> str: try: - return run_cmd(cmd, cwd=cwd) + return run_cmd(cmd, cwd=cwd, env=env) except subprocess.CalledProcessError: return default From c197b3f52c6c3698a0c917fe24caf4766b1f96a8 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 16:00:30 -0400 Subject: [PATCH 283/599] add helper for creating build_metadata from a dict (#31958) helper --- system/version.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/system/version.py b/system/version.py index f370beb4ae..ab8082dce2 100755 --- a/system/version.py +++ b/system/version.py @@ -104,28 +104,30 @@ class BuildMetadata: return self.channel in RELEASE_BRANCHES +def build_metadata_from_dict(build_metadata: dict) -> BuildMetadata: + channel = build_metadata.get("channel", "unknown") + openpilot_metadata = build_metadata.get("openpilot", {}) + version = openpilot_metadata.get("version", "unknown") + release_notes = openpilot_metadata.get("release_notes", "unknown") + git_commit = openpilot_metadata.get("git_commit", "unknown") + git_origin = openpilot_metadata.get("git_origin", "unknown") + git_commit_date = openpilot_metadata.get("git_commit_date", "unknown") + return BuildMetadata(channel, + OpenpilotMetadata( + version=version, + release_notes=release_notes, + git_commit=git_commit, + git_origin=git_origin, + git_commit_date=git_commit_date, + is_dirty=False)) + def get_build_metadata(path: str = BASEDIR) -> BuildMetadata: build_metadata_path = pathlib.Path(path) / BUILD_METADATA_FILENAME if build_metadata_path.exists(): build_metadata = json.loads(build_metadata_path.read_text()) - openpilot_metadata = build_metadata.get("openpilot", {}) - - channel = build_metadata.get("channel", "unknown") - version = openpilot_metadata.get("version", "unknown") - release_notes = openpilot_metadata.get("release_notes", "unknown") - git_commit = openpilot_metadata.get("git_commit", "unknown") - git_origin = openpilot_metadata.get("git_origin", "unknown") - git_commit_date = openpilot_metadata.get("git_commit_date", "unknown") - return BuildMetadata(channel, - OpenpilotMetadata( - version=version, - release_notes=release_notes, - git_commit=git_commit, - git_origin=git_origin, - git_commit_date=git_commit_date, - is_dirty=False)) + return build_metadata_from_dict(build_metadata) git_folder = pathlib.Path(path) / ".git" From db9aec2a3b79ae24c6cc7c2b657ba4bf4a8cb620 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 21 Mar 2024 14:00:45 -0700 Subject: [PATCH 284/599] remove rest of GMLAN (#31960) --- cereal | 2 +- panda | 2 +- selfdrive/boardd/boardd.cc | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/cereal b/cereal index 430535068a..6bfd39a506 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 430535068ac3bb94d3e117a3cfbc348ef37eb72d +Subproject commit 6bfd39a506c5123949ecf58831bfe48f938e6143 diff --git a/panda b/panda index 86348b431f..de061e4f73 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 86348b431f78b58dfaafd78460aa70ff9b9a1c5d +Subproject commit de061e4f7317dbacc206ef5f038d35a17e8ef0e7 diff --git a/selfdrive/boardd/boardd.cc b/selfdrive/boardd/boardd.cc index c4db1eab40..22747d0918 100644 --- a/selfdrive/boardd/boardd.cc +++ b/selfdrive/boardd/boardd.cc @@ -316,7 +316,6 @@ std::optional send_panda_states(PubMaster *pm, const std::vector ps.setControlsAllowed(health.controls_allowed_pkt); ps.setTxBufferOverflow(health.tx_buffer_overflow_pkt); ps.setRxBufferOverflow(health.rx_buffer_overflow_pkt); - ps.setGmlanSendErrs(health.gmlan_send_errs_pkt); ps.setPandaType(panda->hw_type); ps.setSafetyModel(cereal::CarParams::SafetyModel(health.safety_mode_pkt)); ps.setSafetyParam(health.safety_param_pkt); From d9c2928e730febcf1ddb866a92cb38094dce74d2 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 21 Mar 2024 14:32:13 -0700 Subject: [PATCH 285/599] boardd: keep same offset for now --- selfdrive/boardd/boardd.cc | 2 +- selfdrive/boardd/panda.cc | 2 +- selfdrive/boardd/panda.h | 2 ++ selfdrive/boardd/tests/test_boardd_usbprotocol.cc | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/selfdrive/boardd/boardd.cc b/selfdrive/boardd/boardd.cc index 22747d0918..fcbf58999e 100644 --- a/selfdrive/boardd/boardd.cc +++ b/selfdrive/boardd/boardd.cc @@ -144,7 +144,7 @@ bool safety_setter_thread(std::vector pandas) { Panda *connect(std::string serial="", uint32_t index=0) { std::unique_ptr panda; try { - panda = std::make_unique(serial, (index * PANDA_BUS_CNT)); + panda = std::make_unique(serial, (index * PANDA_BUS_OFFSET)); } catch (std::exception &e) { return nullptr; } diff --git a/selfdrive/boardd/panda.cc b/selfdrive/boardd/panda.cc index 95cfe04efd..a2e5574090 100644 --- a/selfdrive/boardd/panda.cc +++ b/selfdrive/boardd/panda.cc @@ -172,7 +172,7 @@ void Panda::pack_can_buffer(const capnp::List::Reader &can_data for (auto cmsg : can_data_list) { // check if the message is intended for this panda uint8_t bus = cmsg.getSrc(); - if (bus < bus_offset || bus >= (bus_offset + PANDA_BUS_CNT)) { + if (bus < bus_offset || bus >= (bus_offset + PANDA_BUS_OFFSET)) { continue; } auto can_data = cmsg.getDat(); diff --git a/selfdrive/boardd/panda.h b/selfdrive/boardd/panda.h index f46150dd95..3002afeba9 100644 --- a/selfdrive/boardd/panda.h +++ b/selfdrive/boardd/panda.h @@ -23,6 +23,8 @@ #define CAN_REJECTED_BUS_OFFSET 0xC0U #define CAN_RETURNED_BUS_OFFSET 0x80U +#define PANDA_BUS_OFFSET 4 + struct __attribute__((packed)) can_header { uint8_t reserved : 1; uint8_t bus : 3; diff --git a/selfdrive/boardd/tests/test_boardd_usbprotocol.cc b/selfdrive/boardd/tests/test_boardd_usbprotocol.cc index 86476d05cd..aa67e8cf8c 100644 --- a/selfdrive/boardd/tests/test_boardd_usbprotocol.cc +++ b/selfdrive/boardd/tests/test_boardd_usbprotocol.cc @@ -40,7 +40,7 @@ PandaTest::PandaTest(uint32_t bus_offset_, int can_list_size, cereal::PandaState uint32_t id = util::random_int(0, std::size(dlc_to_len) - 1); const std::string &dat = test_data[dlc_to_len[id]]; can.setAddress(i); - can.setSrc(util::random_int(0, 3) + bus_offset); + can.setSrc(util::random_int(0, 2) + bus_offset); can.setDat(kj::ArrayPtr((uint8_t *)dat.data(), dat.size())); total_pakets_size += sizeof(can_header) + dat.size(); } From b59ae50961244de60b7bc426e5566c24278adc85 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Thu, 21 Mar 2024 23:19:59 +0000 Subject: [PATCH 286/599] Ford: handle metric cruise speed (v2) (#31463) * Ford: handle metric cruise speed (v2) **Description** I found a signal which appears to match the IPC "Show km/h" setting. Requires https://github.com/commaai/opendbc/pull/1010. **Verification** - [ ] Test in car and confirm that toggling the "Show km/h" setting does not result in the cruise speed shown in openpilot being incorrect. - [ ] Test in a non-English (metric) car. * not present on Q4 * fix freq * test * Revert "test" This reverts commit 5e3a9f6df126d51685157de1e52bd6695db40fac. * Update ref_commit --------- Co-authored-by: Shane Smiskol --- selfdrive/car/ford/carstate.py | 7 ++++++- selfdrive/test/process_replay/ref_commit | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/ford/carstate.py b/selfdrive/car/ford/carstate.py index b3ee6a4649..78f48ec5c4 100644 --- a/selfdrive/car/ford/carstate.py +++ b/selfdrive/car/ford/carstate.py @@ -57,7 +57,8 @@ class CarState(CarStateBase): ret.steerFaultTemporary |= cp.vl["Lane_Assist_Data3_FD1"]["LatCtlSte_D_Stat"] not in (1, 2, 3) # cruise state - ret.cruiseState.speed = cp.vl["EngBrakeData"]["Veh_V_DsplyCcSet"] * CV.MPH_TO_MS + is_metric = cp.vl["INSTRUMENT_PANEL"]["METRIC_UNITS"] == 1 if not self.CP.flags & FordFlags.CANFD else False + ret.cruiseState.speed = cp.vl["EngBrakeData"]["Veh_V_DsplyCcSet"] * (CV.KPH_TO_MS if is_metric else CV.MPH_TO_MS) ret.cruiseState.enabled = cp.vl["EngBrakeData"]["CcStat_D_Actl"] in (4, 5) ret.cruiseState.available = cp.vl["EngBrakeData"]["CcStat_D_Actl"] in (3, 4, 5) ret.cruiseState.nonAdaptive = cp.vl["Cluster_Info1_FD1"]["AccEnbl_B_RqDrv"] == 0 @@ -131,6 +132,10 @@ class CarState(CarStateBase): messages += [ ("Lane_Assist_Data3_FD1", 33), ] + else: + messages += [ + ("INSTRUMENT_PANEL", 1), + ] if CP.transmissionType == TransmissionType.automatic: messages += [ diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 7defed3f68..4bb8cd01e9 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -4e5e37be9d70450154f8b100ed88151bb3612331 \ No newline at end of file +f77699bfd783ab0c9a419f2af883b36aed20cc68 \ No newline at end of file From 33f9193c94d3afb9120369e6557ddcd71133c5ee Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 19:41:40 -0400 Subject: [PATCH 287/599] casync build: caidx filename is canonical representation of build (#31964) * canonical * short commit * channel * cleanup * let's do 9 characters * fixes * set the build style during release creation * as a property --- release/copy_build_files.sh | 2 +- release/create_casync_release.py | 8 ++++++-- system/updated/casync/common.py | 4 ++-- system/version.py | 12 ++++++++++-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/release/copy_build_files.sh b/release/copy_build_files.sh index 31fd8af778..b40bd4b763 100755 --- a/release/copy_build_files.sh +++ b/release/copy_build_files.sh @@ -11,5 +11,5 @@ else fi cd $SOURCE_DIR -cp -pR --parents $(cat release/files_common) $BUILD_DIR/ +cp -pR --parents $(cat release/files_common) $TARGET_DIR/ cp -pR --parents $(cat $FILES_SRC) $TARGET_DIR/ diff --git a/release/create_casync_release.py b/release/create_casync_release.py index 8977e09abc..9aa75eca5d 100755 --- a/release/create_casync_release.py +++ b/release/create_casync_release.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import argparse +import os import pathlib from openpilot.system.updated.casync.common import create_caexclude_file, create_casync_release, create_build_metadata_file @@ -17,9 +18,12 @@ if __name__ == "__main__": target_dir = pathlib.Path(args.target_dir) output_dir = pathlib.Path(args.output_dir) - create_build_metadata_file(target_dir, get_build_metadata(), args.channel) + build_metadata = get_build_metadata() + build_metadata.openpilot.build_style = "release" if os.environ.get("RELEASE", None) is not None else "debug" + + create_build_metadata_file(target_dir, build_metadata, args.channel) create_caexclude_file(target_dir) - digest, caidx = create_casync_release(target_dir, output_dir, args.channel) + digest, caidx = create_casync_release(target_dir, output_dir, build_metadata.canonical) print(f"Created casync release from {target_dir} to {caidx} with digest {digest}") diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py index 1703c74a76..7061689c66 100644 --- a/system/updated/casync/common.py +++ b/system/updated/casync/common.py @@ -46,8 +46,8 @@ def create_build_metadata_file(path: pathlib.Path, build_metadata: BuildMetadata f.write(json.dumps(build_metadata_dict)) -def create_casync_release(target_dir: pathlib.Path, output_dir: pathlib.Path, channel: str): - caidx_file = output_dir / f"{channel}.caidx" +def create_casync_release(target_dir: pathlib.Path, output_dir: pathlib.Path, caidx_name: str): + caidx_file = output_dir / f"{caidx_name}.caidx" run(["casync", "make", *CASYNC_ARGS, caidx_file, target_dir]) digest = run(["casync", "digest", *CASYNC_ARGS, target_dir]).decode("utf-8").strip() return digest, caidx_file diff --git a/system/version.py b/system/version.py index ab8082dce2..902f013469 100755 --- a/system/version.py +++ b/system/version.py @@ -62,13 +62,14 @@ def is_dirty(cwd: str = BASEDIR) -> bool: return dirty -@dataclass(frozen=True) +@dataclass class OpenpilotMetadata: version: str release_notes: str git_commit: str git_origin: str git_commit_date: str + build_style: str is_dirty: bool # whether there are local changes @property @@ -90,7 +91,7 @@ class OpenpilotMetadata: .replace(":", "/", 1) -@dataclass(frozen=True) +@dataclass class BuildMetadata: channel: str openpilot: OpenpilotMetadata @@ -103,6 +104,10 @@ class BuildMetadata: def release_channel(self) -> bool: return self.channel in RELEASE_BRANCHES + @property + def canonical(self) -> str: + return f"{self.openpilot.version}-{self.openpilot.git_commit}-{self.openpilot.build_style}" + def build_metadata_from_dict(build_metadata: dict) -> BuildMetadata: channel = build_metadata.get("channel", "unknown") @@ -112,6 +117,7 @@ def build_metadata_from_dict(build_metadata: dict) -> BuildMetadata: git_commit = openpilot_metadata.get("git_commit", "unknown") git_origin = openpilot_metadata.get("git_origin", "unknown") git_commit_date = openpilot_metadata.get("git_commit_date", "unknown") + build_style = openpilot_metadata.get("build_style", "unknown") return BuildMetadata(channel, OpenpilotMetadata( version=version, @@ -119,6 +125,7 @@ def build_metadata_from_dict(build_metadata: dict) -> BuildMetadata: git_commit=git_commit, git_origin=git_origin, git_commit_date=git_commit_date, + build_style=build_style, is_dirty=False)) @@ -139,6 +146,7 @@ def get_build_metadata(path: str = BASEDIR) -> BuildMetadata: git_commit=get_commit(path), git_origin=get_origin(path), git_commit_date=get_commit_date(path), + build_style="unknown", is_dirty=is_dirty(path))) cloudlog.exception("unable to get build metadata") From 0cca1bb91a214ea2005d3e22b98df9714450770b Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 20:21:36 -0400 Subject: [PATCH 288/599] add system/updated to release (#31966) * add updated * all --- release/files_common | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/release/files_common b/release/files_common index 94af70eff2..b00f99906b 100644 --- a/release/files_common +++ b/release/files_common @@ -55,7 +55,7 @@ selfdrive/sentry.py selfdrive/tombstoned.py selfdrive/statsd.py -selfdrive/updated/* +selfdrive/updated/** system/logmessaged.py system/micd.py @@ -187,6 +187,8 @@ system/ubloxd/generated/* system/ubloxd/*.h system/ubloxd/*.cc +system/updated/* + selfdrive/locationd/__init__.py selfdrive/locationd/SConscript selfdrive/locationd/.gitignore From 4ecbaa41fae93d13fd0de805e216b670541a0084 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 21:31:22 -0400 Subject: [PATCH 289/599] controlsd: fix steer saturation premature warning (#31909) fix last actuators --- selfdrive/controls/controlsd.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index e6f91130b9..72f1514d88 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -143,6 +143,7 @@ class Controls: self.logged_comm_issue = None self.not_running_prev = None self.steer_limited = False + self.last_actuators = car.CarControl.Actuators.new_message() self.desired_curvature = 0.0 self.experimental_mode = False self.personality = self.read_personality_param() @@ -620,7 +621,7 @@ class Controls: undershooting = abs(lac_log.desiredLateralAccel) / abs(1e-3 + lac_log.actualLateralAccel) > 1.2 turning = abs(lac_log.desiredLateralAccel) > 1.0 good_speed = CS.vEgo > 5 - max_torque = abs(actuators.steer) > 0.99 + max_torque = abs(self.last_actuators.steer) > 0.99 if undershooting and turning and good_speed and max_torque: lac_log.active and self.events.add(EventName.steerSaturated) elif lac_log.saturated: @@ -727,6 +728,7 @@ class Controls: if not self.CP.passive and self.initialized: self.card.controls_update(CC) + self.last_actuators = CO.actuatorsOutput if self.CP.steerControlType == car.CarParams.SteerControlType.angle: self.steer_limited = abs(CC.actuators.steeringAngleDeg - CO.actuatorsOutput.steeringAngleDeg) > \ STEER_ANGLE_SATURATION_THRESHOLD From 108e033af32f37bfd78471a15584a051e666742e Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Thu, 21 Mar 2024 21:39:05 -0400 Subject: [PATCH 290/599] PlotJuggler: Update controls mismatch layout (#31965) * PlotJuggler: Update controls mismatch layout * Revert "PlotJuggler: Update controls mismatch layout" This reverts commit 665e6451f1f68bd300ad306a5bd7c8e6e2e61954. * minimize diff --- tools/plotjuggler/layouts/controls_mismatch_debug.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/plotjuggler/layouts/controls_mismatch_debug.xml b/tools/plotjuggler/layouts/controls_mismatch_debug.xml index 54586d6e7b..7f9def379c 100644 --- a/tools/plotjuggler/layouts/controls_mismatch_debug.xml +++ b/tools/plotjuggler/layouts/controls_mismatch_debug.xml @@ -24,6 +24,7 @@ + From d5cd457f827d698a1f4298d8efdda9800a87c018 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 21 Mar 2024 18:49:18 -0700 Subject: [PATCH 291/599] Honda Civic 2022: fix spotty camera query (#31963) * no extra ecu * cmt * documentation * update refs * nice * for testing * byebye * Update launch_openpilot.sh --- selfdrive/car/honda/values.py | 22 +++++++++------------- selfdrive/car/tests/test_fw_fingerprint.py | 4 ++-- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 1f59bd24d0..ceb1d4f27e 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -261,9 +261,9 @@ class CAR(Platforms): ) -HONDA_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ +HONDA_ALT_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(0xF112) -HONDA_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ +HONDA_ALT_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ p16(0xF112) FW_QUERY_CONFIG = FwQueryConfig( @@ -276,17 +276,10 @@ FW_QUERY_CONFIG = FwQueryConfig( ), # Data collection requests: - # Attempt to get the radarless Civic 2022+ camera FW + # Log manufacturer-specific identifier for current ECUs Request( - [StdQueries.TESTER_PRESENT_REQUEST, StdQueries.UDS_VERSION_REQUEST], - [StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.UDS_VERSION_RESPONSE], - bus=0, - logging=True - ), - # Log extra identifiers for current ECUs - Request( - [HONDA_VERSION_REQUEST], - [HONDA_VERSION_RESPONSE], + [HONDA_ALT_VERSION_REQUEST], + [HONDA_ALT_VERSION_RESPONSE], bus=1, logging=True, ), @@ -326,7 +319,10 @@ FW_QUERY_CONFIG = FwQueryConfig( }, extra_ecus=[ # The only other ECU on PT bus accessible by camera on radarless Civic - (Ecu.unknown, 0x18DAB3F1, None), + # This is likely a manufacturer-specific sub-address implementation: the camera responds to this and 0x18dab0f1 + # Unclear what the part number refers to: 8S103 is 'Camera Set Mono', while 36160 is 'Camera Monocular - Honda' + # TODO: add query back, camera does not support querying both in parallel and 0x18dab0f1 often fails to respond + # (Ecu.unknown, 0x18DAB3F1, None), ], ) diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index d9bea3b965..17ffc358f1 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -263,14 +263,14 @@ class TestFwFingerprintTiming(unittest.TestCase): print(f'get_vin {name} case, query time={self.total_time / self.N} seconds') def test_fw_query_timing(self): - total_ref_time = {1: 8.6, 2: 9.5} + total_ref_time = {1: 8.5, 2: 9.4} brand_ref_times = { 1: { 'gm': 1.0, 'body': 0.1, 'chrysler': 0.3, 'ford': 1.5, - 'honda': 0.55, + 'honda': 0.45, 'hyundai': 1.05, 'mazda': 0.1, 'nissan': 0.8, From 3ca113162e52928681d996380b607d9b19ece270 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 21 Mar 2024 19:32:11 -0700 Subject: [PATCH 292/599] speedup panda startup + test (#31955) * faster panda startup * 10hz signal * more iters * nothing * comment * usb is slow :/ --------- Co-authored-by: Comma Device --- selfdrive/boardd/pandad.py | 5 +--- selfdrive/boardd/tests/test_pandad.py | 37 +++++++++++++++++++-------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/selfdrive/boardd/pandad.py b/selfdrive/boardd/pandad.py index cf9938ec1d..9158a51469 100755 --- a/selfdrive/boardd/pandad.py +++ b/selfdrive/boardd/pandad.py @@ -155,10 +155,7 @@ def main() -> NoReturn: if first_run: # reset panda to ensure we're in a good state cloudlog.info(f"Resetting panda {panda.get_usb_serial()}") - if panda.is_internal(): - HARDWARE.reset_internal_panda() - else: - panda.reset(reconnect=False) + panda.reset(reconnect=False) for p in pandas: p.close() diff --git a/selfdrive/boardd/tests/test_pandad.py b/selfdrive/boardd/tests/test_pandad.py index 21cc0b5f37..9d7d0063f1 100755 --- a/selfdrive/boardd/tests/test_pandad.py +++ b/selfdrive/boardd/tests/test_pandad.py @@ -23,23 +23,28 @@ class TestPandad(unittest.TestCase): if len(Panda.list()) == 0: self._run_test(60) + self.spi = HARDWARE.get_device_type() != 'tici' + def tearDown(self): managed_processes['pandad'].stop() - def _run_test(self, timeout=30): + def _run_test(self, timeout=30) -> float: + st = time.monotonic() + sm = messaging.SubMaster(['pandaStates']) + managed_processes['pandad'].start() - - sm = messaging.SubMaster(['peripheralState']) - for _ in range(timeout*10): + while (time.monotonic() - st) < timeout: sm.update(100) - if sm['peripheralState'].pandaType != log.PandaState.PandaType.unknown: + if len(sm['pandaStates']) and sm['pandaStates'][0].pandaType != log.PandaState.PandaType.unknown: break - + dt = time.monotonic() - st managed_processes['pandad'].stop() - if sm['peripheralState'].pandaType == log.PandaState.PandaType.unknown: + if len(sm['pandaStates']) == 0 or sm['pandaStates'][0].pandaType == log.PandaState.PandaType.unknown: raise Exception("boardd failed to start") + return dt + def _go_to_dfu(self): HARDWARE.recover_internal_panda() assert Panda.wait_for_dfu(None, 10) @@ -88,14 +93,24 @@ class TestPandad(unittest.TestCase): assert any(Panda(s).is_internal() for s in Panda.list()) def test_best_case_startup_time(self): - # run once so we're setup + # run once so we're up to date self._run_test(60) - # should be fast this time - self._run_test(8) + ts = [] + for _ in range(10): + # should be nearly instant this time + dt = self._run_test(5) + ts.append(dt) + + # 2s for SPI, 5s for USB (due to enumeration) + # 0.2s pandad -> boardd + # 1.1s panda boot time (FIXME: it's all the drivers/harness.h init) + # plus some buffer + assert 1.0 < (sum(ts)/len(ts)) < (2.0 if self.spi else 5.0) + print("startup times", ts, sum(ts) / len(ts)) def test_protocol_version_check(self): - if HARDWARE.get_device_type() == 'tici': + if not self.spi: raise unittest.SkipTest("SPI test") # flash old fw fn = os.path.join(HERE, "bootstub.panda_h7_spiv0.bin") From ceaff0d96370a5cb0f15de27ae6e3a8bd9764c72 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 21 Mar 2024 20:00:15 -0700 Subject: [PATCH 293/599] Honda Civic 2022: allow fingerprinting without comma power (#31967) * do civic 2022 * new lines --- selfdrive/car/honda/values.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index ceb1d4f27e..36cdbc8732 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -300,17 +300,18 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.programmedFuelInjection: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_PILOT], - Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_PILOT], - Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], - Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_E], - Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, + Ecu.programmedFuelInjection: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, + CAR.HONDA_PILOT], + Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, CAR.HONDA_PILOT], + Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_2022, CAR.HONDA_E], + Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_2022, CAR.HONDA_E], + Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT], - Ecu.combinationMeter: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, + Ecu.combinationMeter: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_FIT, CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY_CHN], - Ecu.gateway: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_FIT, CAR.HONDA_FREED, - CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY, - CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_PILOT], + Ecu.gateway: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_FIT, + CAR.HONDA_FREED, CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, + CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_PILOT], Ecu.electricBrakeBooster: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], # existence correlates with transmission type for Accord ICE Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_PILOT], From 9315d0e7a5698a7fbcbdd23ce96450c7629f88fc Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 22 Mar 2024 11:10:29 +0800 Subject: [PATCH 294/599] ui/map_eta: round remaining km/mi to one decimal place (#31968) round distance --- selfdrive/ui/qt/maps/map_helpers.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/selfdrive/ui/qt/maps/map_helpers.cc b/selfdrive/ui/qt/maps/map_helpers.cc index 3907ff7b05..16923f7a43 100644 --- a/selfdrive/ui/qt/maps/map_helpers.cc +++ b/selfdrive/ui/qt/maps/map_helpers.cc @@ -137,17 +137,17 @@ std::optional coordinate_from_param(const std::string &pa // return {distance, unit} std::pair map_format_distance(float d, bool is_metric) { - auto round_distance = [](float d) -> float { - return (d > 10) ? std::nearbyint(d) : std::nearbyint(d * 10) / 10.0; + auto round_distance = [](float d) -> QString { + return (d > 10) ? QString::number(std::nearbyint(d)) : QString::number(std::nearbyint(d * 10) / 10.0, 'f', 1); }; d = std::max(d, 0.0f); if (is_metric) { - return (d > 500) ? std::pair{QString::number(round_distance(d / 1000)), QObject::tr("km")} + return (d > 500) ? std::pair{round_distance(d / 1000), QObject::tr("km")} : std::pair{QString::number(50 * std::nearbyint(d / 50)), QObject::tr("m")}; } else { float feet = d * METER_TO_FOOT; - return (feet > 500) ? std::pair{QString::number(round_distance(d * METER_TO_MILE)), QObject::tr("mi")} + return (feet > 500) ? std::pair{round_distance(d * METER_TO_MILE), QObject::tr("mi")} : std::pair{QString::number(50 * std::nearbyint(d / 50)), QObject::tr("ft")}; } } From 695fb1b5bf334db470ed4bde95ca0ef364a07b59 Mon Sep 17 00:00:00 2001 From: Marius David Date: Fri, 22 Mar 2024 05:48:04 +0200 Subject: [PATCH 295/599] VW: Octavia Scout 2018 fingerprint (#31094) Update all submodules to latest Co-authored-by: Shane Smiskol --- docs/CARS.md | 3 ++- selfdrive/car/volkswagen/fingerprints.py | 3 +++ selfdrive/car/volkswagen/values.py | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/CARS.md b/docs/CARS.md index 35a77fd78f..570c373f33 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -4,7 +4,7 @@ A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. -# 289 Supported Cars +# 290 Supported Cars |Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Resume from stop|Hardware Needed
 |Video| |---|---|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:| @@ -215,6 +215,7 @@ A supported vehicle is one that just works when you install a comma device. All |Škoda|Kodiaq 2017-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Škoda|Octavia 2015-19[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Škoda|Octavia RS 2016[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Octavia Scout 2017-19[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Škoda|Scala 2020-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| |Škoda|Superb 2015-22[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Alphard 2019-20|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 71aee67815..96d721bd56 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -1069,6 +1069,7 @@ FW_VERSIONS = { b'\xf1\x8704L906026BP\xf1\x897608', b'\xf1\x8704L906026BS\xf1\x891541', b'\xf1\x875G0906259C \xf1\x890002', + b'\xf1\x8704L906026BT\xf1\x897612', ], (Ecu.transmission, 0x7e1, None): [ b'\xf1\x870CW300041L \xf1\x891601', @@ -1080,6 +1081,7 @@ FW_VERSIONS = { b'\xf1\x870D9300041H \xf1\x895220', b'\xf1\x870D9300041J \xf1\x894902', b'\xf1\x870D9300041P \xf1\x894507', + b'\xf1\x870D9300014T \xf1\x895221', ], (Ecu.srs, 0x715, None): [ b'\xf1\x873Q0959655AC\xf1\x890200\xf1\x82\r11120011100010022212110200', @@ -1099,6 +1101,7 @@ FW_VERSIONS = { b'\xf1\x875Q0909144R \xf1\x891061\xf1\x82\x0516A00604A1', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521T00601A1', b'\xf1\x875QD909144E \xf1\x891081\xf1\x82\x0521T00503A1', + b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521T00603A1', ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x875Q0907567P \xf1\x890100\xf1\x82\x0101', diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index ab4008d643..86b0dbd7aa 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -334,6 +334,7 @@ class CAR(Platforms): [ VWCarDocs("Škoda Octavia 2015-19"), VWCarDocs("Škoda Octavia RS 2016"), + VWCarDocs("Škoda Octavia Scout 2017-19"), ], VolkswagenCarSpecs(mass=1388, wheelbase=2.68), ) From a785a71190c7846577e45b7787dde4a3faf974e5 Mon Sep 17 00:00:00 2001 From: Pedro Nascimento de Lima Date: Fri, 22 Mar 2024 15:58:56 -0400 Subject: [PATCH 296/599] Mazda CX-5 2024 fingerprint (#31974) mazda cx5 2024 fingerprint --- selfdrive/car/mazda/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/mazda/fingerprints.py b/selfdrive/car/mazda/fingerprints.py index e7396d566e..f30bc1b5cd 100644 --- a/selfdrive/car/mazda/fingerprints.py +++ b/selfdrive/car/mazda/fingerprints.py @@ -10,6 +10,7 @@ FW_VERSIONS = { ], (Ecu.engine, 0x7e0, None): [ b'PEW5-188K2-A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PX2D-188K2-G\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PW67-188K2-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2G-188K2-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2H-188K2-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -38,6 +39,7 @@ FW_VERSIONS = { b'PXFG-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PYB2-21PS1-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PYB2-21PS1-J\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PYJ3-21PS1-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'SH51-21PS1-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, From 7cbf3a54f11c1b33627bb30eed3de38640b77fe2 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 22 Mar 2024 16:20:11 -0400 Subject: [PATCH 297/599] casync: use xz compression (#31977) use xz compression --- system/updated/casync/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py index 7061689c66..b5fb4d5802 100644 --- a/system/updated/casync/common.py +++ b/system/updated/casync/common.py @@ -6,7 +6,7 @@ import subprocess from openpilot.system.version import BUILD_METADATA_FILENAME, BuildMetadata -CASYNC_ARGS = ["--with=symlinks", "--with=permissions"] +CASYNC_ARGS = ["--with=symlinks", "--with=permissions", "--compression=xz"] CASYNC_FILES = [BUILD_METADATA_FILENAME, ".caexclude"] From a2a372d3147d14f7cb688458c659331a52951cae Mon Sep 17 00:00:00 2001 From: James <91348155+FrogAi@users.noreply.github.com> Date: Fri, 22 Mar 2024 14:09:23 -0700 Subject: [PATCH 298/599] Cleanup settings imports (#31979) --- selfdrive/ui/qt/offroad/settings.cc | 15 +++------------ selfdrive/ui/qt/offroad/settings.h | 1 - 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 185d5457e3..af32a9b10b 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -1,5 +1,3 @@ -#include "selfdrive/ui/qt/offroad/settings.h" - #include #include #include @@ -8,21 +6,14 @@ #include -#include "selfdrive/ui/qt/network/networking.h" - -#include "common/params.h" #include "common/watchdog.h" #include "common/util.h" -#include "system/hardware/hw.h" -#include "selfdrive/ui/qt/widgets/controls.h" -#include "selfdrive/ui/qt/widgets/input.h" +#include "selfdrive/ui/qt/network/networking.h" +#include "selfdrive/ui/qt/offroad/settings.h" +#include "selfdrive/ui/qt/qt_window.h" #include "selfdrive/ui/qt/widgets/prime.h" #include "selfdrive/ui/qt/widgets/scrollview.h" #include "selfdrive/ui/qt/widgets/ssh_keys.h" -#include "selfdrive/ui/qt/widgets/toggle.h" -#include "selfdrive/ui/ui.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/qt_window.h" TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { // param, title, desc, icon diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index f9e1648447..35a044bdd2 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -10,7 +10,6 @@ #include #include - #include "selfdrive/ui/ui.h" #include "selfdrive/ui/qt/util.h" #include "selfdrive/ui/qt/widgets/controls.h" From b4fdfeec6216bd57f03c560ead15bd16c5e54cf6 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 22 Mar 2024 14:12:23 -0700 Subject: [PATCH 299/599] why did panda have a boot time (#31978) * why did panda have a boot time * update test --- panda | 2 +- selfdrive/boardd/tests/test_pandad.py | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/panda b/panda index de061e4f73..dd82382d5f 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit de061e4f7317dbacc206ef5f038d35a17e8ef0e7 +Subproject commit dd82382d5f9fcfbf9958238ee33739693fd3f6fa diff --git a/selfdrive/boardd/tests/test_pandad.py b/selfdrive/boardd/tests/test_pandad.py index 9d7d0063f1..3434be3fe4 100755 --- a/selfdrive/boardd/tests/test_pandad.py +++ b/selfdrive/boardd/tests/test_pandad.py @@ -102,11 +102,10 @@ class TestPandad(unittest.TestCase): dt = self._run_test(5) ts.append(dt) - # 2s for SPI, 5s for USB (due to enumeration) - # 0.2s pandad -> boardd - # 1.1s panda boot time (FIXME: it's all the drivers/harness.h init) - # plus some buffer - assert 1.0 < (sum(ts)/len(ts)) < (2.0 if self.spi else 5.0) + # 5s for USB (due to enumeration) + # - 0.2s pandad -> boardd + # - plus some buffer + assert 0.1 < (sum(ts)/len(ts)) < (0.5 if self.spi else 5.0) print("startup times", ts, sum(ts) / len(ts)) def test_protocol_version_check(self): From 10e3652f286d9a2caf82ee168d7e760221bd61fb Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:36:32 -0300 Subject: [PATCH 300/599] Multilang: update pt-BR translations (#31980) update pt-BR translations --- selfdrive/ui/translations/main_pt-BR.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index a61f3a9949..adab93eff9 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -299,11 +299,11 @@ Pair Device - + Parear Dispositivo Pair - + PAREAR
@@ -613,7 +613,7 @@ now - + agora From 6e60fed737114099834faea8fcde1669fe44a3ad Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 22 Mar 2024 15:05:38 -0700 Subject: [PATCH 301/599] Hyundai CAN: allow fingerprinting without comma power for many platforms (#31969) * only including master data since eps and other ecus were only added in last 60 days * CAR.HYUNDAI_SANTA_FE_2022 * CAR.GENESIS_G70 * CAR.KIA_K5_2021 * CAR.HYUNDAI_SONATA_HYBRID * CAR.HYUNDAI_ELANTRA_2021 * CAR.HYUNDAI_ELANTRA_HEV_2021 * CAR.HYUNDAI_SANTA_FE * CAR.KIA_STINGER * CAR.KIA_NIRO_PHEV_2022 * slightly more data * data from forks now * CAR.GENESIS_G70_2020 * CAR.KIA_NIRO_HEV_2021 * CAR.KIA_FORTE * CAR.HYUNDAI_IONIQ_PHEV * CAR.HYUNDAI_KONA_EV_2022 * CAR.KIA_STINGER_2022 * HYUNDAI_KONA_EV * CAR.KIA_OPTIMA_H_G4_FL * clean up --- selfdrive/car/hyundai/values.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index f1a3c3ebc6..37d18d2427 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -743,9 +743,16 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.transmission: [CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA], - Ecu.engine: [CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA], - Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA], + Ecu.transmission: [CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, + CAR.GENESIS_G70, CAR.KIA_K5_2021, CAR.HYUNDAI_SONATA_HYBRID, CAR.HYUNDAI_ELANTRA_2021, CAR.HYUNDAI_ELANTRA_HEV_2021, + CAR.HYUNDAI_SANTA_FE, CAR.KIA_STINGER, CAR.KIA_NIRO_PHEV_2022, CAR.GENESIS_G70_2020, CAR.KIA_NIRO_HEV_2021, + CAR.KIA_FORTE, CAR.HYUNDAI_IONIQ_PHEV, CAR.KIA_STINGER_2022, CAR.GENESIS_G90], + Ecu.engine: [CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, + CAR.GENESIS_G70, CAR.KIA_K5_2021, CAR.HYUNDAI_SONATA_HYBRID, CAR.HYUNDAI_ELANTRA_2021, CAR.HYUNDAI_ELANTRA_HEV_2021, + CAR.HYUNDAI_SANTA_FE, CAR.KIA_STINGER, CAR.KIA_NIRO_PHEV_2022, CAR.GENESIS_G70_2020, CAR.KIA_NIRO_HEV_2021, CAR.KIA_FORTE, + CAR.HYUNDAI_IONIQ_PHEV, CAR.KIA_STINGER_2022, CAR.GENESIS_G90, CAR.KIA_OPTIMA_H_G4_FL], + Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_ELANTRA_2021, + CAR.HYUNDAI_SANTA_FE, CAR.KIA_FORTE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV], }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms From c0a96d27470eee9b8f4bedf1a9e050e5e2e77df3 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Fri, 22 Mar 2024 15:57:36 -0700 Subject: [PATCH 302/599] thermald: publish immediately after ignition (#31981) * thermald: publish immediately after ignition * fix --- selfdrive/thermald/thermald.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/selfdrive/thermald/thermald.py b/selfdrive/thermald/thermald.py index bfc50c4478..f5fc949637 100755 --- a/selfdrive/thermald/thermald.py +++ b/selfdrive/thermald/thermald.py @@ -207,17 +207,10 @@ def thermald_thread(end_event, hw_queue) -> None: while not end_event.is_set(): sm.update(PANDA_STATES_TIMEOUT) - # Run at 2Hz - if sm.frame % round(SERVICE_LIST['pandaStates'].frequency * DT_TRML) != 0: - continue - pandaStates = sm['pandaStates'] peripheralState = sm['peripheralState'] peripheral_panda_present = peripheralState.pandaType != log.PandaState.PandaType.unknown - msg = read_thermal(thermal_config) - msg.deviceState.deviceType = HARDWARE.get_device_type() - if sm.updated['pandaStates'] and len(pandaStates) > 0: # Set ignition based on any panda connected @@ -237,6 +230,14 @@ def thermald_thread(end_event, hw_queue) -> None: onroad_conditions["ignition"] = False cloudlog.error("panda timed out onroad") + # Run at 2Hz, plus rising edge of ignition + ign_edge = started_ts is None and onroad_conditions["ignition"] + if (sm.frame % round(SERVICE_LIST['pandaStates'].frequency * DT_TRML) != 0) and not ign_edge: + continue + + msg = read_thermal(thermal_config) + msg.deviceState.deviceType = HARDWARE.get_device_type() + try: last_hw_state = hw_queue.get_nowait() except queue.Empty: From 82a07afb2111b4367742b97ef7073b441d371891 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sat, 23 Mar 2024 04:30:55 -0700 Subject: [PATCH 303/599] HKG: remove engine and transmission ECUs (#31985) * remove engine and transmission * remove engine and transmission * also here --- selfdrive/car/hyundai/fingerprints.py | 574 -------------------- selfdrive/car/hyundai/tests/test_hyundai.py | 2 +- selfdrive/car/hyundai/values.py | 16 +- 3 files changed, 5 insertions(+), 587 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index b7f9cb3384..68598b65ff 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -54,12 +54,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IG MFC AT MES LHD 1.00 1.04 99211-G8100 200511', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 U912\x00\x00\x00\x00\x00\x00SIG0M35MH0\xa4 |.', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81641KA051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_AZERA_HEV_6TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ @@ -77,14 +71,6 @@ FW_VERSIONS = { b'\xf1\x00IGhe SCC FHCUP 1.00 1.01 99110-M9000 ', b'\xf1\x00IGhe SCC FHCUP 1.00 1.02 99110-M9000 ', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006T7N0_C2\x00\x006T7Q2051\x00\x00TIG2H24KA2\x12@\x11\xb7', - b'\xf1\x006T7N0_C2\x00\x006T7VA051\x00\x00TIGSH24KA1\xc7\x85\xe2`', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H570051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H590051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_GENESIS: { (Ecu.fwdCamera, 0x7c4, None): [ @@ -103,12 +89,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AEH MFC AT EUR LHD 1.00 1.00 95740-G2400 180222', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6F2051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U3H1051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H1051\x00\x00HAE0G16US2\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_IONIQ_PHEV_2019: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -120,13 +100,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AEP MFC AT USA LHD 1.00 1.00 95740-G2400 180222', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PAE0G16NS1\x00\x00\x00\x00', - b'\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PAE0G16NS1\xdbD\r\x81', - ], }, CAR.HYUNDAI_IONIQ_PHEV: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -148,19 +121,6 @@ FW_VERSIONS = { b'\xf1\x00AEP MFC AT USA LHD 1.00 1.00 95740-G2700 201027', b'\xf1\x00AEP MFC AT USA LHD 1.00 1.01 95740-G2600 190819', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3H1_C2\x00\x006U3J8051\x00\x00PAETG16UL0\x00\x00\x00\x00', - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL0\x00\x00\x00\x00', - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL2\xad\xeb\xabt', - b'\xf1\x816U3J8051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J8051\x00\x00PAETG16UL0\x00\x00\x00\x00', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL0\x82zT\xd2', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL2\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_IONIQ_EV_2020: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -210,13 +170,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AEH MFC AT USA LHD 1.00 1.00 95740-G2700 201027', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HAE0G16NL2\x96\xda\xd4\xee', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HAE0G16NL2\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_SONATA: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -242,28 +195,6 @@ FW_VERSIONS = { b'\xf1\x8758910-L0100\xf1\x00DN ESC \x07 104\x19\x08\x01 58910-L0100', b'\xf1\x8758910-L0100\xf1\x00DN ESC \x07 106 \x07\x01 58910-L0100', ], - (Ecu.engine, 0x7e0, None): [ - b'HM6M1_0a0_F00', - b'HM6M1_0a0_G20', - b'HM6M2_0a0_BD0', - b'\xf1\x81HM6M1_0a0_F00', - b'\xf1\x81HM6M1_0a0_G20', - b'\xf1\x82DNBVN5GMCCXXXDCA', - b'\xf1\x82DNBVN5GMCCXXXG2F', - b'\xf1\x82DNBWN5TMDCXXXG2E', - b'\xf1\x82DNCVN5GMCCXXXF0A', - b'\xf1\x82DNCVN5GMCCXXXG2B', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M1_0a0_J10', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x82DNDWN5TMDCXXXJ1A', - b'\xf1\x8739110-2S041\xf1\x81HM6M1_0a0_M00', - b'\xf1\x8739110-2S041\xf1\x81HM6M1_0a0_M10', - b'\xf1\x8739110-2S042\xf1\x81HM6M1_0a0_M00', - b'\xf1\x8739110-2S278\xf1\x82DNDVD5GMCCXXXL5B', - b'\xf1\x87391162M003', - b'\xf1\x87391162M010', - b'\xf1\x87391162M013', - b'\xf1\x87391162M023', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DN8 MDPS C 1,00 1,01 56310L0010\x00 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101', @@ -294,72 +225,6 @@ FW_VERSIONS = { b'\xf1\x00DN8 MFC AT USA LHD 1.00 1.06 99211-L1000 210325', b'\xf1\x00DN8 MFC AT USA LHD 1.00 1.07 99211-L1000 211223', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00HT6TA260BLHT6TA800A1TDN8C20KS4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x00HT6TA260BLHT6TA810A1TDN8M25GS0\x00\x00\x00\x00\x00\x00\xaa\x8c\xd9p', - b'\xf1\x00HT6WA250BLHT6WA910A1SDN8G25NB1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x00HT6WA250BLHT6WA910A1SDN8G25NB1\x00\x00\x00\x00\x00\x00\x96\xa1\xf1\x92', - b'\xf1\x00HT6WA280BLHT6WAD10A1SDN8G25NB2\x00\x00\x00\x00\x00\x00\x08\xc9O:', - b'\xf1\x00HT6WA280BLHT6WAD10A1SDN8G25NB4\x00\x00\x00\x00\x00\x00g!l[', - b'\xf1\x00HT6WA280BLHT6WAE10A1SDN8G25NB5\x00\x00\x00\x00\x00\x00\xe0t\xa9\xba', - b'\xf1\x00T02601BL T02730A1 VDN8T25XXX730NS5\xf7_\x92\xf5', - b'\xf1\x00T02601BL T02832A1 VDN8T25XXX832NS8G\x0e\xfeE', - b'\xf1\x00T02601BL T02900A1 VDN8T25XXX900NSA\xb9\x13\xf9p', - b'\xf1\x00T02601BL T02900A1 VDN8T25XXX900NSCF\xe4!Y', - b'\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16KB05\x95h%', - b'\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB1\xe3\xc10\xa1', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87954A02N060\x00\x00\x00\x00\x00\xf1\x81T02730A1 \xf1\x00T02601BL T02730A1 VDN8T25XXX730NS5\xf7_\x92\xf5', - b'\xf1\x87SAKFBA2926554GJ2VefVww\x87xwwwww\x88\x87xww\x87wTo\xfb\xffvUo\xff\x8d\x16\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SAKFBA3030524GJ2UVugww\x97yx\x88\x87\x88vw\x87gww\x87wto\xf9\xfffUo\xff\xa2\x0c\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SAKFBA3356084GJ2\x86fvgUUuWgw\x86www\x87wffvf\xb6\xcf\xfc\xffeUO\xff\x12\x19\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SAKFBA3474944GJ2ffvgwwwwg\x88\x86x\x88\x88\x98\x88ffvfeo\xfa\xff\x86fo\xff\t\xae\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SAKFBA3475714GJ2Vfvgvg\x96yx\x88\x97\x88ww\x87ww\x88\x87xs_\xfb\xffvUO\xff\x0f\xff\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALDBA3510954GJ3ww\x87xUUuWx\x88\x87\x88\x87w\x88wvfwfc_\xf9\xff\x98wO\xffl\xe0\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3573534GJ3\x89\x98\x89\x88EUuWgwvwwwwww\x88\x87xTo\xfa\xff\x86f\x7f\xffo\x0e\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3601464GJ3\x88\x88\x88\x88ffvggwvwvw\x87gww\x87wvo\xfb\xff\x98\x88\x7f\xffjJ\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3753044GJ3UUeVff\x86hwwwwvwwgvfgfvo\xf9\xfffU_\xffC\xae\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3862294GJ3vfvgvefVxw\x87\x87w\x88\x87xwwwwc_\xf9\xff\x87w\x9f\xff\xd5\xdc\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3873834GJ3fefVwuwWx\x88\x97\x88w\x88\x97xww\x87wU_\xfb\xff\x86f\x8f\xffN\x04\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA4525334GJ3\x89\x99\x99\x99fevWh\x88\x86\x88fwvgw\x88\x87xfo\xfa\xffuDo\xff\xd1>\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA4626804GJ3wwww\x88\x87\x88xx\x88\x87\x88wwgw\x88\x88\x98\x88\x95_\xf9\xffuDo\xff|\xe7\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA4803224GJ3wwwwwvwg\x88\x88\x98\x88wwww\x87\x88\x88xu\x9f\xfc\xff\x87f\x8f\xff\xea\xea\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA6212564GJ3\x87wwwUTuGg\x88\x86xx\x88\x87\x88\x87\x88\x98xu?\xf9\xff\x97f\x7f\xff\xb8\n\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA6347404GJ3wwwwff\x86hx\x88\x97\x88\x88\x88\x88\x88vfgf\x88?\xfc\xff\x86Uo\xff\xec/\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA6901634GJ3UUuWVeVUww\x87wwwwwvUge\x86/\xfb\xff\xbb\x99\x7f\xff]2\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA7077724GJ3\x98\x88\x88\x88ww\x97ygwvwww\x87ww\x88\x87x\x87_\xfd\xff\xba\x99o\xff\x99\x01\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALFBA3525114GJ2wvwgvfvggw\x86wffvffw\x86g\x85_\xf9\xff\xa8wo\xffv\xcd\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA3624024GJ2\x88\x88\x88\x88wv\x87hx\x88\x97\x88x\x88\x97\x88ww\x87w\x86o\xfa\xffvU\x7f\xff\xd1\xec\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA3960824GJ2wwwwff\x86hffvfffffvfwfg_\xf9\xff\xa9\x88\x8f\xffb\x99\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4011074GJ2fgvwwv\x87hw\x88\x87xww\x87wwfgvu_\xfa\xffefo\xff\x87\xc0\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4121304GJ2x\x87xwff\x86hwwwwww\x87wwwww\x84_\xfc\xff\x98\x88\x9f\xffi\xa6\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4195874GJ2EVugvf\x86hgwvwww\x87wgw\x86wc_\xfb\xff\x98\x88\x8f\xff\xe23\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4625294GJ2eVefeUeVx\x88\x97\x88wwwwwwww\xa7o\xfb\xffvw\x9f\xff\xee.\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4728774GJ2vfvg\x87vwgww\x87ww\x88\x97xww\x87w\x86_\xfb\xffeD?\xffk0\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA5129064GJ2vfvgwv\x87hx\x88\x87\x88ww\x87www\x87wd_\xfa\xffvfo\xff\x1d\x00\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA5454914GJ2\x98\x88\x88\x88\x87vwgx\x88\x87\x88xww\x87ffvf\xa7\x7f\xf9\xff\xa8w\x7f\xff\x1b\x90\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA5987784GJ2UVugDDtGx\x88\x87\x88w\x88\x87xwwwwd/\xfb\xff\x97fO\xff\xb0h\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA5987864GJ2fgvwUUuWgwvw\x87wxwwwww\x84/\xfc\xff\x97w\x7f\xff\xdf\x1d\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA6337644GJ2vgvwwv\x87hgffvwwwwwwww\x85O\xfa\xff\xa7w\x7f\xff\xc5\xfc\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA6802004GJ2UUuWUUuWgw\x86www\x87www\x87w\x96?\xf9\xff\xa9\x88\x7f\xff\x9fK\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA6892284GJ233S5\x87w\x87xx\x88\x87\x88vwwgww\x87w\x84?\xfb\xff\x98\x88\x8f\xff*\x9e\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA7005534GJ2eUuWfg\x86xxww\x87x\x88\x87\x88\x88w\x88\x87\x87O\xfc\xffuUO\xff\xa3k\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB1\xe3\xc10\xa1', - b'\xf1\x87SALFBA7152454GJ2gvwgFf\x86hx\x88\x87\x88vfWfffffd?\xfa\xff\xba\x88o\xff,\xcf\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB1\xe3\xc10\xa1', - b'\xf1\x87SALFBA7460044GJ2gx\x87\x88Vf\x86hx\x88\x87\x88wwwwgw\x86wd?\xfa\xff\x86U_\xff\xaf\x1f\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SALFBA7485034GJ2ww\x87xww\x87xfwvgwwwwvfgf\xa5/\xfc\xff\xa9w_\xff40\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMDBA7743924GJ3wwwwww\x87xgwvw\x88\x88\x88\x88wwww\x85_\xfa\xff\x86f\x7f\xff0\x9d\xf1\x89HT6WAD10A1\xf1\x82SDN8G25NB2\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SAMDBA7817334GJ3Vgvwvfvgww\x87wwwwwwfgv\x97O\xfd\xff\x88\x88o\xff\x8e\xeb\xf1\x89HT6WAD10A1\xf1\x82SDN8G25NB2\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SAMDBA8054504GJ3gw\x87xffvgffffwwwweUVUf?\xfc\xffvU_\xff\xddl\xf1\x89HT6WAD10A1\xf1\x82SDN8G25NB2\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SAMFB41553621GC7ww\x87xUU\x85Xvwwg\x88\x88\x88\x88wwgw\x86\xaf\xfb\xffuDo\xff\xaa\x8f\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFB42555421GC7\x88\x88\x88\x88wvwgx\x88\x87\x88wwgw\x87wxw3\x8f\xfc\xff\x98f\x8f\xffga\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFBA7978674GJ2gw\x87xgw\x97ywwwwvUGeUUeU\x87O\xfb\xff\x98w\x8f\xfffF\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFBA8105254GJ2wx\x87\x88Vf\x86hx\x88\x87\x88wwwwwwww\x86O\xfa\xff\x99\x88\x7f\xffZG\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFBA9283024GJ2wwwwEUuWwwgwwwwwwwww\x87/\xfb\xff\x98w\x8f\xff<\xd3\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFBA9708354GJ2wwwwVf\x86h\x88wx\x87xww\x87\x88\x88\x88\x88w/\xfa\xff\x97w\x8f\xff\x86\xa0\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SANDB45316691GC6\x99\x99\x99\x99\x88\x88\xa8\x8avfwfwwww\x87wxwT\x9f\xfd\xff\x88wo\xff\x1c\xfa\xf1\x89HT6WAD10A1\xf1\x82SDN8G25NB3\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SANFB45889451GC7wx\x87\x88gw\x87x\x88\x88x\x88\x87wxw\x87wxw\x87\x8f\xfc\xffeU\x8f\xff+Q\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - ], }, CAR.HYUNDAI_SONATA_LF: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -369,43 +234,20 @@ FW_VERSIONS = { b'\xf1\x00LF ESC \t 11 \x17\x01\x13 58920-C2610', b'\xf1\x00LF ESC \x0c 11 \x17\x01\x13 58920-C2610', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81606D5051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81606D5K51\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81606G1051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00LFF LKAS AT USA LHD 1.00 1.01 95740-C1000 E51', b'\xf1\x00LFF LKAS AT USA LHD 1.01 1.02 95740-C1000 E52', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24NL1\xb0\x9f\xee\xf5', - b'\xf1\x006T6H0_C2\x00\x006T6B7051\x00\x00TLF0G24SL4;\x08\x12i', - b'\xf1\x87LAHSGN012918KF10\x98\x88x\x87\x88\x88x\x87\x88\x88\x98\x88\x87w\x88w\x88\x88\x98\x886o\xf6\xff\x98w\x7f\xff3\x00\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2\x00\x00\x00\x00', - b'\xf1\x87LAHSGN012918KF10\x98\x88x\x87\x88\x88x\x87\x88\x88\x98\x88\x87w\x88w\x88\x88\x98\x886o\xf6\xff\x98w\x7f\xff3\x00\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2H\r\xbdm', - b'\xf1\x87LAJSG49645724HF0\x87x\x87\x88\x87www\x88\x99\xa8\x89\x88\x99\xa8\x89\x88\x99\xa8\x89S_\xfb\xff\x87f\x7f\xff^2\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2H\r\xbdm', - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B4051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24NL1\x00\x00\x00\x00', - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B4051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24NL1\xb0\x9f\xee\xf5', - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B4051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24SL2n\x8d\xbe\xd8', - ], }, CAR.HYUNDAI_TUCSON: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TL__ FCA F-CUP 1.00 1.01 99110-D3500 ', b'\xf1\x00TL__ FCA F-CUP 1.00 1.02 99110-D3510 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81606G3051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x8971TLC2NAIDDIR002\xf1\x8271TLC2NAIDDIR002', - ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00TL MFC AT KOR LHD 1.00 1.02 95895-D3800 180719', b'\xf1\x00TL MFC AT USA LHD 1.00 1.06 95895-D3800 190107', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x87KMLDCU585233TJ20wx\x87\x88x\x88\x98\x89vfwfwwww\x87f\x9f\xff\x98\xff\x7f\xf9\xf7s\xf1\x816T6G4051\x00\x00\xf1\x006T6J0_C2\x00\x006T6G4051\x00\x00TTL4G24NH2\x00\x00\x00\x00', - b'\xf1\x87LBJXAN202299KF22\x87x\x87\x88ww\x87xx\x88\x97\x88\x87\x88\x98x\x88\x99\x98\x89\x87o\xf6\xff\x87w\x7f\xff\x12\x9a\xf1\x81U083\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U083\x00\x00\x00\x00\x00\x00TTL2V20KL1\x8fRn\x8a', - ], }, CAR.HYUNDAI_SANTA_FE: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -426,11 +268,6 @@ FW_VERSIONS = { b'\xf1\x00TM ESC \r 104\x19\x07\x08 58910-S2650', b'\xf1\x00TM ESC \r 105\x19\x05# 58910-S1500', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81606EA051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81606G1051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81606G3051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.00 56340-S2000 8409', b'\xf1\x00TM MDPS C 1.00 1.00 56340-S2000 8A12', @@ -441,34 +278,6 @@ FW_VERSIONS = { b'\xf1\x00TM MFC AT EUR LHD 1.00 1.01 99211-S1010 181207', b'\xf1\x00TM MFC AT USA LHD 1.00 1.00 99211-S2000 180409', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS5\x00\x00\x00\x00', - b'\xf1\x00bcsh8p54 U833\x00\x00\x00\x00\x00\x00TTM4V22US3_<]\xf1', - b'\xf1\x87LBJSGA7082574HG0\x87www\x98\x88\x88\x88\x99\xaa\xb9\x9afw\x86gx\x99\xa7\x89co\xf8\xffvU_\xffR\xaf\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2T20NS1\x00\xa6\xe0\x91', - b'\xf1\x87LBKSGA0458404HG0vfvg\x87www\x89\x99\xa8\x99y\xaa\xa7\x9ax\x88\xa7\x88t_\xf9\xff\x86w\x8f\xff\x15x\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2T20NS1\x00\x00\x00\x00', - b'\xf1\x87LDJUEA6010814HG1\x87w\x87x\x86gvw\x88\x88\x98\x88gw\x86wx\x88\x97\x88\x85o\xf8\xff\x86f_\xff\xd37\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4T20NS0\xf8\x19\x92g', - b'\xf1\x87LDJUEA6458264HG1ww\x87x\x97x\x87\x88\x88\x99\x98\x89g\x88\x86xw\x88\x97x\x86o\xf7\xffvw\x8f\xff3\x9a\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4T20NS0\xf8\x19\x92g', - b'\xf1\x87LDKUEA2045844HG1wwww\x98\x88x\x87\x88\x88\xa8\x88x\x99\x97\x89x\x88\xa7\x88U\x7f\xf8\xffvfO\xffC\x1e\xf1\x816W3E0051\x00\x00\xf1\x006W351_C2\x00\x006W3E0051\x00\x00TTM4T20NS3\x00\x00\x00\x00', - b'\xf1\x87LDKUEA9993304HG1\x87www\x97x\x87\x88\x99\x99\xa9\x99x\x99\xa7\x89w\x88\x97x\x86_\xf7\xffwwO\xffl#\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4T20NS1R\x7f\x90\n', - b'\xf1\x87LDLUEA6061564HG1\xa9\x99\x89\x98\x87wwwx\x88\x97\x88x\x99\xa7\x89x\x99\xa7\x89sO\xf9\xffvU_\xff<\xde\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS50\xcb\xc3\xed', - b'\xf1\x87LDLUEA6159884HG1\x88\x87hv\x99\x99y\x97\x89\xaa\xb8\x9ax\x99\x87\x89y\x99\xb7\x99\xa7?\xf7\xff\x97wo\xff\xf3\x05\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS5\x00\x00\x00\x00', - b'\xf1\x87LDLUEA6852664HG1\x97wWu\x97www\x89\xaa\xc8\x9ax\x99\x97\x89x\x99\xa7\x89SO\xf7\xff\xa8\x88\x7f\xff\x03z\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS50\xcb\xc3\xed', - b'\xf1\x87LDLUEA6898374HG1fevW\x87wwwx\x88\x97\x88h\x88\x96\x88x\x88\xa7\x88ao\xf9\xff\x98\x99\x7f\xffD\xe2\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS5\x00\x00\x00\x00', - b'\xf1\x87LDLUEA6898374HG1fevW\x87wwwx\x88\x97\x88h\x88\x96\x88x\x88\xa7\x88ao\xf9\xff\x98\x99\x7f\xffD\xe2\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS50\xcb\xc3\xed', - b'\xf1\x87SBJWAA5842214GG0\x88\x87\x88xww\x87x\x89\x99\xa8\x99\x88\x99\x98\x89w\x88\x87xw_\xfa\xfffU_\xff\xd1\x8d\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS1\x98{|\xe3', - b'\xf1\x87SBJWAA5890864GG0\xa9\x99\x89\x98\x98\x87\x98y\x89\x99\xa8\x99w\x88\x87xww\x87wvo\xfb\xffuD_\xff\x9f\xb5\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS1\x98{|\xe3', - b'\xf1\x87SBJWAA6562474GG0ffvgeTeFx\x88\x97\x88ww\x87www\x87w\x84o\xfa\xff\x87fO\xff\xc2 \xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS1\x00\x00\x00\x00', - b'\xf1\x87SBJWAA6562474GG0ffvgeTeFx\x88\x97\x88ww\x87www\x87w\x84o\xfa\xff\x87fO\xff\xc2 \xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS1\x98{|\xe3', - b'\xf1\x87SBJWAA7780564GG0wvwgUUeVwwwwx\x88\x87\x88wwwwd_\xfc\xff\x86f\x7f\xff\xd7*\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS2F\x84<\xc0', - b'\xf1\x87SBJWAA8278284GG0ffvgUU\x85Xx\x88\x87\x88x\x88w\x88ww\x87w\x96o\xfd\xff\xa7U_\xff\xf2\xa0\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS2F\x84<\xc0', - b'\xf1\x87SBLWAA4363244GG0wvwgwv\x87hgw\x86ww\x88\x87xww\x87wdo\xfb\xff\x86f\x7f\xff3$\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM2G24NS6\x00\x00\x00\x00', - b'\xf1\x87SBLWAA4363244GG0wvwgwv\x87hgw\x86ww\x88\x87xww\x87wdo\xfb\xff\x86f\x7f\xff3$\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM2G24NS6x0\x17\xfe', - b'\xf1\x87SBLWAA4899564GG0VfvgUU\x85Xx\x88\x87\x88vfgf\x87wxwvO\xfb\xff\x97f\xb1\xffSB\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM2G24NS7\x00\x00\x00\x00', - b'\xf1\x87SBLWAA6622844GG0wwwwff\x86hwwwwx\x88\x87\x88\x88\x88\x88\x88\x98?\xfd\xff\xa9\x88\x7f\xffn\xe5\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM2G24NS7u\x1e{\x1c', - b'\xf1\x87SDJXAA7656854GG1DEtWUU\x85X\x88\x88\x98\x88w\x88\x87xx\x88\x87\x88\x96o\xfb\xff\x86f\x7f\xff.\xca\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4G24NS2\x00\x00\x00\x00', - b'\xf1\x87SDJXAA7656854GG1DEtWUU\x85X\x88\x88\x98\x88w\x88\x87xx\x88\x87\x88\x96o\xfb\xff\x86f\x7f\xff.\xca\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4G24NS2K\xdaV0', - b'\xf1\x87SDKXAA2443414GG1vfvgwv\x87h\x88\x88\x88\x88ww\x87wwwww\x99_\xfc\xffvD?\xffl\xd2\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4G24NS6\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_SANTA_FE_2022: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -488,20 +297,6 @@ FW_VERSIONS = { b'\xf1\x8758910-S2GA0\xf1\x00TM ESC \x02 101 \x08\x04 58910-S2GA0', b'\xf1\x8758910-S2GA0\xf1\x00TM ESC \x04 102!\x04\x05 58910-S2GA0', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81HM6M1_0a0_G20', - b'\xf1\x81HM6M1_0a0_H00', - b'\xf1\x81HM6M2_0a0_G00', - b'\xf1\x82TACVN5GMI3XXXH0A', - b'\xf1\x82TACVN5GSI3XXXH0A', - b'\xf1\x82TMBZN5TMD3XXXG2E', - b'\xf1\x82TMCFD5MMCXXXXG0A', - b'\xf1\x87 \xf1\x81 ', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M1_0a0_J10', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M1_0a0_L50', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x82TMDWN5TMD3TXXJ1A', - b'\xf1\x8739101-2STN8\xf1\x81HM6M1_0a0_M00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.01 56310-S1AB0 4TSDC101', b'\xf1\x00TM MDPS C 1.00 1.01 56310-S1EB0 4TSDC101', @@ -515,22 +310,6 @@ FW_VERSIONS = { b'\xf1\x00TMA MFC AT USA LHD 1.00 1.01 99211-S2500 210205', b'\xf1\x00TMA MFC AT USA LHD 1.00 1.03 99211-S2500 220414', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00HT6TA290BLHT6TAF00A1STM0M25GS1\x00\x00\x00\x00\x00\x006\xd8\x97\x15', - b'\xf1\x00HT6WA280BLHT6WAD00A1STM2G25NH2\x00\x00\x00\x00\x00\x00\xf8\xc0\xc3\xaa', - b'\xf1\x00HT6WA280BLHT6WAD00A1STM4G25NH1\x00\x00\x00\x00\x00\x00\x9cl\x04\xbc', - b'\xf1\x00T02601BL T02730A1 VTMPT25XXX730NS2\xa6\x06\x88\xf7', - b'\xf1\x00T02601BL T02800A1 VTMPT25XXX800NS4\xed\xaf\xed\xf5', - b'\xf1\x00T02601BL T02900A1 VTMPT25XXW900NS1c\x918\xc5', - b'\xf1\x00T02601BL T02900A1 VTMPT25XXX900NS8\xb7\xaa\xfe\xfc', - b'\xf1\x00T02601BL T02900A1 VTMPT25XXX900NSA\xf3\xf4Uj', - b'\xf1\x87954A02N250\x00\x00\x00\x00\x00\xf1\x81T02730A1 \xf1\x00T02601BL T02730A1 VTMPT25XXX730NS2\xa6', - b'\xf1\x87954A02N250\x00\x00\x00\x00\x00\xf1\x81T02730A1 \xf1\x00T02601BL T02730A1 VTMPT25XXX730NS2\xa6\x06\x88\xf7', - b'\xf1\x87954A02N250\x00\x00\x00\x00\x00\xf1\x81T02900A1 \xf1\x00T02601BL T02900A1 VTMPT25XXX900NS8\xb7\xaa\xfe\xfc', - b'\xf1\x87KMMYBU034207SB72x\x89\x88\x98h\x88\x98\x89\x87fhvvfWf33_\xff\x87\xff\x8f\xfa\x81\xe5\xf1\x89HT6TAF00A1\xf1\x82STM0M25GS1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SDMXCA8653204GN1EVugEUuWwwwwww\x87wwwwwv/\xfb\xff\xa8\x88\x9f\xff\xa5\x9c\xf1\x89HT6WAD00A1\xf1\x82STM4G25NH1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SDMXCA9087684GN1VfvgUUeVwwgwwwwwffffU?\xfb\xff\x97\x88\x7f\xff+\xa4\xf1\x89HT6WAD00A1\xf1\x82STM4G25NH1\x00\x00\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_SANTA_FE_HEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -552,18 +331,6 @@ FW_VERSIONS = { b'\xf1\x00TMH MFC AT USA LHD 1.00 1.05 99211-S1500 220126', b'\xf1\x00TMH MFC AT USA LHD 1.00 1.06 99211-S1500 220727', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2H16KA1\xc6\x15Q\x1e', - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2H16SA3\xa3\x1b\xe14', - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2H16UA3I\x94\xac\x8f', - b'\xf1\x87959102T250\x00\x00\x00\x00\x00\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E14\x00\x00\x00\x00\x00\x00\x00TTM2H16SA2\x80\xd7l\xb2', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391312MTA0', - b'\xf1\x87391312MTC1', - b'\xf1\x87391312MTE0', - b'\xf1\x87391312MTL0', - ], }, CAR.HYUNDAI_SANTA_FE_PHEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -580,16 +347,6 @@ FW_VERSIONS = { b'\xf1\x00TMP MFC AT USA LHD 1.00 1.03 99211-S1500 210224', b'\xf1\x00TMP MFC AT USA LHD 1.00 1.06 99211-S1500 220727', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA0o\x88^\xbe', - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA1\x0b\xc5\x0f\xea', - b'\xf1\x8795441-3D121\x00\xf1\x81E16\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA0o\x88^\xbe', - b'\xf1\x8795441-3D121\x00\xf1\x81E16\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA1\x0b\xc5\x0f\xea', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391312MTF0', - b'\xf1\x87391312MTF1', - ], }, CAR.HYUNDAI_CUSTIN_1ST_GEN: { (Ecu.abs, 0x7d1, None): [ @@ -604,12 +361,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00KU2 MFC AT CHN LHD 1.00 1.02 99211-O3000 220923', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391212MEC0', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 U928\x00\x00\x00\x00\x00\x00SKU0T15KB2\x92U\xf9M', - ], }, CAR.KIA_STINGER: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -618,14 +369,6 @@ FW_VERSIONS = { b'\xf1\x00CK__ SCC F_CUP 1.00 1.02 96400-J5100 ', b'\xf1\x00CK__ SCC F_CUP 1.00 1.03 96400-J5100 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\xe0\x19\xff\xe7\xe7g\x01\xa2\x00\x0f\x00\x9e\x00\x06\x00\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x0f\x0e\x0f\x0f\x0e\r\x00\x00\x7f\x02.\xff\x00\x00~p\x00\x00\x00\x00u\xff\xf9\xff\x00\x00\x00\x00V\t\xd5\x01\xc0\x00\x00\x00\x007\xfb\xfc\x0b\x8d\x00', - b'\xf1\x81606DE051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640E0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640H0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x82CKJN3TMSDE0B\x00\x00\x00\x00', - b'\xf1\x82CKKN3TMD_H0A\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CK MDPS R 1.00 1.04 57700-J5200 4C2CL104', b'\xf1\x00CK MDPS R 1.00 1.04 57700-J5220 4C2VL104', @@ -639,20 +382,6 @@ FW_VERSIONS = { b'\xf1\x00CK MFC AT USA LHD 1.00 1.03 95740-J5000 170822', b'\xf1\x00CK MFC AT USA LHD 1.00 1.04 95740-J5000 180504', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\t\xb7\x17\xf5', - b'\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SCK0T33NB2\xb3\xee\xba\xdc', - b'\xf1\x87VCJLE17622572DK0vd6D\x99\x98y\x97vwVffUfvfC%CuT&Dx\x87o\xff{\x1c\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x87VDHLG17000192DK2xdFffT\xa5VUD$DwT\x86wveVeeD&T\x99\xba\x8f\xff\xcc\x99\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\t\xb7\x17\xf5', - b'\xf1\x87VDHLG17000192DK2xdFffT\xa5VUD$DwT\x86wveVeeD&T\x99\xba\x8f\xff\xcc\x99\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x87VDHLG17000192DK2xdFffT\xa5VUD$DwT\x86wveVeeD&T\x99\xba\x8f\xff\xcc\x99\xf1\x89E21\x00\x00\x00\x00\x00\x00\x00\xf1\x82SCK0T33NB0', - b'\xf1\x87VDHLG17034412DK2vD6DfVvVTD$D\x99w\x88\x98EDEDeT6DgfO\xff\xc3=\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x87VDHLG17118862DK2\x8awWwgu\x96wVfUVwv\x97xWvfvUTGTx\x87o\xff\xc9\xed\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x87VDHLG17274082DK2wfFf\x89x\x98wUT5T\x88v\x97xgeGefTGTVvO\xff\x1c\x14\xf1\x81E19\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E19\x00\x00\x00\x00\x00\x00\x00SCK0T33UB2\xee[\x97S', - b'\xf1\x87VDKLJ18675252DK6\x89vhgwwwwveVU\x88w\x87w\x99vgf\x97vXfgw_\xff\xc2\xfb\xf1\x89E25\x00\x00\x00\x00\x00\x00\x00\xf1\x82TCK0T33NB2', - b'\xf1\x87WAJTE17552812CH4vfFffvfVeT5DwvvVVdFeegeg\x88\x88o\xff\x1a]\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00TCK2T20NB1\x19\xd2\x00\x94', - ], }, CAR.KIA_STINGER_2022: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -661,11 +390,6 @@ FW_VERSIONS = { b'\xf1\x00CK__ SCC FHCUP 1.00 1.00 99110-J5600 ', b'\xf1\x00CK__ SCC FHCUP 1.00 1.01 99110-J5100 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640N2051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640R0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81HM6M1_0a0_H00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503', b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5320 4C2VL503', @@ -678,12 +402,6 @@ FW_VERSIONS = { b'\xf1\x00CK MFC AT USA LHD 1.00 1.00 99211-J5500 210622', b'\xf1\x00CK MFC AT USA LHD 1.00 1.03 99211-J5000 201209', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E31\x00\x00\x00\x00\x00\x00\x00SCK0T25KH2B\xfbI\xe2', - b'\xf1\x00bcsh8p54 E31\x00\x00\x00\x00\x00\x00\x00SCK0T33NH07\xdf\xf0\xc1', - b'\xf1\x00bcsh8p54 E31\x00\x00\x00\x00\x00\x00\x00TCK0T33NH0%g~\xd3', - b'\xf1\x87VCNLF11383972DK1vffV\x99\x99\x89\x98\x86eUU\x88wg\x89vfff\x97fff\x99\x87o\xff"\xc1\xf1\x81E30\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E30\x00\x00\x00\x00\x00\x00\x00SCK0T33GH0\xbe`\xfb\xc6', - ], }, CAR.HYUNDAI_PALISADE: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -712,11 +430,6 @@ FW_VERSIONS = { b'\xf1\x00ON ESC \x0b 101\x19\t\x05 58910-S9320', b'\xf1\x00ON ESC \x0b 101\x19\t\x08 58910-S9360', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640J0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640K0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640S1051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00LX2 MDPS C 1,00 1,03 56310-S8020 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-S8000 4LXDC103', @@ -737,60 +450,6 @@ FW_VERSIONS = { b'\xf1\x00ON MFC AT USA LHD 1.00 1.03 99211-S9100 200720', b'\xf1\x00ON MFC AT USA LHD 1.00 1.04 99211-S9100 211227', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 U872\x00\x00\x00\x00\x00\x00TON4G38NB1\x96z28', - b'\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX2G38NB5X\xfa\xe88', - b'\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00TON2G38NB5j\x94.\xde', - b'\xf1\x87LBLUFN591307KF25vgvw\x97wwwy\x99\xa7\x99\x99\xaa\xa9\x9af\x88\x96h\x95o\xf7\xff\x99f/\xff\xe4c\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB2\xd7\xc1/\xd1', - b"\xf1\x87LBLUFN622950KF36\xa8\x88\x88\x88\x87w\x87xh\x99\x96\x89\x88\x99\x98\x89\x88\x99\x98\x89\x87o\xf6\xff\x98\x88o\xffx'\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8", - b'\xf1\x87LBLUFN650868KF36\xa9\x98\x89\x88\xa8\x88\x88\x88h\x99\xa6\x89fw\x86gw\x88\x97x\xaa\x7f\xf6\xff\xbb\xbb\x8f\xff+\x82\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8', - b'\xf1\x87LBLUFN655162KF36\x98\x88\x88\x88\x98\x88\x88\x88x\x99\xa7\x89x\x99\xa7\x89x\x99\x97\x89g\x7f\xf7\xffwU_\xff\xe9!\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8', - b'\xf1\x87LBLUFN731381KF36\xb9\x99\x89\x98\x98\x88\x88\x88\x89\x99\xa8\x99\x88\x99\xa8\x89\x88\x88\x98\x88V\x7f\xf6\xff\x99w\x8f\xff\xad\xd8\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8', - b'\xf1\x87LDKVAA0028604HH1\xa8\x88x\x87vgvw\x88\x99\xa8\x89gw\x86ww\x88\x97x\x97o\xf9\xff\x97w\x7f\xffo\x02\xf1\x81U872\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U872\x00\x00\x00\x00\x00\x00TON4G38NB1\x96z28', - b'\xf1\x87LDKVAA3068374HH1wwww\x87xw\x87y\x99\xa7\x99w\x88\x87xw\x88\x97x\x85\xaf\xfa\xffvU/\xffU\xdc\xf1\x81U872\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U872\x00\x00\x00\x00\x00\x00TON4G38NB1\x96z28', - b'\xf1\x87LDKVBN382172KF26\x98\x88\x88\x88\xa8\x88\x88\x88x\x99\xa7\x89\x87\x88\x98x\x98\x99\xa9\x89\xa5_\xf6\xffDDO\xff\xcd\x16\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB2\xafL]\xe7', - b'\xf1\x87LDKVBN424201KF26\xba\xaa\x9a\xa9\x99\x99\x89\x98\x89\x99\xa8\x99\x88\x99\x98\x89\x88\x99\xa8\x89v\x7f\xf7\xffwf_\xffq\xa6\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB2\xafL]\xe7', - b'\xf1\x87LDKVBN540766KF37\x87wgv\x87w\x87xx\x99\x97\x89v\x88\x97h\x88\x88\x88\x88x\x7f\xf6\xffvUo\xff\xd3\x01\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB2\xafL]\xe7', - b'\xf1\x87LDLVAA4225634HH1\x98\x88\x88\x88eUeVx\x88\x87\x88g\x88\x86xx\x88\x87\x88\x86o\xf9\xff\x87w\x7f\xff\xf2\xf7\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVAA4478824HH1\x87wwwvfvg\x89\x99\xa8\x99w\x88\x87x\x89\x99\xa8\x99\xa6o\xfa\xfffU/\xffu\x92\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVAA4777834HH1\x98\x88x\x87\x87wwwx\x88\x87\x88x\x99\x97\x89x\x88\x97\x88\x86o\xfa\xff\x86fO\xff\x1d9\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVAA5194534HH1ffvguUUUx\x88\xa7\x88h\x99\x96\x89x\x88\x97\x88ro\xf9\xff\x98wo\xff\xaaM\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVAA5949924HH1\xa9\x99y\x97\x87wwwx\x99\x97\x89x\x99\xa7\x89x\x99\xa7\x89\x87_\xfa\xffeD?\xff\xf1\xfd\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVBN560098KF26\x86fff\x87vgfg\x88\x96xfw\x86gfw\x86g\x95\xf6\xffeU_\xff\x92c\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB2\xafL]\xe7', - b'\xf1\x87LDLVBN602045KF26\xb9\x99\x89\x98\x97vwgy\xaa\xb7\x9af\x88\x96hw\x99\xa7y\xa9\x7f\xf5\xff\x99w\x7f\xff,\xd3\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN628911KF26\xa9\x99\x89\x98\x98\x88\x88\x88y\x99\xa7\x99fw\x86gw\x88\x87x\x83\x7f\xf6\xff\x98wo\xff2\xda\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN645817KF37\x87www\x98\x87xwx\x99\x97\x89\x99\x99\x99\x99g\x88\x96x\xb6_\xf7\xff\x98fo\xff\xe2\x86\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN662115KF37\x98\x88\x88\x88\xa8\x88\x88\x88x\x99\x97\x89x\x99\xa7\x89\x88\x99\xa8\x89\x88\x7f\xf7\xfffD_\xff\xdc\x84\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN667933KF37\xb9\x99\x89\x98\xb9\x99\x99\x99x\x88\x87\x88w\x88\x87x\x88\x88\x98\x88\xcbo\xf7\xffe3/\xffQ!\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN673087KF37\x97www\x86fvgx\x99\x97\x89\x99\xaa\xa9\x9ag\x88\x86x\xe9_\xf8\xff\x98w\x7f\xff"\xad\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN673841KF37\x98\x88x\x87\x86g\x86xy\x99\xa7\x99\x88\x99\xa8\x89w\x88\x97xdo\xf5\xff\x98\x88\x8f\xffT\xec\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN681363KF37\x98\x88\x88\x88\x97x\x87\x88y\xaa\xa7\x9a\x88\x88\x98\x88\x88\x88\x88\x88vo\xf6\xffvD\x7f\xff%v\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN713782KF37\x99\x99y\x97\x98\x88\x88\x88x\x88\x97\x88\x88\x99\x98\x89\x88\x99\xa8\x89\x87o\xf7\xffeU?\xff7,\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN713890KF26\xb9\x99\x89\x98\xa9\x99\x99\x99x\x99\x97\x89\x88\x99\xa8\x89\x88\x99\xb8\x89Do\xf7\xff\xa9\x88o\xffs\r\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN733215KF37\x99\x98y\x87\x97wwwi\x99\xa6\x99x\x99\xa7\x89V\x88\x95h\x86o\xf7\xffeDO\xff\x12\xe7\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN750044KF37\xca\xa9\x8a\x98\xa7wwwy\xaa\xb7\x9ag\x88\x96x\x88\x99\xa8\x89\xb9\x7f\xf6\xff\xa8w\x7f\xff\xbe\xde\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN752612KF37\xba\xaa\x8a\xa8\x87w\x87xy\xaa\xa7\x9a\x88\x99\x98\x89x\x88\x97\x88\x96o\xf6\xffvU_\xffh\x1b\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN755553KF37\x87xw\x87\x97w\x87xy\x99\xa7\x99\x99\x99\xa9\x99Vw\x95gwo\xf6\xffwUO\xff\xb5T\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN757883KF37\x98\x87xw\x98\x87\x88xy\xaa\xb7\x9ag\x88\x96x\x89\x99\xa8\x99e\x7f\xf6\xff\xa9\x88o\xff5\x15\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN778156KF37\x87vWe\xa9\x99\x99\x99y\x99\xb7\x99\x99\x99\x99\x99x\x99\x97\x89\xa8\x7f\xf8\xffwf\x7f\xff\x82_\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN780576KF37\x98\x87hv\x97x\x97\x89x\x99\xa7\x89\x88\x99\x98\x89w\x88\x97x\x98\x7f\xf7\xff\xba\x88\x8f\xff\x1e0\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN783485KF37\x87www\x87vwgy\x99\xa7\x99\x99\x99\xa9\x99Vw\x95g\x89_\xf6\xff\xa9w_\xff\xc5\xd6\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN811844KF37\x87vwgvfffx\x99\xa7\x89Vw\x95gg\x88\xa6xe\x8f\xf6\xff\x97wO\xff\t\x80\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN830601KF37\xa7www\xa8\x87xwx\x99\xa7\x89Uw\x85Ww\x88\x97x\x88o\xf6\xff\x8a\xaa\x7f\xff\xe2:\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN848789KF37\x87w\x87x\x87w\x87xy\x99\xb7\x99\x87\x88\x98x\x88\x99\xa8\x89\x87\x7f\xf6\xfffUo\xff\xe3!\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN851595KF37\x97wgvvfffx\x99\xb7\x89\x88\x99\x98\x89\x87\x88\x98x\x99\x7f\xf7\xff\x97w\x7f\xff@\xf3\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN871852KF37\xb9\x99\x99\x99\xa8\x88\x88\x88y\x99\xa7\x99x\x99\xa7\x89\x88\x88\x98\x88\x89o\xf7\xff\xaa\x88o\xff\x0e\xed\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN873175KF26\xa8\x88\x88\x88vfVex\x99\xb7\x89\x88\x99\x98\x89x\x88\x97\x88f\x7f\xf7\xff\xbb\xaa\x8f\xff,\x04\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN879401KF26veVU\xa8\x88\x88\x88g\x88\xa6xVw\x95gx\x88\xa7\x88v\x8f\xf9\xff\xdd\xbb\xbf\xff\xb3\x99\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN881314KF37\xa8\x88h\x86\x97www\x89\x99\xa8\x99w\x88\x97xx\x99\xa7\x89\xca\x7f\xf8\xff\xba\x99\x8f\xff\xd8v\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN888651KF37\xa9\x99\x89\x98vfff\x88\x99\x98\x89w\x99\xa7y\x88\x88\x98\x88D\x8f\xf9\xff\xcb\x99\x8f\xff\xa5\x1e\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN889419KF37\xa9\x99y\x97\x87w\x87xx\x88\x97\x88w\x88\x97x\x88\x99\x98\x89e\x9f\xf9\xffeUo\xff\x901\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN895969KF37vefV\x87vgfx\x99\xa7\x89\x99\x99\xb9\x99f\x88\x96he_\xf7\xffxwo\xff\x14\xf9\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN899222KF37\xa8\x88x\x87\x97www\x98\x99\x99\x89\x88\x99\x98\x89f\x88\x96hdo\xf7\xff\xbb\xaa\x9f\xff\xe2U\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN950669KF37\x97www\x96fffy\x99\xa7\x99\xa9\x99\xaa\x99g\x88\x96x\xb8\x8f\xf9\xffTD/\xff\xa7\xcb\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - ], }, CAR.HYUNDAI_VELOSTER: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -801,11 +460,6 @@ FW_VERSIONS = { b'\xf1\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x816V8RAC00121.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', ], - (Ecu.engine, 0x7e0, None): [ - b'\x01TJS-JDK06F200H0A', - b'\x01TJS-JNU06F200H0A', - b'391282BJF5 ', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00JSL MDPS C 1.00 1.03 56340-J3000 8308', ], @@ -813,30 +467,18 @@ FW_VERSIONS = { b'\xf1\x00JS LKAS AT KOR LHD 1.00 1.03 95740-J3000 K33', b'\xf1\x00JS LKAS AT USA LHD 1.00 1.02 95740-J3000 K32', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U2V8051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJS0T16KS2\x0e\xba\x1e\xa2', - b'\xf1\x816U2V8051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJS0T16NS1\x00\x00\x00\x00', - b'\xf1\x816U2V8051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJS0T16NS1\xba\x02\xb8\x80', - ], }, CAR.GENESIS_G70: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00IK__ SCC F-CUP 1.00 1.01 96400-G9100 ', b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640F0051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IK MFC AT USA LHD 1.00 1.01 95740-G9000 170920', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB2\x11\x1am\xda', - b'\xf1\x87VDJLT17895112DN4\x88fVf\x99\x88\x88\x88\x87fVe\x88vhwwUFU\x97eFex\x99\x7f\xff\xb7\x82\xf1\x81E25\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB2\x11\x1am\xda', - ], }, CAR.GENESIS_G70_2020: { (Ecu.eps, 0x7d4, None): [ @@ -846,14 +488,6 @@ FW_VERSIONS = { b'\xf1\x00IK MDPS R 1.00 1.08 57700-G9420 4I4VL108', b'\xf1\x00IK MDPS R 1.00 5.09 57700-G9520 4I4VL509', ], - (Ecu.transmission, 0x7e1, None): [ - b'\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB4\xecE\xefL', - b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T20KB3Wuvz', - b'\xf1\x00bcsh8p54 E31\x00\x00\x00\x00\x00\x00\x00SIK0T33NH0\x0f\xa3Y*', - b'\xf1\x87VCJLP18407832DN3\x88vXfvUVT\x97eFU\x87d7v\x88eVeveFU\x89\x98\x7f\xff\xb2\xb0\xf1\x81E25\x00\x00\x00', - b'\xf1\x87VDJLC18480772DK9\x88eHfwfff\x87eFUeDEU\x98eFe\x86T5DVyo\xff\x87s\xf1\x81E25\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33KB5\x9f\xa5&\x81', - b'\xf1\x87VDKLT18912362DN4wfVfwefeveVUwfvw\x88vWfvUFU\x89\xa9\x8f\xff\x87w\xf1\x81E25\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB4\xecE\xefL', - ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 ', b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 \xf1\xa01.02', @@ -865,12 +499,6 @@ FW_VERSIONS = { b'\xf1\x00IK MFC AT USA LHD 1.00 1.01 95740-G9000 170920', b'\xf1\x00IK MFC AT USA LHD 1.00 1.04 99211-G9000 220401', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81606G2051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640H0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640J0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640N2051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.GENESIS_G80: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -885,26 +513,8 @@ FW_VERSIONS = { b'\xf1\x00DH LKAS AT USA LHD 1.01 1.03 95895-B1500 180713', b'\xf1\x00DH LKAS AT USA LHD 1.01 1.04 95895-B1500 181213', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0G33KH2\xae\xde\xd5!', - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0G38NH2j\x9dA\x1c', - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0G38NH3\xaf\x1a7\xe2', - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0T33NH3\x97\xe6\xbc\xb8', - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00TDH0G38NH3:-\xa9n', - b'\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SDH0T33NH4\xd7O\x9e\xc9', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640A4051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640F0051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.GENESIS_G90: { - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SHI0G50NH0\xff\x80\xc2*', - b'\xf1\x87VDGMD15352242DD3w\x87gxwvgv\x87wvw\x88wXwffVfffUfw\x88o\xff\x06J\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', - b'\xf1\x87VDGMD15866192DD3x\x88x\x89wuFvvfUf\x88vWwgwwwvfVgx\x87o\xff\xbc^\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', - b'\xf1\x87VDHMD16446682DD3WwwxxvGw\x88\x88\x87\x88\x88whxx\x87\x87\x87\x85fUfwu_\xffT\xf8\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', - ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00HI__ SCC F-CUP 1.00 1.01 96400-D2100 ', b'\xf1\x00HI__ SCC FHCUP 1.00 1.02 99110-D2100 ', @@ -914,9 +524,6 @@ FW_VERSIONS = { b'\xf1\x00HI LKAS AT USA LHD 1.00 1.00 95895-D2030 170208', b'\xf1\x00HI MFC AT USA LHD 1.00 1.03 99211-D2000 190831', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x810000000000\x00', - ], }, CAR.HYUNDAI_KONA: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -925,18 +532,12 @@ FW_VERSIONS = { (Ecu.abs, 0x7d1, None): [ b'\xf1\x816V5RAK00018.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', ], - (Ecu.engine, 0x7e0, None): [ - b'"\x01TOS-0NU06F301J02', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00OS MDPS C 1.00 1.05 56310J9030\x00 4OSDC105', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00OS9 LKAS AT USA LHD 1.00 1.00 95740-J9300 g21', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U2VE051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VE051\x00\x00DOS4T16NS3\x00\x00\x00\x00', - ], }, CAR.KIA_CEED: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -948,13 +549,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00CD LKAS AT EUR LHD 1.00 1.01 99211-J7000 B40', ], - (Ecu.engine, 0x7e0, None): [ - b'\x01TCD-JECU4F202H0K', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U2V7051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V7051\x00\x00DCD0T14US1\x00\x00\x00\x00', - b'\xf1\x816U2V7051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V7051\x00\x00DCD0T14US1U\x867Z', - ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00CD ESC \x03 102\x18\x08\x05 58920-J7350', ], @@ -975,22 +569,11 @@ FW_VERSIONS = { b'\xf1\x00BDPE_SCC FHCUPC 1.00 1.04 99110-M6500\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x00BD__ SCC H-CUP 1.00 1.02 99110-M6000 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\x01TBDM1NU06F200H01', - b'391182B945\x00', - b'\xf1\x81616F2051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x816VGRAH00018.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x8758900-M7AB0 \xf1\x816VQRAD00127.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006V2B0_C2\x00\x006V2C6051\x00\x00CBD0N20NL1\x00\x00\x00\x00', - b'\xf1\x006V2B0_C2\x00\x006V2C6051\x00\x00CBD0N20NL1\x90@\xc6\xae', - b'\xf1\x816U2VC051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VC051\x00\x00DBD0T16SS0\x00\x00\x00\x00', - b"\xf1\x816U2VC051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VC051\x00\x00DBD0T16SS0\xcf\x1e'\xc3", - ], }, CAR.KIA_K5_2021: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1025,23 +608,6 @@ FW_VERSIONS = { b'\xf1\x8758910-L3600\xf1\x00DL ESC \x03 100 \x08\x02 58910-L3600', b'\xf1\x8758910-L3800\xf1\x00DL ESC \t 101 \x07\x02 58910-L3800', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81HM6M2_0a0_DQ0', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x82DLDWN5TMDCXXXJ1B', - b'\xf1\x87391212MKT0', - b'\xf1\x87391212MKT3', - b'\xf1\x87391212MKV0', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00HT6TA261BLHT6TAB00A1SDL0C20KS0\x00\x00\x00\x00\x00\x00\\\x9f\xa5\x15', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL2T16NB1ia\x0b\xb8', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL2T16NB2.\x13\xf6\xed', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL4T16NB05\x94t\x18', - b'\xf1\x87954A02N300\x00\x00\x00\x00\x00\xf1\x81T02730A1 \xf1\x00T02601BL T02730A1 WDL3T25XXX730NS2b\x1f\xb8%', - b'\xf1\x87SALFEA5652514GK2UUeV\x88\x87\x88xxwg\x87ww\x87wwfwvd/\xfb\xffvU_\xff\x93\xd3\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL2T16NB1ia\x0b\xb8', - b'\xf1\x87SALFEA6046104GK2wvwgeTeFg\x88\x96xwwwwffvfe?\xfd\xff\x86fo\xff\x97A\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL2T16NB1ia\x0b\xb8', - b'\xf1\x87SCMSAA8572454GK1\x87x\x87\x88Vf\x86hgwvwvwwgvwwgT?\xfb\xff\x97fo\xffH\xb8\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL4T16NB05\x94t\x18', - ], }, CAR.KIA_K5_HEV_2020: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1055,13 +621,6 @@ FW_VERSIONS = { b'\xf1\x00DL3HMFC AT KOR LHD 1.00 1.02 99210-L2000 200309', b'\xf1\x00DL3HMFC AT KOR LHD 1.00 1.04 99210-L2000 210527', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391162JLA0', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00PSBG2323 E08\x00\x00\x00\x00\x00\x00\x00TDL2H20KA2\xe3\xc6cz', - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TDL2H20KA5T\xf2\xc9\xc2', - ], }, CAR.HYUNDAI_KONA_EV: { (Ecu.abs, 0x7d1, None): [ @@ -1167,20 +726,6 @@ FW_VERSIONS = { ], }, CAR.KIA_NIRO_PHEV: { - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6D0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6D1051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6F4051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3H0_C2\x00\x006U3G0051\x00\x00HDE0G16NS2\x00\x00\x00\x00', - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PDE0G16NL2&[\xc3\x01', - b'\xf1\x816U3H3051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H3051\x00\x00PDE0G16NS1\x00\x00\x00\x00', - b'\xf1\x816U3H3051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H3051\x00\x00PDE0G16NS1\x13\xcd\x88\x92', - b'\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PDE0G16NS2\x00\x00\x00\x00', - b"\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PDE0G16NS2\xf4'\\\x91", - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DE MDPS C 1.00 1.01 56310G5520\x00 4DEPC101', b'\xf1\x00DE MDPS C 1.00 1.09 56310G5301\x00 4DEHC109', @@ -1197,14 +742,6 @@ FW_VERSIONS = { ], }, CAR.KIA_NIRO_PHEV_2022: { - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PDE0G16NL3\x00\x00\x00\x00', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PDE0G16NL3\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DE MDPS C 1.00 1.01 56310G5520\x00 4DEPC101', ], @@ -1217,13 +754,6 @@ FW_VERSIONS = { ], }, CAR.KIA_NIRO_HEV_2021: { - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HDE0G16NL3\x00\x00\x00\x00', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HDE0G16NL3\xb9\xd3\xfaW', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DE MDPS C 1.00 1.01 56310G5520\x00 4DEPC101', ], @@ -1243,12 +773,6 @@ FW_VERSIONS = { b'\xf1\x8758910-Q5450\xf1\x00SP ESC \x07 101\x19\t\x05 58910-Q5450', b'\xf1\x8758910-Q5450\xf1\x00SP ESC \t 101\x19\t\x05 58910-Q5450', ], - (Ecu.engine, 0x7e0, None): [ - b'\x01TSP2KNL06F100J0K', - b'\x01TSP2KNL06F200J0K', - b'\xf1\x81616D2051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81616D5051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00SP2 MDPS C 1.00 1.04 56300Q5200 ', b'\xf1\x00SP2 MDPS C 1.01 1.05 56300Q5200 ', @@ -1257,11 +781,6 @@ FW_VERSIONS = { b'\xf1\x00SP2 MFC AT USA LHD 1.00 1.04 99210-Q5000 191114', b'\xf1\x00SP2 MFC AT USA LHD 1.00 1.05 99210-Q5000 201012', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x87954A22D200\xf1\x81T01950A1 \xf1\x00T0190XBL T01950A1 DSP2T16X4X950NS6\xd30\xa5\xb9', - b'\xf1\x87954A22D200\xf1\x81T01950A1 \xf1\x00T0190XBL T01950A1 DSP2T16X4X950NS8\r\xfe\x9c\x8b', - b'\xf1\x87CZLUB49370612JF7h\xa8y\x87\x99\xa7hv\x99\x97fv\x88\x87x\x89x\x96O\xff\x88\xff\xff\xff.@\xf1\x816V2C2051\x00\x00\xf1\x006V2B0_C2\x00\x006V2C2051\x00\x00CSP4N20NS3\x00\x00\x00\x00', - ], }, CAR.KIA_OPTIMA_G4: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1273,9 +792,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00JFWGN LDWS AT USA LHD 1.00 1.02 95895-D4100 G21', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6J0051\x00\x00\xf1\x006T6J0_C2\x00\x006T6J0051\x00\x00TJF0T20NSB\x00\x00\x00\x00', - ], }, CAR.KIA_OPTIMA_G4_FL: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1289,17 +805,6 @@ FW_VERSIONS = { b'\xf1\x00JFA LKAS AT USA LHD 1.00 1.00 95895-D5001 h32', b'\xf1\x00JFA LKAS AT USA LHD 1.00 1.00 95895-D5100 h32', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJF0T16NL0\t\xd2GW', - b'\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DJF0T16NL1\x00\x00\x00\x00', - b'\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DJF0T16NL1\xca3\xeb.', - b'\xf1\x006U2V0_C2\x00\x006U2VC051\x00\x00DJF0T16NL2\x9eA\x80\x01', - b'\xf1\x816U2V8051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJF0T16NL0\t\xd2GW', - b'\xf1\x816U2VA051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DJF0T16NL1\x00\x00\x00\x00', - b'\xf1\x816U2VA051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DJF0T16NL1\xca3\xeb.', - b'\xf1\x816U2VC051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VC051\x00\x00DJF0T16NL2\x9eA\x80\x01', - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B8051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B8051\x00\x00TJFSG24NH27\xa7\xc2\xb4', - ], }, CAR.KIA_OPTIMA_H: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1316,28 +821,12 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00JFH MFC AT KOR LHD 1.00 1.01 95895-A8200 180323', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6D1051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_ELANTRA: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AD LKAS AT USA LHD 1.01 1.01 95895-F2000 251', b'\xf1\x00ADP LKAS AT USA LHD 1.00 1.03 99211-F2000 X31', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20NS2\x00\x00\x00\x00', - b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20NS2\xc5\x92\x9e\x8a', - b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20SS2.~\x90\x87', - b'\xf1\x006T6K0_C2\x00\x006T6S2051\x00\x00TAD0N20NSD\x00\x00\x00\x00', - b'\xf1\x006T6K0_C2\x00\x006T6S2051\x00\x00TAD0N20NSD(\xfcA\x9d', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x8161657051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816165D051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816165E051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x8161698051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00AD ESC \x11 11 \x18\x05\x06 58910-F2840', b'\xf1\x00AD ESC \x11 12 \x15\t\t 58920-F2810', @@ -1353,12 +842,6 @@ FW_VERSIONS = { b'\xf1\x00PD LKAS AT USA LHD 1.00 1.02 95740-G3000 A51', b'\xf1\x00PD LKAS AT USA LHD 1.01 1.01 95740-G3100 A54', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U2U0_C2\x00\x006U2T0051\x00\x00DPD0D16KS0u\xce\x1fk', - b'\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DPD0T16NS4\x00\x00\x00\x00', - b'\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DPD0T16NS4\xda\x7f\xd6\xa7', - b'\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DPD0H16NS0e\x0e\xcd\x8e', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00PD MDPS C 1.00 1.00 56310G3300\x00 4PDDC100', b'\xf1\x00PD MDPS C 1.00 1.03 56310/G3300 4PDDC103', @@ -1400,22 +883,6 @@ FW_VERSIONS = { b'\xf1\x8758910-AA800\xf1\x00CN ESC \t 105 \x10\x03 58910-AA800', b'\xf1\x8758910-AB800\xf1\x00CN ESC \t 101 \x10\x03 58910-AB800\xf1\xa01.01', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00HT6WA280BLHT6VA640A1CCN0N20NS5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x00HT6WA280BLHT6VA640A1CCN0N20NS5\x00\x00\x00\x00\x00\x00\xe8\xba\xce\xfa', - b'\xf1\x87CXLQF40189012JL2f\x88\x86\x88\x88vUex\xb8\x88\x88\x88\x87\x88\x89fh?\xffz\xff\xff\xff\x08z\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - b'\xf1\x87CXMQFM1916035JB2\x88vvgg\x87Wuwgev\xa9\x98\x88\x98h\x99\x9f\xffh\xff\xff\xff\xa5\xee\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - b'\xf1\x87CXMQFM2135005JB2E\xb9\x89\x98W\xa9y\x97h\xa9\x98\x99wxvwh\x87\x7f\xffx\xff\xff\xff,,\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - b'\xf1\x87CXMQFM2728305JB2E\x97\x87xw\x87vwgw\x84x\x88\x88w\x89EI\xbf\xff{\xff\xff\xff\xe6\x0e\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - b'\xf1\x87CXMQFM3806705JB2\x89\x87wwx\x88g\x86\x99\x87\x86xwwv\x88yv\x7f\xffz\xff\xff\xffV\x15\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81HM6M2_0a0_FF0', - b'\xf1\x82CNCVD0AMFCXCSFFB', - b'\xf1\x82CNCWD0AMFCXCSFFA', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M2_0a0_G80', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M2_0a0_HC0', - ], }, CAR.HYUNDAI_ELANTRA_HEV_2021: { (Ecu.fwdCamera, 0x7c4, None): [ @@ -1435,18 +902,6 @@ FW_VERSIONS = { b'\xf1\x8756310/BY050\xf1\x00CN7 MDPS C 1.00 1.02 56310/BY050 4CNHC102', b'\xf1\x8756310/BY050\xf1\x00CN7 MDPS C 1.00 1.03 56310/BY050 4CNHC103', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3L0_C2\x00\x006U3K3051\x00\x00HCN0G16NS0\x00\x00\x00\x00', - b'\xf1\x006U3L0_C2\x00\x006U3K3051\x00\x00HCN0G16NS0\xb9?A\xaa', - b'\xf1\x006U3L0_C2\x00\x006U3K9051\x00\x00HCN0G16NS1\x00\x00\x00\x00', - b'\xf1\x816U3K3051\x00\x00\xf1\x006U3L0_C2\x00\x006U3K3051\x00\x00HCN0G16NS0\x00\x00\x00\x00', - b'\xf1\x816U3K3051\x00\x00\xf1\x006U3L0_C2\x00\x006U3K3051\x00\x00HCN0G16NS0\xb9?A\xaa', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G6051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G8051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_KONA_HEV: { (Ecu.abs, 0x7d1, None): [ @@ -1461,12 +916,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00OSH LKAS AT KOR LHD 1.00 1.01 95740-CM000 l31', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HOS0G16DS1\x16\xc7\xb0\xd9', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.HYUNDAI_SONATA_HYBRID: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1491,22 +940,6 @@ FW_VERSIONS = { b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.06 99211-L1000 210325', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.07 99211-L1000 211223', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00PSBG2314 E07\x00\x00\x00\x00\x00\x00\x00TDN2H20KA5\xba\x82\xc7\xc3', - b'\xf1\x00PSBG2323 E09\x00\x00\x00\x00\x00\x00\x00TDN2H20SA5\x97R\x88\x9e', - b'\xf1\x00PSBG2333 E14\x00\x00\x00\x00\x00\x00\x00TDN2H20SA6N\xc2\xeeW', - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TDN2H20SA7\x1a3\xf9\xab', - b'\xf1\x87959102T250\x00\x00\x00\x00\x00\xf1\x81E09\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2323 E09\x00\x00\x00\x00\x00\x00\x00TDN2H20SA5\x97R\x88\x9e', - b'\xf1\x87959102T250\x00\x00\x00\x00\x00\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E14\x00\x00\x00\x00\x00\x00\x00TDN2H20SA6N\xc2\xeeW', - b'\xf1\x87PCU\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81E16\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TDN2H20SA7\x1a3\xf9\xab', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391062J002', - b'\xf1\x87391162J011', - b'\xf1\x87391162J012', - b'\xf1\x87391162J013', - b'\xf1\x87391162J014', - ], }, CAR.KIA_SORENTO: { (Ecu.fwdCamera, 0x7c4, None): [ @@ -1520,13 +953,6 @@ FW_VERSIONS = { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00UM__ SCC F-CUP 1.00 1.00 96400-C6500 ', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 U834\x00\x00\x00\x00\x00\x00TUM2G33NL7K\xae\xdd\x1d', - b'\xf1\x87LDKUAA0348164HE3\x87www\x87www\x88\x88\xa8\x88w\x88\x97xw\x88\x97x\x86o\xf8\xff\x87f\x7f\xff\x15\xe0\xf1\x81U811\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U811\x00\x00\x00\x00\x00\x00TUM4G33NL3V|DG', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640F0051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.KIA_EV6: { (Ecu.fwdRadar, 0x7d0, None): [ diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index c9ec972313..30cc598a09 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -85,7 +85,7 @@ class TestHyundaiFingerprint(unittest.TestCase): for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): for ecu, fws in ecus.items(): - # TODO: enable for Ecu.fwdRadar, Ecu.abs, Ecu.eps, Ecu.transmission + # TODO: enable for Ecu.fwdRadar, Ecu.abs, Ecu.eps if ecu[0] in (Ecu.fwdCamera,): self.assertTrue(all(fw.startswith(expected_fw_prefix) for fw in fws), f"FW from unexpected request in database: {(ecu, fws)}") diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 37d18d2427..57ec0a31cc 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -647,8 +647,8 @@ PLATFORM_CODE_ECUS = [Ecu.fwdRadar, Ecu.fwdCamera, Ecu.eps] # TODO: there are date codes in the ABS firmware versions in hex DATE_FW_ECUS = [Ecu.fwdCamera] -ALL_HYUNDAI_ECUS = [Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.engine, Ecu.parkingAdas, - Ecu.transmission, Ecu.adas, Ecu.hvac, Ecu.cornerRadar, Ecu.combinationMeter] +ALL_HYUNDAI_ECUS = [Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.parkingAdas, + Ecu.adas, Ecu.hvac, Ecu.cornerRadar, Ecu.combinationMeter] FW_QUERY_CONFIG = FwQueryConfig( requests=[ @@ -657,12 +657,12 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [HYUNDAI_VERSION_REQUEST_LONG], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.transmission, Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera], + whitelist_ecus=[Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera], ), Request( [HYUNDAI_VERSION_REQUEST_MULTI], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.engine, Ecu.transmission, Ecu.eps, Ecu.abs, Ecu.fwdRadar], + whitelist_ecus=[Ecu.eps, Ecu.abs, Ecu.fwdRadar], ), # CAN-FD queries (from camera) @@ -743,14 +743,6 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.transmission: [CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, - CAR.GENESIS_G70, CAR.KIA_K5_2021, CAR.HYUNDAI_SONATA_HYBRID, CAR.HYUNDAI_ELANTRA_2021, CAR.HYUNDAI_ELANTRA_HEV_2021, - CAR.HYUNDAI_SANTA_FE, CAR.KIA_STINGER, CAR.KIA_NIRO_PHEV_2022, CAR.GENESIS_G70_2020, CAR.KIA_NIRO_HEV_2021, - CAR.KIA_FORTE, CAR.HYUNDAI_IONIQ_PHEV, CAR.KIA_STINGER_2022, CAR.GENESIS_G90], - Ecu.engine: [CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, - CAR.GENESIS_G70, CAR.KIA_K5_2021, CAR.HYUNDAI_SONATA_HYBRID, CAR.HYUNDAI_ELANTRA_2021, CAR.HYUNDAI_ELANTRA_HEV_2021, - CAR.HYUNDAI_SANTA_FE, CAR.KIA_STINGER, CAR.KIA_NIRO_PHEV_2022, CAR.GENESIS_G70_2020, CAR.KIA_NIRO_HEV_2021, CAR.KIA_FORTE, - CAR.HYUNDAI_IONIQ_PHEV, CAR.KIA_STINGER_2022, CAR.GENESIS_G90, CAR.KIA_OPTIMA_H_G4_FL], Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_ELANTRA_2021, CAR.HYUNDAI_SANTA_FE, CAR.KIA_FORTE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV], }, From 14de326e95d7cc201c6864cef97fbbf76e176c04 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 25 Mar 2024 01:48:23 +0800 Subject: [PATCH 304/599] =?UTF-8?q?ui/settings:=20uppercase=20=E2=80=9CPai?= =?UTF-8?q?r"=20(#31991)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit uppercase Pair --- selfdrive/ui/qt/offroad/settings.cc | 2 +- selfdrive/ui/translations/main_ar.ts | 2 +- selfdrive/ui/translations/main_de.ts | 2 +- selfdrive/ui/translations/main_fr.ts | 2 +- selfdrive/ui/translations/main_ja.ts | 2 +- selfdrive/ui/translations/main_ko.ts | 2 +- selfdrive/ui/translations/main_pt-BR.ts | 2 +- selfdrive/ui/translations/main_th.ts | 2 +- selfdrive/ui/translations/main_tr.ts | 2 +- selfdrive/ui/translations/main_zh-CHS.ts | 2 +- selfdrive/ui/translations/main_zh-CHT.ts | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index af32a9b10b..1c4e144468 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -207,7 +207,7 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { addItem(new LabelControl(tr("Dongle ID"), getDongleId().value_or(tr("N/A")))); addItem(new LabelControl(tr("Serial"), params.get("HardwareSerial").c_str())); - pair_device = new ButtonControl(tr("Pair Device"), tr("Pair"), + pair_device = new ButtonControl(tr("Pair Device"), tr("PAIR"), tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.")); connect(pair_device, &ButtonControl::clicked, [=]() { PairingPopup popup(this); diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 024ca0d4f6..79e31c7552 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -302,7 +302,7 @@ - Pair + PAIR diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index d849b27103..b3fa645217 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -302,7 +302,7 @@ - Pair + PAIR diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 2294ba7af9..cc9c95acd4 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -302,7 +302,7 @@ - Pair + PAIR diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 7b07866efc..13c2083bce 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -302,7 +302,7 @@ - Pair + PAIR diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index e8fcb44228..a3fd82f610 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -302,7 +302,7 @@ - Pair + PAIR diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index adab93eff9..27231a9dc4 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -302,7 +302,7 @@ Parear Dispositivo - Pair + PAIR PAREAR diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index eae564d645..1451e3b419 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -302,7 +302,7 @@ - Pair + PAIR diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index 33773af16b..cb20532b47 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -302,7 +302,7 @@ - Pair + PAIR diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index fa858b8a8c..5625c73b97 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -302,7 +302,7 @@ - Pair + PAIR diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 12ae9fbe13..b5e36620ab 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -302,7 +302,7 @@ - Pair + PAIR From 61b38bd4ff78ce0e84ebb15b74242363c16ec255 Mon Sep 17 00:00:00 2001 From: royjr Date: Mon, 25 Mar 2024 11:59:24 -0400 Subject: [PATCH 305/599] ui: update arabic translations (#31994) --- selfdrive/ui/translations/main_ar.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 79e31c7552..4f83dc18de 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -299,11 +299,11 @@ Pair Device - + إقران الجهاز PAIR - + إقران @@ -629,7 +629,7 @@ now - + الآن @@ -670,7 +670,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + تم تفعيل إعادة ضبط النظام. اضغط على تأكيد لمسح جميع المحتويات والإعدادات. اضغط على إلغاء لاستئناف التمهيد. @@ -780,15 +780,15 @@ This may take up to a minute. Choose Software to Install - + اختر البرنامج للتثبيت openpilot - openpilot + openpilot Custom Software - + البرمجيات المخصصة @@ -1033,7 +1033,7 @@ This may take up to a minute. TogglesPanel Enable openpilot - تمكين + تمكين openpilot Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. @@ -1165,7 +1165,7 @@ This may take up to a minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - + يوصى بالمعيار. في الوضع العدواني، سيتبع الطيار المفتوح السيارات الرائدة بشكل أقرب ويكون أكثر عدوانية مع البنزين والفرامل. في الوضع المريح، سيبقى openpilot بعيدًا عن السيارات الرائدة. في السيارات المدعومة، يمكنك التنقل بين هذه الشخصيات باستخدام زر مسافة عجلة القيادة. From de8df59748505799aceb8c822697c93c59b0922e Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 25 Mar 2024 08:59:56 -0700 Subject: [PATCH 306/599] [bot] Update Python packages and pre-commit hooks (#31998) Update Python packages and pre-commit hooks Co-authored-by: jnewb1 --- .pre-commit-config.yaml | 2 +- poetry.lock | 89 +++++++++++++++++++++-------------------- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1d152fee2a..d5e958371b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,7 +33,7 @@ repos: - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.3 + rev: v0.3.4 hooks: - id: ruff exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)' diff --git a/poetry.lock b/poetry.lock index c2e0baad9c..e7f0429253 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1611,13 +1611,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.0.2" +version = "7.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.0.2-py3-none-any.whl", hash = "sha256:f4bc4c0c070c490abf4ce96d715f68e95923320370efb66143df00199bb6c100"}, - {file = "importlib_metadata-7.0.2.tar.gz", hash = "sha256:198f568f3230878cb1b44fbd7975f87906c22336dba2e4a7f05278c281fbd792"}, + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, ] [package.dependencies] @@ -1626,7 +1626,7 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -2282,13 +2282,13 @@ tests = ["pytest (>=4.6)"] [[package]] name = "msal" -version = "1.27.0" +version = "1.28.0" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." optional = false -python-versions = ">=2.7" +python-versions = ">=3.7" files = [ - {file = "msal-1.27.0-py2.py3-none-any.whl", hash = "sha256:572d07149b83e7343a85a3bcef8e581167b4ac76befcbbb6eef0c0e19643cdc0"}, - {file = "msal-1.27.0.tar.gz", hash = "sha256:3109503c038ba6b307152b0e8d34f98113f2e7a78986e28d0baf5b5303afda52"}, + {file = "msal-1.28.0-py3-none-any.whl", hash = "sha256:3064f80221a21cd535ad8c3fafbb3a3582cd9c7e9af0bb789ae14f726a0ca99b"}, + {file = "msal-1.28.0.tar.gz", hash = "sha256:80bbabe34567cb734efd2ec1869b2d98195c927455369d8077b3c542088c5c9d"}, ] [package.dependencies] @@ -2827,13 +2827,13 @@ panda3d-simplepbr = ">=0.6" [[package]] name = "panda3d-simplepbr" -version = "0.11.2" -description = "A simple, lightweight PBR render pipeline for Panda3D" +version = "0.12.0" +description = "A straight-forward, easy-to-use, drop-in, PBR replacement for Panda3D's builtin auto shader" optional = false python-versions = ">=3.8" files = [ - {file = "panda3d-simplepbr-0.11.2.tar.gz", hash = "sha256:89469f9be0e15fd8888a277f60ba08eb31b90354dcba80fc5aa7ccccee56be2a"}, - {file = "panda3d_simplepbr-0.11.2-py3-none-any.whl", hash = "sha256:eca198004ed4a6635ac9180695440390d52c73eec0b6e02c317d000e1e4d1518"}, + {file = "panda3d-simplepbr-0.12.0.tar.gz", hash = "sha256:c71d490afeeb3a90455dcfde1d30c41f321a38742a97d18834e5c31016331ed5"}, + {file = "panda3d_simplepbr-0.12.0-py3-none-any.whl", hash = "sha256:6c43d1990ff07840cf1c557561d6122fd1250d8e76aacf227b61c3789149bcf9"}, ] [package.dependencies] @@ -3087,13 +3087,13 @@ files = [ [[package]] name = "pre-commit" -version = "3.6.2" +version = "3.7.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.6.2-py2.py3-none-any.whl", hash = "sha256:ba637c2d7a670c10daedc059f5c49b5bd0aadbccfcd7ec15592cf9665117532c"}, - {file = "pre_commit-3.6.2.tar.gz", hash = "sha256:c3ef34f463045c88658c5b99f38c1e297abdcc0ff13f98d3370055fbbfabc67e"}, + {file = "pre_commit-3.7.0-py2.py3-none-any.whl", hash = "sha256:5eae9e10c2b5ac51577c3452ec0a490455c45a0533f7960f993a0d01e59decab"}, + {file = "pre_commit-3.7.0.tar.gz", hash = "sha256:e209d61b8acdcf742404408531f0c37d49d2c734fd7cff2d6076083d191cb060"}, ] [package.dependencies] @@ -6511,13 +6511,13 @@ testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygm [[package]] name = "pytest-cov" -version = "4.1.0" +version = "5.0.0" description = "Pytest plugin for measuring coverage." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, ] [package.dependencies] @@ -6525,7 +6525,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "pytest-cpp" @@ -6645,13 +6645,13 @@ files = [ [[package]] name = "pytools" -version = "2023.1.1" +version = "2024.1.1" description = "A collection of tools for Python" optional = false python-versions = "~=3.8" files = [ - {file = "pytools-2023.1.1-py2.py3-none-any.whl", hash = "sha256:53b98e5d6c01a90e343f8be2f5271e94204a210ef3e74fbefa3d47ec7480f150"}, - {file = "pytools-2023.1.1.tar.gz", hash = "sha256:80637873d206f6bcedf7cdb46ad93e868acb4ea2256db052dfcca872bdd0321f"}, + {file = "pytools-2024.1.1-py2.py3-none-any.whl", hash = "sha256:9f1d03040d78d9d2a607d08de64ec4e350aecdf4ee019f627ce1f1f0c2a4400d"}, + {file = "pytools-2024.1.1.tar.gz", hash = "sha256:2c88edfa990c8e325167c37659fb1e10a3c1133dfaf752bbd7d8456402b8dcff"}, ] [package.dependencies] @@ -6947,28 +6947,28 @@ docs = ["furo (==2023.9.10)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx [[package]] name = "ruff" -version = "0.3.3" +version = "0.3.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.3.3-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:973a0e388b7bc2e9148c7f9be8b8c6ae7471b9be37e1cc732f8f44a6f6d7720d"}, - {file = "ruff-0.3.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:cfa60d23269d6e2031129b053fdb4e5a7b0637fc6c9c0586737b962b2f834493"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eca7ff7a47043cf6ce5c7f45f603b09121a7cc047447744b029d1b719278eb5"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7d3f6762217c1da954de24b4a1a70515630d29f71e268ec5000afe81377642d"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b24c19e8598916d9c6f5a5437671f55ee93c212a2c4c569605dc3842b6820386"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5a6cbf216b69c7090f0fe4669501a27326c34e119068c1494f35aaf4cc683778"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352e95ead6964974b234e16ba8a66dad102ec7bf8ac064a23f95371d8b198aab"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d6ab88c81c4040a817aa432484e838aaddf8bfd7ca70e4e615482757acb64f8"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79bca3a03a759cc773fca69e0bdeac8abd1c13c31b798d5bb3c9da4a03144a9f"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2700a804d5336bcffe063fd789ca2c7b02b552d2e323a336700abb8ae9e6a3f8"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fd66469f1a18fdb9d32e22b79f486223052ddf057dc56dea0caaf1a47bdfaf4e"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:45817af234605525cdf6317005923bf532514e1ea3d9270acf61ca2440691376"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0da458989ce0159555ef224d5b7c24d3d2e4bf4c300b85467b08c3261c6bc6a8"}, - {file = "ruff-0.3.3-py3-none-win32.whl", hash = "sha256:f2831ec6a580a97f1ea82ea1eda0401c3cdf512cf2045fa3c85e8ef109e87de0"}, - {file = "ruff-0.3.3-py3-none-win_amd64.whl", hash = "sha256:be90bcae57c24d9f9d023b12d627e958eb55f595428bafcb7fec0791ad25ddfc"}, - {file = "ruff-0.3.3-py3-none-win_arm64.whl", hash = "sha256:0171aab5fecdc54383993389710a3d1227f2da124d76a2784a7098e818f92d61"}, - {file = "ruff-0.3.3.tar.gz", hash = "sha256:38671be06f57a2f8aba957d9f701ea889aa5736be806f18c0cd03d6ff0cbca8d"}, + {file = "ruff-0.3.4-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:60c870a7d46efcbc8385d27ec07fe534ac32f3b251e4fc44b3cbfd9e09609ef4"}, + {file = "ruff-0.3.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6fc14fa742e1d8f24910e1fff0bd5e26d395b0e0e04cc1b15c7c5e5fe5b4af91"}, + {file = "ruff-0.3.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3ee7880f653cc03749a3bfea720cf2a192e4f884925b0cf7eecce82f0ce5854"}, + {file = "ruff-0.3.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf133dd744f2470b347f602452a88e70dadfbe0fcfb5fd46e093d55da65f82f7"}, + {file = "ruff-0.3.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f3860057590e810c7ffea75669bdc6927bfd91e29b4baa9258fd48b540a4365"}, + {file = "ruff-0.3.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:986f2377f7cf12efac1f515fc1a5b753c000ed1e0a6de96747cdf2da20a1b369"}, + {file = "ruff-0.3.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fd98e85869603e65f554fdc5cddf0712e352fe6e61d29d5a6fe087ec82b76c"}, + {file = "ruff-0.3.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64abeed785dad51801b423fa51840b1764b35d6c461ea8caef9cf9e5e5ab34d9"}, + {file = "ruff-0.3.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df52972138318bc7546d92348a1ee58449bc3f9eaf0db278906eb511889c4b50"}, + {file = "ruff-0.3.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:98e98300056445ba2cc27d0b325fd044dc17fcc38e4e4d2c7711585bd0a958ed"}, + {file = "ruff-0.3.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:519cf6a0ebed244dce1dc8aecd3dc99add7a2ee15bb68cf19588bb5bf58e0488"}, + {file = "ruff-0.3.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:bb0acfb921030d00070539c038cd24bb1df73a2981e9f55942514af8b17be94e"}, + {file = "ruff-0.3.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cf187a7e7098233d0d0c71175375c5162f880126c4c716fa28a8ac418dcf3378"}, + {file = "ruff-0.3.4-py3-none-win32.whl", hash = "sha256:af27ac187c0a331e8ef91d84bf1c3c6a5dea97e912a7560ac0cef25c526a4102"}, + {file = "ruff-0.3.4-py3-none-win_amd64.whl", hash = "sha256:de0d5069b165e5a32b3c6ffbb81c350b1e3d3483347196ffdf86dc0ef9e37dd6"}, + {file = "ruff-0.3.4-py3-none-win_arm64.whl", hash = "sha256:6810563cc08ad0096b57c717bd78aeac888a1bfd38654d9113cb3dc4d3f74232"}, + {file = "ruff-0.3.4.tar.gz", hash = "sha256:f0f4484c6541a99862b693e13a151435a279b271cff20e37101116a21e2a1ad1"}, ] [[package]] @@ -7047,13 +7047,13 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "1.42.0" +version = "1.43.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.42.0.tar.gz", hash = "sha256:4a8364b8f7edbf47f95f7163e48334c96100d9c098f0ae6606e2e18183c223e6"}, - {file = "sentry_sdk-1.42.0-py2.py3-none-any.whl", hash = "sha256:a654ee7e497a3f5f6368b36d4f04baeab1fe92b3105f7f6965d6ef0de35a9ba4"}, + {file = "sentry-sdk-1.43.0.tar.gz", hash = "sha256:41df73af89d22921d8733714fb0fc5586c3461907e06688e6537d01a27e0e0f6"}, + {file = "sentry_sdk-1.43.0-py2.py3-none-any.whl", hash = "sha256:8d768724839ca18d7b4c7463ef7528c40b7aa2bfbf7fe554d5f9a7c044acfd36"}, ] [package.dependencies] @@ -7067,6 +7067,7 @@ asyncpg = ["asyncpg (>=0.23)"] beam = ["apache-beam (>=2.12)"] bottle = ["bottle (>=0.12.13)"] celery = ["celery (>=3)"] +celery-redbeat = ["celery-redbeat (>=2)"] chalice = ["chalice (>=1.16.0)"] clickhouse-driver = ["clickhouse-driver (>=0.2.0)"] django = ["django (>=1.8)"] From 79ae276bbff27790afce25ee66df8c7172d3c6e5 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 25 Mar 2024 09:01:09 -0700 Subject: [PATCH 307/599] [bot] Bump submodules (#31997) bump submodules Co-authored-by: jnewb1 --- opendbc | 2 +- panda | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/opendbc b/opendbc index ff1f1ff335..3c926e88e8 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit ff1f1ff335261c469635c57c81817afd04663eab +Subproject commit 3c926e88e87594e788ab96d32ecdd8f66cb01aed diff --git a/panda b/panda index dd82382d5f..01c54d1199 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit dd82382d5f9fcfbf9958238ee33739693fd3f6fa +Subproject commit 01c54d11990fb82b85acc322a6e2e34a4b7ee389 From 86acfbb4f22231e0208434a4ea7de5cee7a893d1 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 25 Mar 2024 09:21:23 -0700 Subject: [PATCH 308/599] stale bot: ignore all car stuff for now --- .github/workflows/stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 2d60d2f0e9..157cab69d1 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -20,7 +20,7 @@ jobs: stale-pr-message: 'This PR has had no activity for ${{ env.DAYS_BEFORE_PR_STALE }} days. It will be automatically closed in ${{ env.DAYS_BEFORE_PR_CLOSE }} days if there is no activity.' close-pr-message: 'This PR has been automatically closed due to inactivity. Feel free to re-open once activity resumes.' delete-branch: ${{ github.event.pull_request.head.repo.full_name == 'commaai/openpilot' }} # only delete branches on the main repo - exempt-pr-labels: "ignore stale,needs testing,car port" # if wip or it needs testing from the community, don't mark as stale + exempt-pr-labels: "ignore stale,needs testing,car port,car" # if wip or it needs testing from the community, don't mark as stale days-before-pr-stale: ${{ env.DAYS_BEFORE_PR_STALE }} days-before-pr-close: ${{ env.DAYS_BEFORE_PR_CLOSE }} From 245cbe97c758f86c21e28d8edd6390b8c9da29db Mon Sep 17 00:00:00 2001 From: Andrei Radulescu Date: Mon, 25 Mar 2024 18:26:19 +0200 Subject: [PATCH 309/599] third_party: build scripts for libyuv and maplibre-native-qt (#31988) * updated maplibre build.sh * refactored libyuv build.sh --- third_party/libyuv/.gitignore | 1 + third_party/libyuv/build.sh | 33 ++++++++++++++++++++++--- third_party/maplibre-native-qt/build.sh | 12 ++++----- tools/install_ubuntu_dependencies.sh | 1 + 4 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 third_party/libyuv/.gitignore diff --git a/third_party/libyuv/.gitignore b/third_party/libyuv/.gitignore new file mode 100644 index 0000000000..450712e47d --- /dev/null +++ b/third_party/libyuv/.gitignore @@ -0,0 +1 @@ +libyuv/ diff --git a/third_party/libyuv/build.sh b/third_party/libyuv/build.sh index e044312d05..b960f60ef5 100755 --- a/third_party/libyuv/build.sh +++ b/third_party/libyuv/build.sh @@ -1,12 +1,39 @@ #!/usr/bin/env bash set -e -git clone https://chromium.googlesource.com/libyuv/libyuv +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" + +ARCHNAME=$(uname -m) +if [ -f /TICI ]; then + ARCHNAME="larch64" +fi + +if [[ "$OSTYPE" == "darwin"* ]]; then + ARCHNAME="Darwin" +fi + +cd $DIR +if [ ! -d libyuv ]; then + git clone --single-branch https://chromium.googlesource.com/libyuv/libyuv +fi + cd libyuv -git reset --hard 4a14cb2e81235ecd656e799aecaaf139db8ce4a2 +git checkout 4a14cb2e81235ecd656e799aecaaf139db8ce4a2 + +# build cmake . +make -j$(nproc) + +INSTALL_DIR="$DIR/$ARCHNAME" +rm -rf $INSTALL_DIR +mkdir -p $INSTALL_DIR + +rm -rf $DIR/include +mkdir -p $INSTALL_DIR/lib +cp $DIR/libyuv/libyuv.a $INSTALL_DIR/lib +cp -r $DIR/libyuv/include $DIR ## To create universal binary on Darwin: ## ``` ## lipo -create -output Darwin/libyuv.a path-to-x64/libyuv.a path-to-arm64/libyuv.a -## ``` \ No newline at end of file +## ``` diff --git a/third_party/maplibre-native-qt/build.sh b/third_party/maplibre-native-qt/build.sh index c64f0fc649..a368026f0f 100755 --- a/third_party/maplibre-native-qt/build.sh +++ b/third_party/maplibre-native-qt/build.sh @@ -3,35 +3,33 @@ set -e DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" -ARCHNAME="x86_64" +ARCHNAME=$(uname -m) MAPLIBRE_FLAGS="-DMLN_QT_WITH_LOCATION=OFF" -if [ -f /AGNOS ]; then +if [ -f /TICI ]; then ARCHNAME="larch64" #MAPLIBRE_FLAGS="$MAPLIBRE_FLAGS -DCMAKE_SYSTEM_NAME=Android -DANDROID_ABI=arm64-v8a" fi cd $DIR if [ ! -d maplibre ]; then - git clone git@github.com:maplibre/maplibre-native-qt.git $DIR/maplibre + git clone --single-branch https://github.com/maplibre/maplibre-native-qt.git $DIR/maplibre fi cd maplibre -git fetch --all git checkout 3726266e127c1f94ad64837c9dbe03d238255816 git submodule update --depth=1 --recursive --init # build mkdir -p build cd build -set -x cmake $MAPLIBRE_FLAGS $DIR/maplibre -make -j$(nproc) || make -j2 || make -j1 +make -j$(nproc) INSTALL_DIR="$DIR/$ARCHNAME" rm -rf $INSTALL_DIR mkdir -p $INSTALL_DIR -rm -rf $INSTALL_DIR/lib $DIR/include +rm -rf $DIR/include mkdir -p $INSTALL_DIR/lib $INSTALL_DIR/include $DIR/include cp -r $DIR/maplibre/build/src/core/*.so* $INSTALL_DIR/lib cp -r $DIR/maplibre/build/src/core/include/* $INSTALL_DIR/include diff --git a/tools/install_ubuntu_dependencies.sh b/tools/install_ubuntu_dependencies.sh index 78a01f2b75..28e6bf8ccf 100755 --- a/tools/install_ubuntu_dependencies.sh +++ b/tools/install_ubuntu_dependencies.sh @@ -75,6 +75,7 @@ function install_ubuntu_common_requirements() { libqt5charts5-dev \ libqt5serialbus5-dev \ libqt5x11extras5-dev \ + libqt5opengl5-dev \ libreadline-dev \ libdw1 \ valgrind From 484f50725e2794211a0c76702abcc8ed5e8e4022 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 25 Mar 2024 14:11:26 -0700 Subject: [PATCH 310/599] [bot] Fingerprints: add missing FW versions from new users (#32001) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 1 + selfdrive/car/mazda/fingerprints.py | 2 +- selfdrive/car/toyota/fingerprints.py | 1 + selfdrive/car/volkswagen/fingerprints.py | 6 +++--- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 81533e6629..8f48a45a53 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -81,6 +81,7 @@ FW_VERSIONS = { b'68277370AJ', b'68277370AM', b'68277372AD', + b'68277372AE', b'68277372AN', b'68277374AA', b'68277374AB', diff --git a/selfdrive/car/mazda/fingerprints.py b/selfdrive/car/mazda/fingerprints.py index f30bc1b5cd..75d6884e73 100644 --- a/selfdrive/car/mazda/fingerprints.py +++ b/selfdrive/car/mazda/fingerprints.py @@ -10,8 +10,8 @@ FW_VERSIONS = { ], (Ecu.engine, 0x7e0, None): [ b'PEW5-188K2-A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - b'PX2D-188K2-G\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PW67-188K2-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PX2D-188K2-G\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2G-188K2-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2H-188K2-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2H-188K2-J\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 1803b00255..2be153dea0 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -727,6 +727,7 @@ FW_VERSIONS = { b'\x018966353M7000\x00\x00\x00\x00', b'\x018966353M7100\x00\x00\x00\x00', b'\x018966353Q2000\x00\x00\x00\x00', + b'\x018966353Q2100\x00\x00\x00\x00', b'\x018966353Q2300\x00\x00\x00\x00', b'\x018966353Q4000\x00\x00\x00\x00', b'\x018966353R1100\x00\x00\x00\x00', diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 96d721bd56..aa7affda76 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -1068,8 +1068,8 @@ FW_VERSIONS = { b'\xf1\x8704L906021ER\xf1\x898361', b'\xf1\x8704L906026BP\xf1\x897608', b'\xf1\x8704L906026BS\xf1\x891541', - b'\xf1\x875G0906259C \xf1\x890002', b'\xf1\x8704L906026BT\xf1\x897612', + b'\xf1\x875G0906259C \xf1\x890002', ], (Ecu.transmission, 0x7e1, None): [ b'\xf1\x870CW300041L \xf1\x891601', @@ -1077,11 +1077,11 @@ FW_VERSIONS = { b'\xf1\x870CW300043B \xf1\x891601', b'\xf1\x870CW300043P \xf1\x891605', b'\xf1\x870D9300012H \xf1\x894518', + b'\xf1\x870D9300014T \xf1\x895221', b'\xf1\x870D9300041C \xf1\x894936', b'\xf1\x870D9300041H \xf1\x895220', b'\xf1\x870D9300041J \xf1\x894902', b'\xf1\x870D9300041P \xf1\x894507', - b'\xf1\x870D9300014T \xf1\x895221', ], (Ecu.srs, 0x715, None): [ b'\xf1\x873Q0959655AC\xf1\x890200\xf1\x82\r11120011100010022212110200', @@ -1098,10 +1098,10 @@ FW_VERSIONS = { b'\xf1\x873Q0909144J \xf1\x895063\xf1\x82\x0566A01513A1', b'\xf1\x875Q0909144AA\xf1\x891081\xf1\x82\x0521T00403A1', b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521T00403A1', + b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521T00603A1', b'\xf1\x875Q0909144R \xf1\x891061\xf1\x82\x0516A00604A1', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521T00601A1', b'\xf1\x875QD909144E \xf1\x891081\xf1\x82\x0521T00503A1', - b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521T00603A1', ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x875Q0907567P \xf1\x890100\xf1\x82\x0101', From 0a8fa9921cd1442ad9d06a5f5e331350e77ec8ac Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 25 Mar 2024 15:11:54 -0700 Subject: [PATCH 311/599] [bot] Fingerprints: add missing FW versions from new users (#32002) Export fingerprints --- selfdrive/car/honda/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 8068c63308..c1714fe810 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -576,6 +576,7 @@ FW_VERSIONS = { b'37805-5PA-AB10\x00\x00', b'37805-5PA-AD10\x00\x00', b'37805-5PA-AF20\x00\x00', + b'37805-5PA-AF30\x00\x00', b'37805-5PA-AH20\x00\x00', b'37805-5PA-BF10\x00\x00', b'37805-5PA-C680\x00\x00', @@ -1030,6 +1031,7 @@ FW_VERSIONS = { b'78109-TG7-AS20\x00\x00', b'78109-TG7-AT20\x00\x00', b'78109-TG7-AU20\x00\x00', + b'78109-TG7-AW20\x00\x00', b'78109-TG7-AX20\x00\x00', b'78109-TG7-D020\x00\x00', b'78109-TG7-DJ10\x00\x00', From 50ae0350b28b871bac47ceb12c7a14edbf61a7b7 Mon Sep 17 00:00:00 2001 From: ggeer8 Date: Mon, 25 Mar 2024 18:43:05 -0400 Subject: [PATCH 312/599] Add missing fwdRadar for 2023 Kia Sportage Hybrid SX Prestige #31993 (#32000) * Update fingerprints.py Added missing ECUs and fingerprints for 2023 Kia Sportage Hybrid SX Prestige * remove logging ecus * logging too --------- Co-authored-by: Shane Smiskol --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 68598b65ff..4440e9acfc 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1043,6 +1043,7 @@ FW_VERSIONS = { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00NQ5__ 1.00 1.02 99110-P1000 ', b'\xf1\x00NQ5__ 1.00 1.03 99110-P1000 ', + b'\xf1\x00NQ5__ 1.00 1.03 99110-CH000 ', b'\xf1\x00NQ5__ 1.01 1.03 99110-CH000 ', b'\xf1\x00NQ5__ 1.01 1.03 99110-P1000 ', ], From 5fcb54f71357617f69a755836add21be6657c7fd Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 25 Mar 2024 16:11:28 -0700 Subject: [PATCH 313/599] lowercase stale (#32004) --- .github/workflows/stale.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 157cab69d1..46649a9d5f 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -19,6 +19,7 @@ jobs: # pull request config stale-pr-message: 'This PR has had no activity for ${{ env.DAYS_BEFORE_PR_STALE }} days. It will be automatically closed in ${{ env.DAYS_BEFORE_PR_CLOSE }} days if there is no activity.' close-pr-message: 'This PR has been automatically closed due to inactivity. Feel free to re-open once activity resumes.' + stale-pr-label: stale delete-branch: ${{ github.event.pull_request.head.repo.full_name == 'commaai/openpilot' }} # only delete branches on the main repo exempt-pr-labels: "ignore stale,needs testing,car port,car" # if wip or it needs testing from the community, don't mark as stale days-before-pr-stale: ${{ env.DAYS_BEFORE_PR_STALE }} From b88be7981453078ebc81420de1c71fd63de3fa03 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 25 Mar 2024 19:23:56 -0700 Subject: [PATCH 314/599] VW: simplify cruiseState (#32003) * simplify * simplify * jyoung suggestion * acc ready --- selfdrive/car/volkswagen/carstate.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index 9107d41eb3..8139fbbf21 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -114,21 +114,15 @@ class CarState(CarStateBase): # Update ACC radar status. self.acc_type = ext_cp.vl["ACC_06"]["ACC_Typ"] - if pt_cp.vl["TSK_06"]["TSK_Status"] == 2: - # ACC okay and enabled, but not currently engaged - ret.cruiseState.available = True - ret.cruiseState.enabled = False - elif pt_cp.vl["TSK_06"]["TSK_Status"] in (3, 4, 5): - # ACC okay and enabled, currently regulating speed (3) or driver accel override (4) or brake only (5) - ret.cruiseState.available = True - ret.cruiseState.enabled = True - else: - # ACC okay but disabled (1), or a radar visibility or other fault/disruption (6 or 7) - ret.cruiseState.available = False - ret.cruiseState.enabled = False + + # ACC okay but disabled (1), ACC ready (2), a radar visibility or other fault/disruption (6 or 7) + # currently regulating speed (3), driver accel override (4), brake only (5) + ret.cruiseState.available = pt_cp.vl["TSK_06"]["TSK_Status"] in (2, 3, 4, 5) + ret.cruiseState.enabled = pt_cp.vl["TSK_06"]["TSK_Status"] in (3, 4, 5) + ret.accFaulted = pt_cp.vl["TSK_06"]["TSK_Status"] in (6, 7) + self.esp_hold_confirmation = bool(pt_cp.vl["ESP_21"]["ESP_Haltebestaetigung"]) ret.cruiseState.standstill = self.CP.pcmCruise and self.esp_hold_confirmation - ret.accFaulted = pt_cp.vl["TSK_06"]["TSK_Status"] in (6, 7) # Update ACC setpoint. When the setpoint is zero or there's an error, the # radar sends a set-speed of ~90.69 m/s / 203mph. From 62a5b0671e927ec93641e36c33b4d314f9c30ad7 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 25 Mar 2024 19:44:03 -0700 Subject: [PATCH 315/599] Hyundai: remove bad abs responses (#32007) rm bad abs --- selfdrive/car/hyundai/fingerprints.py | 12 ------------ selfdrive/car/hyundai/values.py | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 4440e9acfc..306a7e75ec 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -456,10 +456,6 @@ FW_VERSIONS = { b'\xf1\x00JS__ SCC H-CUP 1.00 1.02 95650-J3200 ', b'\xf1\x00JS__ SCC HNCUP 1.00 1.02 95650-J3100 ', ], - (Ecu.abs, 0x7d1, None): [ - b'\xf1\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816V8RAC00121.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00JSL MDPS C 1.00 1.03 56340-J3000 8308', ], @@ -529,9 +525,6 @@ FW_VERSIONS = { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00OS__ SCC F-CUP 1.00 1.00 95655-J9200 ', ], - (Ecu.abs, 0x7d1, None): [ - b'\xf1\x816V5RAK00018.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00OS MDPS C 1.00 1.05 56310J9030\x00 4OSDC105', ], @@ -569,11 +562,6 @@ FW_VERSIONS = { b'\xf1\x00BDPE_SCC FHCUPC 1.00 1.04 99110-M6500\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x00BD__ SCC H-CUP 1.00 1.02 99110-M6000 ', ], - (Ecu.abs, 0x7d1, None): [ - b'\xf1\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816VGRAH00018.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x8758900-M7AB0 \xf1\x816VQRAD00127.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.KIA_K5_2021: { (Ecu.fwdRadar, 0x7d0, None): [ diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 57ec0a31cc..75bb98aba8 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -744,7 +744,7 @@ FW_QUERY_CONFIG = FwQueryConfig( # Note that we still attempt to match with them when they are present non_essential_ecus={ Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_ELANTRA_2021, - CAR.HYUNDAI_SANTA_FE, CAR.KIA_FORTE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV], + CAR.HYUNDAI_SANTA_FE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV], }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms From bbd08baacd4898f1f78cdd7e72709cae7fce73cc Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 25 Mar 2024 22:43:48 -0700 Subject: [PATCH 316/599] Hyundai: remove outdated abs FW (#32008) * rm from ed882557605319f9 * rm from ffce4a1d578827ee * rm from 700d37ccd12315cf * can't find, but probably same * rm from 15755effe9d073b1 * rm from 5b7caafa7ec1a5cf * rm from ec07911a91f863f3 * rm from 7627c16a16a6f69b * rm from 007d5e4ad9f86d13 * rm from 06a3b9e474ce581d * rm from 22203eb8892a6f28 * rm from ff973b941a69366f * rm from 3ea622c3c0ec3055 * rm from https://github.com/commaai/openpilot/pull/23517 * rm from b0e1cdf87262c7ad * old format FW version * rm from 54f0bbcb6527012e & 4cbcc16b655c1591 * test abs * format --- selfdrive/car/hyundai/fingerprints.py | 28 ++++++--------------- selfdrive/car/hyundai/tests/test_hyundai.py | 4 +-- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 306a7e75ec..a95ddab5d2 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -190,10 +190,6 @@ FW_VERSIONS = { b'\xf1\x00DN ESC \x07 106 \x07\x01 58910-L0100', b'\xf1\x00DN ESC \x07 107"\x08\x07 58910-L0100', b'\xf1\x00DN ESC \x08 103\x19\x06\x01 58910-L1300', - b'\xf1\x8758910-L0100\xf1\x00DN ESC \x06 104\x19\x08\x01 58910-L0100', - b'\xf1\x8758910-L0100\xf1\x00DN ESC \x06 106 \x07\x01 58910-L0100', - b'\xf1\x8758910-L0100\xf1\x00DN ESC \x07 104\x19\x08\x01 58910-L0100', - b'\xf1\x8758910-L0100\xf1\x00DN ESC \x07 106 \x07\x01 58910-L0100', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DN8 MDPS C 1,00 1,01 56310L0010\x00 4DNAC101', @@ -291,11 +287,8 @@ FW_VERSIONS = { b'\xf1\x00TM ESC \x03 101 \x08\x02 58910-S2DA0', b'\xf1\x00TM ESC \x04 101 \x08\x04 58910-S2GA0', b'\xf1\x00TM ESC \x04 102!\x04\x05 58910-S2GA0', + b'\xf1\x00TM ESC \x1e 102 \x08\x08 58910-S1DA0', b'\xf1\x00TM ESC 103!\x030 58910-S1MA0', - b'\xf1\x8758910-S1DA0\xf1\x00TM ESC \x1e 102 \x08\x08 58910-S1DA0', - b'\xf1\x8758910-S2DA0\xf1\x00TM ESC \x03 101 \x08\x02 58910-S2DA0', - b'\xf1\x8758910-S2GA0\xf1\x00TM ESC \x02 101 \x08\x04 58910-S2GA0', - b'\xf1\x8758910-S2GA0\xf1\x00TM ESC \x04 102!\x04\x05 58910-S2GA0', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.01 56310-S1AB0 4TSDC101', @@ -592,9 +585,7 @@ FW_VERSIONS = { b'\xf1\x00DL ESC \x06 101 \x04\x02 58910-L3200', b'\xf1\x00DL ESC \x06 103"\x08\x06 58910-L3200', b'\xf1\x00DL ESC \t 100 \x06\x02 58910-L3800', - b'\xf1\x8758910-L3200\xf1\x00DL ESC \x06 101 \x04\x02 58910-L3200', - b'\xf1\x8758910-L3600\xf1\x00DL ESC \x03 100 \x08\x02 58910-L3600', - b'\xf1\x8758910-L3800\xf1\x00DL ESC \t 101 \x07\x02 58910-L3800', + b'\xf1\x00DL ESC \t 101 \x07\x02 58910-L3800', ], }, CAR.KIA_K5_HEV_2020: { @@ -641,11 +632,9 @@ FW_VERSIONS = { CAR.HYUNDAI_KONA_EV_2022: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00OS IEB \x02 102"\x05\x16 58520-K4010', + b'\xf1\x00OS IEB \x03 101 \x11\x13 58520-K4010', b'\xf1\x00OS IEB \x03 102"\x05\x16 58520-K4010', b'\xf1\x00OS IEB \r 102"\x05\x16 58520-K4010', - b'\xf1\x8758520-K4010\xf1\x00OS IEB \x02 101 \x11\x13 58520-K4010', - b'\xf1\x8758520-K4010\xf1\x00OS IEB \x03 101 \x11\x13 58520-K4010', - b'\xf1\x8758520-K4010\xf1\x00OS IEB \x04 101 \x11\x13 58520-K4010', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00OSP LKA AT AUS RHD 1.00 1.04 99211-J9200 904', @@ -758,8 +747,8 @@ FW_VERSIONS = { b'\xf1\x8799110Q5100\xf1\x00SP2_ SCC FHCUP 1.01 1.05 99110-Q5100 ', ], (Ecu.abs, 0x7d1, None): [ - b'\xf1\x8758910-Q5450\xf1\x00SP ESC \x07 101\x19\t\x05 58910-Q5450', - b'\xf1\x8758910-Q5450\xf1\x00SP ESC \t 101\x19\t\x05 58910-Q5450', + b'\xf1\x00SP ESC \x07 101\x19\t\x05 58910-Q5450', + b'\xf1\x00SP ESC \t 101\x19\t\x05 58910-Q5450', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00SP2 MDPS C 1.00 1.04 56300Q5200 ', @@ -867,9 +856,8 @@ FW_VERSIONS = { ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00CN ESC \t 101 \x10\x03 58910-AB800', - b'\xf1\x8758910-AA800\xf1\x00CN ESC \t 104 \x08\x03 58910-AA800', - b'\xf1\x8758910-AA800\xf1\x00CN ESC \t 105 \x10\x03 58910-AA800', - b'\xf1\x8758910-AB800\xf1\x00CN ESC \t 101 \x10\x03 58910-AB800\xf1\xa01.01', + b'\xf1\x00CN ESC \t 104 \x08\x03 58910-AA800', + b'\xf1\x00CN ESC \t 105 \x10\x03 58910-AA800', ], }, CAR.HYUNDAI_ELANTRA_HEV_2021: { @@ -1030,8 +1018,8 @@ FW_VERSIONS = { ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00NQ5__ 1.00 1.02 99110-P1000 ', - b'\xf1\x00NQ5__ 1.00 1.03 99110-P1000 ', b'\xf1\x00NQ5__ 1.00 1.03 99110-CH000 ', + b'\xf1\x00NQ5__ 1.00 1.03 99110-P1000 ', b'\xf1\x00NQ5__ 1.01 1.03 99110-CH000 ', b'\xf1\x00NQ5__ 1.01 1.03 99110-P1000 ', ], diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index 30cc598a09..000cb14a6d 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -85,8 +85,8 @@ class TestHyundaiFingerprint(unittest.TestCase): for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): for ecu, fws in ecus.items(): - # TODO: enable for Ecu.fwdRadar, Ecu.abs, Ecu.eps - if ecu[0] in (Ecu.fwdCamera,): + # TODO: enable for Ecu.fwdRadar, Ecu.eps + if ecu[0] in (Ecu.fwdCamera, Ecu.abs): self.assertTrue(all(fw.startswith(expected_fw_prefix) for fw in fws), f"FW from unexpected request in database: {(ecu, fws)}") From d05c19b9f4b70b3ef1c5c39734cf5175c8c5c020 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 27 Mar 2024 01:56:02 +0800 Subject: [PATCH 317/599] util: safer `ends_with` (#31943) * safer ends_with * improve --- common/util.cc | 5 +++-- common/util.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/common/util.cc b/common/util.cc index 8af9f5884c..b6097bf28f 100644 --- a/common/util.cc +++ b/common/util.cc @@ -256,8 +256,9 @@ bool starts_with(const std::string &s1, const std::string &s2) { return strncmp(s1.c_str(), s2.c_str(), s2.size()) == 0; } -bool ends_with(const std::string &s1, const std::string &s2) { - return strcmp(s1.c_str() + (s1.size() - s2.size()), s2.c_str()) == 0; +bool ends_with(const std::string& s, const std::string& suffix) { + return s.size() >= suffix.size() && + strcmp(s.c_str() + (s.size() - suffix.size()), suffix.c_str()) == 0; } std::string check_output(const std::string& command) { diff --git a/common/util.h b/common/util.h index 0cbad5bd31..3bf5a690a6 100644 --- a/common/util.h +++ b/common/util.h @@ -77,7 +77,7 @@ float getenv(const char* key, float default_val); std::string hexdump(const uint8_t* in, const size_t size); std::string dir_name(std::string const& path); bool starts_with(const std::string &s1, const std::string &s2); -bool ends_with(const std::string &s1, const std::string &s2); +bool ends_with(const std::string &s, const std::string &suffix); // ***** random helpers ***** int random_int(int min, int max); From 81fae3d8077e7efd29c837a303421595b0e3d906 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 26 Mar 2024 16:43:09 -0700 Subject: [PATCH 318/599] More fingerprint migration fixes (#32018) * fix migration * another --- selfdrive/debug/cycle_alerts.py | 2 +- tools/sim/launch_openpilot.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/selfdrive/debug/cycle_alerts.py b/selfdrive/debug/cycle_alerts.py index db845ed58f..d66f83ad5d 100755 --- a/selfdrive/debug/cycle_alerts.py +++ b/selfdrive/debug/cycle_alerts.py @@ -52,7 +52,7 @@ def cycle_alerts(duration=200, is_metric=False): cameras = ['roadCameraState', 'wideRoadCameraState', 'driverCameraState'] CS = car.CarState.new_message() - CP = CarInterface.get_non_essential_params("CIVIC") + CP = CarInterface.get_non_essential_params("HONDA_CIVIC") sm = messaging.SubMaster(['deviceState', 'pandaStates', 'roadCameraState', 'modelV2', 'liveCalibration', 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman', 'managerState'] + cameras) diff --git a/tools/sim/launch_openpilot.sh b/tools/sim/launch_openpilot.sh index 06984b690b..a2d7841e7b 100755 --- a/tools/sim/launch_openpilot.sh +++ b/tools/sim/launch_openpilot.sh @@ -4,7 +4,7 @@ export PASSIVE="0" export NOBOARD="1" export SIMULATION="1" export SKIP_FW_QUERY="1" -export FINGERPRINT="CIVIC" +export FINGERPRINT="HONDA_CIVIC" export BLOCK="${BLOCK},camerad,loggerd,encoderd,micd,logmessaged" if [[ "$CI" ]]; then From 76c5c58d540db580d7b09c2489a6e3ff7ae3c2cc Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 26 Mar 2024 17:04:05 -0700 Subject: [PATCH 319/599] navd: generate new JWT for each request (#32017) * navd: generate new JWT for each request * no api with token --- selfdrive/navd/navd.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/selfdrive/navd/navd.py b/selfdrive/navd/navd.py index 2be703cdb2..8cfc495f27 100755 --- a/selfdrive/navd/navd.py +++ b/selfdrive/navd/navd.py @@ -48,15 +48,14 @@ class RouteEngine: self.reroute_counter = 0 + + self.api = None + self.mapbox_token = None if "MAPBOX_TOKEN" in os.environ: self.mapbox_token = os.environ["MAPBOX_TOKEN"] self.mapbox_host = "https://api.mapbox.com" else: - try: - self.mapbox_token = Api(self.params.get("DongleId", encoding='utf8')).get_token(expiry_hours=4 * 7 * 24) - except FileNotFoundError: - cloudlog.exception("Failed to generate mapbox token due to missing private key. Ensure device is registered.") - self.mapbox_token = "" + self.api = Api(self.params.get("DongleId", encoding='utf8')) self.mapbox_host = "https://maps.comma.ai" def update(self): @@ -122,8 +121,12 @@ class RouteEngine: if lang is not None: lang = lang.replace('main_', '') + token = self.mapbox_token + if token is None: + token = self.api.get_token() + params = { - 'access_token': self.mapbox_token, + 'access_token': token, 'annotations': 'maxspeed', 'geometries': 'geojson', 'overview': 'full', From 6b710a5d893f621062842737efda8df97b69cd06 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 26 Mar 2024 17:49:14 -0700 Subject: [PATCH 320/599] Hyundai: remove outdated fwdRadar FW (#32019) * rm from e8421f268ea89d79 * rm from 9d4fa1c83653b90b * rm from 3f77febac29e35d5 * rm from 979eb0f6c3682a58 * rm from 077309a26bf98013 * rm from ef8d357a38dc4cf2 * these are probably fine * rm from 54f0bbcb6527012e * rm from 051378e6086bc3ef * rm from 561e5f3991916e4b * rm from 3fd9853538e1bca9 * rm from c8f86b163152d2c5 * rm from 40725113b3e20872 * rm from 3c8bfd637f561f13 * rm from 129db7c75bce8445 * format and test radar * eps! --- selfdrive/car/hyundai/fingerprints.py | 23 +++++++-------------- selfdrive/car/hyundai/tests/test_hyundai.py | 4 ++-- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index a95ddab5d2..14143be7e3 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -328,8 +328,8 @@ FW_VERSIONS = { CAR.HYUNDAI_SANTA_FE_PHEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TMhe SCC F-CUP 1.00 1.00 99110-CL500 ', + b'\xf1\x00TMhe SCC FHCUP 1.00 1.00 99110-CL500 ', b'\xf1\x00TMhe SCC FHCUP 1.00 1.01 99110-CL500 ', - b'\xf1\x8799110CL500\xf1\x00TMhe SCC FHCUP 1.00 1.00 99110-CL500 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102', @@ -562,9 +562,6 @@ FW_VERSIONS = { b'\xf1\x00DL3_ SCC FHCUP 1.00 1.03 99110-L2000 ', b'\xf1\x00DL3_ SCC FHCUP 1.00 1.03 99110-L2100 ', b'\xf1\x00DL3_ SCC FHCUP 1.00 1.04 99110-L2100 ', - b'\xf1\x8799110L2000\xf1\x00DL3_ SCC FHCUP 1.00 1.03 99110-L2000 ', - b'\xf1\x8799110L2100\xf1\x00DL3_ SCC F-CUP 1.00 1.03 99110-L2100 ', - b'\xf1\x8799110L2100\xf1\x00DL3_ SCC FHCUP 1.00 1.03 99110-L2100 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101', @@ -667,16 +664,15 @@ FW_VERSIONS = { CAR.KIA_NIRO_EV: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4000 ', + b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4100 ', + b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4500 ', + b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4600 ', b'\xf1\x00DEev SCC F-CUP 1.00 1.02 96400-Q4000 ', b'\xf1\x00DEev SCC F-CUP 1.00 1.02 96400-Q4100 ', b'\xf1\x00DEev SCC F-CUP 1.00 1.03 96400-Q4100 ', + b'\xf1\x00DEev SCC FHCUP 1.00 1.00 99110-Q4600 ', b'\xf1\x00DEev SCC FHCUP 1.00 1.03 96400-Q4000 ', - b'\xf1\x8799110Q4000\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4000 ', - b'\xf1\x8799110Q4100\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4100 ', - b'\xf1\x8799110Q4500\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4500 ', - b'\xf1\x8799110Q4600\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4600 ', - b'\xf1\x8799110Q4600\xf1\x00DEev SCC FHCUP 1.00 1.00 99110-Q4600 ', - b'\xf1\x8799110Q4600\xf1\x00DEev SCC FNCUP 1.00 1.00 99110-Q4600 ', + b'\xf1\x00DEev SCC FNCUP 1.00 1.00 99110-Q4600 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DE MDPS C 1.00 1.04 56310Q4100\x00 4DEEC104', @@ -744,7 +740,7 @@ FW_VERSIONS = { }, CAR.KIA_SELTOS: { (Ecu.fwdRadar, 0x7d0, None): [ - b'\xf1\x8799110Q5100\xf1\x00SP2_ SCC FHCUP 1.01 1.05 99110-Q5100 ', + b'\xf1\x00SP2_ SCC FHCUP 1.01 1.05 99110-Q5100 ', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00SP ESC \x07 101\x19\t\x05 58910-Q5450', @@ -840,8 +836,6 @@ FW_VERSIONS = { b'\xf1\x00CN7_ SCC F-CUP 1.00 1.01 99110-AA000 ', b'\xf1\x00CN7_ SCC FHCUP 1.00 1.01 99110-AA000 ', b'\xf1\x00CN7_ SCC FNCUP 1.00 1.01 99110-AA000 ', - b'\xf1\x8799110AA000\xf1\x00CN7_ SCC F-CUP 1.00 1.01 99110-AA000 ', - b'\xf1\x8799110AA000\xf1\x00CN7_ SCC FHCUP 1.00 1.01 99110-AA000 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CN7 MDPS C 1.00 1.06 56310/AA070 4CNDC106', @@ -870,7 +864,6 @@ FW_VERSIONS = { ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00CNhe SCC FHCUP 1.00 1.01 99110-BY000 ', - b'\xf1\x8799110BY000\xf1\x00CNhe SCC FHCUP 1.00 1.01 99110-BY000 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CN7 MDPS C 1.00 1.03 56310BY0500 4CNHC103', @@ -898,8 +891,6 @@ FW_VERSIONS = { b'\xf1\x00DNhe SCC F-CUP 1.00 1.02 99110-L5000 ', b'\xf1\x00DNhe SCC FHCUP 1.00 1.00 99110-L5000 ', b'\xf1\x00DNhe SCC FHCUP 1.00 1.02 99110-L5000 ', - b'\xf1\x8799110L5000\xf1\x00DNhe SCC F-CUP 1.00 1.02 99110-L5000 ', - b'\xf1\x8799110L5000\xf1\x00DNhe SCC FHCUP 1.00 1.02 99110-L5000 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L5000 4DNHC101', diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index 000cb14a6d..baa4408b6b 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -85,8 +85,8 @@ class TestHyundaiFingerprint(unittest.TestCase): for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): for ecu, fws in ecus.items(): - # TODO: enable for Ecu.fwdRadar, Ecu.eps - if ecu[0] in (Ecu.fwdCamera, Ecu.abs): + # TODO: enable for Ecu.eps + if ecu[0] in (Ecu.fwdCamera, Ecu.fwdRadar, Ecu.abs): self.assertTrue(all(fw.startswith(expected_fw_prefix) for fw in fws), f"FW from unexpected request in database: {(ecu, fws)}") From ae6761f508aa6f9735be330eda57b7ab7bffb97f Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 26 Mar 2024 18:12:35 -0700 Subject: [PATCH 321/599] Hyundai: remove outdated eps FW (#32020) * rm from ed882557605319f9 * rm from 310cf131d28b30d8 * rm from e6dd11f4969e1f74 * rm from 145908dabb729ad9 * rm from b938870bef07f799 * rm from b0af2fff166d80fe * unknown about these, but safe to do this * rm from 077309a26bf98013 * rm from 01d4ba35f8288743 * rm from b5374bdeea21f5ce * rm from 979eb0f6c3682a58 * rm from eb5a50f9e98f50b9 * rm from 786fc028c014be71 * rm from 3f77febac29e35d5 * these also unknown, but should be safe * format! * test all ecus --- selfdrive/car/hyundai/fingerprints.py | 28 ++++++++------------- selfdrive/car/hyundai/tests/test_hyundai.py | 6 ++--- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 14143be7e3..ed9a500148 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -194,21 +194,17 @@ FW_VERSIONS = { (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DN8 MDPS C 1,00 1,01 56310L0010\x00 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101', + b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310L0010\x00 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310L0200\x00 4DNAC102', + b'\xf1\x00DN8 MDPS C 1.00 1.01 56310L0210\x00 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310L0210\x00 4DNAC102', + b'\xf1\x00DN8 MDPS C 1.00 1.03 56310-L1010 4DNDC103', + b'\xf1\x00DN8 MDPS C 1.00 1.03 56310-L1030 4DNDC103', b'\xf1\x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100', b'\xf1\x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP101', b'\xf1\x00DN8 MDPS R 1.00 1.02 57700-L1000 4DNDP105', - b'\xf1\x8756310-L0010\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101', - b'\xf1\x8756310-L0210\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101', - b'\xf1\x8756310-L1010\xf1\x00DN8 MDPS C 1.00 1.03 56310-L1010 4DNDC103', - b'\xf1\x8756310-L1030\xf1\x00DN8 MDPS C 1.00 1.03 56310-L1030 4DNDC103', - b'\xf1\x8756310L0010\x00\xf1\x00DN8 MDPS C 1,00 1,01 56310L0010\x00 4DNAC101', - b'\xf1\x8756310L0010\x00\xf1\x00DN8 MDPS C 1.00 1.01 56310L0010\x00 4DNAC101', - b'\xf1\x8756310L0210\x00\xf1\x00DN8 MDPS C 1.00 1.01 56310L0210\x00 4DNAC101', - b'\xf1\x8757700-L0000\xf1\x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00DN8 MFC AT KOR LHD 1.00 1.02 99211-L1000 190422', @@ -564,12 +560,11 @@ FW_VERSIONS = { b'\xf1\x00DL3_ SCC FHCUP 1.00 1.04 99110-L2100 ', ], (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3110 4DLAC101', b'\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101', b'\xf1\x00DL3 MDPS C 1.00 1.02 56310-L2220 4DLDC102', b'\xf1\x00DL3 MDPS C 1.00 1.02 56310L3220\x00 4DLAC102', - b'\xf1\x8756310-L3110\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3110 4DLAC101', - b'\xf1\x8756310-L3220\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101', - b'\xf1\x8757700-L3000\xf1\x00DL3 MDPS R 1.00 1.02 57700-L3000 4DLAP102', + b'\xf1\x00DL3 MDPS R 1.00 1.02 57700-L3000 4DLAP102', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00DL3 MFC AT KOR LHD 1.00 1.04 99210-L2000 210527', @@ -866,10 +861,10 @@ FW_VERSIONS = { b'\xf1\x00CNhe SCC FHCUP 1.00 1.01 99110-BY000 ', ], (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00CN7 MDPS C 1.00 1.02 56310/BY050 4CNHC102', + b'\xf1\x00CN7 MDPS C 1.00 1.03 56310/BY050 4CNHC103', b'\xf1\x00CN7 MDPS C 1.00 1.03 56310BY0500 4CNHC103', b'\xf1\x00CN7 MDPS C 1.00 1.04 56310BY050\x00 4CNHC104', - b'\xf1\x8756310/BY050\xf1\x00CN7 MDPS C 1.00 1.02 56310/BY050 4CNHC102', - b'\xf1\x8756310/BY050\xf1\x00CN7 MDPS C 1.00 1.03 56310/BY050 4CNHC103', ], }, CAR.HYUNDAI_KONA_HEV: { @@ -894,11 +889,10 @@ FW_VERSIONS = { ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L5000 4DNHC101', + b'\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102', + b'\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102', + b'\xf1\x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103', b'\xf1\x00DN8 MDPS C 1.00 1.03 56310L5450\x00 4DNHC104', - b'\xf1\x8756310-L5450\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102', - b'\xf1\x8756310-L5450\xf1\x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103', - b'\xf1\x8756310-L5500\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102', - b'\xf1\x8756310L5450\x00\xf1\x00DN8 MDPS C 1.00 1.03 56310L5450\x00 4DNHC104', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00DN8HMFC AT KOR LHD 1.00 1.03 99211-L1000 190705', diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index baa4408b6b..2bd17232ea 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -85,10 +85,8 @@ class TestHyundaiFingerprint(unittest.TestCase): for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): for ecu, fws in ecus.items(): - # TODO: enable for Ecu.eps - if ecu[0] in (Ecu.fwdCamera, Ecu.fwdRadar, Ecu.abs): - self.assertTrue(all(fw.startswith(expected_fw_prefix) for fw in fws), - f"FW from unexpected request in database: {(ecu, fws)}") + self.assertTrue(all(fw.startswith(expected_fw_prefix) for fw in fws), + f"FW from unexpected request in database: {(ecu, fws)}") @settings(max_examples=100) @given(data=st.data()) From 8b07dc5c9c7e0c5e04e745733a2a16ebad4084b8 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 26 Mar 2024 18:29:50 -0700 Subject: [PATCH 322/599] Hyundai: update G70 2022+ harness (#32021) * fix * update docs --- docs/CARS.md | 5 +++-- selfdrive/car/hyundai/values.py | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 570c373f33..93c5f5fa46 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -4,7 +4,7 @@ A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. -# 290 Supported Cars +# 291 Supported Cars |Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Resume from stop|Hardware Needed
 |Video| |---|---|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:| @@ -51,7 +51,8 @@ A supported vehicle is one that just works when you install a comma device. All |Ford|Maverick Hybrid 2022|LARIAT Luxury|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Maverick Hybrid 2023-24|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|G70 2020-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G70 2020-21|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G70 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2017|All|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G90 2017-20|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 75bb98aba8..a76be305bc 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -508,7 +508,12 @@ class CAR(Platforms): flags=HyundaiFlags.LEGACY, ) GENESIS_G70_2020 = HyundaiPlatformConfig( - [HyundaiCarDocs("Genesis G70 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], + [ + # TODO: 2021 MY harness is unknown + HyundaiCarDocs("Genesis G70 2020-21", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + # TODO: From 3.3T Sport Advanced 2022 & Prestige 2023 Trim, 2.0T is unknown + HyundaiCarDocs("Genesis G70 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + ], CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), flags=HyundaiFlags.MANDO_RADAR, ) From 1306edd0859886b741ac718deefeae363c60f9b9 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 26 Mar 2024 20:49:08 -0700 Subject: [PATCH 323/599] Hyundai: clean up FW queries (#32022) * mark MULTI as logging * rm whitelists * rm MULTI * major clean up :D * faster refs :D * wow this was a broken test (can fd can be without aux, and this allowed eps) * expected * only for camera (needs test change) * Revert "only for camera (needs test change)" This reverts commit 6156bcd674f856e9a6476277d2b14b14b659f597. * better msg * yes we do --- selfdrive/car/hyundai/tests/test_hyundai.py | 12 ++--- selfdrive/car/hyundai/values.py | 53 ++------------------- selfdrive/car/tests/test_fw_fingerprint.py | 6 +-- 3 files changed, 12 insertions(+), 59 deletions(-) diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index 2bd17232ea..2e4edcffc6 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -36,6 +36,8 @@ NO_DATES_PLATFORMS = { CAR.HYUNDAI_VELOSTER, } +CANFD_EXPECTED_ECUS = {Ecu.fwdCamera, Ecu.fwdRadar} + class TestHyundaiFingerprint(unittest.TestCase): def test_can_features(self): @@ -51,16 +53,14 @@ class TestHyundaiFingerprint(unittest.TestCase): self.assertEqual(HYBRID_CAR & EV_CAR, set(), "Shared cars between hybrid and EV") self.assertEqual(CANFD_CAR & HYBRID_CAR, set(), "Hard coding CAN FD cars as hybrid is no longer supported") - def test_auxiliary_request_ecu_whitelist(self): - # Asserts only auxiliary Ecus can exist in database for CAN-FD cars - whitelisted_ecus = {ecu for r in FW_QUERY_CONFIG.requests for ecu in r.whitelist_ecus if r.auxiliary} - + def test_canfd_ecu_whitelist(self): + # Asserts only expected Ecus can exist in database for CAN-FD cars for car_model in CANFD_CAR: ecus = {fw[0] for fw in FW_VERSIONS[car_model].keys()} - ecus_not_in_whitelist = ecus - whitelisted_ecus + ecus_not_in_whitelist = ecus - CANFD_EXPECTED_ECUS ecu_strings = ", ".join([f"Ecu.{ECU_NAME[ecu]}" for ecu in ecus_not_in_whitelist]) self.assertEqual(len(ecus_not_in_whitelist), 0, - f"{car_model}: Car model has ECUs not in auxiliary request whitelists: {ecu_strings}") + f"{car_model}: Car model has unexpected ECUs: {ecu_strings}") def test_blacklisted_parts(self): # Asserts no ECUs known to be shared across platforms exist in the database. diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index a76be305bc..1477f1b3af 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -624,11 +624,6 @@ HYUNDAI_VERSION_REQUEST_LONG = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) HYUNDAI_VERSION_REQUEST_ALT = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(0xf110) # Alt long description -HYUNDAI_VERSION_REQUEST_MULTI = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ - p16(uds.DATA_IDENTIFIER_TYPE.VEHICLE_MANUFACTURER_SPARE_PART_NUMBER) + \ - p16(uds.DATA_IDENTIFIER_TYPE.APPLICATION_SOFTWARE_IDENTIFICATION) + \ - p16(0xf100) - HYUNDAI_ECU_MANUFACTURING_DATE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(uds.DATA_IDENTIFIER_TYPE.ECU_MANUFACTURING_DATE) @@ -652,37 +647,25 @@ PLATFORM_CODE_ECUS = [Ecu.fwdRadar, Ecu.fwdCamera, Ecu.eps] # TODO: there are date codes in the ABS firmware versions in hex DATE_FW_ECUS = [Ecu.fwdCamera] -ALL_HYUNDAI_ECUS = [Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.parkingAdas, - Ecu.adas, Ecu.hvac, Ecu.cornerRadar, Ecu.combinationMeter] - FW_QUERY_CONFIG = FwQueryConfig( requests=[ - # TODO: minimize shared whitelists for CAN and cornerRadar for CAN-FD + # TODO: add back whitelists # CAN queries (OBD-II port) Request( [HYUNDAI_VERSION_REQUEST_LONG], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera], - ), - Request( - [HYUNDAI_VERSION_REQUEST_MULTI], - [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.eps, Ecu.abs, Ecu.fwdRadar], ), - # CAN-FD queries (from camera) - # TODO: combine shared whitelists with CAN requests + # CAN & CAN-FD queries (from camera) Request( [HYUNDAI_VERSION_REQUEST_LONG], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.fwdCamera, Ecu.fwdRadar, Ecu.cornerRadar, Ecu.hvac, Ecu.eps], bus=0, auxiliary=True, ), Request( [HYUNDAI_VERSION_REQUEST_LONG], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.fwdCamera, Ecu.adas, Ecu.cornerRadar, Ecu.hvac], bus=1, auxiliary=True, obd_multiplexing=False, @@ -693,44 +676,15 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [HYUNDAI_ECU_MANUFACTURING_DATE], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.fwdCamera], bus=0, auxiliary=True, logging=True, ), - # CAN & CAN FD logging queries (from camera) - Request( - [HYUNDAI_VERSION_REQUEST_LONG], - [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=ALL_HYUNDAI_ECUS, - bus=0, - auxiliary=True, - logging=True, - ), - Request( - [HYUNDAI_VERSION_REQUEST_MULTI], - [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=ALL_HYUNDAI_ECUS, - bus=0, - auxiliary=True, - logging=True, - ), - Request( - [HYUNDAI_VERSION_REQUEST_LONG], - [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=ALL_HYUNDAI_ECUS, - bus=1, - auxiliary=True, - obd_multiplexing=False, - logging=True, - ), - - # CAN-FD alt request logging queries + # CAN-FD alt request logging queries for hvac and parkingAdas Request( [HYUNDAI_VERSION_REQUEST_ALT], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.parkingAdas, Ecu.hvac], bus=0, auxiliary=True, logging=True, @@ -738,7 +692,6 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [HYUNDAI_VERSION_REQUEST_ALT], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.parkingAdas, Ecu.hvac], bus=1, auxiliary=True, logging=True, diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index 17ffc358f1..eaef1677e7 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -263,7 +263,7 @@ class TestFwFingerprintTiming(unittest.TestCase): print(f'get_vin {name} case, query time={self.total_time / self.N} seconds') def test_fw_query_timing(self): - total_ref_time = {1: 8.5, 2: 9.4} + total_ref_time = {1: 8.1, 2: 8.7} brand_ref_times = { 1: { 'gm': 1.0, @@ -271,7 +271,7 @@ class TestFwFingerprintTiming(unittest.TestCase): 'chrysler': 0.3, 'ford': 1.5, 'honda': 0.45, - 'hyundai': 1.05, + 'hyundai': 0.65, 'mazda': 0.1, 'nissan': 0.8, 'subaru': 0.65, @@ -281,7 +281,7 @@ class TestFwFingerprintTiming(unittest.TestCase): }, 2: { 'ford': 1.6, - 'hyundai': 1.85, + 'hyundai': 1.15, 'tesla': 0.3, } } From 89f1483ac910c438719ca27fbff6b684e9922185 Mon Sep 17 00:00:00 2001 From: steilz Date: Wed, 27 Mar 2024 05:18:10 +0100 Subject: [PATCH 324/599] Added my VW Passat B8 2018 Fingerprint (#31939) * Added Fingerprint for my Passat MK8 * removed duplicated entry --- selfdrive/car/volkswagen/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index aa7affda76..95441b13b1 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -391,6 +391,7 @@ FW_VERSIONS = { b'\xf1\x873G0906259 \xf1\x890004', b'\xf1\x873G0906259B \xf1\x890002', b'\xf1\x873G0906264 \xf1\x890004', + b'\xf1\x8704L906026GK\xf1\x899971', ], (Ecu.transmission, 0x7e1, None): [ b'\xf1\x870CW300042H \xf1\x891601', @@ -408,6 +409,7 @@ FW_VERSIONS = { b'\xf1\x870GC300042H \xf1\x891404', b'\xf1\x870GC300043 \xf1\x892301', b'\xf1\x870GC300046P \xf1\x892805', + b'\xf1\x870CW300041E \xf1\x891006', ], (Ecu.srs, 0x715, None): [ b'\xf1\x873Q0959655AE\xf1\x890195\xf1\x82\r56140056130012416612124111', @@ -438,6 +440,7 @@ FW_VERSIONS = { b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521B00703A1', b'\xf1\x875Q0910143B \xf1\x892201\xf1\x82\x0563B0000600', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567B0020600', + b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820531B0062105', ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x873Q0907572A \xf1\x890126', From 0a2a3dfab7106e40a3934e1e80bc6573223276d8 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 28 Mar 2024 00:47:18 +0800 Subject: [PATCH 325/599] replay/cabana : support segment range (#32026) * support segment range * include --- tools/replay/replay.cc | 2 +- tools/replay/route.cc | 55 ++++++++++++++++++++++++++++++------------ tools/replay/route.h | 3 ++- 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index 7c8c1ad43f..3d5d3219c6 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -81,7 +81,7 @@ bool Replay::load() { } void Replay::start(int seconds) { - seekTo(route_->identifier().segment_id * 60 + seconds, false); + seekTo(route_->identifier().begin_segment * 60 + seconds, false); } void Replay::updateEvents(const std::function &lambda) { diff --git a/tools/replay/route.cc b/tools/replay/route.cc index d5847a94b8..0a57ee7d4a 100644 --- a/tools/replay/route.cc +++ b/tools/replay/route.cc @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include @@ -18,11 +18,24 @@ Route::Route(const QString &route, const QString &data_dir) : data_dir_(data_dir } RouteIdentifier Route::parseRoute(const QString &str) { - QRegExp rx(R"(^(?:([a-z0-9]{16})([|_/]))?(.{20})(?:(--|/)(\d*))?$)"); - if (rx.indexIn(str) == -1) return {}; - - const QStringList list = rx.capturedTexts(); - return {.dongle_id = list[1], .timestamp = list[3], .segment_id = list[5].toInt(), .str = list[1] + "|" + list[3]}; + RouteIdentifier identifier = {}; + QRegularExpression rx(R"(^((?[a-z0-9]{16})[|_/])?(?.{20})((?--|/)(?((-?\d+(:(-?\d+)?)?)|(:-?\d+))))?$)"); + if (auto match = rx.match(str); match.hasMatch()) { + identifier.dongle_id = match.captured("dongle_id"); + identifier.timestamp = match.captured("timestamp"); + identifier.str = identifier.dongle_id + "|" + identifier.timestamp; + auto range_str = match.captured("range"); + if (auto separator = match.captured("separator"); separator == "/" && !range_str.isEmpty()) { + auto range = range_str.split(":"); + identifier.begin_segment = identifier.end_segment = range[0].toInt(); + if (range.size() == 2) { + identifier.end_segment = range[1].isEmpty() ? -1 : range[1].toInt(); + } + } else if (separator == "--") { + identifier.begin_segment = range_str.toInt(); + } + } + return identifier; } bool Route::load() { @@ -31,7 +44,19 @@ bool Route::load() { return false; } date_time_ = QDateTime::fromString(route_.timestamp, "yyyy-MM-dd--HH-mm-ss"); - return data_dir_.isEmpty() ? loadFromServer() : loadFromLocal(); + bool ret = data_dir_.isEmpty() ? loadFromServer() : loadFromLocal(); + if (ret) { + if (route_.begin_segment == -1) route_.begin_segment = segments_.rbegin()->first; + if (route_.end_segment == -1) route_.end_segment = segments_.rbegin()->first; + for (auto it = segments_.begin(); it != segments_.end(); /**/) { + if (it->first < route_.begin_segment || it->first > route_.end_segment) { + it = segments_.erase(it); + } else { + ++it; + } + } + } + return !segments_.empty(); } bool Route::loadFromServer() { @@ -62,15 +87,13 @@ bool Route::loadFromJson(const QString &json) { } bool Route::loadFromLocal() { - QDir log_dir(data_dir_); - for (const auto &folder : log_dir.entryList(QDir::Dirs | QDir::NoDot | QDir::NoDotDot, QDir::NoSort)) { - int pos = folder.lastIndexOf("--"); - if (pos != -1 && folder.left(pos) == route_.timestamp) { - const int seg_num = folder.mid(pos + 2).toInt(); - QDir segment_dir(log_dir.filePath(folder)); - for (const auto &f : segment_dir.entryList(QDir::Files)) { - addFileToSegment(seg_num, segment_dir.absoluteFilePath(f)); - } + QDirIterator it(data_dir_, {QString("%1--*").arg(route_.timestamp)}, QDir::Dirs | QDir::NoDotAndDotDot); + while (it.hasNext()) { + QString segment = it.next(); + const int seg_num = segment.mid(segment.lastIndexOf("--") + 2).toInt(); + QDir segment_dir(segment); + for (const auto &f : segment_dir.entryList(QDir::Files)) { + addFileToSegment(seg_num, segment_dir.absoluteFilePath(f)); } } return !segments_.empty(); diff --git a/tools/replay/route.h b/tools/replay/route.h index 4dad7a1f37..33e5bcb1ba 100644 --- a/tools/replay/route.h +++ b/tools/replay/route.h @@ -14,7 +14,8 @@ struct RouteIdentifier { QString dongle_id; QString timestamp; - int segment_id; + int begin_segment = 0; + int end_segment = -1; QString str; }; From 1637265ad3953cc2307b6f7422aeb5c64d9d9635 Mon Sep 17 00:00:00 2001 From: Michel Le Bihan Date: Wed, 27 Mar 2024 17:47:29 +0100 Subject: [PATCH 326/599] simulator: Remove comma pedal sensor (#32030) --- tools/sim/lib/simulated_car.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tools/sim/lib/simulated_car.py b/tools/sim/lib/simulated_car.py index 746886ba43..1d56189728 100644 --- a/tools/sim/lib/simulated_car.py +++ b/tools/sim/lib/simulated_car.py @@ -49,13 +49,6 @@ class SimulatedCar: msg.append(self.packer.make_can_msg("SCM_BUTTONS", 0, {"CRUISE_BUTTONS": simulator_state.cruise_button})) - values = { - "COUNTER_PEDAL": self.idx & 0xF, - "INTERCEPTOR_GAS": simulator_state.user_gas * 2**12, - "INTERCEPTOR_GAS2": simulator_state.user_gas * 2**12, - } - msg.append(self.packer.make_can_msg("GAS_SENSOR", 0, values)) - msg.append(self.packer.make_can_msg("GEARBOX", 0, {"GEAR": 4, "GEAR_SHIFTER": 8})) msg.append(self.packer.make_can_msg("GAS_PEDAL_2", 0, {})) msg.append(self.packer.make_can_msg("SEATBELT_STATUS", 0, {"SEATBELT_DRIVER_LATCHED": 1})) From fad9edf344ad27775716a087580e78230ad5e6dd Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 28 Mar 2024 06:34:38 +0800 Subject: [PATCH 327/599] ui: move struct Alert into OnroadAlerts (#32024) * move Alert into OnroadAlerts * multi-lang --- selfdrive/ui/qt/onroad.cc | 53 ++++++++++++++++++--- selfdrive/ui/qt/onroad.h | 25 ++++++++-- selfdrive/ui/translations/main_ar.ts | 23 +++++++++ selfdrive/ui/translations/main_de.ts | 23 +++++++++ selfdrive/ui/translations/main_fr.ts | 23 +++++++++ selfdrive/ui/translations/main_ja.ts | 23 +++++++++ selfdrive/ui/translations/main_ko.ts | 23 +++++++++ selfdrive/ui/translations/main_pt-BR.ts | 23 +++++++++ selfdrive/ui/translations/main_th.ts | 23 +++++++++ selfdrive/ui/translations/main_tr.ts | 23 +++++++++ selfdrive/ui/translations/main_zh-CHS.ts | 23 +++++++++ selfdrive/ui/translations/main_zh-CHT.ts | 23 +++++++++ selfdrive/ui/ui.h | 60 ------------------------ 13 files changed, 299 insertions(+), 69 deletions(-) diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index 40ae436c65..5d562d6e23 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -73,18 +73,16 @@ void OnroadWindow::updateState(const UIState &s) { return; } - QColor bgColor = bg_colors[s.status]; - Alert alert = Alert::get(*(s.sm), s.scene.started_frame); - alerts->updateAlert(alert); - if (s.scene.map_on_left) { split->setDirection(QBoxLayout::LeftToRight); } else { split->setDirection(QBoxLayout::RightToLeft); } + alerts->updateState(s); nvg->updateState(s); + QColor bgColor = bg_colors[s.status]; if (bg != bgColor) { // repaint border bg = bgColor; @@ -128,7 +126,7 @@ void OnroadWindow::offroadTransition(bool offroad) { } } #endif - alerts->updateAlert({}); + alerts->clear(); } void OnroadWindow::primeChanged(bool prime) { @@ -152,13 +150,56 @@ void OnroadWindow::paintEvent(QPaintEvent *event) { // ***** onroad widgets ***** // OnroadAlerts -void OnroadAlerts::updateAlert(const Alert &a) { + +void OnroadAlerts::updateState(const UIState &s) { + Alert a = getAlert(*(s.sm), s.scene.started_frame); if (!alert.equal(a)) { alert = a; update(); } } +void OnroadAlerts::clear() { + alert = {}; + update(); +} + +OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, uint64_t started_frame) { + const cereal::ControlsState::Reader &cs = sm["controlsState"].getControlsState(); + const uint64_t controls_frame = sm.rcv_frame("controlsState"); + + Alert a = {}; + if (controls_frame >= started_frame) { // Don't get old alert. + a = {cs.getAlertText1().cStr(), cs.getAlertText2().cStr(), + cs.getAlertType().cStr(), cs.getAlertSize(), cs.getAlertStatus()}; + } + + if (!sm.updated("controlsState") && (sm.frame - started_frame) > 5 * UI_FREQ) { + const int CONTROLS_TIMEOUT = 5; + const int controls_missing = (nanos_since_boot() - sm.rcv_time("controlsState")) / 1e9; + + // Handle controls timeout + if (controls_frame < started_frame) { + // car is started, but controlsState hasn't been seen at all + a = {tr("openpilot Unavailable"), tr("Waiting for controls to start"), + "controlsWaiting", cereal::ControlsState::AlertSize::MID, + cereal::ControlsState::AlertStatus::NORMAL}; + } else if (controls_missing > CONTROLS_TIMEOUT && !Hardware::PC()) { + // car is started, but controls is lagging or died + if (cs.getEnabled() && (controls_missing - CONTROLS_TIMEOUT) < 10) { + a = {tr("TAKE CONTROL IMMEDIATELY"), tr("Controls Unresponsive"), + "controlsUnresponsive", cereal::ControlsState::AlertSize::FULL, + cereal::ControlsState::AlertStatus::CRITICAL}; + } else { + a = {tr("Controls Unresponsive"), tr("Reboot Device"), + "controlsUnresponsivePermanent", cereal::ControlsState::AlertSize::MID, + cereal::ControlsState::AlertStatus::NORMAL}; + } + } + } + return a; +} + void OnroadAlerts::paintEvent(QPaintEvent *event) { if (alert.size == cereal::ControlsState::AlertSize::NONE) { return; diff --git a/selfdrive/ui/qt/onroad.h b/selfdrive/ui/qt/onroad.h index c72d1225e6..c2c2c326db 100644 --- a/selfdrive/ui/qt/onroad.h +++ b/selfdrive/ui/qt/onroad.h @@ -21,12 +21,31 @@ class OnroadAlerts : public QWidget { public: OnroadAlerts(QWidget *parent = 0) : QWidget(parent) {} - void updateAlert(const Alert &a); + void updateState(const UIState &s); + void clear(); protected: - void paintEvent(QPaintEvent*) override; + struct Alert { + QString text1; + QString text2; + QString type; + cereal::ControlsState::AlertSize size; + cereal::ControlsState::AlertStatus status; + + bool equal(const Alert &other) const { + return text1 == other.text1 && other.text2 == other.text2 && type == other.type; + } + }; + + const QMap alert_colors = { + {cereal::ControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, + {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, + {cereal::ControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, + }; + + void paintEvent(QPaintEvent*) override; + OnroadAlerts::Alert getAlert(const SubMaster &sm, uint64_t started_frame); -private: QColor bg; Alert alert = {}; }; diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 4f83dc18de..3acbba0c9d 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -492,6 +492,29 @@ تنبيه
+ + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index b3fa645217..bc2d685c4d 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -487,6 +487,29 @@ HINWEIS + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index cc9c95acd4..55cb1b29aa 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -488,6 +488,29 @@ ALERTE + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 13c2083bce..92238d6beb 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -486,6 +486,29 @@ 警告 + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index a3fd82f610..e2f4b4c7bb 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -487,6 +487,29 @@ 알림 + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 27231a9dc4..e5a0c23f40 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -488,6 +488,29 @@ ALERTA + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index 1451e3b419..14fb40d21f 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -487,6 +487,29 @@ การแจ้งเตือน + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index cb20532b47..9fce4793ca 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -486,6 +486,29 @@ UYARI + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 5625c73b97..6b040dac26 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -487,6 +487,29 @@ 警报 + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index b5e36620ab..dd3f600254 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -487,6 +487,29 @@ 提醒 + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + PairingPopup diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index 6efb72af9a..d639d85eeb 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -1,6 +1,5 @@ #pragma once -#include #include #include @@ -22,7 +21,6 @@ const int UI_HEADER_HEIGHT = 420; const int UI_FREQ = 20; // Hz const int BACKLIGHT_OFFROAD = 50; -typedef cereal::CarControl::HUDControl::AudibleAlert AudibleAlert; const float MIN_DRAW_DISTANCE = 10.0; const float MAX_DRAW_DISTANCE = 100.0; @@ -47,59 +45,6 @@ constexpr vec3 default_face_kpts_3d[] = { {18.02, -49.14, 8.00}, {6.36, -51.20, 8.00}, {-5.98, -51.20, 8.00}, }; -struct Alert { - QString text1; - QString text2; - QString type; - cereal::ControlsState::AlertSize size; - cereal::ControlsState::AlertStatus status; - AudibleAlert sound; - - bool equal(const Alert &a2) { - return text1 == a2.text1 && text2 == a2.text2 && type == a2.type && sound == a2.sound; - } - - static Alert get(const SubMaster &sm, uint64_t started_frame) { - const cereal::ControlsState::Reader &cs = sm["controlsState"].getControlsState(); - const uint64_t controls_frame = sm.rcv_frame("controlsState"); - - Alert alert = {}; - if (controls_frame >= started_frame) { // Don't get old alert. - alert = {cs.getAlertText1().cStr(), cs.getAlertText2().cStr(), - cs.getAlertType().cStr(), cs.getAlertSize(), - cs.getAlertStatus(), - cs.getAlertSound()}; - } - - if (!sm.updated("controlsState") && (sm.frame - started_frame) > 5 * UI_FREQ) { - const int CONTROLS_TIMEOUT = 5; - const int controls_missing = (nanos_since_boot() - sm.rcv_time("controlsState")) / 1e9; - - // Handle controls timeout - if (controls_frame < started_frame) { - // car is started, but controlsState hasn't been seen at all - alert = {"openpilot Unavailable", "Waiting for controls to start", - "controlsWaiting", cereal::ControlsState::AlertSize::MID, - cereal::ControlsState::AlertStatus::NORMAL, - AudibleAlert::NONE}; - } else if (controls_missing > CONTROLS_TIMEOUT && !Hardware::PC()) { - // car is started, but controls is lagging or died - if (cs.getEnabled() && (controls_missing - CONTROLS_TIMEOUT) < 10) { - alert = {"TAKE CONTROL IMMEDIATELY", "Controls Unresponsive", - "controlsUnresponsive", cereal::ControlsState::AlertSize::FULL, - cereal::ControlsState::AlertStatus::CRITICAL, - AudibleAlert::WARNING_IMMEDIATE}; - } else { - alert = {"Controls Unresponsive", "Reboot Device", - "controlsUnresponsivePermanent", cereal::ControlsState::AlertSize::MID, - cereal::ControlsState::AlertStatus::NORMAL, - AudibleAlert::NONE}; - } - } - } - return alert; - } -}; typedef enum UIStatus { STATUS_DISENGAGED, @@ -123,11 +68,6 @@ const QColor bg_colors [] = { [STATUS_ENGAGED] = QColor(0x17, 0x86, 0x44, 0xf1), }; -static std::map alert_colors = { - {cereal::ControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, - {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, - {cereal::ControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, -}; typedef struct UIScene { bool calibration_valid = false; From bd7b72e861bafb71d0ec15d4efa15abb2f696c25 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 28 Mar 2024 06:35:28 +0800 Subject: [PATCH 328/599] ui/initApp(): remove temporary QApplication object (#32011) remove temporary QApplication object --- selfdrive/ui/qt/util.cc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/selfdrive/ui/qt/util.cc b/selfdrive/ui/qt/util.cc index 9138f8bca5..0bf5f2865e 100644 --- a/selfdrive/ui/qt/util.cc +++ b/selfdrive/ui/qt/util.cc @@ -105,20 +105,21 @@ void initApp(int argc, char *argv[], bool disable_hidpi) { std::signal(SIGINT, sigTermHandler); std::signal(SIGTERM, sigTermHandler); - if (disable_hidpi) { + QString app_dir; #ifdef __APPLE__ - // Get the devicePixelRatio, and scale accordingly to maintain 1:1 rendering - QApplication tmp(argc, argv); - qputenv("QT_SCALE_FACTOR", QString::number(1.0 / tmp.devicePixelRatio() ).toLocal8Bit()); -#endif + // Get the devicePixelRatio, and scale accordingly to maintain 1:1 rendering + QApplication tmp(argc, argv); + app_dir = QCoreApplication::applicationDirPath(); + if (disable_hidpi) { + qputenv("QT_SCALE_FACTOR", QString::number(1.0 / tmp.devicePixelRatio()).toLocal8Bit()); } +#else + app_dir = QFileInfo(util::readlink("/proc/self/exe").c_str()).path(); +#endif qputenv("QT_DBL_CLICK_DIST", QByteArray::number(150)); - // ensure the current dir matches the exectuable's directory - QApplication tmp(argc, argv); - QString appDir = QCoreApplication::applicationDirPath(); - QDir::setCurrent(appDir); + QDir::setCurrent(app_dir); setQtSurfaceFormat(); } From fa77d57e7cd3393f5910013d0bc9c1c326647d44 Mon Sep 17 00:00:00 2001 From: Lee Jong Mun <43285072+crwusiz@users.noreply.github.com> Date: Fri, 29 Mar 2024 02:37:08 +0900 Subject: [PATCH 329/599] Multilang: kor translation update (#32036) --- selfdrive/ui/translations/main_ko.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index e2f4b4c7bb..21f8f39fb1 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -299,11 +299,11 @@ Pair Device - + 장치 동기화 PAIR - + 동기화 @@ -491,30 +491,30 @@ OnroadAlerts openpilot Unavailable - + 오픈파일럿을 사용할수없습니다 Waiting for controls to start - + 프로세스가 준비중입니다 TAKE CONTROL IMMEDIATELY - + 핸들을 잡아주세요 Controls Unresponsive - + 프로세스가 응답하지않습니다 Reboot Device - + 장치를 재부팅하세요 PairingPopup Pair your device to your comma account - 장치를 comma 계정에 페어링합니다 + 장치를 comma 계정에 동기화합니다 Go to https://connect.comma.ai on your phone @@ -632,7 +632,7 @@ now - + now From d6d8e459319bfc2ce10d8dabf82b44c5401fbf2f Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 28 Mar 2024 16:26:16 -0700 Subject: [PATCH 330/599] Simplify cabana dbc dict (#32041) * so needlessly complex! * inside generate_dbc_json * this is good * clean up! * spaces * so much clean up --- selfdrive/car/fingerprints.py | 14 -------------- tools/cabana/dbc/generate_dbc_json.py | 9 +++++++-- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index e25b5486a0..977df6bc9f 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -1,4 +1,3 @@ -from typing import Any, Callable from openpilot.selfdrive.car.interfaces import get_interface_attr from openpilot.selfdrive.car.body.values import CAR as BODY from openpilot.selfdrive.car.chrysler.values import CAR as CHRYSLER @@ -11,7 +10,6 @@ from openpilot.selfdrive.car.nissan.values import CAR as NISSAN from openpilot.selfdrive.car.subaru.values import CAR as SUBARU from openpilot.selfdrive.car.tesla.values import CAR as TESLA from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA -from openpilot.selfdrive.car.values import PLATFORMS, Platform from openpilot.selfdrive.car.volkswagen.values import CAR as VW FW_VERSIONS = get_interface_attr('FW_VERSIONS', combine_brands=True, ignore_none=True) @@ -338,15 +336,3 @@ MIGRATION = { "SKODA SCALA 1ST GEN": VW.SKODA_SCALA_MK1, "SKODA SUPERB 3RD GEN": VW.SKODA_SUPERB_MK3, } - - -MapFunc = Callable[[Platform], Any] - - -def create_platform_map(func: MapFunc): - ret = {str(platform): func(platform) for platform in PLATFORMS.values() if func(platform) is not None} - - for m in MIGRATION: - ret[m] = ret[MIGRATION[m]] - - return ret diff --git a/tools/cabana/dbc/generate_dbc_json.py b/tools/cabana/dbc/generate_dbc_json.py index deda0909c4..dfb96bad7a 100755 --- a/tools/cabana/dbc/generate_dbc_json.py +++ b/tools/cabana/dbc/generate_dbc_json.py @@ -2,11 +2,16 @@ import argparse import json -from openpilot.selfdrive.car.fingerprints import create_platform_map +from openpilot.selfdrive.car.fingerprints import MIGRATION +from openpilot.selfdrive.car.values import PLATFORMS def generate_dbc_json() -> str: - dbc_map = create_platform_map(lambda platform: platform.config.dbc_dict["pt"] if platform != "MOCK" else None) + dbc_map = {platform.name: platform.config.dbc_dict['pt'] for platform in PLATFORMS.values() if platform != "MOCK"} + + for m in MIGRATION: + dbc_map[m] = dbc_map[MIGRATION[m]] + return json.dumps(dict(sorted(dbc_map.items())), indent=2) From 903cc225ebac1742517068b787f7dff91f7f7823 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 28 Mar 2024 16:40:31 -0700 Subject: [PATCH 331/599] juggle.py: migrate platform name (#32042) * fix formatting! * migrate plotjuggler platform for dbc * test with can * temp * Revert "temp" This reverts commit 9d740bf3bddc8a7833ca8c293a6fb4b692a30bb8. Revert "test with can" This reverts commit d6cf2304895d00f83e737f3f749089ce9c5f836e. * fix test --- .github/workflows/tools_tests.yaml | 4 ++-- tools/plotjuggler/juggle.py | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/tools_tests.yaml b/.github/workflows/tools_tests.yaml index a051cb1241..ff0e29e9e2 100644 --- a/.github/workflows/tools_tests.yaml +++ b/.github/workflows/tools_tests.yaml @@ -31,7 +31,7 @@ jobs: - uses: ./.github/workflows/setup-with-retry - name: Build openpilot timeout-minutes: 5 - run: ${{ env.RUN }} "scons -j$(nproc) cereal/ common/ --minimal" + run: ${{ env.RUN }} "scons -j$(nproc) cereal/ common/ opendbc/ --minimal" - name: Test PlotJuggler timeout-minutes: 2 run: | @@ -99,4 +99,4 @@ jobs: - name: Test notebooks timeout-minutes: 3 run: | - ${{ env.RUN }} "pip install nbmake && pytest --nbmake tools/car_porting/examples/" \ No newline at end of file + ${{ env.RUN }} "pip install nbmake && pytest --nbmake tools/car_porting/examples/" diff --git a/tools/plotjuggler/juggle.py b/tools/plotjuggler/juggle.py index 0caf5a18ff..1d1612a1cd 100755 --- a/tools/plotjuggler/juggle.py +++ b/tools/plotjuggler/juggle.py @@ -11,19 +11,20 @@ import argparse from functools import partial from openpilot.common.basedir import BASEDIR +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.tools.lib.helpers import save_log - from openpilot.tools.lib.logreader import LogReader, ReadMode juggle_dir = os.path.dirname(os.path.realpath(__file__)) DEMO_ROUTE = "a2a0ccea32023010|2023-07-27--13-01-19" -RELEASES_URL="https://github.com/commaai/PlotJuggler/releases/download/latest" +RELEASES_URL = "https://github.com/commaai/PlotJuggler/releases/download/latest" INSTALL_DIR = os.path.join(juggle_dir, "bin") PLOTJUGGLER_BIN = os.path.join(juggle_dir, "bin/plotjuggler") MINIMUM_PLOTJUGGLER_VERSION = (3, 5, 2) MAX_STREAMING_BUFFER_SIZE = 1000 + def install(): m = f"{platform.system()}-{platform.machine()}" supported = ("Linux-x86_64", "Linux-aarch64", "Darwin-arm64", "Darwin-x86_64") @@ -38,7 +39,7 @@ def install(): with requests.get(url, stream=True, timeout=10) as r, tempfile.NamedTemporaryFile() as tmp: r.raise_for_status() with open(tmp.name, 'wb') as tmpf: - for chunk in r.iter_content(chunk_size=1024*1024): + for chunk in r.iter_content(chunk_size=1024 * 1024): tmpf.write(chunk) with tarfile.open(tmp.name) as tar: @@ -69,9 +70,11 @@ def start_juggler(fn=None, dbc=None, layout=None, route_or_segment_name=None): cmd = f'{PLOTJUGGLER_BIN} --buffer_size {MAX_STREAMING_BUFFER_SIZE} --plugin_folders {INSTALL_DIR}{extra_args}' subprocess.call(cmd, shell=True, env=env, cwd=juggle_dir) + def process(can, lr): return [d for d in lr if can or d.which() not in ['can', 'sendcan']] + def juggle_route(route_or_segment_name, can, layout, dbc=None): sr = LogReader(route_or_segment_name, default_mode=ReadMode.AUTO_INTERACTIVE) @@ -82,7 +85,8 @@ def juggle_route(route_or_segment_name, can, layout, dbc=None): for cp in [m for m in all_data if m.which() == 'carParams']: try: DBC = __import__(f"openpilot.selfdrive.car.{cp.carParams.carName}.values", fromlist=['DBC']).DBC - dbc = DBC[cp.carParams.carFingerprint]['pt'] + fingerprint = cp.carParams.carFingerprint + dbc = DBC[MIGRATION.get(fingerprint, fingerprint)]['pt'] except Exception: pass break From 2637294ff266b531c1f5bb801e8650b0559cdf1b Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 28 Mar 2024 20:09:26 -0700 Subject: [PATCH 332/599] [bot] Fingerprints: add missing FW versions from new users (#32039) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 5 +++++ selfdrive/car/toyota/fingerprints.py | 1 + selfdrive/car/volkswagen/fingerprints.py | 6 +++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 8f48a45a53..e761e18c33 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -100,6 +100,7 @@ FW_VERSIONS = { b'68436250AE', b'68529067AA', b'68594993AB', + b'68594994AB', ], (Ecu.srs, 0x744, None): [ b'68405565AB', @@ -123,6 +124,7 @@ FW_VERSIONS = { b'68540436AC', b'68540436AD', b'68598670AB', + b'68598670AC', ], (Ecu.eps, 0x75a, None): [ b'68416742AA', @@ -132,6 +134,7 @@ FW_VERSIONS = { b'68524936AA', b'68524936AB', b'68525338AB', + b'68594337AB', b'68594340AB', ], (Ecu.engine, 0x7e0, None): [ @@ -148,6 +151,7 @@ FW_VERSIONS = { b'68526752AE ', b'68526754AE ', b'68536264AE ', + b'68700304AB ', b'68700306AB ', ], (Ecu.transmission, 0x7e1, None): [ @@ -161,6 +165,7 @@ FW_VERSIONS = { b'68527221AB', b'68527223AB', b'68586231AD', + b'68586233AD', ], }, CAR.CHRYSLER_PACIFICA_2018_HYBRID: { diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 2be153dea0..b55316f2e9 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -377,6 +377,7 @@ FW_VERSIONS = { (Ecu.fwdRadar, 0x750, 0xf): [ b'\x018821FF410200\x00\x00\x00\x00', b'\x018821FF410300\x00\x00\x00\x00', + b'\x018821FF410400\x00\x00\x00\x00', b'\x018821FF410500\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x750, 0x6d): [ diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 95441b13b1..39fc910ae9 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -386,14 +386,15 @@ FW_VERSIONS = { b'\xf1\x8704L906026ET\xf1\x891990', b'\xf1\x8704L906026FP\xf1\x892012', b'\xf1\x8704L906026GA\xf1\x892013', + b'\xf1\x8704L906026GK\xf1\x899971', b'\xf1\x8704L906026KD\xf1\x894798', b'\xf1\x8705L906022A \xf1\x890827', b'\xf1\x873G0906259 \xf1\x890004', b'\xf1\x873G0906259B \xf1\x890002', b'\xf1\x873G0906264 \xf1\x890004', - b'\xf1\x8704L906026GK\xf1\x899971', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x870CW300041E \xf1\x891006', b'\xf1\x870CW300042H \xf1\x891601', b'\xf1\x870CW300042H \xf1\x891607', b'\xf1\x870CW300043H \xf1\x891601', @@ -409,7 +410,6 @@ FW_VERSIONS = { b'\xf1\x870GC300042H \xf1\x891404', b'\xf1\x870GC300043 \xf1\x892301', b'\xf1\x870GC300046P \xf1\x892805', - b'\xf1\x870CW300041E \xf1\x891006', ], (Ecu.srs, 0x715, None): [ b'\xf1\x873Q0959655AE\xf1\x890195\xf1\x82\r56140056130012416612124111', @@ -434,13 +434,13 @@ FW_VERSIONS = { b'\xf1\x875Q0909143M \xf1\x892041\xf1\x820522B0060803', b'\xf1\x875Q0909143M \xf1\x892041\xf1\x820522B0080803', b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820526B0060905', + b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820531B0062105', b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521B00606A1', b'\xf1\x875Q0909144S \xf1\x891063\xf1\x82\x0516B00501A1', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521B00603A1', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521B00703A1', b'\xf1\x875Q0910143B \xf1\x892201\xf1\x82\x0563B0000600', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567B0020600', - b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820531B0062105', ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x873Q0907572A \xf1\x890126', From 677aee941fa81852c4d34cbc6653268656906a68 Mon Sep 17 00:00:00 2001 From: Josh Schroeder Date: Thu, 28 Mar 2024 23:17:50 -0400 Subject: [PATCH 333/599] Fingerprint: 2022 Kia Stinger EPS fw (#32045) +EPS fw for 2023 Kia Stinger --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index ed9a500148..9d5ac6b6d6 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -382,6 +382,7 @@ FW_VERSIONS = { (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503', b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5320 4C2VL503', + b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5520 4C4VL503', b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503', b'\xf1\x00CK MDPS R 1.00 5.04 57700-J5520 4C4VL504', ], From a1d538b4eb147fc2aed8f80d7664b25bcd063c56 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 28 Mar 2024 20:41:49 -0700 Subject: [PATCH 334/599] Migration dict: add missing platforms (#32046) missing platforms --- selfdrive/car/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index 977df6bc9f..877957aa2f 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -134,6 +134,8 @@ MIGRATION = { "CHRYSLER PACIFICA 2018": CHRYSLER.CHRYSLER_PACIFICA_2018, "CHRYSLER PACIFICA 2020": CHRYSLER.CHRYSLER_PACIFICA_2020, "DODGE DURANGO 2021": CHRYSLER.DODGE_DURANGO, + "JEEP GRAND CHEROKEE V6 2018": CHRYSLER.JEEP_GRAND_CHEROKEE, + "JEEP GRAND CHEROKEE 2019": CHRYSLER.JEEP_GRAND_CHEROKEE_2019, "RAM 1500 5TH GEN": CHRYSLER.RAM_1500_5TH_GEN, "RAM HD 5TH GEN": CHRYSLER.RAM_HD_5TH_GEN, "FORD BRONCO SPORT 1ST GEN": FORD.FORD_BRONCO_SPORT_MK1, @@ -253,6 +255,7 @@ MIGRATION = { "MAZDA CX-5 2022": MAZDA.MAZDA_CX5_2022, "NISSAN X-TRAIL 2017": NISSAN.NISSAN_XTRAIL, "NISSAN LEAF 2018": NISSAN.NISSAN_LEAF, + "NISSAN LEAF 2018 Instrument Cluster": NISSAN.NISSAN_LEAF_IC, "NISSAN ROGUE 2019": NISSAN.NISSAN_ROGUE, "NISSAN ALTIMA 2020": NISSAN.NISSAN_ALTIMA, "SUBARU ASCENT LIMITED 2019": SUBARU.SUBARU_ASCENT, From c9685dd297f682cdbf877deec209f1b5c98f234b Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Fri, 29 Mar 2024 03:21:40 -0400 Subject: [PATCH 335/599] VW MQB: Speed limiter is nonAdaptive (#31954) * VW MQB: Speed limiter is nonAdaptive * revise * Update selfdrive/car/volkswagen/carstate.py * Update selfdrive/car/volkswagen/carstate.py --------- Co-authored-by: Shane Smiskol --- selfdrive/car/volkswagen/carstate.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index 8139fbbf21..fac9de3dc7 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -119,6 +119,8 @@ class CarState(CarStateBase): # currently regulating speed (3), driver accel override (4), brake only (5) ret.cruiseState.available = pt_cp.vl["TSK_06"]["TSK_Status"] in (2, 3, 4, 5) ret.cruiseState.enabled = pt_cp.vl["TSK_06"]["TSK_Status"] in (3, 4, 5) + # Speed limiter mode; ECM faults if we command ACC while not pcmCruise + ret.cruiseState.nonAdaptive = bool(pt_cp.vl["TSK_06"]["TSK_Limiter_ausgewaehlt"]) ret.accFaulted = pt_cp.vl["TSK_06"]["TSK_Status"] in (6, 7) self.esp_hold_confirmation = bool(pt_cp.vl["ESP_21"]["ESP_Haltebestaetigung"]) From 0ba96bd1fa4382c416cc6f1c3b098210240d75ec Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 29 Mar 2024 00:24:38 -0700 Subject: [PATCH 336/599] Hyundai CAN: allow fingerprinting without comma power for more platforms (#31983) * including old data and forks * CAR.HYUNDAI_SANTA_FE_HEV_2022 * CAR.HYUNDAI_IONIQ * CAR.HYUNDAI_CUSTIN_1ST_GEN * CAR.KIA_NIRO_PHEV * CAR.HYUNDAI_IONIQ_HEV_2022 * CAR.GENESIS_G80 * CAR.KIA_SORENTO --- selfdrive/car/hyundai/values.py | 187 +++++++++++++++++++++++++++++++- 1 file changed, 186 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 1477f1b3af..a0d9bd9da7 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -700,9 +700,194 @@ FW_QUERY_CONFIG = FwQueryConfig( ], # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present + # KIA_NIRO_EV + # ('fwdCamera', 'fwdRadar'): routes: 540, dongles: 13 + # --- + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 482, dongles: 32 + # --- + # + # HYUNDAI_SANTA_FE + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 554, dongles: 19 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 369, dongles: 10 + # --- + # ('fwdCamera',): routes: 163, dongles: 1 + # --- + # + # HYUNDAI_ELANTRA_HEV_2021 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 435, dongles: 11 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 396, dongles: 7 + # --- + # + # HYUNDAI_PALISADE + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 2034, dongles: 54 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 594, dongles: 13 + # --- + # + # HYUNDAI_SANTA_FE_2022 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 865, dongles: 17 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 430, dongles: 9 + # --- + # + # HYUNDAI_SONATA + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 1550, dongles: 47 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 885, dongles: 22 + # --- + # ('fwdRadar',): routes: 2, dongles: 1 + # --- + # (): routes: 1, dongles: 1 + # --- + # + # HYUNDAI_SANTA_FE_PHEV_2022 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 292, dongles: 6 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 69, dongles: 2 + # --- + # + # HYUNDAI_SANTA_FE_HEV_2022 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 209, dongles: 4 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 71, dongles: 3 + # --- + # + # HYUNDAI_KONA_EV + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 242, dongles: 12 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 13, dongles: 2 + # --- + # ('eps', 'fwdCamera'): routes: 2, dongles: 1 + # --- + # + # HYUNDAI_IONIQ_EV_2020 + # ('fwdCamera', 'fwdRadar'): routes: 227, dongles: 2 + # --- + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 195, dongles: 4 + # --- + # + # HYUNDAI_ELANTRA_2021 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 257, dongles: 9 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 41, dongles: 4 + # --- + # + # HYUNDAI_SONATA_HYBRID + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 495, dongles: 19 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 182, dongles: 12 + # --- + # + # HYUNDAI_KONA_EV_2022 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 176, dongles: 6 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 173, dongles: 3 + # --- + # ('eps', 'fwdCamera'): routes: 1, dongles: 1 + # --- + # + # KIA_FORTE + # ('fwdCamera', 'fwdRadar'): routes: 193, dongles: 3 + # --- + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 24, dongles: 4 + # --- + # ('fwdCamera',): routes: 6, dongles: 2 + # --- + # ('eps', 'fwdCamera'): routes: 4, dongles: 1 + # --- + # + # GENESIS_G70 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 131, dongles: 2 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 97, dongles: 1 + # --- + # + # KIA_NIRO_PHEV_2022 + # ('fwdCamera', 'fwdRadar'): routes: 221, dongles: 1 + # --- + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 88, dongles: 1 + # --- + # + # HYUNDAI_IONIQ_PHEV + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 272, dongles: 14 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 121, dongles: 5 + # --- + # + # KIA_NIRO_HEV_2021 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 171, dongles: 4 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 2, dongles: 1 + # --- + # + # KIA_K5_2021 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 91, dongles: 7 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 61, dongles: 3 + # --- + # + # HYUNDAI_IONIQ + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 96, dongles: 3 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 13, dongles: 1 + # --- + # + # KIA_STINGER + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 184, dongles: 8 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 9, dongles: 3 + # --- + # + # GENESIS_G70_2020 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 45, dongles: 5 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 2, dongles: 1 + # --- + # + # HYUNDAI_AZERA_HEV_6TH_GEN + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 29, dongles: 2 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 11, dongles: 2 + # --- + # ('fwdRadar',): routes: 2, dongles: 1 + # --- + # + # HYUNDAI_CUSTIN_1ST_GEN + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 10, dongles: 1 + # --- + # ('fwdCamera', 'fwdRadar'): routes: 3, dongles: 1 + # --- + # ('fwdCamera',): routes: 2, dongles: 1 + # --- + # ('eps', 'fwdCamera'): routes: 1, dongles: 1 + # --- + # + # KIA_NIRO_PHEV + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 40, dongles: 1 + # --- + # + # HYUNDAI_ELANTRA_GT_I30 + # ('abs', 'eps', 'fwdCamera', 'fwdRadar', 'transmission'): routes: 34, dongles: 1 + # --- + # + # HYUNDAI_IONIQ_EV_LTD + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 14, dongles: 1 + # --- + # + # KIA_STINGER_2022 + # ('fwdCamera', 'fwdRadar'): routes: 10, dongles: 1 + # --- + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 2, dongles: 1 + # --- + # + # HYUNDAI_IONIQ_HEV_2022 + # ('eps', 'fwdCamera', 'fwdRadar'): routes: 5, dongles: 1 + # --- non_essential_ecus={ Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_ELANTRA_2021, - CAR.HYUNDAI_SANTA_FE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV], + CAR.HYUNDAI_SANTA_FE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV, CAR.HYUNDAI_CUSTIN_1ST_GEN, CAR.KIA_SORENTO], }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms From 05f1298044264028dcdeda463a60176889eccbef Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 29 Mar 2024 01:24:34 -0700 Subject: [PATCH 337/599] Revert "Hyundai CAN: allow fingerprinting without comma power for more platforms" (#32050) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert "Hyundai CAN: allow fingerprinting without comma power for more platfo…" This reverts commit 0ba96bd1fa4382c416cc6f1c3b098210240d75ec. --- selfdrive/car/hyundai/values.py | 187 +------------------------------- 1 file changed, 1 insertion(+), 186 deletions(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index a0d9bd9da7..1477f1b3af 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -700,194 +700,9 @@ FW_QUERY_CONFIG = FwQueryConfig( ], # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present - # KIA_NIRO_EV - # ('fwdCamera', 'fwdRadar'): routes: 540, dongles: 13 - # --- - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 482, dongles: 32 - # --- - # - # HYUNDAI_SANTA_FE - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 554, dongles: 19 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 369, dongles: 10 - # --- - # ('fwdCamera',): routes: 163, dongles: 1 - # --- - # - # HYUNDAI_ELANTRA_HEV_2021 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 435, dongles: 11 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 396, dongles: 7 - # --- - # - # HYUNDAI_PALISADE - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 2034, dongles: 54 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 594, dongles: 13 - # --- - # - # HYUNDAI_SANTA_FE_2022 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 865, dongles: 17 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 430, dongles: 9 - # --- - # - # HYUNDAI_SONATA - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 1550, dongles: 47 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 885, dongles: 22 - # --- - # ('fwdRadar',): routes: 2, dongles: 1 - # --- - # (): routes: 1, dongles: 1 - # --- - # - # HYUNDAI_SANTA_FE_PHEV_2022 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 292, dongles: 6 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 69, dongles: 2 - # --- - # - # HYUNDAI_SANTA_FE_HEV_2022 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 209, dongles: 4 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 71, dongles: 3 - # --- - # - # HYUNDAI_KONA_EV - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 242, dongles: 12 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 13, dongles: 2 - # --- - # ('eps', 'fwdCamera'): routes: 2, dongles: 1 - # --- - # - # HYUNDAI_IONIQ_EV_2020 - # ('fwdCamera', 'fwdRadar'): routes: 227, dongles: 2 - # --- - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 195, dongles: 4 - # --- - # - # HYUNDAI_ELANTRA_2021 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 257, dongles: 9 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 41, dongles: 4 - # --- - # - # HYUNDAI_SONATA_HYBRID - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 495, dongles: 19 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 182, dongles: 12 - # --- - # - # HYUNDAI_KONA_EV_2022 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 176, dongles: 6 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 173, dongles: 3 - # --- - # ('eps', 'fwdCamera'): routes: 1, dongles: 1 - # --- - # - # KIA_FORTE - # ('fwdCamera', 'fwdRadar'): routes: 193, dongles: 3 - # --- - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 24, dongles: 4 - # --- - # ('fwdCamera',): routes: 6, dongles: 2 - # --- - # ('eps', 'fwdCamera'): routes: 4, dongles: 1 - # --- - # - # GENESIS_G70 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 131, dongles: 2 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 97, dongles: 1 - # --- - # - # KIA_NIRO_PHEV_2022 - # ('fwdCamera', 'fwdRadar'): routes: 221, dongles: 1 - # --- - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 88, dongles: 1 - # --- - # - # HYUNDAI_IONIQ_PHEV - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 272, dongles: 14 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 121, dongles: 5 - # --- - # - # KIA_NIRO_HEV_2021 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 171, dongles: 4 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 2, dongles: 1 - # --- - # - # KIA_K5_2021 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 91, dongles: 7 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 61, dongles: 3 - # --- - # - # HYUNDAI_IONIQ - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 96, dongles: 3 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 13, dongles: 1 - # --- - # - # KIA_STINGER - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 184, dongles: 8 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 9, dongles: 3 - # --- - # - # GENESIS_G70_2020 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 45, dongles: 5 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 2, dongles: 1 - # --- - # - # HYUNDAI_AZERA_HEV_6TH_GEN - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 29, dongles: 2 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 11, dongles: 2 - # --- - # ('fwdRadar',): routes: 2, dongles: 1 - # --- - # - # HYUNDAI_CUSTIN_1ST_GEN - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 10, dongles: 1 - # --- - # ('fwdCamera', 'fwdRadar'): routes: 3, dongles: 1 - # --- - # ('fwdCamera',): routes: 2, dongles: 1 - # --- - # ('eps', 'fwdCamera'): routes: 1, dongles: 1 - # --- - # - # KIA_NIRO_PHEV - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 40, dongles: 1 - # --- - # - # HYUNDAI_ELANTRA_GT_I30 - # ('abs', 'eps', 'fwdCamera', 'fwdRadar', 'transmission'): routes: 34, dongles: 1 - # --- - # - # HYUNDAI_IONIQ_EV_LTD - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 14, dongles: 1 - # --- - # - # KIA_STINGER_2022 - # ('fwdCamera', 'fwdRadar'): routes: 10, dongles: 1 - # --- - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 2, dongles: 1 - # --- - # - # HYUNDAI_IONIQ_HEV_2022 - # ('eps', 'fwdCamera', 'fwdRadar'): routes: 5, dongles: 1 - # --- non_essential_ecus={ Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_ELANTRA_2021, - CAR.HYUNDAI_SANTA_FE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV, CAR.HYUNDAI_CUSTIN_1ST_GEN, CAR.KIA_SORENTO], + CAR.HYUNDAI_SANTA_FE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV], }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms From 6f223fc1c183ed3758e879f09da05feae0ab7b8c Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 29 Mar 2024 01:51:56 -0700 Subject: [PATCH 338/599] Hyundai CAN: allow fingerprinting without comma power (#32051) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "Revert "Hyundai CAN: allow fingerprinting without comma power for mor…" This reverts commit 05f1298044264028dcdeda463a60176889eccbef. * CAR.KIA_CEED * CAR.KIA_SELTOS * latest dump * cleaN Up --- selfdrive/car/hyundai/values.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 1477f1b3af..67345a9da1 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -702,7 +702,8 @@ FW_QUERY_CONFIG = FwQueryConfig( # Note that we still attempt to match with them when they are present non_essential_ecus={ Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_ELANTRA_2021, - CAR.HYUNDAI_SANTA_FE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV], + CAR.HYUNDAI_SANTA_FE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV, CAR.HYUNDAI_CUSTIN_1ST_GEN, CAR.KIA_SORENTO, + CAR.KIA_CEED, CAR.KIA_SELTOS], }, extra_ecus=[ (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms From 178cc8747c5b365490abaa0fc594e009309c661f Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sat, 30 Mar 2024 01:17:39 +0800 Subject: [PATCH 339/599] debug/check_can_parser_performance: remove overhead of capnp conversion (#32048) --- selfdrive/debug/check_can_parser_performance.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/selfdrive/debug/check_can_parser_performance.py b/selfdrive/debug/check_can_parser_performance.py index c4b688ce29..604a1df124 100755 --- a/selfdrive/debug/check_can_parser_performance.py +++ b/selfdrive/debug/check_can_parser_performance.py @@ -25,11 +25,12 @@ if __name__ == '__main__': CC = car.CarControl.new_message() ets = [] for _ in tqdm(range(N_RUNS)): + msgs = [(m.as_builder().to_bytes(),) for m in tm.can_msgs] start_t = time.process_time_ns() - for msg in tm.can_msgs: + for msg in msgs: for cp in tm.CI.can_parsers: if cp is not None: - cp.update_strings((msg.as_builder().to_bytes(),)) + cp.update_strings(msg) ets.append((time.process_time_ns() - start_t) * 1e-6) print(f'{len(tm.can_msgs)} CAN packets, {N_RUNS} runs') From 8f4a5d7700cb32ba6601ebc0093a1afa0d934a33 Mon Sep 17 00:00:00 2001 From: Hunter Jackson Date: Fri, 29 Mar 2024 17:18:53 -0400 Subject: [PATCH 340/599] Update Ford Maverick fingerprints (#32043) * update maverick fingerprints * Update selfdrive/car/ford/fingerprints.py --------- Co-authored-by: Shane Smiskol --- selfdrive/car/ford/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index 32d331b2db..da321ec2d0 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -132,12 +132,14 @@ FW_VERSIONS = { CAR.FORD_MAVERICK_MK1: { (Ecu.eps, 0x730, None): [ b'NZ6C-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'NZ6C-14D003-AK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.abs, 0x760, None): [ b'NZ6C-2D053-AG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-ED\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-EE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-EF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'NZ6C-2D053-AE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x764, None): [ b'NZ6T-14D049-AA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', From 8671e6217bce2ee87953be64d643b6fe9867f2e3 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 29 Mar 2024 14:25:14 -0700 Subject: [PATCH 341/599] [bot] Fingerprints: add missing FW versions from new users (#32055) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 1 + selfdrive/car/ford/fingerprints.py | 4 ++-- selfdrive/car/hyundai/fingerprints.py | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index e761e18c33..1386089a18 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -266,6 +266,7 @@ FW_VERSIONS = { b'68331511AC', b'68331574AC', b'68331687AC', + b'68331690AC', b'68340272AD', ], (Ecu.srs, 0x744, None): [ diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index da321ec2d0..deba38c205 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -131,15 +131,15 @@ FW_VERSIONS = { }, CAR.FORD_MAVERICK_MK1: { (Ecu.eps, 0x730, None): [ - b'NZ6C-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'NZ6C-14D003-AK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'NZ6C-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.abs, 0x760, None): [ + b'NZ6C-2D053-AE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'NZ6C-2D053-AG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-ED\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-EE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-EF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - b'NZ6C-2D053-AE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x764, None): [ b'NZ6T-14D049-AA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 9d5ac6b6d6..3c6e55a87c 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -382,8 +382,8 @@ FW_VERSIONS = { (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503', b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5320 4C2VL503', - b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5520 4C4VL503', b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503', + b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5520 4C4VL503', b'\xf1\x00CK MDPS R 1.00 5.04 57700-J5520 4C4VL504', ], (Ecu.fwdCamera, 0x7c4, None): [ From 4a9a82b6647f5b788d9e26fa4672805ec7d6a93c Mon Sep 17 00:00:00 2001 From: candreacchio Date: Sat, 30 Mar 2024 12:43:54 +1030 Subject: [PATCH 342/599] Updated Fingerprints for Hyundai PHEV 2019 for Australian Model (#31990) Update fingerprints.py Extended ECUs for PHEV 2019 for Australian Model --- selfdrive/car/hyundai/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 3c6e55a87c..c693e71d1c 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -92,12 +92,15 @@ FW_VERSIONS = { }, CAR.HYUNDAI_IONIQ_PHEV_2019: { (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2000 ', b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2100 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2501 4AEHC107', + b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2551 4AEHC107', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00AEP MFC AT AUS RHD 1.00 1.00 95740-G2400 180222', b'\xf1\x00AEP MFC AT USA LHD 1.00 1.00 95740-G2400 180222', ], }, From fb1cb01c5ae95a7223f0df0ad9caf16bbb4dd017 Mon Sep 17 00:00:00 2001 From: royjr Date: Fri, 29 Mar 2024 23:53:51 -0400 Subject: [PATCH 343/599] ui: update arabic translations (#32058) Update main_ar.ts --- selfdrive/ui/translations/main_ar.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 3acbba0c9d..2aea017c78 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -496,23 +496,23 @@ OnroadAlerts openpilot Unavailable - + openpilot غير متوفر Waiting for controls to start - + في انتظار بدء عناصر التحكم TAKE CONTROL IMMEDIATELY - + تحكم على الفور Controls Unresponsive - + الضوابط غير مستجيبة Reboot Device - + إعادة التشغيل From 493c81076b230facec12de3065e877847a671ec7 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 29 Mar 2024 20:56:40 -0700 Subject: [PATCH 344/599] VW: check cruise control (#32049) * VW: check cruise control! * fix that * fix that * Update ref_commit --- selfdrive/car/volkswagen/carstate.py | 11 +++++++++-- selfdrive/test/process_replay/ref_commit | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index fac9de3dc7..b169970fed 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -119,8 +119,15 @@ class CarState(CarStateBase): # currently regulating speed (3), driver accel override (4), brake only (5) ret.cruiseState.available = pt_cp.vl["TSK_06"]["TSK_Status"] in (2, 3, 4, 5) ret.cruiseState.enabled = pt_cp.vl["TSK_06"]["TSK_Status"] in (3, 4, 5) - # Speed limiter mode; ECM faults if we command ACC while not pcmCruise - ret.cruiseState.nonAdaptive = bool(pt_cp.vl["TSK_06"]["TSK_Limiter_ausgewaehlt"]) + + if self.CP.pcmCruise: + # Cruise Control mode; check for distance UI setting from the radar. + # ECM does not manage this, so do not need to check for openpilot longitudinal + ret.cruiseState.nonAdaptive = ext_cp.vl["ACC_02"]["ACC_Gesetzte_Zeitluecke"] == 0 + else: + # Speed limiter mode; ECM faults if we command ACC while not pcmCruise + ret.cruiseState.nonAdaptive = bool(pt_cp.vl["TSK_06"]["TSK_Limiter_ausgewaehlt"]) + ret.accFaulted = pt_cp.vl["TSK_06"]["TSK_Status"] in (6, 7) self.esp_hold_confirmation = bool(pt_cp.vl["ESP_21"]["ESP_Haltebestaetigung"]) diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 4bb8cd01e9..1156aefeb2 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -f77699bfd783ab0c9a419f2af883b36aed20cc68 \ No newline at end of file +28001018eae89eb4906717bebf892345ad590b5a From 90a59de1440e6a58f3991578a141709ca99ec94d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sat, 30 Mar 2024 10:16:40 -0700 Subject: [PATCH 345/599] [bot] Car docs: update model years from new users (#32060) Update car docs --- docs/CARS.md | 2 +- selfdrive/car/honda/values.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 93c5f5fa46..31560fffb0 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -72,7 +72,7 @@ A supported vehicle is one that just works when you install a comma device. All |Honda|Civic Hatchback 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|CR-V 2015-16|Touring Trim|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|CR-V 2017-22|Honda Sensing|openpilot available[1](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Honda|CR-V Hybrid 2017-20|Honda Sensing|openpilot available[1](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Honda|CR-V Hybrid 2017-21|Honda Sensing|openpilot available[1](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|e 2020|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Fit 2018-20|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Freed 2020|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 36cdbc8732..4b0745a7cc 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -156,7 +156,7 @@ class CAR(Platforms): flags=HondaFlags.BOSCH_ALT_BRAKE, ) HONDA_CRV_HYBRID = HondaBoschPlatformConfig( - [HondaCarDocs("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS)], + [HondaCarDocs("Honda CR-V Hybrid 2017-21", min_steer_speed=12. * CV.MPH_TO_MS)], # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), dbc_dict('honda_accord_2018_can_generated', None), From b8f5f50d39881388fa4dcf3137693b948c2cf070 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sun, 31 Mar 2024 08:37:14 +0800 Subject: [PATCH 346/599] replay/route: adds retry on network failures (#31948) --- tools/replay/route.cc | 31 ++++++++++++++++++++----------- tools/replay/route.h | 2 +- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/tools/replay/route.cc b/tools/replay/route.cc index 0a57ee7d4a..db7a959595 100644 --- a/tools/replay/route.cc +++ b/tools/replay/route.cc @@ -59,18 +59,27 @@ bool Route::load() { return !segments_.empty(); } -bool Route::loadFromServer() { - QEventLoop loop; - HttpRequest http(nullptr, !Hardware::PC()); - QObject::connect(&http, &HttpRequest::requestDone, [&](const QString &json, bool success, QNetworkReply::NetworkError error) { - if (error == QNetworkReply::ContentAccessDenied || error == QNetworkReply::AuthenticationRequiredError) { - qWarning() << ">> Unauthorized. Authenticate with tools/lib/auth.py <<"; +bool Route::loadFromServer(int retries) { + for (int i = 1; i <= retries; ++i) { + QString result; + QEventLoop loop; + HttpRequest http(nullptr, !Hardware::PC()); + QObject::connect(&http, &HttpRequest::requestDone, [&loop, &result](const QString &json, bool success, QNetworkReply::NetworkError err) { + result = json; + loop.exit((int)err); + }); + http.sendRequest(CommaApi::BASE_URL + "/v1/route/" + route_.str + "/files"); + auto err = (QNetworkReply::NetworkError)loop.exec(); + if (err == QNetworkReply::NoError) { + return loadFromJson(result); + } else if (err == QNetworkReply::ContentAccessDenied || err == QNetworkReply::AuthenticationRequiredError) { + rWarning(">> Unauthorized. Authenticate with tools/lib/auth.py <<"); + return false; } - - loop.exit(success ? loadFromJson(json) : 0); - }); - http.sendRequest(CommaApi::BASE_URL + "/v1/route/" + route_.str + "/files"); - return loop.exec(); + rWarning("Retrying %d/%d", i, retries); + util::sleep_for(500); + } + return false; } bool Route::loadFromJson(const QString &json) { diff --git a/tools/replay/route.h b/tools/replay/route.h index 33e5bcb1ba..654c084ff2 100644 --- a/tools/replay/route.h +++ b/tools/replay/route.h @@ -42,7 +42,7 @@ public: protected: bool loadFromLocal(); - bool loadFromServer(); + bool loadFromServer(int retries = 3); bool loadFromJson(const QString &json); void addFileToSegment(int seg_num, const QString &file); RouteIdentifier route_ = {}; From 43832335b8e44e40683ffe6afa226a2d2de0d6ff Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sat, 30 Mar 2024 17:47:21 -0700 Subject: [PATCH 347/599] timed: set valid flag (#32061) * timed: set valid flag * oops --- common/time.py | 13 +++++++++++-- system/timed.py | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/common/time.py b/common/time.py index f2e49eb546..5379faf22a 100644 --- a/common/time.py +++ b/common/time.py @@ -1,6 +1,15 @@ import datetime +from pathlib import Path -MIN_DATE = datetime.datetime(year=2024, month=1, day=28) +_MIN_DATE = datetime.datetime(year=2024, month=3, day=30) + +def min_date(): + # on systemd systems, the default time is the systemd build time + systemd_path = Path("/lib/systemd/systemd") + if systemd_path.exists(): + d = datetime.datetime.fromtimestamp(systemd_path.stat().st_mtime) + return d + datetime.timedelta(days=1) + return _MIN_DATE def system_time_valid(): - return datetime.datetime.now() > MIN_DATE + return datetime.datetime.now() > min_date() diff --git a/system/timed.py b/system/timed.py index ab82f8c72d..2b9a42c455 100755 --- a/system/timed.py +++ b/system/timed.py @@ -8,6 +8,7 @@ from typing import NoReturn from timezonefinder import TimezoneFinder import cereal.messaging as messaging +from openpilot.common.time import system_time_valid from openpilot.common.params import Params from openpilot.common.swaglog import cloudlog from openpilot.system.hardware import AGNOS @@ -69,7 +70,8 @@ def main() -> NoReturn: while True: sm.update(1000) - msg = messaging.new_message('clocks', valid=True) + msg = messaging.new_message('clocks') + msg.valid = system_time_valid() msg.clocks.wallTimeNanos = time.time_ns() pm.send('clocks', msg) From fc9f50c90d166ce8bef7a711b2e391071fb0fe02 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 1 Apr 2024 13:01:50 -0400 Subject: [PATCH 348/599] fix logreader after `segment_numbers` api removal (#32073) fix --- tools/lib/route.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/lib/route.py b/tools/lib/route.py index 06a3596d69..d5fd41108b 100644 --- a/tools/lib/route.py +++ b/tools/lib/route.py @@ -4,7 +4,6 @@ from functools import cache from urllib.parse import urlparse from collections import defaultdict from itertools import chain -from typing import cast from openpilot.tools.lib.auth_config import get_token from openpilot.tools.lib.api import CommaApi @@ -240,7 +239,9 @@ class SegmentName: def get_max_seg_number_cached(sr: 'SegmentRange') -> int: try: api = CommaApi(get_token()) - return cast(int, api.get("/v1/route/" + sr.route_name.replace("/", "|"))["segment_numbers"][-1]) + max_seg_number = api.get("/v1/route/" + sr.route_name.replace("/", "|"))["maxqlog"] + assert isinstance(max_seg_number, int) + return max_seg_number except Exception as e: raise Exception("unable to get max_segment_number. ensure you have access to this route or the route is public.") from e From c2f593f69ae558eec5d46056468e9e1a99c062d2 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 1 Apr 2024 10:03:04 -0700 Subject: [PATCH 349/599] [bot] Bump submodules (#32069) bump submodules Co-authored-by: jnewb1 --- cereal | 2 +- opendbc | 2 +- panda | 2 +- teleoprtc_repo | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cereal b/cereal index 6bfd39a506..b9871482a3 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 6bfd39a506c5123949ecf58831bfe48f938e6143 +Subproject commit b9871482a3cba70c2ab40ab80017019313dc3f31 diff --git a/opendbc b/opendbc index 3c926e88e8..5821bd94d0 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit 3c926e88e87594e788ab96d32ecdd8f66cb01aed +Subproject commit 5821bd94d0cb9017d274b4499f2a0525ac317dc2 diff --git a/panda b/panda index 01c54d1199..18f0bdff4b 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 01c54d11990fb82b85acc322a6e2e34a4b7ee389 +Subproject commit 18f0bdff4bfb178c5cb5613fe91f0bb424791a93 diff --git a/teleoprtc_repo b/teleoprtc_repo index ab2f09706e..3116a5053b 160000 --- a/teleoprtc_repo +++ b/teleoprtc_repo @@ -1 +1 @@ -Subproject commit ab2f09706e8f64390e196f079ac69e67131b07f5 +Subproject commit 3116a5053bc22b912254f1f7000ab9e267916cd5 From b743e5cff588b8d80aa18758bdeb0e13c1f3e874 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 1 Apr 2024 10:03:26 -0700 Subject: [PATCH 350/599] [bot] Update Python packages and pre-commit hooks (#32071) Update Python packages and pre-commit hooks Co-authored-by: jnewb1 Co-authored-by: Justin Newberry --- .pre-commit-config.yaml | 2 +- poetry.lock | 583 +++++++++++++++++++++------------------- 2 files changed, 314 insertions(+), 271 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d5e958371b..02af4473bd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -98,6 +98,6 @@ repos: args: - --lock - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.28.0 + rev: 0.28.1 hooks: - id: check-github-workflows diff --git a/poetry.lock b/poetry.lock index e7f0429253..08fd51c18d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -730,19 +730,19 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "control" -version = "0.9.4" +version = "0.10.0" description = "Python Control Systems Library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" files = [ - {file = "control-0.9.4-py3-none-any.whl", hash = "sha256:ab68980abd8d35ae5015ffa090865cbbd926deea7e66d0b9a41cfd12577e63ff"}, - {file = "control-0.9.4.tar.gz", hash = "sha256:0fa57d2216b7ac4e9339c09eab6827660318a641779335864feee940bd19c9ce"}, + {file = "control-0.10.0-py3-none-any.whl", hash = "sha256:ed1e0eb73f1e2945fc9af9d7b9121ef328fe980e7903b2a14b149d4f1855a808"}, + {file = "control-0.10.0.tar.gz", hash = "sha256:2c18b767537f45c7fd07b2e4afe8fbe5964019499b5f52f888edb5d8560bab53"}, ] [package.dependencies] -matplotlib = "*" -numpy = "*" -scipy = ">=1.3" +matplotlib = ">=3.6" +numpy = ">=1.23" +scipy = ">=1.8" [package.extras] cvxopt = ["cvxopt (>=1.2.0)"] @@ -894,69 +894,69 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "cython" -version = "3.0.9" +version = "3.0.10" description = "The Cython compiler for writing C extensions in the Python language." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "Cython-3.0.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:296bd30d4445ac61b66c9d766567f6e81a6e262835d261e903c60c891a6729d3"}, - {file = "Cython-3.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f496b52845cb45568a69d6359a2c335135233003e708ea02155c10ce3548aa89"}, - {file = "Cython-3.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:858c3766b9aa3ab8a413392c72bbab1c144a9766b7c7bfdef64e2e414363fa0c"}, - {file = "Cython-3.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0eb1e6ef036028a52525fd9a012a556f6dd4788a0e8755fe864ba0e70cde2ff"}, - {file = "Cython-3.0.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c8191941073ea5896321de3c8c958fd66e5f304b0cd1f22c59edd0b86c4dd90d"}, - {file = "Cython-3.0.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e32b016030bc72a8a22a1f21f470a2f57573761a4f00fbfe8347263f4fbdb9f1"}, - {file = "Cython-3.0.9-cp310-cp310-win32.whl", hash = "sha256:d6f3ff1cd6123973fe03e0fb8ee936622f976c0c41138969975824d08886572b"}, - {file = "Cython-3.0.9-cp310-cp310-win_amd64.whl", hash = "sha256:56f3b643dbe14449248bbeb9a63fe3878a24256664bc8c8ef6efd45d102596d8"}, - {file = "Cython-3.0.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:35e6665a20d6b8a152d72b7fd87dbb2af6bb6b18a235b71add68122d594dbd41"}, - {file = "Cython-3.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92f4960c40ad027bd8c364c50db11104eadc59ffeb9e5b7f605ca2f05946e20"}, - {file = "Cython-3.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38df37d0e732fbd9a2fef898788492e82b770c33d1e4ed12444bbc8a3b3f89c0"}, - {file = "Cython-3.0.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad7fd88ebaeaf2e76fd729a8919fae80dab3d6ac0005e28494261d52ff347a8f"}, - {file = "Cython-3.0.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1365d5f76bf4d19df3d19ce932584c9bb76e9fb096185168918ef9b36e06bfa4"}, - {file = "Cython-3.0.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c232e7f279388ac9625c3e5a5a9f0078a9334959c5d6458052c65bbbba895e1e"}, - {file = "Cython-3.0.9-cp311-cp311-win32.whl", hash = "sha256:357e2fad46a25030b0c0496487e01a9dc0fdd0c09df0897f554d8ba3c1bc4872"}, - {file = "Cython-3.0.9-cp311-cp311-win_amd64.whl", hash = "sha256:1315aee506506e8d69cf6631d8769e6b10131fdcc0eb66df2698f2a3ddaeeff2"}, - {file = "Cython-3.0.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:157973807c2796addbed5fbc4d9c882ab34bbc60dc297ca729504901479d5df7"}, - {file = "Cython-3.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00b105b5d050645dd59e6767bc0f18b48a4aa11c85f42ec7dd8181606f4059e3"}, - {file = "Cython-3.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac5536d09bef240cae0416d5a703d298b74c7bbc397da803ac9d344e732d4369"}, - {file = "Cython-3.0.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09c44501d476d16aaa4cbc29c87f8c0f54fc20e69b650d59cbfa4863426fc70c"}, - {file = "Cython-3.0.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:cc9c3b9f20d8e298618e5ccd32083ca386e785b08f9893fbec4c50b6b85be772"}, - {file = "Cython-3.0.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a30d96938c633e3ec37000ac3796525da71254ef109e66bdfd78f29891af6454"}, - {file = "Cython-3.0.9-cp312-cp312-win32.whl", hash = "sha256:757ca93bdd80702546df4d610d2494ef2e74249cac4d5ba9464589fb464bd8a3"}, - {file = "Cython-3.0.9-cp312-cp312-win_amd64.whl", hash = "sha256:1dc320a9905ab95414013f6de805efbff9e17bb5fb3b90bbac533f017bec8136"}, - {file = "Cython-3.0.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4ae349960ebe0da0d33724eaa7f1eb866688fe5434cc67ce4dbc06d6a719fbfc"}, - {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63d2537bf688247f76ded6dee28ebd26274f019309aef1eb4f2f9c5c482fde2d"}, - {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f5a2dfc724bea1f710b649f02d802d80fc18320c8e6396684ba4a48412445a"}, - {file = "Cython-3.0.9-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deaf4197d4b0bcd5714a497158ea96a2bd6d0f9636095437448f7e06453cc83d"}, - {file = "Cython-3.0.9-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:000af6deb7412eb7ac0c635ff5e637fb8725dd0a7b88cc58dfc2b3de14e701c4"}, - {file = "Cython-3.0.9-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:15c7f5c2d35bed9aa5f2a51eaac0df23ae72f2dbacf62fc672dd6bfaa75d2d6f"}, - {file = "Cython-3.0.9-cp36-cp36m-win32.whl", hash = "sha256:f49aa4970cd3bec66ac22e701def16dca2a49c59cceba519898dd7526e0be2c0"}, - {file = "Cython-3.0.9-cp36-cp36m-win_amd64.whl", hash = "sha256:4558814fa025b193058d42eeee498a53d6b04b2980d01339fc2444b23fd98e58"}, - {file = "Cython-3.0.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:539cd1d74fd61f6cfc310fa6bbbad5adc144627f2b7486a07075d4e002fd6aad"}, - {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3232926cd406ee02eabb732206f6e882c3aed9d58f0fea764013d9240405bcf"}, - {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33b6ac376538a7fc8c567b85d3c71504308a9318702ec0485dd66c059f3165cb"}, - {file = "Cython-3.0.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2cc92504b5d22ac66031ffb827bd3a967fc75a5f0f76ab48bce62df19be6fdfd"}, - {file = "Cython-3.0.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:22b8fae756c5c0d8968691bed520876de452f216c28ec896a00739a12dba3bd9"}, - {file = "Cython-3.0.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9cda0d92a09f3520f29bd91009f1194ba9600777c02c30c6d2d4ac65fb63e40d"}, - {file = "Cython-3.0.9-cp37-cp37m-win32.whl", hash = "sha256:ec612418490941ed16c50c8d3784c7bdc4c4b2a10c361259871790b02ec8c1db"}, - {file = "Cython-3.0.9-cp37-cp37m-win_amd64.whl", hash = "sha256:976c8d2bedc91ff6493fc973d38b2dc01020324039e2af0e049704a8e1b22936"}, - {file = "Cython-3.0.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5055988b007c92256b6e9896441c3055556038c3497fcbf8c921a6c1fce90719"}, - {file = "Cython-3.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9360606d964c2d0492a866464efcf9d0a92715644eede3f6a2aa696de54a137"}, - {file = "Cython-3.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c6e809f060bed073dc7cba1648077fe3b68208863d517c8b39f3920eecf9dd"}, - {file = "Cython-3.0.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95ed792c966f969cea7489c32ff90150b415c1f3567db8d5a9d489c7c1602dac"}, - {file = "Cython-3.0.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8edd59d22950b400b03ca78d27dc694d2836a92ef0cac4f64cb4b2ff902f7e25"}, - {file = "Cython-3.0.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4cf0ed273bf60e97922fcbbdd380c39693922a597760160b4b4355e6078ca188"}, - {file = "Cython-3.0.9-cp38-cp38-win32.whl", hash = "sha256:5eb9bd4ae12ebb2bc79a193d95aacf090fbd8d7013e11ed5412711650cb34934"}, - {file = "Cython-3.0.9-cp38-cp38-win_amd64.whl", hash = "sha256:44457279da56e0f829bb1fc5a5dc0836e5d498dbcf9b2324f32f7cc9d2ec6569"}, - {file = "Cython-3.0.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4b419a1adc2af43f4660e2f6eaf1e4fac2dbac59490771eb8ac3d6063f22356"}, - {file = "Cython-3.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f836192140f033b2319a0128936367c295c2b32e23df05b03b672a6015757ea"}, - {file = "Cython-3.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fd198c1a7f8e9382904d622cc0efa3c184605881fd5262c64cbb7168c4c1ec5"}, - {file = "Cython-3.0.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a274fe9ca5c53fafbcf5c8f262f8ad6896206a466f0eeb40aaf36a7951e957c0"}, - {file = "Cython-3.0.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:158c38360bbc5063341b1e78d3737f1251050f89f58a3df0d10fb171c44262be"}, - {file = "Cython-3.0.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8bf30b045f7deda0014b042c1b41c1d272facc762ab657529e3b05505888e878"}, - {file = "Cython-3.0.9-cp39-cp39-win32.whl", hash = "sha256:9a001fd95c140c94d934078544ff60a3c46aca2dc86e75a76e4121d3cd1f4b33"}, - {file = "Cython-3.0.9-cp39-cp39-win_amd64.whl", hash = "sha256:530c01c4aebba709c0ec9c7ecefe07177d0b9fd7ffee29450a118d92192ccbdf"}, - {file = "Cython-3.0.9-py2.py3-none-any.whl", hash = "sha256:bf96417714353c5454c2e3238fca9338599330cf51625cdc1ca698684465646f"}, - {file = "Cython-3.0.9.tar.gz", hash = "sha256:a2d354f059d1f055d34cfaa62c5b68bc78ac2ceab6407148d47fb508cf3ba4f3"}, + {file = "Cython-3.0.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e876272548d73583e90babda94c1299537006cad7a34e515a06c51b41f8657aa"}, + {file = "Cython-3.0.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adc377aa33c3309191e617bf675fdbb51ca727acb9dc1aa23fc698d8121f7e23"}, + {file = "Cython-3.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:401aba1869a57aba2922ccb656a6320447e55ace42709b504c2f8e8b166f46e1"}, + {file = "Cython-3.0.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:541fbe725d6534a90b93f8c577eb70924d664b227a4631b90a6e0506d1469591"}, + {file = "Cython-3.0.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:86998b01f6a6d48398df8467292c7637e57f7e3a2ca68655367f13f66fed7734"}, + {file = "Cython-3.0.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d092c0ddba7e9e530a5c5be4ac06db8360258acc27675d1fc86294a5dc8994c5"}, + {file = "Cython-3.0.10-cp310-cp310-win32.whl", hash = "sha256:3cffb666e649dba23810732497442fb339ee67ba4e0be1f0579991e83fcc2436"}, + {file = "Cython-3.0.10-cp310-cp310-win_amd64.whl", hash = "sha256:9ea31184c7b3a728ef1f81fccb161d8948c05aa86c79f63b74fb6f3ddec860ec"}, + {file = "Cython-3.0.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:051069638abfb076900b0c2bcb6facf545655b3f429e80dd14365192074af5a4"}, + {file = "Cython-3.0.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712760879600907189c7d0d346851525545484e13cd8b787e94bfd293da8ccf0"}, + {file = "Cython-3.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38d40fa1324ac47c04483d151f5e092406a147eac88a18aec789cf01c089c3f2"}, + {file = "Cython-3.0.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bd49a3a9fdff65446a3e1c2bfc0ec85c6ce4c3cad27cd4ad7ba150a62b7fb59"}, + {file = "Cython-3.0.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e8df79b596633b8295eaa48b1157d796775c2bb078f32267d32f3001b687f2fd"}, + {file = "Cython-3.0.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bcc9795990e525c192bc5c0775e441d7d56d7a7d02210451e9e13c0448dba51b"}, + {file = "Cython-3.0.10-cp311-cp311-win32.whl", hash = "sha256:09f2000041db482cad3bfce94e1fa3a4c82b0e57390a164c02566cbbda8c4f12"}, + {file = "Cython-3.0.10-cp311-cp311-win_amd64.whl", hash = "sha256:3919a55ec9b6c7db6f68a004c21c05ed540c40dbe459ced5d801d5a1f326a053"}, + {file = "Cython-3.0.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8f2864ab5fcd27a346f0b50f901ebeb8f60b25a60a575ccfd982e7f3e9674914"}, + {file = "Cython-3.0.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:407840c56385b9c085826fe300213e0e76ba15d1d47daf4b58569078ecb94446"}, + {file = "Cython-3.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a036d00caa73550a3a976432ef21c1e3fa12637e1616aab32caded35331ae96"}, + {file = "Cython-3.0.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cc6a0e7e23a96dec3f3c9d39690d4281beabd5297855140d0d30855f950275e"}, + {file = "Cython-3.0.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a5e14a8c6a8157d2b0cdc2e8e3444905d20a0e78e19d2a097e89fb8b04b51f6b"}, + {file = "Cython-3.0.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f8a2b8fa0fd8358bccb5f3304be563c4750aae175100463d212d5ea0ec74cbe0"}, + {file = "Cython-3.0.10-cp312-cp312-win32.whl", hash = "sha256:2d29e617fd23cf4b83afe8f93f2966566c9f565918ad1e86a4502fe825cc0a79"}, + {file = "Cython-3.0.10-cp312-cp312-win_amd64.whl", hash = "sha256:6c5af936940a38c300977b81598d9c0901158f220a58c177820e17e1774f1cf1"}, + {file = "Cython-3.0.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5f465443917d5c0f69825fca3b52b64c74ac3de0143b1fff6db8ba5b48c9fb4a"}, + {file = "Cython-3.0.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fadb84193c25641973666e583df8df4e27c52cdc05ddce7c6f6510d690ba34a"}, + {file = "Cython-3.0.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fa9e7786083b6aa61594c16979d621b62e61fcd9c2edd4761641b95c7fb34b2"}, + {file = "Cython-3.0.10-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4780d0f98ce28191c4d841c4358b5d5e79d96520650910cd59904123821c52d"}, + {file = "Cython-3.0.10-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:32fbad02d1189be75eb96456d9c73f5548078e5338d8fa153ecb0115b6ee279f"}, + {file = "Cython-3.0.10-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:90e2f514fc753b55245351305a399463103ec18666150bb1c36779b9862388e9"}, + {file = "Cython-3.0.10-cp36-cp36m-win32.whl", hash = "sha256:a9c976e9ec429539a4367cb4b24d15a1e46b925976f4341143f49f5f161171f5"}, + {file = "Cython-3.0.10-cp36-cp36m-win_amd64.whl", hash = "sha256:a9bb402674788a7f4061aeef8057632ec440123e74ed0fb425308a59afdfa10e"}, + {file = "Cython-3.0.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:206e803598010ecc3813db8748ed685f7beeca6c413f982df9f8a505fce56563"}, + {file = "Cython-3.0.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15b6d397f4ee5ad54e373589522af37935a32863f1b23fa8c6922adf833e28e2"}, + {file = "Cython-3.0.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a181144c2f893ed8e6a994d43d0b96300bc99873f21e3b7334ca26c61c37b680"}, + {file = "Cython-3.0.10-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b74b700d6a793113d03fb54b63bdbadba6365379424bac7c0470605672769260"}, + {file = "Cython-3.0.10-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:076e9fd4e0ca33c5fa00a7479180dbfb62f17fe928e2909f82da814536e96d2b"}, + {file = "Cython-3.0.10-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:269f06e6961e8591d56e30b46e1a51b6ccb42cab04c29fa3b30d3e8723485fb4"}, + {file = "Cython-3.0.10-cp37-cp37m-win32.whl", hash = "sha256:d4e83a8ceff7af60064da4ccfce0ac82372544dd5392f1b350c34f1b04d0fae6"}, + {file = "Cython-3.0.10-cp37-cp37m-win_amd64.whl", hash = "sha256:40fac59c3a7fbcd9c25aea64c342c890a5e2270ce64a1525e840807800167799"}, + {file = "Cython-3.0.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f43a58bf2434870d2fc42ac2e9ff8138c9e00c6251468de279d93fa279e9ba3b"}, + {file = "Cython-3.0.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e9a885ec63d3955a08cefc4eec39fefa9fe14989c6e5e2382bd4aeb6bdb9bc3"}, + {file = "Cython-3.0.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acfbe0fff364d54906058fc61f2393f38cd7fa07d344d80923937b87e339adcf"}, + {file = "Cython-3.0.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8adcde00a8a88fab27509b558cd8c2959ab0c70c65d3814cfea8c68b83fa6dcd"}, + {file = "Cython-3.0.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2c9c1e3e78909488f3b16fabae02308423fa6369ed96ab1e250807d344cfffd7"}, + {file = "Cython-3.0.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fc6e0faf5b57523b073f0cdefadcaef3a51235d519a0594865925cadb3aeadf0"}, + {file = "Cython-3.0.10-cp38-cp38-win32.whl", hash = "sha256:35f6ede7c74024ed1982832ae61c9fad7cf60cc3f5b8c6a63bb34e38bc291936"}, + {file = "Cython-3.0.10-cp38-cp38-win_amd64.whl", hash = "sha256:950c0c7b770d2a7cec74fb6f5ccc321d0b51d151f48c075c0d0db635a60ba1b5"}, + {file = "Cython-3.0.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:077b61ee789e48700e25d4a16daa4258b8e65167136e457174df400cf9b4feab"}, + {file = "Cython-3.0.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f1f8bba9d8f37c0cffc934792b4ac7c42d0891077127c11deebe9fa0a0f7e4"}, + {file = "Cython-3.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:651a15a8534ebfb9b58cb0b87c269c70984b6f9c88bfe65e4f635f0e3f07dfcd"}, + {file = "Cython-3.0.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d10fc9aa82e5e53a0b7fd118f9771199cddac8feb4a6d8350b7d4109085aa775"}, + {file = "Cython-3.0.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f610964ab252a83e573a427e28b103e2f1dd3c23bee54f32319f9e73c3c5499"}, + {file = "Cython-3.0.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8c9c4c4f3ab8f8c02817b0e16e8fa7b8cc880f76e9b63fe9c010e60c1a6c2b13"}, + {file = "Cython-3.0.10-cp39-cp39-win32.whl", hash = "sha256:0bac3ccdd4e03924028220c62ae3529e17efa8ca7e9df9330de95de02f582b26"}, + {file = "Cython-3.0.10-cp39-cp39-win_amd64.whl", hash = "sha256:81f356c1c8c0885b8435bfc468025f545c5d764aa9c75ab662616dd1193c331e"}, + {file = "Cython-3.0.10-py2.py3-none-any.whl", hash = "sha256:fcbb679c0b43514d591577fd0d20021c55c240ca9ccafbdb82d3fb95e5edfee2"}, + {file = "Cython-3.0.10.tar.gz", hash = "sha256:dcc96739331fb854dcf503f94607576cfe8488066c61ca50dfd55836f132de99"}, ] [[package]] @@ -1045,18 +1045,18 @@ files = [ [[package]] name = "filelock" -version = "3.13.1" +version = "3.13.3" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, - {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, + {file = "filelock-3.13.3-py3-none-any.whl", hash = "sha256:5ffa845303983e7a0b7ae17636509bc97997d58afeafa72fb141a17b152284cb"}, + {file = "filelock-3.13.3.tar.gz", hash = "sha256:a79895a25bbefdf55d1a2a0a80968f7dbb28edcd6d4234a0afb3f37ecde4b546"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] typing = ["typing-extensions (>=4.8)"] [[package]] @@ -1119,13 +1119,13 @@ files = [ [[package]] name = "flatbuffers" -version = "24.3.7" +version = "24.3.25" description = "The FlatBuffers serialization format for Python" optional = false python-versions = "*" files = [ - {file = "flatbuffers-24.3.7-py2.py3-none-any.whl", hash = "sha256:80c4f5dcad0ee76b7e349671a0d657f2fbba927a0244f88dd3f5ed6a3694e1fc"}, - {file = "flatbuffers-24.3.7.tar.gz", hash = "sha256:0895c22b9a6019ff2f4de2e5e2f7cd15914043e6e7033a94c0c6369422690f22"}, + {file = "flatbuffers-24.3.25-py2.py3-none-any.whl", hash = "sha256:8dbdec58f935f3765e4f7f3cf635ac3a77f83568138d6a2311f524ec96364812"}, + {file = "flatbuffers-24.3.25.tar.gz", hash = "sha256:de2ec5b203f21441716617f38443e0a8ebf3d25bf0d9c0bb0ce68fa00ad546a4"}, ] [[package]] @@ -1931,96 +1931,132 @@ test = ["pytest"] [[package]] name = "lxml" -version = "5.1.0" +version = "5.2.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false python-versions = ">=3.6" files = [ - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"}, - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"}, - {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a"}, - {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05"}, - {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"}, - {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"}, - {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45"}, - {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2"}, - {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"}, - {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"}, - {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1"}, - {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3"}, - {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8"}, - {file = "lxml-5.1.0-cp312-cp312-win32.whl", hash = "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01"}, - {file = "lxml-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623"}, - {file = "lxml-5.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95"}, - {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7"}, - {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67"}, - {file = "lxml-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd"}, - {file = "lxml-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7"}, - {file = "lxml-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862"}, - {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6"}, - {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"}, - {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"}, - {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"}, - {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1"}, - {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"}, - {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"}, - {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d"}, - {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14"}, - {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890"}, - {file = "lxml-5.1.0-cp39-cp39-win32.whl", hash = "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e"}, - {file = "lxml-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f"}, - {file = "lxml-5.1.0.tar.gz", hash = "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca"}, + {file = "lxml-5.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c54f8d6160080831a76780d850302fdeb0e8d0806f661777b0714dfb55d9a08a"}, + {file = "lxml-5.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e95ae029396382a0d2e8174e4077f96befcd4a2184678db363ddc074eb4d3b2"}, + {file = "lxml-5.2.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5810fa80e64a0c689262a71af999c5735f48c0da0affcbc9041d1ef5ef3920be"}, + {file = "lxml-5.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae69524fd6a68b288574013f8fadac23cacf089c75cd3fc5b216277a445eb736"}, + {file = "lxml-5.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fadda215e32fe375d65e560b7f7e2a37c7f9c4ecee5315bb1225ca6ac9bf5838"}, + {file = "lxml-5.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:f1f164e4cc6bc646b1fc86664c3543bf4a941d45235797279b120dc740ee7af5"}, + {file = "lxml-5.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3603a8a41097daf7672cae22cc4a860ab9ea5597f1c5371cb21beca3398b8d6a"}, + {file = "lxml-5.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3b4bb89a785f4fd60e05f3c3a526c07d0d68e3536f17f169ca13bf5b5dd75a5"}, + {file = "lxml-5.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1effc10bf782f0696e76ecfeba0720ea02c0c31d5bffb7b29ba10debd57d1c3d"}, + {file = "lxml-5.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b03531f6cd6ce4b511dcece060ca20aa5412f8db449274b44f4003f282e6272f"}, + {file = "lxml-5.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fac15090bb966719df06f0c4f8139783746d1e60e71016d8a65db2031ca41b8"}, + {file = "lxml-5.2.0-cp310-cp310-win32.whl", hash = "sha256:92bb37c96215c4b2eb26f3c791c0bf02c64dd251effa532b43ca5049000c4478"}, + {file = "lxml-5.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:b0181c22fdb89cc19e70240a850e5480817c3e815b1eceb171b3d7a3aa3e596a"}, + {file = "lxml-5.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ada8ce9e6e1d126ef60d215baaa0c81381ba5841c25f1d00a71cdafdc038bd27"}, + {file = "lxml-5.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3cefb133c859f06dab2ae63885d9f405000c4031ec516e0ed4f9d779f690d8e3"}, + {file = "lxml-5.2.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ede2a7a86a977b0c741654efaeca0af7860a9b1ae39f9268f0936246a977ee0"}, + {file = "lxml-5.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d46df6f0b1a0cda39d12c5c4615a7d92f40342deb8001c7b434d7c8c78352e58"}, + {file = "lxml-5.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2259243ee734cc736e237719037efb86603c891fd363cc7973a2d0ac8a0e3f"}, + {file = "lxml-5.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c53164f29ed3c3868787144e8ea8a399ffd7d8215f59500a20173593c19e96eb"}, + {file = "lxml-5.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:371aab9a397dcc76625ad3b02fa9b21be63406d69237b773156e7d1fc2ce0cae"}, + {file = "lxml-5.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e08784288a179b59115b5e57abf6d387528b39abb61105fe17510a199a277a40"}, + {file = "lxml-5.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4c232726f7b6df5143415a06323faaa998ef8abbe1c0ed00d718755231d76f08"}, + {file = "lxml-5.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e4366e58c0508da4dee4c7c70cee657e38553d73abdffa53abbd7d743711ee11"}, + {file = "lxml-5.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c84dce8fb2e900d4fb094e76fdad34a5fd06de53e41bddc1502c146eb11abd74"}, + {file = "lxml-5.2.0-cp311-cp311-win32.whl", hash = "sha256:0947d1114e337dc2aae2fa14bbc9ed5d9ca1a0acd6d2f948df9926aef65305e9"}, + {file = "lxml-5.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1eace37a9f4a1bef0bb5c849434933fd6213008ec583c8e31ee5b8e99c7c8500"}, + {file = "lxml-5.2.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f2cb157e279d28c66b1c27e0948687dc31dc47d1ab10ce0cd292a8334b7de3d5"}, + {file = "lxml-5.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:53c0e56f41ef68c1ce4e96f27ecdc2df389730391a2fd45439eb3facb02d36c8"}, + {file = "lxml-5.2.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703d60e59ab45c17485c2c14b11880e4f7f0eab07134afa9007573fa5a779a5a"}, + {file = "lxml-5.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaf5e308a5e50bc0548c4fdca0117a31ec9596f8cfc96592db170bcecc71a957"}, + {file = "lxml-5.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af64df85fecd3cf3b2e792f0b5b4d92740905adfa8ce3b24977a55415f1a0c40"}, + {file = "lxml-5.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:df7dfbdef11702fd22c2eaf042d7098d17edbc62d73f2199386ad06cbe466f6d"}, + {file = "lxml-5.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7250030a7835bfd5ba6ca7d1ad483ec90f9cbc29978c5e75c1cc3e031d3c4160"}, + {file = "lxml-5.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:be5faa2d5c8c8294d770cfd09d119fb27b5589acc59635b0cf90f145dbe81dca"}, + {file = "lxml-5.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:347ec08250d5950f5b016caa3e2e13fb2cb9714fe6041d52e3716fb33c208663"}, + {file = "lxml-5.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:dc7b630c4fb428b8a40ddd0bfc4bc19de11bb3c9b031154f77360e48fe8b4451"}, + {file = "lxml-5.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ae550cbd7f229cdf2841d9b01406bcca379a5fb327b9efb53ba620a10452e835"}, + {file = "lxml-5.2.0-cp312-cp312-win32.whl", hash = "sha256:7c61ce3cdd6e6c9f4003ac118be7eb3036d0ce2afdf23929e533e54482780f74"}, + {file = "lxml-5.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:f90c36ca95a44d2636bbf55a51ca30583b59b71b6547b88d954e029598043551"}, + {file = "lxml-5.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1cce2eaad7e38b985b0f91f18468dda0d6b91862d32bec945b0e46e2ffe7222e"}, + {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:60a3983d32f722a8422c01e4dc4badc7a307ca55c59e2485d0e14244a52c482f"}, + {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60847dfbdfddf08a56c4eefe48234e8c1ab756c7eda4a2a7c1042666a5516564"}, + {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbe335f0d1a86391671d975a1b5e9b08bb72fba6b567c43bdc2e55ca6e6c086"}, + {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_28_aarch64.whl", hash = "sha256:3ac7c8a60b8ad51fe7bca99a634dd625d66492c502fd548dc6dc769ce7d94b6a"}, + {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:73e69762cf740ac3ae81137ef9d6f15f93095f50854e233d50b29e7b8a91dbc6"}, + {file = "lxml-5.2.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:281ee1ffeb0ab06204dfcd22a90e9003f0bb2dab04101ad983d0b1773bc10588"}, + {file = "lxml-5.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ba3a86b0d5a5c93104cb899dff291e3ae13729c389725a876d00ef9696de5425"}, + {file = "lxml-5.2.0-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:356f8873b1e27b81793e30144229adf70f6d3e36e5cb7b6d289da690f4398953"}, + {file = "lxml-5.2.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:2a34e74ffe92c413f197ff4967fb1611d938ee0691b762d062ef0f73814f3aa4"}, + {file = "lxml-5.2.0-cp36-cp36m-win32.whl", hash = "sha256:6f0d2b97a5a06c00c963d4542793f3e486b1ed3a957f8c19f6006ed39d104bb0"}, + {file = "lxml-5.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:35e39c6fd089ad6674eb52d93aa874d6027b3ae44d2381cca6e9e4c2e102c9c8"}, + {file = "lxml-5.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5f6e4e5a62114ae76690c4a04c5108d067442d0a41fd092e8abd25af1288c450"}, + {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93eede9bcc842f891b2267c7f0984d811940d1bc18472898a1187fe560907a99"}, + {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ad364026c2cebacd7e01d1138bd53639822fefa8f7da90fc38cd0e6319a2699"}, + {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f06e4460e76468d99cc36d5b9bc6fc5f43e6662af44960e13e3f4e040aacb35"}, + {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:ca3236f31d565555139d5b00b790ed2a98ac6f0c4470c4032f8b5e5a5dba3c1a"}, + {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:a9b67b850ab1d304cb706cf71814b0e0c3875287083d7ec55ee69504a9c48180"}, + {file = "lxml-5.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5261c858c390ae9a19aba96796948b6a2d56649cbd572968970dc8da2b2b2a42"}, + {file = "lxml-5.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e8359fb610c8c444ac473cfd82dae465f405ff807cabb98a9b9712bbd0028751"}, + {file = "lxml-5.2.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:f9e27841cddfaebc4e3ffbe5dbdff42891051acf5befc9f5323944b2c61cef16"}, + {file = "lxml-5.2.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:641a8da145aca67671205f3e89bfec9815138cf2fe06653c909eab42e486d373"}, + {file = "lxml-5.2.0-cp37-cp37m-win32.whl", hash = "sha256:931a3a13e0f574abce8f3152b207938a54304ccf7a6fd7dff1fdb2f6691d08af"}, + {file = "lxml-5.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:246c93e2503c710cf02c7e9869dc0258223cbefe5e8f9ecded0ac0aa07fd2bf8"}, + {file = "lxml-5.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:11acfcdf5a38cf89c48662123a5d02ae0a7d99142c7ee14ad90de5c96a9b6f06"}, + {file = "lxml-5.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:200f70b5d95fc79eb9ed7f8c4888eef4e274b9bf380b829d3d52e9ed962e9231"}, + {file = "lxml-5.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba4d02aed47c25be6775a40d55c5774327fdedba79871b7c2485e80e45750cb2"}, + {file = "lxml-5.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e283b24c14361fe9e04026a1d06c924450415491b83089951d469509900d9f32"}, + {file = "lxml-5.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:03e3962d6ad13a862dacd5b3a3ea60b4d092a550f36465234b8639311fd60989"}, + {file = "lxml-5.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6e45fd5213e5587a610b7e7c8c5319a77591ab21ead42df46bb342e21bc1418d"}, + {file = "lxml-5.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:27877732946843f4b6bfc56eb40d865653eef34ad2edeed16b015d5c29c248df"}, + {file = "lxml-5.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4d16b44ad0dd8c948129639e34c8d301ad87ebc852568ace6fe9a5ad9ce67ee1"}, + {file = "lxml-5.2.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b8f842df9ba26135c5414e93214e04fe0af259bb4f96a32f756f89467f7f3b45"}, + {file = "lxml-5.2.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c74e77df9e36c8c91157853e6cd400f6f9ca7a803ba89981bfe3f3fc7e5651ef"}, + {file = "lxml-5.2.0-cp38-cp38-win32.whl", hash = "sha256:1459a998c10a99711ac532abe5cc24ba354e4396dafef741c7797f8830712d56"}, + {file = "lxml-5.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:a00f5931b7cccea775123c3c0a2513aee58afdad8728550cc970bff32280bdd2"}, + {file = "lxml-5.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ddda5ba8831f258ac7e6364be03cb27aa62f50c67fd94bc1c3b6247959cc0369"}, + {file = "lxml-5.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:56835b9e9a7767202fae06310c6b67478963e535fe185bed3bf9af5b18d2b67e"}, + {file = "lxml-5.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25fef8794f0dc89f01bdd02df6a7fec4bcb2fbbe661d571e898167a83480185e"}, + {file = "lxml-5.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32d44af078485c4da9a7ec460162392d49d996caf89516fa0b75ad0838047122"}, + {file = "lxml-5.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f354d62345acdf22aa3e171bd9723790324a66fafe61bfe3873b86724cf6daaa"}, + {file = "lxml-5.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6a7e0935f05e1cf1a3aa1d49a87505773b04f128660eac2a24a5594ea6b1baa7"}, + {file = "lxml-5.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:75a4117b43694c72a0d89f6c18a28dc57407bde4650927d4ef5fd384bdf6dcc7"}, + {file = "lxml-5.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:57402d6cdd8a897ce21cf8d1ff36683583c17a16322a321184766c89a1980600"}, + {file = "lxml-5.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:56591e477bea531e5e1854f5dfb59309d5708669bc921562a35fd9ca5182bdcd"}, + {file = "lxml-5.2.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7efbce96719aa275d49ad5357886845561328bf07e1d5ab998f4e3066c5ccf15"}, + {file = "lxml-5.2.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a3c39def0965e8fb5c8d50973e0c7b4ce429a2fa730f3f9068a7f4f9ce78410b"}, + {file = "lxml-5.2.0-cp39-cp39-win32.whl", hash = "sha256:5188f22c00381cb44283ecb28c8d85c2db4a3035774dd851876c8647cb809c27"}, + {file = "lxml-5.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:ed1fe80e1fcdd1205a443bddb1ad3c3135bb1cd3f36cc996a1f4aed35960fbe8"}, + {file = "lxml-5.2.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d2b339fb790fc923ae2e9345c8633e3d0064d37ea7920c027f20c8ae6f65a91f"}, + {file = "lxml-5.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06036d60fccb21e22dd167f6d0e422b9cbdf3588a7e999a33799f9cbf01e41a5"}, + {file = "lxml-5.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a1611fb9de0a269c05575c024e6d8cdf2186e3fa52b364e3b03dcad82514d57"}, + {file = "lxml-5.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:05fc3720250d221792b6e0d150afc92d20cb10c9cdaa8c8f93c2a00fbdd16015"}, + {file = "lxml-5.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:11e41ffd3cd27b0ca1c76073b27bd860f96431d9b70f383990f1827ca19f2f52"}, + {file = "lxml-5.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0382e6a3eefa3f6699b14fa77c2eb32af2ada261b75120eaf4fc028a20394975"}, + {file = "lxml-5.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be5c8e776ecbcf8c1bce71a7d90e3a3680c9ceae516cac0be08b47e9fac0ca43"}, + {file = "lxml-5.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da12b4efc93d53068888cb3b58e355b31839f2428b8f13654bd25d68b201c240"}, + {file = "lxml-5.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f46f8033da364bacc74aca5e319509a20bb711c8a133680ca5f35020f9eaf025"}, + {file = "lxml-5.2.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:50a26f68d090594477df8572babac64575cd5c07373f7a8319c527c8e56c0f99"}, + {file = "lxml-5.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:57cbadf028727705086047994d2e50124650e63ce5a035b0aa79ab50f001989f"}, + {file = "lxml-5.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8aa11638902ac23f944f16ce45c9f04c9d5d57bb2da66822abb721f4efe5fdbb"}, + {file = "lxml-5.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b7150e630b879390e02121e71ceb1807f682b88342e2ea2082e2c8716cf8bd93"}, + {file = "lxml-5.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4add722393c99da4d51c8d9f3e1ddf435b30677f2d9ba9aeaa656f23c1b7b580"}, + {file = "lxml-5.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd0f25a431cd16f70ec1c47c10b413e7ddfe1ccaaddd1a7abd181e507c012374"}, + {file = "lxml-5.2.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:883e382695f346c2ea3ad96bdbdf4ca531788fbeedb4352be3a8fcd169fc387d"}, + {file = "lxml-5.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:80cc2b55bb6e35d3cb40936b658837eb131e9f16357241cd9ba106ae1e9c5ecb"}, + {file = "lxml-5.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:59ec2948385336e9901008fdf765780fe30f03e7fdba8090aafdbe5d1b7ea0cd"}, + {file = "lxml-5.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ddbea6e58cce1a640d9d65947f1e259423fc201c9cf9761782f355f53b7f3097"}, + {file = "lxml-5.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52d6cdea438eb7282c41c5ac00bd6d47d14bebb6e8a8d2a1c168ed9e0cacfbab"}, + {file = "lxml-5.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c556bbf88a8b667c849d326dd4dd9c6290ede5a33383ffc12b0ed17777f909d"}, + {file = "lxml-5.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:947fa8bf15d1c62c6db36c6ede9389cac54f59af27010251747f05bddc227745"}, + {file = "lxml-5.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e6cb8f7a332eaa2d876b649a748a445a38522e12f2168e5e838d1505a91cdbb7"}, + {file = "lxml-5.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:16e65223f34fd3d65259b174f0f75a4bb3d9893698e5e7d01e54cd8c5eb98d85"}, + {file = "lxml-5.2.0.tar.gz", hash = "sha256:21dc490cdb33047bc7f7ad76384f3366fa8f5146b86cc04c4af45de901393b90"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=3.0.7)"] +source = ["Cython (>=3.0.10)"] [[package]] name = "markdown-it-py" @@ -2568,40 +2604,46 @@ files = [ [[package]] name = "onnx" -version = "1.15.0" +version = "1.16.0" description = "Open Neural Network Exchange" optional = false python-versions = ">=3.8" files = [ - {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:51cacb6aafba308aaf462252ced562111f6991cdc7bc57a6c554c3519453a8ff"}, - {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:0aee26b6f7f7da7e840de75ad9195a77a147d0662c94eaa6483be13ba468ffc1"}, - {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baf6ef6c93b3b843edb97a8d5b3d229a1301984f3f8dee859c29634d2083e6f9"}, - {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ed899fe6000edc05bb2828863d3841cfddd5a7cf04c1a771f112e94de75d9f"}, - {file = "onnx-1.15.0-cp310-cp310-win32.whl", hash = "sha256:f1ad3d77fc2f4b4296f0ac2c8cadd8c1dcf765fc586b737462d3a0fe8f7c696a"}, - {file = "onnx-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:ca4ebc4f47109bfb12c8c9e83dd99ec5c9f07d2e5f05976356c6ccdce3552010"}, - {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:233ffdb5ca8cc2d960b10965a763910c0830b64b450376da59207f454701f343"}, - {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:51fa79c9ea9af033638ec51f9177b8e76c55fad65bb83ea96ee88fafade18ee7"}, - {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f277d4861729f5253a51fa41ce91bfec1c4574ee41b5637056b43500917295ce"}, - {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8a7c94d2ebead8f739fdb70d1ce5a71726f4e17b3e5b8ad64455ea1b2801a85"}, - {file = "onnx-1.15.0-cp311-cp311-win32.whl", hash = "sha256:17dcfb86a8c6bdc3971443c29b023dd9c90ff1d15d8baecee0747a6b7f74e650"}, - {file = "onnx-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:60a3e28747e305cd2e766e6a53a0a6d952cf9e72005ec6023ce5e07666676a4e"}, - {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6b5c798d9e0907eaf319e3d3e7c89a2ed9a854bcb83da5fefb6d4c12d5e90721"}, - {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:a4f774ff50092fe19bd8f46b2c9b27b1d30fbd700c22abde48a478142d464322"}, - {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2b0e7f3938f2d994c34616bfb8b4b1cebbc4a0398483344fe5e9f2fe95175e6"}, - {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49cebebd0020a4b12c1dd0909d426631212ef28606d7e4d49463d36abe7639ad"}, - {file = "onnx-1.15.0-cp38-cp38-win32.whl", hash = "sha256:1fdf8a3ff75abc2b32c83bf27fb7c18d6b976c9c537263fadd82b9560fe186fa"}, - {file = "onnx-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:763e55c26e8de3a2dce008d55ae81b27fa8fb4acbb01a29b9f3c01f200c4d676"}, - {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b2d5e802837629fc9c86f19448d19dd04d206578328bce202aeb3d4bedab43c4"}, - {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:9a9cfbb5e5d5d88f89d0dfc9df5fb858899db874e1d5ed21e76c481f3cafc90d"}, - {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f472bbe5cb670a0a4a4db08f41fde69b187a009d0cb628f964840d3f83524e9"}, - {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf2de9bef64792e5b8080c678023ac7d2b9e05d79a3e17e92cf6a4a624831d2"}, - {file = "onnx-1.15.0-cp39-cp39-win32.whl", hash = "sha256:ef4d9eb44b111e69e4534f3233fc2c13d1e26920d24ae4359d513bd54694bc6d"}, - {file = "onnx-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:95d7a3e2d79d371e272e39ae3f7547e0b116d0c7f774a4004e97febe6c93507f"}, - {file = "onnx-1.15.0.tar.gz", hash = "sha256:b18461a7d38f286618ca2a6e78062a2a9c634ce498e631e708a8041b00094825"}, + {file = "onnx-1.16.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:9eadbdce25b19d6216f426d6d99b8bc877a65ed92cbef9707751c6669190ba4f"}, + {file = "onnx-1.16.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:034ae21a2aaa2e9c14119a840d2926d213c27aad29e5e3edaa30145a745048e1"}, + {file = "onnx-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec22a43d74eb1f2303373e2fbe7fbcaa45fb225f4eb146edfed1356ada7a9aea"}, + {file = "onnx-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298f28a2b5ac09145fa958513d3d1e6b349ccf86a877dbdcccad57713fe360b3"}, + {file = "onnx-1.16.0-cp310-cp310-win32.whl", hash = "sha256:66300197b52beca08bc6262d43c103289c5d45fde43fb51922ed1eb83658cf0c"}, + {file = "onnx-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:ae0029f5e47bf70a1a62e7f88c80bca4ef39b844a89910039184221775df5e43"}, + {file = "onnx-1.16.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:f51179d4af3372b4f3800c558d204b592c61e4b4a18b8f61e0eea7f46211221a"}, + {file = "onnx-1.16.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:5202559070afec5144332db216c20f2fff8323cf7f6512b0ca11b215eacc5bf3"}, + {file = "onnx-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77579e7c15b4df39d29465b216639a5f9b74026bdd9e4b6306cd19a32dcfe67c"}, + {file = "onnx-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e60ca76ac24b65c25860d0f2d2cdd96d6320d062a01dd8ce87c5743603789b8"}, + {file = "onnx-1.16.0-cp311-cp311-win32.whl", hash = "sha256:81b4ee01bc554e8a2b11ac6439882508a5377a1c6b452acd69a1eebb83571117"}, + {file = "onnx-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:7449241e70b847b9c3eb8dae622df8c1b456d11032a9d7e26e0ee8a698d5bf86"}, + {file = "onnx-1.16.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:03a627488b1a9975d95d6a55582af3e14c7f3bb87444725b999935ddd271d352"}, + {file = "onnx-1.16.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:c392faeabd9283ee344ccb4b067d1fea9dfc614fa1f0de7c47589efd79e15e78"}, + {file = "onnx-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0efeb46985de08f0efe758cb54ad3457e821a05c2eaf5ba2ccb8cd1602c08084"}, + {file = "onnx-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddf14a3d32234f23e44abb73a755cb96a423fac7f004e8f046f36b10214151ee"}, + {file = "onnx-1.16.0-cp312-cp312-win32.whl", hash = "sha256:62a2e27ae8ba5fc9b4a2620301446a517b5ffaaf8566611de7a7c2160f5bcf4c"}, + {file = "onnx-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:3e0860fea94efde777e81a6f68f65761ed5e5f3adea2e050d7fbe373a9ae05b3"}, + {file = "onnx-1.16.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:70a90649318f3470985439ea078277c9fb2a2e6e2fd7c8f3f2b279402ad6c7e6"}, + {file = "onnx-1.16.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:71839546b7f93be4fa807995b182ab4b4414c9dbf049fee11eaaced16fcf8df2"}, + {file = "onnx-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7665217c45a61eb44718c8e9349d2ad004efa0cb9fbc4be5c6d5e18b9fe12b52"}, + {file = "onnx-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5752bbbd5717304a7643643dba383a2fb31e8eb0682f4e7b7d141206328a73b"}, + {file = "onnx-1.16.0-cp38-cp38-win32.whl", hash = "sha256:257858cbcb2055284f09fa2ae2b1cfd64f5850367da388d6e7e7b05920a40c90"}, + {file = "onnx-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:209fe84995a28038e29ae8369edd35f33e0ef1ebc3bddbf6584629823469deb1"}, + {file = "onnx-1.16.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:8cf3e518b1b1b960be542e7c62bed4e5219e04c85d540817b7027029537dec92"}, + {file = "onnx-1.16.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:30f02beaf081c7d9fa3a8c566a912fc4408e28fc33b1452d58f890851691d364"}, + {file = "onnx-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb29a9a692b522deef1f6b8f2145da62c0c43ea1ed5b4c0f66f827fdc28847d"}, + {file = "onnx-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7755cbd5f4e47952e37276ea5978a46fc8346684392315902b5ed4a719d87d06"}, + {file = "onnx-1.16.0-cp39-cp39-win32.whl", hash = "sha256:7532343dc5b8b5e7c3e3efa441a3100552f7600155c4db9120acd7574f64ffbf"}, + {file = "onnx-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:d7886c05aa6d583ec42f6287678923c1e343afc4350e49d5b36a0023772ffa22"}, + {file = "onnx-1.16.0.tar.gz", hash = "sha256:237c6987c6c59d9f44b6136f5819af79574f8d96a760a1fa843bede11f3822f7"}, ] [package.dependencies] -numpy = "*" +numpy = ">=1.20" protobuf = ">=3.20.2" [package.extras] @@ -2928,79 +2970,80 @@ dev = ["jinja2"] [[package]] name = "pillow" -version = "10.2.0" +version = "10.3.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, - {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, - {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, - {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, - {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, - {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, - {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, - {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, - {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, - {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, - {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, - {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, - {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, - {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, - {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, - {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, - {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, - {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, + {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, + {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, + {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, + {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, + {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, ] [package.extras] @@ -3115,22 +3158,22 @@ files = [ [[package]] name = "protobuf" -version = "5.26.0" +version = "5.26.1" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.26.0-cp310-abi3-win32.whl", hash = "sha256:f9ecc8eb6f18037e0cbf43256db0325d4723f429bca7ef5cd358b7c29d65f628"}, - {file = "protobuf-5.26.0-cp310-abi3-win_amd64.whl", hash = "sha256:dfd29f6eb34107dccf289a93d44fb6b131e68888d090b784b691775ac84e8213"}, - {file = "protobuf-5.26.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:7e47c57303466c867374a17b2b5e99c5a7c8b72a94118e2f28efb599f19b4069"}, - {file = "protobuf-5.26.0-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e184175276edc222e2d5e314a72521e10049938a9a4961fe4bea9b25d073c03f"}, - {file = "protobuf-5.26.0-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:6ee9d1aa02f951c5ce10bf8c6cfb7604133773038e33f913183c8b5201350600"}, - {file = "protobuf-5.26.0-cp38-cp38-win32.whl", hash = "sha256:2c334550e1cb4efac5c8a3987384bf13a4334abaf5ab59e40479e7b70ecd6b19"}, - {file = "protobuf-5.26.0-cp38-cp38-win_amd64.whl", hash = "sha256:8eef61a90631c21b06b4f492a27e199a269827f046de3bb68b61aa84fcf50905"}, - {file = "protobuf-5.26.0-cp39-cp39-win32.whl", hash = "sha256:ca825f4eecb8c342d2ec581e6a5ad1ad1a47bededaecd768e0d3451ae4aaac2b"}, - {file = "protobuf-5.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:efd4f5894c50bd76cbcfdd668cd941021333861ed0f441c78a83d8254a01cc9f"}, - {file = "protobuf-5.26.0-py3-none-any.whl", hash = "sha256:a49b6c5359bf34fb7bf965bf21abfab4476e4527d822ab5289ee3bf73f291159"}, - {file = "protobuf-5.26.0.tar.gz", hash = "sha256:82f5870d74c99addfe4152777bdf8168244b9cf0ac65f8eccf045ddfa9d80d9b"}, + {file = "protobuf-5.26.1-cp310-abi3-win32.whl", hash = "sha256:3c388ea6ddfe735f8cf69e3f7dc7611e73107b60bdfcf5d0f024c3ccd3794e23"}, + {file = "protobuf-5.26.1-cp310-abi3-win_amd64.whl", hash = "sha256:e6039957449cb918f331d32ffafa8eb9255769c96aa0560d9a5bf0b4e00a2a33"}, + {file = "protobuf-5.26.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:38aa5f535721d5bb99861166c445c4105c4e285c765fbb2ac10f116e32dcd46d"}, + {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fbfe61e7ee8c1860855696e3ac6cfd1b01af5498facc6834fcc345c9684fb2ca"}, + {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f7417703f841167e5a27d48be13389d52ad705ec09eade63dfc3180a959215d7"}, + {file = "protobuf-5.26.1-cp38-cp38-win32.whl", hash = "sha256:d693d2504ca96750d92d9de8a103102dd648fda04540495535f0fec7577ed8fc"}, + {file = "protobuf-5.26.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b557c317ebe6836835ec4ef74ec3e994ad0894ea424314ad3552bc6e8835b4e"}, + {file = "protobuf-5.26.1-cp39-cp39-win32.whl", hash = "sha256:b9ba3ca83c2e31219ffbeb9d76b63aad35a3eb1544170c55336993d7a18ae72c"}, + {file = "protobuf-5.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ee014c2c87582e101d6b54260af03b6596728505c79f17c8586e7523aaa8f8c"}, + {file = "protobuf-5.26.1-py3-none-any.whl", hash = "sha256:da612f2720c0183417194eeaa2523215c4fcc1a1949772dc65f05047e08d5932"}, + {file = "protobuf-5.26.1.tar.gz", hash = "sha256:8ca2a1d97c290ec7b16e4e5dff2e5ae150cc1582f55b5ab300d45cb0dfa90e51"}, ] [[package]] @@ -3246,13 +3289,13 @@ files = [ [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] @@ -7047,13 +7090,13 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "1.43.0" +version = "1.44.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.43.0.tar.gz", hash = "sha256:41df73af89d22921d8733714fb0fc5586c3461907e06688e6537d01a27e0e0f6"}, - {file = "sentry_sdk-1.43.0-py2.py3-none-any.whl", hash = "sha256:8d768724839ca18d7b4c7463ef7528c40b7aa2bfbf7fe554d5f9a7c044acfd36"}, + {file = "sentry-sdk-1.44.0.tar.gz", hash = "sha256:f7125a9235795811962d52ff796dc032cd1d0dd98b59beaced8380371cd9c13c"}, + {file = "sentry_sdk-1.44.0-py2.py3-none-any.whl", hash = "sha256:eb65289da013ca92fad2694851ad2f086aa3825e808dc285bd7dcaf63602bb18"}, ] [package.dependencies] From 3e99cf4b5e6b74e8671db12935156b09a259b964 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 1 Apr 2024 11:43:45 -0700 Subject: [PATCH 351/599] [bot] Fingerprints: add missing FW versions from new users (#32072) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 1386089a18..29a0cb093b 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -131,6 +131,7 @@ FW_VERSIONS = { b'68460393AA', b'68460393AB', b'68494461AB', + b'68494461AC', b'68524936AA', b'68524936AB', b'68525338AB', @@ -146,6 +147,7 @@ FW_VERSIONS = { b'68443120AE ', b'68443123AC ', b'68443125AC ', + b'68496647AJ ', b'68496650AI ', b'68526752AD ', b'68526752AE ', @@ -162,6 +164,7 @@ FW_VERSIONS = { b'68443155AC', b'68443158AB', b'68501050AD', + b'68501055AD', b'68527221AB', b'68527223AB', b'68586231AD', From 3080aefa3d8395d4842749f629cab92db2e65f56 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 1 Apr 2024 18:24:23 -0400 Subject: [PATCH 352/599] plotjuggler docs remove old options (#32078) * these are no longer options * and this one * qlogs * space --- tools/plotjuggler/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/plotjuggler/README.md b/tools/plotjuggler/README.md index ca9946145d..dcf2bbbac7 100644 --- a/tools/plotjuggler/README.md +++ b/tools/plotjuggler/README.md @@ -12,7 +12,7 @@ Once you've [set up the openpilot environment](../README.md), this command will ``` $ ./juggle.py -h -usage: juggle.py [-h] [--demo] [--qlog] [--ci] [--can] [--stream] [--layout [LAYOUT]] [--install] [--dbc DBC] +usage: juggle.py [-h] [--demo] [--can] [--stream] [--layout [LAYOUT]] [--install] [--dbc DBC] [route_or_segment_name] [segment_count] A helper to run PlotJuggler on openpilot routes @@ -25,8 +25,6 @@ positional arguments: optional arguments: -h, --help show this help message and exit --demo Use the demo route instead of providing one (default: False) - --qlog Use qlogs (default: False) - --ci Download data from openpilot CI bucket (default: False) --can Parse CAN data (default: False) --stream Start PlotJuggler in streaming mode (default: False) --layout [LAYOUT] Run PlotJuggler with a pre-defined layout (default: None) @@ -38,11 +36,13 @@ optional arguments: Examples using route name: -`./juggle.py "a2a0ccea32023010|2023-07-27--13-01-19"` +`./juggle.py "a2a0ccea32023010/2023-07-27--13-01-19"` -Examples using segment name: +Examples using segment range: -`./juggle.py "a2a0ccea32023010|2023-07-27--13-01-19--1"` +`./juggle.py "a2a0ccea32023010/2023-07-27--13-01-19/1"` + +`./juggle.py "a2a0ccea32023010/2023-07-27--13-01-19/1/q" # use qlogs` ## Streaming From dbea6ba7bf2143d7d6cfc7e0be6eb71f8e7b9faa Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 1 Apr 2024 15:25:27 -0700 Subject: [PATCH 353/599] Lexus RC: add missing fwdCamera FW (#32076) add 1e4e217ac337b4bf --- selfdrive/car/toyota/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index b55316f2e9..b8218f2665 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -1420,6 +1420,7 @@ FW_VERSIONS = { ], (Ecu.fwdCamera, 0x750, 0x6d): [ b'\x028646F1105200\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', + b'\x028646F1104200\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, CAR.LEXUS_RC: { From 1c0161589b5fa183d7fc87a30692c92865d61065 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 1 Apr 2024 18:27:29 -0400 Subject: [PATCH 354/599] migrate lowercase mock (#32074) * add mock migration * fix * this --- selfdrive/car/fingerprints.py | 3 +++ tools/cabana/dbc/generate_dbc_json.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index 877957aa2f..978d2260d6 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -6,6 +6,7 @@ from openpilot.selfdrive.car.gm.values import CAR as GM from openpilot.selfdrive.car.honda.values import CAR as HONDA from openpilot.selfdrive.car.hyundai.values import CAR as HYUNDAI from openpilot.selfdrive.car.mazda.values import CAR as MAZDA +from openpilot.selfdrive.car.mock.values import CAR as MOCK from openpilot.selfdrive.car.nissan.values import CAR as NISSAN from openpilot.selfdrive.car.subaru.values import CAR as SUBARU from openpilot.selfdrive.car.tesla.values import CAR as TESLA @@ -338,4 +339,6 @@ MIGRATION = { "SKODA OCTAVIA 3RD GEN": VW.SKODA_OCTAVIA_MK3, "SKODA SCALA 1ST GEN": VW.SKODA_SCALA_MK1, "SKODA SUPERB 3RD GEN": VW.SKODA_SUPERB_MK3, + + "mock": MOCK.MOCK, } diff --git a/tools/cabana/dbc/generate_dbc_json.py b/tools/cabana/dbc/generate_dbc_json.py index dfb96bad7a..2d3fbe9fc4 100755 --- a/tools/cabana/dbc/generate_dbc_json.py +++ b/tools/cabana/dbc/generate_dbc_json.py @@ -10,7 +10,8 @@ def generate_dbc_json() -> str: dbc_map = {platform.name: platform.config.dbc_dict['pt'] for platform in PLATFORMS.values() if platform != "MOCK"} for m in MIGRATION: - dbc_map[m] = dbc_map[MIGRATION[m]] + if MIGRATION[m] in dbc_map: + dbc_map[m] = dbc_map[MIGRATION[m]] return json.dumps(dict(sorted(dbc_map.items())), indent=2) From c09cf4983bd5e4b83ce58ac033661e6e79a88770 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 1 Apr 2024 20:43:22 -0400 Subject: [PATCH 355/599] pytest: don't delete logs on-device (#32080) fix log deletion --- common/prefix.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/prefix.py b/common/prefix.py index 4059ac09e2..3292acae86 100644 --- a/common/prefix.py +++ b/common/prefix.py @@ -4,6 +4,7 @@ import uuid from openpilot.common.params import Params +from openpilot.system.hardware import PC from openpilot.system.hardware.hw import Paths from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT @@ -45,7 +46,8 @@ class OpenpilotPrefix: shutil.rmtree(os.path.realpath(symlink_path), ignore_errors=True) os.remove(symlink_path) shutil.rmtree(self.msgq_path, ignore_errors=True) - shutil.rmtree(Paths.log_root(), ignore_errors=True) + if PC: + shutil.rmtree(Paths.log_root(), ignore_errors=True) if not os.environ.get("COMMA_CACHE", False): shutil.rmtree(Paths.download_cache_root(), ignore_errors=True) shutil.rmtree(Paths.comma_home(), ignore_errors=True) From 56e716bf86478857e2bf5e58e9faea0f1c2f95a4 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 1 Apr 2024 19:08:27 -0700 Subject: [PATCH 356/599] fw_versions: add OBD multiplexing to debugging view --- selfdrive/car/fw_versions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/fw_versions.py b/selfdrive/car/fw_versions.py index c200528ca6..819f770eb5 100755 --- a/selfdrive/car/fw_versions.py +++ b/selfdrive/car/fw_versions.py @@ -388,7 +388,7 @@ if __name__ == "__main__": padding = max([len(fw.brand) for fw in fw_vers] or [0]) for version in fw_vers: subaddr = None if version.subAddress == 0 else hex(version.subAddress) - print(f" Brand: {version.brand:{padding}}, bus: {version.bus} - (Ecu.{version.ecu}, {hex(version.address)}, {subaddr}): [{version.fwVersion}]") + print(f" Brand: {version.brand:{padding}}, bus: {version.bus}, OBD: {version.obdMultiplexing} - (Ecu.{version.ecu}, {hex(version.address)}, {subaddr}): [{version.fwVersion}]") print("}") print() From fa5527fc76e9d1f48ea67fba71fcc084ee259865 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 1 Apr 2024 19:09:37 -0700 Subject: [PATCH 357/599] Volkswagen: fix PT bus query (#32081) we need whitelists! --- selfdrive/car/volkswagen/values.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 86b0dbd7aa..a88487f7c4 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -371,7 +371,7 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [VOLKSWAGEN_VERSION_REQUEST_MULTI], [VOLKSWAGEN_VERSION_RESPONSE], - # whitelist_ecus=[Ecu.srs, Ecu.eps, Ecu.fwdRadar], + whitelist_ecus=[Ecu.srs, Ecu.eps, Ecu.fwdRadar, Ecu.fwdCamera], rx_offset=VOLKSWAGEN_RX_OFFSET, bus=bus, logging=(bus != 1 or not obd_multiplexing), @@ -380,7 +380,7 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [VOLKSWAGEN_VERSION_REQUEST_MULTI], [VOLKSWAGEN_VERSION_RESPONSE], - # whitelist_ecus=[Ecu.engine, Ecu.transmission], + whitelist_ecus=[Ecu.engine, Ecu.transmission], bus=bus, logging=(bus != 1 or not obd_multiplexing), obd_multiplexing=obd_multiplexing, From 72eb17012db150fa6aa3b7f6189d569cfc3d94e1 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 1 Apr 2024 20:08:22 -0700 Subject: [PATCH 358/599] fix static analysis (#32082) fix ltl --- selfdrive/car/fw_versions.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/fw_versions.py b/selfdrive/car/fw_versions.py index 819f770eb5..386bbee3ac 100755 --- a/selfdrive/car/fw_versions.py +++ b/selfdrive/car/fw_versions.py @@ -388,7 +388,8 @@ if __name__ == "__main__": padding = max([len(fw.brand) for fw in fw_vers] or [0]) for version in fw_vers: subaddr = None if version.subAddress == 0 else hex(version.subAddress) - print(f" Brand: {version.brand:{padding}}, bus: {version.bus}, OBD: {version.obdMultiplexing} - (Ecu.{version.ecu}, {hex(version.address)}, {subaddr}): [{version.fwVersion}]") + print(f" Brand: {version.brand:{padding}}, bus: {version.bus}, OBD: {version.obdMultiplexing} - " + + f"(Ecu.{version.ecu}, {hex(version.address)}, {subaddr}): [{version.fwVersion}]") print("}") print() From 44129ad0df5c31c03d78fe591183e9db50c8e6b3 Mon Sep 17 00:00:00 2001 From: Michel Le Bihan Date: Tue, 2 Apr 2024 19:28:19 +0200 Subject: [PATCH 359/599] simulator: Change car to Honda Civic 2022 (#32087) * simulator: Change car to Honda Civic 2022 * simulator: Enable experimental longitudinal control --- tools/sim/bridge/common.py | 1 + tools/sim/launch_openpilot.sh | 2 +- tools/sim/lib/simulated_car.py | 24 +++++++----------------- 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/tools/sim/bridge/common.py b/tools/sim/bridge/common.py index 34d11bb98c..3bd2f35772 100644 --- a/tools/sim/bridge/common.py +++ b/tools/sim/bridge/common.py @@ -28,6 +28,7 @@ class SimulatorBridge(ABC): def __init__(self, dual_camera, high_quality): set_params_enabled() self.params = Params() + self.params.put_bool("ExperimentalLongitudinalEnabled", True) self.rk = Ratekeeper(100, None) diff --git a/tools/sim/launch_openpilot.sh b/tools/sim/launch_openpilot.sh index a2d7841e7b..86d9607bb0 100755 --- a/tools/sim/launch_openpilot.sh +++ b/tools/sim/launch_openpilot.sh @@ -4,7 +4,7 @@ export PASSIVE="0" export NOBOARD="1" export SIMULATION="1" export SKIP_FW_QUERY="1" -export FINGERPRINT="HONDA_CIVIC" +export FINGERPRINT="HONDA_CIVIC_2022" export BLOCK="${BLOCK},camerad,loggerd,encoderd,micd,logmessaged" if [[ "$CI" ]]; then diff --git a/tools/sim/lib/simulated_car.py b/tools/sim/lib/simulated_car.py index 1d56189728..8c15195dcb 100644 --- a/tools/sim/lib/simulated_car.py +++ b/tools/sim/lib/simulated_car.py @@ -5,12 +5,12 @@ from opendbc.can.parser import CANParser from openpilot.common.params import Params from openpilot.selfdrive.boardd.boardd_api_impl import can_list_to_can_capnp from openpilot.tools.sim.lib.common import SimulatorState +from panda.python import Panda class SimulatedCar: - """Simulates a honda civic 2016 (panda state + can messages) to OpenPilot""" - packer = CANPacker("honda_civic_touring_2016_can_generated") - rpacker = CANPacker("acura_ilx_2016_nidec") + """Simulates a honda civic 2022 (panda state + can messages) to OpenPilot""" + packer = CANPacker("honda_civic_ex_2022_can_generated") def __init__(self): self.pm = messaging.PubMaster(['can', 'pandaStates']) @@ -22,11 +22,8 @@ class SimulatedCar: @staticmethod def get_car_can_parser(): - dbc_f = 'honda_civic_touring_2016_can_generated' + dbc_f = 'honda_civic_ex_2022_can_generated' checks = [ - (0xe4, 100), - (0x1fa, 50), - (0x200, 50), ] return CANParser(dbc_f, checks, 0) @@ -61,6 +58,7 @@ class SimulatedCar: msg.append(self.packer.make_can_msg("DOORS_STATUS", 0, {})) msg.append(self.packer.make_can_msg("CRUISE_PARAMS", 0, {})) msg.append(self.packer.make_can_msg("CRUISE", 0, {})) + msg.append(self.packer.make_can_msg("CRUISE_FAULT_STATUS", 0, {})) msg.append(self.packer.make_can_msg("SCM_FEEDBACK", 0, { "MAIN_ON": 1, @@ -73,20 +71,12 @@ class SimulatedCar: "PEDAL_GAS": simulator_state.user_gas, "BRAKE_PRESSED": simulator_state.user_brake > 0 })) - msg.append(self.packer.make_can_msg("HUD_SETTING", 0, {})) msg.append(self.packer.make_can_msg("CAR_SPEED", 0, {})) # *** cam bus *** msg.append(self.packer.make_can_msg("STEERING_CONTROL", 2, {})) msg.append(self.packer.make_can_msg("ACC_HUD", 2, {})) msg.append(self.packer.make_can_msg("LKAS_HUD", 2, {})) - msg.append(self.packer.make_can_msg("BRAKE_COMMAND", 2, {})) - - # *** radar bus *** - if self.idx % 5 == 0: - msg.append(self.rpacker.make_can_msg("RADAR_DIAGNOSTIC", 1, {"RADAR_STATE": 0x79})) - for i in range(16): - msg.append(self.rpacker.make_can_msg("TRACK_%d" % i, 1, {"LONG_DIST": 255.5})) self.pm.send('can', can_list_to_can_capnp(msg)) @@ -103,9 +93,9 @@ class SimulatedCar: 'ignitionLine': simulator_state.ignition, 'pandaType': "blackPanda", 'controlsAllowed': True, - 'safetyModel': 'hondaNidec', + 'safetyModel': 'hondaBosch', 'alternativeExperience': self.sm["carParams"].alternativeExperience, - 'safetyParam': 0, + 'safetyParam': Panda.FLAG_HONDA_RADARLESS | Panda.FLAG_HONDA_BOSCH_LONG, } self.pm.send('pandaStates', dat) From 67ba1154363c8e4f841836afaa20d57319fe3095 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 2 Apr 2024 15:25:58 -0700 Subject: [PATCH 360/599] [bot] Fingerprints: add missing FW versions from new users (#32086) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 5 +++++ selfdrive/car/toyota/fingerprints.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 29a0cb093b..9809fb47f1 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -396,6 +396,7 @@ FW_VERSIONS = { b'68453491AC', b'68453499AD', b'68453503AC', + b'68453503AD', b'68453505AC', b'68453505AD', b'68453511AC', @@ -422,6 +423,7 @@ FW_VERSIONS = { b'68631938AA', b'68631940AA', b'68631942AA', + b'68631943AB', ], (Ecu.srs, 0x744, None): [ b'68428609AB', @@ -496,6 +498,7 @@ FW_VERSIONS = { b'05036026AB ', b'05036065AE ', b'05036066AE ', + b'05036193AA ', b'05149368AA ', b'05149591AD ', b'05149591AE ', @@ -536,6 +539,7 @@ FW_VERSIONS = { b'68502740AF ', b'68502741AF ', b'68502742AC ', + b'68502742AF ', b'68539650AD', b'68539650AF', b'68539651AD', @@ -549,6 +553,7 @@ FW_VERSIONS = { b'05035706AD', b'05035842AB', b'05036069AA', + b'05036181AA', b'05149536AC', b'05149537AC', b'05149543AC', diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index b8218f2665..d91124e257 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -1419,8 +1419,8 @@ FW_VERSIONS = { b'\x018821F6201400\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x750, 0x6d): [ - b'\x028646F1105200\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', b'\x028646F1104200\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', + b'\x028646F1105200\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, CAR.LEXUS_RC: { From 346ab5ce303bb5e7158154e98a2816e190802c87 Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Tue, 2 Apr 2024 20:09:04 -0300 Subject: [PATCH 361/599] Mutilang: update pt-BR translation (#32090) * update pt-BR translation * not today Satan --- selfdrive/ui/translations/main_pt-BR.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index e5a0c23f40..7bc324f29c 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -492,23 +492,23 @@ OnroadAlerts openpilot Unavailable - + openpilot Indisponível Waiting for controls to start - + Aguardando controles para iniciar TAKE CONTROL IMMEDIATELY - + ASSUMA IMEDIATAMENTE Controls Unresponsive - + Controles Não Respondem Reboot Device - + Reinicie o Dispositivo
From 3f81ea2e0ebccadfe3f6499dc8f9904784f19018 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 3 Apr 2024 08:05:51 -0700 Subject: [PATCH 362/599] [bot] Fingerprints: add missing FW versions from new users (#32095) Export fingerprints --- selfdrive/car/mazda/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/mazda/fingerprints.py b/selfdrive/car/mazda/fingerprints.py index 75d6884e73..f460fe9950 100644 --- a/selfdrive/car/mazda/fingerprints.py +++ b/selfdrive/car/mazda/fingerprints.py @@ -254,6 +254,7 @@ FW_VERSIONS = { b'GSH7-67XK2-P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'GSH7-67XK2-S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'GSH7-67XK2-T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'GSH7-67XK2-U\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.transmission, 0x7e1, None): [ b'PXM4-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', From d09e77d1aff2a9df096fb519345337379379d9cf Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Thu, 4 Apr 2024 03:19:55 +0100 Subject: [PATCH 363/599] cabana(DBCFile): handle escaped quotes (#31889) * cabana(DBCFile): VAL_ allow empty description Even though this doesn't make much sense, we should still be able to parse it. * cabana(DBCFile): allow escaped quotemarks in signal comment * also message comments * escape/unescape quotes * test empty val desc * test generating DBC with escaped quotes in comment * seperate test case * fix trailing space * remove empty val * trailing whitespace again --- tools/cabana/dbc/dbcfile.cc | 12 ++++++------ tools/cabana/tests/test_cabana.cc | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/tools/cabana/dbc/dbcfile.cc b/tools/cabana/dbc/dbcfile.cc index e7f7fdc6ef..bf246fd342 100644 --- a/tools/cabana/dbc/dbcfile.cc +++ b/tools/cabana/dbc/dbcfile.cc @@ -80,8 +80,8 @@ void DBCFile::parse(const QString &content) { static QRegularExpression bo_regexp(R"(^BO_ (\w+) (\w+) *: (\w+) (\w+))"); static QRegularExpression sg_regexp(R"(^SG_ (\w+) : (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); static QRegularExpression sgm_regexp(R"(^SG_ (\w+) (\w+) *: (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); - static QRegularExpression msg_comment_regexp(R"(^CM_ BO_ *(\w+) *\"([^"]*)\"\s*;)"); - static QRegularExpression sg_comment_regexp(R"(^CM_ SG_ *(\w+) *(\w+) *\"([^"]*)\"\s*;)"); + static QRegularExpression msg_comment_regexp(R"(^CM_ BO_ *(\w+) *\"((?:[^"\\]|\\.)*)\"\s*;)"); + static QRegularExpression sg_comment_regexp(R"(^CM_ SG_ *(\w+) *(\w+) *\"((?:[^"\\]|\\.)*)\"\s*;)"); static QRegularExpression val_regexp(R"(VAL_ (\w+) (\w+) (\s*[-+]?[0-9]+\s+\".+?\"[^;]*))"); int line_num = 0; @@ -173,7 +173,7 @@ void DBCFile::parse(const QString &content) { auto match = msg_comment_regexp.match(line); dbc_assert(match.hasMatch()); if (auto m = (cabana::Msg *)msg(match.captured(1).toUInt())) { - m->comment = match.captured(2).trimmed(); + m->comment = match.captured(2).trimmed().replace("\\\"", "\""); } } else if (line.startsWith("CM_ SG_ ")) { if (!line.endsWith("\";")) { @@ -183,7 +183,7 @@ void DBCFile::parse(const QString &content) { auto match = sg_comment_regexp.match(line); dbc_assert(match.hasMatch()); if (auto s = get_sig(match.captured(1).toUInt(), match.captured(2))) { - s->comment = match.captured(3).trimmed(); + s->comment = match.captured(3).trimmed().replace("\\\"", "\""); } } else { seen = false; @@ -207,7 +207,7 @@ QString DBCFile::generateDBC() { const QString transmitter = m.transmitter.isEmpty() ? DEFAULT_NODE_NAME : m.transmitter; dbc_string += QString("BO_ %1 %2: %3 %4\n").arg(address).arg(m.name).arg(m.size).arg(transmitter); if (!m.comment.isEmpty()) { - comment += QString("CM_ BO_ %1 \"%2\";\n").arg(address).arg(m.comment); + comment += QString("CM_ BO_ %1 \"%2\";\n").arg(address).arg(QString(m.comment).replace("\"", "\\\"")); } for (auto sig : m.getSignals()) { QString multiplexer_indicator; @@ -230,7 +230,7 @@ QString DBCFile::generateDBC() { .arg(sig->unit) .arg(sig->receiver_name.isEmpty() ? DEFAULT_NODE_NAME : sig->receiver_name); if (!sig->comment.isEmpty()) { - comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(sig->comment); + comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(QString(sig->comment).replace("\"", "\\\"")); } if (!sig->val_desc.empty()) { QStringList text; diff --git a/tools/cabana/tests/test_cabana.cc b/tools/cabana/tests/test_cabana.cc index 98c2de12b6..d9fcae6f21 100644 --- a/tools/cabana/tests/test_cabana.cc +++ b/tools/cabana/tests/test_cabana.cc @@ -65,6 +65,17 @@ CM_ SG_ 160 signal_1 "signal comment"; REQUIRE(dbc.generateDBC() == content); } +TEST_CASE("DBCFile::generateDBC - escaped quotes") { + QString content = R"(BO_ 160 message_1: 8 EON + SG_ signal_1 : 0|12@1+ (1,0) [0|4095] "unit" XXX + +CM_ BO_ 160 "message comment with \"escaped quotes\""; +CM_ SG_ 160 signal_1 "signal comment with \"escaped quotes\""; +)"; + DBCFile dbc("", content); + REQUIRE(dbc.generateDBC() == content); +} + TEST_CASE("parse_dbc") { QString content = R"( BO_ 160 message_1: 8 EON @@ -82,7 +93,11 @@ CM_ SG_ 160 signal_1 "signal comment"; CM_ SG_ 160 signal_2 "multiple line comment 1 2 -";)"; +"; + +CM_ BO_ 162 "message comment with \"escaped quotes\""; +CM_ SG_ 162 signal_1 "signal comment with \"escaped quotes\""; +)"; DBCFile file("", content); auto msg = file.msg(160); @@ -121,6 +136,10 @@ CM_ SG_ 160 signal_2 "multiple line comment REQUIRE(msg->sigs[1]->start_bit == 12); REQUIRE(msg->sigs[1]->size == 1); REQUIRE(msg->sigs[1]->receiver_name == "XXX"); + + // escaped quotes + REQUIRE(msg->comment == "message comment with \"escaped quotes\""); + REQUIRE(msg->sigs[0]->comment == "signal comment with \"escaped quotes\""); } TEST_CASE("parse_opendbc") { From 5892056884885b603d05c0a44d8db89cf07a094a Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 4 Apr 2024 16:47:49 -0400 Subject: [PATCH 364/599] move casync build dir to /data/openpilot (#32104) move here --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index efe598c275..60e3c25008 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -151,7 +151,7 @@ def build_release(String channel_name) { }, "${channel_name} (casync)": { deviceStage("build casync", "tici-needs-can", [], [ - ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot_build CASYNC_DIR=/data/casync $SOURCE_DIR/release/create_casync_build.sh"], + ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync $SOURCE_DIR/release/create_casync_build.sh"], //["upload ${channel_name}", "OPENPILOT_CHANNEL=${channel_name} $SOURCE_DIR/release/upload_casync_release.sh"], ]) } From d7ea27cbddc304c8f6d9e064017a19d26ae945a2 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 4 Apr 2024 13:51:26 -0700 Subject: [PATCH 365/599] car docs: no experimental mode for alpha long cars (#32079) not alpha --- selfdrive/car/docs_definitions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py index fe717d930e..bb1ca6bd42 100644 --- a/selfdrive/car/docs_definitions.py +++ b/selfdrive/car/docs_definitions.py @@ -340,7 +340,7 @@ class CarDocs: # experimental mode exp_link = "Experimental mode" - if CP.openpilotLongitudinalControl or CP.experimentalLongitudinalAvailable: + if CP.openpilotLongitudinalControl and not CP.experimentalLongitudinalAvailable: sentence_builder += f" Traffic light and stop sign handling is also available in {exp_link}." return sentence_builder.format(car_model=f"{self.make} {self.model}", alc=alc, acc=acc) From 69982d43cd61e9b085fbd19f1e3ac6c747a51793 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 5 Apr 2024 14:00:45 -0400 Subject: [PATCH 366/599] move casync release creation to use a tarball of files (#32089) * tar archive instead * fix * move this here * migrate these * fix this * update readme * fix that * try to build nightly * Revert "try to build nightly" This reverts commit 4ea680cb6a1f985c0490168724c99bcb45af9899. * caexclude is no longer required * finish up * sorted * need this * and that * context mnager * path based --- release/README.md | 6 +- release/create_casync_release.py | 7 +- release/files_common | 1 - system/hardware/tici/agnos.py | 2 +- .../tici => updated/casync}/casync.py | 50 +++++++- system/updated/casync/common.py | 32 ++--- system/updated/casync/tar.py | 38 ++++++ .../casync}/tests/test_casync.py | 116 +++++++++++++++++- 8 files changed, 221 insertions(+), 31 deletions(-) rename system/{hardware/tici => updated/casync}/casync.py (81%) create mode 100644 system/updated/casync/tar.py rename system/{hardware/tici => updated/casync}/tests/test_casync.py (56%) diff --git a/release/README.md b/release/README.md index 77cd15ad69..7a4b2cde3e 100644 --- a/release/README.md +++ b/release/README.md @@ -3,7 +3,7 @@ ## terms -- `channel` - a named version of openpilot (git branch, casync caidx) which receives updates +- `channel` - a named version of openpilot (git branch, casync caibx) which receives updates - `build` - a release which is already built for the comma 3/3x and contains only required files for running openpilot and identifying the release - `build_style` - type of build, either `debug` or `release` @@ -28,8 +28,8 @@ ```bash # run on a tici, within the directory you want to create the build from. -# creates a prebuilt version of openpilot into BUILD_DIR and outputs the caidx -# and other casync files into CASYNC_DIR for uploading to openpilot-releases. +# creates a prebuilt version of openpilot into BUILD_DIR and outputs the caibx +# of a tarball containing the full prebuilt openpilot release BUILD_DIR=/data/openpilot_build \ CASYNC_DIR=/data/casync \ OPENPILOT_CHANNEL=nightly \ diff --git a/release/create_casync_release.py b/release/create_casync_release.py index 9aa75eca5d..4c90c31909 100755 --- a/release/create_casync_release.py +++ b/release/create_casync_release.py @@ -4,7 +4,7 @@ import argparse import os import pathlib -from openpilot.system.updated.casync.common import create_caexclude_file, create_casync_release, create_build_metadata_file +from openpilot.system.updated.casync.common import create_casync_release, create_build_metadata_file from openpilot.system.version import get_build_metadata @@ -22,8 +22,7 @@ if __name__ == "__main__": build_metadata.openpilot.build_style = "release" if os.environ.get("RELEASE", None) is not None else "debug" create_build_metadata_file(target_dir, build_metadata, args.channel) - create_caexclude_file(target_dir) - digest, caidx = create_casync_release(target_dir, output_dir, build_metadata.canonical) + digest, caibx = create_casync_release(target_dir, output_dir, build_metadata.canonical) - print(f"Created casync release from {target_dir} to {caidx} with digest {digest}") + print(f"Created casync release from {target_dir} to {caibx} with digest {digest}") diff --git a/release/files_common b/release/files_common index b00f99906b..4ba9200d22 100644 --- a/release/files_common +++ b/release/files_common @@ -170,7 +170,6 @@ system/hardware/tici/hardware.h system/hardware/tici/hardware.py system/hardware/tici/pins.py system/hardware/tici/agnos.py -system/hardware/tici/casync.py system/hardware/tici/agnos.json system/hardware/tici/amplifier.py system/hardware/tici/updater diff --git a/system/hardware/tici/agnos.py b/system/hardware/tici/agnos.py index 502295be07..8f09b30850 100755 --- a/system/hardware/tici/agnos.py +++ b/system/hardware/tici/agnos.py @@ -10,7 +10,7 @@ from collections.abc import Generator import requests -import openpilot.system.hardware.tici.casync as casync +import openpilot.system.updated.casync.casync as casync SPARSE_CHUNK_FMT = struct.Struct('H2xI4x') CAIBX_URL = "https://commadist.azureedge.net/agnosupdate/" diff --git a/system/hardware/tici/casync.py b/system/updated/casync/casync.py similarity index 81% rename from system/hardware/tici/casync.py rename to system/updated/casync/casync.py index 986228c1cd..7a3303a9e9 100755 --- a/system/hardware/tici/casync.py +++ b/system/updated/casync/casync.py @@ -2,15 +2,19 @@ import io import lzma import os +import pathlib import struct import sys import time from abc import ABC, abstractmethod from collections import defaultdict, namedtuple from collections.abc import Callable +from typing import IO import requests from Crypto.Hash import SHA512 +from openpilot.system.updated.casync import tar +from openpilot.system.updated.casync.common import create_casync_tar_package CA_FORMAT_INDEX = 0x96824d9c7b129ff9 CA_FORMAT_TABLE = 0xe75b9e112f17417d @@ -37,20 +41,25 @@ class ChunkReader(ABC): ... -class FileChunkReader(ChunkReader): +class BinaryChunkReader(ChunkReader): """Reads chunks from a local file""" - def __init__(self, fn: str) -> None: + def __init__(self, file_like: IO[bytes]) -> None: super().__init__() - self.f = open(fn, 'rb') - - def __del__(self): - self.f.close() + self.f = file_like def read(self, chunk: Chunk) -> bytes: self.f.seek(chunk.offset) return self.f.read(chunk.length) +class FileChunkReader(BinaryChunkReader): + def __init__(self, path: str) -> None: + super().__init__(open(path, 'rb')) + + def __del__(self): + self.f.close() + + class RemoteChunkReader(ChunkReader): """Reads lzma compressed chunks from a remote store""" @@ -83,6 +92,20 @@ class RemoteChunkReader(ChunkReader): return decompressor.decompress(contents) +class DirectoryTarChunkReader(BinaryChunkReader): + """creates a tar archive of a directory and reads chunks from it""" + + def __init__(self, path: str, cache_file: str) -> None: + create_casync_tar_package(pathlib.Path(path), pathlib.Path(cache_file)) + + self.f = open(cache_file, "rb") + return super().__init__(self.f) + + def __del__(self): + self.f.close() + os.unlink(self.f.name) + + def parse_caibx(caibx_path: str) -> list[Chunk]: """Parses the chunks from a caibx file. Can handle both local and remote files. Returns a list of chunks with hash, offset and length""" @@ -181,6 +204,21 @@ def extract(target: list[Chunk], return stats +def extract_directory(target: list[Chunk], + sources: list[tuple[str, ChunkReader, ChunkDict]], + out_path: str, + tmp_file: str, + progress: Callable[[int], None] = None): + """extract a directory stored as a casync tar archive""" + + stats = extract(target, sources, tmp_file, progress) + + with open(tmp_file, "rb") as f: + tar.extract_tar_archive(f, pathlib.Path(out_path)) + + return stats + + def print_stats(stats: dict[str, int]): total_bytes = sum(stats.values()) print(f"Total size: {total_bytes / 1024 / 1024:.2f} MB") diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py index b5fb4d5802..b30494b2bb 100644 --- a/system/updated/casync/common.py +++ b/system/updated/casync/common.py @@ -4,10 +4,11 @@ import pathlib import subprocess from openpilot.system.version import BUILD_METADATA_FILENAME, BuildMetadata +from openpilot.system.updated.casync import tar CASYNC_ARGS = ["--with=symlinks", "--with=permissions", "--compression=xz"] -CASYNC_FILES = [BUILD_METADATA_FILENAME, ".caexclude"] +CASYNC_FILES = [BUILD_METADATA_FILENAME] def run(cmd): @@ -28,16 +29,6 @@ def get_exclude_set(path) -> set[str]: return exclude_set -def create_caexclude_file(path: pathlib.Path): - with open(path / ".caexclude", "w") as f: - # exclude everything except the paths already in the release - f.write("*\n") - f.write(".*\n") - - for file in sorted(get_exclude_set(path)): - f.write(f"!{file}\n") - - def create_build_metadata_file(path: pathlib.Path, build_metadata: BuildMetadata, channel: str): with open(path / BUILD_METADATA_FILENAME, "w") as f: build_metadata_dict = dataclasses.asdict(build_metadata) @@ -46,8 +37,19 @@ def create_build_metadata_file(path: pathlib.Path, build_metadata: BuildMetadata f.write(json.dumps(build_metadata_dict)) -def create_casync_release(target_dir: pathlib.Path, output_dir: pathlib.Path, caidx_name: str): - caidx_file = output_dir / f"{caidx_name}.caidx" - run(["casync", "make", *CASYNC_ARGS, caidx_file, target_dir]) +def is_not_git(path: pathlib.Path) -> bool: + return ".git" not in path.parts + + +def create_casync_tar_package(target_dir: pathlib.Path, output_path: pathlib.Path): + tar.create_tar_archive(output_path, target_dir, is_not_git) + + +def create_casync_release(target_dir: pathlib.Path, output_dir: pathlib.Path, caibx_name: str): + tar_file = output_dir / f"{caibx_name}.tar" + create_casync_tar_package(target_dir, tar_file) + caibx_file = output_dir / f"{caibx_name}.caibx" + run(["casync", "make", *CASYNC_ARGS, caibx_file, str(tar_file)]) + tar_file.unlink() digest = run(["casync", "digest", *CASYNC_ARGS, target_dir]).decode("utf-8").strip() - return digest, caidx_file + return digest, caibx_file diff --git a/system/updated/casync/tar.py b/system/updated/casync/tar.py new file mode 100644 index 0000000000..725ab4251d --- /dev/null +++ b/system/updated/casync/tar.py @@ -0,0 +1,38 @@ +import pathlib +import tarfile +from typing import IO, Callable + + +def include_default(_) -> bool: + return True + + +def create_tar_archive(filename: pathlib.Path, directory: pathlib.Path, include: Callable[[pathlib.Path], bool] = include_default): + """Creates a tar archive of a directory""" + + with tarfile.open(filename, 'w') as tar: + for file in sorted(directory.rglob("*"), key=lambda f: f.stat().st_size if f.is_file() else 0, reverse=True): + if not include(file): + continue + relative_path = str(file.relative_to(directory)) + if file.is_symlink(): + info = tarfile.TarInfo(relative_path) + info.type = tarfile.SYMTYPE + info.linkpath = str(file.readlink()) + tar.addfile(info) + + elif file.is_file(): + info = tarfile.TarInfo(relative_path) + info.size = file.stat().st_size + info.type = tarfile.REGTYPE + with file.open('rb') as f: + tar.addfile(info, f) + + + +def extract_tar_archive(fh: IO[bytes], directory: pathlib.Path): + """Extracts a tar archive to a directory""" + + tar = tarfile.open(fileobj=fh, mode='r') + tar.extractall(str(directory), filter=lambda info, path: info) + tar.close() diff --git a/system/hardware/tici/tests/test_casync.py b/system/updated/casync/tests/test_casync.py similarity index 56% rename from system/hardware/tici/tests/test_casync.py rename to system/updated/casync/tests/test_casync.py index 94b32a9f76..34427d5625 100755 --- a/system/hardware/tici/tests/test_casync.py +++ b/system/updated/casync/tests/test_casync.py @@ -1,10 +1,12 @@ #!/usr/bin/env python3 import os +import pathlib import unittest import tempfile import subprocess -import openpilot.system.hardware.tici.casync as casync +from openpilot.system.updated.casync import casync +from openpilot.system.updated.casync import tar # dd if=/dev/zero of=/tmp/img.raw bs=1M count=2 # sudo losetup -f /tmp/img.raw @@ -149,5 +151,117 @@ class TestCasync(unittest.TestCase): self.assertLess(stats['remote'], len(self.contents)) +class TestCasyncDirectory(unittest.TestCase): + """Tests extracting a directory stored as a casync tar archive""" + + NUM_FILES = 16 + + @classmethod + def setup_cache(cls, directory, files=None): + if files is None: + files = range(cls.NUM_FILES) + + chunk_a = [i % 256 for i in range(1024)] * 512 + chunk_b = [(256 - i) % 256 for i in range(1024)] * 512 + zeroes = [0] * (1024 * 128) + cls.contents = chunk_a + chunk_b + zeroes + chunk_a + cls.contents = bytes(cls.contents) + + for i in files: + with open(os.path.join(directory, f"file_{i}.txt"), "wb") as f: + f.write(cls.contents) + + os.symlink(f"file_{i}.txt", os.path.join(directory, f"link_{i}.txt")) + + @classmethod + def setUpClass(cls): + cls.tmpdir = tempfile.TemporaryDirectory() + + # Create casync files + cls.manifest_fn = os.path.join(cls.tmpdir.name, 'orig.caibx') + cls.store_fn = os.path.join(cls.tmpdir.name, 'store') + + cls.directory_to_extract = tempfile.TemporaryDirectory() + cls.setup_cache(cls.directory_to_extract.name) + + cls.orig_fn = os.path.join(cls.tmpdir.name, 'orig.tar') + tar.create_tar_archive(cls.orig_fn, pathlib.Path(cls.directory_to_extract.name)) + + subprocess.check_output(["casync", "make", "--compression=xz", "--store", cls.store_fn, cls.manifest_fn, cls.orig_fn]) + + @classmethod + def tearDownClass(cls): + cls.tmpdir.cleanup() + cls.directory_to_extract.cleanup() + + def setUp(self): + self.cache_dir = tempfile.TemporaryDirectory() + self.working_dir = tempfile.TemporaryDirectory() + self.out_dir = tempfile.TemporaryDirectory() + + def tearDown(self): + self.cache_dir.cleanup() + self.working_dir.cleanup() + self.out_dir.cleanup() + + def run_test(self): + target = casync.parse_caibx(self.manifest_fn) + + cache_filename = os.path.join(self.working_dir.name, "cache.tar") + tmp_filename = os.path.join(self.working_dir.name, "tmp.tar") + + sources = [('cache', casync.DirectoryTarChunkReader(self.cache_dir.name, cache_filename), casync.build_chunk_dict(target))] + sources += [('remote', casync.RemoteChunkReader(self.store_fn), casync.build_chunk_dict(target))] + + stats = casync.extract_directory(target, sources, pathlib.Path(self.out_dir.name), tmp_filename) + + with open(os.path.join(self.out_dir.name, "file_0.txt"), "rb") as f: + self.assertEqual(f.read(), self.contents) + + with open(os.path.join(self.out_dir.name, "link_0.txt"), "rb") as f: + self.assertEqual(f.read(), self.contents) + self.assertEqual(os.readlink(os.path.join(self.out_dir.name, "link_0.txt")), "file_0.txt") + + return stats + + def test_no_cache(self): + self.setup_cache(self.cache_dir.name, []) + stats = self.run_test() + self.assertGreater(stats['remote'], 0) + self.assertEqual(stats['cache'], 0) + + def test_full_cache(self): + self.setup_cache(self.cache_dir.name, range(self.NUM_FILES)) + stats = self.run_test() + self.assertEqual(stats['remote'], 0) + self.assertGreater(stats['cache'], 0) + + def test_one_file_cache(self): + self.setup_cache(self.cache_dir.name, range(1)) + stats = self.run_test() + self.assertGreater(stats['remote'], 0) + self.assertGreater(stats['cache'], 0) + self.assertLess(stats['cache'], stats['remote']) + + def test_one_file_incorrect_cache(self): + self.setup_cache(self.cache_dir.name, range(self.NUM_FILES)) + with open(os.path.join(self.cache_dir.name, "file_0.txt"), "wb") as f: + f.write(b"1234") + + stats = self.run_test() + self.assertGreater(stats['remote'], 0) + self.assertGreater(stats['cache'], 0) + self.assertGreater(stats['cache'], stats['remote']) + + def test_one_file_missing_cache(self): + self.setup_cache(self.cache_dir.name, range(self.NUM_FILES)) + os.unlink(os.path.join(self.cache_dir.name, "file_12.txt")) + + stats = self.run_test() + self.assertGreater(stats['remote'], 0) + self.assertGreater(stats['cache'], 0) + self.assertGreater(stats['cache'], stats['remote']) + + if __name__ == "__main__": unittest.main() From 8a138f9be8542ef83fd42cbb030b05551af4afdb Mon Sep 17 00:00:00 2001 From: savojovic <74861870+savojovic@users.noreply.github.com> Date: Fri, 5 Apr 2024 20:03:00 +0200 Subject: [PATCH 367/599] Adding foxglove support (#31907) * Adding foxglove support, demo version * Adding image/thumbnail support * Adding foxglove map support * Adding foxglove map support * Updating title in jsonschemas according to rlog attribute names * Remove shemas folder, add dynamic schema creation * Update identation to 2 spaces, code refactored * Fix, jsonToSchema() recursion returns 0 when an empty arr found * Update, empty arrays data type set to dummy value of type string * Enable logs download * Adding foxglove install functionality * Adding, transform json lists into json obj * Adding, pip install mcap library * format it * Refactoring msg adding to mcap writer by utilizing pool of worker processes Disabling compression --------- Co-authored-by: Justin Newberry --- tools/foxglove/fox.py | 303 +++++++++++++++++++++++++++++ tools/foxglove/install_foxglove.sh | 3 + 2 files changed, 306 insertions(+) create mode 100644 tools/foxglove/fox.py create mode 100755 tools/foxglove/install_foxglove.sh diff --git a/tools/foxglove/fox.py b/tools/foxglove/fox.py new file mode 100644 index 0000000000..02ee56aa10 --- /dev/null +++ b/tools/foxglove/fox.py @@ -0,0 +1,303 @@ +import sys +import json +import base64 +import os +import subprocess +from multiprocessing import Pool +from openpilot.tools.lib.route import Route +from openpilot.tools.lib.logreader import LogReader + +try: + from mcap.writer import Writer, CompressionType +except ImportError: + print("mcap module not found. Attempting to install...") + subprocess.run([sys.executable, "-m", "pip", "install", "mcap"]) + # Attempt to import again after installation + try: + from mcap.writer import Writer, CompressionType + except ImportError: + print("Failed to install mcap module. Exiting.") + sys.exit(1) + + +FOXGLOVE_IMAGE_SCHEME_TITLE = "foxglove.CompressedImage" +FOXGLOVE_GEOJSON_TITLE = "foxglove.GeoJSON" +FOXGLOVE_IMAGE_ENCODING = "base64" +OUT_MCAP_FILE_NAME = "json_log.mcap" +RLOG_FOLDER = "rlogs" +SCHEMAS_FOLDER = "schemas" +SCHEMA_EXTENSION = ".json" + +schemas: dict[str, int] = {} +channels: dict[str, int] = {} +writer: Writer + + +def convertBytesToString(data): + if isinstance(data, bytes): + return data.decode('latin-1') # Assuming UTF-8 encoding, adjust if needed + elif isinstance(data, list): + return [convertBytesToString(item) for item in data] + elif isinstance(data, dict): + return {key: convertBytesToString(value) for key, value in data.items()} + else: + return data + + +# Load jsonscheme for every Event +def loadSchema(schemaName): + with open(os.path.join(SCHEMAS_FOLDER, schemaName + SCHEMA_EXTENSION), "r") as file: + return json.loads(file.read()) + + +# Foxglove creates one graph of an array, and not one for each item of an array +# This can be avoided by transforming array to separate objects +def transformListsToJsonDict(json_data): + def convert_array_to_dict(array): + new_dict = {} + for index, item in enumerate(array): + if isinstance(item, dict): + new_dict[index] = transformListsToJsonDict(item) + else: + new_dict[index] = item + return new_dict + + new_data = {} + for key, value in json_data.items(): + if isinstance(value, list): + new_data[key] = convert_array_to_dict(value) + elif isinstance(value, dict): + new_data[key] = transformListsToJsonDict(value) + else: + new_data[key] = value + return new_data + + +# Transform openpilot thumbnail to foxglove compressedImage +def transformToFoxgloveSchema(jsonMsg): + bytesImgData = jsonMsg.get("thumbnail").get("thumbnail").encode('latin1') + base64ImgData = base64.b64encode(bytesImgData) + base64_string = base64ImgData.decode('utf-8') + foxMsg = { + "timestamp": {"sec": "0", "nsec": jsonMsg.get("logMonoTime")}, + "frame_id": str(jsonMsg.get("thumbnail").get("frameId")), + "data": base64_string, + "format": "jpeg", + } + return foxMsg + + +# TODO: Check if there is a tool to build GEOJson +def transformMapCoordinates(jsonMsg): + coordinates = [] + for jsonCoords in jsonMsg.get("navRoute").get("coordinates"): + coordinates.append([jsonCoords.get("longitude"), jsonCoords.get("latitude")]) + + # Define the GeoJSON + geojson_data = { + "type": "FeatureCollection", + "features": [{"type": "Feature", "geometry": {"type": "LineString", "coordinates": coordinates}, "logMonoTime": jsonMsg.get("logMonoTime")}], + } + + # Create the final JSON with the GeoJSON data encoded as a string + geoJson = {"geojson": json.dumps(geojson_data)} + + return geoJson + + +def jsonToScheme(jsonData): + zeroArray = False + schema = {"type": "object", "properties": {}, "required": []} + for key, value in jsonData.items(): + if isinstance(value, dict): + tempScheme, zeroArray = jsonToScheme(value) + if tempScheme == 0: + return 0 + schema["properties"][key] = tempScheme + schema["required"].append(key) + elif isinstance(value, list): + if all(isinstance(item, dict) for item in value) and len(value) > 0: # Handle zero value arrays + # Handle array of objects + tempScheme, zeroArray = jsonToScheme(value[0]) + schema["properties"][key] = {"type": "array", "items": tempScheme if value else {}} + schema["required"].append(key) + else: + if len(value) == 0: + zeroArray = True + # Handle array of primitive types + schema["properties"][key] = {"type": "array", "items": {"type": "string"}} + schema["required"].append(key) + else: + typeName = type(value).__name__ + if typeName == "str": + typeName = "string" + elif typeName == "bool": + typeName = "boolean" + elif typeName == "float": + typeName = "number" + elif typeName == "int": + typeName = "integer" + schema["properties"][key] = {"type": typeName} + schema["required"].append(key) + + return schema, zeroArray + + +def saveScheme(scheme, schemaFileName): + schemaFileName = schemaFileName + SCHEMA_EXTENSION + # Create the new schemas folder + os.makedirs(SCHEMAS_FOLDER, exist_ok=True) + with open(os.path.join(SCHEMAS_FOLDER, schemaFileName), 'w') as json_file: + json.dump(convertBytesToString(scheme), json_file) + + +def convertToFoxGloveFormat(jsonData, rlogTopic): + jsonData["title"] = rlogTopic + if rlogTopic == "thumbnail": + jsonData = transformToFoxgloveSchema(jsonData) + jsonData["title"] = FOXGLOVE_IMAGE_SCHEME_TITLE + elif rlogTopic == "navRoute": + jsonData = transformMapCoordinates(jsonData) + jsonData["title"] = FOXGLOVE_GEOJSON_TITLE + else: + jsonData = transformListsToJsonDict(jsonData) + return jsonData + + +def generateSchemas(): + listOfDirs = os.listdir(RLOG_FOLDER) + # Open every dir in rlogs + for directory in listOfDirs: + # List every file in every rlog dir + dirPath = os.path.join(RLOG_FOLDER, directory) + listOfFiles = os.listdir(dirPath) + lastIteration = len(listOfFiles) + for iteration, file in enumerate(listOfFiles): + # Load json data from every file until found one without empty arrays + filePath = os.path.join(dirPath, file) + with open(filePath, 'r') as jsonFile: + jsonData = json.load(jsonFile) + scheme, zerroArray = jsonToScheme(jsonData) + # If array of len 0 has been found, type of its data can not be parsed, skip to the next log + # in search for a non empty array. If there is not an non empty array in logs, put a dummy string type + if zerroArray and not iteration == lastIteration - 1: + continue + title = jsonData.get("title") + scheme["title"] = title + # Add contentEncoding type, hardcoded in foxglove format + if title == FOXGLOVE_IMAGE_SCHEME_TITLE: + scheme["properties"]["data"]["contentEncoding"] = FOXGLOVE_IMAGE_ENCODING + saveScheme(scheme, directory) + break + + +def downloadLogs(logPaths): + segment_counter = 0 + for logPath in logPaths: + segment_counter += 1 + msg_counter = 1 + print(segment_counter) + rlog = LogReader(logPath) + for msg in rlog: + jsonMsg = json.loads(json.dumps(convertBytesToString(msg.to_dict()))) + jsonMsg = convertToFoxGloveFormat(jsonMsg, msg.which()) + rlog_dir_path = os.path.join(RLOG_FOLDER, msg.which()) + if not os.path.exists(rlog_dir_path): + os.makedirs(rlog_dir_path) + file_path = os.path.join(rlog_dir_path, str(segment_counter) + "," + str(msg_counter)) + with open(file_path, 'w') as json_file: + json.dump(jsonMsg, json_file) + msg_counter += 1 + + +def getLogMonoTime(jsonMsg): + if jsonMsg.get("title") == FOXGLOVE_IMAGE_SCHEME_TITLE: + logMonoTime = jsonMsg.get("timestamp").get("nsec") + elif jsonMsg.get("title") == FOXGLOVE_GEOJSON_TITLE: + logMonoTime = json.loads(jsonMsg.get("geojson")).get("features")[0].get("logMonoTime") + else: + logMonoTime = jsonMsg.get("logMonoTime") + return logMonoTime + + +def processMsgs(args): + msgFile, rlogTopicPath, rlogTopic = args + msgFilePath = os.path.join(rlogTopicPath, msgFile) + with open(msgFilePath, "r") as file: + jsonMsg = json.load(file) + logMonoTime = getLogMonoTime(jsonMsg) + return {'channel_id': channels[rlogTopic], 'log_time': logMonoTime, 'data': json.dumps(jsonMsg).encode("utf-8"), 'publish_time': logMonoTime} + + +# Get logs from a path, and convert them into mcap +def createMcap(logPaths): + print(f"Downloading logs [{len(logPaths)}]") + downloadLogs(logPaths) + print("Creating schemas") + generateSchemas() + print("Creating mcap file") + + listOfRlogTopics = os.listdir(RLOG_FOLDER) + print(f"Registering schemas and channels [{len(listOfRlogTopics)}]") + for counter, rlogTopic in enumerate(listOfRlogTopics): + print(counter) + schema = loadSchema(rlogTopic) + schema_id = writer.register_schema(name=schema.get("title"), encoding="jsonschema", data=json.dumps(schema).encode()) + schemas[rlogTopic] = schema_id + channel_id = writer.register_channel(schema_id=schemas[rlogTopic], topic=rlogTopic, message_encoding="json") + channels[rlogTopic] = channel_id + rlogTopicPath = os.path.join(RLOG_FOLDER, rlogTopic) + msgFiles = os.listdir(rlogTopicPath) + pool = Pool() + results = pool.map(processMsgs, [(msgFile, rlogTopicPath, rlogTopic) for msgFile in msgFiles]) + pool.close() + pool.join() + for result in results: + writer.add_message(channel_id=result['channel_id'], log_time=result['log_time'], data=result['data'], publish_time=result['publish_time']) + + +def is_program_installed(program_name): + try: + # Check if the program is installed using dpkg (for traditional Debian packages) + subprocess.run(["dpkg", "-l", program_name], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + return True + except subprocess.CalledProcessError: + # Check if the program is installed using snap + try: + subprocess.run(["snap", "list", program_name], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + return True + except subprocess.CalledProcessError: + return False + + +if __name__ == '__main__': + # Example usage: + program_name = "foxglove-studio" # Change this to the program you want to check + if is_program_installed(program_name): + print(f"{program_name} detected.") + else: + print(f"{program_name} could not be detected.") + installFoxglove = input("Would you like to install it? YES/NO? - ") + if installFoxglove.lower() == "yes": + try: + subprocess.run(['./install_foxglove.sh'], check=True) + print("Installation completed successfully.") + except subprocess.CalledProcessError as e: + print(f"Installation failed with return code {e.returncode}.") + # Get a route + if len(sys.argv) == 1: + route_name = "a2a0ccea32023010|2023-07-27--13-01-19" + print("No route was provided, using demo route") + else: + route_name = sys.argv[1] + # Get logs for a route + print("Getting route log paths") + route = Route(route_name) + logPaths = route.log_paths() + # Start mcap writer + with open(OUT_MCAP_FILE_NAME, "wb") as stream: + writer = Writer(stream, compression=CompressionType.NONE) + writer.start() + createMcap(logPaths) + writer.finish() + print(f"File {OUT_MCAP_FILE_NAME} has been successfully created. Please import it into foxglove studio to continue.") diff --git a/tools/foxglove/install_foxglove.sh b/tools/foxglove/install_foxglove.sh new file mode 100755 index 0000000000..0f401549a2 --- /dev/null +++ b/tools/foxglove/install_foxglove.sh @@ -0,0 +1,3 @@ +#!/bin/bash +echo "Installing foxglvoe studio..." +sudo snap install foxglove-studio From 910e32270bc0e216a3443803bb177e0f4963e00b Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 5 Apr 2024 14:06:11 -0400 Subject: [PATCH 368/599] casync: larger chunk sizes and include file mode (#32110) add mode --- system/updated/casync/common.py | 2 +- system/updated/casync/tar.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py index b30494b2bb..db9b4b1e10 100644 --- a/system/updated/casync/common.py +++ b/system/updated/casync/common.py @@ -7,7 +7,7 @@ from openpilot.system.version import BUILD_METADATA_FILENAME, BuildMetadata from openpilot.system.updated.casync import tar -CASYNC_ARGS = ["--with=symlinks", "--with=permissions", "--compression=xz"] +CASYNC_ARGS = ["--with=symlinks", "--with=permissions", "--compression=xz", "--chunk-size=16M"] CASYNC_FILES = [BUILD_METADATA_FILENAME] diff --git a/system/updated/casync/tar.py b/system/updated/casync/tar.py index 725ab4251d..5c547e73a2 100644 --- a/system/updated/casync/tar.py +++ b/system/updated/casync/tar.py @@ -25,11 +25,11 @@ def create_tar_archive(filename: pathlib.Path, directory: pathlib.Path, include: info = tarfile.TarInfo(relative_path) info.size = file.stat().st_size info.type = tarfile.REGTYPE + info.mode = file.stat().st_mode with file.open('rb') as f: tar.addfile(info, f) - def extract_tar_archive(fh: IO[bytes], directory: pathlib.Path): """Extracts a tar archive to a directory""" From bbb31184ab869619944fbd4ad5667f8bc4ca6d3d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 5 Apr 2024 17:11:38 -0400 Subject: [PATCH 369/599] fix nightly casync build (#32111) fix casync build --- release/create_casync_build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/release/create_casync_build.sh b/release/create_casync_build.sh index d41909a6ab..a851123556 100755 --- a/release/create_casync_build.sh +++ b/release/create_casync_build.sh @@ -10,6 +10,7 @@ BUILD_DIR="${BUILD_DIR:=$(mktemp -d)}" echo "Creating casync release from $SOURCE_DIR to $CASYNC_DIR" +cd $SOURCE_DIR mkdir -p $CASYNC_DIR rm -rf $BUILD_DIR mkdir -p $BUILD_DIR From ab744b73447f2b50a09d734edfa16a6a9eb04073 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 5 Apr 2024 15:04:38 -0700 Subject: [PATCH 370/599] make fox.py executable --- tools/foxglove/fox.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tools/foxglove/fox.py diff --git a/tools/foxglove/fox.py b/tools/foxglove/fox.py old mode 100644 new mode 100755 From 1c6924ac675baaaceb8be0b7154be15c2c45c413 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 5 Apr 2024 15:10:14 -0700 Subject: [PATCH 371/599] missing shebang --- tools/foxglove/fox.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/foxglove/fox.py b/tools/foxglove/fox.py index 02ee56aa10..a1e930d893 100755 --- a/tools/foxglove/fox.py +++ b/tools/foxglove/fox.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import sys import json import base64 From 8be1a0ea360a63d8dd2120e628b3b349e1db02b8 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 5 Apr 2024 15:32:45 -0700 Subject: [PATCH 372/599] [bot] Fingerprints: add missing FW versions from new users (#32108) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 9809fb47f1..e4a4bcdfa4 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -148,6 +148,7 @@ FW_VERSIONS = { b'68443123AC ', b'68443125AC ', b'68496647AJ ', + b'68496650AH ', b'68496650AI ', b'68526752AD ', b'68526752AE ', From c95404d564a9a8d168f8f587887e9c33f96db861 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 5 Apr 2024 19:28:21 -0400 Subject: [PATCH 373/599] add ui description helper to build_metadata (#32113) add ui_description --- system/version.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/system/version.py b/system/version.py index 902f013469..3aa35455e5 100755 --- a/system/version.py +++ b/system/version.py @@ -108,6 +108,10 @@ class BuildMetadata: def canonical(self) -> str: return f"{self.openpilot.version}-{self.openpilot.git_commit}-{self.openpilot.build_style}" + @property + def ui_description(self) -> str: + return f"{self.openpilot.version} / {self.openpilot.git_commit[:6]} / {self.channel}" + def build_metadata_from_dict(build_metadata: dict) -> BuildMetadata: channel = build_metadata.get("channel", "unknown") From b8fdb3e01ded282659de68bc436304cb770d0bb0 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 8 Apr 2024 10:01:58 -0700 Subject: [PATCH 374/599] [bot] Bump submodules (#32122) bump submodules Co-authored-by: jnewb1 --- opendbc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opendbc b/opendbc index 5821bd94d0..83884c2b20 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit 5821bd94d0cb9017d274b4499f2a0525ac317dc2 +Subproject commit 83884c2b2022e4a16ae535d1ed72aca4711324b7 From 44bb4eb521b3d0fcb00e9df5eb7c74741946ebe4 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 8 Apr 2024 11:34:05 -0700 Subject: [PATCH 375/599] add tool to create casync agnos updates from existing manifest (#32124) * wip * wip * add agnos prefix * add mkdir * tool to create agnos updates --- release/create_casync_agnos_release.py | 52 ++++++++++++++++++++++++++ system/updated/casync/common.py | 10 ++++- 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 release/create_casync_agnos_release.py diff --git a/release/create_casync_agnos_release.py b/release/create_casync_agnos_release.py new file mode 100644 index 0000000000..2dff1f515d --- /dev/null +++ b/release/create_casync_agnos_release.py @@ -0,0 +1,52 @@ +import argparse +import json +import pathlib +import tempfile +from openpilot.common.basedir import BASEDIR +from openpilot.system.hardware.tici.agnos import StreamingDecompressor +from openpilot.system.updated.casync.common import create_casync_from_file + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="creates a casync release") + parser.add_argument("output_dir", type=str, help="output directory for the channel") + parser.add_argument("version", type=str, help="version of agnos this is") + parser.add_argument("--manifest", type=str, help="json manifest to create agnos release from", \ + default=str(pathlib.Path(BASEDIR) / "system/hardware/tici/agnos.json")) + args = parser.parse_args() + + output_dir = pathlib.Path(args.output_dir) + output_dir.mkdir(parents=True, exist_ok=True) + + manifest_file = pathlib.Path(args.manifest) + + with tempfile.NamedTemporaryFile() as entry_file: + entry_path = pathlib.Path(entry_file.name) + + with open(manifest_file) as f: + manifest = json.load(f) + + for entry in manifest: + print(f"creating casync agnos build from {entry}") + downloader = StreamingDecompressor(entry['url']) + + CHUNK_SIZE=16*1024*1024 # 16mb + + size = entry["size"] + + cur = 0 + with open(entry_path, "wb") as f: + while True: + to_read = min((size - cur), CHUNK_SIZE) + + print(f"{cur/size*100:06.2f}% {to_read}") + + if not to_read: + break + + f.write(downloader.read(to_read)) + + cur += to_read + + create_casync_from_file(entry_path, output_dir, f"agnos-{args.version}-{entry['name']}") diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py index db9b4b1e10..d1c795657d 100644 --- a/system/updated/casync/common.py +++ b/system/updated/casync/common.py @@ -45,11 +45,17 @@ def create_casync_tar_package(target_dir: pathlib.Path, output_path: pathlib.Pat tar.create_tar_archive(output_path, target_dir, is_not_git) +def create_casync_from_file(file: pathlib.Path, output_dir: pathlib.Path, caibx_name: str): + caibx_file = output_dir / f"{caibx_name}.caibx" + run(["casync", "make", *CASYNC_ARGS, caibx_file, str(file)]) + + return caibx_file + + def create_casync_release(target_dir: pathlib.Path, output_dir: pathlib.Path, caibx_name: str): tar_file = output_dir / f"{caibx_name}.tar" create_casync_tar_package(target_dir, tar_file) - caibx_file = output_dir / f"{caibx_name}.caibx" - run(["casync", "make", *CASYNC_ARGS, caibx_file, str(tar_file)]) + caibx_file = create_casync_from_file(tar_file, output_dir, caibx_name) tar_file.unlink() digest = run(["casync", "digest", *CASYNC_ARGS, target_dir]).decode("utf-8").strip() return digest, caibx_file From 16e0864f3808ca4ef0e05873c42705cf0d5dd60c Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 8 Apr 2024 11:35:04 -0700 Subject: [PATCH 376/599] [bot] Update Python packages and pre-commit hooks (#32123) Update Python packages and pre-commit hooks Co-authored-by: jnewb1 --- .pre-commit-config.yaml | 4 +- poetry.lock | 642 +++++++++++++++++++++------------------- 2 files changed, 344 insertions(+), 302 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 02af4473bd..e4109b8bf8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: - id: check-hooks-apply - id: check-useless-excludes - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-ast exclude: '^(third_party)/' @@ -33,7 +33,7 @@ repos: - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.4 + rev: v0.3.5 hooks: - id: ruff exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)' diff --git a/poetry.lock b/poetry.lock index 08fd51c18d..453ba46e7d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -667,64 +667,64 @@ cron = ["capturer (>=2.4)"] [[package]] name = "contourpy" -version = "1.2.0" +version = "1.2.1" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false python-versions = ">=3.9" files = [ - {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"}, - {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"}, - {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"}, - {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"}, - {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"}, - {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"}, - {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"}, - {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"}, - {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"}, - {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"}, - {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"}, - {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"}, - {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"}, - {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"}, - {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"}, - {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"}, - {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"}, - {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"}, - {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"}, - {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"}, - {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"}, - {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"}, - {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"}, - {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"}, - {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"}, + {file = "contourpy-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd7c23df857d488f418439686d3b10ae2fbf9bc256cd045b37a8c16575ea1040"}, + {file = "contourpy-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b9eb0ca724a241683c9685a484da9d35c872fd42756574a7cfbf58af26677fd"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c75507d0a55378240f781599c30e7776674dbaf883a46d1c90f37e563453480"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb3315a8a236ee19b6df481fc5f997436e8ade24a9f03dfdc6bd490fea20c6da"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39f3ecaf76cd98e802f094e0d4fbc6dc9c45a8d0c4d185f0f6c2234e14e5f75b"}, + {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94b34f32646ca0414237168d68a9157cb3889f06b096612afdd296003fdd32fd"}, + {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:457499c79fa84593f22454bbd27670227874cd2ff5d6c84e60575c8b50a69619"}, + {file = "contourpy-1.2.1-cp310-cp310-win32.whl", hash = "sha256:ac58bdee53cbeba2ecad824fa8159493f0bf3b8ea4e93feb06c9a465d6c87da8"}, + {file = "contourpy-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9cffe0f850e89d7c0012a1fb8730f75edd4320a0a731ed0c183904fe6ecfc3a9"}, + {file = "contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5"}, + {file = "contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6150ffa5c767bc6332df27157d95442c379b7dce3a38dff89c0f39b63275696f"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c863140fafc615c14a4bf4efd0f4425c02230eb8ef02784c9a156461e62c965"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df"}, + {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49e70d111fee47284d9dd867c9bb9a7058a3c617274900780c43e38d90fe1205"}, + {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b59c0ffceff8d4d3996a45f2bb6f4c207f94684a96bf3d9728dbb77428dd8cb8"}, + {file = "contourpy-1.2.1-cp311-cp311-win32.whl", hash = "sha256:7b4182299f251060996af5249c286bae9361fa8c6a9cda5efc29fe8bfd6062ec"}, + {file = "contourpy-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922"}, + {file = "contourpy-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:62828cada4a2b850dbef89c81f5a33741898b305db244904de418cc957ff05dc"}, + {file = "contourpy-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:309be79c0a354afff9ff7da4aaed7c3257e77edf6c1b448a779329431ee79d7e"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e785e0f2ef0d567099b9ff92cbfb958d71c2d5b9259981cd9bee81bd194c9a4"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cac0a8f71a041aa587410424ad46dfa6a11f6149ceb219ce7dd48f6b02b87a7"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af3f4485884750dddd9c25cb7e3915d83c2db92488b38ccb77dd594eac84c4a0"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ce6889abac9a42afd07a562c2d6d4b2b7134f83f18571d859b25624a331c90b"}, + {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a1eea9aecf761c661d096d39ed9026574de8adb2ae1c5bd7b33558af884fb2ce"}, + {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:187fa1d4c6acc06adb0fae5544c59898ad781409e61a926ac7e84b8f276dcef4"}, + {file = "contourpy-1.2.1-cp312-cp312-win32.whl", hash = "sha256:c2528d60e398c7c4c799d56f907664673a807635b857df18f7ae64d3e6ce2d9f"}, + {file = "contourpy-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:1a07fc092a4088ee952ddae19a2b2a85757b923217b7eed584fdf25f53a6e7ce"}, + {file = "contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb6834cbd983b19f06908b45bfc2dad6ac9479ae04abe923a275b5f48f1a186b"}, + {file = "contourpy-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d59e739ab0e3520e62a26c60707cc3ab0365d2f8fecea74bfe4de72dc56388f"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd3db01f59fdcbce5b22afad19e390260d6d0222f35a1023d9adc5690a889364"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a12a813949e5066148712a0626895c26b2578874e4cc63160bb007e6df3436fe"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1d59258c3c67c865435d8fbeb35f8c59b8bef3d6f46c1f29f6123556af28445"}, + {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02"}, + {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d31a63bc6e6d87f77d71e1abbd7387ab817a66733734883d1fc0021ed9bfa083"}, + {file = "contourpy-1.2.1-cp39-cp39-win32.whl", hash = "sha256:ddcb8581510311e13421b1f544403c16e901c4e8f09083c881fab2be80ee31ba"}, + {file = "contourpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a31f94983fecbac95e58388210427d68cd30fe8a36927980fab9c20062645609"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b055471c0eb466033760a521efb9d8a32b99ab907fc8358481a1dd29e3bd3"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b33d2bc4f69caedcd0a275329eb2198f560b325605810895627be5d4b876bf7f"}, + {file = "contourpy-1.2.1.tar.gz", hash = "sha256:4d8908b3bee1c889e547867ca4cdc54e5ab6be6d3e078556814a22457f49423c"}, ] [package.dependencies] -numpy = ">=1.20,<2.0" +numpy = ">=1.20" [package.extras] bokeh = ["bokeh", "selenium"] docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.8.0)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] @@ -1020,13 +1020,13 @@ files = [ [[package]] name = "execnet" -version = "2.0.2" +version = "2.1.1" description = "execnet: rapid multi-Python deployment" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "execnet-2.0.2-py3-none-any.whl", hash = "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41"}, - {file = "execnet-2.0.2.tar.gz", hash = "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af"}, + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, ] [package.extras] @@ -1130,53 +1130,53 @@ files = [ [[package]] name = "fonttools" -version = "4.50.0" +version = "4.51.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effd303fb422f8ce06543a36ca69148471144c534cc25f30e5be752bc4f46736"}, - {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7913992ab836f621d06aabac118fc258b9947a775a607e1a737eb3a91c360335"}, - {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0a1c5bd2f63da4043b63888534b52c5a1fd7ae187c8ffc64cbb7ae475b9dab"}, - {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d40fc98540fa5360e7ecf2c56ddf3c6e7dd04929543618fd7b5cc76e66390562"}, - {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fff65fbb7afe137bac3113827855e0204482727bddd00a806034ab0d3951d0d"}, - {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1aeae3dd2ee719074a9372c89ad94f7c581903306d76befdaca2a559f802472"}, - {file = "fonttools-4.50.0-cp310-cp310-win32.whl", hash = "sha256:e9623afa319405da33b43c85cceb0585a6f5d3a1d7c604daf4f7e1dd55c03d1f"}, - {file = "fonttools-4.50.0-cp310-cp310-win_amd64.whl", hash = "sha256:778c5f43e7e654ef7fe0605e80894930bc3a7772e2f496238e57218610140f54"}, - {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3dfb102e7f63b78c832e4539969167ffcc0375b013080e6472350965a5fe8048"}, - {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e58fe34cb379ba3d01d5d319d67dd3ce7ca9a47ad044ea2b22635cd2d1247fc"}, - {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c673ab40d15a442a4e6eb09bf007c1dda47c84ac1e2eecbdf359adacb799c24"}, - {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b3ac35cdcd1a4c90c23a5200212c1bb74fa05833cc7c14291d7043a52ca2aaa"}, - {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8844e7a2c5f7ecf977e82eb6b3014f025c8b454e046d941ece05b768be5847ae"}, - {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f849bd3c5c2249b49c98eca5aaebb920d2bfd92b3c69e84ca9bddf133e9f83f0"}, - {file = "fonttools-4.50.0-cp311-cp311-win32.whl", hash = "sha256:39293ff231b36b035575e81c14626dfc14407a20de5262f9596c2cbb199c3625"}, - {file = "fonttools-4.50.0-cp311-cp311-win_amd64.whl", hash = "sha256:c33d5023523b44d3481624f840c8646656a1def7630ca562f222eb3ead16c438"}, - {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b4a886a6dbe60100ba1cd24de962f8cd18139bd32808da80de1fa9f9f27bf1dc"}, - {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b2ca1837bfbe5eafa11313dbc7edada79052709a1fffa10cea691210af4aa1fa"}, - {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0493dd97ac8977e48ffc1476b932b37c847cbb87fd68673dee5182004906828"}, - {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77844e2f1b0889120b6c222fc49b2b75c3d88b930615e98893b899b9352a27ea"}, - {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3566bfb8c55ed9100afe1ba6f0f12265cd63a1387b9661eb6031a1578a28bad1"}, - {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:35e10ddbc129cf61775d58a14f2d44121178d89874d32cae1eac722e687d9019"}, - {file = "fonttools-4.50.0-cp312-cp312-win32.whl", hash = "sha256:cc8140baf9fa8f9b903f2b393a6c413a220fa990264b215bf48484f3d0bf8710"}, - {file = "fonttools-4.50.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ccc85fd96373ab73c59833b824d7a73846670a0cb1f3afbaee2b2c426a8f931"}, - {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e270a406219af37581d96c810172001ec536e29e5593aa40d4c01cca3e145aa6"}, - {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac2463de667233372e9e1c7e9de3d914b708437ef52a3199fdbf5a60184f190c"}, - {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47abd6669195abe87c22750dbcd366dc3a0648f1b7c93c2baa97429c4dc1506e"}, - {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:074841375e2e3d559aecc86e1224caf78e8b8417bb391e7d2506412538f21adc"}, - {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0743fd2191ad7ab43d78cd747215b12033ddee24fa1e088605a3efe80d6984de"}, - {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3d7080cce7be5ed65bee3496f09f79a82865a514863197ff4d4d177389e981b0"}, - {file = "fonttools-4.50.0-cp38-cp38-win32.whl", hash = "sha256:a467ba4e2eadc1d5cc1a11d355abb945f680473fbe30d15617e104c81f483045"}, - {file = "fonttools-4.50.0-cp38-cp38-win_amd64.whl", hash = "sha256:f77e048f805e00870659d6318fd89ef28ca4ee16a22b4c5e1905b735495fc422"}, - {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b6245eafd553c4e9a0708e93be51392bd2288c773523892fbd616d33fd2fda59"}, - {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a4062cc7e8de26f1603323ef3ae2171c9d29c8a9f5e067d555a2813cd5c7a7e0"}, - {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34692850dfd64ba06af61e5791a441f664cb7d21e7b544e8f385718430e8f8e4"}, - {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678dd95f26a67e02c50dcb5bf250f95231d455642afbc65a3b0bcdacd4e4dd38"}, - {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f2ce7b0b295fe64ac0a85aef46a0f2614995774bd7bc643b85679c0283287f9"}, - {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d346f4dc2221bfb7ab652d1e37d327578434ce559baf7113b0f55768437fe6a0"}, - {file = "fonttools-4.50.0-cp39-cp39-win32.whl", hash = "sha256:a51eeaf52ba3afd70bf489be20e52fdfafe6c03d652b02477c6ce23c995222f4"}, - {file = "fonttools-4.50.0-cp39-cp39-win_amd64.whl", hash = "sha256:8639be40d583e5d9da67795aa3eeeda0488fb577a1d42ae11a5036f18fb16d93"}, - {file = "fonttools-4.50.0-py3-none-any.whl", hash = "sha256:48fa36da06247aa8282766cfd63efff1bb24e55f020f29a335939ed3844d20d3"}, - {file = "fonttools-4.50.0.tar.gz", hash = "sha256:fa5cf61058c7dbb104c2ac4e782bf1b2016a8cf2f69de6e4dd6a865d2c969bb5"}, + {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74"}, + {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308"}, + {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037"}, + {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716"}, + {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438"}, + {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039"}, + {file = "fonttools-4.51.0-cp310-cp310-win32.whl", hash = "sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77"}, + {file = "fonttools-4.51.0-cp310-cp310-win_amd64.whl", hash = "sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b"}, + {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74"}, + {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2"}, + {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f"}, + {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097"}, + {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0"}, + {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1"}, + {file = "fonttools-4.51.0-cp311-cp311-win32.whl", hash = "sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034"}, + {file = "fonttools-4.51.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1"}, + {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba"}, + {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc"}, + {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a"}, + {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2"}, + {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671"}, + {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5"}, + {file = "fonttools-4.51.0-cp312-cp312-win32.whl", hash = "sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15"}, + {file = "fonttools-4.51.0-cp312-cp312-win_amd64.whl", hash = "sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e"}, + {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e"}, + {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5"}, + {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e"}, + {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1"}, + {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14"}, + {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed"}, + {file = "fonttools-4.51.0-cp38-cp38-win32.whl", hash = "sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f"}, + {file = "fonttools-4.51.0-cp38-cp38-win_amd64.whl", hash = "sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836"}, + {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b"}, + {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936"}, + {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55"}, + {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce"}, + {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051"}, + {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7"}, + {file = "fonttools-4.51.0-cp39-cp39-win32.whl", hash = "sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636"}, + {file = "fonttools-4.51.0-cp39-cp39-win_amd64.whl", hash = "sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a"}, + {file = "fonttools-4.51.0-py3-none-any.whl", hash = "sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f"}, + {file = "fonttools-4.51.0.tar.gz", hash = "sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68"}, ] [package.extras] @@ -1931,124 +1931,166 @@ test = ["pytest"] [[package]] name = "lxml" -version = "5.2.0" +version = "5.2.1" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false python-versions = ">=3.6" files = [ - {file = "lxml-5.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c54f8d6160080831a76780d850302fdeb0e8d0806f661777b0714dfb55d9a08a"}, - {file = "lxml-5.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e95ae029396382a0d2e8174e4077f96befcd4a2184678db363ddc074eb4d3b2"}, - {file = "lxml-5.2.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5810fa80e64a0c689262a71af999c5735f48c0da0affcbc9041d1ef5ef3920be"}, - {file = "lxml-5.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae69524fd6a68b288574013f8fadac23cacf089c75cd3fc5b216277a445eb736"}, - {file = "lxml-5.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fadda215e32fe375d65e560b7f7e2a37c7f9c4ecee5315bb1225ca6ac9bf5838"}, - {file = "lxml-5.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:f1f164e4cc6bc646b1fc86664c3543bf4a941d45235797279b120dc740ee7af5"}, - {file = "lxml-5.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3603a8a41097daf7672cae22cc4a860ab9ea5597f1c5371cb21beca3398b8d6a"}, - {file = "lxml-5.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3b4bb89a785f4fd60e05f3c3a526c07d0d68e3536f17f169ca13bf5b5dd75a5"}, - {file = "lxml-5.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1effc10bf782f0696e76ecfeba0720ea02c0c31d5bffb7b29ba10debd57d1c3d"}, - {file = "lxml-5.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b03531f6cd6ce4b511dcece060ca20aa5412f8db449274b44f4003f282e6272f"}, - {file = "lxml-5.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fac15090bb966719df06f0c4f8139783746d1e60e71016d8a65db2031ca41b8"}, - {file = "lxml-5.2.0-cp310-cp310-win32.whl", hash = "sha256:92bb37c96215c4b2eb26f3c791c0bf02c64dd251effa532b43ca5049000c4478"}, - {file = "lxml-5.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:b0181c22fdb89cc19e70240a850e5480817c3e815b1eceb171b3d7a3aa3e596a"}, - {file = "lxml-5.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ada8ce9e6e1d126ef60d215baaa0c81381ba5841c25f1d00a71cdafdc038bd27"}, - {file = "lxml-5.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3cefb133c859f06dab2ae63885d9f405000c4031ec516e0ed4f9d779f690d8e3"}, - {file = "lxml-5.2.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ede2a7a86a977b0c741654efaeca0af7860a9b1ae39f9268f0936246a977ee0"}, - {file = "lxml-5.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d46df6f0b1a0cda39d12c5c4615a7d92f40342deb8001c7b434d7c8c78352e58"}, - {file = "lxml-5.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2259243ee734cc736e237719037efb86603c891fd363cc7973a2d0ac8a0e3f"}, - {file = "lxml-5.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c53164f29ed3c3868787144e8ea8a399ffd7d8215f59500a20173593c19e96eb"}, - {file = "lxml-5.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:371aab9a397dcc76625ad3b02fa9b21be63406d69237b773156e7d1fc2ce0cae"}, - {file = "lxml-5.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e08784288a179b59115b5e57abf6d387528b39abb61105fe17510a199a277a40"}, - {file = "lxml-5.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4c232726f7b6df5143415a06323faaa998ef8abbe1c0ed00d718755231d76f08"}, - {file = "lxml-5.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e4366e58c0508da4dee4c7c70cee657e38553d73abdffa53abbd7d743711ee11"}, - {file = "lxml-5.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c84dce8fb2e900d4fb094e76fdad34a5fd06de53e41bddc1502c146eb11abd74"}, - {file = "lxml-5.2.0-cp311-cp311-win32.whl", hash = "sha256:0947d1114e337dc2aae2fa14bbc9ed5d9ca1a0acd6d2f948df9926aef65305e9"}, - {file = "lxml-5.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1eace37a9f4a1bef0bb5c849434933fd6213008ec583c8e31ee5b8e99c7c8500"}, - {file = "lxml-5.2.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f2cb157e279d28c66b1c27e0948687dc31dc47d1ab10ce0cd292a8334b7de3d5"}, - {file = "lxml-5.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:53c0e56f41ef68c1ce4e96f27ecdc2df389730391a2fd45439eb3facb02d36c8"}, - {file = "lxml-5.2.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703d60e59ab45c17485c2c14b11880e4f7f0eab07134afa9007573fa5a779a5a"}, - {file = "lxml-5.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaf5e308a5e50bc0548c4fdca0117a31ec9596f8cfc96592db170bcecc71a957"}, - {file = "lxml-5.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af64df85fecd3cf3b2e792f0b5b4d92740905adfa8ce3b24977a55415f1a0c40"}, - {file = "lxml-5.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:df7dfbdef11702fd22c2eaf042d7098d17edbc62d73f2199386ad06cbe466f6d"}, - {file = "lxml-5.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7250030a7835bfd5ba6ca7d1ad483ec90f9cbc29978c5e75c1cc3e031d3c4160"}, - {file = "lxml-5.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:be5faa2d5c8c8294d770cfd09d119fb27b5589acc59635b0cf90f145dbe81dca"}, - {file = "lxml-5.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:347ec08250d5950f5b016caa3e2e13fb2cb9714fe6041d52e3716fb33c208663"}, - {file = "lxml-5.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:dc7b630c4fb428b8a40ddd0bfc4bc19de11bb3c9b031154f77360e48fe8b4451"}, - {file = "lxml-5.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ae550cbd7f229cdf2841d9b01406bcca379a5fb327b9efb53ba620a10452e835"}, - {file = "lxml-5.2.0-cp312-cp312-win32.whl", hash = "sha256:7c61ce3cdd6e6c9f4003ac118be7eb3036d0ce2afdf23929e533e54482780f74"}, - {file = "lxml-5.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:f90c36ca95a44d2636bbf55a51ca30583b59b71b6547b88d954e029598043551"}, - {file = "lxml-5.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1cce2eaad7e38b985b0f91f18468dda0d6b91862d32bec945b0e46e2ffe7222e"}, - {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:60a3983d32f722a8422c01e4dc4badc7a307ca55c59e2485d0e14244a52c482f"}, - {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60847dfbdfddf08a56c4eefe48234e8c1ab756c7eda4a2a7c1042666a5516564"}, - {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbe335f0d1a86391671d975a1b5e9b08bb72fba6b567c43bdc2e55ca6e6c086"}, - {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_28_aarch64.whl", hash = "sha256:3ac7c8a60b8ad51fe7bca99a634dd625d66492c502fd548dc6dc769ce7d94b6a"}, - {file = "lxml-5.2.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:73e69762cf740ac3ae81137ef9d6f15f93095f50854e233d50b29e7b8a91dbc6"}, - {file = "lxml-5.2.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:281ee1ffeb0ab06204dfcd22a90e9003f0bb2dab04101ad983d0b1773bc10588"}, - {file = "lxml-5.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ba3a86b0d5a5c93104cb899dff291e3ae13729c389725a876d00ef9696de5425"}, - {file = "lxml-5.2.0-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:356f8873b1e27b81793e30144229adf70f6d3e36e5cb7b6d289da690f4398953"}, - {file = "lxml-5.2.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:2a34e74ffe92c413f197ff4967fb1611d938ee0691b762d062ef0f73814f3aa4"}, - {file = "lxml-5.2.0-cp36-cp36m-win32.whl", hash = "sha256:6f0d2b97a5a06c00c963d4542793f3e486b1ed3a957f8c19f6006ed39d104bb0"}, - {file = "lxml-5.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:35e39c6fd089ad6674eb52d93aa874d6027b3ae44d2381cca6e9e4c2e102c9c8"}, - {file = "lxml-5.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5f6e4e5a62114ae76690c4a04c5108d067442d0a41fd092e8abd25af1288c450"}, - {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93eede9bcc842f891b2267c7f0984d811940d1bc18472898a1187fe560907a99"}, - {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ad364026c2cebacd7e01d1138bd53639822fefa8f7da90fc38cd0e6319a2699"}, - {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f06e4460e76468d99cc36d5b9bc6fc5f43e6662af44960e13e3f4e040aacb35"}, - {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:ca3236f31d565555139d5b00b790ed2a98ac6f0c4470c4032f8b5e5a5dba3c1a"}, - {file = "lxml-5.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:a9b67b850ab1d304cb706cf71814b0e0c3875287083d7ec55ee69504a9c48180"}, - {file = "lxml-5.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5261c858c390ae9a19aba96796948b6a2d56649cbd572968970dc8da2b2b2a42"}, - {file = "lxml-5.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e8359fb610c8c444ac473cfd82dae465f405ff807cabb98a9b9712bbd0028751"}, - {file = "lxml-5.2.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:f9e27841cddfaebc4e3ffbe5dbdff42891051acf5befc9f5323944b2c61cef16"}, - {file = "lxml-5.2.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:641a8da145aca67671205f3e89bfec9815138cf2fe06653c909eab42e486d373"}, - {file = "lxml-5.2.0-cp37-cp37m-win32.whl", hash = "sha256:931a3a13e0f574abce8f3152b207938a54304ccf7a6fd7dff1fdb2f6691d08af"}, - {file = "lxml-5.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:246c93e2503c710cf02c7e9869dc0258223cbefe5e8f9ecded0ac0aa07fd2bf8"}, - {file = "lxml-5.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:11acfcdf5a38cf89c48662123a5d02ae0a7d99142c7ee14ad90de5c96a9b6f06"}, - {file = "lxml-5.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:200f70b5d95fc79eb9ed7f8c4888eef4e274b9bf380b829d3d52e9ed962e9231"}, - {file = "lxml-5.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba4d02aed47c25be6775a40d55c5774327fdedba79871b7c2485e80e45750cb2"}, - {file = "lxml-5.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e283b24c14361fe9e04026a1d06c924450415491b83089951d469509900d9f32"}, - {file = "lxml-5.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:03e3962d6ad13a862dacd5b3a3ea60b4d092a550f36465234b8639311fd60989"}, - {file = "lxml-5.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6e45fd5213e5587a610b7e7c8c5319a77591ab21ead42df46bb342e21bc1418d"}, - {file = "lxml-5.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:27877732946843f4b6bfc56eb40d865653eef34ad2edeed16b015d5c29c248df"}, - {file = "lxml-5.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4d16b44ad0dd8c948129639e34c8d301ad87ebc852568ace6fe9a5ad9ce67ee1"}, - {file = "lxml-5.2.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b8f842df9ba26135c5414e93214e04fe0af259bb4f96a32f756f89467f7f3b45"}, - {file = "lxml-5.2.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c74e77df9e36c8c91157853e6cd400f6f9ca7a803ba89981bfe3f3fc7e5651ef"}, - {file = "lxml-5.2.0-cp38-cp38-win32.whl", hash = "sha256:1459a998c10a99711ac532abe5cc24ba354e4396dafef741c7797f8830712d56"}, - {file = "lxml-5.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:a00f5931b7cccea775123c3c0a2513aee58afdad8728550cc970bff32280bdd2"}, - {file = "lxml-5.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ddda5ba8831f258ac7e6364be03cb27aa62f50c67fd94bc1c3b6247959cc0369"}, - {file = "lxml-5.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:56835b9e9a7767202fae06310c6b67478963e535fe185bed3bf9af5b18d2b67e"}, - {file = "lxml-5.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25fef8794f0dc89f01bdd02df6a7fec4bcb2fbbe661d571e898167a83480185e"}, - {file = "lxml-5.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32d44af078485c4da9a7ec460162392d49d996caf89516fa0b75ad0838047122"}, - {file = "lxml-5.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f354d62345acdf22aa3e171bd9723790324a66fafe61bfe3873b86724cf6daaa"}, - {file = "lxml-5.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6a7e0935f05e1cf1a3aa1d49a87505773b04f128660eac2a24a5594ea6b1baa7"}, - {file = "lxml-5.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:75a4117b43694c72a0d89f6c18a28dc57407bde4650927d4ef5fd384bdf6dcc7"}, - {file = "lxml-5.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:57402d6cdd8a897ce21cf8d1ff36683583c17a16322a321184766c89a1980600"}, - {file = "lxml-5.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:56591e477bea531e5e1854f5dfb59309d5708669bc921562a35fd9ca5182bdcd"}, - {file = "lxml-5.2.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7efbce96719aa275d49ad5357886845561328bf07e1d5ab998f4e3066c5ccf15"}, - {file = "lxml-5.2.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a3c39def0965e8fb5c8d50973e0c7b4ce429a2fa730f3f9068a7f4f9ce78410b"}, - {file = "lxml-5.2.0-cp39-cp39-win32.whl", hash = "sha256:5188f22c00381cb44283ecb28c8d85c2db4a3035774dd851876c8647cb809c27"}, - {file = "lxml-5.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:ed1fe80e1fcdd1205a443bddb1ad3c3135bb1cd3f36cc996a1f4aed35960fbe8"}, - {file = "lxml-5.2.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d2b339fb790fc923ae2e9345c8633e3d0064d37ea7920c027f20c8ae6f65a91f"}, - {file = "lxml-5.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06036d60fccb21e22dd167f6d0e422b9cbdf3588a7e999a33799f9cbf01e41a5"}, - {file = "lxml-5.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a1611fb9de0a269c05575c024e6d8cdf2186e3fa52b364e3b03dcad82514d57"}, - {file = "lxml-5.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:05fc3720250d221792b6e0d150afc92d20cb10c9cdaa8c8f93c2a00fbdd16015"}, - {file = "lxml-5.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:11e41ffd3cd27b0ca1c76073b27bd860f96431d9b70f383990f1827ca19f2f52"}, - {file = "lxml-5.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0382e6a3eefa3f6699b14fa77c2eb32af2ada261b75120eaf4fc028a20394975"}, - {file = "lxml-5.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be5c8e776ecbcf8c1bce71a7d90e3a3680c9ceae516cac0be08b47e9fac0ca43"}, - {file = "lxml-5.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da12b4efc93d53068888cb3b58e355b31839f2428b8f13654bd25d68b201c240"}, - {file = "lxml-5.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f46f8033da364bacc74aca5e319509a20bb711c8a133680ca5f35020f9eaf025"}, - {file = "lxml-5.2.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:50a26f68d090594477df8572babac64575cd5c07373f7a8319c527c8e56c0f99"}, - {file = "lxml-5.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:57cbadf028727705086047994d2e50124650e63ce5a035b0aa79ab50f001989f"}, - {file = "lxml-5.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8aa11638902ac23f944f16ce45c9f04c9d5d57bb2da66822abb721f4efe5fdbb"}, - {file = "lxml-5.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b7150e630b879390e02121e71ceb1807f682b88342e2ea2082e2c8716cf8bd93"}, - {file = "lxml-5.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4add722393c99da4d51c8d9f3e1ddf435b30677f2d9ba9aeaa656f23c1b7b580"}, - {file = "lxml-5.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd0f25a431cd16f70ec1c47c10b413e7ddfe1ccaaddd1a7abd181e507c012374"}, - {file = "lxml-5.2.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:883e382695f346c2ea3ad96bdbdf4ca531788fbeedb4352be3a8fcd169fc387d"}, - {file = "lxml-5.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:80cc2b55bb6e35d3cb40936b658837eb131e9f16357241cd9ba106ae1e9c5ecb"}, - {file = "lxml-5.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:59ec2948385336e9901008fdf765780fe30f03e7fdba8090aafdbe5d1b7ea0cd"}, - {file = "lxml-5.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ddbea6e58cce1a640d9d65947f1e259423fc201c9cf9761782f355f53b7f3097"}, - {file = "lxml-5.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52d6cdea438eb7282c41c5ac00bd6d47d14bebb6e8a8d2a1c168ed9e0cacfbab"}, - {file = "lxml-5.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c556bbf88a8b667c849d326dd4dd9c6290ede5a33383ffc12b0ed17777f909d"}, - {file = "lxml-5.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:947fa8bf15d1c62c6db36c6ede9389cac54f59af27010251747f05bddc227745"}, - {file = "lxml-5.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e6cb8f7a332eaa2d876b649a748a445a38522e12f2168e5e838d1505a91cdbb7"}, - {file = "lxml-5.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:16e65223f34fd3d65259b174f0f75a4bb3d9893698e5e7d01e54cd8c5eb98d85"}, - {file = "lxml-5.2.0.tar.gz", hash = "sha256:21dc490cdb33047bc7f7ad76384f3366fa8f5146b86cc04c4af45de901393b90"}, + {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1"}, + {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1"}, + {file = "lxml-5.2.1-cp310-cp310-win32.whl", hash = "sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5"}, + {file = "lxml-5.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f"}, + {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867"}, + {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534"}, + {file = "lxml-5.2.1-cp311-cp311-win32.whl", hash = "sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be"}, + {file = "lxml-5.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102"}, + {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851"}, + {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4"}, + {file = "lxml-5.2.1-cp312-cp312-win32.whl", hash = "sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134"}, + {file = "lxml-5.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a"}, + {file = "lxml-5.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_s390x.whl", hash = "sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461"}, + {file = "lxml-5.2.1-cp36-cp36m-win32.whl", hash = "sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0"}, + {file = "lxml-5.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289"}, + {file = "lxml-5.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, + {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, + {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637"}, + {file = "lxml-5.2.1-cp38-cp38-win32.whl", hash = "sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da"}, + {file = "lxml-5.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806"}, + {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd"}, + {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188"}, + {file = "lxml-5.2.1-cp39-cp39-win32.whl", hash = "sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708"}, + {file = "lxml-5.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704"}, + {file = "lxml-5.2.1.tar.gz", hash = "sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306"}, ] [package.extras] @@ -2153,39 +2195,39 @@ files = [ [[package]] name = "matplotlib" -version = "3.8.3" +version = "3.8.4" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.8.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cf60138ccc8004f117ab2a2bad513cc4d122e55864b4fe7adf4db20ca68a078f"}, - {file = "matplotlib-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f557156f7116be3340cdeef7f128fa99b0d5d287d5f41a16e169819dcf22357"}, - {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f386cf162b059809ecfac3bcc491a9ea17da69fa35c8ded8ad154cd4b933d5ec"}, - {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3c5f96f57b0369c288bf6f9b5274ba45787f7e0589a34d24bdbaf6d3344632f"}, - {file = "matplotlib-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:83e0f72e2c116ca7e571c57aa29b0fe697d4c6425c4e87c6e994159e0c008635"}, - {file = "matplotlib-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c5c8290074ba31a41db1dc332dc2b62def469ff33766cbe325d32a3ee291aea"}, - {file = "matplotlib-3.8.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5184e07c7e1d6d1481862ee361905b7059f7fe065fc837f7c3dc11eeb3f2f900"}, - {file = "matplotlib-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d7e7e0993d0758933b1a241a432b42c2db22dfa37d4108342ab4afb9557cbe3e"}, - {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04b36ad07eac9740fc76c2aa16edf94e50b297d6eb4c081e3add863de4bb19a7"}, - {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c42dae72a62f14982f1474f7e5c9959fc4bc70c9de11cc5244c6e766200ba65"}, - {file = "matplotlib-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf5932eee0d428192c40b7eac1399d608f5d995f975cdb9d1e6b48539a5ad8d0"}, - {file = "matplotlib-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:40321634e3a05ed02abf7c7b47a50be50b53ef3eaa3a573847431a545585b407"}, - {file = "matplotlib-3.8.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:09074f8057917d17ab52c242fdf4916f30e99959c1908958b1fc6032e2d0f6d4"}, - {file = "matplotlib-3.8.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5745f6d0fb5acfabbb2790318db03809a253096e98c91b9a31969df28ee604aa"}, - {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97653d869a71721b639714b42d87cda4cfee0ee74b47c569e4874c7590c55c5"}, - {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:242489efdb75b690c9c2e70bb5c6550727058c8a614e4c7716f363c27e10bba1"}, - {file = "matplotlib-3.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:83c0653c64b73926730bd9ea14aa0f50f202ba187c307a881673bad4985967b7"}, - {file = "matplotlib-3.8.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef6c1025a570354297d6c15f7d0f296d95f88bd3850066b7f1e7b4f2f4c13a39"}, - {file = "matplotlib-3.8.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c4af3f7317f8a1009bbb2d0bf23dfaba859eb7dd4ccbd604eba146dccaaaf0a4"}, - {file = "matplotlib-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c6e00a65d017d26009bac6808f637b75ceade3e1ff91a138576f6b3065eeeba"}, - {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7b49ab49a3bea17802df6872f8d44f664ba8f9be0632a60c99b20b6db2165b7"}, - {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6728dde0a3997396b053602dbd907a9bd64ec7d5cf99e728b404083698d3ca01"}, - {file = "matplotlib-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:813925d08fb86aba139f2d31864928d67511f64e5945ca909ad5bc09a96189bb"}, - {file = "matplotlib-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:cd3a0c2be76f4e7be03d34a14d49ded6acf22ef61f88da600a18a5cd8b3c5f3c"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fa93695d5c08544f4a0dfd0965f378e7afc410d8672816aff1e81be1f45dbf2e"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9764df0e8778f06414b9d281a75235c1e85071f64bb5d71564b97c1306a2afc"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5e431a09e6fab4012b01fc155db0ce6dccacdbabe8198197f523a4ef4805eb26"}, - {file = "matplotlib-3.8.3.tar.gz", hash = "sha256:7b416239e9ae38be54b028abbf9048aff5054a9aba5416bef0bd17f9162ce161"}, + {file = "matplotlib-3.8.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:abc9d838f93583650c35eca41cfcec65b2e7cb50fd486da6f0c49b5e1ed23014"}, + {file = "matplotlib-3.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f65c9f002d281a6e904976007b2d46a1ee2bcea3a68a8c12dda24709ddc9106"}, + {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce1edd9f5383b504dbc26eeea404ed0a00656c526638129028b758fd43fc5f10"}, + {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd79298550cba13a43c340581a3ec9c707bd895a6a061a78fa2524660482fc0"}, + {file = "matplotlib-3.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:90df07db7b599fe7035d2f74ab7e438b656528c68ba6bb59b7dc46af39ee48ef"}, + {file = "matplotlib-3.8.4-cp310-cp310-win_amd64.whl", hash = "sha256:ac24233e8f2939ac4fd2919eed1e9c0871eac8057666070e94cbf0b33dd9c338"}, + {file = "matplotlib-3.8.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661"}, + {file = "matplotlib-3.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c"}, + {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6addbd5b488aedb7f9bc19f91cd87ea476206f45d7116fcfe3d31416702a82fa"}, + {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71"}, + {file = "matplotlib-3.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b7a2a253d3b36d90c8993b4620183b55665a429da8357a4f621e78cd48b2b30b"}, + {file = "matplotlib-3.8.4-cp311-cp311-win_amd64.whl", hash = "sha256:8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae"}, + {file = "matplotlib-3.8.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6485ac1f2e84676cff22e693eaa4fbed50ef5dc37173ce1f023daef4687df616"}, + {file = "matplotlib-3.8.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c89ee9314ef48c72fe92ce55c4e95f2f39d70208f9f1d9db4e64079420d8d732"}, + {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50bac6e4d77e4262c4340d7a985c30912054745ec99756ce213bfbc3cb3808eb"}, + {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f51c4c869d4b60d769f7b4406eec39596648d9d70246428745a681c327a8ad30"}, + {file = "matplotlib-3.8.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b12ba985837e4899b762b81f5b2845bd1a28f4fdd1a126d9ace64e9c4eb2fb25"}, + {file = "matplotlib-3.8.4-cp312-cp312-win_amd64.whl", hash = "sha256:7a6769f58ce51791b4cb8b4d7642489df347697cd3e23d88266aaaee93b41d9a"}, + {file = "matplotlib-3.8.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6"}, + {file = "matplotlib-3.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67"}, + {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb44f53af0a62dc80bba4443d9b27f2fde6acfdac281d95bc872dc148a6509cc"}, + {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9"}, + {file = "matplotlib-3.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54"}, + {file = "matplotlib-3.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0"}, + {file = "matplotlib-3.8.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423c9a20fd35"}, + {file = "matplotlib-3.8.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f"}, + {file = "matplotlib-3.8.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94"}, + {file = "matplotlib-3.8.4.tar.gz", hash = "sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea"}, ] [package.dependencies] @@ -2193,7 +2235,7 @@ contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" kiwisolver = ">=1.3.1" -numpy = ">=1.21,<2" +numpy = ">=1.21" packaging = ">=20.0" pillow = ">=8" pyparsing = ">=2.3.1" @@ -6975,86 +7017,86 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rubicon-objc" -version = "0.4.7" +version = "0.4.8" description = "A bridge between an Objective C runtime environment and Python." optional = false python-versions = ">=3.8" files = [ - {file = "rubicon-objc-0.4.7.tar.gz", hash = "sha256:be937d864bd1229f860defabb89b40c53634eedc36448d89ad3c14eb3286e509"}, - {file = "rubicon_objc-0.4.7-py3-none-any.whl", hash = "sha256:f37108e35d5da1a78ab3eed2d03b095934f5f618329a939e4bd2ada9894eff6e"}, + {file = "rubicon-objc-0.4.8.tar.gz", hash = "sha256:f7bede0f0e73dde07083785984c75b3acf76116298743758ea5c51b3ebb81978"}, + {file = "rubicon_objc-0.4.8-py3-none-any.whl", hash = "sha256:59633f622e3c6e740bd9b3c4b60d0258fc2d30632b05d46cba12fae69539cfd3"}, ] [package.extras] -dev = ["pre-commit (==3.5.0)", "pytest (==7.4.2)", "pytest-tldr (==0.2.5)", "setuptools-scm[toml] (==8.0.4)", "tox (==4.11.3)"] -docs = ["furo (==2023.9.10)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx (==7.2.6)", "sphinx-autobuild (==2021.3.14)", "sphinx-copybutton (==0.5.2)", "sphinx-tabs (==3.4.1)", "sphinxcontrib-spelling (==8.0.0)"] +dev = ["pre-commit (==3.5.0)", "pre-commit (==3.7.0)", "pytest (==8.1.1)", "pytest-tldr (==0.2.5)", "setuptools-scm (==8.0.4)", "tox (==4.14.2)"] +docs = ["furo (==2024.1.29)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx (==7.2.6)", "sphinx-autobuild (==2021.3.14)", "sphinx-autobuild (==2024.2.4)", "sphinx-copybutton (==0.5.2)", "sphinx-tabs (==3.4.5)", "sphinxcontrib-spelling (==8.0.0)"] [[package]] name = "ruff" -version = "0.3.4" +version = "0.3.5" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.3.4-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:60c870a7d46efcbc8385d27ec07fe534ac32f3b251e4fc44b3cbfd9e09609ef4"}, - {file = "ruff-0.3.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6fc14fa742e1d8f24910e1fff0bd5e26d395b0e0e04cc1b15c7c5e5fe5b4af91"}, - {file = "ruff-0.3.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3ee7880f653cc03749a3bfea720cf2a192e4f884925b0cf7eecce82f0ce5854"}, - {file = "ruff-0.3.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf133dd744f2470b347f602452a88e70dadfbe0fcfb5fd46e093d55da65f82f7"}, - {file = "ruff-0.3.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f3860057590e810c7ffea75669bdc6927bfd91e29b4baa9258fd48b540a4365"}, - {file = "ruff-0.3.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:986f2377f7cf12efac1f515fc1a5b753c000ed1e0a6de96747cdf2da20a1b369"}, - {file = "ruff-0.3.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fd98e85869603e65f554fdc5cddf0712e352fe6e61d29d5a6fe087ec82b76c"}, - {file = "ruff-0.3.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64abeed785dad51801b423fa51840b1764b35d6c461ea8caef9cf9e5e5ab34d9"}, - {file = "ruff-0.3.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df52972138318bc7546d92348a1ee58449bc3f9eaf0db278906eb511889c4b50"}, - {file = "ruff-0.3.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:98e98300056445ba2cc27d0b325fd044dc17fcc38e4e4d2c7711585bd0a958ed"}, - {file = "ruff-0.3.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:519cf6a0ebed244dce1dc8aecd3dc99add7a2ee15bb68cf19588bb5bf58e0488"}, - {file = "ruff-0.3.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:bb0acfb921030d00070539c038cd24bb1df73a2981e9f55942514af8b17be94e"}, - {file = "ruff-0.3.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cf187a7e7098233d0d0c71175375c5162f880126c4c716fa28a8ac418dcf3378"}, - {file = "ruff-0.3.4-py3-none-win32.whl", hash = "sha256:af27ac187c0a331e8ef91d84bf1c3c6a5dea97e912a7560ac0cef25c526a4102"}, - {file = "ruff-0.3.4-py3-none-win_amd64.whl", hash = "sha256:de0d5069b165e5a32b3c6ffbb81c350b1e3d3483347196ffdf86dc0ef9e37dd6"}, - {file = "ruff-0.3.4-py3-none-win_arm64.whl", hash = "sha256:6810563cc08ad0096b57c717bd78aeac888a1bfd38654d9113cb3dc4d3f74232"}, - {file = "ruff-0.3.4.tar.gz", hash = "sha256:f0f4484c6541a99862b693e13a151435a279b271cff20e37101116a21e2a1ad1"}, + {file = "ruff-0.3.5-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:aef5bd3b89e657007e1be6b16553c8813b221ff6d92c7526b7e0227450981eac"}, + {file = "ruff-0.3.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:89b1e92b3bd9fca249153a97d23f29bed3992cff414b222fcd361d763fc53f12"}, + {file = "ruff-0.3.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e55771559c89272c3ebab23326dc23e7f813e492052391fe7950c1a5a139d89"}, + {file = "ruff-0.3.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dabc62195bf54b8a7876add6e789caae0268f34582333cda340497c886111c39"}, + {file = "ruff-0.3.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a05f3793ba25f194f395578579c546ca5d83e0195f992edc32e5907d142bfa3"}, + {file = "ruff-0.3.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:dfd3504e881082959b4160ab02f7a205f0fadc0a9619cc481982b6837b2fd4c0"}, + {file = "ruff-0.3.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87258e0d4b04046cf1d6cc1c56fadbf7a880cc3de1f7294938e923234cf9e498"}, + {file = "ruff-0.3.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:712e71283fc7d9f95047ed5f793bc019b0b0a29849b14664a60fd66c23b96da1"}, + {file = "ruff-0.3.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a532a90b4a18d3f722c124c513ffb5e5eaff0cc4f6d3aa4bda38e691b8600c9f"}, + {file = "ruff-0.3.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:122de171a147c76ada00f76df533b54676f6e321e61bd8656ae54be326c10296"}, + {file = "ruff-0.3.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d80a6b18a6c3b6ed25b71b05eba183f37d9bc8b16ace9e3d700997f00b74660b"}, + {file = "ruff-0.3.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a7b6e63194c68bca8e71f81de30cfa6f58ff70393cf45aab4c20f158227d5936"}, + {file = "ruff-0.3.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a759d33a20c72f2dfa54dae6e85e1225b8e302e8ac655773aff22e542a300985"}, + {file = "ruff-0.3.5-py3-none-win32.whl", hash = "sha256:9d8605aa990045517c911726d21293ef4baa64f87265896e491a05461cae078d"}, + {file = "ruff-0.3.5-py3-none-win_amd64.whl", hash = "sha256:dc56bb16a63c1303bd47563c60482a1512721053d93231cf7e9e1c6954395a0e"}, + {file = "ruff-0.3.5-py3-none-win_arm64.whl", hash = "sha256:faeeae9905446b975dcf6d4499dc93439b131f1443ee264055c5716dd947af55"}, + {file = "ruff-0.3.5.tar.gz", hash = "sha256:a067daaeb1dc2baf9b82a32dae67d154d95212080c80435eb052d95da647763d"}, ] [[package]] name = "scipy" -version = "1.12.0" +version = "1.13.0" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, - {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, - {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, - {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, - {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, - {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, - {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, - {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, - {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, - {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, - {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, - {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, - {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, - {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, - {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, - {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, - {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, - {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, - {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, - {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, - {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, - {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, - {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, - {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, - {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, + {file = "scipy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d"}, + {file = "scipy-1.13.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e"}, + {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922"}, + {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4"}, + {file = "scipy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9"}, + {file = "scipy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd"}, + {file = "scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa"}, + {file = "scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5"}, + {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7"}, + {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d"}, + {file = "scipy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c"}, + {file = "scipy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6"}, + {file = "scipy-1.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b"}, + {file = "scipy-1.13.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551"}, + {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a"}, + {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42"}, + {file = "scipy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820"}, + {file = "scipy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21"}, + {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"}, + {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"}, + {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"}, + {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"}, + {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"}, + {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"}, + {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"}, ] [package.dependencies] -numpy = ">=1.22.4,<1.29.0" +numpy = ">=1.22.4,<2.3" [package.extras] -dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] -doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] -test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.12.0)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] +test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "scons" @@ -7090,13 +7132,13 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "1.44.0" +version = "1.44.1" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.44.0.tar.gz", hash = "sha256:f7125a9235795811962d52ff796dc032cd1d0dd98b59beaced8380371cd9c13c"}, - {file = "sentry_sdk-1.44.0-py2.py3-none-any.whl", hash = "sha256:eb65289da013ca92fad2694851ad2f086aa3825e808dc285bd7dcaf63602bb18"}, + {file = "sentry-sdk-1.44.1.tar.gz", hash = "sha256:24e6a53eeabffd2f95d952aa35ca52f0f4201d17f820ac9d3ff7244c665aaf68"}, + {file = "sentry_sdk-1.44.1-py2.py3-none-any.whl", hash = "sha256:5f75eb91d8ab6037c754a87b8501cc581b2827e923682f593bed3539ce5b3999"}, ] [package.dependencies] @@ -7659,13 +7701,13 @@ telegram = ["requests"] [[package]] name = "types-requests" -version = "2.31.0.20240311" +version = "2.31.0.20240406" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240311.tar.gz", hash = "sha256:b1c1b66abfb7fa79aae09097a811c4aa97130eb8831c60e47aee4ca344731ca5"}, - {file = "types_requests-2.31.0.20240311-py3-none-any.whl", hash = "sha256:47872893d65a38e282ee9f277a4ee50d1b28bd592040df7d1fdaffdf3779937d"}, + {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, + {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, ] [package.dependencies] @@ -7684,13 +7726,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.11.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, ] [[package]] From 325dab639333dac36ca2115a97a56e1d43a556e6 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 8 Apr 2024 11:51:12 -0700 Subject: [PATCH 377/599] [bot] Fingerprints: add missing FW versions from new users (#32115) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index e4a4bcdfa4..6f8d6474e2 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -487,6 +487,7 @@ FW_VERSIONS = { b'68552790AA', b'68552791AB', b'68552794AA', + b'68552794AD', b'68585106AB', b'68585107AB', b'68585108AB', @@ -496,6 +497,7 @@ FW_VERSIONS = { (Ecu.engine, 0x7e0, None): [ b'05035699AG ', b'05035841AC ', + b'05035841AD ', b'05036026AB ', b'05036065AE ', b'05036066AE ', From 354cbe5a26502bf08370d5386400c0efb72fc9e9 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 9 Apr 2024 02:59:17 +0800 Subject: [PATCH 378/599] replay: use `clock_nanosleep` for precise waiting on the scale of nanoseconds (#32125) use clock_nanosleep --- tools/replay/util.cc | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/tools/replay/util.cc b/tools/replay/util.cc index b4f72d0530..acc018fdb4 100644 --- a/tools/replay/util.cc +++ b/tools/replay/util.cc @@ -304,20 +304,11 @@ std::string decompressBZ2(const std::byte *in, size_t in_size, std::atomic } void precise_nano_sleep(long sleep_ns) { - const long estimate_ns = 1 * 1e6; // 1ms - struct timespec req = {.tv_nsec = estimate_ns}; - uint64_t start_sleep = nanos_since_boot(); - while (sleep_ns > estimate_ns) { - nanosleep(&req, nullptr); - uint64_t end_sleep = nanos_since_boot(); - sleep_ns -= (end_sleep - start_sleep); - start_sleep = end_sleep; - } - // spin wait - if (sleep_ns > 0) { - while ((nanos_since_boot() - start_sleep) <= sleep_ns) { - std::this_thread::yield(); - } + struct timespec req = {.tv_sec = 0, .tv_nsec = sleep_ns}; + struct timespec rem = {}; + while (clock_nanosleep(CLOCK_MONOTONIC, 0, &req, &rem) && errno == EINTR) { + // Retry sleep if interrupted by a signal + req = rem; } } From 1788ecf7b1281e6b3d4325226860a513a0f6eab8 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 8 Apr 2024 12:25:33 -0700 Subject: [PATCH 379/599] unsparsify the agnos casync images (#32126) unsparse --- release/create_casync_agnos_release.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/release/create_casync_agnos_release.py b/release/create_casync_agnos_release.py index 2dff1f515d..c7f34ab154 100644 --- a/release/create_casync_agnos_release.py +++ b/release/create_casync_agnos_release.py @@ -3,7 +3,7 @@ import json import pathlib import tempfile from openpilot.common.basedir import BASEDIR -from openpilot.system.hardware.tici.agnos import StreamingDecompressor +from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop from openpilot.system.updated.casync.common import create_casync_from_file @@ -31,22 +31,15 @@ if __name__ == "__main__": print(f"creating casync agnos build from {entry}") downloader = StreamingDecompressor(entry['url']) - CHUNK_SIZE=16*1024*1024 # 16mb + parse_func = unsparsify if entry['sparse'] else noop + + parsed_chunks = parse_func(downloader) size = entry["size"] cur = 0 with open(entry_path, "wb") as f: - while True: - to_read = min((size - cur), CHUNK_SIZE) - - print(f"{cur/size*100:06.2f}% {to_read}") - - if not to_read: - break - - f.write(downloader.read(to_read)) - - cur += to_read + for chunk in parsed_chunks: + f.write(chunk) create_casync_from_file(entry_path, output_dir, f"agnos-{args.version}-{entry['name']}") From 3c9bf992a5998dde51e626ddd6998611011e44ef Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 8 Apr 2024 14:05:18 -0700 Subject: [PATCH 380/599] more helpers for e2e testing updated (#32128) casync test prereq --- selfdrive/test/helpers.py | 12 ++++++ selfdrive/updated/tests/test_base.py | 58 +++++++++++++++------------- selfdrive/updated/tests/test_git.py | 4 +- system/updated/common.py | 16 ++++++++ 4 files changed, 61 insertions(+), 29 deletions(-) create mode 100644 system/updated/common.py diff --git a/selfdrive/test/helpers.py b/selfdrive/test/helpers.py index 43eadd38f4..ce8918aec3 100644 --- a/selfdrive/test/helpers.py +++ b/selfdrive/test/helpers.py @@ -118,6 +118,18 @@ def with_http_server(func, handler=http.server.BaseHTTPRequestHandler, setup=Non def DirectoryHttpServer(directory) -> type[http.server.SimpleHTTPRequestHandler]: # creates an http server that serves files from directory class Handler(http.server.SimpleHTTPRequestHandler): + API_NO_RESPONSE = False + API_BAD_RESPONSE = False + + def do_GET(self): + if self.API_NO_RESPONSE: + return + + if self.API_BAD_RESPONSE: + self.send_response(500, "") + return + super().do_GET() + def __init__(self, *args, **kwargs): super().__init__(*args, directory=str(directory), **kwargs) diff --git a/selfdrive/updated/tests/test_base.py b/selfdrive/updated/tests/test_base.py index 1d81459883..1107a2d3b1 100644 --- a/selfdrive/updated/tests/test_base.py +++ b/selfdrive/updated/tests/test_base.py @@ -15,10 +15,11 @@ from openpilot.selfdrive.manager.process import ManagerProcess from openpilot.selfdrive.test.helpers import processes_context from openpilot.common.params import Params +from openpilot.system.updated.common import get_consistent_flag def run(args, **kwargs): - return subprocess.run(args, **kwargs, check=True) + return subprocess.check_output(args, **kwargs) def update_release(directory, name, version, agnos_version, release_notes): @@ -47,11 +48,6 @@ def get_version(path: str) -> str: return f.read().split('"')[1] -def get_consistent_flag(path: str) -> bool: - consistent_file = pathlib.Path(os.path.join(path, ".overlay_consistent")) - return consistent_file.is_file() - - @pytest.mark.slow # TODO: can we test overlayfs in GHA? class BaseUpdateTest(unittest.TestCase): @classmethod @@ -112,27 +108,6 @@ class BaseUpdateTest(unittest.TestCase): except Exception: print("cleanup failed...") - def send_check_for_updates_signal(self, updated: ManagerProcess): - updated.signal(signal.SIGUSR1.value) - - def send_download_signal(self, updated: ManagerProcess): - updated.signal(signal.SIGHUP.value) - - def _test_params(self, branch, fetch_available, update_available): - self.assertEqual(self.params.get("UpdaterTargetBranch", encoding="utf-8"), branch) - self.assertEqual(self.params.get_bool("UpdaterFetchAvailable"), fetch_available) - self.assertEqual(self.params.get_bool("UpdateAvailable"), update_available) - - def _test_finalized_update(self, branch, version, agnos_version, release_notes): - self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}")) - self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") - self.assertEqual(get_version(str(self.staging_root / "finalized")), version) - self.assertEqual(get_consistent_flag(str(self.staging_root / "finalized")), True) - self.assertTrue(os.access(str(self.staging_root / "finalized" / "launch_env.sh"), os.X_OK)) - - with open(self.staging_root / "finalized" / "test_symlink") as f: - self.assertIn(version, f.read()) - def wait_for_condition(self, condition, timeout=12): start = time.monotonic() while True: @@ -146,9 +121,38 @@ class BaseUpdateTest(unittest.TestCase): time.sleep(1) + def _test_finalized_update(self, branch, version, agnos_version, release_notes): + self.assertEqual(get_version(str(self.staging_root / "finalized")), version) + self.assertEqual(get_consistent_flag(str(self.staging_root / "finalized")), True) + self.assertTrue(os.access(str(self.staging_root / "finalized" / "launch_env.sh"), os.X_OK)) + + with open(self.staging_root / "finalized" / "test_symlink") as f: + self.assertIn(version, f.read()) + +class ParamsBaseUpdateTest(BaseUpdateTest): + def _test_finalized_update(self, branch, version, agnos_version, release_notes): + self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}")) + self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") + super()._test_finalized_update(branch, version, agnos_version, release_notes) + + def send_check_for_updates_signal(self, updated: ManagerProcess): + updated.signal(signal.SIGUSR1.value) + + def send_download_signal(self, updated: ManagerProcess): + updated.signal(signal.SIGHUP.value) + + def _test_params(self, branch, fetch_available, update_available): + self.assertEqual(self.params.get("UpdaterTargetBranch", encoding="utf-8"), branch) + self.assertEqual(self.params.get_bool("UpdaterFetchAvailable"), fetch_available) + self.assertEqual(self.params.get_bool("UpdateAvailable"), update_available) + def wait_for_idle(self): self.wait_for_condition(lambda: self.params.get("UpdaterState", encoding="utf-8") == "idle") + def wait_for_failed(self): + self.wait_for_condition(lambda: self.params.get("UpdateFailedCount", encoding="utf-8") is not None and \ + int(self.params.get("UpdateFailedCount", encoding="utf-8")) > 0) + def wait_for_fetch_available(self): self.wait_for_condition(lambda: self.params.get_bool("UpdaterFetchAvailable")) diff --git a/selfdrive/updated/tests/test_git.py b/selfdrive/updated/tests/test_git.py index 1a9c78242d..51ea77fb81 100644 --- a/selfdrive/updated/tests/test_git.py +++ b/selfdrive/updated/tests/test_git.py @@ -1,8 +1,8 @@ import contextlib -from openpilot.selfdrive.updated.tests.test_base import BaseUpdateTest, run, update_release +from openpilot.selfdrive.updated.tests.test_base import ParamsBaseUpdateTest, run, update_release -class TestUpdateDGitStrategy(BaseUpdateTest): +class TestUpdateDGitStrategy(ParamsBaseUpdateTest): def update_remote_release(self, release): update_release(self.remote_dir, release, *self.MOCK_RELEASES[release]) run(["git", "add", "."], cwd=self.remote_dir) diff --git a/system/updated/common.py b/system/updated/common.py new file mode 100644 index 0000000000..6bb745f6b0 --- /dev/null +++ b/system/updated/common.py @@ -0,0 +1,16 @@ +import os +import pathlib + + +def get_consistent_flag(path: str) -> bool: + consistent_file = pathlib.Path(os.path.join(path, ".overlay_consistent")) + return consistent_file.is_file() + +def set_consistent_flag(path: str, consistent: bool) -> None: + os.sync() + consistent_file = pathlib.Path(os.path.join(path, ".overlay_consistent")) + if consistent: + consistent_file.touch() + elif not consistent: + consistent_file.unlink(missing_ok=True) + os.sync() From 5352d6c7ab5381047349f95edb2c0941b86eb8a4 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 8 Apr 2024 14:18:36 -0700 Subject: [PATCH 381/599] Honda: remove combination meter (#32127) remove combination meter --- selfdrive/car/honda/fingerprints.py | 292 ---------------------------- selfdrive/car/honda/values.py | 3 +- 2 files changed, 1 insertion(+), 294 deletions(-) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index c1714fe810..cae5c44bc9 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -121,52 +121,6 @@ FW_VERSIONS = { b'77959-TWA-L420\x00\x00', b'77959-TWB-H220\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TBX-H310\x00\x00', - b'78109-TVA-A010\x00\x00', - b'78109-TVA-A020\x00\x00', - b'78109-TVA-A030\x00\x00', - b'78109-TVA-A110\x00\x00', - b'78109-TVA-A120\x00\x00', - b'78109-TVA-A130\x00\x00', - b'78109-TVA-A210\x00\x00', - b'78109-TVA-A220\x00\x00', - b'78109-TVA-A230\x00\x00', - b'78109-TVA-A310\x00\x00', - b'78109-TVA-C010\x00\x00', - b'78109-TVA-C130\x00\x00', - b'78109-TVA-L010\x00\x00', - b'78109-TVA-L210\x00\x00', - b'78109-TVA-R310\x00\x00', - b'78109-TVC-A010\x00\x00', - b'78109-TVC-A020\x00\x00', - b'78109-TVC-A030\x00\x00', - b'78109-TVC-A110\x00\x00', - b'78109-TVC-A130\x00\x00', - b'78109-TVC-A210\x00\x00', - b'78109-TVC-A220\x00\x00', - b'78109-TVC-A230\x00\x00', - b'78109-TVC-C010\x00\x00', - b'78109-TVC-C110\x00\x00', - b'78109-TVC-L010\x00\x00', - b'78109-TVC-L210\x00\x00', - b'78109-TVC-M510\x00\x00', - b'78109-TVC-YF10\x00\x00', - b'78109-TVE-H610\x00\x00', - b'78109-TWA-A010\x00\x00', - b'78109-TWA-A020\x00\x00', - b'78109-TWA-A030\x00\x00', - b'78109-TWA-A110\x00\x00', - b'78109-TWA-A120\x00\x00', - b'78109-TWA-A130\x00\x00', - b'78109-TWA-A210\x00\x00', - b'78109-TWA-A220\x00\x00', - b'78109-TWA-A230\x00\x00', - b'78109-TWA-A610\x00\x00', - b'78109-TWA-H210\x00\x00', - b'78109-TWA-L010\x00\x00', - b'78109-TWA-L210\x00\x00', - ], (Ecu.hud, 0x18da61f1, None): [ b'78209-TVA-A010\x00\x00', b'78209-TVA-A110\x00\x00', @@ -271,25 +225,6 @@ FW_VERSIONS = { b'77959-TBG-A030\x00\x00', b'77959-TEA-Q820\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TBA-A510\x00\x00', - b'78109-TBA-A520\x00\x00', - b'78109-TBA-A530\x00\x00', - b'78109-TBA-C310\x00\x00', - b'78109-TBA-C520\x00\x00', - b'78109-TBC-A310\x00\x00', - b'78109-TBC-A320\x00\x00', - b'78109-TBC-A510\x00\x00', - b'78109-TBC-A520\x00\x00', - b'78109-TBC-A530\x00\x00', - b'78109-TBC-C510\x00\x00', - b'78109-TBC-C520\x00\x00', - b'78109-TBC-C530\x00\x00', - b'78109-TBH-A510\x00\x00', - b'78109-TBH-A530\x00\x00', - b'78109-TED-Q510\x00\x00', - b'78109-TEG-A310\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-TBA-A020\x00\x00', b'36161-TBA-A030\x00\x00', @@ -420,40 +355,6 @@ FW_VERSIONS = { b'77959-TGG-J320\x00\x00', b'77959-TGG-Z820\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TBA-A110\x00\x00', - b'78109-TBA-A910\x00\x00', - b'78109-TBA-C340\x00\x00', - b'78109-TBA-C910\x00\x00', - b'78109-TBC-A740\x00\x00', - b'78109-TBC-C540\x00\x00', - b'78109-TBG-A110\x00\x00', - b'78109-TBH-A710\x00\x00', - b'78109-TEG-A720\x00\x00', - b'78109-TFJ-G020\x00\x00', - b'78109-TGG-9020\x00\x00', - b'78109-TGG-A210\x00\x00', - b'78109-TGG-A220\x00\x00', - b'78109-TGG-A310\x00\x00', - b'78109-TGG-A320\x00\x00', - b'78109-TGG-A330\x00\x00', - b'78109-TGG-A610\x00\x00', - b'78109-TGG-A620\x00\x00', - b'78109-TGG-A810\x00\x00', - b'78109-TGG-A820\x00\x00', - b'78109-TGG-C010\x00\x00', - b'78109-TGG-C220\x00\x00', - b'78109-TGG-E110\x00\x00', - b'78109-TGG-G030\x00\x00', - b'78109-TGG-G230\x00\x00', - b'78109-TGG-G410\x00\x00', - b'78109-TGK-Z410\x00\x00', - b'78109-TGL-G120\x00\x00', - b'78109-TGL-G130\x00\x00', - b'78109-TGL-G210\x00\x00', - b'78109-TGL-G230\x00\x00', - b'78109-TGL-GM10\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TBA-A150\x00\x00', b'36802-TBA-A160\x00\x00', @@ -509,10 +410,6 @@ FW_VERSIONS = { b'77959-TFK-G210\x00\x00', b'77959-TGN-G220\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TFK-G020\x00\x00', - b'78109-TGN-G120\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TFK-G130\x00\x00', b'36802-TGN-G130\x00\x00', @@ -537,11 +434,6 @@ FW_VERSIONS = { (Ecu.srs, 0x18da53f1, None): [ b'77959-T0A-A230\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T1W-A210\x00\x00', - b'78109-T1W-C210\x00\x00', - b'78109-T1X-A210\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-T1W-A830\x00\x00', b'36161-T1W-C830\x00\x00', @@ -622,25 +514,6 @@ FW_VERSIONS = { b'46114-TLA-A930\x00\x00', b'46114-TMC-U020\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TLA-A020\x00\x00', - b'78109-TLA-A110\x00\x00', - b'78109-TLA-A120\x00\x00', - b'78109-TLA-A210\x00\x00', - b'78109-TLA-A220\x00\x00', - b'78109-TLA-C020\x00\x00', - b'78109-TLA-C110\x00\x00', - b'78109-TLA-C210\x00\x00', - b'78109-TLA-C310\x00\x00', - b'78109-TLB-A020\x00\x00', - b'78109-TLB-A110\x00\x00', - b'78109-TLB-A120\x00\x00', - b'78109-TLB-A210\x00\x00', - b'78109-TLB-A220\x00\x00', - b'78109-TMC-Q210\x00\x00', - b'78109-TMM-F210\x00\x00', - b'78109-TMM-M110\x00\x00', - ], (Ecu.gateway, 0x18daeff1, None): [ b'38897-TLA-A010\x00\x00', b'38897-TLA-A110\x00\x00', @@ -695,10 +568,6 @@ FW_VERSIONS = { b'28101-5LH-E120\x00\x00', b'28103-5LH-E100\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T1B-3050\x00\x00', - b'78109-T1V-G020\x00\x00', - ], (Ecu.srs, 0x18da53f1, None): [ b'77959-T1G-G940\x00\x00', ], @@ -729,12 +598,6 @@ FW_VERSIONS = { b'36161-TPG-A030\x00\x00', b'36161-TPG-A040\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TMB-H220\x00\x00', - b'78109-TPA-G520\x00\x00', - b'78109-TPG-A110\x00\x00', - b'78109-TPG-A210\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TMB-H040\x00\x00', b'36802-TPA-E040\x00\x00', @@ -760,12 +623,6 @@ FW_VERSIONS = { (Ecu.gateway, 0x18daeff1, None): [ b'38897-T5A-J010\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T5A-A210\x00\x00', - b'78109-T5A-A410\x00\x00', - b'78109-T5A-A420\x00\x00', - b'78109-T5A-A910\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-T5R-A040\x00\x00', b'36161-T5R-A240\x00\x00', @@ -787,10 +644,6 @@ FW_VERSIONS = { b'57114-TDK-J120\x00\x00', b'57114-TDK-J330\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TDK-J310\x00\x00', - b'78109-TDK-J320\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-TDK-J070\x00\x00', b'36161-TDK-J080\x00\x00', @@ -863,39 +716,6 @@ FW_VERSIONS = { b'57114-THR-A040\x00\x00', b'57114-THR-A110\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-THR-A220\x00\x00', - b'78109-THR-A230\x00\x00', - b'78109-THR-A420\x00\x00', - b'78109-THR-A430\x00\x00', - b'78109-THR-A720\x00\x00', - b'78109-THR-A730\x00\x00', - b'78109-THR-A820\x00\x00', - b'78109-THR-A830\x00\x00', - b'78109-THR-AB20\x00\x00', - b'78109-THR-AB30\x00\x00', - b'78109-THR-AB40\x00\x00', - b'78109-THR-AC20\x00\x00', - b'78109-THR-AC30\x00\x00', - b'78109-THR-AC40\x00\x00', - b'78109-THR-AC50\x00\x00', - b'78109-THR-AD30\x00\x00', - b'78109-THR-AE20\x00\x00', - b'78109-THR-AE30\x00\x00', - b'78109-THR-AE40\x00\x00', - b'78109-THR-AK10\x00\x00', - b'78109-THR-AL10\x00\x00', - b'78109-THR-AN10\x00\x00', - b'78109-THR-C220\x00\x00', - b'78109-THR-C320\x00\x00', - b'78109-THR-C330\x00\x00', - b'78109-THR-CE20\x00\x00', - b'78109-THR-CL10\x00\x00', - b'78109-THR-DA20\x00\x00', - b'78109-THR-DA30\x00\x00', - b'78109-THR-DA40\x00\x00', - b'78109-THR-K120\x00\x00', - ], (Ecu.shiftByWire, 0x18da0bf1, None): [ b'54008-THR-A020\x00\x00', ], @@ -907,9 +727,6 @@ FW_VERSIONS = { (Ecu.gateway, 0x18daeff1, None): [ b'38897-T6A-J010\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T6A-F310\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-T6A-P040\x00\x00', ], @@ -1015,44 +832,6 @@ FW_VERSIONS = { b'77959-TGS-A010\x00\x00', b'77959-TGS-A110\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TG7-A040\x00\x00', - b'78109-TG7-A050\x00\x00', - b'78109-TG7-A420\x00\x00', - b'78109-TG7-A520\x00\x00', - b'78109-TG7-A720\x00\x00', - b'78109-TG7-AJ10\x00\x00', - b'78109-TG7-AJ20\x00\x00', - b'78109-TG7-AK10\x00\x00', - b'78109-TG7-AK20\x00\x00', - b'78109-TG7-AM20\x00\x00', - b'78109-TG7-AP10\x00\x00', - b'78109-TG7-AP20\x00\x00', - b'78109-TG7-AS20\x00\x00', - b'78109-TG7-AT20\x00\x00', - b'78109-TG7-AU20\x00\x00', - b'78109-TG7-AW20\x00\x00', - b'78109-TG7-AX20\x00\x00', - b'78109-TG7-D020\x00\x00', - b'78109-TG7-DJ10\x00\x00', - b'78109-TG7-YK20\x00\x00', - b'78109-TG8-A420\x00\x00', - b'78109-TG8-A520\x00\x00', - b'78109-TG8-AJ10\x00\x00', - b'78109-TG8-AJ20\x00\x00', - b'78109-TG8-AK20\x00\x00', - b'78109-TG8-AS20\x00\x00', - b'78109-TGS-AB10\x00\x00', - b'78109-TGS-AC10\x00\x00', - b'78109-TGS-AD10\x00\x00', - b'78109-TGS-AJ20\x00\x00', - b'78109-TGS-AK20\x00\x00', - b'78109-TGS-AP20\x00\x00', - b'78109-TGS-AT20\x00\x00', - b'78109-TGS-AX20\x00\x00', - b'78109-TGT-AJ20\x00\x00', - b'78109-TGT-AK30\x00\x00', - ], (Ecu.vsa, 0x18da28f1, None): [ b'57114-TG7-A130\x00\x00', b'57114-TG7-A140\x00\x00', @@ -1083,12 +862,6 @@ FW_VERSIONS = { b'77959-TX4-C010\x00\x00', b'77959-TX4-C020\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TX4-A210\x00\x00', - b'78109-TX4-A310\x00\x00', - b'78109-TX5-A210\x00\x00', - b'78109-TX5-A310\x00\x00', - ], }, CAR.ACURA_RDX_3G: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ @@ -1138,24 +911,6 @@ FW_VERSIONS = { b'28102-5YL-A700\x00\x00', b'28102-5YL-A711\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TJB-A140\x00\x00', - b'78109-TJB-A240\x00\x00', - b'78109-TJB-A420\x00\x00', - 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\x00\x00', - b'78109-TJB-AU10\x00\x00', - b'78109-TJB-AW10\x00\x00', - b'78109-TJC-A240\x00\x00', - b'78109-TJC-A420\x00\x00', - b'78109-TJC-AA10\x00\x00', - b'78109-TJC-AD10\x00\x00', - b'78109-TJC-AF10\x00\x00', - ], (Ecu.srs, 0x18da53f1, None): [ b'77959-TJB-A040\x00\x00', b'77959-TJB-A120\x00\x00', @@ -1200,18 +955,6 @@ FW_VERSIONS = { b'38897-T6Z-A010\x00\x00', b'38897-T6Z-A110\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78108-T6Z-AF10\x00\x00', - b'78109-T6Z-A420\x00\x00', - b'78109-T6Z-A510\x00\x00', - b'78109-T6Z-A710\x00\x00', - b'78109-T6Z-A810\x00\x00', - b'78109-T6Z-A910\x00\x00', - b'78109-T6Z-AA10\x00\x00', - b'78109-T6Z-C620\x00\x00', - b'78109-T6Z-C910\x00\x00', - b'78109-TJZ-A510\x00\x00', - ], (Ecu.srs, 0x18da53f1, None): [ b'77959-T6Z-A020\x00\x00', ], @@ -1248,13 +991,6 @@ FW_VERSIONS = { (Ecu.gateway, 0x18daeff1, None): [ b'38897-TXM-A020\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TXM-A010\x00\x00', - b'78109-TXM-A020\x00\x00', - b'78109-TXM-A030\x00\x00', - b'78109-TXM-A110\x00\x00', - b'78109-TXM-C010\x00\x00', - ], }, CAR.HONDA_HRV: { (Ecu.gateway, 0x18daeff1, None): [ @@ -1273,14 +1009,6 @@ FW_VERSIONS = { (Ecu.srs, 0x18da53f1, None): [ b'77959-T7A-A230\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-THW-A110\x00\x00', - b'78109-THX-A110\x00\x00', - b'78109-THX-A120\x00\x00', - b'78109-THX-A210\x00\x00', - b'78109-THX-A220\x00\x00', - b'78109-THX-C220\x00\x00', - ], }, CAR.HONDA_HRV_3G: { (Ecu.eps, 0x18da30f1, None): [ @@ -1292,9 +1020,6 @@ FW_VERSIONS = { (Ecu.srs, 0x18da53f1, None): [ b'77959-3V0-A820\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78108-3V1-A220\x00\x00', - ], (Ecu.vsa, 0x18da28f1, None): [ b'57114-3W0-A040\x00\x00', ], @@ -1320,11 +1045,6 @@ FW_VERSIONS = { b'77959-TX6-A230\x00\x00', b'77959-TX6-C210\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T3R-A120\x00\x00', - b'78109-T3R-A410\x00\x00', - b'78109-TV9-A510\x00\x00', - ], }, CAR.HONDA_E: { (Ecu.eps, 0x18da30f1, None): [ @@ -1339,9 +1059,6 @@ FW_VERSIONS = { (Ecu.srs, 0x18da53f1, None): [ b'77959-TYF-G430\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78108-TYF-G610\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TYF-E030\x00\x00', ], @@ -1373,15 +1090,6 @@ FW_VERSIONS = { b'77959-T47-A940\x00\x00', b'77959-T47-A950\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78108-T21-A220\x00\x00', - b'78108-T21-A230\x00\x00', - b'78108-T21-A620\x00\x00', - b'78108-T21-A740\x00\x00', - b'78108-T21-MB10\x00\x00', - b'78108-T22-A020\x00\x00', - b'78108-T23-A110\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-T20-A060\x00\x00', b'36161-T20-A070\x00\x00', diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 4b0745a7cc..79a76ee2ac 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -307,8 +307,6 @@ FW_QUERY_CONFIG = FwQueryConfig( Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_2022, CAR.HONDA_E], Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT], - Ecu.combinationMeter: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_FIT, - CAR.HONDA_HRV, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY_CHN], Ecu.gateway: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_FIT, CAR.HONDA_FREED, CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_PILOT], @@ -319,6 +317,7 @@ FW_QUERY_CONFIG = FwQueryConfig( Ecu.hud: [CAR.HONDA_ACCORD], }, extra_ecus=[ + (Ecu.combinationMeter, 0x18da60f1, None), # The only other ECU on PT bus accessible by camera on radarless Civic # This is likely a manufacturer-specific sub-address implementation: the camera responds to this and 0x18dab0f1 # Unclear what the part number refers to: 8S103 is 'Camera Set Mono', while 36160 is 'Camera Monocular - Honda' From db10f9be640a858674cedb79937049d1bafc05f3 Mon Sep 17 00:00:00 2001 From: kesteve <33303520+kesteve@users.noreply.github.com> Date: Tue, 9 Apr 2024 06:29:09 +0800 Subject: [PATCH 382/599] Update Fingerprints for Kia Carnival 2023 in Taiwan (#32064) This is the 8 seater Kia Carnival (2023 Premium version) in Taiwan. Co-authored-by: Shane Smiskol --- selfdrive/car/hyundai/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index c693e71d1c..f3704524fc 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1080,6 +1080,7 @@ FW_VERSIONS = { }, CAR.KIA_CARNIVAL_4TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00KA4 MFC AT EUR LHD 1.00 1.06 99210-R0000 220221', b'\xf1\x00KA4 MFC AT KOR LHD 1.00 1.06 99210-R0000 220221', b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.00 99210-R0100 230105', b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.05 99210-R0000 201221', @@ -1087,6 +1088,7 @@ FW_VERSIONS = { b'\xf1\x00KA4CMFC AT CHN LHD 1.00 1.01 99211-I4000 210525', ], (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00KA4_ SCC F-CUP 1.00 1.03 99110-R0000 ', b'\xf1\x00KA4_ SCC FHCUP 1.00 1.00 99110-R0100 ', b'\xf1\x00KA4_ SCC FHCUP 1.00 1.03 99110-R0000 ', b'\xf1\x00KA4c SCC FHCUP 1.00 1.01 99110-I4000 ', From 16a473b3aadabfa9f9d0fa3988efeb7aea01affe Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 8 Apr 2024 15:42:31 -0700 Subject: [PATCH 383/599] debug: set OBD multiplexing mode for VIN (#32130) --- selfdrive/car/fw_versions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/fw_versions.py b/selfdrive/car/fw_versions.py index 386bbee3ac..d7444ebf7d 100755 --- a/selfdrive/car/fw_versions.py +++ b/selfdrive/car/fw_versions.py @@ -373,6 +373,7 @@ if __name__ == "__main__": t = time.time() print("Getting vin...") + set_obd_multiplexing(params, True) vin_rx_addr, vin_rx_bus, vin = get_vin(logcan, sendcan, (0, 1), retry=10, debug=args.debug) print(f'RX: {hex(vin_rx_addr)}, BUS: {vin_rx_bus}, VIN: {vin}') print(f"Getting VIN took {time.time() - t:.3f} s") From d114924a2c8494b8dadc0c0419e668980abce7c9 Mon Sep 17 00:00:00 2001 From: mitchellgoffpc Date: Mon, 8 Apr 2024 16:34:01 -0700 Subject: [PATCH 384/599] Added optional timeout on map_renderer.wait_ready --- selfdrive/navd/map_renderer.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/selfdrive/navd/map_renderer.py b/selfdrive/navd/map_renderer.py index 8d525ac73e..e44b883436 100755 --- a/selfdrive/navd/map_renderer.py +++ b/selfdrive/navd/map_renderer.py @@ -31,7 +31,8 @@ void map_renderer_free_image(void *inst, uint8_t *buf); return ffi, ffi.dlopen(lib) -def wait_ready(lib, renderer): +def wait_ready(lib, renderer, timeout=None): + st = time.time() while not lib.map_renderer_loaded(renderer): lib.map_renderer_update(renderer) @@ -40,6 +41,9 @@ def wait_ready(lib, renderer): time.sleep(0.01) + if timeout is not None and time.time() - st > timeout: + raise TimeoutError("Timeout waiting for map renderer to be ready") + def get_image(lib, renderer): buf = lib.map_renderer_get_image(renderer) From 22aa9a436dcd6434706931a78d6381e2fc66d78b Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 8 Apr 2024 16:36:13 -0700 Subject: [PATCH 385/599] VW: get VIN from camera without comma power (#31851) * add VW camera to VIN addrs * correct VW query * consistent * update refs --- selfdrive/car/tests/test_fw_fingerprint.py | 2 +- selfdrive/car/vin.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index eaef1677e7..4a17fc34ec 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -236,7 +236,7 @@ class TestFwFingerprintTiming(unittest.TestCase): def test_startup_timing(self): # Tests worse-case VIN query time and typical present ECU query time - vin_ref_times = {'worst': 1.2, 'best': 0.6} # best assumes we go through all queries to get a match + vin_ref_times = {'worst': 1.4, 'best': 0.7} # best assumes we go through all queries to get a match present_ecu_ref_time = 0.75 def fake_get_ecu_addrs(*_, timeout): diff --git a/selfdrive/car/vin.py b/selfdrive/car/vin.py index e668c35f7d..e8c9c58042 100755 --- a/selfdrive/car/vin.py +++ b/selfdrive/car/vin.py @@ -23,6 +23,7 @@ def get_vin(logcan, sendcan, buses, timeout=0.1, retry=2, debug=False): (StdQueries.OBD_VIN_REQUEST, StdQueries.OBD_VIN_RESPONSE, (0, 1), STANDARD_VIN_ADDRS, FUNCTIONAL_ADDRS, 0x8), (StdQueries.GM_VIN_REQUEST, StdQueries.GM_VIN_RESPONSE, (0,), [0x24b], None, 0x400), # Bolt fwdCamera (StdQueries.KWP_VIN_REQUEST, StdQueries.KWP_VIN_RESPONSE, (0,), [0x797], None, 0x3), # Nissan Leaf VCM + (StdQueries.UDS_VIN_REQUEST, StdQueries.UDS_VIN_RESPONSE, (0,), [0x74f], None, 0x6a), # Volkswagen fwdCamera ): if bus not in valid_buses: continue From b331e4a15b4d720bba59adbda51e8f78ab127382 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 8 Apr 2024 16:54:14 -0700 Subject: [PATCH 386/599] tool to create casync manifest (#32131) * manifest tool * newline * add to jenkins --- Jenkinsfile | 1 + release/create_casync_agnos_release.py | 4 +- release/create_release_manifest.py | 65 ++++++++++++++++++++++++++ system/hardware/tici/agnos.py | 2 + 4 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 release/create_release_manifest.py diff --git a/Jenkinsfile b/Jenkinsfile index 60e3c25008..8fe0e76ec0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -152,6 +152,7 @@ def build_release(String channel_name) { "${channel_name} (casync)": { deviceStage("build casync", "tici-needs-can", [], [ ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync $SOURCE_DIR/release/create_casync_build.sh"], + ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/manifest.json && cat /data/manifest.json"], //["upload ${channel_name}", "OPENPILOT_CHANNEL=${channel_name} $SOURCE_DIR/release/upload_casync_release.sh"], ]) } diff --git a/release/create_casync_agnos_release.py b/release/create_casync_agnos_release.py index c7f34ab154..7f46f10129 100644 --- a/release/create_casync_agnos_release.py +++ b/release/create_casync_agnos_release.py @@ -3,7 +3,7 @@ import json import pathlib import tempfile from openpilot.common.basedir import BASEDIR -from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop +from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop, AGNOS_MANIFEST_FILE from openpilot.system.updated.casync.common import create_casync_from_file @@ -13,7 +13,7 @@ if __name__ == "__main__": parser.add_argument("output_dir", type=str, help="output directory for the channel") parser.add_argument("version", type=str, help="version of agnos this is") parser.add_argument("--manifest", type=str, help="json manifest to create agnos release from", \ - default=str(pathlib.Path(BASEDIR) / "system/hardware/tici/agnos.json")) + default=str(pathlib.Path(BASEDIR) / AGNOS_MANIFEST_FILE)) args = parser.parse_args() output_dir = pathlib.Path(args.output_dir) diff --git a/release/create_release_manifest.py b/release/create_release_manifest.py new file mode 100644 index 0000000000..8d2e1241df --- /dev/null +++ b/release/create_release_manifest.py @@ -0,0 +1,65 @@ +import argparse +import dataclasses +import json +import pathlib + +from openpilot.common.run import run_cmd +from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE +from openpilot.system.version import get_build_metadata + + +BASE_URL = "https://commadist.blob.core.windows.net" + +CHANNEL_DATA = pathlib.Path(__file__).parent / "channel_data" / "agnos" + +OPENPILOT_RELEASES = f"{BASE_URL}/openpilot-releases" +AGNOS_RELEASES = f"{BASE_URL}/agnos-releases" + + +def create_partition_manifest(agnos_version, partition): + return { + "type": "partition", + "casync": { + "caibx": f"{AGNOS_RELEASES}/agnos-{agnos_version}-{partition['name']}.caibx" + }, + "name": partition["name"], + "size": partition["size"], + "full_check": partition["full_check"], + "hash_raw": partition["hash_raw"] + } + + +def create_openpilot_manifest(build_metadata): + return { + "type": "path_tarred", + "path": "/data/openpilot", + "casync": { + "caibx": f"{OPENPILOT_RELEASES}/{build_metadata.canonical}.caibx" + } + } + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="creates a casync release") + parser.add_argument("target_dir", type=str, help="directory of the channel to create manifest from") + parser.add_argument("output_file", type=str, help="output file to put the manifest") + args = parser.parse_args() + + with open(pathlib.Path(args.target_dir) / AGNOS_MANIFEST_FILE) as f: + agnos_manifest = json.load(f) + + agnos_version = run_cmd(["bash", "-c", r"unset AGNOS_VERSION && source launch_env.sh && \ + echo -n $AGNOS_VERSION"], args.target_dir).strip() + + build_metadata = get_build_metadata(args.target_dir) + + ret = { + "build_metadata": dataclasses.asdict(build_metadata), + "manifest": [ + *[create_partition_manifest(agnos_version, entry) for entry in agnos_manifest], + create_openpilot_manifest(build_metadata) + ] + } + + with open(args.output_file, "w") as f: + f.write(json.dumps(ret, indent=2)) diff --git a/system/hardware/tici/agnos.py b/system/hardware/tici/agnos.py index 8f09b30850..7e3536f775 100755 --- a/system/hardware/tici/agnos.py +++ b/system/hardware/tici/agnos.py @@ -15,6 +15,8 @@ import openpilot.system.updated.casync.casync as casync SPARSE_CHUNK_FMT = struct.Struct('H2xI4x') CAIBX_URL = "https://commadist.azureedge.net/agnosupdate/" +AGNOS_MANIFEST_FILE = "system/hardware/tici/agnos.json" + class StreamingDecompressor: def __init__(self, url: str) -> None: From e18ec9bbd7860166d9a74da90566c9e98e1b74e7 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 9 Apr 2024 09:19:05 -0700 Subject: [PATCH 387/599] jenkins: set pythonpath for casync build (#32139) * set pythonpath * quotes --- release/create_casync_build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/release/create_casync_build.sh b/release/create_casync_build.sh index a851123556..8448801189 100755 --- a/release/create_casync_build.sh +++ b/release/create_casync_build.sh @@ -7,6 +7,7 @@ DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" CASYNC_DIR="${CASYNC_DIR:=/tmp/casync}" SOURCE_DIR="$(git -C $DIR rev-parse --show-toplevel)" BUILD_DIR="${BUILD_DIR:=$(mktemp -d)}" +PYTHONPATH="$SOURCE_DIR" echo "Creating casync release from $SOURCE_DIR to $CASYNC_DIR" From 97db26b6a94a21e0dbe223f91ec8762347d493c2 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 9 Apr 2024 10:15:28 -0700 Subject: [PATCH 388/599] make manifest script executable (#32140) --- release/create_release_manifest.py | 1 + 1 file changed, 1 insertion(+) mode change 100644 => 100755 release/create_release_manifest.py diff --git a/release/create_release_manifest.py b/release/create_release_manifest.py old mode 100644 new mode 100755 index 8d2e1241df..8e39f2b31c --- a/release/create_release_manifest.py +++ b/release/create_release_manifest.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import argparse import dataclasses import json From 754dd45ffa82bf3d7f2d3413c4132eb65551ebd5 Mon Sep 17 00:00:00 2001 From: YassineYousfi Date: Tue, 9 Apr 2024 10:40:38 -0700 Subject: [PATCH 389/599] disable navigate on openpilot (#32106) * 2eedcd90-b7db-46cb-86be-740f48ded7ab/700 * noop ciao * here too * mapsd too * update translations * disable mapsd test from test onroad * disable mapRenderState test from timings * lint * fix exp mode toggle panel * update tr * french done * dont build mapd * only no nav * just comment * deprecate nav fields * rm not comment * dont deprecate too much * remove from services * merge cereal --- .gitignore | 1 - cereal | 2 +- release/files_common | 3 - selfdrive/manager/process_config.py | 2 - selfdrive/modeld/fill_model_msg.py | 5 +- selfdrive/modeld/modeld.py | 31 +---- selfdrive/modeld/models/README.md | 4 - selfdrive/modeld/models/navmodel.onnx | 3 - selfdrive/modeld/models/navmodel_q.dlc | 3 - selfdrive/modeld/navmodeld.py | 117 ------------------ selfdrive/navd/README.md | 2 +- selfdrive/navd/SConscript | 2 +- selfdrive/navd/tests/test_map_renderer.py | 1 + selfdrive/test/process_replay/model_replay.py | 74 +---------- selfdrive/test/test_onroad.py | 4 - selfdrive/ui/qt/maps/map.cc | 18 +-- selfdrive/ui/qt/maps/map.h | 5 - selfdrive/ui/qt/offroad/settings.cc | 11 +- selfdrive/ui/qt/onroad.cc | 3 +- selfdrive/ui/qt/window.cc | 4 - selfdrive/ui/translations/main_ar.ts | 16 +-- selfdrive/ui/translations/main_de.ts | 16 +-- selfdrive/ui/translations/main_fr.ts | 16 +-- selfdrive/ui/translations/main_ja.ts | 16 +-- selfdrive/ui/translations/main_ko.ts | 16 +-- selfdrive/ui/translations/main_pt-BR.ts | 16 +-- selfdrive/ui/translations/main_th.ts | 16 +-- selfdrive/ui/translations/main_tr.ts | 16 +-- selfdrive/ui/translations/main_zh-CHS.ts | 16 +-- selfdrive/ui/translations/main_zh-CHT.ts | 16 +-- selfdrive/ui/ui.h | 1 - system/hardware/tici/tests/test_power_draw.py | 1 - 32 files changed, 55 insertions(+), 402 deletions(-) delete mode 100644 selfdrive/modeld/models/navmodel.onnx delete mode 100644 selfdrive/modeld/models/navmodel_q.dlc delete mode 100755 selfdrive/modeld/navmodeld.py diff --git a/.gitignore b/.gitignore index 3da75aaea4..98fc70d029 100644 --- a/.gitignore +++ b/.gitignore @@ -52,7 +52,6 @@ selfdrive/car/tests/cars_dump system/camerad/camerad system/camerad/test/ae_gray_test selfdrive/modeld/_modeld -selfdrive/modeld/_navmodeld selfdrive/modeld/_dmonitoringmodeld /src/ diff --git a/cereal b/cereal index b9871482a3..db1359ec22 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit b9871482a3cba70c2ab40ab80017019313dc3f31 +Subproject commit db1359ec22f6ab60c6e76abc4531bc843345d6b5 diff --git a/release/files_common b/release/files_common index 4ba9200d22..641e084d30 100644 --- a/release/files_common +++ b/release/files_common @@ -316,7 +316,6 @@ selfdrive/modeld/modeld.py selfdrive/modeld/parse_model_outputs.py selfdrive/modeld/fill_model_msg.py selfdrive/modeld/get_model_metadata.py -selfdrive/modeld/navmodeld.py selfdrive/modeld/dmonitoringmodeld.py selfdrive/modeld/constants.py selfdrive/modeld/modeld @@ -332,8 +331,6 @@ selfdrive/modeld/models/supercombo.onnx selfdrive/modeld/models/dmonitoring_model_q.dlc -selfdrive/modeld/models/navmodel_q.dlc - selfdrive/modeld/transforms/loadyuv.cc selfdrive/modeld/transforms/loadyuv.h selfdrive/modeld/transforms/loadyuv.cl diff --git a/selfdrive/manager/process_config.py b/selfdrive/manager/process_config.py index 8b616b7874..4c34e7339e 100644 --- a/selfdrive/manager/process_config.py +++ b/selfdrive/manager/process_config.py @@ -56,8 +56,6 @@ procs = [ NativeProcess("stream_encoderd", "system/loggerd", ["./encoderd", "--stream"], notcar), NativeProcess("loggerd", "system/loggerd", ["./loggerd"], logging), NativeProcess("modeld", "selfdrive/modeld", ["./modeld"], only_onroad), - NativeProcess("mapsd", "selfdrive/navd", ["./mapsd"], only_onroad), - PythonProcess("navmodeld", "selfdrive.modeld.navmodeld", only_onroad), NativeProcess("sensord", "system/sensord", ["./sensord"], only_onroad, enabled=not PC), NativeProcess("ui", "selfdrive/ui", ["./ui"], always_run, watchdog_max_dt=(5 if not PC else None)), PythonProcess("soundd", "selfdrive.ui.soundd", only_onroad), diff --git a/selfdrive/modeld/fill_model_msg.py b/selfdrive/modeld/fill_model_msg.py index c39ec2da3d..f6a57f1a40 100644 --- a/selfdrive/modeld/fill_model_msg.py +++ b/selfdrive/modeld/fill_model_msg.py @@ -43,8 +43,7 @@ def fill_xyvat(builder, t, x, y, v, a, x_std=None, y_std=None, v_std=None, a_std def fill_model_msg(msg: capnp._DynamicStructBuilder, net_output_data: dict[str, np.ndarray], publish_state: PublishState, vipc_frame_id: int, vipc_frame_id_extra: int, frame_id: int, frame_drop: float, - timestamp_eof: int, timestamp_llk: int, model_execution_time: float, - nav_enabled: bool, valid: bool) -> None: + timestamp_eof: int, model_execution_time: float, valid: bool) -> None: frame_age = frame_id - vipc_frame_id if frame_id > vipc_frame_id else 0 msg.valid = valid @@ -54,9 +53,7 @@ def fill_model_msg(msg: capnp._DynamicStructBuilder, net_output_data: dict[str, modelV2.frameAge = frame_age modelV2.frameDropPerc = frame_drop * 100 modelV2.timestampEof = timestamp_eof - modelV2.locationMonoTime = timestamp_llk modelV2.modelExecutionTime = model_execution_time - modelV2.navEnabled = nav_enabled # plan position = modelV2.position diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index c3b3918903..9083f8585e 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -154,7 +154,7 @@ def main(demo=False): # messaging pm = PubMaster(["modelV2", "cameraOdometry"]) - sm = SubMaster(["deviceState", "carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "navModel", "navInstruction", "carControl"]) + sm = SubMaster(["deviceState", "carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "carControl"]) publish_state = PublishState() params = Params() @@ -240,30 +240,6 @@ def main(demo=False): if desire >= 0 and desire < ModelConstants.DESIRE_LEN: vec_desire[desire] = 1 - # Enable/disable nav features - timestamp_llk = sm["navModel"].locationMonoTime - nav_valid = sm.valid["navModel"] # and (nanos_since_boot() - timestamp_llk < 1e9) - nav_enabled = nav_valid and params.get_bool("ExperimentalMode") - - if not nav_enabled: - nav_features[:] = 0 - nav_instructions[:] = 0 - - if nav_enabled and sm.updated["navModel"]: - nav_features = np.array(sm["navModel"].features) - - if nav_enabled and sm.updated["navInstruction"]: - nav_instructions[:] = 0 - for maneuver in sm["navInstruction"].allManeuvers: - distance_idx = 25 + int(maneuver.distance / 20) - direction_idx = 0 - if maneuver.modifier in ("left", "slight left", "sharp left"): - direction_idx = 1 - if maneuver.modifier in ("right", "slight right", "sharp right"): - direction_idx = 2 - if 0 <= distance_idx < 50: - nav_instructions[distance_idx*3 + direction_idx] = 1 - # tracked dropped frames vipc_dropped_frames = max(0, meta_main.frame_id - last_vipc_frame_id - 1) frames_dropped = frame_dropped_filter.update(min(vipc_dropped_frames, 10)) @@ -282,7 +258,8 @@ def main(demo=False): 'traffic_convention': traffic_convention, 'lateral_control_params': lateral_control_params, 'nav_features': nav_features, - 'nav_instructions': nav_instructions} + 'nav_instructions': nav_instructions, + } mt1 = time.perf_counter() model_output = model.run(buf_main, buf_extra, model_transform_main, model_transform_extra, inputs, prepare_only) @@ -293,7 +270,7 @@ def main(demo=False): modelv2_send = messaging.new_message('modelV2') posenet_send = messaging.new_message('cameraOdometry') fill_model_msg(modelv2_send, model_output, publish_state, meta_main.frame_id, meta_extra.frame_id, frame_id, frame_drop_ratio, - meta_main.timestamp_eof, timestamp_llk, model_execution_time, nav_enabled, live_calib_seen) + meta_main.timestamp_eof, model_execution_time, live_calib_seen) desire_state = modelv2_send.modelV2.meta.desireState l_lane_change_prob = desire_state[log.Desire.laneChangeLeft] diff --git a/selfdrive/modeld/models/README.md b/selfdrive/modeld/models/README.md index ff5c91fe0c..9e11ca8255 100644 --- a/selfdrive/modeld/models/README.md +++ b/selfdrive/modeld/models/README.md @@ -21,10 +21,6 @@ To view the architecture of the ONNX networks, you can use [netron](https://netr * one-hot encoded vector to tell model whether traffic is right-hand or left-hand traffic : 2 * **feature buffer** * A buffer of intermediate features that gets appended to the current feature to form a 5 seconds temporal context (at 20FPS) : 99 * 512 -* **nav features** - * 1 * 150 -* **nav instructions** - * 1 * 256 ### Supercombo output format (Full size: XXX x float32) diff --git a/selfdrive/modeld/models/navmodel.onnx b/selfdrive/modeld/models/navmodel.onnx deleted file mode 100644 index 3b687b960a..0000000000 --- a/selfdrive/modeld/models/navmodel.onnx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8254b569878b7472e3f63ed9f3527a87bde785c9037aee3ed66f972e072b5899 -size 14166696 diff --git a/selfdrive/modeld/models/navmodel_q.dlc b/selfdrive/modeld/models/navmodel_q.dlc deleted file mode 100644 index d5e43abcfb..0000000000 --- a/selfdrive/modeld/models/navmodel_q.dlc +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:89fda8380efa3e421fbcdb6bb204c36a4991f137ee01d47f3d0380895aa7c036 -size 3630942 diff --git a/selfdrive/modeld/navmodeld.py b/selfdrive/modeld/navmodeld.py deleted file mode 100755 index 4672734681..0000000000 --- a/selfdrive/modeld/navmodeld.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env python3 -import gc -import math -import time -import ctypes -import numpy as np -from pathlib import Path - -from cereal import messaging -from cereal.messaging import PubMaster, SubMaster -from cereal.visionipc import VisionIpcClient, VisionStreamType -from openpilot.common.swaglog import cloudlog -from openpilot.common.params import Params -from openpilot.common.realtime import set_realtime_priority -from openpilot.selfdrive.modeld.constants import ModelConstants -from openpilot.selfdrive.modeld.runners import ModelRunner, Runtime - -NAV_INPUT_SIZE = 256*256 -NAV_FEATURE_LEN = 256 -NAV_DESIRE_LEN = 32 -NAV_OUTPUT_SIZE = 2*2*ModelConstants.IDX_N + NAV_DESIRE_LEN + NAV_FEATURE_LEN -MODEL_PATHS = { - ModelRunner.SNPE: Path(__file__).parent / 'models/navmodel_q.dlc', - ModelRunner.ONNX: Path(__file__).parent / 'models/navmodel.onnx'} - -class NavModelOutputXY(ctypes.Structure): - _fields_ = [ - ("x", ctypes.c_float), - ("y", ctypes.c_float)] - -class NavModelOutputPlan(ctypes.Structure): - _fields_ = [ - ("mean", NavModelOutputXY*ModelConstants.IDX_N), - ("std", NavModelOutputXY*ModelConstants.IDX_N)] - -class NavModelResult(ctypes.Structure): - _fields_ = [ - ("plan", NavModelOutputPlan), - ("desire_pred", ctypes.c_float*NAV_DESIRE_LEN), - ("features", ctypes.c_float*NAV_FEATURE_LEN)] - -class ModelState: - inputs: dict[str, np.ndarray] - output: np.ndarray - model: ModelRunner - - def __init__(self): - assert ctypes.sizeof(NavModelResult) == NAV_OUTPUT_SIZE * ctypes.sizeof(ctypes.c_float) - self.output = np.zeros(NAV_OUTPUT_SIZE, dtype=np.float32) - self.inputs = {'input_img': np.zeros(NAV_INPUT_SIZE, dtype=np.uint8)} - self.model = ModelRunner(MODEL_PATHS, self.output, Runtime.DSP, True, None) - self.model.addInput("input_img", None) - - def run(self, buf:np.ndarray) -> tuple[np.ndarray, float]: - self.inputs['input_img'][:] = buf - - t1 = time.perf_counter() - self.model.setInputBuffer("input_img", self.inputs['input_img'].view(np.float32)) - self.model.execute() - t2 = time.perf_counter() - return self.output, t2 - t1 - -def get_navmodel_packet(model_output: np.ndarray, valid: bool, frame_id: int, location_ts: int, execution_time: float, dsp_execution_time: float): - model_result = ctypes.cast(model_output.ctypes.data, ctypes.POINTER(NavModelResult)).contents - msg = messaging.new_message('navModel') - msg.valid = valid - msg.navModel.frameId = frame_id - msg.navModel.locationMonoTime = location_ts - msg.navModel.modelExecutionTime = execution_time - msg.navModel.dspExecutionTime = dsp_execution_time - msg.navModel.features = model_result.features[:] - msg.navModel.desirePrediction = model_result.desire_pred[:] - msg.navModel.position.x = [p.x for p in model_result.plan.mean] - msg.navModel.position.y = [p.y for p in model_result.plan.mean] - msg.navModel.position.xStd = [math.exp(p.x) for p in model_result.plan.std] - msg.navModel.position.yStd = [math.exp(p.y) for p in model_result.plan.std] - return msg - - -def main(): - gc.disable() - set_realtime_priority(1) - - # there exists a race condition when two processes try to create a - # SNPE model runner at the same time, wait for dmonitoringmodeld to finish - cloudlog.warning("waiting for dmonitoringmodeld to initialize") - if not Params().get_bool("DmModelInitialized", True): - return - - model = ModelState() - cloudlog.warning("models loaded, navmodeld starting") - - vipc_client = VisionIpcClient("navd", VisionStreamType.VISION_STREAM_MAP, True) - while not vipc_client.connect(False): - time.sleep(0.1) - assert vipc_client.is_connected() - cloudlog.warning(f"connected with buffer size: {vipc_client.buffer_len}") - - sm = SubMaster(["navInstruction"]) - pm = PubMaster(["navModel"]) - - while True: - buf = vipc_client.recv() - if buf is None: - continue - - sm.update(0) - t1 = time.perf_counter() - model_output, dsp_execution_time = model.run(buf.data[:buf.uv_offset]) - t2 = time.perf_counter() - - valid = vipc_client.valid and sm.valid["navInstruction"] - pm.send("navModel", get_navmodel_packet(model_output, valid, vipc_client.frame_id, vipc_client.timestamp_sof, t2 - t1, dsp_execution_time)) - - -if __name__ == "__main__": - main() diff --git a/selfdrive/navd/README.md b/selfdrive/navd/README.md index 3047b7f8eb..81de8ae39f 100644 --- a/selfdrive/navd/README.md +++ b/selfdrive/navd/README.md @@ -8,7 +8,7 @@ This directory contains two daemons, `navd` and `mapsd`, which support navigatio ### map renderer -The map renderer listens for the `navRoute` and publishes a rendered map view over VisionIPC for the navigation model, which lives in `selfdrive/modeld/`. The rendered maps look like this: +The map renderer listens for the `navRoute` and publishes a simplified rendered map view over VisionIPC. The rendered maps look like this: ![](https://i.imgur.com/oZLfmwq.png) diff --git a/selfdrive/navd/SConscript b/selfdrive/navd/SConscript index 5a173c0351..5a049f18ba 100644 --- a/selfdrive/navd/SConscript +++ b/selfdrive/navd/SConscript @@ -17,4 +17,4 @@ if arch in ['larch64', 'aarch64', 'x86_64']: map_env["RPATH"].append(Dir('.').abspath) map_env["LIBPATH"].append(Dir('.').abspath) maplib = map_env.SharedLibrary("maprender", ["map_renderer.cc"], LIBS=libs) - map_env.Program("mapsd", ["main.cc", ], LIBS=[maplib[0].get_path(), ] + libs) + # map_env.Program("mapsd", ["main.cc", ], LIBS=[maplib[0].get_path(), ] + libs) diff --git a/selfdrive/navd/tests/test_map_renderer.py b/selfdrive/navd/tests/test_map_renderer.py index b5f186dbb0..7d5a4c297f 100755 --- a/selfdrive/navd/tests/test_map_renderer.py +++ b/selfdrive/navd/tests/test_map_renderer.py @@ -65,6 +65,7 @@ class MapBoxInternetDisabledServer(threading.Thread): MapBoxInternetDisabledRequestHandler.INTERNET_ACTIVE = True +@pytest.mark.skip(reason="not used") class TestMapRenderer(unittest.TestCase): server: MapBoxInternetDisabledServer diff --git a/selfdrive/test/process_replay/model_replay.py b/selfdrive/test/process_replay/model_replay.py index 9db05cfc82..cba2edfd58 100755 --- a/selfdrive/test/process_replay/model_replay.py +++ b/selfdrive/test/process_replay/model_replay.py @@ -1,15 +1,11 @@ #!/usr/bin/env python3 import os import sys -import time from collections import defaultdict from typing import Any -import cereal.messaging as messaging from openpilot.common.git import get_commit -from openpilot.common.params import Params from openpilot.system.hardware import PC -from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.tools.lib.openpilotci import BASE_URL, get_url from openpilot.selfdrive.test.process_replay.compare_logs import compare_logs, format_diff from openpilot.selfdrive.test.process_replay.process_replay import get_process_config, replay_process @@ -20,9 +16,7 @@ from openpilot.tools.lib.helpers import save_log TEST_ROUTE = "2f4452b03ccb98f0|2022-12-03--13-45-30" SEGMENT = 6 MAX_FRAMES = 100 if PC else 600 -NAV_FRAMES = 50 -NO_NAV = "NO_NAV" in os.environ NO_MODEL = "NO_MODEL" in os.environ SEND_EXTRA_INPUTS = bool(int(os.getenv("SEND_EXTRA_INPUTS", "0"))) @@ -50,59 +44,6 @@ def trim_logs_to_max_frames(logs, max_frames, frs_types, include_all_types): return all_msgs -def nav_model_replay(lr): - sm = messaging.SubMaster(['navModel', 'navThumbnail', 'mapRenderState']) - pm = messaging.PubMaster(['liveLocationKalman', 'navRoute']) - - nav = [m for m in lr if m.which() == 'navRoute'] - llk = [m for m in lr if m.which() == 'liveLocationKalman'] - assert len(nav) > 0 and len(llk) >= NAV_FRAMES and nav[0].logMonoTime < llk[-NAV_FRAMES].logMonoTime - - log_msgs = [] - try: - assert "MAPBOX_TOKEN" in os.environ - os.environ['MAP_RENDER_TEST_MODE'] = '1' - Params().put_bool('DmModelInitialized', True) - managed_processes['mapsd'].start() - managed_processes['navmodeld'].start() - - # setup position and route - for _ in range(10): - for s in (llk[-NAV_FRAMES], nav[0]): - pm.send(s.which(), s.as_builder().to_bytes()) - sm.update(1000) - if sm.updated['navModel']: - break - time.sleep(1) - - if not sm.updated['navModel']: - raise Exception("no navmodeld outputs, failed to initialize") - - # drain - time.sleep(2) - sm.update(0) - - # run replay - for n in range(len(llk) - NAV_FRAMES, len(llk)): - pm.send(llk[n].which(), llk[n].as_builder().to_bytes()) - m = messaging.recv_one(sm.sock['navThumbnail']) - assert m is not None, f"no navThumbnail, frame={n}" - log_msgs.append(m) - - m = messaging.recv_one(sm.sock['mapRenderState']) - assert m is not None, f"no mapRenderState, frame={n}" - log_msgs.append(m) - - m = messaging.recv_one(sm.sock['navModel']) - assert m is not None, f"no navModel response, frame={n}" - log_msgs.append(m) - finally: - managed_processes['mapsd'].stop() - managed_processes['navmodeld'].stop() - - return log_msgs - - def model_replay(lr, frs): # modeld is using frame pairs modeld_logs = trim_logs_to_max_frames(lr, MAX_FRAMES, {"roadCameraState", "wideRoadCameraState"}, {"roadEncodeIdx", "wideRoadEncodeIdx", "carParams"}) @@ -169,8 +110,6 @@ if __name__ == "__main__": # run replays if not NO_MODEL: log_msgs += model_replay(lr, frs) - if not NO_NAV: - log_msgs += nav_model_replay(lr) # get diff failed = False @@ -182,28 +121,19 @@ if __name__ == "__main__": all_logs = list(LogReader(BASE_URL + log_fn)) cmp_log = [] - # logs are ordered based on type: modelV2, driverStateV2, nav messages (navThumbnail, mapRenderState, navModel) + # logs are ordered based on type: modelV2, driverStateV2 if not NO_MODEL: model_start_index = next(i for i, m in enumerate(all_logs) if m.which() in ("modelV2", "cameraOdometry")) cmp_log += all_logs[model_start_index:model_start_index + MAX_FRAMES*2] dmon_start_index = next(i for i, m in enumerate(all_logs) if m.which() == "driverStateV2") cmp_log += all_logs[dmon_start_index:dmon_start_index + MAX_FRAMES] - if not NO_NAV: - nav_start_index = next(i for i, m in enumerate(all_logs) if m.which() in ["navThumbnail", "mapRenderState", "navModel"]) - nav_logs = all_logs[nav_start_index:nav_start_index + NAV_FRAMES*3] - cmp_log += nav_logs ignore = [ 'logMonoTime', 'modelV2.frameDropPerc', 'modelV2.modelExecutionTime', 'driverStateV2.modelExecutionTime', - 'driverStateV2.dspExecutionTime', - 'navModel.dspExecutionTime', - 'navModel.modelExecutionTime', - 'navThumbnail.timestampEof', - 'mapRenderState.locationMonoTime', - 'mapRenderState.renderTime', + 'driverStateV2.dspExecutionTime' ] if PC: ignore += [ diff --git a/selfdrive/test/test_onroad.py b/selfdrive/test/test_onroad.py index 250534bf86..7492ac12a6 100755 --- a/selfdrive/test/test_onroad.py +++ b/selfdrive/test/test_onroad.py @@ -34,7 +34,6 @@ PROCS = { "./encoderd": 17.0, "./camerad": 14.5, "./locationd": 11.0, - "./mapsd": (0.5, 10.0), "selfdrive.controls.plannerd": 11.0, "./ui": 18.0, "selfdrive.locationd.paramsd": 9.0, @@ -42,7 +41,6 @@ PROCS = { "selfdrive.controls.radard": 7.0, "selfdrive.modeld.modeld": 13.0, "selfdrive.modeld.dmonitoringmodeld": 8.0, - "selfdrive.modeld.navmodeld": 1.0, "selfdrive.thermald.thermald": 3.87, "selfdrive.locationd.calibrationd": 2.0, "selfdrive.locationd.torqued": 5.0, @@ -87,8 +85,6 @@ TIMINGS = { "driverCameraState": [2.5, 0.35], "modelV2": [2.5, 0.35], "driverStateV2": [2.5, 0.40], - "navModel": [2.5, 0.35], - "mapRenderState": [2.5, 0.35], "liveLocationKalman": [2.5, 0.35], "wideRoadCameraState": [1.5, 0.35], } diff --git a/selfdrive/ui/qt/maps/map.cc b/selfdrive/ui/qt/maps/map.cc index a5644bae4f..664364e04f 100644 --- a/selfdrive/ui/qt/maps/map.cc +++ b/selfdrive/ui/qt/maps/map.cc @@ -74,7 +74,7 @@ void MapWindow::initLayers() { QVariantMap transition; transition["duration"] = 400; // ms - m_map->setPaintProperty("navLayer", "line-color", getNavPathColor(uiState()->scene.navigate_on_openpilot)); + m_map->setPaintProperty("navLayer", "line-color", QColor("#31a1ee")); m_map->setPaintProperty("navLayer", "line-color-transition", transition); m_map->setPaintProperty("navLayer", "line-width", 7.5); m_map->setLayoutProperty("navLayer", "line-cap", "round"); @@ -118,21 +118,6 @@ void MapWindow::updateState(const UIState &s) { const SubMaster &sm = *(s.sm); update(); - if (sm.updated("modelV2")) { - // set path color on change, and show map on rising edge of navigate on openpilot - bool nav_enabled = sm["modelV2"].getModelV2().getNavEnabled() && - sm["controlsState"].getControlsState().getEnabled(); - if (nav_enabled != uiState()->scene.navigate_on_openpilot) { - if (loaded_once) { - m_map->setPaintProperty("navLayer", "line-color", getNavPathColor(nav_enabled)); - } - if (nav_enabled) { - emit requestVisible(true); - } - } - uiState()->scene.navigate_on_openpilot = nav_enabled; - } - if (sm.updated("liveLocationKalman")) { auto locationd_location = sm["liveLocationKalman"].getLiveLocationKalman(); auto locationd_pos = locationd_location.getPositionGeodetic(); @@ -365,7 +350,6 @@ void MapWindow::pinchTriggered(QPinchGesture *gesture) { void MapWindow::offroadTransition(bool offroad) { if (offroad) { clearRoute(); - uiState()->scene.navigate_on_openpilot = false; routing_problem = false; } else { auto dest = coordinate_from_param("NavDestination"); diff --git a/selfdrive/ui/qt/maps/map.h b/selfdrive/ui/qt/maps/map.h index 81ba50037a..8193d55729 100644 --- a/selfdrive/ui/qt/maps/map.h +++ b/selfdrive/ui/qt/maps/map.h @@ -69,11 +69,6 @@ private: MapInstructions* map_instructions; MapETA* map_eta; - // Blue with normal nav, green when nav is input into the model - QColor getNavPathColor(bool nav_enabled) { - return nav_enabled ? QColor("#31ee73") : QColor("#31a1ee"); - } - void clearRoute(); void updateDestinationMarker(); uint64_t route_rcv_frame = 0; diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 1c4e144468..4b3005467a 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -143,21 +143,14 @@ void TogglesPanel::updateToggles() { "

%2


" "%3
" "

%4


" - "%5
" - "

%6


" - "%7") + "%5
") .arg(tr("openpilot defaults to driving in chill mode. Experimental mode enables alpha-level features that aren't ready for chill mode. Experimental features are listed below:")) .arg(tr("End-to-End Longitudinal Control")) .arg(tr("Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. " "Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; " "mistakes should be expected.")) - .arg(tr("Navigate on openpilot")) - .arg(tr("When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right " - "appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around " - "exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc.")) .arg(tr("New Driving Visualization")) - .arg(tr("The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. " - "When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green.")); + .arg(tr("The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. ")); const bool is_release = params.getBool("IsReleaseBranch"); auto cp_bytes = params.get("CarParamsPersistent"); diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index 5d562d6e23..b6a49162fc 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -93,9 +93,8 @@ void OnroadWindow::updateState(const UIState &s) { void OnroadWindow::mousePressEvent(QMouseEvent* e) { #ifdef ENABLE_MAPS if (map != nullptr) { - // Switch between map and sidebar when using navigate on openpilot bool sidebarVisible = geometry().x() > 0; - bool show_map = uiState()->scene.navigate_on_openpilot ? sidebarVisible : !sidebarVisible; + bool show_map = !sidebarVisible; map->setVisible(show_map && !map->isVisible()); } #endif diff --git a/selfdrive/ui/qt/window.cc b/selfdrive/ui/qt/window.cc index 74fd05ed7b..6b579fcc5d 100644 --- a/selfdrive/ui/qt/window.cc +++ b/selfdrive/ui/qt/window.cc @@ -75,10 +75,6 @@ void MainWindow::closeSettings() { if (uiState()->scene.started) { homeWindow->showSidebar(false); - // Map is always shown when using navigate on openpilot - if (uiState()->scene.navigate_on_openpilot) { - homeWindow->showMapPanel(true); - } } } diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 2aea017c78..8a32b980f2 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -1154,22 +1154,10 @@ This may take up to a minute. Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. دع نظام القيادة يتحكم بالوقود والمكابح. سيقوم openpilot بالقيادة كما لو أنه كائن بشري، بما في ذلك التوقف عند الإشارة الحمراء، وإشارات التوقف. وبما أن نمط القيادة يحدد سرعة القيادة، فإن السرعة المضبوطة تشكل الحد الأقصى فقط. هذه خاصية الجودة ألفا، فيجب توقع حدوث الأخطاء. - - Navigate on openpilot - التنقل على openpilot - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - عندما يكون هناك وجهة للتنقل، فإن openpilot سيقوم بإدخال معلومات الخريطة في هذا النموذج. وهذا يقدم سياقاً مفيداً ويسمح لـopenpilot بالبقاء يساراً أو يميناً بالشكل المناسب عند المنعطفات/المخارج. يبقى سلوك تغيير المسار مفعلاً عند السائق،. هذه هي خاصية الجودة ألفا، ولذلك يجب توقع الأخطاء لا سيما عند المخارج والمنعطفات هذه الأخطاء قد تشمل العبور غير المقصود لخطوط المسارات، والتأخر في الخروج، والقيادة نحو الحواجز الفاصلة في المناطق المثلثة بين الطريق الرئيسي والمخارج، وغير ذلك من الأخطاء المشابهة. - New Driving Visualization تصور القيادة الديد - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - تصور القيادة سينتقل إلى الكاميرا واسعة الزاوية المواجهة للطريق في السرعات المنخفضة من أجل إظهار بعض المنعطفات بشكل أفضل. سيتم أيضاً إظهار شعار الوضع التجريبي في الزاوية العلوية اليمنى. عند تحديد وجهة التنقل، واستخدام نظام القيادة لها كوضع مدخل، سيتحول مسار القيادة على الخريطة إلى اللون الأخضر. - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. الوضع التجريبي غير متوفر حالياً في هذه السيارة نظراً لاستخدام رصيد التحكم التكيفي بالسرعة من أجل التحكم الطولي. @@ -1190,6 +1178,10 @@ This may take up to a minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. يوصى بالمعيار. في الوضع العدواني، سيتبع الطيار المفتوح السيارات الرائدة بشكل أقرب ويكون أكثر عدوانية مع البنزين والفرامل. في الوضع المريح، سيبقى openpilot بعيدًا عن السيارات الرائدة. في السيارات المدعومة، يمكنك التنقل بين هذه الشخصيات باستخدام زر مسافة عجلة القيادة. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + +
Updater diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index bc2d685c4d..6f64ef3211 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -1148,18 +1148,6 @@ This may take up to a minute. End-to-End Longitudinal Control - - Navigate on openpilot - - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - - openpilot longitudinal control may come in a future update. @@ -1176,6 +1164,10 @@ This may take up to a minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Updater diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 55cb1b29aa..2643da56ff 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -1154,18 +1154,6 @@ Cela peut prendre jusqu'à une minute. End-to-End Longitudinal Control Contrôle longitudinal de bout en bout - - Navigate on openpilot - Navigation avec openpilot - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - Lorsque la navigation dispose d'une destination, openpilot entrera les informations de la carte dans le modèle. Cela fournit un contexte utile pour le modèle et permet à openpilot de se diriger à gauche ou à droite de manière appropriée aux bifurcations/sorties. Le comportement relatif au changement de voie reste inchangé et doit toujours être activé par le conducteur. Il s'agit d'une fonctionnalité alpha ; il faut s'attendre à des erreurs, en particulier aux abords des sorties et des bifurcations. Ces erreurs peuvent inclure des franchissements involontaires de passages piétons, des prises de sortie tardives, la conduite vers des zones de séparation de type zebras, etc. - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - La visualisation de la conduite passera sur la caméra grand angle dirigée vers la route à faible vitesse afin de mieux montrer certains virages. Le logo du mode expérimental s'affichera également dans le coin supérieur droit. Lorsqu'une destination de navigation est définie et que le modèle de conduite l'utilise comme entrée, la trajectoire de conduite sur la carte deviendra verte. - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. Activer le contrôle longitudinal d'openpilot (en alpha) pour autoriser le mode expérimental. @@ -1174,6 +1162,10 @@ Cela peut prendre jusqu'à une minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + La visualisation de la conduite passera sur la caméra grand angle dirigée vers la route à faible vitesse afin de mieux montrer certains virages. Le logo du mode expérimental s'affichera également dans le coin supérieur droit. + Updater diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 92238d6beb..5fb4a3b1c2 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -1140,18 +1140,6 @@ This may take up to a minute. End-to-End Longitudinal Control - - Navigate on openpilot - - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - - openpilot longitudinal control may come in a future update. @@ -1168,6 +1156,10 @@ This may take up to a minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Updater diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 21f8f39fb1..d8006a0f58 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -1146,10 +1146,6 @@ This may take up to a minute. An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. openpilot 가감속 제어 알파 버전은 비 릴리즈 브랜치에서 실험 모드와 함께 테스트할 수 있습니다. - - Navigate on openpilot - openpilot 내비게이트 - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. 실험 모드를 사용하려면 openpilot E2E 가감속 제어 (알파) 토글을 활성화하세요. @@ -1158,18 +1154,14 @@ This may take up to a minute. End-to-End Longitudinal Control E2E 가감속 제어 - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 내비게이션에 목적지가 설정되어 있으면 openpilot이 지도 정보를 주행 모델에 입력합니다. 이는 모델에 유용한 정보를 제공하고 openpilot이 진출입로 및 램프에서 적절하게 왼쪽 또는 오른쪽을 유지할 수 있도록 해 줍니다. 차선 변경 기능은 여전히 운전자의 조작에 의해 활성화됩니다. 이 기능은 알파 버전입니다. 특히 진출입로 및 분기점 주변에서 실수가 발생할 수 있으며 이러한 실수에는 의도하지 않은 차선 이탈, 늦은 진출, 도로 가장자리의 분리대 또는 경계석을 향해 운전하는 행동 등이 포함됩니다. - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 주행 시각화는 저속으로 주행 시 도로를 향한 광각 카메라로 자동 전환되어 일부 곡선 경로를 더 잘 보여줍니다. 실험 모드 로고는 우측 상단에 표시됩니다. 내비게이션 목적지가 설정되고 주행 모델에 입력되면 지도의 주행 경로가 녹색으로 바뀝니다. - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. 표준 모드를 권장합니다. 공격적 모드의 openpilot은 선두 차량을 더 가까이 따라가고 가감속제어를 사용하여 더욱 공격적으로 움직입니다. 편안한 모드의 openpilot은 선두 차량으로부터 더 멀리 떨어져 있습니다. 지원되는 차량에서는 스티어링 휠 거리 버튼을 사용하여 이러한 특성을 순환할 수 있습니다. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Updater diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 7bc324f29c..6d66565a18 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1150,10 +1150,6 @@ Isso pode levar até um minuto. An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. Uma versão embrionária do controle longitudinal openpilot pode ser testada em conjunto com o modo Experimental, em branches que não sejam de produção. - - Navigate on openpilot - Navegação no openpilot - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. Habilite o controle longitudinal (embrionário) openpilot para permitir o modo Experimental. @@ -1162,18 +1158,14 @@ Isso pode levar até um minuto. End-to-End Longitudinal Control Controle Longitudinal de Ponta a Ponta - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - Quando a navegação tem um destino, o openpilot insere as informações do mapa no modelo. Isso fornece contexto útil para o modelo e permite que o openpilot mantenha a esquerda ou a direita apropriadamente em bifurcações/saídas. O comportamento de mudança de faixa permanece inalterado e ainda é ativado somente pelo motorista. Este é um recurso de qualidade embrionária; erros devem ser esperados, principalmente em torno de saídas e bifurcações. Esses erros podem incluir travessias não intencionais na faixa de rodagem, saída tardia, condução em direção a barreiras divisórias nas áreas de marcas de canalização, etc. - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - A visualização de condução fará a transição para a câmera grande angular voltada para a estrada em baixas velocidades para mostrar melhor algumas curvas. O logotipo do modo Experimental também será mostrado no canto superior direito. Quando um destino de navegação é definido e o modelo de condução o utiliza como entrada o caminho de condução no mapa fica verde. - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. Neutro é o recomendado. No modo disputa o openpilot seguirá o carro da frente mais de perto e será mais agressivo com a aceleração e frenagem. No modo calmo o openpilot se manterá mais longe do carro da frente. Em carros compatíveis, você pode alternar esses temperamentos com o botão de distância do volante. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Updater diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index 14fb40d21f..f417ee1af8 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -1150,18 +1150,6 @@ This may take up to a minute. End-to-End Longitudinal Control ควบคุมเร่ง/เบรคแบบ End-to-End - - Navigate on openpilot - การนำทางบน openpilot - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - เมื่อการนำทางมีจุดหมายปลายทาง openpilot จะป้อนข้อมูลแผนที่เข้าไปยังโมเดล ซึ่งจะเป็นบริบทที่มีประโยชน์สำหรับโมเดลและจะทำให้ openpilot สามารถรักษาเลนซ้ายหรือขวาได้อย่างเหมาะสมบริเวณทางแยกหรือทางออก พฤติกรรมการเปลี่ยนเลนยังคงเหมือนเดิมและยังคงต้องถูกเริ่มโดยคนขับ ความสามารถนี้ยังอยู่ในระดับ alpha ซึ่งอาจะเกิดความผิดพลาดได้โดยเฉพาะบริเวณทางแยกหรือทางออก ความผิดพลาดที่อาจเกิดขึ้นได้อาจรวมถึงการข้ามเส้นแบ่งเลนโดยไม่ตั้งใจ, การเข้าช่องทางออกช้ากว่าปกติ, การขับเข้าหาแบริเออร์ในเขตปลอดภัย, ฯลฯ - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - การแสดงภาพการขับขี่จะเปลี่ยนไปใช้กล้องมุมกว้างที่หันหน้าไปทางถนนเมื่ออยู่ในความเร็วต่ำ เพื่อแสดงภาพการเลี้ยวที่ดีขึ้น โลโก้โหมดการทดลองจะแสดงที่มุมบนขวาด้วย เมื่อเป้าหมายการนำทางถูกเลือกและโมเดลการขับขี่กำลังใช้เป็นอินพุต เส้นทางการขับขี่บนแผนที่จะเปลี่ยนเป็นสีเขียว - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. เปิดระบบควบคุมการเร่ง/เบรคโดย openpilot (alpha) เพื่อเปิดใช้งานโหมดทดลอง @@ -1170,6 +1158,10 @@ This may take up to a minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Updater diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index 9fce4793ca..16e4504343 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -1132,22 +1132,10 @@ This may take up to a minute. Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - - Navigate on openpilot - - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - - New Driving Visualization - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. @@ -1168,6 +1156,10 @@ This may take up to a minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Updater diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 6b040dac26..938915b305 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -1146,10 +1146,6 @@ This may take up to a minute. An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. 在正式(release)版本以外的分支上,可以测试 openpilot 纵向控制的 Alpha 版本以及实验模式。 - - Navigate on openpilot - Navigate on openpilot - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. 启用 openpilot 纵向控制(alpha)开关以允许实验模式。 @@ -1158,18 +1154,14 @@ This may take up to a minute. End-to-End Longitudinal Control 端到端纵向控制 - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 当导航有目的地时,openpilot 将输入地图信息到模型中。这为模型提供了有用的背景信息,使 openpilot 能够在叉路/出口时适当地保持左侧或右侧行驶。车道变换行为保持不变,仍由驾驶员激活。这是一个 Alpha 版的功能;可能会出现错误,特别是在出口和分叉处。这些错误可能包括意外的车道越界、晚出口、朝着分隔栏驶向安全地带等。 - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 行驶画面将在低速时切换到道路朝向的广角摄像头,以更好地显示一些转弯。实验模式标志也将显示在右上角。当设置了导航目的地并且驾驶模型正在使用它作为输入时,地图上的驾驶路径将变为绿色。 - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Updater diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index dd3f600254..98602b81d1 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -1146,10 +1146,6 @@ This may take up to a minute. An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. 在正式 (release) 版以外的分支上可以測試 openpilot 縱向控制的 Alpha 版本以及實驗模式。 - - Navigate on openpilot - Navigate on openpilot - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. 啟用 openpilot 縱向控制(alpha)切換以允許實驗模式。 @@ -1158,18 +1154,14 @@ This may take up to a minute. End-to-End Longitudinal Control 端到端縱向控制 - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 當導航有目的地時,openpilot 將把地圖資訊輸入模型中。這為模型提供了有用的背景資訊,使 openpilot 能夠在叉路/出口時適當地保持左側或右側行駛。車道變換行為保持不變,仍由駕駛員啟用。這是一個 Alpha 版的功能;可能會出現錯誤,特別是在出口和分叉處。這些錯誤可能包括意外的車道越界、晚出口、朝著分隔欄駛向分隔帶區域等。 - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 行駛畫面將在低速時切換至道路朝向的廣角鏡頭,以更好地顯示一些轉彎。實驗模式圖示也將顯示在右上角。當設定了導航目的地並且行駛模型正在將其作為輸入時,地圖上的行駛路徑將變為綠色。 - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Updater diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index d639d85eeb..0a939253b1 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -94,7 +94,6 @@ typedef struct UIScene { float driver_pose_coss[3]; vec3 face_kpts_draw[std::size(default_face_kpts_3d)]; - bool navigate_on_openpilot = false; cereal::LongitudinalPersonality personality; float light_sensor; diff --git a/system/hardware/tici/tests/test_power_draw.py b/system/hardware/tici/tests/test_power_draw.py index 180ec155e4..ba7e0a6d9d 100755 --- a/system/hardware/tici/tests/test_power_draw.py +++ b/system/hardware/tici/tests/test_power_draw.py @@ -36,7 +36,6 @@ PROCS = [ Proc(['modeld'], 1.12, atol=0.2, msgs=['modelV2']), Proc(['dmonitoringmodeld'], 0.4, msgs=['driverStateV2']), Proc(['encoderd'], 0.23, msgs=[]), - Proc(['mapsd', 'navmodeld'], 0.05, msgs=['mapRenderState', 'navModel']), ] From cad7b96c3a12e58c17f0d80936a8b9e4c39e7365 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 10 Apr 2024 01:45:48 +0800 Subject: [PATCH 390/599] loggerd/logger.cc: fix typo (#32134) --- system/loggerd/logger.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/loggerd/logger.cc b/system/loggerd/logger.cc index f1b187df7f..b44758bb04 100644 --- a/system/loggerd/logger.cc +++ b/system/loggerd/logger.cc @@ -113,11 +113,11 @@ std::string logger_get_identifier(std::string key) { return util::string_format("%08x--%s", cnt, ss.str().c_str()); } -static void log_sentinel(LoggerState *log, SentinelType type, int eixt_signal = 0) { +static void log_sentinel(LoggerState *log, SentinelType type, int exit_signal = 0) { MessageBuilder msg; auto sen = msg.initEvent().initSentinel(); sen.setType(type); - sen.setSignal(eixt_signal); + sen.setSignal(exit_signal); log->write(msg.toBytes(), true); } From 99285ef1f2da4ba3852c376f4cae0c50e5dc3c79 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 10 Apr 2024 01:46:07 +0800 Subject: [PATCH 391/599] loggerd/logger.cc: use std::stoul instead of std::stol (#32133) --- system/loggerd/logger.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/loggerd/logger.cc b/system/loggerd/logger.cc index b44758bb04..8234cd84ad 100644 --- a/system/loggerd/logger.cc +++ b/system/loggerd/logger.cc @@ -96,7 +96,7 @@ std::string logger_get_identifier(std::string key) { Params params; uint32_t cnt; try { - cnt = std::stol(params.get(key)); + cnt = std::stoul(params.get(key)); } catch (std::exception &e) { cnt = 0; } From 6c3a33a6d847c946e11f5a6414e270ae3ee5c03d Mon Sep 17 00:00:00 2001 From: YassineYousfi Date: Tue, 9 Apr 2024 11:19:43 -0700 Subject: [PATCH 392/599] WD40 model (#32141) * 2eedcd90-b7db-46cb-86be-740f48ded7ab/700 * cleanup some constants * update model replay ref --- selfdrive/modeld/constants.py | 3 --- selfdrive/modeld/modeld.py | 8 -------- selfdrive/modeld/models/supercombo.onnx | 4 ++-- selfdrive/test/process_replay/model_replay_ref_commit | 2 +- 4 files changed, 3 insertions(+), 14 deletions(-) diff --git a/selfdrive/modeld/constants.py b/selfdrive/modeld/constants.py index dda1ff5e33..ca81bffcc8 100644 --- a/selfdrive/modeld/constants.py +++ b/selfdrive/modeld/constants.py @@ -18,9 +18,6 @@ class ModelConstants: HISTORY_BUFFER_LEN = 99 DESIRE_LEN = 8 TRAFFIC_CONVENTION_LEN = 2 - NAV_FEATURE_LEN = 256 - NAV_INSTRUCTION_LEN = 150 - DRIVING_STYLE_LEN = 12 LAT_PLANNER_STATE_LEN = 4 LATERAL_CONTROL_PARAMS_LEN = 2 PREV_DESIRED_CURV_LEN = 1 diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index 9083f8585e..a8a9aac8c9 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -59,8 +59,6 @@ class ModelState: 'traffic_convention': np.zeros(ModelConstants.TRAFFIC_CONVENTION_LEN, dtype=np.float32), 'lateral_control_params': np.zeros(ModelConstants.LATERAL_CONTROL_PARAMS_LEN, dtype=np.float32), 'prev_desired_curv': np.zeros(ModelConstants.PREV_DESIRED_CURV_LEN * (ModelConstants.HISTORY_BUFFER_LEN+1), dtype=np.float32), - 'nav_features': np.zeros(ModelConstants.NAV_FEATURE_LEN, dtype=np.float32), - 'nav_instructions': np.zeros(ModelConstants.NAV_INSTRUCTION_LEN, dtype=np.float32), 'features_buffer': np.zeros(ModelConstants.HISTORY_BUFFER_LEN * ModelConstants.FEATURE_LEN, dtype=np.float32), } @@ -94,8 +92,6 @@ class ModelState: self.inputs['traffic_convention'][:] = inputs['traffic_convention'] self.inputs['lateral_control_params'][:] = inputs['lateral_control_params'] - self.inputs['nav_features'][:] = inputs['nav_features'] - self.inputs['nav_instructions'][:] = inputs['nav_instructions'] # if getCLBuffer is not None, frame will be None self.model.setInputBuffer("input_imgs", self.frame.prepare(buf, transform.flatten(), self.model.getCLBuffer("input_imgs"))) @@ -168,8 +164,6 @@ def main(demo=False): model_transform_main = np.zeros((3, 3), dtype=np.float32) model_transform_extra = np.zeros((3, 3), dtype=np.float32) live_calib_seen = False - nav_features = np.zeros(ModelConstants.NAV_FEATURE_LEN, dtype=np.float32) - nav_instructions = np.zeros(ModelConstants.NAV_INSTRUCTION_LEN, dtype=np.float32) buf_main, buf_extra = None, None meta_main = FrameMeta() meta_extra = FrameMeta() @@ -257,8 +251,6 @@ def main(demo=False): 'desire': vec_desire, 'traffic_convention': traffic_convention, 'lateral_control_params': lateral_control_params, - 'nav_features': nav_features, - 'nav_instructions': nav_instructions, } mt1 = time.perf_counter() diff --git a/selfdrive/modeld/models/supercombo.onnx b/selfdrive/modeld/models/supercombo.onnx index 7991fef662..ed539ca37d 100644 --- a/selfdrive/modeld/models/supercombo.onnx +++ b/selfdrive/modeld/models/supercombo.onnx @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4fb2cec9ef759cb1164ee2d27b338338a5a9302f427ad95f9b021361b02e1a2 -size 52263406 +oid sha256:a7a267b5026a0fab61095092d9af20c1dcd70311817c80749adcf6c0a0879061 +size 50660999 diff --git a/selfdrive/test/process_replay/model_replay_ref_commit b/selfdrive/test/process_replay/model_replay_ref_commit index 85ba5fb840..3f1e91c369 100644 --- a/selfdrive/test/process_replay/model_replay_ref_commit +++ b/selfdrive/test/process_replay/model_replay_ref_commit @@ -1 +1 @@ -60b00d102b3aedcc74a91722d1210cc6905b0c8f +512c45131ff7eb48bf101f9eae50a389efba6930 From 8364cd2f2cc4f4b753fc417333df4c707c11eb86 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 9 Apr 2024 11:38:18 -0700 Subject: [PATCH 393/599] jenkins: publish casync releases from device (#32142) * publish in ci * overwrite * publish in ci * fix * test it * Revert "test it" This reverts commit b3de51dc693df79b980d7dffc18bcc3c88d83375. * use right token * cleanup after uploading --------- Co-authored-by: Comma Device --- Jenkinsfile | 2 +- release/upload_casync_release.py | 24 ++++++++++++++++++++++++ release/upload_casync_release.sh | 9 --------- tools/lib/azure_container.py | 10 +++++----- 4 files changed, 30 insertions(+), 15 deletions(-) create mode 100755 release/upload_casync_release.py delete mode 100755 release/upload_casync_release.sh diff --git a/Jenkinsfile b/Jenkinsfile index 8fe0e76ec0..340145eac1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -153,7 +153,7 @@ def build_release(String channel_name) { deviceStage("build casync", "tici-needs-can", [], [ ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync $SOURCE_DIR/release/create_casync_build.sh"], ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/manifest.json && cat /data/manifest.json"], - //["upload ${channel_name}", "OPENPILOT_CHANNEL=${channel_name} $SOURCE_DIR/release/upload_casync_release.sh"], + ["upload and cleanup ${channel_name}", "$SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], ]) } ) diff --git a/release/upload_casync_release.py b/release/upload_casync_release.py new file mode 100755 index 0000000000..0119ebfa0e --- /dev/null +++ b/release/upload_casync_release.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 + +import argparse +import os +import pathlib +from openpilot.tools.lib.azure_container import AzureContainer + + +if __name__ == "__main__": + del os.environ["AZURE_TOKEN"] # regerenate token for this bucket + + OPENPILOT_RELEASES_CONTAINER = AzureContainer("commadist", "openpilot-releases") + + parser = argparse.ArgumentParser(description='upload casync folder to azure') + parser.add_argument("casync_dir", type=str, help="casync directory") + args = parser.parse_args() + + casync_dir = pathlib.Path(args.casync_dir) + + for f in casync_dir.rglob("*"): + if f.is_file(): + blob_name = f.relative_to(casync_dir) + print(f"uploading {f} to {blob_name}") + OPENPILOT_RELEASES_CONTAINER.upload_file(str(f), str(blob_name), overwrite=True) diff --git a/release/upload_casync_release.sh b/release/upload_casync_release.sh deleted file mode 100755 index 02ced8338e..0000000000 --- a/release/upload_casync_release.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -CASYNC_DIR="${CASYNC_DIR:=/tmp/casync}" - -OPENPILOT_RELEASES="https://commadist.blob.core.windows.net/openpilot-releases/" - -SAS="$(python -c 'from tools.lib.azure_container import get_container_sas;print(get_container_sas("commadist","openpilot-releases"))')" - -azcopy cp "$CASYNC_DIR*" "$OPENPILOT_RELEASES?$SAS" --recursive diff --git a/tools/lib/azure_container.py b/tools/lib/azure_container.py index 52b2f37dbf..f5a3a8bfb1 100644 --- a/tools/lib/azure_container.py +++ b/tools/lib/azure_container.py @@ -57,18 +57,18 @@ class AzureContainer: ext = "hevc" if log_type.endswith('camera') else "bz2" return self.BASE_URL + f"{route_name.replace('|', '/')}/{segment_num}/{log_type}.{ext}" - def upload_bytes(self, data: bytes | IO, blob_name: str) -> str: + def upload_bytes(self, data: bytes | IO, blob_name: str, overwrite=False) -> str: from azure.storage.blob import BlobClient blob = BlobClient( account_url=self.ACCOUNT_URL, container_name=self.CONTAINER, blob_name=blob_name, credential=get_azure_credential(), - overwrite=False, + overwrite=overwrite, ) - blob.upload_blob(data) + blob.upload_blob(data, overwrite=overwrite) return self.BASE_URL + blob_name - def upload_file(self, path: str | os.PathLike, blob_name: str) -> str: + def upload_file(self, path: str | os.PathLike, blob_name: str, overwrite=False) -> str: with open(path, "rb") as f: - return self.upload_bytes(f, blob_name) + return self.upload_bytes(f, blob_name, overwrite) From da403a440704da2c2a98bb778919554443403295 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 9 Apr 2024 12:32:29 -0700 Subject: [PATCH 394/599] fix casync uploading (#32144) fix --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 340145eac1..c01a702fff 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -152,8 +152,8 @@ def build_release(String channel_name) { "${channel_name} (casync)": { deviceStage("build casync", "tici-needs-can", [], [ ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync $SOURCE_DIR/release/create_casync_build.sh"], - ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/manifest.json && cat /data/manifest.json"], - ["upload and cleanup ${channel_name}", "$SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], + ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/openpilot /data/manifest.json && cat /data/manifest.json"], + ["upload and cleanup ${channel_name}", "PYTHONWARNINGS=ignore $SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], ]) } ) From 34912b29c1aef1d2561592010978067bcb150459 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 9 Apr 2024 13:45:45 -0700 Subject: [PATCH 395/599] modeld: less spammy with no cams --- selfdrive/modeld/modeld.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index a8a9aac8c9..35e2a29aa1 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -190,7 +190,7 @@ def main(demo=False): break if buf_main is None: - cloudlog.error("vipc_client_main no frame") + cloudlog.debug("vipc_client_main no frame") continue if use_extra_client: @@ -202,7 +202,7 @@ def main(demo=False): break if buf_extra is None: - cloudlog.error("vipc_client_extra no frame") + cloudlog.debug("vipc_client_extra no frame") continue if abs(meta_main.timestamp_sof - meta_extra.timestamp_sof) > 10000000: From 91713bed2627bef431af0fbcca485e054112d875 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 9 Apr 2024 15:42:30 -0700 Subject: [PATCH 396/599] jenkins: use token for pushing to openpilot-releases (#32146) use token Co-authored-by: tester --- Jenkinsfile | 3 +++ release/upload_casync_release.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index c01a702fff..45a18879f5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -26,6 +26,7 @@ export SOURCE_DIR=${env.SOURCE_DIR} export GIT_BRANCH=${env.GIT_BRANCH} export GIT_COMMIT=${env.GIT_COMMIT} export AZURE_TOKEN='${env.AZURE_TOKEN}' +export AZURE_TOKEN_OPENPILOT_RELEASES='${env.AZURE_TOKEN_OPENPILOT_RELEASES}' export MAPBOX_TOKEN='${env.MAPBOX_TOKEN}' # only use 1 thread for tici tests since most require HIL export PYTEST_ADDOPTS="-n 0" @@ -134,9 +135,11 @@ def pcStage(String stageName, Closure body) { def setupCredentials() { withCredentials([ string(credentialsId: 'azure_token', variable: 'AZURE_TOKEN'), + string(credentialsId: 'azure_token_openpilot_releases', variable: 'AZURE_TOKEN_OPENPILOT_RELEASES'), string(credentialsId: 'mapbox_token', variable: 'MAPBOX_TOKEN') ]) { env.AZURE_TOKEN = "${AZURE_TOKEN}" + env.AZURE_TOKEN_OPENPILOT_RELEASES = "${AZURE_TOKEN_OPENPILOT_RELEASES}" env.MAPBOX_TOKEN = "${MAPBOX_TOKEN}" } } diff --git a/release/upload_casync_release.py b/release/upload_casync_release.py index 0119ebfa0e..4261e298a8 100755 --- a/release/upload_casync_release.py +++ b/release/upload_casync_release.py @@ -7,7 +7,8 @@ from openpilot.tools.lib.azure_container import AzureContainer if __name__ == "__main__": - del os.environ["AZURE_TOKEN"] # regerenate token for this bucket + if "AZURE_TOKEN_OPENPILOT_RELEASES" in os.environ: + os.environ["AZURE_TOKEN"] = os.environ["AZURE_TOKEN_OPENPILOT_RELEASES"] OPENPILOT_RELEASES_CONTAINER = AzureContainer("commadist", "openpilot-releases") From a6235521279bff11a0ebfcfb14d303986e927b74 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 9 Apr 2024 19:28:02 -0700 Subject: [PATCH 397/599] Format volkswagen/values.py --- selfdrive/car/volkswagen/values.py | 62 +++++++++++++++--------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index a88487f7c4..386cbf43f2 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -8,7 +8,7 @@ from opendbc.can.can_define import CANDefine from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, \ - Device + Device from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu @@ -177,7 +177,7 @@ class VWCarDocs(CarDocs): # Exception: SEAT Leon and SEAT Ateca share a chassis code class CAR(Platforms): - VOLKSWAGEN_ARTEON_MK1 = VolkswagenMQBPlatformConfig( # Chassis AN + VOLKSWAGEN_ARTEON_MK1 = VolkswagenMQBPlatformConfig( # Chassis AN [ VWCarDocs("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), VWCarDocs("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), @@ -186,7 +186,7 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1733, wheelbase=2.84), ) - VOLKSWAGEN_ATLAS_MK1 = VolkswagenMQBPlatformConfig( # Chassis CA + VOLKSWAGEN_ATLAS_MK1 = VolkswagenMQBPlatformConfig( # Chassis CA [ VWCarDocs("Volkswagen Atlas 2018-23"), VWCarDocs("Volkswagen Atlas Cross Sport 2020-22"), @@ -196,14 +196,14 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=2011, wheelbase=2.98), ) - VOLKSWAGEN_CADDY_MK3 = VolkswagenPQPlatformConfig( # Chassis 2K + VOLKSWAGEN_CADDY_MK3 = VolkswagenPQPlatformConfig( # Chassis 2K [ VWCarDocs("Volkswagen Caddy 2019"), VWCarDocs("Volkswagen Caddy Maxi 2019"), ], VolkswagenCarSpecs(mass=1613, wheelbase=2.6, minSteerSpeed=21 * CV.KPH_TO_MS), ) - VOLKSWAGEN_CRAFTER_MK2 = VolkswagenMQBPlatformConfig( # Chassis SY/SZ + VOLKSWAGEN_CRAFTER_MK2 = VolkswagenMQBPlatformConfig( # Chassis SY/SZ [ VWCarDocs("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), VWCarDocs("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), @@ -213,7 +213,7 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), ) - VOLKSWAGEN_GOLF_MK7 = VolkswagenMQBPlatformConfig( # Chassis 5G/AU/BA/BE + VOLKSWAGEN_GOLF_MK7 = VolkswagenMQBPlatformConfig( # Chassis 5G/AU/BA/BE [ VWCarDocs("Volkswagen e-Golf 2014-20"), VWCarDocs("Volkswagen Golf 2015-20", auto_resume=False), @@ -226,14 +226,14 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1397, wheelbase=2.62), ) - VOLKSWAGEN_JETTA_MK7 = VolkswagenMQBPlatformConfig( # Chassis BU + VOLKSWAGEN_JETTA_MK7 = VolkswagenMQBPlatformConfig( # Chassis BU [ VWCarDocs("Volkswagen Jetta 2018-24"), VWCarDocs("Volkswagen Jetta GLI 2021-24"), ], VolkswagenCarSpecs(mass=1328, wheelbase=2.71), ) - VOLKSWAGEN_PASSAT_MK8 = VolkswagenMQBPlatformConfig( # Chassis 3G + VOLKSWAGEN_PASSAT_MK8 = VolkswagenMQBPlatformConfig( # Chassis 3G [ VWCarDocs("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), VWCarDocs("Volkswagen Passat Alltrack 2015-22"), @@ -241,55 +241,55 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1551, wheelbase=2.79), ) - VOLKSWAGEN_PASSAT_NMS = VolkswagenPQPlatformConfig( # Chassis A3 + VOLKSWAGEN_PASSAT_NMS = VolkswagenPQPlatformConfig( # Chassis A3 [VWCarDocs("Volkswagen Passat NMS 2017-22")], - VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS), + VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50 * CV.KPH_TO_MS, minEnableSpeed=20 * CV.KPH_TO_MS), ) - VOLKSWAGEN_POLO_MK6 = VolkswagenMQBPlatformConfig( # Chassis AW + VOLKSWAGEN_POLO_MK6 = VolkswagenMQBPlatformConfig( # Chassis AW [ VWCarDocs("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), VWCarDocs("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), ], VolkswagenCarSpecs(mass=1230, wheelbase=2.55), ) - VOLKSWAGEN_SHARAN_MK2 = VolkswagenPQPlatformConfig( # Chassis 7N + VOLKSWAGEN_SHARAN_MK2 = VolkswagenPQPlatformConfig( # Chassis 7N [ VWCarDocs("Volkswagen Sharan 2018-22"), VWCarDocs("SEAT Alhambra 2018-20"), ], - VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50*CV.KPH_TO_MS), + VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50 * CV.KPH_TO_MS), ) - VOLKSWAGEN_TAOS_MK1 = VolkswagenMQBPlatformConfig( # Chassis B2 + VOLKSWAGEN_TAOS_MK1 = VolkswagenMQBPlatformConfig( # Chassis B2 [VWCarDocs("Volkswagen Taos 2022-23")], VolkswagenCarSpecs(mass=1498, wheelbase=2.69), ) - VOLKSWAGEN_TCROSS_MK1 = VolkswagenMQBPlatformConfig( # Chassis C1 + VOLKSWAGEN_TCROSS_MK1 = VolkswagenMQBPlatformConfig( # Chassis C1 [VWCarDocs("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1150, wheelbase=2.60), ) - VOLKSWAGEN_TIGUAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis AD/BW + VOLKSWAGEN_TIGUAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis AD/BW [ VWCarDocs("Volkswagen Tiguan 2018-24"), VWCarDocs("Volkswagen Tiguan eHybrid 2021-23"), ], VolkswagenCarSpecs(mass=1715, wheelbase=2.74), ) - VOLKSWAGEN_TOURAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis 1T + VOLKSWAGEN_TOURAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis 1T [VWCarDocs("Volkswagen Touran 2016-23")], VolkswagenCarSpecs(mass=1516, wheelbase=2.79), ) - VOLKSWAGEN_TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( # Chassis 7H/7L + VOLKSWAGEN_TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( # Chassis 7H/7L [ VWCarDocs("Volkswagen Caravelle 2020"), VWCarDocs("Volkswagen California 2021-23"), ], VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), ) - VOLKSWAGEN_TROC_MK1 = VolkswagenMQBPlatformConfig( # Chassis A1 + VOLKSWAGEN_TROC_MK1 = VolkswagenMQBPlatformConfig( # Chassis A1 [VWCarDocs("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1413, wheelbase=2.63), ) - AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( # Chassis 8V/FF + AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( # Chassis 8V/FF [ VWCarDocs("Audi A3 2014-19"), VWCarDocs("Audi A3 Sportback e-tron 2017-18"), @@ -298,39 +298,39 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1335, wheelbase=2.61), ) - AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( # Chassis GA + AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( # Chassis GA [VWCarDocs("Audi Q2 2018")], VolkswagenCarSpecs(mass=1205, wheelbase=2.61), ) - AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( # Chassis 8U/F3/FS + AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( # Chassis 8U/F3/FS [VWCarDocs("Audi Q3 2019-23")], VolkswagenCarSpecs(mass=1623, wheelbase=2.68), ) - SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( # Chassis 5F + SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( # Chassis 5F [VWCarDocs("SEAT Ateca 2018")], VolkswagenCarSpecs(mass=1900, wheelbase=2.64), ) - SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( # Chassis 5F + SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( # Chassis 5F [VWCarDocs("SEAT Leon 2014-20")], VolkswagenCarSpecs(mass=1227, wheelbase=2.64), ) - SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( # Chassis PJ + SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( # Chassis PJ [VWCarDocs("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1266, wheelbase=2.56), ) - SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW + SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW [VWCarDocs("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ])], VolkswagenCarSpecs(mass=1265, wheelbase=2.66), ) - SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NU + SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NU [VWCarDocs("Škoda Karoq 2019-23")], VolkswagenCarSpecs(mass=1278, wheelbase=2.66), ) - SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NS + SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NS [VWCarDocs("Škoda Kodiaq 2017-23")], VolkswagenCarSpecs(mass=1569, wheelbase=2.79), ) - SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( # Chassis NE + SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( # Chassis NE [ VWCarDocs("Škoda Octavia 2015-19"), VWCarDocs("Škoda Octavia RS 2016"), @@ -338,11 +338,11 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1388, wheelbase=2.68), ) - SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW + SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW [VWCarDocs("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1192, wheelbase=2.65), ) - SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( # Chassis 3V/NP + SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( # Chassis 3V/NP [VWCarDocs("Škoda Superb 2015-22")], VolkswagenCarSpecs(mass=1505, wheelbase=2.84), ) From bf61e92518775f251a1ec4004889cdb8cd27b47e Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 10 Apr 2024 10:39:24 +0800 Subject: [PATCH 398/599] cabana: gray out inactive messages (#32121) * improve message list remove TODO * improve sort * remove translate * fix seeking issue --- tools/cabana/mainwin.cc | 1 + tools/cabana/messageswidget.cc | 160 +++++++++++++++++++-------------- tools/cabana/messageswidget.h | 11 +-- tools/cabana/utils/util.cc | 12 ++- tools/replay/replay.cc | 38 +++++--- tools/replay/replay.h | 1 + 6 files changed, 140 insertions(+), 83 deletions(-) diff --git a/tools/cabana/mainwin.cc b/tools/cabana/mainwin.cc index bcb65e2e3e..a4b7764346 100644 --- a/tools/cabana/mainwin.cc +++ b/tools/cabana/mainwin.cc @@ -179,6 +179,7 @@ void MainWindow::createDockWindows() { void MainWindow::createDockWidgets() { messages_widget = new MessagesWidget(this); messages_dock->setWidget(messages_widget); + QObject::connect(messages_widget, &MessagesWidget::titleChanged, messages_dock, &QDockWidget::setWindowTitle); // right panel charts_widget = new ChartsWidget(this); diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc index 720553dcb3..8043b99a70 100644 --- a/tools/cabana/messageswidget.cc +++ b/tools/cabana/messageswidget.cc @@ -6,16 +6,29 @@ #include #include #include +#include #include #include #include #include "tools/cabana/commands.h" +static bool isMessageActive(const MessageId &id) { + if (auto dummy_stream = dynamic_cast(can)) { + return true; + } + if (id.source == INVALID_SOURCE) { + return false; + } + // Check if the message is active based on time difference and frequency + const auto &m = can->lastMessage(id); + float delta = can->currentSec() - m.ts; + return (m.freq == 0 && delta < 1.5) || (m.freq > 0 && ((delta - 1.0 / settings.fps) < (5.0 / m.freq))); +} + MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget(parent) { QVBoxLayout *main_layout = new QVBoxLayout(this); main_layout->setContentsMargins(0, 0, 0, 0); - main_layout->setSpacing(0); // toolbar main_layout->addWidget(createToolBar()); // message table @@ -39,23 +52,10 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget header->setStretchLastSection(true); header->setContextMenuPolicy(Qt::CustomContextMenu); - // suppress - QHBoxLayout *suppress_layout = new QHBoxLayout(); - suppress_layout->addWidget(suppress_add = new QPushButton("Suppress Highlighted")); - suppress_layout->addWidget(suppress_clear = new QPushButton()); - suppress_clear->setToolTip(tr("Clear suppressed")); - suppress_layout->addStretch(1); - QCheckBox *suppress_defined_signals = new QCheckBox(tr("Suppress Signals"), this); - suppress_defined_signals->setToolTip(tr("Suppress defined signals")); - suppress_defined_signals->setChecked(settings.suppress_defined_signals); - suppress_layout->addWidget(suppress_defined_signals); - main_layout->addLayout(suppress_layout); - // signals/slots QObject::connect(menu, &QMenu::aboutToShow, this, &MessagesWidget::menuAboutToShow); QObject::connect(header, &MessageViewHeader::customContextMenuRequested, this, &MessagesWidget::headerContextMenuEvent); QObject::connect(view->horizontalScrollBar(), &QScrollBar::valueChanged, header, &MessageViewHeader::updateHeaderPositions); - QObject::connect(suppress_defined_signals, &QCheckBox::stateChanged, can, &AbstractStream::suppressDefinedSignals); QObject::connect(can, &AbstractStream::msgsReceived, model, &MessageListModel::msgsReceived); QObject::connect(dbc(), &DBCManager::DBCFileChanged, model, &MessageListModel::dbcModified); QObject::connect(UndoStack::instance(), &QUndoStack::indexChanged, model, &MessageListModel::dbcModified); @@ -75,9 +75,6 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget } } }); - QObject::connect(suppress_add, &QPushButton::clicked, this, &MessagesWidget::suppressHighlighted); - QObject::connect(suppress_clear, &QPushButton::clicked, this, &MessagesWidget::suppressHighlighted); - suppressHighlighted(); setWhatsThis(tr(R"( Message View
@@ -91,18 +88,30 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget )")); } -QToolBar *MessagesWidget::createToolBar() { - QToolBar *toolbar = new QToolBar(this); - toolbar->setIconSize({12, 12}); - toolbar->addWidget(num_msg_label = new QLabel(this)); - num_msg_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); +QWidget *MessagesWidget::createToolBar() { + QWidget *toolbar = new QWidget(this); + QHBoxLayout *layout = new QHBoxLayout(toolbar); + layout->setContentsMargins(0, 9, 0, 0); + layout->addWidget(suppress_add = new QPushButton("Suppress Highlighted")); + layout->addWidget(suppress_clear = new QPushButton()); + suppress_clear->setToolTip(tr("Clear suppressed")); + layout->addStretch(1); + QCheckBox *suppress_defined_signals = new QCheckBox(tr("Suppress Signals"), this); + suppress_defined_signals->setToolTip(tr("Suppress defined signals")); + suppress_defined_signals->setChecked(settings.suppress_defined_signals); + layout->addWidget(suppress_defined_signals); - auto views_btn = toolbar->addAction(utils::icon("three-dots"), tr("View...")); - views_btn->setMenu(menu); - auto view_button = qobject_cast(toolbar->widgetForAction(views_btn)); + auto view_button = new ToolButton("three-dots", tr("View...")); + view_button->setMenu(menu); view_button->setPopupMode(QToolButton::InstantPopup); - view_button->setToolButtonStyle(Qt::ToolButtonIconOnly); view_button->setStyleSheet("QToolButton::menu-indicator { image: none; }"); + layout->addWidget(view_button); + + QObject::connect(suppress_add, &QPushButton::clicked, this, &MessagesWidget::suppressHighlighted); + QObject::connect(suppress_clear, &QPushButton::clicked, this, &MessagesWidget::suppressHighlighted); + QObject::connect(suppress_defined_signals, &QCheckBox::stateChanged, can, &AbstractStream::suppressDefinedSignals); + + suppressHighlighted(); return toolbar; } @@ -113,7 +122,7 @@ void MessagesWidget::updateTitle() { auto m = dbc()->msg(item.id); return m ? std::make_pair(pair.first + 1, pair.second + m->sigs.size()) : pair; }); - num_msg_label->setText(tr("%1 Messages (%2 DBC Messages, %3 Signals)") + emit titleChanged(tr("%1 Messages (%2 DBC Messages, %3 Signals)") .arg(model->items_.size()).arg(stats.first).arg(stats.second)); } @@ -156,6 +165,10 @@ void MessagesWidget::menuAboutToShow() { auto action = menu->addAction(tr("Multi-Line bytes"), this, &MessagesWidget::setMultiLineBytes); action->setCheckable(true); action->setChecked(settings.multiple_lines_hex); + + action = menu->addAction(tr("Show inactive Messages"), model, &MessageListModel::showInactivemessages); + action->setCheckable(true); + action->setChecked(model->show_inactive_messages); } void MessagesWidget::setMultiLineBytes(bool multi) { @@ -186,9 +199,9 @@ QVariant MessageListModel::headerData(int section, Qt::Orientation orientation, QVariant MessageListModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() >= items_.size()) return {}; - auto getFreq = [](const CanData &d) { - if (d.freq > 0 && (can->currentSec() - d.ts - 1.0 / settings.fps) < (5.0 / d.freq)) { - return d.freq >= 0.95 ? QString::number(std::nearbyint(d.freq)) : QString::number(d.freq, 'f', 2); + auto getFreq = [](float freq) { + if (freq > 0) { + return freq >= 0.95 ? QString::number(std::nearbyint(freq)) : QString::number(freq, 'f', 2); } else { return QStringLiteral("--"); } @@ -202,7 +215,7 @@ QVariant MessageListModel::data(const QModelIndex &index, int role) const { case Column::SOURCE: return item.id.source != INVALID_SOURCE ? QString::number(item.id.source) : "N/A"; case Column::ADDRESS: return QString::number(item.id.address, 16); case Column::NODE: return item.node; - case Column::FREQ: return item.id.source != INVALID_SOURCE ? getFreq(data) : "N/A"; + case Column::FREQ: return item.id.source != INVALID_SOURCE ? getFreq(data.freq) : "N/A"; case Column::COUNT: return item.id.source != INVALID_SOURCE ? QString::number(data.count) : "N/A"; case Column::DATA: return item.id.source != INVALID_SOURCE ? "" : "N/A"; } @@ -210,6 +223,8 @@ QVariant MessageListModel::data(const QModelIndex &index, int role) const { return QVariant::fromValue((void*)(&data.colors)); } else if (role == BytesRole && index.column() == Column::DATA && item.id.source != INVALID_SOURCE) { return QVariant::fromValue((void*)(&data.dat)); + } else if (role == Qt::ForegroundRole && !item.active) { + return settings.theme == DARK_THEME ? QApplication::palette().color(QPalette::Text).darker(150) : QColor(Qt::gray); } else if (role == Qt::ToolTipRole && index.column() == Column::NAME) { auto msg = dbc()->msg(item.id); auto tooltip = item.name; @@ -224,6 +239,11 @@ void MessageListModel::setFilterStrings(const QMap &filters) { filterAndSort(); } +void MessageListModel::showInactivemessages(bool show) { + show_inactive_messages = show; + filterAndSort(); +} + void MessageListModel::dbcModified() { dbc_messages_.clear(); for (const auto &[_, m] : dbc()->getMessages(-1)) { @@ -233,19 +253,22 @@ void MessageListModel::dbcModified() { } void MessageListModel::sortItems(std::vector &items) { - auto do_sort = [order = sort_order](std::vector &m, auto proj) { - std::stable_sort(m.begin(), m.end(), [order, proj = std::move(proj)](auto &l, auto &r) { - return order == Qt::AscendingOrder ? proj(l) < proj(r) : proj(l) > proj(r); - }); + auto compare = [this](const auto &l, const auto &r) { + switch (sort_column) { + case Column::NAME: return l.name < r.name; + case Column::SOURCE: return l.id.source < r.id.source; + case Column::ADDRESS: return l.id.address < r.id.address; + case Column::NODE: return l.node < r.node; + case Column::FREQ: return can->lastMessage(l.id).freq < can->lastMessage(r.id).freq; + case Column::COUNT: return can->lastMessage(l.id).count < can->lastMessage(r.id).count; + default: return false; // Default case to suppress compiler warning + } }; - switch (sort_column) { - case Column::NAME: do_sort(items, [](auto &item) { return std::tie(item.name, item.id); }); break; - case Column::SOURCE: do_sort(items, [](auto &item) { return std::tie(item.id.source, item.id); }); break; - case Column::ADDRESS: do_sort(items, [](auto &item) { return std::tie(item.id.address, item.id);}); break; - case Column::NODE: do_sort(items, [](auto &item) { return std::tie(item.node, item.id);}); break; - case Column::FREQ: do_sort(items, [](auto &item) { return std::make_pair(can->lastMessage(item.id).freq, item.id); }); break; - case Column::COUNT: do_sort(items, [](auto &item) { return std::make_pair(can->lastMessage(item.id).count, item.id); }); break; - } + + if (sort_order == Qt::DescendingOrder) + std::stable_sort(items.rbegin(), items.rend(), compare); + else + std::stable_sort(items.begin(), items.end(), compare); } static bool parseRange(const QString &filter, uint32_t value, int base = 10) { @@ -292,7 +315,6 @@ bool MessageListModel::match(const MessageListModel::Item &item) { match = item.node.contains(txt, Qt::CaseInsensitive); break; case Column::FREQ: - // TODO: Hide stale messages? match = parseRange(txt, data.freq); break; case Column::COUNT: @@ -306,7 +328,7 @@ bool MessageListModel::match(const MessageListModel::Item &item) { return match; } -void MessageListModel::filterAndSort() { +bool MessageListModel::filterAndSort() { // merge CAN and DBC messages std::vector all_messages; all_messages.reserve(can->lastMessages().size() + dbc_messages_.size()); @@ -319,13 +341,18 @@ void MessageListModel::filterAndSort() { // filter and sort std::vector items; + items.reserve(all_messages.size()); for (const auto &id : all_messages) { - auto msg = dbc()->msg(id); - Item item = {.id = id, - .name = msg ? msg->name : UNTITLED, - .node = msg ? msg->transmitter : QString()}; - if (match(item)) - items.emplace_back(item); + bool active = isMessageActive(id); + if (active || show_inactive_messages) { + auto msg = dbc()->msg(id); + Item item = {.id = id, + .active = active, + .name = msg ? msg->name : UNTITLED, + .node = msg ? msg->transmitter : QString()}; + if (match(item)) + items.emplace_back(item); + } } sortItems(items); @@ -333,16 +360,21 @@ void MessageListModel::filterAndSort() { beginResetModel(); items_ = std::move(items); endResetModel(); + return true; } + return false; } void MessageListModel::msgsReceived(const std::set *new_msgs, bool has_new_ids) { if (has_new_ids || filters_.contains(Column::FREQ) || filters_.contains(Column::COUNT) || filters_.contains(Column::DATA)) { - filterAndSort(); + if (filterAndSort()) return; } for (int i = 0; i < items_.size(); ++i) { - if (!new_msgs || new_msgs->count(items_[i].id)) { - for (int col = Column::FREQ; col < columnCount(); ++col) + auto &item = items_[i]; + bool prev_active = item.active; + item.active = isMessageActive(item.id); + if (item.active != prev_active || !new_msgs || new_msgs->count(item.id)) { + for (int col = 0; col < columnCount(); ++col) emit dataChanged(index(i, col), index(i, col), {Qt::DisplayRole}); } } @@ -360,20 +392,18 @@ void MessageListModel::sort(int column, Qt::SortOrder order) { void MessageView::drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QTreeView::drawRow(painter, option, index); - const int gridHint = style()->styleHint(QStyle::SH_Table_GridLineColor, &option, this); - const QColor gridColor = QColor::fromRgba(static_cast(gridHint)); - QPen old_pen = painter->pen(); - painter->setPen(gridColor); - painter->drawLine(option.rect.left(), option.rect.bottom(), option.rect.right(), option.rect.bottom()); - auto y = option.rect.y(); - painter->translate(visualRect(model()->index(0, 0)).x() - indentation() - .5, -.5); + QPen oldPen = painter->pen(); + const int gridHint = style()->styleHint(QStyle::SH_Table_GridLineColor, &option, this); + painter->setPen(QColor::fromRgba(static_cast(gridHint))); + // Draw bottom border for the row + painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight()); + // Draw vertical borders for each column for (int i = 0; i < header()->count(); ++i) { - painter->translate(header()->sectionSize(header()->logicalIndex(i)), 0); - painter->drawLine(0, y, 0, y + option.rect.height()); + int sectionX = header()->sectionViewportPosition(i); + painter->drawLine(sectionX, option.rect.top(), sectionX, option.rect.bottom()); } - painter->setPen(old_pen); - painter->resetTransform(); + painter->setPen(oldPen); } void MessageView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles) { diff --git a/tools/cabana/messageswidget.h b/tools/cabana/messageswidget.h index e7f1f8c033..c110db2b56 100644 --- a/tools/cabana/messageswidget.h +++ b/tools/cabana/messageswidget.h @@ -7,10 +7,8 @@ #include #include -#include #include #include -#include #include #include @@ -38,19 +36,22 @@ public: int rowCount(const QModelIndex &parent = QModelIndex()) const override { return items_.size(); } void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; void setFilterStrings(const QMap &filters); + void showInactivemessages(bool show); void msgsReceived(const std::set *new_msgs, bool has_new_ids); - void filterAndSort(); + bool filterAndSort(); void dbcModified(); struct Item { MessageId id; QString name; QString node; + bool active; bool operator==(const Item &other) const { return id == other.id && name == other.name && node == other.node; } }; std::vector items_; + bool show_inactive_messages = true; private: void sortItems(std::vector &items); @@ -100,9 +101,10 @@ public: signals: void msgSelectionChanged(const MessageId &message_id); + void titleChanged(const QString &title); protected: - QToolBar *createToolBar(); + QWidget *createToolBar(); void headerContextMenuEvent(const QPoint &pos); void menuAboutToShow(); void setMultiLineBytes(bool multi); @@ -115,6 +117,5 @@ protected: MessageListModel *model; QPushButton *suppress_add; QPushButton *suppress_clear; - QLabel *num_msg_label; QMenu *menu; }; diff --git a/tools/cabana/utils/util.cc b/tools/cabana/utils/util.cc index c89e39993b..a5f6cf0f5e 100644 --- a/tools/cabana/utils/util.cc +++ b/tools/cabana/utils/util.cc @@ -88,18 +88,24 @@ void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem & const auto &bytes = *static_cast*>(data.value()); const auto &colors = *static_cast*>(index.data(ColorsRole).value()); + auto text_color = index.data(Qt::ForegroundRole).value(); + bool inactive = text_color.isValid(); + if (!inactive) { + text_color = option.palette.color(QPalette::Text); + } + for (int i = 0; i < bytes.size(); ++i) { int row = !multiple_lines ? 0 : i / 8; int column = !multiple_lines ? i : i % 8; QRect r = QRect({pt.x() + column * byte_size.width(), pt.y() + row * byte_size.height()}, byte_size); - if (i < colors.size() && colors[i].alpha() > 0) { + if (!inactive && i < colors.size() && colors[i].alpha() > 0) { if (option.state & QStyle::State_Selected) { painter->setPen(option.palette.color(QPalette::Text)); painter->fillRect(r, option.palette.color(QPalette::Window)); } painter->fillRect(r, colors[i]); - } else if (option.state & QStyle::State_Selected) { - painter->setPen(option.palette.color(QPalette::HighlightedText)); + } else { + painter->setPen(option.state & QStyle::State_Selected ? option.palette.color(QPalette::HighlightedText) : text_color); } utils::drawStaticText(painter, r, hex_text_table[bytes[i]]); } diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index 3d5d3219c6..ae148f1a5b 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -96,20 +96,26 @@ void Replay::updateEvents(const std::function &lambda) { } void Replay::seekTo(double seconds, bool relative) { - seconds = relative ? seconds + currentSeconds() : seconds; + seeking_to_seconds_ = relative ? seconds + currentSeconds() : seconds; + seeking_to_seconds_ = std::max(double(0.0), seeking_to_seconds_); + updateEvents([&]() { - seconds = std::max(double(0.0), seconds); - int seg = (int)seconds / 60; - if (segments_.find(seg) == segments_.end()) { - rWarning("can't seek to %d s segment %d is invalid", seconds, seg); + int target_segment = (int)seeking_to_seconds_ / 60; + if (segments_.count(target_segment) == 0) { + rWarning("can't seek to %d s segment %d is invalid", (int)seeking_to_seconds_, target_segment); return true; } - rInfo("seeking to %d s, segment %d", (int)seconds, seg); - current_segment_ = seg; - cur_mono_time_ = route_start_ts_ + seconds * 1e9; - emit seekedTo(seconds); - return isSegmentMerged(seg); + rInfo("seeking to %d s, segment %d", (int)seeking_to_seconds_, target_segment); + current_segment_ = target_segment; + cur_mono_time_ = route_start_ts_ + seeking_to_seconds_ * 1e9; + bool segment_merged = isSegmentMerged(target_segment); + if (segment_merged) { + emit seekedTo(seeking_to_seconds_); + // Reset seeking_to_seconds_ to indicate completion of seek + seeking_to_seconds_ = -1; + } + return segment_merged; }); queueSegment(); } @@ -277,6 +283,18 @@ void Replay::mergeSegments(const SegmentMap::iterator &begin, const SegmentMap:: if (stream_thread_) { emit segmentsMerged(); + + // Check if seeking is in progress + if (seeking_to_seconds_ >= 0) { + int target_segment = int(seeking_to_seconds_ / 60); + auto segment_found = std::find(segments_need_merge.begin(), segments_need_merge.end(), target_segment); + + // If the target segment is found, emit seekedTo signal and reset seeking_to_seconds_ + if (segment_found != segments_need_merge.end()) { + emit seekedTo(seeking_to_seconds_); + seeking_to_seconds_ = -1; // Reset seeking_to_seconds_ to indicate completion of seek + } + } } updateEvents([&]() { events_.swap(new_events_); diff --git a/tools/replay/replay.h b/tools/replay/replay.h index 3859b69380..c4140dc806 100644 --- a/tools/replay/replay.h +++ b/tools/replay/replay.h @@ -117,6 +117,7 @@ protected: std::condition_variable stream_cv_; std::atomic updating_events_ = false; std::atomic current_segment_ = 0; + double seeking_to_seconds_ = -1; SegmentMap segments_; // the following variables must be protected with stream_lock_ std::atomic exit_ = false; From 16bb4a9ccd1fe07d5a90aae719873e4bfc8e4d65 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 9 Apr 2024 21:00:56 -0700 Subject: [PATCH 399/599] Volkswagen: combine platforms with common chassis codes (#32147) * fix curb weight for Ateca to match Leon better https://www.auto-data.net/en/seat-ateca-i-1.6-tdi-115hp-start-stop-23096 https://www.seat.com/content/dam/public/seat-website/car-shopping-tools/brochure-download/brochures/ateca/cars-specs-brochure-KH7-NA-december-2018.pdf * combine leon and ateca * combine fw * migrate * great, both use same torque params * scala and kamiq * remove duplicates * fix * fix! --- selfdrive/car/fingerprints.py | 6 ++- selfdrive/car/tests/routes.py | 4 +- selfdrive/car/torque_data/substitute.toml | 2 - selfdrive/car/volkswagen/fingerprints.py | 51 ++++++----------------- selfdrive/car/volkswagen/values.py | 23 +++++----- 5 files changed, 28 insertions(+), 58 deletions(-) diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index 978d2260d6..9be6dc8de6 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -331,13 +331,15 @@ MIGRATION = { "AUDI Q2 1ST GEN": VW.AUDI_Q2_MK1, "AUDI Q3 2ND GEN": VW.AUDI_Q3_MK2, "SEAT ATECA 1ST GEN": VW.SEAT_ATECA_MK1, - "SEAT LEON 3RD GEN": VW.SEAT_LEON_MK3, + "SEAT LEON 3RD GEN": VW.SEAT_ATECA_MK1, + "SEAT_LEON_MK3": VW.SEAT_ATECA_MK1, "SKODA FABIA 4TH GEN": VW.SKODA_FABIA_MK4, "SKODA KAMIQ 1ST GEN": VW.SKODA_KAMIQ_MK1, "SKODA KAROQ 1ST GEN": VW.SKODA_KAROQ_MK1, "SKODA KODIAQ 1ST GEN": VW.SKODA_KODIAQ_MK1, "SKODA OCTAVIA 3RD GEN": VW.SKODA_OCTAVIA_MK3, - "SKODA SCALA 1ST GEN": VW.SKODA_SCALA_MK1, + "SKODA SCALA 1ST GEN": VW.SKODA_KAMIQ_MK1, + "SKODA_SCALA_MK1": VW.SKODA_KAMIQ_MK1, "SKODA SUPERB 3RD GEN": VW.SKODA_SUPERB_MK3, "mock": MOCK.MOCK, diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 036f39c1f3..ae76268d38 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -248,13 +248,13 @@ routes = [ CarTestRoute("6c6b466346192818|2021-06-06--14-17-47", VOLKSWAGEN.AUDI_Q2_MK1), CarTestRoute("0cd0b7f7e31a3853|2021-12-03--03-12-05", VOLKSWAGEN.AUDI_Q3_MK2), CarTestRoute("8f205bdd11bcbb65|2021-03-26--01-00-17", VOLKSWAGEN.SEAT_ATECA_MK1), - CarTestRoute("fc6b6c9a3471c846|2021-05-27--13-39-56", VOLKSWAGEN.SEAT_LEON_MK3), + CarTestRoute("fc6b6c9a3471c846|2021-05-27--13-39-56", VOLKSWAGEN.SEAT_ATECA_MK1), # Leon CarTestRoute("0bbe367c98fa1538|2023-03-04--17-46-11", VOLKSWAGEN.SKODA_FABIA_MK4), CarTestRoute("12d6ae3057c04b0d|2021-09-15--00-04-07", VOLKSWAGEN.SKODA_KAMIQ_MK1), CarTestRoute("12d6ae3057c04b0d|2021-09-04--21-21-21", VOLKSWAGEN.SKODA_KAROQ_MK1), CarTestRoute("90434ff5d7c8d603|2021-03-15--12-07-31", VOLKSWAGEN.SKODA_KODIAQ_MK1), CarTestRoute("66e5edc3a16459c5|2021-05-25--19-00-29", VOLKSWAGEN.SKODA_OCTAVIA_MK3), - CarTestRoute("026b6d18fba6417f|2021-03-26--09-17-04", VOLKSWAGEN.SKODA_SCALA_MK1), + CarTestRoute("026b6d18fba6417f|2021-03-26--09-17-04", VOLKSWAGEN.SKODA_KAMIQ_MK1), # Scala CarTestRoute("b2e9858e29db492b|2021-03-26--16-58-42", VOLKSWAGEN.SKODA_SUPERB_MK3), CarTestRoute("3c8f0c502e119c1c|2020-06-30--12-58-02", SUBARU.SUBARU_ASCENT), diff --git a/selfdrive/car/torque_data/substitute.toml b/selfdrive/car/torque_data/substitute.toml index 22ee134ae3..8724a08010 100644 --- a/selfdrive/car/torque_data/substitute.toml +++ b/selfdrive/car/torque_data/substitute.toml @@ -58,7 +58,6 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "SKODA_FABIA_MK4" = "VOLKSWAGEN_GOLF_MK7" "SKODA_OCTAVIA_MK3" = "SKODA_SUPERB_MK3" -"SKODA_SCALA_MK1" = "SKODA_SUPERB_MK3" "SKODA_KODIAQ_MK1" = "SKODA_SUPERB_MK3" "SKODA_KAROQ_MK1" = "SKODA_SUPERB_MK3" "SKODA_KAMIQ_MK1" = "SKODA_SUPERB_MK3" @@ -70,7 +69,6 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "AUDI_Q2_MK1" = "VOLKSWAGEN_TIGUAN_MK2" "VOLKSWAGEN_TAOS_MK1" = "VOLKSWAGEN_TIGUAN_MK2" "VOLKSWAGEN_POLO_MK6" = "VOLKSWAGEN_GOLF_MK7" -"SEAT_LEON_MK3" = "VOLKSWAGEN_GOLF_MK7" "SEAT_ATECA_MK1" = "VOLKSWAGEN_GOLF_MK7" "SUBARU_CROSSTREK_HYBRID" = "SUBARU_IMPREZA_2020" diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 39fc910ae9..707d96d739 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -874,22 +874,6 @@ FW_VERSIONS = { CAR.SEAT_ATECA_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906027KA\xf1\x893749', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x870D9300014S \xf1\x895202', - ], - (Ecu.srs, 0x715, None): [ - b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1212001211001305121211052900', - ], - (Ecu.eps, 0x712, None): [ - b'\xf1\x873Q0909144L \xf1\x895081\xf1\x82\x0571N60511A1', - ], - (Ecu.fwdRadar, 0x757, None): [ - b'\xf1\x872Q0907572M \xf1\x890233', - ], - }, - CAR.SEAT_LEON_MK3: { - (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906021EL\xf1\x897542', b'\xf1\x8704L906026BP\xf1\x891198', b'\xf1\x8704L906026BP\xf1\x897608', @@ -903,6 +887,7 @@ FW_VERSIONS = { b'\xf1\x870CW300041D \xf1\x891004', b'\xf1\x870CW300041G \xf1\x891003', b'\xf1\x870CW300050J \xf1\x891908', + b'\xf1\x870D9300014S \xf1\x895202', b'\xf1\x870D9300042M \xf1\x895016', b'\xf1\x870GC300043A \xf1\x892304', ], @@ -910,11 +895,13 @@ FW_VERSIONS = { b'\xf1\x873Q0959655AC\xf1\x890189\xf1\x82\r11110011110011021511110200', b'\xf1\x873Q0959655AS\xf1\x890200\xf1\x82\r11110011110011021511110200', b'\xf1\x873Q0959655AS\xf1\x890200\xf1\x82\r12110012120012021612110200', + b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1212001211001305121211052900', b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1312001313001305171311052900', b'\xf1\x873Q0959655BH\xf1\x890712\xf1\x82\x0e1312001313001305171311052900', b'\xf1\x873Q0959655CM\xf1\x890720\xf1\x82\x0e1312001313001305171311052900', ], (Ecu.eps, 0x712, None): [ + b'\xf1\x873Q0909144L \xf1\x895081\xf1\x82\x0571N60511A1', b'\xf1\x875Q0909144AA\xf1\x891081\xf1\x82\x0521N01842A1', b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521N01342A1', b'\xf1\x875Q0909144P \xf1\x891043\xf1\x82\x0511N01805A0', @@ -922,6 +909,7 @@ FW_VERSIONS = { b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521N05808A1', ], (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x872Q0907572M \xf1\x890233', b'\xf1\x875Q0907572B \xf1\x890200\xf1\x82\x0101', b'\xf1\x875Q0907572H \xf1\x890620', b'\xf1\x875Q0907572K \xf1\x890402\xf1\x82\x0101', @@ -948,15 +936,22 @@ FW_VERSIONS = { }, CAR.SKODA_KAMIQ_MK1: { (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8704C906025AK\xf1\x897053', b'\xf1\x8705C906032M \xf1\x891333', + b'\xf1\x8705C906032M \xf1\x892365', b'\xf1\x8705E906013CK\xf1\x892540', ], (Ecu.transmission, 0x7e1, None): [ b'\xf1\x870CW300020 \xf1\x891906', + b'\xf1\x870CW300020 \xf1\x891907', b'\xf1\x870CW300020T \xf1\x892204', + b'\xf1\x870CW300050 \xf1\x891709', ], (Ecu.srs, 0x715, None): [ + b'\xf1\x872Q0959655AJ\xf1\x890250\xf1\x82\x1211110411110411--04040404131111112H14', + b'\xf1\x872Q0959655AM\xf1\x890351\xf1\x82\x12111104111104112104040404111111112H14', b'\xf1\x872Q0959655AM\xf1\x890351\xf1\x82\x122221042111042121040404042E2711152H14', + b'\xf1\x872Q0959655AS\xf1\x890411\xf1\x82\x1311150411110411210404040417151215391413', b'\xf1\x872Q0959655BJ\xf1\x890412\xf1\x82\x132223042111042121040404042B251215391423', ], (Ecu.eps, 0x712, None): [ @@ -965,6 +960,7 @@ FW_VERSIONS = { ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x872Q0907572AA\xf1\x890396', + b'\xf1\x872Q0907572R \xf1\x890372', b'\xf1\x872Q0907572T \xf1\x890383', ], }, @@ -1117,29 +1113,6 @@ FW_VERSIONS = { b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.SKODA_SCALA_MK1: { - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x8704C906025AK\xf1\x897053', - b'\xf1\x8705C906032M \xf1\x892365', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x870CW300020 \xf1\x891907', - b'\xf1\x870CW300050 \xf1\x891709', - ], - (Ecu.srs, 0x715, None): [ - b'\xf1\x872Q0959655AJ\xf1\x890250\xf1\x82\x1211110411110411--04040404131111112H14', - b'\xf1\x872Q0959655AM\xf1\x890351\xf1\x82\x12111104111104112104040404111111112H14', - b'\xf1\x872Q0959655AS\xf1\x890411\xf1\x82\x1311150411110411210404040417151215391413', - ], - (Ecu.eps, 0x712, None): [ - b'\xf1\x872Q1909144AB\xf1\x896050', - b'\xf1\x872Q1909144M \xf1\x896041', - ], - (Ecu.fwdRadar, 0x757, None): [ - b'\xf1\x872Q0907572AA\xf1\x890396', - b'\xf1\x872Q0907572R \xf1\x890372', - ], - }, CAR.SKODA_SUPERB_MK3: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906027BS\xf1\x892887', diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 386cbf43f2..c4e037d9c5 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -174,7 +174,6 @@ class VWCarDocs(CarDocs): # Check the 7th and 8th characters of the VIN before adding a new CAR. If the # chassis code is already listed below, don't add a new CAR, just add to the # FW_VERSIONS for that existing CAR. -# Exception: SEAT Leon and SEAT Ateca share a chassis code class CAR(Platforms): VOLKSWAGEN_ARTEON_MK1 = VolkswagenMQBPlatformConfig( # Chassis AN @@ -307,20 +306,22 @@ class CAR(Platforms): VolkswagenCarSpecs(mass=1623, wheelbase=2.68), ) SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( # Chassis 5F - [VWCarDocs("SEAT Ateca 2018")], - VolkswagenCarSpecs(mass=1900, wheelbase=2.64), - ) - SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( # Chassis 5F - [VWCarDocs("SEAT Leon 2014-20")], - VolkswagenCarSpecs(mass=1227, wheelbase=2.64), + [ + VWCarDocs("SEAT Ateca 2018"), + VWCarDocs("SEAT Leon 2014-20"), + ], + VolkswagenCarSpecs(mass=1300, wheelbase=2.64), ) SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( # Chassis PJ [VWCarDocs("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1266, wheelbase=2.56), ) SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW - [VWCarDocs("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ])], - VolkswagenCarSpecs(mass=1265, wheelbase=2.66), + [ + VWCarDocs("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ]), + VWCarDocs("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0]), + ], + VolkswagenCarSpecs(mass=1230, wheelbase=2.66), ) SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NU [VWCarDocs("Škoda Karoq 2019-23")], @@ -338,10 +339,6 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=1388, wheelbase=2.68), ) - SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW - [VWCarDocs("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0])], - VolkswagenCarSpecs(mass=1192, wheelbase=2.65), - ) SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( # Chassis 3V/NP [VWCarDocs("Škoda Superb 2015-22")], VolkswagenCarSpecs(mass=1505, wheelbase=2.84), From bc4c39404ae006206787ca1b7f5b468c7bd0b374 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 10 Apr 2024 10:24:44 -0700 Subject: [PATCH 400/599] qcomgpsd: don't send bad time assistance (#32151) --- system/qcomgpsd/qcomgpsd.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/system/qcomgpsd/qcomgpsd.py b/system/qcomgpsd/qcomgpsd.py index 859e024e68..21c7995a77 100755 --- a/system/qcomgpsd/qcomgpsd.py +++ b/system/qcomgpsd/qcomgpsd.py @@ -17,6 +17,7 @@ from cereal import log import cereal.messaging as messaging from openpilot.common.gpio import gpio_init, gpio_set from openpilot.common.retry import retry +from openpilot.common.time import system_time_valid from openpilot.system.hardware.tici.pins import GPIO from openpilot.common.swaglog import cloudlog from openpilot.system.qcomgpsd.modemdiag import ModemDiag, DIAG_LOG_F, setup_logs, send_recv @@ -171,8 +172,9 @@ def setup_quectel(diag: ModemDiag) -> bool: inject_assistance() os.remove(ASSIST_DATA_FILE) #at_cmd("AT+QGPSXTRADATA?") - time_str = datetime.datetime.utcnow().strftime("%Y/%m/%d,%H:%M:%S") - at_cmd(f"AT+QGPSXTRATIME=0,\"{time_str}\",1,1,1000") + if system_time_valid(): + time_str = datetime.datetime.utcnow().strftime("%Y/%m/%d,%H:%M:%S") + at_cmd(f"AT+QGPSXTRATIME=0,\"{time_str}\",1,1,1000") at_cmd("AT+QGPSCFG=\"outport\",\"usbnmea\"") at_cmd("AT+QGPS=1") From 7a3c03c901829e9da2170afc9968b834168a47b5 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 10 Apr 2024 10:38:56 -0700 Subject: [PATCH 401/599] [bot] Fingerprints: add missing FW versions from new users (#32149) Export fingerprints --- selfdrive/car/honda/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index cae5c44bc9..18fe69dd1f 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -43,6 +43,7 @@ FW_VERSIONS = { b'37805-6B2-AA10\x00\x00', b'37805-6B2-C520\x00\x00', b'37805-6B2-C540\x00\x00', + b'37805-6B2-C560\x00\x00', b'37805-6B2-M520\x00\x00', b'37805-6B2-Y810\x00\x00', b'37805-6M4-B730\x00\x00', From 9d1b3cc7737ed0621383d09d0a4772bfc867cc02 Mon Sep 17 00:00:00 2001 From: MarinkoMagla <159032106+MarinkoMagla@users.noreply.github.com> Date: Thu, 11 Apr 2024 00:22:36 +0200 Subject: [PATCH 402/599] Encode the actual current date in vw_mqb_config.py (#32093) --- selfdrive/debug/vw_mqb_config.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/selfdrive/debug/vw_mqb_config.py b/selfdrive/debug/vw_mqb_config.py index 75409e3f87..64bc2bc638 100755 --- a/selfdrive/debug/vw_mqb_config.py +++ b/selfdrive/debug/vw_mqb_config.py @@ -6,6 +6,7 @@ from enum import IntEnum from panda import Panda from panda.python.uds import UdsClient, MessageTimeoutError, NegativeResponseError, SESSION_TYPE,\ DATA_IDENTIFIER_TYPE, ACCESS_TYPE +from datetime import date # TODO: extend UDS library to allow custom/vendor-defined data identifiers without ignoring type checks class VOLKSWAGEN_DATA_IDENTIFIER_TYPE(IntEnum): @@ -136,8 +137,10 @@ if __name__ == "__main__": # last two bytes, but not the VZ/importer or tester serial number # Can't seem to read it back, but we can read the calibration tester, # so fib a little and say that same tester did the programming - # TODO: encode the actual current date - prog_date = b'\x22\x02\x08' + current_date = date.today() + formatted_date = current_date.strftime('%y-%m-%d') + year, month, day = [int(part) for part in formatted_date.split('-')] + prog_date = bytes([year, month, day]) uds_client.write_data_by_identifier(DATA_IDENTIFIER_TYPE.PROGRAMMING_DATE, prog_date) tester_num = uds_client.read_data_by_identifier(DATA_IDENTIFIER_TYPE.CALIBRATION_REPAIR_SHOP_CODE_OR_CALIBRATION_EQUIPMENT_SERIAL_NUMBER) uds_client.write_data_by_identifier(DATA_IDENTIFIER_TYPE.REPAIR_SHOP_CODE_OR_TESTER_SERIAL_NUMBER, tester_num) From c1edc0901e983c456d53c5dffbd72bd4aebe0419 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 11 Apr 2024 10:51:33 +0800 Subject: [PATCH 403/599] common/params.cc: unlink tmp_path only if there's an error (#32145) --- common/params.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/params.cc b/common/params.cc index 38d96a30b0..8635f30d26 100644 --- a/common/params.cc +++ b/common/params.cc @@ -273,7 +273,9 @@ int Params::put(const char* key, const char* value, size_t value_size) { } while (false); close(tmp_fd); - ::unlink(tmp_path.c_str()); + if (result != 0) { + ::unlink(tmp_path.c_str()); + } return result; } From 70b8e277d023196d79f33f9b93090efcbdac6fee Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 10 Apr 2024 23:39:45 -0700 Subject: [PATCH 404/599] Volkswagen: test FW version format (#32162) * add test * more explicit --- .../car/volkswagen/tests/test_volkswagen.py | 19 +++++++++++++++++++ selfdrive/car/volkswagen/values.py | 4 ++++ 2 files changed, 23 insertions(+) create mode 100755 selfdrive/car/volkswagen/tests/test_volkswagen.py diff --git a/selfdrive/car/volkswagen/tests/test_volkswagen.py b/selfdrive/car/volkswagen/tests/test_volkswagen.py new file mode 100755 index 0000000000..e4548ab76c --- /dev/null +++ b/selfdrive/car/volkswagen/tests/test_volkswagen.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +import unittest + +from openpilot.selfdrive.car.volkswagen.values import SPARE_PART_FW_PATTERN +from openpilot.selfdrive.car.volkswagen.fingerprints import FW_VERSIONS + + +class TestVolkswagenPlatformConfigs(unittest.TestCase): + def test_spare_part_fw_pattern(self): + # Relied on for determining if a FW is likely VW + for platform, ecus in FW_VERSIONS.items(): + with self.subTest(platform=platform): + for fws in ecus.values(): + for fw in fws: + self.assertNotEqual(SPARE_PART_FW_PATTERN.match(fw), None, f"Bad FW: {fw}") + + +if __name__ == "__main__": + unittest.main() diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index c4e037d9c5..42dc2869ca 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -1,6 +1,7 @@ from collections import namedtuple from dataclasses import dataclass, field from enum import Enum, IntFlag +import re from cereal import car from panda.python import uds @@ -362,6 +363,9 @@ VOLKSWAGEN_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + VOLKSWAGEN_RX_OFFSET = 0x6a +# TODO: determine the unknown groups +SPARE_PART_FW_PATTERN = re.compile(b'\xf1\x87(?P[0-9][0-9A-Z]{2})(?P[0-9][0-9A-Z][0-9])(?P[0-9A-Z]{2}[0-9])([A-Z0-9]| )') + FW_QUERY_CONFIG = FwQueryConfig( # TODO: add back whitelists after we gather enough data requests=[request for bus, obd_multiplexing in [(1, True), (1, False), (0, False)] for request in [ From ecb648a68ab86e053faff450f5bf0d2bfc221333 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 11 Apr 2024 09:46:27 -0700 Subject: [PATCH 405/599] agnos casync script improvements (#32156) * build agnos * include path * cleanup * rm this * test it * all agnos partitions are AB * fix that * correct * build agnos first * better temp dir * revert the order * try it on pc * test it * upload and fix * build * pass in environemnt variable * not in jenkins --- release/create_casync_agnos_release.py | 10 ++++++++-- release/create_release_manifest.py | 19 ++++++++----------- system/version.py | 7 ++++++- 3 files changed, 22 insertions(+), 14 deletions(-) mode change 100644 => 100755 release/create_casync_agnos_release.py diff --git a/release/create_casync_agnos_release.py b/release/create_casync_agnos_release.py old mode 100644 new mode 100755 index 7f46f10129..60934b8c18 --- a/release/create_casync_agnos_release.py +++ b/release/create_casync_agnos_release.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import argparse import json import pathlib @@ -5,13 +6,15 @@ import tempfile from openpilot.common.basedir import BASEDIR from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop, AGNOS_MANIFEST_FILE from openpilot.system.updated.casync.common import create_casync_from_file +from openpilot.system.version import get_agnos_version if __name__ == "__main__": parser = argparse.ArgumentParser(description="creates a casync release") parser.add_argument("output_dir", type=str, help="output directory for the channel") - parser.add_argument("version", type=str, help="version of agnos this is") + parser.add_argument("working_dir", type=str, help="working directory") + parser.add_argument("--version", type=str, help="version of agnos this is", default=get_agnos_version()) parser.add_argument("--manifest", type=str, help="json manifest to create agnos release from", \ default=str(pathlib.Path(BASEDIR) / AGNOS_MANIFEST_FILE)) args = parser.parse_args() @@ -19,9 +22,12 @@ if __name__ == "__main__": output_dir = pathlib.Path(args.output_dir) output_dir.mkdir(parents=True, exist_ok=True) + working_dir = pathlib.Path(args.working_dir) + working_dir.mkdir(parents=True, exist_ok=True) + manifest_file = pathlib.Path(args.manifest) - with tempfile.NamedTemporaryFile() as entry_file: + with tempfile.NamedTemporaryFile(dir=str(working_dir)) as entry_file: entry_path = pathlib.Path(entry_file.name) with open(manifest_file) as f: diff --git a/release/create_release_manifest.py b/release/create_release_manifest.py index 8e39f2b31c..065cf03e9b 100755 --- a/release/create_release_manifest.py +++ b/release/create_release_manifest.py @@ -4,17 +4,16 @@ import dataclasses import json import pathlib -from openpilot.common.run import run_cmd -from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE -from openpilot.system.version import get_build_metadata +from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE, get_partition_path +from openpilot.system.version import get_build_metadata, get_agnos_version BASE_URL = "https://commadist.blob.core.windows.net" CHANNEL_DATA = pathlib.Path(__file__).parent / "channel_data" / "agnos" -OPENPILOT_RELEASES = f"{BASE_URL}/openpilot-releases" -AGNOS_RELEASES = f"{BASE_URL}/agnos-releases" +OPENPILOT_RELEASES = f"{BASE_URL}/openpilot-releases/openpilot" +AGNOS_RELEASES = f"{BASE_URL}/openpilot-releases/agnos" def create_partition_manifest(agnos_version, partition): @@ -23,10 +22,11 @@ def create_partition_manifest(agnos_version, partition): "casync": { "caibx": f"{AGNOS_RELEASES}/agnos-{agnos_version}-{partition['name']}.caibx" }, - "name": partition["name"], + "path": get_partition_path(0, partition), + "ab": True, "size": partition["size"], "full_check": partition["full_check"], - "hash_raw": partition["hash_raw"] + "hash_raw": partition["hash_raw"], } @@ -49,15 +49,12 @@ if __name__ == "__main__": with open(pathlib.Path(args.target_dir) / AGNOS_MANIFEST_FILE) as f: agnos_manifest = json.load(f) - agnos_version = run_cmd(["bash", "-c", r"unset AGNOS_VERSION && source launch_env.sh && \ - echo -n $AGNOS_VERSION"], args.target_dir).strip() - build_metadata = get_build_metadata(args.target_dir) ret = { "build_metadata": dataclasses.asdict(build_metadata), "manifest": [ - *[create_partition_manifest(agnos_version, entry) for entry in agnos_manifest], + *[create_partition_manifest(get_agnos_version(args.target_dir), entry) for entry in agnos_manifest], create_openpilot_manifest(build_metadata) ] } diff --git a/system/version.py b/system/version.py index 3aa35455e5..6c3609c45a 100755 --- a/system/version.py +++ b/system/version.py @@ -10,7 +10,7 @@ from openpilot.common.basedir import BASEDIR from openpilot.common.swaglog import cloudlog from openpilot.common.utils import cache from openpilot.common.git import get_commit, get_origin, get_branch, get_short_branch, get_commit_date - +from openpilot.common.run import run_cmd RELEASE_BRANCHES = ['release3-staging', 'release3', 'nightly'] TESTED_BRANCHES = RELEASE_BRANCHES + ['devel', 'devel-staging'] @@ -157,6 +157,11 @@ def get_build_metadata(path: str = BASEDIR) -> BuildMetadata: raise Exception("invalid build metadata") +def get_agnos_version(directory: str = BASEDIR) -> str: + return run_cmd(["bash", "-c", r"unset AGNOS_VERSION && source launch_env.sh && \ + echo -n $AGNOS_VERSION"], cwd=directory).strip() + + if __name__ == "__main__": from openpilot.common.params import Params From cce17dc0c58204d38ab54dc133d537be425fe750 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 11 Apr 2024 09:52:45 -0700 Subject: [PATCH 406/599] no cross references between updaters (#32168) * no references * but keep this --- selfdrive/updated/tests/test_base.py | 11 +++++++---- selfdrive/updated/updated.py | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/selfdrive/updated/tests/test_base.py b/selfdrive/updated/tests/test_base.py index 1107a2d3b1..b59f03fe77 100644 --- a/selfdrive/updated/tests/test_base.py +++ b/selfdrive/updated/tests/test_base.py @@ -10,12 +10,15 @@ import unittest from unittest import mock import pytest -from openpilot.selfdrive.manager.process import ManagerProcess - -from openpilot.selfdrive.test.helpers import processes_context from openpilot.common.params import Params -from openpilot.system.updated.common import get_consistent_flag +from openpilot.selfdrive.manager.process import ManagerProcess +from openpilot.selfdrive.test.helpers import processes_context + + +def get_consistent_flag(path: str) -> bool: + consistent_file = pathlib.Path(os.path.join(path, ".overlay_consistent")) + return consistent_file.is_file() def run(args, **kwargs): diff --git a/selfdrive/updated/updated.py b/selfdrive/updated/updated.py index 3a710ba02f..c1af41bd92 100755 --- a/selfdrive/updated/updated.py +++ b/selfdrive/updated/updated.py @@ -16,9 +16,9 @@ from markdown_it import MarkdownIt from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params from openpilot.common.time import system_time_valid -from openpilot.system.hardware import AGNOS, HARDWARE from openpilot.common.swaglog import cloudlog from openpilot.selfdrive.controls.lib.alertmanager import set_offroad_alert +from openpilot.system.hardware import AGNOS, HARDWARE from openpilot.system.version import get_build_metadata LOCK_FILE = os.getenv("UPDATER_LOCK_FILE", "/tmp/safe_staging_overlay.lock") From ccddd48db8caee067109f85869b916b82ad2de3b Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 11 Apr 2024 10:25:38 -0700 Subject: [PATCH 407/599] move casync openpilot build to /data/casync/openpilot (#32171) move to openpilot --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 45a18879f5..660755046e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -154,7 +154,7 @@ def build_release(String channel_name) { }, "${channel_name} (casync)": { deviceStage("build casync", "tici-needs-can", [], [ - ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync $SOURCE_DIR/release/create_casync_build.sh"], + ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync/openpilot $SOURCE_DIR/release/create_casync_build.sh"], ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/openpilot /data/manifest.json && cat /data/manifest.json"], ["upload and cleanup ${channel_name}", "PYTHONWARNINGS=ignore $SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], ]) From e66ded444c643a9e0c875751a601f00a2d85b50a Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 12 Apr 2024 01:43:20 +0800 Subject: [PATCH 408/599] ui/network: fix typos (#32163) --- selfdrive/ui/qt/network/wifi_manager.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/selfdrive/ui/qt/network/wifi_manager.cc b/selfdrive/ui/qt/network/wifi_manager.cc index 111726330d..854a8920b5 100644 --- a/selfdrive/ui/qt/network/wifi_manager.cc +++ b/selfdrive/ui/qt/network/wifi_manager.cc @@ -98,10 +98,10 @@ void WifiManager::refreshFinished(QDBusPendingCallWatcher *watcher) { ipv4_address = getIp4Address(); seenNetworks.clear(); - const QDBusReply> wather_reply = *watcher; - for (const QDBusObjectPath &path : wather_reply.value()) { - QDBusReply replay = call(path.path(), NM_DBUS_INTERFACE_PROPERTIES, "GetAll", NM_DBUS_INTERFACE_ACCESS_POINT); - auto properties = replay.value(); + const QDBusReply> watcher_reply = *watcher; + for (const QDBusObjectPath &path : watcher_reply.value()) { + QDBusReply reply = call(path.path(), NM_DBUS_INTERFACE_PROPERTIES, "GetAll", NM_DBUS_INTERFACE_ACCESS_POINT); + auto properties = reply.value(); const QByteArray ssid = properties["Ssid"].toByteArray(); if (ssid.isEmpty()) continue; From cd16eba8fd486abdb95c172aadc2813b58636d87 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 11 Apr 2024 10:43:39 -0700 Subject: [PATCH 409/599] [bot] Car docs: update model years from new users (#32165) --- docs/CARS.md | 2 +- selfdrive/car/hyundai/values.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 31560fffb0..e591381ebf 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -122,7 +122,7 @@ A supported vehicle is one that just works when you install a comma device. All |Hyundai|Staria 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Tucson 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Tucson 2022[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Tucson 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Tucson 2023-24[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Tucson Diesel 2019|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Tucson Hybrid 2022-24[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Veloster 2019-20|Smart Cruise Control (SCC)|Stock|5 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 67345a9da1..aa24a1f353 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -321,7 +321,7 @@ class CAR(Platforms): HYUNDAI_TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( [ HyundaiCarDocs("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarDocs("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Hyundai Tucson 2023-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), HyundaiCarDocs("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), ], CarSpecs(mass=1630, wheelbase=2.756, steerRatio=13.7, tireStiffnessFactor=0.385), From a05de943dadfac18709d48b2f8031ff8e1e787c6 Mon Sep 17 00:00:00 2001 From: James <91348155+FrogAi@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:58:41 -0700 Subject: [PATCH 410/599] Toyota: use existing "pcm_acc_status" declaration (#32173) --- selfdrive/car/toyota/carstate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index 0efa065dc2..8315f24ae4 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -149,7 +149,7 @@ class CarState(CarStateBase): # ignore standstill state in certain vehicles, since pcm allows to restart with just an acceleration request ret.cruiseState.standstill = self.pcm_acc_status == 7 ret.cruiseState.enabled = bool(cp.vl["PCM_CRUISE"]["CRUISE_ACTIVE"]) - ret.cruiseState.nonAdaptive = cp.vl["PCM_CRUISE"]["CRUISE_STATE"] in (1, 2, 3, 4, 5, 6) + ret.cruiseState.nonAdaptive = self.pcm_acc_status in (1, 2, 3, 4, 5, 6) ret.genericToggle = bool(cp.vl["LIGHT_STALK"]["AUTO_HIGH_BEAM"]) ret.espDisabled = cp.vl["ESP_CONTROL"]["TC_DISABLED"] != 0 From ee9d12a038128025002fe90eea3c9f034bc19a23 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 11 Apr 2024 14:58:05 -0700 Subject: [PATCH 411/599] Tesla: remove CAN fingerprints (#32176) --- selfdrive/car/tesla/fingerprints.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/selfdrive/car/tesla/fingerprints.py b/selfdrive/car/tesla/fingerprints.py index 5a87986e45..1867df7a48 100644 --- a/selfdrive/car/tesla/fingerprints.py +++ b/selfdrive/car/tesla/fingerprints.py @@ -4,12 +4,6 @@ from openpilot.selfdrive.car.tesla.values import CAR Ecu = car.CarParams.Ecu -FINGERPRINTS = { - CAR.TESLA_AP1_MODELS: [{ - 1: 8, 3: 8, 14: 8, 21: 4, 69: 8, 109: 4, 257: 3, 264: 8, 267: 5, 277: 6, 280: 6, 283: 5, 293: 4, 296: 4, 309: 5, 325: 8, 328: 5, 336: 8, 341: 8, 360: 7, 373: 8, 389: 8, 415: 8, 513: 5, 516: 8, 520: 4, 522: 8, 524: 8, 526: 8, 532: 3, 536: 8, 537: 3, 542: 8, 551: 5, 552: 2, 556: 8, 558: 8, 568: 8, 569: 8, 574: 8, 577: 8, 582: 5, 584: 4, 585: 8, 590: 8, 606: 8, 622: 8, 627: 6, 638: 8, 641: 8, 643: 8, 660: 5, 693: 8, 696: 8, 697: 8, 712: 8, 728: 8, 744: 8, 760: 8, 772: 8, 775: 8, 776: 8, 777: 8, 778: 8, 782: 8, 788: 8, 791: 8, 792: 8, 796: 2, 797: 8, 798: 6, 799: 8, 804: 8, 805: 8, 807: 8, 808: 1, 809: 8, 812: 8, 813: 8, 814: 5, 815: 8, 820: 8, 823: 8, 824: 8, 829: 8, 830: 5, 836: 8, 840: 8, 841: 8, 845: 8, 846: 5, 852: 8, 856: 4, 857: 6, 861: 8, 862: 5, 872: 8, 873: 8, 877: 8, 878: 8, 879: 8, 880: 8, 884: 8, 888: 8, 889: 8, 893: 8, 896: 8, 901: 6, 904: 3, 905: 8, 908: 2, 909: 8, 920: 8, 921: 8, 925: 4, 936: 8, 937: 8, 941: 8, 949: 8, 952: 8, 953: 6, 957: 8, 968: 8, 973: 8, 984: 8, 987: 8, 989: 8, 990: 8, 1000: 8, 1001: 8, 1006: 8, 1016: 8, 1026: 8, 1028: 8, 1029: 8, 1030: 8, 1032: 1, 1033: 1, 1034: 8, 1048: 1, 1064: 8, 1070: 8, 1080: 8, 1160: 4, 1281: 8, 1329: 8, 1332: 8, 1335: 8, 1337: 8, 1368: 8, 1412: 8, 1436: 8, 1465: 8, 1476: 8, 1497: 8, 1524: 8, 1527: 8, 1601: 8, 1605: 8, 1611: 8, 1614: 8, 1617: 8, 1621: 8, 1627: 8, 1630: 8, 1800: 4, 1804: 8, 1812: 8, 1815: 8, 1816: 8, 1828: 8, 1831: 8, 1832: 8, 1840: 8, 1848: 8, 1864: 8, 1880: 8, 1892: 8, 1896: 8, 1912: 8, 1960: 8, 1992: 8, 2008: 3, 2043: 5, 2045: 4 - }], -} - FW_VERSIONS = { CAR.TESLA_AP2_MODELS: { (Ecu.adas, 0x649, None): [ From 1f37de1870f127cd8c1c9943b026fe952fd34b8d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 11 Apr 2024 17:51:26 -0700 Subject: [PATCH 412/599] jenkins: publish casync agnos alongside builds (#32177) * publish agnos * test it * more logging and fix * remove this for a quick test * time logging * revert that * space * Revert "test it" This reverts commit 3b80d97f7d436bc5b2cc29caf6bff1671f7f3f71. * bump timeout --- Jenkinsfile | 10 ++++++++-- release/create_casync_agnos_release.py | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 660755046e..418404071a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -105,7 +105,7 @@ def pcStage(String stageName, Closure body) { checkout scm - def dockerArgs = "--user=batman -v /tmp/comma_download_cache:/tmp/comma_download_cache -v /tmp/scons_cache:/tmp/scons_cache -e PYTHONPATH=${env.WORKSPACE} --cpus=8 --memory 16g -e PYTEST_ADDOPTS='-n8'"; + def dockerArgs = "--user=batman -v /tmp/comma_download_cache:/tmp/comma_download_cache -v /tmp/scons_cache:/tmp/scons_cache -e PYTHONPATH=${env.WORKSPACE} -e AZURE_TOKEN_OPENPILOT_RELEASES='${env.AZURE_TOKEN_OPENPILOT_RELEASES}' --cpus=8 --memory 16g -e PYTEST_ADDOPTS='-n8'"; def openpilot_base = retryWithDelay (3, 15) { return docker.build("openpilot-base:build-${env.GIT_COMMIT}", "-f Dockerfile.openpilot_base .") @@ -113,7 +113,7 @@ def pcStage(String stageName, Closure body) { lock(resource: "", label: 'pc', inversePrecedence: true, quantity: 1) { openpilot_base.inside(dockerArgs) { - timeout(time: 20, unit: 'MINUTES') { + timeout(time: 25, unit: 'MINUTES') { try { retryWithDelay (3, 15) { sh "git config --global --add safe.directory '*'" @@ -158,6 +158,12 @@ def build_release(String channel_name) { ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/openpilot /data/manifest.json && cat /data/manifest.json"], ["upload and cleanup ${channel_name}", "PYTHONWARNINGS=ignore $SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], ]) + }, + "publish agnos": { + pcStage("publish agnos") { + sh "release/create_casync_agnos_release.py /tmp/casync/agnos /tmp/casync_tmp" + sh "PYTHONWARNINGS=ignore ${env.WORKSPACE}/release/upload_casync_release.py /tmp/casync" + } } ) } diff --git a/release/create_casync_agnos_release.py b/release/create_casync_agnos_release.py index 60934b8c18..513ff02abf 100755 --- a/release/create_casync_agnos_release.py +++ b/release/create_casync_agnos_release.py @@ -3,6 +3,7 @@ import argparse import json import pathlib import tempfile +import time from openpilot.common.basedir import BASEDIR from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop, AGNOS_MANIFEST_FILE from openpilot.system.updated.casync.common import create_casync_from_file @@ -35,6 +36,7 @@ if __name__ == "__main__": for entry in manifest: print(f"creating casync agnos build from {entry}") + start = time.monotonic() downloader = StreamingDecompressor(entry['url']) parse_func = unsparsify if entry['sparse'] else noop @@ -48,4 +50,8 @@ if __name__ == "__main__": for chunk in parsed_chunks: f.write(chunk) + print(f"downloaded in {time.monotonic() - start}") + + start = time.monotonic() create_casync_from_file(entry_path, output_dir, f"agnos-{args.version}-{entry['name']}") + print(f"created casnc in {time.monotonic() - start}") From 1c491513b6a2dafd470a90186e7bb327ada503aa Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sat, 13 Apr 2024 01:32:11 +0800 Subject: [PATCH 413/599] ui/setup: use the mode "wb" instead of "w". (#32181) --- selfdrive/ui/qt/setup/setup.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/setup/setup.cc b/selfdrive/ui/qt/setup/setup.cc index 08f4a0f9c0..58a6392217 100644 --- a/selfdrive/ui/qt/setup/setup.cc +++ b/selfdrive/ui/qt/setup/setup.cc @@ -51,7 +51,7 @@ void Setup::download(QString url) { list = curl_slist_append(list, ("X-openpilot-serial: " + Hardware::get_serial()).c_str()); char tmpfile[] = "/tmp/installer_XXXXXX"; - FILE *fp = fdopen(mkstemp(tmpfile), "w"); + FILE *fp = fdopen(mkstemp(tmpfile), "wb"); curl_easy_setopt(curl, CURLOPT_URL, url.toStdString().c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL); From eb0b1ce97599290680f8b6b817e3b262da2f2afc Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sat, 13 Apr 2024 01:32:23 +0800 Subject: [PATCH 414/599] ui/setup: Initially disable continue button (#32180) --- selfdrive/ui/qt/setup/setup.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/ui/qt/setup/setup.cc b/selfdrive/ui/qt/setup/setup.cc index 58a6392217..aff9b015b3 100644 --- a/selfdrive/ui/qt/setup/setup.cc +++ b/selfdrive/ui/qt/setup/setup.cc @@ -201,6 +201,7 @@ QWidget * Setup::network_setup() { QPushButton *cont = new QPushButton(); cont->setObjectName("navBtn"); cont->setProperty("primary", true); + cont->setEnabled(false); QObject::connect(cont, &QPushButton::clicked, this, &Setup::nextPage); blayout->addWidget(cont); From 7dd5dbcf7cc9890cbdb97253b249c7416a2a018d Mon Sep 17 00:00:00 2001 From: Iamz Date: Sat, 13 Apr 2024 00:34:24 +0700 Subject: [PATCH 415/599] Update Thai translations (#32184) --- selfdrive/ui/translations/main_th.ts | 38 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index f417ee1af8..447bad4652 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -68,23 +68,23 @@ Hidden Network - + เครือข่ายที่ซ่อนอยู่ CONNECT - เชื่อมต่อ + เชื่อมต่อ Enter SSID - ป้อนค่า SSID + ป้อนค่า SSID Enter password - ใส่รหัสผ่าน + ใส่รหัสผ่าน for "%1" - สำหรับ "%1" + สำหรับ "%1"
@@ -299,11 +299,11 @@ Pair Device - + จับคู่อุปกรณ์ PAIR - + จับคู่ @@ -491,23 +491,23 @@ OnroadAlerts openpilot Unavailable - + openpilot ไม่สามารถใช้งานได้ Waiting for controls to start - + กำลังรอให้ controls เริ่มทำงาน TAKE CONTROL IMMEDIATELY - + เข้าควบคุมรถเดี๋ยวนี้ Controls Unresponsive - + Controls ไม่ตอบสนอง Reboot Device - + รีบูตอุปกรณ์ @@ -632,7 +632,7 @@ now - + ตอนนี้ @@ -673,7 +673,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + ระบบถูกรีเซ็ต กดยืนยันเพื่อลบข้อมูลและการตั้งค่าทั้งหมด กดยกเลิกเพื่อบูตต่อ @@ -783,15 +783,15 @@ This may take up to a minute. Choose Software to Install - + เลือกซอฟต์แวร์ที่จะติดตั้ง openpilot - openpilot + openpilot Custom Software - + ซอฟต์แวร์ที่กำหนดเอง @@ -1156,11 +1156,11 @@ This may take up to a minute. Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. - + แนะนำให้ใช้แบบมาตรฐาน ในโหมดดุดัน openpilot จะตามรถคันหน้าใกล้ขึ้นและเร่งและเบรคแบบดุดันมากขึ้น ในโหมดผ่อนคลาย openpilot จะอยู่ห่างจากรถคันหน้ามากขึ้น ในรถรุ่นที่รองรับคุณสามารถเปลี่ยนบุคลิกไปแบบต่าง ๆ โดยใช้ปุ่มปรับระยะห่างบนพวงมาลัย The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - + การแสดงภาพการขับขี่จะเปลี่ยนไปใช้กล้องมุมกว้างที่หันหน้าไปทางถนนเมื่ออยู่ในความเร็วต่ำ เพื่อแสดงภาพการเลี้ยวที่ดีขึ้น โลโก้โหมดการทดลองจะแสดงที่มุมบนขวาด้วย From 08097bdf0c2fb1526b43c54d51294ceca2158db0 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 12 Apr 2024 16:02:27 -0700 Subject: [PATCH 416/599] [bot] Fingerprints: add missing FW versions from new users (#32186) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 3 +++ selfdrive/car/tesla/fingerprints.py | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 6f8d6474e2..76d04d2e36 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -436,6 +436,7 @@ FW_VERSIONS = { b'68615034AA', ], (Ecu.abs, 0x747, None): [ + b'68292406AG', b'68292406AH', b'68432418AB', b'68432418AD', @@ -518,6 +519,7 @@ FW_VERSIONS = { b'68378701AI ', b'68378702AI ', b'68378710AL ', + b'68378742AI ', b'68378748AL ', b'68378758AM ', b'68448163AJ', @@ -566,6 +568,7 @@ FW_VERSIONS = { b'68360081AM', b'68360085AJ', b'68360085AL', + b'68360086AH', b'68384328AD', b'68384332AD', b'68445531AC', diff --git a/selfdrive/car/tesla/fingerprints.py b/selfdrive/car/tesla/fingerprints.py index 1867df7a48..68c50a62ed 100644 --- a/selfdrive/car/tesla/fingerprints.py +++ b/selfdrive/car/tesla/fingerprints.py @@ -1,4 +1,3 @@ -# ruff: noqa: E501 from cereal import car from openpilot.selfdrive.car.tesla.values import CAR From 661df357a9e9d1ceae03a97d0cf4d082ac120315 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 12 Apr 2024 17:10:18 -0700 Subject: [PATCH 417/599] include hash in agnos casync filenames (#32187) include the hash in agnos filename --- release/create_casync_agnos_release.py | 6 +++--- release/create_release_manifest.py | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/release/create_casync_agnos_release.py b/release/create_casync_agnos_release.py index 513ff02abf..1b55d0fcc8 100755 --- a/release/create_casync_agnos_release.py +++ b/release/create_casync_agnos_release.py @@ -1,13 +1,13 @@ #!/usr/bin/env python3 import argparse import json +import os import pathlib import tempfile import time from openpilot.common.basedir import BASEDIR from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop, AGNOS_MANIFEST_FILE from openpilot.system.updated.casync.common import create_casync_from_file -from openpilot.system.version import get_agnos_version @@ -15,7 +15,6 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(description="creates a casync release") parser.add_argument("output_dir", type=str, help="output directory for the channel") parser.add_argument("working_dir", type=str, help="working directory") - parser.add_argument("--version", type=str, help="version of agnos this is", default=get_agnos_version()) parser.add_argument("--manifest", type=str, help="json manifest to create agnos release from", \ default=str(pathlib.Path(BASEDIR) / AGNOS_MANIFEST_FILE)) args = parser.parse_args() @@ -53,5 +52,6 @@ if __name__ == "__main__": print(f"downloaded in {time.monotonic() - start}") start = time.monotonic() - create_casync_from_file(entry_path, output_dir, f"agnos-{args.version}-{entry['name']}") + agnos_filename = os.path.basename(entry["url"]).split(".")[0] + create_casync_from_file(entry_path, output_dir, agnos_filename) print(f"created casnc in {time.monotonic() - start}") diff --git a/release/create_release_manifest.py b/release/create_release_manifest.py index 065cf03e9b..485b18c617 100755 --- a/release/create_release_manifest.py +++ b/release/create_release_manifest.py @@ -2,6 +2,7 @@ import argparse import dataclasses import json +import os import pathlib from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE, get_partition_path @@ -17,10 +18,12 @@ AGNOS_RELEASES = f"{BASE_URL}/openpilot-releases/agnos" def create_partition_manifest(agnos_version, partition): + agnos_filename = os.path.basename(partition["url"]).split(".")[0] + return { "type": "partition", "casync": { - "caibx": f"{AGNOS_RELEASES}/agnos-{agnos_version}-{partition['name']}.caibx" + "caibx": f"{AGNOS_RELEASES}/{agnos_filename}.caibx" }, "path": get_partition_path(0, partition), "ab": True, From 969be5ab9c170c0a8537371aa150572dfa0c814c Mon Sep 17 00:00:00 2001 From: Miwa / Ensan <63481257+ensan-hcl@users.noreply.github.com> Date: Sat, 13 Apr 2024 10:47:22 +0900 Subject: [PATCH 418/599] Fix panda sorting logic in pandad (#32100) * fix: returns int instead of bool in cmp function * fix: usb_serial will not be equal * refactor: stop using cmp function and instead use tuple of keys --- selfdrive/boardd/pandad.py | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/selfdrive/boardd/pandad.py b/selfdrive/boardd/pandad.py index 9158a51469..27104255a0 100755 --- a/selfdrive/boardd/pandad.py +++ b/selfdrive/boardd/pandad.py @@ -5,7 +5,6 @@ import usb1 import time import subprocess from typing import NoReturn -from functools import cmp_to_key from panda import Panda, PandaDFU, PandaProtocolMismatch, FW_PATH from openpilot.common.basedir import BASEDIR @@ -62,24 +61,6 @@ def flash_panda(panda_serial: str) -> Panda: return panda -def panda_sort_cmp(a: Panda, b: Panda): - a_type = a.get_type() - b_type = b.get_type() - - # make sure the internal one is always first - if a.is_internal() and not b.is_internal(): - return -1 - if not a.is_internal() and b.is_internal(): - return 1 - - # sort by hardware type - if a_type != b_type: - return a_type < b_type - - # last resort: sort by serial number - return a.get_usb_serial() < b.get_usb_serial() - - def main() -> NoReturn: count = 0 first_run = True @@ -136,7 +117,10 @@ def main() -> NoReturn: no_internal_panda_count = 0 # sort pandas to have deterministic order - pandas.sort(key=cmp_to_key(panda_sort_cmp)) + # * the internal one is always first + # * then sort by hardware type + # * as a last resort, sort by serial number + pandas.sort(key=lambda x: (not x.is_internal(), x.get_type(), x.get_usb_serial())) panda_serials = [p.get_usb_serial() for p in pandas] # log panda fw versions From b3397882a373043fda1f1c7dc28cf28c0fe5eb63 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 12 Apr 2024 20:51:54 -0700 Subject: [PATCH 419/599] Volkswagen: enable OBD-less fingerprinting for gateway-integrated cars (#32188) * too complex * Revert "too complex" This reverts commit 7614bfd466f26cf9b3ebf267f5a2c06d97527496. * no logging is fine * EPS is non-essential for exact matching --- selfdrive/car/volkswagen/values.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 42dc2869ca..8ae2a3c430 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -367,7 +367,6 @@ VOLKSWAGEN_RX_OFFSET = 0x6a SPARE_PART_FW_PATTERN = re.compile(b'\xf1\x87(?P[0-9][0-9A-Z]{2})(?P[0-9][0-9A-Z][0-9])(?P[0-9A-Z]{2}[0-9])([A-Z0-9]| )') FW_QUERY_CONFIG = FwQueryConfig( - # TODO: add back whitelists after we gather enough data requests=[request for bus, obd_multiplexing in [(1, True), (1, False), (0, False)] for request in [ Request( [VOLKSWAGEN_VERSION_REQUEST_MULTI], @@ -375,7 +374,6 @@ FW_QUERY_CONFIG = FwQueryConfig( whitelist_ecus=[Ecu.srs, Ecu.eps, Ecu.fwdRadar, Ecu.fwdCamera], rx_offset=VOLKSWAGEN_RX_OFFSET, bus=bus, - logging=(bus != 1 or not obd_multiplexing), obd_multiplexing=obd_multiplexing, ), Request( @@ -383,10 +381,10 @@ FW_QUERY_CONFIG = FwQueryConfig( [VOLKSWAGEN_VERSION_RESPONSE], whitelist_ecus=[Ecu.engine, Ecu.transmission], bus=bus, - logging=(bus != 1 or not obd_multiplexing), obd_multiplexing=obd_multiplexing, ), ]], + non_essential_ecus={Ecu.eps: list(CAR)}, extra_ecus=[(Ecu.fwdCamera, 0x74f, None)], ) From 8dbf7aa2ab20ccd66153aa358424aa938421ea73 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 12 Apr 2024 21:05:50 -0700 Subject: [PATCH 420/599] Volkswagen: add missing chassis codes (#32189) * add Tiguan NAR (North American Region) * cars in AUS/NZ (2019+) have first generation chassis code :/ jyoung states true first generation cars should CAN error --- selfdrive/car/volkswagen/values.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 8ae2a3c430..5052ff1026 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -267,7 +267,7 @@ class CAR(Platforms): [VWCarDocs("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1150, wheelbase=2.60), ) - VOLKSWAGEN_TIGUAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis AD/BW + VOLKSWAGEN_TIGUAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis 5N/AD/AX/BW [ VWCarDocs("Volkswagen Tiguan 2018-24"), VWCarDocs("Volkswagen Tiguan eHybrid 2021-23"), From 02920d67b74410c273987ac7afffc37efddfddc1 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 12 Apr 2024 21:19:20 -0700 Subject: [PATCH 421/599] Volkswagen: move FW pattern to test (#32191) move --- selfdrive/car/volkswagen/tests/test_volkswagen.py | 5 ++++- selfdrive/car/volkswagen/values.py | 4 ---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/selfdrive/car/volkswagen/tests/test_volkswagen.py b/selfdrive/car/volkswagen/tests/test_volkswagen.py index e4548ab76c..85da10a0c2 100755 --- a/selfdrive/car/volkswagen/tests/test_volkswagen.py +++ b/selfdrive/car/volkswagen/tests/test_volkswagen.py @@ -1,9 +1,12 @@ #!/usr/bin/env python3 +import re import unittest -from openpilot.selfdrive.car.volkswagen.values import SPARE_PART_FW_PATTERN from openpilot.selfdrive.car.volkswagen.fingerprints import FW_VERSIONS +# TODO: determine the unknown groups +SPARE_PART_FW_PATTERN = re.compile(b'\xf1\x87(?P[0-9][0-9A-Z]{2})(?P[0-9][0-9A-Z][0-9])(?P[0-9A-Z]{2}[0-9])([A-Z0-9]| )') + class TestVolkswagenPlatformConfigs(unittest.TestCase): def test_spare_part_fw_pattern(self): diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 5052ff1026..375ca78104 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -1,7 +1,6 @@ from collections import namedtuple from dataclasses import dataclass, field from enum import Enum, IntFlag -import re from cereal import car from panda.python import uds @@ -363,9 +362,6 @@ VOLKSWAGEN_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + VOLKSWAGEN_RX_OFFSET = 0x6a -# TODO: determine the unknown groups -SPARE_PART_FW_PATTERN = re.compile(b'\xf1\x87(?P[0-9][0-9A-Z]{2})(?P[0-9][0-9A-Z][0-9])(?P[0-9A-Z]{2}[0-9])([A-Z0-9]| )') - FW_QUERY_CONFIG = FwQueryConfig( requests=[request for bus, obd_multiplexing in [(1, True), (1, False), (0, False)] for request in [ Request( From 6acf763db49944de7a7685b46d50a6c8228a5777 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 12 Apr 2024 22:00:03 -0700 Subject: [PATCH 422/599] Volkswagen: fingerprint on VIN chassis code (#32148) * add function signature and behavior comment * add test * move chassis codes to platform config! * add a shared chassis code test * function * test matching * this commit isn't complete yet * Revert "this commit isn't complete yet" This reverts commit ae77d5cd54e1f43d390fb70c4da38a95ac34f8da. * need to check WMI * TODO: test WMI * test wmi * radar FW sanity check * fix test * fixes from merge fixes from merge * whoops * fix static analysis! * do match_fw_to_car match_fw_to_car takes vin * makes sense to keep it one function, and we can return exact or fuzzy! * clean up * kinda pointless * fix more tests * back to function being only fuzzy * revert test_fw_fingerprint * revert test_fw_fingerprint * simplify * clean up/fixes * rename test * less duplicatey WMI descriptions * fix * convert to enum * I am confident about these WMIs * these are also good * we support 5N AUS/NZ and NAR (North American) AX Tiguans fixes * Tiguan also Mexico * only one user for caddy * got from the test route * check that the gateway type matches the platform (each platform has 1 or 2 types) * ~gateway~ -> exact FW match * remove re * ensure WMIs are set * actually no reason to delete * move comment up to the platform config * proper wmis typing * spacing * flip --- selfdrive/car/car_helpers.py | 4 +- selfdrive/car/fw_query_definitions.py | 4 +- selfdrive/car/fw_versions.py | 12 +- selfdrive/car/hyundai/tests/test_hyundai.py | 2 +- selfdrive/car/hyundai/values.py | 2 +- selfdrive/car/tests/test_fw_fingerprint.py | 8 +- selfdrive/car/toyota/tests/test_toyota.py | 2 +- selfdrive/car/toyota/values.py | 2 +- .../car/volkswagen/tests/test_volkswagen.py | 43 +++++ selfdrive/car/volkswagen/values.py | 170 +++++++++++++++--- selfdrive/debug/test_fw_query_on_routes.py | 4 +- tools/car_porting/auto_fingerprint.py | 2 +- 12 files changed, 206 insertions(+), 49 deletions(-) diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 0e2443d330..66097339b1 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -139,10 +139,10 @@ def fingerprint(logcan, sendcan, num_pandas): # VIN query only reliably works through OBDII vin_rx_addr, vin_rx_bus, vin = get_vin(logcan, sendcan, (0, 1)) ecu_rx_addrs = get_present_ecus(logcan, sendcan, num_pandas=num_pandas) - car_fw = get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs, num_pandas=num_pandas) + car_fw = get_fw_versions_ordered(logcan, sendcan, vin, ecu_rx_addrs, num_pandas=num_pandas) cached = False - exact_fw_match, fw_candidates = match_fw_to_car(car_fw) + exact_fw_match, fw_candidates = match_fw_to_car(car_fw, vin) else: vin_rx_addr, vin_rx_bus, vin = -1, -1, VIN_UNKNOWN exact_fw_match, fw_candidates, car_fw = True, set(), [] diff --git a/selfdrive/car/fw_query_definitions.py b/selfdrive/car/fw_query_definitions.py index 236ade49bb..ad4dcdc8f1 100755 --- a/selfdrive/car/fw_query_definitions.py +++ b/selfdrive/car/fw_query_definitions.py @@ -97,9 +97,9 @@ class FwQueryConfig: non_essential_ecus: dict[capnp.lib.capnp._EnumModule, list[str]] = field(default_factory=dict) # Ecus added for data collection, not to be fingerprinted on extra_ecus: list[tuple[capnp.lib.capnp._EnumModule, int, int | None]] = field(default_factory=list) - # Function a brand can implement to provide better fuzzy matching. Takes in FW versions, + # Function a brand can implement to provide better fuzzy matching. Takes in FW versions and VIN, # returns set of candidates. Only will match if one candidate is returned - match_fw_to_car_fuzzy: Callable[[LiveFwVersions, OfflineFwVersions], set[str]] | None = None + match_fw_to_car_fuzzy: Callable[[LiveFwVersions, str, OfflineFwVersions], set[str]] | None = None def __post_init__(self): for i in range(len(self.requests)): diff --git a/selfdrive/car/fw_versions.py b/selfdrive/car/fw_versions.py index d7444ebf7d..f2aff2e6f9 100755 --- a/selfdrive/car/fw_versions.py +++ b/selfdrive/car/fw_versions.py @@ -144,8 +144,8 @@ def match_fw_to_car_exact(live_fw_versions: LiveFwVersions, match_brand: str = N return set(candidates.keys()) - invalid -def match_fw_to_car(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], allow_exact: bool = True, allow_fuzzy: bool = True, - log: bool = True) -> tuple[bool, set[str]]: +def match_fw_to_car(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], vin: str, + allow_exact: bool = True, allow_fuzzy: bool = True, log: bool = True) -> tuple[bool, set[str]]: # Try exact matching first exact_matches: list[tuple[bool, MatchFwToCar]] = [] if allow_exact: @@ -163,7 +163,7 @@ def match_fw_to_car(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], al # If specified and no matches so far, fall back to brand's fuzzy fingerprinting function config = FW_QUERY_CONFIGS[brand] if not exact_match and not len(matches) and config.match_fw_to_car_fuzzy is not None: - matches |= config.match_fw_to_car_fuzzy(fw_versions_dict, VERSIONS[brand]) + matches |= config.match_fw_to_car_fuzzy(fw_versions_dict, vin, VERSIONS[brand]) if len(matches): return exact_match, matches @@ -237,7 +237,7 @@ def set_obd_multiplexing(params: Params, obd_multiplexing: bool): cloudlog.warning("OBD multiplexing set successfully") -def get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs: set[EcuAddrBusType], timeout: float = 0.1, num_pandas: int = 1, +def get_fw_versions_ordered(logcan, sendcan, vin: str, ecu_rx_addrs: set[EcuAddrBusType], timeout: float = 0.1, num_pandas: int = 1, debug: bool = False, progress: bool = False) -> list[capnp.lib.capnp._DynamicStructBuilder]: """Queries for FW versions ordering brands by likelihood, breaks when exact match is found""" @@ -253,7 +253,7 @@ def get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs: set[EcuAddrBusType], all_car_fw.extend(car_fw) # If there is a match using this brand's FW alone, finish querying early - _, matches = match_fw_to_car(car_fw, log=False) + _, matches = match_fw_to_car(car_fw, vin, log=False) if len(matches) == 1: break @@ -381,7 +381,7 @@ if __name__ == "__main__": t = time.time() fw_vers = get_fw_versions(logcan, sendcan, query_brand=args.brand, extra=extra, num_pandas=num_pandas, debug=args.debug, progress=True) - _, candidates = match_fw_to_car(fw_vers) + _, candidates = match_fw_to_car(fw_vers, vin) print() print("Found FW versions") diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index 2e4edcffc6..0753b372e1 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -209,7 +209,7 @@ class TestHyundaiFingerprint(unittest.TestCase): "subAddress": 0 if sub_addr is None else sub_addr}) CP = car.CarParams.new_message(carFw=car_fw) - matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), FW_VERSIONS) + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), CP.carVin, FW_VERSIONS) if len(matches) == 1: self.assertEqual(list(matches)[0], platform) else: diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index aa24a1f353..3339fd8009 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -568,7 +568,7 @@ def get_platform_codes(fw_versions: list[bytes]) -> set[tuple[bytes, bytes | Non return codes -def match_fw_to_car_fuzzy(live_fw_versions, offline_fw_versions) -> set[str]: +def match_fw_to_car_fuzzy(live_fw_versions, vin, offline_fw_versions) -> set[str]: # Non-electric CAN FD platforms often do not have platform code specifiers needed # to distinguish between hybrid and ICE. All EVs so far are either exclusively # electric or specify electric in the platform code. diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index 4a17fc34ec..96e81272e4 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -49,7 +49,7 @@ class TestFwFingerprint(unittest.TestCase): fw.append({"ecu": ecu_name, "fwVersion": random.choice(fw_versions), 'brand': brand, "address": addr, "subAddress": 0 if sub_addr is None else sub_addr}) CP.carFw = fw - _, matches = match_fw_to_car(CP.carFw, allow_fuzzy=False) + _, matches = match_fw_to_car(CP.carFw, CP.carVin, allow_fuzzy=False) if not test_non_essential: self.assertFingerprints(matches, car_model) else: @@ -72,8 +72,8 @@ class TestFwFingerprint(unittest.TestCase): fw.append({"ecu": ecu_name, "fwVersion": random.choice(fw_versions), 'brand': brand, "address": addr, "subAddress": 0 if sub_addr is None else sub_addr}) CP.carFw = fw - _, matches = match_fw_to_car(CP.carFw, allow_exact=False, log=False) - brand_matches = config.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), VERSIONS[brand]) + _, matches = match_fw_to_car(CP.carFw, CP.carVin, allow_exact=False, log=False) + brand_matches = config.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), CP.carVin, VERSIONS[brand]) # If both have matches, they must agree if len(matches) == 1 and len(brand_matches) == 1: @@ -94,7 +94,7 @@ class TestFwFingerprint(unittest.TestCase): fw.append({"ecu": ecu_name, "fwVersion": random.choice(ecus[ecu]), 'brand': brand, "address": addr, "subAddress": 0 if sub_addr is None else sub_addr}) CP = car.CarParams.new_message(carFw=fw) - _, matches = match_fw_to_car(CP.carFw, allow_exact=False, log=False) + _, matches = match_fw_to_car(CP.carFw, CP.carVin, allow_exact=False, log=False) # Assert no match if there are not enough unique ECUs unique_ecus = {(f['address'], f['subAddress']) for f in fw} diff --git a/selfdrive/car/toyota/tests/test_toyota.py b/selfdrive/car/toyota/tests/test_toyota.py index ba131a0185..e2a9b46eb4 100755 --- a/selfdrive/car/toyota/tests/test_toyota.py +++ b/selfdrive/car/toyota/tests/test_toyota.py @@ -160,7 +160,7 @@ class TestToyotaFingerprint(unittest.TestCase): "subAddress": 0 if sub_addr is None else sub_addr}) CP = car.CarParams.new_message(carFw=car_fw) - matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), FW_VERSIONS) + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), CP.carVin, FW_VERSIONS) if len(matches) == 1: self.assertEqual(list(matches)[0], platform) else: diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 179e3f97e3..4f6fdef1ba 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -415,7 +415,7 @@ def get_platform_codes(fw_versions: list[bytes]) -> dict[bytes, set[bytes]]: return dict(codes) -def match_fw_to_car_fuzzy(live_fw_versions, offline_fw_versions) -> set[str]: +def match_fw_to_car_fuzzy(live_fw_versions, vin, offline_fw_versions) -> set[str]: candidates = set() for candidate, fws in offline_fw_versions.items(): diff --git a/selfdrive/car/volkswagen/tests/test_volkswagen.py b/selfdrive/car/volkswagen/tests/test_volkswagen.py index 85da10a0c2..92569e194e 100755 --- a/selfdrive/car/volkswagen/tests/test_volkswagen.py +++ b/selfdrive/car/volkswagen/tests/test_volkswagen.py @@ -2,8 +2,13 @@ import re import unittest +from cereal import car +from openpilot.selfdrive.car.volkswagen.values import CAR, FW_QUERY_CONFIG, WMI from openpilot.selfdrive.car.volkswagen.fingerprints import FW_VERSIONS +Ecu = car.CarParams.Ecu + +CHASSIS_CODE_PATTERN = re.compile('[A-Z0-9]{2}') # TODO: determine the unknown groups SPARE_PART_FW_PATTERN = re.compile(b'\xf1\x87(?P[0-9][0-9A-Z]{2})(?P[0-9][0-9A-Z][0-9])(?P[0-9A-Z]{2}[0-9])([A-Z0-9]| )') @@ -17,6 +22,44 @@ class TestVolkswagenPlatformConfigs(unittest.TestCase): for fw in fws: self.assertNotEqual(SPARE_PART_FW_PATTERN.match(fw), None, f"Bad FW: {fw}") + def test_chassis_codes(self): + for platform in CAR: + with self.subTest(platform=platform): + self.assertTrue(len(platform.config.wmis) > 0, "WMIs not set") + self.assertTrue(len(platform.config.chassis_codes) > 0, "Chassis codes not set") + self.assertTrue(all(CHASSIS_CODE_PATTERN.match(cc) for cc in + platform.config.chassis_codes), "Bad chassis codes") + + # No two platforms should share chassis codes + for comp in CAR: + if platform == comp: + continue + self.assertEqual(set(), platform.config.chassis_codes & comp.config.chassis_codes, + f"Shared chassis codes: {comp}") + + def test_custom_fuzzy_fingerprinting(self): + for platform in CAR: + expected_radar_fw = FW_VERSIONS[platform][Ecu.fwdRadar, 0x757, None] + + with self.subTest(platform=platform): + for wmi in WMI: + for chassis_code in platform.config.chassis_codes | {"00"}: + vin = ["0"] * 17 + vin[0:3] = wmi + vin[6:8] = chassis_code + vin = "".join(vin) + + # Check a few FW cases - expected, unexpected + for radar_fw in expected_radar_fw + [b'\xf1\x877H9907572AA\xf1\x890396']: + should_match = ((wmi in platform.config.wmis and chassis_code in platform.config.chassis_codes) and + radar_fw in expected_radar_fw) + + live_fws = {(0x757, None): [radar_fw]} + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fws, vin, FW_VERSIONS) + + expected_matches = {platform} if should_match else set() + self.assertEqual(expected_matches, matches, "Bad match") + if __name__ == "__main__": unittest.main() diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 375ca78104..5e332c98c4 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -1,6 +1,6 @@ from collections import namedtuple from dataclasses import dataclass, field -from enum import Enum, IntFlag +from enum import Enum, IntFlag, StrEnum from cereal import car from panda.python import uds @@ -109,6 +109,27 @@ class CANBUS: cam = 2 +class WMI(StrEnum): + VOLKSWAGEN_USA_SUV = "1V2" + VOLKSWAGEN_USA_CAR = "1VW" + VOLKSWAGEN_MEXICO_SUV = "3VV" + VOLKSWAGEN_MEXICO_CAR = "3VW" + VOLKSWAGEN_ARGENTINA = "8AW" + VOLKSWAGEN_BRASIL = "9BW" + SAIC_VOLKSWAGEN = "LSV" + SKODA = "TMB" + SEAT = "VSS" + AUDI_EUROPE_MPV = "WA1" + AUDI_GERMANY_CAR = "WAU" + MAN = "WMA" + AUDI_SPORT = "WUA" + VOLKSWAGEN_COMMERCIAL = "WV1" + VOLKSWAGEN_COMMERCIAL_BUS_VAN = "WV2" + VOLKSWAGEN_EUROPE_SUV = "WVG" + VOLKSWAGEN_EUROPE_CAR = "WVW" + VOLKSWAGEN_GROUP_RUS = "XW8" + + class VolkswagenFlags(IntFlag): # Detected flags STOCK_HCA_PRESENT = 1 @@ -120,10 +141,14 @@ class VolkswagenFlags(IntFlag): @dataclass class VolkswagenMQBPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_mqb_2010', None)) + # Volkswagen uses the VIN WMI and chassis code to match in the absence of the comma power + # on camera-integrated cars, as we lose too many ECUs to reliably identify the vehicle + chassis_codes: set[str] = field(default_factory=set) + wmis: set[WMI] = field(default_factory=set) @dataclass -class VolkswagenPQPlatformConfig(PlatformConfig): +class VolkswagenPQPlatformConfig(VolkswagenMQBPlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_golf_mk4', None)) def init(self): @@ -176,7 +201,9 @@ class VWCarDocs(CarDocs): # FW_VERSIONS for that existing CAR. class CAR(Platforms): - VOLKSWAGEN_ARTEON_MK1 = VolkswagenMQBPlatformConfig( # Chassis AN + config: VolkswagenMQBPlatformConfig | VolkswagenPQPlatformConfig + + VOLKSWAGEN_ARTEON_MK1 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), VWCarDocs("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), @@ -184,8 +211,10 @@ class CAR(Platforms): VWCarDocs("Volkswagen CC 2018-22", video_link="https://youtu.be/FAomFKPFlDA"), ], VolkswagenCarSpecs(mass=1733, wheelbase=2.84), + chassis_codes={"AN"}, + wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) - VOLKSWAGEN_ATLAS_MK1 = VolkswagenMQBPlatformConfig( # Chassis CA + VOLKSWAGEN_ATLAS_MK1 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen Atlas 2018-23"), VWCarDocs("Volkswagen Atlas Cross Sport 2020-22"), @@ -194,15 +223,19 @@ class CAR(Platforms): VWCarDocs("Volkswagen Teramont X 2021-22"), ], VolkswagenCarSpecs(mass=2011, wheelbase=2.98), + chassis_codes={"CA"}, + wmis={WMI.VOLKSWAGEN_USA_SUV}, ) - VOLKSWAGEN_CADDY_MK3 = VolkswagenPQPlatformConfig( # Chassis 2K + VOLKSWAGEN_CADDY_MK3 = VolkswagenPQPlatformConfig( [ VWCarDocs("Volkswagen Caddy 2019"), VWCarDocs("Volkswagen Caddy Maxi 2019"), ], VolkswagenCarSpecs(mass=1613, wheelbase=2.6, minSteerSpeed=21 * CV.KPH_TO_MS), + chassis_codes={"2K"}, + wmis={WMI.VOLKSWAGEN_COMMERCIAL_BUS_VAN}, ) - VOLKSWAGEN_CRAFTER_MK2 = VolkswagenMQBPlatformConfig( # Chassis SY/SZ + VOLKSWAGEN_CRAFTER_MK2 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), VWCarDocs("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), @@ -211,8 +244,10 @@ class CAR(Platforms): VWCarDocs("MAN eTGE 2020-23", video_link="https://youtu.be/4100gLeabmo"), ], VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), + chassis_codes={"SY", "SZ"}, + wmis={WMI.VOLKSWAGEN_COMMERCIAL, WMI.MAN}, ) - VOLKSWAGEN_GOLF_MK7 = VolkswagenMQBPlatformConfig( # Chassis 5G/AU/BA/BE + VOLKSWAGEN_GOLF_MK7 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen e-Golf 2014-20"), VWCarDocs("Volkswagen Golf 2015-20", auto_resume=False), @@ -224,71 +259,95 @@ class CAR(Platforms): VWCarDocs("Volkswagen Golf SportsVan 2015-20"), ], VolkswagenCarSpecs(mass=1397, wheelbase=2.62), + chassis_codes={"5G", "AU", "BA", "BE"}, + wmis={WMI.VOLKSWAGEN_MEXICO_CAR, WMI.VOLKSWAGEN_EUROPE_CAR}, ) - VOLKSWAGEN_JETTA_MK7 = VolkswagenMQBPlatformConfig( # Chassis BU + VOLKSWAGEN_JETTA_MK7 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen Jetta 2018-24"), VWCarDocs("Volkswagen Jetta GLI 2021-24"), ], VolkswagenCarSpecs(mass=1328, wheelbase=2.71), + chassis_codes={"BU"}, + wmis={WMI.VOLKSWAGEN_MEXICO_CAR, WMI.VOLKSWAGEN_EUROPE_CAR}, ) - VOLKSWAGEN_PASSAT_MK8 = VolkswagenMQBPlatformConfig( # Chassis 3G + VOLKSWAGEN_PASSAT_MK8 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), VWCarDocs("Volkswagen Passat Alltrack 2015-22"), VWCarDocs("Volkswagen Passat GTE 2015-22"), ], VolkswagenCarSpecs(mass=1551, wheelbase=2.79), + chassis_codes={"3G"}, + wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) - VOLKSWAGEN_PASSAT_NMS = VolkswagenPQPlatformConfig( # Chassis A3 + VOLKSWAGEN_PASSAT_NMS = VolkswagenPQPlatformConfig( [VWCarDocs("Volkswagen Passat NMS 2017-22")], VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50 * CV.KPH_TO_MS, minEnableSpeed=20 * CV.KPH_TO_MS), + chassis_codes={"A3"}, + wmis={WMI.VOLKSWAGEN_USA_CAR}, ) - VOLKSWAGEN_POLO_MK6 = VolkswagenMQBPlatformConfig( # Chassis AW + VOLKSWAGEN_POLO_MK6 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), VWCarDocs("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), ], VolkswagenCarSpecs(mass=1230, wheelbase=2.55), + chassis_codes={"AW"}, + wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) - VOLKSWAGEN_SHARAN_MK2 = VolkswagenPQPlatformConfig( # Chassis 7N + VOLKSWAGEN_SHARAN_MK2 = VolkswagenPQPlatformConfig( [ VWCarDocs("Volkswagen Sharan 2018-22"), VWCarDocs("SEAT Alhambra 2018-20"), ], VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50 * CV.KPH_TO_MS), + chassis_codes={"7N"}, + wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) - VOLKSWAGEN_TAOS_MK1 = VolkswagenMQBPlatformConfig( # Chassis B2 + VOLKSWAGEN_TAOS_MK1 = VolkswagenMQBPlatformConfig( [VWCarDocs("Volkswagen Taos 2022-23")], VolkswagenCarSpecs(mass=1498, wheelbase=2.69), + chassis_codes={"B2"}, + wmis={WMI.VOLKSWAGEN_MEXICO_SUV, WMI.VOLKSWAGEN_ARGENTINA}, ) - VOLKSWAGEN_TCROSS_MK1 = VolkswagenMQBPlatformConfig( # Chassis C1 + VOLKSWAGEN_TCROSS_MK1 = VolkswagenMQBPlatformConfig( [VWCarDocs("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1150, wheelbase=2.60), + chassis_codes={"C1"}, + wmis={WMI.VOLKSWAGEN_EUROPE_SUV}, ) - VOLKSWAGEN_TIGUAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis 5N/AD/AX/BW + VOLKSWAGEN_TIGUAN_MK2 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen Tiguan 2018-24"), VWCarDocs("Volkswagen Tiguan eHybrid 2021-23"), ], VolkswagenCarSpecs(mass=1715, wheelbase=2.74), + chassis_codes={"5N", "AD", "AX", "BW"}, + wmis={WMI.VOLKSWAGEN_EUROPE_SUV, WMI.VOLKSWAGEN_MEXICO_SUV}, ) - VOLKSWAGEN_TOURAN_MK2 = VolkswagenMQBPlatformConfig( # Chassis 1T + VOLKSWAGEN_TOURAN_MK2 = VolkswagenMQBPlatformConfig( [VWCarDocs("Volkswagen Touran 2016-23")], VolkswagenCarSpecs(mass=1516, wheelbase=2.79), + chassis_codes={"1T"}, + wmis={WMI.VOLKSWAGEN_EUROPE_SUV}, ) - VOLKSWAGEN_TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( # Chassis 7H/7L + VOLKSWAGEN_TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Volkswagen Caravelle 2020"), VWCarDocs("Volkswagen California 2021-23"), ], VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), + chassis_codes={"7H", "7L"}, + wmis={WMI.VOLKSWAGEN_COMMERCIAL_BUS_VAN}, ) - VOLKSWAGEN_TROC_MK1 = VolkswagenMQBPlatformConfig( # Chassis A1 + VOLKSWAGEN_TROC_MK1 = VolkswagenMQBPlatformConfig( [VWCarDocs("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1413, wheelbase=2.63), + chassis_codes={"A1"}, + wmis={WMI.VOLKSWAGEN_EUROPE_SUV}, ) - AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( # Chassis 8V/FF + AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Audi A3 2014-19"), VWCarDocs("Audi A3 Sportback e-tron 2017-18"), @@ -296,55 +355,109 @@ class CAR(Platforms): VWCarDocs("Audi S3 2015-17"), ], VolkswagenCarSpecs(mass=1335, wheelbase=2.61), + chassis_codes={"8V", "FF"}, + wmis={WMI.AUDI_GERMANY_CAR, WMI.AUDI_SPORT}, ) - AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( # Chassis GA + AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( [VWCarDocs("Audi Q2 2018")], VolkswagenCarSpecs(mass=1205, wheelbase=2.61), + chassis_codes={"GA"}, + wmis={WMI.AUDI_GERMANY_CAR}, ) - AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( # Chassis 8U/F3/FS + AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( [VWCarDocs("Audi Q3 2019-23")], VolkswagenCarSpecs(mass=1623, wheelbase=2.68), + chassis_codes={"8U", "F3", "FS"}, + wmis={WMI.AUDI_EUROPE_MPV, WMI.AUDI_GERMANY_CAR}, ) - SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( # Chassis 5F + SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( [ VWCarDocs("SEAT Ateca 2018"), VWCarDocs("SEAT Leon 2014-20"), ], VolkswagenCarSpecs(mass=1300, wheelbase=2.64), + chassis_codes={"5F"}, + wmis={WMI.SEAT}, ) - SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( # Chassis PJ + SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( [VWCarDocs("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0])], VolkswagenCarSpecs(mass=1266, wheelbase=2.56), + chassis_codes={"PJ"}, + wmis={WMI.SKODA}, ) - SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NW + SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ]), VWCarDocs("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0]), ], VolkswagenCarSpecs(mass=1230, wheelbase=2.66), + chassis_codes={"NW"}, + wmis={WMI.SKODA}, ) - SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NU + SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( [VWCarDocs("Škoda Karoq 2019-23")], VolkswagenCarSpecs(mass=1278, wheelbase=2.66), + chassis_codes={"NU"}, + wmis={WMI.SKODA}, ) - SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( # Chassis NS + SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( [VWCarDocs("Škoda Kodiaq 2017-23")], VolkswagenCarSpecs(mass=1569, wheelbase=2.79), + chassis_codes={"NS"}, + wmis={WMI.SKODA, WMI.VOLKSWAGEN_GROUP_RUS}, ) - SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( # Chassis NE + SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( [ VWCarDocs("Škoda Octavia 2015-19"), VWCarDocs("Škoda Octavia RS 2016"), VWCarDocs("Škoda Octavia Scout 2017-19"), ], VolkswagenCarSpecs(mass=1388, wheelbase=2.68), + chassis_codes={"NE"}, + wmis={WMI.SKODA}, ) - SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( # Chassis 3V/NP + SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( [VWCarDocs("Škoda Superb 2015-22")], VolkswagenCarSpecs(mass=1505, wheelbase=2.84), + chassis_codes={"3V", "NP"}, + wmis={WMI.SKODA}, ) +def match_fw_to_car_fuzzy(live_fw_versions, vin, offline_fw_versions) -> set[str]: + candidates = set() + + # Check the WMI and chassis code to determine the platform + wmi = vin[:3] + chassis_code = vin[6:8] + + for platform in CAR: + valid_ecus = set() + for ecu, expected_versions in offline_fw_versions[platform].items(): + addr = ecu[1:] + if ecu[0] not in CHECK_FUZZY_ECUS: + continue + + # Sanity check that a subset of Volkswagen FW is in the database + found_versions = live_fw_versions.get(addr, []) + if not any(found_version in expected_versions for found_version in found_versions): + break + + valid_ecus.add(ecu[0]) + + if valid_ecus != CHECK_FUZZY_ECUS: + continue + + if wmi in platform.config.wmis and chassis_code in platform.config.chassis_codes: + candidates.add(platform) + + return {str(c) for c in candidates} + + +# These ECUs are required to match to gain a VIN match +# TODO: do we want to check camera when we add its FW? +CHECK_FUZZY_ECUS = {Ecu.fwdRadar} + # All supported cars should return FW from the engine, srs, eps, and fwdRadar. Cars # with a manual trans won't return transmission firmware, but all other cars will. # @@ -382,6 +495,7 @@ FW_QUERY_CONFIG = FwQueryConfig( ]], non_essential_ecus={Ecu.eps: list(CAR)}, extra_ecus=[(Ecu.fwdCamera, 0x74f, None)], + match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, ) DBC = CAR.create_dbc_map() diff --git a/selfdrive/debug/test_fw_query_on_routes.py b/selfdrive/debug/test_fw_query_on_routes.py index 3c5733520e..e338110a7d 100755 --- a/selfdrive/debug/test_fw_query_on_routes.py +++ b/selfdrive/debug/test_fw_query_on_routes.py @@ -78,8 +78,8 @@ if __name__ == "__main__": print("not in supported cars") break - _, exact_matches = match_fw_to_car(car_fw, allow_exact=True, allow_fuzzy=False) - _, fuzzy_matches = match_fw_to_car(car_fw, allow_exact=False, allow_fuzzy=True) + _, exact_matches = match_fw_to_car(car_fw, CP.carVin, allow_exact=True, allow_fuzzy=False) + _, fuzzy_matches = match_fw_to_car(car_fw, CP.carVin, allow_exact=False, allow_fuzzy=True) if (len(exact_matches) == 1) and (list(exact_matches)[0] == live_fingerprint): good_exact += 1 diff --git a/tools/car_porting/auto_fingerprint.py b/tools/car_porting/auto_fingerprint.py index 8b0ae6762d..0a6b602a15 100755 --- a/tools/car_porting/auto_fingerprint.py +++ b/tools/car_porting/auto_fingerprint.py @@ -41,7 +41,7 @@ if __name__ == "__main__": carPlatform = CP.carFingerprint if args.platform is None: # attempt to auto-determine platform with other fuzzy fingerprints - _, possible_platforms = match_fw_to_car(carFw, log=False) + _, possible_platforms = match_fw_to_car(carFw, carVin, log=False) if len(possible_platforms) != 1: print(f"Unable to auto-determine platform, possible platforms: {possible_platforms}") From 53f50e53ef2805b4ad8d4e4874d7fbde7b075dc2 Mon Sep 17 00:00:00 2001 From: DevTekVE Date: Sat, 13 Apr 2024 17:40:17 +0000 Subject: [PATCH 423/599] Add easter egg for specific Sunnylink device ID --- selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc b/selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc index 935ed3fc56..e765792b4d 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc @@ -200,6 +200,11 @@ void SunnylinkPanel::updateLabels() { bool is_paired = uiState()->isSunnylinkPaired(); auto paired_users = uiState()->sunnylinkDeviceUsers(); + //little easter egg for Panda :D + if(sunnylinkDongleId == "d689627422cefcbc") { + role_name = "Panda 🐼"; + } + sunnylinkEnabledBtn->setEnabled(!is_onroad); sunnylinkEnabledBtn->setValue(tr("Device ID ")+ sunnylinkDongleId); From 70ee42d17f8af457fe97e374cf9e7bded66b36bd Mon Sep 17 00:00:00 2001 From: Saber <81108166+Saber422@users.noreply.github.com> Date: Sun, 14 Apr 2024 11:22:34 +0800 Subject: [PATCH 424/599] VW MQB: Add FW for 2023 TROC (#31737) * Update fingerprints.py * Update values.py TROC is MQB instead of MQB A0 * update docs * missing srs! --------- Co-authored-by: Shane Smiskol --- docs/CARS.md | 2 +- selfdrive/car/volkswagen/fingerprints.py | 3 +++ selfdrive/car/volkswagen/values.py | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index e591381ebf..1b356ac8ed 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -291,7 +291,7 @@ A supported vehicle is one that just works when you install a comma device. All |Volkswagen|Polo 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| |Volkswagen|Polo GTI 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| |Volkswagen|T-Cross 2021|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Volkswagen|T-Roc 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| +|Volkswagen|T-Roc 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Volkswagen|Taos 2022-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Volkswagen|Teramont 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Volkswagen|Teramont Cross Sport 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 707d96d739..80b92cee67 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -723,13 +723,16 @@ FW_VERSIONS = { b'\xf1\x875Q0959655BT\xf1\x890403\xf1\x82\x1311110012333300314240681152119333463100', b'\xf1\x875Q0959655CF\xf1\x890421\xf1\x82\x1311110012333300314240021150119333613100', b'\xf1\x875Q0959655CG\xf1\x890421\xf1\x82\x13111100123333003142404M1152119333613100', + b'\xf1\x875Q0959655CG\xf1\x890421\xf1\x82\x13111100123333003142404M1154119333613100', ], (Ecu.eps, 0x712, None): [ b'\xf1\x875Q0909144AA\xf1\x891081\xf1\x82\x0521060403A1', b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521060405A1', b'\xf1\x875WA907144M \xf1\x891051\xf1\x82\x001T06081T7N', + b'\xf1\x875WA907144Q \xf1\x891063\xf1\x82\x001O06081OOM', ], (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x872Q0907572AA\xf1\x890396', b'\xf1\x872Q0907572M \xf1\x890233', b'\xf1\x872Q0907572T \xf1\x890383', ], diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 5e332c98c4..3c5d60a16b 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -342,7 +342,7 @@ class CAR(Platforms): wmis={WMI.VOLKSWAGEN_COMMERCIAL_BUS_VAN}, ) VOLKSWAGEN_TROC_MK1 = VolkswagenMQBPlatformConfig( - [VWCarDocs("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0])], + [VWCarDocs("Volkswagen T-Roc 2018-23")], VolkswagenCarSpecs(mass=1413, wheelbase=2.63), chassis_codes={"A1"}, wmis={WMI.VOLKSWAGEN_EUROPE_SUV}, From 9244f0f0d5490c1078ee3559b8edbcb39c9908d4 Mon Sep 17 00:00:00 2001 From: dkiiv Date: Sat, 13 Apr 2024 23:27:53 -0400 Subject: [PATCH 425/599] VW: update LKA HUD to be more logically accurate (#31895) * VW: update LKA HUD to be more logically accurate * consistent case --------- Co-authored-by: Shane Smiskol --- selfdrive/car/volkswagen/carcontroller.py | 2 +- selfdrive/car/volkswagen/mqbcan.py | 6 +++--- selfdrive/car/volkswagen/pqcan.py | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index 37a4ed36b8..5fc47c51c6 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -92,7 +92,7 @@ class CarController(CarControllerBase): hud_alert = 0 if hud_control.visualAlert in (VisualAlert.steerRequired, VisualAlert.ldw): hud_alert = self.CCP.LDW_MESSAGES["laneAssistTakeOver"] - can_sends.append(self.CCS.create_lka_hud_control(self.packer_pt, CANBUS.pt, CS.ldw_stock_values, CC.enabled, + can_sends.append(self.CCS.create_lka_hud_control(self.packer_pt, CANBUS.pt, CS.ldw_stock_values, CC.latActive, CS.out.steeringPressed, hud_alert, hud_control)) if self.frame % self.CCP.ACC_HUD_STEP == 0 and self.CP.openpilotLongitudinalControl: diff --git a/selfdrive/car/volkswagen/mqbcan.py b/selfdrive/car/volkswagen/mqbcan.py index 6043533acf..763908b6b2 100644 --- a/selfdrive/car/volkswagen/mqbcan.py +++ b/selfdrive/car/volkswagen/mqbcan.py @@ -28,7 +28,7 @@ def create_eps_update(packer, bus, eps_stock_values, ea_simulated_torque): return packer.make_can_msg("LH_EPS_03", bus, values) -def create_lka_hud_control(packer, bus, ldw_stock_values, enabled, steering_pressed, hud_alert, hud_control): +def create_lka_hud_control(packer, bus, ldw_stock_values, lat_active, steering_pressed, hud_alert, hud_control): values = {} if len(ldw_stock_values): values = {s: ldw_stock_values[s] for s in [ @@ -40,8 +40,8 @@ def create_lka_hud_control(packer, bus, ldw_stock_values, enabled, steering_pres ]} values.update({ - "LDW_Status_LED_gelb": 1 if enabled and steering_pressed else 0, - "LDW_Status_LED_gruen": 1 if enabled and not steering_pressed else 0, + "LDW_Status_LED_gelb": 1 if lat_active and steering_pressed else 0, + "LDW_Status_LED_gruen": 1 if lat_active and not steering_pressed else 0, "LDW_Lernmodus_links": 3 if hud_control.leftLaneDepart else 1 + hud_control.leftLaneVisible, "LDW_Lernmodus_rechts": 3 if hud_control.rightLaneDepart else 1 + hud_control.rightLaneVisible, "LDW_Texte": hud_alert, diff --git a/selfdrive/car/volkswagen/pqcan.py b/selfdrive/car/volkswagen/pqcan.py index 307aaaa2a7..f8d161b970 100644 --- a/selfdrive/car/volkswagen/pqcan.py +++ b/selfdrive/car/volkswagen/pqcan.py @@ -9,7 +9,7 @@ def create_steering_control(packer, bus, apply_steer, lkas_enabled): return packer.make_can_msg("HCA_1", bus, values) -def create_lka_hud_control(packer, bus, ldw_stock_values, enabled, steering_pressed, hud_alert, hud_control): +def create_lka_hud_control(packer, bus, ldw_stock_values, lat_active, steering_pressed, hud_alert, hud_control): values = {} if len(ldw_stock_values): values = {s: ldw_stock_values[s] for s in [ @@ -21,8 +21,8 @@ def create_lka_hud_control(packer, bus, ldw_stock_values, enabled, steering_pres ]} values.update({ - "LDW_Lampe_gelb": 1 if enabled and steering_pressed else 0, - "LDW_Lampe_gruen": 1 if enabled and not steering_pressed else 0, + "LDW_Lampe_gelb": 1 if lat_active and steering_pressed else 0, + "LDW_Lampe_gruen": 1 if lat_active and not steering_pressed else 0, "LDW_Lernmodus_links": 3 if hud_control.leftLaneDepart else 1 + hud_control.leftLaneVisible, "LDW_Lernmodus_rechts": 3 if hud_control.rightLaneDepart else 1 + hud_control.rightLaneVisible, "LDW_Textbits": hud_alert, From 5f9a25dfe98915fa97b91c6ba5391ba7896a40ba Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sat, 13 Apr 2024 21:03:45 -0700 Subject: [PATCH 426/599] Volkswagen: add missing Golf FW (#32196) add missing golf fingerprints --- selfdrive/car/volkswagen/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 80b92cee67..6320f0ec34 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -161,6 +161,7 @@ FW_VERSIONS = { b'\xf1\x8704L906056HE\xf1\x893758', b'\xf1\x8704L906056HN\xf1\x896590', b'\xf1\x8704L906056HT\xf1\x896591', + b'\xf1\x8704L997022N \xf1\x899459', b'\xf1\x870EA906016A \xf1\x898343', b'\xf1\x870EA906016E \xf1\x894219', b'\xf1\x870EA906016F \xf1\x894238', @@ -218,6 +219,7 @@ FW_VERSIONS = { b'\xf1\x870D9300040A \xf1\x893613', b'\xf1\x870D9300040S \xf1\x894311', b'\xf1\x870D9300041H \xf1\x895220', + b'\xf1\x870D9300041N \xf1\x894512', b'\xf1\x870D9300041P \xf1\x894507', b'\xf1\x870DD300045K \xf1\x891120', b'\xf1\x870DD300046F \xf1\x891601', @@ -251,6 +253,7 @@ FW_VERSIONS = { b'\xf1\x875Q0959655C \xf1\x890361\xf1\x82\x111413001112120004110415121610169112', b'\xf1\x875Q0959655CA\xf1\x890403\xf1\x82\x1314160011123300314240012250229333463100', b'\xf1\x875Q0959655D \xf1\x890388\xf1\x82\x111413001113120006110417121A101A9113', + b'\xf1\x875Q0959655J \xf1\x890825\xf1\x82\x13271112111312--071104171825102591131211', b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\x13271112111312--071104171825102591131211', b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\x13271212111312--071104171838103891131211', b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\x13272512111312--07110417182C102C91131211', From 585c62673f8f3d9d70a3fb648562d10ae643938e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sat, 13 Apr 2024 21:20:15 -0700 Subject: [PATCH 427/599] [bot] Fingerprints: add missing FW versions from new users (#32195) Export fingerprints --- selfdrive/car/volkswagen/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 6320f0ec34..285eb0c7d5 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -60,6 +60,7 @@ FW_VERSIONS = { b'\xf1\x8703H906026F \xf1\x896696', b'\xf1\x8703H906026F \xf1\x899970', b'\xf1\x8703H906026J \xf1\x896026', + b'\xf1\x8703H906026J \xf1\x899970', b'\xf1\x8703H906026J \xf1\x899971', b'\xf1\x8703H906026S \xf1\x896693', b'\xf1\x8703H906026S \xf1\x899970', @@ -213,6 +214,7 @@ FW_VERSIONS = { b'\xf1\x870D9300012 \xf1\x895046', b'\xf1\x870D9300014M \xf1\x895004', b'\xf1\x870D9300014Q \xf1\x895006', + b'\xf1\x870D9300018 \xf1\x895201', b'\xf1\x870D9300020J \xf1\x894902', b'\xf1\x870D9300020Q \xf1\x895201', b'\xf1\x870D9300020S \xf1\x895201', @@ -304,6 +306,7 @@ FW_VERSIONS = { b'\xf1\x875QD909144B \xf1\x891072\xf1\x82\x0521A00507A1', b'\xf1\x875QM909144A \xf1\x891072\xf1\x82\x0521A20B03A1', b'\xf1\x875QM909144B \xf1\x891081\xf1\x82\x0521A00442A1', + b'\xf1\x875QM909144B \xf1\x891081\xf1\x82\x0521A00642A1', b'\xf1\x875QN909144A \xf1\x895081\xf1\x82\x0571A01A16A1', b'\xf1\x875QN909144A \xf1\x895081\xf1\x82\x0571A01A17A1', b'\xf1\x875QN909144A \xf1\x895081\xf1\x82\x0571A01A18A1', From fe023d946f8708eca85ce828641412d7ed01e1d3 Mon Sep 17 00:00:00 2001 From: DevTekVE Date: Sun, 14 Apr 2024 10:11:08 +0000 Subject: [PATCH 428/599] Add new thread for handling sunnylink queue --- selfdrive/athena/sunnylinkd.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/selfdrive/athena/sunnylinkd.py b/selfdrive/athena/sunnylinkd.py index bb9ae2ecae..ca924abeb0 100755 --- a/selfdrive/athena/sunnylinkd.py +++ b/selfdrive/athena/sunnylinkd.py @@ -35,6 +35,7 @@ def handle_long_poll(ws: WebSocket, exit_event: threading.Event | None) -> None: threading.Thread(target=ws_recv, args=(ws, end_event), name='ws_recv'), threading.Thread(target=ws_send, args=(ws, end_event), name='ws_send'), threading.Thread(target=ws_ping, args=(ws, end_event), name='ws_ping'), + threading.Thread(target=ws_queue, args=(end_event,), name='ws_queue'), # threading.Thread(target=upload_handler, args=(end_event,), name='upload_handler'), # threading.Thread(target=log_handler, args=(end_event,), name='log_handler'), # threading.Thread(target=stat_handler, args=(end_event,), name='stat_handler'), @@ -60,16 +61,7 @@ def handle_long_poll(ws: WebSocket, exit_event: threading.Event | None) -> None: def ws_recv(ws: WebSocket, end_event: threading.Event) -> None: last_ping = int(time.monotonic() * 1e9) - resume_requested = False while not end_event.is_set(): - try: - if(not resume_requested): - sunnylink_api.resume_queued() - resume_requested = True - except Exception: - cloudlog.exception("sunnylinkd.resume_queued.exception") - resume_requested = False - try: opcode, data = ws.recv_data(control_frame=True) if opcode in (ABNF.OPCODE_TEXT, ABNF.OPCODE_BINARY): @@ -99,6 +91,22 @@ def ws_ping(ws: WebSocket, end_event: threading.Event) -> None: end_event.set() time.sleep(RECONNECT_TIMEOUT_S * 0.8) # Sleep about 80% before a timeout +def ws_queue(end_event: threading.Event) -> None: + resume_requested = False + backoff_time = 1 # Start with a delay of 1 second + max_backoff_time = 60 # Maximum delay of 60 seconds + + while not end_event.is_set(): + try: + if not resume_requested: + sunnylink_api.resume_queued(timeout=29) + resume_requested = True + backoff_time = 1 # Reset backoff time after a successful request + except Exception: + cloudlog.exception("sunnylinkd.ws_queue.resume_queued.exception") + resume_requested = False + time.sleep(backoff_time) # Wait for the backoff time before the next attempt + backoff_time = min(backoff_time * 2, max_backoff_time) # Double the backoff time for the next attempt, up to a maximum @dispatcher.add_method def getParamsAllKeys() -> list[str]: From 40b061cd51078c3ca3a0f58ccfce6a9078fb08ef Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 15 Apr 2024 08:52:20 +0800 Subject: [PATCH 429/599] ui/network: update known connections after adding tethering connection. (#32166) update known connections --- selfdrive/ui/qt/network/wifi_manager.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/network/wifi_manager.cc b/selfdrive/ui/qt/network/wifi_manager.cc index 854a8920b5..cb7cccd194 100644 --- a/selfdrive/ui/qt/network/wifi_manager.cc +++ b/selfdrive/ui/qt/network/wifi_manager.cc @@ -428,7 +428,10 @@ void WifiManager::addTetheringConnection() { connection["ipv4"]["route-metric"] = 1100; connection["ipv6"]["method"] = "ignore"; - call(NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "AddConnection", QVariant::fromValue(connection)); + auto path = call(NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "AddConnection", QVariant::fromValue(connection)); + if (!path.path().isEmpty()) { + knownConnections[path] = tethering_ssid; + } } void WifiManager::tetheringActivated(QDBusPendingCallWatcher *call) { From e9965c87d31af7dc5ea3b2fc28574eaf523b574e Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 15 Apr 2024 08:52:59 +0800 Subject: [PATCH 430/599] ui/network: initialize raw_adapter_state to NM_DEVICE_STATE_UNKNOWN (#32175) --- selfdrive/ui/qt/network/networkmanager.h | 1 + selfdrive/ui/qt/network/wifi_manager.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/network/networkmanager.h b/selfdrive/ui/qt/network/networkmanager.h index 2896b0fff7..8bdeaf3bbd 100644 --- a/selfdrive/ui/qt/network/networkmanager.h +++ b/selfdrive/ui/qt/network/networkmanager.h @@ -32,6 +32,7 @@ const QString NM_DBUS_INTERFACE_IP4_CONFIG = "org.freedesktop.NetworkMa const QString NM_DBUS_SERVICE = "org.freedesktop.NetworkManager"; +const int NM_DEVICE_STATE_UNKNOWN = 0; const int NM_DEVICE_STATE_ACTIVATED = 100; const int NM_DEVICE_STATE_NEED_AUTH = 60; const int NM_DEVICE_TYPE_WIFI = 2; diff --git a/selfdrive/ui/qt/network/wifi_manager.h b/selfdrive/ui/qt/network/wifi_manager.h index 933f25c9d4..2f6a1829d7 100644 --- a/selfdrive/ui/qt/network/wifi_manager.h +++ b/selfdrive/ui/qt/network/wifi_manager.h @@ -63,7 +63,7 @@ public: private: QString adapter; // Path to network manager wifi-device QTimer timer; - unsigned int raw_adapter_state; // Connection status https://developer.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NMDeviceState + unsigned int raw_adapter_state = NM_DEVICE_STATE_UNKNOWN; // Connection status https://developer.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NMDeviceState QString connecting_to_network; QString tethering_ssid; const QString defaultTetheringPassword = "swagswagcomma"; From ba98786ee317750034881710f0b4b5a7a5a60474 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 15 Apr 2024 09:00:01 +0800 Subject: [PATCH 431/599] ui: fix pair button shows on paired device (#32109) --- selfdrive/ui/qt/offroad/settings.cc | 6 +++--- selfdrive/ui/qt/widgets/prime.cc | 9 +++++---- selfdrive/ui/ui.h | 5 +++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 4b3005467a..e3f3b36ff9 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -255,8 +255,8 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { }); addItem(translateBtn); - QObject::connect(uiState(), &UIState::primeChanged, [this] (bool prime) { - pair_device->setVisible(!prime); + QObject::connect(uiState(), &UIState::primeTypeChanged, [this] (PrimeType type) { + pair_device->setVisible(type == PrimeType::UNPAIRED); }); QObject::connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { for (auto btn : findChildren()) { @@ -344,7 +344,7 @@ void DevicePanel::poweroff() { } void DevicePanel::showEvent(QShowEvent *event) { - pair_device->setVisible(!uiState()->primeType()); + pair_device->setVisible(uiState()->primeType() == PrimeType::UNPAIRED); ListWidget::showEvent(event); } diff --git a/selfdrive/ui/qt/widgets/prime.cc b/selfdrive/ui/qt/widgets/prime.cc index 324d6cf6ae..2621612f67 100644 --- a/selfdrive/ui/qt/widgets/prime.cc +++ b/selfdrive/ui/qt/widgets/prime.cc @@ -235,7 +235,7 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { mainLayout->addWidget(content); - primeUser->setVisible(uiState()->primeType()); + primeUser->setVisible(uiState()->hasPrime()); mainLayout->setCurrentIndex(1); setStyleSheet(R"( @@ -269,15 +269,16 @@ void SetupWidget::replyFinished(const QString &response, bool success) { } QJsonObject json = doc.object(); + bool is_paired = json["is_paired"].toBool(); PrimeType prime_type = static_cast(json["prime_type"].toInt()); - uiState()->setPrimeType(prime_type); + uiState()->setPrimeType(is_paired ? prime_type : PrimeType::UNPAIRED); - if (!json["is_paired"].toBool()) { + if (!is_paired) { mainLayout->setCurrentIndex(0); } else { popup->reject(); - primeUser->setVisible(prime_type); + primeUser->setVisible(uiState()->hasPrime()); mainLayout->setCurrentIndex(1); } } diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index 0a939253b1..f5028a280f 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -53,7 +53,8 @@ typedef enum UIStatus { } UIStatus; enum PrimeType { - UNKNOWN = -1, + UNKNOWN = -2, + UNPAIRED = -1, NONE = 0, MAGENTA = 1, LITE = 2, @@ -114,7 +115,7 @@ public: void setPrimeType(PrimeType type); inline PrimeType primeType() const { return prime_type; } - inline bool hasPrime() const { return prime_type != PrimeType::UNKNOWN && prime_type != PrimeType::NONE; } + inline bool hasPrime() const { return prime_type > PrimeType::NONE; } int fb_w = 0, fb_h = 0; From 7bc81341e10aad9742e113006f702ead75f2fbf2 Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Mon, 15 Apr 2024 02:00:34 +0100 Subject: [PATCH 432/599] Ford: add Ranger 2024 (CAN FD, dashcam only) (#31956) * Ford: add Ranger 2024 (CAN FD, dashcam only) * force fingerprint * debug * add FW (using debug_fw_fingerprinting_offline) * add test route * Revert "debug" This reverts commit 9d128cb1bbb28fb0cb8da6725c291ebe285e7467. * Revert "force fingerprint" This reverts commit 421d92172f354b4713a1371bec9dc9b1bbb6318f. * update package and finalise steer ratio "Adaptive Cruise Control with Lane Centering" is part of the Raptor Standard Equipment Group (i.e. only on the Raptor trim). However, looking at As-Built/VIN data for Raptor LARIATs show that although Ford does not advertise it they do come with Lane Centering (the configurator only says they have ACC with Stop and Go). ACC with Stop and Go can also be added to the lower XLT trim as part of the Technology Package, but it is unclear at this point whether that includes Lane Centering. The 2021 Ranger had a 17.0 steer ratio. The As-Built data suggests 17/18. PlotJuggler shows the liveParameters.steerRatio between 16.5-17.5 on two short drives. --------- Co-authored-by: Shane Smiskol --- selfdrive/car/ford/fingerprints.py | 14 ++++++++++++++ selfdrive/car/ford/values.py | 4 ++++ selfdrive/car/tests/routes.py | 1 + selfdrive/car/torque_data/override.toml | 1 + 4 files changed, 20 insertions(+) diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index deba38c205..76cbd3aee8 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -148,4 +148,18 @@ FW_VERSIONS = { b'NZ6T-14F397-AC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, + CAR.FORD_RANGER_MK2: { + (Ecu.eps, 0x730, None): [ + b'NL14-14D003-AE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.abs, 0x760, None): [ + b'PB3C-2D053-ZD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.fwdRadar, 0x764, None): [ + b'ML3T-14D049-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.fwdCamera, 0x706, None): [ + b'PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + } } diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index d1e6686ea0..a5494c921c 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -137,6 +137,10 @@ class CAR(Platforms): [FordCarDocs("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0")], CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) + FORD_RANGER_MK2 = FordCANFDPlatformConfig( + [FordCarDocs("Ford Ranger 2024", "Adaptive Cruise Control with Lane Centering")], + CarSpecs(mass=2000, wheelbase=3.27, steerRatio=17.0), + ) DATA_IDENTIFIER_FORD_ASBUILT = 0xDE00 diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index ae76268d38..35a9d8a8e7 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -55,6 +55,7 @@ routes = [ CarTestRoute("bd37e43731e5964b|2023-04-30--10-42-26", FORD.FORD_MAVERICK_MK1), CarTestRoute("112e4d6e0cad05e1|2023-11-14--08-21-43", FORD.FORD_F_150_LIGHTNING_MK1), CarTestRoute("83a4e056c7072678|2023-11-13--16-51-33", FORD.FORD_MUSTANG_MACH_E_MK1), + CarTestRoute("37998aa0fade36ab/00000000--48f927c4f5", FORD.FORD_RANGER_MK2), #TestRoute("f1b4c567731f4a1b|2018-04-30--10-15-35", FORD.FUSION), CarTestRoute("7cc2a8365b4dd8a9|2018-12-02--12-10-44", GM.GMC_ACADIA), diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index 4d9646a54a..c068bf9a14 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -29,6 +29,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "FORD_MAVERICK_MK1" = [nan, 1.5, nan] "FORD_F_150_LIGHTNING_MK1" = [nan, 1.5, nan] "FORD_MUSTANG_MACH_E_MK1" = [nan, 1.5, nan] +"FORD_RANGER_MK2" = [nan, 1.5, nan] ### # No steering wheel From 038782bcba512b077752ef8901b848973b05cd48 Mon Sep 17 00:00:00 2001 From: James <91348155+FrogAi@users.noreply.github.com> Date: Mon, 15 Apr 2024 09:11:40 -0700 Subject: [PATCH 433/599] Fix "PlaformConfig" typo (#32201) --- selfdrive/car/nissan/values.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index bdd2dec5f4..eecffb21bc 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -32,16 +32,16 @@ class NissanCarSpecs(CarSpecs): @dataclass -class NissanPlaformConfig(PlatformConfig): +class NissanPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('nissan_x_trail_2017_generated', None)) class CAR(Platforms): - NISSAN_XTRAIL = NissanPlaformConfig( + NISSAN_XTRAIL = NissanPlatformConfig( [NissanCarDocs("Nissan X-Trail 2017")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) - NISSAN_LEAF = NissanPlaformConfig( + NISSAN_LEAF = NissanPlatformConfig( [NissanCarDocs("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY")], NissanCarSpecs(mass=1610, wheelbase=2.705), dbc_dict('nissan_leaf_2018_generated', None), @@ -49,11 +49,11 @@ class CAR(Platforms): # Leaf with ADAS ECU found behind instrument cluster instead of glovebox # Currently the only known difference between them is the inverted seatbelt signal. NISSAN_LEAF_IC = NISSAN_LEAF.override(car_docs=[]) - NISSAN_ROGUE = NissanPlaformConfig( + NISSAN_ROGUE = NissanPlatformConfig( [NissanCarDocs("Nissan Rogue 2018-20")], NissanCarSpecs(mass=1610, wheelbase=2.705) ) - NISSAN_ALTIMA = NissanPlaformConfig( + NISSAN_ALTIMA = NissanPlatformConfig( [NissanCarDocs("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b]))], NissanCarSpecs(mass=1492, wheelbase=2.824) ) From 70cdcc51a99b932000e3b281b303181451a5bc33 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 15 Apr 2024 09:28:32 -0700 Subject: [PATCH 434/599] [bot] Fingerprints: add missing FW versions from CAN fingerprinting cars (#32203) Export fingerprints --- selfdrive/car/ford/fingerprints.py | 2 +- selfdrive/car/hyundai/fingerprints.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index 76cbd3aee8..4dcf2a65fd 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -161,5 +161,5 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x706, None): [ b'PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], - } + }, } diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index f3704524fc..5033738a96 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -82,12 +82,15 @@ FW_VERSIONS = { CAR.HYUNDAI_IONIQ: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2000 ', + b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2100 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2301 4AEHC107', + b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2501 4AEHC107', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AEH MFC AT EUR LHD 1.00 1.00 95740-G2400 180222', + b'\xf1\x00AEH MFC AT USA LHD 1.00 1.00 95740-G2400 180222', ], }, CAR.HYUNDAI_IONIQ_PHEV_2019: { @@ -600,6 +603,7 @@ FW_VERSIONS = { CAR.HYUNDAI_KONA_EV: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00OS IEB \x01 212 \x11\x13 58520-K4000', + b'\xf1\x00OS IEB \x02 210 \x02\x14 58520-K4000', b'\xf1\x00OS IEB \x02 212 \x11\x13 58520-K4000', b'\xf1\x00OS IEB \x03 210 \x02\x14 58520-K4000', b'\xf1\x00OS IEB \x03 212 \x11\x13 58520-K4000', @@ -610,6 +614,7 @@ FW_VERSIONS = { b'\xf1\x00OSE LKAS AT EUR LHD 1.00 1.00 95740-K4100 W40', b'\xf1\x00OSE LKAS AT EUR RHD 1.00 1.00 95740-K4100 W40', b'\xf1\x00OSE LKAS AT KOR LHD 1.00 1.00 95740-K4100 W40', + b'\xf1\x00OSE LKAS AT USA LHD 1.00 1.00 95740-K4100 W40', b'\xf1\x00OSE LKAS AT USA LHD 1.00 1.00 95740-K4300 W50', ], (Ecu.eps, 0x7d4, None): [ @@ -908,14 +913,17 @@ FW_VERSIONS = { }, CAR.KIA_SORENTO: { (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00UMP LKAS AT KOR LHD 1.00 1.00 95740-C5550 S30', b'\xf1\x00UMP LKAS AT USA LHD 1.00 1.00 95740-C6550 d00', b'\xf1\x00UMP LKAS AT USA LHD 1.01 1.01 95740-C6550 d01', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00UM ESC \x02 12 \x18\x05\x05 58910-C6300', b'\xf1\x00UM ESC \x0c 12 \x18\x05\x06 58910-C6330', + b'\xf1\x00UM ESC \x13 12 \x17\x07\x05 58910-C5320', ], (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00UM__ SCC F-CUP 1.00 1.00 96400-C5500 ', b'\xf1\x00UM__ SCC F-CUP 1.00 1.00 96400-C6500 ', ], }, From c1b059de1ef8f52d050f1902ef54d0dc5f2e1283 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 16 Apr 2024 00:33:28 +0800 Subject: [PATCH 435/599] ui/onroad: split into multiple files (#32059) --- release/files_common | 2 + selfdrive/ui/SConscript | 6 +- selfdrive/ui/qt/home.h | 2 +- selfdrive/ui/qt/onroad.h | 162 ---------- selfdrive/ui/qt/onroad/alerts.cc | 112 +++++++ selfdrive/ui/qt/onroad/alerts.h | 39 +++ .../{onroad.cc => onroad/annotated_camera.cc} | 305 +----------------- selfdrive/ui/qt/onroad/annotated_camera.h | 58 ++++ selfdrive/ui/qt/onroad/buttons.cc | 64 ++++ selfdrive/ui/qt/onroad/buttons.h | 41 +++ selfdrive/ui/qt/onroad/onroad_home.cc | 128 ++++++++ selfdrive/ui/qt/onroad/onroad_home.h | 31 ++ 12 files changed, 484 insertions(+), 466 deletions(-) delete mode 100644 selfdrive/ui/qt/onroad.h create mode 100644 selfdrive/ui/qt/onroad/alerts.cc create mode 100644 selfdrive/ui/qt/onroad/alerts.h rename selfdrive/ui/qt/{onroad.cc => onroad/annotated_camera.cc} (63%) create mode 100644 selfdrive/ui/qt/onroad/annotated_camera.h create mode 100644 selfdrive/ui/qt/onroad/buttons.cc create mode 100644 selfdrive/ui/qt/onroad/buttons.h create mode 100644 selfdrive/ui/qt/onroad/onroad_home.cc create mode 100644 selfdrive/ui/qt/onroad/onroad_home.h diff --git a/release/files_common b/release/files_common index 641e084d30..eaf54b0cd5 100644 --- a/release/files_common +++ b/release/files_common @@ -280,6 +280,8 @@ selfdrive/ui/qt/network/*.h selfdrive/ui/qt/offroad/*.cc selfdrive/ui/qt/offroad/*.h selfdrive/ui/qt/offroad/*.qml +selfdrive/ui/qt/onroad/*.cc +selfdrive/ui/qt/onroad/*.h selfdrive/ui/qt/widgets/*.cc selfdrive/ui/qt/widgets/*.h selfdrive/ui/qt/maps/*.cc diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index ea5734fe6e..13b6998de2 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -36,10 +36,12 @@ widgets = qt_env.Library("qt_widgets", widgets_src, LIBS=base_libs) Export('widgets') qt_libs = [widgets, qt_util] + base_libs -qt_src = ["main.cc", "qt/sidebar.cc", "qt/onroad.cc", "qt/body.cc", +qt_src = ["main.cc", "qt/sidebar.cc", "qt/body.cc", "qt/window.cc", "qt/home.cc", "qt/offroad/settings.cc", "qt/offroad/software_settings.cc", "qt/offroad/onboarding.cc", - "qt/offroad/driverview.cc", "qt/offroad/experimental_mode.cc"] + "qt/offroad/driverview.cc", "qt/offroad/experimental_mode.cc", + "qt/onroad/onroad_home.cc", "qt/onroad/annotated_camera.cc", + "qt/onroad/buttons.cc", "qt/onroad/alerts.cc"] # build translation files with open(File("translations/languages.json").abspath) as f: diff --git a/selfdrive/ui/qt/home.h b/selfdrive/ui/qt/home.h index c6032852a1..f60b80b21a 100644 --- a/selfdrive/ui/qt/home.h +++ b/selfdrive/ui/qt/home.h @@ -10,7 +10,7 @@ #include "common/params.h" #include "selfdrive/ui/qt/offroad/driverview.h" #include "selfdrive/ui/qt/body.h" -#include "selfdrive/ui/qt/onroad.h" +#include "selfdrive/ui/qt/onroad/onroad_home.h" #include "selfdrive/ui/qt/sidebar.h" #include "selfdrive/ui/qt/widgets/controls.h" #include "selfdrive/ui/qt/widgets/offroad_alerts.h" diff --git a/selfdrive/ui/qt/onroad.h b/selfdrive/ui/qt/onroad.h deleted file mode 100644 index c2c2c326db..0000000000 --- a/selfdrive/ui/qt/onroad.h +++ /dev/null @@ -1,162 +0,0 @@ -#pragma once - -#include - -#include -#include -#include - -#include "common/util.h" -#include "selfdrive/ui/ui.h" -#include "selfdrive/ui/qt/widgets/cameraview.h" - - -const int btn_size = 192; -const int img_size = (btn_size / 4) * 3; - - -// ***** onroad widgets ***** -class OnroadAlerts : public QWidget { - Q_OBJECT - -public: - OnroadAlerts(QWidget *parent = 0) : QWidget(parent) {} - void updateState(const UIState &s); - void clear(); - -protected: - struct Alert { - QString text1; - QString text2; - QString type; - cereal::ControlsState::AlertSize size; - cereal::ControlsState::AlertStatus status; - - bool equal(const Alert &other) const { - return text1 == other.text1 && other.text2 == other.text2 && type == other.type; - } - }; - - const QMap alert_colors = { - {cereal::ControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, - {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, - {cereal::ControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, - }; - - void paintEvent(QPaintEvent*) override; - OnroadAlerts::Alert getAlert(const SubMaster &sm, uint64_t started_frame); - - QColor bg; - Alert alert = {}; -}; - -class ExperimentalButton : public QPushButton { - Q_OBJECT - -public: - explicit ExperimentalButton(QWidget *parent = 0); - void updateState(const UIState &s); - -private: - void paintEvent(QPaintEvent *event) override; - void changeMode(); - - Params params; - QPixmap engage_img; - QPixmap experimental_img; - bool experimental_mode; - bool engageable; -}; - - -class MapSettingsButton : public QPushButton { - Q_OBJECT - -public: - explicit MapSettingsButton(QWidget *parent = 0); - -private: - void paintEvent(QPaintEvent *event) override; - - QPixmap settings_img; -}; - -// container window for the NVG UI -class AnnotatedCameraWidget : public CameraWidget { - Q_OBJECT - -public: - explicit AnnotatedCameraWidget(VisionStreamType type, QWidget* parent = 0); - void updateState(const UIState &s); - - MapSettingsButton *map_settings_btn; - -private: - void drawText(QPainter &p, int x, int y, const QString &text, int alpha = 255); - - QVBoxLayout *main_layout; - ExperimentalButton *experimental_btn; - QPixmap dm_img; - float speed; - QString speedUnit; - float setSpeed; - float speedLimit; - bool is_cruise_set = false; - bool is_metric = false; - bool dmActive = false; - bool hideBottomIcons = false; - bool rightHandDM = false; - float dm_fade_state = 1.0; - bool has_us_speed_limit = false; - bool has_eu_speed_limit = false; - bool v_ego_cluster_seen = false; - int status = STATUS_DISENGAGED; - std::unique_ptr pm; - - int skip_frame_count = 0; - bool wide_cam_requested = false; - -protected: - void paintGL() override; - void initializeGL() override; - void showEvent(QShowEvent *event) override; - void updateFrameMat() override; - void drawLaneLines(QPainter &painter, const UIState *s); - void drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd); - void drawHud(QPainter &p); - void drawDriverState(QPainter &painter, const UIState *s); - inline QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); } - inline QColor whiteColor(int alpha = 255) { return QColor(255, 255, 255, alpha); } - inline QColor blackColor(int alpha = 255) { return QColor(0, 0, 0, alpha); } - - double prev_draw_t = 0; - FirstOrderFilter fps_filter; -}; - -// container for all onroad widgets -class OnroadWindow : public QWidget { - Q_OBJECT - -public: - OnroadWindow(QWidget* parent = 0); - bool isMapVisible() const { return map && map->isVisible(); } - void showMapPanel(bool show) { if (map) map->setVisible(show); } - -signals: - void mapPanelRequested(); - -private: - void createMapWidget(); - void paintEvent(QPaintEvent *event); - void mousePressEvent(QMouseEvent* e) override; - OnroadAlerts *alerts; - AnnotatedCameraWidget *nvg; - QColor bg = bg_colors[STATUS_DISENGAGED]; - QWidget *map = nullptr; - QHBoxLayout* split; - -private slots: - void offroadTransition(bool offroad); - void primeChanged(bool prime); - void updateState(const UIState &s); -}; diff --git a/selfdrive/ui/qt/onroad/alerts.cc b/selfdrive/ui/qt/onroad/alerts.cc new file mode 100644 index 0000000000..0235c5ff42 --- /dev/null +++ b/selfdrive/ui/qt/onroad/alerts.cc @@ -0,0 +1,112 @@ +#include "selfdrive/ui/qt/onroad/alerts.h" + +#include +#include + +#include "selfdrive/ui/qt/util.h" + +void OnroadAlerts::updateState(const UIState &s) { + Alert a = getAlert(*(s.sm), s.scene.started_frame); + if (!alert.equal(a)) { + alert = a; + update(); + } +} + +void OnroadAlerts::clear() { + alert = {}; + update(); +} + +OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, uint64_t started_frame) { + const cereal::ControlsState::Reader &cs = sm["controlsState"].getControlsState(); + const uint64_t controls_frame = sm.rcv_frame("controlsState"); + + Alert a = {}; + if (controls_frame >= started_frame) { // Don't get old alert. + a = {cs.getAlertText1().cStr(), cs.getAlertText2().cStr(), + cs.getAlertType().cStr(), cs.getAlertSize(), cs.getAlertStatus()}; + } + + if (!sm.updated("controlsState") && (sm.frame - started_frame) > 5 * UI_FREQ) { + const int CONTROLS_TIMEOUT = 5; + const int controls_missing = (nanos_since_boot() - sm.rcv_time("controlsState")) / 1e9; + + // Handle controls timeout + if (controls_frame < started_frame) { + // car is started, but controlsState hasn't been seen at all + a = {tr("openpilot Unavailable"), tr("Waiting for controls to start"), + "controlsWaiting", cereal::ControlsState::AlertSize::MID, + cereal::ControlsState::AlertStatus::NORMAL}; + } else if (controls_missing > CONTROLS_TIMEOUT && !Hardware::PC()) { + // car is started, but controls is lagging or died + if (cs.getEnabled() && (controls_missing - CONTROLS_TIMEOUT) < 10) { + a = {tr("TAKE CONTROL IMMEDIATELY"), tr("Controls Unresponsive"), + "controlsUnresponsive", cereal::ControlsState::AlertSize::FULL, + cereal::ControlsState::AlertStatus::CRITICAL}; + } else { + a = {tr("Controls Unresponsive"), tr("Reboot Device"), + "controlsUnresponsivePermanent", cereal::ControlsState::AlertSize::MID, + cereal::ControlsState::AlertStatus::NORMAL}; + } + } + } + return a; +} + +void OnroadAlerts::paintEvent(QPaintEvent *event) { + if (alert.size == cereal::ControlsState::AlertSize::NONE) { + return; + } + static std::map alert_heights = { + {cereal::ControlsState::AlertSize::SMALL, 271}, + {cereal::ControlsState::AlertSize::MID, 420}, + {cereal::ControlsState::AlertSize::FULL, height()}, + }; + int h = alert_heights[alert.size]; + + int margin = 40; + int radius = 30; + if (alert.size == cereal::ControlsState::AlertSize::FULL) { + margin = 0; + radius = 0; + } + QRect r = QRect(0 + margin, height() - h + margin, width() - margin*2, h - margin*2); + + QPainter p(this); + + // draw background + gradient + p.setPen(Qt::NoPen); + p.setCompositionMode(QPainter::CompositionMode_SourceOver); + p.setBrush(QBrush(alert_colors[alert.status])); + p.drawRoundedRect(r, radius, radius); + + QLinearGradient g(0, r.y(), 0, r.bottom()); + g.setColorAt(0, QColor::fromRgbF(0, 0, 0, 0.05)); + g.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0.35)); + + p.setCompositionMode(QPainter::CompositionMode_DestinationOver); + p.setBrush(QBrush(g)); + p.drawRoundedRect(r, radius, radius); + p.setCompositionMode(QPainter::CompositionMode_SourceOver); + + // text + const QPoint c = r.center(); + p.setPen(QColor(0xff, 0xff, 0xff)); + p.setRenderHint(QPainter::TextAntialiasing); + if (alert.size == cereal::ControlsState::AlertSize::SMALL) { + p.setFont(InterFont(74, QFont::DemiBold)); + p.drawText(r, Qt::AlignCenter, alert.text1); + } else if (alert.size == cereal::ControlsState::AlertSize::MID) { + p.setFont(InterFont(88, QFont::Bold)); + p.drawText(QRect(0, c.y() - 125, width(), 150), Qt::AlignHCenter | Qt::AlignTop, alert.text1); + p.setFont(InterFont(66)); + p.drawText(QRect(0, c.y() + 21, width(), 90), Qt::AlignHCenter, alert.text2); + } else if (alert.size == cereal::ControlsState::AlertSize::FULL) { + bool l = alert.text1.length() > 15; + p.setFont(InterFont(l ? 132 : 177, QFont::Bold)); + p.drawText(QRect(0, r.y() + (l ? 240 : 270), width(), 600), Qt::AlignHCenter | Qt::TextWordWrap, alert.text1); + p.setFont(InterFont(88)); + p.drawText(QRect(0, r.height() - (l ? 361 : 420), width(), 300), Qt::AlignHCenter | Qt::TextWordWrap, alert.text2); + } +} diff --git a/selfdrive/ui/qt/onroad/alerts.h b/selfdrive/ui/qt/onroad/alerts.h new file mode 100644 index 0000000000..ae6d4af9ee --- /dev/null +++ b/selfdrive/ui/qt/onroad/alerts.h @@ -0,0 +1,39 @@ +#pragma once + +#include + +#include "selfdrive/ui/ui.h" + +class OnroadAlerts : public QWidget { + Q_OBJECT + +public: + OnroadAlerts(QWidget *parent = 0) : QWidget(parent) {} + void updateState(const UIState &s); + void clear(); + +protected: + struct Alert { + QString text1; + QString text2; + QString type; + cereal::ControlsState::AlertSize size; + cereal::ControlsState::AlertStatus status; + + bool equal(const Alert &other) const { + return text1 == other.text1 && other.text2 == other.text2 && type == other.type; + } + }; + + const QMap alert_colors = { + {cereal::ControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, + {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, + {cereal::ControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, + }; + + void paintEvent(QPaintEvent*) override; + OnroadAlerts::Alert getAlert(const SubMaster &sm, uint64_t started_frame); + + QColor bg; + Alert alert = {}; +}; diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad/annotated_camera.cc similarity index 63% rename from selfdrive/ui/qt/onroad.cc rename to selfdrive/ui/qt/onroad/annotated_camera.cc index b6a49162fc..f7fb6b480f 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad/annotated_camera.cc @@ -1,310 +1,13 @@ -#include "selfdrive/ui/qt/onroad.h" +#include "selfdrive/ui/qt/onroad/annotated_camera.h" + +#include #include #include -#include -#include -#include - -#include -#include #include "common/swaglog.h" -#include "common/timing.h" +#include "selfdrive/ui/qt/onroad/buttons.h" #include "selfdrive/ui/qt/util.h" -#ifdef ENABLE_MAPS -#include "selfdrive/ui/qt/maps/map_helpers.h" -#include "selfdrive/ui/qt/maps/map_panel.h" -#endif - -static void drawIcon(QPainter &p, const QPoint ¢er, const QPixmap &img, const QBrush &bg, float opacity) { - p.setRenderHint(QPainter::Antialiasing); - p.setOpacity(1.0); // bg dictates opacity of ellipse - p.setPen(Qt::NoPen); - p.setBrush(bg); - p.drawEllipse(center, btn_size / 2, btn_size / 2); - p.setOpacity(opacity); - p.drawPixmap(center - QPoint(img.width() / 2, img.height() / 2), img); - p.setOpacity(1.0); -} - -OnroadWindow::OnroadWindow(QWidget *parent) : QWidget(parent) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setMargin(UI_BORDER_SIZE); - QStackedLayout *stacked_layout = new QStackedLayout; - stacked_layout->setStackingMode(QStackedLayout::StackAll); - main_layout->addLayout(stacked_layout); - - nvg = new AnnotatedCameraWidget(VISION_STREAM_ROAD, this); - - QWidget * split_wrapper = new QWidget; - split = new QHBoxLayout(split_wrapper); - split->setContentsMargins(0, 0, 0, 0); - split->setSpacing(0); - split->addWidget(nvg); - - if (getenv("DUAL_CAMERA_VIEW")) { - CameraWidget *arCam = new CameraWidget("camerad", VISION_STREAM_ROAD, true, this); - split->insertWidget(0, arCam); - } - - if (getenv("MAP_RENDER_VIEW")) { - CameraWidget *map_render = new CameraWidget("navd", VISION_STREAM_MAP, false, this); - split->insertWidget(0, map_render); - } - - stacked_layout->addWidget(split_wrapper); - - alerts = new OnroadAlerts(this); - alerts->setAttribute(Qt::WA_TransparentForMouseEvents, true); - stacked_layout->addWidget(alerts); - - // setup stacking order - alerts->raise(); - - setAttribute(Qt::WA_OpaquePaintEvent); - QObject::connect(uiState(), &UIState::uiUpdate, this, &OnroadWindow::updateState); - QObject::connect(uiState(), &UIState::offroadTransition, this, &OnroadWindow::offroadTransition); - QObject::connect(uiState(), &UIState::primeChanged, this, &OnroadWindow::primeChanged); -} - -void OnroadWindow::updateState(const UIState &s) { - if (!s.scene.started) { - return; - } - - if (s.scene.map_on_left) { - split->setDirection(QBoxLayout::LeftToRight); - } else { - split->setDirection(QBoxLayout::RightToLeft); - } - - alerts->updateState(s); - nvg->updateState(s); - - QColor bgColor = bg_colors[s.status]; - if (bg != bgColor) { - // repaint border - bg = bgColor; - update(); - } -} - -void OnroadWindow::mousePressEvent(QMouseEvent* e) { -#ifdef ENABLE_MAPS - if (map != nullptr) { - bool sidebarVisible = geometry().x() > 0; - bool show_map = !sidebarVisible; - map->setVisible(show_map && !map->isVisible()); - } -#endif - // propagation event to parent(HomeWindow) - QWidget::mousePressEvent(e); -} - -void OnroadWindow::createMapWidget() { -#ifdef ENABLE_MAPS - auto m = new MapPanel(get_mapbox_settings()); - map = m; - QObject::connect(m, &MapPanel::mapPanelRequested, this, &OnroadWindow::mapPanelRequested); - QObject::connect(nvg->map_settings_btn, &MapSettingsButton::clicked, m, &MapPanel::toggleMapSettings); - nvg->map_settings_btn->setEnabled(true); - - m->setFixedWidth(topWidget(this)->width() / 2 - UI_BORDER_SIZE); - split->insertWidget(0, m); - // hidden by default, made visible when navRoute is published - m->setVisible(false); -#endif -} - -void OnroadWindow::offroadTransition(bool offroad) { -#ifdef ENABLE_MAPS - if (!offroad) { - if (map == nullptr && (uiState()->hasPrime() || !MAPBOX_TOKEN.isEmpty())) { - createMapWidget(); - } - } -#endif - alerts->clear(); -} - -void OnroadWindow::primeChanged(bool prime) { -#ifdef ENABLE_MAPS - if (map && (!prime && MAPBOX_TOKEN.isEmpty())) { - nvg->map_settings_btn->setEnabled(false); - nvg->map_settings_btn->setVisible(false); - map->deleteLater(); - map = nullptr; - } else if (!map && (prime || !MAPBOX_TOKEN.isEmpty())) { - createMapWidget(); - } -#endif -} - -void OnroadWindow::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.fillRect(rect(), QColor(bg.red(), bg.green(), bg.blue(), 255)); -} - -// ***** onroad widgets ***** - -// OnroadAlerts - -void OnroadAlerts::updateState(const UIState &s) { - Alert a = getAlert(*(s.sm), s.scene.started_frame); - if (!alert.equal(a)) { - alert = a; - update(); - } -} - -void OnroadAlerts::clear() { - alert = {}; - update(); -} - -OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, uint64_t started_frame) { - const cereal::ControlsState::Reader &cs = sm["controlsState"].getControlsState(); - const uint64_t controls_frame = sm.rcv_frame("controlsState"); - - Alert a = {}; - if (controls_frame >= started_frame) { // Don't get old alert. - a = {cs.getAlertText1().cStr(), cs.getAlertText2().cStr(), - cs.getAlertType().cStr(), cs.getAlertSize(), cs.getAlertStatus()}; - } - - if (!sm.updated("controlsState") && (sm.frame - started_frame) > 5 * UI_FREQ) { - const int CONTROLS_TIMEOUT = 5; - const int controls_missing = (nanos_since_boot() - sm.rcv_time("controlsState")) / 1e9; - - // Handle controls timeout - if (controls_frame < started_frame) { - // car is started, but controlsState hasn't been seen at all - a = {tr("openpilot Unavailable"), tr("Waiting for controls to start"), - "controlsWaiting", cereal::ControlsState::AlertSize::MID, - cereal::ControlsState::AlertStatus::NORMAL}; - } else if (controls_missing > CONTROLS_TIMEOUT && !Hardware::PC()) { - // car is started, but controls is lagging or died - if (cs.getEnabled() && (controls_missing - CONTROLS_TIMEOUT) < 10) { - a = {tr("TAKE CONTROL IMMEDIATELY"), tr("Controls Unresponsive"), - "controlsUnresponsive", cereal::ControlsState::AlertSize::FULL, - cereal::ControlsState::AlertStatus::CRITICAL}; - } else { - a = {tr("Controls Unresponsive"), tr("Reboot Device"), - "controlsUnresponsivePermanent", cereal::ControlsState::AlertSize::MID, - cereal::ControlsState::AlertStatus::NORMAL}; - } - } - } - return a; -} - -void OnroadAlerts::paintEvent(QPaintEvent *event) { - if (alert.size == cereal::ControlsState::AlertSize::NONE) { - return; - } - static std::map alert_heights = { - {cereal::ControlsState::AlertSize::SMALL, 271}, - {cereal::ControlsState::AlertSize::MID, 420}, - {cereal::ControlsState::AlertSize::FULL, height()}, - }; - int h = alert_heights[alert.size]; - - int margin = 40; - int radius = 30; - if (alert.size == cereal::ControlsState::AlertSize::FULL) { - margin = 0; - radius = 0; - } - QRect r = QRect(0 + margin, height() - h + margin, width() - margin*2, h - margin*2); - - QPainter p(this); - - // draw background + gradient - p.setPen(Qt::NoPen); - p.setCompositionMode(QPainter::CompositionMode_SourceOver); - p.setBrush(QBrush(alert_colors[alert.status])); - p.drawRoundedRect(r, radius, radius); - - QLinearGradient g(0, r.y(), 0, r.bottom()); - g.setColorAt(0, QColor::fromRgbF(0, 0, 0, 0.05)); - g.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0.35)); - - p.setCompositionMode(QPainter::CompositionMode_DestinationOver); - p.setBrush(QBrush(g)); - p.drawRoundedRect(r, radius, radius); - p.setCompositionMode(QPainter::CompositionMode_SourceOver); - - // text - const QPoint c = r.center(); - p.setPen(QColor(0xff, 0xff, 0xff)); - p.setRenderHint(QPainter::TextAntialiasing); - if (alert.size == cereal::ControlsState::AlertSize::SMALL) { - p.setFont(InterFont(74, QFont::DemiBold)); - p.drawText(r, Qt::AlignCenter, alert.text1); - } else if (alert.size == cereal::ControlsState::AlertSize::MID) { - p.setFont(InterFont(88, QFont::Bold)); - p.drawText(QRect(0, c.y() - 125, width(), 150), Qt::AlignHCenter | Qt::AlignTop, alert.text1); - p.setFont(InterFont(66)); - p.drawText(QRect(0, c.y() + 21, width(), 90), Qt::AlignHCenter, alert.text2); - } else if (alert.size == cereal::ControlsState::AlertSize::FULL) { - bool l = alert.text1.length() > 15; - p.setFont(InterFont(l ? 132 : 177, QFont::Bold)); - p.drawText(QRect(0, r.y() + (l ? 240 : 270), width(), 600), Qt::AlignHCenter | Qt::TextWordWrap, alert.text1); - p.setFont(InterFont(88)); - p.drawText(QRect(0, r.height() - (l ? 361 : 420), width(), 300), Qt::AlignHCenter | Qt::TextWordWrap, alert.text2); - } -} - -// ExperimentalButton -ExperimentalButton::ExperimentalButton(QWidget *parent) : experimental_mode(false), engageable(false), QPushButton(parent) { - setFixedSize(btn_size, btn_size); - - engage_img = loadPixmap("../assets/img_chffr_wheel.png", {img_size, img_size}); - experimental_img = loadPixmap("../assets/img_experimental.svg", {img_size, img_size}); - QObject::connect(this, &QPushButton::clicked, this, &ExperimentalButton::changeMode); -} - -void ExperimentalButton::changeMode() { - const auto cp = (*uiState()->sm)["carParams"].getCarParams(); - bool can_change = hasLongitudinalControl(cp) && params.getBool("ExperimentalModeConfirmed"); - if (can_change) { - params.putBool("ExperimentalMode", !experimental_mode); - } -} - -void ExperimentalButton::updateState(const UIState &s) { - const auto cs = (*s.sm)["controlsState"].getControlsState(); - bool eng = cs.getEngageable() || cs.getEnabled(); - if ((cs.getExperimentalMode() != experimental_mode) || (eng != engageable)) { - engageable = eng; - experimental_mode = cs.getExperimentalMode(); - update(); - } -} - -void ExperimentalButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - QPixmap img = experimental_mode ? experimental_img : engage_img; - drawIcon(p, QPoint(btn_size / 2, btn_size / 2), img, QColor(0, 0, 0, 166), (isDown() || !engageable) ? 0.6 : 1.0); -} - - -// MapSettingsButton -MapSettingsButton::MapSettingsButton(QWidget *parent) : QPushButton(parent) { - setFixedSize(btn_size, btn_size); - settings_img = loadPixmap("../assets/navigation/icon_directions_outlined.svg", {img_size, img_size}); - - // hidden by default, made visible if map is created (has prime or mapbox token) - setVisible(false); - setEnabled(false); -} - -void MapSettingsButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - drawIcon(p, QPoint(btn_size / 2, btn_size / 2), settings_img, QColor(0, 0, 0, 166), isDown() ? 0.6 : 1.0); -} - // Window that shows camera view and variety of info drawn on top AnnotatedCameraWidget::AnnotatedCameraWidget(VisionStreamType type, QWidget* parent) : fps_filter(UI_FREQ, 3, 1. / UI_FREQ), CameraWidget("camerad", type, true, parent) { diff --git a/selfdrive/ui/qt/onroad/annotated_camera.h b/selfdrive/ui/qt/onroad/annotated_camera.h new file mode 100644 index 0000000000..0be4adfffa --- /dev/null +++ b/selfdrive/ui/qt/onroad/annotated_camera.h @@ -0,0 +1,58 @@ +#pragma once + +#include +#include + +#include "selfdrive/ui/qt/onroad/buttons.h" +#include "selfdrive/ui/qt/widgets/cameraview.h" + +class AnnotatedCameraWidget : public CameraWidget { + Q_OBJECT + +public: + explicit AnnotatedCameraWidget(VisionStreamType type, QWidget* parent = 0); + void updateState(const UIState &s); + + MapSettingsButton *map_settings_btn; + +private: + void drawText(QPainter &p, int x, int y, const QString &text, int alpha = 255); + + QVBoxLayout *main_layout; + ExperimentalButton *experimental_btn; + QPixmap dm_img; + float speed; + QString speedUnit; + float setSpeed; + float speedLimit; + bool is_cruise_set = false; + bool is_metric = false; + bool dmActive = false; + bool hideBottomIcons = false; + bool rightHandDM = false; + float dm_fade_state = 1.0; + bool has_us_speed_limit = false; + bool has_eu_speed_limit = false; + bool v_ego_cluster_seen = false; + int status = STATUS_DISENGAGED; + std::unique_ptr pm; + + int skip_frame_count = 0; + bool wide_cam_requested = false; + +protected: + void paintGL() override; + void initializeGL() override; + void showEvent(QShowEvent *event) override; + void updateFrameMat() override; + void drawLaneLines(QPainter &painter, const UIState *s); + void drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd); + void drawHud(QPainter &p); + void drawDriverState(QPainter &painter, const UIState *s); + inline QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); } + inline QColor whiteColor(int alpha = 255) { return QColor(255, 255, 255, alpha); } + inline QColor blackColor(int alpha = 255) { return QColor(0, 0, 0, alpha); } + + double prev_draw_t = 0; + FirstOrderFilter fps_filter; +}; diff --git a/selfdrive/ui/qt/onroad/buttons.cc b/selfdrive/ui/qt/onroad/buttons.cc new file mode 100644 index 0000000000..75ec316174 --- /dev/null +++ b/selfdrive/ui/qt/onroad/buttons.cc @@ -0,0 +1,64 @@ +#include "selfdrive/ui/qt/onroad/buttons.h" + +#include + +#include "selfdrive/ui/qt/util.h" + +void drawIcon(QPainter &p, const QPoint ¢er, const QPixmap &img, const QBrush &bg, float opacity) { + p.setRenderHint(QPainter::Antialiasing); + p.setOpacity(1.0); // bg dictates opacity of ellipse + p.setPen(Qt::NoPen); + p.setBrush(bg); + p.drawEllipse(center, btn_size / 2, btn_size / 2); + p.setOpacity(opacity); + p.drawPixmap(center - QPoint(img.width() / 2, img.height() / 2), img); + p.setOpacity(1.0); +} + +// ExperimentalButton +ExperimentalButton::ExperimentalButton(QWidget *parent) : experimental_mode(false), engageable(false), QPushButton(parent) { + setFixedSize(btn_size, btn_size); + + engage_img = loadPixmap("../assets/img_chffr_wheel.png", {img_size, img_size}); + experimental_img = loadPixmap("../assets/img_experimental.svg", {img_size, img_size}); + QObject::connect(this, &QPushButton::clicked, this, &ExperimentalButton::changeMode); +} + +void ExperimentalButton::changeMode() { + const auto cp = (*uiState()->sm)["carParams"].getCarParams(); + bool can_change = hasLongitudinalControl(cp) && params.getBool("ExperimentalModeConfirmed"); + if (can_change) { + params.putBool("ExperimentalMode", !experimental_mode); + } +} + +void ExperimentalButton::updateState(const UIState &s) { + const auto cs = (*s.sm)["controlsState"].getControlsState(); + bool eng = cs.getEngageable() || cs.getEnabled(); + if ((cs.getExperimentalMode() != experimental_mode) || (eng != engageable)) { + engageable = eng; + experimental_mode = cs.getExperimentalMode(); + update(); + } +} + +void ExperimentalButton::paintEvent(QPaintEvent *event) { + QPainter p(this); + QPixmap img = experimental_mode ? experimental_img : engage_img; + drawIcon(p, QPoint(btn_size / 2, btn_size / 2), img, QColor(0, 0, 0, 166), (isDown() || !engageable) ? 0.6 : 1.0); +} + +// MapSettingsButton +MapSettingsButton::MapSettingsButton(QWidget *parent) : QPushButton(parent) { + setFixedSize(btn_size, btn_size); + settings_img = loadPixmap("../assets/navigation/icon_directions_outlined.svg", {img_size, img_size}); + + // hidden by default, made visible if map is created (has prime or mapbox token) + setVisible(false); + setEnabled(false); +} + +void MapSettingsButton::paintEvent(QPaintEvent *event) { + QPainter p(this); + drawIcon(p, QPoint(btn_size / 2, btn_size / 2), settings_img, QColor(0, 0, 0, 166), isDown() ? 0.6 : 1.0); +} diff --git a/selfdrive/ui/qt/onroad/buttons.h b/selfdrive/ui/qt/onroad/buttons.h new file mode 100644 index 0000000000..b0757795fb --- /dev/null +++ b/selfdrive/ui/qt/onroad/buttons.h @@ -0,0 +1,41 @@ +#pragma once + +#include + +#include "selfdrive/ui/ui.h" + +const int btn_size = 192; +const int img_size = (btn_size / 4) * 3; + +class ExperimentalButton : public QPushButton { + Q_OBJECT + +public: + explicit ExperimentalButton(QWidget *parent = 0); + void updateState(const UIState &s); + +private: + void paintEvent(QPaintEvent *event) override; + void changeMode(); + + Params params; + QPixmap engage_img; + QPixmap experimental_img; + bool experimental_mode; + bool engageable; +}; + + +class MapSettingsButton : public QPushButton { + Q_OBJECT + +public: + explicit MapSettingsButton(QWidget *parent = 0); + +private: + void paintEvent(QPaintEvent *event) override; + + QPixmap settings_img; +}; + +void drawIcon(QPainter &p, const QPoint ¢er, const QPixmap &img, const QBrush &bg, float opacity); diff --git a/selfdrive/ui/qt/onroad/onroad_home.cc b/selfdrive/ui/qt/onroad/onroad_home.cc new file mode 100644 index 0000000000..1c12a2c3a2 --- /dev/null +++ b/selfdrive/ui/qt/onroad/onroad_home.cc @@ -0,0 +1,128 @@ +#include "selfdrive/ui/qt/onroad/onroad_home.h" + +#include + +#ifdef ENABLE_MAPS +#include "selfdrive/ui/qt/maps/map_helpers.h" +#include "selfdrive/ui/qt/maps/map_panel.h" +#endif + +#include "selfdrive/ui/qt/util.h" + +OnroadWindow::OnroadWindow(QWidget *parent) : QWidget(parent) { + QVBoxLayout *main_layout = new QVBoxLayout(this); + main_layout->setMargin(UI_BORDER_SIZE); + QStackedLayout *stacked_layout = new QStackedLayout; + stacked_layout->setStackingMode(QStackedLayout::StackAll); + main_layout->addLayout(stacked_layout); + + nvg = new AnnotatedCameraWidget(VISION_STREAM_ROAD, this); + + QWidget * split_wrapper = new QWidget; + split = new QHBoxLayout(split_wrapper); + split->setContentsMargins(0, 0, 0, 0); + split->setSpacing(0); + split->addWidget(nvg); + + if (getenv("DUAL_CAMERA_VIEW")) { + CameraWidget *arCam = new CameraWidget("camerad", VISION_STREAM_ROAD, true, this); + split->insertWidget(0, arCam); + } + + if (getenv("MAP_RENDER_VIEW")) { + CameraWidget *map_render = new CameraWidget("navd", VISION_STREAM_MAP, false, this); + split->insertWidget(0, map_render); + } + + stacked_layout->addWidget(split_wrapper); + + alerts = new OnroadAlerts(this); + alerts->setAttribute(Qt::WA_TransparentForMouseEvents, true); + stacked_layout->addWidget(alerts); + + // setup stacking order + alerts->raise(); + + setAttribute(Qt::WA_OpaquePaintEvent); + QObject::connect(uiState(), &UIState::uiUpdate, this, &OnroadWindow::updateState); + QObject::connect(uiState(), &UIState::offroadTransition, this, &OnroadWindow::offroadTransition); + QObject::connect(uiState(), &UIState::primeChanged, this, &OnroadWindow::primeChanged); +} + +void OnroadWindow::updateState(const UIState &s) { + if (!s.scene.started) { + return; + } + + if (s.scene.map_on_left) { + split->setDirection(QBoxLayout::LeftToRight); + } else { + split->setDirection(QBoxLayout::RightToLeft); + } + + alerts->updateState(s); + nvg->updateState(s); + + QColor bgColor = bg_colors[s.status]; + if (bg != bgColor) { + // repaint border + bg = bgColor; + update(); + } +} + +void OnroadWindow::mousePressEvent(QMouseEvent* e) { +#ifdef ENABLE_MAPS + if (map != nullptr) { + bool sidebarVisible = geometry().x() > 0; + bool show_map = !sidebarVisible; + map->setVisible(show_map && !map->isVisible()); + } +#endif + // propagation event to parent(HomeWindow) + QWidget::mousePressEvent(e); +} + +void OnroadWindow::createMapWidget() { +#ifdef ENABLE_MAPS + auto m = new MapPanel(get_mapbox_settings()); + map = m; + QObject::connect(m, &MapPanel::mapPanelRequested, this, &OnroadWindow::mapPanelRequested); + QObject::connect(nvg->map_settings_btn, &MapSettingsButton::clicked, m, &MapPanel::toggleMapSettings); + nvg->map_settings_btn->setEnabled(true); + + m->setFixedWidth(topWidget(this)->width() / 2 - UI_BORDER_SIZE); + split->insertWidget(0, m); + // hidden by default, made visible when navRoute is published + m->setVisible(false); +#endif +} + +void OnroadWindow::offroadTransition(bool offroad) { +#ifdef ENABLE_MAPS + if (!offroad) { + if (map == nullptr && (uiState()->hasPrime() || !MAPBOX_TOKEN.isEmpty())) { + createMapWidget(); + } + } +#endif + alerts->clear(); +} + +void OnroadWindow::primeChanged(bool prime) { +#ifdef ENABLE_MAPS + if (map && (!prime && MAPBOX_TOKEN.isEmpty())) { + nvg->map_settings_btn->setEnabled(false); + nvg->map_settings_btn->setVisible(false); + map->deleteLater(); + map = nullptr; + } else if (!map && (prime || !MAPBOX_TOKEN.isEmpty())) { + createMapWidget(); + } +#endif +} + +void OnroadWindow::paintEvent(QPaintEvent *event) { + QPainter p(this); + p.fillRect(rect(), QColor(bg.red(), bg.green(), bg.blue(), 255)); +} diff --git a/selfdrive/ui/qt/onroad/onroad_home.h b/selfdrive/ui/qt/onroad/onroad_home.h new file mode 100644 index 0000000000..4976f56a67 --- /dev/null +++ b/selfdrive/ui/qt/onroad/onroad_home.h @@ -0,0 +1,31 @@ +#pragma once + +#include "selfdrive/ui/qt/onroad/alerts.h" +#include "selfdrive/ui/qt/onroad/annotated_camera.h" + +class OnroadWindow : public QWidget { + Q_OBJECT + +public: + OnroadWindow(QWidget* parent = 0); + bool isMapVisible() const { return map && map->isVisible(); } + void showMapPanel(bool show) { if (map) map->setVisible(show); } + +signals: + void mapPanelRequested(); + +private: + void createMapWidget(); + void paintEvent(QPaintEvent *event); + void mousePressEvent(QMouseEvent* e) override; + OnroadAlerts *alerts; + AnnotatedCameraWidget *nvg; + QColor bg = bg_colors[STATUS_DISENGAGED]; + QWidget *map = nullptr; + QHBoxLayout* split; + +private slots: + void offroadTransition(bool offroad); + void primeChanged(bool prime); + void updateState(const UIState &s); +}; From 39bcc41f9f0fe9a32e7b3a820a00a79b9894c8ea Mon Sep 17 00:00:00 2001 From: DevTekVE Date: Mon, 15 Apr 2024 19:24:40 +0000 Subject: [PATCH 436/599] [sunnylink] Integrate debug logging and revise retry mechanism in sunnylinkd.py --- selfdrive/athena/sunnylinkd.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/selfdrive/athena/sunnylinkd.py b/selfdrive/athena/sunnylinkd.py index ca924abeb0..9c26dd42a1 100755 --- a/selfdrive/athena/sunnylinkd.py +++ b/selfdrive/athena/sunnylinkd.py @@ -68,7 +68,9 @@ def ws_recv(ws: WebSocket, end_event: threading.Event) -> None: if opcode == ABNF.OPCODE_TEXT: data = data.decode("utf-8") recv_queue.put_nowait(data) + cloudlog.debug(f"sunnylinkd.ws_recv.recv {data}") elif opcode in (ABNF.OPCODE_PING, ABNF.OPCODE_PONG): + cloudlog.debug(f"sunnylinkd.ws_recv.pong {opcode}") last_ping = int(time.monotonic() * 1e9) Params().put("LastSunnylinkPingTime", str(last_ping)) except WebSocketTimeoutException: @@ -86,6 +88,7 @@ def ws_ping(ws: WebSocket, end_event: threading.Event) -> None: while not end_event.is_set(): try: ws.ping() + cloudlog.debug(f"sunnylinkd.ws_recv.ws_ping: Pinging") except Exception: cloudlog.exception("sunnylinkd.ws_ping.exception") end_event.set() @@ -93,20 +96,22 @@ def ws_ping(ws: WebSocket, end_event: threading.Event) -> None: def ws_queue(end_event: threading.Event) -> None: resume_requested = False - backoff_time = 1 # Start with a delay of 1 second - max_backoff_time = 60 # Maximum delay of 60 seconds + tries = 0 - while not end_event.is_set(): + while not end_event.is_set() and not resume_requested: try: if not resume_requested: + cloudlog.debug(f"sunnylinkd.ws_queue.resume_queued") sunnylink_api.resume_queued(timeout=29) resume_requested = True - backoff_time = 1 # Reset backoff time after a successful request + tries = 0 except Exception: cloudlog.exception("sunnylinkd.ws_queue.resume_queued.exception") resume_requested = False - time.sleep(backoff_time) # Wait for the backoff time before the next attempt - backoff_time = min(backoff_time * 2, max_backoff_time) # Double the backoff time for the next attempt, up to a maximum + tries += 1 + time.sleep(backoff(tries)) # Wait for the backoff time before the next attempt + cloudlog.debug("Resume requested or end_event is set, exiting ws_queue thread") + @dispatcher.add_method def getParamsAllKeys() -> list[str]: From ed1d12974fdf37f8acc295b25ec21da308296160 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 15 Apr 2024 14:41:03 -0700 Subject: [PATCH 437/599] Hyundai CAN: check traction control enabled (#32208) * add esp * add tcs11 --- selfdrive/car/hyundai/carstate.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index eac91d5293..92c489cf34 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -118,6 +118,7 @@ class CarState(CarStateBase): ret.brakePressed = cp.vl["TCS13"]["DriverOverride"] == 2 # 2 includes regen braking by user on HEV/EV ret.brakeHoldActive = cp.vl["TCS15"]["AVH_LAMP"] == 2 # 0 OFF, 1 ERROR, 2 ACTIVE, 3 READY ret.parkingBrake = cp.vl["TCS13"]["PBRAKE_ACT"] == 1 + ret.espDisabled = cp.vl["TCS11"]["TCS_PAS"] == 1 ret.accFaulted = cp.vl["TCS13"]["ACCEnable"] != 0 # 0 ACC CONTROL ENABLED, 1-3 ACC CONTROL DISABLED if self.CP.flags & (HyundaiFlags.HYBRID | HyundaiFlags.EV): @@ -255,6 +256,7 @@ class CarState(CarStateBase): messages = [ # address, frequency ("MDPS12", 50), + ("TCS11", 100), ("TCS13", 50), ("TCS15", 10), ("CLU11", 50), From fd401c317d29ac06c06c3cc505fb39e64cfb4819 Mon Sep 17 00:00:00 2001 From: kangtae1 Date: Tue, 16 Apr 2024 06:58:34 +0900 Subject: [PATCH 438/599] Fingerprint: KIA Niro HEV 2021 - South Korea model (#31499) * Fingerprints: KIA Niro HEV South Korea model * Update selfdrive/car/hyundai/fingerprints.py --------- Co-authored-by: Shane Smiskol --- selfdrive/car/hyundai/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 5033738a96..42a442a190 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -737,9 +737,11 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00DEH MFC AT USA LHD 1.00 1.00 99211-G5500 210428', b'\xf1\x00DEH MFC AT USA LHD 1.00 1.07 99211-G5000 201221', + b'\xf1\x00DEH MFC AT KOR LHD 1.00 1.04 99211-G5000 190516', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DEhe SCC FHCUP 1.00 1.00 99110-G5600 ', + b'\xf1\x00DEhe SCC FHCUP 1.00 1.01 99110-G5000 ', ], }, CAR.KIA_SELTOS: { From d14407dafa173383b93cce29a55f0b30c10e8648 Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Mon, 15 Apr 2024 18:03:22 -0400 Subject: [PATCH 439/599] Subaru: Add FW for 2020 Subaru Forester (#31748) --- selfdrive/car/subaru/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/subaru/fingerprints.py b/selfdrive/car/subaru/fingerprints.py index c9b0b859f4..41727d7623 100644 --- a/selfdrive/car/subaru/fingerprints.py +++ b/selfdrive/car/subaru/fingerprints.py @@ -236,6 +236,7 @@ FW_VERSIONS = { b'\xa3 \x18&\x00', b'\xa3 \x19\x14\x00', b'\xa3 \x19&\x00', + b'\xa3 \x19h\x00', b'\xa3 \x14\x00', b'\xa3 \x14\x01', ], @@ -248,6 +249,7 @@ FW_VERSIONS = { b'\x00\x00e!\x1f@ \x11', b'\x00\x00e^\x00\x00\x00\x00', b'\x00\x00e^\x1f@ !', + b'\x00\x00e`\x00\x00\x00\x00', b'\x00\x00e`\x1f@ ', b'\x00\x00e\x97\x00\x00\x00\x00', b'\x00\x00e\x97\x1f@ 0', @@ -268,6 +270,7 @@ FW_VERSIONS = { b'\x1a\xf6F`\x00', b'\x1a\xf6b0\x00', b'\x1a\xf6b`\x00', + b'\x1a\xf6f`\x00', ], }, CAR.SUBARU_FORESTER_HYBRID: { From f7f7dba5ed0580c3022ea6d07148b76e398b768e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 15 Apr 2024 15:17:21 -0700 Subject: [PATCH 440/599] [bot] Fingerprints: add missing FW versions from new users (#31840) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 42a442a190..eb2871684b 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -287,6 +287,7 @@ FW_VERSIONS = { b'\xf1\x00TM ESC \x02 101 \x08\x04 58910-S2GA0', b'\xf1\x00TM ESC \x02 103"\x07\x08 58910-S2GA0', b'\xf1\x00TM ESC \x03 101 \x08\x02 58910-S2DA0', + b'\xf1\x00TM ESC \x03 102!\x04\x03 58910-S2DA0', b'\xf1\x00TM ESC \x04 101 \x08\x04 58910-S2GA0', b'\xf1\x00TM ESC \x04 102!\x04\x05 58910-S2GA0', b'\xf1\x00TM ESC \x1e 102 \x08\x08 58910-S1DA0', @@ -410,6 +411,7 @@ FW_VERSIONS = { b'\xf1\x00LX2_ SCC FHCUP 1.00 1.05 99110-S8100 ', b'\xf1\x00ON__ FCA FHCUP 1.00 1.01 99110-S9110 ', b'\xf1\x00ON__ FCA FHCUP 1.00 1.02 99110-S9100 ', + b'\xf1\x00ON__ FCA FHCUP 1.00 1.03 99110-S9100 ', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00LX ESC \x01 103\x19\t\x10 58910-S8360', @@ -499,6 +501,7 @@ FW_VERSIONS = { b'\xf1\x00DH__ SCC FHCUP 1.00 1.01 96400-B1110 ', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00DH LKAS AT KOR LHD 1.01 1.01 95895-B1500 161014', b'\xf1\x00DH LKAS AT KOR LHD 1.01 1.02 95895-B1500 170810', b'\xf1\x00DH LKAS AT USA LHD 1.01 1.01 95895-B1500 161014', b'\xf1\x00DH LKAS AT USA LHD 1.01 1.02 95895-B1500 170810', @@ -585,6 +588,7 @@ FW_VERSIONS = { b'\xf1\x00DL ESC \x06 103"\x08\x06 58910-L3200', b'\xf1\x00DL ESC \t 100 \x06\x02 58910-L3800', b'\xf1\x00DL ESC \t 101 \x07\x02 58910-L3800', + b'\xf1\x00DL ESC \t 102"\x08\x10 58910-L3800', ], }, CAR.KIA_K5_HEV_2020: { @@ -735,9 +739,9 @@ FW_VERSIONS = { b'\xf1\x00DE MDPS C 1.00 1.01 56310G5520\x00 4DEPC101', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00DEH MFC AT KOR LHD 1.00 1.04 99211-G5000 190516', b'\xf1\x00DEH MFC AT USA LHD 1.00 1.00 99211-G5500 210428', b'\xf1\x00DEH MFC AT USA LHD 1.00 1.07 99211-G5000 201221', - b'\xf1\x00DEH MFC AT KOR LHD 1.00 1.04 99211-G5000 190516', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DEhe SCC FHCUP 1.00 1.00 99110-G5600 ', From c309333b79e499c19ac2229dae0d767288223110 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 15 Apr 2024 15:34:10 -0700 Subject: [PATCH 441/599] [bot] Fingerprints: add missing FW versions from new users (#32209) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index eb2871684b..574f79906b 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -407,6 +407,7 @@ FW_VERSIONS = { b'\xf1\x00LX2_ SCC F-CUP 1.00 1.05 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCU- 1.00 1.05 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCUP 1.00 1.00 99110-S8110 ', + b'\xf1\x00LX2_ SCC FHCUP 1.00 1.03 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCUP 1.00 1.04 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCUP 1.00 1.05 99110-S8100 ', b'\xf1\x00ON__ FCA FHCUP 1.00 1.01 99110-S9110 ', @@ -418,6 +419,7 @@ FW_VERSIONS = { b'\xf1\x00LX ESC \x01 1031\t\x10 58910-S8360', b'\xf1\x00LX ESC \x01 104 \x10\x16 58910-S8360', b'\xf1\x00LX ESC \x0b 101\x19\x03\x17 58910-S8330', + b'\xf1\x00LX ESC \x0b 101\x19\x03 58910-S8360', b'\xf1\x00LX ESC \x0b 102\x19\x05\x07 58910-S8330', b'\xf1\x00LX ESC \x0b 103\x19\t\x07 58910-S8330', b'\xf1\x00LX ESC \x0b 103\x19\t\t 58910-S8350', @@ -432,6 +434,7 @@ FW_VERSIONS = { b'\xf1\x00LX2 MDPS C 1,00 1,03 56310-S8020 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-S8000 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103', + b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-XX000 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104', b'\xf1\x00LX2 MDPS R 1.00 1.02 56370-S8300 9318', b'\xf1\x00ON MDPS C 1.00 1.00 56340-S9000 8B13', @@ -584,6 +587,7 @@ FW_VERSIONS = { ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00DL ESC \x01 104 \x07\x12 58910-L2200', + b'\xf1\x00DL ESC \x03 100 \x08\x02 58910-L3600', b'\xf1\x00DL ESC \x06 101 \x04\x02 58910-L3200', b'\xf1\x00DL ESC \x06 103"\x08\x06 58910-L3200', b'\xf1\x00DL ESC \t 100 \x06\x02 58910-L3800', @@ -850,6 +854,7 @@ FW_VERSIONS = { (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CN7 MDPS C 1.00 1.06 56310/AA070 4CNDC106', b'\xf1\x00CN7 MDPS C 1.00 1.06 56310AA050\x00 4CNDC106', + b'\xf1\x00CN7 MDPS C 1.00 1.07 56310AA050\x00 4CNDC107', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.00 99210-AB000 200819', @@ -857,6 +862,7 @@ FW_VERSIONS = { b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.03 99210-AA000 200819', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.03 99210-AB000 220426', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.06 99210-AA000 220111', + b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.08 99210-AA000 220728', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00CN ESC \t 101 \x10\x03 58910-AB800', From cedf98de5a2a948bd7d19b23ac964cf845a4769d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 15 Apr 2024 16:44:43 -0700 Subject: [PATCH 442/599] casync build: remove channel from build metadata json (#32212) * remove channel * fix * reset * remove this * no channel --- release/README.md | 1 - release/create_casync_build.sh | 2 +- release/create_casync_release.py | 3 +-- release/create_release_manifest.py | 8 +++----- system/updated/casync/common.py | 4 ++-- system/version.py | 6 ------ 6 files changed, 7 insertions(+), 17 deletions(-) diff --git a/release/README.md b/release/README.md index 7a4b2cde3e..eaf2d2b535 100644 --- a/release/README.md +++ b/release/README.md @@ -32,7 +32,6 @@ # of a tarball containing the full prebuilt openpilot release BUILD_DIR=/data/openpilot_build \ CASYNC_DIR=/data/casync \ -OPENPILOT_CHANNEL=nightly \ release/create_casync_build.sh ``` diff --git a/release/create_casync_build.sh b/release/create_casync_build.sh index 8448801189..256bad4b4c 100755 --- a/release/create_casync_build.sh +++ b/release/create_casync_build.sh @@ -20,4 +20,4 @@ release/copy_build_files.sh $SOURCE_DIR $BUILD_DIR release/create_prebuilt.sh $BUILD_DIR cd $SOURCE_DIR -release/create_casync_release.py $BUILD_DIR $CASYNC_DIR $OPENPILOT_CHANNEL +release/create_casync_release.py $BUILD_DIR $CASYNC_DIR diff --git a/release/create_casync_release.py b/release/create_casync_release.py index 4c90c31909..11629f3ab5 100755 --- a/release/create_casync_release.py +++ b/release/create_casync_release.py @@ -12,7 +12,6 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(description="creates a casync release") parser.add_argument("target_dir", type=str, help="target directory to build channel from") parser.add_argument("output_dir", type=str, help="output directory for the channel") - parser.add_argument("channel", type=str, help="what channel this build is") args = parser.parse_args() target_dir = pathlib.Path(args.target_dir) @@ -21,7 +20,7 @@ if __name__ == "__main__": build_metadata = get_build_metadata() build_metadata.openpilot.build_style = "release" if os.environ.get("RELEASE", None) is not None else "debug" - create_build_metadata_file(target_dir, build_metadata, args.channel) + create_build_metadata_file(target_dir, build_metadata) digest, caibx = create_casync_release(target_dir, output_dir, build_metadata.canonical) diff --git a/release/create_release_manifest.py b/release/create_release_manifest.py index 485b18c617..1d235f10fa 100755 --- a/release/create_release_manifest.py +++ b/release/create_release_manifest.py @@ -6,18 +6,16 @@ import os import pathlib from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE, get_partition_path -from openpilot.system.version import get_build_metadata, get_agnos_version +from openpilot.system.version import get_build_metadata BASE_URL = "https://commadist.blob.core.windows.net" -CHANNEL_DATA = pathlib.Path(__file__).parent / "channel_data" / "agnos" - OPENPILOT_RELEASES = f"{BASE_URL}/openpilot-releases/openpilot" AGNOS_RELEASES = f"{BASE_URL}/openpilot-releases/agnos" -def create_partition_manifest(agnos_version, partition): +def create_partition_manifest(partition): agnos_filename = os.path.basename(partition["url"]).split(".")[0] return { @@ -57,7 +55,7 @@ if __name__ == "__main__": ret = { "build_metadata": dataclasses.asdict(build_metadata), "manifest": [ - *[create_partition_manifest(get_agnos_version(args.target_dir), entry) for entry in agnos_manifest], + *[create_partition_manifest(entry) for entry in agnos_manifest], create_openpilot_manifest(build_metadata) ] } diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py index d1c795657d..6979f5cb06 100644 --- a/system/updated/casync/common.py +++ b/system/updated/casync/common.py @@ -29,11 +29,11 @@ def get_exclude_set(path) -> set[str]: return exclude_set -def create_build_metadata_file(path: pathlib.Path, build_metadata: BuildMetadata, channel: str): +def create_build_metadata_file(path: pathlib.Path, build_metadata: BuildMetadata): with open(path / BUILD_METADATA_FILENAME, "w") as f: build_metadata_dict = dataclasses.asdict(build_metadata) - build_metadata_dict["channel"] = channel build_metadata_dict["openpilot"].pop("is_dirty") # this is determined at runtime + build_metadata_dict.pop("channel") # channel is unrelated to the build itself f.write(json.dumps(build_metadata_dict)) diff --git a/system/version.py b/system/version.py index 6c3609c45a..f5b8cd49e8 100755 --- a/system/version.py +++ b/system/version.py @@ -10,7 +10,6 @@ from openpilot.common.basedir import BASEDIR from openpilot.common.swaglog import cloudlog from openpilot.common.utils import cache from openpilot.common.git import get_commit, get_origin, get_branch, get_short_branch, get_commit_date -from openpilot.common.run import run_cmd RELEASE_BRANCHES = ['release3-staging', 'release3', 'nightly'] TESTED_BRANCHES = RELEASE_BRANCHES + ['devel', 'devel-staging'] @@ -157,11 +156,6 @@ def get_build_metadata(path: str = BASEDIR) -> BuildMetadata: raise Exception("invalid build metadata") -def get_agnos_version(directory: str = BASEDIR) -> str: - return run_cmd(["bash", "-c", r"unset AGNOS_VERSION && source launch_env.sh && \ - echo -n $AGNOS_VERSION"], cwd=directory).strip() - - if __name__ == "__main__": from openpilot.common.params import Params From 4356ad9bf563e9588edec6bf96f1590cff411a95 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 15 Apr 2024 17:43:40 -0700 Subject: [PATCH 443/599] also remove channel from jenkinsfile (#32213) --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 418404071a..909fbf63dd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -154,9 +154,9 @@ def build_release(String channel_name) { }, "${channel_name} (casync)": { deviceStage("build casync", "tici-needs-can", [], [ - ["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync/openpilot $SOURCE_DIR/release/create_casync_build.sh"], + ["build", "RELEASE=1 BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync/openpilot $SOURCE_DIR/release/create_casync_build.sh"], ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/openpilot /data/manifest.json && cat /data/manifest.json"], - ["upload and cleanup ${channel_name}", "PYTHONWARNINGS=ignore $SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], + ["upload and cleanup", "PYTHONWARNINGS=ignore $SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], ]) }, "publish agnos": { From 0b8de57c567fe3ef9fca9928f6d21bc76ac61024 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 16 Apr 2024 10:33:58 -0700 Subject: [PATCH 444/599] [bot] Fingerprints: add missing FW versions from new users (#32211) Export fingerprints --- selfdrive/car/toyota/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index d91124e257..8ca0ca8851 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -1334,6 +1334,7 @@ FW_VERSIONS = { b'\x01896637854000\x00\x00\x00\x00', b'\x01896637873000\x00\x00\x00\x00', b'\x01896637878000\x00\x00\x00\x00', + b'\x01896637878100\x00\x00\x00\x00', ], (Ecu.engine, 0x7e0, None): [ b'\x0237841000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', From 7e494eb06f5a36a4fc0b39d637d624605de8a1dc Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:35:02 -0300 Subject: [PATCH 445/599] Multilang: update pt-BR translation (#32216) remove navFeatures description from experimental toggle --- selfdrive/ui/translations/main_pt-BR.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 6d66565a18..cd0e2eefa8 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1164,7 +1164,7 @@ Isso pode levar até um minuto. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. - + A visualização de condução fará a transição para a câmera grande angular voltada para a estrada em baixas velocidades para mostrar melhor algumas curvas. O logotipo do modo Experimental também será mostrado no canto superior direito.
From 7c378814f1dceca0498a8e4e827a1b7f87286736 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 16 Apr 2024 12:00:18 -0700 Subject: [PATCH 446/599] jenkins: nightly casync build off of master (#32218) release node --- Jenkinsfile | 211 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 132 insertions(+), 79 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 909fbf63dd..f68ed86b66 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,6 +9,28 @@ def retryWithDelay(int maxRetries, int delay, Closure body) { throw Exception("Failed after ${maxRetries} retries") } +// check if started by timer: https://stackoverflow.com/questions/43516025/how-to-handle-nightly-build-in-jenkins-declarative-pipeline +@NonCPS +def isJobStartedByTimer() { + def startedByTimer = false + try { + def buildCauses = currentBuild.rawBuild.getCauses() + for ( buildCause in buildCauses ) { + if (buildCause != null) { + def causeDescription = buildCause.getShortDescription() + echo "shortDescription: ${causeDescription}" + if (causeDescription.contains("Started by timer")) { + startedByTimer = true + } + } + } + } catch(theError) { + echo "Error getting build cause" + } + + return startedByTimer +} + def device(String ip, String step_label, String cmd) { withCredentials([file(credentialsId: 'id_rsa', variable: 'key_file')]) { def ssh_cmd = """ @@ -151,15 +173,31 @@ def build_release(String channel_name) { deviceStage("build git", "tici-needs-can", [], [ ["build ${channel_name}", "RELEASE_BRANCH=${channel_name} $SOURCE_DIR/release/build_release.sh"], ]) + } + ) +} + + +def build_casync_release(String channel_name, def release) { + def extra_env = release ? "RELEASE=1" : "" + + return deviceStage("build casync", "tici-needs-can", [], [ + ["build", "${extra_env} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync/openpilot $SOURCE_DIR/release/create_casync_build.sh"], + ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/openpilot /data/manifest.json && cat /data/manifest.json"], + ["upload and cleanup", "PYTHONWARNINGS=ignore $SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], + ]) +} + + +def build_stage() { + return parallel ( + 'nightly': { + build_release("nightly", true); }, - "${channel_name} (casync)": { - deviceStage("build casync", "tici-needs-can", [], [ - ["build", "RELEASE=1 BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync/openpilot $SOURCE_DIR/release/create_casync_build.sh"], - ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/openpilot /data/manifest.json && cat /data/manifest.json"], - ["upload and cleanup", "PYTHONWARNINGS=ignore $SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], - ]) + 'master': { + build_release("master", false); }, - "publish agnos": { + 'publish agnos': { pcStage("publish agnos") { sh "release/create_casync_agnos_release.py /tmp/casync/agnos /tmp/casync_tmp" sh "PYTHONWARNINGS=ignore ${env.WORKSPACE}/release/upload_casync_release.py /tmp/casync" @@ -168,7 +206,6 @@ def build_release(String channel_name) { ) } - node { env.CI = "1" env.PYTHONWARNINGS = "error" @@ -183,12 +220,23 @@ node { 'testing-closet*', 'hotfix-*'] def excludeRegex = excludeBranches.join('|').replaceAll('\\*', '.*') - if (env.BRANCH_NAME != 'master') { - properties([ - disableConcurrentBuilds(abortPrevious: true) - ]) + def nightlyBranch = "master" + + def props = []; + + if (env.BRANCH_NAME == nightlyBranch) { + props.add(pipelineTriggers([ + pollSCM('* * * * *'), // every commit + cron('0 2 * * *') // and at 2am every night + ])) } + if (env.branch != "master") { + props.add(disableConcurrentBuilds(abortPrevious: true)) + } + + properties(props); + try { if (env.BRANCH_NAME == 'devel-staging') { build_release("release3-staging") @@ -199,74 +247,79 @@ node { } if (!env.BRANCH_NAME.matches(excludeRegex)) { - parallel ( - // tici tests - 'onroad tests': { - deviceStage("onroad", "tici-needs-can", [], [ - // TODO: ideally, this test runs in master-ci, but it takes 5+m to build it - //["build master-ci", "cd $SOURCE_DIR/release && TARGET_DIR=$TEST_DIR $SOURCE_DIR/scripts/retry.sh ./build_devel.sh"], - ["build openpilot", "cd selfdrive/manager && ./build.py"], - ["check dirty", "release/check-dirty.sh"], - ["onroad tests", "pytest selfdrive/test/test_onroad.py -s"], - ["time to onroad", "pytest selfdrive/test/test_time_to_onroad.py"], - ]) - }, - 'HW + Unit Tests': { - deviceStage("tici-hardware", "tici-common", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], - ["test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"], - ["test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py"], - ["test pigeond", "pytest system/ubloxd/tests/test_pigeond.py"], - ["test manager", "pytest selfdrive/manager/test/test_manager.py"], - ]) - }, - 'loopback': { - deviceStage("loopback", "tici-loopback", ["UNSAFE=1"], [ - ["build openpilot", "cd selfdrive/manager && ./build.py"], - ["test boardd loopback", "pytest selfdrive/boardd/tests/test_boardd_loopback.py"], - ]) - }, - 'camerad': { - deviceStage("AR0231", "tici-ar0231", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test camerad", "pytest system/camerad/test/test_camerad.py"], - ["test exposure", "pytest system/camerad/test/test_exposure.py"], - ]) - deviceStage("OX03C10", "tici-ox03c10", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test camerad", "pytest system/camerad/test/test_camerad.py"], - ["test exposure", "pytest system/camerad/test/test_exposure.py"], - ]) - }, - 'sensord': { - deviceStage("LSM + MMC", "tici-lsmc", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test sensord", "pytest system/sensord/tests/test_sensord.py"], - ]) - deviceStage("BMX + LSM", "tici-bmx-lsm", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test sensord", "pytest system/sensord/tests/test_sensord.py"], - ]) - }, - 'replay': { - deviceStage("model-replay", "tici-replay", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["model replay", "selfdrive/test/process_replay/model_replay.py"], - ]) - }, - 'tizi': { - deviceStage("tizi", "tizi", ["UNSAFE=1"], [ - ["build openpilot", "cd selfdrive/manager && ./build.py"], - ["test boardd loopback", "SINGLE_PANDA=1 pytest selfdrive/boardd/tests/test_boardd_loopback.py"], - ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], - ["test amp", "pytest system/hardware/tici/tests/test_amplifier.py"], - ["test hw", "pytest system/hardware/tici/tests/test_hardware.py"], - ["test qcomgpsd", "pytest system/qcomgpsd/tests/test_qcomgpsd.py"], - ]) - }, + parallel ( + // tici tests + 'onroad tests': { + deviceStage("onroad", "tici-needs-can", [], [ + // TODO: ideally, this test runs in master-ci, but it takes 5+m to build it + //["build master-ci", "cd $SOURCE_DIR/release && TARGET_DIR=$TEST_DIR $SOURCE_DIR/scripts/retry.sh ./build_devel.sh"], + ["build openpilot", "cd selfdrive/manager && ./build.py"], + ["check dirty", "release/check-dirty.sh"], + ["onroad tests", "pytest selfdrive/test/test_onroad.py -s"], + ["time to onroad", "pytest selfdrive/test/test_time_to_onroad.py"], + ]) + }, + 'HW + Unit Tests': { + deviceStage("tici-hardware", "tici-common", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], + ["test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"], + ["test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py"], + ["test pigeond", "pytest system/ubloxd/tests/test_pigeond.py"], + ["test manager", "pytest selfdrive/manager/test/test_manager.py"], + ]) + }, + 'loopback': { + deviceStage("loopback", "tici-loopback", ["UNSAFE=1"], [ + ["build openpilot", "cd selfdrive/manager && ./build.py"], + ["test boardd loopback", "pytest selfdrive/boardd/tests/test_boardd_loopback.py"], + ]) + }, + 'camerad': { + deviceStage("AR0231", "tici-ar0231", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test camerad", "pytest system/camerad/test/test_camerad.py"], + ["test exposure", "pytest system/camerad/test/test_exposure.py"], + ]) + deviceStage("OX03C10", "tici-ox03c10", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test camerad", "pytest system/camerad/test/test_camerad.py"], + ["test exposure", "pytest system/camerad/test/test_exposure.py"], + ]) + }, + 'sensord': { + deviceStage("LSM + MMC", "tici-lsmc", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test sensord", "pytest system/sensord/tests/test_sensord.py"], + ]) + deviceStage("BMX + LSM", "tici-bmx-lsm", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test sensord", "pytest system/sensord/tests/test_sensord.py"], + ]) + }, + 'replay': { + deviceStage("model-replay", "tici-replay", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["model replay", "selfdrive/test/process_replay/model_replay.py"], + ]) + }, + 'tizi': { + deviceStage("tizi", "tizi", ["UNSAFE=1"], [ + ["build openpilot", "cd selfdrive/manager && ./build.py"], + ["test boardd loopback", "SINGLE_PANDA=1 pytest selfdrive/boardd/tests/test_boardd_loopback.py"], + ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], + ["test amp", "pytest system/hardware/tici/tests/test_amplifier.py"], + ["test hw", "pytest system/hardware/tici/tests/test_hardware.py"], + ["test qcomgpsd", "pytest system/qcomgpsd/tests/test_qcomgpsd.py"], + ]) + }, + ) + } - ) + if (env.BRANCH_NAME == nightlyBranch && isJobStartedByTimer()) { + stage('build release') { + build_stage() + } } } catch (Exception e) { currentBuild.result = 'FAILED' From e4f4fd1d5a8000859ad37f1c7fb7b95d482099ad Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 16 Apr 2024 12:06:48 -0700 Subject: [PATCH 447/599] rename build_release to build_git_release (#32219) fix names --- Jenkinsfile | 16 ++++++++-------- .../{build_release.sh => build_git_release.sh} | 0 2 files changed, 8 insertions(+), 8 deletions(-) rename release/{build_release.sh => build_git_release.sh} (100%) diff --git a/Jenkinsfile b/Jenkinsfile index f68ed86b66..bbd51b8bfd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -167,19 +167,19 @@ def setupCredentials() { } -def build_release(String channel_name) { +def build_git_release(String channel_name) { return parallel ( "${channel_name} (git)": { deviceStage("build git", "tici-needs-can", [], [ - ["build ${channel_name}", "RELEASE_BRANCH=${channel_name} $SOURCE_DIR/release/build_release.sh"], + ["build ${channel_name}", "RELEASE_BRANCH=${channel_name} $SOURCE_DIR/release/build_git_release.sh"], ]) } ) } -def build_casync_release(String channel_name, def release) { - def extra_env = release ? "RELEASE=1" : "" +def build_casync_release(String channel_name, def is_release) { + def extra_env = is_release ? "RELEASE=1" : "" return deviceStage("build casync", "tici-needs-can", [], [ ["build", "${extra_env} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync/openpilot $SOURCE_DIR/release/create_casync_build.sh"], @@ -192,10 +192,10 @@ def build_casync_release(String channel_name, def release) { def build_stage() { return parallel ( 'nightly': { - build_release("nightly", true); + build_casync_release("nightly", true); }, 'master': { - build_release("master", false); + build_casync_release("master", false); }, 'publish agnos': { pcStage("publish agnos") { @@ -239,11 +239,11 @@ node { try { if (env.BRANCH_NAME == 'devel-staging') { - build_release("release3-staging") + build_git_release("release3-staging") } if (env.BRANCH_NAME == 'master-ci') { - build_release("nightly") + build_git_release("nightly") } if (!env.BRANCH_NAME.matches(excludeRegex)) { diff --git a/release/build_release.sh b/release/build_git_release.sh similarity index 100% rename from release/build_release.sh rename to release/build_git_release.sh From 7e20812924d77dfd3d6e3602eac0b08e9138f4a3 Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Tue, 16 Apr 2024 16:51:23 -0300 Subject: [PATCH 448/599] ui: cleanup white space after string (#32217) * cleanup white space after string * update --------- Co-authored-by: Shane Smiskol --- selfdrive/ui/qt/offroad/settings.cc | 2 +- selfdrive/ui/translations/main_ar.ts | 2 +- selfdrive/ui/translations/main_de.ts | 2 +- selfdrive/ui/translations/main_fr.ts | 2 +- selfdrive/ui/translations/main_ja.ts | 2 +- selfdrive/ui/translations/main_ko.ts | 2 +- selfdrive/ui/translations/main_pt-BR.ts | 2 +- selfdrive/ui/translations/main_th.ts | 2 +- selfdrive/ui/translations/main_tr.ts | 2 +- selfdrive/ui/translations/main_zh-CHS.ts | 2 +- selfdrive/ui/translations/main_zh-CHT.ts | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index e3f3b36ff9..5aa33974ac 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -150,7 +150,7 @@ void TogglesPanel::updateToggles() { "Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; " "mistakes should be expected.")) .arg(tr("New Driving Visualization")) - .arg(tr("The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. ")); + .arg(tr("The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner.")); const bool is_release = params.getBool("IsReleaseBranch"); auto cp_bytes = params.get("CarParamsPersistent"); diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 8a32b980f2..85b1fd040a 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -1179,7 +1179,7 @@ This may take up to a minute. يوصى بالمعيار. في الوضع العدواني، سيتبع الطيار المفتوح السيارات الرائدة بشكل أقرب ويكون أكثر عدوانية مع البنزين والفرامل. في الوضع المريح، سيبقى openpilot بعيدًا عن السيارات الرائدة. في السيارات المدعومة، يمكنك التنقل بين هذه الشخصيات باستخدام زر مسافة عجلة القيادة. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 6f64ef3211..4154c47abb 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -1165,7 +1165,7 @@ This may take up to a minute. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 2643da56ff..0736e161a8 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -1163,7 +1163,7 @@ Cela peut prendre jusqu'à une minute. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. La visualisation de la conduite passera sur la caméra grand angle dirigée vers la route à faible vitesse afin de mieux montrer certains virages. Le logo du mode expérimental s'affichera également dans le coin supérieur droit. diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 5fb4a3b1c2..0bfca5e826 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -1157,7 +1157,7 @@ This may take up to a minute. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index d8006a0f58..639371d135 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -1159,7 +1159,7 @@ This may take up to a minute. 표준 모드를 권장합니다. 공격적 모드의 openpilot은 선두 차량을 더 가까이 따라가고 가감속제어를 사용하여 더욱 공격적으로 움직입니다. 편안한 모드의 openpilot은 선두 차량으로부터 더 멀리 떨어져 있습니다. 지원되는 차량에서는 스티어링 휠 거리 버튼을 사용하여 이러한 특성을 순환할 수 있습니다. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index cd0e2eefa8..2706166b47 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1163,7 +1163,7 @@ Isso pode levar até um minuto. Neutro é o recomendado. No modo disputa o openpilot seguirá o carro da frente mais de perto e será mais agressivo com a aceleração e frenagem. No modo calmo o openpilot se manterá mais longe do carro da frente. Em carros compatíveis, você pode alternar esses temperamentos com o botão de distância do volante. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. A visualização de condução fará a transição para a câmera grande angular voltada para a estrada em baixas velocidades para mostrar melhor algumas curvas. O logotipo do modo Experimental também será mostrado no canto superior direito. diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index 447bad4652..b196e0459a 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -1159,7 +1159,7 @@ This may take up to a minute. แนะนำให้ใช้แบบมาตรฐาน ในโหมดดุดัน openpilot จะตามรถคันหน้าใกล้ขึ้นและเร่งและเบรคแบบดุดันมากขึ้น ในโหมดผ่อนคลาย openpilot จะอยู่ห่างจากรถคันหน้ามากขึ้น ในรถรุ่นที่รองรับคุณสามารถเปลี่ยนบุคลิกไปแบบต่าง ๆ โดยใช้ปุ่มปรับระยะห่างบนพวงมาลัย - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. การแสดงภาพการขับขี่จะเปลี่ยนไปใช้กล้องมุมกว้างที่หันหน้าไปทางถนนเมื่ออยู่ในความเร็วต่ำ เพื่อแสดงภาพการเลี้ยวที่ดีขึ้น โลโก้โหมดการทดลองจะแสดงที่มุมบนขวาด้วย diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index 16e4504343..4b51ce9b42 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -1157,7 +1157,7 @@ This may take up to a minute. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 938915b305..3e2a041758 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -1159,7 +1159,7 @@ This may take up to a minute. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 98602b81d1..c12b2c5fdd 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -1159,7 +1159,7 @@ This may take up to a minute. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. From f12c4d825187769d60de2c342dd8e4780b690393 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 16 Apr 2024 12:51:44 -0700 Subject: [PATCH 449/599] jenkins: remove pollSCM (#32220) * try * master --- Jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index bbd51b8bfd..6cffc95c09 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -226,8 +226,7 @@ node { if (env.BRANCH_NAME == nightlyBranch) { props.add(pipelineTriggers([ - pollSCM('* * * * *'), // every commit - cron('0 2 * * *') // and at 2am every night + cron('0 2 * * *') // at 2am every night ])) } From 713b7e90c269a0262e19ad14f848e83ed59444cf Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 16 Apr 2024 15:54:58 -0700 Subject: [PATCH 450/599] pandad: reconnect after reset (#32223) --- selfdrive/boardd/pandad.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/boardd/pandad.py b/selfdrive/boardd/pandad.py index 27104255a0..b4ac2d9548 100755 --- a/selfdrive/boardd/pandad.py +++ b/selfdrive/boardd/pandad.py @@ -139,7 +139,7 @@ def main() -> NoReturn: if first_run: # reset panda to ensure we're in a good state cloudlog.info(f"Resetting panda {panda.get_usb_serial()}") - panda.reset(reconnect=False) + panda.reset(reconnect=True) for p in pandas: p.close() From f072b7b8a0ca7220b4a6a99edd6e472cb6282b78 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 16 Apr 2024 16:10:03 -0700 Subject: [PATCH 451/599] fix concurrent build cancellation (#32224) fix concurrent builds --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6cffc95c09..043a2fbce3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -230,7 +230,7 @@ node { ])) } - if (env.branch != "master") { + if (env.BRANCH_NAME != "master") { props.add(disableConcurrentBuilds(abortPrevious: true)) } From 843e9de6cf35764dfae917c5014ceaf96bc97e0f Mon Sep 17 00:00:00 2001 From: commaci-public <60409688+commaci-public@users.noreply.github.com> Date: Tue, 16 Apr 2024 17:28:05 -0700 Subject: [PATCH 452/599] [bot] Bump submodules (#32226) bump submodules Co-authored-by: adeebshihadeh --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index 18f0bdff4b..2eb8578196 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 18f0bdff4bfb178c5cb5613fe91f0bb424791a93 +Subproject commit 2eb85781960ec4e69019222d8eea658f9e63d4c1 From c8f729761eab9a306788094611467248fcb8c822 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Tue, 16 Apr 2024 17:40:53 -0700 Subject: [PATCH 453/599] devcontainer: passthrough .azure (#32228) azure --- .devcontainer/devcontainer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0f1c4baf99..7174ee2800 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -17,6 +17,7 @@ "--volume=/tmp/.X11-unix:/tmp/.X11-unix", "--volume=${localWorkspaceFolder}/.devcontainer/.host/.Xauthority:/home/batman/.Xauthority", "--volume=${localEnv:HOME}/.comma:/home/batman/.comma", + "--volume=${localEnv:HOME}/.azure:/home/batman/.azure", "--volume=/tmp/comma_download_cache:/tmp/comma_download_cache", "--shm-size=1G", "--add-host=host.docker.internal:host-gateway", // required to use host.docker.internal on linux From 4a9f3a4f2738ab82eec246903f7f766a68b06d59 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 16 Apr 2024 19:12:30 -0700 Subject: [PATCH 454/599] [bot] Fingerprints: add missing FW versions from new users (#32221) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 574f79906b..72c435e550 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -192,6 +192,7 @@ FW_VERSIONS = { b'\xf1\x00DN ESC \x06 104\x19\x08\x01 58910-L0100', b'\xf1\x00DN ESC \x06 106 \x07\x01 58910-L0100', b'\xf1\x00DN ESC \x06 107 \x07\x03 58910-L1300', + b'\xf1\x00DN ESC \x06 107"\x08\x07 58910-L0100', b'\xf1\x00DN ESC \x07 104\x19\x08\x01 58910-L0100', b'\xf1\x00DN ESC \x07 106 \x07\x01 58910-L0100', b'\xf1\x00DN ESC \x07 107"\x08\x07 58910-L0100', @@ -280,10 +281,12 @@ FW_VERSIONS = { CAR.HYUNDAI_SANTA_FE_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TM__ SCC F-CUP 1.00 1.00 99110-S1500 ', + b'\xf1\x00TM__ SCC F-CUP 1.00 1.01 99110-S1500 ', b'\xf1\x00TM__ SCC FHCUP 1.00 1.00 99110-S1500 ', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00TM ESC \x01 102!\x04\x03 58910-S2DA0', + b'\xf1\x00TM ESC \x01 104"\x10\x07 58910-S2DA0', b'\xf1\x00TM ESC \x02 101 \x08\x04 58910-S2GA0', b'\xf1\x00TM ESC \x02 103"\x07\x08 58910-S2GA0', b'\xf1\x00TM ESC \x03 101 \x08\x02 58910-S2DA0', @@ -341,6 +344,7 @@ FW_VERSIONS = { ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00TMP MFC AT USA LHD 1.00 1.03 99211-S1500 210224', + b'\xf1\x00TMP MFC AT USA LHD 1.00 1.05 99211-S1500 220126', b'\xf1\x00TMP MFC AT USA LHD 1.00 1.06 99211-S1500 220727', ], }, @@ -436,6 +440,7 @@ FW_VERSIONS = { b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-XX000 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104', + b'\xf1\x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104', b'\xf1\x00LX2 MDPS R 1.00 1.02 56370-S8300 9318', b'\xf1\x00ON MDPS C 1.00 1.00 56340-S9000 8B13', b'\xf1\x00ON MDPS C 1.00 1.01 56340-S9000 9201', @@ -884,6 +889,7 @@ FW_VERSIONS = { (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CN7 MDPS C 1.00 1.02 56310/BY050 4CNHC102', b'\xf1\x00CN7 MDPS C 1.00 1.03 56310/BY050 4CNHC103', + b'\xf1\x00CN7 MDPS C 1.00 1.03 56310BY050\x00 4CNHC103', b'\xf1\x00CN7 MDPS C 1.00 1.03 56310BY0500 4CNHC103', b'\xf1\x00CN7 MDPS C 1.00 1.04 56310BY050\x00 4CNHC104', ], From 119e2847581fd5b1ec0a15109f592d884745cb4c Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 16 Apr 2024 21:19:57 -0700 Subject: [PATCH 455/599] Honda HR-V 3G: add missing camera ECU (#32230) * add from 320098ff6c5e4730/2023-04-13--17-47-46 * from a3af9bb0ea9298f4/2024-04-07--10-35-20 * Revert "from a3af9bb0ea9298f4/2024-04-07--10-35-20" This reverts commit 1bbfa8805891d072986e741296ff2248ab249f23. * add from 5d8793699017d179/2024-04-16--16-21-14 Honda HR-V 2023 EX-L Mexico plant, US market * this is that unknown response * and this is the unknown addr from the og user * clean up * consistent order * update pattern --- selfdrive/car/honda/fingerprints.py | 4 ++++ selfdrive/car/honda/tests/test_honda.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 18fe69dd1f..e7d325ca18 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -1021,6 +1021,10 @@ FW_VERSIONS = { (Ecu.srs, 0x18da53f1, None): [ b'77959-3V0-A820\x00\x00', ], + (Ecu.fwdRadar, 0x18dab0f1, None): [ + b'8S102-3W0-A060\x00\x00', + b'8S102-3W0-AB10\x00\x00', + ], (Ecu.vsa, 0x18da28f1, None): [ b'57114-3W0-A040\x00\x00', ], diff --git a/selfdrive/car/honda/tests/test_honda.py b/selfdrive/car/honda/tests/test_honda.py index 4e3f9182ea..60d91b84a8 100755 --- a/selfdrive/car/honda/tests/test_honda.py +++ b/selfdrive/car/honda/tests/test_honda.py @@ -4,7 +4,7 @@ import unittest from openpilot.selfdrive.car.honda.fingerprints import FW_VERSIONS -HONDA_FW_VERSION_RE = br"\d{5}-[A-Z0-9]{3}(-|,)[A-Z0-9]{4}(\x00){2}$" +HONDA_FW_VERSION_RE = br"[A-Z0-9]{5}-[A-Z0-9]{3}(-|,)[A-Z0-9]{4}(\x00){2}$" class TestHondaFingerprint(unittest.TestCase): From a076c1e78f54ed78666ed2fea6f8443f51b45a95 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 16 Apr 2024 21:49:30 -0700 Subject: [PATCH 456/599] FwQueryConfig: test non-essential ecus aren't needless (#32232) * good test * remove :D * typo --- selfdrive/car/honda/values.py | 12 ------------ selfdrive/car/tests/test_fw_fingerprint.py | 10 +++++++++- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 79a76ee2ac..3db8b6435f 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -300,21 +300,9 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.programmedFuelInjection: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, - CAR.HONDA_PILOT], - Ecu.transmission: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, CAR.HONDA_PILOT], - Ecu.srs: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_2022, CAR.HONDA_E], Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_2022, CAR.HONDA_E], Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT], - Ecu.gateway: [CAR.ACURA_ILX, CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_FIT, - CAR.HONDA_FREED, CAR.HONDA_HRV, CAR.HONDA_RIDGELINE, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, - CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_PILOT], - Ecu.electricBrakeBooster: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CRV_5G], - # existence correlates with transmission type for Accord ICE - Ecu.shiftByWire: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CRV_HYBRID, CAR.HONDA_E, CAR.HONDA_INSIGHT, CAR.HONDA_PILOT], - # existence correlates with trim level - Ecu.hud: [CAR.HONDA_ACCORD], }, extra_ecus=[ (Ecu.combinationMeter, 0x18da60f1, None), diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index 96e81272e4..18868c3e41 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -9,7 +9,7 @@ from unittest import mock from cereal import car from openpilot.selfdrive.car.car_helpers import interfaces from openpilot.selfdrive.car.fingerprints import FW_VERSIONS -from openpilot.selfdrive.car.fw_versions import FW_QUERY_CONFIGS, FUZZY_EXCLUDE_ECUS, VERSIONS, build_fw_dict, \ +from openpilot.selfdrive.car.fw_versions import ESSENTIAL_ECUS, FW_QUERY_CONFIGS, FUZZY_EXCLUDE_ECUS, VERSIONS, build_fw_dict, \ match_fw_to_car, get_brand_ecu_matches, get_fw_versions, get_present_ecus from openpilot.selfdrive.car.vin import get_vin @@ -146,6 +146,14 @@ class TestFwFingerprint(unittest.TestCase): for ecu in ecus.keys(): self.assertNotEqual(ecu[0], Ecu.transmission, f"{car_model}: Blacklisted ecu: (Ecu.{ECU_NAME[ecu[0]]}, {hex(ecu[1])})") + def test_non_essential_ecus(self): + for brand, config in FW_QUERY_CONFIGS.items(): + with self.subTest(brand): + # These ECUs are already not in ESSENTIAL_ECUS which the fingerprint functions give a pass if missing + unnecessary_non_essential_ecus = set(config.non_essential_ecus) - set(ESSENTIAL_ECUS) + self.assertEqual(unnecessary_non_essential_ecus, set(), "Declaring non-essential ECUs non-essential is not required: " + + f"{', '.join([f'Ecu.{ECU_NAME[ecu]}' for ecu in unnecessary_non_essential_ecus])}") + def test_missing_versions_and_configs(self): brand_versions = set(VERSIONS.keys()) brand_configs = set(FW_QUERY_CONFIGS.keys()) From 3d44edb3480f24067e93941a14450de53bcc041f Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 16 Apr 2024 21:52:14 -0700 Subject: [PATCH 457/599] Honda HR-V 3G: allow fingerprinting without the comma power (#32231) * from 147613502316e718/00000001--ce406cf8a7 * honda hrv 3g obd-less * rm * good test * add back --- selfdrive/car/honda/values.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 3db8b6435f..ecb00d0a3c 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -300,9 +300,9 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_2022, CAR.HONDA_E], + Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_2022, CAR.HONDA_E, CAR.HONDA_HRV_3G], Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, - CAR.HONDA_E, CAR.HONDA_INSIGHT], + CAR.HONDA_E, CAR.HONDA_HRV_3G, CAR.HONDA_INSIGHT], }, extra_ecus=[ (Ecu.combinationMeter, 0x18da60f1, None), From db5eb58d914aed9ad35bbef21f76bea0a636c37c Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Wed, 17 Apr 2024 02:08:28 -0300 Subject: [PATCH 458/599] Honda: Brazilian HR-V 2023 fingerprint (#31503) * add braziliam honda HR-V fingerprint * cleanup white spaces * cleanup more white spaces * remove radar * add fwdRadar (camera) * format --------- Co-authored-by: Shane Smiskol --- selfdrive/car/honda/fingerprints.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index e7d325ca18..09caf71931 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -1013,26 +1013,33 @@ FW_VERSIONS = { }, CAR.HONDA_HRV_3G: { (Ecu.eps, 0x18da30f1, None): [ + b'39990-3M0-G110\x00\x00', b'39990-3W0-A030\x00\x00', ], (Ecu.gateway, 0x18daeff1, None): [ + b'38897-3M0-M110\x00\x00', b'38897-3W1-A010\x00\x00', ], (Ecu.srs, 0x18da53f1, None): [ + b'77959-3M0-K840\x00\x00', b'77959-3V0-A820\x00\x00', ], (Ecu.fwdRadar, 0x18dab0f1, None): [ + b'8S102-3M6-P030\x00\x00', b'8S102-3W0-A060\x00\x00', b'8S102-3W0-AB10\x00\x00', ], (Ecu.vsa, 0x18da28f1, None): [ + b'57114-3M6-M010\x00\x00', b'57114-3W0-A040\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ b'28101-6EH-A010\x00\x00', + b'28101-6JC-M310\x00\x00', ], (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-6CT-A710\x00\x00', + b'37805-6HZ-M630\x00\x00', ], (Ecu.electricBrakeBooster, 0x18da2bf1, None): [ b'46114-3W0-A020\x00\x00', From 2bee28938ac2f50ec0d0e9f74f9f276a98c62f0d Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 17 Apr 2024 13:23:54 +0800 Subject: [PATCH 459/599] ui/map_eta: avoid divide by zero (#31962) --- selfdrive/ui/qt/maps/map_eta.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/selfdrive/ui/qt/maps/map_eta.cc b/selfdrive/ui/qt/maps/map_eta.cc index 161844c618..0eb77e36ce 100644 --- a/selfdrive/ui/qt/maps/map_eta.cc +++ b/selfdrive/ui/qt/maps/map_eta.cc @@ -38,10 +38,13 @@ void MapETA::updateETA(float s, float s_typical, float d) { auto remaining = s < 3600 ? std::pair{QString::number(int(s / 60)), tr("min")} : std::pair{QString("%1:%2").arg((int)s / 3600).arg(((int)s % 3600) / 60, 2, 10, QLatin1Char('0')), tr("hr")}; QString color = "#25DA6E"; - if (s / s_typical > 1.5) - color = "#DA3025"; - else if (s / s_typical > 1.2) - color = "#DAA725"; + if (std::abs(s_typical) > 1e-5) { + if (s / s_typical > 1.5) { + color = "#DA3025"; + } else if (s / s_typical > 1.2) { + color = "#DAA725"; + } + } // Distance auto distance = map_format_distance(d, uiState()->scene.is_metric); From 6de5e0d71a60d307513b3eb3cfdadcb8f8ae145c Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 17 Apr 2024 13:25:17 +0800 Subject: [PATCH 460/599] ui/network: simplify getActiveConnections (#32174) --- selfdrive/ui/qt/network/wifi_manager.cc | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/selfdrive/ui/qt/network/wifi_manager.cc b/selfdrive/ui/qt/network/wifi_manager.cc index cb7cccd194..0c50d02f4f 100644 --- a/selfdrive/ui/qt/network/wifi_manager.cc +++ b/selfdrive/ui/qt/network/wifi_manager.cc @@ -210,16 +210,8 @@ void WifiManager::deactivateConnection(const QDBusObjectPath &path) { } QVector WifiManager::getActiveConnections() { - QVector conns; - QDBusObjectPath path; - const QDBusArgument &arr = call(NM_DBUS_PATH, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE, "ActiveConnections"); - arr.beginArray(); - while (!arr.atEnd()) { - arr >> path; - conns.push_back(path); - } - arr.endArray(); - return conns; + auto result = call(NM_DBUS_PATH, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE, "ActiveConnections"); + return qdbus_cast>(result); } bool WifiManager::isKnownConnection(const QString &ssid) { From 3d0f9fb18f52ce092a2eb00cb92f7c285bc56e89 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 16 Apr 2024 23:37:46 -0700 Subject: [PATCH 461/599] Platforms: less redundant string repr (#32233) smol --- selfdrive/car/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 3898d46534..bbdae4f3d4 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -266,6 +266,9 @@ class Platforms(str, ReprEnum, metaclass=PlatformsType): member._value_ = platform_config.platform_str return member + def __repr__(self): + return f"<{self.__class__.__name__}.{self.name}>" + @classmethod def create_dbc_map(cls) -> dict[str, DbcDict]: return {p: p.config.dbc_dict for p in cls} From 5d0dc2ded27886b2edfd57391a54fc5f2ce0ff20 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 17 Apr 2024 00:09:20 -0700 Subject: [PATCH 462/599] Toyota: remove unecessary ECUs for fingerprinting (#32235) * remove some ecus * missing doc * fix * fix * clean up * update refs * rm --- selfdrive/car/tests/test_fw_fingerprint.py | 6 ++--- selfdrive/car/toyota/values.py | 28 +++++++++------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index 18868c3e41..ed5edbef31 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -245,7 +245,7 @@ class TestFwFingerprintTiming(unittest.TestCase): def test_startup_timing(self): # Tests worse-case VIN query time and typical present ECU query time vin_ref_times = {'worst': 1.4, 'best': 0.7} # best assumes we go through all queries to get a match - present_ecu_ref_time = 0.75 + present_ecu_ref_time = 0.45 def fake_get_ecu_addrs(*_, timeout): self.total_time += timeout @@ -271,7 +271,7 @@ class TestFwFingerprintTiming(unittest.TestCase): print(f'get_vin {name} case, query time={self.total_time / self.N} seconds') def test_fw_query_timing(self): - total_ref_time = {1: 8.1, 2: 8.7} + total_ref_time = {1: 7.2, 2: 7.8} brand_ref_times = { 1: { 'gm': 1.0, @@ -284,7 +284,7 @@ class TestFwFingerprintTiming(unittest.TestCase): 'nissan': 0.8, 'subaru': 0.65, 'tesla': 0.3, - 'toyota': 1.6, + 'toyota': 0.7, 'volkswagen': 0.65, }, 2: { diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 4f6fdef1ba..dbab2e9255 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -494,22 +494,20 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [StdQueries.SHORT_TESTER_PRESENT_REQUEST, TOYOTA_VERSION_REQUEST_KWP], [StdQueries.SHORT_TESTER_PRESENT_RESPONSE, TOYOTA_VERSION_RESPONSE_KWP], - whitelist_ecus=[Ecu.fwdCamera, Ecu.fwdRadar, Ecu.dsu, Ecu.abs, Ecu.eps, Ecu.epb, Ecu.telematics, - Ecu.srs, Ecu.combinationMeter, Ecu.transmission, Ecu.gateway, Ecu.hvac], + whitelist_ecus=[Ecu.fwdCamera, Ecu.fwdRadar, Ecu.dsu, Ecu.abs, Ecu.eps, Ecu.srs, Ecu.transmission, Ecu.hvac], bus=0, ), Request( [StdQueries.SHORT_TESTER_PRESENT_REQUEST, StdQueries.OBD_VERSION_REQUEST], [StdQueries.SHORT_TESTER_PRESENT_RESPONSE, StdQueries.OBD_VERSION_RESPONSE], - whitelist_ecus=[Ecu.engine, Ecu.epb, Ecu.telematics, Ecu.hybrid, Ecu.srs, Ecu.combinationMeter, Ecu.transmission, - Ecu.gateway, Ecu.hvac], + whitelist_ecus=[Ecu.engine, Ecu.hybrid, Ecu.srs, Ecu.transmission, Ecu.hvac], bus=0, ), Request( [StdQueries.TESTER_PRESENT_REQUEST, StdQueries.DEFAULT_DIAGNOSTIC_REQUEST, StdQueries.EXTENDED_DIAGNOSTIC_REQUEST, StdQueries.UDS_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.DEFAULT_DIAGNOSTIC_RESPONSE, StdQueries.EXTENDED_DIAGNOSTIC_RESPONSE, StdQueries.UDS_VERSION_RESPONSE], - whitelist_ecus=[Ecu.engine, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.abs, Ecu.eps, Ecu.epb, Ecu.telematics, - Ecu.hybrid, Ecu.srs, Ecu.combinationMeter, Ecu.transmission, Ecu.gateway, Ecu.hvac], + whitelist_ecus=[Ecu.engine, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.abs, Ecu.eps, + Ecu.hybrid, Ecu.srs, Ecu.transmission, Ecu.hvac], bus=0, ), ], @@ -523,33 +521,29 @@ FW_QUERY_CONFIG = FwQueryConfig( extra_ecus=[ # All known ECUs on a late-model Toyota vehicle not queried here: # Responds to UDS: + # - Combination Meter (0x7c0) # - HV Battery (0x713, 0x747) # - Motor Generator (0x716, 0x724) # - 2nd ABS "Brake/EPB" (0x730) + # - Electronic Parking Brake ((0x750, 0x2c)) + # - Telematics ((0x750, 0xc7)) # Responds to KWP (0x1a8801): # - Steering Angle Sensor (0x7b3) # - EPS/EMPS (0x7a0, 0x7a1) + # - 2nd SRS Airbag (0x784) + # - Central Gateway ((0x750, 0x5f)) + # - Telematics ((0x750, 0xc7)) # Responds to KWP (0x1a8881): # - Body Control Module ((0x750, 0x40)) + # - Telematics ((0x750, 0xc7)) # Hybrid control computer can be on 0x7e2 (KWP) or 0x7d2 (UDS) depending on platform (Ecu.hybrid, 0x7e2, None), # Hybrid Control Assembly & Computer - # TODO: if these duplicate ECUs always exist together, remove one (Ecu.srs, 0x780, None), # SRS Airbag - (Ecu.srs, 0x784, None), # SRS Airbag 2 - # Likely only exists on cars where EPB isn't standard (e.g. Camry, Avalon (/Hybrid)) - # On some cars, EPB is controlled by the ABS module - (Ecu.epb, 0x750, 0x2c), # Electronic Parking Brake - # This isn't accessible on all cars - (Ecu.gateway, 0x750, 0x5f), - # On some cars, this only responds to b'\x1a\x88\x81', which is reflected by the b'\x1a\x88\x00' query - (Ecu.telematics, 0x750, 0xc7), # Transmission is combined with engine on some platforms, such as TSS-P RAV4 (Ecu.transmission, 0x701, None), # A few platforms have a tester present response on this address, add to log (Ecu.transmission, 0x7e1, None), - # On some cars, this only responds to b'\x1a\x88\x80' - (Ecu.combinationMeter, 0x7c0, None), (Ecu.hvac, 0x7c4, None), ], match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, From 8124ba5f63ff8275424a2b7aafe09768c5ed26a2 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 18 Apr 2024 01:05:32 +0800 Subject: [PATCH 463/599] replay/framereader: no longer cache all AVPacket instances in memory (#32236) --- tools/replay/framereader.cc | 139 +++++++++++------------------------- tools/replay/framereader.h | 15 ++-- 2 files changed, 50 insertions(+), 104 deletions(-) diff --git a/tools/replay/framereader.cc b/tools/replay/framereader.cc index 303f0c60ca..fb70a82c40 100644 --- a/tools/replay/framereader.cc +++ b/tools/replay/framereader.cc @@ -1,9 +1,8 @@ #include "tools/replay/framereader.h" -#include "tools/replay/util.h" -#include -#include +#include "common/util.h" #include "third_party/libyuv/include/libyuv.h" +#include "tools/replay/util.h" #ifdef __APPLE__ #define HW_DEVICE_TYPE AV_HWDEVICE_TYPE_VIDEOTOOLBOX @@ -13,25 +12,9 @@ #define HW_PIX_FMT AV_PIX_FMT_CUDA #endif + namespace { -struct buffer_data { - const uint8_t *data; - int64_t offset; - size_t size; -}; - -int readPacket(void *opaque, uint8_t *buf, int buf_size) { - struct buffer_data *bd = (struct buffer_data *)opaque; - assert(bd->offset <= bd->size); - buf_size = std::min((size_t)buf_size, (size_t)(bd->size - bd->offset)); - if (!buf_size) return AVERROR_EOF; - - memcpy(buf, bd->data + bd->offset, buf_size); - bd->offset += buf_size; - return buf_size; -} - enum AVPixelFormat get_hw_format(AVCodecContext *ctx, const enum AVPixelFormat *pix_fmts) { enum AVPixelFormat *hw_pix_fmt = reinterpret_cast(ctx->opaque); for (const enum AVPixelFormat *p = pix_fmts; *p != -1; p++) { @@ -50,101 +33,61 @@ FrameReader::FrameReader() { } FrameReader::~FrameReader() { - for (AVPacket *pkt : packets) { - av_packet_free(&pkt); - } - if (decoder_ctx) avcodec_free_context(&decoder_ctx); if (input_ctx) avformat_close_input(&input_ctx); if (hw_device_ctx) av_buffer_unref(&hw_device_ctx); - - if (avio_ctx_) { - av_freep(&avio_ctx_->buffer); - avio_context_free(&avio_ctx_); - } } bool FrameReader::load(const std::string &url, bool no_hw_decoder, std::atomic *abort, bool local_cache, int chunk_size, int retries) { - FileReader f(local_cache, chunk_size, retries); - std::string data = f.read(url, abort); - if (data.empty()) { - rWarning("URL %s returned no data", url.c_str()); - return false; + auto local_file_path = url.find("https://") == 0 ? cacheFilePath(url) : url; + if (!util::file_exists(local_file_path)) { + FileReader f(local_cache, chunk_size, retries); + if (f.read(url, abort).empty()) { + return false; + } } - - return load((std::byte *)data.data(), data.size(), no_hw_decoder, abort); + return loadFromFile(local_file_path, no_hw_decoder, abort); } -bool FrameReader::load(const std::byte *data, size_t size, bool no_hw_decoder, std::atomic *abort) { - input_ctx = avformat_alloc_context(); - if (!input_ctx) { - rError("Error calling avformat_alloc_context"); +bool FrameReader::loadFromFile(const std::string &file, bool no_hw_decoder, std::atomic *abort) { + if (avformat_open_input(&input_ctx, file.c_str(), nullptr, nullptr) != 0 || + avformat_find_stream_info(input_ctx, nullptr) < 0) { + rError("Failed to open input file or find video stream"); return false; } - - struct buffer_data bd = { - .data = (const uint8_t*)data, - .offset = 0, - .size = size, - }; - const int avio_ctx_buffer_size = 64 * 1024; - unsigned char *avio_ctx_buffer = (unsigned char *)av_malloc(avio_ctx_buffer_size); - avio_ctx_ = avio_alloc_context(avio_ctx_buffer, avio_ctx_buffer_size, 0, &bd, readPacket, nullptr, nullptr); - input_ctx->pb = avio_ctx_; - input_ctx->probesize = 10 * 1024 * 1024; // 10MB - int ret = avformat_open_input(&input_ctx, nullptr, nullptr, nullptr); - if (ret != 0) { - char err_str[1024] = {0}; - av_strerror(ret, err_str, std::size(err_str)); - rError("Error loading video - %s", err_str); - return false; - } - - ret = avformat_find_stream_info(input_ctx, nullptr); - if (ret < 0) { - rError("cannot find a video stream in the input file"); - return false; - } AVStream *video = input_ctx->streams[0]; const AVCodec *decoder = avcodec_find_decoder(video->codecpar->codec_id); if (!decoder) return false; decoder_ctx = avcodec_alloc_context3(decoder); - ret = avcodec_parameters_to_context(decoder_ctx, video->codecpar); - if (ret != 0) return false; + if (!decoder_ctx || avcodec_parameters_to_context(decoder_ctx, video->codecpar) != 0) { + rError("Failed to allocate or initialize codec context"); + return false; + } width = (decoder_ctx->width + 3) & ~3; height = decoder_ctx->height; - if (has_hw_decoder && !no_hw_decoder) { - if (!initHardwareDecoder(HW_DEVICE_TYPE)) { - rWarning("No device with hardware decoder found. fallback to CPU decoding."); - } + if (has_hw_decoder && !no_hw_decoder && !initHardwareDecoder(HW_DEVICE_TYPE)) { + rWarning("No device with hardware decoder found. fallback to CPU decoding."); } - ret = avcodec_open2(decoder_ctx, decoder, nullptr); - if (ret < 0) { - rError("avcodec_open2 failed %d", ret); + if (avcodec_open2(decoder_ctx, decoder, nullptr) < 0) { + rError("Failed to open codec"); return false; } - packets.reserve(60 * 20); // 20fps, one minute - while (!(abort && *abort)) { - AVPacket *pkt = av_packet_alloc(); - ret = av_read_frame(input_ctx, pkt); - if (ret < 0) { - av_packet_free(&pkt); - valid_ = (ret == AVERROR_EOF); - break; - } - packets.push_back(pkt); - // some stream seems to contain no keyframes - key_frames_count_ += pkt->flags & AV_PKT_FLAG_KEY; + AVPacket pkt; + packets_info.reserve(60 * 20); // 20fps, one minute + while (!(abort && *abort) && av_read_frame(input_ctx, &pkt) == 0) { + packets_info.emplace_back(PacketInfo{.flags = pkt.flags, .pos = pkt.pos}); + av_packet_unref(&pkt); } - valid_ = valid_ && !packets.empty(); - return valid_; + + avio_seek(input_ctx->pb, 0, SEEK_SET); + return !packets_info.empty(); } bool FrameReader::initHardwareDecoder(AVHWDeviceType hw_device_type) { @@ -176,8 +119,7 @@ bool FrameReader::initHardwareDecoder(AVHWDeviceType hw_device_type) { } bool FrameReader::get(int idx, VisionBuf *buf) { - assert(buf != nullptr); - if (!valid_ || idx < 0 || idx >= packets.size()) { + if (!buf || idx < 0 || idx >= packets_info.size()) { return false; } return decode(idx, buf); @@ -185,24 +127,30 @@ bool FrameReader::get(int idx, VisionBuf *buf) { bool FrameReader::decode(int idx, VisionBuf *buf) { int from_idx = idx; - if (idx != prev_idx + 1 && key_frames_count_ > 1) { + if (idx != prev_idx + 1) { // seeking to the nearest key frame for (int i = idx; i >= 0; --i) { - if (packets[i]->flags & AV_PKT_FLAG_KEY) { + if (packets_info[i].flags & AV_PKT_FLAG_KEY) { from_idx = i; break; } } + avio_seek(input_ctx->pb, packets_info[from_idx].pos, SEEK_SET); } prev_idx = idx; + bool result = false; + AVPacket pkt; for (int i = from_idx; i <= idx; ++i) { - AVFrame *f = decodeFrame(packets[i]); - if (f && i == idx) { - return copyBuffers(f, buf); + if (av_read_frame(input_ctx, &pkt) == 0) { + AVFrame *f = decodeFrame(&pkt); + if (f && i == idx) { + result = copyBuffers(f, buf); + } + av_packet_unref(&pkt); } } - return false; + return result; } AVFrame *FrameReader::decodeFrame(AVPacket *pkt) { @@ -232,7 +180,6 @@ AVFrame *FrameReader::decodeFrame(AVPacket *pkt) { } bool FrameReader::copyBuffers(AVFrame *f, VisionBuf *buf) { - assert(f != nullptr && buf != nullptr); if (hw_pix_fmt == HW_PIX_FMT) { for (int i = 0; i < height/2; i++) { memcpy(buf->y + (i*2 + 0)*buf->stride, f->data[0] + (i*2 + 0)*f->linesize[0], width); diff --git a/tools/replay/framereader.h b/tools/replay/framereader.h index bb72ac8f8d..a25b508cc7 100644 --- a/tools/replay/framereader.h +++ b/tools/replay/framereader.h @@ -22,11 +22,9 @@ public: ~FrameReader(); bool load(const std::string &url, bool no_hw_decoder = false, std::atomic *abort = nullptr, bool local_cache = false, int chunk_size = -1, int retries = 0); - bool load(const std::byte *data, size_t size, bool no_hw_decoder = false, std::atomic *abort = nullptr); + bool loadFromFile(const std::string &file, bool no_hw_decoder = false, std::atomic *abort = nullptr); bool get(int idx, VisionBuf *buf); - int getYUVSize() const { return width * height * 3 / 2; } - size_t getFrameCount() const { return packets.size(); } - bool valid() const { return valid_; } + size_t getFrameCount() const { return packets_info.size(); } int width = 0, height = 0; @@ -36,16 +34,17 @@ private: AVFrame * decodeFrame(AVPacket *pkt); bool copyBuffers(AVFrame *f, VisionBuf *buf); - std::vector packets; std::unique_ptrav_frame_, hw_frame; AVFormatContext *input_ctx = nullptr; AVCodecContext *decoder_ctx = nullptr; - int key_frames_count_ = 0; - bool valid_ = false; - AVIOContext *avio_ctx_ = nullptr; AVPixelFormat hw_pix_fmt = AV_PIX_FMT_NONE; AVBufferRef *hw_device_ctx = nullptr; int prev_idx = -1; + struct PacketInfo { + int flags; + int64_t pos; + }; + std::vector packets_info; inline static std::atomic has_hw_decoder = true; }; From 046066032a548ea641101f3a2f79a0c60f36f6f1 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 17 Apr 2024 10:13:56 -0700 Subject: [PATCH 464/599] jenkins: nightly build in correct timezone (#32237) correct timezone --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 043a2fbce3..83bd9b5d8c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -226,7 +226,7 @@ node { if (env.BRANCH_NAME == nightlyBranch) { props.add(pipelineTriggers([ - cron('0 2 * * *') // at 2am every night + cron('0 9 * * *') // at 2am PST (9am UTC) every night ])) } From 1d05704d27dbe4f73c0eba7e8dad2ae84d4e205e Mon Sep 17 00:00:00 2001 From: ZwX1616 Date: Wed, 17 Apr 2024 12:56:37 -0700 Subject: [PATCH 465/599] Toggle to always enable DM (#32205) * permanent * param * correct behavior * toggle * need trans * ref_commit * translate for chs/t * disable on P and R * read --- common/params.cc | 1 + selfdrive/controls/lib/events.py | 12 ++++++------ selfdrive/monitoring/dmonitoringd.py | 8 ++++++-- selfdrive/monitoring/driver_monitor.py | 15 +++++++++++---- selfdrive/monitoring/test_monitoring.py | 2 +- selfdrive/test/process_replay/ref_commit | 2 +- selfdrive/ui/qt/offroad/settings.cc | 6 ++++++ selfdrive/ui/translations/main_ar.ts | 8 ++++++++ selfdrive/ui/translations/main_de.ts | 8 ++++++++ selfdrive/ui/translations/main_fr.ts | 8 ++++++++ selfdrive/ui/translations/main_ja.ts | 8 ++++++++ selfdrive/ui/translations/main_ko.ts | 8 ++++++++ selfdrive/ui/translations/main_pt-BR.ts | 8 ++++++++ selfdrive/ui/translations/main_th.ts | 8 ++++++++ selfdrive/ui/translations/main_tr.ts | 8 ++++++++ selfdrive/ui/translations/main_zh-CHS.ts | 8 ++++++++ selfdrive/ui/translations/main_zh-CHT.ts | 8 ++++++++ 17 files changed, 112 insertions(+), 14 deletions(-) diff --git a/common/params.cc b/common/params.cc index 8635f30d26..a00401d20a 100644 --- a/common/params.cc +++ b/common/params.cc @@ -89,6 +89,7 @@ private: std::unordered_map keys = { {"AccessToken", CLEAR_ON_MANAGER_START | DONT_LOG}, + {"AlwaysOnDM", PERSISTENT}, {"ApiCache_Device", PERSISTENT}, {"ApiCache_NavDestinations", PERSISTENT}, {"AssistNowToken", PERSISTENT}, diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index c6e9504f35..2de4d61d88 100755 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -433,7 +433,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.preDriverDistracted: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "Pay Attention", "", AlertStatus.normal, AlertSize.small, @@ -441,7 +441,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.promptDriverDistracted: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "Pay Attention", "Driver Distracted", AlertStatus.userPrompt, AlertSize.mid, @@ -449,7 +449,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.driverDistracted: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "DISENGAGE IMMEDIATELY", "Driver Distracted", AlertStatus.critical, AlertSize.full, @@ -457,7 +457,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.preDriverUnresponsive: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "Touch Steering Wheel: No Face Detected", "", AlertStatus.normal, AlertSize.small, @@ -465,7 +465,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.promptDriverUnresponsive: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "Touch Steering Wheel", "Driver Unresponsive", AlertStatus.userPrompt, AlertSize.mid, @@ -473,7 +473,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.driverUnresponsive: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "DISENGAGE IMMEDIATELY", "Driver Unresponsive", AlertStatus.critical, AlertSize.full, diff --git a/selfdrive/monitoring/dmonitoringd.py b/selfdrive/monitoring/dmonitoringd.py index 579e79093f..84a147bd47 100755 --- a/selfdrive/monitoring/dmonitoringd.py +++ b/selfdrive/monitoring/dmonitoringd.py @@ -17,7 +17,7 @@ def dmonitoringd_thread(): pm = messaging.PubMaster(['driverMonitoringState']) sm = messaging.SubMaster(['driverStateV2', 'liveCalibration', 'carState', 'controlsState', 'modelV2'], poll='driverStateV2') - driver_status = DriverStatus(rhd_saved=params.get_bool("IsRhdDetected")) + driver_status = DriverStatus(rhd_saved=params.get_bool("IsRhdDetected"), always_on=params.get_bool("AlwaysOnDM")) v_cruise_last = 0 driver_engaged = False @@ -52,7 +52,8 @@ def dmonitoringd_thread(): events.add(car.CarEvent.EventName.tooDistracted) # Update events from driver state - driver_status.update_events(events, driver_engaged, sm['controlsState'].enabled, sm['carState'].standstill) + driver_status.update_events(events, driver_engaged, sm['controlsState'].enabled, + sm['carState'].standstill, sm['carState'].gearShifter in [car.CarState.GearShifter.reverse, car.CarState.GearShifter.park]) # build driverMonitoringState packet dat = messaging.new_message('driverMonitoringState', valid=sm.all_checks()) @@ -76,6 +77,9 @@ def dmonitoringd_thread(): } pm.send('driverMonitoringState', dat) + if sm['driverStateV2'].frameId % 40 == 1: + driver_status.always_on = params.get_bool("AlwaysOnDM") + # save rhd virtual toggle every 5 mins if (sm['driverStateV2'].frameId % 6000 == 0 and driver_status.wheelpos_learner.filtered_stat.n > driver_status.settings._WHEELPOS_FILTER_MIN_COUNT and diff --git a/selfdrive/monitoring/driver_monitor.py b/selfdrive/monitoring/driver_monitor.py index 7c1c297fff..749931af77 100644 --- a/selfdrive/monitoring/driver_monitor.py +++ b/selfdrive/monitoring/driver_monitor.py @@ -121,7 +121,7 @@ class DriverBlink(): self.right_blink = 0. class DriverStatus(): - def __init__(self, rhd_saved=False, settings=None): + def __init__(self, rhd_saved=False, settings=None, always_on=False): if settings is None: settings = DRIVER_MONITOR_SETTINGS() # init policy settings @@ -139,6 +139,7 @@ class DriverStatus(): self.ee1_calibrated = False self.ee2_calibrated = False + self.always_on = always_on self.awareness = 1. self.awareness_active = 1. self.awareness_passive = 1. @@ -301,8 +302,12 @@ class DriverStatus(): elif self.face_detected and self.pose.low_std: self.hi_stds = 0 - def update_events(self, events, driver_engaged, ctrl_active, standstill): - if (driver_engaged and self.awareness > 0 and not self.active_monitoring_mode) or not ctrl_active: # reset only when on disengagement if red reached + def update_events(self, events, driver_engaged, ctrl_active, standstill, wrong_gear): + always_on_valid = self.always_on and not wrong_gear + if (driver_engaged and self.awareness > 0 and not self.active_monitoring_mode) or \ + (not always_on_valid and not ctrl_active) or \ + (always_on_valid and not ctrl_active and self.awareness <= 0): + # always reset on disengage with normal mode; disengage resets only on red if always on self._reset_awareness() return @@ -323,11 +328,13 @@ class DriverStatus(): return standstill_exemption = standstill and self.awareness - self.step_change <= self.threshold_prompt + always_on_red_exemption = always_on_valid and not ctrl_active and self.awareness - self.step_change <= 0 certainly_distracted = self.driver_distraction_filter.x > 0.63 and self.driver_distracted and self.face_detected maybe_distracted = self.hi_stds > self.settings._HI_STD_FALLBACK_TIME or not self.face_detected if certainly_distracted or maybe_distracted: # should always be counting if distracted unless at standstill and reaching orange - if not standstill_exemption: + # also will not be reaching 0 if DM is active when not engaged + if not standstill_exemption and not always_on_red_exemption: self.awareness = max(self.awareness - self.step_change, -0.1) alert = None diff --git a/selfdrive/monitoring/test_monitoring.py b/selfdrive/monitoring/test_monitoring.py index c02d44849f..39fef75479 100755 --- a/selfdrive/monitoring/test_monitoring.py +++ b/selfdrive/monitoring/test_monitoring.py @@ -63,7 +63,7 @@ class TestMonitoring(unittest.TestCase): # cal_rpy and car_speed don't matter here # evaluate events at 10Hz for tests - DS.update_events(e, interaction[idx], engaged[idx], standstill[idx]) + DS.update_events(e, interaction[idx], engaged[idx], standstill[idx], 0) events.append(e) assert len(events) == len(msgs), f"got {len(events)} for {len(msgs)} driverState input msgs" return events, DS diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 1156aefeb2..a253da0258 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -28001018eae89eb4906717bebf892345ad590b5a +f759be555103697918d5d6c22292ef10536e68bd \ No newline at end of file diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 5aa33974ac..96fe6585cc 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -51,6 +51,12 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { tr("Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h)."), "../assets/offroad/icon_warning.png", }, + { + "AlwaysOnDM", + tr("Always-On Driver Monitoring"), + tr("Enable driver monitoring even when openpilot is not engaged."), + "../assets/offroad/icon_monitoring.png", + }, { "RecordFront", tr("Record and Upload Driver Camera"), diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 85b1fd040a..f00905b75b 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -1182,6 +1182,14 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Updater diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 4154c47abb..71d95244cb 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -1168,6 +1168,14 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Updater diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 0736e161a8..5da51d8b47 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -1166,6 +1166,14 @@ Cela peut prendre jusqu'à une minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. La visualisation de la conduite passera sur la caméra grand angle dirigée vers la route à faible vitesse afin de mieux montrer certains virages. Le logo du mode expérimental s'affichera également dans le coin supérieur droit. + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Updater diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 0bfca5e826..7a27f46ea3 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -1160,6 +1160,14 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Updater diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 639371d135..518bb4b58f 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -1162,6 +1162,14 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Updater diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 2706166b47..71f6a5caa6 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1166,6 +1166,14 @@ Isso pode levar até um minuto. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. A visualização de condução fará a transição para a câmera grande angular voltada para a estrada em baixas velocidades para mostrar melhor algumas curvas. O logotipo do modo Experimental também será mostrado no canto superior direito. + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Updater diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index b196e0459a..c8bf0d3ade 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -1162,6 +1162,14 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. การแสดงภาพการขับขี่จะเปลี่ยนไปใช้กล้องมุมกว้างที่หันหน้าไปทางถนนเมื่ออยู่ในความเร็วต่ำ เพื่อแสดงภาพการเลี้ยวที่ดีขึ้น โลโก้โหมดการทดลองจะแสดงที่มุมบนขวาด้วย + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Updater diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index 4b51ce9b42..000fc1a2ec 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -1160,6 +1160,14 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Updater diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 3e2a041758..3d9cf1c001 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -1162,6 +1162,14 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Always-On Driver Monitoring + 驾驶员监控常开 + + + Enable driver monitoring even when openpilot is not engaged. + 即使在openpilot未激活时也启用驾驶员监控。 + Updater diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index c12b2c5fdd..d9030b82ff 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -1162,6 +1162,14 @@ This may take up to a minute. The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + Always-On Driver Monitoring + 駕駛監控常開 + + + Enable driver monitoring even when openpilot is not engaged. + 即使在openpilot未激活時也啟用駕駛監控。 + Updater From 3c69fcddc80327919b097c26a25017f8e11f28b0 Mon Sep 17 00:00:00 2001 From: ksfi Date: Wed, 17 Apr 2024 22:00:47 +0200 Subject: [PATCH 466/599] [$100 bounty] mapsd: switch to static render mode (#32118) * staticrender * modify static_render_sig_rec name + use back setStyleJson * better name --------- Co-authored-by: ksfi Co-authored-by: Adeeb Shihadeh --- selfdrive/navd/map_renderer.cc | 42 +++++++++++++---------- selfdrive/navd/map_renderer.h | 2 ++ selfdrive/navd/tests/test_map_renderer.py | 2 +- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/selfdrive/navd/map_renderer.cc b/selfdrive/navd/map_renderer.cc index d52ee162bd..1e57ad3e7c 100644 --- a/selfdrive/navd/map_renderer.cc +++ b/selfdrive/navd/map_renderer.cc @@ -41,6 +41,8 @@ MapRenderer::MapRenderer(const QMapLibre::Settings &settings, bool online) : m_s QSurfaceFormat fmt; fmt.setRenderableType(QSurfaceFormat::OpenGLES); + m_settings.setMapMode(QMapLibre::Settings::MapMode::Static); + ctx = std::make_unique(); ctx->setFormat(fmt); ctx->create(); @@ -87,6 +89,18 @@ MapRenderer::MapRenderer(const QMapLibre::Settings &settings, bool online) : m_s LOGE("Map loading failed with %d: '%s'\n", err_code, reason.toStdString().c_str()); }); + QObject::connect(m_map.data(), &QMapLibre::Map::staticRenderFinished, [=](const QString &error) { + rendering = false; + + if (!error.isEmpty()) { + LOGE("Static map rendering failed with error: '%s'\n", error.toStdString().c_str()); + } else if (vipc_server != nullptr) { + double end_render_t = millis_since_boot(); + publish((end_render_t - start_render_t) / 1000.0, true); + last_llk_rendered = (*sm)["liveLocationKalman"].getLogMonoTime(); + } + }); + if (online) { vipc_server.reset(new VisionIpcServer("navd")); vipc_server->create_buffers(VisionStreamType::VISION_STREAM_MAP, NUM_VIPC_BUFFERS, false, WIDTH, HEIGHT); @@ -114,22 +128,16 @@ void MapRenderer::msgUpdate() { float bearing = RAD2DEG(orientation.getValue()[2]); updatePosition(get_point_along_line(pos.getValue()[0], pos.getValue()[1], bearing, MAP_OFFSET), bearing); - // TODO: use the static rendering mode instead - // retry render a few times - for (int i = 0; i < 5 && !rendered(); i++) { - QApplication::processEvents(QEventLoop::AllEvents, 100); + if (!rendering) { update(); - if (rendered()) { - LOGW("rendered after %d retries", i+1); - break; - } } - // fallback to sending a blank frame if (!rendered()) { publish(0, false); } } + + } if (sm->updated("navRoute")) { @@ -157,7 +165,9 @@ void MapRenderer::updatePosition(QMapLibre::Coordinate position, float bearing) m_map->setCoordinate(position); m_map->setBearing(bearing); m_map->setZoom(zoom); - update(); + if (!rendering) { + update(); + } } bool MapRenderer::loaded() { @@ -165,16 +175,10 @@ bool MapRenderer::loaded() { } void MapRenderer::update() { - double start_t = millis_since_boot(); + rendering = true; gl_functions->glClear(GL_COLOR_BUFFER_BIT); - m_map->render(); - gl_functions->glFlush(); - double end_t = millis_since_boot(); - - if ((vipc_server != nullptr) && loaded()) { - publish((end_t - start_t) / 1000.0, true); - last_llk_rendered = (*sm)["liveLocationKalman"].getLogMonoTime(); - } + start_render_t = millis_since_boot(); + m_map->startStaticRender(); } void MapRenderer::sendThumbnail(const uint64_t ts, const kj::Array &buf) { diff --git a/selfdrive/navd/map_renderer.h b/selfdrive/navd/map_renderer.h index fd5922b668..7a3d2c316b 100644 --- a/selfdrive/navd/map_renderer.h +++ b/selfdrive/navd/map_renderer.h @@ -43,8 +43,10 @@ private: void initLayers(); + double start_render_t; uint32_t frame_id = 0; uint64_t last_llk_rendered = 0; + bool rendering = false; bool rendered() { return last_llk_rendered == (*sm)["liveLocationKalman"].getLogMonoTime(); } diff --git a/selfdrive/navd/tests/test_map_renderer.py b/selfdrive/navd/tests/test_map_renderer.py index 7d5a4c297f..832e0d1eab 100755 --- a/selfdrive/navd/tests/test_map_renderer.py +++ b/selfdrive/navd/tests/test_map_renderer.py @@ -136,7 +136,7 @@ class TestMapRenderer(unittest.TestCase): invalid_and_not_previously_valid = (expect_valid and not self.sm.valid['mapRenderState'] and not prev_valid) valid_and_not_previously_invalid = (not expect_valid and self.sm.valid['mapRenderState'] and prev_valid) - if (invalid_and_not_previously_valid or valid_and_not_previously_invalid) and frames_since_test_start < 5: + if (invalid_and_not_previously_valid or valid_and_not_previously_invalid) and frames_since_test_start < 20: continue # check output From 67d6f0b769dfb596eba9f0ab4a8a78dc5090eb72 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 17 Apr 2024 15:36:44 -0700 Subject: [PATCH 467/599] Revert "Honda: brazilian HR-V 2023 fingerprint" (#32240) Revert "Honda: Brazilian HR-V 2023 fingerprint (#31503)" This reverts commit db5eb58d914aed9ad35bbef21f76bea0a636c37c. --- selfdrive/car/honda/fingerprints.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 09caf71931..e7d325ca18 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -1013,33 +1013,26 @@ FW_VERSIONS = { }, CAR.HONDA_HRV_3G: { (Ecu.eps, 0x18da30f1, None): [ - b'39990-3M0-G110\x00\x00', b'39990-3W0-A030\x00\x00', ], (Ecu.gateway, 0x18daeff1, None): [ - b'38897-3M0-M110\x00\x00', b'38897-3W1-A010\x00\x00', ], (Ecu.srs, 0x18da53f1, None): [ - b'77959-3M0-K840\x00\x00', b'77959-3V0-A820\x00\x00', ], (Ecu.fwdRadar, 0x18dab0f1, None): [ - b'8S102-3M6-P030\x00\x00', b'8S102-3W0-A060\x00\x00', b'8S102-3W0-AB10\x00\x00', ], (Ecu.vsa, 0x18da28f1, None): [ - b'57114-3M6-M010\x00\x00', b'57114-3W0-A040\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ b'28101-6EH-A010\x00\x00', - b'28101-6JC-M310\x00\x00', ], (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-6CT-A710\x00\x00', - b'37805-6HZ-M630\x00\x00', ], (Ecu.electricBrakeBooster, 0x18da2bf1, None): [ b'46114-3W0-A020\x00\x00', From cb8e336cd771f933c41d6ce4ee5bf055dde94846 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 17 Apr 2024 15:38:05 -0700 Subject: [PATCH 468/599] debug FW query offline: annotate sendcan/can (#32239) bet --- selfdrive/debug/debug_fw_fingerprinting_offline.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selfdrive/debug/debug_fw_fingerprinting_offline.py b/selfdrive/debug/debug_fw_fingerprinting_offline.py index d521ab2e18..8ae9d6d347 100755 --- a/selfdrive/debug/debug_fw_fingerprinting_offline.py +++ b/selfdrive/debug/debug_fw_fingerprinting_offline.py @@ -13,7 +13,7 @@ def main(route: str, addrs: list[int]): - print as fixed width table, easier to read """ - lr = LogReader(route, default_mode=ReadMode.RLOG) + lr = LogReader(route, default_mode=ReadMode.RLOG, sort_by_time=True) start_mono_time = None prev_mono_time = 0 @@ -32,7 +32,7 @@ def main(route: str, addrs: list[int]): if msg.logMonoTime != prev_mono_time: print() prev_mono_time = msg.logMonoTime - print(f"{msg.logMonoTime} rxaddr={can.address}, bus={can.src}, {round((msg.logMonoTime - start_mono_time) * 1e-6, 2)} ms, " + + print(f"{msg.which():>7}: rxaddr={can.address}, bus={can.src}, {round((msg.logMonoTime - start_mono_time) * 1e-6, 2)} ms, " + f"0x{can.dat.hex()}, {can.dat}, {len(can.dat)=}") From 746901e6b02fe24595834a8bc5672d9aa59359b8 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 17 Apr 2024 15:47:19 -0700 Subject: [PATCH 469/599] bump codecov (#32241) --- .github/workflows/selfdrive_tests.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/selfdrive_tests.yaml b/.github/workflows/selfdrive_tests.yaml index bfd2b82dc8..0042202edd 100644 --- a/.github/workflows/selfdrive_tests.yaml +++ b/.github/workflows/selfdrive_tests.yaml @@ -177,7 +177,7 @@ jobs: QT_QPA_PLATFORM=offscreen ./selfdrive/ui/tests/test_translations && \ ./selfdrive/ui/tests/test_translations.py" - name: "Upload coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: name: ${{ github.job }} env: @@ -226,7 +226,7 @@ jobs: run: | ${{ env.RUN }} "unset PYTHONWARNINGS && AZURE_TOKEN='$AZURE_TOKEN' python selfdrive/test/process_replay/test_processes.py -j$(nproc) --upload-only" - name: "Upload coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: name: ${{ github.job }} env: @@ -284,7 +284,7 @@ jobs: ${{ env.RUN }} "unset PYTHONWARNINGS && \ $PYTEST selfdrive/modeld" - name: "Upload coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: name: ${{ github.job }} env: @@ -321,7 +321,7 @@ jobs: NUM_JOBS: 5 JOB_ID: ${{ matrix.job }} - name: "Upload coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: name: ${{ github.job }}-${{ matrix.job }} env: From 62f053bc4d028dcdf89c6910b0acf72aafadca31 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Wed, 17 Apr 2024 16:33:13 -0700 Subject: [PATCH 470/599] consolidate casync build into fewer scripts and fix pc release build (#32225) * less scripts * better * fixes * naming * revert * cleanup * lets test it * fix that one * and rm * don't run this * fix * not here * revert testing * fix docs * default here too * t --------- Co-authored-by: Comma Device --- Jenkinsfile | 14 ++- SConstruct | 4 +- release/README.md | 19 +-- release/build_release.sh | 51 +++++++++ release/copy_build_files.sh | 15 --- release/create_casync_build.sh | 23 ---- release/create_casync_release.py | 27 ----- release/create_prebuilt.sh | 34 ------ release/create_release_manifest.py | 64 ----------- ...nos_release.py => package_casync_agnos.py} | 24 ++-- release/package_casync_build.py | 108 ++++++++++++++++++ release/upload_casync_release.py | 25 ---- 12 files changed, 188 insertions(+), 220 deletions(-) create mode 100755 release/build_release.sh delete mode 100755 release/copy_build_files.sh delete mode 100755 release/create_casync_build.sh delete mode 100755 release/create_casync_release.py delete mode 100755 release/create_prebuilt.sh delete mode 100755 release/create_release_manifest.py rename release/{create_casync_agnos_release.py => package_casync_agnos.py} (72%) create mode 100755 release/package_casync_build.py delete mode 100755 release/upload_casync_release.py diff --git a/Jenkinsfile b/Jenkinsfile index 83bd9b5d8c..1a0e2c73e9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -63,6 +63,7 @@ if [ -f /TICI ]; then rm -rf /tmp/tmp* rm -rf ~/.commacache rm -rf /dev/shm/* + rm -rf /dev/tmp/tmp* if ! systemctl is-active --quiet systemd-resolved; then echo "restarting resolved" @@ -179,12 +180,14 @@ def build_git_release(String channel_name) { def build_casync_release(String channel_name, def is_release) { - def extra_env = is_release ? "RELEASE=1" : "" + def extra_env = is_release ? "RELEASE=1 " : "" + def build_dir = "/data/openpilot" + + extra_env += "TMPDIR=/data/tmp PYTHONPATH=$SOURCE_DIR" return deviceStage("build casync", "tici-needs-can", [], [ - ["build", "${extra_env} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync/openpilot $SOURCE_DIR/release/create_casync_build.sh"], - ["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/openpilot /data/manifest.json && cat /data/manifest.json"], - ["upload and cleanup", "PYTHONWARNINGS=ignore $SOURCE_DIR/release/upload_casync_release.py /data/casync && rm -rf /data/casync"], + ["build", "${extra_env} $SOURCE_DIR/release/build_release.sh ${build_dir}"], + ["package + upload", "${extra_env} $SOURCE_DIR/release/package_casync_build.py ${build_dir}"], ]) } @@ -199,8 +202,7 @@ def build_stage() { }, 'publish agnos': { pcStage("publish agnos") { - sh "release/create_casync_agnos_release.py /tmp/casync/agnos /tmp/casync_tmp" - sh "PYTHONWARNINGS=ignore ${env.WORKSPACE}/release/upload_casync_release.py /tmp/casync" + sh "PYTHONWARNINGS=ignore release/package_casync_agnos.py" } } ) diff --git a/SConstruct b/SConstruct index 50dbda4b8d..4db1392a74 100644 --- a/SConstruct +++ b/SConstruct @@ -376,11 +376,13 @@ SConscript([ ]) if arch != "Darwin": SConscript([ - 'system/camerad/SConscript', 'system/sensord/SConscript', 'system/logcatd/SConscript', ]) +if arch == "larch64": + SConscript(['system/camerad/SConscript']) + # Build openpilot SConscript(['third_party/SConscript']) diff --git a/release/README.md b/release/README.md index eaf2d2b535..89e6cce6f3 100644 --- a/release/README.md +++ b/release/README.md @@ -4,8 +4,7 @@ ## terms - `channel` - a named version of openpilot (git branch, casync caibx) which receives updates -- `build` - a release which is already built for the comma 3/3x and contains only required files for running openpilot and identifying the release - +- `build` - a copy of openpilot ready for distribution, already built for a specific device - `build_style` - type of build, either `debug` or `release` - `debug` - build with `ALLOW_DEBUG=true`, can test experimental features like longitudinal on alpha cars - `release` - build with `ALLOW_DEBUG=false`, experimental features disabled @@ -22,21 +21,13 @@ | git branches | `debug` | installed manually, experimental features enabled, build required | -## creating casync build +## build -`create_casync_build.sh` - creates a casync openpilot build, ready to upload to `openpilot-releases` +`release/build_release.sh ` - creates an openpilot build into `build_dir`, ready for distribution -```bash -# run on a tici, within the directory you want to create the build from. -# creates a prebuilt version of openpilot into BUILD_DIR and outputs the caibx -# of a tarball containing the full prebuilt openpilot release -BUILD_DIR=/data/openpilot_build \ -CASYNC_DIR=/data/casync \ -release/create_casync_build.sh -``` - -`upload_casync_release.sh` - helper for uploading a casync build to `openpilot-releases` +## packaging a casync release +`release/package_casync_build.py ` - packages an openpilot build into a casync tar and uploads to `openpilot-releases` ## release builds diff --git a/release/build_release.sh b/release/build_release.sh new file mode 100755 index 0000000000..19c06700fa --- /dev/null +++ b/release/build_release.sh @@ -0,0 +1,51 @@ +#!/usr/bin/bash + +set -e + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" +SOURCE_DIR="$(git -C $DIR rev-parse --show-toplevel)" +BUILD_DIR=${1:-$(mktemp -d)} + +if [ -f /TICI ]; then + FILES_SRC="release/files_tici" +else + FILES_SRC="release/files_pc" +fi + +echo "Building openpilot into $BUILD_DIR" + +rm -rf $BUILD_DIR +mkdir -p $BUILD_DIR + +# Copy required files to BUILD_DIR +cd $SOURCE_DIR +cp -pR --parents $(cat release/files_common) $BUILD_DIR/ +cp -pR --parents $(cat $FILES_SRC) $BUILD_DIR/ + +# Build + cleanup +cd $BUILD_DIR +export PYTHONPATH="$BUILD_DIR" + +rm -f panda/board/obj/panda.bin.signed +rm -f panda/board/obj/panda_h7.bin.signed + +if [ -n "$RELEASE" ]; then + export CERT=/data/pandaextra/certs/release +fi + +scons -j$(nproc) + +# Cleanup +find . -name '*.a' -delete +find . -name '*.o' -delete +find . -name '*.os' -delete +find . -name '*.pyc' -delete +find . -name 'moc_*' -delete +find . -name '__pycache__' -delete +rm -rf .sconsign.dblite Jenkinsfile release/ +rm selfdrive/modeld/models/supercombo.onnx + +# Mark as prebuilt release +touch prebuilt + +echo "----- openpilot has been built to $BUILD_DIR -----" diff --git a/release/copy_build_files.sh b/release/copy_build_files.sh deleted file mode 100755 index b40bd4b763..0000000000 --- a/release/copy_build_files.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -SOURCE_DIR=$1 -TARGET_DIR=$2 - -if [ -f /TICI ]; then - FILES_SRC="release/files_tici" -else - echo "no release files set" - exit 1 -fi - -cd $SOURCE_DIR -cp -pR --parents $(cat release/files_common) $TARGET_DIR/ -cp -pR --parents $(cat $FILES_SRC) $TARGET_DIR/ diff --git a/release/create_casync_build.sh b/release/create_casync_build.sh deleted file mode 100755 index 256bad4b4c..0000000000 --- a/release/create_casync_build.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/bash - -set -ex - -DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" - -CASYNC_DIR="${CASYNC_DIR:=/tmp/casync}" -SOURCE_DIR="$(git -C $DIR rev-parse --show-toplevel)" -BUILD_DIR="${BUILD_DIR:=$(mktemp -d)}" -PYTHONPATH="$SOURCE_DIR" - -echo "Creating casync release from $SOURCE_DIR to $CASYNC_DIR" - -cd $SOURCE_DIR -mkdir -p $CASYNC_DIR -rm -rf $BUILD_DIR -mkdir -p $BUILD_DIR - -release/copy_build_files.sh $SOURCE_DIR $BUILD_DIR -release/create_prebuilt.sh $BUILD_DIR - -cd $SOURCE_DIR -release/create_casync_release.py $BUILD_DIR $CASYNC_DIR diff --git a/release/create_casync_release.py b/release/create_casync_release.py deleted file mode 100755 index 11629f3ab5..0000000000 --- a/release/create_casync_release.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python - -import argparse -import os -import pathlib - -from openpilot.system.updated.casync.common import create_casync_release, create_build_metadata_file -from openpilot.system.version import get_build_metadata - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="creates a casync release") - parser.add_argument("target_dir", type=str, help="target directory to build channel from") - parser.add_argument("output_dir", type=str, help="output directory for the channel") - args = parser.parse_args() - - target_dir = pathlib.Path(args.target_dir) - output_dir = pathlib.Path(args.output_dir) - - build_metadata = get_build_metadata() - build_metadata.openpilot.build_style = "release" if os.environ.get("RELEASE", None) is not None else "debug" - - create_build_metadata_file(target_dir, build_metadata) - - digest, caibx = create_casync_release(target_dir, output_dir, build_metadata.canonical) - - print(f"Created casync release from {target_dir} to {caibx} with digest {digest}") diff --git a/release/create_prebuilt.sh b/release/create_prebuilt.sh deleted file mode 100755 index 6d3768c536..0000000000 --- a/release/create_prebuilt.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/bash -e - -# runs on tici to create a prebuilt version of a release - -set -ex - -BUILD_DIR=$1 - -cd $BUILD_DIR - -# Build -export PYTHONPATH="$BUILD_DIR" - -rm -f panda/board/obj/panda.bin.signed -rm -f panda/board/obj/panda_h7.bin.signed - -if [ -n "$RELEASE" ]; then - export CERT=/data/pandaextra/certs/release -fi - -scons -j$(nproc) - -# Cleanup -find . -name '*.a' -delete -find . -name '*.o' -delete -find . -name '*.os' -delete -find . -name '*.pyc' -delete -find . -name 'moc_*' -delete -find . -name '__pycache__' -delete -rm -rf .sconsign.dblite Jenkinsfile release/ -rm selfdrive/modeld/models/supercombo.onnx - -# Mark as prebuilt release -touch prebuilt diff --git a/release/create_release_manifest.py b/release/create_release_manifest.py deleted file mode 100755 index 1d235f10fa..0000000000 --- a/release/create_release_manifest.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python3 -import argparse -import dataclasses -import json -import os -import pathlib - -from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE, get_partition_path -from openpilot.system.version import get_build_metadata - - -BASE_URL = "https://commadist.blob.core.windows.net" - -OPENPILOT_RELEASES = f"{BASE_URL}/openpilot-releases/openpilot" -AGNOS_RELEASES = f"{BASE_URL}/openpilot-releases/agnos" - - -def create_partition_manifest(partition): - agnos_filename = os.path.basename(partition["url"]).split(".")[0] - - return { - "type": "partition", - "casync": { - "caibx": f"{AGNOS_RELEASES}/{agnos_filename}.caibx" - }, - "path": get_partition_path(0, partition), - "ab": True, - "size": partition["size"], - "full_check": partition["full_check"], - "hash_raw": partition["hash_raw"], - } - - -def create_openpilot_manifest(build_metadata): - return { - "type": "path_tarred", - "path": "/data/openpilot", - "casync": { - "caibx": f"{OPENPILOT_RELEASES}/{build_metadata.canonical}.caibx" - } - } - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="creates a casync release") - parser.add_argument("target_dir", type=str, help="directory of the channel to create manifest from") - parser.add_argument("output_file", type=str, help="output file to put the manifest") - args = parser.parse_args() - - with open(pathlib.Path(args.target_dir) / AGNOS_MANIFEST_FILE) as f: - agnos_manifest = json.load(f) - - build_metadata = get_build_metadata(args.target_dir) - - ret = { - "build_metadata": dataclasses.asdict(build_metadata), - "manifest": [ - *[create_partition_manifest(entry) for entry in agnos_manifest], - create_openpilot_manifest(build_metadata) - ] - } - - with open(args.output_file, "w") as f: - f.write(json.dumps(ret, indent=2)) diff --git a/release/create_casync_agnos_release.py b/release/package_casync_agnos.py similarity index 72% rename from release/create_casync_agnos_release.py rename to release/package_casync_agnos.py index 1b55d0fcc8..b80cdfa98d 100755 --- a/release/create_casync_agnos_release.py +++ b/release/package_casync_agnos.py @@ -8,27 +8,27 @@ import time from openpilot.common.basedir import BASEDIR from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop, AGNOS_MANIFEST_FILE from openpilot.system.updated.casync.common import create_casync_from_file +from release.package_casync_build import upload_casync_release if __name__ == "__main__": parser = argparse.ArgumentParser(description="creates a casync release") - parser.add_argument("output_dir", type=str, help="output directory for the channel") - parser.add_argument("working_dir", type=str, help="working directory") parser.add_argument("--manifest", type=str, help="json manifest to create agnos release from", \ default=str(pathlib.Path(BASEDIR) / AGNOS_MANIFEST_FILE)) args = parser.parse_args() - output_dir = pathlib.Path(args.output_dir) - output_dir.mkdir(parents=True, exist_ok=True) - - working_dir = pathlib.Path(args.working_dir) - working_dir.mkdir(parents=True, exist_ok=True) - manifest_file = pathlib.Path(args.manifest) - with tempfile.NamedTemporaryFile(dir=str(working_dir)) as entry_file: - entry_path = pathlib.Path(entry_file.name) + with tempfile.TemporaryDirectory() as temp_dir: + working_dir = pathlib.Path(temp_dir) + casync_dir = working_dir / "casync" + casync_dir.mkdir() + + agnos_casync_dir = casync_dir / "agnos" + agnos_casync_dir.mkdir() + + entry_path = working_dir / "entry" with open(manifest_file) as f: manifest = json.load(f) @@ -53,5 +53,7 @@ if __name__ == "__main__": start = time.monotonic() agnos_filename = os.path.basename(entry["url"]).split(".")[0] - create_casync_from_file(entry_path, output_dir, agnos_filename) + create_casync_from_file(entry_path, agnos_casync_dir, agnos_filename) print(f"created casnc in {time.monotonic() - start}") + + upload_casync_release(casync_dir) diff --git a/release/package_casync_build.py b/release/package_casync_build.py new file mode 100755 index 0000000000..5f92e893be --- /dev/null +++ b/release/package_casync_build.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python3 + +# packages a casync release, uploads to azure, and creates a manifest + +import argparse +import dataclasses +import json +import os +import pathlib +import tempfile + +from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE, get_partition_path +from openpilot.system.updated.casync.common import create_build_metadata_file, create_casync_release +from openpilot.system.version import get_build_metadata +from openpilot.tools.lib.azure_container import AzureContainer + + +BASE_URL = "https://commadist.blob.core.windows.net" + +OPENPILOT_RELEASES = f"{BASE_URL}/openpilot-releases/openpilot" +AGNOS_RELEASES = f"{BASE_URL}/openpilot-releases/agnos" + + +def create_casync_caibx(target_dir: pathlib.Path, output_dir: pathlib.Path): + output_dir.mkdir() + build_metadata = get_build_metadata() + build_metadata.openpilot.build_style = "release" if os.environ.get("RELEASE", None) is not None else "debug" + + create_build_metadata_file(target_dir, build_metadata) + + digest, caibx = create_casync_release(target_dir, output_dir, build_metadata.canonical) + + print(f"Created casync release from {target_dir} to {caibx} with digest {digest}") + + +def upload_casync_release(casync_dir: pathlib.Path): + if "AZURE_TOKEN_OPENPILOT_RELEASES" in os.environ: + os.environ["AZURE_TOKEN"] = os.environ["AZURE_TOKEN_OPENPILOT_RELEASES"] + + OPENPILOT_RELEASES_CONTAINER = AzureContainer("commadist", "openpilot-releases") + + for f in casync_dir.rglob("*"): + if f.is_file(): + blob_name = f.relative_to(casync_dir) + print(f"uploading {f} to {blob_name}") + OPENPILOT_RELEASES_CONTAINER.upload_file(str(f), str(blob_name), overwrite=True) + + +def create_partition_manifest(partition): + agnos_filename = os.path.basename(partition["url"]).split(".")[0] + + return { + "type": "partition", + "casync": { + "caibx": f"{AGNOS_RELEASES}/{agnos_filename}.caibx" + }, + "path": get_partition_path(0, partition), + "ab": True, + "size": partition["size"], + "full_check": partition["full_check"], + "hash_raw": partition["hash_raw"], + } + + +def create_openpilot_manifest(build_metadata): + return { + "type": "path_tarred", + "path": "/data/openpilot", + "casync": { + "caibx": f"{OPENPILOT_RELEASES}/{build_metadata.canonical}.caibx" + } + } + + +def create_manifest(target_dir): + with open(pathlib.Path(target_dir) / AGNOS_MANIFEST_FILE) as f: + agnos_manifest = json.load(f) + + build_metadata = get_build_metadata(args.target_dir) + + return { + "build_metadata": dataclasses.asdict(build_metadata), + "manifest": [ + *[create_partition_manifest(entry) for entry in agnos_manifest], + create_openpilot_manifest(build_metadata) + ] + } + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="creates a casync release") + parser.add_argument("target_dir", type=str, help="path to a release build of openpilot to create release from") + args = parser.parse_args() + + target_dir = pathlib.Path(args.target_dir) + + with tempfile.TemporaryDirectory() as temp_dir: + casync_dir = pathlib.Path(temp_dir) / "casync" + casync_dir.mkdir(parents=True) + + manifest_file = pathlib.Path(temp_dir) / "manifest.json" + + create_casync_caibx(target_dir, casync_dir / "openpilot") + upload_casync_release(casync_dir) + manifest = create_manifest(target_dir) + + print(json.dumps(manifest, indent=2)) diff --git a/release/upload_casync_release.py b/release/upload_casync_release.py deleted file mode 100755 index 4261e298a8..0000000000 --- a/release/upload_casync_release.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import os -import pathlib -from openpilot.tools.lib.azure_container import AzureContainer - - -if __name__ == "__main__": - if "AZURE_TOKEN_OPENPILOT_RELEASES" in os.environ: - os.environ["AZURE_TOKEN"] = os.environ["AZURE_TOKEN_OPENPILOT_RELEASES"] - - OPENPILOT_RELEASES_CONTAINER = AzureContainer("commadist", "openpilot-releases") - - parser = argparse.ArgumentParser(description='upload casync folder to azure') - parser.add_argument("casync_dir", type=str, help="casync directory") - args = parser.parse_args() - - casync_dir = pathlib.Path(args.casync_dir) - - for f in casync_dir.rglob("*"): - if f.is_file(): - blob_name = f.relative_to(casync_dir) - print(f"uploading {f} to {blob_name}") - OPENPILOT_RELEASES_CONTAINER.upload_file(str(f), str(blob_name), overwrite=True) From ba0cc91318a6b9cefd2196ac80ae9cf8eacb7fcf Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 17 Apr 2024 23:28:32 -0400 Subject: [PATCH 471/599] ui: Chevron: Round distance to whole number --- selfdrive/ui/qt/onroad.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index dc091422df..eb743c16d9 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -1888,7 +1888,7 @@ void AnnotatedCameraWidget::drawLead(QPainter &painter, const cereal::RadarState if (num == 0) { // Display metrics to the 0th lead car QStringList chevron_text[2]; if (chevron_data == 1 || chevron_data == 3) { - chevron_text[0].append(QString::number(radar_d_rel,'f', 1) + " " + "m"); + chevron_text[0].append(QString::number(radar_d_rel,'f', 0) + " " + "m"); } if (chevron_data == 2 || chevron_data == 3) { chevron_text[chevron_data - 2].append(QString::number((radar_v_rel + v_ego) * (isMetric ? MS_TO_KPH : MS_TO_MPH),'f', 0) + " " + (isMetric ? "km/h" : "mph")); From 3c6e0c300deaf5ad8db5d796e33710e56706c14f Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 17 Apr 2024 23:47:51 -0400 Subject: [PATCH 472/599] ui: Dev UI: Desired Steering Angle changes --- selfdrive/ui/qt/onroad.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index eb743c16d9..215b0c3fe8 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -1190,10 +1190,12 @@ AnnotatedCameraWidget::UiElement AnnotatedCameraWidget::getSteeringAngleDesiredD color = QColor(255, 0, 0, 255); } else if (std::fabs(angleSteers) > 90) { color = QColor(255, 188, 0, 255); + } else { + color = QColor(0, 255, 0, 255); } } - return UiElement(value, "DESIR STEER", "", color); + return UiElement(value, "DESIRED STEER", "", color); } AnnotatedCameraWidget::UiElement AnnotatedCameraWidget::getMemoryUsagePercent() { From 1940ef74800a7080f59cf8d8bf0605b5c60abe55 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 17 Apr 2024 23:52:00 -0400 Subject: [PATCH 473/599] ui: Dev UI: Bearing Angle fixes --- selfdrive/ui/qt/onroad.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index 215b0c3fe8..c225a1c050 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -1277,7 +1277,7 @@ AnnotatedCameraWidget::UiElement AnnotatedCameraWidget::getBearingDeg() { dir_value = "OFF"; } - return UiElement("B.D.", QString("%1 | %2").arg(dir_value).arg(value), "", color); + return UiElement(QString("%1 | %2").arg(dir_value).arg(value), "B.D.", "", color); } AnnotatedCameraWidget::UiElement AnnotatedCameraWidget::getAltitude() { From f2ee3f055e0ecc2e93c0a0659d9ed6100c9a4ef1 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 17 Apr 2024 23:25:37 -0700 Subject: [PATCH 474/599] IsoTpParalellQuery: extend timeout for any valid ECU response (#32245) * bump * bump --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index 2eb8578196..edcd0fe4d4 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 2eb85781960ec4e69019222d8eea658f9e63d4c1 +Subproject commit edcd0fe4d41be59b7a5f046e68fee93e6898357f From 692a21e4a722d91086998b532ca6759a3f85c345 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 17 Apr 2024 23:36:58 -0700 Subject: [PATCH 475/599] lateral limits: remove Subaru exception (#32244) * remove exception * update Outback params * clean up * adjust to the upper limit * don't change control, only docs * rough --- selfdrive/car/tests/test_lateral_limits.py | 10 ---------- selfdrive/car/torque_data/override.toml | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/selfdrive/car/tests/test_lateral_limits.py b/selfdrive/car/tests/test_lateral_limits.py index 8f1cee269e..e5cfd972bd 100755 --- a/selfdrive/car/tests/test_lateral_limits.py +++ b/selfdrive/car/tests/test_lateral_limits.py @@ -9,7 +9,6 @@ from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car.car_helpers import interfaces from openpilot.selfdrive.car.fingerprints import all_known_cars from openpilot.selfdrive.car.interfaces import get_torque_params -from openpilot.selfdrive.car.subaru.values import CAR as SUBARU CAR_MODELS = all_known_cars() @@ -22,12 +21,6 @@ MAX_LAT_JERK_UP_TOLERANCE = 0.5 # m/s^3 # jerk is measured over half a second JERK_MEAS_T = 0.5 -# TODO: put these cars within limits -ABOVE_LIMITS_CARS = [ - SUBARU.SUBARU_LEGACY, - SUBARU.SUBARU_OUTBACK, -] - car_model_jerks: defaultdict[str, dict[str, float]] = defaultdict(dict) @@ -50,9 +43,6 @@ class TestLateralLimits(unittest.TestCase): if CP.notCar: raise unittest.SkipTest - if CP.carFingerprint in ABOVE_LIMITS_CARS: - raise unittest.SkipTest - CarControllerParams = importlib.import_module(f'selfdrive.car.{CP.carName}.values').CarControllerParams cls.control_params = CarControllerParams(CP) cls.torque_params = get_torque_params(cls.car_model) diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index c068bf9a14..f6f4eacc1c 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -38,7 +38,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] # Totally new cars "RAM_1500_5TH_GEN" = [2.0, 2.0, 0.05] "RAM_HD_5TH_GEN" = [1.4, 1.4, 0.05] -"SUBARU_OUTBACK" = [2.0, 2.0, 0.2] +"SUBARU_OUTBACK" = [2.0, 1.5, 0.2] "CADILLAC_ESCALADE" = [1.899999976158142, 1.842270016670227, 0.1120000034570694] "CADILLAC_ESCALADE_ESV_2019" = [1.15, 1.3, 0.2] "CHEVROLET_BOLT_EUV" = [2.0, 2.0, 0.05] From 2e5f2d208ce521c16343c2a73a2ec136eed75b48 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 17 Apr 2024 23:50:42 -0700 Subject: [PATCH 476/599] Update ref_commit --- selfdrive/test/process_replay/ref_commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index a253da0258..4e24f8eb29 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -f759be555103697918d5d6c22292ef10536e68bd \ No newline at end of file +692a21e4a722d91086998b532ca6759a3f85c345 From 09f978d2b6cbe461d29560bcfd1069af22e17c4d Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Thu, 18 Apr 2024 14:24:49 -0300 Subject: [PATCH 477/599] Multilang: update pt-BR translations (#32248) update pt-BR translations --- selfdrive/ui/translations/main_pt-BR.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 71f6a5caa6..6210e35f2a 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -1168,11 +1168,11 @@ Isso pode levar até um minuto. Always-On Driver Monitoring - + Monitoramento do Motorista Sempre Ativo Enable driver monitoring even when openpilot is not engaged. - + Habilite o monitoramento do motorista mesmo quando o openpilot não estiver acionado. From a8e2c00b9810a226ec77456a74d88dfd24c00d97 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 18 Apr 2024 11:31:38 -0700 Subject: [PATCH 478/599] [bot] Fingerprints: add missing FW versions from new users (#32247) Export fingerprints --- selfdrive/car/toyota/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 8ca0ca8851..6830f9ccec 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -1146,12 +1146,14 @@ FW_VERSIONS = { b'\x01F152642F1000\x00\x00\x00\x00', b'\x01F152642F8000\x00\x00\x00\x00', b'\x01F152642F8100\x00\x00\x00\x00', + b'\x01F152642F9000\x00\x00\x00\x00', ], (Ecu.eps, 0x7a1, None): [ b'\x028965B0R11000\x00\x00\x00\x008965B0R12000\x00\x00\x00\x00', b'8965B42371\x00\x00\x00\x00\x00\x00', ], (Ecu.engine, 0x700, None): [ + b'\x01896634A61000\x00\x00\x00\x00', b'\x01896634A88100\x00\x00\x00\x00', b'\x01896634A89100\x00\x00\x00\x00', b'\x01896634AE1001\x00\x00\x00\x00', @@ -1237,6 +1239,7 @@ FW_VERSIONS = { b'\x028966333V4000\x00\x00\x00\x00897CF3305001\x00\x00\x00\x00', b'\x028966333W1000\x00\x00\x00\x00897CF3305001\x00\x00\x00\x00', b'\x02896633T09000\x00\x00\x00\x00897CF3307001\x00\x00\x00\x00', + b'\x02896633T10000\x00\x00\x00\x00897CF3307001\x00\x00\x00\x00', ], (Ecu.abs, 0x7b0, None): [ b'\x01F152606281\x00\x00\x00\x00\x00\x00', From 23995131af49b5bed4a1481774246ccb24a714b4 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 18 Apr 2024 16:52:52 -0700 Subject: [PATCH 479/599] car docs: add Camry 2025 to TS --- docs/CARS.md | 1 + selfdrive/car/CARS_template.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/CARS.md b/docs/CARS.md index 1b356ac8ed..a41518382a 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -357,6 +357,7 @@ openpilot does not yet support these Toyota models due to a new message authenti * Toyota Tundra 2022+ * Toyota Highlander 2024+ * Toyota Corolla Cross 2022+ (only US model) +* Toyota Camry 2025+ * Lexus NX 2022+ * Toyota bZ4x 2023+ * Subaru Solterra 2023+ diff --git a/selfdrive/car/CARS_template.md b/selfdrive/car/CARS_template.md index 9f9f6c2638..2f49e79b81 100644 --- a/selfdrive/car/CARS_template.md +++ b/selfdrive/car/CARS_template.md @@ -67,6 +67,7 @@ openpilot does not yet support these Toyota models due to a new message authenti * Toyota Tundra 2022+ * Toyota Highlander 2024+ * Toyota Corolla Cross 2022+ (only US model) +* Toyota Camry 2025+ * Lexus NX 2022+ * Toyota bZ4x 2023+ * Subaru Solterra 2023+ From 5d28b929c3c0c6a7d7bf831e064aa9e67b2b85d6 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 18 Apr 2024 19:39:08 -0700 Subject: [PATCH 480/599] distance bars: bars always cycle 1, 2, 3 (#32251) 1, 2, 3 instead of 2, 3, 4 --- selfdrive/car/ford/fordcan.py | 2 +- selfdrive/car/hyundai/hyundaican.py | 2 +- selfdrive/car/hyundai/hyundaicanfd.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/ford/fordcan.py b/selfdrive/car/ford/fordcan.py index 939084c4a0..2cfd61a191 100644 --- a/selfdrive/car/ford/fordcan.py +++ b/selfdrive/car/ford/fordcan.py @@ -212,7 +212,7 @@ def create_acc_ui_msg(packer, CAN: CanBus, CP, main_on: bool, enabled: bool, fcw "AccFllwMde_B_Dsply": 1 if hud_control.leadVisible else 0, # Lead indicator "AccStopMde_B_Dsply": 1 if standstill else 0, "AccWarn_D_Dsply": 0, # ACC warning - "AccTGap_D_Dsply": hud_control.leadDistanceBars + 1, # Time gap + "AccTGap_D_Dsply": hud_control.leadDistanceBars, # Time gap }) # Forwards FCW alert from IPMA diff --git a/selfdrive/car/hyundai/hyundaican.py b/selfdrive/car/hyundai/hyundaican.py index fe43def2ae..b4b951f89e 100644 --- a/selfdrive/car/hyundai/hyundaican.py +++ b/selfdrive/car/hyundai/hyundaican.py @@ -131,7 +131,7 @@ def create_acc_commands(packer, enabled, accel, upper_jerk, idx, hud_control, se scc11_values = { "MainMode_ACC": 1, - "TauGapSet": hud_control.leadDistanceBars + 1, + "TauGapSet": hud_control.leadDistanceBars, "VSetDis": set_speed if enabled else 0, "AliveCounterACC": idx % 0x10, "ObjValid": 1, # close lead makes controls tighter diff --git a/selfdrive/car/hyundai/hyundaicanfd.py b/selfdrive/car/hyundai/hyundaicanfd.py index 17ec9dcdd2..54804f94fd 100644 --- a/selfdrive/car/hyundai/hyundaicanfd.py +++ b/selfdrive/car/hyundai/hyundaicanfd.py @@ -146,7 +146,7 @@ def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_ov "SET_ME_2": 0x4, "SET_ME_3": 0x3, "SET_ME_TMP_64": 0x64, - "DISTANCE_SETTING": hud_control.leadDistanceBars + 1, + "DISTANCE_SETTING": hud_control.leadDistanceBars, } return packer.make_can_msg("SCC_CONTROL", CAN.ECAN, values) From 331c7b103a7e4349c75be373589fc68161e69500 Mon Sep 17 00:00:00 2001 From: ZwX1616 Date: Thu, 18 Apr 2024 21:45:59 -0700 Subject: [PATCH 481/599] image processing refactor and test (#32249) * it's something * backup * 16:10 * cleanup * this is fine * close * remove some junk * no heck * disos * real 10 * for some reason this is flipped * 20hz * no return * ae * tear * need curve laster * correct real gains * fix time * cleanup * why the scam * disable for now * 0.7 * hdr * that doesnt work * what * hugeoof * clean up * cleanup * fix regs * welp cant * is this corrent * it is sq * remove * back * stg10bit * back2ten * Revert "remove" This reverts commit 18712ab7e103c12621c929cd0f772ecb9b348247. * 20hz and swb * correct height * 10bit * ui hack for now * slight * perfect * blk64 * ccm * fix page faults * template * set 4x * is this fine * try * this seems to work * Revert "this seems to work" This reverts commit d3c9023d3f14bd9394fed2d6276dba777ed0e606. * needs to be static * close * 64 is optimal * 2 * take * not 1 * offset * whats going on * i have no idea * less resistence * box defs * no * reduce blur artifacts * simplify * fix * fake short is too much for bright * can be subzero * should not use lsvc * no wasted bit * cont no slow * no less than 10bit * it is based * wrong * right * quart * shift * raise noise floor * 4.5/4.7 * same ballpark * int is fine * shane owes me m4a4 * Revert "shane owes me m4a4" This reverts commit b4283fee18efebedae628a6cfd926ff1416dcfe5. * back * Revert "4.5/4.7" This reverts commit e38f96e90cb5370bd378f6b66def9e7e3ed0ce5d. * default * oof * clean up * simpilfy * from sensorinfo * no div * better name * not the wrong one * not anymore relevant * too * not call it debayer * cl headers * arg is 2nd * gone is is_bggr * define * no is hdr * rgb_tmp * p1 * clean up * 4 * cant for * fix somewhre else * const * ap * rects * just set staruc * nnew tmp * pull it for now * 12 * common rect * Revert "not anymore relevant" This reverts commit 1d574673a16cc31b7a255609e07775c3579eef15. * Revert "too" This reverts commit c2d4dcc52a859fe799362f9fcc2ffda99b264e50. * Revert "Revert "too"" This reverts commit 0abbabe1fde51592f1619058638b4ac6a6dee4b3. * no tol is fine * rename * sensor id * unsgin * flag * some linalg * cast * should be h ref * cap --------- Co-authored-by: Comma Device --- common/util.h | 7 + release/files_tici | 2 +- selfdrive/test/process_replay/.gitignore | 1 - .../process_replay/debayer_replay_ref_commit | 1 - .../process_replay/imgproc_replay_ref_hash | 1 + selfdrive/test/process_replay/test_debayer.py | 196 ------------- selfdrive/test/process_replay/test_imgproc.py | 99 +++++++ selfdrive/test/test_onroad.py | 2 +- system/camerad/cameras/camera_common.cc | 45 ++- system/camerad/cameras/camera_common.h | 7 +- system/camerad/cameras/camera_qcom2.cc | 45 ++- system/camerad/cameras/camera_qcom2.h | 9 +- system/camerad/cameras/process_raw.cl | 192 ++++++++++++ system/camerad/sensors/ar0231.cc | 1 + system/camerad/sensors/ar0231_cl.h | 33 +++ system/camerad/sensors/os04c10.cc | 8 +- system/camerad/sensors/os04c10_cl.h | 26 ++ system/camerad/sensors/os04c10_registers.h | 2 +- system/camerad/sensors/ox03c10.cc | 1 + .../real_debayer.cl => sensors/ox03c10_cl.h} | 277 ++---------------- system/camerad/sensors/sensor.h | 1 + system/camerad/test/test_ae_gray.cc | 3 +- 22 files changed, 470 insertions(+), 489 deletions(-) delete mode 100644 selfdrive/test/process_replay/debayer_replay_ref_commit create mode 100644 selfdrive/test/process_replay/imgproc_replay_ref_hash delete mode 100755 selfdrive/test/process_replay/test_debayer.py create mode 100755 selfdrive/test/process_replay/test_imgproc.py create mode 100644 system/camerad/cameras/process_raw.cl create mode 100644 system/camerad/sensors/ar0231_cl.h create mode 100644 system/camerad/sensors/os04c10_cl.h rename system/camerad/{cameras/real_debayer.cl => sensors/ox03c10_cl.h} (83%) diff --git a/common/util.h b/common/util.h index 3bf5a690a6..0e8bcd56bf 100644 --- a/common/util.h +++ b/common/util.h @@ -179,3 +179,10 @@ void update_max_atomic(std::atomic& max, T const& value) { T prev = max; while (prev < value && !max.compare_exchange_weak(prev, value)) {} } + +typedef struct Rect { + int x; + int y; + int w; + int h; +} Rect; diff --git a/release/files_tici b/release/files_tici index 1771c45138..18860e20af 100644 --- a/release/files_tici +++ b/release/files_tici @@ -7,7 +7,7 @@ system/camerad/cameras/camera_qcom2.cc system/camerad/cameras/camera_qcom2.h system/camerad/cameras/camera_util.cc system/camerad/cameras/camera_util.h -system/camerad/cameras/real_debayer.cl +system/camerad/cameras/process_raw.cl system/qcomgpsd/* diff --git a/selfdrive/test/process_replay/.gitignore b/selfdrive/test/process_replay/.gitignore index 63c37e64e1..a35cd58d41 100644 --- a/selfdrive/test/process_replay/.gitignore +++ b/selfdrive/test/process_replay/.gitignore @@ -1,2 +1 @@ fakedata/ -debayer_diff.txt diff --git a/selfdrive/test/process_replay/debayer_replay_ref_commit b/selfdrive/test/process_replay/debayer_replay_ref_commit deleted file mode 100644 index 551fc680ba..0000000000 --- a/selfdrive/test/process_replay/debayer_replay_ref_commit +++ /dev/null @@ -1 +0,0 @@ -8f9ba7540b4549b4a57312129b8ff678d045f70f \ No newline at end of file diff --git a/selfdrive/test/process_replay/imgproc_replay_ref_hash b/selfdrive/test/process_replay/imgproc_replay_ref_hash new file mode 100644 index 0000000000..defcb3681c --- /dev/null +++ b/selfdrive/test/process_replay/imgproc_replay_ref_hash @@ -0,0 +1 @@ +707434c540e685bbe2886b3ff7c82fd61939d362 \ No newline at end of file diff --git a/selfdrive/test/process_replay/test_debayer.py b/selfdrive/test/process_replay/test_debayer.py deleted file mode 100755 index 805d73db88..0000000000 --- a/selfdrive/test/process_replay/test_debayer.py +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env python3 -import os -import sys -import bz2 -import numpy as np - -import pyopencl as cl # install with `PYOPENCL_CL_PRETEND_VERSION=2.0 pip install pyopencl` - -from openpilot.system.hardware import PC, TICI -from openpilot.common.basedir import BASEDIR -from openpilot.tools.lib.openpilotci import BASE_URL -from openpilot.common.git import get_commit -from openpilot.system.camerad.snapshot.snapshot import yuv_to_rgb -from openpilot.tools.lib.logreader import LogReader -from openpilot.tools.lib.filereader import FileReader - -TEST_ROUTE = "8345e3b82948d454|2022-05-04--13-45-33/0" - -FRAME_WIDTH = 1928 -FRAME_HEIGHT = 1208 -FRAME_STRIDE = 2896 - -UV_WIDTH = FRAME_WIDTH // 2 -UV_HEIGHT = FRAME_HEIGHT // 2 -UV_SIZE = UV_WIDTH * UV_HEIGHT - - -def get_frame_fn(ref_commit, test_route, tici=True): - return f"{test_route}_debayer{'_tici' if tici else ''}_{ref_commit}.bz2" - - -def bzip_frames(frames): - data = b'' - for y, u, v in frames: - data += y.tobytes() - data += u.tobytes() - data += v.tobytes() - return bz2.compress(data) - - -def unbzip_frames(url): - with FileReader(url) as f: - dat = f.read() - - data = bz2.decompress(dat) - - res = [] - for y_start in range(0, len(data), FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2): - u_start = y_start + FRAME_WIDTH * FRAME_HEIGHT - v_start = u_start + UV_SIZE - - y = np.frombuffer(data[y_start: u_start], dtype=np.uint8).reshape((FRAME_HEIGHT, FRAME_WIDTH)) - u = np.frombuffer(data[u_start: v_start], dtype=np.uint8).reshape((UV_HEIGHT, UV_WIDTH)) - v = np.frombuffer(data[v_start: v_start + UV_SIZE], dtype=np.uint8).reshape((UV_HEIGHT, UV_WIDTH)) - - res.append((y, u, v)) - - return res - - -def init_kernels(frame_offset=0): - ctx = cl.create_some_context(interactive=False) - - with open(os.path.join(BASEDIR, 'system/camerad/cameras/real_debayer.cl')) as f: - build_args = ' -cl-fast-relaxed-math -cl-denorms-are-zero -cl-single-precision-constant' + \ - f' -DFRAME_STRIDE={FRAME_STRIDE} -DRGB_WIDTH={FRAME_WIDTH} -DRGB_HEIGHT={FRAME_HEIGHT} -DFRAME_OFFSET={frame_offset} -DCAM_NUM=0' - if PC: - build_args += ' -DHALF_AS_FLOAT=1 -cl-std=CL2.0' - debayer_prg = cl.Program(ctx, f.read()).build(options=build_args) - - return ctx, debayer_prg - -def debayer_frame(ctx, debayer_prg, data, rgb=False): - q = cl.CommandQueue(ctx) - - yuv_buff = np.empty(FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2, dtype=np.uint8) - - cam_g = cl.Buffer(ctx, cl.mem_flags.READ_ONLY | cl.mem_flags.COPY_HOST_PTR, hostbuf=data) - yuv_g = cl.Buffer(ctx, cl.mem_flags.WRITE_ONLY, FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2) - - local_worksize = (20, 20) if TICI else (4, 4) - ev1 = debayer_prg.debayer10(q, (UV_WIDTH, UV_HEIGHT), local_worksize, cam_g, yuv_g) - cl.enqueue_copy(q, yuv_buff, yuv_g, wait_for=[ev1]).wait() - cl.enqueue_barrier(q) - - y = yuv_buff[:FRAME_WIDTH*FRAME_HEIGHT].reshape((FRAME_HEIGHT, FRAME_WIDTH)) - u = yuv_buff[FRAME_WIDTH*FRAME_HEIGHT:FRAME_WIDTH*FRAME_HEIGHT+UV_SIZE].reshape((UV_HEIGHT, UV_WIDTH)) - v = yuv_buff[FRAME_WIDTH*FRAME_HEIGHT+UV_SIZE:].reshape((UV_HEIGHT, UV_WIDTH)) - - if rgb: - return yuv_to_rgb(y, u, v) - else: - return y, u, v - - -def debayer_replay(lr): - ctx, debayer_prg = init_kernels() - - frames = [] - for m in lr: - if m.which() == 'roadCameraState': - cs = m.roadCameraState - if cs.image: - data = np.frombuffer(cs.image, dtype=np.uint8) - img = debayer_frame(ctx, debayer_prg, data) - - frames.append(img) - - return frames - - -if __name__ == "__main__": - update = "--update" in sys.argv - replay_dir = os.path.dirname(os.path.abspath(__file__)) - ref_commit_fn = os.path.join(replay_dir, "debayer_replay_ref_commit") - - # load logs - lr = list(LogReader(TEST_ROUTE)) - - # run replay - frames = debayer_replay(lr) - - # get diff - failed = False - diff = '' - yuv_i = ['y', 'u', 'v'] - if not update: - with open(ref_commit_fn) as f: - ref_commit = f.read().strip() - frame_fn = get_frame_fn(ref_commit, TEST_ROUTE, tici=TICI) - - try: - cmp_frames = unbzip_frames(BASE_URL + frame_fn) - - if len(frames) != len(cmp_frames): - failed = True - diff += 'amount of frames not equal\n' - - for i, (frame, cmp_frame) in enumerate(zip(frames, cmp_frames, strict=True)): - for j in range(3): - fr = frame[j] - cmp_f = cmp_frame[j] - if fr.shape != cmp_f.shape: - failed = True - diff += f'frame shapes not equal for ({i}, {yuv_i[j]})\n' - diff += f'{ref_commit}: {cmp_f.shape}\n' - diff += f'HEAD: {fr.shape}\n' - elif not np.array_equal(fr, cmp_f): - failed = True - if np.allclose(fr, cmp_f, atol=1): - diff += f'frames not equal for ({i}, {yuv_i[j]}), but are all close\n' - else: - diff += f'frames not equal for ({i}, {yuv_i[j]})\n' - - frame_diff = np.abs(np.subtract(fr, cmp_f)) - diff_len = len(np.nonzero(frame_diff)[0]) - if diff_len > 10000: - diff += f'different at a large amount of pixels ({diff_len})\n' - else: - diff += 'different at (frame, yuv, pixel, ref, HEAD):\n' - for k in zip(*np.nonzero(frame_diff), strict=True): - diff += f'{i}, {yuv_i[j]}, {k}, {cmp_f[k]}, {fr[k]}\n' - - if failed: - print(diff) - with open("debayer_diff.txt", "w") as f: - f.write(diff) - except Exception as e: - print(str(e)) - failed = True - - # upload new refs - if update or (failed and TICI): - from openpilot.tools.lib.openpilotci import upload_file - - print("Uploading new refs") - - frames_bzip = bzip_frames(frames) - - new_commit = get_commit() - frame_fn = os.path.join(replay_dir, get_frame_fn(new_commit, TEST_ROUTE, tici=TICI)) - with open(frame_fn, "wb") as f2: - f2.write(frames_bzip) - - try: - upload_file(frame_fn, os.path.basename(frame_fn)) - except Exception as e: - print("failed to upload", e) - - if update: - with open(ref_commit_fn, 'w') as f: - f.write(str(new_commit)) - - print("\nNew ref commit: ", new_commit) - - sys.exit(int(failed)) diff --git a/selfdrive/test/process_replay/test_imgproc.py b/selfdrive/test/process_replay/test_imgproc.py new file mode 100755 index 0000000000..a980548baa --- /dev/null +++ b/selfdrive/test/process_replay/test_imgproc.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +import os +import numpy as np +import hashlib + +import pyopencl as cl # install with `PYOPENCL_CL_PRETEND_VERSION=2.0 pip install pyopencl` + +from openpilot.system.hardware import PC, TICI +from openpilot.common.basedir import BASEDIR +from openpilot.common.transformations.camera import DEVICE_CAMERAS +from openpilot.system.camerad.snapshot.snapshot import yuv_to_rgb +from openpilot.tools.lib.logreader import LogReader + +# TODO: check all sensors +TEST_ROUTE = "8345e3b82948d454|2022-05-04--13-45-33/0" + +cam = DEVICE_CAMERAS[("tici", "ar0231")] +FRAME_WIDTH, FRAME_HEIGHT = (cam.dcam.width, cam.dcam.height) +FRAME_STRIDE = FRAME_WIDTH * 12 // 8 + 4 + +UV_WIDTH = FRAME_WIDTH // 2 +UV_HEIGHT = FRAME_HEIGHT // 2 +UV_SIZE = UV_WIDTH * UV_HEIGHT + + +def init_kernels(frame_offset=0): + ctx = cl.create_some_context(interactive=False) + + with open(os.path.join(BASEDIR, 'system/camerad/cameras/process_raw.cl')) as f: + build_args = f' -cl-fast-relaxed-math -cl-denorms-are-zero -cl-single-precision-constant -I{BASEDIR}/system/camerad/sensors ' + \ + f' -DFRAME_WIDTH={FRAME_WIDTH} -DFRAME_HEIGHT={FRAME_WIDTH} -DFRAME_STRIDE={FRAME_STRIDE} -DFRAME_OFFSET={frame_offset} ' + \ + f' -DRGB_WIDTH={FRAME_WIDTH} -DRGB_HEIGHT={FRAME_HEIGHT} -DYUV_STRIDE={FRAME_WIDTH} -DUV_OFFSET={FRAME_WIDTH*FRAME_HEIGHT}' + \ + ' -DSENSOR_ID=1 -DVIGNETTING=0 ' + if PC: + build_args += ' -DHALF_AS_FLOAT=1 -cl-std=CL2.0' + imgproc_prg = cl.Program(ctx, f.read()).build(options=build_args) + + return ctx, imgproc_prg + +def proc_frame(ctx, imgproc_prg, data, rgb=False): + q = cl.CommandQueue(ctx) + + yuv_buff = np.empty(FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2, dtype=np.uint8) + + cam_g = cl.Buffer(ctx, cl.mem_flags.READ_ONLY | cl.mem_flags.COPY_HOST_PTR, hostbuf=data) + yuv_g = cl.Buffer(ctx, cl.mem_flags.WRITE_ONLY, FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2) + + krn = imgproc_prg.process_raw + krn.set_scalar_arg_dtypes([None, None, np.int32]) + local_worksize = (20, 20) if TICI else (4, 4) + + ev1 = krn(q, (FRAME_WIDTH//2, FRAME_HEIGHT//2), local_worksize, cam_g, yuv_g, 1) + cl.enqueue_copy(q, yuv_buff, yuv_g, wait_for=[ev1]).wait() + cl.enqueue_barrier(q) + + y = yuv_buff[:FRAME_WIDTH*FRAME_HEIGHT].reshape((FRAME_HEIGHT, FRAME_WIDTH)) + u = yuv_buff[FRAME_WIDTH*FRAME_HEIGHT::2].reshape((UV_HEIGHT, UV_WIDTH)) + v = yuv_buff[FRAME_WIDTH*FRAME_HEIGHT+1::2].reshape((UV_HEIGHT, UV_WIDTH)) + + if rgb: + return yuv_to_rgb(y, u, v) + else: + return y, u, v + + +def imgproc_replay(lr): + ctx, imgproc_prg = init_kernels() + + frames = [] + for m in lr: + if m.which() == 'roadCameraState': + cs = m.roadCameraState + if cs.image: + data = np.frombuffer(cs.image, dtype=np.uint8) + img = proc_frame(ctx, imgproc_prg, data) + + frames.append(img) + + return frames + + +if __name__ == "__main__": + # load logs + lr = list(LogReader(TEST_ROUTE)) + # run replay + out_frames = imgproc_replay(lr) + + all_pix = np.concatenate([np.concatenate([d.flatten() for d in f]) for f in out_frames]) + pix_hash = hashlib.sha1(all_pix).hexdigest() + + with open('imgproc_replay_ref_hash') as f: + ref_hash = f.read() + + if pix_hash != ref_hash: + print("result changed! please check kernel") + print("ref: %s" % ref_hash) + print("new: %s" % pix_hash) + else: + print("test passed") diff --git a/selfdrive/test/test_onroad.py b/selfdrive/test/test_onroad.py index 7492ac12a6..5de9d20297 100755 --- a/selfdrive/test/test_onroad.py +++ b/selfdrive/test/test_onroad.py @@ -300,7 +300,7 @@ class TestOnroad(unittest.TestCase): def test_camera_processing_time(self): result = "\n" result += "------------------------------------------------\n" - result += "-------------- Debayer Timing ------------------\n" + result += "-------------- ImgProc Timing ------------------\n" result += "------------------------------------------------\n" ts = [getattr(m, m.which()).processingTime for m in self.lr if 'CameraState' in m.which()] diff --git a/system/camerad/cameras/camera_common.cc b/system/camerad/cameras/camera_common.cc index aa815bfadf..90bfa19231 100644 --- a/system/camerad/cameras/camera_common.cc +++ b/system/camerad/cameras/camera_common.cc @@ -8,7 +8,6 @@ #include "common/clutil.h" #include "common/swaglog.h" -#include "common/util.h" #include "third_party/linux/include/msm_media_info.h" #include "system/camerad/cameras/camera_qcom2.h" @@ -18,40 +17,38 @@ ExitHandler do_exit; -class Debayer { +class ImgProc { public: - Debayer(cl_device_id device_id, cl_context context, const CameraBuf *b, const CameraState *s, int buf_width, int uv_offset) { + ImgProc(cl_device_id device_id, cl_context context, const CameraBuf *b, const CameraState *s, int buf_width, int uv_offset) { char args[4096]; const SensorInfo *ci = s->ci.get(); snprintf(args, sizeof(args), - "-cl-fast-relaxed-math -cl-denorms-are-zero " + "-cl-fast-relaxed-math -cl-denorms-are-zero -Isensors " "-DFRAME_WIDTH=%d -DFRAME_HEIGHT=%d -DFRAME_STRIDE=%d -DFRAME_OFFSET=%d " "-DRGB_WIDTH=%d -DRGB_HEIGHT=%d -DYUV_STRIDE=%d -DUV_OFFSET=%d " - "-DIS_OX=%d -DIS_OS=%d -DIS_BGGR=%d -DCAM_NUM=%d%s", + "-DSENSOR_ID=%hu -DVIGNETTING=%d ", ci->frame_width, ci->frame_height, ci->frame_stride, ci->frame_offset, b->rgb_width, b->rgb_height, buf_width, uv_offset, - ci->image_sensor == cereal::FrameData::ImageSensor::OX03C10, - ci->image_sensor == cereal::FrameData::ImageSensor::OS04C10, - ci->image_sensor == cereal::FrameData::ImageSensor::OS04C10, - s->camera_num, s->camera_num==1 ? " -DVIGNETTING" : ""); - const char *cl_file = "cameras/real_debayer.cl"; - cl_program prg_debayer = cl_program_from_file(context, device_id, cl_file, args); - krnl_ = CL_CHECK_ERR(clCreateKernel(prg_debayer, "debayer10", &err)); - CL_CHECK(clReleaseProgram(prg_debayer)); + ci->image_sensor, s->camera_num == 1); + const char *cl_file = "cameras/process_raw.cl"; + cl_program prg_imgproc = cl_program_from_file(context, device_id, cl_file, args); + krnl_ = CL_CHECK_ERR(clCreateKernel(prg_imgproc, "process_raw", &err)); + CL_CHECK(clReleaseProgram(prg_imgproc)); } - void queue(cl_command_queue q, cl_mem cam_buf_cl, cl_mem buf_cl, int width, int height, cl_event *debayer_event) { + void queue(cl_command_queue q, cl_mem cam_buf_cl, cl_mem buf_cl, int width, int height, cl_event *imgproc_event, int expo_time) { CL_CHECK(clSetKernelArg(krnl_, 0, sizeof(cl_mem), &cam_buf_cl)); CL_CHECK(clSetKernelArg(krnl_, 1, sizeof(cl_mem), &buf_cl)); + CL_CHECK(clSetKernelArg(krnl_, 2, sizeof(cl_int), &expo_time)); const size_t globalWorkSize[] = {size_t(width / 2), size_t(height / 2)}; - const int debayer_local_worksize = 16; - const size_t localWorkSize[] = {debayer_local_worksize, debayer_local_worksize}; - CL_CHECK(clEnqueueNDRangeKernel(q, krnl_, 2, NULL, globalWorkSize, localWorkSize, 0, 0, debayer_event)); + const int imgproc_local_worksize = 16; + const size_t localWorkSize[] = {imgproc_local_worksize, imgproc_local_worksize}; + CL_CHECK(clEnqueueNDRangeKernel(q, krnl_, 2, NULL, globalWorkSize, localWorkSize, 0, 0, imgproc_event)); } - ~Debayer() { + ~ImgProc() { CL_CHECK(clReleaseKernel(krnl_)); } @@ -92,7 +89,7 @@ void CameraBuf::init(cl_device_id device_id, cl_context context, CameraState *s, vipc_server->create_buffers_with_sizes(stream_type, YUV_BUFFER_COUNT, false, rgb_width, rgb_height, nv12_size, nv12_width, nv12_uv_offset); LOGD("created %d YUV vipc buffers with size %dx%d", YUV_BUFFER_COUNT, nv12_width, nv12_height); - debayer = new Debayer(device_id, context, this, s, nv12_width, nv12_uv_offset); + imgproc = new ImgProc(device_id, context, this, s, nv12_width, nv12_uv_offset); const cl_queue_properties props[] = {0}; //CL_QUEUE_PRIORITY_KHR, CL_QUEUE_PRIORITY_HIGH_KHR, 0}; q = CL_CHECK_ERR(clCreateCommandQueueWithProperties(context, device_id, props, &err)); @@ -102,7 +99,7 @@ CameraBuf::~CameraBuf() { for (int i = 0; i < frame_buf_count; i++) { camera_bufs[i].free(); } - if (debayer) delete debayer; + if (imgproc) delete imgproc; if (q) CL_CHECK(clReleaseCommandQueue(q)); } @@ -120,7 +117,7 @@ bool CameraBuf::acquire() { double start_time = millis_since_boot(); cl_event event; - debayer->queue(q, camera_bufs[cur_buf_idx].buf_cl, cur_yuv_buf->buf_cl, rgb_width, rgb_height, &event); + imgproc->queue(q, camera_bufs[cur_buf_idx].buf_cl, cur_yuv_buf->buf_cl, rgb_width, rgb_height, &event, cur_frame_data.integ_lines); clWaitForEvents(1, &event); CL_CHECK(clReleaseEvent(event)); cur_frame_data.processing_time = (millis_since_boot() - start_time) / 1000.0; @@ -260,14 +257,14 @@ static void publish_thumbnail(PubMaster *pm, const CameraBuf *b) { pm->send("thumbnail", msg); } -float set_exposure_target(const CameraBuf *b, int x_start, int x_end, int x_skip, int y_start, int y_end, int y_skip) { +float set_exposure_target(const CameraBuf *b, Rect ae_xywh, int x_skip, int y_skip) { int lum_med; uint32_t lum_binning[256] = {0}; const uint8_t *pix_ptr = b->cur_yuv_buf->y; unsigned int lum_total = 0; - for (int y = y_start; y < y_end; y += y_skip) { - for (int x = x_start; x < x_end; x += x_skip) { + for (int y = ae_xywh.y; y < ae_xywh.y + ae_xywh.h; y += y_skip) { + for (int x = ae_xywh.x; x < ae_xywh.x + ae_xywh.w; x += x_skip) { uint8_t lum = pix_ptr[(y * b->rgb_width) + x]; lum_binning[lum]++; lum_total += 1; diff --git a/system/camerad/cameras/camera_common.h b/system/camerad/cameras/camera_common.h index f98691ef00..587968fccb 100644 --- a/system/camerad/cameras/camera_common.h +++ b/system/camerad/cameras/camera_common.h @@ -7,6 +7,7 @@ #include "cereal/messaging/messaging.h" #include "cereal/visionipc/visionipc_server.h" #include "common/queue.h" +#include "common/util.h" const int YUV_BUFFER_COUNT = 20; @@ -44,12 +45,12 @@ typedef struct FrameMetadata { struct MultiCameraState; class CameraState; -class Debayer; +class ImgProc; class CameraBuf { private: VisionIpcServer *vipc_server; - Debayer *debayer = nullptr; + ImgProc *imgproc = nullptr; VisionStreamType stream_type; int cur_buf_idx; SafeQueue safe_queue; @@ -75,7 +76,7 @@ typedef void (*process_thread_cb)(MultiCameraState *s, CameraState *c, int cnt); void fill_frame_data(cereal::FrameData::Builder &framed, const FrameMetadata &frame_data, CameraState *c); kj::Array get_raw_frame_image(const CameraBuf *b); -float set_exposure_target(const CameraBuf *b, int x_start, int x_end, int x_skip, int y_start, int y_end, int y_skip); +float set_exposure_target(const CameraBuf *b, Rect ae_xywh, int x_skip, int y_skip); std::thread start_process_thread(MultiCameraState *cameras, CameraState *cs, process_thread_cb callback); void cameras_init(VisionIpcServer *v, MultiCameraState *s, cl_device_id device_id, cl_context ctx); diff --git a/system/camerad/cameras/camera_qcom2.cc b/system/camerad/cameras/camera_qcom2.cc index 3191b821ac..081279d38d 100644 --- a/system/camerad/cameras/camera_qcom2.cc +++ b/system/camerad/cameras/camera_qcom2.cc @@ -396,6 +396,35 @@ void CameraState::enqueue_req_multi(int start, int n, bool dp) { // ******************* camera ******************* +void CameraState::set_exposure_rect() { + // set areas for each camera, shouldn't be changed + std::vector> ae_targets = { + // (Rect, F) + std::make_pair((Rect){96, 250, 1734, 524}, 567.0), // wide + std::make_pair((Rect){96, 160, 1734, 986}, 2648.0), // road + std::make_pair((Rect){96, 242, 1736, 906}, 567.0) // driver + }; + int h_ref = 1208; + /* + exposure target intrinics is + [ + [F, 0, 0.5*ae_xywh[2]] + [0, F, 0.5*H-ae_xywh[1]] + [0, 0, 1] + ] + */ + auto ae_target = ae_targets[camera_num]; + Rect xywh_ref = ae_target.first; + float fl_ref = ae_target.second; + + ae_xywh = (Rect){ + std::max(0, buf.rgb_width / 2 - (int)(fl_pix / fl_ref * xywh_ref.w / 2)), + std::max(0, buf.rgb_height / 2 - (int)(fl_pix / fl_ref * (h_ref / 2 - xywh_ref.y))), + std::min((int)(fl_pix / fl_ref * xywh_ref.w), buf.rgb_width / 2 + (int)(fl_pix / fl_ref * xywh_ref.w / 2)), + std::min((int)(fl_pix / fl_ref * xywh_ref.h), buf.rgb_height / 2 + (int)(fl_pix / fl_ref * (h_ref / 2 - xywh_ref.y))) + }; +} + void CameraState::sensor_set_parameters() { target_grey_fraction = 0.3; @@ -421,7 +450,7 @@ void CameraState::camera_map_bufs(MultiCameraState *s) { enqueue_req_multi(1, FRAME_BUF_COUNT, 0); } -void CameraState::camera_init(MultiCameraState *s, VisionIpcServer * v, cl_device_id device_id, cl_context ctx, VisionStreamType yuv_type) { +void CameraState::camera_init(MultiCameraState *s, VisionIpcServer * v, cl_device_id device_id, cl_context ctx, VisionStreamType yuv_type, float focal_len) { if (!enabled) return; LOGD("camera init %d", camera_num); @@ -430,6 +459,9 @@ void CameraState::camera_init(MultiCameraState *s, VisionIpcServer * v, cl_devic buf.init(device_id, ctx, this, v, FRAME_BUF_COUNT, yuv_type); camera_map_bufs(s); + + fl_pix = focal_len / ci->pixel_size_mm; + set_exposure_rect(); } void CameraState::camera_open(MultiCameraState *multi_cam_state_, int camera_num_, bool enabled_) { @@ -614,9 +646,9 @@ void CameraState::camera_open(MultiCameraState *multi_cam_state_, int camera_num } void cameras_init(VisionIpcServer *v, MultiCameraState *s, cl_device_id device_id, cl_context ctx) { - s->driver_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_DRIVER); - s->road_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_ROAD); - s->wide_road_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_WIDE_ROAD); + s->driver_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_DRIVER, DRIVER_FL_MM); + s->road_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_ROAD, ROAD_FL_MM); + s->wide_road_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_WIDE_ROAD, WIDE_FL_MM); s->pm = new PubMaster({"roadCameraState", "driverCameraState", "wideRoadCameraState", "thumbnail"}); } @@ -902,7 +934,7 @@ void CameraState::set_camera_exposure(float grey_frac) { } static void process_driver_camera(MultiCameraState *s, CameraState *c, int cnt) { - c->set_camera_exposure(set_exposure_target(&c->buf, 96, 1832, 2, 242, 1148, 4)); + c->set_camera_exposure(set_exposure_target(&c->buf, c->ae_xywh, 2, 4)); MessageBuilder msg; auto framed = msg.initEvent().initDriverCameraState(); @@ -927,9 +959,8 @@ void process_road_camera(MultiCameraState *s, CameraState *c, int cnt) { c->ci->processRegisters(c, framed); s->pm->send(c == &s->road_cam ? "roadCameraState" : "wideRoadCameraState", msg); - const auto [x, y, w, h] = (c == &s->wide_road_cam) ? std::tuple(96, 250, 1734, 524) : std::tuple(96, 160, 1734, 986); const int skip = 2; - c->set_camera_exposure(set_exposure_target(b, x, x + w, skip, y, y + h, skip)); + c->set_camera_exposure(set_exposure_target(b, c->ae_xywh, skip, skip)); } void cameras_run(MultiCameraState *s) { diff --git a/system/camerad/cameras/camera_qcom2.h b/system/camerad/cameras/camera_qcom2.h index 47ca578b99..0b15c9c3f0 100644 --- a/system/camerad/cameras/camera_qcom2.h +++ b/system/camerad/cameras/camera_qcom2.h @@ -11,6 +11,10 @@ #define FRAME_BUF_COUNT 4 +#define ROAD_FL_MM 8.0f +#define WIDE_FL_MM 1.71f +#define DRIVER_FL_MM 1.71f + class CameraState { public: MultiCameraState *multi_cam_state; @@ -30,6 +34,7 @@ public: int new_exp_g; int new_exp_t; + Rect ae_xywh; float measured_grey_fraction; float target_grey_fraction; @@ -37,6 +42,7 @@ public: unique_fd csiphy_fd; int camera_num; + float fl_pix; void handle_camera_event(void *evdat); void update_exposure_score(float desired_ev, int exp_t, int exp_g_idx, float exp_gain); @@ -45,9 +51,10 @@ public: void sensors_start(); void camera_open(MultiCameraState *multi_cam_state, int camera_num, bool enabled); + void set_exposure_rect(); void sensor_set_parameters(); void camera_map_bufs(MultiCameraState *s); - void camera_init(MultiCameraState *s, VisionIpcServer *v, cl_device_id device_id, cl_context ctx, VisionStreamType yuv_type); + void camera_init(MultiCameraState *s, VisionIpcServer *v, cl_device_id device_id, cl_context ctx, VisionStreamType yuv_type, float focal_len); void camera_close(); int32_t session_handle; diff --git a/system/camerad/cameras/process_raw.cl b/system/camerad/cameras/process_raw.cl new file mode 100644 index 0000000000..c635fd046e --- /dev/null +++ b/system/camerad/cameras/process_raw.cl @@ -0,0 +1,192 @@ +#include "ar0231_cl.h" +#include "ox03c10_cl.h" +#include "os04c10_cl.h" + +#define UV_WIDTH RGB_WIDTH / 2 +#define UV_HEIGHT RGB_HEIGHT / 2 + +#define RGB_TO_Y(r, g, b) ((((mul24(b, 13) + mul24(g, 65) + mul24(r, 33)) + 64) >> 7) + 16) +#define RGB_TO_U(r, g, b) ((mul24(b, 56) - mul24(g, 37) - mul24(r, 19) + 0x8080) >> 8) +#define RGB_TO_V(r, g, b) ((mul24(r, 56) - mul24(g, 47) - mul24(b, 9) + 0x8080) >> 8) +#define AVERAGE(x, y, z, w) ((convert_ushort(x) + convert_ushort(y) + convert_ushort(z) + convert_ushort(w) + 1) >> 1) + +#if defined(BGGR) + #define ROW_READ_ORDER (int[]){3, 2, 1, 0} + #define RGB_WRITE_ORDER (int[]){2, 3, 0, 1} +#else + #define ROW_READ_ORDER (int[]){0, 1, 2, 3} + #define RGB_WRITE_ORDER (int[]){0, 1, 2, 3} +#endif + +float get_vignetting_s(float r) { + if (r < 62500) { + return (1.0f + 0.0000008f*r); + } else if (r < 490000) { + return (0.9625f + 0.0000014f*r); + } else if (r < 1102500) { + return (1.26434f + 0.0000000000016f*r*r); + } else { + return (0.53503625f + 0.0000000000022f*r*r); + } +} + +int4 parse_12bit(uchar8 pvs) { + // lower bits scambled? + return (int4)(((int)pvs.s0<<4) + (pvs.s1>>4), + ((int)pvs.s2<<4) + (pvs.s4&0xF), + ((int)pvs.s3<<4) + (pvs.s4>>4), + ((int)pvs.s5<<4) + (pvs.s7&0xF)); +} + +int4 parse_10bit(uchar8 pvs, uchar ext, bool aligned) { + if (aligned) { + return (int4)(((int)pvs.s0 << 2) + (pvs.s1 & 0b00000011), + ((int)pvs.s2 << 2) + ((pvs.s6 & 0b11000000) / 64), + ((int)pvs.s3 << 2) + ((pvs.s6 & 0b00110000) / 16), + ((int)pvs.s4 << 2) + ((pvs.s6 & 0b00001100) / 4)); + } else { + return (int4)(((int)pvs.s0 << 2) + ((pvs.s3 & 0b00110000) / 16), + ((int)pvs.s1 << 2) + ((pvs.s3 & 0b00001100) / 4), + ((int)pvs.s2 << 2) + ((pvs.s3 & 0b00000011)), + ((int)pvs.s4 << 2) + ((ext & 0b11000000) / 64)); + } +} + +float get_k(float a, float b, float c, float d) { + return 2.0 - (fabs(a - b) + fabs(c - d)); +} + +__kernel void process_raw(const __global uchar * in, __global uchar * out, int expo_time) +{ + const int gid_x = get_global_id(0); + const int gid_y = get_global_id(1); + + // estimate vignetting + #if VIGNETTING + int gx = (gid_x*2 - RGB_WIDTH/2); + int gy = (gid_y*2 - RGB_HEIGHT/2); + const float vignette_factor = get_vignetting_s((gx*gx + gy*gy) / VIGNETTE_RSZ); + #else + const float vignette_factor = 1.0; + #endif + + const int row_before_offset = (gid_y == 0) ? 2 : 0; + const int row_after_offset = (gid_y == (RGB_HEIGHT/2 - 1)) ? 1 : 3; + + float3 rgb_tmp; + uchar3 rgb_out[4]; // output is 2x2 window + + // read offset + int start_idx; + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (3 * gid_x - 2) + (FRAME_STRIDE * FRAME_OFFSET); + + // read in 4 rows, 8 uchars each + uchar8 dat[4]; + // row_before + dat[0] = vload8(0, in + start_idx + FRAME_STRIDE*row_before_offset); + // row_0 + if (gid_x == 0 && gid_y == 0) { + // this wasn't a problem due to extra rows + dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*1 + 2); + dat[1] = (uchar8)(0, 0, dat[1].s0, dat[1].s1, dat[1].s2, dat[1].s3, dat[1].s4, dat[1].s5); + } else { + dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*1); + } + // row_1 + dat[2] = vload8(0, in + start_idx + FRAME_STRIDE*2); + // row_after + dat[3] = vload8(0, in + start_idx + FRAME_STRIDE*row_after_offset); + + // read odd rows for staggered second exposure + #if HDR_OFFSET > 0 + uchar8 short_dat[4]; + short_dat[0] = vload8(0, in + start_idx + FRAME_STRIDE*(row_before_offset+HDR_OFFSET/2) + FRAME_STRIDE/2); + short_dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*(1+HDR_OFFSET/2) + FRAME_STRIDE/2); + short_dat[2] = vload8(0, in + start_idx + FRAME_STRIDE*(2+HDR_OFFSET/2) + FRAME_STRIDE/2); + short_dat[3] = vload8(0, in + start_idx + FRAME_STRIDE*(row_after_offset+HDR_OFFSET/2) + FRAME_STRIDE/2); + #endif + + // parse into floats 0.0-1.0 + float4 v_rows[4]; + // no HDR here + int4 parsed = parse_12bit(dat[0]); + v_rows[ROW_READ_ORDER[0]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[1]); + v_rows[ROW_READ_ORDER[1]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[2]); + v_rows[ROW_READ_ORDER[2]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[3]); + v_rows[ROW_READ_ORDER[3]] = normalize_pv(parsed, vignette_factor); + + // mirror padding + if (gid_x == 0) { + v_rows[0].s0 = v_rows[0].s2; + v_rows[1].s0 = v_rows[1].s2; + v_rows[2].s0 = v_rows[2].s2; + v_rows[3].s0 = v_rows[3].s2; + } else if (gid_x == RGB_WIDTH/2 - 1) { + v_rows[0].s3 = v_rows[0].s1; + v_rows[1].s3 = v_rows[1].s1; + v_rows[2].s3 = v_rows[2].s1; + v_rows[3].s3 = v_rows[3].s1; + } + + // debayering + // a simplified version of https://opensignalprocessingjournal.com/contents/volumes/V6/TOSIGPJ-6-1/TOSIGPJ-6-1.pdf + const float k01 = get_k(v_rows[0].s0, v_rows[1].s1, v_rows[0].s2, v_rows[1].s1); + const float k02 = get_k(v_rows[0].s2, v_rows[1].s1, v_rows[2].s2, v_rows[1].s1); + const float k03 = get_k(v_rows[2].s0, v_rows[1].s1, v_rows[2].s2, v_rows[1].s1); + const float k04 = get_k(v_rows[0].s0, v_rows[1].s1, v_rows[2].s0, v_rows[1].s1); + rgb_tmp.x = (k02*v_rows[1].s2+k04*v_rows[1].s0)/(k02+k04); // R_G1 + rgb_tmp.y = v_rows[1].s1; // G1(R) + rgb_tmp.z = (k01*v_rows[0].s1+k03*v_rows[2].s1)/(k01+k03); // B_G1 + rgb_out[RGB_WRITE_ORDER[0]] = convert_uchar3_sat(apply_gamma(color_correct(clamp(rgb_tmp, 0.0, 1.0)), expo_time) * 255.0); + + const float k11 = get_k(v_rows[0].s1, v_rows[2].s1, v_rows[0].s3, v_rows[2].s3); + const float k12 = get_k(v_rows[0].s2, v_rows[1].s1, v_rows[1].s3, v_rows[2].s2); + const float k13 = get_k(v_rows[0].s1, v_rows[0].s3, v_rows[2].s1, v_rows[2].s3); + const float k14 = get_k(v_rows[0].s2, v_rows[1].s3, v_rows[2].s2, v_rows[1].s1); + rgb_tmp.x = v_rows[1].s2; // R + rgb_tmp.y = (k11*(v_rows[0].s2+v_rows[2].s2)*0.5+k13*(v_rows[1].s3+v_rows[1].s1)*0.5)/(k11+k13); // G_R + rgb_tmp.z = (k12*(v_rows[0].s3+v_rows[2].s1)*0.5+k14*(v_rows[0].s1+v_rows[2].s3)*0.5)/(k12+k14); // B_R + rgb_out[RGB_WRITE_ORDER[1]] = convert_uchar3_sat(apply_gamma(color_correct(clamp(rgb_tmp, 0.0, 1.0)), expo_time) * 255.0); + + const float k21 = get_k(v_rows[1].s0, v_rows[3].s0, v_rows[1].s2, v_rows[3].s2); + const float k22 = get_k(v_rows[1].s1, v_rows[2].s0, v_rows[2].s2, v_rows[3].s1); + const float k23 = get_k(v_rows[1].s0, v_rows[1].s2, v_rows[3].s0, v_rows[3].s2); + const float k24 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[3].s1, v_rows[2].s0); + rgb_tmp.x = (k22*(v_rows[1].s2+v_rows[3].s0)*0.5+k24*(v_rows[1].s0+v_rows[3].s2)*0.5)/(k22+k24); // R_B + rgb_tmp.y = (k21*(v_rows[1].s1+v_rows[3].s1)*0.5+k23*(v_rows[2].s2+v_rows[2].s0)*0.5)/(k21+k23); // G_B + rgb_tmp.z = v_rows[2].s1; // B + rgb_out[RGB_WRITE_ORDER[2]] = convert_uchar3_sat(apply_gamma(color_correct(clamp(rgb_tmp, 0.0, 1.0)), expo_time) * 255.0); + + const float k31 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[1].s3, v_rows[2].s2); + const float k32 = get_k(v_rows[1].s3, v_rows[2].s2, v_rows[3].s3, v_rows[2].s2); + const float k33 = get_k(v_rows[3].s1, v_rows[2].s2, v_rows[3].s3, v_rows[2].s2); + const float k34 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[3].s1, v_rows[2].s2); + rgb_tmp.x = (k31*v_rows[1].s2+k33*v_rows[3].s2)/(k31+k33); // R_G2 + rgb_tmp.y = v_rows[2].s2; // G2(B) + rgb_tmp.z = (k32*v_rows[2].s3+k34*v_rows[2].s1)/(k32+k34); // B_G2 + rgb_out[RGB_WRITE_ORDER[3]] = convert_uchar3_sat(apply_gamma(color_correct(clamp(rgb_tmp, 0.0, 1.0)), expo_time) * 255.0); + + // rgb2yuv(nv12) + uchar2 yy = (uchar2)( + RGB_TO_Y(rgb_out[0].s0, rgb_out[0].s1, rgb_out[0].s2), + RGB_TO_Y(rgb_out[1].s0, rgb_out[1].s1, rgb_out[1].s2) + ); + vstore2(yy, 0, out + mad24(gid_y * 2, YUV_STRIDE, gid_x * 2)); + yy = (uchar2)( + RGB_TO_Y(rgb_out[2].s0, rgb_out[2].s1, rgb_out[2].s2), + RGB_TO_Y(rgb_out[3].s0, rgb_out[3].s1, rgb_out[3].s2) + ); + vstore2(yy, 0, out + mad24(gid_y * 2 + 1, YUV_STRIDE, gid_x * 2)); + + const short ar = AVERAGE(rgb_out[0].s0, rgb_out[1].s0, rgb_out[2].s0, rgb_out[3].s0); + const short ag = AVERAGE(rgb_out[0].s1, rgb_out[1].s1, rgb_out[2].s1, rgb_out[3].s1); + const short ab = AVERAGE(rgb_out[0].s2, rgb_out[1].s2, rgb_out[2].s2, rgb_out[3].s2); + uchar2 uv = (uchar2)( + RGB_TO_U(ar, ag, ab), + RGB_TO_V(ar, ag, ab) + ); + vstore2(uv, 0, out + UV_OFFSET + mad24(gid_y, YUV_STRIDE, gid_x * 2)); +} diff --git a/system/camerad/sensors/ar0231.cc b/system/camerad/sensors/ar0231.cc index 5c4934fb61..9b688389c4 100644 --- a/system/camerad/sensors/ar0231.cc +++ b/system/camerad/sensors/ar0231.cc @@ -79,6 +79,7 @@ float ar0231_parse_temp_sensor(uint16_t calib1, uint16_t calib2, uint16_t data_r AR0231::AR0231() { image_sensor = cereal::FrameData::ImageSensor::AR0231; + pixel_size_mm = 0.003; data_word = true; frame_width = 1928; frame_height = 1208; diff --git a/system/camerad/sensors/ar0231_cl.h b/system/camerad/sensors/ar0231_cl.h new file mode 100644 index 0000000000..8e96bbce5b --- /dev/null +++ b/system/camerad/sensors/ar0231_cl.h @@ -0,0 +1,33 @@ +#if SENSOR_ID == 1 + +#define BIT_DEPTH 12 +#define PV_MAX 4096 +#define BLACK_LVL 168 +#define VIGNETTE_RSZ 1.0f + +float4 normalize_pv(int4 parsed, float vignette_factor) { + float4 pv = (convert_float4(parsed) - BLACK_LVL) / (PV_MAX - BLACK_LVL); + return clamp(pv*vignette_factor, 0.0, 1.0); +} + +float3 color_correct(float3 rgb) { + float3 corrected = rgb.x * (float3)(1.82717181, -0.31231438, 0.07307673); + corrected += rgb.y * (float3)(-0.5743977, 1.36858544, -0.53183455); + corrected += rgb.z * (float3)(-0.25277411, -0.05627105, 1.45875782); + return corrected; +} + +float3 apply_gamma(float3 rgb, int expo_time) { + // tone mapping params + const float gamma_k = 0.75; + const float gamma_b = 0.125; + const float mp = 0.01; // ideally midpoint should be adaptive + const float rk = 9 - 100*mp; + + // poly approximation for s curve + return (rgb > mp) ? + ((rk * (rgb-mp) * (1-(gamma_k*mp+gamma_b)) * (1+1/(rk*(1-mp))) / (1+rk*(rgb-mp))) + gamma_k*mp + gamma_b) : + ((rk * (rgb-mp) * (gamma_k*mp+gamma_b) * (1+1/(rk*mp)) / (1-rk*(rgb-mp))) + gamma_k*mp + gamma_b); +} + +#endif \ No newline at end of file diff --git a/system/camerad/sensors/os04c10.cc b/system/camerad/sensors/os04c10.cc index aaef9986b5..cbdc94d289 100644 --- a/system/camerad/sensors/os04c10.cc +++ b/system/camerad/sensors/os04c10.cc @@ -20,6 +20,7 @@ const uint32_t os04c10_analog_gains_reg[] = { OS04C10::OS04C10() { image_sensor = cereal::FrameData::ImageSensor::OS04C10; + pixel_size_mm = 0.002; data_word = false; frame_width = 2688; @@ -42,8 +43,8 @@ OS04C10::OS04C10() { dc_gain_max_weight = 1; dc_gain_on_grey = 0.9; dc_gain_off_grey = 1.0; - exposure_time_min = 2; // 1x - exposure_time_max = 2200; + exposure_time_min = 2; + exposure_time_max = 2400; analog_gain_min_idx = 0x0; analog_gain_rec_idx = 0x0; // 1x analog_gain_max_idx = 0x36; @@ -62,11 +63,8 @@ std::vector OS04C10::getExposureRegisters(int exposure_ti uint32_t long_time = exposure_time; uint32_t real_gain = os04c10_analog_gains_reg[new_exp_g]; - // uint32_t short_time = long_time > exposure_time_min*8 ? long_time / 8 : exposure_time_min; - return { {0x3501, long_time>>8}, {0x3502, long_time&0xFF}, - // {0x3511, short_time>>8}, {0x3512, short_time&0xFF}, {0x3508, real_gain>>8}, {0x3509, real_gain&0xFF}, // {0x350c, real_gain>>8}, {0x350d, real_gain&0xFF}, }; diff --git a/system/camerad/sensors/os04c10_cl.h b/system/camerad/sensors/os04c10_cl.h new file mode 100644 index 0000000000..26c81f3aa3 --- /dev/null +++ b/system/camerad/sensors/os04c10_cl.h @@ -0,0 +1,26 @@ +#if SENSOR_ID == 3 + +#define BGGR + +#define BIT_DEPTH 12 +#define PV_MAX 4096 +#define BLACK_LVL 64 +#define VIGNETTE_RSZ 2.2545f + +float4 normalize_pv(int4 parsed, float vignette_factor) { + float4 pv = (convert_float4(parsed) - BLACK_LVL) / (PV_MAX - BLACK_LVL); + return clamp(pv*vignette_factor, 0.0, 1.0); +} + +float3 color_correct(float3 rgb) { + float3 corrected = rgb.x * (float3)(1.5664815, -0.29808738, -0.03973474); + corrected += rgb.y * (float3)(-0.48672447, 1.41914433, -0.40295248); + corrected += rgb.z * (float3)(-0.07975703, -0.12105695, 1.44268722); + return corrected; +} + +float3 apply_gamma(float3 rgb, int expo_time) { + return powr(rgb, 0.7); +} + +#endif diff --git a/system/camerad/sensors/os04c10_registers.h b/system/camerad/sensors/os04c10_registers.h index f2388d91b8..990d1f7967 100644 --- a/system/camerad/sensors/os04c10_registers.h +++ b/system/camerad/sensors/os04c10_registers.h @@ -310,4 +310,4 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x5104, 0x08}, {0x5105, 0xde}, {0x5106, 0x02}, {0x5107, 0x00}, -}; +}; \ No newline at end of file diff --git a/system/camerad/sensors/ox03c10.cc b/system/camerad/sensors/ox03c10.cc index c74274872f..94efa0ea24 100644 --- a/system/camerad/sensors/ox03c10.cc +++ b/system/camerad/sensors/ox03c10.cc @@ -23,6 +23,7 @@ const uint32_t VS_TIME_MAX_OX03C10 = 34; // vs < 35 OX03C10::OX03C10() { image_sensor = cereal::FrameData::ImageSensor::OX03C10; + pixel_size_mm = 0.003; data_word = false; frame_width = 1928; frame_height = 1208; diff --git a/system/camerad/cameras/real_debayer.cl b/system/camerad/sensors/ox03c10_cl.h similarity index 83% rename from system/camerad/cameras/real_debayer.cl rename to system/camerad/sensors/ox03c10_cl.h index 5f8d046cb5..21441902fc 100644 --- a/system/camerad/cameras/real_debayer.cl +++ b/system/camerad/sensors/ox03c10_cl.h @@ -1,260 +1,43 @@ -#define UV_WIDTH RGB_WIDTH / 2 -#define UV_HEIGHT RGB_HEIGHT / 2 +#if SENSOR_ID == 2 -#define RGB_TO_Y(r, g, b) ((((mul24(b, 13) + mul24(g, 65) + mul24(r, 33)) + 64) >> 7) + 16) -#define RGB_TO_U(r, g, b) ((mul24(b, 56) - mul24(g, 37) - mul24(r, 19) + 0x8080) >> 8) -#define RGB_TO_V(r, g, b) ((mul24(r, 56) - mul24(g, 47) - mul24(b, 9) + 0x8080) >> 8) -#define AVERAGE(x, y, z, w) ((convert_ushort(x) + convert_ushort(y) + convert_ushort(z) + convert_ushort(w) + 1) >> 1) - -float3 color_correct(float3 rgb) { - // color correction - #if IS_OX | IS_OS - float3 x = rgb.x * (float3)(1.5664815 , -0.29808738, -0.03973474); - x += rgb.y * (float3)(-0.48672447, 1.41914433, -0.40295248); - x += rgb.z * (float3)(-0.07975703, -0.12105695, 1.44268722); - #else - float3 x = rgb.x * (float3)(1.82717181, -0.31231438, 0.07307673); - x += rgb.y * (float3)(-0.5743977, 1.36858544, -0.53183455); - x += rgb.z * (float3)(-0.25277411, -0.05627105, 1.45875782); - #endif - - #if IS_OX - return -0.507089*exp(-12.54124638*x)+0.9655*powr(x,0.5)-0.472597*x+0.507089; - #elif IS_OS - return powr(x,0.7); - #else - // tone mapping params - const float gamma_k = 0.75; - const float gamma_b = 0.125; - const float mp = 0.01; // ideally midpoint should be adaptive - const float rk = 9 - 100*mp; - - // poly approximation for s curve - return (x > mp) ? - ((rk * (x-mp) * (1-(gamma_k*mp+gamma_b)) * (1+1/(rk*(1-mp))) / (1+rk*(x-mp))) + gamma_k*mp + gamma_b) : - ((rk * (x-mp) * (gamma_k*mp+gamma_b) * (1+1/(rk*mp)) / (1-rk*(x-mp))) + gamma_k*mp + gamma_b); - #endif -} - -float get_vignetting_s(float r) { - #if IS_OS - r = r / 2.2545f; - #endif - if (r < 62500) { - return (1.0f + 0.0000008f*r); - } else if (r < 490000) { - return (0.9625f + 0.0000014f*r); - } else if (r < 1102500) { - return (1.26434f + 0.0000000000016f*r*r); - } else { - return (0.53503625f + 0.0000000000022f*r*r); - } -} +#define BIT_DEPTH 12 +#define BLACK_LVL 64 +#define VIGNETTE_RSZ 1.0f constant float ox03c10_lut[] = { - 0.0000e+00, 5.9488e-08, 1.1898e-07, 1.7846e-07, 2.3795e-07, 2.9744e-07, 3.5693e-07, 4.1642e-07, 4.7591e-07, 5.3539e-07, 5.9488e-07, 6.5437e-07, 7.1386e-07, 7.7335e-07, 8.3284e-07, 8.9232e-07, 9.5181e-07, 1.0113e-06, 1.0708e-06, 1.1303e-06, 1.1898e-06, 1.2493e-06, 1.3087e-06, 1.3682e-06, 1.4277e-06, 1.4872e-06, 1.5467e-06, 1.6062e-06, 1.6657e-06, 1.7252e-06, 1.7846e-06, 1.8441e-06, 1.9036e-06, 1.9631e-06, 2.0226e-06, 2.0821e-06, 2.1416e-06, 2.2011e-06, 2.2606e-06, 2.3200e-06, 2.3795e-06, 2.4390e-06, 2.4985e-06, 2.5580e-06, 2.6175e-06, 2.6770e-06, 2.7365e-06, 2.7959e-06, 2.8554e-06, 2.9149e-06, 2.9744e-06, 3.0339e-06, 3.0934e-06, 3.1529e-06, 3.2124e-06, 3.2719e-06, 3.3313e-06, 3.3908e-06, 3.4503e-06, 3.5098e-06, 3.5693e-06, 3.6288e-06, 3.6883e-06, 3.7478e-06, 3.8072e-06, 3.8667e-06, 3.9262e-06, 3.9857e-06, 4.0452e-06, 4.1047e-06, 4.1642e-06, 4.2237e-06, 4.2832e-06, 4.3426e-06, 4.4021e-06, 4.4616e-06, 4.5211e-06, 4.5806e-06, 4.6401e-06, 4.6996e-06, 4.7591e-06, 4.8185e-06, 4.8780e-06, 4.9375e-06, 4.9970e-06, 5.0565e-06, 5.1160e-06, 5.1755e-06, 5.2350e-06, 5.2945e-06, 5.3539e-06, 5.4134e-06, 5.4729e-06, 5.5324e-06, 5.5919e-06, 5.6514e-06, 5.7109e-06, 5.7704e-06, 5.8298e-06, 5.8893e-06, 5.9488e-06, 6.0083e-06, 6.0678e-06, 6.1273e-06, 6.1868e-06, 6.2463e-06, 6.3058e-06, 6.3652e-06, 6.4247e-06, 6.4842e-06, 6.5437e-06, 6.6032e-06, 6.6627e-06, 6.7222e-06, 6.7817e-06, 6.8411e-06, 6.9006e-06, 6.9601e-06, 7.0196e-06, 7.0791e-06, 7.1386e-06, 7.1981e-06, 7.2576e-06, 7.3171e-06, 7.3765e-06, 7.4360e-06, 7.4955e-06, 7.5550e-06, 7.6145e-06, 7.6740e-06, 7.7335e-06, 7.7930e-06, 7.8524e-06, 7.9119e-06, 7.9714e-06, 8.0309e-06, 8.0904e-06, 8.1499e-06, 8.2094e-06, 8.2689e-06, 8.3284e-06, 8.3878e-06, 8.4473e-06, 8.5068e-06, 8.5663e-06, 8.6258e-06, 8.6853e-06, 8.7448e-06, 8.8043e-06, 8.8637e-06, 8.9232e-06, 8.9827e-06, 9.0422e-06, 9.1017e-06, 9.1612e-06, 9.2207e-06, 9.2802e-06, 9.3397e-06, 9.3991e-06, 9.4586e-06, 9.5181e-06, 9.5776e-06, 9.6371e-06, 9.6966e-06, 9.7561e-06, 9.8156e-06, 9.8750e-06, 9.9345e-06, 9.9940e-06, 1.0054e-05, 1.0113e-05, 1.0172e-05, 1.0232e-05, 1.0291e-05, 1.0351e-05, 1.0410e-05, 1.0470e-05, 1.0529e-05, 1.0589e-05, 1.0648e-05, 1.0708e-05, 1.0767e-05, 1.0827e-05, 1.0886e-05, 1.0946e-05, 1.1005e-05, 1.1065e-05, 1.1124e-05, 1.1184e-05, 1.1243e-05, 1.1303e-05, 1.1362e-05, 1.1422e-05, 1.1481e-05, 1.1541e-05, 1.1600e-05, 1.1660e-05, 1.1719e-05, 1.1779e-05, 1.1838e-05, 1.1898e-05, 1.1957e-05, 1.2017e-05, 1.2076e-05, 1.2136e-05, 1.2195e-05, 1.2255e-05, 1.2314e-05, 1.2374e-05, 1.2433e-05, 1.2493e-05, 1.2552e-05, 1.2612e-05, 1.2671e-05, 1.2730e-05, 1.2790e-05, 1.2849e-05, 1.2909e-05, 1.2968e-05, 1.3028e-05, 1.3087e-05, 1.3147e-05, 1.3206e-05, 1.3266e-05, 1.3325e-05, 1.3385e-05, 1.3444e-05, 1.3504e-05, 1.3563e-05, 1.3623e-05, 1.3682e-05, 1.3742e-05, 1.3801e-05, 1.3861e-05, 1.3920e-05, 1.3980e-05, 1.4039e-05, 1.4099e-05, 1.4158e-05, 1.4218e-05, 1.4277e-05, 1.4337e-05, 1.4396e-05, 1.4456e-05, 1.4515e-05, 1.4575e-05, 1.4634e-05, 1.4694e-05, 1.4753e-05, 1.4813e-05, 1.4872e-05, 1.4932e-05, 1.4991e-05, 1.5051e-05, 1.5110e-05, 1.5169e-05, - 1.5229e-05, 1.5288e-05, 1.5348e-05, 1.5407e-05, 1.5467e-05, 1.5526e-05, 1.5586e-05, 1.5645e-05, 1.5705e-05, 1.5764e-05, 1.5824e-05, 1.5883e-05, 1.5943e-05, 1.6002e-05, 1.6062e-05, 1.6121e-05, 1.6181e-05, 1.6240e-05, 1.6300e-05, 1.6359e-05, 1.6419e-05, 1.6478e-05, 1.6538e-05, 1.6597e-05, 1.6657e-05, 1.6716e-05, 1.6776e-05, 1.6835e-05, 1.6895e-05, 1.6954e-05, 1.7014e-05, 1.7073e-05, 1.7133e-05, 1.7192e-05, 1.7252e-05, 1.7311e-05, 1.7371e-05, 1.7430e-05, 1.7490e-05, 1.7549e-05, 1.7609e-05, 1.7668e-05, 1.7727e-05, 1.7787e-05, 1.7846e-05, 1.7906e-05, 1.7965e-05, 1.8025e-05, 1.8084e-05, 1.8144e-05, 1.8203e-05, 1.8263e-05, 1.8322e-05, 1.8382e-05, 1.8441e-05, 1.8501e-05, 1.8560e-05, 1.8620e-05, 1.8679e-05, 1.8739e-05, 1.8798e-05, 1.8858e-05, 1.8917e-05, 1.8977e-05, 1.9036e-05, 1.9096e-05, 1.9155e-05, 1.9215e-05, 1.9274e-05, 1.9334e-05, 1.9393e-05, 1.9453e-05, 1.9512e-05, 1.9572e-05, 1.9631e-05, 1.9691e-05, 1.9750e-05, 1.9810e-05, 1.9869e-05, 1.9929e-05, 1.9988e-05, 2.0048e-05, 2.0107e-05, 2.0167e-05, 2.0226e-05, 2.0285e-05, 2.0345e-05, 2.0404e-05, 2.0464e-05, 2.0523e-05, 2.0583e-05, 2.0642e-05, 2.0702e-05, 2.0761e-05, 2.0821e-05, 2.0880e-05, 2.0940e-05, 2.0999e-05, 2.1059e-05, 2.1118e-05, 2.1178e-05, 2.1237e-05, 2.1297e-05, 2.1356e-05, 2.1416e-05, 2.1475e-05, 2.1535e-05, 2.1594e-05, 2.1654e-05, 2.1713e-05, 2.1773e-05, 2.1832e-05, 2.1892e-05, 2.1951e-05, 2.2011e-05, 2.2070e-05, 2.2130e-05, 2.2189e-05, 2.2249e-05, 2.2308e-05, 2.2368e-05, 2.2427e-05, 2.2487e-05, 2.2546e-05, 2.2606e-05, 2.2665e-05, 2.2725e-05, 2.2784e-05, 2.2843e-05, 2.2903e-05, 2.2962e-05, 2.3022e-05, 2.3081e-05, 2.3141e-05, 2.3200e-05, 2.3260e-05, 2.3319e-05, 2.3379e-05, 2.3438e-05, 2.3498e-05, 2.3557e-05, 2.3617e-05, 2.3676e-05, 2.3736e-05, 2.3795e-05, 2.3855e-05, 2.3914e-05, 2.3974e-05, 2.4033e-05, 2.4093e-05, 2.4152e-05, 2.4212e-05, 2.4271e-05, 2.4331e-05, 2.4390e-05, 2.4450e-05, 2.4509e-05, 2.4569e-05, 2.4628e-05, 2.4688e-05, 2.4747e-05, 2.4807e-05, 2.4866e-05, 2.4926e-05, 2.4985e-05, 2.5045e-05, 2.5104e-05, 2.5164e-05, 2.5223e-05, 2.5282e-05, 2.5342e-05, 2.5401e-05, 2.5461e-05, 2.5520e-05, 2.5580e-05, 2.5639e-05, 2.5699e-05, 2.5758e-05, 2.5818e-05, 2.5877e-05, 2.5937e-05, 2.5996e-05, 2.6056e-05, 2.6115e-05, 2.6175e-05, 2.6234e-05, 2.6294e-05, 2.6353e-05, 2.6413e-05, 2.6472e-05, 2.6532e-05, 2.6591e-05, 2.6651e-05, 2.6710e-05, 2.6770e-05, 2.6829e-05, 2.6889e-05, 2.6948e-05, 2.7008e-05, 2.7067e-05, 2.7127e-05, 2.7186e-05, 2.7246e-05, 2.7305e-05, 2.7365e-05, 2.7424e-05, 2.7484e-05, 2.7543e-05, 2.7603e-05, 2.7662e-05, 2.7722e-05, 2.7781e-05, 2.7840e-05, 2.7900e-05, 2.7959e-05, 2.8019e-05, 2.8078e-05, 2.8138e-05, 2.8197e-05, 2.8257e-05, 2.8316e-05, 2.8376e-05, 2.8435e-05, 2.8495e-05, 2.8554e-05, 2.8614e-05, 2.8673e-05, 2.8733e-05, 2.8792e-05, 2.8852e-05, 2.8911e-05, 2.8971e-05, 2.9030e-05, 2.9090e-05, 2.9149e-05, 2.9209e-05, 2.9268e-05, 2.9328e-05, 2.9387e-05, 2.9447e-05, 2.9506e-05, 2.9566e-05, 2.9625e-05, 2.9685e-05, 2.9744e-05, 2.9804e-05, 2.9863e-05, 2.9923e-05, 2.9982e-05, 3.0042e-05, 3.0101e-05, 3.0161e-05, 3.0220e-05, 3.0280e-05, 3.0339e-05, 3.0398e-05, - 3.0458e-05, 3.0577e-05, 3.0697e-05, 3.0816e-05, 3.0936e-05, 3.1055e-05, 3.1175e-05, 3.1294e-05, 3.1414e-05, 3.1533e-05, 3.1652e-05, 3.1772e-05, 3.1891e-05, 3.2011e-05, 3.2130e-05, 3.2250e-05, 3.2369e-05, 3.2489e-05, 3.2608e-05, 3.2727e-05, 3.2847e-05, 3.2966e-05, 3.3086e-05, 3.3205e-05, 3.3325e-05, 3.3444e-05, 3.3563e-05, 3.3683e-05, 3.3802e-05, 3.3922e-05, 3.4041e-05, 3.4161e-05, 3.4280e-05, 3.4400e-05, 3.4519e-05, 3.4638e-05, 3.4758e-05, 3.4877e-05, 3.4997e-05, 3.5116e-05, 3.5236e-05, 3.5355e-05, 3.5475e-05, 3.5594e-05, 3.5713e-05, 3.5833e-05, 3.5952e-05, 3.6072e-05, 3.6191e-05, 3.6311e-05, 3.6430e-05, 3.6550e-05, 3.6669e-05, 3.6788e-05, 3.6908e-05, 3.7027e-05, 3.7147e-05, 3.7266e-05, 3.7386e-05, 3.7505e-05, 3.7625e-05, 3.7744e-05, 3.7863e-05, 3.7983e-05, 3.8102e-05, 3.8222e-05, 3.8341e-05, 3.8461e-05, 3.8580e-05, 3.8700e-05, 3.8819e-05, 3.8938e-05, 3.9058e-05, 3.9177e-05, 3.9297e-05, 3.9416e-05, 3.9536e-05, 3.9655e-05, 3.9775e-05, 3.9894e-05, 4.0013e-05, 4.0133e-05, 4.0252e-05, 4.0372e-05, 4.0491e-05, 4.0611e-05, 4.0730e-05, 4.0850e-05, 4.0969e-05, 4.1088e-05, 4.1208e-05, 4.1327e-05, 4.1447e-05, 4.1566e-05, 4.1686e-05, 4.1805e-05, 4.1925e-05, 4.2044e-05, 4.2163e-05, 4.2283e-05, 4.2402e-05, 4.2522e-05, 4.2641e-05, 4.2761e-05, 4.2880e-05, 4.2999e-05, 4.3119e-05, 4.3238e-05, 4.3358e-05, 4.3477e-05, 4.3597e-05, 4.3716e-05, 4.3836e-05, 4.3955e-05, 4.4074e-05, 4.4194e-05, 4.4313e-05, 4.4433e-05, 4.4552e-05, 4.4672e-05, 4.4791e-05, 4.4911e-05, 4.5030e-05, 4.5149e-05, 4.5269e-05, 4.5388e-05, 4.5508e-05, 4.5627e-05, 4.5747e-05, 4.5866e-05, 4.5986e-05, 4.6105e-05, 4.6224e-05, 4.6344e-05, 4.6463e-05, 4.6583e-05, 4.6702e-05, 4.6822e-05, 4.6941e-05, 4.7061e-05, 4.7180e-05, 4.7299e-05, 4.7419e-05, 4.7538e-05, 4.7658e-05, 4.7777e-05, 4.7897e-05, 4.8016e-05, 4.8136e-05, 4.8255e-05, 4.8374e-05, 4.8494e-05, 4.8613e-05, 4.8733e-05, 4.8852e-05, 4.8972e-05, 4.9091e-05, 4.9211e-05, 4.9330e-05, 4.9449e-05, 4.9569e-05, 4.9688e-05, 4.9808e-05, 4.9927e-05, 5.0047e-05, 5.0166e-05, 5.0286e-05, 5.0405e-05, 5.0524e-05, 5.0644e-05, 5.0763e-05, 5.0883e-05, 5.1002e-05, 5.1122e-05, 5.1241e-05, 5.1361e-05, 5.1480e-05, 5.1599e-05, 5.1719e-05, 5.1838e-05, 5.1958e-05, 5.2077e-05, 5.2197e-05, 5.2316e-05, 5.2435e-05, 5.2555e-05, 5.2674e-05, 5.2794e-05, 5.2913e-05, 5.3033e-05, 5.3152e-05, 5.3272e-05, 5.3391e-05, 5.3510e-05, 5.3630e-05, 5.3749e-05, 5.3869e-05, 5.3988e-05, 5.4108e-05, 5.4227e-05, 5.4347e-05, 5.4466e-05, 5.4585e-05, 5.4705e-05, 5.4824e-05, 5.4944e-05, 5.5063e-05, 5.5183e-05, 5.5302e-05, 5.5422e-05, 5.5541e-05, 5.5660e-05, 5.5780e-05, 5.5899e-05, 5.6019e-05, 5.6138e-05, 5.6258e-05, 5.6377e-05, 5.6497e-05, 5.6616e-05, 5.6735e-05, 5.6855e-05, 5.6974e-05, 5.7094e-05, 5.7213e-05, 5.7333e-05, 5.7452e-05, 5.7572e-05, 5.7691e-05, 5.7810e-05, 5.7930e-05, 5.8049e-05, 5.8169e-05, 5.8288e-05, 5.8408e-05, 5.8527e-05, 5.8647e-05, 5.8766e-05, 5.8885e-05, 5.9005e-05, 5.9124e-05, 5.9244e-05, 5.9363e-05, 5.9483e-05, 5.9602e-05, 5.9722e-05, 5.9841e-05, 5.9960e-05, 6.0080e-05, 6.0199e-05, 6.0319e-05, 6.0438e-05, 6.0558e-05, 6.0677e-05, 6.0797e-05, 6.0916e-05, - 6.1154e-05, 6.1392e-05, 6.1631e-05, 6.1869e-05, 6.2107e-05, 6.2345e-05, 6.2583e-05, 6.2821e-05, 6.3060e-05, 6.3298e-05, 6.3536e-05, 6.3774e-05, 6.4012e-05, 6.4251e-05, 6.4489e-05, 6.4727e-05, 6.4965e-05, 6.5203e-05, 6.5441e-05, 6.5680e-05, 6.5918e-05, 6.6156e-05, 6.6394e-05, 6.6632e-05, 6.6871e-05, 6.7109e-05, 6.7347e-05, 6.7585e-05, 6.7823e-05, 6.8062e-05, 6.8300e-05, 6.8538e-05, 6.8776e-05, 6.9014e-05, 6.9252e-05, 6.9491e-05, 6.9729e-05, 6.9967e-05, 7.0205e-05, 7.0443e-05, 7.0682e-05, 7.0920e-05, 7.1158e-05, 7.1396e-05, 7.1634e-05, 7.1872e-05, 7.2111e-05, 7.2349e-05, 7.2587e-05, 7.2825e-05, 7.3063e-05, 7.3302e-05, 7.3540e-05, 7.3778e-05, 7.4016e-05, 7.4254e-05, 7.4493e-05, 7.4731e-05, 7.4969e-05, 7.5207e-05, 7.5445e-05, 7.5683e-05, 7.5922e-05, 7.6160e-05, 7.6398e-05, 7.6636e-05, 7.6874e-05, 7.7113e-05, 7.7351e-05, 7.7589e-05, 7.7827e-05, 7.8065e-05, 7.8304e-05, 7.8542e-05, 7.8780e-05, 7.9018e-05, 7.9256e-05, 7.9494e-05, 7.9733e-05, 7.9971e-05, 8.0209e-05, 8.0447e-05, 8.0685e-05, 8.0924e-05, 8.1162e-05, 8.1400e-05, 8.1638e-05, 8.1876e-05, 8.2114e-05, 8.2353e-05, 8.2591e-05, 8.2829e-05, 8.3067e-05, 8.3305e-05, 8.3544e-05, 8.3782e-05, 8.4020e-05, 8.4258e-05, 8.4496e-05, 8.4735e-05, 8.4973e-05, 8.5211e-05, 8.5449e-05, 8.5687e-05, 8.5925e-05, 8.6164e-05, 8.6402e-05, 8.6640e-05, 8.6878e-05, 8.7116e-05, 8.7355e-05, 8.7593e-05, 8.7831e-05, 8.8069e-05, 8.8307e-05, 8.8545e-05, 8.8784e-05, 8.9022e-05, 8.9260e-05, 8.9498e-05, 8.9736e-05, 8.9975e-05, 9.0213e-05, 9.0451e-05, 9.0689e-05, 9.0927e-05, 9.1166e-05, 9.1404e-05, 9.1642e-05, 9.1880e-05, 9.2118e-05, 9.2356e-05, 9.2595e-05, 9.2833e-05, 9.3071e-05, 9.3309e-05, 9.3547e-05, 9.3786e-05, 9.4024e-05, 9.4262e-05, 9.4500e-05, 9.4738e-05, 9.4977e-05, 9.5215e-05, 9.5453e-05, 9.5691e-05, 9.5929e-05, 9.6167e-05, 9.6406e-05, 9.6644e-05, 9.6882e-05, 9.7120e-05, 9.7358e-05, 9.7597e-05, 9.7835e-05, 9.8073e-05, 9.8311e-05, 9.8549e-05, 9.8787e-05, 9.9026e-05, 9.9264e-05, 9.9502e-05, 9.9740e-05, 9.9978e-05, 1.0022e-04, 1.0045e-04, 1.0069e-04, 1.0093e-04, 1.0117e-04, 1.0141e-04, 1.0165e-04, 1.0188e-04, 1.0212e-04, 1.0236e-04, 1.0260e-04, 1.0284e-04, 1.0307e-04, 1.0331e-04, 1.0355e-04, 1.0379e-04, 1.0403e-04, 1.0427e-04, 1.0450e-04, 1.0474e-04, 1.0498e-04, 1.0522e-04, 1.0546e-04, 1.0569e-04, 1.0593e-04, 1.0617e-04, 1.0641e-04, 1.0665e-04, 1.0689e-04, 1.0712e-04, 1.0736e-04, 1.0760e-04, 1.0784e-04, 1.0808e-04, 1.0831e-04, 1.0855e-04, 1.0879e-04, 1.0903e-04, 1.0927e-04, 1.0951e-04, 1.0974e-04, 1.0998e-04, 1.1022e-04, 1.1046e-04, 1.1070e-04, 1.1093e-04, 1.1117e-04, 1.1141e-04, 1.1165e-04, 1.1189e-04, 1.1213e-04, 1.1236e-04, 1.1260e-04, 1.1284e-04, 1.1308e-04, 1.1332e-04, 1.1355e-04, 1.1379e-04, 1.1403e-04, 1.1427e-04, 1.1451e-04, 1.1475e-04, 1.1498e-04, 1.1522e-04, 1.1546e-04, 1.1570e-04, 1.1594e-04, 1.1618e-04, 1.1641e-04, 1.1665e-04, 1.1689e-04, 1.1713e-04, 1.1737e-04, 1.1760e-04, 1.1784e-04, 1.1808e-04, 1.1832e-04, 1.1856e-04, 1.1880e-04, 1.1903e-04, 1.1927e-04, 1.1951e-04, 1.1975e-04, 1.1999e-04, 1.2022e-04, 1.2046e-04, 1.2070e-04, 1.2094e-04, 1.2118e-04, 1.2142e-04, 1.2165e-04, 1.2189e-04, - 1.2213e-04, 1.2237e-04, 1.2261e-04, 1.2284e-04, 1.2308e-04, 1.2332e-04, 1.2356e-04, 1.2380e-04, 1.2404e-04, 1.2427e-04, 1.2451e-04, 1.2475e-04, 1.2499e-04, 1.2523e-04, 1.2546e-04, 1.2570e-04, 1.2594e-04, 1.2618e-04, 1.2642e-04, 1.2666e-04, 1.2689e-04, 1.2713e-04, 1.2737e-04, 1.2761e-04, 1.2785e-04, 1.2808e-04, 1.2832e-04, 1.2856e-04, 1.2880e-04, 1.2904e-04, 1.2928e-04, 1.2951e-04, 1.2975e-04, 1.2999e-04, 1.3023e-04, 1.3047e-04, 1.3070e-04, 1.3094e-04, 1.3118e-04, 1.3142e-04, 1.3166e-04, 1.3190e-04, 1.3213e-04, 1.3237e-04, 1.3261e-04, 1.3285e-04, 1.3309e-04, 1.3332e-04, 1.3356e-04, 1.3380e-04, 1.3404e-04, 1.3428e-04, 1.3452e-04, 1.3475e-04, 1.3499e-04, 1.3523e-04, 1.3547e-04, 1.3571e-04, 1.3594e-04, 1.3618e-04, 1.3642e-04, 1.3666e-04, 1.3690e-04, 1.3714e-04, 1.3737e-04, 1.3761e-04, 1.3785e-04, 1.3809e-04, 1.3833e-04, 1.3856e-04, 1.3880e-04, 1.3904e-04, 1.3928e-04, 1.3952e-04, 1.3976e-04, 1.3999e-04, 1.4023e-04, 1.4047e-04, 1.4071e-04, 1.4095e-04, 1.4118e-04, 1.4142e-04, 1.4166e-04, 1.4190e-04, 1.4214e-04, 1.4238e-04, 1.4261e-04, 1.4285e-04, 1.4309e-04, 1.4333e-04, 1.4357e-04, 1.4380e-04, 1.4404e-04, 1.4428e-04, 1.4452e-04, 1.4476e-04, 1.4500e-04, 1.4523e-04, 1.4547e-04, 1.4571e-04, 1.4595e-04, 1.4619e-04, 1.4642e-04, 1.4666e-04, 1.4690e-04, 1.4714e-04, 1.4738e-04, 1.4762e-04, 1.4785e-04, 1.4809e-04, 1.4833e-04, 1.4857e-04, 1.4881e-04, 1.4904e-04, 1.4928e-04, 1.4952e-04, 1.4976e-04, 1.5000e-04, 1.5024e-04, 1.5047e-04, 1.5071e-04, 1.5095e-04, 1.5119e-04, 1.5143e-04, 1.5166e-04, 1.5190e-04, 1.5214e-04, 1.5238e-04, 1.5262e-04, 1.5286e-04, 1.5309e-04, 1.5333e-04, 1.5357e-04, 1.5381e-04, 1.5405e-04, 1.5428e-04, 1.5452e-04, 1.5476e-04, 1.5500e-04, 1.5524e-04, 1.5548e-04, 1.5571e-04, 1.5595e-04, 1.5619e-04, 1.5643e-04, 1.5667e-04, 1.5690e-04, 1.5714e-04, 1.5738e-04, 1.5762e-04, 1.5786e-04, 1.5810e-04, 1.5833e-04, 1.5857e-04, 1.5881e-04, 1.5905e-04, 1.5929e-04, 1.5952e-04, 1.5976e-04, 1.6000e-04, 1.6024e-04, 1.6048e-04, 1.6072e-04, 1.6095e-04, 1.6119e-04, 1.6143e-04, 1.6167e-04, 1.6191e-04, 1.6214e-04, 1.6238e-04, 1.6262e-04, 1.6286e-04, 1.6310e-04, 1.6334e-04, 1.6357e-04, 1.6381e-04, 1.6405e-04, 1.6429e-04, 1.6453e-04, 1.6476e-04, 1.6500e-04, 1.6524e-04, 1.6548e-04, 1.6572e-04, 1.6596e-04, 1.6619e-04, 1.6643e-04, 1.6667e-04, 1.6691e-04, 1.6715e-04, 1.6738e-04, 1.6762e-04, 1.6786e-04, 1.6810e-04, 1.6834e-04, 1.6858e-04, 1.6881e-04, 1.6905e-04, 1.6929e-04, 1.6953e-04, 1.6977e-04, 1.7001e-04, 1.7024e-04, 1.7048e-04, 1.7072e-04, 1.7096e-04, 1.7120e-04, 1.7143e-04, 1.7167e-04, 1.7191e-04, 1.7215e-04, 1.7239e-04, 1.7263e-04, 1.7286e-04, 1.7310e-04, 1.7334e-04, 1.7358e-04, 1.7382e-04, 1.7405e-04, 1.7429e-04, 1.7453e-04, 1.7477e-04, 1.7501e-04, 1.7525e-04, 1.7548e-04, 1.7572e-04, 1.7596e-04, 1.7620e-04, 1.7644e-04, 1.7667e-04, 1.7691e-04, 1.7715e-04, 1.7739e-04, 1.7763e-04, 1.7787e-04, 1.7810e-04, 1.7834e-04, 1.7858e-04, 1.7882e-04, 1.7906e-04, 1.7929e-04, 1.7953e-04, 1.7977e-04, 1.8001e-04, 1.8025e-04, 1.8049e-04, 1.8072e-04, 1.8096e-04, 1.8120e-04, 1.8144e-04, 1.8168e-04, 1.8191e-04, 1.8215e-04, 1.8239e-04, 1.8263e-04, 1.8287e-04, - 1.8311e-04, 1.8334e-04, 1.8358e-04, 1.8382e-04, 1.8406e-04, 1.8430e-04, 1.8453e-04, 1.8477e-04, 1.8501e-04, 1.8525e-04, 1.8549e-04, 1.8573e-04, 1.8596e-04, 1.8620e-04, 1.8644e-04, 1.8668e-04, 1.8692e-04, 1.8715e-04, 1.8739e-04, 1.8763e-04, 1.8787e-04, 1.8811e-04, 1.8835e-04, 1.8858e-04, 1.8882e-04, 1.8906e-04, 1.8930e-04, 1.8954e-04, 1.8977e-04, 1.9001e-04, 1.9025e-04, 1.9049e-04, 1.9073e-04, 1.9097e-04, 1.9120e-04, 1.9144e-04, 1.9168e-04, 1.9192e-04, 1.9216e-04, 1.9239e-04, 1.9263e-04, 1.9287e-04, 1.9311e-04, 1.9335e-04, 1.9359e-04, 1.9382e-04, 1.9406e-04, 1.9430e-04, 1.9454e-04, 1.9478e-04, 1.9501e-04, 1.9525e-04, 1.9549e-04, 1.9573e-04, 1.9597e-04, 1.9621e-04, 1.9644e-04, 1.9668e-04, 1.9692e-04, 1.9716e-04, 1.9740e-04, 1.9763e-04, 1.9787e-04, 1.9811e-04, 1.9835e-04, 1.9859e-04, 1.9883e-04, 1.9906e-04, 1.9930e-04, 1.9954e-04, 1.9978e-04, 2.0002e-04, 2.0025e-04, 2.0049e-04, 2.0073e-04, 2.0097e-04, 2.0121e-04, 2.0145e-04, 2.0168e-04, 2.0192e-04, 2.0216e-04, 2.0240e-04, 2.0264e-04, 2.0287e-04, 2.0311e-04, 2.0335e-04, 2.0359e-04, 2.0383e-04, 2.0407e-04, 2.0430e-04, 2.0454e-04, 2.0478e-04, 2.0502e-04, 2.0526e-04, 2.0549e-04, 2.0573e-04, 2.0597e-04, 2.0621e-04, 2.0645e-04, 2.0669e-04, 2.0692e-04, 2.0716e-04, 2.0740e-04, 2.0764e-04, 2.0788e-04, 2.0811e-04, 2.0835e-04, 2.0859e-04, 2.0883e-04, 2.0907e-04, 2.0931e-04, 2.0954e-04, 2.0978e-04, 2.1002e-04, 2.1026e-04, 2.1050e-04, 2.1073e-04, 2.1097e-04, 2.1121e-04, 2.1145e-04, 2.1169e-04, 2.1193e-04, 2.1216e-04, 2.1240e-04, 2.1264e-04, 2.1288e-04, 2.1312e-04, 2.1335e-04, 2.1359e-04, 2.1383e-04, 2.1407e-04, 2.1431e-04, 2.1455e-04, 2.1478e-04, 2.1502e-04, 2.1526e-04, 2.1550e-04, 2.1574e-04, 2.1597e-04, 2.1621e-04, 2.1645e-04, 2.1669e-04, 2.1693e-04, 2.1717e-04, 2.1740e-04, 2.1764e-04, 2.1788e-04, 2.1812e-04, 2.1836e-04, 2.1859e-04, 2.1883e-04, 2.1907e-04, 2.1931e-04, 2.1955e-04, 2.1979e-04, 2.2002e-04, 2.2026e-04, 2.2050e-04, 2.2074e-04, 2.2098e-04, 2.2121e-04, 2.2145e-04, 2.2169e-04, 2.2193e-04, 2.2217e-04, 2.2241e-04, 2.2264e-04, 2.2288e-04, 2.2312e-04, 2.2336e-04, 2.2360e-04, 2.2383e-04, 2.2407e-04, 2.2431e-04, 2.2455e-04, 2.2479e-04, 2.2503e-04, 2.2526e-04, 2.2550e-04, 2.2574e-04, 2.2598e-04, 2.2622e-04, 2.2646e-04, 2.2669e-04, 2.2693e-04, 2.2717e-04, 2.2741e-04, 2.2765e-04, 2.2788e-04, 2.2812e-04, 2.2836e-04, 2.2860e-04, 2.2884e-04, 2.2908e-04, 2.2931e-04, 2.2955e-04, 2.2979e-04, 2.3003e-04, 2.3027e-04, 2.3050e-04, 2.3074e-04, 2.3098e-04, 2.3122e-04, 2.3146e-04, 2.3170e-04, 2.3193e-04, 2.3217e-04, 2.3241e-04, 2.3265e-04, 2.3289e-04, 2.3312e-04, 2.3336e-04, 2.3360e-04, 2.3384e-04, 2.3408e-04, 2.3432e-04, 2.3455e-04, 2.3479e-04, 2.3503e-04, 2.3527e-04, 2.3551e-04, 2.3574e-04, 2.3598e-04, 2.3622e-04, 2.3646e-04, 2.3670e-04, 2.3694e-04, 2.3717e-04, 2.3741e-04, 2.3765e-04, 2.3789e-04, 2.3813e-04, 2.3836e-04, 2.3860e-04, 2.3884e-04, 2.3908e-04, 2.3932e-04, 2.3956e-04, 2.3979e-04, 2.4003e-04, 2.4027e-04, 2.4051e-04, 2.4075e-04, 2.4098e-04, 2.4122e-04, 2.4146e-04, 2.4170e-04, 2.4194e-04, 2.4218e-04, 2.4241e-04, 2.4265e-04, 2.4289e-04, 2.4313e-04, 2.4337e-04, 2.4360e-04, 2.4384e-04, - 2.4480e-04, 2.4575e-04, 2.4670e-04, 2.4766e-04, 2.4861e-04, 2.4956e-04, 2.5052e-04, 2.5147e-04, 2.5242e-04, 2.5337e-04, 2.5433e-04, 2.5528e-04, 2.5623e-04, 2.5719e-04, 2.5814e-04, 2.5909e-04, 2.6005e-04, 2.6100e-04, 2.6195e-04, 2.6291e-04, 2.6386e-04, 2.6481e-04, 2.6577e-04, 2.6672e-04, 2.6767e-04, 2.6863e-04, 2.6958e-04, 2.7053e-04, 2.7149e-04, 2.7244e-04, 2.7339e-04, 2.7435e-04, 2.7530e-04, 2.7625e-04, 2.7720e-04, 2.7816e-04, 2.7911e-04, 2.8006e-04, 2.8102e-04, 2.8197e-04, 2.8292e-04, 2.8388e-04, 2.8483e-04, 2.8578e-04, 2.8674e-04, 2.8769e-04, 2.8864e-04, 2.8960e-04, 2.9055e-04, 2.9150e-04, 2.9246e-04, 2.9341e-04, 2.9436e-04, 2.9532e-04, 2.9627e-04, 2.9722e-04, 2.9818e-04, 2.9913e-04, 3.0008e-04, 3.0104e-04, 3.0199e-04, 3.0294e-04, 3.0389e-04, 3.0485e-04, 3.0580e-04, 3.0675e-04, 3.0771e-04, 3.0866e-04, 3.0961e-04, 3.1057e-04, 3.1152e-04, 3.1247e-04, 3.1343e-04, 3.1438e-04, 3.1533e-04, 3.1629e-04, 3.1724e-04, 3.1819e-04, 3.1915e-04, 3.2010e-04, 3.2105e-04, 3.2201e-04, 3.2296e-04, 3.2391e-04, 3.2487e-04, 3.2582e-04, 3.2677e-04, 3.2772e-04, 3.2868e-04, 3.2963e-04, 3.3058e-04, 3.3154e-04, 3.3249e-04, 3.3344e-04, 3.3440e-04, 3.3535e-04, 3.3630e-04, 3.3726e-04, 3.3821e-04, 3.3916e-04, 3.4012e-04, 3.4107e-04, 3.4202e-04, 3.4298e-04, 3.4393e-04, 3.4488e-04, 3.4584e-04, 3.4679e-04, 3.4774e-04, 3.4870e-04, 3.4965e-04, 3.5060e-04, 3.5156e-04, 3.5251e-04, 3.5346e-04, 3.5441e-04, 3.5537e-04, 3.5632e-04, 3.5727e-04, 3.5823e-04, 3.5918e-04, 3.6013e-04, 3.6109e-04, 3.6204e-04, 3.6299e-04, 3.6395e-04, 3.6490e-04, 3.6585e-04, 3.6681e-04, 3.6776e-04, 3.6871e-04, 3.6967e-04, 3.7062e-04, 3.7157e-04, 3.7253e-04, 3.7348e-04, 3.7443e-04, 3.7539e-04, 3.7634e-04, 3.7729e-04, 3.7825e-04, 3.7920e-04, 3.8015e-04, 3.8110e-04, 3.8206e-04, 3.8301e-04, 3.8396e-04, 3.8492e-04, 3.8587e-04, 3.8682e-04, 3.8778e-04, 3.8873e-04, 3.8968e-04, 3.9064e-04, 3.9159e-04, 3.9254e-04, 3.9350e-04, 3.9445e-04, 3.9540e-04, 3.9636e-04, 3.9731e-04, 3.9826e-04, 3.9922e-04, 4.0017e-04, 4.0112e-04, 4.0208e-04, 4.0303e-04, 4.0398e-04, 4.0493e-04, 4.0589e-04, 4.0684e-04, 4.0779e-04, 4.0875e-04, 4.0970e-04, 4.1065e-04, 4.1161e-04, 4.1256e-04, 4.1351e-04, 4.1447e-04, 4.1542e-04, 4.1637e-04, 4.1733e-04, 4.1828e-04, 4.1923e-04, 4.2019e-04, 4.2114e-04, 4.2209e-04, 4.2305e-04, 4.2400e-04, 4.2495e-04, 4.2591e-04, 4.2686e-04, 4.2781e-04, 4.2877e-04, 4.2972e-04, 4.3067e-04, 4.3162e-04, 4.3258e-04, 4.3353e-04, 4.3448e-04, 4.3544e-04, 4.3639e-04, 4.3734e-04, 4.3830e-04, 4.3925e-04, 4.4020e-04, 4.4116e-04, 4.4211e-04, 4.4306e-04, 4.4402e-04, 4.4497e-04, 4.4592e-04, 4.4688e-04, 4.4783e-04, 4.4878e-04, 4.4974e-04, 4.5069e-04, 4.5164e-04, 4.5260e-04, 4.5355e-04, 4.5450e-04, 4.5545e-04, 4.5641e-04, 4.5736e-04, 4.5831e-04, 4.5927e-04, 4.6022e-04, 4.6117e-04, 4.6213e-04, 4.6308e-04, 4.6403e-04, 4.6499e-04, 4.6594e-04, 4.6689e-04, 4.6785e-04, 4.6880e-04, 4.6975e-04, 4.7071e-04, 4.7166e-04, 4.7261e-04, 4.7357e-04, 4.7452e-04, 4.7547e-04, 4.7643e-04, 4.7738e-04, 4.7833e-04, 4.7929e-04, 4.8024e-04, 4.8119e-04, 4.8214e-04, 4.8310e-04, 4.8405e-04, 4.8500e-04, 4.8596e-04, 4.8691e-04, 4.8786e-04, - 4.8977e-04, 4.9168e-04, 4.9358e-04, 4.9549e-04, 4.9740e-04, 4.9931e-04, 5.0121e-04, 5.0312e-04, 5.0503e-04, 5.0693e-04, 5.0884e-04, 5.1075e-04, 5.1265e-04, 5.1456e-04, 5.1647e-04, 5.1837e-04, 5.2028e-04, 5.2219e-04, 5.2409e-04, 5.2600e-04, 5.2791e-04, 5.2982e-04, 5.3172e-04, 5.3363e-04, 5.3554e-04, 5.3744e-04, 5.3935e-04, 5.4126e-04, 5.4316e-04, 5.4507e-04, 5.4698e-04, 5.4888e-04, 5.5079e-04, 5.5270e-04, 5.5460e-04, 5.5651e-04, 5.5842e-04, 5.6033e-04, 5.6223e-04, 5.6414e-04, 5.6605e-04, 5.6795e-04, 5.6986e-04, 5.7177e-04, 5.7367e-04, 5.7558e-04, 5.7749e-04, 5.7939e-04, 5.8130e-04, 5.8321e-04, 5.8512e-04, 5.8702e-04, 5.8893e-04, 5.9084e-04, 5.9274e-04, 5.9465e-04, 5.9656e-04, 5.9846e-04, 6.0037e-04, 6.0228e-04, 6.0418e-04, 6.0609e-04, 6.0800e-04, 6.0990e-04, 6.1181e-04, 6.1372e-04, 6.1563e-04, 6.1753e-04, 6.1944e-04, 6.2135e-04, 6.2325e-04, 6.2516e-04, 6.2707e-04, 6.2897e-04, 6.3088e-04, 6.3279e-04, 6.3469e-04, 6.3660e-04, 6.3851e-04, 6.4041e-04, 6.4232e-04, 6.4423e-04, 6.4614e-04, 6.4804e-04, 6.4995e-04, 6.5186e-04, 6.5376e-04, 6.5567e-04, 6.5758e-04, 6.5948e-04, 6.6139e-04, 6.6330e-04, 6.6520e-04, 6.6711e-04, 6.6902e-04, 6.7092e-04, 6.7283e-04, 6.7474e-04, 6.7665e-04, 6.7855e-04, 6.8046e-04, 6.8237e-04, 6.8427e-04, 6.8618e-04, 6.8809e-04, 6.8999e-04, 6.9190e-04, 6.9381e-04, 6.9571e-04, 6.9762e-04, 6.9953e-04, 7.0143e-04, 7.0334e-04, 7.0525e-04, 7.0716e-04, 7.0906e-04, 7.1097e-04, 7.1288e-04, 7.1478e-04, 7.1669e-04, 7.1860e-04, 7.2050e-04, 7.2241e-04, 7.2432e-04, 7.2622e-04, 7.2813e-04, 7.3004e-04, 7.3195e-04, 7.3385e-04, 7.3576e-04, 7.3767e-04, 7.3957e-04, 7.4148e-04, 7.4339e-04, 7.4529e-04, 7.4720e-04, 7.4911e-04, 7.5101e-04, 7.5292e-04, 7.5483e-04, 7.5673e-04, 7.5864e-04, 7.6055e-04, 7.6246e-04, 7.6436e-04, 7.6627e-04, 7.6818e-04, 7.7008e-04, 7.7199e-04, 7.7390e-04, 7.7580e-04, 7.7771e-04, 7.7962e-04, 7.8152e-04, 7.8343e-04, 7.8534e-04, 7.8724e-04, 7.8915e-04, 7.9106e-04, 7.9297e-04, 7.9487e-04, 7.9678e-04, 7.9869e-04, 8.0059e-04, 8.0250e-04, 8.0441e-04, 8.0631e-04, 8.0822e-04, 8.1013e-04, 8.1203e-04, 8.1394e-04, 8.1585e-04, 8.1775e-04, 8.1966e-04, 8.2157e-04, 8.2348e-04, 8.2538e-04, 8.2729e-04, 8.2920e-04, 8.3110e-04, 8.3301e-04, 8.3492e-04, 8.3682e-04, 8.3873e-04, 8.4064e-04, 8.4254e-04, 8.4445e-04, 8.4636e-04, 8.4826e-04, 8.5017e-04, 8.5208e-04, 8.5399e-04, 8.5589e-04, 8.5780e-04, 8.5971e-04, 8.6161e-04, 8.6352e-04, 8.6543e-04, 8.6733e-04, 8.6924e-04, 8.7115e-04, 8.7305e-04, 8.7496e-04, 8.7687e-04, 8.7878e-04, 8.8068e-04, 8.8259e-04, 8.8450e-04, 8.8640e-04, 8.8831e-04, 8.9022e-04, 8.9212e-04, 8.9403e-04, 8.9594e-04, 8.9784e-04, 8.9975e-04, 9.0166e-04, 9.0356e-04, 9.0547e-04, 9.0738e-04, 9.0929e-04, 9.1119e-04, 9.1310e-04, 9.1501e-04, 9.1691e-04, 9.1882e-04, 9.2073e-04, 9.2263e-04, 9.2454e-04, 9.2645e-04, 9.2835e-04, 9.3026e-04, 9.3217e-04, 9.3407e-04, 9.3598e-04, 9.3789e-04, 9.3980e-04, 9.4170e-04, 9.4361e-04, 9.4552e-04, 9.4742e-04, 9.4933e-04, 9.5124e-04, 9.5314e-04, 9.5505e-04, 9.5696e-04, 9.5886e-04, 9.6077e-04, 9.6268e-04, 9.6458e-04, 9.6649e-04, 9.6840e-04, 9.7031e-04, 9.7221e-04, 9.7412e-04, 9.7603e-04, - 9.7984e-04, 9.8365e-04, 9.8747e-04, 9.9128e-04, 9.9510e-04, 9.9891e-04, 1.0027e-03, 1.0065e-03, 1.0104e-03, 1.0142e-03, 1.0180e-03, 1.0218e-03, 1.0256e-03, 1.0294e-03, 1.0332e-03, 1.0371e-03, 1.0409e-03, 1.0447e-03, 1.0485e-03, 1.0523e-03, 1.0561e-03, 1.0599e-03, 1.0638e-03, 1.0676e-03, 1.0714e-03, 1.0752e-03, 1.0790e-03, 1.0828e-03, 1.0866e-03, 1.0905e-03, 1.0943e-03, 1.0981e-03, 1.1019e-03, 1.1057e-03, 1.1095e-03, 1.1133e-03, 1.1172e-03, 1.1210e-03, 1.1248e-03, 1.1286e-03, 1.1324e-03, 1.1362e-03, 1.1400e-03, 1.1439e-03, 1.1477e-03, 1.1515e-03, 1.1553e-03, 1.1591e-03, 1.1629e-03, 1.1667e-03, 1.1706e-03, 1.1744e-03, 1.1782e-03, 1.1820e-03, 1.1858e-03, 1.1896e-03, 1.1934e-03, 1.1973e-03, 1.2011e-03, 1.2049e-03, 1.2087e-03, 1.2125e-03, 1.2163e-03, 1.2201e-03, 1.2240e-03, 1.2278e-03, 1.2316e-03, 1.2354e-03, 1.2392e-03, 1.2430e-03, 1.2468e-03, 1.2507e-03, 1.2545e-03, 1.2583e-03, 1.2621e-03, 1.2659e-03, 1.2697e-03, 1.2735e-03, 1.2774e-03, 1.2812e-03, 1.2850e-03, 1.2888e-03, 1.2926e-03, 1.2964e-03, 1.3002e-03, 1.3040e-03, 1.3079e-03, 1.3117e-03, 1.3155e-03, 1.3193e-03, 1.3231e-03, 1.3269e-03, 1.3307e-03, 1.3346e-03, 1.3384e-03, 1.3422e-03, 1.3460e-03, 1.3498e-03, 1.3536e-03, 1.3574e-03, 1.3613e-03, 1.3651e-03, 1.3689e-03, 1.3727e-03, 1.3765e-03, 1.3803e-03, 1.3841e-03, 1.3880e-03, 1.3918e-03, 1.3956e-03, 1.3994e-03, 1.4032e-03, 1.4070e-03, 1.4108e-03, 1.4147e-03, 1.4185e-03, 1.4223e-03, 1.4261e-03, 1.4299e-03, 1.4337e-03, 1.4375e-03, 1.4414e-03, 1.4452e-03, 1.4490e-03, 1.4528e-03, 1.4566e-03, 1.4604e-03, 1.4642e-03, 1.4681e-03, 1.4719e-03, 1.4757e-03, 1.4795e-03, 1.4833e-03, 1.4871e-03, 1.4909e-03, 1.4948e-03, 1.4986e-03, 1.5024e-03, 1.5062e-03, 1.5100e-03, 1.5138e-03, 1.5176e-03, 1.5215e-03, 1.5253e-03, 1.5291e-03, 1.5329e-03, 1.5367e-03, 1.5405e-03, 1.5443e-03, 1.5482e-03, 1.5520e-03, 1.5558e-03, 1.5596e-03, 1.5634e-03, 1.5672e-03, 1.5710e-03, 1.5749e-03, 1.5787e-03, 1.5825e-03, 1.5863e-03, 1.5901e-03, 1.5939e-03, 1.5977e-03, 1.6016e-03, 1.6054e-03, 1.6092e-03, 1.6130e-03, 1.6168e-03, 1.6206e-03, 1.6244e-03, 1.6283e-03, 1.6321e-03, 1.6359e-03, 1.6397e-03, 1.6435e-03, 1.6473e-03, 1.6511e-03, 1.6550e-03, 1.6588e-03, 1.6626e-03, 1.6664e-03, 1.6702e-03, 1.6740e-03, 1.6778e-03, 1.6817e-03, 1.6855e-03, 1.6893e-03, 1.6931e-03, 1.6969e-03, 1.7007e-03, 1.7045e-03, 1.7084e-03, 1.7122e-03, 1.7160e-03, 1.7198e-03, 1.7236e-03, 1.7274e-03, 1.7312e-03, 1.7351e-03, 1.7389e-03, 1.7427e-03, 1.7465e-03, 1.7503e-03, 1.7541e-03, 1.7579e-03, 1.7618e-03, 1.7656e-03, 1.7694e-03, 1.7732e-03, 1.7770e-03, 1.7808e-03, 1.7846e-03, 1.7885e-03, 1.7923e-03, 1.7961e-03, 1.7999e-03, 1.8037e-03, 1.8075e-03, 1.8113e-03, 1.8152e-03, 1.8190e-03, 1.8228e-03, 1.8266e-03, 1.8304e-03, 1.8342e-03, 1.8380e-03, 1.8419e-03, 1.8457e-03, 1.8495e-03, 1.8533e-03, 1.8571e-03, 1.8609e-03, 1.8647e-03, 1.8686e-03, 1.8724e-03, 1.8762e-03, 1.8800e-03, 1.8838e-03, 1.8876e-03, 1.8914e-03, 1.8953e-03, 1.8991e-03, 1.9029e-03, 1.9067e-03, 1.9105e-03, 1.9143e-03, 1.9181e-03, 1.9220e-03, 1.9258e-03, 1.9296e-03, 1.9334e-03, 1.9372e-03, 1.9410e-03, 1.9448e-03, 1.9487e-03, 1.9525e-03, - 1.9601e-03, 1.9677e-03, 1.9754e-03, 1.9830e-03, 1.9906e-03, 1.9982e-03, 2.0059e-03, 2.0135e-03, 2.0211e-03, 2.0288e-03, 2.0364e-03, 2.0440e-03, 2.0516e-03, 2.0593e-03, 2.0669e-03, 2.0745e-03, 2.0822e-03, 2.0898e-03, 2.0974e-03, 2.1050e-03, 2.1127e-03, 2.1203e-03, 2.1279e-03, 2.1356e-03, 2.1432e-03, 2.1508e-03, 2.1585e-03, 2.1661e-03, 2.1737e-03, 2.1813e-03, 2.1890e-03, 2.1966e-03, 2.2042e-03, 2.2119e-03, 2.2195e-03, 2.2271e-03, 2.2347e-03, 2.2424e-03, 2.2500e-03, 2.2576e-03, 2.2653e-03, 2.2729e-03, 2.2805e-03, 2.2881e-03, 2.2958e-03, 2.3034e-03, 2.3110e-03, 2.3187e-03, 2.3263e-03, 2.3339e-03, 2.3415e-03, 2.3492e-03, 2.3568e-03, 2.3644e-03, 2.3721e-03, 2.3797e-03, 2.3873e-03, 2.3949e-03, 2.4026e-03, 2.4102e-03, 2.4178e-03, 2.4255e-03, 2.4331e-03, 2.4407e-03, 2.4483e-03, 2.4560e-03, 2.4636e-03, 2.4712e-03, 2.4789e-03, 2.4865e-03, 2.4941e-03, 2.5018e-03, 2.5094e-03, 2.5170e-03, 2.5246e-03, 2.5323e-03, 2.5399e-03, 2.5475e-03, 2.5552e-03, 2.5628e-03, 2.5704e-03, 2.5780e-03, 2.5857e-03, 2.5933e-03, 2.6009e-03, 2.6086e-03, 2.6162e-03, 2.6238e-03, 2.6314e-03, 2.6391e-03, 2.6467e-03, 2.6543e-03, 2.6620e-03, 2.6696e-03, 2.6772e-03, 2.6848e-03, 2.6925e-03, 2.7001e-03, 2.7077e-03, 2.7154e-03, 2.7230e-03, 2.7306e-03, 2.7382e-03, 2.7459e-03, 2.7535e-03, 2.7611e-03, 2.7688e-03, 2.7764e-03, 2.7840e-03, 2.7917e-03, 2.7993e-03, 2.8069e-03, 2.8145e-03, 2.8222e-03, 2.8298e-03, 2.8374e-03, 2.8451e-03, 2.8527e-03, 2.8603e-03, 2.8679e-03, 2.8756e-03, 2.8832e-03, 2.8908e-03, 2.8985e-03, 2.9061e-03, 2.9137e-03, 2.9213e-03, 2.9290e-03, 2.9366e-03, 2.9442e-03, 2.9519e-03, 2.9595e-03, 2.9671e-03, 2.9747e-03, 2.9824e-03, 2.9900e-03, 2.9976e-03, 3.0053e-03, 3.0129e-03, 3.0205e-03, 3.0281e-03, 3.0358e-03, 3.0434e-03, 3.0510e-03, 3.0587e-03, 3.0663e-03, 3.0739e-03, 3.0816e-03, 3.0892e-03, 3.0968e-03, 3.1044e-03, 3.1121e-03, 3.1197e-03, 3.1273e-03, 3.1350e-03, 3.1426e-03, 3.1502e-03, 3.1578e-03, 3.1655e-03, 3.1731e-03, 3.1807e-03, 3.1884e-03, 3.1960e-03, 3.2036e-03, 3.2112e-03, 3.2189e-03, 3.2265e-03, 3.2341e-03, 3.2418e-03, 3.2494e-03, 3.2570e-03, 3.2646e-03, 3.2723e-03, 3.2799e-03, 3.2875e-03, 3.2952e-03, 3.3028e-03, 3.3104e-03, 3.3180e-03, 3.3257e-03, 3.3333e-03, 3.3409e-03, 3.3486e-03, 3.3562e-03, 3.3638e-03, 3.3715e-03, 3.3791e-03, 3.3867e-03, 3.3943e-03, 3.4020e-03, 3.4096e-03, 3.4172e-03, 3.4249e-03, 3.4325e-03, 3.4401e-03, 3.4477e-03, 3.4554e-03, 3.4630e-03, 3.4706e-03, 3.4783e-03, 3.4859e-03, 3.4935e-03, 3.5011e-03, 3.5088e-03, 3.5164e-03, 3.5240e-03, 3.5317e-03, 3.5393e-03, 3.5469e-03, 3.5545e-03, 3.5622e-03, 3.5698e-03, 3.5774e-03, 3.5851e-03, 3.5927e-03, 3.6003e-03, 3.6079e-03, 3.6156e-03, 3.6232e-03, 3.6308e-03, 3.6385e-03, 3.6461e-03, 3.6537e-03, 3.6613e-03, 3.6690e-03, 3.6766e-03, 3.6842e-03, 3.6919e-03, 3.6995e-03, 3.7071e-03, 3.7148e-03, 3.7224e-03, 3.7300e-03, 3.7376e-03, 3.7453e-03, 3.7529e-03, 3.7605e-03, 3.7682e-03, 3.7758e-03, 3.7834e-03, 3.7910e-03, 3.7987e-03, 3.8063e-03, 3.8139e-03, 3.8216e-03, 3.8292e-03, 3.8368e-03, 3.8444e-03, 3.8521e-03, 3.8597e-03, 3.8673e-03, 3.8750e-03, 3.8826e-03, 3.8902e-03, 3.8978e-03, 3.9055e-03, - 3.9207e-03, 3.9360e-03, 3.9513e-03, 3.9665e-03, 3.9818e-03, 3.9970e-03, 4.0123e-03, 4.0275e-03, 4.0428e-03, 4.0581e-03, 4.0733e-03, 4.0886e-03, 4.1038e-03, 4.1191e-03, 4.1343e-03, 4.1496e-03, 4.1649e-03, 4.1801e-03, 4.1954e-03, 4.2106e-03, 4.2259e-03, 4.2412e-03, 4.2564e-03, 4.2717e-03, 4.2869e-03, 4.3022e-03, 4.3174e-03, 4.3327e-03, 4.3480e-03, 4.3632e-03, 4.3785e-03, 4.3937e-03, 4.4090e-03, 4.4243e-03, 4.4395e-03, 4.4548e-03, 4.4700e-03, 4.4853e-03, 4.5005e-03, 4.5158e-03, 4.5311e-03, 4.5463e-03, 4.5616e-03, 4.5768e-03, 4.5921e-03, 4.6074e-03, 4.6226e-03, 4.6379e-03, 4.6531e-03, 4.6684e-03, 4.6836e-03, 4.6989e-03, 4.7142e-03, 4.7294e-03, 4.7447e-03, 4.7599e-03, 4.7752e-03, 4.7905e-03, 4.8057e-03, 4.8210e-03, 4.8362e-03, 4.8515e-03, 4.8667e-03, 4.8820e-03, 4.8973e-03, 4.9125e-03, 4.9278e-03, 4.9430e-03, 4.9583e-03, 4.9736e-03, 4.9888e-03, 5.0041e-03, 5.0193e-03, 5.0346e-03, 5.0498e-03, 5.0651e-03, 5.0804e-03, 5.0956e-03, 5.1109e-03, 5.1261e-03, 5.1414e-03, 5.1567e-03, 5.1719e-03, 5.1872e-03, 5.2024e-03, 5.2177e-03, 5.2329e-03, 5.2482e-03, 5.2635e-03, 5.2787e-03, 5.2940e-03, 5.3092e-03, 5.3245e-03, 5.3398e-03, 5.3550e-03, 5.3703e-03, 5.3855e-03, 5.4008e-03, 5.4160e-03, 5.4313e-03, 5.4466e-03, 5.4618e-03, 5.4771e-03, 5.4923e-03, 5.5076e-03, 5.5229e-03, 5.5381e-03, 5.5534e-03, 5.5686e-03, 5.5839e-03, 5.5991e-03, 5.6144e-03, 5.6297e-03, 5.6449e-03, 5.6602e-03, 5.6754e-03, 5.6907e-03, 5.7060e-03, 5.7212e-03, 5.7365e-03, 5.7517e-03, 5.7670e-03, 5.7822e-03, 5.7975e-03, 5.8128e-03, 5.8280e-03, 5.8433e-03, 5.8585e-03, 5.8738e-03, 5.8891e-03, 5.9043e-03, 5.9196e-03, 5.9348e-03, 5.9501e-03, 5.9653e-03, 5.9806e-03, 5.9959e-03, 6.0111e-03, 6.0264e-03, 6.0416e-03, 6.0569e-03, 6.0722e-03, 6.0874e-03, 6.1027e-03, 6.1179e-03, 6.1332e-03, 6.1484e-03, 6.1637e-03, 6.1790e-03, 6.1942e-03, 6.2095e-03, 6.2247e-03, 6.2400e-03, 6.2553e-03, 6.2705e-03, 6.2858e-03, 6.3010e-03, 6.3163e-03, 6.3315e-03, 6.3468e-03, 6.3621e-03, 6.3773e-03, 6.3926e-03, 6.4078e-03, 6.4231e-03, 6.4384e-03, 6.4536e-03, 6.4689e-03, 6.4841e-03, 6.4994e-03, 6.5146e-03, 6.5299e-03, 6.5452e-03, 6.5604e-03, 6.5757e-03, 6.5909e-03, 6.6062e-03, 6.6215e-03, 6.6367e-03, 6.6520e-03, 6.6672e-03, 6.6825e-03, 6.6977e-03, 6.7130e-03, 6.7283e-03, 6.7435e-03, 6.7588e-03, 6.7740e-03, 6.7893e-03, 6.8046e-03, 6.8198e-03, 6.8351e-03, 6.8503e-03, 6.8656e-03, 6.8808e-03, 6.8961e-03, 6.9114e-03, 6.9266e-03, 6.9419e-03, 6.9571e-03, 6.9724e-03, 6.9877e-03, 7.0029e-03, 7.0182e-03, 7.0334e-03, 7.0487e-03, 7.0639e-03, 7.0792e-03, 7.0945e-03, 7.1097e-03, 7.1250e-03, 7.1402e-03, 7.1555e-03, 7.1708e-03, 7.1860e-03, 7.2013e-03, 7.2165e-03, 7.2318e-03, 7.2470e-03, 7.2623e-03, 7.2776e-03, 7.2928e-03, 7.3081e-03, 7.3233e-03, 7.3386e-03, 7.3539e-03, 7.3691e-03, 7.3844e-03, 7.3996e-03, 7.4149e-03, 7.4301e-03, 7.4454e-03, 7.4607e-03, 7.4759e-03, 7.4912e-03, 7.5064e-03, 7.5217e-03, 7.5370e-03, 7.5522e-03, 7.5675e-03, 7.5827e-03, 7.5980e-03, 7.6132e-03, 7.6285e-03, 7.6438e-03, 7.6590e-03, 7.6743e-03, 7.6895e-03, 7.7048e-03, 7.7201e-03, 7.7353e-03, 7.7506e-03, 7.7658e-03, 7.7811e-03, 7.7963e-03, 7.8116e-03, - 7.8421e-03, 7.8726e-03, 7.9032e-03, 7.9337e-03, 7.9642e-03, 7.9947e-03, 8.0252e-03, 8.0557e-03, 8.0863e-03, 8.1168e-03, 8.1473e-03, 8.1778e-03, 8.2083e-03, 8.2388e-03, 8.2694e-03, 8.2999e-03, 8.3304e-03, 8.3609e-03, 8.3914e-03, 8.4219e-03, 8.4525e-03, 8.4830e-03, 8.5135e-03, 8.5440e-03, 8.5745e-03, 8.6051e-03, 8.6356e-03, 8.6661e-03, 8.6966e-03, 8.7271e-03, 8.7576e-03, 8.7882e-03, 8.8187e-03, 8.8492e-03, 8.8797e-03, 8.9102e-03, 8.9407e-03, 8.9713e-03, 9.0018e-03, 9.0323e-03, 9.0628e-03, 9.0933e-03, 9.1238e-03, 9.1544e-03, 9.1849e-03, 9.2154e-03, 9.2459e-03, 9.2764e-03, 9.3069e-03, 9.3375e-03, 9.3680e-03, 9.3985e-03, 9.4290e-03, 9.4595e-03, 9.4900e-03, 9.5206e-03, 9.5511e-03, 9.5816e-03, 9.6121e-03, 9.6426e-03, 9.6731e-03, 9.7037e-03, 9.7342e-03, 9.7647e-03, 9.7952e-03, 9.8257e-03, 9.8563e-03, 9.8868e-03, 9.9173e-03, 9.9478e-03, 9.9783e-03, 1.0009e-02, 1.0039e-02, 1.0070e-02, 1.0100e-02, 1.0131e-02, 1.0161e-02, 1.0192e-02, 1.0222e-02, 1.0253e-02, 1.0283e-02, 1.0314e-02, 1.0345e-02, 1.0375e-02, 1.0406e-02, 1.0436e-02, 1.0467e-02, 1.0497e-02, 1.0528e-02, 1.0558e-02, 1.0589e-02, 1.0619e-02, 1.0650e-02, 1.0680e-02, 1.0711e-02, 1.0741e-02, 1.0772e-02, 1.0802e-02, 1.0833e-02, 1.0863e-02, 1.0894e-02, 1.0924e-02, 1.0955e-02, 1.0985e-02, 1.1016e-02, 1.1046e-02, 1.1077e-02, 1.1107e-02, 1.1138e-02, 1.1168e-02, 1.1199e-02, 1.1230e-02, 1.1260e-02, 1.1291e-02, 1.1321e-02, 1.1352e-02, 1.1382e-02, 1.1413e-02, 1.1443e-02, 1.1474e-02, 1.1504e-02, 1.1535e-02, 1.1565e-02, 1.1596e-02, 1.1626e-02, 1.1657e-02, 1.1687e-02, 1.1718e-02, 1.1748e-02, 1.1779e-02, 1.1809e-02, 1.1840e-02, 1.1870e-02, 1.1901e-02, 1.1931e-02, 1.1962e-02, 1.1992e-02, 1.2023e-02, 1.2053e-02, 1.2084e-02, 1.2115e-02, 1.2145e-02, 1.2176e-02, 1.2206e-02, 1.2237e-02, 1.2267e-02, 1.2298e-02, 1.2328e-02, 1.2359e-02, 1.2389e-02, 1.2420e-02, 1.2450e-02, 1.2481e-02, 1.2511e-02, 1.2542e-02, 1.2572e-02, 1.2603e-02, 1.2633e-02, 1.2664e-02, 1.2694e-02, 1.2725e-02, 1.2755e-02, 1.2786e-02, 1.2816e-02, 1.2847e-02, 1.2877e-02, 1.2908e-02, 1.2938e-02, 1.2969e-02, 1.3000e-02, 1.3030e-02, 1.3061e-02, 1.3091e-02, 1.3122e-02, 1.3152e-02, 1.3183e-02, 1.3213e-02, 1.3244e-02, 1.3274e-02, 1.3305e-02, 1.3335e-02, 1.3366e-02, 1.3396e-02, 1.3427e-02, 1.3457e-02, 1.3488e-02, 1.3518e-02, 1.3549e-02, 1.3579e-02, 1.3610e-02, 1.3640e-02, 1.3671e-02, 1.3701e-02, 1.3732e-02, 1.3762e-02, 1.3793e-02, 1.3823e-02, 1.3854e-02, 1.3885e-02, 1.3915e-02, 1.3946e-02, 1.3976e-02, 1.4007e-02, 1.4037e-02, 1.4068e-02, 1.4098e-02, 1.4129e-02, 1.4159e-02, 1.4190e-02, 1.4220e-02, 1.4251e-02, 1.4281e-02, 1.4312e-02, 1.4342e-02, 1.4373e-02, 1.4403e-02, 1.4434e-02, 1.4464e-02, 1.4495e-02, 1.4525e-02, 1.4556e-02, 1.4586e-02, 1.4617e-02, 1.4647e-02, 1.4678e-02, 1.4708e-02, 1.4739e-02, 1.4770e-02, 1.4800e-02, 1.4831e-02, 1.4861e-02, 1.4892e-02, 1.4922e-02, 1.4953e-02, 1.4983e-02, 1.5014e-02, 1.5044e-02, 1.5075e-02, 1.5105e-02, 1.5136e-02, 1.5166e-02, 1.5197e-02, 1.5227e-02, 1.5258e-02, 1.5288e-02, 1.5319e-02, 1.5349e-02, 1.5380e-02, 1.5410e-02, 1.5441e-02, 1.5471e-02, 1.5502e-02, 1.5532e-02, 1.5563e-02, 1.5593e-02, 1.5624e-02, - 1.5746e-02, 1.5868e-02, 1.5990e-02, 1.6112e-02, 1.6234e-02, 1.6356e-02, 1.6478e-02, 1.6601e-02, 1.6723e-02, 1.6845e-02, 1.6967e-02, 1.7089e-02, 1.7211e-02, 1.7333e-02, 1.7455e-02, 1.7577e-02, 1.7699e-02, 1.7821e-02, 1.7943e-02, 1.8065e-02, 1.8187e-02, 1.8310e-02, 1.8432e-02, 1.8554e-02, 1.8676e-02, 1.8798e-02, 1.8920e-02, 1.9042e-02, 1.9164e-02, 1.9286e-02, 1.9408e-02, 1.9530e-02, 1.9652e-02, 1.9774e-02, 1.9896e-02, 2.0018e-02, 2.0141e-02, 2.0263e-02, 2.0385e-02, 2.0507e-02, 2.0629e-02, 2.0751e-02, 2.0873e-02, 2.0995e-02, 2.1117e-02, 2.1239e-02, 2.1361e-02, 2.1483e-02, 2.1605e-02, 2.1727e-02, 2.1850e-02, 2.1972e-02, 2.2094e-02, 2.2216e-02, 2.2338e-02, 2.2460e-02, 2.2582e-02, 2.2704e-02, 2.2826e-02, 2.2948e-02, 2.3070e-02, 2.3192e-02, 2.3314e-02, 2.3436e-02, 2.3558e-02, 2.3681e-02, 2.3803e-02, 2.3925e-02, 2.4047e-02, 2.4169e-02, 2.4291e-02, 2.4413e-02, 2.4535e-02, 2.4657e-02, 2.4779e-02, 2.4901e-02, 2.5023e-02, 2.5145e-02, 2.5267e-02, 2.5390e-02, 2.5512e-02, 2.5634e-02, 2.5756e-02, 2.5878e-02, 2.6000e-02, 2.6122e-02, 2.6244e-02, 2.6366e-02, 2.6488e-02, 2.6610e-02, 2.6732e-02, 2.6854e-02, 2.6976e-02, 2.7099e-02, 2.7221e-02, 2.7343e-02, 2.7465e-02, 2.7587e-02, 2.7709e-02, 2.7831e-02, 2.7953e-02, 2.8075e-02, 2.8197e-02, 2.8319e-02, 2.8441e-02, 2.8563e-02, 2.8685e-02, 2.8807e-02, 2.8930e-02, 2.9052e-02, 2.9174e-02, 2.9296e-02, 2.9418e-02, 2.9540e-02, 2.9662e-02, 2.9784e-02, 2.9906e-02, 3.0028e-02, 3.0150e-02, 3.0272e-02, 3.0394e-02, 3.0516e-02, 3.0639e-02, 3.0761e-02, 3.0883e-02, 3.1005e-02, 3.1127e-02, 3.1249e-02, 3.1493e-02, 3.1737e-02, 3.1981e-02, 3.2225e-02, 3.2470e-02, 3.2714e-02, 3.2958e-02, 3.3202e-02, 3.3446e-02, 3.3690e-02, 3.3934e-02, 3.4179e-02, 3.4423e-02, 3.4667e-02, 3.4911e-02, 3.5155e-02, 3.5399e-02, 3.5643e-02, 3.5888e-02, 3.6132e-02, 3.6376e-02, 3.6620e-02, 3.6864e-02, 3.7108e-02, 3.7352e-02, 3.7596e-02, 3.7841e-02, 3.8085e-02, 3.8329e-02, 3.8573e-02, 3.8817e-02, 3.9061e-02, 3.9305e-02, 3.9550e-02, 3.9794e-02, 4.0038e-02, 4.0282e-02, 4.0526e-02, 4.0770e-02, 4.1014e-02, 4.1259e-02, 4.1503e-02, 4.1747e-02, 4.1991e-02, 4.2235e-02, 4.2479e-02, 4.2723e-02, 4.2968e-02, 4.3212e-02, 4.3456e-02, 4.3700e-02, 4.3944e-02, 4.4188e-02, 4.4432e-02, 4.4677e-02, 4.4921e-02, 4.5165e-02, 4.5409e-02, 4.5653e-02, 4.5897e-02, 4.6141e-02, 4.6386e-02, 4.6630e-02, 4.6874e-02, 4.7118e-02, 4.7362e-02, 4.7606e-02, 4.7850e-02, 4.8095e-02, 4.8339e-02, 4.8583e-02, 4.8827e-02, 4.9071e-02, 4.9315e-02, 4.9559e-02, 4.9803e-02, 5.0048e-02, 5.0292e-02, 5.0536e-02, 5.0780e-02, 5.1024e-02, 5.1268e-02, 5.1512e-02, 5.1757e-02, 5.2001e-02, 5.2245e-02, 5.2489e-02, 5.2733e-02, 5.2977e-02, 5.3221e-02, 5.3466e-02, 5.3710e-02, 5.3954e-02, 5.4198e-02, 5.4442e-02, 5.4686e-02, 5.4930e-02, 5.5175e-02, 5.5419e-02, 5.5663e-02, 5.5907e-02, 5.6151e-02, 5.6395e-02, 5.6639e-02, 5.6884e-02, 5.7128e-02, 5.7372e-02, 5.7616e-02, 5.7860e-02, 5.8104e-02, 5.8348e-02, 5.8593e-02, 5.8837e-02, 5.9081e-02, 5.9325e-02, 5.9569e-02, 5.9813e-02, 6.0057e-02, 6.0301e-02, 6.0546e-02, 6.0790e-02, 6.1034e-02, 6.1278e-02, 6.1522e-02, 6.1766e-02, 6.2010e-02, 6.2255e-02, 6.2499e-02, - 6.2743e-02, 6.2987e-02, 6.3231e-02, 6.3475e-02, 6.3719e-02, 6.3964e-02, 6.4208e-02, 6.4452e-02, 6.4696e-02, 6.4940e-02, 6.5184e-02, 6.5428e-02, 6.5673e-02, 6.5917e-02, 6.6161e-02, 6.6405e-02, 6.6649e-02, 6.6893e-02, 6.7137e-02, 6.7382e-02, 6.7626e-02, 6.7870e-02, 6.8114e-02, 6.8358e-02, 6.8602e-02, 6.8846e-02, 6.9091e-02, 6.9335e-02, 6.9579e-02, 6.9823e-02, 7.0067e-02, 7.0311e-02, 7.0555e-02, 7.0799e-02, 7.1044e-02, 7.1288e-02, 7.1532e-02, 7.1776e-02, 7.2020e-02, 7.2264e-02, 7.2508e-02, 7.2753e-02, 7.2997e-02, 7.3241e-02, 7.3485e-02, 7.3729e-02, 7.3973e-02, 7.4217e-02, 7.4462e-02, 7.4706e-02, 7.4950e-02, 7.5194e-02, 7.5438e-02, 7.5682e-02, 7.5926e-02, 7.6171e-02, 7.6415e-02, 7.6659e-02, 7.6903e-02, 7.7147e-02, 7.7391e-02, 7.7635e-02, 7.7880e-02, 7.8124e-02, 7.8368e-02, 7.8612e-02, 7.8856e-02, 7.9100e-02, 7.9344e-02, 7.9589e-02, 7.9833e-02, 8.0077e-02, 8.0321e-02, 8.0565e-02, 8.0809e-02, 8.1053e-02, 8.1298e-02, 8.1542e-02, 8.1786e-02, 8.2030e-02, 8.2274e-02, 8.2518e-02, 8.2762e-02, 8.3006e-02, 8.3251e-02, 8.3495e-02, 8.3739e-02, 8.3983e-02, 8.4227e-02, 8.4471e-02, 8.4715e-02, 8.4960e-02, 8.5204e-02, 8.5448e-02, 8.5692e-02, 8.5936e-02, 8.6180e-02, 8.6424e-02, 8.6669e-02, 8.6913e-02, 8.7157e-02, 8.7401e-02, 8.7645e-02, 8.7889e-02, 8.8133e-02, 8.8378e-02, 8.8622e-02, 8.8866e-02, 8.9110e-02, 8.9354e-02, 8.9598e-02, 8.9842e-02, 9.0087e-02, 9.0331e-02, 9.0575e-02, 9.0819e-02, 9.1063e-02, 9.1307e-02, 9.1551e-02, 9.1796e-02, 9.2040e-02, 9.2284e-02, 9.2528e-02, 9.2772e-02, 9.3016e-02, 9.3260e-02, 9.3504e-02, 9.3749e-02, 9.4237e-02, 9.4725e-02, 9.5213e-02, 9.5702e-02, 9.6190e-02, 9.6678e-02, 9.7167e-02, 9.7655e-02, 9.8143e-02, 9.8631e-02, 9.9120e-02, 9.9608e-02, 1.0010e-01, 1.0058e-01, 1.0107e-01, 1.0156e-01, 1.0205e-01, 1.0254e-01, 1.0303e-01, 1.0351e-01, 1.0400e-01, 1.0449e-01, 1.0498e-01, 1.0547e-01, 1.0596e-01, 1.0644e-01, 1.0693e-01, 1.0742e-01, 1.0791e-01, 1.0840e-01, 1.0889e-01, 1.0937e-01, 1.0986e-01, 1.1035e-01, 1.1084e-01, 1.1133e-01, 1.1182e-01, 1.1230e-01, 1.1279e-01, 1.1328e-01, 1.1377e-01, 1.1426e-01, 1.1474e-01, 1.1523e-01, 1.1572e-01, 1.1621e-01, 1.1670e-01, 1.1719e-01, 1.1767e-01, 1.1816e-01, 1.1865e-01, 1.1914e-01, 1.1963e-01, 1.2012e-01, 1.2060e-01, 1.2109e-01, 1.2158e-01, 1.2207e-01, 1.2256e-01, 1.2305e-01, 1.2353e-01, 1.2402e-01, 1.2451e-01, 1.2500e-01, 1.2549e-01, 1.2598e-01, 1.2646e-01, 1.2695e-01, 1.2744e-01, 1.2793e-01, 1.2842e-01, 1.2890e-01, 1.2939e-01, 1.2988e-01, 1.3037e-01, 1.3086e-01, 1.3135e-01, 1.3183e-01, 1.3232e-01, 1.3281e-01, 1.3330e-01, 1.3379e-01, 1.3428e-01, 1.3476e-01, 1.3525e-01, 1.3574e-01, 1.3623e-01, 1.3672e-01, 1.3721e-01, 1.3769e-01, 1.3818e-01, 1.3867e-01, 1.3916e-01, 1.3965e-01, 1.4014e-01, 1.4062e-01, 1.4111e-01, 1.4160e-01, 1.4209e-01, 1.4258e-01, 1.4306e-01, 1.4355e-01, 1.4404e-01, 1.4453e-01, 1.4502e-01, 1.4551e-01, 1.4599e-01, 1.4648e-01, 1.4697e-01, 1.4746e-01, 1.4795e-01, 1.4844e-01, 1.4892e-01, 1.4941e-01, 1.4990e-01, 1.5039e-01, 1.5088e-01, 1.5137e-01, 1.5185e-01, 1.5234e-01, 1.5283e-01, 1.5332e-01, 1.5381e-01, 1.5430e-01, 1.5478e-01, 1.5527e-01, 1.5576e-01, 1.5625e-01, - 1.5674e-01, 1.5723e-01, 1.5771e-01, 1.5820e-01, 1.5869e-01, 1.5918e-01, 1.5967e-01, 1.6015e-01, 1.6064e-01, 1.6113e-01, 1.6162e-01, 1.6211e-01, 1.6260e-01, 1.6308e-01, 1.6357e-01, 1.6406e-01, 1.6455e-01, 1.6504e-01, 1.6553e-01, 1.6601e-01, 1.6650e-01, 1.6699e-01, 1.6748e-01, 1.6797e-01, 1.6846e-01, 1.6894e-01, 1.6943e-01, 1.6992e-01, 1.7041e-01, 1.7090e-01, 1.7139e-01, 1.7187e-01, 1.7236e-01, 1.7285e-01, 1.7334e-01, 1.7383e-01, 1.7431e-01, 1.7480e-01, 1.7529e-01, 1.7578e-01, 1.7627e-01, 1.7676e-01, 1.7724e-01, 1.7773e-01, 1.7822e-01, 1.7871e-01, 1.7920e-01, 1.7969e-01, 1.8017e-01, 1.8066e-01, 1.8115e-01, 1.8164e-01, 1.8213e-01, 1.8262e-01, 1.8310e-01, 1.8359e-01, 1.8408e-01, 1.8457e-01, 1.8506e-01, 1.8555e-01, 1.8603e-01, 1.8652e-01, 1.8701e-01, 1.8750e-01, 1.8848e-01, 1.8945e-01, 1.9043e-01, 1.9140e-01, 1.9238e-01, 1.9336e-01, 1.9433e-01, 1.9531e-01, 1.9629e-01, 1.9726e-01, 1.9824e-01, 1.9922e-01, 2.0019e-01, 2.0117e-01, 2.0215e-01, 2.0312e-01, 2.0410e-01, 2.0508e-01, 2.0605e-01, 2.0703e-01, 2.0801e-01, 2.0898e-01, 2.0996e-01, 2.1094e-01, 2.1191e-01, 2.1289e-01, 2.1387e-01, 2.1484e-01, 2.1582e-01, 2.1680e-01, 2.1777e-01, 2.1875e-01, 2.1972e-01, 2.2070e-01, 2.2168e-01, 2.2265e-01, 2.2363e-01, 2.2461e-01, 2.2558e-01, 2.2656e-01, 2.2754e-01, 2.2851e-01, 2.2949e-01, 2.3047e-01, 2.3144e-01, 2.3242e-01, 2.3340e-01, 2.3437e-01, 2.3535e-01, 2.3633e-01, 2.3730e-01, 2.3828e-01, 2.3926e-01, 2.4023e-01, 2.4121e-01, 2.4219e-01, 2.4316e-01, 2.4414e-01, 2.4512e-01, 2.4609e-01, 2.4707e-01, 2.4805e-01, 2.4902e-01, 2.5000e-01, 2.5097e-01, 2.5195e-01, 2.5293e-01, 2.5390e-01, 2.5488e-01, 2.5586e-01, 2.5683e-01, 2.5781e-01, 2.5879e-01, 2.5976e-01, 2.6074e-01, 2.6172e-01, 2.6269e-01, 2.6367e-01, 2.6465e-01, 2.6562e-01, 2.6660e-01, 2.6758e-01, 2.6855e-01, 2.6953e-01, 2.7051e-01, 2.7148e-01, 2.7246e-01, 2.7344e-01, 2.7441e-01, 2.7539e-01, 2.7637e-01, 2.7734e-01, 2.7832e-01, 2.7930e-01, 2.8027e-01, 2.8125e-01, 2.8222e-01, 2.8320e-01, 2.8418e-01, 2.8515e-01, 2.8613e-01, 2.8711e-01, 2.8808e-01, 2.8906e-01, 2.9004e-01, 2.9101e-01, 2.9199e-01, 2.9297e-01, 2.9394e-01, 2.9492e-01, 2.9590e-01, 2.9687e-01, 2.9785e-01, 2.9883e-01, 2.9980e-01, 3.0078e-01, 3.0176e-01, 3.0273e-01, 3.0371e-01, 3.0469e-01, 3.0566e-01, 3.0664e-01, 3.0762e-01, 3.0859e-01, 3.0957e-01, 3.1055e-01, 3.1152e-01, 3.1250e-01, 3.1347e-01, 3.1445e-01, 3.1543e-01, 3.1640e-01, 3.1738e-01, 3.1836e-01, 3.1933e-01, 3.2031e-01, 3.2129e-01, 3.2226e-01, 3.2324e-01, 3.2422e-01, 3.2519e-01, 3.2617e-01, 3.2715e-01, 3.2812e-01, 3.2910e-01, 3.3008e-01, 3.3105e-01, 3.3203e-01, 3.3301e-01, 3.3398e-01, 3.3496e-01, 3.3594e-01, 3.3691e-01, 3.3789e-01, 3.3887e-01, 3.3984e-01, 3.4082e-01, 3.4180e-01, 3.4277e-01, 3.4375e-01, 3.4472e-01, 3.4570e-01, 3.4668e-01, 3.4765e-01, 3.4863e-01, 3.4961e-01, 3.5058e-01, 3.5156e-01, 3.5254e-01, 3.5351e-01, 3.5449e-01, 3.5547e-01, 3.5644e-01, 3.5742e-01, 3.5840e-01, 3.5937e-01, 3.6035e-01, 3.6133e-01, 3.6230e-01, 3.6328e-01, 3.6426e-01, 3.6523e-01, 3.6621e-01, 3.6719e-01, 3.6816e-01, 3.6914e-01, 3.7012e-01, 3.7109e-01, 3.7207e-01, 3.7305e-01, 3.7402e-01, 3.7500e-01, - 3.7695e-01, 3.7890e-01, 3.8086e-01, 3.8281e-01, 3.8476e-01, 3.8672e-01, 3.8867e-01, 3.9062e-01, 3.9258e-01, 3.9453e-01, 3.9648e-01, 3.9844e-01, 4.0039e-01, 4.0234e-01, 4.0430e-01, 4.0625e-01, 4.0820e-01, 4.1015e-01, 4.1211e-01, 4.1406e-01, 4.1601e-01, 4.1797e-01, 4.1992e-01, 4.2187e-01, 4.2383e-01, 4.2578e-01, 4.2773e-01, 4.2969e-01, 4.3164e-01, 4.3359e-01, 4.3555e-01, 4.3750e-01, 4.3945e-01, 4.4140e-01, 4.4336e-01, 4.4531e-01, 4.4726e-01, 4.4922e-01, 4.5117e-01, 4.5312e-01, 4.5508e-01, 4.5703e-01, 4.5898e-01, 4.6094e-01, 4.6289e-01, 4.6484e-01, 4.6680e-01, 4.6875e-01, 4.7070e-01, 4.7265e-01, 4.7461e-01, 4.7656e-01, 4.7851e-01, 4.8047e-01, 4.8242e-01, 4.8437e-01, 4.8633e-01, 4.8828e-01, 4.9023e-01, 4.9219e-01, 4.9414e-01, 4.9609e-01, 4.9805e-01, 5.0000e-01, 5.0195e-01, 5.0390e-01, 5.0586e-01, 5.0781e-01, 5.0976e-01, 5.1172e-01, 5.1367e-01, 5.1562e-01, 5.1758e-01, 5.1953e-01, 5.2148e-01, 5.2344e-01, 5.2539e-01, 5.2734e-01, 5.2930e-01, 5.3125e-01, 5.3320e-01, 5.3515e-01, 5.3711e-01, 5.3906e-01, 5.4101e-01, 5.4297e-01, 5.4492e-01, 5.4687e-01, 5.4883e-01, 5.5078e-01, 5.5273e-01, 5.5469e-01, 5.5664e-01, 5.5859e-01, 5.6055e-01, 5.6250e-01, 5.6445e-01, 5.6640e-01, 5.6836e-01, 5.7031e-01, 5.7226e-01, 5.7422e-01, 5.7617e-01, 5.7812e-01, 5.8008e-01, 5.8203e-01, 5.8398e-01, 5.8594e-01, 5.8789e-01, 5.8984e-01, 5.9180e-01, 5.9375e-01, 5.9570e-01, 5.9765e-01, 5.9961e-01, 6.0156e-01, 6.0351e-01, 6.0547e-01, 6.0742e-01, 6.0937e-01, 6.1133e-01, 6.1328e-01, 6.1523e-01, 6.1719e-01, 6.1914e-01, 6.2109e-01, 6.2305e-01, 6.2500e-01, 6.2695e-01, 6.2890e-01, 6.3086e-01, 6.3281e-01, 6.3476e-01, 6.3672e-01, 6.3867e-01, 6.4062e-01, 6.4258e-01, 6.4453e-01, 6.4648e-01, 6.4844e-01, 6.5039e-01, 6.5234e-01, 6.5430e-01, 6.5625e-01, 6.5820e-01, 6.6015e-01, 6.6211e-01, 6.6406e-01, 6.6601e-01, 6.6797e-01, 6.6992e-01, 6.7187e-01, 6.7383e-01, 6.7578e-01, 6.7773e-01, 6.7969e-01, 6.8164e-01, 6.8359e-01, 6.8554e-01, 6.8750e-01, 6.8945e-01, 6.9140e-01, 6.9336e-01, 6.9531e-01, 6.9726e-01, 6.9922e-01, 7.0117e-01, 7.0312e-01, 7.0508e-01, 7.0703e-01, 7.0898e-01, 7.1094e-01, 7.1289e-01, 7.1484e-01, 7.1679e-01, 7.1875e-01, 7.2070e-01, 7.2265e-01, 7.2461e-01, 7.2656e-01, 7.2851e-01, 7.3047e-01, 7.3242e-01, 7.3437e-01, 7.3633e-01, 7.3828e-01, 7.4023e-01, 7.4219e-01, 7.4414e-01, 7.4609e-01, 7.4804e-01, 7.5000e-01, 7.5390e-01, 7.5781e-01, 7.6172e-01, 7.6562e-01, 7.6953e-01, 7.7344e-01, 7.7734e-01, 7.8125e-01, 7.8515e-01, 7.8906e-01, 7.9297e-01, 7.9687e-01, 8.0078e-01, 8.0469e-01, 8.0859e-01, 8.1250e-01, 8.1640e-01, 8.2031e-01, 8.2422e-01, 8.2812e-01, 8.3203e-01, 8.3594e-01, 8.3984e-01, 8.4375e-01, 8.4765e-01, 8.5156e-01, 8.5547e-01, 8.5937e-01, 8.6328e-01, 8.6719e-01, 8.7109e-01, 8.7500e-01, 8.7890e-01, 8.8281e-01, 8.8672e-01, 8.9062e-01, 8.9453e-01, 8.9844e-01, 9.0234e-01, 9.0625e-01, 9.1015e-01, 9.1406e-01, 9.1797e-01, 9.2187e-01, 9.2578e-01, 9.2969e-01, 9.3359e-01, 9.3750e-01, 9.4140e-01, 9.4531e-01, 9.4922e-01, 9.5312e-01, 9.5703e-01, 9.6094e-01, 9.6484e-01, 9.6875e-01, 9.7265e-01, 9.7656e-01, 9.8047e-01, 9.8437e-01, 9.8828e-01, 9.9219e-01, 9.9609e-01, 1.0000e+00 + 0.0000e+00, 5.9488e-08, 1.1898e-07, 1.7846e-07, 2.3795e-07, 2.9744e-07, 3.5693e-07, 4.1642e-07, 4.7591e-07, 5.3539e-07, 5.9488e-07, 6.5437e-07, 7.1386e-07, 7.7335e-07, 8.3284e-07, 8.9232e-07, 9.5181e-07, 1.0113e-06, 1.0708e-06, 1.1303e-06, 1.1898e-06, 1.2493e-06, 1.3087e-06, 1.3682e-06, 1.4277e-06, 1.4872e-06, 1.5467e-06, 1.6062e-06, 1.6657e-06, 1.7252e-06, 1.7846e-06, 1.8441e-06, 1.9036e-06, 1.9631e-06, 2.0226e-06, 2.0821e-06, 2.1416e-06, 2.2011e-06, 2.2606e-06, 2.3200e-06, 2.3795e-06, 2.4390e-06, 2.4985e-06, 2.5580e-06, 2.6175e-06, 2.6770e-06, 2.7365e-06, 2.7959e-06, 2.8554e-06, 2.9149e-06, 2.9744e-06, 3.0339e-06, 3.0934e-06, 3.1529e-06, 3.2124e-06, 3.2719e-06, 3.3313e-06, 3.3908e-06, 3.4503e-06, 3.5098e-06, 3.5693e-06, 3.6288e-06, 3.6883e-06, 3.7478e-06, 3.8072e-06, 3.8667e-06, 3.9262e-06, 3.9857e-06, 4.0452e-06, 4.1047e-06, 4.1642e-06, 4.2237e-06, 4.2832e-06, 4.3426e-06, 4.4021e-06, 4.4616e-06, 4.5211e-06, 4.5806e-06, 4.6401e-06, 4.6996e-06, 4.7591e-06, 4.8185e-06, 4.8780e-06, 4.9375e-06, 4.9970e-06, 5.0565e-06, 5.1160e-06, 5.1755e-06, 5.2350e-06, 5.2945e-06, 5.3539e-06, 5.4134e-06, 5.4729e-06, 5.5324e-06, 5.5919e-06, 5.6514e-06, 5.7109e-06, 5.7704e-06, 5.8298e-06, 5.8893e-06, 5.9488e-06, 6.0083e-06, 6.0678e-06, 6.1273e-06, 6.1868e-06, 6.2463e-06, 6.3058e-06, 6.3652e-06, 6.4247e-06, 6.4842e-06, 6.5437e-06, 6.6032e-06, 6.6627e-06, 6.7222e-06, 6.7817e-06, 6.8411e-06, 6.9006e-06, 6.9601e-06, 7.0196e-06, 7.0791e-06, 7.1386e-06, 7.1981e-06, 7.2576e-06, 7.3171e-06, 7.3765e-06, 7.4360e-06, 7.4955e-06, 7.5550e-06, 7.6145e-06, 7.6740e-06, 7.7335e-06, 7.7930e-06, 7.8524e-06, 7.9119e-06, 7.9714e-06, 8.0309e-06, 8.0904e-06, 8.1499e-06, 8.2094e-06, 8.2689e-06, 8.3284e-06, 8.3878e-06, 8.4473e-06, 8.5068e-06, 8.5663e-06, 8.6258e-06, 8.6853e-06, 8.7448e-06, 8.8043e-06, 8.8637e-06, 8.9232e-06, 8.9827e-06, 9.0422e-06, 9.1017e-06, 9.1612e-06, 9.2207e-06, 9.2802e-06, 9.3397e-06, 9.3991e-06, 9.4586e-06, 9.5181e-06, 9.5776e-06, 9.6371e-06, 9.6966e-06, 9.7561e-06, 9.8156e-06, 9.8750e-06, 9.9345e-06, 9.9940e-06, 1.0054e-05, 1.0113e-05, 1.0172e-05, 1.0232e-05, 1.0291e-05, 1.0351e-05, 1.0410e-05, 1.0470e-05, 1.0529e-05, 1.0589e-05, 1.0648e-05, 1.0708e-05, 1.0767e-05, 1.0827e-05, 1.0886e-05, 1.0946e-05, 1.1005e-05, 1.1065e-05, 1.1124e-05, 1.1184e-05, 1.1243e-05, 1.1303e-05, 1.1362e-05, 1.1422e-05, 1.1481e-05, 1.1541e-05, 1.1600e-05, 1.1660e-05, 1.1719e-05, 1.1779e-05, 1.1838e-05, 1.1898e-05, 1.1957e-05, 1.2017e-05, 1.2076e-05, 1.2136e-05, 1.2195e-05, 1.2255e-05, 1.2314e-05, 1.2374e-05, 1.2433e-05, 1.2493e-05, 1.2552e-05, 1.2612e-05, 1.2671e-05, 1.2730e-05, 1.2790e-05, 1.2849e-05, 1.2909e-05, 1.2968e-05, 1.3028e-05, 1.3087e-05, 1.3147e-05, 1.3206e-05, 1.3266e-05, 1.3325e-05, 1.3385e-05, 1.3444e-05, 1.3504e-05, 1.3563e-05, 1.3623e-05, 1.3682e-05, 1.3742e-05, 1.3801e-05, 1.3861e-05, 1.3920e-05, 1.3980e-05, 1.4039e-05, 1.4099e-05, 1.4158e-05, 1.4218e-05, 1.4277e-05, 1.4337e-05, 1.4396e-05, 1.4456e-05, 1.4515e-05, 1.4575e-05, 1.4634e-05, 1.4694e-05, 1.4753e-05, 1.4813e-05, 1.4872e-05, 1.4932e-05, 1.4991e-05, 1.5051e-05, 1.5110e-05, 1.5169e-05, // NOLINT + 1.5229e-05, 1.5288e-05, 1.5348e-05, 1.5407e-05, 1.5467e-05, 1.5526e-05, 1.5586e-05, 1.5645e-05, 1.5705e-05, 1.5764e-05, 1.5824e-05, 1.5883e-05, 1.5943e-05, 1.6002e-05, 1.6062e-05, 1.6121e-05, 1.6181e-05, 1.6240e-05, 1.6300e-05, 1.6359e-05, 1.6419e-05, 1.6478e-05, 1.6538e-05, 1.6597e-05, 1.6657e-05, 1.6716e-05, 1.6776e-05, 1.6835e-05, 1.6895e-05, 1.6954e-05, 1.7014e-05, 1.7073e-05, 1.7133e-05, 1.7192e-05, 1.7252e-05, 1.7311e-05, 1.7371e-05, 1.7430e-05, 1.7490e-05, 1.7549e-05, 1.7609e-05, 1.7668e-05, 1.7727e-05, 1.7787e-05, 1.7846e-05, 1.7906e-05, 1.7965e-05, 1.8025e-05, 1.8084e-05, 1.8144e-05, 1.8203e-05, 1.8263e-05, 1.8322e-05, 1.8382e-05, 1.8441e-05, 1.8501e-05, 1.8560e-05, 1.8620e-05, 1.8679e-05, 1.8739e-05, 1.8798e-05, 1.8858e-05, 1.8917e-05, 1.8977e-05, 1.9036e-05, 1.9096e-05, 1.9155e-05, 1.9215e-05, 1.9274e-05, 1.9334e-05, 1.9393e-05, 1.9453e-05, 1.9512e-05, 1.9572e-05, 1.9631e-05, 1.9691e-05, 1.9750e-05, 1.9810e-05, 1.9869e-05, 1.9929e-05, 1.9988e-05, 2.0048e-05, 2.0107e-05, 2.0167e-05, 2.0226e-05, 2.0285e-05, 2.0345e-05, 2.0404e-05, 2.0464e-05, 2.0523e-05, 2.0583e-05, 2.0642e-05, 2.0702e-05, 2.0761e-05, 2.0821e-05, 2.0880e-05, 2.0940e-05, 2.0999e-05, 2.1059e-05, 2.1118e-05, 2.1178e-05, 2.1237e-05, 2.1297e-05, 2.1356e-05, 2.1416e-05, 2.1475e-05, 2.1535e-05, 2.1594e-05, 2.1654e-05, 2.1713e-05, 2.1773e-05, 2.1832e-05, 2.1892e-05, 2.1951e-05, 2.2011e-05, 2.2070e-05, 2.2130e-05, 2.2189e-05, 2.2249e-05, 2.2308e-05, 2.2368e-05, 2.2427e-05, 2.2487e-05, 2.2546e-05, 2.2606e-05, 2.2665e-05, 2.2725e-05, 2.2784e-05, 2.2843e-05, 2.2903e-05, 2.2962e-05, 2.3022e-05, 2.3081e-05, 2.3141e-05, 2.3200e-05, 2.3260e-05, 2.3319e-05, 2.3379e-05, 2.3438e-05, 2.3498e-05, 2.3557e-05, 2.3617e-05, 2.3676e-05, 2.3736e-05, 2.3795e-05, 2.3855e-05, 2.3914e-05, 2.3974e-05, 2.4033e-05, 2.4093e-05, 2.4152e-05, 2.4212e-05, 2.4271e-05, 2.4331e-05, 2.4390e-05, 2.4450e-05, 2.4509e-05, 2.4569e-05, 2.4628e-05, 2.4688e-05, 2.4747e-05, 2.4807e-05, 2.4866e-05, 2.4926e-05, 2.4985e-05, 2.5045e-05, 2.5104e-05, 2.5164e-05, 2.5223e-05, 2.5282e-05, 2.5342e-05, 2.5401e-05, 2.5461e-05, 2.5520e-05, 2.5580e-05, 2.5639e-05, 2.5699e-05, 2.5758e-05, 2.5818e-05, 2.5877e-05, 2.5937e-05, 2.5996e-05, 2.6056e-05, 2.6115e-05, 2.6175e-05, 2.6234e-05, 2.6294e-05, 2.6353e-05, 2.6413e-05, 2.6472e-05, 2.6532e-05, 2.6591e-05, 2.6651e-05, 2.6710e-05, 2.6770e-05, 2.6829e-05, 2.6889e-05, 2.6948e-05, 2.7008e-05, 2.7067e-05, 2.7127e-05, 2.7186e-05, 2.7246e-05, 2.7305e-05, 2.7365e-05, 2.7424e-05, 2.7484e-05, 2.7543e-05, 2.7603e-05, 2.7662e-05, 2.7722e-05, 2.7781e-05, 2.7840e-05, 2.7900e-05, 2.7959e-05, 2.8019e-05, 2.8078e-05, 2.8138e-05, 2.8197e-05, 2.8257e-05, 2.8316e-05, 2.8376e-05, 2.8435e-05, 2.8495e-05, 2.8554e-05, 2.8614e-05, 2.8673e-05, 2.8733e-05, 2.8792e-05, 2.8852e-05, 2.8911e-05, 2.8971e-05, 2.9030e-05, 2.9090e-05, 2.9149e-05, 2.9209e-05, 2.9268e-05, 2.9328e-05, 2.9387e-05, 2.9447e-05, 2.9506e-05, 2.9566e-05, 2.9625e-05, 2.9685e-05, 2.9744e-05, 2.9804e-05, 2.9863e-05, 2.9923e-05, 2.9982e-05, 3.0042e-05, 3.0101e-05, 3.0161e-05, 3.0220e-05, 3.0280e-05, 3.0339e-05, 3.0398e-05, // NOLINT + 3.0458e-05, 3.0577e-05, 3.0697e-05, 3.0816e-05, 3.0936e-05, 3.1055e-05, 3.1175e-05, 3.1294e-05, 3.1414e-05, 3.1533e-05, 3.1652e-05, 3.1772e-05, 3.1891e-05, 3.2011e-05, 3.2130e-05, 3.2250e-05, 3.2369e-05, 3.2489e-05, 3.2608e-05, 3.2727e-05, 3.2847e-05, 3.2966e-05, 3.3086e-05, 3.3205e-05, 3.3325e-05, 3.3444e-05, 3.3563e-05, 3.3683e-05, 3.3802e-05, 3.3922e-05, 3.4041e-05, 3.4161e-05, 3.4280e-05, 3.4400e-05, 3.4519e-05, 3.4638e-05, 3.4758e-05, 3.4877e-05, 3.4997e-05, 3.5116e-05, 3.5236e-05, 3.5355e-05, 3.5475e-05, 3.5594e-05, 3.5713e-05, 3.5833e-05, 3.5952e-05, 3.6072e-05, 3.6191e-05, 3.6311e-05, 3.6430e-05, 3.6550e-05, 3.6669e-05, 3.6788e-05, 3.6908e-05, 3.7027e-05, 3.7147e-05, 3.7266e-05, 3.7386e-05, 3.7505e-05, 3.7625e-05, 3.7744e-05, 3.7863e-05, 3.7983e-05, 3.8102e-05, 3.8222e-05, 3.8341e-05, 3.8461e-05, 3.8580e-05, 3.8700e-05, 3.8819e-05, 3.8938e-05, 3.9058e-05, 3.9177e-05, 3.9297e-05, 3.9416e-05, 3.9536e-05, 3.9655e-05, 3.9775e-05, 3.9894e-05, 4.0013e-05, 4.0133e-05, 4.0252e-05, 4.0372e-05, 4.0491e-05, 4.0611e-05, 4.0730e-05, 4.0850e-05, 4.0969e-05, 4.1088e-05, 4.1208e-05, 4.1327e-05, 4.1447e-05, 4.1566e-05, 4.1686e-05, 4.1805e-05, 4.1925e-05, 4.2044e-05, 4.2163e-05, 4.2283e-05, 4.2402e-05, 4.2522e-05, 4.2641e-05, 4.2761e-05, 4.2880e-05, 4.2999e-05, 4.3119e-05, 4.3238e-05, 4.3358e-05, 4.3477e-05, 4.3597e-05, 4.3716e-05, 4.3836e-05, 4.3955e-05, 4.4074e-05, 4.4194e-05, 4.4313e-05, 4.4433e-05, 4.4552e-05, 4.4672e-05, 4.4791e-05, 4.4911e-05, 4.5030e-05, 4.5149e-05, 4.5269e-05, 4.5388e-05, 4.5508e-05, 4.5627e-05, 4.5747e-05, 4.5866e-05, 4.5986e-05, 4.6105e-05, 4.6224e-05, 4.6344e-05, 4.6463e-05, 4.6583e-05, 4.6702e-05, 4.6822e-05, 4.6941e-05, 4.7061e-05, 4.7180e-05, 4.7299e-05, 4.7419e-05, 4.7538e-05, 4.7658e-05, 4.7777e-05, 4.7897e-05, 4.8016e-05, 4.8136e-05, 4.8255e-05, 4.8374e-05, 4.8494e-05, 4.8613e-05, 4.8733e-05, 4.8852e-05, 4.8972e-05, 4.9091e-05, 4.9211e-05, 4.9330e-05, 4.9449e-05, 4.9569e-05, 4.9688e-05, 4.9808e-05, 4.9927e-05, 5.0047e-05, 5.0166e-05, 5.0286e-05, 5.0405e-05, 5.0524e-05, 5.0644e-05, 5.0763e-05, 5.0883e-05, 5.1002e-05, 5.1122e-05, 5.1241e-05, 5.1361e-05, 5.1480e-05, 5.1599e-05, 5.1719e-05, 5.1838e-05, 5.1958e-05, 5.2077e-05, 5.2197e-05, 5.2316e-05, 5.2435e-05, 5.2555e-05, 5.2674e-05, 5.2794e-05, 5.2913e-05, 5.3033e-05, 5.3152e-05, 5.3272e-05, 5.3391e-05, 5.3510e-05, 5.3630e-05, 5.3749e-05, 5.3869e-05, 5.3988e-05, 5.4108e-05, 5.4227e-05, 5.4347e-05, 5.4466e-05, 5.4585e-05, 5.4705e-05, 5.4824e-05, 5.4944e-05, 5.5063e-05, 5.5183e-05, 5.5302e-05, 5.5422e-05, 5.5541e-05, 5.5660e-05, 5.5780e-05, 5.5899e-05, 5.6019e-05, 5.6138e-05, 5.6258e-05, 5.6377e-05, 5.6497e-05, 5.6616e-05, 5.6735e-05, 5.6855e-05, 5.6974e-05, 5.7094e-05, 5.7213e-05, 5.7333e-05, 5.7452e-05, 5.7572e-05, 5.7691e-05, 5.7810e-05, 5.7930e-05, 5.8049e-05, 5.8169e-05, 5.8288e-05, 5.8408e-05, 5.8527e-05, 5.8647e-05, 5.8766e-05, 5.8885e-05, 5.9005e-05, 5.9124e-05, 5.9244e-05, 5.9363e-05, 5.9483e-05, 5.9602e-05, 5.9722e-05, 5.9841e-05, 5.9960e-05, 6.0080e-05, 6.0199e-05, 6.0319e-05, 6.0438e-05, 6.0558e-05, 6.0677e-05, 6.0797e-05, 6.0916e-05, // NOLINT + 6.1154e-05, 6.1392e-05, 6.1631e-05, 6.1869e-05, 6.2107e-05, 6.2345e-05, 6.2583e-05, 6.2821e-05, 6.3060e-05, 6.3298e-05, 6.3536e-05, 6.3774e-05, 6.4012e-05, 6.4251e-05, 6.4489e-05, 6.4727e-05, 6.4965e-05, 6.5203e-05, 6.5441e-05, 6.5680e-05, 6.5918e-05, 6.6156e-05, 6.6394e-05, 6.6632e-05, 6.6871e-05, 6.7109e-05, 6.7347e-05, 6.7585e-05, 6.7823e-05, 6.8062e-05, 6.8300e-05, 6.8538e-05, 6.8776e-05, 6.9014e-05, 6.9252e-05, 6.9491e-05, 6.9729e-05, 6.9967e-05, 7.0205e-05, 7.0443e-05, 7.0682e-05, 7.0920e-05, 7.1158e-05, 7.1396e-05, 7.1634e-05, 7.1872e-05, 7.2111e-05, 7.2349e-05, 7.2587e-05, 7.2825e-05, 7.3063e-05, 7.3302e-05, 7.3540e-05, 7.3778e-05, 7.4016e-05, 7.4254e-05, 7.4493e-05, 7.4731e-05, 7.4969e-05, 7.5207e-05, 7.5445e-05, 7.5683e-05, 7.5922e-05, 7.6160e-05, 7.6398e-05, 7.6636e-05, 7.6874e-05, 7.7113e-05, 7.7351e-05, 7.7589e-05, 7.7827e-05, 7.8065e-05, 7.8304e-05, 7.8542e-05, 7.8780e-05, 7.9018e-05, 7.9256e-05, 7.9494e-05, 7.9733e-05, 7.9971e-05, 8.0209e-05, 8.0447e-05, 8.0685e-05, 8.0924e-05, 8.1162e-05, 8.1400e-05, 8.1638e-05, 8.1876e-05, 8.2114e-05, 8.2353e-05, 8.2591e-05, 8.2829e-05, 8.3067e-05, 8.3305e-05, 8.3544e-05, 8.3782e-05, 8.4020e-05, 8.4258e-05, 8.4496e-05, 8.4735e-05, 8.4973e-05, 8.5211e-05, 8.5449e-05, 8.5687e-05, 8.5925e-05, 8.6164e-05, 8.6402e-05, 8.6640e-05, 8.6878e-05, 8.7116e-05, 8.7355e-05, 8.7593e-05, 8.7831e-05, 8.8069e-05, 8.8307e-05, 8.8545e-05, 8.8784e-05, 8.9022e-05, 8.9260e-05, 8.9498e-05, 8.9736e-05, 8.9975e-05, 9.0213e-05, 9.0451e-05, 9.0689e-05, 9.0927e-05, 9.1166e-05, 9.1404e-05, 9.1642e-05, 9.1880e-05, 9.2118e-05, 9.2356e-05, 9.2595e-05, 9.2833e-05, 9.3071e-05, 9.3309e-05, 9.3547e-05, 9.3786e-05, 9.4024e-05, 9.4262e-05, 9.4500e-05, 9.4738e-05, 9.4977e-05, 9.5215e-05, 9.5453e-05, 9.5691e-05, 9.5929e-05, 9.6167e-05, 9.6406e-05, 9.6644e-05, 9.6882e-05, 9.7120e-05, 9.7358e-05, 9.7597e-05, 9.7835e-05, 9.8073e-05, 9.8311e-05, 9.8549e-05, 9.8787e-05, 9.9026e-05, 9.9264e-05, 9.9502e-05, 9.9740e-05, 9.9978e-05, 1.0022e-04, 1.0045e-04, 1.0069e-04, 1.0093e-04, 1.0117e-04, 1.0141e-04, 1.0165e-04, 1.0188e-04, 1.0212e-04, 1.0236e-04, 1.0260e-04, 1.0284e-04, 1.0307e-04, 1.0331e-04, 1.0355e-04, 1.0379e-04, 1.0403e-04, 1.0427e-04, 1.0450e-04, 1.0474e-04, 1.0498e-04, 1.0522e-04, 1.0546e-04, 1.0569e-04, 1.0593e-04, 1.0617e-04, 1.0641e-04, 1.0665e-04, 1.0689e-04, 1.0712e-04, 1.0736e-04, 1.0760e-04, 1.0784e-04, 1.0808e-04, 1.0831e-04, 1.0855e-04, 1.0879e-04, 1.0903e-04, 1.0927e-04, 1.0951e-04, 1.0974e-04, 1.0998e-04, 1.1022e-04, 1.1046e-04, 1.1070e-04, 1.1093e-04, 1.1117e-04, 1.1141e-04, 1.1165e-04, 1.1189e-04, 1.1213e-04, 1.1236e-04, 1.1260e-04, 1.1284e-04, 1.1308e-04, 1.1332e-04, 1.1355e-04, 1.1379e-04, 1.1403e-04, 1.1427e-04, 1.1451e-04, 1.1475e-04, 1.1498e-04, 1.1522e-04, 1.1546e-04, 1.1570e-04, 1.1594e-04, 1.1618e-04, 1.1641e-04, 1.1665e-04, 1.1689e-04, 1.1713e-04, 1.1737e-04, 1.1760e-04, 1.1784e-04, 1.1808e-04, 1.1832e-04, 1.1856e-04, 1.1880e-04, 1.1903e-04, 1.1927e-04, 1.1951e-04, 1.1975e-04, 1.1999e-04, 1.2022e-04, 1.2046e-04, 1.2070e-04, 1.2094e-04, 1.2118e-04, 1.2142e-04, 1.2165e-04, 1.2189e-04, // NOLINT + 1.2213e-04, 1.2237e-04, 1.2261e-04, 1.2284e-04, 1.2308e-04, 1.2332e-04, 1.2356e-04, 1.2380e-04, 1.2404e-04, 1.2427e-04, 1.2451e-04, 1.2475e-04, 1.2499e-04, 1.2523e-04, 1.2546e-04, 1.2570e-04, 1.2594e-04, 1.2618e-04, 1.2642e-04, 1.2666e-04, 1.2689e-04, 1.2713e-04, 1.2737e-04, 1.2761e-04, 1.2785e-04, 1.2808e-04, 1.2832e-04, 1.2856e-04, 1.2880e-04, 1.2904e-04, 1.2928e-04, 1.2951e-04, 1.2975e-04, 1.2999e-04, 1.3023e-04, 1.3047e-04, 1.3070e-04, 1.3094e-04, 1.3118e-04, 1.3142e-04, 1.3166e-04, 1.3190e-04, 1.3213e-04, 1.3237e-04, 1.3261e-04, 1.3285e-04, 1.3309e-04, 1.3332e-04, 1.3356e-04, 1.3380e-04, 1.3404e-04, 1.3428e-04, 1.3452e-04, 1.3475e-04, 1.3499e-04, 1.3523e-04, 1.3547e-04, 1.3571e-04, 1.3594e-04, 1.3618e-04, 1.3642e-04, 1.3666e-04, 1.3690e-04, 1.3714e-04, 1.3737e-04, 1.3761e-04, 1.3785e-04, 1.3809e-04, 1.3833e-04, 1.3856e-04, 1.3880e-04, 1.3904e-04, 1.3928e-04, 1.3952e-04, 1.3976e-04, 1.3999e-04, 1.4023e-04, 1.4047e-04, 1.4071e-04, 1.4095e-04, 1.4118e-04, 1.4142e-04, 1.4166e-04, 1.4190e-04, 1.4214e-04, 1.4238e-04, 1.4261e-04, 1.4285e-04, 1.4309e-04, 1.4333e-04, 1.4357e-04, 1.4380e-04, 1.4404e-04, 1.4428e-04, 1.4452e-04, 1.4476e-04, 1.4500e-04, 1.4523e-04, 1.4547e-04, 1.4571e-04, 1.4595e-04, 1.4619e-04, 1.4642e-04, 1.4666e-04, 1.4690e-04, 1.4714e-04, 1.4738e-04, 1.4762e-04, 1.4785e-04, 1.4809e-04, 1.4833e-04, 1.4857e-04, 1.4881e-04, 1.4904e-04, 1.4928e-04, 1.4952e-04, 1.4976e-04, 1.5000e-04, 1.5024e-04, 1.5047e-04, 1.5071e-04, 1.5095e-04, 1.5119e-04, 1.5143e-04, 1.5166e-04, 1.5190e-04, 1.5214e-04, 1.5238e-04, 1.5262e-04, 1.5286e-04, 1.5309e-04, 1.5333e-04, 1.5357e-04, 1.5381e-04, 1.5405e-04, 1.5428e-04, 1.5452e-04, 1.5476e-04, 1.5500e-04, 1.5524e-04, 1.5548e-04, 1.5571e-04, 1.5595e-04, 1.5619e-04, 1.5643e-04, 1.5667e-04, 1.5690e-04, 1.5714e-04, 1.5738e-04, 1.5762e-04, 1.5786e-04, 1.5810e-04, 1.5833e-04, 1.5857e-04, 1.5881e-04, 1.5905e-04, 1.5929e-04, 1.5952e-04, 1.5976e-04, 1.6000e-04, 1.6024e-04, 1.6048e-04, 1.6072e-04, 1.6095e-04, 1.6119e-04, 1.6143e-04, 1.6167e-04, 1.6191e-04, 1.6214e-04, 1.6238e-04, 1.6262e-04, 1.6286e-04, 1.6310e-04, 1.6334e-04, 1.6357e-04, 1.6381e-04, 1.6405e-04, 1.6429e-04, 1.6453e-04, 1.6476e-04, 1.6500e-04, 1.6524e-04, 1.6548e-04, 1.6572e-04, 1.6596e-04, 1.6619e-04, 1.6643e-04, 1.6667e-04, 1.6691e-04, 1.6715e-04, 1.6738e-04, 1.6762e-04, 1.6786e-04, 1.6810e-04, 1.6834e-04, 1.6858e-04, 1.6881e-04, 1.6905e-04, 1.6929e-04, 1.6953e-04, 1.6977e-04, 1.7001e-04, 1.7024e-04, 1.7048e-04, 1.7072e-04, 1.7096e-04, 1.7120e-04, 1.7143e-04, 1.7167e-04, 1.7191e-04, 1.7215e-04, 1.7239e-04, 1.7263e-04, 1.7286e-04, 1.7310e-04, 1.7334e-04, 1.7358e-04, 1.7382e-04, 1.7405e-04, 1.7429e-04, 1.7453e-04, 1.7477e-04, 1.7501e-04, 1.7525e-04, 1.7548e-04, 1.7572e-04, 1.7596e-04, 1.7620e-04, 1.7644e-04, 1.7667e-04, 1.7691e-04, 1.7715e-04, 1.7739e-04, 1.7763e-04, 1.7787e-04, 1.7810e-04, 1.7834e-04, 1.7858e-04, 1.7882e-04, 1.7906e-04, 1.7929e-04, 1.7953e-04, 1.7977e-04, 1.8001e-04, 1.8025e-04, 1.8049e-04, 1.8072e-04, 1.8096e-04, 1.8120e-04, 1.8144e-04, 1.8168e-04, 1.8191e-04, 1.8215e-04, 1.8239e-04, 1.8263e-04, 1.8287e-04, // NOLINT + 1.8311e-04, 1.8334e-04, 1.8358e-04, 1.8382e-04, 1.8406e-04, 1.8430e-04, 1.8453e-04, 1.8477e-04, 1.8501e-04, 1.8525e-04, 1.8549e-04, 1.8573e-04, 1.8596e-04, 1.8620e-04, 1.8644e-04, 1.8668e-04, 1.8692e-04, 1.8715e-04, 1.8739e-04, 1.8763e-04, 1.8787e-04, 1.8811e-04, 1.8835e-04, 1.8858e-04, 1.8882e-04, 1.8906e-04, 1.8930e-04, 1.8954e-04, 1.8977e-04, 1.9001e-04, 1.9025e-04, 1.9049e-04, 1.9073e-04, 1.9097e-04, 1.9120e-04, 1.9144e-04, 1.9168e-04, 1.9192e-04, 1.9216e-04, 1.9239e-04, 1.9263e-04, 1.9287e-04, 1.9311e-04, 1.9335e-04, 1.9359e-04, 1.9382e-04, 1.9406e-04, 1.9430e-04, 1.9454e-04, 1.9478e-04, 1.9501e-04, 1.9525e-04, 1.9549e-04, 1.9573e-04, 1.9597e-04, 1.9621e-04, 1.9644e-04, 1.9668e-04, 1.9692e-04, 1.9716e-04, 1.9740e-04, 1.9763e-04, 1.9787e-04, 1.9811e-04, 1.9835e-04, 1.9859e-04, 1.9883e-04, 1.9906e-04, 1.9930e-04, 1.9954e-04, 1.9978e-04, 2.0002e-04, 2.0025e-04, 2.0049e-04, 2.0073e-04, 2.0097e-04, 2.0121e-04, 2.0145e-04, 2.0168e-04, 2.0192e-04, 2.0216e-04, 2.0240e-04, 2.0264e-04, 2.0287e-04, 2.0311e-04, 2.0335e-04, 2.0359e-04, 2.0383e-04, 2.0407e-04, 2.0430e-04, 2.0454e-04, 2.0478e-04, 2.0502e-04, 2.0526e-04, 2.0549e-04, 2.0573e-04, 2.0597e-04, 2.0621e-04, 2.0645e-04, 2.0669e-04, 2.0692e-04, 2.0716e-04, 2.0740e-04, 2.0764e-04, 2.0788e-04, 2.0811e-04, 2.0835e-04, 2.0859e-04, 2.0883e-04, 2.0907e-04, 2.0931e-04, 2.0954e-04, 2.0978e-04, 2.1002e-04, 2.1026e-04, 2.1050e-04, 2.1073e-04, 2.1097e-04, 2.1121e-04, 2.1145e-04, 2.1169e-04, 2.1193e-04, 2.1216e-04, 2.1240e-04, 2.1264e-04, 2.1288e-04, 2.1312e-04, 2.1335e-04, 2.1359e-04, 2.1383e-04, 2.1407e-04, 2.1431e-04, 2.1455e-04, 2.1478e-04, 2.1502e-04, 2.1526e-04, 2.1550e-04, 2.1574e-04, 2.1597e-04, 2.1621e-04, 2.1645e-04, 2.1669e-04, 2.1693e-04, 2.1717e-04, 2.1740e-04, 2.1764e-04, 2.1788e-04, 2.1812e-04, 2.1836e-04, 2.1859e-04, 2.1883e-04, 2.1907e-04, 2.1931e-04, 2.1955e-04, 2.1979e-04, 2.2002e-04, 2.2026e-04, 2.2050e-04, 2.2074e-04, 2.2098e-04, 2.2121e-04, 2.2145e-04, 2.2169e-04, 2.2193e-04, 2.2217e-04, 2.2241e-04, 2.2264e-04, 2.2288e-04, 2.2312e-04, 2.2336e-04, 2.2360e-04, 2.2383e-04, 2.2407e-04, 2.2431e-04, 2.2455e-04, 2.2479e-04, 2.2503e-04, 2.2526e-04, 2.2550e-04, 2.2574e-04, 2.2598e-04, 2.2622e-04, 2.2646e-04, 2.2669e-04, 2.2693e-04, 2.2717e-04, 2.2741e-04, 2.2765e-04, 2.2788e-04, 2.2812e-04, 2.2836e-04, 2.2860e-04, 2.2884e-04, 2.2908e-04, 2.2931e-04, 2.2955e-04, 2.2979e-04, 2.3003e-04, 2.3027e-04, 2.3050e-04, 2.3074e-04, 2.3098e-04, 2.3122e-04, 2.3146e-04, 2.3170e-04, 2.3193e-04, 2.3217e-04, 2.3241e-04, 2.3265e-04, 2.3289e-04, 2.3312e-04, 2.3336e-04, 2.3360e-04, 2.3384e-04, 2.3408e-04, 2.3432e-04, 2.3455e-04, 2.3479e-04, 2.3503e-04, 2.3527e-04, 2.3551e-04, 2.3574e-04, 2.3598e-04, 2.3622e-04, 2.3646e-04, 2.3670e-04, 2.3694e-04, 2.3717e-04, 2.3741e-04, 2.3765e-04, 2.3789e-04, 2.3813e-04, 2.3836e-04, 2.3860e-04, 2.3884e-04, 2.3908e-04, 2.3932e-04, 2.3956e-04, 2.3979e-04, 2.4003e-04, 2.4027e-04, 2.4051e-04, 2.4075e-04, 2.4098e-04, 2.4122e-04, 2.4146e-04, 2.4170e-04, 2.4194e-04, 2.4218e-04, 2.4241e-04, 2.4265e-04, 2.4289e-04, 2.4313e-04, 2.4337e-04, 2.4360e-04, 2.4384e-04, // NOLINT + 2.4480e-04, 2.4575e-04, 2.4670e-04, 2.4766e-04, 2.4861e-04, 2.4956e-04, 2.5052e-04, 2.5147e-04, 2.5242e-04, 2.5337e-04, 2.5433e-04, 2.5528e-04, 2.5623e-04, 2.5719e-04, 2.5814e-04, 2.5909e-04, 2.6005e-04, 2.6100e-04, 2.6195e-04, 2.6291e-04, 2.6386e-04, 2.6481e-04, 2.6577e-04, 2.6672e-04, 2.6767e-04, 2.6863e-04, 2.6958e-04, 2.7053e-04, 2.7149e-04, 2.7244e-04, 2.7339e-04, 2.7435e-04, 2.7530e-04, 2.7625e-04, 2.7720e-04, 2.7816e-04, 2.7911e-04, 2.8006e-04, 2.8102e-04, 2.8197e-04, 2.8292e-04, 2.8388e-04, 2.8483e-04, 2.8578e-04, 2.8674e-04, 2.8769e-04, 2.8864e-04, 2.8960e-04, 2.9055e-04, 2.9150e-04, 2.9246e-04, 2.9341e-04, 2.9436e-04, 2.9532e-04, 2.9627e-04, 2.9722e-04, 2.9818e-04, 2.9913e-04, 3.0008e-04, 3.0104e-04, 3.0199e-04, 3.0294e-04, 3.0389e-04, 3.0485e-04, 3.0580e-04, 3.0675e-04, 3.0771e-04, 3.0866e-04, 3.0961e-04, 3.1057e-04, 3.1152e-04, 3.1247e-04, 3.1343e-04, 3.1438e-04, 3.1533e-04, 3.1629e-04, 3.1724e-04, 3.1819e-04, 3.1915e-04, 3.2010e-04, 3.2105e-04, 3.2201e-04, 3.2296e-04, 3.2391e-04, 3.2487e-04, 3.2582e-04, 3.2677e-04, 3.2772e-04, 3.2868e-04, 3.2963e-04, 3.3058e-04, 3.3154e-04, 3.3249e-04, 3.3344e-04, 3.3440e-04, 3.3535e-04, 3.3630e-04, 3.3726e-04, 3.3821e-04, 3.3916e-04, 3.4012e-04, 3.4107e-04, 3.4202e-04, 3.4298e-04, 3.4393e-04, 3.4488e-04, 3.4584e-04, 3.4679e-04, 3.4774e-04, 3.4870e-04, 3.4965e-04, 3.5060e-04, 3.5156e-04, 3.5251e-04, 3.5346e-04, 3.5441e-04, 3.5537e-04, 3.5632e-04, 3.5727e-04, 3.5823e-04, 3.5918e-04, 3.6013e-04, 3.6109e-04, 3.6204e-04, 3.6299e-04, 3.6395e-04, 3.6490e-04, 3.6585e-04, 3.6681e-04, 3.6776e-04, 3.6871e-04, 3.6967e-04, 3.7062e-04, 3.7157e-04, 3.7253e-04, 3.7348e-04, 3.7443e-04, 3.7539e-04, 3.7634e-04, 3.7729e-04, 3.7825e-04, 3.7920e-04, 3.8015e-04, 3.8110e-04, 3.8206e-04, 3.8301e-04, 3.8396e-04, 3.8492e-04, 3.8587e-04, 3.8682e-04, 3.8778e-04, 3.8873e-04, 3.8968e-04, 3.9064e-04, 3.9159e-04, 3.9254e-04, 3.9350e-04, 3.9445e-04, 3.9540e-04, 3.9636e-04, 3.9731e-04, 3.9826e-04, 3.9922e-04, 4.0017e-04, 4.0112e-04, 4.0208e-04, 4.0303e-04, 4.0398e-04, 4.0493e-04, 4.0589e-04, 4.0684e-04, 4.0779e-04, 4.0875e-04, 4.0970e-04, 4.1065e-04, 4.1161e-04, 4.1256e-04, 4.1351e-04, 4.1447e-04, 4.1542e-04, 4.1637e-04, 4.1733e-04, 4.1828e-04, 4.1923e-04, 4.2019e-04, 4.2114e-04, 4.2209e-04, 4.2305e-04, 4.2400e-04, 4.2495e-04, 4.2591e-04, 4.2686e-04, 4.2781e-04, 4.2877e-04, 4.2972e-04, 4.3067e-04, 4.3162e-04, 4.3258e-04, 4.3353e-04, 4.3448e-04, 4.3544e-04, 4.3639e-04, 4.3734e-04, 4.3830e-04, 4.3925e-04, 4.4020e-04, 4.4116e-04, 4.4211e-04, 4.4306e-04, 4.4402e-04, 4.4497e-04, 4.4592e-04, 4.4688e-04, 4.4783e-04, 4.4878e-04, 4.4974e-04, 4.5069e-04, 4.5164e-04, 4.5260e-04, 4.5355e-04, 4.5450e-04, 4.5545e-04, 4.5641e-04, 4.5736e-04, 4.5831e-04, 4.5927e-04, 4.6022e-04, 4.6117e-04, 4.6213e-04, 4.6308e-04, 4.6403e-04, 4.6499e-04, 4.6594e-04, 4.6689e-04, 4.6785e-04, 4.6880e-04, 4.6975e-04, 4.7071e-04, 4.7166e-04, 4.7261e-04, 4.7357e-04, 4.7452e-04, 4.7547e-04, 4.7643e-04, 4.7738e-04, 4.7833e-04, 4.7929e-04, 4.8024e-04, 4.8119e-04, 4.8214e-04, 4.8310e-04, 4.8405e-04, 4.8500e-04, 4.8596e-04, 4.8691e-04, 4.8786e-04, // NOLINT + 4.8977e-04, 4.9168e-04, 4.9358e-04, 4.9549e-04, 4.9740e-04, 4.9931e-04, 5.0121e-04, 5.0312e-04, 5.0503e-04, 5.0693e-04, 5.0884e-04, 5.1075e-04, 5.1265e-04, 5.1456e-04, 5.1647e-04, 5.1837e-04, 5.2028e-04, 5.2219e-04, 5.2409e-04, 5.2600e-04, 5.2791e-04, 5.2982e-04, 5.3172e-04, 5.3363e-04, 5.3554e-04, 5.3744e-04, 5.3935e-04, 5.4126e-04, 5.4316e-04, 5.4507e-04, 5.4698e-04, 5.4888e-04, 5.5079e-04, 5.5270e-04, 5.5460e-04, 5.5651e-04, 5.5842e-04, 5.6033e-04, 5.6223e-04, 5.6414e-04, 5.6605e-04, 5.6795e-04, 5.6986e-04, 5.7177e-04, 5.7367e-04, 5.7558e-04, 5.7749e-04, 5.7939e-04, 5.8130e-04, 5.8321e-04, 5.8512e-04, 5.8702e-04, 5.8893e-04, 5.9084e-04, 5.9274e-04, 5.9465e-04, 5.9656e-04, 5.9846e-04, 6.0037e-04, 6.0228e-04, 6.0418e-04, 6.0609e-04, 6.0800e-04, 6.0990e-04, 6.1181e-04, 6.1372e-04, 6.1563e-04, 6.1753e-04, 6.1944e-04, 6.2135e-04, 6.2325e-04, 6.2516e-04, 6.2707e-04, 6.2897e-04, 6.3088e-04, 6.3279e-04, 6.3469e-04, 6.3660e-04, 6.3851e-04, 6.4041e-04, 6.4232e-04, 6.4423e-04, 6.4614e-04, 6.4804e-04, 6.4995e-04, 6.5186e-04, 6.5376e-04, 6.5567e-04, 6.5758e-04, 6.5948e-04, 6.6139e-04, 6.6330e-04, 6.6520e-04, 6.6711e-04, 6.6902e-04, 6.7092e-04, 6.7283e-04, 6.7474e-04, 6.7665e-04, 6.7855e-04, 6.8046e-04, 6.8237e-04, 6.8427e-04, 6.8618e-04, 6.8809e-04, 6.8999e-04, 6.9190e-04, 6.9381e-04, 6.9571e-04, 6.9762e-04, 6.9953e-04, 7.0143e-04, 7.0334e-04, 7.0525e-04, 7.0716e-04, 7.0906e-04, 7.1097e-04, 7.1288e-04, 7.1478e-04, 7.1669e-04, 7.1860e-04, 7.2050e-04, 7.2241e-04, 7.2432e-04, 7.2622e-04, 7.2813e-04, 7.3004e-04, 7.3195e-04, 7.3385e-04, 7.3576e-04, 7.3767e-04, 7.3957e-04, 7.4148e-04, 7.4339e-04, 7.4529e-04, 7.4720e-04, 7.4911e-04, 7.5101e-04, 7.5292e-04, 7.5483e-04, 7.5673e-04, 7.5864e-04, 7.6055e-04, 7.6246e-04, 7.6436e-04, 7.6627e-04, 7.6818e-04, 7.7008e-04, 7.7199e-04, 7.7390e-04, 7.7580e-04, 7.7771e-04, 7.7962e-04, 7.8152e-04, 7.8343e-04, 7.8534e-04, 7.8724e-04, 7.8915e-04, 7.9106e-04, 7.9297e-04, 7.9487e-04, 7.9678e-04, 7.9869e-04, 8.0059e-04, 8.0250e-04, 8.0441e-04, 8.0631e-04, 8.0822e-04, 8.1013e-04, 8.1203e-04, 8.1394e-04, 8.1585e-04, 8.1775e-04, 8.1966e-04, 8.2157e-04, 8.2348e-04, 8.2538e-04, 8.2729e-04, 8.2920e-04, 8.3110e-04, 8.3301e-04, 8.3492e-04, 8.3682e-04, 8.3873e-04, 8.4064e-04, 8.4254e-04, 8.4445e-04, 8.4636e-04, 8.4826e-04, 8.5017e-04, 8.5208e-04, 8.5399e-04, 8.5589e-04, 8.5780e-04, 8.5971e-04, 8.6161e-04, 8.6352e-04, 8.6543e-04, 8.6733e-04, 8.6924e-04, 8.7115e-04, 8.7305e-04, 8.7496e-04, 8.7687e-04, 8.7878e-04, 8.8068e-04, 8.8259e-04, 8.8450e-04, 8.8640e-04, 8.8831e-04, 8.9022e-04, 8.9212e-04, 8.9403e-04, 8.9594e-04, 8.9784e-04, 8.9975e-04, 9.0166e-04, 9.0356e-04, 9.0547e-04, 9.0738e-04, 9.0929e-04, 9.1119e-04, 9.1310e-04, 9.1501e-04, 9.1691e-04, 9.1882e-04, 9.2073e-04, 9.2263e-04, 9.2454e-04, 9.2645e-04, 9.2835e-04, 9.3026e-04, 9.3217e-04, 9.3407e-04, 9.3598e-04, 9.3789e-04, 9.3980e-04, 9.4170e-04, 9.4361e-04, 9.4552e-04, 9.4742e-04, 9.4933e-04, 9.5124e-04, 9.5314e-04, 9.5505e-04, 9.5696e-04, 9.5886e-04, 9.6077e-04, 9.6268e-04, 9.6458e-04, 9.6649e-04, 9.6840e-04, 9.7031e-04, 9.7221e-04, 9.7412e-04, 9.7603e-04, // NOLINT + 9.7984e-04, 9.8365e-04, 9.8747e-04, 9.9128e-04, 9.9510e-04, 9.9891e-04, 1.0027e-03, 1.0065e-03, 1.0104e-03, 1.0142e-03, 1.0180e-03, 1.0218e-03, 1.0256e-03, 1.0294e-03, 1.0332e-03, 1.0371e-03, 1.0409e-03, 1.0447e-03, 1.0485e-03, 1.0523e-03, 1.0561e-03, 1.0599e-03, 1.0638e-03, 1.0676e-03, 1.0714e-03, 1.0752e-03, 1.0790e-03, 1.0828e-03, 1.0866e-03, 1.0905e-03, 1.0943e-03, 1.0981e-03, 1.1019e-03, 1.1057e-03, 1.1095e-03, 1.1133e-03, 1.1172e-03, 1.1210e-03, 1.1248e-03, 1.1286e-03, 1.1324e-03, 1.1362e-03, 1.1400e-03, 1.1439e-03, 1.1477e-03, 1.1515e-03, 1.1553e-03, 1.1591e-03, 1.1629e-03, 1.1667e-03, 1.1706e-03, 1.1744e-03, 1.1782e-03, 1.1820e-03, 1.1858e-03, 1.1896e-03, 1.1934e-03, 1.1973e-03, 1.2011e-03, 1.2049e-03, 1.2087e-03, 1.2125e-03, 1.2163e-03, 1.2201e-03, 1.2240e-03, 1.2278e-03, 1.2316e-03, 1.2354e-03, 1.2392e-03, 1.2430e-03, 1.2468e-03, 1.2507e-03, 1.2545e-03, 1.2583e-03, 1.2621e-03, 1.2659e-03, 1.2697e-03, 1.2735e-03, 1.2774e-03, 1.2812e-03, 1.2850e-03, 1.2888e-03, 1.2926e-03, 1.2964e-03, 1.3002e-03, 1.3040e-03, 1.3079e-03, 1.3117e-03, 1.3155e-03, 1.3193e-03, 1.3231e-03, 1.3269e-03, 1.3307e-03, 1.3346e-03, 1.3384e-03, 1.3422e-03, 1.3460e-03, 1.3498e-03, 1.3536e-03, 1.3574e-03, 1.3613e-03, 1.3651e-03, 1.3689e-03, 1.3727e-03, 1.3765e-03, 1.3803e-03, 1.3841e-03, 1.3880e-03, 1.3918e-03, 1.3956e-03, 1.3994e-03, 1.4032e-03, 1.4070e-03, 1.4108e-03, 1.4147e-03, 1.4185e-03, 1.4223e-03, 1.4261e-03, 1.4299e-03, 1.4337e-03, 1.4375e-03, 1.4414e-03, 1.4452e-03, 1.4490e-03, 1.4528e-03, 1.4566e-03, 1.4604e-03, 1.4642e-03, 1.4681e-03, 1.4719e-03, 1.4757e-03, 1.4795e-03, 1.4833e-03, 1.4871e-03, 1.4909e-03, 1.4948e-03, 1.4986e-03, 1.5024e-03, 1.5062e-03, 1.5100e-03, 1.5138e-03, 1.5176e-03, 1.5215e-03, 1.5253e-03, 1.5291e-03, 1.5329e-03, 1.5367e-03, 1.5405e-03, 1.5443e-03, 1.5482e-03, 1.5520e-03, 1.5558e-03, 1.5596e-03, 1.5634e-03, 1.5672e-03, 1.5710e-03, 1.5749e-03, 1.5787e-03, 1.5825e-03, 1.5863e-03, 1.5901e-03, 1.5939e-03, 1.5977e-03, 1.6016e-03, 1.6054e-03, 1.6092e-03, 1.6130e-03, 1.6168e-03, 1.6206e-03, 1.6244e-03, 1.6283e-03, 1.6321e-03, 1.6359e-03, 1.6397e-03, 1.6435e-03, 1.6473e-03, 1.6511e-03, 1.6550e-03, 1.6588e-03, 1.6626e-03, 1.6664e-03, 1.6702e-03, 1.6740e-03, 1.6778e-03, 1.6817e-03, 1.6855e-03, 1.6893e-03, 1.6931e-03, 1.6969e-03, 1.7007e-03, 1.7045e-03, 1.7084e-03, 1.7122e-03, 1.7160e-03, 1.7198e-03, 1.7236e-03, 1.7274e-03, 1.7312e-03, 1.7351e-03, 1.7389e-03, 1.7427e-03, 1.7465e-03, 1.7503e-03, 1.7541e-03, 1.7579e-03, 1.7618e-03, 1.7656e-03, 1.7694e-03, 1.7732e-03, 1.7770e-03, 1.7808e-03, 1.7846e-03, 1.7885e-03, 1.7923e-03, 1.7961e-03, 1.7999e-03, 1.8037e-03, 1.8075e-03, 1.8113e-03, 1.8152e-03, 1.8190e-03, 1.8228e-03, 1.8266e-03, 1.8304e-03, 1.8342e-03, 1.8380e-03, 1.8419e-03, 1.8457e-03, 1.8495e-03, 1.8533e-03, 1.8571e-03, 1.8609e-03, 1.8647e-03, 1.8686e-03, 1.8724e-03, 1.8762e-03, 1.8800e-03, 1.8838e-03, 1.8876e-03, 1.8914e-03, 1.8953e-03, 1.8991e-03, 1.9029e-03, 1.9067e-03, 1.9105e-03, 1.9143e-03, 1.9181e-03, 1.9220e-03, 1.9258e-03, 1.9296e-03, 1.9334e-03, 1.9372e-03, 1.9410e-03, 1.9448e-03, 1.9487e-03, 1.9525e-03, // NOLINT + 1.9601e-03, 1.9677e-03, 1.9754e-03, 1.9830e-03, 1.9906e-03, 1.9982e-03, 2.0059e-03, 2.0135e-03, 2.0211e-03, 2.0288e-03, 2.0364e-03, 2.0440e-03, 2.0516e-03, 2.0593e-03, 2.0669e-03, 2.0745e-03, 2.0822e-03, 2.0898e-03, 2.0974e-03, 2.1050e-03, 2.1127e-03, 2.1203e-03, 2.1279e-03, 2.1356e-03, 2.1432e-03, 2.1508e-03, 2.1585e-03, 2.1661e-03, 2.1737e-03, 2.1813e-03, 2.1890e-03, 2.1966e-03, 2.2042e-03, 2.2119e-03, 2.2195e-03, 2.2271e-03, 2.2347e-03, 2.2424e-03, 2.2500e-03, 2.2576e-03, 2.2653e-03, 2.2729e-03, 2.2805e-03, 2.2881e-03, 2.2958e-03, 2.3034e-03, 2.3110e-03, 2.3187e-03, 2.3263e-03, 2.3339e-03, 2.3415e-03, 2.3492e-03, 2.3568e-03, 2.3644e-03, 2.3721e-03, 2.3797e-03, 2.3873e-03, 2.3949e-03, 2.4026e-03, 2.4102e-03, 2.4178e-03, 2.4255e-03, 2.4331e-03, 2.4407e-03, 2.4483e-03, 2.4560e-03, 2.4636e-03, 2.4712e-03, 2.4789e-03, 2.4865e-03, 2.4941e-03, 2.5018e-03, 2.5094e-03, 2.5170e-03, 2.5246e-03, 2.5323e-03, 2.5399e-03, 2.5475e-03, 2.5552e-03, 2.5628e-03, 2.5704e-03, 2.5780e-03, 2.5857e-03, 2.5933e-03, 2.6009e-03, 2.6086e-03, 2.6162e-03, 2.6238e-03, 2.6314e-03, 2.6391e-03, 2.6467e-03, 2.6543e-03, 2.6620e-03, 2.6696e-03, 2.6772e-03, 2.6848e-03, 2.6925e-03, 2.7001e-03, 2.7077e-03, 2.7154e-03, 2.7230e-03, 2.7306e-03, 2.7382e-03, 2.7459e-03, 2.7535e-03, 2.7611e-03, 2.7688e-03, 2.7764e-03, 2.7840e-03, 2.7917e-03, 2.7993e-03, 2.8069e-03, 2.8145e-03, 2.8222e-03, 2.8298e-03, 2.8374e-03, 2.8451e-03, 2.8527e-03, 2.8603e-03, 2.8679e-03, 2.8756e-03, 2.8832e-03, 2.8908e-03, 2.8985e-03, 2.9061e-03, 2.9137e-03, 2.9213e-03, 2.9290e-03, 2.9366e-03, 2.9442e-03, 2.9519e-03, 2.9595e-03, 2.9671e-03, 2.9747e-03, 2.9824e-03, 2.9900e-03, 2.9976e-03, 3.0053e-03, 3.0129e-03, 3.0205e-03, 3.0281e-03, 3.0358e-03, 3.0434e-03, 3.0510e-03, 3.0587e-03, 3.0663e-03, 3.0739e-03, 3.0816e-03, 3.0892e-03, 3.0968e-03, 3.1044e-03, 3.1121e-03, 3.1197e-03, 3.1273e-03, 3.1350e-03, 3.1426e-03, 3.1502e-03, 3.1578e-03, 3.1655e-03, 3.1731e-03, 3.1807e-03, 3.1884e-03, 3.1960e-03, 3.2036e-03, 3.2112e-03, 3.2189e-03, 3.2265e-03, 3.2341e-03, 3.2418e-03, 3.2494e-03, 3.2570e-03, 3.2646e-03, 3.2723e-03, 3.2799e-03, 3.2875e-03, 3.2952e-03, 3.3028e-03, 3.3104e-03, 3.3180e-03, 3.3257e-03, 3.3333e-03, 3.3409e-03, 3.3486e-03, 3.3562e-03, 3.3638e-03, 3.3715e-03, 3.3791e-03, 3.3867e-03, 3.3943e-03, 3.4020e-03, 3.4096e-03, 3.4172e-03, 3.4249e-03, 3.4325e-03, 3.4401e-03, 3.4477e-03, 3.4554e-03, 3.4630e-03, 3.4706e-03, 3.4783e-03, 3.4859e-03, 3.4935e-03, 3.5011e-03, 3.5088e-03, 3.5164e-03, 3.5240e-03, 3.5317e-03, 3.5393e-03, 3.5469e-03, 3.5545e-03, 3.5622e-03, 3.5698e-03, 3.5774e-03, 3.5851e-03, 3.5927e-03, 3.6003e-03, 3.6079e-03, 3.6156e-03, 3.6232e-03, 3.6308e-03, 3.6385e-03, 3.6461e-03, 3.6537e-03, 3.6613e-03, 3.6690e-03, 3.6766e-03, 3.6842e-03, 3.6919e-03, 3.6995e-03, 3.7071e-03, 3.7148e-03, 3.7224e-03, 3.7300e-03, 3.7376e-03, 3.7453e-03, 3.7529e-03, 3.7605e-03, 3.7682e-03, 3.7758e-03, 3.7834e-03, 3.7910e-03, 3.7987e-03, 3.8063e-03, 3.8139e-03, 3.8216e-03, 3.8292e-03, 3.8368e-03, 3.8444e-03, 3.8521e-03, 3.8597e-03, 3.8673e-03, 3.8750e-03, 3.8826e-03, 3.8902e-03, 3.8978e-03, 3.9055e-03, // NOLINT + 3.9207e-03, 3.9360e-03, 3.9513e-03, 3.9665e-03, 3.9818e-03, 3.9970e-03, 4.0123e-03, 4.0275e-03, 4.0428e-03, 4.0581e-03, 4.0733e-03, 4.0886e-03, 4.1038e-03, 4.1191e-03, 4.1343e-03, 4.1496e-03, 4.1649e-03, 4.1801e-03, 4.1954e-03, 4.2106e-03, 4.2259e-03, 4.2412e-03, 4.2564e-03, 4.2717e-03, 4.2869e-03, 4.3022e-03, 4.3174e-03, 4.3327e-03, 4.3480e-03, 4.3632e-03, 4.3785e-03, 4.3937e-03, 4.4090e-03, 4.4243e-03, 4.4395e-03, 4.4548e-03, 4.4700e-03, 4.4853e-03, 4.5005e-03, 4.5158e-03, 4.5311e-03, 4.5463e-03, 4.5616e-03, 4.5768e-03, 4.5921e-03, 4.6074e-03, 4.6226e-03, 4.6379e-03, 4.6531e-03, 4.6684e-03, 4.6836e-03, 4.6989e-03, 4.7142e-03, 4.7294e-03, 4.7447e-03, 4.7599e-03, 4.7752e-03, 4.7905e-03, 4.8057e-03, 4.8210e-03, 4.8362e-03, 4.8515e-03, 4.8667e-03, 4.8820e-03, 4.8973e-03, 4.9125e-03, 4.9278e-03, 4.9430e-03, 4.9583e-03, 4.9736e-03, 4.9888e-03, 5.0041e-03, 5.0193e-03, 5.0346e-03, 5.0498e-03, 5.0651e-03, 5.0804e-03, 5.0956e-03, 5.1109e-03, 5.1261e-03, 5.1414e-03, 5.1567e-03, 5.1719e-03, 5.1872e-03, 5.2024e-03, 5.2177e-03, 5.2329e-03, 5.2482e-03, 5.2635e-03, 5.2787e-03, 5.2940e-03, 5.3092e-03, 5.3245e-03, 5.3398e-03, 5.3550e-03, 5.3703e-03, 5.3855e-03, 5.4008e-03, 5.4160e-03, 5.4313e-03, 5.4466e-03, 5.4618e-03, 5.4771e-03, 5.4923e-03, 5.5076e-03, 5.5229e-03, 5.5381e-03, 5.5534e-03, 5.5686e-03, 5.5839e-03, 5.5991e-03, 5.6144e-03, 5.6297e-03, 5.6449e-03, 5.6602e-03, 5.6754e-03, 5.6907e-03, 5.7060e-03, 5.7212e-03, 5.7365e-03, 5.7517e-03, 5.7670e-03, 5.7822e-03, 5.7975e-03, 5.8128e-03, 5.8280e-03, 5.8433e-03, 5.8585e-03, 5.8738e-03, 5.8891e-03, 5.9043e-03, 5.9196e-03, 5.9348e-03, 5.9501e-03, 5.9653e-03, 5.9806e-03, 5.9959e-03, 6.0111e-03, 6.0264e-03, 6.0416e-03, 6.0569e-03, 6.0722e-03, 6.0874e-03, 6.1027e-03, 6.1179e-03, 6.1332e-03, 6.1484e-03, 6.1637e-03, 6.1790e-03, 6.1942e-03, 6.2095e-03, 6.2247e-03, 6.2400e-03, 6.2553e-03, 6.2705e-03, 6.2858e-03, 6.3010e-03, 6.3163e-03, 6.3315e-03, 6.3468e-03, 6.3621e-03, 6.3773e-03, 6.3926e-03, 6.4078e-03, 6.4231e-03, 6.4384e-03, 6.4536e-03, 6.4689e-03, 6.4841e-03, 6.4994e-03, 6.5146e-03, 6.5299e-03, 6.5452e-03, 6.5604e-03, 6.5757e-03, 6.5909e-03, 6.6062e-03, 6.6215e-03, 6.6367e-03, 6.6520e-03, 6.6672e-03, 6.6825e-03, 6.6977e-03, 6.7130e-03, 6.7283e-03, 6.7435e-03, 6.7588e-03, 6.7740e-03, 6.7893e-03, 6.8046e-03, 6.8198e-03, 6.8351e-03, 6.8503e-03, 6.8656e-03, 6.8808e-03, 6.8961e-03, 6.9114e-03, 6.9266e-03, 6.9419e-03, 6.9571e-03, 6.9724e-03, 6.9877e-03, 7.0029e-03, 7.0182e-03, 7.0334e-03, 7.0487e-03, 7.0639e-03, 7.0792e-03, 7.0945e-03, 7.1097e-03, 7.1250e-03, 7.1402e-03, 7.1555e-03, 7.1708e-03, 7.1860e-03, 7.2013e-03, 7.2165e-03, 7.2318e-03, 7.2470e-03, 7.2623e-03, 7.2776e-03, 7.2928e-03, 7.3081e-03, 7.3233e-03, 7.3386e-03, 7.3539e-03, 7.3691e-03, 7.3844e-03, 7.3996e-03, 7.4149e-03, 7.4301e-03, 7.4454e-03, 7.4607e-03, 7.4759e-03, 7.4912e-03, 7.5064e-03, 7.5217e-03, 7.5370e-03, 7.5522e-03, 7.5675e-03, 7.5827e-03, 7.5980e-03, 7.6132e-03, 7.6285e-03, 7.6438e-03, 7.6590e-03, 7.6743e-03, 7.6895e-03, 7.7048e-03, 7.7201e-03, 7.7353e-03, 7.7506e-03, 7.7658e-03, 7.7811e-03, 7.7963e-03, 7.8116e-03, // NOLINT + 7.8421e-03, 7.8726e-03, 7.9032e-03, 7.9337e-03, 7.9642e-03, 7.9947e-03, 8.0252e-03, 8.0557e-03, 8.0863e-03, 8.1168e-03, 8.1473e-03, 8.1778e-03, 8.2083e-03, 8.2388e-03, 8.2694e-03, 8.2999e-03, 8.3304e-03, 8.3609e-03, 8.3914e-03, 8.4219e-03, 8.4525e-03, 8.4830e-03, 8.5135e-03, 8.5440e-03, 8.5745e-03, 8.6051e-03, 8.6356e-03, 8.6661e-03, 8.6966e-03, 8.7271e-03, 8.7576e-03, 8.7882e-03, 8.8187e-03, 8.8492e-03, 8.8797e-03, 8.9102e-03, 8.9407e-03, 8.9713e-03, 9.0018e-03, 9.0323e-03, 9.0628e-03, 9.0933e-03, 9.1238e-03, 9.1544e-03, 9.1849e-03, 9.2154e-03, 9.2459e-03, 9.2764e-03, 9.3069e-03, 9.3375e-03, 9.3680e-03, 9.3985e-03, 9.4290e-03, 9.4595e-03, 9.4900e-03, 9.5206e-03, 9.5511e-03, 9.5816e-03, 9.6121e-03, 9.6426e-03, 9.6731e-03, 9.7037e-03, 9.7342e-03, 9.7647e-03, 9.7952e-03, 9.8257e-03, 9.8563e-03, 9.8868e-03, 9.9173e-03, 9.9478e-03, 9.9783e-03, 1.0009e-02, 1.0039e-02, 1.0070e-02, 1.0100e-02, 1.0131e-02, 1.0161e-02, 1.0192e-02, 1.0222e-02, 1.0253e-02, 1.0283e-02, 1.0314e-02, 1.0345e-02, 1.0375e-02, 1.0406e-02, 1.0436e-02, 1.0467e-02, 1.0497e-02, 1.0528e-02, 1.0558e-02, 1.0589e-02, 1.0619e-02, 1.0650e-02, 1.0680e-02, 1.0711e-02, 1.0741e-02, 1.0772e-02, 1.0802e-02, 1.0833e-02, 1.0863e-02, 1.0894e-02, 1.0924e-02, 1.0955e-02, 1.0985e-02, 1.1016e-02, 1.1046e-02, 1.1077e-02, 1.1107e-02, 1.1138e-02, 1.1168e-02, 1.1199e-02, 1.1230e-02, 1.1260e-02, 1.1291e-02, 1.1321e-02, 1.1352e-02, 1.1382e-02, 1.1413e-02, 1.1443e-02, 1.1474e-02, 1.1504e-02, 1.1535e-02, 1.1565e-02, 1.1596e-02, 1.1626e-02, 1.1657e-02, 1.1687e-02, 1.1718e-02, 1.1748e-02, 1.1779e-02, 1.1809e-02, 1.1840e-02, 1.1870e-02, 1.1901e-02, 1.1931e-02, 1.1962e-02, 1.1992e-02, 1.2023e-02, 1.2053e-02, 1.2084e-02, 1.2115e-02, 1.2145e-02, 1.2176e-02, 1.2206e-02, 1.2237e-02, 1.2267e-02, 1.2298e-02, 1.2328e-02, 1.2359e-02, 1.2389e-02, 1.2420e-02, 1.2450e-02, 1.2481e-02, 1.2511e-02, 1.2542e-02, 1.2572e-02, 1.2603e-02, 1.2633e-02, 1.2664e-02, 1.2694e-02, 1.2725e-02, 1.2755e-02, 1.2786e-02, 1.2816e-02, 1.2847e-02, 1.2877e-02, 1.2908e-02, 1.2938e-02, 1.2969e-02, 1.3000e-02, 1.3030e-02, 1.3061e-02, 1.3091e-02, 1.3122e-02, 1.3152e-02, 1.3183e-02, 1.3213e-02, 1.3244e-02, 1.3274e-02, 1.3305e-02, 1.3335e-02, 1.3366e-02, 1.3396e-02, 1.3427e-02, 1.3457e-02, 1.3488e-02, 1.3518e-02, 1.3549e-02, 1.3579e-02, 1.3610e-02, 1.3640e-02, 1.3671e-02, 1.3701e-02, 1.3732e-02, 1.3762e-02, 1.3793e-02, 1.3823e-02, 1.3854e-02, 1.3885e-02, 1.3915e-02, 1.3946e-02, 1.3976e-02, 1.4007e-02, 1.4037e-02, 1.4068e-02, 1.4098e-02, 1.4129e-02, 1.4159e-02, 1.4190e-02, 1.4220e-02, 1.4251e-02, 1.4281e-02, 1.4312e-02, 1.4342e-02, 1.4373e-02, 1.4403e-02, 1.4434e-02, 1.4464e-02, 1.4495e-02, 1.4525e-02, 1.4556e-02, 1.4586e-02, 1.4617e-02, 1.4647e-02, 1.4678e-02, 1.4708e-02, 1.4739e-02, 1.4770e-02, 1.4800e-02, 1.4831e-02, 1.4861e-02, 1.4892e-02, 1.4922e-02, 1.4953e-02, 1.4983e-02, 1.5014e-02, 1.5044e-02, 1.5075e-02, 1.5105e-02, 1.5136e-02, 1.5166e-02, 1.5197e-02, 1.5227e-02, 1.5258e-02, 1.5288e-02, 1.5319e-02, 1.5349e-02, 1.5380e-02, 1.5410e-02, 1.5441e-02, 1.5471e-02, 1.5502e-02, 1.5532e-02, 1.5563e-02, 1.5593e-02, 1.5624e-02, // NOLINT + 1.5746e-02, 1.5868e-02, 1.5990e-02, 1.6112e-02, 1.6234e-02, 1.6356e-02, 1.6478e-02, 1.6601e-02, 1.6723e-02, 1.6845e-02, 1.6967e-02, 1.7089e-02, 1.7211e-02, 1.7333e-02, 1.7455e-02, 1.7577e-02, 1.7699e-02, 1.7821e-02, 1.7943e-02, 1.8065e-02, 1.8187e-02, 1.8310e-02, 1.8432e-02, 1.8554e-02, 1.8676e-02, 1.8798e-02, 1.8920e-02, 1.9042e-02, 1.9164e-02, 1.9286e-02, 1.9408e-02, 1.9530e-02, 1.9652e-02, 1.9774e-02, 1.9896e-02, 2.0018e-02, 2.0141e-02, 2.0263e-02, 2.0385e-02, 2.0507e-02, 2.0629e-02, 2.0751e-02, 2.0873e-02, 2.0995e-02, 2.1117e-02, 2.1239e-02, 2.1361e-02, 2.1483e-02, 2.1605e-02, 2.1727e-02, 2.1850e-02, 2.1972e-02, 2.2094e-02, 2.2216e-02, 2.2338e-02, 2.2460e-02, 2.2582e-02, 2.2704e-02, 2.2826e-02, 2.2948e-02, 2.3070e-02, 2.3192e-02, 2.3314e-02, 2.3436e-02, 2.3558e-02, 2.3681e-02, 2.3803e-02, 2.3925e-02, 2.4047e-02, 2.4169e-02, 2.4291e-02, 2.4413e-02, 2.4535e-02, 2.4657e-02, 2.4779e-02, 2.4901e-02, 2.5023e-02, 2.5145e-02, 2.5267e-02, 2.5390e-02, 2.5512e-02, 2.5634e-02, 2.5756e-02, 2.5878e-02, 2.6000e-02, 2.6122e-02, 2.6244e-02, 2.6366e-02, 2.6488e-02, 2.6610e-02, 2.6732e-02, 2.6854e-02, 2.6976e-02, 2.7099e-02, 2.7221e-02, 2.7343e-02, 2.7465e-02, 2.7587e-02, 2.7709e-02, 2.7831e-02, 2.7953e-02, 2.8075e-02, 2.8197e-02, 2.8319e-02, 2.8441e-02, 2.8563e-02, 2.8685e-02, 2.8807e-02, 2.8930e-02, 2.9052e-02, 2.9174e-02, 2.9296e-02, 2.9418e-02, 2.9540e-02, 2.9662e-02, 2.9784e-02, 2.9906e-02, 3.0028e-02, 3.0150e-02, 3.0272e-02, 3.0394e-02, 3.0516e-02, 3.0639e-02, 3.0761e-02, 3.0883e-02, 3.1005e-02, 3.1127e-02, 3.1249e-02, 3.1493e-02, 3.1737e-02, 3.1981e-02, 3.2225e-02, 3.2470e-02, 3.2714e-02, 3.2958e-02, 3.3202e-02, 3.3446e-02, 3.3690e-02, 3.3934e-02, 3.4179e-02, 3.4423e-02, 3.4667e-02, 3.4911e-02, 3.5155e-02, 3.5399e-02, 3.5643e-02, 3.5888e-02, 3.6132e-02, 3.6376e-02, 3.6620e-02, 3.6864e-02, 3.7108e-02, 3.7352e-02, 3.7596e-02, 3.7841e-02, 3.8085e-02, 3.8329e-02, 3.8573e-02, 3.8817e-02, 3.9061e-02, 3.9305e-02, 3.9550e-02, 3.9794e-02, 4.0038e-02, 4.0282e-02, 4.0526e-02, 4.0770e-02, 4.1014e-02, 4.1259e-02, 4.1503e-02, 4.1747e-02, 4.1991e-02, 4.2235e-02, 4.2479e-02, 4.2723e-02, 4.2968e-02, 4.3212e-02, 4.3456e-02, 4.3700e-02, 4.3944e-02, 4.4188e-02, 4.4432e-02, 4.4677e-02, 4.4921e-02, 4.5165e-02, 4.5409e-02, 4.5653e-02, 4.5897e-02, 4.6141e-02, 4.6386e-02, 4.6630e-02, 4.6874e-02, 4.7118e-02, 4.7362e-02, 4.7606e-02, 4.7850e-02, 4.8095e-02, 4.8339e-02, 4.8583e-02, 4.8827e-02, 4.9071e-02, 4.9315e-02, 4.9559e-02, 4.9803e-02, 5.0048e-02, 5.0292e-02, 5.0536e-02, 5.0780e-02, 5.1024e-02, 5.1268e-02, 5.1512e-02, 5.1757e-02, 5.2001e-02, 5.2245e-02, 5.2489e-02, 5.2733e-02, 5.2977e-02, 5.3221e-02, 5.3466e-02, 5.3710e-02, 5.3954e-02, 5.4198e-02, 5.4442e-02, 5.4686e-02, 5.4930e-02, 5.5175e-02, 5.5419e-02, 5.5663e-02, 5.5907e-02, 5.6151e-02, 5.6395e-02, 5.6639e-02, 5.6884e-02, 5.7128e-02, 5.7372e-02, 5.7616e-02, 5.7860e-02, 5.8104e-02, 5.8348e-02, 5.8593e-02, 5.8837e-02, 5.9081e-02, 5.9325e-02, 5.9569e-02, 5.9813e-02, 6.0057e-02, 6.0301e-02, 6.0546e-02, 6.0790e-02, 6.1034e-02, 6.1278e-02, 6.1522e-02, 6.1766e-02, 6.2010e-02, 6.2255e-02, 6.2499e-02, // NOLINT + 6.2743e-02, 6.2987e-02, 6.3231e-02, 6.3475e-02, 6.3719e-02, 6.3964e-02, 6.4208e-02, 6.4452e-02, 6.4696e-02, 6.4940e-02, 6.5184e-02, 6.5428e-02, 6.5673e-02, 6.5917e-02, 6.6161e-02, 6.6405e-02, 6.6649e-02, 6.6893e-02, 6.7137e-02, 6.7382e-02, 6.7626e-02, 6.7870e-02, 6.8114e-02, 6.8358e-02, 6.8602e-02, 6.8846e-02, 6.9091e-02, 6.9335e-02, 6.9579e-02, 6.9823e-02, 7.0067e-02, 7.0311e-02, 7.0555e-02, 7.0799e-02, 7.1044e-02, 7.1288e-02, 7.1532e-02, 7.1776e-02, 7.2020e-02, 7.2264e-02, 7.2508e-02, 7.2753e-02, 7.2997e-02, 7.3241e-02, 7.3485e-02, 7.3729e-02, 7.3973e-02, 7.4217e-02, 7.4462e-02, 7.4706e-02, 7.4950e-02, 7.5194e-02, 7.5438e-02, 7.5682e-02, 7.5926e-02, 7.6171e-02, 7.6415e-02, 7.6659e-02, 7.6903e-02, 7.7147e-02, 7.7391e-02, 7.7635e-02, 7.7880e-02, 7.8124e-02, 7.8368e-02, 7.8612e-02, 7.8856e-02, 7.9100e-02, 7.9344e-02, 7.9589e-02, 7.9833e-02, 8.0077e-02, 8.0321e-02, 8.0565e-02, 8.0809e-02, 8.1053e-02, 8.1298e-02, 8.1542e-02, 8.1786e-02, 8.2030e-02, 8.2274e-02, 8.2518e-02, 8.2762e-02, 8.3006e-02, 8.3251e-02, 8.3495e-02, 8.3739e-02, 8.3983e-02, 8.4227e-02, 8.4471e-02, 8.4715e-02, 8.4960e-02, 8.5204e-02, 8.5448e-02, 8.5692e-02, 8.5936e-02, 8.6180e-02, 8.6424e-02, 8.6669e-02, 8.6913e-02, 8.7157e-02, 8.7401e-02, 8.7645e-02, 8.7889e-02, 8.8133e-02, 8.8378e-02, 8.8622e-02, 8.8866e-02, 8.9110e-02, 8.9354e-02, 8.9598e-02, 8.9842e-02, 9.0087e-02, 9.0331e-02, 9.0575e-02, 9.0819e-02, 9.1063e-02, 9.1307e-02, 9.1551e-02, 9.1796e-02, 9.2040e-02, 9.2284e-02, 9.2528e-02, 9.2772e-02, 9.3016e-02, 9.3260e-02, 9.3504e-02, 9.3749e-02, 9.4237e-02, 9.4725e-02, 9.5213e-02, 9.5702e-02, 9.6190e-02, 9.6678e-02, 9.7167e-02, 9.7655e-02, 9.8143e-02, 9.8631e-02, 9.9120e-02, 9.9608e-02, 1.0010e-01, 1.0058e-01, 1.0107e-01, 1.0156e-01, 1.0205e-01, 1.0254e-01, 1.0303e-01, 1.0351e-01, 1.0400e-01, 1.0449e-01, 1.0498e-01, 1.0547e-01, 1.0596e-01, 1.0644e-01, 1.0693e-01, 1.0742e-01, 1.0791e-01, 1.0840e-01, 1.0889e-01, 1.0937e-01, 1.0986e-01, 1.1035e-01, 1.1084e-01, 1.1133e-01, 1.1182e-01, 1.1230e-01, 1.1279e-01, 1.1328e-01, 1.1377e-01, 1.1426e-01, 1.1474e-01, 1.1523e-01, 1.1572e-01, 1.1621e-01, 1.1670e-01, 1.1719e-01, 1.1767e-01, 1.1816e-01, 1.1865e-01, 1.1914e-01, 1.1963e-01, 1.2012e-01, 1.2060e-01, 1.2109e-01, 1.2158e-01, 1.2207e-01, 1.2256e-01, 1.2305e-01, 1.2353e-01, 1.2402e-01, 1.2451e-01, 1.2500e-01, 1.2549e-01, 1.2598e-01, 1.2646e-01, 1.2695e-01, 1.2744e-01, 1.2793e-01, 1.2842e-01, 1.2890e-01, 1.2939e-01, 1.2988e-01, 1.3037e-01, 1.3086e-01, 1.3135e-01, 1.3183e-01, 1.3232e-01, 1.3281e-01, 1.3330e-01, 1.3379e-01, 1.3428e-01, 1.3476e-01, 1.3525e-01, 1.3574e-01, 1.3623e-01, 1.3672e-01, 1.3721e-01, 1.3769e-01, 1.3818e-01, 1.3867e-01, 1.3916e-01, 1.3965e-01, 1.4014e-01, 1.4062e-01, 1.4111e-01, 1.4160e-01, 1.4209e-01, 1.4258e-01, 1.4306e-01, 1.4355e-01, 1.4404e-01, 1.4453e-01, 1.4502e-01, 1.4551e-01, 1.4599e-01, 1.4648e-01, 1.4697e-01, 1.4746e-01, 1.4795e-01, 1.4844e-01, 1.4892e-01, 1.4941e-01, 1.4990e-01, 1.5039e-01, 1.5088e-01, 1.5137e-01, 1.5185e-01, 1.5234e-01, 1.5283e-01, 1.5332e-01, 1.5381e-01, 1.5430e-01, 1.5478e-01, 1.5527e-01, 1.5576e-01, 1.5625e-01, // NOLINT + 1.5674e-01, 1.5723e-01, 1.5771e-01, 1.5820e-01, 1.5869e-01, 1.5918e-01, 1.5967e-01, 1.6015e-01, 1.6064e-01, 1.6113e-01, 1.6162e-01, 1.6211e-01, 1.6260e-01, 1.6308e-01, 1.6357e-01, 1.6406e-01, 1.6455e-01, 1.6504e-01, 1.6553e-01, 1.6601e-01, 1.6650e-01, 1.6699e-01, 1.6748e-01, 1.6797e-01, 1.6846e-01, 1.6894e-01, 1.6943e-01, 1.6992e-01, 1.7041e-01, 1.7090e-01, 1.7139e-01, 1.7187e-01, 1.7236e-01, 1.7285e-01, 1.7334e-01, 1.7383e-01, 1.7431e-01, 1.7480e-01, 1.7529e-01, 1.7578e-01, 1.7627e-01, 1.7676e-01, 1.7724e-01, 1.7773e-01, 1.7822e-01, 1.7871e-01, 1.7920e-01, 1.7969e-01, 1.8017e-01, 1.8066e-01, 1.8115e-01, 1.8164e-01, 1.8213e-01, 1.8262e-01, 1.8310e-01, 1.8359e-01, 1.8408e-01, 1.8457e-01, 1.8506e-01, 1.8555e-01, 1.8603e-01, 1.8652e-01, 1.8701e-01, 1.8750e-01, 1.8848e-01, 1.8945e-01, 1.9043e-01, 1.9140e-01, 1.9238e-01, 1.9336e-01, 1.9433e-01, 1.9531e-01, 1.9629e-01, 1.9726e-01, 1.9824e-01, 1.9922e-01, 2.0019e-01, 2.0117e-01, 2.0215e-01, 2.0312e-01, 2.0410e-01, 2.0508e-01, 2.0605e-01, 2.0703e-01, 2.0801e-01, 2.0898e-01, 2.0996e-01, 2.1094e-01, 2.1191e-01, 2.1289e-01, 2.1387e-01, 2.1484e-01, 2.1582e-01, 2.1680e-01, 2.1777e-01, 2.1875e-01, 2.1972e-01, 2.2070e-01, 2.2168e-01, 2.2265e-01, 2.2363e-01, 2.2461e-01, 2.2558e-01, 2.2656e-01, 2.2754e-01, 2.2851e-01, 2.2949e-01, 2.3047e-01, 2.3144e-01, 2.3242e-01, 2.3340e-01, 2.3437e-01, 2.3535e-01, 2.3633e-01, 2.3730e-01, 2.3828e-01, 2.3926e-01, 2.4023e-01, 2.4121e-01, 2.4219e-01, 2.4316e-01, 2.4414e-01, 2.4512e-01, 2.4609e-01, 2.4707e-01, 2.4805e-01, 2.4902e-01, 2.5000e-01, 2.5097e-01, 2.5195e-01, 2.5293e-01, 2.5390e-01, 2.5488e-01, 2.5586e-01, 2.5683e-01, 2.5781e-01, 2.5879e-01, 2.5976e-01, 2.6074e-01, 2.6172e-01, 2.6269e-01, 2.6367e-01, 2.6465e-01, 2.6562e-01, 2.6660e-01, 2.6758e-01, 2.6855e-01, 2.6953e-01, 2.7051e-01, 2.7148e-01, 2.7246e-01, 2.7344e-01, 2.7441e-01, 2.7539e-01, 2.7637e-01, 2.7734e-01, 2.7832e-01, 2.7930e-01, 2.8027e-01, 2.8125e-01, 2.8222e-01, 2.8320e-01, 2.8418e-01, 2.8515e-01, 2.8613e-01, 2.8711e-01, 2.8808e-01, 2.8906e-01, 2.9004e-01, 2.9101e-01, 2.9199e-01, 2.9297e-01, 2.9394e-01, 2.9492e-01, 2.9590e-01, 2.9687e-01, 2.9785e-01, 2.9883e-01, 2.9980e-01, 3.0078e-01, 3.0176e-01, 3.0273e-01, 3.0371e-01, 3.0469e-01, 3.0566e-01, 3.0664e-01, 3.0762e-01, 3.0859e-01, 3.0957e-01, 3.1055e-01, 3.1152e-01, 3.1250e-01, 3.1347e-01, 3.1445e-01, 3.1543e-01, 3.1640e-01, 3.1738e-01, 3.1836e-01, 3.1933e-01, 3.2031e-01, 3.2129e-01, 3.2226e-01, 3.2324e-01, 3.2422e-01, 3.2519e-01, 3.2617e-01, 3.2715e-01, 3.2812e-01, 3.2910e-01, 3.3008e-01, 3.3105e-01, 3.3203e-01, 3.3301e-01, 3.3398e-01, 3.3496e-01, 3.3594e-01, 3.3691e-01, 3.3789e-01, 3.3887e-01, 3.3984e-01, 3.4082e-01, 3.4180e-01, 3.4277e-01, 3.4375e-01, 3.4472e-01, 3.4570e-01, 3.4668e-01, 3.4765e-01, 3.4863e-01, 3.4961e-01, 3.5058e-01, 3.5156e-01, 3.5254e-01, 3.5351e-01, 3.5449e-01, 3.5547e-01, 3.5644e-01, 3.5742e-01, 3.5840e-01, 3.5937e-01, 3.6035e-01, 3.6133e-01, 3.6230e-01, 3.6328e-01, 3.6426e-01, 3.6523e-01, 3.6621e-01, 3.6719e-01, 3.6816e-01, 3.6914e-01, 3.7012e-01, 3.7109e-01, 3.7207e-01, 3.7305e-01, 3.7402e-01, 3.7500e-01, // NOLINT + 3.7695e-01, 3.7890e-01, 3.8086e-01, 3.8281e-01, 3.8476e-01, 3.8672e-01, 3.8867e-01, 3.9062e-01, 3.9258e-01, 3.9453e-01, 3.9648e-01, 3.9844e-01, 4.0039e-01, 4.0234e-01, 4.0430e-01, 4.0625e-01, 4.0820e-01, 4.1015e-01, 4.1211e-01, 4.1406e-01, 4.1601e-01, 4.1797e-01, 4.1992e-01, 4.2187e-01, 4.2383e-01, 4.2578e-01, 4.2773e-01, 4.2969e-01, 4.3164e-01, 4.3359e-01, 4.3555e-01, 4.3750e-01, 4.3945e-01, 4.4140e-01, 4.4336e-01, 4.4531e-01, 4.4726e-01, 4.4922e-01, 4.5117e-01, 4.5312e-01, 4.5508e-01, 4.5703e-01, 4.5898e-01, 4.6094e-01, 4.6289e-01, 4.6484e-01, 4.6680e-01, 4.6875e-01, 4.7070e-01, 4.7265e-01, 4.7461e-01, 4.7656e-01, 4.7851e-01, 4.8047e-01, 4.8242e-01, 4.8437e-01, 4.8633e-01, 4.8828e-01, 4.9023e-01, 4.9219e-01, 4.9414e-01, 4.9609e-01, 4.9805e-01, 5.0000e-01, 5.0195e-01, 5.0390e-01, 5.0586e-01, 5.0781e-01, 5.0976e-01, 5.1172e-01, 5.1367e-01, 5.1562e-01, 5.1758e-01, 5.1953e-01, 5.2148e-01, 5.2344e-01, 5.2539e-01, 5.2734e-01, 5.2930e-01, 5.3125e-01, 5.3320e-01, 5.3515e-01, 5.3711e-01, 5.3906e-01, 5.4101e-01, 5.4297e-01, 5.4492e-01, 5.4687e-01, 5.4883e-01, 5.5078e-01, 5.5273e-01, 5.5469e-01, 5.5664e-01, 5.5859e-01, 5.6055e-01, 5.6250e-01, 5.6445e-01, 5.6640e-01, 5.6836e-01, 5.7031e-01, 5.7226e-01, 5.7422e-01, 5.7617e-01, 5.7812e-01, 5.8008e-01, 5.8203e-01, 5.8398e-01, 5.8594e-01, 5.8789e-01, 5.8984e-01, 5.9180e-01, 5.9375e-01, 5.9570e-01, 5.9765e-01, 5.9961e-01, 6.0156e-01, 6.0351e-01, 6.0547e-01, 6.0742e-01, 6.0937e-01, 6.1133e-01, 6.1328e-01, 6.1523e-01, 6.1719e-01, 6.1914e-01, 6.2109e-01, 6.2305e-01, 6.2500e-01, 6.2695e-01, 6.2890e-01, 6.3086e-01, 6.3281e-01, 6.3476e-01, 6.3672e-01, 6.3867e-01, 6.4062e-01, 6.4258e-01, 6.4453e-01, 6.4648e-01, 6.4844e-01, 6.5039e-01, 6.5234e-01, 6.5430e-01, 6.5625e-01, 6.5820e-01, 6.6015e-01, 6.6211e-01, 6.6406e-01, 6.6601e-01, 6.6797e-01, 6.6992e-01, 6.7187e-01, 6.7383e-01, 6.7578e-01, 6.7773e-01, 6.7969e-01, 6.8164e-01, 6.8359e-01, 6.8554e-01, 6.8750e-01, 6.8945e-01, 6.9140e-01, 6.9336e-01, 6.9531e-01, 6.9726e-01, 6.9922e-01, 7.0117e-01, 7.0312e-01, 7.0508e-01, 7.0703e-01, 7.0898e-01, 7.1094e-01, 7.1289e-01, 7.1484e-01, 7.1679e-01, 7.1875e-01, 7.2070e-01, 7.2265e-01, 7.2461e-01, 7.2656e-01, 7.2851e-01, 7.3047e-01, 7.3242e-01, 7.3437e-01, 7.3633e-01, 7.3828e-01, 7.4023e-01, 7.4219e-01, 7.4414e-01, 7.4609e-01, 7.4804e-01, 7.5000e-01, 7.5390e-01, 7.5781e-01, 7.6172e-01, 7.6562e-01, 7.6953e-01, 7.7344e-01, 7.7734e-01, 7.8125e-01, 7.8515e-01, 7.8906e-01, 7.9297e-01, 7.9687e-01, 8.0078e-01, 8.0469e-01, 8.0859e-01, 8.1250e-01, 8.1640e-01, 8.2031e-01, 8.2422e-01, 8.2812e-01, 8.3203e-01, 8.3594e-01, 8.3984e-01, 8.4375e-01, 8.4765e-01, 8.5156e-01, 8.5547e-01, 8.5937e-01, 8.6328e-01, 8.6719e-01, 8.7109e-01, 8.7500e-01, 8.7890e-01, 8.8281e-01, 8.8672e-01, 8.9062e-01, 8.9453e-01, 8.9844e-01, 9.0234e-01, 9.0625e-01, 9.1015e-01, 9.1406e-01, 9.1797e-01, 9.2187e-01, 9.2578e-01, 9.2969e-01, 9.3359e-01, 9.3750e-01, 9.4140e-01, 9.4531e-01, 9.4922e-01, 9.5312e-01, 9.5703e-01, 9.6094e-01, 9.6484e-01, 9.6875e-01, 9.7265e-01, 9.7656e-01, 9.8047e-01, 9.8437e-01, 9.8828e-01, 9.9219e-01, 9.9609e-01, 1.0000e+00 // NOLINT }; -float4 val4_from_12(uchar8 pvs, float gain) { - uint4 parsed = (uint4)(((uint)pvs.s0<<4) + (pvs.s1>>4), // is from the previous 10 bit - ((uint)pvs.s2<<4) + (pvs.s4&0xF), - ((uint)pvs.s3<<4) + (pvs.s4>>4), - ((uint)pvs.s5<<4) + (pvs.s7&0xF)); - #if IS_OX +float4 normalize_pv(int4 parsed, float vignette_factor) { // PWL - //float4 pv = (convert_float4(parsed) - 64.0) / (4096.0 - 64.0); float4 pv = {ox03c10_lut[parsed.s0], ox03c10_lut[parsed.s1], ox03c10_lut[parsed.s2], ox03c10_lut[parsed.s3]}; - - // it's a 24 bit signal, center in the middle 8 bits - return clamp(pv*gain*256.0, 0.0, 1.0); - #else // AR - // normalize and scale - float4 pv = (convert_float4(parsed) - 168.0) / (4096.0 - 168.0); - return clamp(pv*gain, 0.0, 1.0); - #endif - + return clamp(pv*vignette_factor*256.0, 0.0, 1.0); } -float4 val4_from_10(uchar8 pvs, uchar ext, bool aligned, float gain) { - uint4 parsed; - if (aligned) { - parsed = (uint4)(((uint)pvs.s0 << 2) + (pvs.s1 & 0b00000011), - ((uint)pvs.s2 << 2) + ((pvs.s6 & 0b11000000) / 64), - ((uint)pvs.s3 << 2) + ((pvs.s6 & 0b00110000) / 16), - ((uint)pvs.s4 << 2) + ((pvs.s6 & 0b00001100) / 4)); - } else { - parsed = (uint4)(((uint)pvs.s0 << 2) + ((pvs.s3 & 0b00110000) / 16), - ((uint)pvs.s1 << 2) + ((pvs.s3 & 0b00001100) / 4), - ((uint)pvs.s2 << 2) + ((pvs.s3 & 0b00000011)), - ((uint)pvs.s4 << 2) + ((ext & 0b11000000) / 64)); - } - - float4 pv = convert_float4(parsed) / 1024.0; - return clamp(pv*gain, 0.0, 1.0); +float3 color_correct(float3 rgb) { + float3 corrected = rgb.x * (float3)(1.5664815, -0.29808738, -0.03973474); + corrected += rgb.y * (float3)(-0.48672447, 1.41914433, -0.40295248); + corrected += rgb.z * (float3)(-0.07975703, -0.12105695, 1.44268722); + return corrected; } -float get_k(float a, float b, float c, float d) { - return 2.0 - (fabs(a - b) + fabs(c - d)); +float3 apply_gamma(float3 rgb, int expo_time) { + return -0.507089*exp(-12.54124638*rgb) + 0.9655*powr(rgb, 0.5) - 0.472597*rgb + 0.507089; } -__kernel void debayer10(const __global uchar * in, __global uchar * out) -{ - const int gid_x = get_global_id(0); - const int gid_y = get_global_id(1); - - const int row_before_offset = (gid_y == 0) ? 2 : 0; - const int row_after_offset = (gid_y == (RGB_HEIGHT/2 - 1)) ? 1 : 3; - - float3 rgb; - uchar3 rgb_out[4]; - - #if IS_BGGR - constant int row_read_order[] = {3, 2, 1, 0}; - constant int rgb_write_order[] = {2, 3, 0, 1}; - #else - constant int row_read_order[] = {0, 1, 2, 3}; - constant int rgb_write_order[] = {0, 1, 2, 3}; - #endif - - int start_idx; - #if IS_10BIT - bool aligned10; - if (gid_x % 2 == 0) { - aligned10 = true; - start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (5 * gid_x / 2 - 2) + (FRAME_STRIDE * FRAME_OFFSET); - } else { - aligned10 = false; - start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (5 * (gid_x - 1) / 2 + 1) + (FRAME_STRIDE * FRAME_OFFSET); - } - #else - start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (3 * gid_x - 2) + (FRAME_STRIDE * FRAME_OFFSET); - #endif - - // read in 8x4 chars - uchar8 dat[4]; - dat[0] = vload8(0, in + start_idx + FRAME_STRIDE*row_before_offset); - dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*1); - dat[2] = vload8(0, in + start_idx + FRAME_STRIDE*2); - dat[3] = vload8(0, in + start_idx + FRAME_STRIDE*row_after_offset); - - // need extra bit for 10-bit - #if IS_10BIT - uchar extra[4]; - if (!aligned10) { - extra[0] = in[start_idx + FRAME_STRIDE*row_before_offset + 8]; - extra[1] = in[start_idx + FRAME_STRIDE*1 + 8]; - extra[2] = in[start_idx + FRAME_STRIDE*2 + 8]; - extra[3] = in[start_idx + FRAME_STRIDE*row_after_offset + 8]; - } - #endif - - // correct vignetting - #if VIGNETTING - int gx = (gid_x*2 - RGB_WIDTH/2); - int gy = (gid_y*2 - RGB_HEIGHT/2); - const float gain = get_vignetting_s(gx*gx + gy*gy); - #else - const float gain = 1.0; - #endif - - float4 v_rows[4]; - // parse into floats - #if IS_10BIT - v_rows[row_read_order[0]] = val4_from_10(dat[0], extra[0], aligned10, 1.0); - v_rows[row_read_order[1]] = val4_from_10(dat[1], extra[1], aligned10, 1.0); - v_rows[row_read_order[2]] = val4_from_10(dat[2], extra[2], aligned10, 1.0); - v_rows[row_read_order[3]] = val4_from_10(dat[3], extra[3], aligned10, 1.0); - #else - v_rows[row_read_order[0]] = val4_from_12(dat[0], gain); - v_rows[row_read_order[1]] = val4_from_12(dat[1], gain); - v_rows[row_read_order[2]] = val4_from_12(dat[2], gain); - v_rows[row_read_order[3]] = val4_from_12(dat[3], gain); - #endif - - // mirror padding - if (gid_x == 0) { - v_rows[0].s0 = v_rows[0].s2; - v_rows[1].s0 = v_rows[1].s2; - v_rows[2].s0 = v_rows[2].s2; - v_rows[3].s0 = v_rows[3].s2; - } else if (gid_x == RGB_WIDTH/2 - 1) { - v_rows[0].s3 = v_rows[0].s1; - v_rows[1].s3 = v_rows[1].s1; - v_rows[2].s3 = v_rows[2].s1; - v_rows[3].s3 = v_rows[3].s1; - } - - // a simplified version of https://opensignalprocessingjournal.com/contents/volumes/V6/TOSIGPJ-6-1/TOSIGPJ-6-1.pdf - const float k01 = get_k(v_rows[0].s0, v_rows[1].s1, v_rows[0].s2, v_rows[1].s1); - const float k02 = get_k(v_rows[0].s2, v_rows[1].s1, v_rows[2].s2, v_rows[1].s1); - const float k03 = get_k(v_rows[2].s0, v_rows[1].s1, v_rows[2].s2, v_rows[1].s1); - const float k04 = get_k(v_rows[0].s0, v_rows[1].s1, v_rows[2].s0, v_rows[1].s1); - rgb.x = (k02*v_rows[1].s2+k04*v_rows[1].s0)/(k02+k04); // R_G1 - rgb.y = v_rows[1].s1; // G1(R) - rgb.z = (k01*v_rows[0].s1+k03*v_rows[2].s1)/(k01+k03); // B_G1 - rgb_out[rgb_write_order[0]] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - - const float k11 = get_k(v_rows[0].s1, v_rows[2].s1, v_rows[0].s3, v_rows[2].s3); - const float k12 = get_k(v_rows[0].s2, v_rows[1].s1, v_rows[1].s3, v_rows[2].s2); - const float k13 = get_k(v_rows[0].s1, v_rows[0].s3, v_rows[2].s1, v_rows[2].s3); - const float k14 = get_k(v_rows[0].s2, v_rows[1].s3, v_rows[2].s2, v_rows[1].s1); - rgb.x = v_rows[1].s2; // R - rgb.y = (k11*(v_rows[0].s2+v_rows[2].s2)*0.5+k13*(v_rows[1].s3+v_rows[1].s1)*0.5)/(k11+k13); // G_R - rgb.z = (k12*(v_rows[0].s3+v_rows[2].s1)*0.5+k14*(v_rows[0].s1+v_rows[2].s3)*0.5)/(k12+k14); // B_R - rgb_out[rgb_write_order[1]] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - - const float k21 = get_k(v_rows[1].s0, v_rows[3].s0, v_rows[1].s2, v_rows[3].s2); - const float k22 = get_k(v_rows[1].s1, v_rows[2].s0, v_rows[2].s2, v_rows[3].s1); - const float k23 = get_k(v_rows[1].s0, v_rows[1].s2, v_rows[3].s0, v_rows[3].s2); - const float k24 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[3].s1, v_rows[2].s0); - rgb.x = (k22*(v_rows[1].s2+v_rows[3].s0)*0.5+k24*(v_rows[1].s0+v_rows[3].s2)*0.5)/(k22+k24); // R_B - rgb.y = (k21*(v_rows[1].s1+v_rows[3].s1)*0.5+k23*(v_rows[2].s2+v_rows[2].s0)*0.5)/(k21+k23); // G_B - rgb.z = v_rows[2].s1; // B - rgb_out[rgb_write_order[2]] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - - const float k31 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[1].s3, v_rows[2].s2); - const float k32 = get_k(v_rows[1].s3, v_rows[2].s2, v_rows[3].s3, v_rows[2].s2); - const float k33 = get_k(v_rows[3].s1, v_rows[2].s2, v_rows[3].s3, v_rows[2].s2); - const float k34 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[3].s1, v_rows[2].s2); - rgb.x = (k31*v_rows[1].s2+k33*v_rows[3].s2)/(k31+k33); // R_G2 - rgb.y = v_rows[2].s2; // G2(B) - rgb.z = (k32*v_rows[2].s3+k34*v_rows[2].s1)/(k32+k34); // B_G2 - rgb_out[rgb_write_order[3]] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - - // write ys - uchar2 yy = (uchar2)( - RGB_TO_Y(rgb_out[0].s0, rgb_out[0].s1, rgb_out[0].s2), - RGB_TO_Y(rgb_out[1].s0, rgb_out[1].s1, rgb_out[1].s2) - ); - vstore2(yy, 0, out + mad24(gid_y * 2, YUV_STRIDE, gid_x * 2)); - yy = (uchar2)( - RGB_TO_Y(rgb_out[2].s0, rgb_out[2].s1, rgb_out[2].s2), - RGB_TO_Y(rgb_out[3].s0, rgb_out[3].s1, rgb_out[3].s2) - ); - vstore2(yy, 0, out + mad24(gid_y * 2 + 1, YUV_STRIDE, gid_x * 2)); - - // write uvs - const short ar = AVERAGE(rgb_out[0].s0, rgb_out[1].s0, rgb_out[2].s0, rgb_out[3].s0); - const short ag = AVERAGE(rgb_out[0].s1, rgb_out[1].s1, rgb_out[2].s1, rgb_out[3].s1); - const short ab = AVERAGE(rgb_out[0].s2, rgb_out[1].s2, rgb_out[2].s2, rgb_out[3].s2); - uchar2 uv = (uchar2)( - RGB_TO_U(ar, ag, ab), - RGB_TO_V(ar, ag, ab) - ); - vstore2(uv, 0, out + UV_OFFSET + mad24(gid_y, YUV_STRIDE, gid_x * 2)); -} +#endif \ No newline at end of file diff --git a/system/camerad/sensors/sensor.h b/system/camerad/sensors/sensor.h index d97fd32a9c..d004163644 100644 --- a/system/camerad/sensors/sensor.h +++ b/system/camerad/sensors/sensor.h @@ -22,6 +22,7 @@ public: virtual void processRegisters(CameraState *c, cereal::FrameData::Builder &framed) const {} cereal::FrameData::ImageSensor image_sensor = cereal::FrameData::ImageSensor::UNKNOWN; + float pixel_size_mm; uint32_t frame_width, frame_height; uint32_t frame_stride; uint32_t frame_offset = 0; diff --git a/system/camerad/test/test_ae_gray.cc b/system/camerad/test/test_ae_gray.cc index 06d784927a..be9a0cc59f 100644 --- a/system/camerad/test/test_ae_gray.cc +++ b/system/camerad/test/test_ae_gray.cc @@ -36,6 +36,7 @@ TEST_CASE("camera.test_set_exposure_target") { cb.cur_yuv_buf = &vb; cb.rgb_width = W; cb.rgb_height = H; + Rect rect = {0, 0, W-1, H-1}; printf("AE test patterns %dx%d\n", cb.rgb_width, cb.rgb_height); @@ -60,7 +61,7 @@ TEST_CASE("camera.test_set_exposure_target") { memset(&fb_y[h_0*W+h_1*W], l[2], h_2*W); memset(&fb_y[h_0*W+h_1*W+h_2*W], l[3], h_3*W); memset(&fb_y[h_0*W+h_1*W+h_2*W+h_3*W], l[4], h_4*W); - float ev = set_exposure_target((const CameraBuf*) &cb, 0, W-1, 1, 0, H-1, 1); + float ev = set_exposure_target((const CameraBuf*) &cb, rect, 1, 1); // printf("%d/%d/%d/%d/%d ev is %f\n", h_0, h_1, h_2, h_3, h_4, ev); // printf("%f\n", ev); From 0d5dd25db51b01486933a5f1299ccac26521d89d Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 19 Apr 2024 10:03:47 -0700 Subject: [PATCH 482/599] jenkins: simplify timer check (#32254) simplify timer check --- Jenkinsfile | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1a0e2c73e9..efba905c6b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,26 +9,9 @@ def retryWithDelay(int maxRetries, int delay, Closure body) { throw Exception("Failed after ${maxRetries} retries") } -// check if started by timer: https://stackoverflow.com/questions/43516025/how-to-handle-nightly-build-in-jenkins-declarative-pipeline -@NonCPS +// check if started by timer: https://gist.github.com/aaclarker/75b8a0eb2b4d600779f84f8e849f2c37 def isJobStartedByTimer() { - def startedByTimer = false - try { - def buildCauses = currentBuild.rawBuild.getCauses() - for ( buildCause in buildCauses ) { - if (buildCause != null) { - def causeDescription = buildCause.getShortDescription() - echo "shortDescription: ${causeDescription}" - if (causeDescription.contains("Started by timer")) { - startedByTimer = true - } - } - } - } catch(theError) { - echo "Error getting build cause" - } - - return startedByTimer + return currentBuild.getBuildCauses()[0]["shortDescription"].matches("Started by timer"); } def device(String ip, String step_label, String cmd) { From 60c71580dae659f97a74281271923e60c115eb8a Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 19 Apr 2024 11:14:40 -0700 Subject: [PATCH 483/599] [bot] Fingerprints: add missing FW versions from new users (#32253) Export fingerprints --- selfdrive/car/honda/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index e7d325ca18..d53cffe325 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -875,6 +875,7 @@ FW_VERSIONS = { b'37805-5YF-A750\x00\x00', b'37805-5YF-A760\x00\x00', b'37805-5YF-A850\x00\x00', + b'37805-5YF-A860\x00\x00', b'37805-5YF-A870\x00\x00', b'37805-5YF-AD20\x00\x00', b'37805-5YF-C210\x00\x00', From a824bd75ef38d3e40341151dd8bf5fb1eac02f3c Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sat, 20 Apr 2024 02:15:34 +0800 Subject: [PATCH 484/599] replay: refactor `Event` to remove the readers (#32252) Refactor struct Event to remove the MessageReader from it --- tools/cabana/streams/replaystream.cc | 8 +++- tools/cabana/videowidget.cc | 6 ++- tools/replay/SConscript | 2 - tools/replay/camera.cc | 14 ++++-- tools/replay/camera.h | 6 +-- tools/replay/logreader.cc | 68 +++++++++------------------- tools/replay/logreader.h | 19 +++----- tools/replay/replay.cc | 36 ++++++++++----- tools/replay/tests/test_replay.cc | 2 +- tools/replay/util.cc | 1 + 10 files changed, 76 insertions(+), 86 deletions(-) diff --git a/tools/cabana/streams/replaystream.cc b/tools/cabana/streams/replaystream.cc index aff0122b47..3fa8bb0fe9 100644 --- a/tools/cabana/streams/replaystream.cc +++ b/tools/cabana/streams/replaystream.cc @@ -36,7 +36,9 @@ void ReplayStream::mergeSegments() { for (auto it = seg->log->events.cbegin(); it != seg->log->events.cend(); ++it) { if ((*it)->which == cereal::Event::Which::CAN) { const uint64_t ts = (*it)->mono_time; - for (const auto &c : (*it)->event.getCan()) { + capnp::FlatArrayMessageReader reader((*it)->data); + auto event = reader.getRoot(); + for (const auto &c : event.getCan()) { new_events.push_back(newEvent(ts, c)); } } @@ -66,7 +68,9 @@ bool ReplayStream::eventFilter(const Event *event) { static double prev_update_ts = 0; if (event->which == cereal::Event::Which::CAN) { double current_sec = event->mono_time / 1e9 - routeStartTime(); - for (const auto &c : event->event.getCan()) { + capnp::FlatArrayMessageReader reader(event->data); + auto e = reader.getRoot(); + for (const auto &c : e.getCan()) { MessageId id = {.source = c.getSrc(), .address = c.getAddress()}; const auto dat = c.getDat(); updateEvent(id, current_sec, (const uint8_t*)dat.begin(), dat.size()); diff --git a/tools/cabana/videowidget.cc b/tools/cabana/videowidget.cc index a6fd0b2b64..ad20543755 100644 --- a/tools/cabana/videowidget.cc +++ b/tools/cabana/videowidget.cc @@ -263,7 +263,8 @@ void Slider::parseQLog(int segnum, std::shared_ptr qlog) { std::mutex mutex; QtConcurrent::blockingMap(qlog->events.cbegin(), qlog->events.cend(), [&mutex, this](const Event *e) { if (e->which == cereal::Event::Which::THUMBNAIL) { - auto thumb = e->event.getThumbnail(); + capnp::FlatArrayMessageReader reader(e->data); + auto thumb = reader.getRoot().getThumbnail(); auto data = thumb.getThumbnail(); if (QPixmap pm; pm.loadFromData(data.begin(), data.size(), "jpeg")) { QPixmap scaled = pm.scaledToHeight(MIN_VIDEO_HEIGHT - THUMBNAIL_MARGIN * 2, Qt::SmoothTransformation); @@ -271,7 +272,8 @@ void Slider::parseQLog(int segnum, std::shared_ptr qlog) { thumbnails[thumb.getTimestampEof()] = scaled; } } else if (e->which == cereal::Event::Which::CONTROLS_STATE) { - auto cs = e->event.getControlsState(); + capnp::FlatArrayMessageReader reader(e->data); + auto cs = reader.getRoot().getControlsState(); if (cs.getAlertType().size() > 0 && cs.getAlertText1().size() > 0 && cs.getAlertSize() != cereal::ControlsState::AlertSize::NONE) { std::lock_guard lk(mutex); diff --git a/tools/replay/SConscript b/tools/replay/SConscript index db8447003b..5d88f560be 100644 --- a/tools/replay/SConscript +++ b/tools/replay/SConscript @@ -9,8 +9,6 @@ if arch == "Darwin": else: base_libs.append('OpenCL') -qt_env['CXXFLAGS'] += ["-Wno-deprecated-declarations"] - replay_lib_src = ["replay.cc", "consoleui.cc", "camera.cc", "filereader.cc", "logreader.cc", "framereader.cc", "route.cc", "util.cc"] replay_lib = qt_env.Library("qt_replay", replay_lib_src, LIBS=base_libs, FRAMEWORKS=base_frameworks) Export('replay_lib') diff --git a/tools/replay/camera.cc b/tools/replay/camera.cc index 49f3010c6c..9a023db6fa 100644 --- a/tools/replay/camera.cc +++ b/tools/replay/camera.cc @@ -1,7 +1,8 @@ #include "tools/replay/camera.h" +#include + #include -#include #include "third_party/linux/include/msm_media_info.h" #include "tools/replay/util.h" @@ -57,9 +58,14 @@ void CameraServer::cameraThread(Camera &cam) { }; while (true) { - const auto [fr, eidx] = cam.queue.pop(); + const auto [fr, event] = cam.queue.pop(); if (!fr) break; + capnp::FlatArrayMessageReader reader(event->data); + auto evt = reader.getRoot(); + auto eidx = capnp::AnyStruct::Reader(evt).getPointerSection()[0].getAs(); + if (eidx.getType() != cereal::EncodeIndex::Type::FULL_H_E_V_C) continue; + const int id = eidx.getSegmentId(); bool prefetched = (id == cam.cached_id && eidx.getSegmentNum() == cam.cached_seg); auto yuv = prefetched ? cam.cached_buf : read_frame(fr, id); @@ -83,7 +89,7 @@ void CameraServer::cameraThread(Camera &cam) { } } -void CameraServer::pushFrame(CameraType type, FrameReader *fr, const cereal::EncodeIndex::Reader &eidx) { +void CameraServer::pushFrame(CameraType type, FrameReader *fr, const Event *event) { auto &cam = cameras_[type]; if (cam.width != fr->width || cam.height != fr->height) { cam.width = fr->width; @@ -93,7 +99,7 @@ void CameraServer::pushFrame(CameraType type, FrameReader *fr, const cereal::Enc } ++publishing_; - cam.queue.push({fr, eidx}); + cam.queue.push({fr, event}); } void CameraServer::waitForSent() { diff --git a/tools/replay/camera.h b/tools/replay/camera.h index 9f43c5a362..436423ac72 100644 --- a/tools/replay/camera.h +++ b/tools/replay/camera.h @@ -1,7 +1,5 @@ #pragma once -#include - #include #include #include @@ -17,7 +15,7 @@ class CameraServer { public: CameraServer(std::pair camera_size[MAX_CAMERAS] = nullptr); ~CameraServer(); - void pushFrame(CameraType type, FrameReader* fr, const cereal::EncodeIndex::Reader& eidx); + void pushFrame(CameraType type, FrameReader* fr, const Event *event); void waitForSent(); protected: @@ -27,7 +25,7 @@ protected: int width; int height; std::thread thread; - SafeQueue> queue; + SafeQueue> queue; int cached_id = -1; int cached_seg = -1; VisionBuf * cached_buf; diff --git a/tools/replay/logreader.cc b/tools/replay/logreader.cc index c92ff4753f..36b07f19d0 100644 --- a/tools/replay/logreader.cc +++ b/tools/replay/logreader.cc @@ -4,34 +4,7 @@ #include "tools/replay/filereader.h" #include "tools/replay/util.h" -Event::Event(const kj::ArrayPtr &amsg, bool frame) : reader(amsg), frame(frame) { - words = kj::ArrayPtr(amsg.begin(), reader.getEnd()); - event = reader.getRoot(); - which = event.which(); - mono_time = event.getLogMonoTime(); - - // 1) Send video data at t=timestampEof/timestampSof - // 2) Send encodeIndex packet at t=logMonoTime - if (frame) { - auto idx = capnp::AnyStruct::Reader(event).getPointerSection()[0].getAs(); - // C2 only has eof set, and some older routes have neither - uint64_t sof = idx.getTimestampSof(); - uint64_t eof = idx.getTimestampEof(); - if (sof > 0) { - mono_time = sof; - } else if (eof > 0) { - mono_time = eof; - } - } -} - -// class LogReader - LogReader::LogReader(size_t memory_pool_block_size) { -#ifdef HAS_MEMORY_RESOURCE - const size_t buf_size = sizeof(Event) * memory_pool_block_size; - mbr_ = std::make_unique(buf_size); -#endif events.reserve(memory_pool_block_size); } @@ -61,33 +34,28 @@ bool LogReader::parse(std::atomic *abort) { try { kj::ArrayPtr words((const capnp::word *)raw_.data(), raw_.size() / sizeof(capnp::word)); while (words.size() > 0 && !(abort && *abort)) { -#ifdef HAS_MEMORY_RESOURCE - Event *evt = new (mbr_.get()) Event(words); -#else - Event *evt = new Event(words); -#endif + capnp::FlatArrayMessageReader reader(words); + auto event = reader.getRoot(); + auto which = event.which(); + uint64_t mono_time = event.getLogMonoTime(); + auto event_data = kj::arrayPtr(words.begin(), reader.getEnd()); + + Event *evt = events.emplace_back(newEvent(which, mono_time, event_data)); // Add encodeIdx packet again as a frame packet for the video stream if (evt->which == cereal::Event::ROAD_ENCODE_IDX || evt->which == cereal::Event::DRIVER_ENCODE_IDX || evt->which == cereal::Event::WIDE_ROAD_ENCODE_IDX) { - -#ifdef HAS_MEMORY_RESOURCE - Event *frame_evt = new (mbr_.get()) Event(words, true); -#else - Event *frame_evt = new Event(words, true); -#endif - - events.push_back(frame_evt); + auto idx = capnp::AnyStruct::Reader(event).getPointerSection()[0].getAs(); + if (uint64_t sof = idx.getTimestampSof()) { + mono_time = sof; + } + events.emplace_back(newEvent(which, mono_time, event_data, idx.getSegmentNum())); } - words = kj::arrayPtr(evt->reader.getEnd(), words.end()); - events.push_back(evt); + words = kj::arrayPtr(reader.getEnd(), words.end()); } } catch (const kj::Exception &e) { - rWarning("failed to parse log : %s", e.getDescription().cStr()); - if (!events.empty()) { - rWarning("read %zu events from corrupt log", events.size()); - } + rWarning("Failed to parse log : %s.\nRetrieved %zu events from corrupt log", e.getDescription().cStr(), events.size()); } if (!events.empty() && !(abort && *abort)) { @@ -96,3 +64,11 @@ bool LogReader::parse(std::atomic *abort) { } return false; } + +Event *LogReader::newEvent(cereal::Event::Which which, uint64_t mono_time, const kj::ArrayPtr &words, int eidx_segnum) { +#ifdef HAS_MEMORY_RESOURCE + return new (&mbr_) Event(which, mono_time, words, eidx_segnum); +#else + return new Event(which, mono_time, words, eidx_segnum); +#endif +} diff --git a/tools/replay/logreader.h b/tools/replay/logreader.h index 73f822d16c..2a28d7b432 100644 --- a/tools/replay/logreader.h +++ b/tools/replay/logreader.h @@ -4,7 +4,6 @@ #define HAS_MEMORY_RESOURCE 1 #include #endif - #include #include #include @@ -18,13 +17,8 @@ const int DEFAULT_EVENT_MEMORY_POOL_BLOCK_SIZE = 65000; class Event { public: - Event(cereal::Event::Which which, uint64_t mono_time) : reader(kj::ArrayPtr{}) { - // construct a dummy Event for binary search, e.g std::upper_bound - this->which = which; - this->mono_time = mono_time; - } - Event(const kj::ArrayPtr &amsg, bool frame = false); - inline kj::ArrayPtr bytes() const { return words.asBytes(); } + Event(cereal::Event::Which which, uint64_t mono_time, const kj::ArrayPtr &data, int eidx_segnum = -1) + : which(which), mono_time(mono_time), data(data), eidx_segnum(eidx_segnum) {} struct lessThan { inline bool operator()(const Event *l, const Event *r) { @@ -43,10 +37,8 @@ public: uint64_t mono_time; cereal::Event::Which which; - cereal::Event::Reader event; - capnp::FlatArrayMessageReader reader; - kj::ArrayPtr words; - bool frame; + kj::ArrayPtr data; + int32_t eidx_segnum; }; class LogReader { @@ -59,9 +51,10 @@ public: std::vector events; private: + Event *newEvent(cereal::Event::Which which, uint64_t mono_time, const kj::ArrayPtr &words, int eidx_segnum = -1); bool parse(std::atomic *abort); std::string raw_; #ifdef HAS_MEMORY_RESOURCE - std::unique_ptr mbr_; + std::pmr::monotonic_buffer_resource mbr_{DEFAULT_EVENT_MEMORY_POOL_BLOCK_SIZE * sizeof(Event)}; #endif }; diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index ae148f1a5b..2e50722551 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -148,7 +148,9 @@ void Replay::buildTimeline() { for (const Event *e : log->events) { if (e->which == cereal::Event::Which::CONTROLS_STATE) { - auto cs = e->event.getControlsState(); + capnp::FlatArrayMessageReader reader(e->data); + auto event = reader.getRoot(); + auto cs = event.getControlsState(); if (engaged != cs.getEnabled()) { if (engaged) { @@ -232,6 +234,7 @@ void Replay::queueSegment() { auto begin = std::prev(cur, std::min(segment_cache_limit / 2, std::distance(segments_.begin(), cur))); auto end = std::next(begin, std::min(segment_cache_limit, std::distance(begin, segments_.end()))); + begin = std::prev(end, std::min(segment_cache_limit, std::distance(segments_.begin(), end))); // load one segment at a time auto it = std::find_if(cur, end, [](auto &it) { return !it.second || !it.second->isLoaded(); }); if (it != end && !it->second) { @@ -316,7 +319,9 @@ void Replay::startStream(const Segment *cur_segment) { auto it = std::find_if(events.cbegin(), events.cend(), [](auto e) { return e->which == cereal::Event::Which::INIT_DATA; }); if (it != events.cend()) { - uint64_t wall_time = (*it)->event.getInitData().getWallTimeNanos(); + capnp::FlatArrayMessageReader reader((*it)->data); + auto event = reader.getRoot(); + uint64_t wall_time = event.getInitData().getWallTimeNanos(); if (wall_time > 0) { route_date_time_ = QDateTime::fromMSecsSinceEpoch(wall_time / 1e6); } @@ -325,9 +330,11 @@ void Replay::startStream(const Segment *cur_segment) { // write CarParams it = std::find_if(events.begin(), events.end(), [](auto e) { return e->which == cereal::Event::Which::CAR_PARAMS; }); if (it != events.end()) { - car_fingerprint_ = (*it)->event.getCarParams().getCarFingerprint(); + capnp::FlatArrayMessageReader reader((*it)->data); + auto event = reader.getRoot(); + car_fingerprint_ = event.getCarParams().getCarFingerprint(); capnp::MallocMessageBuilder builder; - builder.setRoot((*it)->event.getCarParams()); + builder.setRoot(event.getCarParams()); auto words = capnp::messageToFlatArray(builder); auto bytes = words.asBytes(); Params().put("CarParams", (const char *)bytes.begin(), bytes.size()); @@ -361,14 +368,16 @@ void Replay::publishMessage(const Event *e) { if (event_filter && event_filter(e, filter_opaque)) return; if (sm == nullptr) { - auto bytes = e->bytes(); + auto bytes = e->data.asBytes(); int ret = pm->send(sockets_[e->which], (capnp::byte *)bytes.begin(), bytes.size()); if (ret == -1) { rWarning("stop publishing %s due to multiple publishers error", sockets_[e->which]); sockets_[e->which] = nullptr; } } else { - sm->update_msgs(nanos_since_boot(), {{sockets_[e->which], e->event}}); + capnp::FlatArrayMessageReader reader(e->data); + auto event = reader.getRoot(); + sm->update_msgs(nanos_since_boot(), {{sockets_[e->which], event}}); } } @@ -382,10 +391,13 @@ void Replay::publishFrame(const Event *e) { (e->which == cereal::Event::WIDE_ROAD_ENCODE_IDX && !hasFlag(REPLAY_FLAG_ECAM))) { return; } - auto eidx = capnp::AnyStruct::Reader(e->event).getPointerSection()[0].getAs(); - if (eidx.getType() == cereal::EncodeIndex::Type::FULL_H_E_V_C && isSegmentMerged(eidx.getSegmentNum())) { - CameraType cam = cam_types.at(e->which); - camera_server_->pushFrame(cam, segments_[eidx.getSegmentNum()]->frames[cam].get(), eidx); + + if (isSegmentMerged(e->eidx_segnum)) { + auto &segment = segments_.at(e->eidx_segnum); + auto cam = cam_types.at(e->which); + if (auto &frame = segment->frames[cam]; frame) { + camera_server_->pushFrame(cam, frame.get(), e); + } } } @@ -399,7 +411,7 @@ void Replay::stream() { events_updated_ = false; if (exit_) break; - Event cur_event(cur_which, cur_mono_time_); + Event cur_event{cur_which, cur_mono_time_, {}}; auto eit = std::upper_bound(events_->begin(), events_->end(), &cur_event, Event::lessThan()); if (eit == events_->end()) { rInfo("waiting for events..."); @@ -430,7 +442,7 @@ void Replay::stream() { precise_nano_sleep(behind_ns); } - if (!evt->frame) { + if (evt->eidx_segnum == -1) { publishMessage(evt); } else if (camera_server_) { if (speed_ > 1.0) { diff --git a/tools/replay/tests/test_replay.cc b/tools/replay/tests/test_replay.cc index 92510053ef..a681f347bb 100644 --- a/tools/replay/tests/test_replay.cc +++ b/tools/replay/tests/test_replay.cc @@ -178,7 +178,7 @@ void TestReplay::testSeekTo(int seek_to) { continue; } - Event cur_event(cereal::Event::Which::INIT_DATA, cur_mono_time_); + Event cur_event(cereal::Event::Which::INIT_DATA, cur_mono_time_, {}); auto eit = std::upper_bound(events_->begin(), events_->end(), &cur_event, Event::lessThan()); if (eit == events_->end()) { qDebug() << "waiting for events..."; diff --git a/tools/replay/util.cc b/tools/replay/util.cc index acc018fdb4..deb6293745 100644 --- a/tools/replay/util.cc +++ b/tools/replay/util.cc @@ -298,6 +298,7 @@ std::string decompressBZ2(const std::byte *in, size_t in_size, std::atomic BZ2_bzDecompressEnd(&strm); if (bzerror == BZ_STREAM_END && !(abort && *abort)) { out.resize(strm.total_out_lo32); + out.shrink_to_fit(); return out; } return {}; From 3446de2b8e48ca9107746b23b9166332417d0733 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Fri, 19 Apr 2024 12:03:23 -0700 Subject: [PATCH 485/599] ui: fix non-updating text2 alerts (#32256) fix joystick --- selfdrive/ui/qt/onroad/alerts.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/onroad/alerts.h b/selfdrive/ui/qt/onroad/alerts.h index ae6d4af9ee..1f76ba305b 100644 --- a/selfdrive/ui/qt/onroad/alerts.h +++ b/selfdrive/ui/qt/onroad/alerts.h @@ -21,7 +21,7 @@ protected: cereal::ControlsState::AlertStatus status; bool equal(const Alert &other) const { - return text1 == other.text1 && other.text2 == other.text2 && type == other.type; + return text1 == other.text1 && text2 == other.text2 && type == other.type; } }; From ba2538c29cba02856e900ebe8ebc1cefb57bdadc Mon Sep 17 00:00:00 2001 From: Andrew Goodbody Date: Fri, 19 Apr 2024 20:33:45 +0100 Subject: [PATCH 486/599] Update actions to replace deprecated versions (#32246) actions/cache@v3 uses the deprecated Node.js 16 so update to use v4 which uses Node.js 20. This also applies to save and restore --- .github/workflows/auto-cache/action.yaml | 6 +++--- .github/workflows/auto_pr_review.yaml | 2 +- .github/workflows/compile-openpilot/action.yaml | 2 +- .github/workflows/repo-maintenance.yaml | 4 ++-- .github/workflows/selfdrive_tests.yaml | 16 ++++++++-------- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/auto-cache/action.yaml b/.github/workflows/auto-cache/action.yaml index c5506e4769..e99c46e3c3 100644 --- a/.github/workflows/auto-cache/action.yaml +++ b/.github/workflows/auto-cache/action.yaml @@ -26,7 +26,7 @@ runs: - name: setup github cache if: ${{ !contains(runner.name, 'nsc') && inputs.save != 'false' }} - uses: 'actions/cache@v3' + uses: 'actions/cache@v4' with: path: ${{ inputs.path }} key: ${{ inputs.key }} @@ -34,7 +34,7 @@ runs: - name: setup github cache if: ${{ !contains(runner.name, 'nsc') && inputs.save == 'false' }} - uses: 'actions/cache/restore@v3' + uses: 'actions/cache/restore@v4' with: path: ${{ inputs.path }} key: ${{ inputs.key }} @@ -46,4 +46,4 @@ runs: run: | mkdir -p ${{ inputs.path }} sudo chmod -R 777 ${{ inputs.path }} - sudo chown -R $USER ${{ inputs.path }} \ No newline at end of file + sudo chown -R $USER ${{ inputs.path }} diff --git a/.github/workflows/auto_pr_review.yaml b/.github/workflows/auto_pr_review.yaml index 42ef4dbc1c..8316fedda0 100644 --- a/.github/workflows/auto_pr_review.yaml +++ b/.github/workflows/auto_pr_review.yaml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' steps: - - uses: Vankka/pr-target-branch-action@69ab6dd5c221de3548b3b6c4d102c1f4913d3baa + - uses: Vankka/pr-target-branch-action@def32ec9d93514138d6ac0132ee62e120a72aed5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/compile-openpilot/action.yaml b/.github/workflows/compile-openpilot/action.yaml index 2945b67d2e..4015746c0e 100644 --- a/.github/workflows/compile-openpilot/action.yaml +++ b/.github/workflows/compile-openpilot/action.yaml @@ -14,7 +14,7 @@ runs: ${{ env.RUN }} "rm -rf /tmp/scons_cache/* && \ scons -j$(nproc) --cache-populate" - name: Save scons cache - uses: actions/cache/save@v3 + uses: actions/cache/save@v4 if: github.ref == 'refs/heads/master' with: path: .ci_cache/scons_cache diff --git a/.github/workflows/repo-maintenance.yaml b/.github/workflows/repo-maintenance.yaml index 445a1cf11c..67f6849588 100644 --- a/.github/workflows/repo-maintenance.yaml +++ b/.github/workflows/repo-maintenance.yaml @@ -22,7 +22,7 @@ jobs: git -c submodule."tinygrad".update=none submodule update --remote git add . - name: Create Pull Request - uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5 + uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 with: token: ${{ secrets.ACTIONS_CREATE_PR_PAT }} commit-message: bump submodules @@ -49,7 +49,7 @@ jobs: git config --global --add safe.directory '*' pre-commit autoupdate - name: Create Pull Request - uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5 + uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 with: token: ${{ secrets.ACTIONS_CREATE_PR_PAT }} commit-message: Update Python packages and pre-commit hooks diff --git a/.github/workflows/selfdrive_tests.yaml b/.github/workflows/selfdrive_tests.yaml index 0042202edd..30ae4da783 100644 --- a/.github/workflows/selfdrive_tests.yaml +++ b/.github/workflows/selfdrive_tests.yaml @@ -197,7 +197,7 @@ jobs: docker_hub_pat: ${{ secrets.DOCKER_HUB_PAT }} - name: Cache test routes id: dependency-cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .ci_cache/comma_download_cache key: proc-replay-${{ hashFiles('.github/workflows/selfdrive_tests.yaml', 'selfdrive/test/process_replay/ref_commit') }} @@ -215,7 +215,7 @@ jobs: id: print-diff if: always() run: cat selfdrive/test/process_replay/diff.txt - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 if: always() continue-on-error: true with: @@ -242,7 +242,7 @@ jobs: - uses: ./.github/workflows/setup-with-retry - name: Cache test routes id: dependency-cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .ci_cache/comma_download_cache key: regen-${{ hashFiles('.github/workflows/selfdrive_tests.yaml', 'selfdrive/test/process_replay/test_regen.py') }} @@ -357,14 +357,14 @@ jobs: echo "::set-output name=diff::$output" - name: Find comment if: ${{ env.AZURE_TOKEN != '' }} - uses: peter-evans/find-comment@1769778a0c5bd330272d749d12c036d65e70d39d + uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e id: fc with: issue-number: ${{ github.event.pull_request.number }} body-includes: This PR makes changes to - name: Update comment if: ${{ steps.save_diff.outputs.diff != '' && env.AZURE_TOKEN != '' }} - uses: peter-evans/create-or-update-comment@b95e16d2859ad843a14218d1028da5b2c4cbc4b4 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 with: comment-id: ${{ steps.fc.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} @@ -372,7 +372,7 @@ jobs: edit-mode: replace - name: Delete comment if: ${{ steps.fc.outputs.comment-id != '' && steps.save_diff.outputs.diff == '' && env.AZURE_TOKEN != '' }} - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | github.rest.issues.deleteComment({ @@ -398,7 +398,7 @@ jobs: export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' && python selfdrive/ui/tests/test_ui/run.py" - name: Upload Test Report - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: report - path: selfdrive/ui/tests/test_ui/report \ No newline at end of file + path: selfdrive/ui/tests/test_ui/report From 03d1c48017b2169dd3d559989e72c4925eafb264 Mon Sep 17 00:00:00 2001 From: ZwX1616 Date: Fri, 19 Apr 2024 13:44:03 -0700 Subject: [PATCH 487/599] camerad: OS HDR (#32112) * it's something * backup * 16:10 * cleanup * this is fine * close * remove some junk * no heck * disos * real 10 * for some reason this is flipped * 20hz * no return * ae * tear * need curve laster * correct real gains * fix time * cleanup * why the scam * disable for now * 0.7 * hdr * that doesnt work * what * hugeoof * clean up * cleanup * fix regs * welp cant * is this corrent * it is sq * remove * back * stg10bit * back2ten * Revert "remove" This reverts commit 18712ab7e103c12621c929cd0f772ecb9b348247. * 20hz and swb * correct height * 10bit * ui hack for now * slight * perfect * blk64 * ccm * fix page faults * template * set 4x * is this fine * try * this seems to work * Revert "this seems to work" This reverts commit d3c9023d3f14bd9394fed2d6276dba777ed0e606. * needs to be static * close * 64 is optimal * 2 * take * not 1 * offset * whats going on * i have no idea * less resistence * box defs * no * reduce blur artifacts * simplify * fix * fake short is too much for bright * can be subzero * should not use lsvc * no wasted bit * cont no slow * no less than 10bit * it is based * wrong * right * quart * shift * raise noise floor * 4.5/4.7 * same ballpark * int is fine * shane owes me m4a4 * Revert "shane owes me m4a4" This reverts commit b4283fee18efebedae628a6cfd926ff1416dcfe5. * back * Revert "4.5/4.7" This reverts commit e38f96e90cb5370bd378f6b66def9e7e3ed0ce5d. * default * oof * clean up * simpilfy * from sensorinfo * no div * better name * not the wrong one * not anymore relevant * too * not call it debayer * cl headers * arg is 2nd * gone is is_bggr * define * no is hdr * rgb_tmp * p1 * clean up * 4 * cant for * fix somewhre else * const * ap * rects * just set staruc * nnew tmp * hmm --------- Co-authored-by: Comma Device --- system/camerad/cameras/camera_common.cc | 8 +- system/camerad/cameras/process_raw.cl | 66 +++++++-- system/camerad/sensors/os04c10.cc | 13 +- system/camerad/sensors/os04c10_cl.h | 45 +++++-- system/camerad/sensors/os04c10_registers.h | 150 +++++++++++---------- system/camerad/sensors/sensor.h | 1 + 6 files changed, 184 insertions(+), 99 deletions(-) diff --git a/system/camerad/cameras/camera_common.cc b/system/camerad/cameras/camera_common.cc index 90bfa19231..6dcb8b4d22 100644 --- a/system/camerad/cameras/camera_common.cc +++ b/system/camerad/cameras/camera_common.cc @@ -26,10 +26,10 @@ public: "-cl-fast-relaxed-math -cl-denorms-are-zero -Isensors " "-DFRAME_WIDTH=%d -DFRAME_HEIGHT=%d -DFRAME_STRIDE=%d -DFRAME_OFFSET=%d " "-DRGB_WIDTH=%d -DRGB_HEIGHT=%d -DYUV_STRIDE=%d -DUV_OFFSET=%d " - "-DSENSOR_ID=%hu -DVIGNETTING=%d ", - ci->frame_width, ci->frame_height, ci->frame_stride, ci->frame_offset, + "-DSENSOR_ID=%hu -DHDR_OFFSET=%d -DVIGNETTING=%d ", + ci->frame_width, ci->frame_height, ci->hdr_offset > 0 ? ci->frame_stride * 2 : ci->frame_stride, ci->frame_offset, b->rgb_width, b->rgb_height, buf_width, uv_offset, - ci->image_sensor, s->camera_num == 1); + ci->image_sensor, ci->hdr_offset, s->camera_num == 1); const char *cl_file = "cameras/process_raw.cl"; cl_program prg_imgproc = cl_program_from_file(context, device_id, cl_file, args); krnl_ = CL_CHECK_ERR(clCreateKernel(prg_imgproc, "process_raw", &err)); @@ -74,7 +74,7 @@ void CameraBuf::init(cl_device_id device_id, cl_context context, CameraState *s, LOGD("allocated %d CL buffers", frame_buf_count); rgb_width = ci->frame_width; - rgb_height = ci->frame_height; + rgb_height = ci->hdr_offset > 0 ? (ci->frame_height - ci->hdr_offset) / 2 : ci->frame_height; int nv12_width = VENUS_Y_STRIDE(COLOR_FMT_NV12, rgb_width); int nv12_height = VENUS_Y_SCANLINES(COLOR_FMT_NV12, rgb_height); diff --git a/system/camerad/cameras/process_raw.cl b/system/camerad/cameras/process_raw.cl index c635fd046e..6f6612fab0 100644 --- a/system/camerad/cameras/process_raw.cl +++ b/system/camerad/cameras/process_raw.cl @@ -78,7 +78,18 @@ __kernel void process_raw(const __global uchar * in, __global uchar * out, int e // read offset int start_idx; - start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (3 * gid_x - 2) + (FRAME_STRIDE * FRAME_OFFSET); + #if BIT_DEPTH == 10 + bool aligned10; + if (gid_x % 2 == 0) { + aligned10 = true; + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (5 * gid_x / 2 - 2) + (FRAME_STRIDE * FRAME_OFFSET); + } else { + aligned10 = false; + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (5 * (gid_x - 1) / 2 + 1) + (FRAME_STRIDE * FRAME_OFFSET); + } + #else + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (3 * gid_x - 2) + (FRAME_STRIDE * FRAME_OFFSET); + #endif // read in 4 rows, 8 uchars each uchar8 dat[4]; @@ -96,6 +107,16 @@ __kernel void process_raw(const __global uchar * in, __global uchar * out, int e dat[2] = vload8(0, in + start_idx + FRAME_STRIDE*2); // row_after dat[3] = vload8(0, in + start_idx + FRAME_STRIDE*row_after_offset); + // need extra bit for 10-bit, 4 rows, 1 uchar each + #if BIT_DEPTH == 10 + uchar extra_dat[4]; + if (!aligned10) { + extra_dat[0] = in[start_idx + FRAME_STRIDE*row_before_offset + 8]; + extra_dat[1] = in[start_idx + FRAME_STRIDE*1 + 8]; + extra_dat[2] = in[start_idx + FRAME_STRIDE*2 + 8]; + extra_dat[3] = in[start_idx + FRAME_STRIDE*row_after_offset + 8]; + } + #endif // read odd rows for staggered second exposure #if HDR_OFFSET > 0 @@ -104,19 +125,44 @@ __kernel void process_raw(const __global uchar * in, __global uchar * out, int e short_dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*(1+HDR_OFFSET/2) + FRAME_STRIDE/2); short_dat[2] = vload8(0, in + start_idx + FRAME_STRIDE*(2+HDR_OFFSET/2) + FRAME_STRIDE/2); short_dat[3] = vload8(0, in + start_idx + FRAME_STRIDE*(row_after_offset+HDR_OFFSET/2) + FRAME_STRIDE/2); + #if BIT_DEPTH == 10 + uchar short_extra_dat[4]; + if (!aligned10) { + short_extra_dat[0] = in[start_idx + FRAME_STRIDE*(row_before_offset+HDR_OFFSET/2) + FRAME_STRIDE/2 + 8]; + short_extra_dat[1] = in[start_idx + FRAME_STRIDE*(1+HDR_OFFSET/2) + FRAME_STRIDE/2 + 8]; + short_extra_dat[2] = in[start_idx + FRAME_STRIDE*(2+HDR_OFFSET/2) + FRAME_STRIDE/2 + 8]; + short_extra_dat[3] = in[start_idx + FRAME_STRIDE*(row_after_offset+HDR_OFFSET/2) + FRAME_STRIDE/2 + 8]; + } + #endif #endif // parse into floats 0.0-1.0 float4 v_rows[4]; - // no HDR here - int4 parsed = parse_12bit(dat[0]); - v_rows[ROW_READ_ORDER[0]] = normalize_pv(parsed, vignette_factor); - parsed = parse_12bit(dat[1]); - v_rows[ROW_READ_ORDER[1]] = normalize_pv(parsed, vignette_factor); - parsed = parse_12bit(dat[2]); - v_rows[ROW_READ_ORDER[2]] = normalize_pv(parsed, vignette_factor); - parsed = parse_12bit(dat[3]); - v_rows[ROW_READ_ORDER[3]] = normalize_pv(parsed, vignette_factor); + #if BIT_DEPTH == 10 + // for now it's always HDR + int4 parsed = parse_10bit(dat[0], extra_dat[0], aligned10); + int4 short_parsed = parse_10bit(short_dat[0], short_extra_dat[0], aligned10); + v_rows[ROW_READ_ORDER[0]] = normalize_pv_hdr(parsed, short_parsed, vignette_factor, expo_time); + parsed = parse_10bit(dat[1], extra_dat[1], aligned10); + short_parsed = parse_10bit(short_dat[1], short_extra_dat[1], aligned10); + v_rows[ROW_READ_ORDER[1]] = normalize_pv_hdr(parsed, short_parsed, vignette_factor, expo_time); + parsed = parse_10bit(dat[2], extra_dat[2], aligned10); + short_parsed = parse_10bit(short_dat[2], short_extra_dat[2], aligned10); + v_rows[ROW_READ_ORDER[2]] = normalize_pv_hdr(parsed, short_parsed, vignette_factor, expo_time); + parsed = parse_10bit(dat[3], extra_dat[3], aligned10); + short_parsed = parse_10bit(short_dat[3], short_extra_dat[3], aligned10); + v_rows[ROW_READ_ORDER[3]] = normalize_pv_hdr(parsed, short_parsed, vignette_factor, expo_time); + #else + // no HDR here + int4 parsed = parse_12bit(dat[0]); + v_rows[ROW_READ_ORDER[0]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[1]); + v_rows[ROW_READ_ORDER[1]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[2]); + v_rows[ROW_READ_ORDER[2]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[3]); + v_rows[ROW_READ_ORDER[3]] = normalize_pv(parsed, vignette_factor); + #endif // mirror padding if (gid_x == 0) { diff --git a/system/camerad/sensors/os04c10.cc b/system/camerad/sensors/os04c10.cc index cbdc94d289..97a317407a 100644 --- a/system/camerad/sensors/os04c10.cc +++ b/system/camerad/sensors/os04c10.cc @@ -23,9 +23,10 @@ OS04C10::OS04C10() { pixel_size_mm = 0.002; data_word = false; + hdr_offset = 64 * 2 + 8; // stagger frame_width = 2688; - frame_height = 1520; - frame_stride = (frame_width * 12 / 8); // no alignment + frame_height = 1520 * 2 + hdr_offset; + frame_stride = (frame_width * 10 / 8); // no alignment extra_height = 0; frame_offset = 0; @@ -34,8 +35,8 @@ OS04C10::OS04C10() { init_reg_array.assign(std::begin(init_array_os04c10), std::end(init_array_os04c10)); probe_reg_addr = 0x300a; probe_expected_data = 0x5304; - mipi_format = CAM_FORMAT_MIPI_RAW_12; - frame_data_type = 0x2c; + mipi_format = CAM_FORMAT_MIPI_RAW_10; + frame_data_type = 0x2b; mclk_frequency = 24000000; // Hz dc_gain_factor = 1; @@ -66,7 +67,7 @@ std::vector OS04C10::getExposureRegisters(int exposure_ti return { {0x3501, long_time>>8}, {0x3502, long_time&0xFF}, {0x3508, real_gain>>8}, {0x3509, real_gain&0xFF}, - // {0x350c, real_gain>>8}, {0x350d, real_gain&0xFF}, + {0x350c, real_gain>>8}, {0x350d, real_gain&0xFF}, }; } @@ -81,6 +82,6 @@ float OS04C10::getExposureScore(float desired_ev, int exp_t, int exp_g_idx, floa score += std::abs(exp_g_idx - (int)analog_gain_rec_idx) * m; score += ((1 - analog_gain_cost_delta) + analog_gain_cost_delta * (exp_g_idx - analog_gain_min_idx) / (analog_gain_max_idx - analog_gain_min_idx)) * - std::abs(exp_g_idx - gain_idx) * 5.0; + std::abs(exp_g_idx - gain_idx) * 3.0; return score; } diff --git a/system/camerad/sensors/os04c10_cl.h b/system/camerad/sensors/os04c10_cl.h index 26c81f3aa3..61775dcdc8 100644 --- a/system/camerad/sensors/os04c10_cl.h +++ b/system/camerad/sensors/os04c10_cl.h @@ -2,25 +2,54 @@ #define BGGR -#define BIT_DEPTH 12 -#define PV_MAX 4096 +#define BIT_DEPTH 10 +#define PV_MAX10 1023 +#define PV_MAX16 65536 // gamma curve is calibrated to 16bit #define BLACK_LVL 64 #define VIGNETTE_RSZ 2.2545f -float4 normalize_pv(int4 parsed, float vignette_factor) { - float4 pv = (convert_float4(parsed) - BLACK_LVL) / (PV_MAX - BLACK_LVL); +float combine_dual_pvs(float lv, float sv, int expo_time) { + float svc = fmax(sv * expo_time, (float)(64 * (PV_MAX10 - BLACK_LVL))); + float svd = sv * fmin(expo_time, 8.0) / 8; + + if (expo_time > 64) { + if (lv < PV_MAX10 - BLACK_LVL) { + return lv / (PV_MAX16 - BLACK_LVL); + } else { + return (svc / 64) / (PV_MAX16 - BLACK_LVL); + } + } else { + if (lv > 32) { + return (lv * 64 / fmax(expo_time, 8.0)) / (PV_MAX16 - BLACK_LVL); + } else { + return svd / (PV_MAX16 - BLACK_LVL); + } + } +} + +float4 normalize_pv_hdr(int4 parsed, int4 short_parsed, float vignette_factor, int expo_time) { + float4 pl = convert_float4(parsed - BLACK_LVL); + float4 ps = convert_float4(short_parsed - BLACK_LVL); + float4 pv; + pv.s0 = combine_dual_pvs(pl.s0, ps.s0, expo_time); + pv.s1 = combine_dual_pvs(pl.s1, ps.s1, expo_time); + pv.s2 = combine_dual_pvs(pl.s2, ps.s2, expo_time); + pv.s3 = combine_dual_pvs(pl.s3, ps.s3, expo_time); return clamp(pv*vignette_factor, 0.0, 1.0); } float3 color_correct(float3 rgb) { - float3 corrected = rgb.x * (float3)(1.5664815, -0.29808738, -0.03973474); - corrected += rgb.y * (float3)(-0.48672447, 1.41914433, -0.40295248); - corrected += rgb.z * (float3)(-0.07975703, -0.12105695, 1.44268722); + float3 corrected = rgb.x * (float3)(1.55361989, -0.268894615, -0.000593219); + corrected += rgb.y * (float3)(-0.421217301, 1.51883144, -0.69760146); + corrected += rgb.z * (float3)(-0.132402589, -0.249936825, 1.69819468); return corrected; } float3 apply_gamma(float3 rgb, int expo_time) { - return powr(rgb, 0.7); + float s = log2((float)expo_time); + if (s < 6) {s = fmin(12.0 - s, 9.0);} + // log function adaptive to number of bits + return clamp(log(1 + rgb*(PV_MAX16 - BLACK_LVL)) * (0.48*s*s - 12.92*s + 115.0) - (1.08*s*s - 29.2*s + 260.0), 0.0, 255.0) / 255.0; } #endif diff --git a/system/camerad/sensors/os04c10_registers.h b/system/camerad/sensors/os04c10_registers.h index 990d1f7967..03fb73fbc9 100644 --- a/system/camerad/sensors/os04c10_registers.h +++ b/system/camerad/sensors/os04c10_registers.h @@ -4,18 +4,18 @@ const struct i2c_random_wr_payload start_reg_array_os04c10[] = {{0x100, 1}}; const struct i2c_random_wr_payload stop_reg_array_os04c10[] = {{0x100, 0}}; const struct i2c_random_wr_payload init_array_os04c10[] = { - // OS04C10_AA_00_02_17_wAO_2688x1524_MIPI728Mbps_Linear12bit_20FPS_4Lane_MCLK24MHz + // DP_2688X1520_NEWSTG_MIPI0776Mbps_30FPS_10BIT_FOURLANE {0x0103, 0x01}, // PLL - {0x0301, 0xe4}, + {0x0301, 0x84}, {0x0303, 0x01}, - {0x0305, 0xb6}, + {0x0305, 0x61}, {0x0306, 0x01}, {0x0307, 0x17}, {0x0323, 0x04}, {0x0324, 0x01}, - {0x0325, 0x62}, + {0x0325, 0x7a}, {0x3012, 0x06}, {0x3013, 0x02}, @@ -30,40 +30,40 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3660, 0x04}, {0x3666, 0xa5}, {0x3667, 0xa5}, - {0x366a, 0x50}, + {0x366a, 0x54}, {0x3673, 0x0d}, {0x3672, 0x0d}, {0x3671, 0x0d}, {0x3670, 0x0d}, - {0x3685, 0x00}, + {0x3685, 0x0a}, {0x3694, 0x0d}, {0x3693, 0x0d}, {0x3692, 0x0d}, {0x3691, 0x0d}, {0x3696, 0x4c}, {0x3697, 0x4c}, - {0x3698, 0x40}, + {0x3698, 0x00}, {0x3699, 0x80}, - {0x369a, 0x18}, + {0x369a, 0x80}, {0x369b, 0x1f}, - {0x369c, 0x14}, + {0x369c, 0x1f}, {0x369d, 0x80}, {0x369e, 0x40}, {0x369f, 0x21}, {0x36a0, 0x12}, - {0x36a1, 0x5d}, + {0x36a1, 0xdd}, {0x36a2, 0x66}, - {0x370a, 0x02}, - {0x370e, 0x0c}, + {0x370a, 0x00}, + {0x370e, 0x00}, {0x3710, 0x00}, - {0x3713, 0x00}, + {0x3713, 0x04}, {0x3725, 0x02}, {0x372a, 0x03}, {0x3738, 0xce}, - {0x3748, 0x02}, - {0x374a, 0x02}, - {0x374c, 0x02}, - {0x374e, 0x02}, + {0x3748, 0x00}, + {0x374a, 0x00}, + {0x374c, 0x00}, + {0x374e, 0x00}, {0x3756, 0x00}, {0x3757, 0x00}, {0x3767, 0x00}, @@ -81,20 +81,21 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x37ba, 0x03}, {0x37bb, 0x00}, {0x37bc, 0x04}, - {0x37be, 0x08}, + {0x37be, 0x26}, {0x37c4, 0x11}, {0x37c5, 0x80}, {0x37c6, 0x14}, - {0x37c7, 0x08}, + {0x37c7, 0xa8}, {0x37da, 0x11}, {0x381f, 0x08}, {0x3829, 0x03}, + {0x3832, 0x00}, {0x3881, 0x00}, {0x3888, 0x04}, {0x388b, 0x00}, {0x3c80, 0x10}, {0x3c86, 0x00}, - {0x3c8c, 0x20}, + // {0x3c8c, 0x20}, {0x3c9f, 0x01}, {0x3d85, 0x1b}, {0x3d8c, 0x71}, @@ -110,7 +111,7 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4045, 0x7e}, {0x4047, 0x7e}, {0x4049, 0x7e}, - {0x4090, 0x04}, + {0x4090, 0x14}, {0x40b0, 0x00}, {0x40b1, 0x00}, {0x40b2, 0x00}, @@ -128,7 +129,7 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4503, 0x00}, {0x4504, 0x06}, {0x4506, 0x00}, - {0x4507, 0x47}, + {0x4507, 0x57}, {0x4803, 0x00}, {0x480c, 0x32}, {0x480e, 0x04}, @@ -138,7 +139,7 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4823, 0x3f}, {0x4825, 0x30}, {0x4833, 0x10}, - {0x484b, 0x27}, + {0x484b, 0x07}, {0x488b, 0x00}, {0x4d00, 0x04}, {0x4d01, 0xad}, @@ -151,7 +152,7 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4e0d, 0x00}, // ISP - {0x5001, 0x09}, + {0x5001, 0x00}, {0x5004, 0x00}, {0x5080, 0x04}, {0x5036, 0x80}, @@ -172,32 +173,32 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x301c, 0xf8}, {0x301e, 0xb4}, {0x301f, 0xf0}, - {0x3022, 0x61}, + {0x3022, 0x01}, {0x3109, 0xe7}, {0x3600, 0x00}, - {0x3610, 0x65}, + {0x3610, 0x75}, {0x3611, 0x85}, {0x3613, 0x3a}, {0x3615, 0x60}, - {0x3621, 0xb0}, + {0x3621, 0x90}, {0x3620, 0x0c}, {0x3629, 0x00}, {0x3661, 0x04}, {0x3664, 0x70}, {0x3665, 0x00}, - {0x3681, 0xa6}, - {0x3682, 0x53}, - {0x3683, 0x2a}, - {0x3684, 0x15}, + {0x3681, 0x80}, + {0x3682, 0x40}, + {0x3683, 0x21}, + {0x3684, 0x12}, {0x3700, 0x2a}, {0x3701, 0x12}, {0x3703, 0x28}, {0x3704, 0x0e}, - {0x3706, 0x9d}, + {0x3706, 0x4a}, {0x3709, 0x4a}, - {0x370b, 0x48}, + {0x370b, 0xa2}, {0x370c, 0x01}, - {0x370f, 0x04}, + {0x370f, 0x00}, {0x3714, 0x24}, {0x3716, 0x04}, {0x3719, 0x11}, @@ -205,19 +206,19 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3720, 0x00}, {0x3724, 0x13}, {0x373f, 0xb0}, - {0x3741, 0x9d}, - {0x3743, 0x9d}, - {0x3745, 0x9d}, - {0x3747, 0x9d}, - {0x3749, 0x48}, - {0x374b, 0x48}, - {0x374d, 0x48}, - {0x374f, 0x48}, + {0x3741, 0x4a}, + {0x3743, 0x4a}, + {0x3745, 0x4a}, + {0x3747, 0x4a}, + {0x3749, 0xa2}, + {0x374b, 0xa2}, + {0x374d, 0xa2}, + {0x374f, 0xa2}, {0x3755, 0x10}, {0x376c, 0x00}, - {0x378d, 0x3c}, - {0x3790, 0x01}, - {0x3791, 0x01}, + {0x378d, 0x30}, + {0x3790, 0x4a}, + {0x3791, 0xa2}, {0x3798, 0x40}, {0x379e, 0x00}, {0x379f, 0x04}, @@ -232,17 +233,17 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x37c0, 0x11}, {0x37c2, 0x04}, {0x37cd, 0x19}, - {0x37e0, 0x08}, - {0x37e6, 0x04}, + // {0x37e0, 0x08}, + // {0x37e6, 0x04}, {0x37e5, 0x02}, - {0x37e1, 0x0c}, - {0x3737, 0x04}, + // {0x37e1, 0x0c}, + // {0x3737, 0x04}, {0x37d8, 0x02}, - {0x37e2, 0x10}, + // {0x37e2, 0x10}, {0x3739, 0x10}, {0x3662, 0x10}, - {0x37e4, 0x20}, - {0x37e3, 0x08}, + // {0x37e4, 0x20}, + // {0x37e3, 0x08}, {0x37d9, 0x08}, {0x4040, 0x00}, {0x4041, 0x07}, @@ -263,51 +264,58 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3816, 0x01}, {0x3817, 0x01}, - {0x380c, 0x08}, {0x380d, 0x5c}, // HTS - {0x380e, 0x09}, {0x380f, 0x38}, // VTS + {0x380c, 0x04}, {0x380d, 0x2e}, // HTS + {0x380e, 0x09}, {0x380f, 0xdb}, // VTS {0x3820, 0xb0}, - {0x3821, 0x00}, - {0x3880, 0x25}, + {0x3821, 0x04}, + {0x3880, 0x00}, {0x3882, 0x20}, {0x3c91, 0x0b}, {0x3c94, 0x45}, - {0x3cad, 0x00}, - {0x3cae, 0x00}, + // {0x3cad, 0x00}, + // {0x3cae, 0x00}, {0x4000, 0xf3}, {0x4001, 0x60}, - {0x4003, 0x80}, + {0x4003, 0x40}, {0x4300, 0xff}, {0x4302, 0x0f}, - {0x4305, 0x83}, + {0x4305, 0x93}, {0x4505, 0x84}, {0x4809, 0x0e}, {0x480a, 0x04}, - {0x4837, 0x15}, + {0x4837, 0x14}, {0x4c00, 0x08}, {0x4c01, 0x08}, {0x4c04, 0x00}, {0x4c05, 0x00}, {0x5000, 0xf9}, - {0x3822, 0x14}, + // {0x0100, 0x01}, + // {0x320d, 0x00}, + // {0x3208, 0xa0}, + // {0x3822, 0x14}, // initialize exposure {0x3503, 0x88}, // long - {0x3500, 0x00}, {0x3501, 0x00}, {0x3502, 0x80}, + {0x3500, 0x00}, {0x3501, 0x00}, {0x3502, 0x10}, {0x3508, 0x00}, {0x3509, 0x80}, {0x350a, 0x04}, {0x350b, 0x00}, // short - // {0x3510, 0x00}, {0x3511, 0x00}, {0x3512, 0x10}, - // {0x350c, 0x00}, {0x350d, 0x80}, - // {0x350e, 0x04}, {0x350f, 0x00}, + {0x3510, 0x00}, {0x3511, 0x00}, {0x3512, 0x40}, + {0x350c, 0x00}, {0x350d, 0x80}, + {0x350e, 0x04}, {0x350f, 0x00}, // wb - {0x5100, 0x06}, {0x5101, 0xcb}, + // b + {0x5100, 0x06}, {0x5101, 0x7e}, + {0x5140, 0x06}, {0x5141, 0x7e}, + // g {0x5102, 0x04}, {0x5103, 0x00}, - {0x5104, 0x08}, {0x5105, 0xde}, - - {0x5106, 0x02}, {0x5107, 0x00}, -}; \ No newline at end of file + {0x5142, 0x04}, {0x5143, 0x00}, + // r + {0x5104, 0x08}, {0x5105, 0xd6}, + {0x5144, 0x08}, {0x5145, 0xd6}, +}; diff --git a/system/camerad/sensors/sensor.h b/system/camerad/sensors/sensor.h index d004163644..add514b117 100644 --- a/system/camerad/sensors/sensor.h +++ b/system/camerad/sensors/sensor.h @@ -29,6 +29,7 @@ public: uint32_t extra_height = 0; int registers_offset = -1; int stats_offset = -1; + int hdr_offset = -1; int exposure_time_min; int exposure_time_max; From ee01be71e16f8d1c55663362c4f89489fff2c6a6 Mon Sep 17 00:00:00 2001 From: ZwX1616 Date: Fri, 19 Apr 2024 13:51:09 -0700 Subject: [PATCH 488/599] camerad: frame sync OS (#32155) auto Co-authored-by: Comma Device --- system/camerad/sensors/os04c10_registers.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/system/camerad/sensors/os04c10_registers.h b/system/camerad/sensors/os04c10_registers.h index 03fb73fbc9..91eb48b24f 100644 --- a/system/camerad/sensors/os04c10_registers.h +++ b/system/camerad/sensors/os04c10_registers.h @@ -88,8 +88,8 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x37c7, 0xa8}, {0x37da, 0x11}, {0x381f, 0x08}, - {0x3829, 0x03}, - {0x3832, 0x00}, + // {0x3829, 0x03}, + // {0x3832, 0x00}, {0x3881, 0x00}, {0x3888, 0x04}, {0x388b, 0x00}, @@ -250,6 +250,20 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4008, 0x02}, {0x4009, 0x0d}, + // FSIN + {0x3002, 0x22}, + {0x3663, 0x22}, + {0x368a, 0x04}, + {0x3822, 0x44}, + {0x3823, 0x00}, + {0x3829, 0x03}, + {0x3832, 0xf8}, + {0x382c, 0x00}, + {0x3844, 0x06}, + {0x3843, 0x00}, + {0x382a, 0x00}, + {0x382b, 0x0c}, + // 2704x1536 -> 2688x1520 out {0x3800, 0x00}, {0x3801, 0x00}, {0x3802, 0x00}, {0x3803, 0x00}, From f427427b5e085c7391b617e5c724c6b0326b24f1 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 19 Apr 2024 17:46:40 -0700 Subject: [PATCH 489/599] values: use union arguments (#32258) * use get_args to reduce duplication * clean up --- selfdrive/car/values.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/values.py b/selfdrive/car/values.py index dfbcf3b74f..bf5d378ab4 100644 --- a/selfdrive/car/values.py +++ b/selfdrive/car/values.py @@ -1,4 +1,4 @@ -from typing import cast +from typing import get_args from openpilot.selfdrive.car.body.values import CAR as BODY from openpilot.selfdrive.car.chrysler.values import CAR as CHRYSLER from openpilot.selfdrive.car.ford.values import CAR as FORD @@ -14,6 +14,6 @@ from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA from openpilot.selfdrive.car.volkswagen.values import CAR as VOLKSWAGEN Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN | SUBARU | TESLA | TOYOTA | VOLKSWAGEN -BRANDS = [BODY, CHRYSLER, FORD, GM, HONDA, HYUNDAI, MAZDA, MOCK, NISSAN, SUBARU, TESLA, TOYOTA, VOLKSWAGEN] +BRANDS = get_args(Platform) -PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in cast(list[Platform], brand)} +PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in brand} From fa1a6bcd6bd27ff823f602fc99d528bac9704d29 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 19 Apr 2024 19:38:39 -0700 Subject: [PATCH 490/599] GM: clean up test (#32261) * not necessary * Update selfdrive/car/gm/tests/test_gm.py --- selfdrive/car/gm/tests/test_gm.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/selfdrive/car/gm/tests/test_gm.py b/selfdrive/car/gm/tests/test_gm.py index 9b56cfdf08..01ec8533b8 100755 --- a/selfdrive/car/gm/tests/test_gm.py +++ b/selfdrive/car/gm/tests/test_gm.py @@ -3,7 +3,7 @@ from parameterized import parameterized import unittest from openpilot.selfdrive.car.gm.fingerprints import FINGERPRINTS -from openpilot.selfdrive.car.gm.values import CAMERA_ACC_CAR, CAR, GM_RX_OFFSET +from openpilot.selfdrive.car.gm.values import CAMERA_ACC_CAR, GM_RX_OFFSET CAMERA_DIAGNOSTIC_ADDRESS = 0x24b @@ -13,12 +13,10 @@ class TestGMFingerprint(unittest.TestCase): def test_can_fingerprints(self, car_model, fingerprints): self.assertGreater(len(fingerprints), 0) - # Trailblazer is in dashcam - if car_model != CAR.CHEVROLET_TRAILBLAZER: - self.assertTrue(all(len(finger) for finger in fingerprints)) + self.assertTrue(all(len(finger) for finger in fingerprints)) # The camera can sometimes be communicating on startup - if car_model in CAMERA_ACC_CAR - {CAR.CHEVROLET_TRAILBLAZER}: + if car_model in CAMERA_ACC_CAR: for finger in fingerprints: for required_addr in (CAMERA_DIAGNOSTIC_ADDRESS, CAMERA_DIAGNOSTIC_ADDRESS + GM_RX_OFFSET): self.assertEqual(finger.get(required_addr), 8, required_addr) From 9f4cf8017fa3338f5704375cd37d7a5968663faa Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 19 Apr 2024 20:33:48 -0700 Subject: [PATCH 491/599] GM: hide ASCM from car docs (#32260) * stash * clean up * programmatically * Update selfdrive/car/gm/values.py * do flags later * clean up --- docs/CARS.md | 8 +------- selfdrive/car/gm/values.py | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index a41518382a..c785e6d701 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -4,7 +4,7 @@ A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. -# 291 Supported Cars +# 285 Supported Cars |Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Resume from stop|Hardware Needed
 |Video| |---|---|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:| @@ -17,16 +17,11 @@ A supported vehicle is one that just works when you install a comma device. All |Audi|Q3 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Audi|RS3 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Audi|S3 2015-17|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Buick|LaCrosse 2017-19[4](#footnotes)|Driver Confidence Package 2|openpilot|18 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Cadillac|Escalade 2017[4](#footnotes)|Driver Assist Package|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Cadillac|Escalade ESV 2016[4](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Cadillac|Escalade ESV 2019[4](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Bolt EUV 2022-23|Premier or Premier Redline Trim without Super Cruise Package|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Bolt EV 2022-23|2LT Trim with Adaptive Cruise Control Package|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Equinox 2019-22|Adaptive Cruise Control (ACC)|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Silverado 1500 2020-21|Safety Package II|openpilot available[1](#footnotes)|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Trailblazer 2021-22|Adaptive Cruise Control (ACC)|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Chevrolet|Volt 2017-18[4](#footnotes)|Adaptive Cruise Control (ACC)|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chrysler|Pacifica 2017-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chrysler|Pacifica 2019-20|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chrysler|Pacifica 2021-23|All|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -61,7 +56,6 @@ A supported vehicle is one that just works when you install a comma device. All |Genesis|GV70 (2.5T Trim) 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|GV70 (3.5T Trim) 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|GV80 2023[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|GMC|Acadia 2018[4](#footnotes)|Adaptive Cruise Control (ACC)|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |GMC|Sierra 1500 2020-21|Driver Alert Package II|openpilot available[1](#footnotes)|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Accord 2018-22|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Accord Hybrid 2018-22|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 46d15431ca..17f9121092 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -89,44 +89,51 @@ class GMPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('gm_global_a_powertrain_generated', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis')) +@dataclass +class GMASCMPlatformConfig(GMPlatformConfig): + def init(self): + # ASCM is supported, but due to a janky install and hardware configuration, we are not showing in the car docs + self.car_docs = [] + + class CAR(Platforms): - HOLDEN_ASTRA = GMPlatformConfig( + HOLDEN_ASTRA = GMASCMPlatformConfig( [GMCarDocs("Holden Astra 2017")], GMCarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), ) - CHEVROLET_VOLT = GMPlatformConfig( + CHEVROLET_VOLT = GMASCMPlatformConfig( [GMCarDocs("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ")], GMCarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45, tireStiffnessFactor=0.469), ) - CADILLAC_ATS = GMPlatformConfig( + CADILLAC_ATS = GMASCMPlatformConfig( [GMCarDocs("Cadillac ATS Premium Performance 2018")], GMCarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), ) - CHEVROLET_MALIBU = GMPlatformConfig( + CHEVROLET_MALIBU = GMASCMPlatformConfig( [GMCarDocs("Chevrolet Malibu Premier 2017")], GMCarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), ) - GMC_ACADIA = GMPlatformConfig( + GMC_ACADIA = GMASCMPlatformConfig( [GMCarDocs("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo")], GMCarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), ) - BUICK_LACROSSE = GMPlatformConfig( + BUICK_LACROSSE = GMASCMPlatformConfig( [GMCarDocs("Buick LaCrosse 2017-19", "Driver Confidence Package 2")], GMCarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), ) - BUICK_REGAL = GMPlatformConfig( + BUICK_REGAL = GMASCMPlatformConfig( [GMCarDocs("Buick Regal Essence 2018")], GMCarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), ) - CADILLAC_ESCALADE = GMPlatformConfig( + CADILLAC_ESCALADE = GMASCMPlatformConfig( [GMCarDocs("Cadillac Escalade 2017", "Driver Assist Package")], GMCarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), ) - CADILLAC_ESCALADE_ESV = GMPlatformConfig( + CADILLAC_ESCALADE_ESV = GMASCMPlatformConfig( [GMCarDocs("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS")], GMCarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3, tireStiffnessFactor=1.0), ) - CADILLAC_ESCALADE_ESV_2019 = GMPlatformConfig( + CADILLAC_ESCALADE_ESV_2019 = GMASCMPlatformConfig( [GMCarDocs("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS")], CADILLAC_ESCALADE_ESV.specs, ) From 8583e61b8498599347aa82c46197f8f4ca6bccb5 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 21 Apr 2024 01:31:09 -0700 Subject: [PATCH 492/599] [bot] Fingerprints: add missing FW versions from new users (#32265) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 72c435e550..668d45cceb 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -421,6 +421,7 @@ FW_VERSIONS = { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00LX ESC \x01 103\x19\t\x10 58910-S8360', b'\xf1\x00LX ESC \x01 1031\t\x10 58910-S8360', + b'\xf1\x00LX ESC \x01 104 \x10\x15 58910-S8350', b'\xf1\x00LX ESC \x01 104 \x10\x16 58910-S8360', b'\xf1\x00LX ESC \x0b 101\x19\x03\x17 58910-S8330', b'\xf1\x00LX ESC \x0b 101\x19\x03 58910-S8360', @@ -966,6 +967,7 @@ FW_VERSIONS = { b'\xf1\x00NE1_ RDR ----- 1.00 1.00 99110-GI000 ', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00NE1 MFC AT CAN LHD 1.00 1.05 99211-GI010 220614', b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.01 99211-GI010 211007', b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.06 99211-GI000 210813', b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.06 99211-GI010 230110', From b54d701c837f2d066eddca775b23c97d6cb17475 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 21 Apr 2024 01:46:19 -0700 Subject: [PATCH 493/599] [bot] Fingerprints: add missing FW versions from CAN fingerprinting cars (#32264) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 668d45cceb..92e47524fc 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -85,6 +85,7 @@ FW_VERSIONS = { b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2100 ', ], (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00AE MDPS C 1.00 1.05 56310/G2501 4AEHC105', b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2301 4AEHC107', b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2501 4AEHC107', ], From 17ec4ad24ea446a99235223511792f8e9dfa16c7 Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Sun, 21 Apr 2024 06:29:43 -0300 Subject: [PATCH 494/599] Honda: Brazilian HR-V 2023 fingerprint (#32243) * fingerprint Honda HR-V 2023, brazilian market * update routes --------- Co-authored-by: Shane Smiskol --- selfdrive/car/honda/fingerprints.py | 7 +++++++ selfdrive/car/honda/interface.py | 2 +- selfdrive/car/honda/values.py | 2 +- selfdrive/car/tests/routes.py | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index d53cffe325..cda1451649 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -1014,26 +1014,33 @@ FW_VERSIONS = { }, CAR.HONDA_HRV_3G: { (Ecu.eps, 0x18da30f1, None): [ + b'39990-3M0-G110\x00\x00', b'39990-3W0-A030\x00\x00', ], (Ecu.gateway, 0x18daeff1, None): [ + b'38897-3M0-M110\x00\x00', b'38897-3W1-A010\x00\x00', ], (Ecu.srs, 0x18da53f1, None): [ + b'77959-3M0-K840\x00\x00', b'77959-3V0-A820\x00\x00', ], (Ecu.fwdRadar, 0x18dab0f1, None): [ + b'8S102-3M6-P030\x00\x00', b'8S102-3W0-A060\x00\x00', b'8S102-3W0-AB10\x00\x00', ], (Ecu.vsa, 0x18da28f1, None): [ + b'57114-3M6-M010\x00\x00', b'57114-3W0-A040\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ b'28101-6EH-A010\x00\x00', + b'28101-6JC-M310\x00\x00', ], (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-6CT-A710\x00\x00', + b'37805-6HZ-M630\x00\x00', ], (Ecu.electricBrakeBooster, 0x18da2bf1, None): [ b'46114-3W0-A020\x00\x00', diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 2a5a07093d..2026c385c2 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -193,7 +193,7 @@ class CarInterface(CarInterfaceBase): # These cars use alternate user brake msg (0x1BE) # TODO: Only detect feature for Accord/Accord Hybrid, not all Bosch DBCs have BRAKE_MODULE - if 0x1BE in fingerprint[CAN.pt] and candidate == CAR.HONDA_ACCORD: + if 0x1BE in fingerprint[CAN.pt] and candidate in (CAR.HONDA_ACCORD, CAR.HONDA_HRV_3G): ret.flags |= HondaFlags.BOSCH_ALT_BRAKE.value if ret.flags & HondaFlags.BOSCH_ALT_BRAKE: diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index ecb00d0a3c..1b0da8d7de 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -165,7 +165,7 @@ class CAR(Platforms): [HondaCarDocs("Honda HR-V 2023", "All")], CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41, tireStiffnessFactor=0.5), dbc_dict('honda_civic_ex_2022_can_generated', None), - flags=HondaFlags.BOSCH_RADARLESS | HondaFlags.BOSCH_ALT_BRAKE, + flags=HondaFlags.BOSCH_RADARLESS, ) ACURA_RDX_3G = HondaBoschPlatformConfig( [HondaCarDocs("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 35a9d8a8e7..dd3a8f633d 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -80,6 +80,7 @@ routes = [ CarTestRoute("2c4292a5cd10536c|2021-08-19--21-32-15", HONDA.HONDA_FREED), CarTestRoute("03be5f2fd5c508d1|2020-04-19--18-44-15", HONDA.HONDA_HRV), CarTestRoute("320098ff6c5e4730|2023-04-13--17-47-46", HONDA.HONDA_HRV_3G), + CarTestRoute("147613502316e718/00000001--dd141a3140", HONDA.HONDA_HRV_3G), # Brazilian model CarTestRoute("917b074700869333|2021-05-24--20-40-20", HONDA.ACURA_ILX), CarTestRoute("08a3deb07573f157|2020-03-06--16-11-19", HONDA.HONDA_ACCORD), # 1.5T CarTestRoute("1da5847ac2488106|2021-05-24--19-31-50", HONDA.HONDA_ACCORD), # 2.0T From 099e31ae0a054e7900fa62b84cf563d8d267f441 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 21 Apr 2024 02:55:35 -0700 Subject: [PATCH 495/599] [bot] Fingerprints: add missing FW versions from new users (#32268) Export fingerprints --- selfdrive/car/honda/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index cda1451649..55bd8b7aec 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -658,6 +658,7 @@ FW_VERSIONS = { ], (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-5MR-3050\x00\x00', + b'37805-5MR-3150\x00\x00', b'37805-5MR-3250\x00\x00', b'37805-5MR-4070\x00\x00', b'37805-5MR-4080\x00\x00', From 2c409e0980e6145d375eb73f2d21cd03b01a5354 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 22 Apr 2024 08:09:17 +0800 Subject: [PATCH 496/599] replay: bug fixes and improvements (#32193) --- tools/cabana/streams/replaystream.cc | 9 +- tools/cabana/videowidget.cc | 14 +- tools/replay/consoleui.cc | 3 +- tools/replay/filereader.cc | 5 +- tools/replay/logreader.cc | 43 +--- tools/replay/logreader.h | 32 +-- tools/replay/replay.cc | 307 +++++++++++++++------------ tools/replay/replay.h | 33 +-- tools/replay/route.cc | 2 +- tools/replay/tests/test_replay.cc | 70 ++---- tools/replay/util.cc | 33 ++- tools/replay/util.h | 2 +- 12 files changed, 253 insertions(+), 300 deletions(-) diff --git a/tools/cabana/streams/replaystream.cc b/tools/cabana/streams/replaystream.cc index 3fa8bb0fe9..ddd1c1dfed 100644 --- a/tools/cabana/streams/replaystream.cc +++ b/tools/cabana/streams/replaystream.cc @@ -33,13 +33,12 @@ void ReplayStream::mergeSegments() { std::vector new_events; new_events.reserve(seg->log->events.size()); - for (auto it = seg->log->events.cbegin(); it != seg->log->events.cend(); ++it) { - if ((*it)->which == cereal::Event::Which::CAN) { - const uint64_t ts = (*it)->mono_time; - capnp::FlatArrayMessageReader reader((*it)->data); + for (const Event &e : seg->log->events) { + if (e.which == cereal::Event::Which::CAN) { + capnp::FlatArrayMessageReader reader(e.data); auto event = reader.getRoot(); for (const auto &c : event.getCan()) { - new_events.push_back(newEvent(ts, c)); + new_events.push_back(newEvent(e.mono_time, c)); } } } diff --git a/tools/cabana/videowidget.cc b/tools/cabana/videowidget.cc index ad20543755..261c540340 100644 --- a/tools/cabana/videowidget.cc +++ b/tools/cabana/videowidget.cc @@ -257,13 +257,13 @@ void Slider::setTimeRange(double min, double max) { void Slider::parseQLog(int segnum, std::shared_ptr qlog) { const auto &segments = qobject_cast(can)->route()->segments(); if (segments.size() > 0 && segnum == segments.rbegin()->first && !qlog->events.empty()) { - emit updateMaximumTime(qlog->events.back()->mono_time / 1e9 - can->routeStartTime()); + emit updateMaximumTime(qlog->events.back().mono_time / 1e9 - can->routeStartTime()); } std::mutex mutex; - QtConcurrent::blockingMap(qlog->events.cbegin(), qlog->events.cend(), [&mutex, this](const Event *e) { - if (e->which == cereal::Event::Which::THUMBNAIL) { - capnp::FlatArrayMessageReader reader(e->data); + QtConcurrent::blockingMap(qlog->events.cbegin(), qlog->events.cend(), [&mutex, this](const Event &e) { + if (e.which == cereal::Event::Which::THUMBNAIL) { + capnp::FlatArrayMessageReader reader(e.data); auto thumb = reader.getRoot().getThumbnail(); auto data = thumb.getThumbnail(); if (QPixmap pm; pm.loadFromData(data.begin(), data.size(), "jpeg")) { @@ -271,13 +271,13 @@ void Slider::parseQLog(int segnum, std::shared_ptr qlog) { std::lock_guard lk(mutex); thumbnails[thumb.getTimestampEof()] = scaled; } - } else if (e->which == cereal::Event::Which::CONTROLS_STATE) { - capnp::FlatArrayMessageReader reader(e->data); + } else if (e.which == cereal::Event::Which::CONTROLS_STATE) { + capnp::FlatArrayMessageReader reader(e.data); auto cs = reader.getRoot().getControlsState(); if (cs.getAlertType().size() > 0 && cs.getAlertText1().size() > 0 && cs.getAlertSize() != cereal::ControlsState::AlertSize::NONE) { std::lock_guard lk(mutex); - alerts.emplace(e->mono_time, AlertInfo{cs.getAlertStatus(), cs.getAlertText1().cStr(), cs.getAlertText2().cStr()}); + alerts.emplace(e.mono_time, AlertInfo{cs.getAlertStatus(), cs.getAlertText1().cStr(), cs.getAlertText2().cStr()}); } } }); diff --git a/tools/replay/consoleui.cc b/tools/replay/consoleui.cc index 54056c6cd5..eaff78c691 100644 --- a/tools/replay/consoleui.cc +++ b/tools/replay/consoleui.cc @@ -172,7 +172,7 @@ void ConsoleUI::updateStatus() { if (status != Status::Paused) { auto events = replay->events(); uint64_t current_mono_time = replay->routeStartTime() + replay->currentSeconds() * 1e9; - bool playing = !events->empty() && events->back()->mono_time > current_mono_time; + bool playing = !events->empty() && events->back().mono_time > current_mono_time; status = playing ? Status::Playing : Status::Waiting; } auto [status_str, status_color] = status_text[status]; @@ -368,7 +368,6 @@ void ConsoleUI::handleKey(char c) { } else if (c == ' ') { pauseReplay(!replay->isPaused()); } else if (c == 'q' || c == 'Q') { - replay->stop(); qApp->exit(); } } diff --git a/tools/replay/filereader.cc b/tools/replay/filereader.cc index 22af7f5f86..d74aaebaba 100644 --- a/tools/replay/filereader.cc +++ b/tools/replay/filereader.cc @@ -35,7 +35,10 @@ std::string FileReader::read(const std::string &file, std::atomic *abort) std::string FileReader::download(const std::string &url, std::atomic *abort) { for (int i = 0; i <= max_retries_ && !(abort && *abort); ++i) { - if (i > 0) rWarning("download failed, retrying %d", i); + if (i > 0) { + rWarning("download failed, retrying %d", i); + util::sleep_for(3000); + } std::string result = httpGet(url, chunk_size_, abort); if (!result.empty()) { diff --git a/tools/replay/logreader.cc b/tools/replay/logreader.cc index 36b07f19d0..f52ef4a4eb 100644 --- a/tools/replay/logreader.cc +++ b/tools/replay/logreader.cc @@ -4,16 +4,6 @@ #include "tools/replay/filereader.h" #include "tools/replay/util.h" -LogReader::LogReader(size_t memory_pool_block_size) { - events.reserve(memory_pool_block_size); -} - -LogReader::~LogReader() { - for (Event *e : events) { - delete e; - } -} - bool LogReader::load(const std::string &url, std::atomic *abort, bool local_cache, int chunk_size, int retries) { raw_ = FileReader(local_cache, chunk_size, retries).read(url, abort); if (raw_.empty()) return false; @@ -22,17 +12,13 @@ bool LogReader::load(const std::string &url, std::atomic *abort, bool loca raw_ = decompressBZ2(raw_, abort); if (raw_.empty()) return false; } - return parse(abort); + return load(raw_.data(), raw_.size(), abort); } -bool LogReader::load(const std::byte *data, size_t size, std::atomic *abort) { - raw_.assign((const char *)data, size); - return parse(abort); -} - -bool LogReader::parse(std::atomic *abort) { +bool LogReader::load(const char *data, size_t size, std::atomic *abort) { try { - kj::ArrayPtr words((const capnp::word *)raw_.data(), raw_.size() / sizeof(capnp::word)); + events.reserve(65000); + kj::ArrayPtr words((const capnp::word *)data, size / sizeof(capnp::word)); while (words.size() > 0 && !(abort && *abort)) { capnp::FlatArrayMessageReader reader(words); auto event = reader.getRoot(); @@ -40,16 +26,16 @@ bool LogReader::parse(std::atomic *abort) { uint64_t mono_time = event.getLogMonoTime(); auto event_data = kj::arrayPtr(words.begin(), reader.getEnd()); - Event *evt = events.emplace_back(newEvent(which, mono_time, event_data)); + const Event &evt = events.emplace_back(which, mono_time, event_data); // Add encodeIdx packet again as a frame packet for the video stream - if (evt->which == cereal::Event::ROAD_ENCODE_IDX || - evt->which == cereal::Event::DRIVER_ENCODE_IDX || - evt->which == cereal::Event::WIDE_ROAD_ENCODE_IDX) { + if (evt.which == cereal::Event::ROAD_ENCODE_IDX || + evt.which == cereal::Event::DRIVER_ENCODE_IDX || + evt.which == cereal::Event::WIDE_ROAD_ENCODE_IDX) { auto idx = capnp::AnyStruct::Reader(event).getPointerSection()[0].getAs(); if (uint64_t sof = idx.getTimestampSof()) { mono_time = sof; } - events.emplace_back(newEvent(which, mono_time, event_data, idx.getSegmentNum())); + events.emplace_back(which, mono_time, event_data, idx.getSegmentNum()); } words = kj::arrayPtr(reader.getEnd(), words.end()); @@ -59,16 +45,9 @@ bool LogReader::parse(std::atomic *abort) { } if (!events.empty() && !(abort && *abort)) { - std::sort(events.begin(), events.end(), Event::lessThan()); + events.shrink_to_fit(); + std::sort(events.begin(), events.end()); return true; } return false; } - -Event *LogReader::newEvent(cereal::Event::Which which, uint64_t mono_time, const kj::ArrayPtr &words, int eidx_segnum) { -#ifdef HAS_MEMORY_RESOURCE - return new (&mbr_) Event(which, mono_time, words, eidx_segnum); -#else - return new Event(which, mono_time, words, eidx_segnum); -#endif -} diff --git a/tools/replay/logreader.h b/tools/replay/logreader.h index 2a28d7b432..56633c191b 100644 --- a/tools/replay/logreader.h +++ b/tools/replay/logreader.h @@ -1,10 +1,5 @@ #pragma once -#if __has_include() -#define HAS_MEMORY_RESOURCE 1 -#include -#endif -#include #include #include @@ -13,27 +8,15 @@ const CameraType ALL_CAMERAS[] = {RoadCam, DriverCam, WideRoadCam}; const int MAX_CAMERAS = std::size(ALL_CAMERAS); -const int DEFAULT_EVENT_MEMORY_POOL_BLOCK_SIZE = 65000; class Event { public: Event(cereal::Event::Which which, uint64_t mono_time, const kj::ArrayPtr &data, int eidx_segnum = -1) : which(which), mono_time(mono_time), data(data), eidx_segnum(eidx_segnum) {} - struct lessThan { - inline bool operator()(const Event *l, const Event *r) { - return l->mono_time < r->mono_time || (l->mono_time == r->mono_time && l->which < r->which); - } - }; - -#if HAS_MEMORY_RESOURCE - void *operator new(size_t size, std::pmr::monotonic_buffer_resource *mbr) { - return mbr->allocate(size); + bool operator<(const Event &other) const { + return mono_time < other.mono_time || (mono_time == other.mono_time && which < other.which); } - void operator delete(void *ptr) { - // No-op. memory used by EventMemoryPool increases monotonically until the logReader is destroyed. - } -#endif uint64_t mono_time; cereal::Event::Which which; @@ -43,18 +26,11 @@ public: class LogReader { public: - LogReader(size_t memory_pool_block_size = DEFAULT_EVENT_MEMORY_POOL_BLOCK_SIZE); - ~LogReader(); bool load(const std::string &url, std::atomic *abort = nullptr, bool local_cache = false, int chunk_size = -1, int retries = 0); - bool load(const std::byte *data, size_t size, std::atomic *abort = nullptr); - std::vector events; + bool load(const char *data, size_t size, std::atomic *abort = nullptr); + std::vector events; private: - Event *newEvent(cereal::Event::Which which, uint64_t mono_time, const kj::ArrayPtr &words, int eidx_segnum = -1); - bool parse(std::atomic *abort); std::string raw_; -#ifdef HAS_MEMORY_RESOURCE - std::pmr::monotonic_buffer_resource mbr_{DEFAULT_EVENT_MEMORY_POOL_BLOCK_SIZE * sizeof(Event)}; -#endif }; diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index 2e50722551..e7657f3531 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -2,15 +2,20 @@ #include #include - #include +#include #include "cereal/services.h" #include "common/params.h" #include "common/timing.h" #include "tools/replay/util.h" +static void interrupt_sleep_handler(int signal) {} + Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *sm_, uint32_t flags, QString data_dir, QObject *parent) : sm(sm_), flags_(flags), QObject(parent) { + // Register signal handler for SIGUSR1 + std::signal(SIGUSR1, interrupt_sleep_handler); + if (!(flags_ & REPLAY_FLAG_ALL_SERVICES)) { block << "uiDebug" << "userFlag"; } @@ -33,28 +38,21 @@ Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *s pm = std::make_unique(s); } route_ = std::make_unique(route, data_dir); - events_ = std::make_unique>(); - new_events_ = std::make_unique>(); } Replay::~Replay() { - stop(); -} - -void Replay::stop() { if (!stream_thread_ && segments_.empty()) return; rInfo("shutdown: in progress..."); if (stream_thread_ != nullptr) { - exit_ = updating_events_ = true; + exit_ =true; + paused_ = true; stream_cv_.notify_one(); stream_thread_->quit(); stream_thread_->wait(); - stream_thread_ = nullptr; + delete stream_thread_; } - camera_server_.reset(nullptr); timeline_future.waitForFinished(); - segments_.clear(); rInfo("shutdown: done"); } @@ -84,13 +82,12 @@ void Replay::start(int seconds) { seekTo(route_->identifier().begin_segment * 60 + seconds, false); } -void Replay::updateEvents(const std::function &lambda) { - // set updating_events to true to force stream thread release the lock and wait for events_updated. - updating_events_ = true; +void Replay::updateEvents(const std::function &update_events_function) { + pauseStreamThread(); { std::unique_lock lk(stream_lock_); - events_updated_ = lambda(); - updating_events_ = false; + events_ready_ = update_events_function(); + paused_ = user_paused_; } stream_cv_.notify_one(); } @@ -117,7 +114,7 @@ void Replay::seekTo(double seconds, bool relative) { } return segment_merged; }); - queueSegment(); + updateSegmentsCache(); } void Replay::seekToFlag(FindFlag flag) { @@ -146,34 +143,34 @@ void Replay::buildTimeline() { std::shared_ptr log(new LogReader()); if (!log->load(it->second.qlog.toStdString(), &exit_, !hasFlag(REPLAY_FLAG_NO_FILE_CACHE), 0, 3)) continue; - for (const Event *e : log->events) { - if (e->which == cereal::Event::Which::CONTROLS_STATE) { - capnp::FlatArrayMessageReader reader(e->data); + for (const Event &e : log->events) { + if (e.which == cereal::Event::Which::CONTROLS_STATE) { + capnp::FlatArrayMessageReader reader(e.data); auto event = reader.getRoot(); auto cs = event.getControlsState(); if (engaged != cs.getEnabled()) { if (engaged) { std::lock_guard lk(timeline_lock); - timeline.push_back({toSeconds(engaged_begin), toSeconds(e->mono_time), TimelineType::Engaged}); + timeline.push_back({toSeconds(engaged_begin), toSeconds(e.mono_time), TimelineType::Engaged}); } - engaged_begin = e->mono_time; + engaged_begin = e.mono_time; engaged = cs.getEnabled(); } if (alert_type != cs.getAlertType().cStr() || alert_status != cs.getAlertStatus()) { if (!alert_type.empty() && alert_size != cereal::ControlsState::AlertSize::NONE) { std::lock_guard lk(timeline_lock); - timeline.push_back({toSeconds(alert_begin), toSeconds(e->mono_time), timeline_types[(int)alert_status]}); + timeline.push_back({toSeconds(alert_begin), toSeconds(e.mono_time), timeline_types[(int)alert_status]}); } - alert_begin = e->mono_time; + alert_begin = e.mono_time; alert_type = cs.getAlertType().cStr(); alert_size = cs.getAlertSize(); alert_status = cs.getAlertStatus(); } - } else if (e->which == cereal::Event::Which::USER_FLAG) { + } else if (e.which == cereal::Event::Which::USER_FLAG) { std::lock_guard lk(timeline_lock); - timeline.push_back({toSeconds(e->mono_time), toSeconds(e->mono_time), TimelineType::UserFlag}); + timeline.push_back({toSeconds(e.mono_time), toSeconds(e.mono_time), TimelineType::UserFlag}); } } std::sort(timeline.begin(), timeline.end(), [](auto &l, auto &r) { return std::get<2>(l) < std::get<2>(r); }); @@ -203,16 +200,22 @@ std::optional Replay::find(FindFlag flag) { } void Replay::pause(bool pause) { - updateEvents([=]() { - rWarning("%s at %.2f s", pause ? "paused..." : "resuming", currentSeconds()); - paused_ = pause; - return true; - }); + if (user_paused_ != pause) { + pauseStreamThread(); + { + std::unique_lock lk(stream_lock_); + rWarning("%s at %.2f s", pause ? "paused..." : "resuming", currentSeconds()); + paused_ = user_paused_ = pause; + } + stream_cv_.notify_one(); + } } -void Replay::setCurrentSegment(int n) { - if (current_segment_.exchange(n) != n) { - QMetaObject::invokeMethod(this, &Replay::queueSegment, Qt::QueuedConnection); +void Replay::pauseStreamThread() { + paused_ = true; + // Send SIGUSR1 to interrupt clock_nanosleep + if (stream_thread_ && stream_thread_id) { + pthread_kill(stream_thread_id, SIGUSR1); } } @@ -222,27 +225,22 @@ void Replay::segmentLoadFinished(bool success) { rWarning("failed to load segment %d, removing it from current replay list", seg->seg_num); updateEvents([&]() { segments_.erase(seg->seg_num); - return true; + return !segments_.empty(); }); } - queueSegment(); + updateSegmentsCache(); } -void Replay::queueSegment() { +void Replay::updateSegmentsCache() { auto cur = segments_.lower_bound(current_segment_.load()); if (cur == segments_.end()) return; + // Calculate the range of segments to load auto begin = std::prev(cur, std::min(segment_cache_limit / 2, std::distance(segments_.begin(), cur))); auto end = std::next(begin, std::min(segment_cache_limit, std::distance(begin, segments_.end()))); begin = std::prev(end, std::min(segment_cache_limit, std::distance(segments_.begin(), end))); - // load one segment at a time - auto it = std::find_if(cur, end, [](auto &it) { return !it.second || !it.second->isLoaded(); }); - if (it != end && !it->second) { - rDebug("loading segment %d...", it->first); - it->second = std::make_unique(it->first, route_->at(it->first), flags_); - QObject::connect(it->second.get(), &Segment::loadFinished, this, &Replay::segmentLoadFinished); - } + loadSegmentInRange(begin, cur, end); mergeSegments(begin, end); // free segments out of current semgnt window. @@ -257,69 +255,81 @@ void Replay::queueSegment() { } } +void Replay::loadSegmentInRange(SegmentMap::iterator begin, SegmentMap::iterator cur, SegmentMap::iterator end) { + auto loadNext = [this](auto begin, auto end) { + auto it = std::find_if(begin, end, [](const auto &seg_it) { return !seg_it.second || !seg_it.second->isLoaded(); }); + if (it != end && !it->second) { + rDebug("loading segment %d...", it->first); + it->second = std::make_unique(it->first, route_->at(it->first), flags_); + QObject::connect(it->second.get(), &Segment::loadFinished, this, &Replay::segmentLoadFinished); + return true; + } + return false; + }; + + // Load forward segments, then try reverse + if (!loadNext(cur, end)) { + loadNext(std::make_reverse_iterator(cur), segments_.rend()); + } +} + void Replay::mergeSegments(const SegmentMap::iterator &begin, const SegmentMap::iterator &end) { - std::vector segments_need_merge; + std::set segments_to_merge; size_t new_events_size = 0; for (auto it = begin; it != end; ++it) { if (it->second && it->second->isLoaded()) { - segments_need_merge.push_back(it->first); + segments_to_merge.insert(it->first); new_events_size += it->second->log->events.size(); } } - if (segments_need_merge != segments_merged_) { - std::string s; - for (int i = 0; i < segments_need_merge.size(); ++i) { - s += std::to_string(segments_need_merge[i]); - if (i != segments_need_merge.size() - 1) s += ", "; - } - rDebug("merge segments %s", s.c_str()); - new_events_->clear(); - new_events_->reserve(new_events_size); - for (int n : segments_need_merge) { - size_t size = new_events_->size(); - const auto &events = segments_[n]->log->events; - std::copy_if(events.begin(), events.end(), std::back_inserter(*new_events_), - [this](auto e) { return e->which < sockets_.size() && sockets_[e->which] != nullptr; }); - std::inplace_merge(new_events_->begin(), new_events_->begin() + size, new_events_->end(), Event::lessThan()); - } + if (segments_to_merge == merged_segments_) return; - if (stream_thread_) { - emit segmentsMerged(); + rDebug("merge segments %s", std::accumulate(segments_to_merge.begin(), segments_to_merge.end(), std::string{}, + [](auto & a, int b) { return a + (a.empty() ? "" : ", ") + std::to_string(b); }).c_str()); - // Check if seeking is in progress - if (seeking_to_seconds_ >= 0) { - int target_segment = int(seeking_to_seconds_ / 60); - auto segment_found = std::find(segments_need_merge.begin(), segments_need_merge.end(), target_segment); + std::vector new_events; + new_events.reserve(new_events_size); - // If the target segment is found, emit seekedTo signal and reset seeking_to_seconds_ - if (segment_found != segments_need_merge.end()) { - emit seekedTo(seeking_to_seconds_); - seeking_to_seconds_ = -1; // Reset seeking_to_seconds_ to indicate completion of seek - } - } - } - updateEvents([&]() { - events_.swap(new_events_); - segments_merged_ = segments_need_merge; - // Do not wake up the stream thread if the current segment has not been merged. - return isSegmentMerged(current_segment_) || (segments_.count(current_segment_) == 0); - }); + // Merge events from segments_to_merge into new_events + for (int n : segments_to_merge) { + size_t size = new_events.size(); + const auto &events = segments_.at(n)->log->events; + std::copy_if(events.begin(), events.end(), std::back_inserter(new_events), + [this](const Event &e) { return e.which < sockets_.size() && sockets_[e.which] != nullptr; }); + std::inplace_merge(new_events.begin(), new_events.begin() + size, new_events.end()); } + + if (stream_thread_) { + emit segmentsMerged(); + + // Check if seeking is in progress + int target_segment = int(seeking_to_seconds_ / 60); + if (seeking_to_seconds_ >= 0 && segments_to_merge.count(target_segment) > 0) { + emit seekedTo(seeking_to_seconds_); + seeking_to_seconds_ = -1; // Reset seeking_to_seconds_ to indicate completion of seek + } + } + + updateEvents([&]() { + events_.swap(new_events); + merged_segments_ = segments_to_merge; + // Wake up the stream thread if the current segment is loaded or invalid. + return isSegmentMerged(current_segment_) || (segments_.count(current_segment_) == 0); + }); } void Replay::startStream(const Segment *cur_segment) { const auto &events = cur_segment->log->events; - - route_start_ts_ = events.front()->mono_time; + route_start_ts_ = events.front().mono_time; cur_mono_time_ += route_start_ts_ - 1; // get datetime from INIT_DATA, fallback to datetime in the route name route_date_time_ = route()->datetime(); auto it = std::find_if(events.cbegin(), events.cend(), - [](auto e) { return e->which == cereal::Event::Which::INIT_DATA; }); + [](const Event &e) { return e.which == cereal::Event::Which::INIT_DATA; }); if (it != events.cend()) { - capnp::FlatArrayMessageReader reader((*it)->data); + capnp::FlatArrayMessageReader reader(it->data); auto event = reader.getRoot(); uint64_t wall_time = event.getInitData().getWallTimeNanos(); if (wall_time > 0) { @@ -328,9 +338,9 @@ void Replay::startStream(const Segment *cur_segment) { } // write CarParams - it = std::find_if(events.begin(), events.end(), [](auto e) { return e->which == cereal::Event::Which::CAR_PARAMS; }); + it = std::find_if(events.begin(), events.end(), [](const Event &e) { return e.which == cereal::Event::Which::CAR_PARAMS; }); if (it != events.end()) { - capnp::FlatArrayMessageReader reader((*it)->data); + capnp::FlatArrayMessageReader reader(it->data); auto event = reader.getRoot(); car_fingerprint_ = event.getCarParams().getCarFingerprint(); capnp::MallocMessageBuilder builder; @@ -357,8 +367,7 @@ void Replay::startStream(const Segment *cur_segment) { emit segmentsMerged(); // start stream thread stream_thread_ = new QThread(); - QObject::connect(stream_thread_, &QThread::started, [=]() { stream(); }); - QObject::connect(stream_thread_, &QThread::finished, stream_thread_, &QThread::deleteLater); + QObject::connect(stream_thread_, &QThread::started, [=]() { streamThread(); }); stream_thread_->start(); timeline_future = QtConcurrent::run(this, &Replay::buildTimeline); @@ -382,83 +391,54 @@ void Replay::publishMessage(const Event *e) { } void Replay::publishFrame(const Event *e) { - static const std::map cam_types{ - {cereal::Event::ROAD_ENCODE_IDX, RoadCam}, - {cereal::Event::DRIVER_ENCODE_IDX, DriverCam}, - {cereal::Event::WIDE_ROAD_ENCODE_IDX, WideRoadCam}, - }; - if ((e->which == cereal::Event::DRIVER_ENCODE_IDX && !hasFlag(REPLAY_FLAG_DCAM)) || - (e->which == cereal::Event::WIDE_ROAD_ENCODE_IDX && !hasFlag(REPLAY_FLAG_ECAM))) { - return; + CameraType cam; + switch (e->which) { + case cereal::Event::ROAD_ENCODE_IDX: cam = RoadCam; break; + case cereal::Event::DRIVER_ENCODE_IDX: cam = DriverCam; break; + case cereal::Event::WIDE_ROAD_ENCODE_IDX: cam = WideRoadCam; break; + default: return; // Invalid event type } + if ((cam == DriverCam && !hasFlag(REPLAY_FLAG_DCAM)) || (cam == WideRoadCam && !hasFlag(REPLAY_FLAG_ECAM))) + return; // Camera isdisabled + if (isSegmentMerged(e->eidx_segnum)) { auto &segment = segments_.at(e->eidx_segnum); - auto cam = cam_types.at(e->which); if (auto &frame = segment->frames[cam]; frame) { camera_server_->pushFrame(cam, frame.get(), e); } } } -void Replay::stream() { +void Replay::streamThread() { + stream_thread_id = pthread_self(); cereal::Event::Which cur_which = cereal::Event::Which::INIT_DATA; - double prev_replay_speed = speed_; std::unique_lock lk(stream_lock_); while (true) { - stream_cv_.wait(lk, [=]() { return exit_ || (events_updated_ && !paused_); }); - events_updated_ = false; + stream_cv_.wait(lk, [=]() { return exit_ || ( events_ready_ && !paused_); }); if (exit_) break; - Event cur_event{cur_which, cur_mono_time_, {}}; - auto eit = std::upper_bound(events_->begin(), events_->end(), &cur_event, Event::lessThan()); - if (eit == events_->end()) { + Event event(cur_which, cur_mono_time_, {}); + auto first = std::upper_bound(events_.cbegin(), events_.cend(), event); + if (first == events_.cend()) { rInfo("waiting for events..."); + events_ready_ = false; continue; } - uint64_t evt_start_ts = cur_mono_time_; - uint64_t loop_start_ts = nanos_since_boot(); + auto it = publishEvents(first, events_.cend()); - for (auto end = events_->end(); !updating_events_ && eit != end; ++eit) { - const Event *evt = (*eit); - cur_which = evt->which; - cur_mono_time_ = evt->mono_time; - setCurrentSegment(toSeconds(cur_mono_time_) / 60); - - if (sockets_[cur_which] != nullptr) { - // keep time - long etime = (cur_mono_time_ - evt_start_ts) / speed_; - long rtime = nanos_since_boot() - loop_start_ts; - long behind_ns = etime - rtime; - // if behind_ns is greater than 1 second, it means that an invalid segment is skipped by seeking/replaying - if (behind_ns >= 1 * 1e9 || speed_ != prev_replay_speed) { - // reset event start times - evt_start_ts = cur_mono_time_; - loop_start_ts = nanos_since_boot(); - prev_replay_speed = speed_; - } else if (behind_ns > 0) { - precise_nano_sleep(behind_ns); - } - - if (evt->eidx_segnum == -1) { - publishMessage(evt); - } else if (camera_server_) { - if (speed_ > 1.0) { - camera_server_->waitForSent(); - } - publishFrame(evt); - } - } - } - // wait for frame to be sent before unlock.(frameReader may be deleted after unlock) + // Ensure frames are sent before unlocking to prevent race conditions if (camera_server_) { camera_server_->waitForSent(); } - if (eit == events_->end() && !hasFlag(REPLAY_FLAG_NO_LOOP)) { - int last_segment = segments_.empty() ? 0 : segments_.rbegin()->first; + if (it != events_.cend()) { + cur_which = it->which; + } else if (!hasFlag(REPLAY_FLAG_NO_LOOP)) { + // Check for loop end and restart if necessary + int last_segment = segments_.rbegin()->first; if (current_segment_ >= last_segment && isSegmentMerged(last_segment)) { rInfo("reaches the end of route, restart from beginning"); QMetaObject::invokeMethod(this, std::bind(&Replay::seekTo, this, 0, false), Qt::QueuedConnection); @@ -466,3 +446,48 @@ void Replay::stream() { } } } + +std::vector::const_iterator Replay::publishEvents(std::vector::const_iterator first, + std::vector::const_iterator last) { + uint64_t evt_start_ts = cur_mono_time_; + uint64_t loop_start_ts = nanos_since_boot(); + double prev_replay_speed = speed_; + + for (; !paused_ && first != last; ++first) { + const Event &evt = *first; + int segment = toSeconds(evt.mono_time) / 60; + + if (current_segment_ != segment) { + current_segment_ = segment; + QMetaObject::invokeMethod(this, &Replay::updateSegmentsCache, Qt::QueuedConnection); + } + + // Skip events if socket is not present + if (!sockets_[evt.which]) continue; + + int64_t time_diff = (evt.mono_time - evt_start_ts) / speed_ - (nanos_since_boot() - loop_start_ts); + // if time_diff is greater than 1 second, it means that an invalid segment is skipped + if (time_diff >= 1e9 || speed_ != prev_replay_speed) { + // reset event start times + evt_start_ts = evt.mono_time; + loop_start_ts = nanos_since_boot(); + prev_replay_speed = speed_; + } else if (time_diff > 0) { + precise_nano_sleep(time_diff); + } + + if (paused_) break; + + cur_mono_time_ = evt.mono_time; + if (evt.eidx_segnum == -1) { + publishMessage(&evt); + } else if (camera_server_) { + if (speed_ > 1.0) { + camera_server_->waitForSent(); + } + publishFrame(&evt); + } + } + + return first; +} diff --git a/tools/replay/replay.h b/tools/replay/replay.h index c4140dc806..b8f7852e4f 100644 --- a/tools/replay/replay.h +++ b/tools/replay/replay.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -53,11 +54,10 @@ public: ~Replay(); bool load(); void start(int seconds = 0); - void stop(); void pause(bool pause); void seekToFlag(FindFlag flag); void seekTo(double seconds, bool relative); - inline bool isPaused() const { return paused_; } + inline bool isPaused() const { return user_paused_; } // the filter is called in streaming thread.try to return quickly from it to avoid blocking streaming. // the filter function must return true if the event should be filtered. // otherwise it must return false. @@ -79,7 +79,7 @@ public: inline int totalSeconds() const { return (!segments_.empty()) ? (segments_.rbegin()->first + 1) * 60 : 0; } inline void setSpeed(float speed) { speed_ = speed; } inline float getSpeed() const { return speed_; } - inline const std::vector *events() const { return events_.get(); } + inline const std::vector *events() const { return &events_; } inline const std::map> &segments() const { return segments_; } inline const std::string &carFingerprint() const { return car_fingerprint_; } inline const std::vector> getTimeline() { @@ -99,36 +99,37 @@ protected slots: protected: typedef std::map> SegmentMap; std::optional find(FindFlag flag); + void pauseStreamThread(); void startStream(const Segment *cur_segment); - void stream(); - void setCurrentSegment(int n); - void queueSegment(); + void streamThread(); + void updateSegmentsCache(); + void loadSegmentInRange(SegmentMap::iterator begin, SegmentMap::iterator cur, SegmentMap::iterator end); void mergeSegments(const SegmentMap::iterator &begin, const SegmentMap::iterator &end); - void updateEvents(const std::function& lambda); + void updateEvents(const std::function& update_events_function); + std::vector::const_iterator publishEvents(std::vector::const_iterator first, + std::vector::const_iterator last); void publishMessage(const Event *e); void publishFrame(const Event *e); void buildTimeline(); - inline bool isSegmentMerged(int n) { - return std::find(segments_merged_.begin(), segments_merged_.end(), n) != segments_merged_.end(); - } + inline bool isSegmentMerged(int n) const { return merged_segments_.count(n) > 0; } + pthread_t stream_thread_id = 0; QThread *stream_thread_ = nullptr; std::mutex stream_lock_; + bool user_paused_ = false; std::condition_variable stream_cv_; - std::atomic updating_events_ = false; std::atomic current_segment_ = 0; double seeking_to_seconds_ = -1; SegmentMap segments_; // the following variables must be protected with stream_lock_ std::atomic exit_ = false; - bool paused_ = false; - bool events_updated_ = false; + std::atomic paused_ = false; + bool events_ready_ = false; QDateTime route_date_time_; uint64_t route_start_ts_ = 0; std::atomic cur_mono_time_ = 0; - std::unique_ptr> events_; - std::unique_ptr> new_events_; - std::vector segments_merged_; + std::vector events_; + std::set merged_segments_; // messaging SubMaster *sm = nullptr; diff --git a/tools/replay/route.cc b/tools/replay/route.cc index db7a959595..f2a0754da1 100644 --- a/tools/replay/route.cc +++ b/tools/replay/route.cc @@ -77,7 +77,7 @@ bool Route::loadFromServer(int retries) { return false; } rWarning("Retrying %d/%d", i, retries); - util::sleep_for(500); + util::sleep_for(3000); } return false; } diff --git a/tools/replay/tests/test_replay.cc b/tools/replay/tests/test_replay.cc index a681f347bb..6c005f1bd4 100644 --- a/tools/replay/tests/test_replay.cc +++ b/tools/replay/tests/test_replay.cc @@ -1,7 +1,6 @@ #include #include -#include #include #include "catch2/catch.hpp" @@ -67,7 +66,7 @@ TEST_CASE("LogReader") { corrupt_content.resize(corrupt_content.length() / 2); corrupt_content = decompressBZ2(corrupt_content); LogReader log; - REQUIRE(log.load((std::byte *)corrupt_content.data(), corrupt_content.size())); + REQUIRE(log.load(corrupt_content.data(), corrupt_content.size())); REQUIRE(log.events.size() > 0); } } @@ -88,7 +87,7 @@ void read_segment(int n, const SegmentFile &segment_file, uint32_t flags) { // test LogReader & FrameReader REQUIRE(segment.log->events.size() > 0); - REQUIRE(std::is_sorted(segment.log->events.begin(), segment.log->events.end(), Event::lessThan())); + REQUIRE(std::is_sorted(segment.log->events.begin(), segment.log->events.end())); for (auto cam : ALL_CAMERAS) { auto &fr = segment.frames[cam]; @@ -158,63 +157,20 @@ TEST_CASE("Remote route") { } } -// helper class for unit tests -class TestReplay : public Replay { - public: - TestReplay(const QString &route, uint32_t flags = REPLAY_FLAG_NO_FILE_CACHE | REPLAY_FLAG_NO_VIPC) : Replay(route, {}, {}, nullptr, flags) {} - void test_seek(); - void testSeekTo(int seek_to); -}; - -void TestReplay::testSeekTo(int seek_to) { - seekTo(seek_to, false); - - while (true) { - std::unique_lock lk(stream_lock_); - stream_cv_.wait(lk, [=]() { return events_updated_ == true; }); - events_updated_ = false; - if (cur_mono_time_ != route_start_ts_ + seek_to * 1e9) { - // wake up by the previous merging, skip it. - continue; - } - - Event cur_event(cereal::Event::Which::INIT_DATA, cur_mono_time_, {}); - auto eit = std::upper_bound(events_->begin(), events_->end(), &cur_event, Event::lessThan()); - if (eit == events_->end()) { - qDebug() << "waiting for events..."; - continue; - } - - REQUIRE(std::is_sorted(events_->begin(), events_->end(), Event::lessThan())); - const int seek_to_segment = seek_to / 60; - const int event_seconds = ((*eit)->mono_time - route_start_ts_) / 1e9; - current_segment_ = event_seconds / 60; - INFO("seek to [" << seek_to << "s segment " << seek_to_segment << "], events [" << event_seconds << "s segment" << current_segment_ << "]"); - REQUIRE(event_seconds >= seek_to); - if (event_seconds > seek_to) { - auto it = segments_.lower_bound(seek_to_segment); - REQUIRE(it->first == current_segment_); - } - break; - } -} - -void TestReplay::test_seek() { - // create a dummy stream thread - stream_thread_ = new QThread(this); +TEST_CASE("seek_to") { QEventLoop loop; - std::thread thread = std::thread([&]() { - for (int i = 0; i < 10; ++i) { - testSeekTo(util::random_int(0, 2 * 60)); - } + int seek_to = util::random_int(0, 2 * 59); + Replay replay(DEMO_ROUTE, {}, {}, nullptr, REPLAY_FLAG_NO_VIPC); + + QObject::connect(&replay, &Replay::seekedTo, [&](double sec) { + INFO("seek to " << seek_to << "s seeked to" << sec); + REQUIRE(sec >= seek_to); loop.quit(); }); - loop.exec(); - thread.join(); -} -TEST_CASE("Replay") { - TestReplay replay(DEMO_ROUTE); REQUIRE(replay.load()); - replay.test_seek(); + replay.start(); + replay.seekTo(seek_to, false); + + loop.exec(); } diff --git a/tools/replay/util.cc b/tools/replay/util.cc index deb6293745..f95e1e75b1 100644 --- a/tools/replay/util.cc +++ b/tools/replay/util.cc @@ -4,10 +4,10 @@ #include #include -#include -#include #include #include +#include +#include #include #include #include @@ -158,7 +158,10 @@ size_t getRemoteFileSize(const std::string &url, std::atomic *abort) { int still_running = 1; while (still_running > 0 && !(abort && *abort)) { CURLMcode mc = curl_multi_perform(cm, &still_running); - if (!mc) curl_multi_wait(cm, nullptr, 0, 1000, nullptr); + if (mc != CURLM_OK) break; + if (still_running > 0) { + curl_multi_wait(cm, nullptr, 0, 1000, nullptr); + } } double content_length = -1; @@ -208,10 +211,20 @@ bool httpDownload(const std::string &url, T &buf, size_t chunk_size, size_t cont } int still_running = 1; + size_t prev_written = 0; while (still_running > 0 && !(abort && *abort)) { - curl_multi_wait(cm, nullptr, 0, 1000, nullptr); - curl_multi_perform(cm, &still_running); - download_stats.update(url, written); + CURLMcode mc = curl_multi_perform(cm, &still_running); + if (mc != CURLM_OK) { + break; + } + if (still_running > 0) { + curl_multi_wait(cm, nullptr, 0, 1000, nullptr); + } + + if (((written - prev_written) / (double)content_length) >= 0.01) { + download_stats.update(url, written); + prev_written = written; + } } CURLMsg *msg; @@ -304,9 +317,11 @@ std::string decompressBZ2(const std::byte *in, size_t in_size, std::atomic return {}; } -void precise_nano_sleep(long sleep_ns) { - struct timespec req = {.tv_sec = 0, .tv_nsec = sleep_ns}; - struct timespec rem = {}; +void precise_nano_sleep(int64_t nanoseconds) { + struct timespec req, rem; + + req.tv_sec = nanoseconds / 1e9; + req.tv_nsec = nanoseconds % (int64_t)1e9; while (clock_nanosleep(CLOCK_MONOTONIC, 0, &req, &rem) && errno == EINTR) { // Retry sleep if interrupted by a signal req = rem; diff --git a/tools/replay/util.h b/tools/replay/util.h index 6c808095e8..fdb1dbf0f8 100644 --- a/tools/replay/util.h +++ b/tools/replay/util.h @@ -21,7 +21,7 @@ void logMessage(ReplyMsgType type, const char* fmt, ...); #define rError(fmt, ...) ::logMessage(ReplyMsgType::Critical , fmt, ## __VA_ARGS__) std::string sha256(const std::string &str); -void precise_nano_sleep(long sleep_ns); +void precise_nano_sleep(int64_t nanoseconds); std::string decompressBZ2(const std::string &in, std::atomic *abort = nullptr); std::string decompressBZ2(const std::byte *in, size_t in_size, std::atomic *abort = nullptr); std::string getUrlWithoutQuery(const std::string &url); From bab8cdfdef025b242150fb855e210ffcadc83a30 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 22 Apr 2024 13:34:24 +0800 Subject: [PATCH 497/599] Cabana: bug fixes (#32272) * Fix SIGSEGV due to thread race conditions after seeking * adding ID as a secondary sorting factor * fix gaps --- tools/cabana/messageswidget.cc | 12 ++++++------ tools/cabana/videowidget.cc | 3 ++- tools/replay/replay.cc | 14 ++++++-------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc index 8043b99a70..4c3efa0385 100644 --- a/tools/cabana/messageswidget.cc +++ b/tools/cabana/messageswidget.cc @@ -255,12 +255,12 @@ void MessageListModel::dbcModified() { void MessageListModel::sortItems(std::vector &items) { auto compare = [this](const auto &l, const auto &r) { switch (sort_column) { - case Column::NAME: return l.name < r.name; - case Column::SOURCE: return l.id.source < r.id.source; - case Column::ADDRESS: return l.id.address < r.id.address; - case Column::NODE: return l.node < r.node; - case Column::FREQ: return can->lastMessage(l.id).freq < can->lastMessage(r.id).freq; - case Column::COUNT: return can->lastMessage(l.id).count < can->lastMessage(r.id).count; + case Column::NAME: return std::tie(l.name, l.id) < std::tie(r.name, r.id); + case Column::SOURCE: return std::tie(l.id.source, l.id.address) < std::tie(r.id.source, r.id.address); + case Column::ADDRESS: return std::tie(l.id.address, l.id.source) < std::tie(r.id.address, r.id.source); + case Column::NODE: return std::tie(l.node, l.id) < std::tie(r.node, r.id); + case Column::FREQ: return std::tie(can->lastMessage(l.id).freq, l.id) < std::tie(can->lastMessage(r.id).freq, r.id); + case Column::COUNT: return std::tie(can->lastMessage(l.id).count, l.id) < std::tie(can->lastMessage(r.id).count, r.id); default: return false; // Default case to suppress compiler warning } }; diff --git a/tools/cabana/videowidget.cc b/tools/cabana/videowidget.cc index 261c540340..cd412f7271 100644 --- a/tools/cabana/videowidget.cc +++ b/tools/cabana/videowidget.cc @@ -151,6 +151,7 @@ QWidget *VideoWidget::createCameraWidget() { setMaximumTime(can->totalSeconds()); QObject::connect(slider, &QSlider::sliderReleased, [this]() { can->seekTo(slider->currentSecond()); }); QObject::connect(slider, &Slider::updateMaximumTime, this, &VideoWidget::setMaximumTime, Qt::QueuedConnection); + QObject::connect(can, &AbstractStream::eventsMerged, [this]() { slider->update(); }); QObject::connect(static_cast(can), &ReplayStream::qLogLoaded, slider, &Slider::parseQLog); QObject::connect(cam_widget, &CameraWidget::clicked, []() { can->pause(!can->isPaused()); }); QObject::connect(cam_widget, &CameraWidget::vipcAvailableStreamsUpdated, this, &VideoWidget::vipcAvailableStreamsUpdated); @@ -405,7 +406,7 @@ void InfoLabel::paintEvent(QPaintEvent *event) { font.setPixelSize(11); p.setFont(font); } - QRect text_rect = rect().adjusted(2, 2, -2, -2); + QRect text_rect = rect().adjusted(1, 1, -1, -1); QRect r = p.fontMetrics().boundingRect(text_rect, Qt::AlignTop | Qt::AlignHCenter | Qt::TextWordWrap, text); p.fillRect(text_rect.left(), r.top(), text_rect.width(), r.height(), color); p.drawText(text_rect, Qt::AlignTop | Qt::AlignHCenter | Qt::TextWordWrap, text); diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index e7657f3531..f5339050a8 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -93,10 +93,9 @@ void Replay::updateEvents(const std::function &update_events_function) { } void Replay::seekTo(double seconds, bool relative) { - seeking_to_seconds_ = relative ? seconds + currentSeconds() : seconds; - seeking_to_seconds_ = std::max(double(0.0), seeking_to_seconds_); - updateEvents([&]() { + seeking_to_seconds_ = relative ? seconds + currentSeconds() : seconds; + seeking_to_seconds_ = std::max(double(0.0), seeking_to_seconds_); int target_segment = (int)seeking_to_seconds_ / 60; if (segments_.count(target_segment) == 0) { rWarning("can't seek to %d s segment %d is invalid", (int)seeking_to_seconds_, target_segment); @@ -302,18 +301,17 @@ void Replay::mergeSegments(const SegmentMap::iterator &begin, const SegmentMap:: if (stream_thread_) { emit segmentsMerged(); + } + updateEvents([&]() { + events_.swap(new_events); + merged_segments_ = segments_to_merge; // Check if seeking is in progress int target_segment = int(seeking_to_seconds_ / 60); if (seeking_to_seconds_ >= 0 && segments_to_merge.count(target_segment) > 0) { emit seekedTo(seeking_to_seconds_); seeking_to_seconds_ = -1; // Reset seeking_to_seconds_ to indicate completion of seek } - } - - updateEvents([&]() { - events_.swap(new_events); - merged_segments_ = segments_to_merge; // Wake up the stream thread if the current segment is loaded or invalid. return isSegmentMerged(current_segment_) || (segments_.count(current_segment_) == 0); }); From 5d7b01bbe0eaecce2e81df4e819b7933d72cc427 Mon Sep 17 00:00:00 2001 From: commaci-public <60409688+commaci-public@users.noreply.github.com> Date: Mon, 22 Apr 2024 08:42:22 -0700 Subject: [PATCH 498/599] [bot] Update Python packages and pre-commit hooks (#32276) Update Python packages and pre-commit hooks Co-authored-by: jnewb1 <9648890+jnewb1@users.noreply.github.com> --- .pre-commit-config.yaml | 6 +- poetry.lock | 788 +++++++++++++++++++++------------------- 2 files changed, 424 insertions(+), 370 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e4109b8bf8..ec3ec96794 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,7 +33,7 @@ repos: - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.5 + rev: v0.4.1 hooks: - id: ruff exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)' @@ -75,7 +75,7 @@ repos: # relevant rules are whitelisted, see all options with: cpplint --filter= - --filter=-build,-legal,-readability,-runtime,-whitespace,+build/include_subdir,+build/forward_decl,+build/include_what_you_use,+build/deprecated,+whitespace/comma,+whitespace/line_length,+whitespace/empty_if_body,+whitespace/empty_loop_body,+whitespace/empty_conditional_body,+whitespace/forcolon,+whitespace/parens,+whitespace/semicolon,+whitespace/tab,+readability/braces - repo: https://github.com/MarcoGorelli/cython-lint - rev: v0.16.0 + rev: v0.16.2 hooks: - id: cython-lint exclude: '^(third_party/)|(cereal/)|(body/)|(rednose/)|(rednose_repo/)|(opendbc/)|(panda/)|(generated/)' @@ -98,6 +98,6 @@ repos: args: - --lock - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.28.1 + rev: 0.28.2 hooks: - id: check-github-workflows diff --git a/poetry.lock b/poetry.lock index 453ba46e7d..152ae4a49d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,87 +2,87 @@ [[package]] name = "aiohttp" -version = "3.9.3" +version = "3.9.5" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, - {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, - {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, - {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, - {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, - {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, - {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, - {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, - {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, - {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, - {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, - {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10"}, + {file = "aiohttp-3.9.5-cp310-cp310-win32.whl", hash = "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb"}, + {file = "aiohttp-3.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, + {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da"}, + {file = "aiohttp-3.9.5-cp312-cp312-win32.whl", hash = "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59"}, + {file = "aiohttp-3.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe"}, + {file = "aiohttp-3.9.5-cp38-cp38-win32.whl", hash = "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da"}, + {file = "aiohttp-3.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-win32.whl", hash = "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09"}, + {file = "aiohttp-3.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1"}, + {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, ] [package.dependencies] @@ -274,20 +274,20 @@ aio = ["aiohttp (>=3.0)"] [[package]] name = "azure-identity" -version = "1.15.0" +version = "1.16.0" description = "Microsoft Azure Identity Library for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "azure-identity-1.15.0.tar.gz", hash = "sha256:4c28fc246b7f9265610eb5261d65931183d019a23d4b0e99357facb2e6c227c8"}, - {file = "azure_identity-1.15.0-py3-none-any.whl", hash = "sha256:a14b1f01c7036f11f148f22cd8c16e05035293d714458d6b44ddf534d93eb912"}, + {file = "azure-identity-1.16.0.tar.gz", hash = "sha256:6ff1d667cdcd81da1ceab42f80a0be63ca846629f518a922f7317a7e3c844e1b"}, + {file = "azure_identity-1.16.0-py3-none-any.whl", hash = "sha256:722fdb60b8fdd55fa44dc378b8072f4b419b56a5e54c0de391f644949f3a826f"}, ] [package.dependencies] -azure-core = ">=1.23.0,<2.0.0" +azure-core = ">=1.23.0" cryptography = ">=2.5" -msal = ">=1.24.0,<2.0.0" -msal-extensions = ">=0.3.0,<2.0.0" +msal = ">=1.24.0" +msal-extensions = ">=0.3.0" [[package]] name = "azure-storage-blob" @@ -1018,6 +1018,23 @@ files = [ {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, ] +[[package]] +name = "ewmhlib" +version = "0.2" +description = "Extended Window Manager Hints implementation in Python 3" +optional = false +python-versions = "*" +files = [ + {file = "EWMHlib-0.2-py3-none-any.whl", hash = "sha256:f5b07d8cfd4c7734462ee744c32d490f2f3233fa7ab354240069344208d2f6f5"}, +] + +[package.dependencies] +python-xlib = {version = ">=0.21", markers = "sys_platform == \"linux\""} +typing-extensions = ">=4.4.0" + +[package.extras] +dev = ["mypy (>=0.990)", "types-python-xlib (>=0.32)", "types-setuptools (>=65.5)"] + [[package]] name = "execnet" version = "2.1.1" @@ -1045,13 +1062,13 @@ files = [ [[package]] name = "filelock" -version = "3.13.3" +version = "3.13.4" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.13.3-py3-none-any.whl", hash = "sha256:5ffa845303983e7a0b7ae17636509bc97997d58afeafa72fb141a17b152284cb"}, - {file = "filelock-3.13.3.tar.gz", hash = "sha256:a79895a25bbefdf55d1a2a0a80968f7dbb28edcd6d4234a0afb3f37ecde4b546"}, + {file = "filelock-3.13.4-py3-none-any.whl", hash = "sha256:404e5e9253aa60ad457cae1be07c0f0ca90a63931200a47d9b6a6af84fd7b45f"}, + {file = "filelock-3.13.4.tar.gz", hash = "sha256:d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4"}, ] [package.extras] @@ -1564,13 +1581,13 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] [[package]] name = "identify" -version = "2.5.35" +version = "2.5.36" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, - {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, + {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, + {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, ] [package.extras] @@ -1578,13 +1595,13 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.6" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] @@ -2693,36 +2710,36 @@ reference = ["Pillow", "google-re2"] [[package]] name = "onnxruntime" -version = "1.17.1" +version = "1.17.3" description = "ONNX Runtime is a runtime accelerator for Machine Learning models" optional = false python-versions = "*" files = [ - {file = "onnxruntime-1.17.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d43ac17ac4fa3c9096ad3c0e5255bb41fd134560212dc124e7f52c3159af5d21"}, - {file = "onnxruntime-1.17.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55b5e92a4c76a23981c998078b9bf6145e4fb0b016321a8274b1607bd3c6bd35"}, - {file = "onnxruntime-1.17.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ebbcd2bc3a066cf54e6f18c75708eb4d309ef42be54606d22e5bdd78afc5b0d7"}, - {file = "onnxruntime-1.17.1-cp310-cp310-win32.whl", hash = "sha256:5e3716b5eec9092e29a8d17aab55e737480487deabfca7eac3cd3ed952b6ada9"}, - {file = "onnxruntime-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:fbb98cced6782ae1bb799cc74ddcbbeeae8819f3ad1d942a74d88e72b6511337"}, - {file = "onnxruntime-1.17.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:36fd6f87a1ecad87e9c652e42407a50fb305374f9a31d71293eb231caae18784"}, - {file = "onnxruntime-1.17.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99a8bddeb538edabc524d468edb60ad4722cff8a49d66f4e280c39eace70500b"}, - {file = "onnxruntime-1.17.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd7fddb4311deb5a7d3390cd8e9b3912d4d963efbe4dfe075edbaf18d01c024e"}, - {file = "onnxruntime-1.17.1-cp311-cp311-win32.whl", hash = "sha256:606a7cbfb6680202b0e4f1890881041ffc3ac6e41760a25763bd9fe146f0b335"}, - {file = "onnxruntime-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:53e4e06c0a541696ebdf96085fd9390304b7b04b748a19e02cf3b35c869a1e76"}, - {file = "onnxruntime-1.17.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:40f08e378e0f85929712a2b2c9b9a9cc400a90c8a8ca741d1d92c00abec60843"}, - {file = "onnxruntime-1.17.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac79da6d3e1bb4590f1dad4bb3c2979d7228555f92bb39820889af8b8e6bd472"}, - {file = "onnxruntime-1.17.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ae9ba47dc099004e3781f2d0814ad710a13c868c739ab086fc697524061695ea"}, - {file = "onnxruntime-1.17.1-cp312-cp312-win32.whl", hash = "sha256:2dff1a24354220ac30e4a4ce2fb1df38cb1ea59f7dac2c116238d63fe7f4c5ff"}, - {file = "onnxruntime-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:6226a5201ab8cafb15e12e72ff2a4fc8f50654e8fa5737c6f0bd57c5ff66827e"}, - {file = "onnxruntime-1.17.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:cd0c07c0d1dfb8629e820b05fda5739e4835b3b82faf43753d2998edf2cf00aa"}, - {file = "onnxruntime-1.17.1-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:617ebdf49184efa1ba6e4467e602fbfa029ed52c92f13ce3c9f417d303006381"}, - {file = "onnxruntime-1.17.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dae9071e3facdf2920769dceee03b71c684b6439021defa45b830d05e148924"}, - {file = "onnxruntime-1.17.1-cp38-cp38-win32.whl", hash = "sha256:835d38fa1064841679433b1aa8138b5e1218ddf0cfa7a3ae0d056d8fd9cec713"}, - {file = "onnxruntime-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:96621e0c555c2453bf607606d08af3f70fbf6f315230c28ddea91754e17ad4e6"}, - {file = "onnxruntime-1.17.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:7a9539935fb2d78ebf2cf2693cad02d9930b0fb23cdd5cf37a7df813e977674d"}, - {file = "onnxruntime-1.17.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45c6a384e9d9a29c78afff62032a46a993c477b280247a7e335df09372aedbe9"}, - {file = "onnxruntime-1.17.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4e19f966450f16863a1d6182a685ca33ae04d7772a76132303852d05b95411ea"}, - {file = "onnxruntime-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e2ae712d64a42aac29ed7a40a426cb1e624a08cfe9273dcfe681614aa65b07dc"}, - {file = "onnxruntime-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:f7e9f7fb049825cdddf4a923cfc7c649d84d63c0134315f8e0aa9e0c3004672c"}, + {file = "onnxruntime-1.17.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d86dde9c0bb435d709e51bd25991c9fe5b9a5b168df45ce119769edc4d198b15"}, + {file = "onnxruntime-1.17.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9d87b68bf931ac527b2d3c094ead66bb4381bac4298b65f46c54fe4d1e255865"}, + {file = "onnxruntime-1.17.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26e950cf0333cf114a155f9142e71da344d2b08dfe202763a403ae81cc02ebd1"}, + {file = "onnxruntime-1.17.3-cp310-cp310-win32.whl", hash = "sha256:0962a4d0f5acebf62e1f0bf69b6e0adf16649115d8de854c1460e79972324d68"}, + {file = "onnxruntime-1.17.3-cp310-cp310-win_amd64.whl", hash = "sha256:468ccb8a0faa25c681a41787b1594bf4448b0252d3efc8b62fd8b2411754340f"}, + {file = "onnxruntime-1.17.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e8cd90c1c17d13d47b89ab076471e07fb85467c01dcd87a8b8b5cdfbcb40aa51"}, + {file = "onnxruntime-1.17.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a058b39801baefe454eeb8acf3ada298c55a06a4896fafc224c02d79e9037f60"}, + {file = "onnxruntime-1.17.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f823d5eb4807007f3da7b27ca972263df6a1836e6f327384eb266274c53d05d"}, + {file = "onnxruntime-1.17.3-cp311-cp311-win32.whl", hash = "sha256:b66b23f9109e78ff2791628627a26f65cd335dcc5fbd67ff60162733a2f7aded"}, + {file = "onnxruntime-1.17.3-cp311-cp311-win_amd64.whl", hash = "sha256:570760ca53a74cdd751ee49f13de70d1384dcf73d9888b8deac0917023ccda6d"}, + {file = "onnxruntime-1.17.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:77c318178d9c16e9beadd9a4070d8aaa9f57382c3f509b01709f0f010e583b99"}, + {file = "onnxruntime-1.17.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23da8469049b9759082e22c41a444f44a520a9c874b084711b6343672879f50b"}, + {file = "onnxruntime-1.17.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2949730215af3f9289008b2e31e9bbef952012a77035b911c4977edea06f3f9e"}, + {file = "onnxruntime-1.17.3-cp312-cp312-win32.whl", hash = "sha256:6c7555a49008f403fb3b19204671efb94187c5085976ae526cb625f6ede317bc"}, + {file = "onnxruntime-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:58672cf20293a1b8a277a5c6c55383359fcdf6119b2f14df6ce3b140f5001c39"}, + {file = "onnxruntime-1.17.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:4395ba86e3c1e93c794a00619ef1aec597ab78f5a5039f3c6d2e9d0695c0a734"}, + {file = "onnxruntime-1.17.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdf354c04344ec38564fc22394e1fe08aa6d70d790df00159205a0055c4a4d3f"}, + {file = "onnxruntime-1.17.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a94b600b7af50e922d44b95a57981e3e35103c6e3693241a03d3ca204740bbda"}, + {file = "onnxruntime-1.17.3-cp38-cp38-win32.whl", hash = "sha256:5a335c76f9c002a8586c7f38bc20fe4b3725ced21f8ead835c3e4e507e42b2ab"}, + {file = "onnxruntime-1.17.3-cp38-cp38-win_amd64.whl", hash = "sha256:8f56a86fbd0ddc8f22696ddeda0677b041381f4168a2ca06f712ef6ec6050d6d"}, + {file = "onnxruntime-1.17.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:e0ae39f5452278cd349520c296e7de3e90d62dc5b0157c6868e2748d7f28b871"}, + {file = "onnxruntime-1.17.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ff2dc012bd930578aff5232afd2905bf16620815f36783a941aafabf94b3702"}, + {file = "onnxruntime-1.17.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf6c37483782e4785019b56e26224a25e9b9a35b849d0169ce69189867a22bb1"}, + {file = "onnxruntime-1.17.3-cp39-cp39-win32.whl", hash = "sha256:351bf5a1140dcc43bfb8d3d1a230928ee61fcd54b0ea664c8e9a889a8e3aa515"}, + {file = "onnxruntime-1.17.3-cp39-cp39-win_amd64.whl", hash = "sha256:57a3de15778da8d6cc43fbf6cf038e1e746146300b5f0b1fbf01f6f795dc6440"}, ] [package.dependencies] @@ -2929,44 +2946,44 @@ test = ["pylint (>=3.0.0,<3.1.0)", "pytest", "pytest-pylint"] [[package]] name = "pandas" -version = "2.2.1" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, - {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, - {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, - {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, - {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, - {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, - {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] -numpy = {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""} +numpy = {version = ">=1.23.2", markers = "python_version == \"3.11\""} python-dateutil = ">=2.8.2" pytz = ">=2020.1" tzdata = ">=2022.7" @@ -3113,13 +3130,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest- [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -3291,42 +3308,82 @@ pytweening = ">=1.0.4" [[package]] name = "pycapnp" -version = "1.3.0" +version = "2.0.0" description = "A cython wrapping of the C++ Cap'n Proto library" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "pycapnp-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1410e38d1cd1d08fb36c781e8a91b2044306d18775524dfd6c8a3b83e665f47f"}, - {file = "pycapnp-1.3.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:debb37f96db664c140e557855ba433ea59fdf714cff358a50a619e007387692b"}, - {file = "pycapnp-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:108582647317c0f3a52ab1c615333d48546cede475887ebf8a055d1d6f20f249"}, - {file = "pycapnp-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1451d131ae0715b840eda1d0c84ea3909b637ac28554a13e57c089aef09e4f36"}, - {file = "pycapnp-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c09d0ea8bc6d6d101a1642f4d9366d929cacd3966bc510a7cd5b14df2fa2986"}, - {file = "pycapnp-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f26bb24bd28db2a6f99b7d17178112103dedef0ee275204f705e86936513c240"}, - {file = "pycapnp-1.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:90c07b969d90d012d0d309ec4c44605ad2d8f91595dcdf8ccc1ee798bf723b77"}, - {file = "pycapnp-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70a9d155d0dc17d343f295ae2228fb0436af329eab941e3b6637d5f5a050616d"}, - {file = "pycapnp-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cb575ab47069f990dc353d0c12f62013b08d0c00ba10c1aebffdc3150abd292"}, - {file = "pycapnp-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ba3adae76801b1a4c7c0f96367bdd153286469c45223bf6b50057e5d077e5d2"}, - {file = "pycapnp-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc939f85720451b1d4a05603b127c0ae241e67fcc43121685b906aa3da08d624"}, - {file = "pycapnp-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:9d6af7aba49eda201243b0fbcb410b3a8a789a2f7b86adafbde7e95234a07e85"}, - {file = "pycapnp-1.3.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:32e56829e05fc54e14a8b40076d0a0958acef835379c6e39c26648cb754b9011"}, - {file = "pycapnp-1.3.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f9d29bf65a5fb6cca1d0ed56cd2b0e6b1f63d47af72dfced80bbf6a8315aa2ae"}, - {file = "pycapnp-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8389da70ff8c4008a0aabcdbf04e272aebb0c71476bc29cb7fbefb9ae579c947"}, - {file = "pycapnp-1.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:432b9d49bde68eca83b10f04791c65dc9a2070afcbd406703c4f4a073f02061c"}, - {file = "pycapnp-1.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cda76deffa45e567354234d2c21e084251dc270ba226e8d9863406c54e9cb87f"}, - {file = "pycapnp-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e351748b9a1bc3e6379183a24e1e68ecf4f76943872f63c8d42f206523b78cbb"}, - {file = "pycapnp-1.3.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:ff4a67282af21fb6a16b99f7d2397c4c6462b3a59b9b751e6860ccfb5c838398"}, - {file = "pycapnp-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f6f011ce96049cff07502e76d91e2a037234aa89bd4fc299c95e403797a73dae"}, - {file = "pycapnp-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b02fd11a155aca4e1b507bc7bd91963ec9a7695d5235837229d105d920385514"}, - {file = "pycapnp-1.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0bfdbae7344835c287be2ca9f3e9fdf8f208941933fb77f6252a937917347de"}, - {file = "pycapnp-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa7d2e0c22fb4f1c7bf44630170ba06df4e1fb47f0977df1d5fe425dc74ce354"}, - {file = "pycapnp-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b82d5c2ed388157b01ae7fbf754fd677d069150336ee74d6f286936af8ce0f18"}, - {file = "pycapnp-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02acfc8d94ed0c2e1b68cde6c845149b5c89eb4c5a71c7fe4978a70370cb17b5"}, - {file = "pycapnp-1.3.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9333029a4c4f71942666ee1eb051740c38c27b034eca4c73d09f26217e2b2dc4"}, - {file = "pycapnp-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:886c09a5802b3ec232a8cd64f44c092bbf3daa1c0ff66942f1f6b9943a71a909"}, - {file = "pycapnp-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:77c95991b4fc30fd336e3cbed4ffd3fb23aa647427bc96cafd0f77ec5b046766"}, - {file = "pycapnp-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:223f600854f46009715231237a02c18a6e5b28492c0976d6602c0d73021c9d3a"}, - {file = "pycapnp-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:45e52d201d4d2ae9ee3290cae8f62c1af982ca2d7a7eaa0b58f53ada9a07c877"}, - {file = "pycapnp-1.3.0.tar.gz", hash = "sha256:7cf514c3068064e593d0401503f7a623c24c55776702a7a2d9cad9854710aa56"}, + {file = "pycapnp-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12fc023da9acd062884c9b394113457908b3c5e26aeb85f668b59c0e84b7b150"}, + {file = "pycapnp-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c8f5e4e68a1b59ae73cd77550b95f8719aea624aa424cd77aa193c6d45ea97ab"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50ff7f45d77dc2ef0c44a0aef41f37433a0c395b6a1db99b7e6f45e0e9237bd4"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc68ef3d80d9e7e9b96ba2077d8e2effd42f936bda1024f1aedc05022c9401bb"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74a75e5c190e4d722aa0d2702bd04fedc2cb8e0a893031813e7a50cc067a054a"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db1bc53cbe5222f4fd0748ba6b53da9ec58e8f7b2219dc9cd50d15266a3fa85c"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0509ef856239634be21375cbad73dc7cf7fdfb32c03c312ad41e994f0674f7"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:48372a19b59e8d533768c12988a92af4ea6c2daa1a8ba1c42202cd0dd24a1d24"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:46c16a98cec9ae6dce5ebf488bb0c8425484d7710eed1ee008a26b60470ee755"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:be91cdb7895c4e2f1e1cd6b701ed66050c285d2c228f476a775bfd76bbd697f1"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:21db83e5f0c3a944b567cd20e4df47dba023e936a45d7057f2a615b8c19356f8"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:825a8a86e034d66d8df8d82b7bf9fdd3f344bd84ff43a838ec08f08fe7461be0"}, + {file = "pycapnp-2.0.0-cp310-cp310-win32.whl", hash = "sha256:13ff9dca5741079d7bbe4e2512634b8ce859b709a1b126481eed404bda0b3d4a"}, + {file = "pycapnp-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:279d9f7c34527d15a62dde0dfc82cb918ed0a900dfa9713960d64bed3f9236a4"}, + {file = "pycapnp-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:829c7eb4e5f23dbcac25466110faf72a691035cf87c5d46e5053da15790e428d"}, + {file = "pycapnp-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dab60fbe3e4eaf99ec97918a0a776216c6c149b6d49261383d91c2201adb475d"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c48a0582078bb74d7326d28571db0b8e6919563365537a5a13e8f5360c12bfc"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb5ab54aff857e3711d2c0cc934194aaffacdeb3481daa56863daef07d27941"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9600778036e6fe9dbea68f0c37678c5f4d561d2f2306b3cb741de5e1670ef2ae"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7278ba0262fab8c398e77d634ae7ba026866d44b52cbfc27262be8d396ecacd1"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b2458d43c82302980a96518c96df257429204d2cc02bfff0c8cb6ebb371e01"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dd7755cc3fedc2ad8cc7864a0729471ddeff10c184963fe0f3689e295130f1b2"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d47baf6b3db9981625ffc5ff188e089f2ebca8e7e1afb97aa5eb7bebb7bf3650"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b375be92d93fdb6f7ac127ea9390bcec0fed4e485db137b084f9e7114dde7c83"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:959bfdf1cddb3e5528e2293c4a375382be9a1bf044b073bc2e7eca1eb6b3a9a2"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d873af167cf5cc7578ce5432eefcb442f866c8f7a6c57d188baf8c5e709fa39d"}, + {file = "pycapnp-2.0.0-cp311-cp311-win32.whl", hash = "sha256:40ca8018e0b7686d549b920f087049b92a3e6f06976d9f5a8112603fc560cac4"}, + {file = "pycapnp-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:d15cd8e46d541a899c84809095d7d7b3951f43642d1859e7a39bd91910778479"}, + {file = "pycapnp-2.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0c111ef96676df25b8afef98f369d45f838ad4434e2898e48199eb43ef704efe"}, + {file = "pycapnp-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0d18906eb1fd1b9f206d93a9591ceedce1d52e7766b66e68f271453f104e9dca"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5d1ed365ab1beabb8838068907a7190cc0b6f16de3499d783627e670fcc0eb2"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:495b39a7aa2629931bbca27ad743ce591c6c41e8f81792276be424742d9cd1c1"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50e814fbde072dcc3d868b5b5cbb9b7a66a70bff9ad03942f3be9baf3ca1cfc6"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:920fdda62d5fdef7a48339104dff0ceb9dcc21b138491f854457ba3a3d4d63ec"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f9142eb4714c152b09dda0b055ea9dd43fd8fd894132e7eb4fa235fb4915edd"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c98f1d0c4d32109d03e42828ce3c65236afc895033633cbed3ca092993702e7b"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4d3250c1875a309d67551843cd8bf3c5e7fccf159b7f5c118a92aee36c0e871c"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:174e6babe01f5507111c0ed226cd0b5e9325a9d2850751cfe4a57c1670f13881"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:ed38ece414341285695526792e020f391f29f5064b2126d0367c8bdeef28e3e9"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8a20b7dc55ef83a1fa446bf12680bce25caeb8f81788b623b072c3ec820db50d"}, + {file = "pycapnp-2.0.0-cp312-cp312-win32.whl", hash = "sha256:145eea66233fb5ac9152cd1c06b999ddb691815126f87f5cc37b9cda5d569f8a"}, + {file = "pycapnp-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:b8b03000769b29b36a8810f458b931f0f706f42027ee6676821eff28092d7734"}, + {file = "pycapnp-2.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6b1d547af10ecf4a3da25143c71ce64a3b0817bf229c560c9f9729d355c3b48d"}, + {file = "pycapnp-2.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecbbdbc2251d5e9d16148601e224ffaf9612d07751af72496472a3e285a1baed"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8158ebb967f7b103d2d5514d6a8cc643b1744cc8e14e14a5c19697507719de7b"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:999068b371fd4f21dddfff97640609f325cd8498c2a9d6a6c253164466628ba0"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb46a9191a64ce532f82800e6885abe61e63ae4f612ed1d98c7a493dd6ee6d2b"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fe49a1be55fb01f794434bab42643de7b4e37e774c3d63635f4a9ca9064437e"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ab6c94687908003fced23ce8c415d85e521e923b0bcbcc5323bac66d14911d5"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a5b814578f4f29c787deef30226c54f11188caef9b375776e8b1d73649e4119"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f169bdc0a683f1cb716c1ab83c5028e75d7bf34674c00b302ca1ebf66e0d27ca"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:5f348f8487df6a67891684e3c9c6476930fbb09258fe33f96c9bbdc4c51e6d4e"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:57940b9898d8b2565671bdf8d8aa67e6b91c3ba879594b58287134ee20b242c7"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:68a8d2ae0c078df11a5dbf2d2b5b5d48c3893584fe9bb6fa9b88dd6eadf65dda"}, + {file = "pycapnp-2.0.0-cp38-cp38-win32.whl", hash = "sha256:81bbaf65c70dfbe8bc67ea715778bd764f4b1126fd905c0778ab6fd4e358f8f4"}, + {file = "pycapnp-2.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:34acb733c3a4a2a13607f0d905f776d4567d0c9697e5a9865035d38d3b4fb53b"}, + {file = "pycapnp-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:87931c9322679c733bd522a0d73704d804d6531a8a5258fd8ec65930bf89f2dd"}, + {file = "pycapnp-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7d08748e55f0f49c86f0a1e2c0f96c4e6880c1c8fd5df98c12c3eae557aa441"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ffd25a63c92f0ef85bccabc7c2c13fe6da7eadf5525025d49206d967afb670d"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8b9b9ea78df282f5ce63ccd435b83b83aabb931807066e84d967444ea005571"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:829b071216ae51c2ea55fd41476adaf3044a303038399276bdba6144b58157c0"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16b78b58969924dd499c7c24627cf392368a3354fcc900667fcabda2621d8250"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a365a7dff8cb05145616aecc04ea73ed493cd630c10d7ef67d833347ba264b6"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:82ebe35487dcb8061e2f80403d29c20686d1d539562162f1658d36ef43e38cfa"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f496c59face3195f32a50df141a7a042cd3504bd4da123c5dced096eae76699d"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f2ed0033b56b1836a8b99de11b939d93aa93d01f5d52650da65447f4f3c03e21"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d66097f70b0a0bff5d9431b117d359a0abe46c73ac0eb3b64ad252cf7e99d780"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:245942fe441d5e7a6511110ddea44ea91f0544385ef8afbef7155bec4aaa266f"}, + {file = "pycapnp-2.0.0-cp39-cp39-win32.whl", hash = "sha256:1bcbb55fc12ff41d5e456991e9d4d368ca26ba11c65c41bd384f4edf1307b6f7"}, + {file = "pycapnp-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:d4bee40372c02bcce647084faa6a831d9884a80033f77c7aacbaac697c4bbe46"}, + {file = "pycapnp-2.0.0.tar.gz", hash = "sha256:503ab9b7b16773590ee226f2460408972c6b1c2cb2d819037115b919bef682be"}, ] [[package]] @@ -3552,22 +3609,23 @@ dev = ["coverage[toml] (>=7.2.2)"] [[package]] name = "pymonctl" -version = "0.7" +version = "0.92" description = "Cross-Platform toolkit to get info on and control monitors connected" optional = false python-versions = "*" files = [ - {file = "PyMonCtl-0.7-py3-none-any.whl", hash = "sha256:20c1f7f4cf46ff3349fa60d4e63c4ac300a2b907c0d984a1dd64d452b85ea781"}, + {file = "PyMonCtl-0.92-py3-none-any.whl", hash = "sha256:2495d8dab78f9a7dbce37e74543e60b8bd404a35c3108935697dda7768611b5a"}, ] [package.dependencies] +ewmhlib = {version = ">=0.1", markers = "sys_platform == \"linux\""} pyobjc = {version = ">=8.1", markers = "sys_platform == \"darwin\""} python-xlib = {version = ">=0.21", markers = "sys_platform == \"linux\""} pywin32 = {version = ">=302", markers = "sys_platform == \"win32\""} typing-extensions = ">=4.4.0" [package.extras] -dev = ["mypy (>=0.990)", "types-python-xlib (>=0.32)", "types-pywin32 (>=305.0.0.3)", "types-setuptools (>=65.5)"] +dev = ["mypy (>=0.990)", "pywinctl (>=0.3)", "types-python-xlib (>=0.32)", "types-pywin32 (>=305.0.0.3)", "types-setuptools (>=65.5)"] [[package]] name = "pymsgbox" @@ -6791,22 +6849,23 @@ files = [ [[package]] name = "pywinbox" -version = "0.6" +version = "0.7" description = "Cross-Platform and multi-monitor toolkit to handle rectangular areas and windows box" optional = false python-versions = "*" files = [ - {file = "PyWinBox-0.6-py3-none-any.whl", hash = "sha256:3547e459caf466d3beb2230b02208a348478428ebca61ce3e004fb5468976f33"}, + {file = "PyWinBox-0.7-py3-none-any.whl", hash = "sha256:8b2506a8dd7afa0a910b368762adfac885274132ef9151b0c81b0d2c6ffd6f83"}, ] [package.dependencies] +ewmhlib = {version = ">=0.1", markers = "sys_platform == \"linux\""} pyobjc = {version = ">=8.1", markers = "sys_platform == \"darwin\""} python-xlib = {version = ">=0.21", markers = "sys_platform == \"linux\""} pywin32 = {version = ">=302", markers = "sys_platform == \"win32\""} typing-extensions = ">=4.4.0" [package.extras] -dev = ["mypy (>=0.990)", "pywinctl (>=0.1)", "types-python-xlib (>=0.32)", "types-pywin32 (>=305.0.0.3)", "types-setuptools (>=65.5)"] +dev = ["mypy (>=0.990)", "pywinctl (>=0.3)", "types-python-xlib (>=0.32)", "types-pywin32 (>=305.0.0.3)", "types-setuptools (>=65.5)"] [[package]] name = "pywinctl" @@ -6891,104 +6950,99 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.2" +version = "26.0.2" description = "Python bindings for 0MQ" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, - {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, - {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, - {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, - {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, - {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, - {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, - {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, - {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, - {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, - {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, - {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, - {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, + {file = "pyzmq-26.0.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:1a60a03b01e8c9c58932ec0cca15b1712d911c2800eb82d4281bc1ae5b6dad50"}, + {file = "pyzmq-26.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:949067079e14ea1973bd740255e0840118c163d4bce8837f539d749f145cf5c3"}, + {file = "pyzmq-26.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37e7edfa6cf96d036a403775c96afa25058d1bb940a79786a9a2fc94a783abe3"}, + {file = "pyzmq-26.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:903cc7a84a7d4326b43755c368780800e035aa3d711deae84a533fdffa8755b0"}, + {file = "pyzmq-26.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cb2e41af165e5f327d06fbdd79a42a4e930267fade4e9f92d17f3ccce03f3a7"}, + {file = "pyzmq-26.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:55353b8189adcfc4c125fc4ce59d477744118e9c0ec379dd0999c5fa120ac4f5"}, + {file = "pyzmq-26.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f961423ff6236a752ced80057a20e623044df95924ed1009f844cde8b3a595f9"}, + {file = "pyzmq-26.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ba77fe84fe4f5f3dc0ef681a6d366685c8ffe1c8439c1d7530997b05ac06a04b"}, + {file = "pyzmq-26.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:52589f0a745ef61b9c75c872cf91f8c1f7c0668eb3dd99d7abd639d8c0fb9ca7"}, + {file = "pyzmq-26.0.2-cp310-cp310-win32.whl", hash = "sha256:b7b6d2a46c7afe2ad03ec8faf9967090c8ceae85c4d8934d17d7cae6f9062b64"}, + {file = "pyzmq-26.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:86531e20de249d9204cc6d8b13d5a30537748c78820215161d8a3b9ea58ca111"}, + {file = "pyzmq-26.0.2-cp310-cp310-win_arm64.whl", hash = "sha256:f26a05029ecd2bd306b941ff8cb80f7620b7901421052bc429d238305b1cbf2f"}, + {file = "pyzmq-26.0.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:70770e296a9cb03d955540c99360aab861cbb3cba29516abbd106a15dbd91268"}, + {file = "pyzmq-26.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2740fd7161b39e178554ebf21aa5667a1c9ef0cd2cb74298fd4ef017dae7aec4"}, + {file = "pyzmq-26.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5e3706c32dea077faa42b1c92d825b7f86c866f72532d342e0be5e64d14d858"}, + {file = "pyzmq-26.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fa1416876194927f7723d6b7171b95e1115602967fc6bfccbc0d2d51d8ebae1"}, + {file = "pyzmq-26.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ef9a79a48794099c57dc2df00340b5d47c5caa1792f9ddb8c7a26b1280bd575"}, + {file = "pyzmq-26.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1c60fcdfa3229aeee4291c5d60faed3a813b18bdadb86299c4bf49e8e51e8605"}, + {file = "pyzmq-26.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e943c39c206b04df2eb5d71305761d7c3ca75fd49452115ea92db1b5b98dbdef"}, + {file = "pyzmq-26.0.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8da0ed8a598693731c76659880a668f4748b59158f26ed283a93f7f04d47447e"}, + {file = "pyzmq-26.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bf51970b11d67096bede97cdbad0f4333f7664f4708b9b2acb352bf4faa3140"}, + {file = "pyzmq-26.0.2-cp311-cp311-win32.whl", hash = "sha256:6f8e6bd5d066be605faa9fe5ec10aa1a46ad9f18fc8646f2b9aaefc8fb575742"}, + {file = "pyzmq-26.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:6d03da3a0ae691b361edcb39530075461202f699ce05adbb15055a0e1c9bcaa4"}, + {file = "pyzmq-26.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:f84e33321b68ff00b60e9dbd1a483e31ab6022c577c8de525b8e771bd274ce68"}, + {file = "pyzmq-26.0.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:44c33ebd1c62a01db7fbc24e18bdda569d6639217d13d5929e986a2b0f69070d"}, + {file = "pyzmq-26.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ac04f904b4fce4afea9cdccbb78e24d468cb610a839d5a698853e14e2a3f9ecf"}, + {file = "pyzmq-26.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2133de5ba9adc5f481884ccb699eac9ce789708292945c05746880f95b241c0"}, + {file = "pyzmq-26.0.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7753c67c570d7fc80c2dc59b90ca1196f1224e0e2e29a548980c95fe0fe27fc1"}, + {file = "pyzmq-26.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d4e51632e6b12e65e8d9d7612446ecda2eda637a868afa7bce16270194650dd"}, + {file = "pyzmq-26.0.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d6c38806f6ecd0acf3104b8d7e76a206bcf56dadd6ce03720d2fa9d9157d5718"}, + {file = "pyzmq-26.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:48f496bbe14686b51cec15406323ae6942851e14022efd7fc0e2ecd092c5982c"}, + {file = "pyzmq-26.0.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e84a3161149c75bb7a7dc8646384186c34033e286a67fec1ad1bdedea165e7f4"}, + {file = "pyzmq-26.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:dabf796c67aa9f5a4fcc956d47f0d48b5c1ed288d628cf53aa1cf08e88654343"}, + {file = "pyzmq-26.0.2-cp312-cp312-win32.whl", hash = "sha256:3eee4c676af1b109f708d80ef0cf57ecb8aaa5900d1edaf90406aea7e0e20e37"}, + {file = "pyzmq-26.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:26721fec65846b3e4450dad050d67d31b017f97e67f7e0647b5f98aa47f828cf"}, + {file = "pyzmq-26.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:653955c6c233e90de128a1b8e882abc7216f41f44218056bd519969c8c413a15"}, + {file = "pyzmq-26.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:becd8d8fb068fbb5a52096efd83a2d8e54354383f691781f53a4c26aee944542"}, + {file = "pyzmq-26.0.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7a15e5465e7083c12517209c9dd24722b25e9b63c49a563922922fc03554eb35"}, + {file = "pyzmq-26.0.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e8158ac8616941f874841f9fa0f6d2f1466178c2ff91ea08353fdc19de0d40c2"}, + {file = "pyzmq-26.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c6a53e28c7066ea7db86fcc0b71d78d01b818bb11d4a4341ec35059885295"}, + {file = "pyzmq-26.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bdbc7dab0b0e9c62c97b732899c4242e3282ba803bad668e03650b59b165466e"}, + {file = "pyzmq-26.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e74b6d5ef57bb65bf1b4a37453d8d86d88550dde3fb0f23b1f1a24e60c70af5b"}, + {file = "pyzmq-26.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ed4c6ee624ecbc77b18aeeb07bf0700d26571ab95b8f723f0d02e056b5bce438"}, + {file = "pyzmq-26.0.2-cp37-cp37m-win32.whl", hash = "sha256:8a98b3cb0484b83c19d8fb5524c8a469cd9f10e743f5904ac285d92678ee761f"}, + {file = "pyzmq-26.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:aa5f95d71b6eca9cec28aa0a2f8310ea53dea313b63db74932879ff860c1fb8d"}, + {file = "pyzmq-26.0.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:5ff56c76ce77b9805378a7a73032c17cbdb1a5b84faa1df03c5d3e306e5616df"}, + {file = "pyzmq-26.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bab697fc1574fee4b81da955678708567c43c813c84c91074e452bda5346c921"}, + {file = "pyzmq-26.0.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0c0fed8aa9ba0488ee1cbdaa304deea92d52fab43d373297002cfcc69c0a20c5"}, + {file = "pyzmq-26.0.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:606b922699fcec472ed814dda4dc3ff7c748254e0b26762a0ba21a726eb1c107"}, + {file = "pyzmq-26.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45f0fd82bad4d199fa993fbf0ac586a7ac5879addbe436a35a389df7e0eb4c91"}, + {file = "pyzmq-26.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:166c5e41045939a52c01e6f374e493d9a6a45dfe677360d3e7026e38c42e8906"}, + {file = "pyzmq-26.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d566e859e8b8d5bca08467c093061774924b3d78a5ba290e82735b2569edc84b"}, + {file = "pyzmq-26.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:264ee0e72b72ca59279dc320deab5ae0fac0d97881aed1875ce4bde2e56ffde0"}, + {file = "pyzmq-26.0.2-cp38-cp38-win32.whl", hash = "sha256:3152bbd3a4744cbdd83dfb210ed701838b8b0c9065cef14671d6d91df12197d0"}, + {file = "pyzmq-26.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:bf77601d75ca692c179154b7e5943c286a4aaffec02c491afe05e60493ce95f2"}, + {file = "pyzmq-26.0.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:c770a7545b3deca2db185b59175e710a820dd4ed43619f4c02e90b0e227c6252"}, + {file = "pyzmq-26.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d47175f0a380bfd051726bc5c0054036ae4a5d8caf922c62c8a172ccd95c1a2a"}, + {file = "pyzmq-26.0.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bce298c1ce077837e110367c321285dc4246b531cde1abfc27e4a5bbe2bed4d"}, + {file = "pyzmq-26.0.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c40b09b7e184d6e3e1be1c8af2cc320c0f9f610d8a5df3dd866e6e6e4e32b235"}, + {file = "pyzmq-26.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d420d856bf728713874cefb911398efe69e1577835851dd297a308a78c14c249"}, + {file = "pyzmq-26.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d792d3cab987058451e55c70c5926e93e2ceb68ca5a2334863bb903eb860c9cb"}, + {file = "pyzmq-26.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:83ec17729cf6d3464dab98a11e98294fcd50e6b17eaabd3d841515c23f6dbd3a"}, + {file = "pyzmq-26.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47c17d5ebfa88ae90f08960c97b49917098665b8cd8be31f2c24e177bcf37a0f"}, + {file = "pyzmq-26.0.2-cp39-cp39-win32.whl", hash = "sha256:d509685d1cd1d018705a811c5f9d5bc237790936ead6d06f6558b77e16cc7235"}, + {file = "pyzmq-26.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:c7cc8cc009e8f6989a6d86c96f87dae5f5fb07d6c96916cdc7719d546152c7db"}, + {file = "pyzmq-26.0.2-cp39-cp39-win_arm64.whl", hash = "sha256:3ada31cb879cd7532f4a85b501f4255c747d4813ab76b35c49ed510ce4865b45"}, + {file = "pyzmq-26.0.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0a6ceaddc830dd3ca86cb8451cf373d1f05215368e11834538c2902ed5205139"}, + {file = "pyzmq-26.0.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a967681463aa7a99eb9a62bb18229b653b45c10ff0947b31cc0837a83dfb86f"}, + {file = "pyzmq-26.0.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6472a73bc115bc40a2076609a90894775abe6faf19a78375675a2f889a613071"}, + {file = "pyzmq-26.0.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d6aea92bcccfe5e5524d3c70a6f16ffdae548390ddad26f4207d55c55a40593"}, + {file = "pyzmq-26.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e025f6351e49d48a5aa2f5a09293aa769b0ee7369c25bed551647234b7fa0c75"}, + {file = "pyzmq-26.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:40bd7ebe4dbb37d27f0c56e2a844f360239343a99be422085e13e97da13f73f9"}, + {file = "pyzmq-26.0.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dd40d586ad6f53764104df6e01810fe1b4e88fd353774629a5e6fe253813f79"}, + {file = "pyzmq-26.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f2aca15e9ad8c8657b5b3d7ae3d1724dc8c1c1059c06b4b674c3aa36305f4930"}, + {file = "pyzmq-26.0.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:450ec234736732eb0ebeffdb95a352450d4592f12c3e087e2a9183386d22c8bf"}, + {file = "pyzmq-26.0.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f43be2bebbd09360a2f23af83b243dc25ffe7b583ea8c722e6df03e03a55f02f"}, + {file = "pyzmq-26.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:867f55e54aff254940bcec5eec068e7c0ac1e6bf360ab91479394a8bf356b0e6"}, + {file = "pyzmq-26.0.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b4dbc033c5ad46f8c429bf238c25a889b8c1d86bfe23a74e1031a991cb3f0000"}, + {file = "pyzmq-26.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6e8dd2961462e337e21092ec2da0c69d814dcb1b6e892955a37444a425e9cfb8"}, + {file = "pyzmq-26.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35391e72df6c14a09b697c7b94384947c1dd326aca883ff98ff137acdf586c33"}, + {file = "pyzmq-26.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:1c3d3c92fa54eda94ab369ca5b8d35059987c326ba5e55326eb068862f64b1fc"}, + {file = "pyzmq-26.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7aa61a9cc4f0523373e31fc9255bf4567185a099f85ca3598e64de484da3ab2"}, + {file = "pyzmq-26.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee53a8191271f144cc20b12c19daa9f1546adc84a2f33839e3338039b55c373c"}, + {file = "pyzmq-26.0.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac60a980f07fa988983f7bfe6404ef3f1e4303f5288a01713bc1266df6d18783"}, + {file = "pyzmq-26.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88896b1b4817d7b2fe1ec7205c4bbe07bf5d92fb249bf2d226ddea8761996068"}, + {file = "pyzmq-26.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:18dfffe23751edee917764ffa133d5d3fef28dfd1cf3adebef8c90bc854c74c4"}, + {file = "pyzmq-26.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6926dd14cfe6967d3322640b6d5c3c3039db71716a5e43cca6e3b474e73e0b36"}, + {file = "pyzmq-26.0.2.tar.gz", hash = "sha256:f0f9bb370449158359bb72a3e12c658327670c0ffe6fbcd1af083152b64f9df0"}, ] [package.dependencies] @@ -7032,28 +7086,28 @@ docs = ["furo (==2024.1.29)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx [[package]] name = "ruff" -version = "0.3.5" +version = "0.4.1" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.3.5-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:aef5bd3b89e657007e1be6b16553c8813b221ff6d92c7526b7e0227450981eac"}, - {file = "ruff-0.3.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:89b1e92b3bd9fca249153a97d23f29bed3992cff414b222fcd361d763fc53f12"}, - {file = "ruff-0.3.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e55771559c89272c3ebab23326dc23e7f813e492052391fe7950c1a5a139d89"}, - {file = "ruff-0.3.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dabc62195bf54b8a7876add6e789caae0268f34582333cda340497c886111c39"}, - {file = "ruff-0.3.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a05f3793ba25f194f395578579c546ca5d83e0195f992edc32e5907d142bfa3"}, - {file = "ruff-0.3.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:dfd3504e881082959b4160ab02f7a205f0fadc0a9619cc481982b6837b2fd4c0"}, - {file = "ruff-0.3.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87258e0d4b04046cf1d6cc1c56fadbf7a880cc3de1f7294938e923234cf9e498"}, - {file = "ruff-0.3.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:712e71283fc7d9f95047ed5f793bc019b0b0a29849b14664a60fd66c23b96da1"}, - {file = "ruff-0.3.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a532a90b4a18d3f722c124c513ffb5e5eaff0cc4f6d3aa4bda38e691b8600c9f"}, - {file = "ruff-0.3.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:122de171a147c76ada00f76df533b54676f6e321e61bd8656ae54be326c10296"}, - {file = "ruff-0.3.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d80a6b18a6c3b6ed25b71b05eba183f37d9bc8b16ace9e3d700997f00b74660b"}, - {file = "ruff-0.3.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a7b6e63194c68bca8e71f81de30cfa6f58ff70393cf45aab4c20f158227d5936"}, - {file = "ruff-0.3.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a759d33a20c72f2dfa54dae6e85e1225b8e302e8ac655773aff22e542a300985"}, - {file = "ruff-0.3.5-py3-none-win32.whl", hash = "sha256:9d8605aa990045517c911726d21293ef4baa64f87265896e491a05461cae078d"}, - {file = "ruff-0.3.5-py3-none-win_amd64.whl", hash = "sha256:dc56bb16a63c1303bd47563c60482a1512721053d93231cf7e9e1c6954395a0e"}, - {file = "ruff-0.3.5-py3-none-win_arm64.whl", hash = "sha256:faeeae9905446b975dcf6d4499dc93439b131f1443ee264055c5716dd947af55"}, - {file = "ruff-0.3.5.tar.gz", hash = "sha256:a067daaeb1dc2baf9b82a32dae67d154d95212080c80435eb052d95da647763d"}, + {file = "ruff-0.4.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2d9ef6231e3fbdc0b8c72404a1a0c46fd0dcea84efca83beb4681c318ea6a953"}, + {file = "ruff-0.4.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9485f54a7189e6f7433e0058cf8581bee45c31a25cd69009d2a040d1bd4bfaef"}, + {file = "ruff-0.4.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2921ac03ce1383e360e8a95442ffb0d757a6a7ddd9a5be68561a671e0e5807e"}, + {file = "ruff-0.4.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eec8d185fe193ad053eda3a6be23069e0c8ba8c5d20bc5ace6e3b9e37d246d3f"}, + {file = "ruff-0.4.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa27d9d72a94574d250f42b7640b3bd2edc4c58ac8ac2778a8c82374bb27984"}, + {file = "ruff-0.4.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f1ee41580bff1a651339eb3337c20c12f4037f6110a36ae4a2d864c52e5ef954"}, + {file = "ruff-0.4.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0926cefb57fc5fced629603fbd1a23d458b25418681d96823992ba975f050c2b"}, + {file = "ruff-0.4.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6e37f2e3cd74496a74af9a4fa67b547ab3ca137688c484749189bf3a686ceb"}, + {file = "ruff-0.4.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd703a5975ac1998c2cc5e9494e13b28f31e66c616b0a76e206de2562e0843c"}, + {file = "ruff-0.4.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b92f03b4aa9fa23e1799b40f15f8b95cdc418782a567d6c43def65e1bbb7f1cf"}, + {file = "ruff-0.4.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1c859f294f8633889e7d77de228b203eb0e9a03071b72b5989d89a0cf98ee262"}, + {file = "ruff-0.4.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b34510141e393519a47f2d7b8216fec747ea1f2c81e85f076e9f2910588d4b64"}, + {file = "ruff-0.4.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6e68d248ed688b9d69fd4d18737edcbb79c98b251bba5a2b031ce2470224bdf9"}, + {file = "ruff-0.4.1-py3-none-win32.whl", hash = "sha256:b90506f3d6d1f41f43f9b7b5ff845aeefabed6d2494307bc7b178360a8805252"}, + {file = "ruff-0.4.1-py3-none-win_amd64.whl", hash = "sha256:c7d391e5936af5c9e252743d767c564670dc3889aff460d35c518ee76e4b26d7"}, + {file = "ruff-0.4.1-py3-none-win_arm64.whl", hash = "sha256:a1eaf03d87e6a7cd5e661d36d8c6e874693cb9bc3049d110bc9a97b350680c43"}, + {file = "ruff-0.4.1.tar.gz", hash = "sha256:d592116cdbb65f8b1b7e2a2b48297eb865f6bdc20641879aa9d7b9c11d86db79"}, ] [[package]] @@ -7132,13 +7186,13 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "1.44.1" +version = "1.45.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.44.1.tar.gz", hash = "sha256:24e6a53eeabffd2f95d952aa35ca52f0f4201d17f820ac9d3ff7244c665aaf68"}, - {file = "sentry_sdk-1.44.1-py2.py3-none-any.whl", hash = "sha256:5f75eb91d8ab6037c754a87b8501cc581b2827e923682f593bed3539ce5b3999"}, + {file = "sentry-sdk-1.45.0.tar.gz", hash = "sha256:509aa9678c0512344ca886281766c2e538682f8acfa50fd8d405f8c417ad0625"}, + {file = "sentry_sdk-1.45.0-py2.py3-none-any.whl", hash = "sha256:1ce29e30240cc289a027011103a8c83885b15ef2f316a60bcc7c5300afa144f1"}, ] [package.dependencies] @@ -7279,72 +7333,72 @@ test = ["pytest"] [[package]] name = "setuptools" -version = "69.2.0" +version = "69.5.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shapely" -version = "2.0.3" +version = "2.0.4" description = "Manipulation and analysis of geometric objects" optional = false python-versions = ">=3.7" files = [ - {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:af7e9abe180b189431b0f490638281b43b84a33a960620e6b2e8d3e3458b61a1"}, - {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98040462b36ced9671e266b95c326b97f41290d9d17504a1ee4dc313a7667b9c"}, - {file = "shapely-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:71eb736ef2843f23473c6e37f6180f90f0a35d740ab284321548edf4e55d9a52"}, - {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:881eb9dbbb4a6419667e91fcb20313bfc1e67f53dbb392c6840ff04793571ed1"}, - {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f10d2ccf0554fc0e39fad5886c839e47e207f99fdf09547bc687a2330efda35b"}, - {file = "shapely-2.0.3-cp310-cp310-win32.whl", hash = "sha256:6dfdc077a6fcaf74d3eab23a1ace5abc50c8bce56ac7747d25eab582c5a2990e"}, - {file = "shapely-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:64c5013dacd2d81b3bb12672098a0b2795c1bf8190cfc2980e380f5ef9d9e4d9"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:56cee3e4e8159d6f2ce32e421445b8e23154fd02a0ac271d6a6c0b266a8e3cce"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:619232c8276fded09527d2a9fd91a7885ff95c0ff9ecd5e3cb1e34fbb676e2ae"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2a7d256db6f5b4b407dc0c98dd1b2fcf1c9c5814af9416e5498d0a2e4307a4b"}, - {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45f0c8cd4583647db3216d965d49363e6548c300c23fd7e57ce17a03f824034"}, - {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13cb37d3826972a82748a450328fe02a931dcaed10e69a4d83cc20ba021bc85f"}, - {file = "shapely-2.0.3-cp311-cp311-win32.whl", hash = "sha256:9302d7011e3e376d25acd30d2d9e70d315d93f03cc748784af19b00988fc30b1"}, - {file = "shapely-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6b464f2666b13902835f201f50e835f2f153f37741db88f68c7f3b932d3505fa"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e86e7cb8e331a4850e0c2a8b2d66dc08d7a7b301b8d1d34a13060e3a5b4b3b55"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c91981c99ade980fc49e41a544629751a0ccd769f39794ae913e53b07b2f78b9"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd45d456983dc60a42c4db437496d3f08a4201fbf662b69779f535eb969660af"}, - {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:882fb1ffc7577e88c1194f4f1757e277dc484ba096a3b94844319873d14b0f2d"}, - {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9f2d93bff2ea52fa93245798cddb479766a18510ea9b93a4fb9755c79474889"}, - {file = "shapely-2.0.3-cp312-cp312-win32.whl", hash = "sha256:99abad1fd1303b35d991703432c9481e3242b7b3a393c186cfb02373bf604004"}, - {file = "shapely-2.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:6f555fe3304a1f40398977789bc4fe3c28a11173196df9ece1e15c5bc75a48db"}, - {file = "shapely-2.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983cc418c1fa160b7d797cfef0e0c9f8c6d5871e83eae2c5793fce6a837fad9"}, - {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18bddb8c327f392189a8d5d6b9a858945722d0bb95ccbd6a077b8e8fc4c7890d"}, - {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:442f4dcf1eb58c5a4e3428d88e988ae153f97ab69a9f24e07bf4af8038536325"}, - {file = "shapely-2.0.3-cp37-cp37m-win32.whl", hash = "sha256:31a40b6e3ab00a4fd3a1d44efb2482278642572b8e0451abdc8e0634b787173e"}, - {file = "shapely-2.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:59b16976c2473fec85ce65cc9239bef97d4205ab3acead4e6cdcc72aee535679"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:705efbce1950a31a55b1daa9c6ae1c34f1296de71ca8427974ec2f27d57554e3"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:601c5c0058a6192df704cb889439f64994708563f57f99574798721e9777a44b"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f24ecbb90a45c962b3b60d8d9a387272ed50dc010bfe605f1d16dfc94772d8a1"}, - {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c2a2989222c6062f7a0656e16276c01bb308bc7e5d999e54bf4e294ce62e76"}, - {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42bceb9bceb3710a774ce04908fda0f28b291323da2688f928b3f213373b5aee"}, - {file = "shapely-2.0.3-cp38-cp38-win32.whl", hash = "sha256:54d925c9a311e4d109ec25f6a54a8bd92cc03481a34ae1a6a92c1fe6729b7e01"}, - {file = "shapely-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:300d203b480a4589adefff4c4af0b13919cd6d760ba3cbb1e56275210f96f654"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:083d026e97b6c1f4a9bd2a9171c7692461092ed5375218170d91705550eecfd5"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:27b6e1910094d93e9627f2664121e0e35613262fc037051680a08270f6058daf"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71b2de56a9e8c0e5920ae5ddb23b923490557ac50cb0b7fa752761bf4851acde"}, - {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d279e56bbb68d218d63f3efc80c819cedcceef0e64efbf058a1df89dc57201b"}, - {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88566d01a30f0453f7d038db46bc83ce125e38e47c5f6bfd4c9c287010e9bf74"}, - {file = "shapely-2.0.3-cp39-cp39-win32.whl", hash = "sha256:58afbba12c42c6ed44c4270bc0e22f3dadff5656d711b0ad335c315e02d04707"}, - {file = "shapely-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:5026b30433a70911979d390009261b8c4021ff87c7c3cbd825e62bb2ffa181bc"}, - {file = "shapely-2.0.3.tar.gz", hash = "sha256:4d65d0aa7910af71efa72fd6447e02a8e5dd44da81a983de9d736d6e6ccbe674"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:011b77153906030b795791f2fdfa2d68f1a8d7e40bce78b029782ade3afe4f2f"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9831816a5d34d5170aa9ed32a64982c3d6f4332e7ecfe62dc97767e163cb0b17"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5c4849916f71dc44e19ed370421518c0d86cf73b26e8656192fcfcda08218fbd"}, + {file = "shapely-2.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841f93a0e31e4c64d62ea570d81c35de0f6cea224568b2430d832967536308e6"}, + {file = "shapely-2.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b4431f522b277c79c34b65da128029a9955e4481462cbf7ebec23aab61fc58"}, + {file = "shapely-2.0.4-cp310-cp310-win32.whl", hash = "sha256:92a41d936f7d6743f343be265ace93b7c57f5b231e21b9605716f5a47c2879e7"}, + {file = "shapely-2.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:30982f79f21bb0ff7d7d4a4e531e3fcaa39b778584c2ce81a147f95be1cd58c9"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de0205cb21ad5ddaef607cda9a3191eadd1e7a62a756ea3a356369675230ac35"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07"}, + {file = "shapely-2.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:790a168a808bd00ee42786b8ba883307c0e3684ebb292e0e20009588c426da47"}, + {file = "shapely-2.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d"}, + {file = "shapely-2.0.4-cp311-cp311-win32.whl", hash = "sha256:63f3a80daf4f867bd80f5c97fbe03314348ac1b3b70fb1c0ad255a69e3749879"}, + {file = "shapely-2.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5bbd974193e2cc274312da16b189b38f5f128410f3377721cadb76b1e8ca5328"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:41388321a73ba1a84edd90d86ecc8bfed55e6a1e51882eafb019f45895ec0f65"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0776c92d584f72f1e584d2e43cfc5542c2f3dd19d53f70df0900fda643f4bae6"}, + {file = "shapely-2.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c75c98380b1ede1cae9a252c6dc247e6279403fae38c77060a5e6186c95073ac"}, + {file = "shapely-2.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3e700abf4a37b7b8b90532fa6ed5c38a9bfc777098bc9fbae5ec8e618ac8f30"}, + {file = "shapely-2.0.4-cp312-cp312-win32.whl", hash = "sha256:4f2ab0faf8188b9f99e6a273b24b97662194160cc8ca17cf9d1fb6f18d7fb93f"}, + {file = "shapely-2.0.4-cp312-cp312-win_amd64.whl", hash = "sha256:03152442d311a5e85ac73b39680dd64a9892fa42bb08fd83b3bab4fe6999bfa0"}, + {file = "shapely-2.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:994c244e004bc3cfbea96257b883c90a86e8cbd76e069718eb4c6b222a56f78b"}, + {file = "shapely-2.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05ffd6491e9e8958b742b0e2e7c346635033d0a5f1a0ea083547fcc854e5d5cf"}, + {file = "shapely-2.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbdc1140a7d08faa748256438291394967aa54b40009f54e8d9825e75ef6113"}, + {file = "shapely-2.0.4-cp37-cp37m-win32.whl", hash = "sha256:5af4cd0d8cf2912bd95f33586600cac9c4b7c5053a036422b97cfe4728d2eb53"}, + {file = "shapely-2.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:464157509ce4efa5ff285c646a38b49f8c5ef8d4b340f722685b09bb033c5ccf"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:489c19152ec1f0e5c5e525356bcbf7e532f311bff630c9b6bc2db6f04da6a8b9"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b79bbd648664aa6f44ef018474ff958b6b296fed5c2d42db60078de3cffbc8aa"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:674d7baf0015a6037d5758496d550fc1946f34bfc89c1bf247cabdc415d7747e"}, + {file = "shapely-2.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cd4ccecc5ea5abd06deeaab52fcdba372f649728050c6143cc405ee0c166679"}, + {file = "shapely-2.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5cdcbbe3080181498931b52a91a21a781a35dcb859da741c0345c6402bf00c"}, + {file = "shapely-2.0.4-cp38-cp38-win32.whl", hash = "sha256:55a38dcd1cee2f298d8c2ebc60fc7d39f3b4535684a1e9e2f39a80ae88b0cea7"}, + {file = "shapely-2.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec555c9d0db12d7fd777ba3f8b75044c73e576c720a851667432fabb7057da6c"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9103abd1678cb1b5f7e8e1af565a652e036844166c91ec031eeb25c5ca8af0"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:263bcf0c24d7a57c80991e64ab57cba7a3906e31d2e21b455f493d4aab534aaa"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddf4a9bfaac643e62702ed662afc36f6abed2a88a21270e891038f9a19bc08fc"}, + {file = "shapely-2.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:485246fcdb93336105c29a5cfbff8a226949db37b7473c89caa26c9bae52a242"}, + {file = "shapely-2.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8de4578e838a9409b5b134a18ee820730e507b2d21700c14b71a2b0757396acc"}, + {file = "shapely-2.0.4-cp39-cp39-win32.whl", hash = "sha256:9dab4c98acfb5fb85f5a20548b5c0abe9b163ad3525ee28822ffecb5c40e724c"}, + {file = "shapely-2.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:31c19a668b5a1eadab82ff070b5a260478ac6ddad3a5b62295095174a8d26398"}, + {file = "shapely-2.0.4.tar.gz", hash = "sha256:5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8"}, ] [package.dependencies] -numpy = ">=1.14,<2" +numpy = ">=1.14,<3" [package.extras] docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"] @@ -7421,20 +7475,20 @@ numpy = ["NumPy"] [[package]] name = "sphinx" -version = "7.2.6" +version = "7.3.7" description = "Python documentation generator" optional = false python-versions = ">=3.9" files = [ - {file = "sphinx-7.2.6-py3-none-any.whl", hash = "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560"}, - {file = "sphinx-7.2.6.tar.gz", hash = "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5"}, + {file = "sphinx-7.3.7-py3-none-any.whl", hash = "sha256:413f75440be4cacf328f580b4274ada4565fb2187d696a84970c23f77b64d8c3"}, + {file = "sphinx-7.3.7.tar.gz", hash = "sha256:a4a7db75ed37531c05002d56ed6948d4c42f473a36f46e1382b0bd76ca9627bc"}, ] [package.dependencies] -alabaster = ">=0.7,<0.8" +alabaster = ">=0.7.14,<0.8.0" babel = ">=2.9" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.18.1,<0.21" +docutils = ">=0.18.1,<0.22" imagesize = ">=1.3" Jinja2 = ">=3.0" packaging = ">=21.0" @@ -7450,8 +7504,8 @@ sphinxcontrib-serializinghtml = ">=1.1.9" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] -test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools (>=67.0)"] +lint = ["flake8 (>=3.5.0)", "importlib_metadata", "mypy (==1.9.0)", "pytest (>=6.0)", "ruff (==0.3.7)", "sphinx-lint", "tomli", "types-docutils", "types-requests"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=6.0)", "setuptools (>=67.0)"] [[package]] name = "sphinx-rtd-theme" @@ -7765,13 +7819,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.25.1" +version = "20.25.3" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, - {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, + {file = "virtualenv-20.25.3-py3-none-any.whl", hash = "sha256:8aac4332f2ea6ef519c648d0bc48a5b1d324994753519919bddbb1aff25a104e"}, + {file = "virtualenv-20.25.3.tar.gz", hash = "sha256:7bb554bbdfeaacc3349fa614ea5bff6ac300fc7c335e9facf3a3bcfc703f45be"}, ] [package.dependencies] @@ -7780,7 +7834,7 @@ filelock = ">=3.12.2,<4" platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] From fdc53e4471c7a8f9299b9e3c771a0cc94911b97b Mon Sep 17 00:00:00 2001 From: commaci-public <60409688+commaci-public@users.noreply.github.com> Date: Mon, 22 Apr 2024 08:42:31 -0700 Subject: [PATCH 499/599] [bot] Bump submodules (#32275) bump submodules Co-authored-by: jnewb1 <9648890+jnewb1@users.noreply.github.com> --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index edcd0fe4d4..4d60ae9c62 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit edcd0fe4d41be59b7a5f046e68fee93e6898357f +Subproject commit 4d60ae9c6202be1b277a03cbb670c7f2639ad7cd From fc318f454a76e7e02f0e2fff88a5c75df3132d1c Mon Sep 17 00:00:00 2001 From: Andrew Goodbody Date: Mon, 22 Apr 2024 16:43:26 +0100 Subject: [PATCH 500/599] Update action that pulls in deprecated version of Node.js (#32273) * Update action that pulls in deprecated version of Node.js Missed an action that still pulls in a deprecated version of Node.js, so correct that now. * Fix another action that pulls in deprecated Node.js Found another action that needs updating --- .github/workflows/prebuilt.yaml | 2 +- .github/workflows/release.yaml | 2 +- .github/workflows/stale.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/prebuilt.yaml b/.github/workflows/prebuilt.yaml index 990be73f72..3fdf6db202 100644 --- a/.github/workflows/prebuilt.yaml +++ b/.github/workflows/prebuilt.yaml @@ -22,7 +22,7 @@ jobs: steps: - name: Wait for green check mark if: ${{ github.event_name != 'workflow_dispatch' }} - uses: lewagon/wait-on-check-action@595dabb3acf442d47e29c9ec9ba44db0c6bdd18f + uses: lewagon/wait-on-check-action@ccfb013c15c8afb7bf2b7c028fb74dc5a068cccc with: ref: master wait-interval: 30 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3e3fe46e7a..346c3e85ef 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -24,7 +24,7 @@ jobs: sudo apt-get install -y libyaml-dev - name: Wait for green check mark if: ${{ github.event_name != 'workflow_dispatch' }} - uses: lewagon/wait-on-check-action@595dabb3acf442d47e29c9ec9ba44db0c6bdd18f + uses: lewagon/wait-on-check-action@ccfb013c15c8afb7bf2b7c028fb74dc5a068cccc with: ref: master wait-interval: 30 diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 46649a9d5f..b33945cae2 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -12,7 +12,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: exempt-milestones: true From eb79fd552a963ce675d3eaec88ad7d00f447fd14 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 22 Apr 2024 12:22:37 -0700 Subject: [PATCH 501/599] [bot] Fingerprints: add missing FW versions from new users (#32270) * Export fingerprints * update --- docs/CARS.md | 4 ++-- selfdrive/car/hyundai/fingerprints.py | 2 ++ selfdrive/car/hyundai/values.py | 4 ++-- selfdrive/car/toyota/fingerprints.py | 1 + 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index c785e6d701..3decabb591 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -45,8 +45,8 @@ A supported vehicle is one that just works when you install a comma device. All |Ford|Maverick 2023-24|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Maverick Hybrid 2022|LARIAT Luxury|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Maverick Hybrid 2023-24|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|G70 2020-21|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G70 2018|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G70 2019-21|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G70 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2017|All|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 92e47524fc..ffd2e2e3fd 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -486,6 +486,7 @@ FW_VERSIONS = { }, CAR.GENESIS_G70_2020: { (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00IK MDPS R 1.00 1.06 57700-G9220 4I2VL106', b'\xf1\x00IK MDPS R 1.00 1.07 57700-G9220 4I2VL107', b'\xf1\x00IK MDPS R 1.00 1.07 57700-G9420 4I4VL107', b'\xf1\x00IK MDPS R 1.00 1.08 57700-G9200 4I2CL108', @@ -493,6 +494,7 @@ FW_VERSIONS = { b'\xf1\x00IK MDPS R 1.00 5.09 57700-G9520 4I4VL509', ], (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00IK__ SCC F-CUP 1.00 1.01 96400-G9100 ', b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 ', b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 \xf1\xa01.02', b'\xf1\x00IK__ SCC FHCUP 1.00 1.00 99110-G9300 ', diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 3339fd8009..2456e4aa6e 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -503,14 +503,14 @@ class CAR(Platforms): flags=HyundaiFlags.EV, ) GENESIS_G70 = HyundaiPlatformConfig( - [HyundaiCarDocs("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], + [HyundaiCarDocs("Genesis G70 2018", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), flags=HyundaiFlags.LEGACY, ) GENESIS_G70_2020 = HyundaiPlatformConfig( [ # TODO: 2021 MY harness is unknown - HyundaiCarDocs("Genesis G70 2020-21", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + HyundaiCarDocs("Genesis G70 2019-21", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), # TODO: From 3.3T Sport Advanced 2022 & Prestige 2023 Trim, 2.0T is unknown HyundaiCarDocs("Genesis G70 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), ], diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 6830f9ccec..7719649a46 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -1293,6 +1293,7 @@ FW_VERSIONS = { b'881513309400\x00\x00\x00\x00', b'881513309500\x00\x00\x00\x00', b'881513310400\x00\x00\x00\x00', + b'881513310500\x00\x00\x00\x00', ], (Ecu.eps, 0x7a1, None): [ b'8965B33502\x00\x00\x00\x00\x00\x00', From 20c6cbc1d2c20b631a6133a10e447bba7406bba6 Mon Sep 17 00:00:00 2001 From: Eric Brown Date: Mon, 22 Apr 2024 13:22:48 -0600 Subject: [PATCH 502/599] Remove ASCM harness footnote from car docs (#32271) * Remove ASCM harness footnote from car docs * Re-add Footnote class * fix --------- Co-authored-by: Shane Smiskol --- docs/CARS.md | 211 ++++++++++++++++++------------------- selfdrive/car/gm/values.py | 11 +- 2 files changed, 106 insertions(+), 116 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 3decabb591..6cf224d135 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -11,12 +11,12 @@ A supported vehicle is one that just works when you install a comma device. All |Acura|ILX 2016-19|AcuraWatch Plus|openpilot|25 mph|25 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Acura|RDX 2016-18|AcuraWatch Plus|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Acura|RDX 2019-22|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|A3 2014-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|A3 Sportback e-tron 2017-18|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|Q2 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|Q3 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|RS3 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|S3 2015-17|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|A3 2014-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|A3 Sportback e-tron 2017-18|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|Q2 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|Q3 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|RS3 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|S3 2015-17|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Bolt EUV 2022-23|Premier or Premier Redline Trim without Super Cruise Package|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Bolt EV 2022-23|2LT Trim with Adaptive Cruise Control Package|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Equinox 2019-22|Adaptive Cruise Control (ACC)|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -51,16 +51,16 @@ A supported vehicle is one that just works when you install a comma device. All |Genesis|G80 2017|All|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G90 2017-20|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV60 (Advanced Trim) 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV60 (Performance Trim) 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV70 (2.5T Trim) 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV70 (3.5T Trim) 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV80 2023[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV60 (Advanced Trim) 2023[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV60 (Performance Trim) 2023[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV70 (2.5T Trim) 2022-23[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV70 (3.5T Trim) 2022-23[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV80 2023[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |GMC|Sierra 1500 2020-21|Driver Alert Package II|openpilot available[1](#footnotes)|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Accord 2018-22|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Accord Hybrid 2018-22|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Civic 2016-18|Honda Sensing|openpilot|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Honda|Civic 2019-21|All|openpilot available[1](#footnotes)|0 mph|2 mph[5](#footnotes)|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Honda|Civic 2019-21|All|openpilot available[1](#footnotes)|0 mph|2 mph[4](#footnotes)|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Civic 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Civic Hatchback 2017-21|Honda Sensing|openpilot available[1](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Civic Hatchback 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -89,10 +89,10 @@ A supported vehicle is one that just works when you install a comma device. All |Hyundai|Elantra Hybrid 2021-23|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Genesis 2015-16|Smart Cruise Control (SCC)|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|i30 2017-19|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Ioniq 5 (Southeast Asia only) 2022-23[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Ioniq 5 (with HDA II) 2022-23[6](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Ioniq 5 (without HDA II) 2022-23[6](#footnotes)|Highway Driving Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Ioniq 6 (with HDA II) 2023[6](#footnotes)|Highway Driving Assist II|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Ioniq 5 (Southeast Asia only) 2022-23[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Ioniq 5 (with HDA II) 2022-23[5](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Ioniq 5 (without HDA II) 2022-23[5](#footnotes)|Highway Driving Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Ioniq 6 (with HDA II) 2023[5](#footnotes)|Highway Driving Assist II|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Ioniq Electric 2019|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Ioniq Electric 2020|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Ioniq Hybrid 2017-19|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -102,10 +102,10 @@ A supported vehicle is one that just works when you install a comma device. All |Hyundai|Kona 2020|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai G connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Kona Electric 2022-23|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai O connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Kona Electric (with HDA II, Korea only) 2023[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai R connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Kona Electric (with HDA II, Korea only) 2023[5](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai R connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai I connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Palisade 2020-22|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Santa Cruz 2022-24[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Santa Cruz 2022-24[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe 2019-20|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe 2021-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe Hybrid 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -113,35 +113,35 @@ A supported vehicle is one that just works when you install a comma device. All |Hyundai|Sonata 2018-19|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Sonata 2020-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Sonata Hybrid 2020-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Staria 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Staria 2023[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Tucson 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Tucson 2022[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Tucson 2023-24[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Tucson 2022[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Tucson 2023-24[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Tucson Diesel 2019|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Tucson Hybrid 2022-24[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Tucson Hybrid 2022-24[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Veloster 2019-20|Smart Cruise Control (SCC)|Stock|5 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Jeep|Grand Cherokee 2016-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Jeep|Grand Cherokee 2019-21|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Carnival 2022-24[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Carnival (China only) 2023[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Carnival 2022-24[5](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Carnival (China only) 2023[5](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Ceed 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|EV6 (Southeast Asia only) 2022-23[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|EV6 (with HDA II) 2022-23[6](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|EV6 (without HDA II) 2022-23[6](#footnotes)|Highway Driving Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|EV6 (Southeast Asia only) 2022-23[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|EV6 (with HDA II) 2022-23[5](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|EV6 (without HDA II) 2022-23[5](#footnotes)|Highway Driving Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Forte 2019-21|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai G connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Forte 2023|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|K5 2021-24|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|K5 Hybrid 2020-22|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|K8 Hybrid (with HDA II) 2023[6](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|K8 Hybrid (with HDA II) 2023[5](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2019|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2020|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2021|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro EV 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro EV 2023[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2018|All|Stock|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro Hybrid 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Hybrid 2023[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Plug-in Hybrid 2018-19|All|Stock|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Plug-in Hybrid 2020|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Plug-in Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -152,11 +152,11 @@ A supported vehicle is one that just works when you install a comma device. All |Kia|Seltos 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Sorento 2018|Advanced Smart Cruise Control & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Sorento 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sorento 2021-23[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sorento Hybrid 2021-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sorento Plug-in Hybrid 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sportage 2023-24[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sportage Hybrid 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sorento 2021-23[5](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sorento Hybrid 2021-23[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sorento Plug-in Hybrid 2022-23[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sportage 2023-24[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sportage Hybrid 2023[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Stinger 2018-20|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Stinger 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Telluride 2020-22|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -183,8 +183,8 @@ A supported vehicle is one that just works when you install a comma device. All |Lexus|UX Hybrid 2019-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Lincoln|Aviator 2020-23|Co-Pilot360 Plus|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Lincoln|Aviator Plug-in Hybrid 2020-23|Co-Pilot360 Plus|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|MAN|eTGE 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|MAN|TGE 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|MAN|eTGE 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|MAN|TGE 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Mazda|CX-5 2022-24|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Mazda connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Mazda|CX-9 2021-23|All|Stock|0 mph|28 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Mazda connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Nissan|Altima 2019-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Nissan B connector
- 1 RJ45 cable (7 ft)
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -192,27 +192,27 @@ A supported vehicle is one that just works when you install a comma device. All |Nissan|Rogue 2018-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Nissan A connector
- 1 RJ45 cable (7 ft)
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Nissan|X-Trail 2017|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Nissan A connector
- 1 RJ45 cable (7 ft)
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ram|1500 2019-24|Adaptive Cruise Control (ACC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Ram connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|SEAT|Ateca 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|SEAT|Leon 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Subaru|Ascent 2019-21|All[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Crosstrek 2018-19|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Crosstrek 2020-23|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Forester 2019-21|All[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Impreza 2017-19|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Impreza 2020-22|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Legacy 2020-22|All[7](#footnotes)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru B connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Outback 2020-22|All[7](#footnotes)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru B connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|XV 2018-19|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|XV 2020-21|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Škoda|Fabia 2022-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Škoda|Kamiq 2021-23[10,12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Škoda|Karoq 2019-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Kodiaq 2017-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Octavia 2015-19[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Octavia RS 2016[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Octavia Scout 2017-19[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Scala 2020-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Škoda|Superb 2015-22[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|SEAT|Ateca 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|SEAT|Leon 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Subaru|Ascent 2019-21|All[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Crosstrek 2018-19|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Crosstrek 2020-23|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Forester 2019-21|All[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Impreza 2017-19|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Impreza 2020-22|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Legacy 2020-22|All[6](#footnotes)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru B connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Outback 2020-22|All[6](#footnotes)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru B connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|XV 2018-19|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|XV 2020-21|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Škoda|Fabia 2022-23[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Škoda|Kamiq 2021-23[9,11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Škoda|Karoq 2019-23[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Kodiaq 2017-23[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Octavia 2015-19[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Octavia RS 2016[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Octavia Scout 2017-19[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Scala 2020-23[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Škoda|Superb 2015-22[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Alphard 2019-20|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Alphard Hybrid 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Avalon 2016|Toyota Safety Sense P|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -225,8 +225,8 @@ A supported vehicle is one that just works when you install a comma device. All |Toyota|C-HR 2021|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|C-HR Hybrid 2017-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|C-HR Hybrid 2021-22|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|Camry 2018-20|All|Stock|0 mph[9](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|Camry 2021-24|All|openpilot|0 mph[9](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|Camry 2018-20|All|Stock|0 mph[8](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|Camry 2021-24|All|openpilot|0 mph[8](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Camry Hybrid 2018-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Camry Hybrid 2021-24|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Corolla 2017-19|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -258,57 +258,56 @@ A supported vehicle is one that just works when you install a comma device. All |Toyota|RAV4 Hybrid 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 Hybrid 2023-24|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Sienna 2018-20|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Arteon 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Arteon eHybrid 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Arteon R 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Atlas 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Atlas Cross Sport 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|California 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Caravelle 2020|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|CC 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Crafter 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|e-Crafter 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|e-Golf 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf Alltrack 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf GTD 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf GTE 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf GTI 2015-21|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf R 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf SportsVan 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Grand California 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Jetta 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Jetta GLI 2021-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Passat 2015-22[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Passat Alltrack 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Passat GTE 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Polo 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Volkswagen|Polo GTI 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Volkswagen|T-Cross 2021|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Volkswagen|T-Roc 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Taos 2022-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Teramont 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Teramont Cross Sport 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Teramont X 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Tiguan 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Tiguan eHybrid 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Touran 2016-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Arteon 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Arteon eHybrid 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Arteon R 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Atlas 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Atlas Cross Sport 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|California 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Caravelle 2020|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|CC 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Crafter 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|e-Crafter 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|e-Golf 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf Alltrack 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf GTD 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf GTE 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf GTI 2015-21|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf R 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf SportsVan 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Grand California 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Jetta 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Jetta GLI 2021-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Passat 2015-22[10](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Passat Alltrack 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Passat GTE 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Polo 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Volkswagen|Polo GTI 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Volkswagen|T-Cross 2021|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Volkswagen|T-Roc 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Taos 2022-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Teramont 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Teramont Cross Sport 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Teramont X 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Tiguan 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Tiguan eHybrid 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Touran 2016-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| ### Footnotes 1openpilot Longitudinal Control (Alpha) is available behind a toggle; the toggle is only available in non-release branches such as `devel` or `master-ci`.
2By default, this car will use the stock Adaptive Cruise Control (ACC) for longitudinal control. If the Driver Support Unit (DSU) is disconnected, openpilot ACC will replace stock ACC. NOTE: disconnecting the DSU disables Automatic Emergency Braking (AEB).
3Refers only to the Focus Mk4 (C519) available in Europe/China/Taiwan/Australasia, not the Focus Mk3 (C346) in North and South America/Southeast Asia.
-4Requires a community built ASCM harness. NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).
-52019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph.
-6Requires a CAN FD panda kit if not using comma 3X for this CAN FD car.
-7In the non-US market, openpilot requires the car to come equipped with EyeSight with Lane Keep Assistance.
-8Enabling longitudinal control (alpha) will disable all EyeSight functionality, including AEB, LDW, and RAB.
-9openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control.
-10Not including the China market Kamiq, which is based on the (currently) unsupported PQ34 platform.
-11Refers only to the MQB-based European B8 Passat, not the NMS Passat in the USA/China/Mideast markets.
-12Some Škoda vehicles are equipped with heated windshields, which are known to block GPS signal needed for some comma 3X functionality.
-13Only available for vehicles using a gateway (J533) harness. At this time, vehicles using a camera harness are limited to using stock ACC.
-14Model-years 2022 and beyond may have a combined CAN gateway and BCM, which is supported by openpilot in software, but doesn't yet have a harness available from the comma store.
+42019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph.
+5Requires a CAN FD panda kit if not using comma 3X for this CAN FD car.
+6In the non-US market, openpilot requires the car to come equipped with EyeSight with Lane Keep Assistance.
+7Enabling longitudinal control (alpha) will disable all EyeSight functionality, including AEB, LDW, and RAB.
+8openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control.
+9Not including the China market Kamiq, which is based on the (currently) unsupported PQ34 platform.
+10Refers only to the MQB-based European B8 Passat, not the NMS Passat in the USA/China/Mideast markets.
+11Some Škoda vehicles are equipped with heated windshields, which are known to block GPS signal needed for some comma 3X functionality.
+12Only available for vehicles using a gateway (J533) harness. At this time, vehicles using a camera harness are limited to using stock ACC.
+13Model-years 2022 and beyond may have a combined CAN gateway and BCM, which is supported by openpilot in software, but doesn't yet have a harness available from the comma store.
## Community Maintained Cars Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 17f9121092..53a4621d27 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -1,9 +1,8 @@ from dataclasses import dataclass, field -from enum import Enum from cereal import car from openpilot.selfdrive.car import dbc_dict, PlatformConfig, DbcDict, Platforms, CarSpecs -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column +from openpilot.selfdrive.car.docs_definitions import CarHarness, CarDocs, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -60,13 +59,6 @@ class CarControllerParams: self.BRAKE_LOOKUP_V = [self.MAX_BRAKE, 0.] -class Footnote(Enum): - OBD_II = CarFootnote( - 'Requires a community built ASCM harness. ' + - 'NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).', - Column.MODEL) - - @dataclass class GMCarDocs(CarDocs): package: str = "Adaptive Cruise Control (ACC)" @@ -76,7 +68,6 @@ class GMCarDocs(CarDocs): self.car_parts = CarParts.common([CarHarness.gm]) else: self.car_parts = CarParts.common([CarHarness.obd_ii]) - self.footnotes.append(Footnote.OBD_II) @dataclass(frozen=True, kw_only=True) From 618d73efd0bc282c2546776b47e7656af22efc69 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 23 Apr 2024 04:22:53 +0800 Subject: [PATCH 503/599] replay: use nanosleep on MacOS (#32263) * use nanosleep on MacOS * Update tools/replay/util.cc Co-authored-by: Willem Melching --------- Co-authored-by: Willem Melching --- tools/replay/util.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tools/replay/util.cc b/tools/replay/util.cc index f95e1e75b1..3ecd4297fd 100644 --- a/tools/replay/util.cc +++ b/tools/replay/util.cc @@ -318,6 +318,23 @@ std::string decompressBZ2(const std::byte *in, size_t in_size, std::atomic } void precise_nano_sleep(int64_t nanoseconds) { +#ifdef __APPLE__ + const long estimate_ns = 1 * 1e6; // 1ms + struct timespec req = {.tv_nsec = estimate_ns}; + uint64_t start_sleep = nanos_since_boot(); + while (nanoseconds > estimate_ns) { + nanosleep(&req, nullptr); + uint64_t end_sleep = nanos_since_boot(); + nanoseconds -= (end_sleep - start_sleep); + start_sleep = end_sleep; + } + // spin wait + if (nanoseconds > 0) { + while ((nanos_since_boot() - start_sleep) <= nanoseconds) { + std::this_thread::yield(); + } + } +#else struct timespec req, rem; req.tv_sec = nanoseconds / 1e9; @@ -326,6 +343,7 @@ void precise_nano_sleep(int64_t nanoseconds) { // Retry sleep if interrupted by a signal req = rem; } +#endif } std::string sha256(const std::string &str) { From 124e081fe16c85cc836b7291adbc9bfdcf3da932 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 22 Apr 2024 15:19:12 -0700 Subject: [PATCH 504/599] VW: add missing WMI for EU Atlas (#32280) * test * test is gonna be super platform specific * need the radar to fuzzy fingerprint --- selfdrive/car/volkswagen/fingerprints.py | 1 + selfdrive/car/volkswagen/values.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 285eb0c7d5..5d7f4d5e26 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -100,6 +100,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572H \xf1\x890620', b'\xf1\x875Q0907572J \xf1\x890654', b'\xf1\x875Q0907572P \xf1\x890682', + b'\xf1\x875Q0907572S \xf1\x890780', ], }, CAR.VOLKSWAGEN_CADDY_MK3: { diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 3c5d60a16b..59ffe12345 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -224,7 +224,7 @@ class CAR(Platforms): ], VolkswagenCarSpecs(mass=2011, wheelbase=2.98), chassis_codes={"CA"}, - wmis={WMI.VOLKSWAGEN_USA_SUV}, + wmis={WMI.VOLKSWAGEN_USA_SUV, WMI.VOLKSWAGEN_EUROPE_SUV}, ) VOLKSWAGEN_CADDY_MK3 = VolkswagenPQPlatformConfig( [ From 6dcaeae3698b07e5bc28272a359d5381451439de Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 22 Apr 2024 18:20:14 -0700 Subject: [PATCH 505/599] VW: Add 3C chassis code for Passat (#32279) * Add 3C for Passat in Australia * add radar needed to fuzzy VIN match for b9783084b8aa0083 --- selfdrive/car/volkswagen/fingerprints.py | 1 + selfdrive/car/volkswagen/values.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index 5d7f4d5e26..def5ce6e03 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -458,6 +458,7 @@ FW_VERSIONS = { b'\xf1\x873Q0907572C \xf1\x890196', b'\xf1\x875Q0907572P \xf1\x890682', b'\xf1\x875Q0907572R \xf1\x890771', + b'\xf1\x875Q0907572S \xf1\x890780', ], }, CAR.VOLKSWAGEN_PASSAT_NMS: { diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 59ffe12345..a0d38d1b57 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -278,7 +278,7 @@ class CAR(Platforms): VWCarDocs("Volkswagen Passat GTE 2015-22"), ], VolkswagenCarSpecs(mass=1551, wheelbase=2.79), - chassis_codes={"3G"}, + chassis_codes={"3C", "3G"}, wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) VOLKSWAGEN_PASSAT_NMS = VolkswagenPQPlatformConfig( From 7f916f2e9d7cb162524f57962e64b2939e1055f0 Mon Sep 17 00:00:00 2001 From: Eric Brown Date: Mon, 22 Apr 2024 19:21:51 -0600 Subject: [PATCH 506/599] Add missing fingerprint migration for Escalade ESV (#32282) Add fingerprint migration for CADILLAC ESCALADE ESV PLATINUM 2019 --- selfdrive/car/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index 9be6dc8de6..1128a31c29 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -126,6 +126,7 @@ MIGRATION = { "HYUNDAI TUCSON HYBRID 4TH GEN": HYUNDAI.HYUNDAI_TUCSON_4TH_GEN, "KIA SPORTAGE HYBRID 5TH GEN": HYUNDAI.KIA_SPORTAGE_5TH_GEN, "KIA SORENTO PLUG-IN HYBRID 4TH GEN": HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, + "CADILLAC ESCALADE ESV PLATINUM 2019": GM.CADILLAC_ESCALADE_ESV_2019, # Removal of platform_str, see https://github.com/commaai/openpilot/pull/31868/ "COMMA BODY": BODY.COMMA_BODY, From bbd1648f0561b7b3270a2bc7b416841ac10fd9db Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 23 Apr 2024 10:21:42 +0800 Subject: [PATCH 507/599] replay: optimize memory usage with `MonotonicBuffer` (#32278) Optimize Memory Usage with MonotonicBuffe --- tools/cabana/streams/abstractstream.h | 1 + tools/cabana/utils/util.cc | 23 ---------------------- tools/cabana/utils/util.h | 16 --------------- tools/replay/logreader.cc | 28 +++++++++++++++++---------- tools/replay/logreader.h | 4 ++++ tools/replay/replay.cc | 7 ++++++- tools/replay/replay.h | 1 + tools/replay/route.cc | 5 +++-- tools/replay/route.h | 4 +++- tools/replay/util.cc | 24 +++++++++++++++++++++++ tools/replay/util.h | 16 +++++++++++++++ 11 files changed, 76 insertions(+), 53 deletions(-) diff --git a/tools/cabana/streams/abstractstream.h b/tools/cabana/streams/abstractstream.h index 10ffcb184a..18c00cb8b6 100644 --- a/tools/cabana/streams/abstractstream.h +++ b/tools/cabana/streams/abstractstream.h @@ -13,6 +13,7 @@ #include "cereal/messaging/messaging.h" #include "tools/cabana/dbc/dbcmanager.h" #include "tools/cabana/utils/util.h" +#include "tools/replay/util.h" struct CanData { void compute(const MessageId &msg_id, const uint8_t *dat, const int size, double current_sec, diff --git a/tools/cabana/utils/util.cc b/tools/cabana/utils/util.cc index a5f6cf0f5e..f85ea6d105 100644 --- a/tools/cabana/utils/util.cc +++ b/tools/cabana/utils/util.cc @@ -263,26 +263,3 @@ QString signalToolTip(const cabana::Signal *sig) { )").arg(sig->name).arg(sig->start_bit).arg(sig->size).arg(sig->msb).arg(sig->lsb) .arg(sig->is_little_endian ? "Y" : "N").arg(sig->is_signed ? "Y" : "N"); } - -// MonotonicBuffer - -void *MonotonicBuffer::allocate(size_t bytes, size_t alignment) { - assert(bytes > 0); - void *p = std::align(alignment, bytes, current_buf, available); - if (p == nullptr) { - available = next_buffer_size = std::max(next_buffer_size, bytes); - current_buf = buffers.emplace_back(std::aligned_alloc(alignment, next_buffer_size)); - next_buffer_size *= growth_factor; - p = current_buf; - } - - current_buf = (char *)current_buf + bytes; - available -= bytes; - return p; -} - -MonotonicBuffer::~MonotonicBuffer() { - for (auto buf : buffers) { - free(buf); - } -} diff --git a/tools/cabana/utils/util.h b/tools/cabana/utils/util.h index 158321f784..218b8eeb51 100644 --- a/tools/cabana/utils/util.h +++ b/tools/cabana/utils/util.h @@ -2,7 +2,6 @@ #include #include -#include #include #include @@ -160,20 +159,5 @@ private: QSocketNotifier *sn; }; -class MonotonicBuffer { -public: - MonotonicBuffer(size_t initial_size) : next_buffer_size(initial_size) {} - ~MonotonicBuffer(); - void *allocate(size_t bytes, size_t alignment = 16ul); - void deallocate(void *p) {} - -private: - void *current_buf = nullptr; - size_t next_buffer_size = 0; - size_t available = 0; - std::deque buffers; - static constexpr float growth_factor = 1.5; -}; - int num_decimals(double num); QString signalToolTip(const cabana::Signal *sig); diff --git a/tools/replay/logreader.cc b/tools/replay/logreader.cc index f52ef4a4eb..0f1638145f 100644 --- a/tools/replay/logreader.cc +++ b/tools/replay/logreader.cc @@ -1,18 +1,19 @@ #include "tools/replay/logreader.h" #include +#include #include "tools/replay/filereader.h" #include "tools/replay/util.h" bool LogReader::load(const std::string &url, std::atomic *abort, bool local_cache, int chunk_size, int retries) { - raw_ = FileReader(local_cache, chunk_size, retries).read(url, abort); - if (raw_.empty()) return false; + std::string data = FileReader(local_cache, chunk_size, retries).read(url, abort); + if (!data.empty() && url.find(".bz2") != std::string::npos) + data = decompressBZ2(data, abort); - if (url.find(".bz2") != std::string::npos) { - raw_ = decompressBZ2(raw_, abort); - if (raw_.empty()) return false; - } - return load(raw_.data(), raw_.size(), abort); + bool success = !data.empty() && load(data.data(), data.size(), abort); + if (filters_.empty()) + raw_ = std::move(data); + return success; } bool LogReader::load(const char *data, size_t size, std::atomic *abort) { @@ -23,9 +24,18 @@ bool LogReader::load(const char *data, size_t size, std::atomic *abort) { capnp::FlatArrayMessageReader reader(words); auto event = reader.getRoot(); auto which = event.which(); - uint64_t mono_time = event.getLogMonoTime(); auto event_data = kj::arrayPtr(words.begin(), reader.getEnd()); + words = kj::arrayPtr(reader.getEnd(), words.end()); + if (!filters_.empty()) { + if (which >= filters_.size() || !filters_[which]) + continue; + auto buf = buffer_.allocate(event_data.size() * sizeof(capnp::word)); + memcpy(buf, event_data.begin(), event_data.size() * sizeof(capnp::word)); + event_data = kj::arrayPtr((const capnp::word *)buf, event_data.size()); + } + + uint64_t mono_time = event.getLogMonoTime(); const Event &evt = events.emplace_back(which, mono_time, event_data); // Add encodeIdx packet again as a frame packet for the video stream if (evt.which == cereal::Event::ROAD_ENCODE_IDX || @@ -37,8 +47,6 @@ bool LogReader::load(const char *data, size_t size, std::atomic *abort) { } events.emplace_back(which, mono_time, event_data, idx.getSegmentNum()); } - - words = kj::arrayPtr(reader.getEnd(), words.end()); } } catch (const kj::Exception &e) { rWarning("Failed to parse log : %s.\nRetrieved %zu events from corrupt log", e.getDescription().cStr(), events.size()); diff --git a/tools/replay/logreader.h b/tools/replay/logreader.h index 56633c191b..782c00b90a 100644 --- a/tools/replay/logreader.h +++ b/tools/replay/logreader.h @@ -5,6 +5,7 @@ #include "cereal/gen/cpp/log.capnp.h" #include "system/camerad/cameras/camera_common.h" +#include "tools/replay/util.h" const CameraType ALL_CAMERAS[] = {RoadCam, DriverCam, WideRoadCam}; const int MAX_CAMERAS = std::size(ALL_CAMERAS); @@ -26,6 +27,7 @@ public: class LogReader { public: + LogReader(const std::vector &filters = {}) { filters_ = filters; } bool load(const std::string &url, std::atomic *abort = nullptr, bool local_cache = false, int chunk_size = -1, int retries = 0); bool load(const char *data, size_t size, std::atomic *abort = nullptr); @@ -33,4 +35,6 @@ public: private: std::string raw_; + std::vector filters_; + MonotonicBuffer buffer_{1024 * 1024}; }; diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index f5339050a8..43aef7b881 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -27,6 +27,11 @@ Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *s sockets_[which] = name.c_str(); } } + if (!allow.isEmpty()) { + for (int i = 0; i < sockets_.size(); ++i) { + filters_.push_back(i == cereal::Event::Which::INIT_DATA || i == cereal::Event::Which::CAR_PARAMS || sockets_[i]); + } + } std::vector s; std::copy_if(sockets_.begin(), sockets_.end(), std::back_inserter(s), @@ -259,7 +264,7 @@ void Replay::loadSegmentInRange(SegmentMap::iterator begin, SegmentMap::iterator auto it = std::find_if(begin, end, [](const auto &seg_it) { return !seg_it.second || !seg_it.second->isLoaded(); }); if (it != end && !it->second) { rDebug("loading segment %d...", it->first); - it->second = std::make_unique(it->first, route_->at(it->first), flags_); + it->second = std::make_unique(it->first, route_->at(it->first), flags_, filters_); QObject::connect(it->second.get(), &Segment::loadFinished, this, &Replay::segmentLoadFinished); return true; } diff --git a/tools/replay/replay.h b/tools/replay/replay.h index b8f7852e4f..e3f321e1d7 100644 --- a/tools/replay/replay.h +++ b/tools/replay/replay.h @@ -135,6 +135,7 @@ protected: SubMaster *sm = nullptr; std::unique_ptr pm; std::vector sockets_; + std::vector filters_; std::unique_ptr route_; std::unique_ptr camera_server_; std::atomic flags_ = REPLAY_FLAG_NONE; diff --git a/tools/replay/route.cc b/tools/replay/route.cc index f2a0754da1..1c7010eb8a 100644 --- a/tools/replay/route.cc +++ b/tools/replay/route.cc @@ -131,7 +131,8 @@ void Route::addFileToSegment(int n, const QString &file) { // class Segment -Segment::Segment(int n, const SegmentFile &files, uint32_t flags) : seg_num(n), flags(flags) { +Segment::Segment(int n, const SegmentFile &files, uint32_t flags, const std::vector &filters) + : seg_num(n), flags(flags), filters_(filters) { // [RoadCam, DriverCam, WideRoadCam, log]. fallback to qcamera/qlog const std::array file_list = { (flags & REPLAY_FLAG_QCAMERA) || files.road_cam.isEmpty() ? files.qcamera : files.road_cam, @@ -161,7 +162,7 @@ void Segment::loadFile(int id, const std::string file) { frames[id] = std::make_unique(); success = frames[id]->load(file, flags & REPLAY_FLAG_NO_HW_DECODER, &abort_, local_cache, 20 * 1024 * 1024, 3); } else { - log = std::make_unique(); + log = std::make_unique(filters_); success = log->load(file, &abort_, local_cache, 0, 3); } diff --git a/tools/replay/route.h b/tools/replay/route.h index 654c084ff2..f956497804 100644 --- a/tools/replay/route.h +++ b/tools/replay/route.h @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -55,7 +56,7 @@ class Segment : public QObject { Q_OBJECT public: - Segment(int n, const SegmentFile &files, uint32_t flags); + Segment(int n, const SegmentFile &files, uint32_t flags, const std::vector &filters = {}); ~Segment(); inline bool isLoaded() const { return !loading_ && !abort_; } @@ -73,4 +74,5 @@ protected: std::atomic loading_ = 0; QFutureSynchronizer synchronizer_; uint32_t flags; + std::vector filters_; }; diff --git a/tools/replay/util.cc b/tools/replay/util.cc index 3ecd4297fd..c8203fd79d 100644 --- a/tools/replay/util.cc +++ b/tools/replay/util.cc @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -354,3 +355,26 @@ std::string sha256(const std::string &str) { SHA256_Final(hash, &sha256); return util::hexdump(hash, SHA256_DIGEST_LENGTH); } + +// MonotonicBuffer + +void *MonotonicBuffer::allocate(size_t bytes, size_t alignment) { + assert(bytes > 0); + void *p = std::align(alignment, bytes, current_buf, available); + if (p == nullptr) { + available = next_buffer_size = std::max(next_buffer_size, bytes); + current_buf = buffers.emplace_back(std::aligned_alloc(alignment, next_buffer_size)); + next_buffer_size *= growth_factor; + p = current_buf; + } + + current_buf = (char *)current_buf + bytes; + available -= bytes; + return p; +} + +MonotonicBuffer::~MonotonicBuffer() { + for (auto buf : buffers) { + free(buf); + } +} diff --git a/tools/replay/util.h b/tools/replay/util.h index fdb1dbf0f8..750c133555 100644 --- a/tools/replay/util.h +++ b/tools/replay/util.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -20,6 +21,21 @@ void logMessage(ReplyMsgType type, const char* fmt, ...); #define rWarning(fmt, ...) ::logMessage(ReplyMsgType::Warning, fmt, ## __VA_ARGS__) #define rError(fmt, ...) ::logMessage(ReplyMsgType::Critical , fmt, ## __VA_ARGS__) +class MonotonicBuffer { +public: + MonotonicBuffer(size_t initial_size) : next_buffer_size(initial_size) {} + ~MonotonicBuffer(); + void *allocate(size_t bytes, size_t alignment = 16ul); + void deallocate(void *p) {} + +private: + void *current_buf = nullptr; + size_t next_buffer_size = 0; + size_t available = 0; + std::deque buffers; + static constexpr float growth_factor = 1.5; +}; + std::string sha256(const std::string &str); void precise_nano_sleep(int64_t nanoseconds); std::string decompressBZ2(const std::string &in, std::atomic *abort = nullptr); From 5e61775561b6f7cfee9867a8a2a14f73a7b3b78f Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 24 Apr 2024 00:53:50 +0800 Subject: [PATCH 508/599] cabana: refactor HistoryLog for simplification and enhancements (#32284) --- tools/cabana/dbc/dbc.cc | 4 +- tools/cabana/dbc/dbc.h | 2 +- tools/cabana/historylog.cc | 230 +++++++++---------------- tools/cabana/historylog.h | 42 ++--- tools/cabana/streams/abstractstream.cc | 6 +- 5 files changed, 100 insertions(+), 184 deletions(-) diff --git a/tools/cabana/dbc/dbc.cc b/tools/cabana/dbc/dbc.cc index b1256098eb..149bb9f59a 100644 --- a/tools/cabana/dbc/dbc.cc +++ b/tools/cabana/dbc/dbc.cc @@ -142,7 +142,7 @@ void cabana::Signal::update() { precision = std::max(num_decimals(factor), num_decimals(offset)); } -QString cabana::Signal::formatValue(double value) const { +QString cabana::Signal::formatValue(double value, bool with_unit) const { // Show enum string int64_t raw_value = round((value - offset) / factor); for (const auto &[val, desc] : val_desc) { @@ -152,7 +152,7 @@ QString cabana::Signal::formatValue(double value) const { } QString val_str = QString::number(value, 'f', precision); - if (!unit.isEmpty()) { + if (with_unit && !unit.isEmpty()) { val_str += " " + unit; } return val_str; diff --git a/tools/cabana/dbc/dbc.h b/tools/cabana/dbc/dbc.h index 0262a546f6..71838a1df5 100644 --- a/tools/cabana/dbc/dbc.h +++ b/tools/cabana/dbc/dbc.h @@ -55,7 +55,7 @@ public: Signal(const Signal &other) = default; void update(); bool getValue(const uint8_t *data, size_t data_size, double *val) const; - QString formatValue(double value) const; + QString formatValue(double value, bool with_unit = true) const; bool operator==(const cabana::Signal &other) const; inline bool operator!=(const cabana::Signal &other) const { return !(*this == other); } diff --git a/tools/cabana/historylog.cc b/tools/cabana/historylog.cc index 90bd9a8f76..55ba0a4919 100644 --- a/tools/cabana/historylog.cc +++ b/tools/cabana/historylog.cc @@ -10,61 +10,49 @@ #include "tools/cabana/utils/export.h" QVariant HistoryLogModel::data(const QModelIndex &index, int role) const { - const bool show_signals = display_signals_mode && sigs.size() > 0; const auto &m = messages[index.row()]; + const int col = index.column(); if (role == Qt::DisplayRole) { - if (index.column() == 0) { - return QString::number((m.mono_time / (double)1e9) - can->routeStartTime(), 'f', 2); - } - int i = index.column() - 1; - return show_signals ? QString::number(m.sig_values[i], 'f', sigs[i]->precision) : QString(); - } else if (role == ColorsRole) { - return QVariant::fromValue((void *)(&m.colors)); - } else if (role == BytesRole) { - return QVariant::fromValue((void *)(&m.data)); + if (col == 0) return QString::number((m.mono_time / (double)1e9) - can->routeStartTime(), 'f', 3); + if (!isHexMode()) return sigs[col - 1]->formatValue(m.sig_values[col - 1], false); } else if (role == Qt::TextAlignmentRole) { return (uint32_t)(Qt::AlignRight | Qt::AlignVCenter); } + + if (isHexMode() && col == 1) { + if (role == ColorsRole) return QVariant::fromValue((void *)(&m.colors)); + if (role == BytesRole) return QVariant::fromValue((void *)(&m.data)); + } return {}; } void HistoryLogModel::setMessage(const MessageId &message_id) { msg_id = message_id; + reset(); } -void HistoryLogModel::refresh(bool fetch_message) { +void HistoryLogModel::reset() { beginResetModel(); sigs.clear(); if (auto dbc_msg = dbc()->msg(msg_id)) { sigs = dbc_msg->getSignals(); } - last_fetch_time = 0; - has_more_data = true; messages.clear(); hex_colors = {}; - if (fetch_message) { - updateState(); - } endResetModel(); + setFilter(0, "", nullptr); } QVariant HistoryLogModel::headerData(int section, Qt::Orientation orientation, int role) const { if (orientation == Qt::Horizontal) { - const bool show_signals = display_signals_mode && !sigs.empty(); if (role == Qt::DisplayRole || role == Qt::ToolTipRole) { - if (section == 0) { - return "Time"; - } - if (show_signals) { - QString name = sigs[section - 1]->name; - if (!sigs[section - 1]->unit.isEmpty()) { - name += QString(" (%1)").arg(sigs[section - 1]->unit); - } - return name; - } else { - return "Data"; - } - } else if (role == Qt::BackgroundRole && section > 0 && show_signals) { + if (section == 0) return "Time"; + if (isHexMode()) return "Data"; + + QString name = sigs[section - 1]->name; + QString unit = sigs[section - 1]->unit; + return unit.isEmpty() ? name : QString("%1 (%2)").arg(name, unit); + } else if (role == Qt::BackgroundRole && section > 0 && !isHexMode()) { // Alpha-blend the signal color with the background to ensure contrast QColor sigColor = sigs[section - 1]->color; sigColor.setAlpha(128); @@ -74,110 +62,80 @@ QVariant HistoryLogModel::headerData(int section, Qt::Orientation orientation, i return {}; } -void HistoryLogModel::setDynamicMode(int state) { - dynamic_mode = state != 0; - refresh(); -} - -void HistoryLogModel::setDisplayType(int type) { - display_signals_mode = type == 0; - refresh(); -} - -void HistoryLogModel::segmentsMerged() { - if (!dynamic_mode) { - has_more_data = true; - } +void HistoryLogModel::setHexMode(bool hex) { + hex_mode = hex; + reset(); } void HistoryLogModel::setFilter(int sig_idx, const QString &value, std::function cmp) { filter_sig_idx = sig_idx; filter_value = value.toDouble(); filter_cmp = value.isEmpty() ? nullptr : cmp; + updateState(true); } -void HistoryLogModel::updateState() { - uint64_t current_time = (can->lastMessage(msg_id).ts + can->routeStartTime()) * 1e9 + 1; - auto new_msgs = dynamic_mode ? fetchData(current_time, last_fetch_time) : fetchData(0); - if (!new_msgs.empty()) { - beginInsertRows({}, 0, new_msgs.size() - 1); - messages.insert(messages.begin(), std::move_iterator(new_msgs.begin()), std::move_iterator(new_msgs.end())); - endInsertRows(); +void HistoryLogModel::updateState(bool clear) { + if (clear && !messages.empty()) { + beginRemoveRows({}, 0, messages.size() - 1); + messages.clear(); + endRemoveRows(); } - has_more_data = new_msgs.size() >= batch_size; - last_fetch_time = current_time; + uint64_t current_time = (can->lastMessage(msg_id).ts + can->routeStartTime()) * 1e9 + 1; + fetchData(messages.begin(), current_time, messages.empty() ? 0 : messages.front().mono_time); +} + +bool HistoryLogModel::canFetchMore(const QModelIndex &parent) const { + const auto &events = can->events(msg_id); + return !events.empty() && !messages.empty() && messages.back().mono_time > events.front()->mono_time; } void HistoryLogModel::fetchMore(const QModelIndex &parent) { - if (!messages.empty()) { - auto new_msgs = fetchData(messages.back().mono_time); - if (!new_msgs.empty()) { - beginInsertRows({}, messages.size(), messages.size() + new_msgs.size() - 1); - messages.insert(messages.end(), std::move_iterator(new_msgs.begin()), std::move_iterator(new_msgs.end())); - endInsertRows(); - } - has_more_data = new_msgs.size() >= batch_size; - } + if (!messages.empty()) + fetchData(messages.end(), messages.back().mono_time, 0); } -template -std::deque HistoryLogModel::fetchData(InputIt first, InputIt last, uint64_t min_time) { - std::deque msgs; +void HistoryLogModel::fetchData(std::deque::iterator insert_pos, uint64_t from_time, uint64_t min_time) { + const auto &events = can->events(msg_id); + auto first = std::upper_bound(events.rbegin(), events.rend(), from_time, [](uint64_t ts, auto e) { + return ts > e->mono_time; + }); + + std::vector msgs; std::vector values(sigs.size()); - for (; first != last && (*first)->mono_time > min_time; ++first) { + msgs.reserve(batch_size); + for (; first != events.rend() && (*first)->mono_time > min_time; ++first) { const CanEvent *e = *first; for (int i = 0; i < sigs.size(); ++i) { sigs[i]->getValue(e->dat, e->size, &values[i]); } if (!filter_cmp || filter_cmp(values[filter_sig_idx], filter_value)) { - auto &m = msgs.emplace_back(); - m.mono_time = e->mono_time; - m.data.assign(e->dat, e->dat + e->size); - m.sig_values = values; + msgs.emplace_back(Message{e->mono_time, values, {e->dat, e->dat + e->size}}); if (msgs.size() >= batch_size && min_time == 0) { - return msgs; + break; } } } - return msgs; -} -std::deque HistoryLogModel::fetchData(uint64_t from_time, uint64_t min_time) { - const auto &events = can->events(msg_id); - const auto freq = can->lastMessage(msg_id).freq; - const bool update_colors = !display_signals_mode || sigs.empty(); - const std::vector no_mask; - const auto speed = can->getSpeed(); - if (dynamic_mode) { - auto first = std::upper_bound(events.rbegin(), events.rend(), from_time, [](uint64_t ts, auto e) { - return ts > e->mono_time; - }); - auto msgs = fetchData(first, events.rend(), min_time); - if (update_colors && (min_time > 0 || messages.empty())) { - for (auto it = msgs.rbegin(); it != msgs.rend(); ++it) { - hex_colors.compute(msg_id, it->data.data(), it->data.size(), it->mono_time / (double)1e9, speed, no_mask, freq); - it->colors = hex_colors.colors; + if (!msgs.empty()) { + if (isHexMode() && (min_time > 0 || messages.empty())) { + const auto freq = can->lastMessage(msg_id).freq; + const std::vector no_mask; + for (auto &m : msgs) { + hex_colors.compute(msg_id, m.data.data(), m.data.size(), m.mono_time / (double)1e9, can->getSpeed(), no_mask, freq); + m.colors = hex_colors.colors; } } - return msgs; - } else { - assert(min_time == 0); - auto first = std::upper_bound(events.cbegin(), events.cend(), from_time, CompareCanEvent()); - auto msgs = fetchData(first, events.cend(), 0); - if (update_colors) { - for (auto it = msgs.begin(); it != msgs.end(); ++it) { - hex_colors.compute(msg_id, it->data.data(), it->data.size(), it->mono_time / (double)1e9, speed, no_mask, freq); - it->colors = hex_colors.colors; - } - } - return msgs; + int pos = std::distance(messages.begin(), insert_pos); + beginInsertRows({}, pos , pos + msgs.size() - 1); + messages.insert(insert_pos, std::move_iterator(msgs.begin()), std::move_iterator(msgs.end())); + endInsertRows(); } } // HeaderView QSize HeaderView::sectionSizeFromContents(int logicalIndex) const { - static const QSize time_col_size = fontMetrics().boundingRect({0, 0, 200, 200}, defaultAlignment(), "000000.000").size() + QSize(10, 6); + static const QSize time_col_size = fontMetrics().size(Qt::TextSingleLine, "000000.000") + QSize(10, 6); if (logicalIndex == 0) { return time_col_size; } else { @@ -220,8 +178,7 @@ LogsWidget::LogsWidget(QWidget *parent) : QFrame(parent) { filter_layout->addWidget(value_edit = new QLineEdit(this)); h->addWidget(filters_widget); h->addStretch(0); - h->addWidget(dynamic_mode = new QCheckBox(tr("Dynamic")), 0, Qt::AlignRight); - ToolButton *export_btn = new ToolButton("filetype-csv", tr("Export to CSV file...")); + export_btn = new ToolButton("filetype-csv", tr("Export to CSV file...")); h->addWidget(export_btn, 0, Qt::AlignRight); display_type_cb->addItems({"Signal", "Hex"}); @@ -229,8 +186,6 @@ LogsWidget::LogsWidget(QWidget *parent) : QFrame(parent) { comp_box->addItems({">", "=", "!=", "<"}); value_edit->setClearButtonEnabled(true); value_edit->setValidator(new DoubleValidator(this)); - dynamic_mode->setChecked(true); - dynamic_mode->setEnabled(!can->liveStreaming()); main_layout->addWidget(toolbar); QFrame *line = new QFrame(this); @@ -238,52 +193,38 @@ LogsWidget::LogsWidget(QWidget *parent) : QFrame(parent) { main_layout->addWidget(line); main_layout->addWidget(logs = new QTableView(this)); logs->setModel(model = new HistoryLogModel(this)); - delegate = new MessageBytesDelegate(this); + logs->setItemDelegate(delegate = new MessageBytesDelegate(this)); logs->setHorizontalHeader(new HeaderView(Qt::Horizontal, this)); logs->horizontalHeader()->setDefaultAlignment(Qt::AlignRight | (Qt::Alignment)Qt::TextWordWrap); logs->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); logs->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); logs->verticalHeader()->setDefaultSectionSize(delegate->sizeForBytes(8).height()); - logs->verticalHeader()->setVisible(false); logs->setFrameShape(QFrame::NoFrame); - QObject::connect(display_type_cb, qOverload(&QComboBox::activated), [this](int index) { - logs->setItemDelegateForColumn(1, index == 1 ? delegate : nullptr); - model->setDisplayType(index); - }); - QObject::connect(dynamic_mode, &QCheckBox::stateChanged, model, &HistoryLogModel::setDynamicMode); - QObject::connect(signals_cb, SIGNAL(activated(int)), this, SLOT(setFilter())); - QObject::connect(comp_box, SIGNAL(activated(int)), this, SLOT(setFilter())); - QObject::connect(value_edit, &QLineEdit::textChanged, this, &LogsWidget::setFilter); + QObject::connect(display_type_cb, qOverload(&QComboBox::activated), model, &HistoryLogModel::setHexMode); + QObject::connect(signals_cb, SIGNAL(activated(int)), this, SLOT(filterChanged())); + QObject::connect(comp_box, SIGNAL(activated(int)), this, SLOT(filterChanged())); + QObject::connect(value_edit, &QLineEdit::textEdited, this, &LogsWidget::filterChanged); QObject::connect(export_btn, &QToolButton::clicked, this, &LogsWidget::exportToCSV); - QObject::connect(can, &AbstractStream::seekedTo, model, &HistoryLogModel::refresh); - QObject::connect(dbc(), &DBCManager::DBCFileChanged, this, &LogsWidget::refresh); - QObject::connect(UndoStack::instance(), &QUndoStack::indexChanged, this, &LogsWidget::refresh); - QObject::connect(can, &AbstractStream::eventsMerged, model, &HistoryLogModel::segmentsMerged); + QObject::connect(can, &AbstractStream::seekedTo, model, &HistoryLogModel::reset); + QObject::connect(dbc(), &DBCManager::DBCFileChanged, model, &HistoryLogModel::reset); + QObject::connect(UndoStack::instance(), &QUndoStack::indexChanged, model, &HistoryLogModel::reset); + QObject::connect(model, &HistoryLogModel::modelReset, this, &LogsWidget::modelReset); + QObject::connect(model, &HistoryLogModel::rowsInserted, [this]() { export_btn->setEnabled(true); }); } -void LogsWidget::setMessage(const MessageId &message_id) { - model->setMessage(message_id); - refresh(); -} - -void LogsWidget::refresh() { - model->setFilter(0, "", nullptr); - model->refresh(isVisible()); - bool has_signal = model->sigs.size(); - if (has_signal) { - signals_cb->clear(); - for (auto s : model->sigs) { - signals_cb->addItem(s->name); - } +void LogsWidget::modelReset() { + signals_cb->clear(); + for (auto s : model->sigs) { + signals_cb->addItem(s->name); } - logs->setItemDelegateForColumn(1, !has_signal || display_type_cb->currentIndex() == 1 ? delegate : nullptr); + export_btn->setEnabled(false); value_edit->clear(); comp_box->setCurrentIndex(0); - filters_widget->setVisible(has_signal); + filters_widget->setVisible(!model->sigs.empty()); } -void LogsWidget::setFilter() { +void LogsWidget::filterChanged() { if (value_edit->text().isEmpty() && !value_edit->isModified()) return; std::function cmp = nullptr; @@ -294,19 +235,6 @@ void LogsWidget::setFilter() { case 3: cmp = std::less{}; break; } model->setFilter(signals_cb->currentIndex(), value_edit->text(), cmp); - model->refresh(); -} - -void LogsWidget::updateState() { - if (isVisible() && dynamic_mode->isChecked()) { - model->updateState(); - } -} - -void LogsWidget::showEvent(QShowEvent *event) { - if (dynamic_mode->isChecked() || model->canFetchMore({}) && model->rowCount() == 0) { - model->refresh(); - } } void LogsWidget::exportToCSV() { @@ -314,7 +242,7 @@ void LogsWidget::exportToCSV() { QString fn = QFileDialog::getSaveFileName(this, QString("Export %1 to CSV file").arg(msgName(model->msg_id)), dir, tr("csv (*.csv)")); if (!fn.isEmpty()) { - const bool export_signals = model->display_signals_mode && model->sigs.size() > 0; - export_signals ? utils::exportSignalsToCSV(fn, model->msg_id) : utils::exportToCSV(fn, model->msg_id); + model->isHexMode() ? utils::exportToCSV(fn, model->msg_id) + : utils::exportSignalsToCSV(fn, model->msg_id); } } diff --git a/tools/cabana/historylog.h b/tools/cabana/historylog.h index 21df6a622e..8c9ee922f8 100644 --- a/tools/cabana/historylog.h +++ b/tools/cabana/historylog.h @@ -3,7 +3,6 @@ #include #include -#include #include #include #include @@ -11,7 +10,6 @@ #include "tools/cabana/dbc/dbcmanager.h" #include "tools/cabana/streams/abstractstream.h" -#include "tools/cabana/utils/util.h" class HeaderView : public QHeaderView { public: @@ -26,24 +24,18 @@ class HistoryLogModel : public QAbstractTableModel { public: HistoryLogModel(QObject *parent) : QAbstractTableModel(parent) {} void setMessage(const MessageId &message_id); - void updateState(); + void updateState(bool clear = false); void setFilter(int sig_idx, const QString &value, std::function cmp); QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; void fetchMore(const QModelIndex &parent) override; - inline bool canFetchMore(const QModelIndex &parent) const override { return has_more_data; } + bool canFetchMore(const QModelIndex &parent) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override { return messages.size(); } - int columnCount(const QModelIndex &parent = QModelIndex()) const override { - return display_signals_mode && !sigs.empty() ? sigs.size() + 1 : 2; - } - void refresh(bool fetch_message = true); + int columnCount(const QModelIndex &parent = QModelIndex()) const override { return !isHexMode() ? sigs.size() + 1 : 2; } + inline bool isHexMode() const { return sigs.empty() || hex_mode; } + void reset(); + void setHexMode(bool hex_mode); -public slots: - void setDisplayType(int type); - void setDynamicMode(int state); - void segmentsMerged(); - -public: struct Message { uint64_t mono_time = 0; std::vector sig_values; @@ -51,22 +43,17 @@ public: std::vector colors; }; - template - std::deque fetchData(InputIt first, InputIt last, uint64_t min_time); - std::deque fetchData(uint64_t from_time, uint64_t min_time = 0); + void fetchData(std::deque::iterator insert_pos, uint64_t from_time, uint64_t min_time); MessageId msg_id; CanData hex_colors; - bool has_more_data = true; const int batch_size = 50; int filter_sig_idx = -1; double filter_value = 0; - uint64_t last_fetch_time = 0; std::function filter_cmp = nullptr; std::deque messages; std::vector sigs; - bool dynamic_mode = true; - bool display_signals_mode = true; + bool hex_mode = true; }; class LogsWidget : public QFrame { @@ -74,22 +61,21 @@ class LogsWidget : public QFrame { public: LogsWidget(QWidget *parent); - void setMessage(const MessageId &message_id); - void updateState(); - void showEvent(QShowEvent *event) override; + void setMessage(const MessageId &message_id) { model->setMessage(message_id); } + void updateState() { model->updateState(); } + void showEvent(QShowEvent *event) override { model->updateState(true); } private slots: - void setFilter(); + void filterChanged(); void exportToCSV(); + void modelReset(); private: - void refresh(); - QTableView *logs; HistoryLogModel *model; - QCheckBox *dynamic_mode; QComboBox *signals_cb, *comp_box, *display_type_cb; QLineEdit *value_edit; QWidget *filters_widget; + ToolButton *export_btn; MessageBytesDelegate *delegate; }; diff --git a/tools/cabana/streams/abstractstream.cc b/tools/cabana/streams/abstractstream.cc index afb1ec200c..9c52908c36 100644 --- a/tools/cabana/streams/abstractstream.cc +++ b/tools/cabana/streams/abstractstream.cc @@ -137,9 +137,11 @@ void AbstractStream::updateLastMsgsTo(double sec) { auto prev = std::prev(it); double ts = (*prev)->mono_time / 1e9 - routeStartTime(); auto &m = msgs[id]; - // Keep last changes + // Keep suppressed bits. if (auto old_m = messages_.find(id); old_m != messages_.end()) { - m.last_changes = old_m->second.last_changes; + std::transform(old_m->second.last_changes.cbegin(), old_m->second.last_changes.cend(), + std::back_inserter(m.last_changes), + [](const auto &change) { return CanData::ByteLastChange{.suppressed = change.suppressed}; }); } m.compute(id, (*prev)->dat, (*prev)->size, ts, getSpeed(), {}); m.count = std::distance(ev.begin(), prev) + 1; From 07df3d28a4b8828bbf80948e5374aeae845d7865 Mon Sep 17 00:00:00 2001 From: Alexandre Nobuharu Sato <66435071+AlexandreSato@users.noreply.github.com> Date: Wed, 24 Apr 2024 13:40:05 -0300 Subject: [PATCH 509/599] Added alwaysOnDM toggle description to RELEASES.md (#32266) --- RELEASES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASES.md b/RELEASES.md index 2af124d4e6..58638d053c 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -3,6 +3,7 @@ Version 0.9.7 (2024-XX-XX) * New driving model * Adjust driving personality with the follow distance button * Support for hybrid variants of supported Ford models +* Added toggle to enable driver monitoring even when openpilot is not engaged Version 0.9.6 (2024-02-27) ======================== From e095c7c8588e70669d1bec8379ca9a4290828928 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 24 Apr 2024 14:55:34 -0700 Subject: [PATCH 510/599] Update RELEASES.md --- RELEASES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/RELEASES.md b/RELEASES.md index 58638d053c..da22a87a47 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,9 +1,10 @@ -Version 0.9.7 (2024-XX-XX) +Version 0.9.7 (2024-05-XX) ======================== * New driving model * Adjust driving personality with the follow distance button * Support for hybrid variants of supported Ford models * Added toggle to enable driver monitoring even when openpilot is not engaged +* Fingerprinting without the OBD-II port on all cars Version 0.9.6 (2024-02-27) ======================== From a6396be53e54aa81644a10c2936706d0f1a2d6e8 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 25 Apr 2024 06:55:58 +0800 Subject: [PATCH 511/599] cabana: improve `DBCFile::parse()` (#32160) improve parse() --- tools/cabana/dbc/dbcfile.cc | 243 +++++++++++++++++++++--------------- tools/cabana/dbc/dbcfile.h | 8 ++ 2 files changed, 153 insertions(+), 98 deletions(-) diff --git a/tools/cabana/dbc/dbcfile.cc b/tools/cabana/dbc/dbcfile.cc index bf246fd342..4a1c52819a 100644 --- a/tools/cabana/dbc/dbcfile.cc +++ b/tools/cabana/dbc/dbcfile.cc @@ -3,7 +3,6 @@ #include #include #include -#include DBCFile::DBCFile(const QString &dbc_file_name) { QFile file(dbc_file_name); @@ -76,117 +75,44 @@ cabana::Msg *DBCFile::msg(const QString &name) { return it != msgs.end() ? &(it->second) : nullptr; } +cabana::Signal *DBCFile::signal(uint32_t address, const QString name) { + auto m = msg(address); + return m ? (cabana::Signal *)m->sig(name) : nullptr; +} + void DBCFile::parse(const QString &content) { - static QRegularExpression bo_regexp(R"(^BO_ (\w+) (\w+) *: (\w+) (\w+))"); - static QRegularExpression sg_regexp(R"(^SG_ (\w+) : (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); - static QRegularExpression sgm_regexp(R"(^SG_ (\w+) (\w+) *: (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); - static QRegularExpression msg_comment_regexp(R"(^CM_ BO_ *(\w+) *\"((?:[^"\\]|\\.)*)\"\s*;)"); - static QRegularExpression sg_comment_regexp(R"(^CM_ SG_ *(\w+) *(\w+) *\"((?:[^"\\]|\\.)*)\"\s*;)"); - static QRegularExpression val_regexp(R"(VAL_ (\w+) (\w+) (\s*[-+]?[0-9]+\s+\".+?\"[^;]*))"); + msgs.clear(); int line_num = 0; QString line; - auto dbc_assert = [&line_num, &line, this](bool condition, const QString &msg = "") { - if (!condition) throw std::runtime_error(QString("[%1:%2]%3: %4").arg(filename).arg(line_num).arg(msg).arg(line).toStdString()); - }; - auto get_sig = [this](uint32_t address, const QString &name) -> cabana::Signal * { - auto m = (cabana::Msg *)msg(address); - return m ? (cabana::Signal *)m->sig(name) : nullptr; - }; - - msgs.clear(); - QTextStream stream((QString *)&content); cabana::Msg *current_msg = nullptr; int multiplexor_cnt = 0; bool seen_first = false; + QTextStream stream((QString *)&content); + while (!stream.atEnd()) { ++line_num; QString raw_line = stream.readLine(); line = raw_line.trimmed(); bool seen = true; - if (line.startsWith("BO_ ")) { - multiplexor_cnt = 0; - auto match = bo_regexp.match(line); - dbc_assert(match.hasMatch()); - auto address = match.captured(1).toUInt(); - dbc_assert(msgs.count(address) == 0, QString("Duplicate message address: %1").arg(address)); - current_msg = &msgs[address]; - current_msg->address = address; - current_msg->name = match.captured(2); - current_msg->size = match.captured(3).toULong(); - current_msg->transmitter = match.captured(4).trimmed(); - } else if (line.startsWith("SG_ ")) { - int offset = 0; - auto match = sg_regexp.match(line); - if (!match.hasMatch()) { - match = sgm_regexp.match(line); - offset = 1; + try { + if (line.startsWith("BO_ ")) { + multiplexor_cnt = 0; + current_msg = parseBO(line); + } else if (line.startsWith("SG_ ")) { + parseSG(line, current_msg, multiplexor_cnt); + } else if (line.startsWith("VAL_ ")) { + parseVAL(line); + } else if (line.startsWith("CM_ BO_")) { + parseCM_BO(line, content, raw_line, stream); + } else if (line.startsWith("CM_ SG_ ")) { + parseCM_SG(line, content, raw_line, stream); + } else { + seen = false; } - dbc_assert(match.hasMatch()); - dbc_assert(current_msg, "No Message"); - auto name = match.captured(1); - dbc_assert(current_msg->sig(name) == nullptr, "Duplicate signal name"); - cabana::Signal s{}; - if (offset == 1) { - auto indicator = match.captured(2); - if (indicator == "M") { - // Only one signal within a single message can be the multiplexer switch. - dbc_assert(++multiplexor_cnt < 2, "Multiple multiplexor"); - s.type = cabana::Signal::Type::Multiplexor; - } else { - s.type = cabana::Signal::Type::Multiplexed; - s.multiplex_value = indicator.mid(1).toInt(); - } - } - s.name = name; - s.start_bit = match.captured(offset + 2).toInt(); - s.size = match.captured(offset + 3).toInt(); - s.is_little_endian = match.captured(offset + 4).toInt() == 1; - s.is_signed = match.captured(offset + 5) == "-"; - s.factor = match.captured(offset + 6).toDouble(); - s.offset = match.captured(offset + 7).toDouble(); - s.min = match.captured(8 + offset).toDouble(); - s.max = match.captured(9 + offset).toDouble(); - s.unit = match.captured(10 + offset); - s.receiver_name = match.captured(11 + offset).trimmed(); - - current_msg->sigs.push_back(new cabana::Signal(s)); - } else if (line.startsWith("VAL_ ")) { - auto match = val_regexp.match(line); - dbc_assert(match.hasMatch()); - if (auto s = get_sig(match.captured(1).toUInt(), match.captured(2))) { - QStringList desc_list = match.captured(3).trimmed().split('"'); - for (int i = 0; i < desc_list.size(); i += 2) { - auto val = desc_list[i].trimmed(); - if (!val.isEmpty() && (i + 1) < desc_list.size()) { - auto desc = desc_list[i + 1].trimmed(); - s->val_desc.push_back({val.toDouble(), desc}); - } - } - } - } else if (line.startsWith("CM_ BO_")) { - if (!line.endsWith("\";")) { - int pos = stream.pos() - raw_line.length() - 1; - line = content.mid(pos, content.indexOf("\";", pos)); - } - auto match = msg_comment_regexp.match(line); - dbc_assert(match.hasMatch()); - if (auto m = (cabana::Msg *)msg(match.captured(1).toUInt())) { - m->comment = match.captured(2).trimmed().replace("\\\"", "\""); - } - } else if (line.startsWith("CM_ SG_ ")) { - if (!line.endsWith("\";")) { - int pos = stream.pos() - raw_line.length() - 1; - line = content.mid(pos, content.indexOf("\";", pos)); - } - auto match = sg_comment_regexp.match(line); - dbc_assert(match.hasMatch()); - if (auto s = get_sig(match.captured(1).toUInt(), match.captured(2))) { - s->comment = match.captured(3).trimmed().replace("\\\"", "\""); - } - } else { - seen = false; + } catch (std::exception &e) { + throw std::runtime_error(QString("[%1:%2]%3: %4").arg(filename).arg(line_num).arg(e.what()).arg(line).toStdString()); } if (seen) { @@ -201,6 +127,127 @@ void DBCFile::parse(const QString &content) { } } +cabana::Msg *DBCFile::parseBO(const QString &line) { + static QRegularExpression bo_regexp(R"(^BO_ (?
\w+) (?\w+) *: (?\w+) (?\w+))"); + + QRegularExpressionMatch match = bo_regexp.match(line); + if (!match.hasMatch()) + throw std::runtime_error("Invalid BO_ line format"); + + uint32_t address = match.captured("address").toUInt(); + if (msgs.count(address) > 0) + throw std::runtime_error(QString("Duplicate message address: %1").arg(address).toStdString()); + + // Create a new message object + cabana::Msg *msg = &msgs[address]; + msg->address = address; + msg->name = match.captured("name"); + msg->size = match.captured("size").toULong(); + msg->transmitter = match.captured("transmitter").trimmed(); + return msg; +} + +void DBCFile::parseCM_BO(const QString &line, const QString &content, const QString &raw_line, const QTextStream &stream) { + static QRegularExpression msg_comment_regexp(R"(^CM_ BO_ *(?
\w+) *\"(?(?:[^"\\]|\\.)*)\"\s*;)"); + + QString parse_line = line; + if (!parse_line.endsWith("\";")) { + int pos = stream.pos() - raw_line.length() - 1; + parse_line = content.mid(pos, content.indexOf("\";", pos)); + } + auto match = msg_comment_regexp.match(parse_line); + if (!match.hasMatch()) + throw std::runtime_error("Invalid message comment format"); + + if (auto m = (cabana::Msg *)msg(match.captured("address").toUInt())) + m->comment = match.captured("comment").trimmed().replace("\\\"", "\""); +} + +void DBCFile::parseSG(const QString &line, cabana::Msg *current_msg, int &multiplexor_cnt) { + static QRegularExpression sg_regexp(R"(^SG_ (\w+) : (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); + static QRegularExpression sgm_regexp(R"(^SG_ (\w+) (\w+) *: (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); + + if (!current_msg) + throw std::runtime_error("No Message"); + + int offset = 0; + auto match = sg_regexp.match(line); + if (!match.hasMatch()) { + match = sgm_regexp.match(line); + offset = 1; + } + if (!match.hasMatch()) + throw std::runtime_error("Invalid SG_ line format"); + + QString name = match.captured(1); + if (current_msg->sig(name) != nullptr) + throw std::runtime_error("Duplicate signal name"); + + cabana::Signal s{}; + if (offset == 1) { + auto indicator = match.captured(2); + if (indicator == "M") { + ++multiplexor_cnt; + // Only one signal within a single message can be the multiplexer switch. + if (multiplexor_cnt >= 2) + throw std::runtime_error("Multiple multiplexor"); + + s.type = cabana::Signal::Type::Multiplexor; + } else { + s.type = cabana::Signal::Type::Multiplexed; + s.multiplex_value = indicator.mid(1).toInt(); + } + } + s.name = name; + s.start_bit = match.captured(offset + 2).toInt(); + s.size = match.captured(offset + 3).toInt(); + s.is_little_endian = match.captured(offset + 4).toInt() == 1; + s.is_signed = match.captured(offset + 5) == "-"; + s.factor = match.captured(offset + 6).toDouble(); + s.offset = match.captured(offset + 7).toDouble(); + s.min = match.captured(8 + offset).toDouble(); + s.max = match.captured(9 + offset).toDouble(); + s.unit = match.captured(10 + offset); + s.receiver_name = match.captured(11 + offset).trimmed(); + current_msg->sigs.push_back(new cabana::Signal(s)); +} + +void DBCFile::parseCM_SG(const QString &line, const QString &content, const QString &raw_line, const QTextStream &stream) { + static QRegularExpression sg_comment_regexp(R"(^CM_ SG_ *(\w+) *(\w+) *\"((?:[^"\\]|\\.)*)\"\s*;)"); + + QString parse_line = line; + if (!parse_line.endsWith("\";")) { + int pos = stream.pos() - raw_line.length() - 1; + parse_line = content.mid(pos, content.indexOf("\";", pos)); + } + auto match = sg_comment_regexp.match(parse_line); + if (!match.hasMatch()) + throw std::runtime_error("Invalid CM_ SG_ line format"); + + if (auto s = signal(match.captured(1).toUInt(), match.captured(2))) { + s->comment = match.captured(3).trimmed().replace("\\\"", "\""); + } +} + +void DBCFile::parseVAL(const QString &line) { + static QRegularExpression val_regexp(R"(VAL_ (\w+) (\w+) (\s*[-+]?[0-9]+\s+\".+?\"[^;]*))"); + + auto match = val_regexp.match(line); + if (!match.hasMatch()) + throw std::runtime_error("invalid VAL_ line format"); + + if (auto s = signal(match.captured(1).toUInt(), match.captured(2))) { + QStringList desc_list = match.captured(3).trimmed().split('"'); + for (int i = 0; i < desc_list.size(); i += 2) { + auto val = desc_list[i].trimmed(); + if (!val.isEmpty() && (i + 1) < desc_list.size()) { + auto desc = desc_list[i + 1].trimmed(); + s->val_desc.push_back({val.toDouble(), desc}); + } + } + } +} + QString DBCFile::generateDBC() { QString dbc_string, comment, val_desc; for (const auto &[address, m] : msgs) { diff --git a/tools/cabana/dbc/dbcfile.h b/tools/cabana/dbc/dbcfile.h index 29f19a80e4..20de04a861 100644 --- a/tools/cabana/dbc/dbcfile.h +++ b/tools/cabana/dbc/dbcfile.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include "tools/cabana/dbc/dbc.h" @@ -26,6 +27,7 @@ public: cabana::Msg *msg(uint32_t address); cabana::Msg *msg(const QString &name); inline cabana::Msg *msg(const MessageId &id) { return msg(id.address); } + cabana::Signal *signal(uint32_t address, const QString name); inline QString name() const { return name_.isEmpty() ? "untitled" : name_; } inline bool isEmpty() const { return msgs.empty() && name_.isEmpty(); } @@ -34,6 +36,12 @@ public: private: void parse(const QString &content); + cabana::Msg *parseBO(const QString &line); + void parseSG(const QString &line, cabana::Msg *current_msg, int &multiplexor_cnt); + void parseCM_BO(const QString &line, const QString &content, const QString &raw_line, const QTextStream &stream); + void parseCM_SG(const QString &line, const QString &content, const QString &raw_line, const QTextStream &stream); + void parseVAL(const QString &line); + QString header; std::map msgs; QString name_; From 2d1078ee5bcddc12122a06ffaefef31f9656ef65 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 25 Apr 2024 06:56:25 +0800 Subject: [PATCH 512/599] cabana: some improvements (#32161) some improvements --- tools/cabana/chart/chart.cc | 6 ++-- tools/cabana/dbc/dbc.h | 4 +-- tools/cabana/historylog.h | 2 +- tools/cabana/messageswidget.cc | 44 +++++++++++--------------- tools/cabana/messageswidget.h | 1 + tools/cabana/streams/abstractstream.cc | 18 +++++------ tools/cabana/utils/util.cc | 38 ++++++++++++---------- tools/cabana/utils/util.h | 2 ++ 8 files changed, 59 insertions(+), 56 deletions(-) diff --git a/tools/cabana/chart/chart.cc b/tools/cabana/chart/chart.cc index 6f08a9f20b..dd34782e33 100644 --- a/tools/cabana/chart/chart.cc +++ b/tools/cabana/chart/chart.cc @@ -111,6 +111,8 @@ void ChartView::setTheme(QChart::ChartTheme theme) { axis_y->setLabelsBrush(palette().text()); chart()->legend()->setLabelColor(palette().color(QPalette::Text)); } + axis_x->setLineVisible(false); + axis_y->setLineVisible(false); for (auto &s : sigs) { s.series->setColor(s.sig->color); } @@ -745,8 +747,8 @@ void ChartView::drawTimeline(QPainter *painter) { const auto plot_area = chart()->plotArea(); // draw vertical time line qreal x = std::clamp(chart()->mapToPosition(QPointF{cur_sec, 0}).x(), plot_area.left(), plot_area.right()); - painter->setPen(QPen(chart()->titleBrush().color(), 2)); - painter->drawLine(QPointF{x, plot_area.top()}, QPointF{x, plot_area.bottom() + 1}); + painter->setPen(QPen(chart()->titleBrush().color(), 1)); + painter->drawLine(QPointF{x, plot_area.top() - 1}, QPointF{x, plot_area.bottom() + 1}); // draw current time under the axis-x QString time_str = QString::number(cur_sec, 'f', 2); diff --git a/tools/cabana/dbc/dbc.h b/tools/cabana/dbc/dbc.h index 71838a1df5..da44319b5c 100644 --- a/tools/cabana/dbc/dbc.h +++ b/tools/cabana/dbc/dbc.h @@ -29,11 +29,11 @@ struct MessageId { } bool operator<(const MessageId &other) const { - return std::pair{source, address} < std::pair{other.source, other.address}; + return std::tie(source, address) < std::tie(other.source, other.address); } bool operator>(const MessageId &other) const { - return std::pair{source, address} > std::pair{other.source, other.address}; + return std::tie(source, address) > std::tie(other.source, other.address); } }; diff --git a/tools/cabana/historylog.h b/tools/cabana/historylog.h index 8c9ee922f8..1ac6e5bbad 100644 --- a/tools/cabana/historylog.h +++ b/tools/cabana/historylog.h @@ -53,7 +53,7 @@ public: std::function filter_cmp = nullptr; std::deque messages; std::vector sigs; - bool hex_mode = true; + bool hex_mode = false; }; class LogsWidget : public QFrame { diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc index 4c3efa0385..396cfdc38b 100644 --- a/tools/cabana/messageswidget.cc +++ b/tools/cabana/messageswidget.cc @@ -43,7 +43,6 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget view->setItemsExpandable(false); view->setIndentation(0); view->setRootIsDecorated(false); - view->setUniformRowHeights(!settings.multiple_lines_hex); // Must be called before setting any header parameters to avoid overriding restoreHeaderState(settings.message_header_state); @@ -135,15 +134,9 @@ void MessagesWidget::selectMessage(const MessageId &msg_id) { } void MessagesWidget::suppressHighlighted() { - if (sender() == suppress_add) { - size_t n = can->suppressHighlighted(); - suppress_clear->setText(tr("Clear (%1)").arg(n)); - suppress_clear->setEnabled(true); - } else { - can->clearSuppressed(); - suppress_clear->setText(tr("Clear")); - suppress_clear->setEnabled(false); - } + int n = sender() == suppress_add ? can->suppressHighlighted() : (can->clearSuppressed(), 0); + suppress_clear->setText(n > 0 ? tr("Clear (%1)").arg(n) : tr("Clear")); + suppress_clear->setEnabled(n > 0); } void MessagesWidget::headerContextMenuEvent(const QPoint &pos) { @@ -174,7 +167,6 @@ void MessagesWidget::menuAboutToShow() { void MessagesWidget::setMultiLineBytes(bool multi) { settings.multiple_lines_hex = multi; delegate->setMultipleLines(multi); - view->setUniformRowHeights(!multi); view->updateBytesSectionSize(); view->doItemsLayout(); } @@ -207,22 +199,22 @@ QVariant MessageListModel::data(const QModelIndex &index, int role) const { } }; + const static QString NA = QStringLiteral("N/A"); const auto &item = items_[index.row()]; - const auto &data = can->lastMessage(item.id); if (role == Qt::DisplayRole) { switch (index.column()) { case Column::NAME: return item.name; - case Column::SOURCE: return item.id.source != INVALID_SOURCE ? QString::number(item.id.source) : "N/A"; + case Column::SOURCE: return item.id.source != INVALID_SOURCE ? QString::number(item.id.source) : NA; case Column::ADDRESS: return QString::number(item.id.address, 16); case Column::NODE: return item.node; - case Column::FREQ: return item.id.source != INVALID_SOURCE ? getFreq(data.freq) : "N/A"; - case Column::COUNT: return item.id.source != INVALID_SOURCE ? QString::number(data.count) : "N/A"; - case Column::DATA: return item.id.source != INVALID_SOURCE ? "" : "N/A"; + case Column::FREQ: return item.id.source != INVALID_SOURCE ? getFreq(can->lastMessage(item.id).freq) : NA; + case Column::COUNT: return item.id.source != INVALID_SOURCE ? QString::number(can->lastMessage(item.id).count) : NA; + case Column::DATA: return item.id.source != INVALID_SOURCE ? "" : NA; } } else if (role == ColorsRole) { - return QVariant::fromValue((void*)(&data.colors)); + return QVariant::fromValue((void*)(&can->lastMessage(item.id).colors)); } else if (role == BytesRole && index.column() == Column::DATA && item.id.source != INVALID_SOURCE) { - return QVariant::fromValue((void*)(&data.dat)); + return QVariant::fromValue((void*)(&can->lastMessage(item.id).dat)); } else if (role == Qt::ForegroundRole && !item.active) { return settings.theme == DARK_THEME ? QApplication::palette().color(QPalette::Text).darker(150) : QColor(Qt::gray); } else if (role == Qt::ToolTipRole && index.column() == Column::NAME) { @@ -366,18 +358,17 @@ bool MessageListModel::filterAndSort() { } void MessageListModel::msgsReceived(const std::set *new_msgs, bool has_new_ids) { - if (has_new_ids || filters_.contains(Column::FREQ) || filters_.contains(Column::COUNT) || filters_.contains(Column::DATA)) { + if (has_new_ids || ((filters_.count(Column::FREQ) || filters_.count(Column::COUNT) || filters_.count(Column::DATA)) && + ++sort_threshold_ == settings.fps)) { + sort_threshold_ = 0; if (filterAndSort()) return; } - for (int i = 0; i < items_.size(); ++i) { - auto &item = items_[i]; - bool prev_active = item.active; + + for (auto &item : items_) { item.active = isMessageActive(item.id); - if (item.active != prev_active || !new_msgs || new_msgs->count(item.id)) { - for (int col = 0; col < columnCount(); ++col) - emit dataChanged(index(i, col), index(i, col), {Qt::DisplayRole}); - } } + // Update viewport + emit dataChanged(index(0, 0), index(rowCount() - 1, columnCount() - 1)); } void MessageListModel::sort(int column, Qt::SortOrder order) { @@ -420,6 +411,7 @@ void MessageView::updateBytesSectionSize() { max_bytes = std::max(max_bytes, m.dat.size()); } } + setUniformRowHeights(!delegate->multipleLines() || max_bytes <= 8); header()->resizeSection(MessageListModel::Column::DATA, delegate->sizeForBytes(max_bytes).width()); } diff --git a/tools/cabana/messageswidget.h b/tools/cabana/messageswidget.h index c110db2b56..823fcb74e3 100644 --- a/tools/cabana/messageswidget.h +++ b/tools/cabana/messageswidget.h @@ -61,6 +61,7 @@ private: std::set dbc_messages_; int sort_column = 0; Qt::SortOrder sort_order = Qt::AscendingOrder; + int sort_threshold_ = 0; }; class MessageView : public QTreeView { diff --git a/tools/cabana/streams/abstractstream.cc b/tools/cabana/streams/abstractstream.cc index 9c52908c36..593d1bf5d8 100644 --- a/tools/cabana/streams/abstractstream.cc +++ b/tools/cabana/streams/abstractstream.cc @@ -130,6 +130,7 @@ void AbstractStream::updateLastMsgsTo(double sec) { current_sec_ = sec; uint64_t last_ts = (sec + routeStartTime()) * 1e9; std::unordered_map msgs; + msgs.reserve(events_.size()); for (const auto &[id, ev] : events_) { auto it = std::upper_bound(ev.begin(), ev.end(), last_ts, CompareCanEvent()); @@ -171,6 +172,8 @@ const CanEvent *AbstractStream::newEvent(uint64_t mono_time, const cereal::CanDa void AbstractStream::mergeEvents(const std::vector &events) { static MessageEventsMap msg_events; std::for_each(msg_events.begin(), msg_events.end(), [](auto &e) { e.second.clear(); }); + + // Group events by message ID for (auto e : events) { msg_events[{.source = e->src, .address = e->address}].push_back(e); } @@ -207,7 +210,7 @@ inline QColor blend(const QColor &a, const QColor &b) { return QColor((a.red() + b.red()) / 2, (a.green() + b.green()) / 2, (a.blue() + b.blue()) / 2, (a.alpha() + b.alpha()) / 2); } -// Calculate the frequency of the past minute. +// Calculate the frequency from the past one minute data double calc_freq(const MessageId &msg_id, double current_sec) { const auto &events = can->events(msg_id); uint64_t cur_mono_time = (can->routeStartTime() + current_sec) * 1e9; @@ -255,11 +258,8 @@ void CanData::compute(const MessageId &msg_id, const uint8_t *can_data, const in if (last != cur) { const int delta = cur - last; // Keep track if signal is changing randomly, or mostly moving in the same direction - if (std::signbit(delta) == std::signbit(last_change.delta)) { - last_change.same_delta_counter = std::min(16, last_change.same_delta_counter + 1); - } else { - last_change.same_delta_counter = std::max(0, last_change.same_delta_counter - 4); - } + last_change.same_delta_counter += std::signbit(delta) == std::signbit(last_change.delta) ? 1 : -4; + last_change.same_delta_counter = std::clamp(last_change.same_delta_counter, 0, 16); const double delta_t = ts - last_change.ts; // Mostly moves in the same direction, color based on delta up/down @@ -272,10 +272,10 @@ void CanData::compute(const MessageId &msg_id, const uint8_t *can_data, const in } // Track bit level changes - const uint8_t tmp = (cur ^ last); + const uint8_t diff = (cur ^ last); for (int bit = 0; bit < 8; bit++) { - if (tmp & (1 << (7 - bit))) { - last_change.bit_change_counts[bit] += 1; + if (diff & (1u << bit)) { + ++last_change.bit_change_counts[7 - bit]; } } diff --git a/tools/cabana/utils/util.cc b/tools/cabana/utils/util.cc index f85ea6d105..4556f90850 100644 --- a/tools/cabana/utils/util.cc +++ b/tools/cabana/utils/util.cc @@ -51,7 +51,8 @@ std::pair SegmentTree::get_minmax(int n, int left, int right, in // MessageBytesDelegate -MessageBytesDelegate::MessageBytesDelegate(QObject *parent, bool multiple_lines) : multiple_lines(multiple_lines), QStyledItemDelegate(parent) { +MessageBytesDelegate::MessageBytesDelegate(QObject *parent, bool multiple_lines) + : font_metrics(QApplication::font()), multiple_lines(multiple_lines), QStyledItemDelegate(parent) { fixed_font = QFontDatabase::systemFont(QFontDatabase::FixedFont); byte_size = QFontMetrics(fixed_font).size(Qt::TextSingleLine, "00 ") + QSize(0, 2); for (int i = 0; i < 256; ++i) { @@ -73,31 +74,38 @@ QSize MessageBytesDelegate::sizeHint(const QStyleOptionViewItem &option, const Q } void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { - auto data = index.data(BytesRole); - if (!data.isValid()) { - return QStyledItemDelegate::paint(painter, option, index); - } - - QFont old_font = painter->font(); - QPen old_pen = painter->pen(); if (option.state & QStyle::State_Selected) { painter->fillRect(option.rect, option.palette.brush(QPalette::Normal, QPalette::Highlight)); } - const QPoint pt{option.rect.left() + h_margin, option.rect.top() + v_margin}; - painter->setFont(fixed_font); - const auto &bytes = *static_cast*>(data.value()); - const auto &colors = *static_cast*>(index.data(ColorsRole).value()); + QRect item_rect = option.rect.adjusted(h_margin, v_margin, -h_margin, -v_margin); + QColor highlighted_color = option.palette.color(QPalette::HighlightedText); auto text_color = index.data(Qt::ForegroundRole).value(); bool inactive = text_color.isValid(); if (!inactive) { text_color = option.palette.color(QPalette::Text); } + auto data = index.data(BytesRole); + if (!data.isValid()) { + painter->setFont(option.font); + painter->setPen(option.state & QStyle::State_Selected ? highlighted_color : text_color); + QString text = font_metrics.elidedText(index.data(Qt::DisplayRole).toString(), Qt::ElideRight, item_rect.width()); + painter->drawText(item_rect, Qt::AlignLeft | Qt::AlignVCenter, text); + return; + } + // Paint hex column + const auto &bytes = *static_cast *>(data.value()); + const auto &colors = *static_cast *>(index.data(ColorsRole).value()); + + painter->setFont(fixed_font); + const QPen text_pen(option.state & QStyle::State_Selected ? highlighted_color : text_color); + const QPoint pt = item_rect.topLeft(); for (int i = 0; i < bytes.size(); ++i) { int row = !multiple_lines ? 0 : i / 8; int column = !multiple_lines ? i : i % 8; - QRect r = QRect({pt.x() + column * byte_size.width(), pt.y() + row * byte_size.height()}, byte_size); + QRect r({pt.x() + column * byte_size.width(), pt.y() + row * byte_size.height()}, byte_size); + if (!inactive && i < colors.size() && colors[i].alpha() > 0) { if (option.state & QStyle::State_Selected) { painter->setPen(option.palette.color(QPalette::Text)); @@ -105,12 +113,10 @@ void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem & } painter->fillRect(r, colors[i]); } else { - painter->setPen(option.state & QStyle::State_Selected ? option.palette.color(QPalette::HighlightedText) : text_color); + painter->setPen(text_pen); } utils::drawStaticText(painter, r, hex_text_table[bytes[i]]); } - painter->setFont(old_font); - painter->setPen(old_pen); } // TabBar diff --git a/tools/cabana/utils/util.h b/tools/cabana/utils/util.h index 218b8eeb51..0ebd7e41f8 100644 --- a/tools/cabana/utils/util.h +++ b/tools/cabana/utils/util.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -76,6 +77,7 @@ public: private: std::array hex_text_table; + QFontMetrics font_metrics; QFont fixed_font; QSize byte_size = {}; bool multiple_lines = false; From 97dc444023eafbd1dfa45855edc27fbeb6909be5 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 24 Apr 2024 17:05:18 -0700 Subject: [PATCH 513/599] fix uiview (#32290) * fix uiview * add DMoji! --- selfdrive/debug/uiview.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/selfdrive/debug/uiview.py b/selfdrive/debug/uiview.py index f4440a912c..958ee72e04 100755 --- a/selfdrive/debug/uiview.py +++ b/selfdrive/debug/uiview.py @@ -4,12 +4,13 @@ import time from cereal import car, log, messaging from openpilot.common.params import Params from openpilot.selfdrive.manager.process_config import managed_processes +from openpilot.system.hardware import HARDWARE if __name__ == "__main__": - CP = car.CarParams(notCar=True) + CP = car.CarParams(notCar=True, wheelbase=1, steerRatio=10) Params().put("CarParams", CP.to_bytes()) - procs = ['camerad', 'ui', 'modeld', 'calibrationd'] + procs = ['camerad', 'ui', 'modeld', 'calibrationd', 'plannerd', 'dmonitoringmodeld', 'dmonitoringd'] for p in procs: managed_processes[p].start() @@ -17,6 +18,7 @@ if __name__ == "__main__": msgs = {s: messaging.new_message(s) for s in ['controlsState', 'deviceState', 'carParams']} msgs['deviceState'].deviceState.started = True + msgs['deviceState'].deviceState.deviceType = HARDWARE.get_device_type() msgs['carParams'].carParams.openpilotLongitudinalControl = True msgs['pandaStates'] = messaging.new_message('pandaStates', 1) From b13456f81fdd6b0e83ba79e71f1f67fe6d220af9 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 25 Apr 2024 10:44:18 +0800 Subject: [PATCH 514/599] replay: shared decoder context (#32255) share decoder context cleanup includes --- tools/replay/framereader.cc | 162 ++++++++++++++++++++++-------------- tools/replay/framereader.h | 43 ++++++---- tools/replay/route.cc | 2 +- 3 files changed, 125 insertions(+), 82 deletions(-) diff --git a/tools/replay/framereader.cc b/tools/replay/framereader.cc index fb70a82c40..26ef4684a4 100644 --- a/tools/replay/framereader.cc +++ b/tools/replay/framereader.cc @@ -1,5 +1,10 @@ #include "tools/replay/framereader.h" +#include +#include +#include +#include + #include "common/util.h" #include "third_party/libyuv/include/libyuv.h" #include "tools/replay/util.h" @@ -12,7 +17,6 @@ #define HW_PIX_FMT AV_PIX_FMT_CUDA #endif - namespace { enum AVPixelFormat get_hw_format(AVCodecContext *ctx, const enum AVPixelFormat *pix_fmts) { @@ -21,11 +25,32 @@ enum AVPixelFormat get_hw_format(AVCodecContext *ctx, const enum AVPixelFormat * if (*p == *hw_pix_fmt) return *p; } rWarning("Please run replay with the --no-hw-decoder flag!"); - // fallback to YUV420p *hw_pix_fmt = AV_PIX_FMT_NONE; return AV_PIX_FMT_YUV420P; } +struct DecoderManager { + VideoDecoder *acquire(CameraType type, AVCodecParameters *codecpar, bool hw_decoder) { + auto key = std::tuple(type, codecpar->width, codecpar->height); + std::unique_lock lock(mutex_); + if (auto it = decoders_.find(key); it != decoders_.end()) { + return it->second.get(); + } + + auto decoder = std::make_unique(); + if (!decoder->open(codecpar, hw_decoder)) { + decoder.reset(nullptr); + } + decoders_[key] = std::move(decoder); + return decoders_[key].get(); + } + + std::mutex mutex_; + std::map, std::unique_ptr> decoders_; +}; + +DecoderManager decoder_manager; + } // namespace FrameReader::FrameReader() { @@ -33,12 +58,10 @@ FrameReader::FrameReader() { } FrameReader::~FrameReader() { - if (decoder_ctx) avcodec_free_context(&decoder_ctx); if (input_ctx) avformat_close_input(&input_ctx); - if (hw_device_ctx) av_buffer_unref(&hw_device_ctx); } -bool FrameReader::load(const std::string &url, bool no_hw_decoder, std::atomic *abort, bool local_cache, int chunk_size, int retries) { +bool FrameReader::load(CameraType type, const std::string &url, bool no_hw_decoder, std::atomic *abort, bool local_cache, int chunk_size, int retries) { auto local_file_path = url.find("https://") == 0 ? cacheFilePath(url) : url; if (!util::file_exists(local_file_path)) { FileReader f(local_cache, chunk_size, retries); @@ -46,10 +69,10 @@ bool FrameReader::load(const std::string &url, bool no_hw_decoder, std::atomic *abort) { +bool FrameReader::loadFromFile(CameraType type, const std::string &file, bool no_hw_decoder, std::atomic *abort) { if (avformat_open_input(&input_ctx, file.c_str(), nullptr, nullptr) != 0 || avformat_find_stream_info(input_ctx, nullptr) < 0) { rError("Failed to open input file or find video stream"); @@ -57,27 +80,12 @@ bool FrameReader::loadFromFile(const std::string &file, bool no_hw_decoder, std: } input_ctx->probesize = 10 * 1024 * 1024; // 10MB - AVStream *video = input_ctx->streams[0]; - const AVCodec *decoder = avcodec_find_decoder(video->codecpar->codec_id); - if (!decoder) return false; - - decoder_ctx = avcodec_alloc_context3(decoder); - if (!decoder_ctx || avcodec_parameters_to_context(decoder_ctx, video->codecpar) != 0) { - rError("Failed to allocate or initialize codec context"); - return false; - } - - width = (decoder_ctx->width + 3) & ~3; - height = decoder_ctx->height; - - if (has_hw_decoder && !no_hw_decoder && !initHardwareDecoder(HW_DEVICE_TYPE)) { - rWarning("No device with hardware decoder found. fallback to CPU decoding."); - } - - if (avcodec_open2(decoder_ctx, decoder, nullptr) < 0) { - rError("Failed to open codec"); + decoder_ = decoder_manager.acquire(type, input_ctx->streams[0]->codecpar, !no_hw_decoder); + if (!decoder_) { return false; } + width = decoder_->width; + height = decoder_->height; AVPacket pkt; packets_info.reserve(60 * 20); // 20fps, one minute @@ -85,29 +93,70 @@ bool FrameReader::loadFromFile(const std::string &file, bool no_hw_decoder, std: packets_info.emplace_back(PacketInfo{.flags = pkt.flags, .pos = pkt.pos}); av_packet_unref(&pkt); } - avio_seek(input_ctx->pb, 0, SEEK_SET); return !packets_info.empty(); } -bool FrameReader::initHardwareDecoder(AVHWDeviceType hw_device_type) { - for (int i = 0;; i++) { - const AVCodecHWConfig *config = avcodec_get_hw_config(decoder_ctx->codec, i); - if (!config) { - rWarning("decoder %s does not support hw device type %s.", decoder_ctx->codec->name, - av_hwdevice_get_type_name(hw_device_type)); - return false; - } +bool FrameReader::get(int idx, VisionBuf *buf) { + if (!buf || idx < 0 || idx >= packets_info.size()) { + return false; + } + return decoder_->decode(this, idx, buf); +} + +// class VideoDecoder + +VideoDecoder::VideoDecoder() { + av_frame_ = av_frame_alloc(); + hw_frame_ = av_frame_alloc(); +} + +VideoDecoder::~VideoDecoder() { + if (hw_device_ctx) av_buffer_unref(&hw_device_ctx); + if (decoder_ctx) avcodec_free_context(&decoder_ctx); + av_frame_free(&av_frame_); + av_frame_free(&hw_frame_); +} + +bool VideoDecoder::open(AVCodecParameters *codecpar, bool hw_decoder) { + const AVCodec *decoder = avcodec_find_decoder(codecpar->codec_id); + if (!decoder) return false; + + decoder_ctx = avcodec_alloc_context3(decoder); + if (!decoder_ctx || avcodec_parameters_to_context(decoder_ctx, codecpar) != 0) { + rError("Failed to allocate or initialize codec context"); + return false; + } + width = (decoder_ctx->width + 3) & ~3; + height = decoder_ctx->height; + + if (hw_decoder && !initHardwareDecoder(HW_DEVICE_TYPE)) { + rWarning("No device with hardware decoder found. fallback to CPU decoding."); + } + + if (avcodec_open2(decoder_ctx, decoder, nullptr) < 0) { + rError("Failed to open codec"); + return false; + } + return true; +} + +bool VideoDecoder::initHardwareDecoder(AVHWDeviceType hw_device_type) { + const AVCodecHWConfig *config = nullptr; + for (int i = 0; (config = avcodec_get_hw_config(decoder_ctx->codec, i)) != nullptr; i++) { if (config->methods & AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX && config->device_type == hw_device_type) { hw_pix_fmt = config->pix_fmt; break; } } + if (!config) { + rWarning("Hardware configuration not found"); + return false; + } int ret = av_hwdevice_ctx_create(&hw_device_ctx, hw_device_type, nullptr, nullptr, 0); if (ret < 0) { hw_pix_fmt = AV_PIX_FMT_NONE; - has_hw_decoder = false; rWarning("Failed to create specified HW device %d.", ret); return false; } @@ -118,34 +167,27 @@ bool FrameReader::initHardwareDecoder(AVHWDeviceType hw_device_type) { return true; } -bool FrameReader::get(int idx, VisionBuf *buf) { - if (!buf || idx < 0 || idx >= packets_info.size()) { - return false; - } - return decode(idx, buf); -} - -bool FrameReader::decode(int idx, VisionBuf *buf) { +bool VideoDecoder::decode(FrameReader *reader, int idx, VisionBuf *buf) { int from_idx = idx; - if (idx != prev_idx + 1) { + if (idx != reader->prev_idx + 1) { // seeking to the nearest key frame for (int i = idx; i >= 0; --i) { - if (packets_info[i].flags & AV_PKT_FLAG_KEY) { + if (reader->packets_info[i].flags & AV_PKT_FLAG_KEY) { from_idx = i; break; } } - avio_seek(input_ctx->pb, packets_info[from_idx].pos, SEEK_SET); + avio_seek(reader->input_ctx->pb, reader->packets_info[from_idx].pos, SEEK_SET); } - prev_idx = idx; + reader->prev_idx = idx; bool result = false; AVPacket pkt; for (int i = from_idx; i <= idx; ++i) { - if (av_read_frame(input_ctx, &pkt) == 0) { + if (av_read_frame(reader->input_ctx, &pkt) == 0) { AVFrame *f = decodeFrame(&pkt); if (f && i == idx) { - result = copyBuffers(f, buf); + result = copyBuffer(f, buf); } av_packet_unref(&pkt); } @@ -153,33 +195,27 @@ bool FrameReader::decode(int idx, VisionBuf *buf) { return result; } -AVFrame *FrameReader::decodeFrame(AVPacket *pkt) { +AVFrame *VideoDecoder::decodeFrame(AVPacket *pkt) { int ret = avcodec_send_packet(decoder_ctx, pkt); if (ret < 0) { rError("Error sending a packet for decoding: %d", ret); return nullptr; } - av_frame_.reset(av_frame_alloc()); - ret = avcodec_receive_frame(decoder_ctx, av_frame_.get()); + ret = avcodec_receive_frame(decoder_ctx, av_frame_); if (ret != 0) { rError("avcodec_receive_frame error: %d", ret); return nullptr; } - if (av_frame_->format == hw_pix_fmt) { - hw_frame.reset(av_frame_alloc()); - if ((ret = av_hwframe_transfer_data(hw_frame.get(), av_frame_.get(), 0)) < 0) { - rError("error transferring the data from GPU to CPU"); - return nullptr; - } - return hw_frame.get(); - } else { - return av_frame_.get(); + if (av_frame_->format == hw_pix_fmt && av_hwframe_transfer_data(hw_frame_, av_frame_, 0) < 0) { + rError("error transferring frame data from GPU to CPU"); + return nullptr; } + return (av_frame_->format == hw_pix_fmt) ? hw_frame_ : av_frame_; } -bool FrameReader::copyBuffers(AVFrame *f, VisionBuf *buf) { +bool VideoDecoder::copyBuffer(AVFrame *f, VisionBuf *buf) { if (hw_pix_fmt == HW_PIX_FMT) { for (int i = 0; i < height/2; i++) { memcpy(buf->y + (i*2 + 0)*buf->stride, f->data[0] + (i*2 + 0)*f->linesize[0], width); diff --git a/tools/replay/framereader.h b/tools/replay/framereader.h index a25b508cc7..b9abefb7c3 100644 --- a/tools/replay/framereader.h +++ b/tools/replay/framereader.h @@ -1,10 +1,10 @@ #pragma once -#include #include #include #include "cereal/visionipc/visionbuf.h" +#include "system/camerad/cameras/camera_common.h" #include "tools/replay/filereader.h" extern "C" { @@ -12,39 +12,46 @@ extern "C" { #include } -struct AVFrameDeleter { - void operator()(AVFrame* frame) const { av_frame_free(&frame); } -}; +class VideoDecoder; class FrameReader { public: FrameReader(); ~FrameReader(); - bool load(const std::string &url, bool no_hw_decoder = false, std::atomic *abort = nullptr, bool local_cache = false, + bool load(CameraType type, const std::string &url, bool no_hw_decoder = false, std::atomic *abort = nullptr, bool local_cache = false, int chunk_size = -1, int retries = 0); - bool loadFromFile(const std::string &file, bool no_hw_decoder = false, std::atomic *abort = nullptr); + bool loadFromFile(CameraType type, const std::string &file, bool no_hw_decoder = false, std::atomic *abort = nullptr); bool get(int idx, VisionBuf *buf); size_t getFrameCount() const { return packets_info.size(); } int width = 0, height = 0; -private: - bool initHardwareDecoder(AVHWDeviceType hw_device_type); - bool decode(int idx, VisionBuf *buf); - AVFrame * decodeFrame(AVPacket *pkt); - bool copyBuffers(AVFrame *f, VisionBuf *buf); - - std::unique_ptrav_frame_, hw_frame; + VideoDecoder *decoder_ = nullptr; AVFormatContext *input_ctx = nullptr; - AVCodecContext *decoder_ctx = nullptr; - - AVPixelFormat hw_pix_fmt = AV_PIX_FMT_NONE; - AVBufferRef *hw_device_ctx = nullptr; int prev_idx = -1; struct PacketInfo { int flags; int64_t pos; }; std::vector packets_info; - inline static std::atomic has_hw_decoder = true; +}; + + +class VideoDecoder { +public: + VideoDecoder(); + ~VideoDecoder(); + bool open(AVCodecParameters *codecpar, bool hw_decoder); + bool decode(FrameReader *reader, int idx, VisionBuf *buf); + int width = 0, height = 0; + +private: + bool initHardwareDecoder(AVHWDeviceType hw_device_type); + AVFrame *decodeFrame(AVPacket *pkt); + bool copyBuffer(AVFrame *f, VisionBuf *buf); + + AVFrame *av_frame_, *hw_frame_; + AVCodecContext *decoder_ctx = nullptr; + AVPixelFormat hw_pix_fmt = AV_PIX_FMT_NONE; + AVBufferRef *hw_device_ctx = nullptr; }; diff --git a/tools/replay/route.cc b/tools/replay/route.cc index 1c7010eb8a..e8e73459ea 100644 --- a/tools/replay/route.cc +++ b/tools/replay/route.cc @@ -160,7 +160,7 @@ void Segment::loadFile(int id, const std::string file) { bool success = false; if (id < MAX_CAMERAS) { frames[id] = std::make_unique(); - success = frames[id]->load(file, flags & REPLAY_FLAG_NO_HW_DECODER, &abort_, local_cache, 20 * 1024 * 1024, 3); + success = frames[id]->load((CameraType)id, file, flags & REPLAY_FLAG_NO_HW_DECODER, &abort_, local_cache, 20 * 1024 * 1024, 3); } else { log = std::make_unique(filters_); success = log->load(file, &abort_, local_cache, 0, 3); From bbbd510fcc37b507010c9499edbb3622574dcf4b Mon Sep 17 00:00:00 2001 From: Mauricio Alvarez Leon <65101411+BBBmau@users.noreply.github.com> Date: Wed, 24 Apr 2024 19:47:22 -0700 Subject: [PATCH 515/599] update pip/poetry versions (#32289) --- tools/install_python_dependencies.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/install_python_dependencies.sh b/tools/install_python_dependencies.sh index f7ba316480..df815b582f 100755 --- a/tools/install_python_dependencies.sh +++ b/tools/install_python_dependencies.sh @@ -54,8 +54,8 @@ fi eval "$(pyenv init --path)" echo "update pip" -pip install pip==23.3 -pip install poetry==1.6.1 +pip install pip==24.0 +pip install poetry==1.7.0 poetry config virtualenvs.prefer-active-python true --local poetry config virtualenvs.in-project true --local From 06c4a541da5ec703074024e75ab11713f3da39fd Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 25 Apr 2024 11:14:42 +0800 Subject: [PATCH 516/599] ui/map: check valid before accessing `PositionECEF` (#31961) check valid --- selfdrive/ui/qt/maps/map.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/selfdrive/ui/qt/maps/map.cc b/selfdrive/ui/qt/maps/map.cc index 664364e04f..5f178e9f8f 100644 --- a/selfdrive/ui/qt/maps/map.cc +++ b/selfdrive/ui/qt/maps/map.cc @@ -123,12 +123,15 @@ void MapWindow::updateState(const UIState &s) { auto locationd_pos = locationd_location.getPositionGeodetic(); auto locationd_orientation = locationd_location.getCalibratedOrientationNED(); auto locationd_velocity = locationd_location.getVelocityCalibrated(); + auto locationd_ecef = locationd_location.getPositionECEF(); - // Check std norm - auto pos_ecef_std = locationd_location.getPositionECEF().getStd(); - bool pos_accurate_enough = sqrt(pow(pos_ecef_std[0], 2) + pow(pos_ecef_std[1], 2) + pow(pos_ecef_std[2], 2)) < 100; - - locationd_valid = (locationd_pos.getValid() && locationd_orientation.getValid() && locationd_velocity.getValid() && pos_accurate_enough); + locationd_valid = (locationd_pos.getValid() && locationd_orientation.getValid() && locationd_velocity.getValid() && locationd_ecef.getValid()); + if (locationd_valid) { + // Check std norm + auto pos_ecef_std = locationd_ecef.getStd(); + bool pos_accurate_enough = sqrt(pow(pos_ecef_std[0], 2) + pow(pos_ecef_std[1], 2) + pow(pos_ecef_std[2], 2)) < 100; + locationd_valid = pos_accurate_enough; + } if (locationd_valid) { last_position = QMapLibre::Coordinate(locationd_pos.getValue()[0], locationd_pos.getValue()[1]); From 3bcb6f82afa47405d70a3cfd6bfe7eab2fceb1b4 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 25 Apr 2024 11:15:37 +0800 Subject: [PATCH 517/599] ui/network: add error handling for refreshFinished (#32167) --- selfdrive/ui/qt/network/wifi_manager.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/selfdrive/ui/qt/network/wifi_manager.cc b/selfdrive/ui/qt/network/wifi_manager.cc index 0c50d02f4f..c7991990eb 100644 --- a/selfdrive/ui/qt/network/wifi_manager.cc +++ b/selfdrive/ui/qt/network/wifi_manager.cc @@ -99,10 +99,20 @@ void WifiManager::refreshFinished(QDBusPendingCallWatcher *watcher) { seenNetworks.clear(); const QDBusReply> watcher_reply = *watcher; + if (!watcher_reply.isValid()) { + qCritical() << "Failed to refresh"; + watcher->deleteLater(); + return; + } + for (const QDBusObjectPath &path : watcher_reply.value()) { QDBusReply reply = call(path.path(), NM_DBUS_INTERFACE_PROPERTIES, "GetAll", NM_DBUS_INTERFACE_ACCESS_POINT); - auto properties = reply.value(); + if (!reply.isValid()) { + qCritical() << "Failed to retrieve properties for path:" << path.path(); + continue; + } + auto properties = reply.value(); const QByteArray ssid = properties["Ssid"].toByteArray(); if (ssid.isEmpty()) continue; From d7d378aeefb10b9194e14534b075615216b117af Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 25 Apr 2024 11:16:02 +0800 Subject: [PATCH 518/599] ui/network: add error handing for dbus `call` (#32164) --- selfdrive/ui/qt/network/wifi_manager.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/selfdrive/ui/qt/network/wifi_manager.cc b/selfdrive/ui/qt/network/wifi_manager.cc index c7991990eb..717da47096 100644 --- a/selfdrive/ui/qt/network/wifi_manager.cc +++ b/selfdrive/ui/qt/network/wifi_manager.cc @@ -1,5 +1,7 @@ #include "selfdrive/ui/qt/network/wifi_manager.h" +#include + #include "selfdrive/ui/ui.h" #include "selfdrive/ui/qt/widgets/prime.h" @@ -14,9 +16,15 @@ bool compare_by_strength(const Network &a, const Network &b) { template T call(const QString &path, const QString &interface, const QString &method, Args &&...args) { - QDBusInterface nm = QDBusInterface(NM_DBUS_SERVICE, path, interface, QDBusConnection::systemBus()); + QDBusInterface nm(NM_DBUS_SERVICE, path, interface, QDBusConnection::systemBus()); nm.setTimeout(DBUS_TIMEOUT); - QDBusMessage response = nm.call(method, args...); + + QDBusMessage response = nm.call(method, std::forward(args)...); + if (response.type() == QDBusMessage::ErrorMessage) { + qCritical() << "DBus call error:" << response.errorMessage(); + return T(); + } + if constexpr (std::is_same_v) { return response; } else if (response.arguments().count() >= 1) { From 3efd0ff4fa504b699171ec967dce6bef9f78baa4 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 26 Apr 2024 01:35:49 +0800 Subject: [PATCH 519/599] cabana: increase cache limits (#32295) --- tools/cabana/settings.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/cabana/settings.cc b/tools/cabana/settings.cc index b63789a026..523cbf3be7 100644 --- a/tools/cabana/settings.cc +++ b/tools/cabana/settings.cc @@ -12,6 +12,9 @@ #include "tools/cabana/utils/util.h" +const int MIN_CACHE_MINIUTES = 30; +const int MAX_CACHE_MINIUTES = 120; + Settings settings; template @@ -72,7 +75,7 @@ SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) { fps->setValue(settings.fps); form_layout->addRow(tr("Max Cached Minutes"), cached_minutes = new QSpinBox(this)); - cached_minutes->setRange(5, 60); + cached_minutes->setRange(MIN_CACHE_MINIUTES, MAX_CACHE_MINIUTES); cached_minutes->setSingleStep(1); cached_minutes->setValue(settings.max_cached_minutes); main_layout->addWidget(groupbox); From 7e6dda546ee58d4cf05352f9ff9fab97b3e9464f Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 26 Apr 2024 02:05:45 +0800 Subject: [PATCH 520/599] ui/cameraview: merge EGL Image Clearing code into `clearEGLImages()` (#32292) --- selfdrive/ui/qt/widgets/cameraview.cc | 37 ++++++++++----------------- selfdrive/ui/qt/widgets/cameraview.h | 1 + 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/selfdrive/ui/qt/widgets/cameraview.cc b/selfdrive/ui/qt/widgets/cameraview.cc index e4f1396268..16a5ffbf07 100644 --- a/selfdrive/ui/qt/widgets/cameraview.cc +++ b/selfdrive/ui/qt/widgets/cameraview.cc @@ -6,14 +6,6 @@ #include #endif -#include -#include -#include -#include - -#include -#include - namespace { const char frame_vertex_shader[] = @@ -197,15 +189,7 @@ void CameraWidget::stopVipcThread() { vipc_thread = nullptr; } -#ifdef QCOM2 - EGLDisplay egl_display = eglGetCurrentDisplay(); - assert(egl_display != EGL_NO_DISPLAY); - for (auto &pair : egl_images) { - eglDestroyImageKHR(egl_display, pair.second); - assert(eglGetError() == EGL_SUCCESS); - } - egl_images.clear(); -#endif + clearEGLImages(); } void CameraWidget::availableStreamsUpdated(std::set streams) { @@ -336,12 +320,7 @@ void CameraWidget::vipcConnected(VisionIpcClient *vipc_client) { stream_stride = vipc_client->buffers[0].stride; #ifdef QCOM2 - EGLDisplay egl_display = eglGetCurrentDisplay(); - assert(egl_display != EGL_NO_DISPLAY); - for (auto &pair : egl_images) { - eglDestroyImageKHR(egl_display, pair.second); - } - egl_images.clear(); + clearEGLImages(); for (int i = 0; i < vipc_client->num_buffers; i++) { // import buffers into OpenGL int fd = dup(vipc_client->buffers[i].fd); // eglDestroyImageKHR will close, so duplicate @@ -435,3 +414,15 @@ void CameraWidget::clearFrames() { frames.clear(); available_streams.clear(); } + + +void CameraWidget::clearEGLImages() { +#ifdef QCOM2 + EGLDisplay egl_display = eglGetCurrentDisplay(); + assert(egl_display != EGL_NO_DISPLAY); + for (auto &pair : egl_images) { + eglDestroyImageKHR(egl_display, pair.second); + } + egl_images.clear(); +#endif +} diff --git a/selfdrive/ui/qt/widgets/cameraview.h b/selfdrive/ui/qt/widgets/cameraview.h index c97038cf43..4f1cbede69 100644 --- a/selfdrive/ui/qt/widgets/cameraview.h +++ b/selfdrive/ui/qt/widgets/cameraview.h @@ -58,6 +58,7 @@ protected: void updateCalibration(const mat3 &calib); void vipcThread(); void clearFrames(); + void clearEGLImages(); int glWidth(); int glHeight(); From edb683a62bf0944974d9c781b3fe1ab4daba739b Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 26 Apr 2024 02:08:27 +0800 Subject: [PATCH 521/599] camerad: Localizing the variable "ret" (#32294) Localizing the variable "ret" --- system/camerad/cameras/camera_qcom2.cc | 16 +++++----------- system/camerad/cameras/camera_util.cc | 3 +-- system/camerad/main.cc | 3 +-- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/system/camerad/cameras/camera_qcom2.cc b/system/camerad/cameras/camera_qcom2.cc index 081279d38d..096e288cc2 100644 --- a/system/camerad/cameras/camera_qcom2.cc +++ b/system/camerad/cameras/camera_qcom2.cc @@ -31,8 +31,7 @@ int CameraState::clear_req_queue() { req_mgr_flush_request.session_hdl = session_handle; req_mgr_flush_request.link_hdl = link_handle; req_mgr_flush_request.flush_type = CAM_REQ_MGR_FLUSH_TYPE_ALL; - int ret; - ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_FLUSH_REQ, &req_mgr_flush_request, sizeof(req_mgr_flush_request)); + int ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_FLUSH_REQ, &req_mgr_flush_request, sizeof(req_mgr_flush_request)); // LOGD("flushed all req: %d", ret); return ret; } @@ -470,7 +469,6 @@ void CameraState::camera_open(MultiCameraState *multi_cam_state_, int camera_num enabled = enabled_; if (!enabled) return; - int ret; sensor_fd = open_v4l_by_name_and_index("cam-sensor-driver", camera_num); assert(sensor_fd >= 0); LOGD("opened sensor for %d", camera_num); @@ -501,7 +499,7 @@ void CameraState::camera_open(MultiCameraState *multi_cam_state_, int camera_num // create session struct cam_req_mgr_session_info session_info = {}; - ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_CREATE_SESSION, &session_info, sizeof(session_info)); + int ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_CREATE_SESSION, &session_info, sizeof(session_info)); LOGD("get session: %d 0x%X", ret, session_info.session_hdl); session_handle = session_info.session_hdl; @@ -654,8 +652,6 @@ void cameras_init(VisionIpcServer *v, MultiCameraState *s, cl_device_id device_i } void cameras_open(MultiCameraState *s) { - int ret; - LOG("-- Opening devices"); // video0 is req_mgr, the target of many ioctls s->video0_fd = HANDLE_EINTR(open("/dev/v4l/by-path/platform-soc:qcom_cam-req-mgr-video-index0", O_RDWR | O_NONBLOCK)); @@ -679,7 +675,7 @@ void cameras_open(MultiCameraState *s) { query_cap_cmd.handle_type = 1; query_cap_cmd.caps_handle = (uint64_t)&isp_query_cap_cmd; query_cap_cmd.size = sizeof(isp_query_cap_cmd); - ret = do_cam_control(s->isp_fd, CAM_QUERY_CAP, &query_cap_cmd, sizeof(query_cap_cmd)); + int ret = do_cam_control(s->isp_fd, CAM_QUERY_CAP, &query_cap_cmd, sizeof(query_cap_cmd)); assert(ret == 0); LOGD("using MMU handle: %x", isp_query_cap_cmd.device_iommu.non_secure); LOGD("using MMU handle: %x", isp_query_cap_cmd.cdm_iommu.non_secure); @@ -703,15 +699,13 @@ void cameras_open(MultiCameraState *s) { } void CameraState::camera_close() { - int ret; - // stop devices LOG("-- Stop devices %d", camera_num); if (enabled) { // ret = device_control(sensor_fd, CAM_STOP_DEV, session_handle, sensor_dev_handle); // LOGD("stop sensor: %d", ret); - ret = device_control(multi_cam_state->isp_fd, CAM_STOP_DEV, session_handle, isp_dev_handle); + int ret = device_control(multi_cam_state->isp_fd, CAM_STOP_DEV, session_handle, isp_dev_handle); LOGD("stop isp: %d", ret); ret = device_control(csiphy_fd, CAM_STOP_DEV, session_handle, csiphy_dev_handle); LOGD("stop csiphy: %d", ret); @@ -746,7 +740,7 @@ void CameraState::camera_close() { LOGD("released buffers"); } - ret = device_control(sensor_fd, CAM_RELEASE_DEV, session_handle, sensor_dev_handle); + int ret = device_control(sensor_fd, CAM_RELEASE_DEV, session_handle, sensor_dev_handle); LOGD("release sensor: %d", ret); // destroyed session diff --git a/system/camerad/cameras/camera_util.cc b/system/camerad/cameras/camera_util.cc index 4fe38997ce..7bd23fd9fe 100644 --- a/system/camerad/cameras/camera_util.cc +++ b/system/camerad/cameras/camera_util.cc @@ -86,11 +86,10 @@ void *alloc_w_mmu_hdl(int video0_fd, int len, uint32_t *handle, int align, int f } void release(int video0_fd, uint32_t handle) { - int ret; struct cam_mem_mgr_release_cmd mem_mgr_release_cmd = {0}; mem_mgr_release_cmd.buf_handle = handle; - ret = do_cam_control(video0_fd, CAM_REQ_MGR_RELEASE_BUF, &mem_mgr_release_cmd, sizeof(mem_mgr_release_cmd)); + int ret = do_cam_control(video0_fd, CAM_REQ_MGR_RELEASE_BUF, &mem_mgr_release_cmd, sizeof(mem_mgr_release_cmd)); assert(ret == 0); } diff --git a/system/camerad/main.cc b/system/camerad/main.cc index 19de21c9bb..b86b4f57ff 100644 --- a/system/camerad/main.cc +++ b/system/camerad/main.cc @@ -12,8 +12,7 @@ int main(int argc, char *argv[]) { return 0; } - int ret; - ret = util::set_realtime_priority(53); + int ret = util::set_realtime_priority(53); assert(ret == 0); ret = util::set_core_affinity({6}); assert(ret == 0 || Params().getBool("IsOffroad")); // failure ok while offroad due to offlining cores From d56f188854135ff4d1cf2cb6bf184a8301a82edd Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 25 Apr 2024 11:14:03 -0700 Subject: [PATCH 522/599] Revert "ui/cameraview: merge EGL Image Clearing code into `clearEGLImages()` (#32292)" This reverts commit 7e6dda546ee58d4cf05352f9ff9fab97b3e9464f. --- selfdrive/ui/qt/widgets/cameraview.cc | 37 +++++++++++++++++---------- selfdrive/ui/qt/widgets/cameraview.h | 1 - 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/selfdrive/ui/qt/widgets/cameraview.cc b/selfdrive/ui/qt/widgets/cameraview.cc index 16a5ffbf07..e4f1396268 100644 --- a/selfdrive/ui/qt/widgets/cameraview.cc +++ b/selfdrive/ui/qt/widgets/cameraview.cc @@ -6,6 +6,14 @@ #include #endif +#include +#include +#include +#include + +#include +#include + namespace { const char frame_vertex_shader[] = @@ -189,7 +197,15 @@ void CameraWidget::stopVipcThread() { vipc_thread = nullptr; } - clearEGLImages(); +#ifdef QCOM2 + EGLDisplay egl_display = eglGetCurrentDisplay(); + assert(egl_display != EGL_NO_DISPLAY); + for (auto &pair : egl_images) { + eglDestroyImageKHR(egl_display, pair.second); + assert(eglGetError() == EGL_SUCCESS); + } + egl_images.clear(); +#endif } void CameraWidget::availableStreamsUpdated(std::set streams) { @@ -320,7 +336,12 @@ void CameraWidget::vipcConnected(VisionIpcClient *vipc_client) { stream_stride = vipc_client->buffers[0].stride; #ifdef QCOM2 - clearEGLImages(); + EGLDisplay egl_display = eglGetCurrentDisplay(); + assert(egl_display != EGL_NO_DISPLAY); + for (auto &pair : egl_images) { + eglDestroyImageKHR(egl_display, pair.second); + } + egl_images.clear(); for (int i = 0; i < vipc_client->num_buffers; i++) { // import buffers into OpenGL int fd = dup(vipc_client->buffers[i].fd); // eglDestroyImageKHR will close, so duplicate @@ -414,15 +435,3 @@ void CameraWidget::clearFrames() { frames.clear(); available_streams.clear(); } - - -void CameraWidget::clearEGLImages() { -#ifdef QCOM2 - EGLDisplay egl_display = eglGetCurrentDisplay(); - assert(egl_display != EGL_NO_DISPLAY); - for (auto &pair : egl_images) { - eglDestroyImageKHR(egl_display, pair.second); - } - egl_images.clear(); -#endif -} diff --git a/selfdrive/ui/qt/widgets/cameraview.h b/selfdrive/ui/qt/widgets/cameraview.h index 4f1cbede69..c97038cf43 100644 --- a/selfdrive/ui/qt/widgets/cameraview.h +++ b/selfdrive/ui/qt/widgets/cameraview.h @@ -58,7 +58,6 @@ protected: void updateCalibration(const mat3 &calib); void vipcThread(); void clearFrames(); - void clearEGLImages(); int glWidth(); int glHeight(); From 98ff2dd76e867a4b0a959bc4f4206076f7546937 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 26 Apr 2024 14:16:13 -0700 Subject: [PATCH 523/599] [bot] Fingerprints: add missing FW versions from new users (#32300) Export fingerprints --- selfdrive/car/toyota/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 7719649a46..a57e58fbb7 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -1037,6 +1037,7 @@ FW_VERSIONS = { b'\x02896634A13001\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', b'\x02896634A13101\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', b'\x02896634A13201\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', + b'\x02896634A14001\x00\x00\x00\x00897CF0R01000\x00\x00\x00\x00', b'\x02896634A14001\x00\x00\x00\x00897CF1203001\x00\x00\x00\x00', b'\x02896634A14001\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', b'\x02896634A14101\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', From 5783bdc513bcc9d1606b07c4adacb49236e04fb0 Mon Sep 17 00:00:00 2001 From: Jack Merrill <8814123+jackmerrill@users.noreply.github.com> Date: Fri, 26 Apr 2024 19:07:17 -0400 Subject: [PATCH 524/599] Subaru: Increase RPM Limit (#32299) Increase the Subaru RPM limit in values.py, update panda submodule --- panda | 2 +- selfdrive/car/subaru/values.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/panda b/panda index 4d60ae9c62..d4a01f7555 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 4d60ae9c6202be1b277a03cbb670c7f2639ad7cd +Subproject commit d4a01f75554e636770ad7baa0c267deeb2c5f84f diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 0542635370..e8ced2b9af 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -38,7 +38,7 @@ class CarControllerParams: BRAKE_MAX = 600 # about -3.5m/s2 from testing RPM_MIN = 0 - RPM_MAX = 2400 + RPM_MAX = 3600 RPM_INACTIVE = 600 # a good base rpm for zero acceleration From adabd108e26767e6ed7ff6168d16742641281509 Mon Sep 17 00:00:00 2001 From: Armand du Parc Locmaria Date: Fri, 26 Apr 2024 20:04:10 -0700 Subject: [PATCH 525/599] commabody: ignore fcw alerts (#32301) * ignore modelV2 and longitudinalPlan on the body to avoid fcw alerts * move joystick_mode up because ignore depends on it * revert and ignore fcw itself instead --- selfdrive/controls/controlsd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 72f1514d88..13d7b25b29 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -369,7 +369,7 @@ class Controls: stock_long_is_braking = self.enabled and not self.CP.openpilotLongitudinalControl and CS.aEgo < -1.25 model_fcw = self.sm['modelV2'].meta.hardBrakePredicted and not CS.brakePressed and not stock_long_is_braking planner_fcw = self.sm['longitudinalPlan'].fcw and self.enabled - if planner_fcw or model_fcw: + if (planner_fcw or model_fcw) and not (self.CP.notCar and self.joystick_mode): self.events.add(EventName.fcw) for m in messaging.drain_sock(self.log_sock, wait_for_one=False): From 37877185f812321ecf3c8b5e787838d9b9204b75 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sun, 28 Apr 2024 07:31:48 +0800 Subject: [PATCH 526/599] cabana: show enum string in chart tooltip (#32303) --- tools/cabana/chart/chart.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cabana/chart/chart.cc b/tools/cabana/chart/chart.cc index dd34782e33..ce52825ac5 100644 --- a/tools/cabana/chart/chart.cc +++ b/tools/cabana/chart/chart.cc @@ -581,7 +581,7 @@ void ChartView::showTip(double sec) { // use reverse iterator to find last item <= sec. auto it = std::lower_bound(s.vals.crbegin(), s.vals.crend(), sec, [](auto &p, double x) { return p.x() > x; }); if (it != s.vals.crend() && it->x() >= axis_x->min()) { - value = QString::number(it->y()); + value = s.sig->formatValue(it->y(), false); s.track_pt = *it; x = std::max(x, chart()->mapToPosition(*it).x()); } From 3e1617deaacc3a03e5b79dc9b432dddb877edc61 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 28 Apr 2024 14:14:55 -0700 Subject: [PATCH 527/599] bump submodules - ubuntu 24.04 (#32312) --- body | 2 +- cereal | 2 +- opendbc | 2 +- rednose_repo | 2 +- teleoprtc_repo | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/body b/body index 61ace31efa..864c5449ef 160000 --- a/body +++ b/body @@ -1 +1 @@ -Subproject commit 61ace31efad27ae0d6d86888842f82bc92545e72 +Subproject commit 864c5449ef4f339589366f5abbfc2d2211e010dd diff --git a/cereal b/cereal index db1359ec22..861144c136 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit db1359ec22f6ab60c6e76abc4531bc843345d6b5 +Subproject commit 861144c136c91f70dcbc652c2ffe99f57440ad47 diff --git a/opendbc b/opendbc index 83884c2b20..e0d4be4a62 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit 83884c2b2022e4a16ae535d1ed72aca4711324b7 +Subproject commit e0d4be4a6215d44809718dc84efe1b9f0299ad63 diff --git a/rednose_repo b/rednose_repo index 1dc61a60e6..24c50f57bb 160000 --- a/rednose_repo +++ b/rednose_repo @@ -1 +1 @@ -Subproject commit 1dc61a60e684b4bc8c591a8bce7e24e02aa8f400 +Subproject commit 24c50f57bb4247322560da6cfa585cfc035d9824 diff --git a/teleoprtc_repo b/teleoprtc_repo index 3116a5053b..f2e5a6dd9e 160000 --- a/teleoprtc_repo +++ b/teleoprtc_repo @@ -1 +1 @@ -Subproject commit 3116a5053bc22b912254f1f7000ab9e267916cd5 +Subproject commit f2e5a6dd9e13a184b2f0e95a6c8afd308ec2da89 From 1b0ce23bbe0a63a5aec04e901fa5bfcd4bea64f0 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 28 Apr 2024 15:33:37 -0700 Subject: [PATCH 528/599] bump panda; ubuntu 24.04 --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index d4a01f7555..53e0f13739 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit d4a01f75554e636770ad7baa0c267deeb2c5f84f +Subproject commit 53e0f13739e920f6d2f1cd1bdf6a5676c01be3e8 From a44add160e206aa87a2996372860846cc54ca29c Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sun, 28 Apr 2024 16:24:04 -0700 Subject: [PATCH 529/599] prep for ubuntu 24.04 (#32307) * update to ubuntu 24.04 * latest * revert those * fix that * vla * try that * fix uid * keep 20.04 support * just prep for now --- .github/ISSUE_TEMPLATE/pc_bug_report.yml | 2 +- .github/workflows/badges.yaml | 2 +- .github/workflows/docs.yaml | 2 +- .github/workflows/prebuilt.yaml | 2 +- .github/workflows/release.yaml | 2 +- .github/workflows/repo-maintenance.yaml | 4 ++-- .github/workflows/selfdrive_tests.yaml | 26 ++++++++++++------------ .github/workflows/tools_tests.yaml | 6 +++--- SConstruct | 1 + tools/install_ubuntu_dependencies.sh | 13 +++++------- 10 files changed, 29 insertions(+), 31 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/pc_bug_report.yml b/.github/ISSUE_TEMPLATE/pc_bug_report.yml index db3eb22e5c..761c8b1a0a 100644 --- a/.github/ISSUE_TEMPLATE/pc_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/pc_bug_report.yml @@ -24,7 +24,7 @@ body: id: os-version attributes: label: OS Version - placeholder: Ubuntu 20.04 + placeholder: Ubuntu 24.04 validations: required: true diff --git a/.github/workflows/badges.yaml b/.github/workflows/badges.yaml index 2f1a7d67c4..cf8bdc7109 100644 --- a/.github/workflows/badges.yaml +++ b/.github/workflows/badges.yaml @@ -12,7 +12,7 @@ env: jobs: badges: name: create badges - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' permissions: contents: write diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index c555eafc73..a32989f7d0 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -20,7 +20,7 @@ env: jobs: docs: name: build docs - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 45 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/prebuilt.yaml b/.github/workflows/prebuilt.yaml index 3fdf6db202..d8963ec89f 100644 --- a/.github/workflows/prebuilt.yaml +++ b/.github/workflows/prebuilt.yaml @@ -11,7 +11,7 @@ env: jobs: build_prebuilt: name: build prebuilt - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' env: PUSH_IMAGE: true diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 346c3e85ef..34e333bb59 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -12,7 +12,7 @@ jobs: ImageOS: ubuntu20 container: image: ghcr.io/commaai/openpilot-base:latest - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' permissions: checks: read diff --git a/.github/workflows/repo-maintenance.yaml b/.github/workflows/repo-maintenance.yaml index 67f6849588..f359f63d1b 100644 --- a/.github/workflows/repo-maintenance.yaml +++ b/.github/workflows/repo-maintenance.yaml @@ -8,7 +8,7 @@ on: jobs: bump_submodules: name: bump_submodules - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest container: image: ghcr.io/commaai/openpilot-base:latest if: github.repository == 'commaai/openpilot' @@ -34,7 +34,7 @@ jobs: labels: bot package_updates: name: package_updates - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest container: image: ghcr.io/commaai/openpilot-base:latest if: github.repository == 'commaai/openpilot' diff --git a/.github/workflows/selfdrive_tests.yaml b/.github/workflows/selfdrive_tests.yaml index 30ae4da783..2be83b1654 100644 --- a/.github/workflows/selfdrive_tests.yaml +++ b/.github/workflows/selfdrive_tests.yaml @@ -26,7 +26,7 @@ env: jobs: build_release: name: build release - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest env: STRIPPED_DIR: /tmp/releasepilot steps: @@ -71,7 +71,7 @@ jobs: ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && '["x86_64", "aarch64"]' || '["x86_64"]' ) }} - runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-20.04' }} + runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -87,7 +87,7 @@ jobs: strategy: matrix: arch: ${{ fromJson( (github.repository == 'commaai/openpilot') && '["x86_64", "aarch64"]' || '["x86_64"]' ) }} - runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-20.04' }} + runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-latest' }} if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot' steps: - uses: actions/checkout@v4 @@ -104,7 +104,7 @@ jobs: docker_push_multiarch: name: docker push multiarch tag - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot' needs: [docker_push] steps: @@ -123,7 +123,7 @@ jobs: name: static analysis runs-on: ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || - (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -136,7 +136,7 @@ jobs: valgrind: name: valgrind - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -156,7 +156,7 @@ jobs: name: unit tests runs-on: ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || - (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -187,7 +187,7 @@ jobs: name: process replay runs-on: ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || - (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -234,7 +234,7 @@ jobs: regen: name: regen - runs-on: 'ubuntu-20.04' + runs-on: 'ubuntu-latest' steps: - uses: actions/checkout@v4 with: @@ -259,7 +259,7 @@ jobs: test_modeld: name: model tests - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -294,7 +294,7 @@ jobs: name: cars runs-on: ${{ ((github.repository == 'commaai/openpilot') && ((github.event_name != 'pull_request') || - (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }} strategy: fail-fast: false matrix: @@ -329,7 +329,7 @@ jobs: car_docs_diff: name: PR comments - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - uses: actions/checkout@v4 @@ -383,7 +383,7 @@ jobs: create_ui_report: name: Create UI Report - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/tools_tests.yaml b/.github/workflows/tools_tests.yaml index ff0e29e9e2..89c3efbac6 100644 --- a/.github/workflows/tools_tests.yaml +++ b/.github/workflows/tools_tests.yaml @@ -22,7 +22,7 @@ env: jobs: plotjuggler: name: plotjuggler - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 45 steps: - uses: actions/checkout@v4 @@ -39,7 +39,7 @@ jobs: simulator: name: simulator - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' timeout-minutes: 45 steps: @@ -85,7 +85,7 @@ jobs: notebooks: name: notebooks - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: false && github.repository == 'commaai/openpilot' timeout-minutes: 45 steps: diff --git a/SConstruct b/SConstruct index 4db1392a74..1e9f2a6b5a 100644 --- a/SConstruct +++ b/SConstruct @@ -193,6 +193,7 @@ env = Environment( "-Wno-c99-designator", "-Wno-reorder-init-list", "-Wno-error=unused-but-set-variable", + "-Wno-vla-cxx-extension", ] + cflags + ccflags, CPPPATH=cpppath + [ diff --git a/tools/install_ubuntu_dependencies.sh b/tools/install_ubuntu_dependencies.sh index 28e6bf8ccf..75d19141b6 100755 --- a/tools/install_ubuntu_dependencies.sh +++ b/tools/install_ubuntu_dependencies.sh @@ -81,7 +81,7 @@ function install_ubuntu_common_requirements() { valgrind } -# Install Ubuntu 22.04 LTS packages +# Install Ubuntu 24.04 LTS packages function install_ubuntu_lts_latest_requirements() { install_ubuntu_common_requirements @@ -108,10 +108,7 @@ function install_ubuntu_focal_requirements() { if [ -f "/etc/os-release" ]; then source /etc/os-release case "$VERSION_CODENAME" in - "jammy") - install_ubuntu_lts_latest_requirements - ;; - "kinetic") + "jammy" | "kinetic" | "noble") install_ubuntu_lts_latest_requirements ;; "focal") @@ -124,10 +121,10 @@ if [ -f "/etc/os-release" ]; then if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1 fi - if [ "$UBUNTU_CODENAME" = "jammy" ] || [ "$UBUNTU_CODENAME" = "kinetic" ]; then - install_ubuntu_lts_latest_requirements - else + if [ "$UBUNTU_CODENAME" = "focal" ]; then install_ubuntu_focal_requirements + else + install_ubuntu_lts_latest_requirements fi esac else From 45c021955ac463eb16600d6e1a3b33a83d1010e7 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 29 Apr 2024 08:53:24 -0700 Subject: [PATCH 530/599] [bot] Fingerprints: add missing FW versions from new users (#32315) Export fingerprints --- selfdrive/car/chrysler/fingerprints.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 76d04d2e36..95f878a5b6 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -439,6 +439,7 @@ FW_VERSIONS = { b'68292406AG', b'68292406AH', b'68432418AB', + b'68432418AC', b'68432418AD', b'68436004AD', b'68436004AE', @@ -520,6 +521,7 @@ FW_VERSIONS = { b'68378702AI ', b'68378710AL ', b'68378742AI ', + b'68378742AK ', b'68378748AL ', b'68378758AM ', b'68448163AJ', @@ -569,6 +571,7 @@ FW_VERSIONS = { b'68360085AJ', b'68360085AL', b'68360086AH', + b'68360086AK', b'68384328AD', b'68384332AD', b'68445531AC', From 82f7ab8f7dc79ae581c0066c178f430dd13d3bd3 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 29 Apr 2024 09:00:12 -0700 Subject: [PATCH 531/599] CI: set bot PR author --- .github/workflows/repo-maintenance.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/repo-maintenance.yaml b/.github/workflows/repo-maintenance.yaml index f359f63d1b..0e6606112b 100644 --- a/.github/workflows/repo-maintenance.yaml +++ b/.github/workflows/repo-maintenance.yaml @@ -24,6 +24,7 @@ jobs: - name: Create Pull Request uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 with: + author: Vehicle Researcher token: ${{ secrets.ACTIONS_CREATE_PR_PAT }} commit-message: bump submodules title: '[bot] Bump submodules' @@ -51,6 +52,7 @@ jobs: - name: Create Pull Request uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 with: + author: Vehicle Researcher token: ${{ secrets.ACTIONS_CREATE_PR_PAT }} commit-message: Update Python packages and pre-commit hooks title: '[bot] Update Python packages and pre-commit hooks' From fa7edadaa7113387bd107aab568f23176975c3a3 Mon Sep 17 00:00:00 2001 From: commaci-public <60409688+commaci-public@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:10:03 -0700 Subject: [PATCH 532/599] [bot] Update Python packages and pre-commit hooks (#32314) Update Python packages and pre-commit hooks Co-authored-by: Vehicle Researcher --- .pre-commit-config.yaml | 2 +- poetry.lock | 306 ++++++++++++++++++++-------------------- 2 files changed, 157 insertions(+), 151 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ec3ec96794..d17fe6b7db 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,7 +33,7 @@ repos: - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.1 + rev: v0.4.2 hooks: - id: ruff exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)' diff --git a/poetry.lock b/poetry.lock index 152ae4a49d..60bdc72ac1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.0 and should not be changed by hand. [[package]] name = "aiohttp" @@ -751,63 +751,63 @@ test = ["pytest", "pytest-timeout"] [[package]] name = "coverage" -version = "7.4.4" +version = "7.5.0" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"}, - {file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"}, - {file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"}, - {file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"}, - {file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"}, - {file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"}, - {file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"}, - {file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ae728ff3b5401cc320d792866987e7e7e880e6ebd24433b70a33b643bb0384"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc4f1358cb0c78edef3ed237ef2c86056206bb8d9140e73b6b89fbcfcbdd40e1"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8130a2aa2acb8788e0b56938786c33c7c98562697bf9f4c7d6e8e5e3a0501e4a"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf271892d13e43bc2b51e6908ec9a6a5094a4df1d8af0bfc360088ee6c684409"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4cdc86d54b5da0df6d3d3a2f0b710949286094c3a6700c21e9015932b81447e"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae71e7ddb7a413dd60052e90528f2f65270aad4b509563af6d03d53e979feafd"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:38dd60d7bf242c4ed5b38e094baf6401faa114fc09e9e6632374388a404f98e7"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa5b1c1bfc28384f1f53b69a023d789f72b2e0ab1b3787aae16992a7ca21056c"}, - {file = "coverage-7.4.4-cp38-cp38-win32.whl", hash = "sha256:dfa8fe35a0bb90382837b238fff375de15f0dcdb9ae68ff85f7a63649c98527e"}, - {file = "coverage-7.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2991665420a803495e0b90a79233c1433d6ed77ef282e8e152a324bbbc5e0c8"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"}, - {file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"}, - {file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"}, - {file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"}, - {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, + {file = "coverage-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:432949a32c3e3f820af808db1833d6d1631664d53dd3ce487aa25d574e18ad1c"}, + {file = "coverage-7.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bd7065249703cbeb6d4ce679c734bef0ee69baa7bff9724361ada04a15b7e3b"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbfe6389c5522b99768a93d89aca52ef92310a96b99782973b9d11e80511f932"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39793731182c4be939b4be0cdecde074b833f6171313cf53481f869937129ed3"}, + {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85a5dbe1ba1bf38d6c63b6d2c42132d45cbee6d9f0c51b52c59aa4afba057517"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:357754dcdfd811462a725e7501a9b4556388e8ecf66e79df6f4b988fa3d0b39a"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a81eb64feded34f40c8986869a2f764f0fe2db58c0530d3a4afbcde50f314880"}, + {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51431d0abbed3a868e967f8257c5faf283d41ec882f58413cf295a389bb22e58"}, + {file = "coverage-7.5.0-cp310-cp310-win32.whl", hash = "sha256:f609ebcb0242d84b7adeee2b06c11a2ddaec5464d21888b2c8255f5fd6a98ae4"}, + {file = "coverage-7.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:6782cd6216fab5a83216cc39f13ebe30adfac2fa72688c5a4d8d180cd52e8f6a"}, + {file = "coverage-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e768d870801f68c74c2b669fc909839660180c366501d4cc4b87efd6b0eee375"}, + {file = "coverage-7.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84921b10aeb2dd453247fd10de22907984eaf80901b578a5cf0bb1e279a587cb"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710c62b6e35a9a766b99b15cdc56d5aeda0914edae8bb467e9c355f75d14ee95"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c379cdd3efc0658e652a14112d51a7668f6bfca7445c5a10dee7eabecabba19d"}, + {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea9d3ca80bcf17edb2c08a4704259dadac196fe5e9274067e7a20511fad1743"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:41327143c5b1d715f5f98a397608f90ab9ebba606ae4e6f3389c2145410c52b1"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:565b2e82d0968c977e0b0f7cbf25fd06d78d4856289abc79694c8edcce6eb2de"}, + {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cf3539007202ebfe03923128fedfdd245db5860a36810136ad95a564a2fdffff"}, + {file = "coverage-7.5.0-cp311-cp311-win32.whl", hash = "sha256:bf0b4b8d9caa8d64df838e0f8dcf68fb570c5733b726d1494b87f3da85db3a2d"}, + {file = "coverage-7.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c6384cc90e37cfb60435bbbe0488444e54b98700f727f16f64d8bfda0b84656"}, + {file = "coverage-7.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fed7a72d54bd52f4aeb6c6e951f363903bd7d70bc1cad64dd1f087980d309ab9"}, + {file = "coverage-7.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbe6581fcff7c8e262eb574244f81f5faaea539e712a058e6707a9d272fe5b64"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad97ec0da94b378e593ef532b980c15e377df9b9608c7c6da3506953182398af"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4bacd62aa2f1a1627352fe68885d6ee694bdaebb16038b6e680f2924a9b2cc"}, + {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf032b6c105881f9d77fa17d9eebe0ad1f9bfb2ad25777811f97c5362aa07f2"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ba01d9ba112b55bfa4b24808ec431197bb34f09f66f7cb4fd0258ff9d3711b1"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f0bfe42523893c188e9616d853c47685e1c575fe25f737adf473d0405dcfa7eb"}, + {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a9a7ef30a1b02547c1b23fa9a5564f03c9982fc71eb2ecb7f98c96d7a0db5cf2"}, + {file = "coverage-7.5.0-cp312-cp312-win32.whl", hash = "sha256:3c2b77f295edb9fcdb6a250f83e6481c679335ca7e6e4a955e4290350f2d22a4"}, + {file = "coverage-7.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:427e1e627b0963ac02d7c8730ca6d935df10280d230508c0ba059505e9233475"}, + {file = "coverage-7.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9dd88fce54abbdbf4c42fb1fea0e498973d07816f24c0e27a1ecaf91883ce69e"}, + {file = "coverage-7.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a898c11dca8f8c97b467138004a30133974aacd572818c383596f8d5b2eb04a9"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07dfdd492d645eea1bd70fb1d6febdcf47db178b0d99161d8e4eed18e7f62fe7"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3d117890b6eee85887b1eed41eefe2e598ad6e40523d9f94c4c4b213258e4a4"}, + {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6afd2e84e7da40fe23ca588379f815fb6dbbb1b757c883935ed11647205111cb"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9960dd1891b2ddf13a7fe45339cd59ecee3abb6b8326d8b932d0c5da208104f"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ced268e82af993d7801a9db2dbc1d2322e786c5dc76295d8e89473d46c6b84d4"}, + {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7c211f25777746d468d76f11719e64acb40eed410d81c26cefac641975beb88"}, + {file = "coverage-7.5.0-cp38-cp38-win32.whl", hash = "sha256:262fffc1f6c1a26125d5d573e1ec379285a3723363f3bd9c83923c9593a2ac25"}, + {file = "coverage-7.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:eed462b4541c540d63ab57b3fc69e7d8c84d5957668854ee4e408b50e92ce26a"}, + {file = "coverage-7.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0194d654e360b3e6cc9b774e83235bae6b9b2cac3be09040880bb0e8a88f4a1"}, + {file = "coverage-7.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33c020d3322662e74bc507fb11488773a96894aa82a622c35a5a28673c0c26f5"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbdf2cae14a06827bec50bd58e49249452d211d9caddd8bd80e35b53cb04631"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3235d7c781232e525b0761730e052388a01548bd7f67d0067a253887c6e8df46"}, + {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2de4e546f0ec4b2787d625e0b16b78e99c3e21bc1722b4977c0dddf11ca84e"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0e206259b73af35c4ec1319fd04003776e11e859936658cb6ceffdeba0f5be"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2055c4fb9a6ff624253d432aa471a37202cd8f458c033d6d989be4499aed037b"}, + {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075299460948cd12722a970c7eae43d25d37989da682997687b34ae6b87c0ef0"}, + {file = "coverage-7.5.0-cp39-cp39-win32.whl", hash = "sha256:280132aada3bc2f0fac939a5771db4fbb84f245cb35b94fae4994d4c1f80dae7"}, + {file = "coverage-7.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:c58536f6892559e030e6924896a44098bc1290663ea12532c78cef71d0df8493"}, + {file = "coverage-7.5.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:2b57780b51084d5223eee7b59f0d4911c31c16ee5aa12737c7a02455829ff067"}, + {file = "coverage-7.5.0.tar.gz", hash = "sha256:cf62d17310f34084c59c01e027259076479128d11e4661bb6c9acb38c5e19bb8"}, ] [package.extras] @@ -1062,13 +1062,13 @@ files = [ [[package]] name = "filelock" -version = "3.13.4" +version = "3.14.0" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.13.4-py3-none-any.whl", hash = "sha256:404e5e9253aa60ad457cae1be07c0f0ca90a63931200a47d9b6a6af84fd7b45f"}, - {file = "filelock-3.13.4.tar.gz", hash = "sha256:d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4"}, + {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, + {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, ] [package.extras] @@ -1356,17 +1356,18 @@ rewrite = ["tokenize-rt (>=3)"] [[package]] name = "geopandas" -version = "0.14.3" +version = "0.14.4" description = "Geographic pandas extensions" optional = false python-versions = ">=3.9" files = [ - {file = "geopandas-0.14.3-py3-none-any.whl", hash = "sha256:41b31ad39e21bc9e8c4254f78f8dc4ce3d33d144e22e630a00bb336c83160204"}, - {file = "geopandas-0.14.3.tar.gz", hash = "sha256:748af035d4a068a4ae00cab384acb61d387685c833b0022e0729aa45216b23ac"}, + {file = "geopandas-0.14.4-py3-none-any.whl", hash = "sha256:3bb6473cb59d51e1a7fe2dbc24a1a063fb0ebdeddf3ce08ddbf8c7ddc99689aa"}, + {file = "geopandas-0.14.4.tar.gz", hash = "sha256:56765be9d58e2c743078085db3bd07dc6be7719f0dbe1dfdc1d705cb80be7c25"}, ] [package.dependencies] fiona = ">=1.8.21" +numpy = ">=1.22" packaging = "*" pandas = ">=1.4.0" pyproj = ">=3.3.0" @@ -2514,38 +2515,38 @@ files = [ [[package]] name = "mypy" -version = "1.9.0" +version = "1.10.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, - {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, - {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, - {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, - {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, - {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, - {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, - {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, - {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, - {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, - {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, - {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, - {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, - {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, - {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, - {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, - {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, - {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, - {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, + {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, + {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, + {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, + {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, + {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, + {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, + {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, + {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, + {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, + {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, + {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, + {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, + {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, + {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, + {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, + {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, + {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, ] [package.dependencies] @@ -2571,17 +2572,17 @@ files = [ [[package]] name = "myst-parser" -version = "2.0.0" +version = "3.0.1" description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," optional = false python-versions = ">=3.8" files = [ - {file = "myst_parser-2.0.0-py3-none-any.whl", hash = "sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14"}, - {file = "myst_parser-2.0.0.tar.gz", hash = "sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead"}, + {file = "myst_parser-3.0.1-py3-none-any.whl", hash = "sha256:6457aaa33a5d474aca678b8ead9b3dc298e89c68e67012e73146ea6fd54babf1"}, + {file = "myst_parser-3.0.1.tar.gz", hash = "sha256:88f0cb406cb363b077d176b51c476f62d60604d68a8dcdf4832e080441301a87"}, ] [package.dependencies] -docutils = ">=0.16,<0.21" +docutils = ">=0.18,<0.22" jinja2 = "*" markdown-it-py = ">=3.0,<4.0" mdit-py-plugins = ">=0.4,<1.0" @@ -2591,9 +2592,9 @@ sphinx = ">=6,<8" [package.extras] code-style = ["pre-commit (>=3.0,<4.0)"] linkify = ["linkify-it-py (>=2.0,<3.0)"] -rtd = ["ipython", "pydata-sphinx-theme (==v0.13.0rc4)", "sphinx-autodoc2 (>=0.4.2,<0.5.0)", "sphinx-book-theme (==1.0.0rc2)", "sphinx-copybutton", "sphinx-design2", "sphinx-pyscript", "sphinx-tippy (>=0.3.1)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.8.2,<0.9.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] -testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"] -testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"] +rtd = ["ipython", "sphinx (>=7)", "sphinx-autodoc2 (>=0.5.0,<0.6.0)", "sphinx-book-theme (>=1.1,<2.0)", "sphinx-copybutton", "sphinx-design", "sphinx-pyscript", "sphinx-tippy (>=0.4.3)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.9.0,<0.10.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] +testing = ["beautifulsoup4", "coverage[toml]", "defusedxml", "pytest (>=8,<9)", "pytest-cov", "pytest-param-files (>=0.6.0,<0.7.0)", "pytest-regressions", "sphinx-pytest"] +testing-docutils = ["pygments", "pytest (>=8,<9)", "pytest-param-files (>=0.6.0,<0.7.0)"] [[package]] name = "natsort" @@ -3115,18 +3116,19 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.2.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, + {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] [[package]] name = "pluggy" @@ -6634,23 +6636,23 @@ cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "8.1.1" +version = "8.2.0" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, - {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, + {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, + {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.4,<2.0" +pluggy = ">=1.5,<2.0" [package.extras] -testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" @@ -6730,18 +6732,18 @@ pytest = ">=7.0.0" [[package]] name = "pytest-xdist" -version = "3.5.0" +version = "3.6.1" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-xdist-3.5.0.tar.gz", hash = "sha256:cbb36f3d67e0c478baa57fa4edc8843887e0f6cfc42d677530a36d7472b32d8a"}, - {file = "pytest_xdist-3.5.0-py3-none-any.whl", hash = "sha256:d075629c7e00b611df89f490a5063944bee7a4362a5ff11c7cc7824a03dfce24"}, + {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, + {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, ] [package.dependencies] -execnet = ">=1.1" -pytest = ">=6.2.0" +execnet = ">=2.1" +pytest = ">=7.0.0" [package.extras] psutil = ["psutil (>=3.0)"] @@ -6788,13 +6790,13 @@ files = [ [[package]] name = "pytools" -version = "2024.1.1" +version = "2024.1.2" description = "A collection of tools for Python" optional = false python-versions = "~=3.8" files = [ - {file = "pytools-2024.1.1-py2.py3-none-any.whl", hash = "sha256:9f1d03040d78d9d2a607d08de64ec4e350aecdf4ee019f627ce1f1f0c2a4400d"}, - {file = "pytools-2024.1.1.tar.gz", hash = "sha256:2c88edfa990c8e325167c37659fb1e10a3c1133dfaf752bbd7d8456402b8dcff"}, + {file = "pytools-2024.1.2-py2.py3-none-any.whl", hash = "sha256:f61287b5341e53e3fe96c82385469b57a8983ff3db815a2bf3f533c38e8d516b"}, + {file = "pytools-2024.1.2.tar.gz", hash = "sha256:081871e451505c4b986ebafa68aeeabfdc7beb3faa1baa50f726aebe21e1d057"}, ] [package.dependencies] @@ -6869,20 +6871,21 @@ dev = ["mypy (>=0.990)", "pywinctl (>=0.3)", "types-python-xlib (>=0.32)", "type [[package]] name = "pywinctl" -version = "0.3" +version = "0.4" description = "Cross-Platform toolkit to get info on and control windows on screen" optional = false python-versions = "*" files = [ - {file = "PyWinCtl-0.3-py3-none-any.whl", hash = "sha256:3603981c87b0c64987e7be857d89450f98792b01f49006a17dac758e11141dd7"}, + {file = "PyWinCtl-0.4-py3-none-any.whl", hash = "sha256:8c4a92bd57e35fd280c5c04f048cc822e236abffe2fa17351096b0e28907172d"}, ] [package.dependencies] -pymonctl = ">=0.6" +ewmhlib = {version = ">=0.2", markers = "sys_platform == \"linux\""} +pymonctl = ">=0.92" pyobjc = {version = ">=8.1", markers = "sys_platform == \"darwin\""} python-xlib = {version = ">=0.21", markers = "sys_platform == \"linux\""} pywin32 = {version = ">=302", markers = "sys_platform == \"win32\""} -pywinbox = ">=0.6" +pywinbox = ">=0.7" typing-extensions = ">=4.4.0" [package.extras] @@ -7086,28 +7089,28 @@ docs = ["furo (==2024.1.29)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx [[package]] name = "ruff" -version = "0.4.1" +version = "0.4.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.4.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2d9ef6231e3fbdc0b8c72404a1a0c46fd0dcea84efca83beb4681c318ea6a953"}, - {file = "ruff-0.4.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9485f54a7189e6f7433e0058cf8581bee45c31a25cd69009d2a040d1bd4bfaef"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2921ac03ce1383e360e8a95442ffb0d757a6a7ddd9a5be68561a671e0e5807e"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eec8d185fe193ad053eda3a6be23069e0c8ba8c5d20bc5ace6e3b9e37d246d3f"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa27d9d72a94574d250f42b7640b3bd2edc4c58ac8ac2778a8c82374bb27984"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f1ee41580bff1a651339eb3337c20c12f4037f6110a36ae4a2d864c52e5ef954"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0926cefb57fc5fced629603fbd1a23d458b25418681d96823992ba975f050c2b"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6e37f2e3cd74496a74af9a4fa67b547ab3ca137688c484749189bf3a686ceb"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd703a5975ac1998c2cc5e9494e13b28f31e66c616b0a76e206de2562e0843c"}, - {file = "ruff-0.4.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b92f03b4aa9fa23e1799b40f15f8b95cdc418782a567d6c43def65e1bbb7f1cf"}, - {file = "ruff-0.4.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1c859f294f8633889e7d77de228b203eb0e9a03071b72b5989d89a0cf98ee262"}, - {file = "ruff-0.4.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b34510141e393519a47f2d7b8216fec747ea1f2c81e85f076e9f2910588d4b64"}, - {file = "ruff-0.4.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6e68d248ed688b9d69fd4d18737edcbb79c98b251bba5a2b031ce2470224bdf9"}, - {file = "ruff-0.4.1-py3-none-win32.whl", hash = "sha256:b90506f3d6d1f41f43f9b7b5ff845aeefabed6d2494307bc7b178360a8805252"}, - {file = "ruff-0.4.1-py3-none-win_amd64.whl", hash = "sha256:c7d391e5936af5c9e252743d767c564670dc3889aff460d35c518ee76e4b26d7"}, - {file = "ruff-0.4.1-py3-none-win_arm64.whl", hash = "sha256:a1eaf03d87e6a7cd5e661d36d8c6e874693cb9bc3049d110bc9a97b350680c43"}, - {file = "ruff-0.4.1.tar.gz", hash = "sha256:d592116cdbb65f8b1b7e2a2b48297eb865f6bdc20641879aa9d7b9c11d86db79"}, + {file = "ruff-0.4.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d14dc8953f8af7e003a485ef560bbefa5f8cc1ad994eebb5b12136049bbccc5"}, + {file = "ruff-0.4.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:24016ed18db3dc9786af103ff49c03bdf408ea253f3cb9e3638f39ac9cf2d483"}, + {file = "ruff-0.4.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2e06459042ac841ed510196c350ba35a9b24a643e23db60d79b2db92af0c2b"}, + {file = "ruff-0.4.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3afabaf7ba8e9c485a14ad8f4122feff6b2b93cc53cd4dad2fd24ae35112d5c5"}, + {file = "ruff-0.4.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:799eb468ea6bc54b95527143a4ceaf970d5aa3613050c6cff54c85fda3fde480"}, + {file = "ruff-0.4.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ec4ba9436a51527fb6931a8839af4c36a5481f8c19e8f5e42c2f7ad3a49f5069"}, + {file = "ruff-0.4.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6a2243f8f434e487c2a010c7252150b1fdf019035130f41b77626f5655c9ca22"}, + {file = "ruff-0.4.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8772130a063f3eebdf7095da00c0b9898bd1774c43b336272c3e98667d4fb8fa"}, + {file = "ruff-0.4.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ab165ef5d72392b4ebb85a8b0fbd321f69832a632e07a74794c0e598e7a8376"}, + {file = "ruff-0.4.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1f32cadf44c2020e75e0c56c3408ed1d32c024766bd41aedef92aa3ca28eef68"}, + {file = "ruff-0.4.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:22e306bf15e09af45ca812bc42fa59b628646fa7c26072555f278994890bc7ac"}, + {file = "ruff-0.4.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:82986bb77ad83a1719c90b9528a9dd663c9206f7c0ab69282af8223566a0c34e"}, + {file = "ruff-0.4.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:652e4ba553e421a6dc2a6d4868bc3b3881311702633eb3672f9f244ded8908cd"}, + {file = "ruff-0.4.2-py3-none-win32.whl", hash = "sha256:7891ee376770ac094da3ad40c116258a381b86c7352552788377c6eb16d784fe"}, + {file = "ruff-0.4.2-py3-none-win_amd64.whl", hash = "sha256:5ec481661fb2fd88a5d6cf1f83403d388ec90f9daaa36e40e2c003de66751798"}, + {file = "ruff-0.4.2-py3-none-win_arm64.whl", hash = "sha256:cbd1e87c71bca14792948c4ccb51ee61c3296e164019d2d484f3eaa2d360dfaf"}, + {file = "ruff-0.4.2.tar.gz", hash = "sha256:33bcc160aee2520664bc0859cfeaebc84bb7323becff3f303b8f1f2d81cb4edc"}, ] [[package]] @@ -7186,18 +7189,18 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "1.45.0" +version = "2.0.1" description = "Python client for Sentry (https://sentry.io)" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "sentry-sdk-1.45.0.tar.gz", hash = "sha256:509aa9678c0512344ca886281766c2e538682f8acfa50fd8d405f8c417ad0625"}, - {file = "sentry_sdk-1.45.0-py2.py3-none-any.whl", hash = "sha256:1ce29e30240cc289a027011103a8c83885b15ef2f316a60bcc7c5300afa144f1"}, + {file = "sentry_sdk-2.0.1-py2.py3-none-any.whl", hash = "sha256:b54c54a2160f509cf2757260d0cf3885b608c6192c2555a3857e3a4d0f84bdb3"}, + {file = "sentry_sdk-2.0.1.tar.gz", hash = "sha256:c278e0f523f6f0ee69dc43ad26dcdb1202dffe5ac326ae31472e012d941bee21"}, ] [package.dependencies] certifi = "*" -urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} +urllib3 = ">=1.26.11" [package.extras] aiohttp = ["aiohttp (>=3.5)"] @@ -7528,18 +7531,21 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] [[package]] name = "sphinx-sitemap" -version = "2.5.1" +version = "2.6.0" description = "Sitemap generator for Sphinx" optional = false python-versions = "*" files = [ - {file = "sphinx-sitemap-2.5.1.tar.gz", hash = "sha256:984bef068bbdbc26cfae209a8b61392e9681abc9191b477cd30da406e3a60ee5"}, - {file = "sphinx_sitemap-2.5.1-py3-none-any.whl", hash = "sha256:0b7bce2835f287687f75584d7695e4eb8efaec028e5e7b36e9f791de3c344686"}, + {file = "sphinx_sitemap-2.6.0-py3-none-any.whl", hash = "sha256:7478e417d141f99c9af27ccd635f44c03a471a08b20e778a0f9daef7ace1d30b"}, + {file = "sphinx_sitemap-2.6.0.tar.gz", hash = "sha256:5e0c66b9f2e371ede80c659866a9eaad337d46ab02802f9c7e5f7bc5893c28d2"}, ] [package.dependencies] sphinx = ">=1.2" +[package.extras] +dev = ["build", "flake8", "pre-commit", "pytest", "sphinx", "tox"] + [[package]] name = "sphinxcontrib-applehelp" version = "1.0.8" @@ -7819,13 +7825,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.25.3" +version = "20.26.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.25.3-py3-none-any.whl", hash = "sha256:8aac4332f2ea6ef519c648d0bc48a5b1d324994753519919bddbb1aff25a104e"}, - {file = "virtualenv-20.25.3.tar.gz", hash = "sha256:7bb554bbdfeaacc3349fa614ea5bff6ac300fc7c335e9facf3a3bcfc703f45be"}, + {file = "virtualenv-20.26.1-py3-none-any.whl", hash = "sha256:7aa9982a728ae5892558bff6a2839c00b9ed145523ece2274fad6f414690ae75"}, + {file = "virtualenv-20.26.1.tar.gz", hash = "sha256:604bfdceaeece392802e6ae48e69cec49168b9c5f4a44e483963f9242eb0e78b"}, ] [package.dependencies] @@ -7839,17 +7845,17 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "websocket-client" -version = "1.7.0" +version = "1.8.0" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" files = [ - {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"}, - {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"}, + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, ] [package.extras] -docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] From f3a49a29b73e319fdded6aa28ad40071dfd7f922 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 29 Apr 2024 16:35:49 -0700 Subject: [PATCH 533/599] unpin casadi (#32316) --- poetry.lock | 98 ++++++++++++++++++++++++++------------------------ pyproject.toml | 6 ++-- 2 files changed, 55 insertions(+), 49 deletions(-) diff --git a/poetry.lock b/poetry.lock index 60bdc72ac1..2e66336f11 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "aiohttp" @@ -340,54 +340,59 @@ Sphinx = ">=4.0,<5.0.0 || >5.0.0" [[package]] name = "casadi" -version = "3.6.3" +version = "3.6.5" description = "CasADi -- framework for algorithmic differentiation and numeric optimization" optional = false python-versions = "*" files = [ - {file = "casadi-3.6.3-cp27-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:884c07617fbbedbd047900d6f2ab86e933064efc517b973fa4139fc60543e498"}, - {file = "casadi-3.6.3-cp27-none-manylinux1_i686.whl", hash = "sha256:6f9c1fadfb1eb729f8906f01cd2b45f542846a386fb63d59eb1872451dda8de3"}, - {file = "casadi-3.6.3-cp27-none-manylinux2010_x86_64.whl", hash = "sha256:041639615a866a7244e88905c40c15ef8f84bdedf0b4f92f72e4c5b56f8fe2dc"}, - {file = "casadi-3.6.3-cp27-none-win_amd64.whl", hash = "sha256:418d345e47cbc957a49e28c7765a7f6e37f5eb73ab969e6c6cfcd204189c559c"}, - {file = "casadi-3.6.3-cp310-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:9c8d360ee80dd65c0c7625e3dccfabdd6e78629a754fb28f6fd77e3d4893dc80"}, - {file = "casadi-3.6.3-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:a74cf436d42adf69d5ea16ba13d95f40585e148e856d00553f96740704fe2a03"}, - {file = "casadi-3.6.3-cp310-none-manylinux2014_aarch64.whl", hash = "sha256:1995029b4f11d492cb5277645534bdd377340eaabe51dba3c6d9ed3a25f83f4c"}, - {file = "casadi-3.6.3-cp310-none-manylinux2014_i686.whl", hash = "sha256:501ac40357dae0d224499f1b41b7d409703137ac7c8c1bcbb26444cff9d00de3"}, - {file = "casadi-3.6.3-cp310-none-manylinux2014_x86_64.whl", hash = "sha256:d86511c92f09fa464937098bb47b5cdfd07952a0a2b236938b9370537e4532d6"}, - {file = "casadi-3.6.3-cp310-none-win_amd64.whl", hash = "sha256:4d41d07a9a4c1cd9aa55a43ffe8921721dc5937b124075e903b4c0948e5dcb9b"}, - {file = "casadi-3.6.3-cp311-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:9a2aab9799e8a597b737c8ebbde6fce9cad6177d51fef8f73310d429e4b76cb4"}, - {file = "casadi-3.6.3-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:55cff88af39c486895d5d6ec3c1862050dbd51ca879df81be1b1c86cb97e9115"}, - {file = "casadi-3.6.3-cp311-none-manylinux2014_aarch64.whl", hash = "sha256:387e4832a6b98ecf71d7c6ceb129ca7bfe120dd6705162aecee70df13bd8cb62"}, - {file = "casadi-3.6.3-cp311-none-manylinux2014_i686.whl", hash = "sha256:8357cfae956d1c4d2c8e765e93fcfad537f83e8278d2bd7c9d4f66213fdc6f4e"}, - {file = "casadi-3.6.3-cp311-none-manylinux2014_x86_64.whl", hash = "sha256:de87a486a4578f609bb93327004ee0a4598723cff5c0118828e1de31f01ea65b"}, - {file = "casadi-3.6.3-cp311-none-win_amd64.whl", hash = "sha256:d5b5d49b3749aa075678206645b106fea104485285441f771ba5ef347d4bc394"}, - {file = "casadi-3.6.3-cp35-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:9ba455b1afc4b70249810098458951bd37cb346350ed00e913ec93ddb3f15251"}, - {file = "casadi-3.6.3-cp35-none-manylinux1_i686.whl", hash = "sha256:397b3754a0560e9c4ebb3ce9220bfe5194f6ef63dca6caa6695b7e43a170895b"}, - {file = "casadi-3.6.3-cp35-none-manylinux2010_x86_64.whl", hash = "sha256:406423816ef79ba82e579bd999ba9aaa16ffcb071261d8ff32e3c404ee1e816b"}, - {file = "casadi-3.6.3-cp35-none-win_amd64.whl", hash = "sha256:62fcabf79dfc1f3b7cf06eca1408556bc74a59a9de9dde4b779eff20ac243006"}, - {file = "casadi-3.6.3-cp36-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:7972b476b20557592fd1193140e6d1067a91b98cbc96767b3ec2f68e500c5342"}, - {file = "casadi-3.6.3-cp36-none-manylinux2014_aarch64.whl", hash = "sha256:692c284d838d11052c08fc8b38357858607f701ea6495bf9e22a0f2033811325"}, - {file = "casadi-3.6.3-cp36-none-manylinux2014_i686.whl", hash = "sha256:e5bb5ae64de87568c5c3895ca649b209283e2ad61ddeaef1685c7e856e4044e0"}, - {file = "casadi-3.6.3-cp36-none-manylinux2014_x86_64.whl", hash = "sha256:6b15e0bf452f7b3dface72e7d75ef2fe8566574abec51313540a6a251243e099"}, - {file = "casadi-3.6.3-cp36-none-win_amd64.whl", hash = "sha256:b7148bc8b107b1bae4f66fe5b815edb69aca69de8ead2ee25e1b059781654550"}, - {file = "casadi-3.6.3-cp37-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:3a184a4930a046ee788923a129032372f043027df7a2e08d25fd1fe72d1da8bd"}, - {file = "casadi-3.6.3-cp37-none-manylinux2014_aarch64.whl", hash = "sha256:44ceea824512a594b286fff7646470d7ac58e363bcb40ce23a6ec0577e6af3f9"}, - {file = "casadi-3.6.3-cp37-none-manylinux2014_i686.whl", hash = "sha256:ce42fb3df4e795bbb2178c4f9929bd8d0d359890ae1225c64a0c2795374fda25"}, - {file = "casadi-3.6.3-cp37-none-manylinux2014_x86_64.whl", hash = "sha256:39a73fa7383862abae27ebe4158d23d588286b22d74505af8569f4b91acc51d7"}, - {file = "casadi-3.6.3-cp37-none-win_amd64.whl", hash = "sha256:bede02743ac570b6289e8496563aa326dd4fdecc8c3e4f817b909cf6bc1b42cc"}, - {file = "casadi-3.6.3-cp38-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:7e80e8eee3bb174f941d592dbc440f57c76c5d81bad59f3a361dbf47e6175a43"}, - {file = "casadi-3.6.3-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c0bcd64e8bb0db6e6dcc24d1ee10ef7f2305ed2e9d2786c1dcae43e7fcd05943"}, - {file = "casadi-3.6.3-cp38-none-manylinux2014_aarch64.whl", hash = "sha256:012970fec19a88326e010b8e8ef4d569e32246dabb8cad86c485263e3961f3b1"}, - {file = "casadi-3.6.3-cp38-none-manylinux2014_i686.whl", hash = "sha256:4c718672247d12b437f5b8b2f62eae5c6541bd9125f233ae4977fbf3b2ff2de7"}, - {file = "casadi-3.6.3-cp38-none-manylinux2014_x86_64.whl", hash = "sha256:3a3685525a278f5b450b8be9ab14bb367f2d0fc97f8400021ba406f63fab7795"}, - {file = "casadi-3.6.3-cp38-none-win_amd64.whl", hash = "sha256:0e6f2ae61abb3969ccf9503e2ee576a4f5b437ba40a082e26660a5d9513c839c"}, - {file = "casadi-3.6.3-cp39-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:7093cb7182db81b6184148121d61a68876ff9be55fb73c456927a344ff5983a2"}, - {file = "casadi-3.6.3-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:0a5383b295a499312657eb5c99a0e8f22e8bb06da774663bae69b322ec34dd6d"}, - {file = "casadi-3.6.3-cp39-none-manylinux2014_aarch64.whl", hash = "sha256:6632b30197aa0d491afb7f6d30980636342eaf8a88fe7680c5eb3a37d4013c01"}, - {file = "casadi-3.6.3-cp39-none-manylinux2014_i686.whl", hash = "sha256:5990366a5266dda537d45c6df583001a1519b86db00e1725e2d17304500e511d"}, - {file = "casadi-3.6.3-cp39-none-manylinux2014_x86_64.whl", hash = "sha256:5177b2592f4c147fec882fad92b7282262979bdf8ad5a337f6531464eee19226"}, - {file = "casadi-3.6.3-cp39-none-win_amd64.whl", hash = "sha256:d5b917443733123c634dbde7e5f971ffb87994af01c0d0d528f6d10ac78d97f7"}, - {file = "casadi-3.6.3.tar.gz", hash = "sha256:2a953bd001327c9ae79018a1efa455852c8a4b4f47f5bdda5f0a07ec820d1880"}, + {file = "casadi-3.6.5-cp27-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:6039081fdd1daf4ef7fa2b52814a954d75bfc03eb0dc62414e02af5d25746e8f"}, + {file = "casadi-3.6.5-cp27-none-manylinux1_i686.whl", hash = "sha256:b5192dfabf6f5266b168b984d124dd3086c1c5a408c0743ff3a82290a8ccf3b5"}, + {file = "casadi-3.6.5-cp27-none-manylinux2010_x86_64.whl", hash = "sha256:35b2ff6098e386a4d5e8bc681744e52bcd2f2f15cfa44c09814a8979b51a6794"}, + {file = "casadi-3.6.5-cp27-none-win_amd64.whl", hash = "sha256:caf395d1e36bfb215b154e8df61583d534a07ddabb18cbe50f259b7692a41ac8"}, + {file = "casadi-3.6.5-cp310-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:314886ef44bd01f1a98579e7784a3bed6e0584e88f9465cf9596af2523efb0dd"}, + {file = "casadi-3.6.5-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:c6789c8060a99b329bb584d97c1eab6a5e4f3e2d2db391e6c2001c6323774990"}, + {file = "casadi-3.6.5-cp310-none-manylinux2014_aarch64.whl", hash = "sha256:e40afb3c062817dd6ce2497cd001f00f107ee1ea41ec4d6ee9f9a5056d219e83"}, + {file = "casadi-3.6.5-cp310-none-manylinux2014_i686.whl", hash = "sha256:ee5a4ed50d2becd0bd6d203c7a60ffad27c14a3e0ae357480de11c846a8dd928"}, + {file = "casadi-3.6.5-cp310-none-manylinux2014_x86_64.whl", hash = "sha256:1ddb6e4afdd1da95d7d9d652ed973c1b7f50ef1454965a9170b657e223a2c73e"}, + {file = "casadi-3.6.5-cp310-none-win_amd64.whl", hash = "sha256:e96ca81b00b9621007d45db1254fcf232d518ebcc802f42853f57b4df977c567"}, + {file = "casadi-3.6.5-cp311-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:bebd3909db24ba711e094aacc0a2329b9903d422d73f61be851873731244b7d1"}, + {file = "casadi-3.6.5-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:ccb962ea02b7d6d245d5cd40fb52c29e812040a45273c6eed32cb8fcff673dda"}, + {file = "casadi-3.6.5-cp311-none-manylinux2014_aarch64.whl", hash = "sha256:1ce199a4ea1d376edbe5399cd622a4564040c83f50c50114fe50a69a8ea81d92"}, + {file = "casadi-3.6.5-cp311-none-manylinux2014_i686.whl", hash = "sha256:d12b67d467a5b2b0a909378ef7231fbc9af0da923baa13b1d5464d8471601ac3"}, + {file = "casadi-3.6.5-cp311-none-manylinux2014_x86_64.whl", hash = "sha256:3a3fb8af868f83d4a4f26d878c49f4acc4ed7ee92e731c73e650e5893418a634"}, + {file = "casadi-3.6.5-cp311-none-win_amd64.whl", hash = "sha256:3bdd645151beda013af5fd019fb554756e7dac37541b9f120cdfba90405b2671"}, + {file = "casadi-3.6.5-cp312-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:33afd1a4da0c86b4316953fe541635a8a7dc51703282e24a870ada13a46adb53"}, + {file = "casadi-3.6.5-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:0d6ee0558b4ecdd8aa4aa70fd31528b135801f1086c28a9cb78d8e8242b7aedd"}, + {file = "casadi-3.6.5-cp312-none-manylinux2014_i686.whl", hash = "sha256:be40e9897d80fb72a97e750b2143c32f63f8800cfb78f9b396d8ce7a913fca39"}, + {file = "casadi-3.6.5-cp312-none-manylinux2014_x86_64.whl", hash = "sha256:0118637823e292a9270133e02c9c6d3f3c7f75e8c91a6f6dc5275ade82dd1d9d"}, + {file = "casadi-3.6.5-cp312-none-win_amd64.whl", hash = "sha256:fe2b64d777e36cc3f101220dd1e219a0e11c3e4ee2b5e708b30fea9a27107e41"}, + {file = "casadi-3.6.5-cp35-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:a1ae36449adec534125d4af5be912b6fb9dafe74d1fee39f6c82263695e21ca5"}, + {file = "casadi-3.6.5-cp35-none-manylinux1_i686.whl", hash = "sha256:32644c47fbfb643d5cf9769c7bbc94c6bdb9a40ea9c12c54af5e2754599c3186"}, + {file = "casadi-3.6.5-cp35-none-manylinux2010_x86_64.whl", hash = "sha256:601b76b7afcb27b11563999f6ad1d9d2a2510ab3d00a6f4ce86a0bee97c9d17a"}, + {file = "casadi-3.6.5-cp35-none-win_amd64.whl", hash = "sha256:febc645bcc0aed6d7a2bdb6e58b9a89cb8f74b19bc028c41cc807d75a5d54058"}, + {file = "casadi-3.6.5-cp36-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:c98e68023c9e5905d9d6b99ae1fbbfe4b85ba9846b3685408bb498b20509f99a"}, + {file = "casadi-3.6.5-cp36-none-manylinux2014_aarch64.whl", hash = "sha256:eb311088dca5359acc05aa4d8895bf99afaa16c7c04b27bf640ce4c2361b8cde"}, + {file = "casadi-3.6.5-cp36-none-manylinux2014_i686.whl", hash = "sha256:bceb69bf9f04fded8a564eb64e298d19e945eaf4734f7145a5ee61cf9ac693e7"}, + {file = "casadi-3.6.5-cp36-none-manylinux2014_x86_64.whl", hash = "sha256:c951031e26d987986dbc334492b2e6ef108077f11c00e178ff4007e4a9bf91d8"}, + {file = "casadi-3.6.5-cp36-none-win_amd64.whl", hash = "sha256:e44af450ce944649932f9ef63ff00d2d21f642b506444418b4b20e69dba3adaf"}, + {file = "casadi-3.6.5-cp37-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:c661fe88a93b7cc7ea42802aac76a674135cd65e3e564a6f08570dd3bea05201"}, + {file = "casadi-3.6.5-cp37-none-manylinux2014_aarch64.whl", hash = "sha256:5266fc82e39352e26cb1a4e0a5c3deb32d09e6333be637bd78c273fa50f9012b"}, + {file = "casadi-3.6.5-cp37-none-manylinux2014_i686.whl", hash = "sha256:02d6fb63c460abd99a450e861034d97568a8aec621fc0a4fed22f7494989c682"}, + {file = "casadi-3.6.5-cp37-none-manylinux2014_x86_64.whl", hash = "sha256:5e8adffe2015cde370fc545b2d0fe731e96e583e4ea4c5f3044e818fea975cfc"}, + {file = "casadi-3.6.5-cp37-none-win_amd64.whl", hash = "sha256:7ea8545579872b6f5412985dafec26b906b67bd4639a6c718b7e07f802af4e42"}, + {file = "casadi-3.6.5-cp38-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:0a38bf808bf51368607c64307dd77a7363fbe8e5c910cd5c605546be60edfaff"}, + {file = "casadi-3.6.5-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:f62f779481b30e5ea88392bdb8225e9545a21c4460dc3e96c2b782405b938d04"}, + {file = "casadi-3.6.5-cp38-none-manylinux2014_aarch64.whl", hash = "sha256:deb2cb2bee8aba0c2cad03c832965b51ca305d0f8eb15de8b857ba86a76f0db0"}, + {file = "casadi-3.6.5-cp38-none-manylinux2014_i686.whl", hash = "sha256:f6e10b66d6ae8216dab01532f7ad75cc9d66a95125d421b33d078a51ea0fc2a0"}, + {file = "casadi-3.6.5-cp38-none-manylinux2014_x86_64.whl", hash = "sha256:f9e82658c910e3317535d769334260e0a24d97bbce68cadb72f592e9fcbafd61"}, + {file = "casadi-3.6.5-cp38-none-win_amd64.whl", hash = "sha256:092e448e05feaed8958d684e896d909e756d199b84d3b9d0182da38cd3deebf6"}, + {file = "casadi-3.6.5-cp39-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:f9c1de9a798767c00f89c27677b74059df4c9601d69270967b06d7fcff204b4d"}, + {file = "casadi-3.6.5-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:83e3404de4449cb7382e49d811eec79cd370e64b97b5c94b155c604d7c523a40"}, + {file = "casadi-3.6.5-cp39-none-manylinux2014_aarch64.whl", hash = "sha256:af95de5aa5942d627d43312834791623384c2ad6ba87928bf0e3cacc8a6698e8"}, + {file = "casadi-3.6.5-cp39-none-manylinux2014_i686.whl", hash = "sha256:dbeb50726603454a1f85323cba7caf72524cd43ca0aeb1f286d07005a967ece9"}, + {file = "casadi-3.6.5-cp39-none-manylinux2014_x86_64.whl", hash = "sha256:8bbfb2eb8cb6b9e2384814d6427e48bcf6df049bf7ed05b0a58bb311a1fbf18c"}, + {file = "casadi-3.6.5-cp39-none-win_amd64.whl", hash = "sha256:0e4a4ec2e26ebeb22b0c129f2db3cf90f730cf9fbe98adb9a12720ff6ca1834a"}, + {file = "casadi-3.6.5.tar.gz", hash = "sha256:409a5f6725eadea40fddfb8ba2321139b5252edac8bc115a72f68e648631d56a"}, ] [package.dependencies] @@ -6916,7 +6921,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -7996,4 +8000,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "~3.11" -content-hash = "cb63112bfe7ee2b3fc194a422479f788c9a8027d445ea51a31f4ee20299beb53" +content-hash = "5f0a1b6f26faa3effeaa5393b73d9188be385a72c1d3b9befb3f03df3b38c86d" diff --git a/pyproject.toml b/pyproject.toml index 10b99a9ddc..a25fcc1645 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -83,11 +83,9 @@ documentation = "https://docs.comma.ai" python = "~3.11" aiohttp = "*" aiortc = "*" -casadi = "==3.6.3" cffi = "*" crcmod = "*" Cython = "*" -future-fstrings = "*" # for acados json-rpc = "*" libusb1 = "*" numpy = "*" @@ -110,6 +108,10 @@ spidev = { version = "*", platform = "linux" } sympy = "*" websocket_client = "*" +# acados deps +casadi = "*" +future-fstrings = "*" + # these should be removed markdown-it-py = "*" timezonefinder = "*" From b9994c7c95658024199ec8f6049c17ca2522bbc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20Sch=C3=A4fer?= Date: Mon, 29 Apr 2024 17:42:49 -0700 Subject: [PATCH 534/599] North Dakota Model (#32309) * ND model * 86d23b15-5c26-464d-9fb5-e857f025462c/700 * Model ref replay commit * update ref again --- selfdrive/modeld/models/supercombo.onnx | 4 ++-- selfdrive/test/process_replay/model_replay_ref_commit | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/modeld/models/supercombo.onnx b/selfdrive/modeld/models/supercombo.onnx index ed539ca37d..c0f8b16fb1 100644 --- a/selfdrive/modeld/models/supercombo.onnx +++ b/selfdrive/modeld/models/supercombo.onnx @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7a267b5026a0fab61095092d9af20c1dcd70311817c80749adcf6c0a0879061 -size 50660999 +oid sha256:b31b504bc0b440d3bc72967507a00eb4f112285626fbfb3135011500325ee6d6 +size 51452435 diff --git a/selfdrive/test/process_replay/model_replay_ref_commit b/selfdrive/test/process_replay/model_replay_ref_commit index 3f1e91c369..47571656e5 100644 --- a/selfdrive/test/process_replay/model_replay_ref_commit +++ b/selfdrive/test/process_replay/model_replay_ref_commit @@ -1 +1 @@ -512c45131ff7eb48bf101f9eae50a389efba6930 +69a3b169ebc478285dad5eea87658ed2cb8fee13 From c7ade243a9c6df04d82b4ff3743a3767ad36189a Mon Sep 17 00:00:00 2001 From: DevTekVE Date: Tue, 30 Apr 2024 20:33:01 +0000 Subject: [PATCH 535/599] Subaru: Increase RPM Limit (#32299) --- panda | 2 +- selfdrive/car/subaru/values.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/panda b/panda index 3b7e3d5885..af4e7088a6 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 3b7e3d5885347acdaa92a5d16cce2e324acc13c4 +Subproject commit af4e7088a68f690c70dec17b48991ef98de426b5 diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 0d761747b9..f4d5cf17b4 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -41,7 +41,7 @@ class CarControllerParams: BRAKE_MAX = 600 # about -3.5m/s2 from testing RPM_MIN = 0 - RPM_MAX = 2400 + RPM_MAX = 3600 RPM_INACTIVE = 600 # a good base rpm for zero acceleration From d6a2a7ba60bb6aaec9da4688f491f995c9d959c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20R=C4=85czy?= Date: Tue, 30 Apr 2024 14:05:37 -0700 Subject: [PATCH 536/599] bodyteleop: include .gitignore in release files (#32328) Add gitignore to release files --- release/files_common | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/release/files_common b/release/files_common index eaf54b0cd5..34d8f00973 100644 --- a/release/files_common +++ b/release/files_common @@ -45,7 +45,9 @@ release/* tools/__init__.py tools/lib/* -tools/bodyteleop/* +tools/bodyteleop/.gitignore +tools/bodyteleop/web.py +tools/bodyteleop/static/* tools/joystick/* tools/replay/*.cc tools/replay/*.h From 6ef95f7a91b33f7f554c0d41353c7f77fb2eb6b4 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 1 May 2024 11:35:20 -0700 Subject: [PATCH 537/599] adjust gps alert --- cereal | 2 +- selfdrive/controls/controlsd.py | 2 +- selfdrive/controls/lib/events.py | 16 +++++----------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/cereal b/cereal index 861144c136..284206878d 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 861144c136c91f70dcbc652c2ffe99f57440ad47 +Subproject commit 284206878d6184747b1e1af03f91ac9e718ff326 diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 13d7b25b29..35dad3f81a 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -386,7 +386,7 @@ class Controls: # TODO: fix simulator if not SIMULATION or REPLAY: # Not show in first 1 km to allow for driving out of garage. This event shows after 5 minutes - if not self.sm['liveLocationKalman'].gpsOK and self.sm['liveLocationKalman'].inputsOK and (self.distance_traveled > 1000): + if not self.sm['liveLocationKalman'].gpsOK and self.sm['liveLocationKalman'].inputsOK and (self.distance_traveled > 1500): self.events.add(EventName.noGps) if self.sm['liveLocationKalman'].gpsOK: self.distance_traveled = 0 diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index 2de4d61d88..40796dd8ff 100755 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -251,13 +251,6 @@ def calibration_incomplete_alert(CP: car.CarParams, CS: car.CarState, sm: messag Priority.LOWEST, VisualAlert.none, AudibleAlert.none, .2) -def no_gps_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int) -> Alert: - return Alert( - "Poor GPS reception", - "Hardware malfunctioning if sky is visible", - AlertStatus.normal, AlertSize.mid, - Priority.LOWER, VisualAlert.none, AudibleAlert.none, .2, creation_delay=300.) - # *** debug alerts *** def out_of_space_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int) -> Alert: @@ -559,9 +552,6 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, # Unused - EventName.gpsMalfunction: { - ET.PERMANENT: NormalPermanentAlert("GPS Malfunction", "Likely Hardware Issue"), - }, EventName.locationdTemporaryError: { ET.NO_ENTRY: NoEntryAlert("locationd Temporary Error"), @@ -696,7 +686,11 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.noGps: { - ET.PERMANENT: no_gps_alert, + ET.PERMANENT: Alert( + "Poor GPS reception", + "Ensure device has a clear view of the sky", + AlertStatus.normal, AlertSize.mid, + Priority.LOWER, VisualAlert.none, AudibleAlert.none, .2, creation_delay=600.) }, EventName.soundsUnavailable: { From 6a52507e3a7479cdb3e4626de164290d839b926c Mon Sep 17 00:00:00 2001 From: Andrei Radulescu Date: Thu, 2 May 2024 01:00:25 +0300 Subject: [PATCH 538/599] camerad: cast ci->image_sensor to unsigned short (#32317) fixes 24.04 build --- system/camerad/cameras/camera_common.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/camerad/cameras/camera_common.cc b/system/camerad/cameras/camera_common.cc index 6dcb8b4d22..9d82284d9f 100644 --- a/system/camerad/cameras/camera_common.cc +++ b/system/camerad/cameras/camera_common.cc @@ -29,7 +29,7 @@ public: "-DSENSOR_ID=%hu -DHDR_OFFSET=%d -DVIGNETTING=%d ", ci->frame_width, ci->frame_height, ci->hdr_offset > 0 ? ci->frame_stride * 2 : ci->frame_stride, ci->frame_offset, b->rgb_width, b->rgb_height, buf_width, uv_offset, - ci->image_sensor, ci->hdr_offset, s->camera_num == 1); + static_cast(ci->image_sensor), ci->hdr_offset, s->camera_num == 1); const char *cl_file = "cameras/process_raw.cl"; cl_program prg_imgproc = cl_program_from_file(context, device_id, cl_file, args); krnl_ = CL_CHECK_ERR(clCreateKernel(prg_imgproc, "process_raw", &err)); From 32c59e829c0aa2baeb06b16bb88af1cdb2ad82ff Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 1 May 2024 22:12:26 -0400 Subject: [PATCH 539/599] LFS: Move to sunnypilot's public GitLab --- .lfsconfig | 4 ++-- .lfsconfig-comma | 4 ++++ docs/sunnyhaibin0850_qrcode_paypal.me.png | Bin 13021 -> 130 bytes selfdrive/assets/img_hands_on_wheel.png | Bin 21194 -> 130 bytes selfdrive/assets/img_turn_left_icon.png | Bin 1152 -> 129 bytes selfdrive/assets/img_turn_right_icon.png | Bin 1091 -> 129 bytes selfdrive/assets/img_world_icon.png | Bin 3654 -> 129 bytes system/fleetmanager/static/fleet_pin.png | Bin 115172 -> 131 bytes 8 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .lfsconfig-comma diff --git a/.lfsconfig b/.lfsconfig index 42dfa2d944..5b63415cd8 100644 --- a/.lfsconfig +++ b/.lfsconfig @@ -1,4 +1,4 @@ [lfs] - url = https://gitlab.com/commaai/openpilot-lfs.git/info/lfs - pushurl = ssh://git@gitlab.com/commaai/openpilot-lfs.git + url = https://gitlab.com/sunnypilot/public/sunnypilot-lfs.git/info/lfs + pushurl = ssh://git@gitlab.com/sunnypilot/public/sunnypilot-lfs.git locksverify = false diff --git a/.lfsconfig-comma b/.lfsconfig-comma new file mode 100644 index 0000000000..42dfa2d944 --- /dev/null +++ b/.lfsconfig-comma @@ -0,0 +1,4 @@ +[lfs] + url = https://gitlab.com/commaai/openpilot-lfs.git/info/lfs + pushurl = ssh://git@gitlab.com/commaai/openpilot-lfs.git + locksverify = false diff --git a/docs/sunnyhaibin0850_qrcode_paypal.me.png b/docs/sunnyhaibin0850_qrcode_paypal.me.png index e187bb2ea2c32fd3bb3d44d04adb5343b9be2e10..57d6024e010cb5477977c6f6a202353aaa5ead2a 100644 GIT binary patch literal 130 zcmWN?OA^8$3;@u5Pr(H&git=c4Wx-MqtX%V!qe;9yo=wX^_Qx1o@3Yg-sbHgWBp%0 zWu^Yq<7CnoEWI6S)ND7uy95x8vzUsD*##(M$*@os7V*SVP>@sc5M%Kn5*}d-A(~{+ NIb25jvH~;~mLKWyCp-WE literal 13021 zcmZ{LWn7cr|2N?1lmSxmrMsn@k)ylYA&skZw@AkeBTeo zUK{LOXV*FB^LZEHYASNr7^D~o2ng6vd1(#c+3(*24GH+EWOSVlJR!Pj$UzV)$H@Fw70#gPrO_l=RtqM;B!U$jX`Jo^+met-Ldb>!`ei7&YWD< z=(Dj@S@=9_mu(?0X7zWQpGf5&4C)ZdQvZK%eW#FNHT-eR-+A{l>-n*H3eI7M=U+QsfqT=Bzkm=H??S6 zR#C6)JY?iDOs9n-c58OAbH4g%?dd?(H$uwgX7$s{d}Bw!*(#DvQ{R_^f@BDP7_~cd z3r5U%s@Z-w>VH_{LFnM7ZW4Cn&;%_3^5hV|_X0~@wlp)A(@Mr}8vdoKWs7_1i^G+6 zd9mWpxBu=$f~puvvhd%wi<^!c(Hzp`qw=~KdHy#i%MBMK*wDPQpC7-zgL$kt531eu zyy;k<&R6S(!lxvr!etejC?jS|_L&8QaG`bJ^oqvcq;eBR7%Ih10_@n`5?BoEcC`Py zu!nJGsnq1e*Xz3dAx~+AwGJQtMYF)Bq@ukn->=(4@uSHcv5vqDRKjx15vn@wnG+Fc za;vN+G8MnEriy;PwkgVx-TleGCbAI(?h^o82xhMX7ZUlH%6T25HiPN*HdIG$EFPwiN;a()}Rr&|9tWg-VY@~3V> ztg7?*-utNHCf4_H>&Gw0hYeicrk!twJ^VVP6w?qWt!pe-w3 zE`DkjsaWrRGR(~MJ}e3Hq37S4*DN25m!q&L z4!8$4lOPt?frLmxanZ$ucoyxQU$!(y+i3tA@+8u`_j5CIx~9rIa^m+>rqAceQQ9FX z?-LK!UY>8d@A^5uzTVyBj;C6u3FNK^##f3D$4CM-6BfT7V!x(|VNS>=3S5$j@xI(Q z4~Uu>V9Ww7bUgeiGshjHJskd_1b=+fdD|bQP05MRjIM|8zCY<7aW)$A?;10KUui9! z;LS~A36dlR9_s&w9$~l5mSvTIP~3ezEGcrVpOWR~w=T-?fZHJ^{+nCpbwgD!EK}gq z;M-5f&3l<^w*&kVKU8a?%z}MBUhYpZ=f=%KSD4xD@hUcYL)SdFqSHQhcscov0cTj? z!x(Y3lt~tFSOU{=MNTEq{E~sicusjA<3HN%&$(da`crT(ou>ViP>>HLMmt6LnfQB% zIcYhSRiNodQB8A*lA^qh-#!ZCXwZ2g<$g{m1qROP&o?qiuDfHYRAxc}siE1F)rLrt zr1Ua|4R5%2C>d3&huV7SGSprVg}(Jjk%b`aemxERj}vt#Fk$FAWP*g7#LiLy52n`5 zHKxTx%S}~C2U61FwDZqCjDs_r!8sy+d+lW~X%@O2&N8){qz=7YWW7W=D1(-sP;kht z`N2LOd}K7HG-Q5(e%kr}d9M3cwVh)`!Dq)og-jJf=}$MEFVT4$8i)#SWj~!PU-jaO z2eIkQhOD%H`WyFgzI@3K@s-D-IjR7dyzjqenc&JOTJRUqi|R!qbdtjE4{xqueuX;$ znCwH9c7?JMYSdJz4H03eg-oqO@d0~&uW(X$Y~a+AQc(i)sh_0Y@>t_BE?Pvg5fCrm z(&G@7IM|n}7#`v=&lIV~R%(fr=F!9mAdSm^xm`nXy3VXM_F|-#oBTzsB6mVQ% zj+2T!!Jy1?O#O?w+jTJc`N=LGhKMnowtDY1|Ch#qo>bQWaPf_>b zr_g?OU}f96Lfvu72Lm>&@%OQ!yO*<_zP?47&B#dBE%&Q`zcS>a2cQQqZ&W_4B zsGDz2%|o7M`uU_miCS)#Q47iGq%nu(TB>VUA6NdP*a?U<2OoPZu6`{X6zX<%l6XCH+Y>NR}qUHbX`MzIb*&SJ?^Xn6H`jqz0?kEEqhN&^> zyRI7SL%Fl})Y9K_t%u=sFufX-_239;f6hQu+z-0$1U`RiN7-Fu0;5z#870;}{}nBs zZu4?A=Gv1l_q~eEolo~TnC>sg=ydq?Ln4IO{HZMFvM{dUbDDlKEv76fWp5(;)6L*(nx}!Ket66 z+Ue%DeYC3Z36Di6g*T%Z7m^!YP;0yQRm5+NycDdF$xW{;nlldHyV3Q%VQI?>(&E>6 z`M2P-X~9;)~VI{c!} zu;hr5Ih>8@a(ygvxn{gc!FIVE#X{ zh(e;_wX8$B)`@dChC)X(A+vg}8dlQfqRO6<8gyb*U>#1J8~|n}k5QE3j2oy#Oji0{ zGFmyRsr)x+4XC&bSzk1GGmIA`4yh}P)WbQ{@>mfu*-7S#G?S(V9+$CTmEn2BvEpx) z{Y#uYFfe1_D2(d*O-?!Y?wwE9bsx7_x;6!yRWiMHNlpnpdqy_Ed$1 z9g@VY^#&}*%M|uSltaTb0%jm5eLv6ZaHJ*8pPHCHS7oNi`3H9zbU<_0Rt*TN0I;4w zYo&i_N1VDCA^y5Bj{Z`6QaH7H2D$I!netcCmePZZGkR<7gluqI#Li`91GBS=%A$DA zmoI@-^67^oI5xt;=WK>Q5;4%56y&EMvJokk*(;47O&Ow&P5due1+Ra9{(F7$tLV#< zsm2vD0&<>g^tnxOKR8~VNHtUB?oaFA5W)B#A)-K&2afrx*?@QenSwB+5R$@=JMIt5 z{I38U>Nt^D#55BK7pyKjR*$x?=_l&{3md|;O2Fx;h~u%kiD0QTi&3Zvt?#1m5K*%> zK*uS*x5PrNY`-=b&Tk4Z&=@g41i*AjhYzt6`WstPrDM4*kA`LX*$44py_MAueVka5!W3b%d< zLXlInh>CpZ)9o^=E*DNCJO?yag^?4O$_WSVEPllOB86gDOFX7|f5>=h0((Ej^d^~W zAPROZ+tFRqR?I7DdUY>bJ6`3&v?K~q@1W4JRQ%^>{_3iplJv0EE7^{R)&o7TK{xv;TzLin}S3T{LUU zgeseNNtrp?FEut&?r`(qZ~>eIcI5~r33n6>(0oB%=GA}g!MP#bc+~@7dL^?zJ(wIk zfdaccxpFcD%%k7fgn_$#RSm4k^Zi06-&bTY>i3(Q-RgCkP)mxe@qi%MqD&T9@4 z9(9s3pe7Q+Xp+>N296hx@?C%ZaNvp+z1B;s7>J{i+Ah}v2mbANsFdEVlqzW>`o!1B zc=5B!O{G8x(XhZrsZ}Zzr$;ADl8v|3q0aZ^S;2+mm5`pkRfanXE=74E{9(D~YFIsH z=^Irh^Y7zcaCDlLdaO#|iV{7IIZ3tolOQkJuG7c~F#9iLnSU23T9` zHm|^hQ5v6v#Y8f@8&#}Ozlalp$b4#vKWPnu5OVDY+w0>cT(Miq_i?0yYJ}(! z0&JIoC=vkC{_^h>Ev{&H##T3`=M5_8n9oY)n7uoR5Aa$Wcgg1vuhh^7Ald5eG%X%`1xmE?4g+H z?<)$XxK$2{pBGrWA}@~@1Mgk1O-k{@;ubiQBKWWyGFnMvY6m3vf7|L47WrZ;(tSgh z(A%g&WCSICWgJkf|JN$VQvWPs;R{xR@qX0vMEopxb4dpZKtp>ujmtgmQ{6=)W{SxO z2_3L_Vf3Pq!*VX{S%?^c-#W0i10|+QRJ2`#Oyqj;eFDAmW_^#>SPB;@JC`zbAHniw zBt}0&rY91^!EzJO6No}l5ERtYDu2!=B7&J!p!c{exrCuzZ$GVUc$&wXFsY$Ynk)LH z{LCU8L^~9~X93BdcN?D)lV_xR?WT&wL~0=pXzaJf?))_vl=J2$$RH;_XZW?)`qsOu}tvi7=Pf~@S+95GAU{OXH60$axV(xRttq3oasA`Q5)_zd6C8O?--VMF-_zUwk@g4GU&+m> z$7nI(tZgd(Jl)TW9kC$${_SZyeoo}hR z1*Y~!SNbcA`lHI$heRzP zNj{LTC^K=d8k#1}%#PHCPtEQV5;~k-69hvp#gVk&WZv}LHNh0bj?cb7OYc*~ zo|8eNb%oaE$47|N=rHKgrivJST6GUhaGV<^X^uoQ9T}-BNZCb+!neswo@Vm5|sV^MmV41 z-TX+tvWkvJ5|v74xRL}=3SY93gRXbjZ!q0F!MHZodDh>O~l05ON|Ef{|? z2AG@Q@5P$;a|Vc%^@XZgICP#v7ynpBE_Fc=8g8m)4);Q><)|kd%jv^diZh@zvP?L3 zK6yNqUCKw`7TL9oy~cEXEn3JpE((_-E5e^EkaW;`m{G${P9X)cnza2Xj$0?p3<(h& z%vGw-Or#sj(aO>jgdf;2_Iuuzvb;Ui*;5J%4WLO?q@Z_=(V8ksa3Fmvv&&=QwqgFf zaa8mOp^vw2;3!F^OOCVBCSSUb6*^>WWbL@u{pO@@!>TCcacnIT!*CXM_;j--emN=C z`16UFL*7WZ6Rk2+^s}wopA~)1Wk?29AHC~6K~k!lzZUloeVO*YO@tV)n$L1F9HBkw zi+eeS)CQ@Hf?7x333`6iV@t1kdST=CrJGkwLC}GH`*Zj(M*sfejyZSHWg=ZpF6ypZ zE_LZegNSw&D^+jUYZ_Jo?hi1Bym&NJho+5?z0A**+B^PcT8pVqczCbzz@|@TcHFOR zljJD8V7I3mXLFRq`0x*Vfcl!t5@RGgK}zp9oe$+Rc@5s@2uhuix2aU$r=ba^X*yEB z-N=(N_526IDZY2_&yP=#9|4HTJsgVs%>_Z0Y0RPsdqcY0A98(q*`-b+;&zMX?^$ac zjNzpgz8&9zPp{>d{bk^(a14{=E~dl~saq8flpUDR@lC^m{RKj=jt-(zss<;TL7sz^ zC=p$qhs`NA5z>i`DFTAz(IOe(k4oTk8%SI+BI_m^JS_2d`)9cl$|}01q|otPz3X99 z(GjtD#y;y|3x+XIyVAHKN17`yK>7@~I1qGN?-I~s3T0e2_Ky`Z5C^T3m3Q&1KR-SE zDo!Qiu~xH>4Mz(VjI-Vg6^R*?DEYY7Q5c2b3!)(w+zg{ZDo=Su>Y)ygm-w@(C#ZQ0 zZv$=q0*Kr{ik-K`?3?`!%&mK~WR(RFfM50n^oXB%aVxBq(Dnp-6H2XW4)N-{QOKk@ za}_z-XN#mGL)FfjFr;PsQjY|VFOL>f+hHBsF7iSL>+7v#ORMt5HOEzq^PY9z$ILfQjnut z7|b@Pk}ce>#gljWZ*#4lAMcC^lSA-YLh{TZFezF`cYqYh!e0!Y@_5g zu#x(;)wI!a@xye_wRta0a01T%27xz`pL{79y^80V{j=fBL;DK!`9!512o{nJEDe?< zvta3%s`Rey_Jgoc(D)IEy!)RFZ2tA)C;vq1JJggog6CN%+*zTkrp8WyC9J9%lDs*V z`mRJi?=b-v4ZPcDpF)%UUyv&x&h$Eit1^J2wHQL$%oE2waLyxFvT5Q*50_S2CTj&Hvi z=S!eO1GQfabZhknsgM?s3#*}}CDF_R05|L5(sxcRf>mxiLvmp%49w#B8~8I7O2raH z^kbnU<*f4;zK1A3))JyXW|_cbbqGC6Ow{&2X<)4=KbglyDi=es6oZL<$!sm-$B z&ia3>>{F-^&OtGX@NOvWJVfRe#NehZZM4gj`p)N{K)HLn^^TWwbp+s8xC&#?waKLT z?v0#L3)h@;3!ok!6Xn2vgi4S1a<#xyyMd8&?5Re;6G&i>Tdiwb}mgmNySnHsVfE-MCH#AxCS$M+DW zU~^Ie7E<;8Ir+I!H5A!c3haf&IvVF8b<2m7#!p&+&g;5~Spg`MpNMNljlbUQ#Q$|< z)3258j`+@N$LF{rz(D%Wk~6MeCXxszUFZ$#Z32U;&R7Yf+h&TgOoasm@pbFj9R5z| zbXdf+%v=pHCk+1G%_VL%qMWY$CP>3KT@x=l*HY-M7qAnUJ(VUCf;+c(UAE;dqmZ5O z!2d<8GLo>xa>ok7)%s;mh+IWjFAZ+qqW!9xD)D&_AY($|(4M`FP5s<`_pOXLVLJcv7pTeAy_4K##3aLpj441wG}=qz?&YrVY+Dsm9J1sU=cWBc@!{* z$xwb<=w}iPLpIHFa~2@V+wyx#ow&Z{OrGRc_e_zfB?6@7M3D%2RVi$3YXb2IgvnGD z(Ik-wN~S7*KUtB8A#rTvhVGJ#L{+z$1YBcF{t?Y)x!2^1d69CjhkI3nNzZ`ZN=TH{ zj_F$~MR56dZB45Zuy(%nReWPJByCR7Xm>xHE!qA>j-&vJ*Gj8wm^W|}L?pStJfP_V z>@B%SQq{o~cMQ>WzgHe5FErT=;3@&9Nl8>h&~Exye&&}Vw}2G2A?`Ow#)&gT5DrtqX?p`k8n`lvjjMiN!tp+fO@x?qCdlS!zO$4XB9B+)?(fY7v9`X zN~~6B#C+=6?ce^V1G8UAWXr`;ECXhvoOduxyT$#8{(iF|#1;k+N?l|3B=iV|Mf&}g zqslsdq#X$-vJ&_}M2{VzN+`}-t^F}{0=ek3t-%@Wb&s~DZMfo)J%CoHI^#6n3I^z* z>~xy(uO1egw0lF5%{Q!buahzSGX203E zorz1=-*yCH%9z36Wt9uDn5`-UH+UjjGLUc4?3LjQpulXGr*LBpOZL+lJ1{+Ng#LGZ zw16v7GQR<*xCD282XiAS^PuO#3W8RmZz=Bc~vh4v8NQUAf4#lW-*tgA~7|?nzC*JRBPW|qebUyF}-@)mzwRmH|`PBANgj>I>_&=WfqMK6wlsv+H;vE zVY5dRaV3?b7koIKO`XcYMO`#vx$?3XtQ0_r9RajcbUHL@lCZt8)YURsFEn7sGh1tS z#+Bemo=TdPGX67-`Z=`Xt#7$i;4U(^a@q)CD=s?Qsd&G9U!F3s94zCC08zT9uk97; zTL{HuPOcMd6>u--6uDPH!*qkR zxGTBZ&6N&cuEOsZnuXL^O%TZe?Gm2E?qj>P9_r^E;*d~DgfZR|jESzdRoc)7#_I=q z@Ur^2r;6y+EMT)uYJUuBmi{J}TGd81Os=r20C?OP#ZaJ?(i1D7vQuym_M(I7g9L?} zLp06NXf1-NU5{(WQ8W800Gly20?x`#CKFv;l>`Uyj>fg5RI*ru^Qn|XIU-)ZH)f1; z2u2^4ieN3O8qZrmvbiX!ko*Jy9CP;g3{L1g2@AI_grMXIq=y6gwn!&9ek0;(_Vmt)Gm~iWGtM> zYf-R1J|_-(qYaCM>!3avVu(+JA7(T1_r=sNuP)FFwh|fPXZzri?~Yv`GO>m<}1vdFEy2pO?;oOKCSsQB3%Na zFrEEi%gyi4$?V3qcK%rbtK`vS{Nvok-;YhQ*CHYi2D>smmZ1!MPMXrPh^6+t5~Cl{ z0WJS6Nw(N5XUngTof)AbMHWzjv2=>f&%S_vjR$+sV3H%SD(9x@h}5)1?uQ6QpTU3x zL%-Wp0rol6e<9_>!>|czrdN^&vJ`kL+o)x4XH-2i`^*+QuNxS)9%=J9$fL^ zhCdLKJu>!beN{YGaEI|uNw5>4+hNV8L9YN9X~7P1(_WF7YL*4l=OY4pSY+63=|oA3 z&a7X3~|F5W+VI zSy(}BpX>=^nu#PsfDEE!30NBsdhR?-jx~jTi-9&R&jIT(`i_?%wIH$i&kf|R_xLX4 zUP>HaQAqioH&fwjzEwaMWlX91#C_E%O}l_@FZCg5%LtHJ*zVD`R6TbB!Xf7D?5VG~ z`*(TLT@aH~&{Cz(0uf~Ejt0~;f1}PqETrAhU}=wkAodurIGKEU=Oq1To(s&OUx-^ja@@Nd2T>(jCT6~rRDd+l}bbfeHc$q z<$mkEo*#-DBI>*;{n@27(z;|aqi*aOh<-3>frUx}>BN%AKDJGvj8^u^p_?z#;Z^DE z*V27eIXQo!pXK{7_Uqe978a#En;d+@oFUp_P&e>Y%_5kN@t z4lE2jrDBiogh5~Ro>jl;%Rt$>lbpMuxTahBH2)GM)clztNY-;`Bb_hdpL!n0DvyS{ zlLXfj#?Imd0nW{d8qAYk4ar6#5g5MY;rUoe1Q^Htc0@W`a^7;}&Ova>)<*6MAWU^` z;0PqDDiLYq8K@?*;RwagwP&tgeB zDvEv!S3-K)v7L!1FF?MmM)H>Dv9W7-xIQT(jcg>5l<3`%m!UF2TSv2+LM3tHA)q>y zmdR1u;-658n{=J!R^ddNL{PkJo{}Y#ME~J^by&dfJewnhI)`JtJ_+0r|5vE^?>@j0 zq@(3!lX{E*+vNbmgmO#g<@w1!5c|XFdbg2_ANMD*IYEGInKr*qbc{|8RbYB21{=a7 z&l3jJ-vz^u?EoyrK(4`Uh$>qN>f#UagDJ_=jSyK7CVV%R=*B)P%Gl%b&!<=-zg8k)T)+p!){*?Nxt^#7X#{}g5We1 zeKScdk8F2{#C0D%>vAoJqf|AC;J$!K_}e&?|{s%X@C{O5uo;N>$GWGj3b z4(|mLAVt6PKoYG>xTpwuq!dp@Aki1TJ$iE;c zb3>JpcXGj>%V`A;@)OMDQ#22WTUBz2A8xl|ffl^!(739@NtkRE?k47Qe`(>GRP0E| ztRWHt@=b*}z);>M`+at!CJMrG3LBNSm?`a=`SRm8&@Hvn;np@$Z-x0<)m6WtdgMHU zf8N$r5|r5K5lUD!>gm0_gX|JpE}w6`*@C7hc8^N&s-DGOx^3dW6ZK`Mdc=1nEcPZ5 z`ugbkYTeYsm<*kTG0S8?NKau5sJ#7_)bTRYSkKMRx~}0tPQ{eiqA>o$a76<3-;FSK zx2%en*oQtBG|oM^O(V~W@<(?F9Uw>!Bs0XRKy<0_((!vZ0K`sumUTa>hKh}8xbe%R zOM07GW>dqRJo_VAy6ER0-)Up)qaw<6O?|Y>l`}<}i39M5+b%F(Lb0;_&?E3pElmIh z*(fkG?8aai&F8S3DB<7VdRSWKIj$}2TBMTU^o_%`647g{!9R-R9m>$<@e)|b|II8V zs0NAoXNNM&F+E!ClE9h(ieNlCZxTGy%UVr^EsGS?ofYTyCn*G7o0PWB10d~%gtZ7u z(MbmDzPwx=#fD1s$%0&c?0L&2_X-5N zKzL{5SV)dYX(Jo2wk&>|aE*sCB=mN3U|;@&&_5BJj#TW6=UK-xWl4wj>zI)xcM^QN zO`&+PnJJ$5#bL)PrMdT|&$Lm1jf3Bl;><60(Q2Jxu;J*DL6b_#O~@$3F?@hh@>;yO zK7T4M5D@9B4NRKflJlwp!5jOw<#|eYW6D1g_inlI<6qjH>F$&Ax^bj<9k&V5n^|0A zDZHzrHV@m+Nf~NrGp9P;3FJ6AP@jz4req!$_CEh@ADr-{)mCCfa^|8nw)R)cGCEmlzF28?6+}1-5=R5t zV7tlJJ4=Tr#xG2V34W)aCKGmeMKfZgizUzl)(xB_@>?ndJoHvAlZ}rRsj^Yfz6M0b zv%IK!d)4NilL~bC3?iM{1{YUT6fwVl$C;jHcN8&0ge zfNd#Tye(QTy#z@t`hxN$Z){DHh6L#jOO2xVWI7F8Q~|_2wQ@8b+55wx#iiNOS?4QM zN5Fw*_+~QH#g&18N5wG`BuFehqSj5k#ziHe^wV|8GMR~skbx8jeyH+Lfw2jsG1{-@ z4NK%l$Q+v_1IfzsllhFM!|T(8+?i3$A~Ub5xV$f|TN@4Ub&px1(IixgFtDxWPSpft zbsHvMtPvIDu}Nd8ZM{e_;sFhY8{(d+^y2k|nR@9tT@i{c1zD_$Wk{@`Vc5YKPrgsIy)P4(up67GA^$P*bfX>t6 zp(c6xqglOP?^K*9XLm&$pdb7A2^&*!upNKvUbC+(aSR>v)6MdmW%t^+ycvcO9qK*cSC#wzxs zuchz3VK=gF#L829_-pg(7NRS9A89Aw5czE!Qgy}r*Gn_;+XRS`b z+MZOJkaao=)eymu>0Vu8AXZXf;d)?Gyv$F@_;SiCspglj>OlU8R~%g08D}og!TOQT z!aO*3P6uhQ86_NNP(_d|^y>C+3=dXFwJdd!$14f}r)-TJ{kjhd{NxGyW~}p+u`X%E z6Xg+4)t~fx@-Ipdo;a zv@cQW99PfX;LdmYXsy$iTz|hd_sb!mc`~PNIwP#cirp9MR+$hbvGwuO>aSu9m(HT0 zDNKw?Pa-2njN)$^c@rfvL)uwKnD|_2(*-rVK0>pb7NN$hBLo zyMG)_Z(k;;Bp&5emCu1Jc%1r06fqaI#2tX*T=}-gfD+1nx=Q!nLq+Tk#vHCBBo-tI zi$liTz^ne*XDQ@9@=hi`MHuLTJ-w8Q_!&Hh%|0}gLtVB^)j*n=X~(HJu`J*m1V#!_ z`bOYST*8Wu3X`Dq^kzse-X?ToR@5NO&t|>}$w$Y_Pe6HHWrH^xR+M8lD7)79aSh|n zl10;$!?Z)Br2&BpIpPx+d%UFo`I6C~jw}{ZQ<>@%+h7tApE+aBYrjIIR6d9AJG!Lf z8N#{&sNS^ry9(|p^dFlP)Kkr38(hBV6ulxU5US;@1?T%EOEA~%KB5gC7toI%OKD|< z{VDe7TRC2;(*_A`Af$6Wc-ZXvnViwEN~HlYfq#WmcD*@&>ebz`hhV8;a0D$;>CH4= z_ewpRAvzbMXGSjXwD0Biwk4U`=lnt9EZ|J)oCEq4=&XzKV~nC!(;zhZ%b&vk4w4@5 zD>+HEZ|8FBav<_L1)l^6i|@xGXwIe=dGXdg_#Ui`mIvMtK7rWVi(hM&O6AAlju%19 zRT`JvMVI6`2@SkljhL@F4`VFu-vipc+dqgD-jID-CWDN|6*6s@fuS`cY#vIg&ty<{ zL|P0`^=m!e&qmANH*Jce_#oP@EASub9=fmb{Vq!4yb;ei-y|vJa-w?7D$?yz4qP70 zB%$!xN-Pv8zEMk9Wr>?c>uG9z_|wWy9P?p1O8l%39D__M->e>`j;*1LSskMDmKS+t zVX{cxj>wF6<~y?9&-xFDI`1m<{pOVZ-)}WcTZvuxT2T;E7$6WF1OJkO0F_aZu7sEc F{2yrVu8{x$ diff --git a/selfdrive/assets/img_hands_on_wheel.png b/selfdrive/assets/img_hands_on_wheel.png index 0b06b4c6207fb0842c30bdbe37a988ea0d7775e3..2c7c50d17ce8b202798860b33ff672e613596beb 100644 GIT binary patch literal 130 zcmWN?K@!3s3;@78uiyiggaFe1rUVdXR5}KG@bz{tdzO#%@z!n5LpEa`ecql`mh1LS z3y+tPqp&$qjh?l%-TJU`1O%5|A;g%VU;;qLv@=+@2DV7SlTWthYiHM(YbFRa6ry`% MCH+^lMO>Zw1F>}`RsaA1 literal 21194 zcmV*0KzYB3P)dPC+00001b5ch_0Itp) z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR923ZMf31ONa40RR923IG5A03UYUu>b%-07*naRCodHod>uiMfLVwGAubR zu)qRK&N;JWB!dLWN%Sun6a^#*eg=|AFn|am2q>sz$vH1b&N-)rCBqW;`@OR>cjwNX znL1Tn)zfotpXYgR_jI2+sj5#`S5@~N^sSQmT?EFC9Xlyb4Ff~KOjXQWx36PU0r54% z1RVdo1wQ5YJ7823yv?x}1`QhY0o#)LQ3M9{BVPuTD)3!ZD(K2|1?PE|=Zy=9`v7Qb9dlN2UL(c)m~Dwblq7?=cf6OF~#=fVB;AbF^V zQc{5@IMVK;n3+zdG8jewB%$05wNqm>x4m z040Vsz@lIv*UcOFe>12h4n4+{)WHZ0O>NS+)9|6s_Tn3aht|w`X@fT5+@Qpy3 zD10O4$xm`vkRrQ)9l#u(#Y^_~5%`4Dmx8mw4P{S*C?ujXQ6vZ~$zfW=ei!TtRs=<) zu^6Sh@fSdACTd<81?rmD(DM`u&MGUPO8oqs{?mlQ5nsqJiCP(|}DBT+CBaaaxBU zX!=nXjxLZFz#}v^Egmux@)XN;!EQj07n6Zb(3dEE8ORUeMIc|awn5X7HH^l`ulemo z_&GHNW&oO*sfX5X%w30R*zXkGf#S2lKk)HmUnB5wPRh&&CI+fk#q??L3i8xW1{^5} z1BPe-3*hW_U>l%Ef_DDv;?lG5-@&b|8VE9{;QY?u03i8!k-FWFfQP|D;4z@Y@G7<{ z;dPXV%XAo^#4$h68jvNbn4N82^Z|;_0H+cYCC{dWty;mV9^h6$c52mXGg8ud5d0fl zgv{5PF_p)A{-d zK=5zy7D!EBq2QmO*JB{R7Xw#-uYoUpLxC%S5=+0Qo`&BaJ*5)$PQyt+y@(jT-iw^y zf=$8JKwZ-m^dUm;0Jm2$lDn726Z$1lPwI87TE*&YwIn?i-GkuYgArhNkTv0|_oiOw zLDZ3EWcnq=xOfT~7#iPF7iQ|RB^50KG@k20QRp)a`5Wjp(q6Qf^#^;1@l4=g@H{9A-P#{w zTl1mc^eAW@+v1eE^gi@B%o-=}!L+!qgOu6LA{-vAjp=&o`Y{SB zLeHh|0oPR7xjZj=CkoXtI`n$@&0rp2r5j+}1f8E*3#8z~cGdChU|uj3=w&!P9yQz6 zj_JAl6QFk+YTNq#+A)p6=z0Em{QQ({M+sjK!+>9U81XK=Yh(LE9%Xu1(Wfynjg7S< z)&Df;__7^S(a#k!QBVQ8AlC*9fVsi+;2WS|zX&v7cptbEED9a~?MUV3r?Osb$JFi| zHiaY$&7~_@jAp5(j6d8(>l0iKbM?vRP(;Fywt{L$Eoz%*S!9nOa-a}8OBq2TM z9L`2lpcCkK8(N8TS~|Wg&|tYH0tb;?adefn?0*huP z3!fPl8GAJdN*0ux2rLWs2NwdL1_yf~X$)4~4m9YvDVQ;|ekl8Y;2U72Xh}jgqxAn- z6$kKrNtr)`qAef{t*)?g1Ym3M7D!Dygjv|U6voa8e3Qjhlrh~&;hPQUE~%-wkHJ8o zCvox=usU#c$$XNvH?fa$3B3ZMQ#)ydQwn^bQKPYi~(EJd4v>_n>bp%`381J^QC{9@!zu;!4VC5KG-wjWrwu?gj%rIS_)Tr16c@ z!MdQbT9)lr;45IIBuS!Lhlg8@h{Shpini>Mnft5@QNOD{!*V8V)t)m+GJkNQEbAc;i{|;P+ZCcS%QS&+d|)!I5A?FjE$rQ3xJRm)NHT z(4qAhR?lfDb(lv%W8o zjF7L{j2C^3a`0*`#ic-V_Uh($HOYsnFY+noIuRv_U+`SXF-fR(h6P`v~*!LNU5 zpliWGo0tU`oe^*Kr6(8ZP7`ziQ%>KG@S&$*)?-XELVng{p{496gY|&(PL#}%#De8p z)kpa%pF`;b3a*gST;$ISUiC0gNn+y=n<%G6cb4AQ-$LXUvW(H;U9%XEj>CWtX(iy0 zEIM6fksp#Q?x)-WF4_I{ynF|Wfe+=8B<8^&J-S*cI7!s%7Dc-nl)YZ#@9Hg%4ly{Z zkHbum)lp>Z1@t^Pp|0u&|@&C zP8M^c!#7#{G-h0iEQ{Fu)ThGW%_B*Kyea(4m~qBW%j1Vus&+RS9o-a=LYA{0%zZHU0Dz^X>Ui@Jf1T8 z%%46xw-i_!%nw9bg!VOf6KHYK-QYjyd5vwy2z#eO`T9Upm0EN)Jy2WI;-qiDV?bXe zyB{nGjsaHEGJO3ft~;#-eEG0nYi(`yFRfNF!EUvPi&n=(;~7F^tFMD zeiBh-k0_Le^ei5t+zdTJ66_#<9`G_qL3;K2TA)OkE1`2`a31&sq@a%wx=Ko?kUuNX zS{om_3FfFbyPA*4{fWU4trG2S!bx@ETy#S!FHx*yahuD4hVu{dyPK0m&7B+BSt3MM9^-RWi`G95#9NV0fiPcj1Ai2n& z1!xA$hpvY?*}r8#wi2+ejdt`_%D5zzjaSP8&4>RT{11EqT=bumMxi_;S!m(UbcyZC zBUvc+XMxOXRcf)2EN})$O&V`Xog`*Phi1Nf=sK8_B?-kD`IcUquC4pPx!`9&V_3x{ z44f7m37!I>bYMykF)Acks1i~qiycA(=2`Bq@LS(ZY*`h^P?9(sy}>&mD`_BZ_mrL?KO|Y`1)U^8N3K?r zT6$ctMWJ71jW1T55XBOkkhfuTzD*qB6LMz&8oc(Qt6@%^By{7@wUCuYAz)A7^D2Bu zDBG98fZ4!E5R<+^*xv0mXFH4hkYpi0r^%*yd}(A&4$c92lNw;~C^=;}0;;1tNjB>a znYlMqs{v$94>V})L*_53*Yx;qF=kuf8kg{~S-kgvq%T3X^b^HP0iQSNVE3XVQ>HbC zup}f|DBxPtkcp6?aS7i>N|9cqMMrM|EgANuS190pSES4|KzH~~(UmC9Jiv^M>45Kx zXVRVYEnehr1-=9+NOi7tIQbC@mjD`xPEAQ)j>7nmWN{bef|CVhbw_>=gwW*_`Zmyl zrV6n?8CVsZ2{glDCGQoV2=-YTuU^L`U<)vljAg4{)Nrsn@a^(bq(U$9SBtoUh_V_> zyRRb2{zq}2BuJsL5c0PKsggv^Q(d#kr^_oYqez24s;s=|5M!)^*l;2wS=>pvo{QC@ z7=8@^9tA?W?P}PoyY#@Li%`8D3%vuAdDI@>8G&XXETqA-wxjQyS3GtBA-z&1#Q$@} zqwzdt)FbkJRKAQd{UJ%bO*eV}EN{lYj+p*qL$&?uc4h12Dc#lx7?P5L7PX*Kq^r4GkHYaFn9P9azpJhx! zvGRG;Z1g?NB0RJV25&ZMYxDa9&YcR@2Xg^kh;xGVz$xH;;7dhZXK^b|G+pP<@m;`Y zz?bwvorUTfmG3^~*D@$oGIGu&z@r|Kg*NrIvz{LXYk)T_iW+z{u)AfwtlB=u)$S}w zu3qH7`BB6qaU*u^3WkEp;yJeJk!=Xh0zT91x|W-^+gj{`wg^2OSm|^a+rBHoc{%te ztH3(G{em1Y7D7)*&*B!!^#q-Lb^reeLg=3qYTHXOy7DdLSVs2ebIC)_ng&OnaLKWp zN6!#&lR;lImJ>PH)1_u#H#a46ANm)}Ju)md`|=>)wr=lIeXO z12hQYBHax(_7M*M_keGga~~fazP#8Ik}PhboVxtV_P)=;6se4OAK+_iJAPyyEWr+H zdMB=zOZfvGGIaXL`Z8Jeku@RsHTVYj((M$``X1GV61Wdt2y@Yr#Dmym{^&Hk6NB@B zgDsf8p%D)tKO|XbAWv%>eCag`M1Or6nHv}k z`MxV`$k0XWqD@?Ke9xm$Q_1hT6gN4qI#6Bska}`OOA-%Z(~JReQ;*jAxD{`@6s1Q1 z7yZ-Mp?ZFVZw-8th4&O$y-wFY_Jkx0SDYHp-^76=ANWP?(v8ZR{NCRXhu<|R*LY|- zmz1RFV90H4uYJ%$wVMKa84Nt*H5Jaff3 z1fXO0mKKaZVHu-1WITJzz11yRUR zyj=8XE8D$~qiM85+yA_Uwkd$F&4AB440>s3*ES+EpF)1Do`s$}hi5j(AOJmQ0~hJL zmTd_EJGq2#{;zF?L^_F{1%NK5taJ_nqJ5vEnS03h?MXyS60!&V^B96Ox|!|X$51q} zLD}`*f*l3Wxe4%17CSq{W;%^MS(C-zkYQdnoyA!6%m6+C?Pv@qoiB&Mqvu^0Nmu3< zwk$rQM>86hB-qMk)kD#egnI2!dJ?r5B5!hFd6bW{W&~xQfp+vz&A6Cb6l&C4joC`- zS?n0ohDKS)KgnuL9iM#oVWX^+ztMMco&Hw4H(G5#fMv1WiB@?r_^@dY;A)%Ad_OCO z{#G(j=-ZP}l9;)bywKyw)HJiMiFWj9sQf`HMQeM^F8fG_DllfzO>o$s*`IiB@(YPiskh23cVrdo^ggLba8? z(BtUa5?CJDK84TxUIx4?0t+drCm*P-j}Q8$23mIQL%P#C$7kyGxb~6fn2q+s z1JVV42`oJc*v6h-U*57$nR`{xK)MKz1iASy`_XqG@JZ%cpAp4I64km$tOc<~>_{3sJl}E|KIsNA{2N~OW=+sKW4O}u~o=4wI z;Cc@mH9hOyNGUVILx)(e0(tkSRzl}1Qf{Qo|Beqm+W^a;Va=qZNkVN4MSItjIkxLY zYl|qF3|KDEPvJ}YJdXS|jkds6A>CoN$Px_7TkoV#!8UqEF)%4;qaOYOlx+NfJX^m>lIWHZ2Ww4O-}oC`#*vpmkng z?Ox@PELOuFWkf5fv2IfDlVzVW#~TzVE=hY*^|qpGDqvZj+i3a&9O!u+zFwx!J~9>r zdVKLEEtk%$-)bwm76z6<@MEkpYkbI6lCZo>0b7Nh{$e;(fN}6h&En;tmVNdUnAhxnt=t9 z1*kzVx=u6Lcxywkwm*>UktLW zl~adB7YFDTtv=` z89BZ^iKi%I{^(4D>878^S5Ly?A8Zv;uX+WO@T^QI`t3NK=D%`e$*g+Yl}En1!ta?a z8u#qFjzi{R26^|klacit`sW0i@AoAwxn47?eoJ}u=weht^10K(UZFeqJG(_sC=c@Q z8KdfpDTuU$EG&jxO|go3;Wz)7Le>UtnjM7{()K$C}VK+ov0K!CS;6p*9^mNz{kssKz+7{Y}Z! z>Psiu&m&nZhV9ChR?-5lRqBJo?@JAZAAo1V`f|Sel-~#F&gM&hqreot`tst(w)w#$ zzD~ifY3WQKPo}&c;r<6)^q2a0z`QN+8JK+*{-O0UV(%kAb&^0ug??+Y9oD_71@hSB zkt`O)5uX7z-2qps1&jSXjDa|)R>o(G?7=`^f%YX`NI&q=)hS-=RQLZJUk9uFDi@Rp zDR-bzXV3C}_y=;5sD*3SwrvG2t&wm&&((y*+A3Kr-qx^;Cy~D}&~%}d^t`{K)Uq7{ zG|=WE-GR3BF%|xWfJUHw=>-Zz>6-i4o0S)ve+ZP|e98OK3I*Q*mR^B+k(ETm);CE! zN13LBpjl&8E06rVdJ?GWA=Oc({nza1*>XYyP*3-;`t4}x=+s6>jYYb>lphoITS5P3@U|&xI$Y}@Lmjy5SIt{;)_xC{C zSrN`p2#y5Swpe-31Af(qwG6Cd^GFhlqenN=5RxytCUtFw(4!RUGr+4m=l4COsljdu zrmnRy_VrAt0lDLV??sSDvRDAS6g(>_*hhe6fTdSaldDFw9~fSXjkf%r75o6)4}3}b zlT07h+nC2beoPPk>l=V7|46n<7`H`WVLLf$yW=^OQ;5lUN)bK7;YF zSFSl-d%6aDE^_v#2D(-?qvS)qztus>$-t{d39rG|XDYF=fx$B~unYv&t5slHE_`X! z5%L@P^8@+dL$d2Vp8|Efx)Vy@=(=ORyKhq<*@C2yIA$$_Kk8K-4tx?Y?7c|qWz=pJ z;}Ft#lus{0I+P^l%<6x;^2iTK61vu$pE-bM1hBS$_58+vuYw=SHWqpkCg+;?S`gq> zV>sR-xQ-`}WTCsyD|I@Hyn6@6C0)Q%tFKOM@ogQTMA!|KN0QJ?ovr~N(lyrhk*vOM z;Z@I8*Rq8+>nRKO*@hCz+Vl4m^4OuA@0yG}lEu8(^|Hb5PO>C_Y09G-ld%%uq2SI= z2HK$e1$feYzo8mgAYJ25!9XcbYl=LNQTBniuPSRW$q5AM`A4FnxrFRaD>n;ajc z0k%b2Fw`H`z+})|c7tId$zsuZ8L{{AYZ%b8SW!r$&AENpC3ZZs%ENc9h*Wzk3aM=j z%j#FV^2pa(pInoK>_O+`KsO~9Ehy%7U0j_1cRNRY&LQhqgT8te1#loF3k~Z14rETq zKJ`&VUSgnbvBqXPO+`%-$HuBR0(_An$ZIQ6>||g(ES6!CgTCVoI_p{bd$PC}XY=`( zNX&{%D2sULk$7KVd5(rHI`#V`QN0!qF+^@hU9<-o825g@nRV?XwXkFP-T8%EI1QiP zw`v#u73}x<4BU8ED|^fG_jh35hU3wGGFbCtjFr3}8HH*vt2V&-xUr0t?M(yYxJ+wc zEE)@O)JsVV|$!3F;{6V<>u3k)^I)jjfzG>k;`TptfqI z6N&RdR^~uHUCYZE%4%?a9N~;!`_xTkUQe zO<`g|I4}=TBEAf~143yO1tsH0KuM-62wU}vzKa%#=?u!$lTh3Ap%Y`;&`cJ_9BDL2 zIYF~ZO8w-o=i18)U?4hHh$pZbB<>qUp@ji}Je3$|J6g&V@k!1e_%n--wG*Ynd zhlT*G8%sO776L^~5=R)~P-8j0Pdqp?D|oNQVb~ttM@ZxY*r4f0A5z6c=~*D>K7--~ zBfA_$9CqtYb~ezWuDnRPq%+xURF>di*QSO*{J$(ZYGu(Ak|gvfkd(0Na6=4gEXoDV zKPkb9J!)LWZPcaR&7y=IzR5zLyUTO|Q(hkq`3AHjeI2Pb#?#F7+>c?8-iG}f(0e1D zBI%Y5bLSp_HVUyvk6tc%0)`3Nh;g2xd{L8x<bVX3KWiy4(g|#^ zEDEVNHB+)ckmZwM*F|zKvl#3h1P%as_8?H#mSl@;8kE_=NCL3MvOIssP<6;(5UB0> z&`F{CtmQDqGJ{udvvNS|gvrST>bX7k549Q{%7-nvBn$Ld-hEMM4h;1rW;yJb9b6}a z3QDqV_Lx40%EFGn8e*h@Uhm!zWr~_44mJ4PjHUHQs^H$PSqbB@OdqzfR6ch2e%Rz~ z%B*gYEgpE4BrM(b&*9T_Vn+!ZwgIC-(MdLL)6rm|92-_M2I_J6%*g`Y<$-Tc;^frv zz$VL^p|CZj?ONIg`|(YS*bn}+rSM26Fy(Z+ITcPVwbrW7mKQeXG$!$1V5M^-xf3J? zBehuOEUU2v;*-rC9oIqsW5#%>XR#A#*#+m^WI#6;-^caSf-2sl5H=kQvQV#8s=b~c zk*YV^*7UHa8S773EYeF!Gp5jE*rGa`_y=E%hY+mC-%D>~;mvlID4=mW#JqMr9=<3(1F$^(@eRV;18xlvSIJ zGJW5w-jJ^zP7Klwq%R@aGJWJ@z>oWCiFX7;F7h!Z67Su}N%nSOyXZ(S_)i8uZl&x- zV6t|4EaxNxYz!nbl;lgNVmTDudbG%!F0{lqlm}fG#J2AA#@)W;OH}y zStBolr3*->FC|~J*D3}Ws#&8vA7L{s1Z?BSfu2Es6@FdIF8WO$os_u7Rf_W~g5f}l zeCU8a3Ns!+`E))8WZ-?6vcof)8(bXSntJoS^Ibq0%O}o)?P^v~I)QZikbGOdnY=uX zp?h=ip^w2Ccw-F+_k;#pw5ZL8bnWUI*0t=SYkCybb||5{ri-Q#KTILXV*i@17+Y+Z z(`9VN^WRYZ3@}9udqZTPdrIJQm;My~?}zA$Sw=Ph*i81D$zs2H8Cmu*R9)RvbQ^*@ zc9*Ng1sl%vaPWP2m#LNQ^j5Y2*<__NJ83gUP6+k_qpSu8@U0QcM|AJ!ssDBO=dah# zZ`YH7a)Oo-j3a)ihv1@XYy7n>1?B@TWsP#9eE0^T$2JOX^7|hgy8~EOTdGH;#axBB z*sx;@U?ojgu2QR)qHJXo@R>^8qSLlx?_lsfpcyXL%@dXiJ;&dBtNZOX$Hedt1^V{| zKGY{k$PNTtYY_f>{eIw1}x4ox%c)K93KSRafR_Fk8FA4d?bn*6$mRnSY{l za+se5E}e6s=VkcyS@b1=UV&B_Wl8z|26zSB2cH(!6oRl<(}quizSC2EE&PH*`n>$L zeNVMNQjO!faIFtCqoddeB6T~3mw=vCuS19BUpv4$p3ouLmw`#fA8on!JZBa}&zCJZ zay)_U`o_ixpthq$Rx^XI!RJ76c^r(y-pAnmHv3nBcBFU?4~b(U_KmEQIp^x-uT5Dk#H?hN-6-UumIIO$RL?@sKR&c~MR~vT}`6ZauEJNNsl=UxO&)bMuf5Z-Ta~Ksmpq z7#;NU9$R6wRHE}koX81D7AH_{q8?+~?7+7pu-*liZX>F&r|@qFU?E*l(^?&YS9hZ? zErN|al4b4{!mB&3Y_`x2R=Twds|5390_z_{2chgsu%AQj%Dtnasvx@XcZn ze4WbG1~Z>#UxSjZNP{<%GpI4P6+``Tl+Vxao58I0#|`@*!E*=D0HX%9^ai5>=_5xr zu8ys@v+XJ(Zu*Bp4;zfW82{Qn3Q7j@v^@F}u!(*rq|1@LIW~Rc(t%C?fya{M7DL{n zE_p>ekADYZlkbZ^mUDnrf$!RqQIygD<~79)TXp?wfO=BUik?Q^xW`Ni zdWRxm0%$|A35 zJou&_oL2MZOoP48gT>3e+*5I^O7-wQFA(w5~(&Q2F%YZ1y| zyQQ0XpT$;WX*?%yvOag;XE5v$i=Rd0!MCM>#v$^g*Fs`}ftK|j)2nN0>E4VEF@iEP z1eOaa_AZ4sqMOwGJ^B!dIhLWq=0u(4j_^m9S;$hdJk`b5;{1mk7eeTis%}?Vrw<5N zv>FqatiqkA4c?DY8jy89ibXVjX5v*DO7N6vxwZ!@QA}YFY!TK=3`T2Fl#mC#g_8BD zpy%>XmPp4c2DwUt7Z~_{29I?{M2-18urZj57)~Q-zj{pPtPNfXO1fPnA1n#o5)+rM zj+`fk8XMXZXn|H9qygpW0~A^6p^_*D8-!bgHHw+B@j#;Ak0EyjD&~KQq#o@WUKf0+~C4E5XM#2JKgm>2YESAYKdYQ?;QbFLLFB20&e8 ziHS=_$Ij#DpHaRA_%tUYH2CjJmQH{a1h3C zV{qUe1J6$IOlIJ_0iIQeopXe|%A>pcjRv{WEgM`k(#62}Z4?{D$iQ1j7GkG_s5MA; z=3w9~0Xi(#wmDIJ6kve0>+37}OA7oQEJ-CC3fkUbeTC=2Ps7*ZqdkBwyqCf8U}l4E z%f+>sLC&-AY(?yPdJwKMRo*S(Q&|^TY_RyEm?$=SU+2bZ%u=;0mrudxiQVHAUJd*Z zya-ZJ$fJj)4NPGjqtM0aOP0IZaR@yC+ych5QJ{4k*8|;o=O*ww0X=eb4bjLa16nfs zAB=tzoB`GZssjrt25r0l$es-z=L%YQ4j_K-Ta?!GRLiKoT%;9$vZWn8#7X&NA;n0s zQp~h8Sxd+jOG_KG$WP8g?7jh~qi8r#@9|P#xkz=B{wKH)xJcs^zVwBmz+efsj8RyG zHR_wR@j#Q`uMxacIDRsfuEsDAP#{%SwtWbm2QR}HlB_7&IjZ`k2EGH(-FWH@);vfI zT=lRD@&`F|Jb;`l9Xu^ht1Ny!2*Z*sna0^5TP|wFBVUlCWU+iJo)*W|HuT&tXzjqi z*=oS`CS+O%U19GGVdK|mR$MN^cD>W0#6BNT+t&=F&g-W640r-OOqtK&-H&}Gn0C}} z6Ge~H)k;>k*3z}@DObcDDs>s`QgYZ9%o@qYI}CDWH}G6+;Bm32SJW<1sJz9N+u`#~ z6p~#dCEnet(2I2cVE;VYQdbOYW2X|o>eW)WusLZ$Cr4if*Ud*I%wrT5VT~qqO}DVo z@Q~j$(s{uV;7Q8g2Mz?Wl7yC}UjSS*n~Q<-F)kvD42v!D$@E%)!7s&HG1p=)Exc1* z%xfsupIA~Qipm&;x<4-Z(#6o^yhU!4V%>9yhNwj@`r6RlSgoGWFTer`JUE)WkCKmz zhPW6w|E7V*#bS}+w596P(Jo~H=T!%)i)U3g)jFCvKu)(62}u-|YkSfOh{PB}G(rr} zvzCjxuGc}Mn-c5|P@`%~DGMW*Fi`6@tx<=P&j!4FHK27{#{3N1o+cv0QVFIwxs7(B$`Lo$gVjxagYr zX+K0`SrqOaz;<9Rdr5Cjbj?pO1h;K#C-xF7A~;k1#XS81;_DRUk%^KxF0PC+}*f4e3I&j(Ic_qq44xRW|5C z&rFI zwq(ghxlw-82=pC}AAnmB_!2kU#n%y2>Rd=6Q^n9Oy+O4V-DUTS|Hq;fI1b zWBTBdg}#lAPRak>UGi$@#S5%4(}kQHVb`2Mu~y7elKfZOQ5%{(HwRIKzN>(X7WK6W zftIhJjgSGBPm`S)V8ARcuQ;!}c~U}${#D$1;BP=nep8a}KF5N^k~-B!IJyS`EjqH2 z-kVscl}McfKA-rP?m?~Or9O`C#enKSb&-pob}=;r$o* zJGdQxQgnko%&FXc)~3MqUWLZBftxAwTD9ElY}WuwRDWAH>kxw*tjwwSsDHJ)Re{Df zwgM?18{R_xKfw9;K9X&8!k@M|Eo4UeNG`)1L~XhInn#T66#UR4P114 z?{c&wea@v zXR5oD^fbcN2Ir3%3*>$5Fj_Y(Z$jqn4!Jr#w}LpSf$<4%3n+lxrwp<+-4;y99|H8R z(JUVcHJHt{o+E*f=HF1*k4nrzuHoQf*TM zufat5nGHr-rpEi&fLy&7<3alz8IqE&w|YhgVf_PsHo^@*DdxpK8F(6t#LHft?D=>sg0_ws?ARA>l$U22QJd= zk2fK7ltb{_Jwjo8z`-m>HRj+&lsVTSSEskJ2!(GFuo<`zdZCv+a3X04*GNMVBn&o8vStnM&K})P|jDzowVRe^y;`x z+rPuwo^5{ex#ov^9Ua!|7e6p=32+>{FM*rE_rY`^HhqY|v%$JxC?m!Pg8SI-SA@GR;vgl%#7w*TOKxjqTM2Wh?u}7@4~n)pi%{jnqRY;EH39leK zXpUY&kgd8`_j&}-qwc-nLS#P4w(F@{AKT%`4#4#t(Nz9^L_9-gQ_jJlog7AuUqFYm z3j!B~PQO^DNL{*p&OZ|Kt3yJ&`ElOA(gEq+rk zTlnoxQ#6v0?Qf>CBAFG&cOSwSQLL7?ZB6nfZC+xu>rPBbV{Rs%WpKg zW)jt=dXM9A;4y=#8U^+uWLgGH466IEe9V#afEwgPUPcv^89ycfYlAbv`yhnWI6E2- z^zRQ`H=bs`ea69mf=$6B1+6A8v+!dgpf;+usy3T~LM9r98Vu3K)($nfVWx}p^3Vz#Qsb&zo3Ar~KWH++tQAksA!@Lz1v;e*g0lJ{>0eR7z zDB3kuNRYiQcsws>(4%&77??YiPkGD57p);uTbFOXbYqCUC^^rdX#GC2DWpd1B7INN zn-IE@OK|nP?i|Mf@2-@$Q8^XBm#M)n;93y!+)lA5bOlnPKKCO}k4v2--HrDI{i&y^ zM|E8Tx)v<7QAkrpu)YiGqULYCQtB;7NsUkkjZ9PS=PhK9=J=n%8lbYSBgF9{mBA0a zz_vNK2xx$=D5PcaQ3!{2EQ(Xuq33-)_iqRK#n=^o3*LV^k3wC!M3Xj-!$MR|F#G6 zaaxdy9!IbiNj1;-t+js4sp*LKSFKrWXYh9tRKZ$%aZ2-hl3|v!OD2PHbtl|XrC!Uj!g`H2Yg1&7l~09=yY{m zVX2U8lZ_KM>gAZ$jmWn%fP76!&m;U-AZ2f+(ZxdkCI;6V0<9(K&56Qu83cR;&xFk- z^xvcStk03{1N7gkQj*3rG`6t?P?yt5@T~%@Nh{ApA)8ilIsk)w1@c+GD+Vd)euV!R z47J$SpLprx>QB4-kG9SR3>i8>+Xd+xGG2X5gZ&oqi!fOG`BX)sDX4WKb8`X+Vw) z_^>$8(%_dtO49liy+ylXO81c8uM=estOkHb#V9P{$|K>!nOuhbY+{Xt!(&^f5 zN4oZH3)oG~N z9c;n$6eW)Y!)yAxX^Y(&EOyZYW}lFBf=e3b|7;f6VMc6KFKI8JxqMe|36@||w!R!} z3#Q21ZFCN}L{T4O#k?AO)q(5I2}>rro6`FM?@!Rx+nnbn~Icplz{dGGjzb!9+l`H(21fa5bUTfs&$h3=I|AIt_C}Sm-@zZVjC=O+@o%0%G^nd+`uhnBl5tihz&v(vz8pw~N94il4{#s&?@ zy2$^PbtL}KC6)6Ec1MDM-bKN$!HXazjYhbh?M8r(_-buA*jFYBW3W`0U<6Rzs*Y3A zO9(#(EM_z>DjRy`t0gi1&|5KrH2`RNwl^)&^){eM0qmI*91I=;DM?F+F9Ld1yii@p zCSmD0gso+w=!u4XM|E7SYt?z`<>QZ_;}Fn(iL~8(Cnvhp<93m*b=$OPqecp9kj6zP zHa;rYG{CQG)J3}nhYrcpfH5u&oZl>1NnJtYObLzyAAywg48o5F z^Vg~G`d$1f6Gft0R9mUG8MU31q_+P{5ap2USwPWTy#n1u%SWSAs1=UNv3!E zDSx_4Nx*q!=X1dNAal?&2Q#q%d@K`1;uzP9SDUJ~Ew!-}z2N=o_4)2&(@>ym(?#3* z%I?FDhQZ(ymnP01(WkKS0A)3O^S(icg(cbZp3$9-u@RgyQFJK!#C{5(n`+E)wL7x7 zgDpn@7wOveTV&PBCnTxcZA?TG{%FX2x?l_;@2y&|!72!BBDicKkDuQ~L0cbWu zvl>}u>OKf{2fY&jU6U^QN2rcI<{d_2PmtNSxc{_(Tqnpa0tk4PTJs3 z$5@C%nJ79I{pO0*Hi6ox+Nv+z*IcUmD2gnDn6gJ-j*mwOv@CMEHB=+=FPGH@dJmps z!Q!F1`fE92QYMN5SFYM@we6}6TjIud zVd0;R=z|#-^f}S@fEJ{j)c0_Cq>MmUL_lrVvZ(49t_jQa*34z zX*yreThPaeHiUL;QRR^`0%;>qZL6mkwH(E@@R^af zkxkd0Yt4|ZVO`7V2#5a-Tr>uT*+Zc+CBLCyLJ;JVP8dP%w2fv!Cl{ky4vHV1us6cTl68+o-;y3-$C z`{A=Cla7M_H^wrD6OoR*<8QRDWGf?}*Avu6t=GfBTm!CNd#k8QhozToxrSTmuph^9 z%T%ex8iHmgD5viOJPs`M08D-Uuch6a{=-Qe${t0*s#9$fsEu0a(opjeJ{PdOX&p2r z8q%YXFGm|3(%WxAj|ODaFDR?8?Tj_(Su#|QL3YVfMj&ehbPcGDy66)a_H{9}IWIky z8>Z#jZKKBH6q!r!W?25k+n4YK{|^Mpo(U`@Jz#QEtr1#(2;bSFpvt3fXXKkPLmf*{4&Tc}ksz+VBGm?g+MJZixPNl_w^$hKgvfKja0@A9S_l{@zq8>V$1ItELtSv2*UR=QN#&lCMjxz zYKTVqU8pkT>kUy|TNWA-swYZ0EWFlYB|JX}RY=((;BBKGy)UvwsIG1wQ=x_z9 z?E%X>OR$Z77+9t=n|ejrA4rISu5BtH&x07byunbh=t2+vE+1t#kq{$&1m7Zg#-Rwh z@VQJB9jpkoIiR*@A^lr`MMKS{>@>i7^ISeuPpw?=<3LRSQ<)>#zpVDV&2}cv1-~|n zp35o!r#ABIPff{>O9|w3^#{xSG6Jb0P;F~k2cfoSAuX(W)WX<;N7s_BDHmNCY1+{nswbizw=ntsH6*WhV#Lg;=nTy#@p=hYhu{ljZQW>``=}0@TK;ZH*@_v1a< zqaGKAgqlfNpH<7h4b_vZ91iGza=Zd8bW|2YP_Vm2NgdA)S@d;FS^O;%Mb4E)%y+13 zXRci>ipn(mK>4FwN~-5|Em|Lg@{JmXX~fq;dJkmbEY?w8|5w3E8aV3AVv{URdX~k< zGEsQOEDO8Z6j0l;(momWEsP>vI~FST%pV?HZt()1`$3keA$^edCSWB!u56H{qKaM? z|H?#>QzfY_0iQ?UGqae6u1SHe84GFPzu1Hq!+_qSxV?EsI%{-^!$E9Md6LbmdwWd-V?fqekc6hi{%N z22x&?XPKU@nWSW~X%?MDEQ?QNqDWXVYBRt(MgVK&OKnSMF$o#-09_*%(luv!)jW$y zam!-xYQQqrs{q^!f~QPnIpuc+R(-HmKJu}7T(3JT4WG(Hk*ErY?dH`s!^T8eJ7LB0u{!WGEpR`54DkM zTVZ1&y%D-qR#T91l1bY*rW3O2>sWd0S4PywGOU#O4v(VatjelVVCx}$oh=g~Nj(@V=^D$_BhO@PjKVlDAF#eCGaBBY?`+oFij1>> z4{3a3|9TnSxQ`EIqKH^=Y7@X`>`XpT@LdIM`*Mfy~ZOxZSVNnX>$SxL-t2~-Y z$}}KDd9A%aw<^zPa~jOSUmEIkys^DZ6cH*xZ2+h(_|h-4sz;$F0(1>nX_u@z3soMk z&$oIG-^p2xM}|J?afXM^8te7!bmd#8*j*-yj15P157Y*H$@)3|wicrFWDmvXw-wfn zCvkpi@VrM5fWv^n$+OaB6a$TfrDEK>@y%ZPq2M!+UibCCaObf1mDn z$g#6b6rQ!9x&^9ZU(z7w9-iu&vLiCmQv`qM!op~r!XtPz3lW03h%UWy@d z^m@8ag}`1Rt$16g==Fe&Wuow?B-JTU-TIPd8lt>2gdFv<)yA!)YbW@lHy+{XJS&ds zOI0JSk%8|Wus{sUk+T+f5BQQ^Cq4*d{(N8zKbpzFwlYyP3rxc?)nTq<(w^hlhZdtr3FnB@px<(i_8woCU#iAcXFu(EN=u zi|`w}%0%I)2-O`>9fr{T6w361SIs=+%nsD1t)y!u_{&%|yVlGjizzW2D5a!=CGkm6m^xL zI;qx;>L`TXrqH@|A~WqGOG!d)*M|kCUU3yL=Rs5-_vL-D3PUiQXT}M^Z^Bx z@H+N#4!X-k!G)nZsMdw*B$RHYV3hF)U8~5N4yeug(CPi{I?wD6(bM|+|N2A`UOnf< ztjx)f=bNw^O@5IByMf&Qp9ne!bfQqqtFc!dgpzt6$AD<>{2*&K;4>xxd*xb)W<%x+ zv`7L7jxN+|6(tW+qlhwfT8jnpwghi^*wBpiNe*rUa+~u;*MLkEig7j8ig^}NTUw{q z4q|MPrzue1#HDLsvKadNtqcOB=eQey4~>F(xtKvg-VES;A0t}u>TzaUko@j|jscY@ z6w_*Kvpg~)qOuhGG`3SkZbQo3gT9SRay%wd>;;V;`C80kugVQk(CJ*9Bt4D2faM zHW>I!BdJ2PJbT+H2Gj{brUs(U0WnCcLXQP=*QtoIi_CtVDDZEdYV1N*)>5<=X)Hoh z-7ZW2P^bm#D06r~2RUkX2wyBg5yyci@q_1%N*K&Jos zQ1cZz{Vq``Hq{s@R*G2+Qkz<~7PpvN_kKljb=~(B5`>TJori3evv2?gK8`k6U8PLy^5e6KyZv(T`0)Zc!}Da zFR5+!&+kgK3RbG)1acY>k}R~Qf6f$kRc$(ft#22TB5mnq&i)Rp3cOYW!r!%tLcUgg zmhXx|Od5l*Ux6fDd*sdu)Yg1SZF-s%?Q_7&B%o7(i+yVX{&zvLC9udI4$cAkK0$1H z9f2B+*L3aluF8j}s}hBLs`@4$V+zwRcBk=2)@pzEwqrDE>=0pD9K#GKc*vk7b_p<#BSO@eOgyUGD6NPN9+AbgD zi{4{MK}ry3g6IRrwKjn4iGkXb?|1}7Ds9-Sw^-9#ZapGEpf$}H(#YQA^HCpI2-H@G`?{OaM2<)TeECY;)=g)kxjBqHp*648CWur62w_xo-Dq($|7Hn z8fr_vB>xX^$uG}Gi~s@u4*1l!rr=jMag&IqG!=!8dBI8GeNZIID^cX>^Lr>e5hUwD z)G8Srn}Co<4Yk#N^Iz#|@#u;zfnO244MIo*k;xuKY5_#YV6Z399kmG5pAv;)s@NtO zq^#AUw&>8KhT2RBsg15!FR$FsIRaFG?%Yp@)E;Hjea!7^Rp?p^Xb?+XjCRcyUGsyGSvQJR+UC6Njqy>C2X#}TP*3saV0gP2rZ|VrWr5m62&oOKEkKlv_*_Qf(^ zKhdoo=`KKZA4+O-Q4+DQ{Uv{f2vBK10$+sII^{-!LVP?IJLUk}08Inl3B~|l+AKpj zdlg0TQoz>+ts{6C=qqBof~X%H>SdtE5A0Y8sIEgvZR|%LDofU)MSu#_qMsK)C~4*0 z-$BxaTE20^o=Lz8U?1>DpvRThKr{N7gZujGaPcEkiL2F`0)30&UT`kZqr|$PP%l4W z&s;!tt2z#)7bqCzKiRqB-O2ME>ssgOG!?1;1#$}5DTCfGD0>F@^`Jq6Ue6#WX;FOD z>&m)QF9`HK(HFpN*!(8j=!8Cv>g!9@(l;7B0iHzPD{Ko%*sQo52KE41K8AcQ<@dwa z_t}=zUm`#Q(K`~)f-LkIh1LDfZJMsX#J|&isLrZ&r#j3+YD2lLZn>*sZHdPP8WQmvaT1KNnFklIRF$GsvvKz>m1dTm{+{XPUS=o*AX`_EDXq#B~T zsX73vix{M~p*B*!79PE(x=bLAU?_;SE&x$up8`JtneR1iyJ;zWQ3qw$L!!E+!sX?pF~pd;@y z#EDS8QWUFd%oMxWq&ikzm*WumR%`#!M&p?n>7MCnP}2+)`YgG0dUAQfpLkVfkd0E>bFGp-?Dt3Jzj#USgV zC`7a*)uHM#`IoWUHmWWJ>Hsu;;~;ZND`dLoYM zJuMGbsX{N`X{mim`X9ni0v8fTEy*v*7=bcT7z5RejmEAwoKL2s7s1HKPZ z-xV9x>-Q+|ICv50B`~43{~8y_H~daU_^&}gEoGk@46ANy`wR1XCXhG1hr+*r-{b$w zc`NU4`pQHRu|~OI^vt_6*cGT-T?A5+7!BS9?=);bvZ0v%xteh)>v-6d?j-qKFX0W+F%$^KyK} zA5baD9szwY=s!Tchr37+W9>yt&MXlq6GfKjWh_hL&?AXHfFi5`^mVF|#z){Ic5epP z3nT_TVwBW@2$YGU13_=5lB6*a$5#Ng#G(B>rVpE$)2U;c{=ElO5`*?h4qtW3m{RZf z2$YFpd@KsJN8-@`78wDS14~xX-^Mpy!mkIbxR>oMB!-XKmQ=6^l!>BX71GWel8659 zMJ;L6whM8r=sgeh6rKRJq)^$C6tvc%q%Md+nJBuTlG>R_^3alUeF0mGzUBZ!n`|fJ zSV|g$@K?brO}1L>q_1+9OQs1#w^ErXy0zv!>?WCLfs~TS%wUQtw0KJU+Sc#unCMfW t1zELi{l1O~Z-ZAz0$RvbQa_Hs{|EF|^o>h)dTMIRpXE&Eyr?@B$!x;-0j|NDts znJ>i$6?JJbN0r<&IKLBw7)o`BRI%k|e6Bf>%N7IHr0>pSY-F@WAf!Y#xo8SB@RWin Lg2$Jn)(*rE5fdnl literal 1152 zcmV-`1b_R9P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91JfH&r1ONa40RR91Gynhq0K2cEod5s>>PbXFRA>e5naN94Q5?r@&XS}F z8__I-2100I3!7F!uA)T|Jfb3kHnoaeMEwD6idsY)BM2KHY85t7BB4=6P+37*DWnx; z^K755c%abeeea2gYL6dC3toSenJm? zhMka=T7_5jAV=MtwZ&<6b_1weErongM>Z=ZM;E{~=yWWUgAd^`l)z*#8rn&3v($*=;VS%)p-zjoa(x9p zfNCWloOfKtR$5mSLkm2R7jCCMa^D1xU?ym2*NQ9d(v&MdE`ZkFo+{z#Nl@%(!+_R> zA4?#qg>~;ps}^;3g}COk2@vPjRzJQ6&F+xqK1te@G{SXID5x(eW00MRqD0e#=6e&A zFKJrgKB#2(MRjUF(gdD>&9D&0fr;8kd=pG7OZ`vBNu>~W_IODdE5Ns8Y$coqokH{& zaE7!x3)ARtf-1TS>OfIu^3DEfm477|Yc@HmL8G~jVEPyAbze)mFsdN4PC2~FHhGpv z*N0OXsDbPjJOd48MW9woC(VK9(k007u7mf*unhcmL$4wmf;g;#RI5+nE-2Ks}cR^bn7{gD#zywe@{f&YK+O-6s73s0-aEC}c2Iz{g6V3{3X&YF+)e)cqIitFGaL SpwN8)0000$nzX#FGWoX6Oddbas^m9gB` zGc2*c)i`ogmlnMxIqDARw!}eGK*Ai6A{rM~aB(*lbqbI(mE!N>EpTy`7z}%_fyfyH Nkx`8H%Tlkb#UHLzCNuy5 literal 1091 zcmV-J1ibr+P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91JfH&r1ONa40RR91Gynhq0K2cEod5s>tw}^dRA>e5np=oXQ5eT(+^@N2 zOfDUTluP8ni%_0i@O+`g=)Pq#^!xz{B`d-qi!QE$Qg`cn! zQc$uwg)^DW#BEwt{%vQsie)Zf%cl&dx3SeyV2NJ#+>@-3H|;ahjZ)$wlY;y zoQuZOcpFTD9qA+A|duXIsQ+}ZKt z;4`3Cy3S5Gj`M33wi~J;M|!O60zK2>I9XEq(30~oWJzOvEol5FCDFL@PyzLX$pAyluHn8Rn_~T zr;CQMX5{~BHZ6XE85%xE#h-@-py8x-vkRJ7PJ+w1-_ZU9%mk;6gO!da%9qqb`iQ!P zT5Fkys`>yn!zgf)hV(F}h}^~+j_060_fN6^@}3?qgYMNjXaOh5@Mx!q+{U_hbsu%4 zWK4_t)36U7ftO@>g;!)cNEOyfq@(nSjx~g}GkF%Y)bo}M5B82u2Uey(dVkW~kSR@s zuiz3K1P$fLlHsK2DT(NDrq^8ECfa({y{cE7dxL+FES_CGNvb;>JQS(to-v zha2ExSbIxHVIFw@ix9CzmF_>G&GV^H1-81G{jKVp$Jn)gw0V1$vHq_o zt+~JSI3(-KF1@iD_3i@hkpoL&Hbr8wh!h}sh#59yjzks=rD7bB!{{M9;{+u5&0-Q4 MWEt%%%42}#2h5}=6aWAK literal 3654 zcmV-M4!QA(P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91MxX-#1ONa40RR91MgRZ+0B$7!7ytkbut`KgRCoc+nhB6p#Tm!t5JV6` z5zrtkAmRa@Wl&I91Y;RvJQ78X!h)cQ#+Vqdlu=P*1rxQR!8;z&DDjF$G)5C~K~O+=lMX(Z9LCMsl1TD3vjXp3C`a=)s0&O6THc)6e=%DE^1?IpSD4L4p zm=^T-5cmNMfjuGK)_-_k2Oq;)_y{(^*RVC{%yzInw1s$GUbk8RmGCgU1fM}cm29xF z#vQ~-FdPmB2dOqf6*!1l@NV?3Q;dkOKxZlY)Eu^j9ie+fKb|_f7x-Q2%va$)m;gHX z|4Qx+r-FNf159!Uc{@R4rQ;8SaWE5%u+Y|Q(j%Z1{9nk(cosqj4eLkYGFTerf6mj6 zJF8WIzTZAzBvkty6~Y^<|w-fmNV$T<&K;Q8WUpA^hJWeMkdZaW?Is z`%ZB1>!e#lT>J2{797;i;~%1QN1g|O_nllil#g$NcAS8MJLfcvZj2i6-mp95E1fbI z>||gC>5-7sO=MWcsB+1@2f;a`NEbv$V&!Aduuk!$ zXo&tmC2f2Po*;Ix3^M6gWIDr^7f-x!2@HA3XEkO14cCLq$cXZgxCPcjC~vyadybJ& z9T|1`G$c}}R`VMvEW@#8)FV%~{@|uO8;n*R`X<~5qhTf0A6vYDFjwlBEvwAk#+H!pra2y~W9a55~1 z&%rj`tBgSVaTs{an?D8oEtXLl&892)a5;Pl74RT5M0WTNaK9J^e}lC0x6)6c1Gt>L zt26~=-_3gnDj~@49ic~rcdR)O6D3J-CR`jy$sSyhu#C)Tn9!`DjBZNffZfTogrU2v!}v*(2h=aDWsK7c^a&1q)mdS zz`VdSq{E@`0O@9sRy$G9v1xxYw1RqdG9?UAm(WS|mabdiAhMnW8x2l5r*5&VIdP|W z5?u^BI+HFSGdS-o(%WS!6w7me8w#FWUKK(gD@f;58@|p4D>y@GL*Loj6~;kWg26^V z^3uvMzYDDU8C(Ln)RK=zP$)l-^hCH0#=s!x1w-IQ2vK7BIIr`b^H8XWD%dHF#^t8w zZ1x1dRlwD7KUBhE2#wi+5#X}SN4D`IXh*wgL+%|2>pCp@!{ z-7{e<3;>UAWrP}GmU$II{$_*sZzsJ$RfFq0sGP)c;f3c$SPd&+85k{gWGc868>6bI zau1$PPP`x4?ApErH6!7E(+yloAHWQ--*M@XyFsV!2mN6ZY$h*97L>Wr7J^2RFyCLR zC&QlLva0nk=|bsr4B1vSbb?~balQezd0Vovc4WjiCQqdDSfP=mt>{v!Z|9FyYf!SB zTARQnyAPB?F8?sT9c-{^)at%GT}Fnj>(UTD27+9R${94=imCT8?#bo^lp zd73!}wuZ^kyLtbDn(*RzID{k6^hw}ue-;!{Va?mVIHMOqS16VoyKOCmnkC$agoAZ| z83L*dCP3(z>;7Em0n5P6(PPe#x6BeKWZ1XH-bk1N_AB&bDd`*FKv3I)lV;gJ!JV)- zG(>}`WLq1cX45~GgbjNNxcLM%CE?Lo4WVN%lXhba@A2p5lp|&mo{H2K?h{hiF^pl zNCQSv&`l(?Q6EbvvwNsiq-Qhi{uS(t2S-{t_DZmxhf(b*^Bn1Hjv2tWu$DcA${;SI z#{5;_8c(uX_#F&`N8m{)mcp3wv9DvKMjBWerM;-teu(nIBRK72GMxQP@|ZJH zytyXPp|`*^a4la6+e5Jw925GTww+?8pU(nEQkV&1%TnLuCGgE;)^14&j<*ThE zPC#!cgvMh;`&E$Ue&yKpfpw0Dt@?st?gm*7+4KuOSm_hkKU<-c`QCM&0#A*9z7wg zyHlYh6iT;aNW1TXQJ+hW-LkHXj&^Ew^unX&{}Aw*N#0RBS=0z{5H72q!QoH_O(3m2 zF*Zeo`$SK#`)%DtFcI7z)`3Qis&0^v z`cc>@aebFVp=C6F2=?!yEXEHd-?2NvL*ixH^RfV}JTCqrMcT9fOt9{9D1)>rqu|S6 z-DTi)pco2KQ-$#^85+2jJp15YyF>E3`-dM5sa(q`S8o(9EI zUkry6>PLx29IIQ1{dcpjqe0{tPA;iq>wL|faTK5PaZESLd*imwr!X9fDI;+q*xnh5 zhECw!CG;hDh}6+G-^#_LlW$8^KUW8ev(-C`ckn9nGG{DvE@eQ=D9H7|{$w3R)=PpPM7 zaLh8w>42o%DKOAG;a-*CA8hIc3K{f@)tf4^fSfQ4re+eP_ zJ|uk}q}|jhT2LK~H7Cz8xr7{JgXHgwU}!$+URkW{M!xIT2IG52MU-d0JO3cqQnHVZ z!M-eky`fP$hT0oIgRek0$fUoJX_=S6NKw~-d2ZreU`weh4NnLAvL23xf@m~W!bNBX z=}eJxB>7)~dr~>5tH92@;L8@0k>Z5fkI!Hv6jWod7Mx=Q^iNpdmiL)p2X2qPT@k&z zS2c<9O8IbKw6FGQBaDKg=uE7JjnobKmMDJU|F~ev(+*LjyT{Nd) zyGH&YdnxDum(I=52~-bQ4StibH@!%@R1wpWw#I{fvkz{x1=~}wl~eoh)hGxK@Q&io zhvwi_dm03%Sf&(?X+}Ht!M=okRg&%tC6#x8YauMHO{55&oBY}yKX^LXvc(3wIpGbxDgMA zJs>Uzv>w(*xF>iqR4zZ4$&R3-w}Yk-*8*ND;Sq47cPSNA#d1u%lm3d{4+g@w!JFvL zkalT#x_KX21k+(MxQvXpqNx;)Np{|QhIr@c1s(;+Ki6_iZ> Y1y;8b)`85whyVZp07*qoM6N<$g84km?*IS* diff --git a/system/fleetmanager/static/fleet_pin.png b/system/fleetmanager/static/fleet_pin.png index cda7eee8e85e6303b812a7321b739a73880f0dfd..d16a851240543e6a92ee552a9204cdb85558bea7 100644 GIT binary patch literal 131 zcmWN?!4bkB5CFhGRnUNegTO($f#VQnR5F5jSiSCNFMiKHUb3xq&O@ntU$;k{+yC~- z8;z%$CzHBBj9%ny$vA%y>Z&akS9i!plQ*P2f@KCGT?`Wh4as6;B%31D>`mA!SO^JS M6tjO>0ysb;eg+sPQ2+n{ literal 115172 zcmeFacT|+;_6CX?)MG(WnleBHMWiDrAOb37EEExGBB1nMq<4%_se_0VK|n!3DUzXx zNL3j|nl!0WbP%MI5u}&9-)}JIB$|8wzH9wl>nsh-eBWDkefG2W2|BNa-@aw<7CJh* z?PpFaUZA7f>_|uVi`3?g@Dm%0A{_j+&iMlV6y39TxMBE@Uo1|lo}{BAhHqWEN)P}2 zAIH;r&UADPZ_xkNksY3x($TG^o>4q`(Zg`8XOoAmR*}?%{Ot{Vo6l-QaO0Ie;^n7> ze=TJ_nIUm#ee(|0;4Q(dTLU*I8`5tL=4Sb9NZfby1vekJ5|h%-ofJuqz zet6#e@ENzeX9kxOzxdvZa>!0FJ-C=vw_u*V>fpu%>%jh~JjrKV`)2?(^62`te~bDx zE3f^Nu1dXY^V+{F=FYIMTl+VgycN&)kMtk3`(^FlSC$@!egAQ25tQsF@`U7&F`B94@B!foAY0tT%|oZG*dSvupn4BFR&m)_f23y zsBTMOL6~j52`&{L{N||d!nEzt$Wf>5n#m+Q#+2@ zQc0}p2gPW=)6~cc3#B&k!-h{-U#Dl`i#BlUbfM4=OEikK_e@rlsSO|VX*isXu_grR zU?o-qiG(cLx2NywiU$=$+Nzo{p_Q%1I=_>)`BH4Qn|28ShD}pTjy&L;}fZQ}d2zO@gY=+&JZA{?i7g7!N$!8YyOBQaNDu>qXVE7os)yn6@jHu6GTJ^@pb zW**FjF;g*N8X#+!A+SnJ`=K@ABt%x|p&tevH$@=N^ri~9Zjtekdo4z%+LNiipZ$3<_ zByJ87Df3vkvA$95xC}1)aDmw@2lkl1o?`mlkWb(K<>7AXwjhf$Goe?%)=o%cpKD|{ zfA>J|_~KZelI+CG(Pt9jP1S9dyR3LLD{#(r8iFr}l81L}syJOKejrh(Q~Y+dKyka~ zt1t4a^Vc#u^^VVWJCjVpWwpEA`+P||{O8_KB9oR(sm}{bvvtj)w3?~Ia{kMsMzzJA ztWK-BCDoRt-`WJqGghP)hEiI(UuLNn&&`&v8XW)jUX%1@hy3Mkzr}HqPWeJBrF7EQ zfkf_mA3LS{S=}t!85C zqGtIogg#oby7zioI8lNQvIsnTVeBP@&h4SP z^E!OxV&CeDg!}%gc}F_QTGSEiC`BNqA(%FmyP>-)X{gl6 zRb@@e?5Vz9N;JuPOfjGaO9oJPD&gEHv3qkDWtb&c9V@9j#m?9tkn26u?c5+siq^Nk zZx|Vr8esA;OC862Z+YqVobEwJe@g?$SMv65D zY9~9q98QzS(bO?;)sk-hCV8=%$PRp=M5k0Rim$` z$B9|J`#NH*UwEYba$bj3dV;kD)xh^#D`~g-ag7;Hw(#R$PZQrT$UN>Bbz*YdCUIAe z_@=Ik-QjY{w`_-OW-AHpUPjo0MRIXHPh)o7s})Di1c7mHtY*I_{QqbrBQ`PT!`xa=cQU zFHxyeJa{6er{(Fxn)QS~X1Z)x%U8bT)HW^f@CWDlR3)t^T+a~v_(W#lp5{iadh%qO z<;oMJ#sNBA9N1htBt)qi!duaKtASgp0*uI?#b8R;$^q466Qqxw};lH}vB9`_Nv;2q8)Isz;T)!!HGgYM~QOl)p z%utQqM5BUHP4?USYn3ZfgRv&f-H#MM;hFaM%-0$TgBTJhL^5Zls%etX*J?`H;)Foi zRKnzY-cpUC2j95PPJLeVU-{y{(dRhtyDy2}_D*lMOEMu1pyv25XL`(ZTG;F!9nC2( zlN!y+3kHpGK9Ll03ADwguh_wNRKFl+{Aqe(hL#EbWL%SC+f()BFDCW$f=2T-Ivc0QnXypK^lq$}iL%$!I^NePHId64vhOT?u%#*^z~m;g z_LBsS4mNo(6b@;JAzJ@vYm^3o(%jVv4+^y3r#w9Dm74{|d>G$0= zjEg3drL$_zm_>^*rN=dK=2RagGwWOydjhh+|1q%Lp38rUdhPcz4)NR)HQRz#?E${! zrn#=+EWJFC1rKlu!CGMKD%iej%6hjxx|b0KQoKoHav%v>6^!qszdX41zAP|d|FNE@ z#@PjJ{AH`llQFWlS;emRg1v2V63^c9t8sgnS_soflde$D)45Cjpqeo}E}UEojkm3r z$$0_&jS4%)pS*o6ZA`u^{!WUABkydFHrN)&I$)%_0FqsTtMuo*00rOktS zr?>lVZyS=o2lm13gI!^+yU}IWRxPApw+E^MB~Kpp^MMUzj$i9$BZEN-cwl%3O9pta zABeepxRgq_`%t24r+COjR1f*-6~V1iN4p*0TzkJFwe;tkmTqN@#>SGc%O;g#yyc5M zlfme|ZoK;?3$JobMwUxdAfUsce0d|YLuD+)1YFkm-xbBqW=ah|j%*$^H9oZxVziVz zCM~rBKE1W9t%Fyz*qq5IR0kyPRm;dIVNw;xy35}&{{!(eBpfQ_XJ-qU9e)?`qlUm{ z8Od~Jo=6xQ&vh|7Rtncrk2#tghgFffY;t6;fH=a{nLK9aajSm&^%x`BTv8dQ(DT5# z{z&^huJMr3XT|pC-(8HsHv6(0C0X$djoT@EqGXGQ)H-EB4s!!|B)C$pL5TL))3sKl z+{f-z7f$2tpJlV9Ic^(`O;+mei`&p|hLp+qekYg4=|AQN<9EDmkYGJgsf+H;W>tO* z3&lIXpCH39v|A?V0jN4@!;a(UYi&a3E~kj5h?PfyI**#=tayw(O%D$D`OHIN@0+Vy zS41t~bbYT;us*=6vOsRJvmtu5l@$yMHBGYgshgszb7cYL^c@gUrxPn`GUFFNw22DL zNl^lMHh$KA%Dz=9uF%H^oPgK04+`jnERpTUxpiC}z%TU2_bm+uJV2-O0&Hb%uP>v+ z<+`u8cIBiTC4;Z!~>u~IZWT3^xnXzOUvsp)e zw$b&39KUaw18;qu#tYihJY6jkJ>ktN%`sq7k{%TzUgx9@@X8t8RxWA%c5@^G1#s|tZXlvDaa*%1P{eSSQnIl-`juR zBJnA6r0IN^vHlyWbfQ@Dg|e3QF`q`N))VTFe#pWV$Ulb{N??}Bi*%kI_o+r8M^L_t zE1}FyM`<0tgi*k7Yc{#Zy)R+VHQ6)0_k(@0P<=?dNqjg_4kF%`?x*~ihjS@HiL)ff zL-tB>es8y?gj{ba=1|vlc-wXDY$*DRV?{y0r6xs_rIp!okv1d$WeNGIq6Xh*W1UpigQ~Cys=Eno_=QeAemQhNct5&V z(LF8~Dj0M2kTtr(7;{qW|9G|W#L{z74<$kRZ*uh^T1(9!a z_n)aEzEA5$LLiJdQXijzMH{DC;~@$rc3-PaUE6%3R;PIAL}bsKr&qGJN?~s7bD77V zuQs)m?9{5P2iN8OxG1~Qc)oPDSAS+A#AxMfjFr6s7$cd>rbXF4gW^etyl0efeRl_1 zAwcyrGxx8Y;L)=epyF#FXK2WE_rIuDL43VM;QfT23Gz->_A>Q-Nm9wYwd~pUf*&{6 z_q~}beft${^PvvfCZ*uL#~T9^AMow!&g`&BY9Barvxc%jgQ&ccM>x;V5d)h+m_2Od zgiD%M7AK9&XUN+6c2R?BN|?KO90CEo&+zt5L%h_in#8LvNnTHC3=Mp(FM2e0UazTgSe7jxc+nk1xQX*F-EP zw?99Q@QeWS1Qy5N2PFfQwteG$%D)B0sDxaLzIT;8vU`saSR6vx9ZJONGeacXNE+|M zs7>L167>neYZs?)8llw8{_ef&+^5^DHqVO87l_qYz`g9f#_pY#c$3vo%J){2Z|<83{bo4$~rqplZ7*Hy04Q#pdqD%N2~fscby8b_WQaRs=WZrX9!s zJaNC3mDSMWYMkUf4)<;%?vXsWdCQeILy(}Hn>ywMQQJL;Ws7^iJ(F;dcv%1`kd##x z;SLsbRvSyvgbYOp1H=@PD*52)@I6hnr?QGB@k`aZm5e(kjh07r3WOpl z3H^EunwrNmb1m3<4i@`szS3oN#DUWW)5Q2?x49>t!}a3*Cf3!3_HyOR^|&~Jxbo$3 zhjhI&)+k28VSpLNbNjsmHcsUNT82|s=T7Ny1Fi1JZ0ZKKLIUp>Qv z&t6c1uiYz~qp+684u&ZgvN%etI(fF~S)|hZk-#m@3Pv{&4$AzOB$2#DZns=rzxjcd zr6%~~r0{Y?xX=E2_L@Bw4>Taeq(YFj)x0PS^Uiqxv4VC(tBH#=MDAq=K*#8MHAQ-# zkWB?BPgot^D=^|6f-JOVwxukZ&N^UL7-F|lT#*RG((ZxEw0MJ3Y{sY9dHKApJ9P(IrT)4Y$dBPo1)#Qxzgt<2d-BheXQSu8% zK+k&lJRAW^44O-thT7H>(4C=Ub&e6lvQRIQ<5sEHWVspQ;bQqq96HCl))Pd0htHYi zly#uMrsPq#ON%O~CKXb7k^0(h2qocnbFW#;?hL9PSyN4+(&^^m?H1Nn!f2z1D3y!l1z!uuJ8SJrk@~6wuzrbYuB>RtrCrJdl3rydxsLPbl-QIT8`P&viW)kFgi+0?$NUl zouE&sjJ(zGbT$Qr)(Fmh{eHyv@4fG*qIK3 z(CfJX83I3`KKBRBpLd$a=UVvVoGKYX_U_VRqK<2|LNUFLX}2B)OO7;UE8!HFk?@h< zv;O@~oJ`M}T!x&}%8-deq6)x{YRLUj_8@)1KR@FR=Ony$w4f{Mu_jg4E)?R>=RIy8 z4x88}k0cc|hC$wMVHMgDmcp9x84JM^BETH(@cZ)yghg|Wx8)>$wUD64p~#{$MdT7k z%i()SSO+$@l0Z}94Q=>oIF*55ai_}m1Qv()DIbERjtODn^HjteSwC;EerD^)=J9sg zgf6a4Tt1F*-mO|XQG0w*DxT(<&;{unh(9-fZeEFKFFo#HlFv1yLd-^>LLJ$U#UNVp z=x6WKHJ>JbYd11l-0)~ijG>p6S5MOrIAtsddg3d_f+r(6sxTFYvu4)Tee`@(*`(42 za;-A2ca~eEDBo%!?7vw5BS&Yd9D4?$UesqIB+2)+#A>h zp2?{$?uYK;kGZ1Ym*<<37CnwSY3^(b0fUu&;m~u?de87FG4_6_oSa?DghJB-cx;OX zqOrsfT)fnCPdKb+zCMrXaT>UU!ITF76=!e_wZg?&xJL_tCNJ}B)M(k=;}A2+ z`0B|gDTE9=S-HEhL)?T276(NH70NoLY30y7a4&dZNRJ{v5B6(fURP3rRYS2)Fh?`y z^0hP47mT`nrs}N>*+7WKpMQ8(Hxw?VDONjP3Bs*`Of%#I$dZF?9xM8iXl00P26Cem z98tb^I!!XQ2;E5IIc0sw!H$h)LEuqo^M*?bn2z1y&jwcI8&Ot z-l;`ZGPOP7e{Mwcjj15ze91`}T2NFB3cN)MGR@h0JTv&>Q`h;nSrVFR+97BsvTTkfl<;j?0 zH+d|tk5(+&dQqc-xb(G_6{S>=QggTMguq=g{6#>&0@uR%`#r2EI*Dsn!yV|wA>=9U zLy&mG@jOVkDMvm@t(U1y*z#YQ(j=Sm!wz1Zr#VP>aF9%nm7W3hTCcFgOuxZwejoo` z1V$V#7U^B=olPrJ=!7+HT4tw0b|zcDz2BgM(f-A!TOer3=ecXyYruS5A~bTrW+b?7 zw2Vjf^jxfpWaAT_o3{z zns8kDxJjN5KN{jaQFO3A{(mn?U6R#_ulJ$mcQHe#8e}b{b1g|L7Xiucn}6rtykzb@ zUZB&NA}?I>=WB_=D5Ms1?d2<4prd?4Z?BE=CI^^=9cklB1YqKDo``YGT|VBoU&XoR z-{NZ$H=q#pPe4(!>c&FmR)%(qR8QpB3*aZbnILDl*a zp_z*+F5UbZ%dcXCA^h9i2Le(PaS7j+({z0kr>^-7$wF@GzC=z!$IU`%w=S!633n;; z`Zz5B+Tapx;$%A4;<)G@+q5)$q)e|IO&dgCs=H05{RT0w@zx?RA%eavc#YSNiFu$V zzMZi2CV9ets;|Y9?)&eMojwmgNd(8-_3T$YzaB-9tHC@b9%Fpi_M;uY);lnfYu|6> zj!PL?Pw<`TOs^XYx5+7e-k%@=fmuRV!%36M=vx|g(A z_G#azN^X)%Q5@duFK<*4Nlw`ewga$p17(#+v%Fuk4 zoDwc~X{p_Rx&2`tbN^_#iT2)xE1|}r9rej#kVS4r!2A6kE~>BBRD9oq!S-=TCJT~o z488!+6r#|*Ibdzhiuq}SlX%-jU`GgEr?X?F+M!N1B+-qv=pjVI4&hw6u)Rh(VMmJH z@Xi(p_>m^(D#QFHU9`K#r=?)<*CIo`UwVyzXj2S_+Nnr>g?vZOV4#zw{Hz3m~jp z3#R4|*SD6Ab0=ns>D51zzNdRUydgz8`Ol941R2{&-gqkw&`@xQ@XIGJK&)#*uQTEc zE8lJIJhE5y;yQfb`k32XelNzvq>R^d`oC3VRMh6%O=3-gLQl==NC?2YvC_`w-~iq4 z$!=8kDHn#UtV=r5$;g;|Z*J1Efif8Hz?mn{kANX(;k>@z^){doOhLS9R z9)N)m#^Z2$eg ze>Y9A_0XfqZ+YBm*~ZuVGHnQ*_T*$Nz5tk3N|Pc)Ivv%Ypz`J0nK?E0=WY4Rqw<{e zxP2=DR$78BR*I`?gup#dA!Jf!FYNWQAwuAk+K$!1ssPbx8(mrYA|I2&5Gq(c0Xz)k zXb?^|)n(_FJXlEG!DFT|wGDlui57Dej)C8}wXDvH=jdA_goBKTn$rOIbp zo!(t>ONa*71_7YP8@1)3O9 zE|Wg3$gs}?CZ#k!6k*$)p<=oY?-K@ia{s+755$}Z$Owb-R$%*3E?6lP3w40sYAMl1 z@gPK>C0}GG&p6}zYmHW}NqZSp#`E9yet)iT4S<61Zkj;FEQh7pcgq1~nMza9Ep!tA zpi}%;XZ>x8Pe3xy`G!B1jqrp|4uRtU&F3v``#SfbZ$;Z@!Z}IcXs2nU%LBKUj{;JJ zw_JG#2v8RT_YS$aE8~kCtBK3Ylm0ncHb%hrAVGEM_`?Pd7RUE?V8RRJEjfLso37nE zPANkeYJt3Au2aTQxGyL9`M54KlTS7CIKjqJ7S2|LM7lK5zy z_Br#{D7NePD?<3>)b^Dft58k6M3&1!Mk1 zPmB{Ks!e%2QpFaMqCRx_zw49?Q^MAHkG9Sm_KtuCMz6k}R$_87#ZqFrZ8O;pzM1H) zPz5WN2&YESatvL!ykP?^7UcD;Xqq$(>+6zXcc%;ZoH~PW-{7@$v&D`Z%Qd>kXvLz?!#&MTRW>j)*q+h zTHc-9#Bp&&poMD_r^l5ztPWIh0(q+W8fzmTC{(LYvB|IHb7qq4%9@o<4YITEL-#W| zG^)`|JA*QR@R4`&t4r%vc_D90I_Inpe#Uj@iQ`4{4_{J7!-*IdP>8XcWQ z3RITW{`TP4mcdfWyMiUz&VGNWH7qiRSzm$-H62Y90a+y}qg;v#ux;8{D;Mi!$CI?@ z(nX&9>k4kYq@wWd|d1(j>G%nFf$O+Te2;T)lDK?f6ctIL&;zF=kf zcI-O=)wJ?13eObsh*+%o-N8THf&vySk6!(4o4kDqwaU0ZOj3=E7=&~I)%*XFK!voC z|Mi{>8N2XFB~VrnUV-Q_dNnRT998y6s**hyOCabMi8k_^cTvF>5NrG2U^oAQ7G~Mj z+|MSHt5A+Qgvy9m`N-*8s}3uQFd!Matmy+ly$C^mWzHCdp^F%eslqh+FY$boz(--T z)jIjstd)17UH9XwZo!)vh~0DY2#TYhoupna{gLT zWljVTGCPUdu8BSE!x?M159q}{O)aXjER&Py<$wFcBfVA<`?vFze}z)CXRHxSP&{%= z*@T8ZxUBgj%p%d9aQ*LLy$^H6Ueg%#Z>!!}mFbbf87%dekYca-PAn0IkdAGV66VE6 zdHAmzpMKuNbFYXmwhZ-1H^kDcqkON9zY&kTcVL3ctiW=YXz>XaOo!%d*EDrsl9va6G;*9&#<(>e(|Jv zm1De-`hOw5*rWfem1fa;yy%NISwv;0sd~wn1KSgn3Yp-`j|2PD;_dmhjeNhk9Oo_c z(53|wtF#CFr8|fR=Jn?O(k;!(COZzhMhU&RVYd9=%0{D&gNqeAwZ`+JWaq71cB z!d|KcgVj{={j1LKkHdjt7jgQQxNE)uWoQOI?xutbmh@8ix7`3kZ9nWrNRJVq(cUMu z=;70Z|APDfTnw<<5NO<@TPfBFH?S9(@agD(+bWQ81)%U(G@T~?O%Z|+$zG{LaQVrB z{kPcd&zCeQQ1&o?NBs8Dj_JEivqub1RSWA&2;QElHs$x(?joG1(U})Aaj!>#_Sx?y zt^3qgp?ke90roo^o{V)Wxz|km^I;3q!^5hZhBi_|YZ47y(#JSyoYLLHI3rl_{=(mR8h?MnnU0$qhIrljVjtvs{|8(CntHz7 z|0Cf<{cro@jTml8XN4rzc0qwol#{ZDsUdl6kJ4=I#G${PS!CV%t%7$}cG893_Sk6F zz{`7kEb;G)_>T}qwp(AJ8*HIIqhkE^?S#PJAJK?W^3Yy(Y^cx;v{3ubRC1un*>{TJ zV?;#S|d22C5dd1J;_{{F@w)g(Cs#!aGWls&r};>Pw=eva%h`TOpQ zJakI>F9r~IHn7Mzs0elXV$S=!%`n~a7Y%&*6CGQSM_Ogx0q;RkPqW#**mJ&ni$nh( zG(@^J$&42EQgR-eupU)KYR*@1%BGjl_SzG`Y9yY#j z7Ol~}F7omc19|e=k{Wr^ZHYjh^jdmHp7fhhdFXB`FMe^d`J6mWa}5r9tHzID5D6kd zckZWM&)T8=-;e12?V z{8=-IqCsK6L#b@lF)}EbBZ;Wx^kpLB{=jSGDG8OS7dd62Zdi~^C>o3tsK5Qgp+O#ShQP0TPJo7GYT4UN1(*k-$5h7Z`dg$I!$3!@27guO~pe z5AV1pVo|qo{z~TZ_i=)Hb9Ct?G9-qvgbga3^}D~HYZR75!MUog!>4qdF)m-8$>gAK z=0_kd#(?hPipBl7Q6ML36e0@#Y>&H<^y`l=Mlv#+{VG1+`G=gqmH_Mh1IR6`5FX0c zYHX|mGb~CmkYdp@ji3NmPN)oyiUrsjI(CKOz`A(m@i_t?{K28Tw9O9~GRy!pT6UFp zB22|k`$j(^ZZGENHlEtb+#tW|)9HQXGJN;O*YcTyoG301HdF-PIN)ZS;M#WRo$PEk z1$f_n)QSx|nAByzT^#qG8cGRgDTh}EqjFdW)YyY#NLsWc++in(cIjctJ$n#{1>0}-YY7QkL1T&Y6J|a z!3gmaOa#RH+V3;eI`IZ3Rs$CeBJyb1vGF?{JF+=Q27$3$%YCyD~Kb)Xp(&W#$aULr_{ z`YnFwOY=PpF{Bv+WDu*7s6d8SBoOpx5xc35lZ_au=(AlfsSadKV+O~Dm>9tj!Frru zv4lbyT|XjrcG}EQi~E+JAsF|Vn}Ab2R2QcPHoplM$SKLqeY6+h7 z`66RBGt>{@;S-Jnkp`K<&pZ)$CacT^JU~gzM3%Dji2R_69l8L0s%_1tWaYg(yZC#@ z_$Q#T@QZIEbFI#ijoY&H3X(&CE|9AWKxIf_$$*fZdn#5&Dj8A|Ih)g-5z8%iTW!mB zIcO<}0kjAuRBDx7K#rQf^n*$qaU1odfyvHTV_Xuz=5z&Tc|BgFu2(WSOO zo1&StaM3IKB`W3B;c#LTI%Qv@y6g`io}`#bRVadZgb_X#U3^y&k+X&ihWvhVeL%8Y zns4wI#@5l&rH4!7A~cZ4Q^TND`;LB2o-A6 zXkHS%yPg1{Vu=U9uC;Zq7;my6ifBt2yX_w*si2e5_c!pA8DVyKQY*(xi(0u`{T}>m zVjQaQ@iSXdHweaK>fFHNwh{|egJwUM!k=iMK?N06&Tw{DD#d=)TlsCPur4b2nYC36 zO`nc*FX`tn3%~9J#2;p0%5&Y5hr;D^!BERW&C|M0BxYC|5e&m)-`A(NNFn=i*v1i| za|#nIx!`nSI&buYD^p)YHDR-=3Sct>Y#TpgmH(DIgbCqooi&w?#5fSl?RU-cL zwG!peS|fO!d`@Tb=)VR&Px7CifthM^|A=VvGLqr0oKDH|`TE@Uiok|+X?O5ef{0mj zZ_fr3Dg47RU~ie_T&F@?g=l?xvDuHFb#y&pbv|kJ5ZrS179L{@f}ooG^0Y*Gl%~3D z0dOCCXUk?&=fN`j-WQWH1X5SJ@9XW7-RI4>he9SUQJ=$Zzm5#)sIK`o0v~tvf+^)i zEZ>~v3~KE-KY^-thF7lulD9haB9^z3D6G*4q*9k!$Ers%KQUjh8le9^gL_o`q~L5n zHuvXri+T*~1r=)V^}R#F4yS~8CM`=qD=7AuZo=1QT?cv${;@9@T^%MAdBEu)_0L!D zffEDVJ^!$YqhR^cSF5BZYpq|VfYrlO@9+i48CKv*Fs_AMkHAkfnbmO#{Fexv4Y5Vp zc>;{;!q=1=CZNP5{l0}ZLW1YueY1w^2!h`B(!K{VY!2I8@fp?cJ3F-lntTqMT*1n4 zJnFe}uBcPVwXzmih_Qn@pP(DX$200W^}VKgYTuNbJ=7a>XDd3OORL4ErSwPN3qb}M zaXGK$U#H#_@ws|_0s+N-E@RxmJK}QmXHnBY-Cj0;)NRGUUhIInn@;&9^KGHXm7cfH zgM!S`=Y#TxK&()wMe4kkrE5Ju&lcz0pT7=RIY^5L5>mZT+h(ZggC2|8aDu@SC^)A} z&r7S8G-l*0?@NnPoNek7KsSS-fRej3RMFx1X8Wek=C^>N1-$mCJsbMtY@VH&%4{5o z)2ae)U4&u$MAQ!<17@?K1OYai2(AL&2&~VVaDrVO1YkFw8Ms61!#%wX{SaYt+$sFl zrXRz#hYdxS5F0sfdt1M)FrXiJDxg_aP~eXm)Opl;Br`Pc-7$gEqd&b|7Dt~k6D|Sp zPKYJ6X<+h?Hw*)K@=<6OlpE@DMKpAfBTg`oT?`!GN}!GJ#nRgfs2IqJUMbN=yF>65 z?C!Sw($zSlo8V+qOKLihWls3{4uPA31)$-wGrH2v6)&dV$+XBhO`p#6fYy`5nLS$( z)ppqrBS0t>=R5JCBv_&B6&dex1F{K&pmx8)bnEgtJRUOVwVexFh zJ6f}EY$bT^e#DEBuKDQE;N2TJqX#tL+R#_T8ve}3zE!V*V^H=rV*^iDe?L%21@$*p zp@8+INx@-g(}PIwk2*Fsq=v+gzimzPRnBZ>;74@O79TH#qd~D56!&EahXlbB7%`!6 zZl3)P)bOd{U6bEX3mxHz)?W;5Kh^~b#P8lj)FwB-`x9!tscFc<`c`P1PCAIlQR5LU z4kHf6*{~oTkgll+RBA+x6636#esiA=J72+h4L!12(G4_?5JW`YF0#o<$q;vFj<``} zZ3ZgLdkB7`i*Ne20)KTj4lMWg-z(T`Glyw1TMf)Vk$tLY3+5bDt( z0e>x;Ak+H5wM}n8M^?0#N^pNXzx(7m8i)|7ij{+CQE`-xVbL5Y|7C)xlpGK?)0ant z!7{=6F8eQkv+@&wN`;OXbRtfhBm^3V2^!A6Y-dKy&f3+zY;Qbb8Hxi;f(}IUiEqSb z%H3aG$XVt0-X1!(SPXIbJuVJhylrmv!zDL_z2qlUr+cm!Yt4E&l7Xs8`YVsak0b60 z1(-Z)Ibu06G!koUIG9lk>fR!K-)z|+1MPK!S#e8-a{V5ouo zc|lSbDjLrL@5x|k)_>J~JT?JAu;U7|HN1?PBd;OfjXLJ|gn<&= zHMQT5(C>bfu&tT`o^?Lkf06h-b_3{#oHOW`rCr*DBh?EEZuXr(hq{UmVtgKP3}YyTGuJF zOzt2-<5z;ke&&!I3V3fPbX4zSIm@bh<@(8GN-SZwn$#nY!TT09W7nw=WUzpj8G7iK zoqvq~KnQBpFv&j*u^-?FDRZ3-e%j^?gt=ZtG1dNOEC6a}a=14?Gs3a%Hjy;U6y74} z2V|Ig_iywgt40Jfmg=jcZ&wgqyhqUo45Hd%Q%~-h%8P#h839ZG=36>hk?SG0YU`)Y z-`CRCJFwid0`4wuP+aZ@LGEI9yvPht1MBUAmQzf-E5+Eyxd|pk&`KTL0NoG;Cfm5n zd#FN;lb#LU&7%d^mZ;>sO%ud zmMrfUq5`E%IBt!x)yw@64x^zp`+uCr;T=qM41F4=a7)SjV_kS&qE0?Lj6^jYgF9sVpx|F)KO{*fvF0)0r8j> zCMv})R=zvrbW!Q3TqN=cV-&WBgHl5eZ!~wSEq~hK&xaog*(&_v*Lst&Lm#m-xspq( z)rtl|yES9+sY*3gL<$hI>&l<@dUFI29VS%Ex5n?>Cdmoi1r!JyxwIor3`r~D*9FM0^${I~ z1l@?i(9xW>{J|4-ull9>GAc2IafN@GLpe7xJFC*q4<%Be8s8pJa$f1WqK`iYV_?J? z{0UO~UT9jKW=?wJ4!x)-vCQBYzW2=m|4%)(-A|AEMqi1XDG9NmF(N#}@jojl!2UGz z3gbs*7Se6G=|^2hZU;l7QNi=ZLXfa@lkH?Q6KBy&9}8^r`_5-TORfgr?yVV!QFyDH zgQv_LV3V0Zw{2ET?V6QFjr|Z znIE6~cw@k#MGk8uObkcli(}epKsI8!f%XILQ}YP@gCP* z#HmK4Fj>T^y~7@R=xOx;m7^H*;}3MNP$-fLB}QV2^AW&UWRRAJM!=fr<3PX+ zOpc5gd&a~lbH^4Sh2a>hCE-B$UuYsd&3qC`MeImsm5F+*NX`})E z=kE*TFpc9O@CNnx<}MNMjF({S9k=Nw$j{_|m2?}CfW>vjC>Ts+j_pgYcgFU4>IaImDVF%uI9kXbt+(R55Z{4Hv4G>8HWxA8k}sq z>|8HVZV$1wXr7>0Yh!!}qNQUQ^nukGDwwX~7m!zl0A^6E3%005?8E$kh`$~*Er_W_OWw=z z84!SOAzDZ2KIpsa5z6g;6zYDx5)v*gLm2M?Y5={aTcj|Xy+-_jc}sz|yTr6eO}rW^ zPJkT8oLg1EkNxHZ5w`2)x2R=&o7Aq)r~m-CWT}KZ-zE;1^U`OHD#iHq3@wF$46X#t z-RL#QTEc6dm3*y{$Wi;d@q-ysP_FQL1>w8S0~pgmLUGKc2-0~fh;aed6HVN!q-KIz zo}kAX>y^H@f(2mRgX;<4O`wmb(u3u+qEjs*0KVa15F0eWp-tsb*3KI0BSLXU{Nc7omgMr+?XE|Urz${`A zUZ#-wcL_t71Tk=@*)&JhM;jVW(^TH*TR*wI9j+uCky4E zMh9rIz{b49q^@6f>h=7RI={MDzN&8?s)_@O=CJEQm?sgXrF{s-fiy&QCMb>BBP+&& zszcWJc8Oa*d#dPpCMOJtsij|_fQ3HioC7J%;S_meo!|__D#ad)`lrqB(|XpKF-M{# z3NFjd2{mA%c#Q}JiPiK~M2Lqw`fey&X&Db@n16evCO7{%_wqxLL_l^Vpbjh|B)&jF z9OyWmf*}5n*j$3F6|7nYvu2Vz02Q$ziRhIpe?Quh|2f)MR}jBWPq>i_(q!Dd*$MaZ z;w4L?CE(0)-Vv+bW~WS_qwF4p?Hk=~PA|(i z8QdnE;|cU+@TkoXOAxOfo~(HC4P^PEd^y&;p+^N$9~KM^Yh{J-Mmz3k&_C@)9 zT!@y`()|cwek5cy2+dr`!#6Me0VS3wy=5nW4bzLpQCKMC%}PT2e+p{eiDQKx4IVlp5@bz z2t0|I-Bg7d7ASxp3L(l=zL75A2O;jIqXr~|6Qbl3>W(dbVTjjD8BR|U_MXPlQVI{( z{OJ!iqf#G{ATj(wq8EkMBxO4EWbuW;8*w5QdM8fNGfZxV8(Sun|HCR4c$HKUv?DaPp~x5k%SohV#^L z|H~*pGSk)=WjAs+`Ac(Xxx#l3k6PKch-U=y9eV*EZW+y=BDj~NXbT>04lL97B_gcH zG8u9e2)E)|*0eTWQHr+LxYUfoc-q z7bNh@n!?M41O%wgfz{AQDMmrU@mv_t1oE6UUWKY6`Lf9e+!jzjhIO%h<(CIxQTK7~ez%7fN6p6V4QZD%GjmCV=prBQqdCyG2g)GV0)15PuHSQ_|;E?EYEPv`o=jM~1df zy^;ynoO6pVXV-1&2aGoCpT(9&WvHS%LR`Tj;?)$=?3Zx9;+4nwijyh-EIj5nL9Y)g z!ou`073eme^U7OtIst% z9sYm&9ODdN6)q1{TIq36M$M7k3C8+1qH|<3-+KU&YXSXI3gK7=#;<@xBF6)8+lZM4 z+x#Zw;VrOhEnfd0RNCBhSrQ>yslIO@M2?xUasx~%Z5irng=zEm5sLu} zlfe;V;XBrvD%Bq<9*ioJ$hTo+pbm)VLv%_52*MLVs`cE*1+RN$1+jC{8#lXtwrRLNxYm`1~8q3ep1WEx{p$A=+Y^@FQ0yPvp ztl#ywFx#v;z$y#`iIuyCJ;ET_2QZYr`N1Dhb6|J@6JdCB%Ras330GN^2woopfP>I@ zIYda0efN?k_&?a@sb=%>vhz5DKVZ%A9k*$rUfKg*4#xZDFbA7TYq4UZ1FZTSAv9q{ zm|9o(k5#gxmjG`dY|Un=N|6m_&ZX{!X)DmPR%y@P$)+GZRVN+-wOLV)!e`J+x>H8m z)YHMMC4S>)vs?UWdq(Es5Hh>``h4FcUm}~@b(Or1efzhZ&Lzed2z>My5HQmFFwC>) zfhN8|m+I-on{3W#wk!s}{@pl(h9qCttw5ZVBtOAQvAvxhVW^KA{|I%&kIUmall=`q zN)YcP&K(fd9dB!K?%hsSeJ>#z6C2lQAF&DYmIm}LUmcR9HM~pQY=EVUIw*z_uV~dB&OY zBm{DC$HrJ!SOL~c=eO@!F~HTWZf62V$r`Lg?>A5c=)IoXZCCWA))PvDsAek;KPwk;Iz`R6h~YJ*`o)l zJ^-=BMuu3~#ES?OSS1W%W!*RA-FL*Lw)gw6-;U7$=3513_Z|=%=vqG~gH!_R856chW2^Pzh`vm=CHg=41qpTEX zJFR;=={eDnzENnC3}(q)QprpZb%QieLO%cHj{3nQ|CRhzN{C3};B9TCqbMnh<4Sf+ z)+*;?30fbQWrPNh1+xMoWYs4MeWgqvP#-So9I#1F`a&4-?xY=z~ZPPPE(||U8Zi9uUv~n+g=$(1q#lQ-SL#&cZj=SuL`uMi=XTgBs zJUalx$o$@ZeFNzU@H(D1pA|@5);E{}1lK!`3;#a9>(Kr!qAZ3UpYn|in8x!3j&(wf zyT$L30W?yoY5X4f%_cPx?7xpY%JoGQ_g&D&z5X2egZ)1y^fB;t5Z}hP*G!sZ1wz?? z)`)A37{F7Nd;~`$JCW!*-8#md0&CJKp)e1#?famGW{jV876%5#^23#@z%)>qDuj$n zqFn10-csvMiy+~Om8Pk-l-vCflp2We*2G?Q^h1knKy0~<(a!^Nn z!r>4xzy(2SLCTT6Q}_!Nv`XvZc%e~TUkw^tPS{=SZ94CYrUd}`Q;x#|!Z*%)GR}i_ zCq0{10Tk?iIAeo7=eC5k!WRGs}0skCLO!#5?;Ky3uU=PnQa1WL;B@fOf);7;&# z(IashThwRmE984<#Ti-s1Np*kTY3Ob{)g&^^BtiuGGz=6-SSH>KJ^|5@v^eY2i&$= z2}@XA1Ry!nDVIY6i5M)WEn~A8q$6C7<*fv+^dvtoF>nMs-fpLUBa?IG;2Dch8a1zr zjUens&|mVLRz=e=H|*rNCtYQElXwl3Kz6KpyTqja@T zlTEHc8R^FrZASc#T7&J$jgS1cRUv|qQM7&mkgj|h3r0~97sB`!juWrX0rOz>v(Sr= zzu7sXIW{M`YiAIomS|m1YTfL74VqmE=Z{TNrZ50w$Dry@QschWuC4 z7f?sb7r)zo=|`@Zr3sWBK5cjKQ0Nk|h1qHa4}ff<*rWjKNR7T^O=oHY?Df$tLShE1}}=o-nTm8VHYD!rN<^GhOXvZs^@GGZY5I#1aZ%B;C?M3qYGV zr>R2EJ1Fv8MwX9mZuC7~2V^)qc{xB;jiF>Y*B}*!rmp6zTOMDZu8Dw_V{I6W>wXSK zR^HiF9ARp5*z?DT42{P@Bs`SoM9;{>(7!I0Er8O3TUL+LFQ7tmdxBgpaj$y^3Pm>h zmdvw73R>zGcY~uuIxR>%A&07#t> zL4#pIm#MN2qM;2{oiIyl(}0q`k1a4xanr;{}|_@SU`z2o6u-^P~hWcJg28=TsayIIG89TZe&>6k4}7MJOgJ|3$EiT#Rg2hj)yt0e7Q?t3q_>G$-*v}F;O zprk^nu7kDzLF|}^KR=DFQl|tdNkGDeDGvGkA3N*{dzzOdf$n1E*9x?7U9gnR)a3Js ztHAlb45|Rz_VT!mLb)Z*nH74#PTD=921aWWpeC3<2?Wl#!NTT|%`rRi1*X1Lc>z3I zLPtEY65wt`_FxJT%zYd1vxO)#gPldu6xk{jjMdohcLvDo7a@#Jn6XNo=ew&015$`6 z2=3>A(x?@q5|f!}Ka%|$*I>k3#YwxXAwthjlP%wm3`PA>x$E3x-@}+9DdTPeNH7I# zoXh|ds3)`Ek%VX}I>{k0oJ5oi^NscSK|++lDqV%Tj4HVX4#cDSoZ$uirG^DGHPtE! z*dv0Pqs}lewJlf#P~IG4@MJ=5U>t#f2w^Y~3law1xfje$j)pW8IFSRD$KAp$k&YeZ zNNGa0Bj3RTW*Rqtow8&iSC}rpLBcWfpMI^1h%i)QEbI|7hp3k8{q5=l|76edfqVH5mO6@uBj|CDT7^aS zO-$JsPQ~SOp&~TRvVQ-+D(HeBm|m6T|ZUG_Tm-X(h!LXl*Jtc-JPEhFg|$vTIKj2t7`E5FzKxUR12zVGY0f4|4? zzwhIF|94+^9G~<4yx*_)YdlA;^Ox-?iJvZvtFlsk$$KGan}V~jQm-oQ1JqnGe`$+w z>&Po&f;SFjFyySoG0bGb`MFs!%#PF7WZ5QKtw(~&lc}z;@FPbHW~b?*)>W^FW<#hq z_*Epor4?Uh9&>nzx;W6ueCBm-b+u*M4tnwzyq4Q{R% z2p+XIW{`0grFCeplcx*LcywdqbEP2R3p~Yg&{_Z8vI*+n!egPJ1OOe=G(%yQ=LZf( z+-_JFVHpd0Xp-wJl@&VWF#f3kTBYq&Hv*1w1t%pyI(wo@U0003mTaK1gXi)6`JHf~ zdO(#D_aAvq9W+sy>Ooep#<2&!u6Rld7gK9dH8&buId(>vAYvneC1e;1hZ+RDYpyeA zs^#uxcCy3g=%)gRif4j23X>-{LP<>5rLRz6UaDuw>k=7)nS_^nq5_N~=ms3{%k8L^ zoFL;X{_SE!kbE)+o&4v|F(?)$Y zLq1sEwc|@#w918gbDoIxF4PZ0MLl~-qU-lvPCDmrfGTv`PdpPSS`_>AB2Bk>OD1_1 z&Gi?Ml|S2(?_#p+c#Mpwl6!Bu^cbjsUc_0bHyc^LAW#Ca7VxDBr=Y5T(b1#OloZ zOzaL`%r-P`f?Au<88>H%gHkr#@GiM<6JkRGf}#8+J%yO$^Ff1G$e{vwI7;>A83{<} zJY|pmWl@EoH?cV!y+;z{RI8K)erNMJCXS0>o^Qzd-VA|mgWeUCZPY@IqlqxMBH6h( zEzI6fGN4O{1+a^zWVkvy8;GM}07~0A6I6S4uB$zaoO?7rKnj@}f^ml`;2|Ut*y-8| zVQ_`5Rt)eIE(F@cTK|5i$#c(*rTXKX|L_0$KVl^^39prpYp$B-m4$Tg-DpLON)|-e zje+(kiS7D^Dh9bvD%ZaMk@V@rT^k%7$52yXvgwXwo+BeLH=6CwMOV&k>;hc@?f?8I zL+R;_UuF)TzES@#A8n#<_JK!w<9E3Q_mh}6;3(uxlt~!h8NO7rf%v?6u+ETuL%(IC z$$mY-D_JmUapPCRYFu*+|1xzC`VdnkoJO{{tM2Zu8 z1`8rK6k0YWchB+FEe|hyZhWwU!Kn_xzsw)iu-$uEW`Z}aj#uZy>LnHaZ5{siWf2TT zuKj;+cEhnL`2XKF&TK)d&g90t2D!J{>|cOI3I77O(NYWbe_7$9X}+m0y!|&%Lb?4< zha~g5Y(r&ffL6NVi_vk@o-X$K@#Nzdrl# z-|gld&`;}OusyL4fSdnx;4j{X`tk-hLU@I06-2!s+;pKkfr->E`Q^WQ;d$23Uury8>5Gk4#%db2<<*5Zq8FLW+f`wMprP+WoU0bW7oGi8nxe zKNMJV&&0uP#ZrF+=F56W*0~m(J#-)+w&B&AFN~vprw>r9Hp}{jEWvy=Xb6+p_>inJ zB3;ah6^6c|>ShW1t^DiUa*z3KQ^LG9umd45;{#oRuSf~y%h^>{@Xa#sSl*z`DL3{oGW zaz`4b?UOF>(Mb84vAS!Y$q&mXXTtpd5_5aaAMcq=8*_!@fv`X z>7|+MVxX6Ge!j5^0N)aE03=!_$>!MAEO!E|^x^!iS#_{cA`q@tN-QD9HGD8(14%ScybNRE~Gjx=`3Z}3kV-c_M(_Ywp3TH<$E|X z0w;^n#K^FCPlc9T9{^hrc)+s4%E)lnA!mG$L6}vK`hW++f*5N)y^RNvXd&fdWGDn} z??3imycbv~3Dj|+R?@8d7cwQSeed*2c70S)=6MyR6ssZEuN(FDj+3BIs3zC?e78XWuiQei z&bGEdiad3+Y+3s=N&$*gwG+@nfT95&)t-74V+ePLZxkx6EZfbXf zz2Z4C$e{PI-qb20EBuU+JOPYaI!i{xDweonO4ckxPEH@E1Gw|n5EC=inF$dJrk^ZS z^04PyOq)a^6v5xquP4>E#3)FzJ7t-q?7KG0o{Y9{CN4a?y*z~s70 zR*G>NW74sG9Z{`_lyvRh?BLl|=Amrm7o!`9icOTjLE>T#VG~+HY;oq-ZmU9q;_hT@59-R!YT;225IOS@D@~T(rXz5juQgqT1NttPU2bRA!&fxWz(>|0 zG%lGOQ_p^ZEzlnEeYwN=kgB}n_|Yn)ca|?Ij)=JMVR77H((pe8<5%`erPoMmicY%j z`|~iSjctm6XSOo#vuJuFBx{>xJC?{k6vQ2o>7|c2B>39{zB%o){Mw} zYTklMwcoGSwj8is!VTY(FKrF!%N=(=OQ~o%U5SZ+n(rh&R|~ogUHb(|LR!;PZoubZ zv~4*SAIdr4!sU_I0sUeJV-perky_5wjk}{6X;3MU4vux#UEkP}2R@(jKp0S;N4N;+ zp3705V}ePrzC|q^G~)DfyZYe^Ww9qmRs}GD%64xsw==dBreN>swknKopMD8gLhPVU zitE7YOtS#cn)5$JTyEfs&}+z3^S|Ne0qv{z$EZQg+E#e)sor7*i@MRuRQ<6S@gu*5(d*JSdWc^Cc|c?QC4|Mg$k}9 zK>Wx|Xp}&_2F6y(;sNQG!`{%wAeq(Qhq((fi)oW~LgK`^%$y`v+GcT6ev*a;C_{L1 z7?ecjTxMvjNippZK#kT~Kruwkvp;{Day?ST^SGdO2ag z6dw;;Q|)+THn3?rz{7$2r|+ndplhkt+Uq?i2DIwzYHeutX1H$+O+ajK%RucNKC-TW zO)88!xugM4|I8}@4h2*Q^hZ8F-kq;)EKhIu^*n=$Fq#$^EDQ`6AaQ8|tGA&`SWfd+ zRx4Fc=$G>rt#C6fY0otv3lQVxpF#OYs6@4@j&Kv2p^ZF%)U!Qi4OjRNEsxE{hBaRIoSv)aSJg@CkC(TyO&8rCx)=DbD}DpG)@^p@ z#z$MMBc%}y{`o}B{W;nKOSujk;Em)=*hbFnC?Lv%sIlsn0~1u@2!~L7xeH{3E#$d0 zUzUTY*s}?1X6T8L=NH~LP}U(GodNw_wCfb#Nm;*@8`d>s)1yN#9g(M%%ZvsqY|IhV6+vwcD$ zqywO#KRWAFK^EX9YebKQ^3nw9_7?#d?%B}rn`qwRclL^8jd;bW(BWnYgEX*E07NpF znQ%q4H2-+cBvrBwG=ih~guT;MebD-ETU97{HjiW)K#sDYDQ@T<_FvaI$iUy~@e5?w z;T2y+#=rzF)=QJxtha^1R~7DcOVwn!T`aXf4Rxw>=(aFvCN0*F9TIR;BIIi_NE;d6 zg*`=vsV>Q~-~Kp?_~%-Vdn$sBDspO$v*62|rte`Kyo-46xZy4JuJQpmPnKy@>%U%P zj&at2>E_;7=*``}8hFEjxBsaID5}#Lbe4kXL^7zP2N2#n!18i|q1zLJ&JhxE2N}SA z@xgfMeF*YX2&V=Z51{1T5VD8>nS&#E%n%F@oI!>fkxJ9t@CKb9>L80DJ1}B~fPL-? z3ef|Zoxp;W!m|gvdd(sSI#}4nN}un391p<6i5uwI-k4<&4Y@e;yhF!z29TB1Bo7Y% z{dlRTVe-=#d4AROuYSuy6pYlHoUDiw1JWcP$6W6%DxN-8XIA1-cVfRvEsJGNWCR_c zHHwez5BB-3Q2G&SYq4`fr<>0IsM^_h@Syp01?C!B6L09GJcUOTTIFL|5hsx_(%uu8 zmHn3xz+k(vW|{WNHN!IH@qb)#wvhgSTOo2!h#d|9{gC)RFM2vtoQand89?qEyhm|| zSRFu=H4p@6vpwVhc92?wX$B&h97owD$dq?26$%dAh`@Ge9m8X0;c_kn+61>m0C&eo zeBYTXL!^p0U1v>DlmPI4;2Cwum7X-u(;pp?R!ga_m zMw|PCef`H@U5aeDsa1J&@egolr zGBpu&nn~(t5ajsyC}bbZ@q7!AWGl@OgL7XM77Tbq4V6gk=ZWYFPBjXUv<}GP{PXs@ zNU7-Z4QvyJx%X9n_ZLX>3bce&n|(G=Zw8AFG79i+Dh@S|4>eMwryA*5J$GR>Lh*}L zhYv3q@%fN<4o3NX>Wa}|w2$~xjk#{2(Rn_^oTgA&B+VI!=)EGtw2rBUj%mfwH4VzAvEW#NP86-Atl@LmXOZ%B$+!n zGq0(RHQb6*?8#6#@@4IKlCHV_rF1kU6m0vrevXEFbTf17)$(K|+MJxdv@&G`x z_|Pl>87z7`S@8LE61^g(x2+;$qybQ_;6>We>kRB`2$p}M&I~aO?=!z>d$SBPmXSOR=0G15$fOKR8PyvziMRc`DX=Y_1JYKif>9>8(P;^#8*(n7#7%bl9221n|8 z5*EfG01W=U9V46&wgu@CD^BRtt8h`V8%*1S67uExv1_Xp^x9OSHU*tW2kuou2jLKV zwps}chpn&ScNTKze#j4%sf#b!8iF~ti=!{2 zbR+!(qR=Nx4-uc9~{;MNBdBW~)|DObYJ|?oudh%jc(3WYO;di>i9p)x45r zwp8YfrQU;cL3bjC?G%u?0PK=yU^48z+?MprEg4RTnGAB3js0n+apq$PnJ{qpLgh4% zrHwFh+!0%dnB9KQ)lk_`&hA{S7*l*cyG>rhj{t5x4y!QUyr540F^+r~WOWR&aDR4; z8M=NXqCPku=y1#S?KYBZHorQtH}9azYyE_YA?i__hbWbJtgzr5gM{#KT_mffUQq52 zRtG7%sf!!0Wc|MB5}Cx&rvgqStmr7KFJxU%`z=~mirj-hn#aZZJSs3gBQ%erS#d-& z5;^*#?h);VN^Bu?7&9vwj4BrH&ua&sgyZFR!7}pJ7oA`&$|LR+M;67%W{!V7n@o2t z_Q^+%o9f6kz0LE3N6I>sg>@vC(<^L)k3LNjdi7qlu1c+d zz35T=PBfz=i_2)QaC>{RuF!4}&wH)FHt0HXpSH-)5~*{YsM&2}WZ~UwR9wq#*YgA5 zonTL~7hm5AX#rBWC?4V;xNt#2r+UTff4f|0c62k7?WFruDpJB0>oWvl zFDs6Vwmu{VFK#=)nhhz<>LJ{2p0C*jxOWM{8jOHYo-dxR#;VCQjqf|zw9 zEXd%#l_!E1{@x4C=r#i6hRj_pd4?M`T+2wQ?U?mDt_WS`NiOHr&p54j;kvsA-0gaY zXSi7h$#$4D1ug7TD)|-2I7M%bF0?jWf-_?99Yjp1SJmV?+3eV^iz@KMyErUDAkeeq z03g_E0ZY9_aftXl*H7MM#F>{;Pg$ZRx;vKNd;%|~RU(}3`YbXJniwI|g|xRRdY+PA zAD6@rJpQ0A6WF@nuy%pdIok|tDaZB==@w-Snhx|H$j#gL(oijvt`p{< zRJJ~ONx~-$0_vYQUoG$GL8*9(gM}L>g8%Ub`OlmZ@ZQG49TFQ*#Gg$*IOW}PaI#5R zV63rHV=1U<-Ht&24>Tr1U1yrlM_k4@0$n2}bxyuAw)62-$Pn0adzf?e48wJW3g;uu zKF=8z=dU>W{c8{l>OBsr$M!HJHwdC>kUS?uFp2^v@9dIYIGEOp5ajmahuaq>qi!%Q%A}dVO~s$0ng^Dj2p)p$ z-{ffsUM%&HHwc|*%+&&X_+l55(TU;rqSH5ZSXV)8-&*KyB1^Vun;V{piH+acPABN? z>D^sHqps&RgrIMJOmW-;eRadDCU}_&L=swB4(WMnM!@VeeAYX8R_H$j& z#nnpDmzz1csCWnZ9`L4FO%@^iXvC^{#Q43wiy!0*4Yg8y7;cO1eNrYyo}7gf2_|{El$HMy^KsXl({UZcWUpLOwsi$@R>%GQ!sL>DLAdE z#~ca(&%UDJphSBX2Z9=6iJcKk03?EV9ZnFDZ`0kb6A?bBDiV{HPv0T(a_jDV0pom5 zKp?lSvW$Sh$4@N}HuE3I=Xzct*H!jLWi@mDbe(0;v`Mk}XJeS&vI*<)#P?-7g6|9U zdpA@ddP2IMQ}ua|4WBz?`xZ%xmA8)R(T8>>Cahdc`?t*!XfLYp5D6$t=T?G3`{nu_ z1qV7G`+&4qMj5&@w++!8+CSNSBNr;Oi%Wby2c_=S80d(q$AG04%^aT?lU&j2^bde< zRS9_i*|@-CbPf8#$|`bj3y$$)Hq7T;&S4#j|DF*6(eQWssapkz0T z4S=4wh`-&ZlSk$VgtAL5_b-_$9raoKK}Sf!XeZQY_^E^@#rju0}WNL%<#Lb&V=rzEmA+ ztfbqeJhhoguJC$15+1{f`8(}FzyIQ%(f(uqc3tkI>t?bR*RsMwLPq{~c6bRLT z(wHoT_t^gZk#8e9CCH@Rumyy){uu7z56e>4Be@@NUP5+^?Nr|jdp;nh6Oiy+_j<)@ zFQ6_wm@hr7sc)syv_5>e4_~_lF$&{}nJ9XUgbd#a>{5E}7Un#l`MGjN-mrEFS||gw zZC(B;`wLt-wuEb14?{U400yhq7ECKNh2Jx+q}so1!!Q=5o&^|sBlWZw%3e?3G!1p- zIa6%9gdgzOzh!s$biq9@KJcOCN*`u!iaZVd0n^4*i-4mw4}<#V#-AWJnS4e&<0V6s z)-1|aOT;&aVT5DhGWp85@Ir8)m%Bhn*TEWE81OC~i%>%!0B&2^lRTj7O1<gOSRBwxKM$iMb24cFDXVFNpSR()y?J(1W!e}{63Mr7R8d%rMjy?ugjUx zO8~UYLWUr8XyUY15DI8?ZZMgvdZd8cW=5or_^;P6UvbMh04+0pfFcjI(7%ZnyqW`( zLswOAK3=0GPUji3CYwVcvW0@@;Jvz@J>5vFHvMp}0d>XrU69v&YVYJ>0Mnf(n5N(X zm5Hsb9e1D+)O@$x`qx)kUIhrerucPn1V;Y|ql$asNI}PVsyfJ!uCQnK%Os@A_o#a> zlH3H|>x_Zd#mS;dg!bV$k}HrEU4B^TtrJ-nrR(U1G*XpWEPLB-6wyv#v8$yD_5 zwJ%-pK55uv&$dILo-W!a?*SWvDKFvPP_RKVUr8$<Sls@!e0a)owIE@r zy;kr@INg>5iA-UiMD&aHL#yiWfXiv&zP3^s!Dgt5FF-KDSLoI3q?~Zxv#$|h>Z|b! z*yuzxGQYG1kLaf%!UN&bctHYJh(bZp7|QVCooly%9_iHm{8Z{g&LK9{3KiTDFNS=+uRL5xswFUDWKX=@wV36-C1= zulQQKW4X?+gIqS7dKrA-ZKSnpa_``w*G@JyybI~d1Ql1x=uJYgx%o?zf~OC{>7arJ z!h%vPncT9JThk2sYab%Lt$3%sg5QMY9N+<)&BnAOhoC9ljzC0V`6F-b(0L_D82$R; z?H2|xrlX{*R|4PD;K5@6yo`pdfOg+Od%T2#E2<4BRxBO(i5Z(d-zlQ0XW>U+TgEfQvF~r4P34~srf%11g8K!4? zAl3;gu>~hs=^=GK@wuCoc)eDp2F6y|TZiffNQm_$H935jUS+X)Eu{Bqyn_(pc5U^l zb}G2!^KUPC0(Q9e2Qr%VGr((;p{am_rk)o6VKD(wJ%}TqzJP?ez^9k_xnw!K+H($c z3YEl{(}TH=S5^h-;P-v3Xt7&v%`{J*Zz6=rY-b$=<1dw&=X-q2L>1ViqKEu%T(b#V z++4I|3YL6Q=K!I3v1ZEMtU3en{o}=Ap$iivalu*7vQj*9s54xVQt^XZyiX_6J|mnu z)(FHq2$Q2GV4R2?rfJ+U{8R@5BxzhrfuI-ka>URS?|8XAbUo?WF7 zIn)u3^X1kH47w8}jyqIW4qcMab&y~i%VZt`dENX8m5*$)6RRu)`O0atOm?%uxq-ze zVv20(^!a|qUUh`OMoYME2YmQOO$}>9zsR2E9pK2yu?h0Ozqe{s-u&h6T1w5AyQdD| zL#W1(=w@fg-ok1p2q!5~0wnqYlC{Ro?@@7;Y4fz|9VK~Vu-T5LUw^GUZhsQkK+o1# zY9*EdMhJM}UGMwQn6GEiEqEXd($2S4`~PLUP!7YMh)%QBw+DavGGB6Xnc+}}z^D`N z0)y+geO|5Br0V3Fg;YVL*9_7gsJyGpWT}5z6LBS6;?XdMvS?5PjWemv$FK9UTWI*g zDO@xZX|&{ta5oPVmlbZzK3AELTy~!;LaxDHcGXj~4j5|phn=`WV&YS;bJohOp%cg= z6>02dXb#l7>EmIGRoTr~tpSTzIPz-rtJ^8?@wx>wBaYb>XTVnAPNi;esC%tW?G&Gf zvhA#mda%Kr0$03k=B5b9SvUvq`Q73ZHLO(wBDHm+M%%htAyRa}SoZ2Epqvl2uW&{9 z28+3xF5N=;oX|GK%ERs7T0cx{wU90DO?|=^7M@!FWvU5H$aAZ*ap8;x1=36d2|EP` zn8P!>LeKf<=m!-|vaSe+%CD-+@8Ha77Iq-k zXgtS&$KJksIr^)+>N>l|_SaSm3qhnRbylL_A+x@sA);3Kf%7cV)l8k0Urml2YIlM{kl{CB8zR!G@HnGVv?zP% zc>`;z-hpm2fENt7u}SgNHeDrC_>n|FEz*IWWot%+4?)A&PL&zwI3ySaP0^q!yVciw z8CRx7YDDrt`+NXoNsi=y%$H9;ZR6|!P;`{zl&d5u8fKL-r-TGey#_*h zlwN+TD_F=552OdFOFbb|`=2I+gQHyzt;k+#xyV{qwj{a=sT$Iy>0z8}?{Q}*OoXef z%Dkk$6q3I}ex;}vXs%Zj43>%AB*tki!&p|-NL|1n!am4}11OsjjewDdtDZx6r)AM< zf$%R>-{JFsS5f=0d*rj}V7t7a{A2$8@^sTLWf@hG)Nd^SIUecdtF3N+JU4aCYGHrp zd+82f1K0SSCW*1Btv$ltLq#xgPc1Ea;TxLc(7H`VFks6Hhh0wjNZB#HGXZ4V1A5F4 zMi>PT>KZ6UFP4RE$#zz3yt}wuL_)%Mzw*~VCV^Knc0N;kC=xpj37Th%$e@cG-you$ zJhc=Zo8J`CQn{T~QD1mOID~&c>mcas=XfRJ-2mTG(`s5E)sB2aiKkP_Y>hI(0ki%* z(+bKX)}8BLP8GBpvAwj1la`@qS{&jGaacfl*8=T#1v>#as^rVE^HS}m2%vnivfCI+ zKH0*yF5}^{$>#d?@9XP_wsW1_9x`+4sn792<5J%3DJhvxFNXMLKHVOYvR(YZO`1o> zsm9UsX+u}LbK0-Q$7ID&)8OAm8!rj3f4U$P=(xT#>45{DmrK&ONr&cH&HT=l>yt$t z1XDts*ZlG%*0J?mTXbFMWT~CY^WFUrzbPm_6;5uqHLE<^Xml{Nj#+2zLYv5u-hC7{ycf@x@`zujH%)81?K`BD+#_Tr;BPHwFBa(qgJ+!6&Q`vnhL17b zsg3RIgUr@pbuU;cuPJp<((F5FbY4wJnL(CwGe3S{K00kA`~GcG26Oot8J9_&l^e+v zfukvIg}Ma{>Z)VSr`3Zg0?j)1T+*B(#LBvKRIJGrhvDnOSusR=-s=tHtaA;Caz>cO zh@;*E(bpO&Y1m0Ie3OAOSB7Hv{NK>b?e1?GzuLgDAGE-P!`l$W)Sp>bu-`n5 zBJgK*ju!U)B=;qkt>SV*DOKPZSf)N9U!Qk;Q!R<^k0rdYO}w}#$C?0zolRAH$CL_- z%Y~mf9~h-yiBk$M#$uhyyPrSk*0((LD%nz?A>|QCS66AP-ZiGTb!yJA~Y*S{`h2O-Dp!VPwe=ExwpW@Z>^ek>&IG$2&^Ge=JPljsMmAv1? z_3rP#53Mz+=ojHX)tuIN%*|u@&T+>Rq{|p+#{#8--w|Tjudmkd zWW{b~L!wK03dSL zJ6B%leGTc?{=5Kx=zPAVMnlRzvBsqd{T+ypZQpER*&6;n&-yDuBjlNQkRef@e&k1L z?XV5wkda>4g^TsfUjv2S_wZ_woUN;De71JjS0_z;3u)~76_+r>QbCrt*1xG9ilMSS z-&gJR7TcxUw`3M?*LywlL;$H|H-D!c!qqWeY?=K&Z7g2S(tjVRL;?SArYK@E?-K0B>pk>`4KrGS6;p=AEG2PbteyUS!z39 zo2E}n)1t8*wb3nvw)E*otp$&IMi4cK*w&E}ZO~cGrbXZ`Yc6%)VQc1=<*HVC#%1e4 z(jnP>0DYsCY7c(E(%@gRd-=Ou%^F#->f9WRHMwlReZLm zEoAEq2MDd$szRo-&t?4%uw1iU3Ffs;?nhb`1}jHmHXT^5zs$Kux3c2{EsJXlK|TKUt&eF+ zXJ2}+NftM7z2ej&$eyLC+E3l|4SOso*{Q*CZ(b~GE8n4M(RM0ZIbqg7X&&m6Wk0#f zJv1$Eo2zE`9PmFUx*RCmrky2Ik|d6=OF1&dC~CKsTz&BJfupy6MVJVq^Jo0#^7LYL z?zsQ>+JLh@^hw!Qwvqi{XMZJNTqQrX?qNYzD3h)8Q340lEPT0_4CUozo*+Wo-Lur4 zhqF31vn`8#1!c>I_8zU-w^mC(hQ4@=6KZ4j^dkYo`0RGQ;=HVEja|9=@qFf#5f*GD zx=n1o9R0i3bd{TqrVa`&tI+?7Gh4)w?6S^1?NIAGEe|8J^)DfdjmdquI3&M>dvZ{A zSIkk}ve@fXy85Ae!_&*$Qyzs54oUSbMdWJm@u$)YAZZAzstaQgcDuwB47mXzlhUk| z6et}x>hRIw>QN`q{-t$an8Xlcl+SYF-zTq`%Mkj&3z6@W%@(-up9l|0eEu^-3X{CeqjhIn8DByYWv!D=a3Lr-8IR=4dZt ze~VL-Yb(Ao?+M_>sL`i)a_d$Z9NNqoUr^hgoi@o_Z)+$V(7T;NXVl5 zAheCW^VB_#jBI;kQWJv0FHoM2Xk=H7&c#;X#_FZ#3v>ju(E-=0FW=ptsRwa57ZvRIUOAy?8E- zX%icizf}2R^6#nZMxl*yRYjtQO-V3b%IB4pw84ms6}2e76J zjw?{SyKCam!pEWYc@U{ynycS~T)J&5uiX0fQc*iCCL;i_(U?9*!X$pTH*X`jN5p!x zvUgbbN$#`7__`0Na24W=6&Yowm7Wj5HrciSlK&>!0?No}#KFT-fJM$_?r8FpO>8OO z&sO$8pW=%%^(UTC?}LYk^>E-?ei%*$SDQU9m3XcCK{(Nu$ebDW9Dz}v1`#P$=G{llj z4LKuXw6DMAWLZN(S}|XN^%JML#`HsOgF}!z7SDyuwdZ?_bYAsv1C*}S=`7fdKP1eY zZ)xQ34)>`Ijg@H;5erXU%EdFkp~3Xq5Xa7dX?+@Ui7gT?pf`JK%KT zv|YyRTeP&-a+kB6-!@vB43m(O@X-k3&$ShzbBeJ{>~UR|!%~A2!VUqO*z+zujy;mKo<0BnZ7_ZN7N1wEx->@G4T)(`3|9?%bwE z95pOc|M{lfh4w=iv<1SeU6Ae}d66mVzkhivH8BICeI-sapaOX*ʴFVgqq3(9u zYhtfBCy%G1pDtT3!It7srb=;5R-KYY*TECCQ0=RV_pTj2zMy3!-C${Rv^=Y`onNkV zJ*p^6p)o~LYhF*8!=?7J_mAkFCxp;E`GcgdJFg(E+$OA*05ZS9RCzk)PJpS?ySWxU zB(&CDZr8w?^GPw8l-Gptq&l<{@qRI`~-iEg_J9ASwHuRJ^NZs8(AY4@Y z;Kc@Z@I$O z1X9FFmh5*o6SR)me#%tCGImf=n9%16zLYt59lWyBy$jiXh3_Si9PDSb} zzNzWy>1`KxBHiilfbKoLpg)oR@R}P$%In$cLl)RLRJ`3u~jXZdR0T*nnl z$_NNTBM|9^psQDu8#fGI;UBO)T2y%TC{ORBR28M=5lwVa$&r~~S3pen2G1+CH8_u^ zGj_FDGRf*GOCeMh9lf9*A=xSG(dxSjN_`lTON{mCB_`c`N2i@-fMalggT*ps?^I+D zH^|8RCp|!uxOBUl3qOhF1M!7|+=OAk!Qc-o_<@)OJj-;vlG(phdpz2Oz+slmbCmS!yZcrt-f0OYzDMRdQ@a~U8mY2{(x{< z@09B9Z_p;k&J7l`DcG|&xgKG-`MjZH6@DiL`4xhy&;2h*)qd)YH;jPq48<-*rbjz{B9 zs%);y3m^Te>7yUrw);7sHtqv1xGix7sv~hGz8g15im`l}AHQvT_#ReMT3hBD^bZ@c zW&)BD0`q}#8mO!b+o?qo%pFxsw2ZrU!B-YxkaY0#KLD`d&l%w^HerBQ$>400HEFWT(|X_ zi#3N5%f+97n~1e+FBnyfRf!T2irOkA@;!guS*H3LvT;di>jHk!rMz~iRc68W;?!fN z%OsJ{=$^-*cXFScfH5V8#;)39qApO|@}BQMM|Gjv2Q&_;Wazy_-DT!vN1)YWoTuQi z1Y^A3BOlZ(DQVPha%(cEx89S&t0YSa&DwlNrC|R~{l#;E`*>%omVhr3zmh+H<)W|b z?2~jx{GJ)W=pOf6@5$M*oHw@3q>#ZurQ9^v)>rwYa@9cHp(=@h^-f+aID0`Hy8S#fw1eQKJaZQ-D z9?<`LD*-S|n_u*8nS{V_pIAGu)z2l}+azpVr-NC6CLe3{)R;!|+0I?jLU;xFPLa^6 z4xJr;#-)>O6)sb@mwt*^c69m5NmKcly`R~C+P$lKCuk61-uyQ7W2h0czJ%PeUITrD ze(PDCzB8$Ry$zt|7{({;1&?>3GW8+G^mJv3vi2*y$2IjXsCnS8d|7r8uDHGR)l3Ys z%zzi+c<9xaj+Sdjiaq6ZvLKp)K>%dSjK+U?<3Hubja(BsBI@xbf2=6@99@< zN!gR$1#O)8dkO8y4^nK;9*Xl+dVlm)GD$w(7)WN$8d zABV&BBUte^!CBfD&(b=pQ>E}C{GWg-=;ucx$qUzU#>6%=;lEVd?r_Y1ipEA?(YT{^ z^=p~*&V3>lP+?A#5FH(>Q{U409FC2JN9;7Wh|6_;K#KUb-^Q+lSW`*C zrH@HUM{4qtUV&7M{?d+B`41B4kEQ?01}S_GfB8!)TtcDv75Mv98O3c^XqG}^-C8~# zj#qj+cQpinuy=2VofFz@rnIAXP5=E(Y-)edGvQUx42~p~88%3M`5Z$L2>y9C4Oj~S zcMgRJHgl5X5VX3I&sB|Be+$n9kciKYj02xOimO#XMtm$RdO+oY%mTluh(~p*w>^kgILa_cD=~ z@y|;btNT{J--B-|+|S**d@_Z#Qb(q}o7Y3wy-GF1Q2khUMprj~}kbEb2U0lIddjfEYG!rYd8FuP*C1UM^j3zkl7A z`%1VWJNauq)s*Yh6Q-}o%QAnodoADERdS-Z?M(t+r$V9SrUXDwAEICt%M{Y((J5r@6U!-0#n%D)VRBPhqy_S2*FIc&Er2_Vovknj2`M z`{5JB0)^}^J{A{bmiBaAe2L-}GJD&KOjGkr>g@sZ(e3re_Z0Z2@5ylT)|V8xmzH`EF!&a8d=)vKX+s#N+bnWA{gOkQ4S2&ptCGiXET_t}yliYfH^{Wmi& z|I?p)U;vg3ulEADAHA3cd7&S1C{teqR2CbA;`aFs2?mO%-hY#uUiNbzz55?>#i1isNaRwNeNkqACw=2fs2qQ@fbGkC_w7Omrpi_Zi zrNF+1fI2Y&qnXQh{`e3Ii&~zo)P;j=nj5WfVQT!D0_gg&o*F%huTdj4W<3UG&3swo z>e7rKXbMO`o^JXAXw8Ajxw8|*&Usni&6)a>2Y=66;A6Y($USx8a4>-X7(m0tDr&VI zY#`{v*d$IO_Xj`3mO=E@H|yXx68*Mbw<2iSWhIvpCZV|Im6XuqRDP^^;s5x#TksKf zV6;MPxebFm-qF67FEOm&I`j2k*nT-j)PuoOp=~T}Cyr@!schu5!|+9I8EQ(Jr`~0M z*#E*K8r5$sKSKa5hxO)dg^u4orkFnMLPgz+K$4<`#H;(Fe(yeIUB#>k|0Yge{9o&J zpPf8@Idc^`IAHqE%)=aqco_fc_GXk*5UasK)tdO}PBBG2G#ah`+wVgrY1Mxdc+_X_ z?LTdm;MoMTPGVoB+l$7`4WIURj(eUmOUW2hor|DD85^LQTc7t{OKw#S?!{POEjxY~`y)W`eo6*?+*TNl; zBI65gKeGkpJxAtU_sse$9#f7%?|U2gS~~D--n#3>96R-RlI@!v>|6VGYF2x?F|*mO z9cs7mMXtlRC+B{fb~is>_H_?YulQPoB|WG<3KP{S1N5rgyG7~vu|n28rJr_(IDlxH z|E-9#ep|bxqoE%+%ZAuQFZ4C?RiPE0#(Q&sAo*PT!%E0!`f#B9CzH*d6=LFP_vqlg3q0pE?0s^K5l}`U0K#&heDJy+I$P#SQx7pKjIs1 zN+f1kKi=;$F(7<3!15S!Qp0eAr&Knk4f5QJZ)hU{z{RI?r+z{ihI&+&8D>sJK?jbm z*r;KTb_p9~-h7tboS(M3?D;+2hMws7#)v=u&eq2oIX7-?OB)n!d=0&|H~aSL$mq6~ z*z{F4KC|k2!HG`c+XKOGenW0UC%jh|Zw|eW!FkI$_53WZxuB!99SI+fUDFuwo1LD} z8m^h+ej7+TrK%xJl3#Ue09ckeF<-Oj+0|b0)02eSZxW@rlWsqZh$g7NUyTe|aN!__ z%lO5zbtJv>`NG97yYPikQ)T->AIDiA-li=wu>HPL03oCwbQx%qE}wiAIUg^7i_70v zxTyXDWmnkOOhhZ=~-3c z;Uj$)na!u(_P_SStfhegBVoSKb=rVv0tXpay=fl`wit$G)rYlMdi-xuxbcuT?B+!` z80h<3tk|e@M=R)TvZV)!42P9gdOCBp_j=Pz&)Y3OZaa6`eS#{d)HxILcRMDgHB~VV zdpDS1<{SaTHvhAmI$flxe64y)Tjz5r>cCUj2)5^mB%7uC+!5k$aG}}h6oKcq#-DyO zm)!ggYmUKS=c12;doodP>J~v-F^u^Zk@uoKaAy3^hAl2AtouNpy%;kfEOo(C#?HK` z5<0Epk>olBlNSN&Z{uBeVT=gTs)lyeTok1+gqD=h(bn?H^lUkL*(5TVDd zZ|A0v)-aBvbq`G4qPDiRonuC03=F-7G9`@!xGZ8gkXBD_lEAB|v`0Kq6Uc{DTjN%k zfys?;?b#Zo*Ft`dMzBeI>`)>Y$LWqsAL6HgnOO28Ezr4g6x_jSkb#saVv3WqkX@e5S4W?A7^Vz1dToZ~fF+JhhHCs@u?Z`rKFIs&tP z?AklnQC11(bGL{K`}vV%m19enwVV%Xx&W%;HI#(i<`oHQ-2BYR#^<7(ic&O>_edL$ zwj|>&RfBhy1LiS0(etpMHGZq|SioV}yky!Bci)Rhys~^21I?FToAO=6Mik1TW5T9#Kba{#5(%2g}kM`uH8U;M&6FZaR>6DIRix=6PcWd>jf1t^Kk>lE`kuSv}AbfChVa?LXBupJ2lja3!|zKD5_GyGrd+ zCrBXgQi9=vA?AJHrM1jQKR#=Sur6bALQbVa=AUdTtJ3&+QdBP%S|1Tk2#u9( z$M+$r_AldX$29Va{W_JDjz)uBfOW7JGeaD2JUf*Jg&KbpJ@f?(okA!XHdLR*7j z>-i1=BWMBO@?rnCb=>=8;A@CBNfL|}oia;I@bM~6DKg$vc(bh!z79@no~nyrCw{X# z;w(WoAzO4Q4bOZf0+4e}U|&vDjD4n(Xz>qg!u$H^S-&4NVHIay!PFR|+gixquc{>Rn;CN~OCU^j0*>Iwm1)x;^SOSVO&KvK9H}cLFgp^`$QD^2X z3wsZYUIWs5C?-0Stpz`BItaa!@?4IrS^zH&@9xx?t;e8EvL6kDBxeQPXGc|>gtZlB zOA}tpA`d8Z;^He*A$o0w@TXXhwOnjxD}>}R0s+F)TXaGkwB{GCn%+FW;1`y z?60ijCA{r#ZdH~icc``AbD6_MgYy<75D4S_r3d5WTVGXY^B@3xV7Y(kkQ^6Cm#1Oq zv)U<;XSel=R++u=V(A^GhI)pF=jR7a4(}5*kQ1j@u&?;=Sfc1Ehf-slKnZ3}k7=g9 zB%YF{O1cwdaT85QsS*Iq`t@q=gAf3qm(ILx6w?k!5J_gH(kuOG1Z7X+m_Eqr;qqe3 z&UfJJ`FZxVUg6KXl%~F!P3u_={-`}9b=|gsdWy}^_?=7LCl%#nijQZ!U>$eP=ak3X zm@!ew(lQ$pT@17Y;yijAi_?P`4$IEGiQ*5m@rplwx4JNC zynWyt-T5wZ%5&2AZ=#}pzcAG&3Gscijw)PknClED~Bgfq-nQi_>3r?Tz<;g$+g1I=8qE@vrw~ttx`v zaK`s?eOB1~6?J4+oH1X4!8p}&_!0nCsK<`Y4lIBCc#!Jts1wTkzl`%N>vvxM_&(+s zCdqC&Oo#XmuyVJEhZrlYE)iC|0p79|6$6;rpQESSJ-(2?L-N$UC)p(BCKv(UBgf- zw=1McIjF& z?(a%xVF1p=xG3Dt<8>Cj^SR1n+cEW=7hVr6ATM|gTsEtPL4>Q~JCrA2itv~B(hN+L zAYk0Zu&SLHgh4+R!=3TiJ_JL8G5A5xBwd+W)Ng)af@fK|;R2&IPWn!L35Kn$Rwu1x zGQIxppfLKA;Rf5DH736vN48<&D*0*68~>dcAEo&2 z*K?6+>FPiDucme@g*=)&OG(`+{gFVhAf~tO5zR|FSKOn#{&UR_5;|gih0rTb`okA_ z#pxAcDs8UG*(o#T_jkKaN$7kUK1?+S>OCIhc7$2?pB-)GMmf`+a8@xw^^Dr0A;dRa zpJ(AN+n_fmz}qumLP$k9q;$S%pf(i4fk0No!%FCBPTKaLAs$bf9;_dsjyq_+BkKQQ z@6E%hZo5A2Eun-`WG0siNmN3Vc~+*nQpSqRgiOgsNtCgKGGr#nR)%e!QY48jY(qkl zVVja6^SjQiYv{S%&->5&{`cH}JjZcAhkLj8`8$8>T<2Qf?`NTki=Ckm1p|skx8Qv4 ztk_1#Jr27ucARClW~1wMTb^ap#h+9C{dA1vvoBvukM$B{{nZeSESC;OzS@jpyriLD zx2aNtht=^=+9^-IPVD!s8ky=^k%o*E0o1Ix=8zEKI)iCYad!v!|AF?yCa1&WC zdhbc)XW5f$s9Z=FXI0OtUuh!vGX)c7;Y6_93zw{|h{`#2&BflP4b>ODD`%ilI8{^A zbUH6&_*$zSSBzk7f#S+W*(JH!{~zxnhTN_DkE`i=f8y^K_g8g;V!es^_y7A>9*z0G zkN&kJ|GzDWFAfTg=S45S4!j65yXr@W&2B+aifW)PZ2SIGk9L5UgK8JQ79E51m}uhV z8Lp4+r+bfM=V!QD-F17_u@bXfuD!;;(q;^~Z}`{ItRqE#$M&KZikFGS96B^MAr)DR zA4W?x6H}bm)6Dg@{$J1hjkUG)R!gxxFK((NP3Bg7Ty!X%Jn?QluK&K5)G{v6s)TWK z9n$Qlu0nrZR6%0+`K;`hyn zZ%Lf(cxg6XCEjf3a&X62f%tV1?{Awh5u3@>DAh;(@}@d*T1E6DF_8ACwr+q=8? zyC`fh3nLwu#6w*+__fV;puQYW6!UEvKJQ$2KJVJPN}Js9`?buz7KhO(_UiUlw>|7~ z*Yi{Fg$ldBKPI%UjVJe8xBU83D{5h3Ve*ggrEWeZg?9-qHp^k#VBzFaIG`6yUg9ab zJseWCF3*e2UUaUPqJCRqIX;fVmpAv*C&mt+|9E&P^o_-r4OTDY-eU>hiMmsqo56A` z$N0}VFP0n?wfhx^T%_2Iz+Vd0-?kik6@jk3DdIq)&{046=RlJ?z`n za!@mKqg6hMUg_rcb_<#yiq_p+SyC1~FF&bmwELbEK*QtaWlVv3-E-+Ej=LLd_|_~~ zbZI%dMEppHYn@BVFX{hp-`ew-+t_(&$^ZRtUXO9eVQs%&klg5taHB6Ge+e@yU-v>9 z&vA33FA@tk0u+q${a#^4{X#EsHB7MPxc~b-2d{vTc6&*xb<*;mMGu4uQZ6;Sc)Q^JcV2_aO zxf=Dm1{Wo`YEvKm@yq1Nut ziAUF8&e4u!Dl1N(`PXt)!gb`xTM=F_;auSu;`{9gmpv8aacE+d-A?1CFFGrnt;9+ zTDt>g9WO4qVc=QV=3hCx{@@|>RP?_!2oH`kBZ^;bLmt^!3Uq^Q);e#x^p zq=PSLeJ%p}vE3CSe5#@O_Azb1WU}hzC$|q{_kO-Aw#j`bVapcBL{{)q1pQij6x={} zaYW1z&#|n03HbW@Q^_u8j+ddE%UQ_yW7(rAiBoa0Fv})o%D%A2wWuH zDp&^+L5{gJTW#cBmOg_-TX(Ppi4&;lUUW@_d3WXQ}48nXD0bhy=d zm9NJg^JHl2M2VPkL)u+~7rBiIAVTd3HLNblsZ7?vG{94js@{UvtgQE``~R{=kRfzd zn=;|u#=Ep``XO&O-a!VDiKJ)qAg^U`Es?I`52_!$ z!>7{{J*}BN&=|5aW=j8UnJ;hRJaXk7Q+LIVO`HpYta+%NQx|UR%lB$21bJiF<&SOR zTwG!lVP^`Fm4Pc-A2{vk5U`;S)J^W^hk)F=ZMU#NYtobD%C-5mS9K}QAg`)e?Lb*h zR!)V~Ptb+$LMqd0_;2j($gUzabH53q#ZHF3t9>-GTjpnxy1HouDM5dlkw8v6@uErZ zsd3rUwVwlLGPLM@#spSYp@T7GLscyeHaLda62&Nr(1Wr*mJoa{o!40zt(!nRmOl7D z+EZaZ%X~k<9mBl(!UXz~qMkEWP?tMM{T;2?kU=2}R@Jy%?Jxy{KX&%`NhqlFFQpTg z;of_vHvwAJDZ}$3f?3V4z(2|5?T%(}_8}9)PtHO3V6!RUNd(AtG0(WzHzb+OgO`B5 zGD`|?0uA@6pI8u+`9UpN48gVisJ89yz+2Onvy==cnVnl|_0DgC(*0qta)hGvBjHL9 zEqm8?yD0BllNmg7cjYrUH;dg1@{`T#XUXsGFk}&z-1=DF5DKJ>r9)^KT*gPBW0X6~ zWjuecFnZEwZ7F{APd-q^Ua7C^{qbbprNi=pNvXxC8vf%fkG|{#P~=F>-;i(;<}++I zgbzAA5xU~}m3+j$ReDJg3dSEQ)D9cx4ebY-Nh5^*H5zs>xJt)7KE)RC1Tuq4@f>%fXj z064)P{#dAkqlbDDtiHE^CCp3w!$|^kJ8E(-X`TUd2qa$A$am;qyPDj0i@G;r zW$0rYF>B~L^1XZG>XUhXqP8)XS+Oo@6YrbdZ70FCXlJUv@Ohj68KAgDe&QP$M3w`@ zG+kgN}SsUSx2)0Et2~GsqO& zP;hJ2@ExG!`6)M1*`f(=Up7l-+L7tV{Ay=A?WZF-zQ0l4~#=MWI1DxD3bqmeKk zzqXg9PZBvG)*?;Tmqi3klb4LWBgF35zLRUw#P)hXesYso@m}>9SfQfF5=<&OkCbx+ z?RT>m*s$CMmV5^@t(Ls_l7B8fq{|QtS*%P zTT=oL5}lHj?WLnG-xq<;zZF&T91T(-_J|tXV9_jjq(TI6;8W$zT}u$0oPKhLaY!8MfOd~m{&5)kJXX=La0&z+^Qa8c zU)2s>{2fMMDC~Dv%F+I)FKkpKT9)SlH4}V!%G|^P^8if6&cj;FdN)8#ngbCzs-IuT zd$nzzM9kUVdyU{e4RMx%s38q)&RfW^ATv#{b!>8lLLArV?0C1tvZ`)^q02#Jck8#z zk(migdtzHgKdL{yIa#+=!FPaPc0oPhipWeaKn#puSP_yP<^GhX5x$#T=~`a_z58r7 zwn!KmB4hMGagAYg61Uh=X*w#=8TQFzAf!0TFo@b`){L*1P7W>$KT}BX+{?J=+IxFF zu>4RHY@ubh3cVNQOL(xybKKyI{LH7e53~B}k#vqOgFlGVytGz(gQ!PbO_F{5B4&^2 zJm>L;xYP>?$(T-WCaB)$IGC~8SD^x?)k}Xm_UW}egyblWF${Vo4E-F>fJLq2Ir?>- z0IrU+eOd5SBtB;^%-xIM&mQc4DS+JJA`O2!bM)lvpim!wYUqAQwGm?qVy4Bej~(c{ z|C}S*ON5CQ`Mzq_a;9$GQaft#ez;ksS3W*NpfCI&t!&ZIkjs2;hFZZK$C`K6@YV3F z^`!HOcglVmFI_3)9L+o1UCi!gam>T1oOedrnE#q<7MPKXRC2X@E)I;2N}bJh_ylq` zi|%@qbS6!Rz!-?Bu7s?hFZ*)*+t<@%x&2_m2|Q%MA}t!H?5pUv_TyWlko85M#+YMB zFZYA`xQl**tq}WjNBfpk|38oecjByUklfAHz+r|nMC~~0`ygIf^elzMla?R3wB{mI z+}$RjLy4~}0`-W%LFi&pD;Sw-iTUcEN)$jAosaFL)c0*cXI`Y-_Oa8c`NF?F1eu0) z341CObfDL3?#p+8eFt$*w(Y?1q_gwX`J>mZ_H?y{ouNH>{CxJ!3oGT$vwZa!)iSTI zd_0+%f|Cc>`T{kMC#<1~OGc#Z!J`Qar!suy9=v*r{Or!c_$V~G1n+H>y;(9j*(~wV zWTwR@wJ0R&rXtoJoSl6pYiu6K;xBZMtxOiYdo_E`ApWJ#R%Fjy2@H+)(B+AF{H87B z%p?8_)BXkzCY8^++~;Ncqz3n4uOcJu+_I6=S950vo_(KJe^y}1i&$pR0s46LjKpwI z%W!&%$4|ML(zdn`%@602Vo$o9xtC>_jR{x=MfF&-W!FJocAmS$kJE4KhsK|T;W};F zA9$1_e`@?_l8aPr&r8#=e{%C8m|i^QMu;!MRi=V>LhNnQV=5z_H_a|{^=txv&?cqQ z-y%5}5^D*4Wz_GCWeqeN3Pv;%<(8z8l59zgR(be?Nx>x8o_MJnPxN=OXnwptxJ?YY zvx>ZN`IF9v#a5y$!kw`E%y349?_W62s}Z(;-f!^>${=C=#5jDZuNtp-f#KIL)t@>o z!et0sCU7c|E!fCdHA%VrjtAieX;cL?I6TXJH1;bt&s=;{;+jkow8=n={(~5t_X7nA za>8-thHkSQ$+KkfK7{)+a5yN_r>mmr--8AY!eAr|$>tE8oi%~MN#Ju;&O0`2)ZFIE zl&Hq7dG&gOpCc5T!_vD5*Kd#31s(ca zRN~b3b7^l|SI#=B!gp*WT?sv$5d*CgzKNnL6<5xJ;HWvNV*T7ad$cO)g2VuJv|yx5 zHTTJrGi6V3(pX@rj=eZ7(X_YQ`u!mj)q9VtH~aq<<^M4CRb&|};Jkg~l+RCiyLq}T zjr2Eh!eFq6_J#-O-wAm1%_aHh7;*S-!Gr0xd%tx~`CKkmt*h#~{wAuJBV7f;O7g72 z*YzBLLX(uP;BK#(hPl@r0GbEI$;VN5oW?biZr;8e^$pUq=3Ie^mzS*`^AyUqLIakt z#b#d>qFlaj7v2jIkgIpG^vh^Eq4%pfVLR{-5)e(QxP5#OW&58aEZ_s;m)}tDC^-X- z+(EBZl(OMmZ(K(%issC$SQYoGW*f$TV4WiJ<(^tJdFZ)ID@mJ zrLjgW-ykW<$&S@_R-rc*aGd>vHutrrATK3V^3|gLJB}mA<~@)O?9+#~(wd;NB6uHE2KB5(RoOCol!;+B{T?QN0na4(A=%`q-*Z;!NrjZX5) zHEqm){5)eYaKJU+ZlX=!wC7TH1{k)r#vK5}%i!vw7~&9fx?OSPp7FCn?)6&Fk^3N# zDd;-Z_gr>)!s)bXPpSLW?yISg4M78m^Nx}cz=N=l@I3ma$!tQj>f2(57cv@4bQ}^B zg(!a}iv~rdIE67Uo+1k_BQ+<>yS1SY0fO3asZx#OF4MXKtPgkhHP1g6lHVyj)RLty zQmWl5gPz6%xYpd$YVWD|LyG%>a?%m~!fIU2^tF5yHDl3T9=}WYYI5gh(8L8e3Np}Z z*zOL_?-Vm1s11>azMIr|mTDMxrr(#C-6t;e>Mk}FnBwgoXNwGOrWKn?Xg}l(sI|>V z0_1VukjY5bs;ceuyZOh+9+-KP-JU2L48HQKMMmI8D<>)jFr1FBRt5znXQ>Ewl~LIE zOV>NZ9cYcre|+v8z2nzdC#9SvA_TKk` z9IP-=^9F(aKJG~o5KN*j$`Qu+(!C7;7O*!)c}Y~Eqw6+Z zNoBw9-ydA9zprO<)%hEpKgOv1@(Iw}7MpZwR>=D_{;^ZU6qttgr-47CmiB1SY8t!0q-e6sYSe+gwn#h~YkTrK@f@wN;DgB(;VbIl&Y!QI zelyV(xJlmnXkcL1w^(&^vdm$xa1|qA@u%nbMBX`H^O`&K`1oN-ExbGymB-MdLOwFP z^2>WEIcW*Sp4KyycDVw}L!-MDWlg^9GnK5SlC*J+e+9g$cMHq2d=e%l(_Ti2yrw&z zp4-GZ_(AfI`lcUXaeq0R`j8lF^hEh4NP$_A&j}YjH+@&z>s5QiS3AZ7NYv+H@@+I) zXu-rP+dw}j{Oj0Z+LRK{w#B8hjg>)Qctp8F_(_S5plNHn{oG1B>^0kO%$N4|WInM_ zJKY|X<>otZ`l{!dfD+n_Q?cUXvvsaL`&Nsha>BT80Pv=_|FCh*J#NF7mz4wR_V)ge z8~OB4{vfcwikDrj5(aPBom_EheZTFyHy_B*9^U%+e0Tj#tJ6zkqjiF!i3O!!#{Zz@ zEfQxxiMoAci5>E6zG+|py6OVb_ zZKYFJaF+wnZUN#>w4@^O`w+Zm!isJA78HaS8{PW5?&&4qLV&Dhb)2s}0cWgqG@%He z+;=yWk;qWc7_TID%iMPWf;+tlyj_QMpM4q^N;cy)5qt9_OFtMw=$acmod*qURu>E6 zu59`P>9%I`3x+52vq(_jDjgg>XSk1iqLGuo?Cu6Yzfu_HoTn9qWPF>xHXM^lj_CmV zBKrh2Z`89S3(n1s_Fmyy`=0!RTfdOiVEZwXiOMx^L+$*8XcJFC{cE;_o&1XvHnmat z1235B=fBkOtiH(BSDP*#EvsoG2hvsJ;J-2p>#}zLOC>Le;JPRnLR9yWNF`a^vCy0@+I%YCxSye?inHKP$$g)-@~$g|jd*G=A2yC? zp_e2K46}0${QH&S=-bhFv48Y#lye|41hjgAq~1y&))&ncvqr}8dsm#?ms*WGaTS|r zONu7CKx|fnziYMUb3ucIoJblqtys5TmIy6-Q77vIrcK32&CjFv-ZHt`2g?A(b{$p| zLhe4CiJrkvr8P-N&1|S7^UZ^^MA$jq?BnwHnTuTuF^RQ}09EBF9o3eK=p$Cmd%CIr zdT@&Ty}-kA;e4%mjFPiHO|ms1OaEZu3570a=udTN9#8ObzD_ecGRmw;i6YqD006QL zFAa?DHk%!7gYbn+n6@PKmpS@FyCM%lmRQttRf&S=HHfN{-m_Vz{&|JNv(ZPpPw!4B zXX5C4isIS7*FMu5vbt$3V4%i#sQrZ5j69q$gEU7LclhPc0c4%bQRLAohV+m*?z#RU z$ zSj}MqEZ*E@p`R-8OjBd{aG-f`l(ElB1Tr`u7*F7w-5vCS8IFT}l+5J7&kuzw0Wm*$ znV51u6BDoR%7)tau;o$-Pt64_GP#7E=1?`(;HyZ?p9%?i79k&}E#Y1Pw7s*W$uq~+ z4ypVq?$5a#_2ZaPUJ#S^J`ui$T{V!q66Rk>pTu#T9l%N!09%n>`+J3JO$5FY5i(w^ zKuvJ6Rh-R^AepAXS zggi8Zp`BC=pP^G{S!_Iy= zN_f9#;nik;3&~9I)qiv^UW7VDAtbGLc4B#qOvy5!2*}jN1aTFx$Cf%|(B!%Td!&p~ z;)7LHoi1L6b1ipP0~kfid_=<=7f@=U>YGvyWlw%tcPb^odX)p15aH>j%PU~#x(w2E z-lE!uctiedMkgVRluTZWO6#aReJ1_XRx}!r8su0;xGVk1Y{o9C!6Xq}DJAFsjPyOt z!_-(fh68@WowJko;f{p+U!Y_?KJ^Gk@uoWifKUNZGhy@DX?jSd>osm`N_t@|;lkf- zb85fI5aixhB_pt2-7wXq?Gk>cOMIx4`xudLT>**i_iv#cZiglCGV@55yuG`q=z*Ns-ZU@-N;?r3UH;}viy!7xKJ zlJw$1Bc9}aca1n&#Zh(~bFwO_^7Qv)YX(@<5iM`wwjClGZKWmaL88*T55QMjug%^| z<31r>7nyzl|RKa30sGmkEsZjY5!^2Ts_Bwhn^|C^u3g=+1s9cZrwwib=`- z`C^EVXF+Z1W5TK!UFKIIk;-Lf58Tk=Jr{Q%o%tj@TW~-8ck1gz2|)u#CP&rNAYNGKNe-WMn*E_3Yn=SBNvWE4MgE+cqHSd9>OI{c3I?j%M#j3L`z}<5 zM`+7*&bcBrV{slDJjBkugU{niMW&ZpzdHJtv-BqM@ruHJZmVDl^eSaX% zXXH-OPw}2`nDufmIlIPKPP2JU3MDR`5$Y` z(Kp;(cy;t36|MLTi74`%2zfE}o(@o-yZ^1I%>iZ%lzZ5@dSj(k3Ib zw0$WD7&wOAtT1VDuM}QgAtS?2Kpb{grdB?YJ;d3j8Ezo z@tNdvKh25`TMUbKhOETBtxfpO1l`@}03Pp-_6R+NZD$GEKG!<{S2CvI z|6D+Ai4nLLyM*An$Seo$WVw<2uRT8Drr7c8!cz)*r@U1ENUBzXmzX~O4ay(3sxM~vMX|1u9 zNni)uM-N%?lUN?$XEZCC%#jV(Qb2dOs-RKTzC}S2I59du-?l{pZ$)c%8==GwC!#CK ze<1-w6Zh9Cl|JW#SZt7hfdJT=w0l62XHf?w!z9zSuJ&E)+iwlcAc3;O0=%c@Bxc2< zs(Yh}ZwnvR8oT#I0{v2EHd7n!O?!KrU>QBR0US6}9vlr9lp69X(%yRA5c_#%zhTa~ zVb$!_Z*PJuVw-!Z^eZq{8j;iNd&bdQ4QX|0Y&f|fIYB_T}mOW;K)=g@+Q z4}R{hJ{=xhb`&iX_VfNV!Pv8z|B6g?J)u2 zyo_N^IMRD)pZKnXmY7UIWB&Dq4{feb-q&c+k#>8x*zA=uFSuV6&f3(2)cRVJ zn=PUEPF8mhun&K~RA%&AK_$Ulk@(C=hc{X7PE>%qef+QDK~1OZy|lxr=9TIt439pA zeS-1;_~`O7*HE{{zK0}F{H>mroJA1|O83ptM$UKbbJ)aO>f&x36h4^9wiOwdyWcYF z8!>80XP5p!&WS|JrYG@>i0E{Ql6WrX3euC1Qp+u2xaMQ5j8-N^X#QgTMfJmCk@+N{ z@uQvK#I8vUw&hza6XU!4N(ii>TP#UxbGiW9Jh_(7rYP3;__?WC*Mnp1`PXK*I#xN6 zbrf}LEO&~(C{zBVRV^u57{2P1d+-N7EyV@TK41k@fd7Se7DF1Ov#U!~}7z5Rg z*kdSA#=WU&a|NxzecR#!I3{$8p`is{-26|c%9uP?VWB^{8>~^6miP~ssjf}zzBc3= z8jFN5sGM3e)Hj++_@TKwo};*=4I~(lq(O&3omvu2YVPnvH%H$Vt2?$5Q$e^h9kCZ{im|=!kroi^<#GW0&R%#=jtdQNC}DJPj9<3{F;M;ycWT%{*gj4Vgx2qxpl~ zo77TvXk;eEejBQ5oBKuEgIL)^0O`|%pt| zB`?Mo)gpH9ZWhzRRjl3=baUI59W=NoAYPROtO3%oQ78J;(z^LxpEWIPn&2^=@VOXs z)RqfLslGuBNX72AzPbDK)xl9|QhRnD7ICw48rz6^;$Vj^w;xDt9R35O*KzhB@gW~w zkWuxZju|(8cjH-|_xab@ir!ZT+SG?)DNGW)m!SuK6m&pW5M+SDc9!S0+SFWY&PEVGeo5T{YM z*y{S)*B=BrJkH_4E%y5PuN=KU?|^PhaF+U+!MdjLt{bY#)_+$K}89o$z#- zMSTdvUiH|MNgWtf(B;?MTr|JY!<V7s;09JaURG{a7z#H67_ihd8>NAj`;#<8hi zmy(iK5&ug|-XGG#0C$epm07YNb8=qGDF@iM2h6OmNt8d!4dRxm-ZR8=Oos^DznT|A z=h%Lw$XQ`q{S||=Gsj7sZ=pYJ9fAtF#k&m~$k0U7P?^PHQMp}YzU!-N2lQo+*tS3K zvy@%BfP2%P{6kyc^cgd-?tA$&+r5?h2hA5CNS|*BK8oH0-w#ah-2EysqlQVbEu$f1 z1>&AvV8bzo5w|a^X&`Qdi+f~m`-<~!f$28(-I^~!Ngy_i3(J43LQBO6^gkwnx8ZZ2 z59s6qt_v(Y3l_cM`AvJri)}_Y^<~vZw1_4UYINSdDsa-kRxZtqM3l4!x2p<)#S zaq8Sl@0CTz;~d0L3=QXc!JUDgt`ewX#!*)EtX{_(n4k;$d4}TroltwMdglWdZOCVL4 zhTXlR(IttP)R(auUkdclS55DjspOarIV}YV@#iPXyRn4o5QbK6Zujb&ZMp)*$$lT( zQX$V(e+yQ^(Ad2RYUp=;-bo!44eVa6h0L{ceQ&VdVJGL#f5!ePRK?q~GA{^k&4Dem zz)su;>??x%DjJhC1zC&?N*G_65emo+e7U)B%l>Zmk*P*7?SQNb(g3 z@m|%+(Pppu7{cPP17wmmuh}$v z$nzH-zmpRJK|v_^#rQmbq|}u zU4cwSySb$QB|8n8PZ=Aer?rOP9Tj?b<~4&`ym z<@{|7j%w~JSdC}x-m~+6^vKt@pB_^mXJefpD)p1t!It_n<09 zl!<~ZhpBrPy_gNOty^lJ_k0cz+_(%HISf{1u0*^QjYJ-0(@oMS3jQRi&M~S6eO04 zAa&EN!t!x@FiT{OXD}@m%4=RtWo|T@!nv0VEzcjfiMRs1Oyd@3UTbCEUE_+?bsnXc z%^3}vi|=e=LlXgTET%Ii)^Zg>4VU9wTGTJ`kjq5+runTA6+~348m~hf@YEKcgqE{r zl~7*PHl|g}gNZBT)m(Pr^W)e;tz%l^Ja9^Q-MC<$yc1rQvu|)sYOtKh>)XwwC?A?1 zt_X=Q7>K*PALO43v`x@1zPYJU)M*_YqQh!7@u_(3Wqy;=(kVlgG**My6T%O5K&0WP z1qS4iI%A%}ir(Zj189?eHI&--V9o@JjSk?HYm}F@iWWB9ZG@d|BTG3Qr;OLy1qnTCsi)~o@3!3shufRd9-z#PeW~quT!r*iEXlA2YqRi5gR2QGUGuP*RzI~LMQgO4 z#fxnIUrnmB2dW6j(DvpYGu{+h>qs?q?@2YUdY)`5l?WuZGZQ`1M*CmSG83E+XaWTMQE~c z&ga!u{*JjfEr|+;mv)lhRC0C$U#*p+M=9w$zr-H8M44gM57T#^0(uFdtKTZ60R>au z987B!Km4i8VPHakyelqy7tfxi168~+U0v|KJg0HS=z9e!P%TnsmaZAeI?ebH-M^hm0?5oe5$!yu zumKvMpc3w?_``F}s8k_$3sa!Q0P9hUQ;vvA(-3D>8xGR&J0EX~7?+5};mhEt;Oc^` zaz~?v^9(_Ch~C+1jny`znM zoD4{&Bp+*WcA`G}?+crPJQ)JyWp%4_3AM42#@WyO~zZ4ukbKQ9D5f z@4XLLU$UPpXX2Swd>Zln3VY@B|1qT}J^@`m{$rx3Z&!vHk?Ui~t99qg!$Aneg%qI( zp0bE}*7Ud8Qm*{+ZiYmeW7A_C>)SvsqJ@qHjfs~W@Q*q=LP!b79vTCktaur(#`|LN z-~P8JKOR|h@MV>=Z#hf~9aQ=C0lRe72H1?rQr)dM zI)RE%v^UU}CUNl}CsAu2sx8>t+q)&gM-pB>Gi&E+2zk9uf7pK%W;JnCgoBBK3RS(4 z#1P%Ya|#i(kglut|VwH0}*3crzxb8-Y zIY0Tiyhb(#y@mb3UQDaaXH|jl_5w@!^yI&O0?-9)GpfxnZ6F6^z42W9$ol_!#~so9 z=kI_N=C@BXYBO9kX%Up%9r2w= zi>>Z~;h_I^=b(TH|4Ag!aflzZLW$u!Oi4hfJXg>JtNn(Sxj+L01G2O3<`qn2n%Pxw z0MB*UQUBXjwEmfx=BHx5rvfR5O&YmB?^ypCzx(CP`BZ}Uyryv3#bqn??bFMSQyYG> z!@Fp7uD>sP8M%SQNz5-QDhg3q8BS0_htBY}1b!ov*t&-g%=vB@@bI~u8tHJZGs@fW zFVV6~@1Rcb zDxKc^Vf}6Y&F2;qZ?O}tx?dZnYlQVud&rj!>}iACnOI^-=k zSaRR&e6iQalDUU$$$Vj?F|xrgz{FcO8{{znl$O9?M;W5gdmTH!)#2erM#^xl1{E-O zNwI=ai))OU-M?aB5tnyXgSdgM5pyqvZ7Vqcb|Hrgg=6C9;nL@mVtMxF4IBJ&aJzbh zu^&4C_@sk38CvPF`m^zE?$OOEgBz_tiB^LaqCRr65`(Eh2(&Fa6;(+ktz?i-HIczw zx%V)ZI1~TTUAtEv%Q73^>K>7%TN1XxmH`IRMjqL}QDDFMFEN<^^IQMlg8YhSf5GB5 zUJwEXcqfcwa2Kuy1(_eRz@W1b0X$DV66Ix;a=}#ooZ+q@&t29i$8*P zlOtpwo6)X@R@-i*RO=ra@1l_7{pVQti*^|(l_u{+KP&=DeTWE(Q+FiFcylxl74MZq zj3DrPHO@shA*EP?Kd{gaBV@Q=q>w%}+#a@5Ze3ZLFI=*6qoiS=^OHcpKSu<+nLp}` z&eb3m5eC4!v(1ckew?E*m-i9*YpR`F_vdoPTjq zo|V-RD-A{1IE1`jp=TF+JCW6Cg%1IUIGH*cw-}UDhO*d+jecNq=WdIp zC-yXFG+hySqyfkvd#`}Hn`|No=5+9BRFLOv)cNu`K`$Oy7}a25vzw=U2rj_^sLucW zHGld4Tete7Wb`tPUPD@^=)HwafBsR$_*mRNrpGcx`b!`m?V(7$1H#$4kfU_3Pz=I_ z*<%ByQtMXXynbrkQX44Cte^LMkoUet?oV%yHn=d4ErnBIpFj&YtVcxWz$VTRXwdxq zRepsKT^cc+QEDB&nEFfKzq~=IiXR|)WIMp5<9BkdgU=}0Y;k6UJeH+f8QdSIN_##PRIAab-)NnEUZZ$5>~9XT$e$5msqB|jlEd%4IxsP-3eTZT)B{M2+q(l~8gx@s znCWT-mixOX)6k+qviD!PPiY#fa6<@x}C47u<)j34hS;Mb~3I zPx16SAwQ_ycH=`XSKp$VD^L~dRxxno%Y?+c|GgkCVT)#FV%C58jUgXt#;COi1NlN< z*tb}T2SWqCYOcU*!MR%n<`4y1gh`^I3Z{CmqKhX`LOpj(l}rm7Oqu@yhMj_ydc<~- zPCUO^l3jcG>)((LOegu~9mtM2rqUh<3}Rjv)DM9q0guf_s^#eCV97*up=c{=T4Flm z`vlqE3X73<&inxIVGy_PGGA(YFO1&H@o8OAC7<(RX77OR_3E)n{&wtVR149PU76_v zo8oq|3PvU&e==_|m`DORt|%%hw?7CvR3Z?Uq}+6=r^L1YJs;Gd87wpI77FU`Grd}Y zQSz#NjC@8PGqkryHxq0_M&UFsQS=G5us`1COZm#oP?LFNrA6?V}5WvP1N5s2z)wf3<1kof@QH41n zSs8!2oCNK8o3{#nvxBz}enE!C?n1O%#X}W#1#r2YmmHp4bOzi%=NO2(@Uj_jO}<3| zYC}&aNYm*o4+*+;K2DwRD1WnA5)2s9x5d8zPjqIPIgpH=HB?RF_CHQd&u+eS>W}r! z_4oJub+{kXa&IiHJ|k$^8RASHymrX?(j8--*(T@4~43KcREuHn}Xj@t(U!w zjbD>G`9EDdsFdV;Ir@hnC;ig2!GHjB^Tgd=cGm?j^jJibt(sI`MJ* z>BCH{g5P+y!#mG^ebe6?!`F_SASs1N1Il!~FVpJrZD?n=;T!a#pi&@B?1fEcOCm}) zdi0s(SowY`7}28jMdD|fN_6#2$+h<2W6Eq03RK{XNmFbPESkIU_DB^0 zm0+XEZMD7e4Rv`Y&%G7X-{ZTyi02So?q{aL{H)>Ddd^l2B*n z>5gVPnj&AWdr`T6)4bTL0n{~`08VE$R6R&P zbS-&&!Gam$)85_`1Qz!40g*npOaQpy(<{Ol8(qH4u@QUFqWz(s7Y6F=176v{Or*2i z3jI=a5Otqp`qt8mX?&N`7ab*}C#l$w4-U6l{CyZ0on9mJ<-h$9q&`vC+;4S@#(42ZT3j~sp%{c>v09yuFcgkWZkYaV04O)BKlI-($# zd6bPz`7G7T_l?&ts5pNO_016XuGQrN=RK74(AIC zpVASi(j7j@CVEls^T3{7_cC_$W+>hahCtJWSC3&P51a90{XUemmSfgXaQCC0=67se z+DV%K@-0=xV(&zqbM(u6Qv#E7Z^7A-_StFDoUyODZyu28cCxvb-_UmBI03mG)T1gW z<~Y81s14K<_G=)ny4)@4c^W}^FBtjIJ}nwb6_pe0kA#MF{oGODHXF*C`kDbk4}ZFa z3{lfGz@!?GU!zOu&VCBCaZj^XDOis?r)EbyoGen?=8N)@`dxo9U4Y@eetQ`Wjyl_{ z$2a()mXYwBlD*k=N$miC6#)h}i8>~W41)x4`a>CS+HE#kWR@|hB$?)?2G~L`mRmRQ zvpcbu4Cy9gFtzhgvf(}B1$sJ)(Egf$ZgF+#@%#vT5g;t)+CQ81{6Vz`^m$_4>3Y+` zLn(>(Z54e}zQ5M~H6H^)9Z16w-0!%6o<*2nvW_ll=JKzu5wkwp%n5VF@ZJR`DCB_Vpf%H5AGu477?jsUhs&QFHdA3WDF#9N*tI}-dfXd4 zJ@)tF-FCaipm5y(ep5{6Wk{;rrjBX(^)DzeMbbJV-$v>MmV0dgbZ`Vv8OU}f^#->^ zpk@<%NjgU>Hg0_hTiTs_=i^1H?mv%h0%(ZMk|Rvxt@x}#vnO908|L!d{mO-Xn>ZUc zfTa=onBGeQ9BkW%_f7y*=$btLB1x)%y z;JqR^t6guS+)?|Yc`c|7x_76ag?yxN#niEyDt`39`+-r5Y>=_Fd6i$F-s7@tlgUJk zz6QxZ4Sb@TWa$T>LHY42-s$jE@J+e?PtERczJ5$_g{Xt*Im9362H(Ay+}LPJ3ZRIV zR_{hVaI)8M1+H`FDhqh~GI6&sXadfxp@D%^TazBh4c7lvAkW$^-Hp33QGCftL$lbb z^O5CwZ^bD-KNgMJ=v~1l@L9MW^!V!w}$55yts+8Q*veIBi$!-&b&Z@f!%0K18>V6M*vl z(-H=|-+-HX&n2YPSPJWg>!Y4!TKFz4N!||7K1dgITfmG8*%M^Z9ly2Dqi1ZO0wFaX z!8oCLRo+bPY>@HTr|fBlb8Y%gA&7{6G`lnZorOoPm)KkrJLK1#;pSR50VYE}L)t4v z^GDH(;#L_-J#Wmz=r50eI@GrTY0He}e^kS`75kpI0BwHN4BSZ6jfeCN-V{(x+sh{V z-q|FxI2Hg^l0yk8lNXYPxOuAxC;n+9{9W5~y$p3ow;cspFzaH>@h)>=6D;f)U^{y% zGK`P8j-D;86r<&iLp+TfXOwn-xXhU8=9>a(Z4^Zy#G0@1@~PpliP8>Hz~Q@5&>2-b ztjYUOA#WQr2D>MOLNTgW;KfMpo0fdjazqN?|Ak9}N)2|Y*xIz_=|jL49_P~=#{{?x zks75iNmuS0nfhBTM8i~yj6>D`?VorLfGXw>G5yqMgVIW;Q~?UUb$~Pu zm*}6ygkUMDIpyA1RDvOcHaNrzHweVP6BYj|oEIHR zb`hXh{kcpI7*6=>P*UlK_ngKXaRi4?9o>o4o@6Rrk6cQNyGbwBVo)GqgG&8HA$kM2 zT(v`wqEV%8lYD5)MoovVXbnin9d>Y7xk-tiH%Rl?;2SoNp|wP9iJP{VahG5i5!Ax1 zIK18;{QYOgL`K~qH#?qF_l-QdbRlwig9b|CKP{j{)B@tN7*N~j*EXg@mdl_)DG(C6 z&pr5<^hQmv-B4592ISC-G|3bXRW+Xt|M%V$ngmJityp1Q*t--7}vFl^LG0;TD_-_u2T+szke-{ zeBw+n-09bTm*casw&pFPIIEr)upy-IpRQuV|4UcVio603DO_?8+tVzcu)(92<3n>h zDC;rL$W@s0_U0RXSpgLo=0Ouqah6Dih;~2S==m|CnJ45uSciG0S(hHF>pmv_$3~B5 zGk{$SDeEvce*g7vp1K=6sitS8d@9_S`|#cd&*Puw`HTN(p8vl4MlYZyp8&N^tjqfn zv*P<3^upxIVbNbwzQ)+Zh8nw{lAzt-TR+tYu26wr&Hws0s_!c(S_@U4_-{l89o0o& zgo#>*$Azxctd#NJUnJ2Dk%E4L!GLKQj2yIRtoFs# z^UZHbfLyA2Fxr$GD#r)W+htEyB4T{M3@g*q+{_Z zJ#Eh?II8;Rg-k&Txw>n4CPS9qq3nAtY8%gy`IQ)77ZBRvDS?t16ne!ynE3A(HBd#z z#+NT!K=gaPw)YVPs_xNtF9H9=wWeogs3>iZJxi?TPvAsTvx~Je^T`tbBJlUK&jpaB zgBZDe&;hDupawo>h?L>Wf9((@zPAUe7?~SG(X?TGS2-*MgJR2%FUgl;)mbADlvX3a z(9-R9>yk4Vy7lI-!Jmc&P*J^k5i_e^moME;di>kx{)=v@kyaNZh-@K_plj{Ko{Q0| zL&HZW9_O>1OgL;-+p#$8Z4mn%tN=aTfindq~kk6^5%B&ik)?}Z`RH8wAphD?V{HQm-0 z(Z~v6y6{f_mcA+W7}3U-@Zdm3yjzStnFWgRT@xwO`bK?|qBTRMY;OEt1X{utka0<( zKHKM6oI4euvJ`O9*@K7&$eQjr-W=BwRkZMFNQMP9#_>)F%k|;i{ev-B2IWe3m#yj908pdZX6-A zaD~}d(A+4QmZgF#5!}Z^7bO;PC=K`cmfw?AqVl{-&vP`!{x=I-T+F7E$_~dnWJ>txg+K+H`Pdv)e|9w44Ai4}7kKHv2 z8z7h0|CS=5r1}A2aQeOkiQuss?Gyp%(&KgVd!4J<$FKDf(qo0;h7QGPiag1&&%d}n zW9)l$%=TPH9oqWt9U0dUk<%t)Pm``H*A<%k<4GN1!}ES z>#l+jGG%x4tm@3bL6E@NU8>Y2 zSU%-Z$2lBFa&Duhaqw0w1OYU}yR{s~e{Zb-8Ws(i>9?l^kfjNI3quLpE8Q2pjiB~= z=~-_<6aPYd>-@>ppHS5B6Y=Wb)<3iYYfLQy`Yp0*_S29ui!l>Umm`NKWBxlb{gFwE zvcR|D;hZ3zSs7ZT%yp2 z-+va@Wi$vg>|^#`y}h>8`n#FsadA>?zw12_Z9joZo_Id+Jm-}UxQ;(Yn?_ZeafQg$` z4S?NZY#voxYMLI60o`+VRXg;)VD0+lN%o;o-xD00+&E-pw|3g3UHYLDH_?L=i^(d| z_*?j)+xy(&>)5gS7LEbf8hC_<0x8^vS%K-ndST9<&xYBw#uY!Qjy%04o-75I7Yk;Ow7xaD=a|DW_ zzi0a3lwE7F3D9lq&f?KuDTA`^$olX;zt34F>^DjuzyL|q@9pLz*o+k;EWoFj$PI^Uw3A;`wwFCu*ovbulC%XM$DEs#jy{5JBqvVJN+G|ITGCJ%W{xri-yT7O6+ZOh z4)^NMOOVe9RU{AN30X|?;VA=I?^neGB?Qc;Z9jAfxGN6Fy%dPg64sYt7+PO%kQvB| zuv{hU-=E%nW@Kd?aw*?+kBTaCF;I)-$|Y)Bk?I>?2wls%qMX~5+2=Wv&C>H8xxM{; zgGnT!e5xj-7IIw`aPAMA-pf~Q_Am6DKG5vRoRc%IL)N^i)$}_|^=El39016i0_?Rs z%MB8ApZ@`e!hK$XVfh#9Lb@#?=ar?lgLIABT*=A)=M37~spD(pWft)-caK$j|ZQRoJgi+%pHnzY&s%U1t-KN9%s8xQeWmXKh^7d{M zX1|%DWyFn?_^vQmSvWxXowIk6H2GR3pkfd7zru6}jox5qpvsbeeXih|U7o4v&ht?_ zjw4`}L_vp*3^Y+BJF@{@agN&99v;F>Ar=dXV3AxuyRoy=+%m(ogi!?+J6Kw_f=MtB zxB1Wf0Ol-mQB9d#_lKvI!HtIX5Xx`hcmJ`8xU?=_nE)H@hS6Du8 zJ5m<&-NCiPQd7!A_)_W%y0)3~v?Qd$y{|!Y(wc&eY1Gtw!k)8#c8sFmf@F{3w~wzqdn_Rw_{?|xc-W4UfwKI-Oh++~)DnZaUk3{;RbS&|03~)#mlnc!~ zPfiO3?GOi()-sdvo@~8b%td3q(V6M4FsE439EJbLYm(cEBT&RGecBsFddFA_Ceawo z{$StzrKe%--T`t?K@Sj0JBjp$Y0MfME8VVHOuidRT4HQ04){h%%J(*;J4N>=rgf7> z2?^5EPSY4>1iYi|I?#7^dE zw(gvm+itER<<`N4M6T`}i`VL19TTiMsoj@_ zA3AzJu^`nbI%J$0j_W9t)y;VtE%CzT*A~%Fe+|oBkEk37d8@P62AsNr7p~65E)8d;+U(6mCk+Jvf-&jtQxRUv*eC&Ce1VY)ynzPt6&k<_!`d6Gy1FWe zHUg51G2{hrC&>E{vYKjZnzZ5?OXc9A1X}L&FzZLf164128xyhW)(k@)iQWqem0YWy zZc@KHeGu*+`}Jq7XJ5VGF-Sk+o#FUm{ZVh>~ z0g#LalzSz}9_0N>yNNK-{Itp`Ai4W{ix(WW%%d((P~aB{^wDdlI3q?9If8c+G)T?}<6Iv2;U!bATtW_*x~Rb8I}*lVSpBRiN0X1|73Ad795 zy1lvtFTy|<;hRr>%D&rcMjdW^ID_vnx#{F5#r)jkh$zx(TLkEQO1T}Vn34QMM{+Rg zhSBR3YR~3I>Cu8uPI=7;a^KnEm6D!4x`JAB8Y?64=0_hJoKfWuJO+B6ftkn|&qvt8 zde$T;ZP(+l-Sx$=vD2SZ3^8~la^@Ruf+^=>&OgjR%oFZ{6iFI7ej|E~M(nMp-Y&ae z@{=wA6TGO}ds*r8ihf82Y1uESanMZLOiLe(wR(Mo%VC5QbdGYX#&y9wVL+FIScC`! zGxoi#nj!5u^P7aRJpOC~qU*q6!@gTK>E;&(!wW8F>Q!~;Jq0*lgAwKRG3#PFN+UXn zsjVJdRm_Wi6Jg%lFF45_*T-Ja`eD5H6vDPNA{+3Vc;~(Vlgti@%)T z%%}qATkO+Gk9)C6-^VzMOavh~bFn`+=NnP@5ma7=(LV{uxH>?WV5&K>STr&%HJDS_ zbXo~rfr5C#(^`N)Vn%rk^;4G>o*K#zHeZBwi@RXV6C^Xe!lpZTf$!G0aC`66jy!Q5 z*ohC_(5QFS^&drsEl}QWKow<=xIbCknbZPg%Oz#=UYLowX^X316gBMfjBL+L4a z+SDf(C6v)#veVsYRBPqP#C(^2`-UZo!V2}H`=r4ba0s<=zUn#MedJkpkZ1C=frJ_K z2v|rBo6>Lj@#T!HK8!Z^XTuaOyB_VC%h8`q?x5h9-{O8WzrXX8gq@5(pf-#joVjI5 z4bQ$}!DpdqrO(6{cFcP{F{6Se$kBx{Ig*Z}7{X-r^~ELVX^Jzya&sMr4oOSrOSLv< z_f14Nj<&lHQ*iFPb-Q@H#ql=x%QB>e($?Pf(X#1UfO%poh%yH|Ww&Y&pIct0Y<~4^ zwYXX;LE@6TeFZe4ODm~Cr9(K$!wEZ4P=vU`{WA~+#;GE$8XtKW_RrG# z88tOqZh}f#!j>+4Z$obv?{C~Qt*d1AmhV%>uGr|xySJBZ)giro8!KJ$N5yAvle}cg zWK-f`Iy*SO&v1&>W^KC}(3D;FI>=d~@lc4O7Rue0M-_g|P2Y`Z@W@j1H~aG8aVagJ zzjq^Dcvq(y#iG+pc5#mMk)&mX&^HL)cbuSy12cfZ(Sj{ z{dj9BwtDuJe5mCat^xk|%25I-ZVTl3Q?1yim(0XRR2)&mJcO(xy0h_C*NMr1HNqz0 zZ<_^=_>;@mj*>I(2N})QtZy4=3_$2PNrq4tK!|QtcBtT*n*aMw$w6Y0G;UBxCzW%J zC6R)2_xB6Z8)I<#W2^AfM$PZ3ePZmYkpw}y$%9*@LUS*e`jSDp6wxQdgXL=dhHNv? z*rN6^^9Xv~%Dhsd#zDE4x7iGw18%K;ZPATTem7K`?HvHSi;1EFx}T(4|DPsokYXVu z`~n%{TPtxrW6tu$dZst&7lA?P&}(XR>hsCd6iZDaH3!|QDMR3R>sFpFfP7U=>yk}H@F$gRjTky$73(I zso%ujkZS+Us)Qzucw?Q&ru~wxG0h2+3bF5}tVx4Fb}a%T<{(_R4P>*i}fzjZ;Na#SOWGzunZLn^TF=y zlNux>6d)wp@bqf-I4BT)aA+NB&nGW(3riLZOPB3)dqKEDwWV>M7nS`Uj!J{d#_!t1 z+rd~K*;7^ynB?DiOa9Y8=PX;Ry(xOr;c1OJVePU)_d5LKJFm!_1z@o*a5jUKWTpVp zgRVRI+Lmsi>u$z}oPF3kRs7k+&4Ofwpbh36e1lQRRAbtg}6 z(c!ur`_7*;w9F&f7ZaJUh5ygxk~04p{CxuN^ics&ulKb+6NXR7MY&5R% zxCuAVZeC`da2BQeOh~tm_&o>ohJp5yjx6% z1%TgXVC|o56t5+hmr%LN11Eaj|F4ZIOpTPgR!(@n_mCsM|yuJ$j*Vdiln0#yQf0 z$7uCxTsG>)U9%cH#sFqW0nOv!F z3YK0zYFKQklZK^y*+v~|tQo+*PRvXQj;48NdfH7F68S?K-ZEq^>~i!y8BYd{H`9Pz zX_+7@9(KMDB8`3TU2OO9>wO`-Zl|L>Q_T8UHdlV?K6vC=)tvlAFw}rDRvacWzT@gM zC0lL7roT%}Ug*|jgdr|A`YXpv1m=wNX?~zBquMr6>M$(Zn>2~+-n)T&9$R?~lO&pVx-2T^rj!4cs$7(I(h($xIk0(Iu9eYGQLx z6@&c&x}<@pbrOSxz51I8#?l{WR(u)gKIV7v+a%_11XRazHRe87?&vo`-zwSYj zr)UQnK~aXC(R%W_#NE|mcww$|KEG50nv_GaeT^L1L{Q;M)!IL_hc!*_oaOkbQtQhs zQZ1EUYe5UCp@s3{^>aHr8~Wux1vu>z(+SyvSx{`Z*~Jdla~q+r%MPbzOYLN)q@`(GcA2%(kLHRZBH6e}e0nypMal$1inT*$A}mDj2A@Kv zn-8tati}rOWae2d^SMjbZ>Lt+aZ0Rv#3vzivF^m}QA;1^VtWP=>u8qI$>6hC2JI1@ zU7D?O6Vbg%7ti~r>gJeSb$q)L*3t8QLzZU_az8I@;X9)w7@{BsFOns!hxLTJQx|B7 zJ#XdkNGl|c0Oe#*(>gof;uu#*Dki6v+b${d@FG))!2>scHc39?3YvrTts;kR%rOkz zU#B1!@ak@=Wg14a^v8Va`R6CEKVVvTn=}g9<+rHNPiO}i`j1afE-q|KVd0T1fj`TM zZ+qf1?Oq2SK|&#vBi{?xX;OC$fmg}kUoDZJR^R@bh zyB0=nTQ44AZ@4$>^6I7v&MHPLo0*N?Bx&WMk?oHwNM{(*yrrKnUb1DSNGzJslNC4e zG{=&ZL^Ok*kUr4{O7_KZHK(O?AL?6|WtQ?R80x+PYkbtl+h0;*FC63}kLKOg(M3!J zMy3HLOM&gW&4Vp*4AiugC#El6DCq+1^3E`e&km#HDSu_v8rcnIQq3R7(58X24F!4G zMz|==obeAaW8Su|0YGi-qP~Ghe)L13MJP{nvppCn^%RhLaA#J*AFE@vS>bAw?Zw;; z{Xub)oTM zF{2Lr065gEzSY0;8u<3~8@|BRe-!ZO#hdq$G|EjaN(JVTs5u4@{L<$$OwV2^dfVpa zD5dj`I~S;Yu||c$DF(s6-rfxS$mR2-velg3fUTJ**fODa5d1)|ZR$!kYY#om;c6YK zr&d)y*W7jRS#9V{QhGP9& zefD1P5ou5q^;YS_F|t2!*y!ROg{H|;!3Yc1Ht~b@Dx(vU69pPp1yUd+E=u}_cHD)g zzh4Fc@lA*>r=*_rz#=D;@17yN1b$R)2LiLR%%uRgfP+b z8x|Q3@cJInp8dd9I+@T^T%g8HAl_07e+vrW@|0Fq-EGd@Hx_aG{e;~y>vO;fQMx5orijU|+{wIzngjX4F>`d)>k8|hC61+*T_Fn~ z{CQj{EV`u?ZIiW^MYUQIDS^xtg^Pi@)fUnCJdG$AP4nNMiTc)S@3+}IgnUNyKDduA z2Zvagv@e~;wqmb@`F54(YDp+oRF1MN>=|T&@8ylIi{f367llL((0?@C73h+UWIoLd zFIy=%q0M^5Lf(0^+1~dMwr;xqJdDno?da^u#Ky~tgoPryvbLc3Oki;IW&3HHmPv!( zVO#N)JQ*L(Dl=g6t@HiQ7?HMe52J8F=_(ON-!h+Xab(wdq1OOk(kvHfD^}`{v(6xj z$cS_Qs5{8$X4VthLbq0uC;TE%`Yr1j4+pW1Ca|-66A(aVfvx6BNWLE-`IMbRj2$mw z^_Yc5-gW-PP$}%ZRMZfICz{2uW{L8G++}S|*}BJ;)i2k#*}1gX7gDbkj3|@%kzco7SnmHbN2OJI%nrX(CHkD6SaRTWpU7$t?lw&c+%J? z18&u%Yg6uFwPcIPs9|@~#)snzby}Xsz3F`PpRd6$?zF_l6^dz zD46Tj0ecB|v0o?>cJn`@cHVIm##jw{QJ3b;Qz9$SSL^RoQikDd5SoT zFut*qX8>*#-**QQlkaMneG!GerP7mgy~R2G*9GCbn%rqsEYKD>Uaymn%rGW+@T;jz z9kiY+(~pGqr#L9VW0=*GdS;ZbVEK}X6QYPd&;IFz$Vh}Pe4`o6^iTwbShS-fIz%pJ zG_;OeiLyJGr-gv7O=~uqKhCvxvOX--96BKqIeyXgU*g9{pj%oznifr@)V_(e>T)J= z7k(46o+ssZGf5VSlx&`mrI4{kpArhhMq0iAE9jE$Q=h1Xowvx-H(`8k z&`~gZ{%DRX95;DLPW6_-DAdZ}pgHUntVj2A{7G!1`Cu9GVf;7OENf|sHMYC{~c2>4ChBlt`K$d;$GJN{b6L-XC+Cv zK37=G-;eJ~lit%cOJ_H@kp^avON^zV&19q{j&<$6%jbM;(nNS6O;Q5(Y`7IUk4{Mg zJE9hwVT8%=m~e`kOjv0P!p1Dy;E5CQSLKBCOL8GE^Ood)&Id_iMkUk4Y=1d!UT!(t zR`j?E35)3Ef`}(fY;_>-U=N!iEU=nkmVsoke8bdd=VKxzS0~W}g-5c98c;gqpdV_a z%08Al!`{OK(RYPrRDI^JvZ^`*pofT+%jc@+Gh6zcFTU^$GR8arS45fYEF@^QoLJJg zA7GMxpch!kt7&k#?7C^WCloBce$xp8MOOVd+3O0*&;~>h6L5eOFkg+Xw)#TZT!b0y z|J4#LR5OioQGolF)fIE$03n|#Aa2e`3AkRc$KZs|o)_j+Q5L!m5Zx>-?il5t&J3BW ze>4J4tho(bK>?(8gLRCsCEQ;<863iN(Jr1?b|KMAE&lKsoEn)H4{3={NKCVXnG>Wp z-&>=Y?2JC4W}b(Bv0Wm|p-b~b!Bv6t^p!egy&iiJ)}m))P=e@sCtxT{Bw>UO9dB76TKUZiQBQ<-D8Sl+Va*{0a{DP4J~k0%YJd@cV+o2dpgOxiwjG|#3tJp3dq_YRQIjQnq6SfDCKQCD-u;zL{;W)DR&UikFs z9-E4uQpWJBqL}c^b?n1epSs2JbY5z<*08W)qlp@jG>}xoQyzv_zv9S)gs$u@>a+1rZ#Q_*DePEG!JWm(nhQ|`?$ zJY))@*4ZQDz3%YpTH`^pP)7H$R7_K(2MF1s>A?|Jf64-kCQETv@Hu`j#`mOfKQCMCg z`^de;4~wFH`X4z7DGJY{s$_bBT{|t8Xo)l=Wsyn1;i;zis6flOLi z*0*#A6V8)4q?vE70(c=EqIE;2R_g3_dZoostEff)=mS|fDSe)?k}b>Q`*1S4{;Bu% zne$v)N_=KN=e}8ukkeLO~@EZh;q z6xK6hcZ_ghpkwWsBp1dX4B`d!BUM>YM;t@>!Jm(k#mZ`@`ilx!SbFt!CiI1}u#jTa z<0J2(2kJC-z7-;+SD*H!p9|kxVO9FG_0dmS4y}1;JUwHzIT2+;dKU}wrpY9flUj^y zJ+!<`R~%_HeEX#nB%YK;I2q;kJlVPvZ=xPiXSCT$V*Ma7+W0onE2tI!SZOd$cMz6W zb{Uts`YV&DuzA-+Rm^ zI>xM#2EzqSq`@x>u)->3VUu~~WnrTsTQV)b{_gM*1aH$*?_5_6Bd4h`udKmO8~khWR2#ckNP zg}B;0F9)4%vxc!emnrRXfkZ#7U)INS#DaV@qxH11LX}(be81hjY~hYdUW%QW zwqdZAdCn6WhH8)CN%lBGs7FlPH2qzO z`GFX9lO4|@``x8JmpG>S%ppXon_BMj05{Qr39>P-wfVxx^ti9*xT2yS$>ZFw5j4AdTP(@fqXc&WNrM`wQ76J}a71=5fJ2IX z_A!gKV(g{E!^7Q7+jC5-X}9(|2wzN|2314xW@BNRR#aN@{TNBdtqu<=Eocc*`2|h7 z_7&Rb(la~4wr-wzSU)R|;dj!1?p0z{!E=T@;}rU{=52+~ZMuw`3g7-rnUlMDb#}RW zuFhIDjHTLtC_na`ov-(-f2wOi-&>%cUNwCqbiHL4SfUn>lBGY^=&MqYDS=PX!kQpT z=Ql1Zm`rMdo#NRlYBh%@xBWw6gD~8m^A%Qw^0Em8Wphkp zUA~+p^Rd;pPaPH{3IFMoBZ=}~g8uI@Hl4)hGCJ2Iaak7>S5lGH5uX{8UR2qf!4{a3pC$cVXm$C5+&VJ?);6<4qWg*k3pz6TR_vC0i%bW0~!m;;7 zH+pC3Id$nRfiB_(SN%=>>6z|%r7tasHVtBARwX{~&;nXqm-O!DSC}h`Dd!#{`Q4~8 z_k>JOZ28?^7vpb`EWpwNK^lxT$`tzx4a0tZb;p(KEVwgX^Ljp9Y4$A^;9Gp4 z6Tlp2DVx2Z$ITsKqld=+dF? zRssCn)`%BlL=9-a+K&@H;Fy=kLuSV0KL zHY_HEFhhRbr*Zp4_p7V7=UClgbXFjCxeGX?bM!jcb;`dV@24mzMtVjB{Z}sus6M;) zGdifDZ=L+9KAO`sU6VIPd@-@JM=6WQDO=M@zlUJ2 z77J*#D&lgOI1OZ#Zjp&zrY>_BP5V57w$MIr8$4GUrVu@D4Qpy}Hx8fq9C2;<0``p#gWjc#e99# zYZ@Iu)$^kzQIed@9O%w1hk0Loo=Ao)6;6)06M^b3R1gd}z2}5&f-PJeee$X29UA1! ze+xo3%ley0jCzjYY;UVbrcImiKUY}ZR6$0`p?}@SZ?mxKJ`1%*0xJqxW=qBm`27xqY9s>I0jp=$G10-vDst zTaa&PigQr6=<|oaeVS?Mb1UZZx_YFVCS|K=Lp7(_^JhA7`Xscg-kXl>T!`_BRHcg}H1D~JmjVd=bg(J{VFUg*Nx zhFG@ODWgE2c|TvQNjA#f%y>|D+8JSY99C!bC5!0emDzCz1u|{_4U5)~$ll!%^Dnxz zFiiO~_Amj8!9mO>h&P0G8dBXFl%{OMQvG-b;+eyq7{_ksg6N>yJ=uwMXKO+MXwhvp z<^);6*LD7}AsuKi10Yemb(RgbYHS3Hn8CDq>)89^*^ty3&#`w8+>$hGp5C??K|5lz z>)yh*gJW_VMGeVOE&R_JmLc%v;0RGq5LU$4dEVe9Cl=v}EX~krGq^MzVwQCKK&w2e zktEI15|upS@Ju6dR{G)oAubudnUu$epi6SabcUo_c4P_ zW|ykTLPWAYCse{L?JZ{1lMbndn_nh>+moNWr$j`VbRXUlN3#mq3;*mxNJ8gI7k11- zUM0%_r1}aBC~F{hyAAuSckE|D2iP;sz}V_m<~GNOa+`B@*o2C_eRkAaaxl_!o zW=&7`#otK%Or&1Qbv{jByns2fAc|_D$(f~7PYBxqD`xl{6_mtz3 z|FNm~w!%>?w=m(|gz(_{Tbf(hp|%5VNWI@aI|)%>|bmlZ=iyDg#20{?DIB6mMk}V%3q+eeATRy$c_}ju-#*^I~)gx?b)C zkKnw(8_Aca5^$v#98z8Wa5v7L;$sp7hITTXinQgo3{sqpCL~nT3!W090lY7V{{0L! z>6_1=1l`yb_>PK*sC1YTnL3mmQQt(F>^X4Z=ZpfW&>;L^BDTOUqPWhj^y5)W)6%oED@p*F6M#yvC!+RLQ1e{h+`*Ob&*}Tmm)6!I;WkSTY5YloJ0wtb5OLw} z@U#o?1yo3j)<6u^9}Zi?SKN2-``qC6+)e1UFd#xv1hFRle;)!E7Onz8P`Nu?CT`~6 zFQ5bHC$|$Nu(KUNS20B5=2u!VsUVQI`C$U$;ME%M!786&wLK7^$$@o!HBu|=a*oLj zQ#wMI^I~Xyy`mRIceP(NOUGs5%|I_B#53IL$h%Ur!^=p&(E1Te$6*(#vIeeLQ{PgS zodu$QxSnvZ$T%(LGI^g5Pm3sh=fL23whBoITA*4zFrNdo-&MUrc@mE`#*hF?IwOZ$ zEV?h@sy~~(1FhR^Tv59TaRfkrdPhS|1Vl5W_79yE`8U!3=ZNYFA=}0oIfwJD(y9i! zg1|T8P^^VN+YE4~hVL=YdlX`z02%(kIls|_s<@KBTwq2)QCG61>b2Xvhxc_Z_~5}W z1w1eKr9e>4_-}gs&$)Z!>~Q!@PW1q-r)qkw-%)#CahOh^?d^t_G+;_q{Lv7UnbwjS z^w3do8_e@svy;r=D}gz2Mv}qTSE6{w??6llfV*GHK=x(%dvu zC7DCB5i^TN&;myhy&;=~;CR{M1dZBcV1c+9r4-rqTd(n69`2 z#_`S!`?_<@f~D*(Yx|EvBV!+IUYJ7-$)6y|KA1a>N~n8#=RX$?0UdqyX4n8coc++d z+dH_k*fjAFa>5ve>mn7)lW?7;MsmT`!5$`JDjl{zyd@us><8`0E1Uo>2n*Bo=2`yP z=_+|b2gDHI(2N6w43hQDU1a+PUw0>f84jC>R_R;XEkJOLl!TVb-(7bCHuL{H1$B1eY zi?H4iStMk=B@-vm`)TIH0H~J!SljNrx(H>|ry`s=U_5dg2nifw&R^8%ceIJ;g1+m@ z%5>-OzPscC6|E5;(_4v@lB9iV&3y|#MOehNEz)R;qoz9OP_MxI2=%>@!$6!-JC!2W z{*Knx{lH(776S~P!}O=Dp$N(OJ*=b9DS2Zafdx(F73jCRc}EqnUWYZES{qv^DX!|N z=2RbkW^z%=?gs8#>j!B&?_9**{{Yx???`Ix_lGa!G-VeLFv6@#G~uSwf;;!bKAwxq zU;asfh^Br`94dm%M#)|;Mz8*x)}Y>CXZUTdfO(bzpDS#`r|4frTehU9jjFjSHQ1CQY#k{$v#-cQ zEl6PSLuHV^=>%h~OAaMG%?+j2ozDYIl-jCqykGezC3wzB(_)d`R)G>SXzpJ zFngt-*(TZ}5*EM|n*ptXD4kE$P(|AQFnC}io`4XHf-T6bL|XpV9?|2fU`kdoR8K3n zaP??Y;24?1n8D@abbM`s@a}k3yzC-nE4UUGFb^LP{o2PZtI{EY(AEjz;M;)fmi&mf=a0GYi9-l_kZHY5T(cc{v zlYn9m%jiqP;+A>2CF2jJF=N~@F~U<_*-xZ2;ABHvA=&YD=W=wRM>8jwE>g26P_BKC z{k16(_l5^uXEe6F3?eV)=R%L@?O{&UCL)@pr-^57o=PZXA2jPYcw$~G(|eKW?`ASw zUenKSlhD;53Wp%ChisB)g?VLjVfqb7%TM#F*wQbIk{L054sR$|OI45NXK`gdqz-L$ zBk}DM)4C=UyMlY9Gm+PRb_CD~~n5xQqv_yzB5ins^qa{FKSErWHnR=C&MD8LtW_ zsTN2vf))}7z9G?YLt8s1kdKSD6lCO_5@k?>Z*&a0D8t*SO=~XD&^wb9!75|dFj;6D z#&GAp^dDZ|55i5iLSJC_z*^GtbS9wH&@RI`VLqQ8hTl$ngNwCvRjm3RgU;EO6S?DdVCR5CgX7X2$kf`+ON$nFQeboHlk->5&Pt*(l+0f(-)S{r!uv{fCUhoDvSf*x@ zjea1C$!P4}k|5r}Gak>744K*0E45NTwl>#bhQ-rTo{Mn^W@0N1U`3gd8HPHuWE(#- z=Mfm#N8bpu`x8v@={4a^@h7hau<&wfB)l?9i@tIvKwJ6Nfy6^S&zNGYyf zTpd)aqL;*6sW|w|G2h;V-&HkGQ94JyCg!S!GbI!EgNoXHfSxZu&wfyP2lJ)(fB0S4 z;??C8K3X0v(2HL@tICpjWFcZW?EnFT-@?IKa3_dKHx$LS!>RNep)1+Bt}~at)PQwc z&BDg>lDA-}-m09p;`$B1u|_l%?^4l0?XQC;$fV?BTSDH$FC#u&|JKTiPSk|@goByN zUPVg_GMp*3hlAM&+F5G|lYFLfGXZr6wrHx(d$NwWY_UqXyqmuc{!)B+8(K=7uJA>b z3crLF^*LSD#E zy@rgSWYRO2iGnRoI5b2Xog=1s-A~^}!E1MKGNFy)pq)|5(a@J^`eIQQKVaI*b!G@J z36695oBK(2^u=ih9FTOIeYLg19J-f<>s}he@ez1yIxzO!kDF0B2{sA)RhLP>n09{f$CZIsl zE{jL%b;=sQ)!utXLJv@%Fyetx(->yu@ABf$fY|l)iD)fzTZpc za?*vI`0l1UzX^XB6cmI(l-2p`(2iXFtV~QL+9VfcBoxVBd7%!DpNGLSyq;SlTOCnf zM&TWZ@c9^p>|Wet%8rjV&;+^|{otw`G%T{+yUB9|q``FM0y=*x9s)A&=jiV(_z+s9 z?1u)tvcC^_C;uMsTAsODd*?E@`>;M;qL;dS;JU|;G=1S~-FfDGcqNYJ_y-w~wf2~C zf|TR1!xjq(L!UG|$hF&TsZUvd%A_S+q*|Co@Lg727#K1Kfy$LVo@H{V=5`G<5Z^r3 z(X&oJ{nq}-uZA5|nfyNom?ueuK-QD!{`)|8+FE=+AIC_9?mm?E@?RY>NkX%@$!eHl z_3AG1B|?w-Q2`p>A1*i8!3^-Se4laXblbGa@L5T>6injpv5Kk=ze;<2g$yOAUn_Ga zY^rJhZSnmR0WX~$e2P2Bi_PST4`iF_U9=(*L*~ZF@bVngb#so>&1lRwleVKQrta=) zr_BWZu!PHGg>Qs~jDuN+%V@Z0kD0D2K;*F{RhU-U3O|E(?*yx92;gC6*H371TkSl-uy&_kCuAiIWaZ=iF1TiOTz*$0;o zGTR=U4$$56!vYcwnD)dkx30Osd4!13}?ty$kvyJcq@xx=Y@wY6sJiN$1V9*td6 z3y{C&e9`c6lXD9G>Gin&YVl6$Ap(6{0Fjx^M$nhr=es#avXC0x@Ysb?DYl>cjzweZ zDe3var8Y4VA?Wg3|B$i+tnI3xYWoM7Orw8aY0WbyhT3| zK)UaLHeAhJn)r%8W1f9Tl*BG-7Enn8Fz>SA>p}mi#U-9m}q-RshBM{buaplB8%BAb9n7Y0$Gqy zCuc2BHI|gCN>{oJ zf8d?3K`q6Hmx%Xa-`2~I?r|~GEX@<8`uq8fSXo&6oYuIqvru*-uf-~{cRoSM>gQuo zj6YgKBb5)$9~NkfG)FX-0bSuXh-U){!(B(haCcn9vh~O&{tLz`tgkA{GAlamYeeYU zM$1uUGEU?+Iu~aR?#wZ&kYy1E8y%(M3w}slq8!fx&m*hhenDRoOr{T+KIEE{w942| zM^O$tVz#DpZ}=z=>Ao+$jkIxpAFz$Wsx`>88Xv*ykFK_)#ns}Ar4-@NjebBjqpa}t zL^B4JpAM85WS}4yM6owkuB|Q?im|Uu-_QUTbDB6}Nz!}$l}|Vei6ej2`d{TqMp2<( zk^ar=HaVAN7Db|xT|%Gtw`RWjYnKfD*>KvdnDj7V>9TwG2Es_lX?LOe&g>dez_W0^ z_|%YP(;I#u@O**v;~3|=kr(4^pmMkydFd8~yInYgQ2i?1mN%S(mSKVz4)ZWzpQ*q}ncNTJX$e{$)Cx5xAmu27Y$#Q&_r4;gE`Aj+;jwK0TuKQVfGwJ32 z70Bmb)CCf-TKn;GGxRG|qZ0`CSu43=E_J^F_L$Y$TL$-=~mz`8QS4>fiGWAyj zor>ygf`se)`D%L9!`qB}UJtrw<`jpAOr~6w^<*DPwyqbhI$D=LL=)Dkgd;!c2Ppp^u90wHtX^7-zrW0J1 zes;E5pc{pL_MzLf`eeJgqR}V|6S~mJ4550zoGLwwjBnq(fND+~$Y=tPFlI~4N~Q(S zuEE57#noKRt6=z!Nrv;v&2$5}FGs)E<-!3I5WohzC{&TphVJ*WK3Dy>B|6;+7~$J! zM7Bf3zt3gvB$Lu9!U0f_4+Sd$r;ch&Bs=)7xb@FecOIs?2A@P{wfv~xYsQ_GVPDyK zv1!GUjIG}Tnw%BM<096HvgA;&?d$OOys^wUCDGyf?3DsXr6N3J${Zgljb_;ESe?D{ zKAO7*l$f>Vx=`@le zCvth=57RVFfr1YeRc|NB+K5zAIWD=}D7C?w{9%fbeE8b+DK`>JqU=-~Ra{*8>hyy@ z4B@Q%fdv_W?oX|dzsn?JN8uN2jprX`d;SKeVP~N#-Z)JmqyM)(1hPZ&z_;wj>zlg!iAO9rC zhp&>qC+fLuW|ms1Xp{J-UrSj|?lvDg2zOB18)wZ&I9&d7Onf#QdG+#vy2lii**M$m zKg^QP@*&&1lc+;_hP1WH<;L{C(y;&W~@(evnjj$hY@fxqu?f~X211KTB<)xf^|}Z zf=CSk2+ra{S#DEK`yW3b+HRoYW(_PP27n2qPzfyY%R)3Hhaka9sN>YKkrd-=XO6Fk z2iU#c20G{&Xw2W93w{qmm+m11O8p9Sm(w0&50nBRpnUcv1b3Y>2-+lQW}$GEsPi1| z71rE6Tvzh9%ai9@H~lf=M^aZb2utHN0svor_4RwrKHrmK;PT;-Ke@V3o)4VmJpil2 zN?Y@-5bd^l^!5(WqHg#6i-TJ*CA;yZO|izh&;f#_QJSp!tBK zo^Gw$Jz=-?l+?o~c*r$-5APdy|JE#e zec*1!>fn#9!6H*b&7l#**Z%ULz&5^g93VRs2uU@BfCpc}hkh3T2wlFI`jmsTem0lq zoFFk(`l#P>DyzBY=|Z%tRs;F_4ZowWwaP%~VQ!N9r3e+qIQ?p0pRgo91KIa0KS_>J zQ~A4fcadr)I{7@+%l`d1DLis`Xg%`B`o3NPmAfW1;cK(qhbq1$E>Qej4*inReGruj z4XG8dli~=Kw!_9lkBiBp!@;anFlIUo==PL4u|!j_Y1%We7~#$yL?9&7juNi6t^L$K zsb$Ttk3V`JUr+k+&5xAO!U9v#Xlx-d6--8r>3cLkPnrvOJ(lt#Jj6^F{Qqh1&BLKy z@(r} zx~ER3^ZR^$|NZ{?UDwxjoj*;N zvqJ;GlWzK!R3!JkZco0#`wY+xBVea=iE612(4#gHioXh>FrQT>Vn|DTm$m8!Xmw(_ z2L#w?!&_2*sU8!%(d-@Dbz1!boUv-nAG07-5og^q^?Uw~-oxCW2b63qe+2{LJ$xgr zNK30RGwJ9j>pK4>)ktdJ=||SY&vQ$D>r3#1QX*2iHsU+C45Z1vkaQHqxjqORic zZud^_ygzr>Hve2Ys+4B{XwsUNXS617F!H|g(UG6rG2j7gtGJ^st`vX}cYI}CM#|WR zzPKJZK1Q4NwcNe)@E$>Z3T$M^hFdCrJZjGkd%Vz=x{MM(}clcTsST=IW9ub-( zdLgEed`ipQ9eGm;Qr;wC#dhS6Z8VJ@%F>^~K|ljt12{D2tZK`H0Q{kho9zse*|~mB zO;vb_PAm%h3Bm8{b6NTgw?e`xn;Mdn#6qXW}|b_aPd{w`DwNQpS2VlTsZW3Vn?NHb}!cvHeG@ z!m6Ifq;k_G6WM9+QQ4a?3H_+ELVK3@Vw7w3>f=tnl{z(l#4#J3NM9s^T&z^S2pM5} zyyfoO;(JrYFLa`~)1p)IJK&rFZNR9&u~ymN+}Ed@kEn$8Cn3m6VOf6sZH%sOtqF9MW7Rs_h7@itxPF68wi0yoqyZ$R z_XrX!$g-_iUs5r!?Oh+nI~2d0DtSa34#7)+Uw?^Mk@Yzi zpVTjl>eruorYu~$w$}-brvHiv;92^M2fY1^EzdM&Hm8WQ;;98%;Nnx=!*$}oL!f!XT6-pm>`&e={>ytqgsGdb!Q#RlKE?MS? zxeJ5SBc(pndBzv<@>VV?X3HRt8=C>i`1dS8pq~k-3pWt2{bu+_G@akR7Whq z3D~jtz;CtFPi}fP*@(+b@g?hjPP0hB)YQ~^2wz++1J9}r{p5~#>c96>j| zjwZqL&F+`eZWS$O??$!?Y&^X-S=Kz|y*mdve5d zMrAwuK=Y|rge;}aVH#@d$h(T0CLt7%sKXUaf*>=7UsP980li=CpHnitYMI2|=^*t51b-^uCQ+fU>El|No^8#w=e~`c(Fb+T4wqk`fnnRU{w~nhF6Ds8@Mrs)(PaB zLfr=9Zja=Bx(_-hUT{z9e`BC?wEN1jPEmUdpR#fJjFNHll`!PF^JS}~)MHnn7bOa| z65I_6Yr_hbo=2ntHV*j=ckg+#)#uaM`+i^zTcuFBCdG))aU)yAP*oV_g+XK zZ@V|aoidUEpA)Cim3$TmIm`a{2Ou0tnPcT7C9xY!Dqe2(9{4NvN#i7fS%TrIbdQ3j z%IUqmPqmISVOGOf5PUzQS4T3IK(AgF1%@i17vSk<&lefvoFD zwvaPZ6oB%rmiT967UT}2@M_*iFpWyte(SzH3L2G>%cr&l9HejKg*|vSdGn5BErsXv zw2>2hDGAOFst*zMVX^5BsDrh3MR{v}5ok-AIMOHK6+A&TZ%8{xKJ^~%nkTTlBCClu z!Q<8mE*o}(95yDm>$&`MC!eReKSJbPgYGP$8-`h_GSB<(nFV7XxC^`2wB`^eC_ihg z)~u$%+6#2Cm(A3qQf3`L3o8$hEo(yVp~%BtLG9h*<<^GX2+TXVKknnM^83NO#z{HW zX^}4ykLRX4W%|E@!7do_^GF0DZlSNeO3o2$o4bgCF&E^2=)C@zu54VUismWh9z@mY zk;*8e<3Y4BCXD07Pk!sGv3DCq%$)my`*->au8*h_BqTEt?#p1^eWtUsXmznid{2B_ zU%ygn;N=K_E|GGSr&pyk0L>O*VlTLjBOlFOg zjxav*xVwU4wvfGg-$`>pP2{9Y{P_Mf*bS?#R0Td~=LaC0oU47;tfVQy(fZClQPnX4 zr0?4aX6InN_08Ot>RMC3@)&SXX7!;Cwm4kfLZb_9I1G8!EQ;KUW+OEvcqcuS_PMu{ zm$jAoD8W(Rm{FRw;|^m3=CKI>R{#OS%N%fYH49kw0qygt4{2`4r=JvmURaLq3aDC} zPU1=IDU8y9=wE^-PxPZQ<^G;6Nr|;cg3d;1A2ow)bTa^Kt%z8E8nuNM$tl9>Puj{a zH39_S8>HtM-y-uOtHtJC7p(9DhK|=8N%`)RxE`s5v4WL$Q*uj8w{J41RPv;VpSZU5i+ZdvM&ZPA$INZHTOr2iTm654Fa-j^C3mtL+E#fx}+b zwh_m^2TcmYsjy&g($619`V1yHO>jrm!g;cNsM}Eci3GmFWKj(!Cp67diAY6rwUC4L z|6NgyogAgZU~tF42ZEjyRZd#HH13+Q?3**M@)$XzczmokWyAZeE(}^}IPje=;&p_q za9nUiyh`K0smd%(VAU2}>K^t0(JR|C9c}E?qpY4>+b3RJB={&B0F7R!g8kka`}G$3 z26(i__uc=fsaJot*BcPU560Wu5Ve*O*)#iSrf`oS>#x{78wM}alJ~q@XtaVs25P$K zG6?s;;QAi&qxL&SY)^H^xtU0*6K@ylZDE5F%#jJQ91LoTi?aI|ziiR|U4md{9K^^) z)qSH|M|HMIHPEAgdCLU~R%v2fwZ{>{hH9hh;KG7*%#H_V_ud6KDN7G^AJUe?SF&qi zAk=c@Y@B*gk%RmT0uw+%WgXo%#^FpGaA7RFW+^ts=sH+EP4_tKn5~mLZ=%R}(CYO{ z70-xwDGP1*m7@O<&>VYnS5Un*dFtws!cbi@`7$hxhU&>qtO84RR z5n72k(Bqs`FlM0vC18lQ<^jdm!wd{!lnpPKWaITcwnnNqwZ-}xiZZ#j@H=LSFNa0fJhawxDY z+8a$M?REdn_*tBO01-$e%_(bqJ~=az?s60~hAu6(v>^h}N8e<}Ok#x*VG)9(y~}V8 z^OY{wh#pMu;&cNx_@%|}Hu?Fa%^!UOnuo*KGv-9zHp3>oe3_-7&og7vzy_)W9Oa|X z-e+z)AtE(9xYK_V*^`# z$`MCM;qTz4`Q&ppv@9kCvwM>z;=?D5)0P(=ErKBQlSBIQH2JFlzai0wC%fG!sK_`=;64Z&>uvC5(vlE=z ze19XC?1=5p-8kw$BJ=48VOV!e$Ytu(nSP-ACTv)TvJuA`>1q1bPrk5Y+NhU+V=R%E zdZf&rKV@fmTY$as1&T=EIOF}>Dq$J!?~Y^ZKjvc99#xzLtP8zYXTcVXnsQH;?}Bj8 z82}>~0_vpDVFFmRtjEC9TBHiIf`b5GLi2QK-WQ*3J~P|wvpi~qFDpP4?|Rk8^%wmz z&k9uy#zH#KkEX|8+fz@^I=}L4B7Pse#uRW#XX-B@>n7YW2GZ-?S!erIkBv^x)H(}G z7Bl{=Pg74Bf&7OV*OiaKKGH7PfJEn>2h7mc}=PTD&%Sq0f>WmMAy<`C zSfSju7F2U_VtCY%3!9y_YK%uKABo_Yg#5TJF1EFqQo1|4eSg)E)aS1mp>q?4m=L_g zFQw_w&^qCg=6un;9xHT4CC_sP$=3%fur%@{H$^A=Y;@Ak@=gdg*#4jD8NievHeGwW z7}64!Sf0*jFBHlyu40_s|4K9;tK0VE@Ffk7_sx9t0r_Zm7<|d&;AaF|_Q}+%*KjQ@ z8;#&pXy&^?N>!kN@XH-0h#1jkA|CPLRjN}HRFBqPo#eHDz%gLm$Y%+}%J<(=(rt=( z0RRWc+1gDaM*62(TTWuIDC-z(O1I7cvMrO&smC(yiz01A`NiypCvn}>s3hViPH`vj z^qz{4s~Dx{InS3SME8X)wdQ+Nq=BOLV$l{g?|0kbN!I*dK1F0@f}I=EYNanO4|k}3 zsztvT0mb5UG{-GR5J$EJ0QcUs-leNk6nUY-($$HwO=RzO$0@PsuK*3pAvW4((GbBE z@UYrtTg+d%SHBv!D({n|r$hS=J*vCjMDY7Zo0PW zTpy+dDEWw?k`?mpTKvU@I+@&b3?hU8bRz=fV}cebU}eGg(zL8trT=B_Ut2wy$vj6i z5_Ag7ok0a^KWlgzwCbjOD3E&CR4x2xXDFHNKG(oQaFd(?4?+R)7wK~FJkqn@L;ihM zfX2kGn^Y_!2W2Nqy2cN);6B9wDLej)&Xaz?jvkR+gZkL}d23tD--W&-pe11mU>edi z2h7zoRv~`jW08=J>hzpZx$^klZ0gb#Fq0oV`mI*w?1}3q2KS(cU0&IkFd74hM$L)p zc+1Z^JCE}z7K%AP;Dx1CKf9RBUIrC0{bTdVP9YP&Ksk}hIVXyfMKPP5>gr7wU$go2 zLxS?LJj#9N1!uaDz^KH;O3%uPziy{7VvbR_x70#I`!Bt4#B^gZLh^4Xf1O9CV~nahR;m1$BY) ztqFsw<^*Wdeq2+B!Npy(<`Cl3Fl3jw3;;%N zQ!^iuJv#aQj?!&Kxj<7-Lbx9^etV=e%}QID6G+aQ zEK8E<+)C|1t*{v3*=T2aZ~Rl+8XU^)iy8dWUj3BA5&1>-y@lB-Xd>d$T3-4pSVv?Z zk8rVRq6yUfG3!3?hPJ1GmHhT--#p{v2@1mPwmwbAavi)=4DJz!pT^_%GD!3KE}Qoh zYypp;tB1X8Y*87~UO|1&8|Sy1q%NvTNj7%9hN5zhR1CU^SUHJ24REC>#M)CS175#+9BKhvVa}iP?RT?M#FKI$1pp1~q4FD(IKi6&Tk+Oq{ z9P?K@yP;9V3yA{MTm_Fkf%fb=Z_2POP7!M$nVC3oPt$vav9Wo8TodvMm5=Q!y!Aud z#ZY5t{ZlZbG%S9zF5eNCrB7F_!h3rW=q}%rEy`o7v6kJH;___?DdsRknQyjjZwEF! zC?7uZw2_iNp3E>Vdzk`PdV9Dx)m9SMzQ2Rtj7NEjrK(f`RF%-=yw5$>?E@%u2}um@ zsB`miCFQL{=~^r&Fm(|uPdXNXltIm-@W=p{sbYc9g{sFlmN`VuWEhD*UBxRV8G?FH z-Z3FLRuUidYzxM5Ogws7J_R2k1-hmyWB*HAMuLt9rqMT{4kV;gZ4#6lmdQ@5Icsav z>+-E7>8lXQY_g(v^0{YS8+bWs4fXJ5Qbc_OyFlJInK6`YNv_LB{NQ}EsG1OVE7cHbyOcZ~5)2S!~d>-E{hUg~l?Vc|dC>$b3-waQg6X-*ciVmIIyWp zS|AW9|K%SN8M3At%I=FQLdfozZFrvZV(yuve{CfX16ccM*bgn=FLdeG& zD?gq`{kIwlyPnRhRNr^(4+#rZ@1jlE5%vRy=P5)RRmRo3td2eT_BpGcTtwByt)xhm8)I*f0WYI2)j){=tkqZ9O3?08D9WzDao!5b19<2i9WYrJxT_HLM@A)+ccra|(!^V+Rx_PLr1G4kJ+<)Mo6`5OVRXP*W0yUm}GUdv_txstL92dpQ;^Xf;Bge+tz1!5- zwsqaTByMe|^QsC(Pm#Zybwl9nP@#lolND4AGZivi zdl%Rr2clC3U9Tm8{des9W#e#=Op!HRrq^D@m3X_QP;17@kH12V`49|D%@{u_7C;u( zZ2I$qV^{u1JRuh6iw>tsXnwwbb#l^Dt@$!<(Ve;EaoXYjAOpQuCjz{7sHx9G78Ib6#pk;` zH~_`?ck{LmGUs;P2-?2?bl0%p!^D)Wtjf|bo66zd>?h2Mye+IeC8Z`$M7-PamUNkU zHuX@j?&|H57?;z;oJboNqqe)LT_OGRXE62`dmy;BiWot_Q4F&;ObTo= zoxNjlD{B?TMX9|^Z-wL=++|B^otpf%Cue{HvZ>$7=dIG< zzD`ye!Hbqr(4i))hRE)hIPrdcnQwg$v&EQ<{wr$Dbp~#TFoXc(#{9E~)RJgfCdK>a z`WmmQ?5LB`zfhiozN$S0Vf1H5o@l{J>(Z&uN`4R|cmc$iDQ~eK2 zap?TYc2>sfX=jH-uYY|o&7|-vOLuz)Q@n#x7Z&VKYZdT{)XL)g%qqiq#WdszXf%9A1Ay(*bZ&-XKt7KUnRjQ#;>PpdZ;Z?zXXWXHA}9+B~ZWf%6EBiL6= zf(~~ushKty4%WF$pT>g&bo&F2gtbpg7fkcR8{Oo)Qg3FtIAC1Psoau0VvL+;E`{Sf z^&(T7m3*SBHlbwnu$KU#Y;cp~-$3Ddh*;1NG;|X_mT4R%vf|@puR4SbOT(g59*okB z`>-b<7a0v(=1b%$HH9Glg?SiWi|AyL0wmqB2y6NW8uoF5%9V!;rlo&vKHj;f(uL{% zN;_Sg`YF$}ks1!_FtT26X6!*-(hz^gUAY%;-w|Lp^+@{Uhfk*s=SQ=HTwGjL12<$% zMRab|l`$my2XgDZ#NS}1w+27J+zREnUkIiiKBO2fd&0*Fo8z(o1TldSZ=Gw9NLtPWygtZ(1A5Z}?}>QE!UL{>Etw}?T+(rAJUJZqAqi}g zKl;f0yVUe&=>RNv)~^0}5VhWHi-)A;t)oOOQ&|d9-Ew?zA_i;7zPX#?IB5b-UyBd( zlqLd7Mh_x^pT(U#z%7;dp*fb2H8gtfqcRxh;dh_?_uXNX-lrAE`eW2@%?dH>>74^M z;@73I_so~#XZ5b1&@a7OUwbkBgY4t_;)<|vVP$Aw zl2&GJZ1&!1)jS5ob(_L!t@-#3nE;cmV$Fi$pMO6%%Eih(>d(y$=kAPy1|AxC-Rv`V z!rdnIaw}yXC9upRtQ7IUU#19K$jl$GFf0{=00{q#r?tHTxNBhj-Rh9i%%sica{;}D^#4ur1g6jofErHPO%XX2HVRA+t=XAvP-EVGm z02oI=6nhoa-mJcQX7x{?O_cRFf;t?;rqaFS*27>=E;OzoJ$500M&DY<&Aj<*aGIsj zS0_CFJaz~xe+@!c9^MI{5Hp1|L-xGMvN7%wG57YGfC0yG6+<}%IVpN9Zu?0akpN8y zpxEWvuwyC}M674~VNQorToQW%O+!kiiiJH!gv~hDSejp3)--@mSMFsJ4C+wJ1RgMv zwBt!9hFc)_Gr2&D{sEz4jXVHn#$cWkoVT}f`pbYKAvAIH#jw!lmlN7q_oCgAq=Ra= zx@ObT^a@5`0xEaQSv?LBz4lJiA7b?M3;k4phvH;&e>s7JIk7mmX4G)9l3LP~)Tlq7 zmbgW9CiS>VFup$hK41@I)~FaR6DGttNGPygb(TuiMi7KgS!s!BBksM0z%twb$Oo-u z+A{JB#giUSeSi&N_peea?FhN*R=M(LOcl+Gn}or|AO5CCe~yQ%qVy^MO?--Doox{_ zb}(=gHya-0FqI%3J*;7?=S!W@O+q})*jvh7+jd)_9pL}MwCUOs)$*6 zFK-FkSWoEG(U5ZU@mf}m{tZ_t*fK_kQ}^k3(SZ2+?fm1{|H}M>L7 z`E>kUtKsQq+XQzy16zzzDydS^$1MdA`^|j$6fFI?v;7^_XE%*nG^V}CUjS#^ z7nVWaY3h~f^8wjlBIQxQItUE{rVF?O-$M}o=au4M2{f|Zrqw@UQZf}sz*0lPwBu-G zsK$iz@Wr4V_nrYlGgvdu`Y4MOLXKOjvls9cfyQ(4Aue&@Nv~@(K*M{)Rs?2-7We0s z@@r-8`uX^v+zGz4Gam-PVUc%?a+^B4n#_RI&iREIm()OY4I^%^krJl@p+nYS*h@mV z8rJt@dG4b+D%9butjHNx^1KbD6q`2QotLpArXCS<*DfOF;;C~jrvwa4ucb^Td`5^_ z6n9;u{YBqRcdJOL}4A3b-_fy+U ztUOr|!P=p8wsrspdInwFBt2lb?)>`N>fl0aSC`>@6go0rM>vC8aj@Z-=W5=Sh`!Bb z{hkeRH`FQcY8&(OnrRfNrEXG` zpbHj-Pflv~j%AmuN@I2lHjtj5;VWq>>;RgtxMHg=c8){kI00AQ_ch=*FW|aus!=0M zi`g*M&ICM4UKnH)~(!?D=-J4U@C$`ZA@a6X2_Uen%N_n{C3{?Pkg~R9H(8%t4(MH8>0z1aUYckJ$-3VqL z$AB+?R5~lT4PFA}tLs1Tf;4(uelIqZR-eJ-=~Q>7%CEZu zV46IYPBd6>8w{wkZD0;Cn+o@}3E@=fZUqhMRU=KmrNh15=FJ&8qbwh0ZC>c1f2)db6K_DGVVc=rt>|jOVAB(uDV^vBTPC|t2kkr zZqvhJq^)5}vb zI~c|eEY=E7BbmKF=?sz@;(Gkp%a8wJWVxk+-k>n~28t^b&SX_@ zY%gPRc!Y=8D|kAyYKQu$yC5uN(;;#Q;hNMwJHQaSKk9o5V|?9Wf2t5|soDoBwDdww z$v@Ci+lO~P;F7DbX09ZT#t+#}gH?w@2Nxe}#?gj@Gg!}R9q2D6AL^cpKO%xZlB_RO zU9y^L4yK}uEA@zs{O~|yY2+0afv&+?X#msD-+Z^gF1HWBsbF5^H<@5!sS+V2c#;Hl zao7%_;(2S@Z{DrL&&>VfCHGVJJIHr<_Y2urK7y?PZQZL_dFR!qto$Th*^gp4`4QOD zD&Zr%2|FjcmVZGQX)19y`mj;7xgzaVz5nPzbcVt3kn_>8Yu`(g?X%s#b#47HHn=zq zP=aQc?Nr2eokm<(5-V9{DqKf^9`u~8i94^$rUF*0GW=cKQP9loX038*S^A zZrqa8*%RgrW3ZuIlJ6H|F4aeW6wB0sf}ZYYoUJ7c#knJ+7%ZI)Ar{YKB*a$ z;X8n-r+Kg0*$2X(Z+S+Wf96MOxmRi+aj6>FjNetT1t)X?VY1ha0H$rDy`1=v^EgIl z92}V(rwXGawg=O3kuJ$4=L2ks$Pags1d_69ix5i|9YbQ6h>9dw%a`JF8bWu-c7!84 zrFi{LGx&Jfk@u$aJGM5k3!;{};V{b6puecZquBFeY3A4Qd)g*F5R@Jp;1Op+#VDo{ zb%(NrjziA|7llVyoW`6>hVxZnX2eA#FWcdhjI1S0UglR&mCNdIQ-YLsqrmAnGUxP* z+{}ASdi3({B7L}z;se%4Syx|m4CA4uN+pV-E(GzthWHy2>@FxUbwAbCDAmvNp+g*~ zAcxXwTm`~LO&y*dEb2NyH{l%unuS&T7b;m{CY}cvvL${Ey-@Rz#L*dOu8lk0<#$|XNrp3 zzxW76Ic<@^EsVgWt$pp*`U~8do9Nh=g)cgc$5mq8a&iycN4cB%ti)Ya5Xj(`uO|2`bUyD-r<7@9CNP0{${XkrIa0uv%6(Q+x;T+tfu zcIm{I{ZuBne1**H!mKGRlRWXlBC zrXqfN3@lIMmWl2-s6-qi9oU6t82K`K4CG7PCowW^UoS58!+t0y8W7scp_cXZ2@(0v zGTf8s37gmttD`P}-IPOqzucm?_$0qkxp&bgsXy7do=-)qij^d;4~^kmIt|Ny3fR8C z&-+$Y!*14_>_-6D{^abM0G^PjAd^S{7wQ?>f*& z+#&7sW>NH3#{ribW1U^{eF-#bE3ilH5&M>Cw4+T;if5{SuOMsWnK)V&wWRHG`RtGr z9(~J$vX5a`dLXS#299@eaw z@qy^S59`8ZNKy`@)3K^|h7xvM)k^yLu-cv?d_3ICOcT(oyV1cf`ITy^0tmdj0Z`{- zAHk=<`@tdGrga}>8e`7NWf>%V_4*!LfXNN&icWbXU-B8Um=CF1cmQZ_7@YB6|lyLx;TNnOr#GmQl-@xBsE2%(WfCCqZM8F|u;p^Q)ImC90{YV_q=v~8* zx@iLa_rR`uP+IZz<&THGjydO)kHrK`2m`^}n$%xJ#RWN2?ZUbMNntp&`WO^*A7^zx zzz2VfG<A`_j%1K|lhAi7 z3Ow&+Dt>B7A!E+T_?h!SMb6K%{)lClxYHtW#^G`_lhbF6uD~+u^z>&;7|c9!fL5C- z%|FUo#zt~g7QbFik%iN8@*43Sgr8}X5r0bk8}-GTV{A;ea;HfZvl$*t@%R-J3$+zr z$PlPb8n^$Bedq-&IJUu0@~>fL#)7yFWaU&~zSKJif&D=p*X@H%?&5?cXMYrcQPPx~ z+}l%T0=cthZg}w`jroN%l_QRQkEAI?&=k8em{rqDLo$DfqOr@Ib1(K&*Gs4v$E{Q^ zU`>W+*PJoT!1rni@6Wf7-|-(Tfk?V_X4ChxJud$PJDhgh0Ph?ilCO$rn@J(wzkv`EWA|>06~tif3IRe#-ee;YoEhsO-LyAh z6R?{VwuNx-k5jJ-yN9%YVn#4;xDh!>F>@a|zyXkf<&e?a+zzjNhQaYUIVVIJbU6a0 zEWI4`+9*>!c>Hs%WlGVlJC^m(J{eWjP5T12M;qOz`|OFqzNUrFe=eNJQ}wE8rxTm1 zO|rSuurfq9LXN)1#IHIDfO9^u;ad-b^wJ9tJu}}p=iO#?`!sIQ7bGZwJPmS8E9ssP z?mZY$Yqq-((F7#j0qV-F`YWHgTw&j0K)4s;J@5L&&rfNB{I#a~qv&`LrgKu%GaQ}t zR;46S87;At^Yut2wq6M5QBEm$`poG{dO;3X>A|k5zVdnfRg>UhxnbwVvk7tW%QVvXBD-PM@(P z0$stDlz9+%i{J~Jf$rAi45d`}%kmgwJjB11aL7(p05*t$nIqD5JldP}0*NxbCela~ z$m&_ns+480tG+t%`@aPzMc_hroLVB&?Z3gI&-6G$#>#DKTekq;&&TjkfHcaBm|mr5 zla3fv%2VG_&9v!oAqx3sYd|W9?5^^M@1$_@SBQnRfC9lR#2Mk=Tkg zLkRQ`_<6-AVLzzvLTl83nf@F?*+<-X&t7rkSDk?7*@+xy0K14C2(?qa3C*=YGxx`0 z7OI9424M}@wi~%)Jgr5kuBS(zd^r9%L}tI6!)pnRo}cOQj%JnEd69J`rgfQ(z24=F=2J-Kv?4iCxvUzGqA$h5)SwwL8b+E{ zw;ixlkB7vT0V(c@`QWP!Q3A(@i@FUKVcjKH9S=dhy2MeR@!zXb@FKxotf|Y z0pm@=9=GYRpR$U+#FeTHLbt$PZ92m1aSki1)9{^kIK-_N8TYQSZqT)^niSStC-`Di ztl2mVD!dWc{X_R%Rwt4eN;beHV!6~AM!8XEr4q^pE~aL{xIlA*eC50!o$WaX>JTyh z6)2vnE!3cbcMwzxu7^MbcuutD<|4Q?{&RQ#for$z!kRNOb8KM?k_-s9+({h<484`w z0tUAFhN12jH#(^8J4j%h-tW^IeWrNxLnW}Y&I1GOc+5eQZ-u(n(c32V2Dk380y*5E zrzx~ab5~mvU)}d-jayOeygycCYZ2ZZe0PJ{2KJkr|&A9!MS?u1%8pH$M7J zh5E0o|DU`0f7#%_KDqx3H2?nrI{w*oQefZ4U!Ry_jdOy{9v^C4@L#io|GVbF*r6Kn zR>P=*LFx^|oyp_)JwXW3hrQ#z-dzlATb&lgB-|NTPiG6=ap{^L#n<%X;O zuYVHaI0k4Yy*saMj=WI99VHT?VUUXRu{c9x9UO?|f?++g&Q11j%jw7-8qQM_IM-yfkl4g_3k zVS)P}8zmZ=A6kZ*I$AaDxH}i&Hq+dKx2PQSk97&n8|_Uhd8`H&g4A0%W1tcC`qA&t z2Y&l$-8h(RM|x-Jhz@(|yn>_lKW|LW!T+Lf9-8M`t^g!=jU<3w)+XGEf{ojueT$69AHK- zTK@BCevQ2|C=_}IN}~tjO8jNCZLSc$K58%0Ox&Z;eo|l9S@J$Bx;Zq#xzRnBVoWR@ z@xR_&;*(H51^Gv$>u(rr13p}O+$vM>>8M!~fK6FDPU0u|_o6?jXo}jtomX9@#D2X@ zJL4C*?2;g!mgi?Q-AQTSc@dDdZ^(A9U=BCjdrWG4^sW=PyW+Wiy($eGcQ-L9X%}d{ zp%(I2p2leDhgHw`2Pg6(j$j-venjt3r8UBoi8c6QPiu;Y=Ob>M9BJ%SNN`0Ne*6lEAH~S?mQ&(w`704 z1$}xEZonnuArHG+eB_0*4YplCKSR4wDUYfBkbb?k)``4L26NUY&}IMo)g6x3-S4mK w`4(u6{QgRur2hHe|8Fh(|Lx1G*V%up^N-dtG;Z%6Kz~JD<+L(E>Ae5{0X_Gy*Z=?k From b98ea81bdb744c73a42bb491a70909490994907b Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 1 May 2024 20:54:32 -0700 Subject: [PATCH 540/599] agnos 10 (#32320) --- launch_env.sh | 2 +- system/hardware/tici/agnos.json | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/launch_env.sh b/launch_env.sh index 6859afb0d4..bfc2e6ac6a 100755 --- a/launch_env.sh +++ b/launch_env.sh @@ -7,7 +7,7 @@ export OPENBLAS_NUM_THREADS=1 export VECLIB_MAXIMUM_THREADS=1 if [ -z "$AGNOS_VERSION" ]; then - export AGNOS_VERSION="9.7" + export AGNOS_VERSION="10" fi export STAGING_ROOT="/data/safe_staging" diff --git a/system/hardware/tici/agnos.json b/system/hardware/tici/agnos.json index e69842cfec..cc3f6bb830 100644 --- a/system/hardware/tici/agnos.json +++ b/system/hardware/tici/agnos.json @@ -1,9 +1,9 @@ [ { "name": "boot", - "url": "https://commadist.azureedge.net/agnosupdate/boot-f0de74e139b8b99224738d4e72a5b1831758f20b09ff6bb28f3aaaae1c4c1ebe.img.xz", - "hash": "f0de74e139b8b99224738d4e72a5b1831758f20b09ff6bb28f3aaaae1c4c1ebe", - "hash_raw": "f0de74e139b8b99224738d4e72a5b1831758f20b09ff6bb28f3aaaae1c4c1ebe", + "url": "https://commadist.azureedge.net/agnosupdate/boot-543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1.img.xz", + "hash": "543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1", + "hash_raw": "543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1", "size": 15636480, "sparse": false, "full_check": true, @@ -61,17 +61,17 @@ }, { "name": "system", - "url": "https://commadist.azureedge.net/agnosupdate/system-0f69173d5f3058f7197c139442a6556be59e52f15402a263215a329ba5ec41e2.img.xz", - "hash": "4858385ba6284bcaa179ab77ac4263486e4d8670df921e4ac400464dc1dde59c", - "hash_raw": "0f69173d5f3058f7197c139442a6556be59e52f15402a263215a329ba5ec41e2", + "url": "https://commadist.azureedge.net/agnosupdate/system-bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a.img.xz", + "hash": "dc2f960631f02446d912885786922c27be4eb1ec6c202cacce6699d5a74021ba", + "hash_raw": "bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a", "size": 10737418240, "sparse": true, "full_check": false, "has_ab": true, "alt": { - "hash": "42658a6fff660d9b6abb9cb9fbb3481071259c9a9598718af6b1edff2b556009", - "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-0f69173d5f3058f7197c139442a6556be59e52f15402a263215a329ba5ec41e2.img.xz", - "size": 4548292756 + "hash": "283e5e754593c6e1bb5e9d63b54624cda5475b88bc1b130fe6ab13acdbd966e2", + "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a.img.xz", + "size": 4548070712 } } ] \ No newline at end of file From 0362cfa7eea8bd526a45bb231d2fcd9114a9a11d Mon Sep 17 00:00:00 2001 From: Shotaro Watanabe Date: Thu, 2 May 2024 14:22:35 +0900 Subject: [PATCH 541/599] devcontainer: added batman to the video group (#32333) --- .devcontainer/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 36bb6aa840..2bd1ccfd62 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -8,6 +8,8 @@ RUN cd /tmp && \ curl -L -o virtualgl.deb "https://downloads.sourceforge.net/project/virtualgl/3.1/virtualgl_3.1_$ARCH.deb" && \ dpkg -i virtualgl.deb +RUN usermod -aG video batman + USER batman RUN cd $HOME && \ From bf2e00a23382fede8608d75884ead3ff30ddaa9f Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 2 May 2024 12:09:34 -0700 Subject: [PATCH 542/599] CPU budget (#32335) * cpu budget * comment * new line --- selfdrive/test/test_onroad.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/selfdrive/test/test_onroad.py b/selfdrive/test/test_onroad.py index 5de9d20297..cd0846c894 100755 --- a/selfdrive/test/test_onroad.py +++ b/selfdrive/test/test_onroad.py @@ -27,8 +27,15 @@ from openpilot.selfdrive.test.helpers import set_params_enabled, release_only from openpilot.system.hardware.hw import Paths from openpilot.tools.lib.logreader import LogReader -# Baseline CPU usage by process +""" +CPU usage budget +* each process is entitled to at least 8% +* total CPU usage of openpilot (sum(PROCS.values()) + should not exceed MAX_TOTAL_CPU +""" +MAX_TOTAL_CPU = 250. # total for all 8 cores PROCS = { + # Baseline CPU usage by process "selfdrive.controls.controlsd": 46.0, "./loggerd": 14.0, "./encoderd": 17.0, @@ -274,6 +281,7 @@ class TestOnroad(unittest.TestCase): result += f"{proc_name.ljust(35)} {cpu_usage:5.2f}% ({exp}%) {err}\n" if len(err) > 0: cpu_ok = False + result += "------------------------------------------------\n" # Ensure there's no missing procs all_procs = {p.name for p in self.service_msgs['managerState'][0].managerState.processes if p.shouldBeRunning} @@ -281,7 +289,14 @@ class TestOnroad(unittest.TestCase): with self.subTest(proc=p): assert any(p in pp for pp in PROCS.keys()), f"Expected CPU usage missing for {p}" - result += "------------------------------------------------\n" + # total CPU check + procs_tot = sum([(max(x) if isinstance(x, tuple) else x) for x in PROCS.values()]) + with self.subTest(name="total CPU"): + assert procs_tot < MAX_TOTAL_CPU, "Total CPU budget exceeded" + result += "------------------------------------------------\n" + result += f"Total allocated CPU usage is {procs_tot}%, budget is {MAX_TOTAL_CPU}%, {MAX_TOTAL_CPU-procs_tot:.1f}% left\n" + result += "------------------------------------------------\n" + print(result) self.assertTrue(cpu_ok) From def7873e7e6a1387d4d97517274e3987ce9398a5 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 2 May 2024 15:35:27 -0400 Subject: [PATCH 543/599] Revert LFS changes for now --- .lfsconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.lfsconfig b/.lfsconfig index 5b63415cd8..42dfa2d944 100644 --- a/.lfsconfig +++ b/.lfsconfig @@ -1,4 +1,4 @@ [lfs] - url = https://gitlab.com/sunnypilot/public/sunnypilot-lfs.git/info/lfs - pushurl = ssh://git@gitlab.com/sunnypilot/public/sunnypilot-lfs.git + url = https://gitlab.com/commaai/openpilot-lfs.git/info/lfs + pushurl = ssh://git@gitlab.com/commaai/openpilot-lfs.git locksverify = false From 09aeab3f77727a1e2ba25e1cf14a56882b4e5e29 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 2 May 2024 20:30:19 -0700 Subject: [PATCH 544/599] athenad: set a timeout on proxy WebSocket receive (#32336) * useless * Revert "useless" This reverts commit 28f0bb9e9794d60eefba8063b47d8ca113308008. * this forever hangs you disconnect (or 2 hours) * same timeout as the global websocket * Revert "same timeout as the global websocket" This reverts commit 0bd0cb8a38a3e17960c1fae205311d86a9cf8feb. * setting the timeout affects the entire websocket and disconnects, not just recv timeout * fix that * fix test --- selfdrive/athena/athenad.py | 11 +++++++---- selfdrive/athena/tests/helpers.py | 5 +++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index 989e284e74..505a9ae28b 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -657,10 +657,12 @@ def stat_handler(end_event: threading.Event) -> None: def ws_proxy_recv(ws: WebSocket, local_sock: socket.socket, ssock: socket.socket, end_event: threading.Event, global_end_event: threading.Event) -> None: while not (end_event.is_set() or global_end_event.is_set()): try: - data = ws.recv() - if isinstance(data, str): - data = data.encode("utf-8") - local_sock.sendall(data) + r = select.select((ws.sock,), (), (), 30) + if r[0]: + data = ws.recv() + if isinstance(data, str): + data = data.encode("utf-8") + local_sock.sendall(data) except WebSocketTimeoutException: pass except Exception: @@ -670,6 +672,7 @@ def ws_proxy_recv(ws: WebSocket, local_sock: socket.socket, ssock: socket.socket cloudlog.debug("athena.ws_proxy_recv closing sockets") ssock.close() local_sock.close() + ws.close() cloudlog.debug("athena.ws_proxy_recv done closing sockets") end_event.set() diff --git a/selfdrive/athena/tests/helpers.py b/selfdrive/athena/tests/helpers.py index 3dd98f02c9..322e9d81dd 100644 --- a/selfdrive/athena/tests/helpers.py +++ b/selfdrive/athena/tests/helpers.py @@ -43,6 +43,8 @@ class MockApi(): class MockWebsocket(): + sock = socket.socket() + def __init__(self, recv_queue, send_queue): self.recv_queue = recv_queue self.send_queue = send_queue @@ -56,6 +58,9 @@ class MockWebsocket(): def send(self, data, opcode): self.send_queue.put_nowait((data, opcode)) + def close(self): + pass + class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler): def do_PUT(self): From d7d31112121412cfdb9be5da2b61a9bbb2ee2a5a Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 3 May 2024 01:30:32 -0700 Subject: [PATCH 545/599] athenad: set TOS field for proxy WebSocket (#32337) set TOS --- selfdrive/athena/athenad.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index 505a9ae28b..9eec7a931b 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -467,6 +467,10 @@ def startLocalProxy(global_end_event: threading.Event, remote_ws_uri: str, local cookie="jwt=" + identity_token, enable_multithread=True) + # Set TOS to keep connection responsive while under load. + # DSCP of 36/HDD_LINUX_AC_VI with the minimum delay flag + ws.sock.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, 0x90) + ssock, csock = socket.socketpair() local_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) local_sock.connect(('127.0.0.1', local_port)) From d72f000d98fc63f1ff7da44acedf95251c89faef Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Fri, 3 May 2024 17:42:29 +0800 Subject: [PATCH 546/599] cabana: Improve seeking and zooming (#32334) * Improve seeking and zooming * No repeated calculation of freq * set min zoom seconds to 10ms --- tools/cabana/chart/chart.cc | 3 +- tools/cabana/chart/chartswidget.cc | 3 +- tools/cabana/streams/abstractstream.cc | 5 ++- tools/cabana/streams/abstractstream.h | 3 +- tools/cabana/streams/replaystream.cc | 10 ++++++ tools/cabana/streams/replaystream.h | 2 +- tools/replay/camera.cc | 46 +++++++++++++++----------- tools/replay/camera.h | 6 ++-- 8 files changed, 51 insertions(+), 27 deletions(-) diff --git a/tools/cabana/chart/chart.cc b/tools/cabana/chart/chart.cc index ce52825ac5..fcf171a858 100644 --- a/tools/cabana/chart/chart.cc +++ b/tools/cabana/chart/chart.cc @@ -22,6 +22,7 @@ // ChartAxisElement's padding is 4 (https://codebrowser.dev/qt5/qtcharts/src/charts/axis/chartaxiselement_p.h.html) const int AXIS_X_TOP_MARGIN = 4; +const double MIN_ZOOM_SECONDS = 0.01; // 10ms // Define a small value of epsilon to compare double values const float EPSILON = 0.000001; static inline bool xLessThan(const QPointF &p, float x) { return p.x() < (x - EPSILON); } @@ -511,7 +512,7 @@ void ChartView::mouseReleaseEvent(QMouseEvent *event) { if (rubber->width() <= 0) { // no rubber dragged, seek to mouse position can->seekTo(min); - } else if (rubber->width() > 10 && (max - min) > 0.01) { // Minimum range is 10 milliseconds. + } else if (rubber->width() > 10 && (max - min) > MIN_ZOOM_SECONDS) { charts_widget->zoom_undo_stack->push(new ZoomCommand(charts_widget, {min, max})); } else { viewport()->update(); diff --git a/tools/cabana/chart/chartswidget.cc b/tools/cabana/chart/chartswidget.cc index 63d6091cac..a7bdd74646 100644 --- a/tools/cabana/chart/chartswidget.cc +++ b/tools/cabana/chart/chartswidget.cc @@ -197,7 +197,8 @@ void ChartsWidget::updateState() { display_range.second = display_range.first + max_chart_range; } else if (cur_sec < (zoomed_range.first - 0.1) || cur_sec >= zoomed_range.second) { // loop in zoomed range - can->seekTo(zoomed_range.first); + QTimer::singleShot(0, [ts = zoomed_range.first]() { can->seekTo(ts);}); + return; } const auto &range = is_zoomed ? zoomed_range : display_range; diff --git a/tools/cabana/streams/abstractstream.cc b/tools/cabana/streams/abstractstream.cc index 593d1bf5d8..540634b9b7 100644 --- a/tools/cabana/streams/abstractstream.cc +++ b/tools/cabana/streams/abstractstream.cc @@ -138,13 +138,16 @@ void AbstractStream::updateLastMsgsTo(double sec) { auto prev = std::prev(it); double ts = (*prev)->mono_time / 1e9 - routeStartTime(); auto &m = msgs[id]; + double freq = 0; // Keep suppressed bits. if (auto old_m = messages_.find(id); old_m != messages_.end()) { + freq = old_m->second.freq; + m.last_changes.reserve(old_m->second.last_changes.size()); std::transform(old_m->second.last_changes.cbegin(), old_m->second.last_changes.cend(), std::back_inserter(m.last_changes), [](const auto &change) { return CanData::ByteLastChange{.suppressed = change.suppressed}; }); } - m.compute(id, (*prev)->dat, (*prev)->size, ts, getSpeed(), {}); + m.compute(id, (*prev)->dat, (*prev)->size, ts, getSpeed(), {}, freq); m.count = std::distance(ev.begin(), prev) + 1; } } diff --git a/tools/cabana/streams/abstractstream.h b/tools/cabana/streams/abstractstream.h index 18c00cb8b6..3d63ee49bd 100644 --- a/tools/cabana/streams/abstractstream.h +++ b/tools/cabana/streams/abstractstream.h @@ -90,6 +90,7 @@ public: signals: void paused(); void resume(); + void seekingTo(double sec); void seekedTo(double sec); void streamStarted(); void eventsMerged(const MessageEventsMap &events_map); @@ -107,6 +108,7 @@ protected: uint64_t lastEventMonoTime() const { return lastest_event_ts; } std::vector all_events_; + double current_sec_ = 0; uint64_t lastest_event_ts = 0; private: @@ -114,7 +116,6 @@ private: void updateLastMsgsTo(double sec); void updateMasks(); - double current_sec_ = 0; MessageEventsMap events_; std::unordered_map last_msgs; std::unique_ptr event_buffer_; diff --git a/tools/cabana/streams/replaystream.cc b/tools/cabana/streams/replaystream.cc index ddd1c1dfed..c75a128a15 100644 --- a/tools/cabana/streams/replaystream.cc +++ b/tools/cabana/streams/replaystream.cc @@ -84,6 +84,16 @@ bool ReplayStream::eventFilter(const Event *event) { return true; } +void ReplayStream::seekTo(double ts) { + // Update timestamp and notify receivers of the time change. + current_sec_ = ts; + std::set new_msgs; + msgsReceived(&new_msgs, false); + + // Seek to the specified timestamp + replay->seekTo(std::max(double(0), ts), false); +} + void ReplayStream::pause(bool pause) { replay->pause(pause); emit(pause ? paused() : resume()); diff --git a/tools/cabana/streams/replaystream.h b/tools/cabana/streams/replaystream.h index d92a2e426b..e3278d9a32 100644 --- a/tools/cabana/streams/replaystream.h +++ b/tools/cabana/streams/replaystream.h @@ -18,7 +18,7 @@ public: void start() override; bool loadRoute(const QString &route, const QString &data_dir, uint32_t replay_flags = REPLAY_FLAG_NONE); bool eventFilter(const Event *event); - void seekTo(double ts) override { replay->seekTo(std::max(double(0), ts), false); } + void seekTo(double ts) override; bool liveStreaming() const override { return false; } inline QString routeName() const override { return replay->route()->name(); } inline QString carFingerprint() const override { return replay->carFingerprint().c_str(); } diff --git a/tools/replay/camera.cc b/tools/replay/camera.cc index 9a023db6fa..9e711149c5 100644 --- a/tools/replay/camera.cc +++ b/tools/replay/camera.cc @@ -1,12 +1,13 @@ #include "tools/replay/camera.h" #include - #include #include "third_party/linux/include/msm_media_info.h" #include "tools/replay/util.h" +const int BUFFER_COUNT = 40; + std::tuple get_nv12_info(int width, int height) { int nv12_width = VENUS_Y_STRIDE(COLOR_FMT_NV12, width); int nv12_height = VENUS_Y_SCANLINES(COLOR_FMT_NV12, height); @@ -36,10 +37,12 @@ CameraServer::~CameraServer() { void CameraServer::startVipcServer() { vipc_server_.reset(new VisionIpcServer("camerad")); for (auto &cam : cameras_) { + cam.cached_buf.clear(); + if (cam.width > 0 && cam.height > 0) { rInfo("camera[%d] frame size %dx%d", cam.type, cam.width, cam.height); auto [nv12_width, nv12_height, nv12_buffer_size] = get_nv12_info(cam.width, cam.height); - vipc_server_->create_buffers_with_sizes(cam.stream_type, YUV_BUFFER_COUNT, false, cam.width, cam.height, + vipc_server_->create_buffers_with_sizes(cam.stream_type, BUFFER_COUNT, false, cam.width, cam.height, nv12_buffer_size, nv12_width, nv12_width * nv12_height); if (!cam.thread.joinable()) { cam.thread = std::thread(&CameraServer::cameraThread, this, std::ref(cam)); @@ -50,13 +53,6 @@ void CameraServer::startVipcServer() { } void CameraServer::cameraThread(Camera &cam) { - auto read_frame = [&](FrameReader *fr, int frame_id) { - VisionBuf *yuv_buf = vipc_server_->get_buffer(cam.stream_type); - assert(yuv_buf); - bool ret = fr->get(frame_id, yuv_buf); - return ret ? yuv_buf : nullptr; - }; - while (true) { const auto [fr, event] = cam.queue.pop(); if (!fr) break; @@ -66,29 +62,41 @@ void CameraServer::cameraThread(Camera &cam) { auto eidx = capnp::AnyStruct::Reader(evt).getPointerSection()[0].getAs(); if (eidx.getType() != cereal::EncodeIndex::Type::FULL_H_E_V_C) continue; - const int id = eidx.getSegmentId(); - bool prefetched = (id == cam.cached_id && eidx.getSegmentNum() == cam.cached_seg); - auto yuv = prefetched ? cam.cached_buf : read_frame(fr, id); - if (yuv) { + int segment_id = eidx.getSegmentId(); + uint32_t frame_id = eidx.getFrameId(); + if (auto yuv = getFrame(cam, fr, segment_id, frame_id)) { VisionIpcBufExtra extra = { - .frame_id = eidx.getFrameId(), + .frame_id = frame_id, .timestamp_sof = eidx.getTimestampSof(), .timestamp_eof = eidx.getTimestampEof(), }; - yuv->set_frame_id(eidx.getFrameId()); vipc_server_->send(yuv, &extra); } else { - rError("camera[%d] failed to get frame: %lu", cam.type, eidx.getSegmentId()); + rError("camera[%d] failed to get frame: %lu", cam.type, segment_id); } - cam.cached_id = id + 1; - cam.cached_seg = eidx.getSegmentNum(); - cam.cached_buf = read_frame(fr, cam.cached_id); + // Prefetch the next frame + getFrame(cam, fr, segment_id + 1, frame_id + 1); --publishing_; } } +VisionBuf *CameraServer::getFrame(Camera &cam, FrameReader *fr, int32_t segment_id, uint32_t frame_id) { + // Check if the frame is cached + auto buf_it = std::find_if(cam.cached_buf.begin(), cam.cached_buf.end(), + [frame_id](VisionBuf *buf) { return buf->get_frame_id() == frame_id; }); + if (buf_it != cam.cached_buf.end()) return *buf_it; + + VisionBuf *yuv_buf = vipc_server_->get_buffer(cam.stream_type); + if (fr->get(segment_id, yuv_buf)) { + yuv_buf->set_frame_id(frame_id); + cam.cached_buf.insert(yuv_buf); + return yuv_buf; + } + return nullptr; +} + void CameraServer::pushFrame(CameraType type, FrameReader *fr, const Event *event) { auto &cam = cameras_[type]; if (cam.width != fr->width || cam.height != fr->height) { diff --git a/tools/replay/camera.h b/tools/replay/camera.h index 436423ac72..77a6293ec6 100644 --- a/tools/replay/camera.h +++ b/tools/replay/camera.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -26,12 +27,11 @@ protected: int height; std::thread thread; SafeQueue> queue; - int cached_id = -1; - int cached_seg = -1; - VisionBuf * cached_buf; + std::set cached_buf; }; void startVipcServer(); void cameraThread(Camera &cam); + VisionBuf *getFrame(Camera &cam, FrameReader *fr, int32_t segment_id, uint32_t frame_id); Camera cameras_[MAX_CAMERAS] = { {.type = RoadCam, .stream_type = VISION_STREAM_ROAD}, From c0a2ce31ee5c16545fbb3c9489f80abb9a2ae4a0 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sat, 4 May 2024 01:46:39 +0800 Subject: [PATCH 547/599] replay: fix hang issue on system wake-up (#32341) fix hang issue on system wake-up --- tools/replay/replay.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index 43aef7b881..6a159aa8e2 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -468,12 +468,15 @@ std::vector::const_iterator Replay::publishEvents(std::vector::con // Skip events if socket is not present if (!sockets_[evt.which]) continue; - int64_t time_diff = (evt.mono_time - evt_start_ts) / speed_ - (nanos_since_boot() - loop_start_ts); - // if time_diff is greater than 1 second, it means that an invalid segment is skipped - if (time_diff >= 1e9 || speed_ != prev_replay_speed) { - // reset event start times + const uint64_t current_nanos = nanos_since_boot(); + const int64_t time_diff = (evt.mono_time - evt_start_ts) / speed_ - (current_nanos - loop_start_ts); + + // Reset timestamps for potential synchronization issues: + // - A negative time_diff may indicate slow execution or system wake-up, + // - A time_diff exceeding 1 second suggests a skipped segment. + if ((time_diff < -1e9 || time_diff >= 1e9) || speed_ != prev_replay_speed) { evt_start_ts = evt.mono_time; - loop_start_ts = nanos_since_boot(); + loop_start_ts = current_nanos; prev_replay_speed = speed_; } else if (time_diff > 0) { precise_nano_sleep(time_diff); From 22be176b87503091444a5443363ce6f1e9ef673d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 3 May 2024 10:46:57 -0700 Subject: [PATCH 548/599] [bot] Fingerprints: add missing FW versions from new users (#32340) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index ffd2e2e3fd..89a45accf2 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -284,6 +284,7 @@ FW_VERSIONS = { b'\xf1\x00TM__ SCC F-CUP 1.00 1.00 99110-S1500 ', b'\xf1\x00TM__ SCC F-CUP 1.00 1.01 99110-S1500 ', b'\xf1\x00TM__ SCC FHCUP 1.00 1.00 99110-S1500 ', + b'\xf1\x00TM__ SCC FHCUP 1.00 1.01 99110-S1500 ', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00TM ESC \x01 102!\x04\x03 58910-S2DA0', @@ -294,6 +295,7 @@ FW_VERSIONS = { b'\xf1\x00TM ESC \x03 102!\x04\x03 58910-S2DA0', b'\xf1\x00TM ESC \x04 101 \x08\x04 58910-S2GA0', b'\xf1\x00TM ESC \x04 102!\x04\x05 58910-S2GA0', + b'\xf1\x00TM ESC \x04 103"\x07\x08 58910-S2GA0', b'\xf1\x00TM ESC \x1e 102 \x08\x08 58910-S1DA0', b'\xf1\x00TM ESC 103!\x030 58910-S1MA0', ], From 7b5923a5eb9d45d6fbdd458b20d4a0e9c57c160b Mon Sep 17 00:00:00 2001 From: commaci-public <60409688+commaci-public@users.noreply.github.com> Date: Fri, 3 May 2024 14:34:37 -0700 Subject: [PATCH 549/599] [bot] Bump submodules (#32344) bump submodules Co-authored-by: Vehicle Researcher --- body | 2 +- cereal | 2 +- opendbc | 2 +- panda | 2 +- rednose_repo | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/body b/body index 864c5449ef..0e74db67ae 160000 --- a/body +++ b/body @@ -1 +1 @@ -Subproject commit 864c5449ef4f339589366f5abbfc2d2211e010dd +Subproject commit 0e74db67ae6aaa7c30054bd4335dcafe69a5aa72 diff --git a/cereal b/cereal index 284206878d..84af7ef665 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 284206878d6184747b1e1af03f91ac9e718ff326 +Subproject commit 84af7ef6654b2e810a2871b8ddd27ad170696599 diff --git a/opendbc b/opendbc index e0d4be4a62..d058bc9a9f 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit e0d4be4a6215d44809718dc84efe1b9f0299ad63 +Subproject commit d058bc9a9f156d55ee6e4b90ceb292d087267414 diff --git a/panda b/panda index 53e0f13739..2b70e283c1 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 53e0f13739e920f6d2f1cd1bdf6a5676c01be3e8 +Subproject commit 2b70e283c17e8e661f471cfe7994dfca8a4457d3 diff --git a/rednose_repo b/rednose_repo index 24c50f57bb..72b3479bab 160000 --- a/rednose_repo +++ b/rednose_repo @@ -1 +1 @@ -Subproject commit 24c50f57bb4247322560da6cfa585cfc035d9824 +Subproject commit 72b3479bababc658f24cc7aa0dc8bb550f0474fc From 3bf70098772e99210ac189321feb8087a66f7225 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sat, 4 May 2024 09:39:16 -0700 Subject: [PATCH 550/599] [bot] Fingerprints: add missing FW versions from new users (#32349) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 89a45accf2..b7262252a5 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -870,6 +870,7 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.00 99210-AB000 200819', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.01 99210-AB000 210205', + b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.02 99210-AB000 220111', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.03 99210-AA000 200819', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.03 99210-AB000 220426', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.06 99210-AA000 220111', From 5f8b53be332bb1d5027605ea3fc69036855a41e9 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sun, 5 May 2024 00:40:54 +0800 Subject: [PATCH 551/599] cabana: fix the panda serial selector disappeared after `buildConfigForm()` (#32342) --- tools/cabana/cabana.cc | 32 ++++-------- tools/cabana/mainwin.cc | 3 ++ tools/cabana/streams/pandastream.cc | 78 ++++++++--------------------- tools/cabana/streams/pandastream.h | 4 +- 4 files changed, 35 insertions(+), 82 deletions(-) diff --git a/tools/cabana/cabana.cc b/tools/cabana/cabana.cc index 205d795776..bb29a7e3a4 100644 --- a/tools/cabana/cabana.cc +++ b/tools/cabana/cabana.cc @@ -3,7 +3,6 @@ #include "selfdrive/ui/qt/util.h" #include "tools/cabana/mainwin.h" -#include "tools/cabana/streamselector.h" #include "tools/cabana/streams/devicestream.h" #include "tools/cabana/streams/pandastream.h" #include "tools/cabana/streams/replaystream.h" @@ -82,28 +81,17 @@ int main(int argc, char *argv[]) { } } - int ret = 0; - { - MainWindow w; - QTimer::singleShot(0, [&]() { - if (!stream) { - StreamSelector dlg(&stream); - dlg.exec(); - dbc_file = dlg.dbcFile(); - } - if (!stream) { - stream = new DummyStream(&app); - } - stream->start(); - if (!dbc_file.isEmpty()) { - w.loadFile(dbc_file); - } - w.show(); - }); - - ret = app.exec(); + MainWindow w; + if (stream) { + stream->start(); + if (!dbc_file.isEmpty()) { + w.loadFile(dbc_file); + } + } else { + w.openStream(); } - + w.show(); + int ret = app.exec(); delete can; return ret; } diff --git a/tools/cabana/mainwin.cc b/tools/cabana/mainwin.cc index a4b7764346..e6c9b49ca1 100644 --- a/tools/cabana/mainwin.cc +++ b/tools/cabana/mainwin.cc @@ -262,6 +262,9 @@ void MainWindow::openStream() { } stream->start(); statusBar()->showMessage(tr("Route %1 loaded").arg(can->routeName()), 2000); + } else if (!can) { + stream = new DummyStream(this); + stream->start(); } } diff --git a/tools/cabana/streams/pandastream.cc b/tools/cabana/streams/pandastream.cc index bea1fd7480..308391a10c 100644 --- a/tools/cabana/streams/pandastream.cc +++ b/tools/cabana/streams/pandastream.cc @@ -6,39 +6,12 @@ #include #include #include -#include -// TODO: remove clearLayout -static void clearLayout(QLayout* layout) { - while (layout->count() > 0) { - QLayoutItem* item = layout->takeAt(0); - if (QWidget* widget = item->widget()) { - widget->deleteLater(); - } - if (QLayout* childLayout = item->layout()) { - clearLayout(childLayout); - } - delete item; - } -} - -PandaStream::PandaStream(QObject *parent, PandaStreamConfig config_) : config(config_), LiveStream(parent) { - if (config.serial.isEmpty()) { - auto serials = Panda::list(); - if (serials.size() == 0) { - throw std::runtime_error("No panda found"); - } - config.serial = QString::fromStdString(serials[0]); - } - - qDebug() << "Connecting to panda with serial" << config.serial; - if (!connect()) { - throw std::runtime_error("Failed to connect to panda"); - } -} +PandaStream::PandaStream(QObject *parent, PandaStreamConfig config_) : config(config_), LiveStream(parent) {} bool PandaStream::connect() { try { + qDebug() << "Connecting to panda with serial" << config.serial; panda.reset(new Panda(config.serial.toStdString())); config.bus_config.resize(3); qDebug() << "Connected"; @@ -47,7 +20,6 @@ bool PandaStream::connect() { } panda->set_safety_model(cereal::CarParams::SafetyModel::SILENT); - for (int bus = 0; bus < config.bus_config.size(); bus++) { panda->set_can_speed_kbps(bus, config.bus_config[bus].can_speed_kbps); @@ -60,7 +32,6 @@ bool PandaStream::connect() { panda->set_data_speed_kbps(bus, 10); } } - } return true; } @@ -108,26 +79,14 @@ AbstractOpenStreamWidget *PandaStream::widget(AbstractStream **stream) { // OpenPandaWidget OpenPandaWidget::OpenPandaWidget(AbstractStream **stream) : AbstractOpenStreamWidget(stream) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->addStretch(1); - - QFormLayout *form_layout = new QFormLayout(); - + form_layout = new QFormLayout(this); QHBoxLayout *serial_layout = new QHBoxLayout(); - serial_edit = new QComboBox(); - serial_edit->setFixedWidth(300); - serial_layout->addWidget(serial_edit); + serial_layout->addWidget(serial_edit = new QComboBox()); QPushButton *refresh = new QPushButton(tr("Refresh")); - refresh->setFixedWidth(100); + refresh->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); serial_layout->addWidget(refresh); form_layout->addRow(tr("Serial"), serial_layout); - main_layout->addLayout(form_layout); - - config_layout = new QFormLayout(); - main_layout->addLayout(config_layout); - - main_layout->addStretch(1); QObject::connect(refresh, &QPushButton::clicked, this, &OpenPandaWidget::refreshSerials); QObject::connect(serial_edit, &QComboBox::currentTextChanged, this, &OpenPandaWidget::buildConfigForm); @@ -145,15 +104,16 @@ void OpenPandaWidget::refreshSerials() { } void OpenPandaWidget::buildConfigForm() { - clearLayout(config_layout); - QString serial = serial_edit->currentText(); + for (int i = form_layout->rowCount() - 1; i > 0; --i) { + form_layout->removeRow(i); + } + QString serial = serial_edit->currentText(); bool has_fd = false; bool has_panda = !serial.isEmpty(); - if (has_panda) { try { - Panda panda = Panda(serial.toStdString()); + Panda panda(serial.toStdString()); has_fd = (panda.hw_type == cereal::PandaState::PandaType::RED_PANDA) || (panda.hw_type == cereal::PandaState::PandaType::RED_PANDA_V2); } catch (const std::exception& e) { has_panda = false; @@ -201,20 +161,22 @@ void OpenPandaWidget::buildConfigForm() { QObject::connect(enable_fd, &QCheckBox::stateChanged, [=](int state) {config.bus_config[i].can_fd = (bool)state;}); } - config_layout->addRow(tr("Bus %1:").arg(i), bus_layout); + form_layout->addRow(tr("Bus %1:").arg(i), bus_layout); } } else { config.serial = ""; - config_layout->addWidget(new QLabel(tr("No panda found"))); + form_layout->addWidget(new QLabel(tr("No panda found"))); } } bool OpenPandaWidget::open() { - try { - *stream = new PandaStream(qApp, config); - } catch (std::exception &e) { - QMessageBox::warning(nullptr, tr("Warning"), tr("Failed to connect to panda: '%1'").arg(e.what())); - return false; + if (!config.serial.isEmpty()) { + auto panda_stream = std::make_unique(qApp, config); + if (panda_stream->connect()) { + *stream = panda_stream.release(); + return true; + } } - return true; + QMessageBox::warning(nullptr, tr("Warning"), tr("Failed to connect to panda")); + return false; } diff --git a/tools/cabana/streams/pandastream.h b/tools/cabana/streams/pandastream.h index 919156f400..ce0adfc9f8 100644 --- a/tools/cabana/streams/pandastream.h +++ b/tools/cabana/streams/pandastream.h @@ -21,6 +21,7 @@ class PandaStream : public LiveStream { Q_OBJECT public: PandaStream(QObject *parent, PandaStreamConfig config_ = {}); + bool connect(); static AbstractOpenStreamWidget *widget(AbstractStream **stream); inline QString routeName() const override { return QString("Live Streaming From Panda %1").arg(config.serial); @@ -28,7 +29,6 @@ public: protected: void streamThread() override; - bool connect(); std::unique_ptr panda; PandaStreamConfig config = {}; @@ -47,6 +47,6 @@ private: void buildConfigForm(); QComboBox *serial_edit; - QFormLayout *config_layout; + QFormLayout *form_layout; PandaStreamConfig config = {}; }; From dc37a6f9b27c4753fef1fadecd300ce800e0d127 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sat, 4 May 2024 23:51:35 -0400 Subject: [PATCH 552/599] Revert "simulator: Remove comma pedal sensor (#32030)" This reverts commit 1637265ad3953cc2307b6f7422aeb5c64d9d9635. --- tools/sim/lib/simulated_car.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/sim/lib/simulated_car.py b/tools/sim/lib/simulated_car.py index 8c15195dcb..16f46d31c2 100644 --- a/tools/sim/lib/simulated_car.py +++ b/tools/sim/lib/simulated_car.py @@ -46,6 +46,13 @@ class SimulatedCar: msg.append(self.packer.make_can_msg("SCM_BUTTONS", 0, {"CRUISE_BUTTONS": simulator_state.cruise_button})) + values = { + "COUNTER_PEDAL": self.idx & 0xF, + "INTERCEPTOR_GAS": simulator_state.user_gas * 2**12, + "INTERCEPTOR_GAS2": simulator_state.user_gas * 2**12, + } + msg.append(self.packer.make_can_msg("GAS_SENSOR", 0, values)) + msg.append(self.packer.make_can_msg("GEARBOX", 0, {"GEAR": 4, "GEAR_SHIFTER": 8})) msg.append(self.packer.make_can_msg("GAS_PEDAL_2", 0, {})) msg.append(self.packer.make_can_msg("SEATBELT_STATUS", 0, {"SEATBELT_DRIVER_LATCHED": 1})) From a48a909997ee5e6a3c0eb29d0ad95c6f1a61691f Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sat, 4 May 2024 23:51:38 -0400 Subject: [PATCH 553/599] Revert "cleanup pedal crc" This reverts commit 23e8ad73979735479131dfb303e249b861829468. --- selfdrive/car/__init__.py | 14 ++++++++++++++ tools/sim/lib/simulated_car.py | 3 +++ 2 files changed, 17 insertions(+) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index eee0b54204..86352b9719 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -165,6 +165,20 @@ def common_fault_avoidance(fault_condition: bool, request: bool, above_limit_fra return above_limit_frames, request +def crc8_pedal(data): + crc = 0xFF # standard init value + poly = 0xD5 # standard crc8: x8+x7+x6+x4+x2+1 + size = len(data) + for i in range(size - 1, -1, -1): + crc ^= data[i] + for _ in range(8): + if ((crc & 0x80) != 0): + crc = ((crc << 1) ^ poly) & 0xFF + else: + crc <<= 1 + return crc + + def make_can_msg(addr, dat, bus): return [addr, 0, dat, bus] diff --git a/tools/sim/lib/simulated_car.py b/tools/sim/lib/simulated_car.py index 16f46d31c2..e82100b520 100644 --- a/tools/sim/lib/simulated_car.py +++ b/tools/sim/lib/simulated_car.py @@ -4,6 +4,7 @@ from opendbc.can.packer import CANPacker from opendbc.can.parser import CANParser from openpilot.common.params import Params from openpilot.selfdrive.boardd.boardd_api_impl import can_list_to_can_capnp +from openpilot.selfdrive.car import crc8_pedal from openpilot.tools.sim.lib.common import SimulatorState from panda.python import Panda @@ -51,6 +52,8 @@ class SimulatedCar: "INTERCEPTOR_GAS": simulator_state.user_gas * 2**12, "INTERCEPTOR_GAS2": simulator_state.user_gas * 2**12, } + checksum = crc8_pedal(self.packer.make_can_msg("GAS_SENSOR", 0, values)[2][:-1]) + values["CHECKSUM_PEDAL"] = checksum msg.append(self.packer.make_can_msg("GAS_SENSOR", 0, values)) msg.append(self.packer.make_can_msg("GEARBOX", 0, {"GEAR": 4, "GEAR_SHIFTER": 8})) From 415acad40ce9166cbdd834b793a25356d9088974 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sat, 4 May 2024 23:54:13 -0400 Subject: [PATCH 554/599] Revert "remove pedal (#31903)" This reverts commit fa12a672 --- selfdrive/car/__init__.py | 21 +++++++++++++++ selfdrive/car/honda/carcontroller.py | 20 +++++++++++++-- selfdrive/car/honda/carstate.py | 13 ++++++++-- selfdrive/car/honda/interface.py | 10 ++++++-- selfdrive/car/tests/routes.py | 2 ++ selfdrive/car/tests/test_car_interfaces.py | 4 +++ selfdrive/car/toyota/carcontroller.py | 30 +++++++++++++++++++--- selfdrive/car/toyota/carstate.py | 11 +++++++- selfdrive/car/toyota/interface.py | 10 +++++--- selfdrive/controls/lib/longcontrol.py | 2 ++ selfdrive/test/process_replay/migration.py | 2 +- 11 files changed, 110 insertions(+), 15 deletions(-) diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 86352b9719..885be94588 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -179,6 +179,27 @@ def crc8_pedal(data): return crc +def create_gas_interceptor_command(packer, gas_amount, idx): + # Common gas pedal msg generator + enable = gas_amount > 0.001 + + values = { + "ENABLE": enable, + "COUNTER_PEDAL": idx & 0xF, + } + + if enable: + values["GAS_COMMAND"] = gas_amount * 255. + values["GAS_COMMAND2"] = gas_amount * 255. + + dat = packer.make_can_msg("GAS_COMMAND", 0, values)[2] + + checksum = crc8_pedal(dat[:-1]) + values["CHECKSUM_PEDAL"] = checksum + + return packer.make_can_msg("GAS_COMMAND", 0, values) + + def make_can_msg(addr, dat, bus): return [addr, 0, dat, bus] diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 6fe8c27585..481dd2314e 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -4,6 +4,7 @@ from cereal import car from openpilot.common.numpy_fast import clip, interp from openpilot.common.realtime import DT_CTRL from opendbc.can.packer import CANPacker +from openpilot.selfdrive.car import create_gas_interceptor_command from openpilot.selfdrive.car.honda import hondacan from openpilot.selfdrive.car.honda.values import CruiseButtons, VISUAL_HUD, HONDA_BOSCH, HONDA_BOSCH_RADARLESS, HONDA_NIDEC_ALT_PCM_ACCEL, CarControllerParams from openpilot.selfdrive.car.interfaces import CarControllerBase @@ -182,7 +183,7 @@ class CarController(CarControllerBase): 0.5] # The Honda ODYSSEY seems to have different PCM_ACCEL # msgs, is it other cars too? - if not CC.longActive: + if self.CP.enableGasInterceptorDEPRECATED or not CC.longActive: pcm_speed = 0.0 pcm_accel = int(0.0) elif self.CP.carFingerprint in HONDA_NIDEC_ALT_PCM_ACCEL: @@ -234,6 +235,19 @@ class CarController(CarControllerBase): self.apply_brake_last = apply_brake self.brake = apply_brake / self.params.NIDEC_BRAKE_MAX + if self.CP.enableGasInterceptorDEPRECATED: + # way too aggressive at low speed without this + gas_mult = interp(CS.out.vEgo, [0., 10.], [0.4, 1.0]) + # send exactly zero if apply_gas is zero. Interceptor will send the max between read value and apply_gas. + # This prevents unexpected pedal range rescaling + # Sending non-zero gas when OP is not enabled will cause the PCM not to respond to throttle as expected + # when you do enable. + if CC.longActive: + self.gas = clip(gas_mult * (gas - brake + wind_brake * 3 / 4), 0., 1.) + else: + self.gas = 0.0 + can_sends.append(create_gas_interceptor_command(self.packer, self.gas, self.frame // 2)) + # Send dashboard UI commands. if self.frame % 10 == 0: hud = HUDData(int(pcm_accel), int(round(hud_v_cruise)), hud_control.leadVisible, @@ -242,7 +256,9 @@ class CarController(CarControllerBase): if self.CP.openpilotLongitudinalControl and self.CP.carFingerprint not in HONDA_BOSCH: self.speed = pcm_speed - self.gas = pcm_accel / self.params.NIDEC_GAS_MAX + + if not self.CP.enableGasInterceptorDEPRECATED: + self.gas = pcm_accel / self.params.NIDEC_GAS_MAX new_actuators = actuators.copy() new_actuators.speed = self.speed diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index 6374c4245a..17f3b5f1dc 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -72,6 +72,10 @@ def get_can_messages(CP, gearbox_msg): else: messages.append(("DOORS_STATUS", 3)) + # add gas interceptor reading if we are using it + if CP.enableGasInterceptorDEPRECATED: + messages.append(("GAS_SENSOR", 50)) + if CP.carFingerprint in HONDA_BOSCH_RADARLESS: messages.append(("CRUISE_FAULT_STATUS", 50)) elif CP.carFingerprint == CAR.CLARITY: @@ -191,8 +195,13 @@ class CarState(CarStateBase): gear = int(cp.vl[self.gearbox_msg]["GEAR_SHIFTER"]) ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(gear, None)) - ret.gas = cp.vl["POWERTRAIN_DATA"]["PEDAL_GAS"] - ret.gasPressed = ret.gas > 1e-5 + if self.CP.enableGasInterceptorDEPRECATED: + # Same threshold as panda, equivalent to 1e-5 with previous DBC scaling + ret.gas = (cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS"] + cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS2"]) // 2 + ret.gasPressed = ret.gas > 492 + else: + ret.gas = cp.vl["POWERTRAIN_DATA"]["PEDAL_GAS"] + ret.gasPressed = ret.gas > 1e-5 ret.steeringTorque = cp.vl["STEER_STATUS"]["STEER_TORQUE_SENSOR"] ret.steeringTorqueEps = cp.vl["STEER_MOTOR_TORQUE"]["MOTOR_TORQUE"] diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 1deffdd8d2..8902b9744a 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -24,6 +24,8 @@ class CarInterface(CarInterfaceBase): def get_pid_accel_limits(CP, current_speed, cruise_speed): if CP.carFingerprint in HONDA_BOSCH: return CarControllerParams.BOSCH_ACCEL_MIN, CarControllerParams.BOSCH_ACCEL_MAX + elif CP.enableGasInterceptorDEPRECATED: + return CarControllerParams.NIDEC_ACCEL_MIN, CarControllerParams.NIDEC_ACCEL_MAX else: # NIDECs don't allow acceleration near cruise_speed, # so limit limits of pid to prevent windup @@ -49,9 +51,10 @@ class CarInterface(CarInterfaceBase): ret.customStockLongAvailable = True else: ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.hondaNidec)] + ret.enableGasInterceptorDEPRECATED = 0x201 in fingerprint[CAN.pt] ret.openpilotLongitudinalControl = True - ret.pcmCruise = True + ret.pcmCruise = not ret.enableGasInterceptorDEPRECATED if candidate == CAR.HONDA_CRV_5G: ret.enableBsm = 0x12f8bfa7 in fingerprint[CAN.radar] @@ -237,13 +240,16 @@ class CarInterface(CarInterfaceBase): if ret.openpilotLongitudinalControl and candidate in HONDA_BOSCH: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_BOSCH_LONG + if ret.enableGasInterceptorDEPRECATED and candidate not in HONDA_BOSCH: + ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_GAS_INTERCEPTOR + if candidate in HONDA_BOSCH_RADARLESS: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_RADARLESS # min speed to enable ACC. if car can do stop and go, then set enabling speed # to a negative value, so it won't matter. Otherwise, add 0.5 mph margin to not # conflict with PCM acc - ret.autoResumeSng = candidate in (HONDA_BOSCH | {CAR.HONDA_CIVIC, CAR.HONDA_CLARITY}) + ret.autoResumeSng = candidate in (HONDA_BOSCH | {CAR.HONDA_CIVIC, CAR.HONDA_CLARITY}) or ret.enableGasInterceptorDEPRECATED ret.minEnableSpeed = -1. if ret.autoResumeSng else 25.5 * CV.MPH_TO_MS ret.steerActuatorDelay = 0.1 diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index dd3a8f633d..3ab4047c77 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -295,6 +295,8 @@ routes = [ CarTestRoute("66c1699b7697267d/2024-03-03--13-09-53", TESLA.TESLA_MODELS_RAVEN), # Segments that test specific issues + # Controls mismatch due to interceptor threshold + CarTestRoute("cfb32f0fb91b173b|2022-04-06--14-54-45", HONDA.CIVIC, segment=21), # Controls mismatch due to standstill threshold CarTestRoute("bec2dcfde6a64235|2022-04-08--14-21-32", HONDA.HONDA_CRV_HYBRID, segment=22), ] diff --git a/selfdrive/car/tests/test_car_interfaces.py b/selfdrive/car/tests/test_car_interfaces.py index 72c1e27ab9..ce5b186388 100755 --- a/selfdrive/car/tests/test_car_interfaces.py +++ b/selfdrive/car/tests/test_car_interfaces.py @@ -74,6 +74,10 @@ class TestCarInterfaces(unittest.TestCase): self.assertEqual(len(car_params.longitudinalTuning.kiV), len(car_params.longitudinalTuning.kiBP)) self.assertEqual(len(car_params.longitudinalTuning.deadzoneV), len(car_params.longitudinalTuning.deadzoneBP)) + # If we're using the interceptor for gasPressed, we should be commanding gas with it + if car_params.enableGasInterceptorDEPRECATED: + self.assertTrue(car_params.openpilotLongitudinalControl) + # Lateral sanity checks if car_params.steerControlType != car.CarParams.SteerControlType.angle: tune = car_params.lateralTuning diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index c6bc24963c..8d5629992a 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -1,11 +1,12 @@ from cereal import car -from openpilot.common.numpy_fast import clip +from openpilot.common.numpy_fast import clip, interp from openpilot.common.params import Params -from openpilot.selfdrive.car import apply_meas_steer_torque_limits, apply_std_steer_angle_limits, common_fault_avoidance, make_can_msg +from openpilot.selfdrive.car import apply_meas_steer_torque_limits, apply_std_steer_angle_limits, common_fault_avoidance, \ + create_gas_interceptor_command, make_can_msg from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.toyota import toyotacan from openpilot.selfdrive.car.toyota.values import CAR, STATIC_DSU_MSGS, NO_STOP_TIMER_CAR, TSS2_CAR, \ - CarControllerParams, ToyotaFlags, \ + MIN_ACC_SPEED, PEDAL_TRANSITION, CarControllerParams, ToyotaFlags, \ UNSUPPORTED_DSU_CAR from opendbc.can.packer import CANPacker @@ -104,6 +105,21 @@ class CarController(CarControllerBase): lta_active, self.frame // 2, torque_wind_down)) # *** gas and brake *** + if self.CP.enableGasInterceptorDEPRECATED and CC.longActive: + MAX_INTERCEPTOR_GAS = 0.5 + # RAV4 has very sensitive gas pedal + if self.CP.carFingerprint in (CAR.RAV4, CAR.RAV4H, CAR.HIGHLANDER): + PEDAL_SCALE = interp(CS.out.vEgo, [0.0, MIN_ACC_SPEED, MIN_ACC_SPEED + PEDAL_TRANSITION], [0.15, 0.3, 0.0]) + elif self.CP.carFingerprint in (CAR.COROLLA,): + PEDAL_SCALE = interp(CS.out.vEgo, [0.0, MIN_ACC_SPEED, MIN_ACC_SPEED + PEDAL_TRANSITION], [0.3, 0.4, 0.0]) + else: + PEDAL_SCALE = interp(CS.out.vEgo, [0.0, MIN_ACC_SPEED, MIN_ACC_SPEED + PEDAL_TRANSITION], [0.4, 0.5, 0.0]) + # offset for creep and windbrake + pedal_offset = interp(CS.out.vEgo, [0.0, 2.3, MIN_ACC_SPEED + PEDAL_TRANSITION], [-.4, 0.0, 0.2]) + pedal_command = PEDAL_SCALE * (actuators.accel + pedal_offset) + interceptor_gas_cmd = clip(pedal_command, 0., MAX_INTERCEPTOR_GAS) + else: + interceptor_gas_cmd = 0. pcm_accel_cmd = clip(actuators.accel, self.params.ACCEL_MIN, self.params.ACCEL_MAX) # TODO: probably can delete this. CS.pcm_acc_status uses a different signal @@ -112,7 +128,7 @@ class CarController(CarControllerBase): pcm_cancel_cmd = 1 # on entering standstill, send standstill request - if CS.out.standstill and not self.last_standstill and (self.CP.carFingerprint not in NO_STOP_TIMER_CAR): + if CS.out.standstill and not self.last_standstill and (self.CP.carFingerprint not in NO_STOP_TIMER_CAR or self.CP.enableGasInterceptorDEPRECATED): self.standstill_req = True if CS.pcm_acc_status != 8: # pcm entered standstill or it's disabled @@ -147,6 +163,12 @@ class CarController(CarControllerBase): else: can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False, self.distance_button, reverse_acc)) + if self.frame % 2 == 0 and self.CP.enableGasInterceptorDEPRECATED and self.CP.openpilotLongitudinalControl: + # send exactly zero if gas cmd is zero. Interceptor will send the max between read value and gas cmd. + # This prevents unexpected pedal range rescaling + can_sends.append(create_gas_interceptor_command(self.packer, interceptor_gas_cmd, self.frame // 2)) + self.gas = interceptor_gas_cmd + # *** hud ui *** if self.CP.carFingerprint != CAR.TOYOTA_PRIUS_V: # ui mesg is at 1Hz but we send asap if: diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index abc0e686ff..c82701e0ef 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -69,7 +69,12 @@ class CarState(CarStateBase): ret.brakeHoldActive = cp.vl["ESP_CONTROL"]["BRAKE_HOLD_ACTIVE"] == 1 ret.brakeLightsDEPRECATED = bool(cp.vl["ESP_CONTROL"]["BRAKE_LIGHTS_ACC"]) - ret.gasPressed = cp.vl["PCM_CRUISE"]["GAS_RELEASED"] == 0 + if self.CP.enableGasInterceptorDEPRECATED: + ret.gas = (cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS"] + cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS2"]) // 2 + ret.gasPressed = ret.gas > 805 + else: + # TODO: find a common gas pedal percentage signal + ret.gasPressed = cp.vl["PCM_CRUISE"]["GAS_RELEASED"] == 0 ret.wheelSpeeds = self.get_wheel_speeds( cp.vl["WHEEL_SPEEDS"]["WHEEL_SPEED_FL"], @@ -298,6 +303,10 @@ class CarState(CarStateBase): else: messages.append(("PCM_CRUISE_2", 33)) + # add gas interceptor reading if we are using it + if CP.enableGasInterceptorDEPRECATED: + messages.append(("GAS_SENSOR", 50)) + if CP.enableBsm: messages.append(("BSM", 1)) diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index cda790b324..03fede6ff3 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -134,20 +134,24 @@ class CarInterface(CarInterfaceBase): # - TSS-P DSU-less cars w/ CAN filter installed (no radar parser yet) ret.openpilotLongitudinalControl = use_sdsu or ret.enableDsu or candidate in (TSS2_CAR - RADAR_ACC_CAR) or bool(ret.flags & ToyotaFlags.DISABLE_RADAR.value) ret.autoResumeSng = ret.openpilotLongitudinalControl and candidate in NO_STOP_TIMER_CAR + ret.enableGasInterceptorDEPRECATED = 0x201 in fingerprint[0] and ret.openpilotLongitudinalControl if not ret.openpilotLongitudinalControl: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL + if ret.enableGasInterceptorDEPRECATED: + ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_GAS_INTERCEPTOR + # min speed to enable ACC. if car can do stop and go, then set enabling speed # to a negative value, so it won't matter. - ret.minEnableSpeed = -1. if stop_and_go else MIN_ACC_SPEED + ret.minEnableSpeed = -1. if (stop_and_go or ret.enableGasInterceptorDEPRECATED) else MIN_ACC_SPEED sp_tss2_long_tune = Params().get_bool("ToyotaTSS2Long") tune = ret.longitudinalTuning tune.deadzoneBP = [0., 9.] tune.deadzoneV = [.0, .15] - if candidate in TSS2_CAR: + if candidate in TSS2_CAR or ret.enableGasInterceptorDEPRECATED: tune.kpBP = [0., 5., 20., 30.] if sp_tss2_long_tune else [0., 5., 20.] tune.kpV = [1.3, 1.0, 0.7, 0.1] if sp_tss2_long_tune else [1.3, 1.0, 0.7] tune.kiBP = [0., 1., 2., 3., 4., 5., 12., 20., 27., 40.] if sp_tss2_long_tune else [0., 5., 12., 20., 27.] @@ -188,7 +192,7 @@ class CarInterface(CarInterfaceBase): events.add(EventName.vehicleSensorsInvalid) if self.CP.openpilotLongitudinalControl: - if ret.cruiseState.standstill and not ret.brakePressed: + if ret.cruiseState.standstill and not ret.brakePressed and not self.CP.enableGasInterceptorDEPRECATED: events.add(EventName.resumeRequired) if self.CS.low_speed_lockout: events.add(EventName.lowSpeedLockout) diff --git a/selfdrive/controls/lib/longcontrol.py b/selfdrive/controls/lib/longcontrol.py index 2dd3390bb0..dfacb2df92 100644 --- a/selfdrive/controls/lib/longcontrol.py +++ b/selfdrive/controls/lib/longcontrol.py @@ -10,6 +10,8 @@ LongCtrlState = car.CarControl.Actuators.LongControlState def long_control_state_trans(CP, active, long_control_state, v_ego, v_target, v_target_1sec, brake_pressed, cruise_standstill): + # Ignore cruise standstill if car has a gas interceptor + cruise_standstill = cruise_standstill and not CP.enableGasInterceptorDEPRECATED accelerating = v_target_1sec > v_target planned_stop = (v_target < CP.vEgoStopping and v_target_1sec < CP.vEgoStopping and diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index 152f281948..377897448d 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -74,7 +74,7 @@ def migrate_pandaStates(lr): # TODO: safety param migration should be handled automatically safety_param_migration = { "TOYOTA_PRIUS": EPS_SCALE["TOYOTA_PRIUS"] | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL, - "TOYOTA_RAV4": EPS_SCALE["TOYOTA_RAV4"] | Panda.FLAG_TOYOTA_ALT_BRAKE, + "TOYOTA_RAV4": EPS_SCALE["TOYOTA_RAV4"] | Panda.FLAG_TOYOTA_ALT_BRAKE | Panda.FLAG_TOYOTA_GAS_INTERCEPTOR, "KIA_EV6": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CANFD_HDA2, } From aca01365e6715c1c5c18242e81e27c6feed151c6 Mon Sep 17 00:00:00 2001 From: Hoang Bui <47828508+bongbui321@users.noreply.github.com> Date: Sun, 5 May 2024 19:32:08 -0400 Subject: [PATCH 555/599] CI/Simulator: Add Metadrive test to CI (#32352) * works consistently * ci gha * fix * navd * fix * cleanup * change button * cleanup --------- Co-authored-by: Adeeb Shihadeh --- .github/workflows/tools_tests.yaml | 26 ++++++++++++++++++++++++-- tools/sim/bridge/common.py | 4 +++- tools/sim/tests/test_sim_bridge.py | 2 -- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tools_tests.yaml b/.github/workflows/tools_tests.yaml index 89c3efbac6..ccd3368cb0 100644 --- a/.github/workflows/tools_tests.yaml +++ b/.github/workflows/tools_tests.yaml @@ -37,8 +37,8 @@ jobs: run: | ${{ env.RUN }} "pytest tools/plotjuggler/" - simulator: - name: simulator + simulator_build: + name: simulator docker build runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' timeout-minutes: 45 @@ -56,6 +56,28 @@ jobs: run: | selfdrive/test/docker_build.sh sim + simulator_driving: + name: simulator driving + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - run: git lfs pull + - uses: ./.github/workflows/setup-with-retry + - name: Build base docker image + run: eval "$BUILD" + - name: Build openpilot + run: | + ${{ env.RUN }} "scons -j$(nproc)" + - name: Run bridge test + run: | + ${{ env.RUN }} "export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' && \ + source selfdrive/test/setup_xvfb.sh && \ + source selfdrive/test/setup_vsound.sh && \ + CI=1 tools/sim/tests/test_metadrive_bridge.py" + devcontainer: name: devcontainer runs-on: ubuntu-latest diff --git a/tools/sim/bridge/common.py b/tools/sim/bridge/common.py index 3bd2f35772..46d09c7b9d 100644 --- a/tools/sim/bridge/common.py +++ b/tools/sim/bridge/common.py @@ -46,6 +46,7 @@ class SimulatorBridge(ABC): self.world: World | None = None self.past_startup_engaged = False + self.startup_button_prev = True def _on_shutdown(self, signal, frame): self.shutdown() @@ -161,7 +162,8 @@ Ignition: {self.simulator_state.ignition} Engaged: {self.simulator_state.is_enga self.past_startup_engaged = True elif not self.past_startup_engaged and controlsState.engageable: - self.simulator_state.cruise_button = CruiseButtons.DECEL_SET # force engagement on startup + self.simulator_state.cruise_button = CruiseButtons.DECEL_SET if self.startup_button_prev else CruiseButtons.MAIN # force engagement on startup + self.startup_button_prev = not self.startup_button_prev throttle_out = throttle_op if self.simulator_state.is_engaged else throttle_manual brake_out = brake_op if self.simulator_state.is_engaged else brake_manual diff --git a/tools/sim/tests/test_sim_bridge.py b/tools/sim/tests/test_sim_bridge.py index 504914c562..d9653d5cfd 100644 --- a/tools/sim/tests/test_sim_bridge.py +++ b/tools/sim/tests/test_sim_bridge.py @@ -62,8 +62,6 @@ class TestSimBridgeBase(unittest.TestCase): while time.monotonic() < start_time + max_time_per_step: sm.update() - q.put("cruise_down") # Try engaging - if sm.all_alive() and sm['controlsState'].active: control_active += 1 From 3c32585a9262847049e5cbf879d87b409a495c43 Mon Sep 17 00:00:00 2001 From: commaci-public <60409688+commaci-public@users.noreply.github.com> Date: Mon, 6 May 2024 13:46:58 -0700 Subject: [PATCH 556/599] [bot] Update Python packages and pre-commit hooks (#32355) Update Python packages and pre-commit hooks Co-authored-by: Vehicle Researcher --- .pre-commit-config.yaml | 2 +- poetry.lock | 438 ++++++++++++++++++++-------------------- 2 files changed, 221 insertions(+), 219 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d17fe6b7db..e9c7d93d88 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,7 +33,7 @@ repos: - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.2 + rev: v0.4.3 hooks: - id: ruff exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)' diff --git a/poetry.lock b/poetry.lock index 2e66336f11..70e91f2cc2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.0 and should not be changed by hand. [[package]] name = "aiohttp" @@ -311,13 +311,13 @@ aio = ["azure-core[aio] (>=1.28.0,<2.0.0)"] [[package]] name = "babel" -version = "2.14.0" +version = "2.15.0" description = "Internationalization utilities" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, ] [package.extras] @@ -756,63 +756,63 @@ test = ["pytest", "pytest-timeout"] [[package]] name = "coverage" -version = "7.5.0" +version = "7.5.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:432949a32c3e3f820af808db1833d6d1631664d53dd3ce487aa25d574e18ad1c"}, - {file = "coverage-7.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bd7065249703cbeb6d4ce679c734bef0ee69baa7bff9724361ada04a15b7e3b"}, - {file = "coverage-7.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbfe6389c5522b99768a93d89aca52ef92310a96b99782973b9d11e80511f932"}, - {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39793731182c4be939b4be0cdecde074b833f6171313cf53481f869937129ed3"}, - {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85a5dbe1ba1bf38d6c63b6d2c42132d45cbee6d9f0c51b52c59aa4afba057517"}, - {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:357754dcdfd811462a725e7501a9b4556388e8ecf66e79df6f4b988fa3d0b39a"}, - {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a81eb64feded34f40c8986869a2f764f0fe2db58c0530d3a4afbcde50f314880"}, - {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51431d0abbed3a868e967f8257c5faf283d41ec882f58413cf295a389bb22e58"}, - {file = "coverage-7.5.0-cp310-cp310-win32.whl", hash = "sha256:f609ebcb0242d84b7adeee2b06c11a2ddaec5464d21888b2c8255f5fd6a98ae4"}, - {file = "coverage-7.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:6782cd6216fab5a83216cc39f13ebe30adfac2fa72688c5a4d8d180cd52e8f6a"}, - {file = "coverage-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e768d870801f68c74c2b669fc909839660180c366501d4cc4b87efd6b0eee375"}, - {file = "coverage-7.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84921b10aeb2dd453247fd10de22907984eaf80901b578a5cf0bb1e279a587cb"}, - {file = "coverage-7.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710c62b6e35a9a766b99b15cdc56d5aeda0914edae8bb467e9c355f75d14ee95"}, - {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c379cdd3efc0658e652a14112d51a7668f6bfca7445c5a10dee7eabecabba19d"}, - {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea9d3ca80bcf17edb2c08a4704259dadac196fe5e9274067e7a20511fad1743"}, - {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:41327143c5b1d715f5f98a397608f90ab9ebba606ae4e6f3389c2145410c52b1"}, - {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:565b2e82d0968c977e0b0f7cbf25fd06d78d4856289abc79694c8edcce6eb2de"}, - {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cf3539007202ebfe03923128fedfdd245db5860a36810136ad95a564a2fdffff"}, - {file = "coverage-7.5.0-cp311-cp311-win32.whl", hash = "sha256:bf0b4b8d9caa8d64df838e0f8dcf68fb570c5733b726d1494b87f3da85db3a2d"}, - {file = "coverage-7.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c6384cc90e37cfb60435bbbe0488444e54b98700f727f16f64d8bfda0b84656"}, - {file = "coverage-7.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fed7a72d54bd52f4aeb6c6e951f363903bd7d70bc1cad64dd1f087980d309ab9"}, - {file = "coverage-7.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbe6581fcff7c8e262eb574244f81f5faaea539e712a058e6707a9d272fe5b64"}, - {file = "coverage-7.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad97ec0da94b378e593ef532b980c15e377df9b9608c7c6da3506953182398af"}, - {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4bacd62aa2f1a1627352fe68885d6ee694bdaebb16038b6e680f2924a9b2cc"}, - {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf032b6c105881f9d77fa17d9eebe0ad1f9bfb2ad25777811f97c5362aa07f2"}, - {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ba01d9ba112b55bfa4b24808ec431197bb34f09f66f7cb4fd0258ff9d3711b1"}, - {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f0bfe42523893c188e9616d853c47685e1c575fe25f737adf473d0405dcfa7eb"}, - {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a9a7ef30a1b02547c1b23fa9a5564f03c9982fc71eb2ecb7f98c96d7a0db5cf2"}, - {file = "coverage-7.5.0-cp312-cp312-win32.whl", hash = "sha256:3c2b77f295edb9fcdb6a250f83e6481c679335ca7e6e4a955e4290350f2d22a4"}, - {file = "coverage-7.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:427e1e627b0963ac02d7c8730ca6d935df10280d230508c0ba059505e9233475"}, - {file = "coverage-7.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9dd88fce54abbdbf4c42fb1fea0e498973d07816f24c0e27a1ecaf91883ce69e"}, - {file = "coverage-7.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a898c11dca8f8c97b467138004a30133974aacd572818c383596f8d5b2eb04a9"}, - {file = "coverage-7.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07dfdd492d645eea1bd70fb1d6febdcf47db178b0d99161d8e4eed18e7f62fe7"}, - {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3d117890b6eee85887b1eed41eefe2e598ad6e40523d9f94c4c4b213258e4a4"}, - {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6afd2e84e7da40fe23ca588379f815fb6dbbb1b757c883935ed11647205111cb"}, - {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9960dd1891b2ddf13a7fe45339cd59ecee3abb6b8326d8b932d0c5da208104f"}, - {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ced268e82af993d7801a9db2dbc1d2322e786c5dc76295d8e89473d46c6b84d4"}, - {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7c211f25777746d468d76f11719e64acb40eed410d81c26cefac641975beb88"}, - {file = "coverage-7.5.0-cp38-cp38-win32.whl", hash = "sha256:262fffc1f6c1a26125d5d573e1ec379285a3723363f3bd9c83923c9593a2ac25"}, - {file = "coverage-7.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:eed462b4541c540d63ab57b3fc69e7d8c84d5957668854ee4e408b50e92ce26a"}, - {file = "coverage-7.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0194d654e360b3e6cc9b774e83235bae6b9b2cac3be09040880bb0e8a88f4a1"}, - {file = "coverage-7.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33c020d3322662e74bc507fb11488773a96894aa82a622c35a5a28673c0c26f5"}, - {file = "coverage-7.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbdf2cae14a06827bec50bd58e49249452d211d9caddd8bd80e35b53cb04631"}, - {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3235d7c781232e525b0761730e052388a01548bd7f67d0067a253887c6e8df46"}, - {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2de4e546f0ec4b2787d625e0b16b78e99c3e21bc1722b4977c0dddf11ca84e"}, - {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0e206259b73af35c4ec1319fd04003776e11e859936658cb6ceffdeba0f5be"}, - {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2055c4fb9a6ff624253d432aa471a37202cd8f458c033d6d989be4499aed037b"}, - {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075299460948cd12722a970c7eae43d25d37989da682997687b34ae6b87c0ef0"}, - {file = "coverage-7.5.0-cp39-cp39-win32.whl", hash = "sha256:280132aada3bc2f0fac939a5771db4fbb84f245cb35b94fae4994d4c1f80dae7"}, - {file = "coverage-7.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:c58536f6892559e030e6924896a44098bc1290663ea12532c78cef71d0df8493"}, - {file = "coverage-7.5.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:2b57780b51084d5223eee7b59f0d4911c31c16ee5aa12737c7a02455829ff067"}, - {file = "coverage-7.5.0.tar.gz", hash = "sha256:cf62d17310f34084c59c01e027259076479128d11e4661bb6c9acb38c5e19bb8"}, + {file = "coverage-7.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e"}, + {file = "coverage-7.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146"}, + {file = "coverage-7.5.1-cp310-cp310-win32.whl", hash = "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228"}, + {file = "coverage-7.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8"}, + {file = "coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428"}, + {file = "coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987"}, + {file = "coverage-7.5.1-cp311-cp311-win32.whl", hash = "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136"}, + {file = "coverage-7.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd"}, + {file = "coverage-7.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206"}, + {file = "coverage-7.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7"}, + {file = "coverage-7.5.1-cp312-cp312-win32.whl", hash = "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19"}, + {file = "coverage-7.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596"}, + {file = "coverage-7.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7"}, + {file = "coverage-7.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d"}, + {file = "coverage-7.5.1-cp38-cp38-win32.whl", hash = "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41"}, + {file = "coverage-7.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de"}, + {file = "coverage-7.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1"}, + {file = "coverage-7.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668"}, + {file = "coverage-7.5.1-cp39-cp39-win32.whl", hash = "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981"}, + {file = "coverage-7.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f"}, + {file = "coverage-7.5.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312"}, + {file = "coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c"}, ] [package.extras] @@ -830,43 +830,43 @@ files = [ [[package]] name = "cryptography" -version = "42.0.5" +version = "42.0.6" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"}, - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"}, - {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"}, - {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"}, - {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"}, - {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"}, - {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"}, - {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"}, + {file = "cryptography-42.0.6-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:073104df012fc815eed976cd7d0a386c8725d0d0947cf9c37f6c36a6c20feb1b"}, + {file = "cryptography-42.0.6-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:5967e3632f42b0c0f9dc2c9da88c79eabdda317860b246d1fbbde4a8bbbc3b44"}, + {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99831397fdc6e6e0aa088b060c278c6e635d25c0d4d14bdf045bf81792fda0a"}, + {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:089aeb297ff89615934b22c7631448598495ffd775b7d540a55cfee35a677bf4"}, + {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:97eeacae9aa526ddafe68b9202a535f581e21d78f16688a84c8dcc063618e121"}, + {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f4cece02478d73dacd52be57a521d168af64ae03d2a567c0c4eb6f189c3b9d79"}, + {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb6f56b004e898df5530fa873e598ec78eb338ba35f6fa1449970800b1d97c2"}, + {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8b90c57b3cd6128e0863b894ce77bd36fcb5f430bf2377bc3678c2f56e232316"}, + {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d16a310c770cc49908c500c2ceb011f2840674101a587d39fa3ea828915b7e83"}, + {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e3442601d276bd9e961d618b799761b4e5d892f938e8a4fe1efbe2752be90455"}, + {file = "cryptography-42.0.6-cp37-abi3-win32.whl", hash = "sha256:00c0faa5b021457848d031ecff041262211cc1e2bce5f6e6e6c8108018f6b44a"}, + {file = "cryptography-42.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:b16b90605c62bcb3aa7755d62cf5e746828cfc3f965a65211849e00c46f8348d"}, + {file = "cryptography-42.0.6-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:eecca86813c6a923cabff284b82ff4d73d9e91241dc176250192c3a9b9902a54"}, + {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d93080d2b01b292e7ee4d247bf93ed802b0100f5baa3fa5fd6d374716fa480d4"}, + {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff75b88a4d273c06d968ad535e6cb6a039dd32db54fe36f05ed62ac3ef64a44"}, + {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c05230d8aaaa6b8ab3ab41394dc06eb3d916131df1c9dcb4c94e8f041f704b74"}, + {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9184aff0856261ecb566a3eb26a05dfe13a292c85ce5c59b04e4aa09e5814187"}, + {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:4bdb39ecbf05626e4bfa1efd773bb10346af297af14fb3f4c7cb91a1d2f34a46"}, + {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e85f433230add2aa26b66d018e21134000067d210c9c68ef7544ba65fc52e3eb"}, + {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:65d529c31bd65d54ce6b926a01e1b66eacf770b7e87c0622516a840e400ec732"}, + {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f1e933b238978ccfa77b1fee0a297b3c04983f4cb84ae1c33b0ea4ae08266cc9"}, + {file = "cryptography-42.0.6-cp39-abi3-win32.whl", hash = "sha256:bc954251edcd8a952eeaec8ae989fec7fe48109ab343138d537b7ea5bb41071a"}, + {file = "cryptography-42.0.6-cp39-abi3-win_amd64.whl", hash = "sha256:9f1a3bc2747166b0643b00e0b56cd9b661afc9d5ff963acaac7a9c7b2b1ef638"}, + {file = "cryptography-42.0.6-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:945a43ebf036dd4b43ebfbbd6b0f2db29ad3d39df824fb77476ca5777a9dde33"}, + {file = "cryptography-42.0.6-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f567a82b7c2b99257cca2a1c902c1b129787278ff67148f188784245c7ed5495"}, + {file = "cryptography-42.0.6-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3b750279f3e7715df6f68050707a0cee7cbe81ba2eeb2f21d081bd205885ffed"}, + {file = "cryptography-42.0.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6981acac509cc9415344cb5bfea8130096ea6ebcc917e75503143a1e9e829160"}, + {file = "cryptography-42.0.6-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:076c92b08dd1ab88108bc84545187e10d3693a9299c593f98c4ea195a0b0ead7"}, + {file = "cryptography-42.0.6-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81dbe47e28b703bc4711ac74a64ef8b758a0cf056ce81d08e39116ab4bc126fa"}, + {file = "cryptography-42.0.6-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e1f5f15c5ddadf6ee4d1d624a2ae940f14bd74536230b0056ccb28bb6248e42a"}, + {file = "cryptography-42.0.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:43e521f21c2458038d72e8cdfd4d4d9f1d00906a7b6636c4272e35f650d1699b"}, + {file = "cryptography-42.0.6.tar.gz", hash = "sha256:f987a244dfb0333fbd74a691c36000a2569eaf7c7cc2ac838f85f59f0588ddc9"}, ] [package.dependencies] @@ -1707,13 +1707,13 @@ testing = ["pytest (==7.1.3)"] [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -2051,7 +2051,6 @@ files = [ {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, - {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, @@ -3543,17 +3542,16 @@ pyrect = "*" [[package]] name = "pygments" -version = "2.17.2" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] -plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] [[package]] @@ -6921,6 +6919,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -6957,99 +6956,99 @@ files = [ [[package]] name = "pyzmq" -version = "26.0.2" +version = "26.0.3" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.7" files = [ - {file = "pyzmq-26.0.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:1a60a03b01e8c9c58932ec0cca15b1712d911c2800eb82d4281bc1ae5b6dad50"}, - {file = "pyzmq-26.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:949067079e14ea1973bd740255e0840118c163d4bce8837f539d749f145cf5c3"}, - {file = "pyzmq-26.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37e7edfa6cf96d036a403775c96afa25058d1bb940a79786a9a2fc94a783abe3"}, - {file = "pyzmq-26.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:903cc7a84a7d4326b43755c368780800e035aa3d711deae84a533fdffa8755b0"}, - {file = "pyzmq-26.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cb2e41af165e5f327d06fbdd79a42a4e930267fade4e9f92d17f3ccce03f3a7"}, - {file = "pyzmq-26.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:55353b8189adcfc4c125fc4ce59d477744118e9c0ec379dd0999c5fa120ac4f5"}, - {file = "pyzmq-26.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f961423ff6236a752ced80057a20e623044df95924ed1009f844cde8b3a595f9"}, - {file = "pyzmq-26.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ba77fe84fe4f5f3dc0ef681a6d366685c8ffe1c8439c1d7530997b05ac06a04b"}, - {file = "pyzmq-26.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:52589f0a745ef61b9c75c872cf91f8c1f7c0668eb3dd99d7abd639d8c0fb9ca7"}, - {file = "pyzmq-26.0.2-cp310-cp310-win32.whl", hash = "sha256:b7b6d2a46c7afe2ad03ec8faf9967090c8ceae85c4d8934d17d7cae6f9062b64"}, - {file = "pyzmq-26.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:86531e20de249d9204cc6d8b13d5a30537748c78820215161d8a3b9ea58ca111"}, - {file = "pyzmq-26.0.2-cp310-cp310-win_arm64.whl", hash = "sha256:f26a05029ecd2bd306b941ff8cb80f7620b7901421052bc429d238305b1cbf2f"}, - {file = "pyzmq-26.0.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:70770e296a9cb03d955540c99360aab861cbb3cba29516abbd106a15dbd91268"}, - {file = "pyzmq-26.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2740fd7161b39e178554ebf21aa5667a1c9ef0cd2cb74298fd4ef017dae7aec4"}, - {file = "pyzmq-26.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5e3706c32dea077faa42b1c92d825b7f86c866f72532d342e0be5e64d14d858"}, - {file = "pyzmq-26.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fa1416876194927f7723d6b7171b95e1115602967fc6bfccbc0d2d51d8ebae1"}, - {file = "pyzmq-26.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ef9a79a48794099c57dc2df00340b5d47c5caa1792f9ddb8c7a26b1280bd575"}, - {file = "pyzmq-26.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1c60fcdfa3229aeee4291c5d60faed3a813b18bdadb86299c4bf49e8e51e8605"}, - {file = "pyzmq-26.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e943c39c206b04df2eb5d71305761d7c3ca75fd49452115ea92db1b5b98dbdef"}, - {file = "pyzmq-26.0.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8da0ed8a598693731c76659880a668f4748b59158f26ed283a93f7f04d47447e"}, - {file = "pyzmq-26.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bf51970b11d67096bede97cdbad0f4333f7664f4708b9b2acb352bf4faa3140"}, - {file = "pyzmq-26.0.2-cp311-cp311-win32.whl", hash = "sha256:6f8e6bd5d066be605faa9fe5ec10aa1a46ad9f18fc8646f2b9aaefc8fb575742"}, - {file = "pyzmq-26.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:6d03da3a0ae691b361edcb39530075461202f699ce05adbb15055a0e1c9bcaa4"}, - {file = "pyzmq-26.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:f84e33321b68ff00b60e9dbd1a483e31ab6022c577c8de525b8e771bd274ce68"}, - {file = "pyzmq-26.0.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:44c33ebd1c62a01db7fbc24e18bdda569d6639217d13d5929e986a2b0f69070d"}, - {file = "pyzmq-26.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ac04f904b4fce4afea9cdccbb78e24d468cb610a839d5a698853e14e2a3f9ecf"}, - {file = "pyzmq-26.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2133de5ba9adc5f481884ccb699eac9ce789708292945c05746880f95b241c0"}, - {file = "pyzmq-26.0.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7753c67c570d7fc80c2dc59b90ca1196f1224e0e2e29a548980c95fe0fe27fc1"}, - {file = "pyzmq-26.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d4e51632e6b12e65e8d9d7612446ecda2eda637a868afa7bce16270194650dd"}, - {file = "pyzmq-26.0.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d6c38806f6ecd0acf3104b8d7e76a206bcf56dadd6ce03720d2fa9d9157d5718"}, - {file = "pyzmq-26.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:48f496bbe14686b51cec15406323ae6942851e14022efd7fc0e2ecd092c5982c"}, - {file = "pyzmq-26.0.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e84a3161149c75bb7a7dc8646384186c34033e286a67fec1ad1bdedea165e7f4"}, - {file = "pyzmq-26.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:dabf796c67aa9f5a4fcc956d47f0d48b5c1ed288d628cf53aa1cf08e88654343"}, - {file = "pyzmq-26.0.2-cp312-cp312-win32.whl", hash = "sha256:3eee4c676af1b109f708d80ef0cf57ecb8aaa5900d1edaf90406aea7e0e20e37"}, - {file = "pyzmq-26.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:26721fec65846b3e4450dad050d67d31b017f97e67f7e0647b5f98aa47f828cf"}, - {file = "pyzmq-26.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:653955c6c233e90de128a1b8e882abc7216f41f44218056bd519969c8c413a15"}, - {file = "pyzmq-26.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:becd8d8fb068fbb5a52096efd83a2d8e54354383f691781f53a4c26aee944542"}, - {file = "pyzmq-26.0.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7a15e5465e7083c12517209c9dd24722b25e9b63c49a563922922fc03554eb35"}, - {file = "pyzmq-26.0.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e8158ac8616941f874841f9fa0f6d2f1466178c2ff91ea08353fdc19de0d40c2"}, - {file = "pyzmq-26.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c6a53e28c7066ea7db86fcc0b71d78d01b818bb11d4a4341ec35059885295"}, - {file = "pyzmq-26.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bdbc7dab0b0e9c62c97b732899c4242e3282ba803bad668e03650b59b165466e"}, - {file = "pyzmq-26.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e74b6d5ef57bb65bf1b4a37453d8d86d88550dde3fb0f23b1f1a24e60c70af5b"}, - {file = "pyzmq-26.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ed4c6ee624ecbc77b18aeeb07bf0700d26571ab95b8f723f0d02e056b5bce438"}, - {file = "pyzmq-26.0.2-cp37-cp37m-win32.whl", hash = "sha256:8a98b3cb0484b83c19d8fb5524c8a469cd9f10e743f5904ac285d92678ee761f"}, - {file = "pyzmq-26.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:aa5f95d71b6eca9cec28aa0a2f8310ea53dea313b63db74932879ff860c1fb8d"}, - {file = "pyzmq-26.0.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:5ff56c76ce77b9805378a7a73032c17cbdb1a5b84faa1df03c5d3e306e5616df"}, - {file = "pyzmq-26.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bab697fc1574fee4b81da955678708567c43c813c84c91074e452bda5346c921"}, - {file = "pyzmq-26.0.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0c0fed8aa9ba0488ee1cbdaa304deea92d52fab43d373297002cfcc69c0a20c5"}, - {file = "pyzmq-26.0.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:606b922699fcec472ed814dda4dc3ff7c748254e0b26762a0ba21a726eb1c107"}, - {file = "pyzmq-26.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45f0fd82bad4d199fa993fbf0ac586a7ac5879addbe436a35a389df7e0eb4c91"}, - {file = "pyzmq-26.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:166c5e41045939a52c01e6f374e493d9a6a45dfe677360d3e7026e38c42e8906"}, - {file = "pyzmq-26.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d566e859e8b8d5bca08467c093061774924b3d78a5ba290e82735b2569edc84b"}, - {file = "pyzmq-26.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:264ee0e72b72ca59279dc320deab5ae0fac0d97881aed1875ce4bde2e56ffde0"}, - {file = "pyzmq-26.0.2-cp38-cp38-win32.whl", hash = "sha256:3152bbd3a4744cbdd83dfb210ed701838b8b0c9065cef14671d6d91df12197d0"}, - {file = "pyzmq-26.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:bf77601d75ca692c179154b7e5943c286a4aaffec02c491afe05e60493ce95f2"}, - {file = "pyzmq-26.0.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:c770a7545b3deca2db185b59175e710a820dd4ed43619f4c02e90b0e227c6252"}, - {file = "pyzmq-26.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d47175f0a380bfd051726bc5c0054036ae4a5d8caf922c62c8a172ccd95c1a2a"}, - {file = "pyzmq-26.0.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bce298c1ce077837e110367c321285dc4246b531cde1abfc27e4a5bbe2bed4d"}, - {file = "pyzmq-26.0.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c40b09b7e184d6e3e1be1c8af2cc320c0f9f610d8a5df3dd866e6e6e4e32b235"}, - {file = "pyzmq-26.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d420d856bf728713874cefb911398efe69e1577835851dd297a308a78c14c249"}, - {file = "pyzmq-26.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d792d3cab987058451e55c70c5926e93e2ceb68ca5a2334863bb903eb860c9cb"}, - {file = "pyzmq-26.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:83ec17729cf6d3464dab98a11e98294fcd50e6b17eaabd3d841515c23f6dbd3a"}, - {file = "pyzmq-26.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47c17d5ebfa88ae90f08960c97b49917098665b8cd8be31f2c24e177bcf37a0f"}, - {file = "pyzmq-26.0.2-cp39-cp39-win32.whl", hash = "sha256:d509685d1cd1d018705a811c5f9d5bc237790936ead6d06f6558b77e16cc7235"}, - {file = "pyzmq-26.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:c7cc8cc009e8f6989a6d86c96f87dae5f5fb07d6c96916cdc7719d546152c7db"}, - {file = "pyzmq-26.0.2-cp39-cp39-win_arm64.whl", hash = "sha256:3ada31cb879cd7532f4a85b501f4255c747d4813ab76b35c49ed510ce4865b45"}, - {file = "pyzmq-26.0.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0a6ceaddc830dd3ca86cb8451cf373d1f05215368e11834538c2902ed5205139"}, - {file = "pyzmq-26.0.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a967681463aa7a99eb9a62bb18229b653b45c10ff0947b31cc0837a83dfb86f"}, - {file = "pyzmq-26.0.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6472a73bc115bc40a2076609a90894775abe6faf19a78375675a2f889a613071"}, - {file = "pyzmq-26.0.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d6aea92bcccfe5e5524d3c70a6f16ffdae548390ddad26f4207d55c55a40593"}, - {file = "pyzmq-26.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e025f6351e49d48a5aa2f5a09293aa769b0ee7369c25bed551647234b7fa0c75"}, - {file = "pyzmq-26.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:40bd7ebe4dbb37d27f0c56e2a844f360239343a99be422085e13e97da13f73f9"}, - {file = "pyzmq-26.0.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dd40d586ad6f53764104df6e01810fe1b4e88fd353774629a5e6fe253813f79"}, - {file = "pyzmq-26.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f2aca15e9ad8c8657b5b3d7ae3d1724dc8c1c1059c06b4b674c3aa36305f4930"}, - {file = "pyzmq-26.0.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:450ec234736732eb0ebeffdb95a352450d4592f12c3e087e2a9183386d22c8bf"}, - {file = "pyzmq-26.0.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f43be2bebbd09360a2f23af83b243dc25ffe7b583ea8c722e6df03e03a55f02f"}, - {file = "pyzmq-26.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:867f55e54aff254940bcec5eec068e7c0ac1e6bf360ab91479394a8bf356b0e6"}, - {file = "pyzmq-26.0.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b4dbc033c5ad46f8c429bf238c25a889b8c1d86bfe23a74e1031a991cb3f0000"}, - {file = "pyzmq-26.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6e8dd2961462e337e21092ec2da0c69d814dcb1b6e892955a37444a425e9cfb8"}, - {file = "pyzmq-26.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35391e72df6c14a09b697c7b94384947c1dd326aca883ff98ff137acdf586c33"}, - {file = "pyzmq-26.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:1c3d3c92fa54eda94ab369ca5b8d35059987c326ba5e55326eb068862f64b1fc"}, - {file = "pyzmq-26.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7aa61a9cc4f0523373e31fc9255bf4567185a099f85ca3598e64de484da3ab2"}, - {file = "pyzmq-26.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee53a8191271f144cc20b12c19daa9f1546adc84a2f33839e3338039b55c373c"}, - {file = "pyzmq-26.0.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac60a980f07fa988983f7bfe6404ef3f1e4303f5288a01713bc1266df6d18783"}, - {file = "pyzmq-26.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88896b1b4817d7b2fe1ec7205c4bbe07bf5d92fb249bf2d226ddea8761996068"}, - {file = "pyzmq-26.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:18dfffe23751edee917764ffa133d5d3fef28dfd1cf3adebef8c90bc854c74c4"}, - {file = "pyzmq-26.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6926dd14cfe6967d3322640b6d5c3c3039db71716a5e43cca6e3b474e73e0b36"}, - {file = "pyzmq-26.0.2.tar.gz", hash = "sha256:f0f9bb370449158359bb72a3e12c658327670c0ffe6fbcd1af083152b64f9df0"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, + {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, + {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, + {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, + {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, + {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, + {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, + {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, ] [package.dependencies] @@ -7078,43 +7077,43 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rubicon-objc" -version = "0.4.8" +version = "0.4.9" description = "A bridge between an Objective C runtime environment and Python." optional = false python-versions = ">=3.8" files = [ - {file = "rubicon-objc-0.4.8.tar.gz", hash = "sha256:f7bede0f0e73dde07083785984c75b3acf76116298743758ea5c51b3ebb81978"}, - {file = "rubicon_objc-0.4.8-py3-none-any.whl", hash = "sha256:59633f622e3c6e740bd9b3c4b60d0258fc2d30632b05d46cba12fae69539cfd3"}, + {file = "rubicon_objc-0.4.9-py3-none-any.whl", hash = "sha256:c351b3800cf74c8c23f7d534f008fd5de46c63818de7a44de96daffdb3ed8b8c"}, + {file = "rubicon_objc-0.4.9.tar.gz", hash = "sha256:3d77a5b2d10cb1e49679aa90b7824b46f67b3fd636229aa4a1b902d24aec6a58"}, ] [package.extras] -dev = ["pre-commit (==3.5.0)", "pre-commit (==3.7.0)", "pytest (==8.1.1)", "pytest-tldr (==0.2.5)", "setuptools-scm (==8.0.4)", "tox (==4.14.2)"] -docs = ["furo (==2024.1.29)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx (==7.2.6)", "sphinx-autobuild (==2021.3.14)", "sphinx-autobuild (==2024.2.4)", "sphinx-copybutton (==0.5.2)", "sphinx-tabs (==3.4.5)", "sphinxcontrib-spelling (==8.0.0)"] +dev = ["pre-commit (==3.5.0)", "pre-commit (==3.7.0)", "pytest (==8.2.0)", "pytest-tldr (==0.2.5)", "setuptools-scm (==8.0.4)", "tox (==4.15.0)"] +docs = ["furo (==2024.4.27)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx (==7.3.7)", "sphinx-autobuild (==2021.3.14)", "sphinx-autobuild (==2024.4.16)", "sphinx-copybutton (==0.5.2)", "sphinx-tabs (==3.4.5)", "sphinxcontrib-spelling (==8.0.0)"] [[package]] name = "ruff" -version = "0.4.2" +version = "0.4.3" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.4.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d14dc8953f8af7e003a485ef560bbefa5f8cc1ad994eebb5b12136049bbccc5"}, - {file = "ruff-0.4.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:24016ed18db3dc9786af103ff49c03bdf408ea253f3cb9e3638f39ac9cf2d483"}, - {file = "ruff-0.4.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2e06459042ac841ed510196c350ba35a9b24a643e23db60d79b2db92af0c2b"}, - {file = "ruff-0.4.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3afabaf7ba8e9c485a14ad8f4122feff6b2b93cc53cd4dad2fd24ae35112d5c5"}, - {file = "ruff-0.4.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:799eb468ea6bc54b95527143a4ceaf970d5aa3613050c6cff54c85fda3fde480"}, - {file = "ruff-0.4.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ec4ba9436a51527fb6931a8839af4c36a5481f8c19e8f5e42c2f7ad3a49f5069"}, - {file = "ruff-0.4.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6a2243f8f434e487c2a010c7252150b1fdf019035130f41b77626f5655c9ca22"}, - {file = "ruff-0.4.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8772130a063f3eebdf7095da00c0b9898bd1774c43b336272c3e98667d4fb8fa"}, - {file = "ruff-0.4.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ab165ef5d72392b4ebb85a8b0fbd321f69832a632e07a74794c0e598e7a8376"}, - {file = "ruff-0.4.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1f32cadf44c2020e75e0c56c3408ed1d32c024766bd41aedef92aa3ca28eef68"}, - {file = "ruff-0.4.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:22e306bf15e09af45ca812bc42fa59b628646fa7c26072555f278994890bc7ac"}, - {file = "ruff-0.4.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:82986bb77ad83a1719c90b9528a9dd663c9206f7c0ab69282af8223566a0c34e"}, - {file = "ruff-0.4.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:652e4ba553e421a6dc2a6d4868bc3b3881311702633eb3672f9f244ded8908cd"}, - {file = "ruff-0.4.2-py3-none-win32.whl", hash = "sha256:7891ee376770ac094da3ad40c116258a381b86c7352552788377c6eb16d784fe"}, - {file = "ruff-0.4.2-py3-none-win_amd64.whl", hash = "sha256:5ec481661fb2fd88a5d6cf1f83403d388ec90f9daaa36e40e2c003de66751798"}, - {file = "ruff-0.4.2-py3-none-win_arm64.whl", hash = "sha256:cbd1e87c71bca14792948c4ccb51ee61c3296e164019d2d484f3eaa2d360dfaf"}, - {file = "ruff-0.4.2.tar.gz", hash = "sha256:33bcc160aee2520664bc0859cfeaebc84bb7323becff3f303b8f1f2d81cb4edc"}, + {file = "ruff-0.4.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b70800c290f14ae6fcbb41bbe201cf62dfca024d124a1f373e76371a007454ce"}, + {file = "ruff-0.4.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:08a0d6a22918ab2552ace96adeaca308833873a4d7d1d587bb1d37bae8728eb3"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba1f14df3c758dd7de5b55fbae7e1c8af238597961e5fb628f3de446c3c40c5"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:819fb06d535cc76dfddbfe8d3068ff602ddeb40e3eacbc90e0d1272bb8d97113"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bfc9e955e6dc6359eb6f82ea150c4f4e82b660e5b58d9a20a0e42ec3bb6342b"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:510a67d232d2ebe983fddea324dbf9d69b71c4d2dfeb8a862f4a127536dd4cfb"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9ff11cd9a092ee7680a56d21f302bdda14327772cd870d806610a3503d001f"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:29efff25bf9ee685c2c8390563a5b5c006a3fee5230d28ea39f4f75f9d0b6f2f"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b00e0bcccf0fc8d7186ed21e311dffd19761cb632241a6e4fe4477cc80ef6e"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:262f5635e2c74d80b7507fbc2fac28fe0d4fef26373bbc62039526f7722bca1b"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7363691198719c26459e08cc17c6a3dac6f592e9ea3d2fa772f4e561b5fe82a3"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:eeb039f8428fcb6725bb63cbae92ad67b0559e68b5d80f840f11914afd8ddf7f"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:927b11c1e4d0727ce1a729eace61cee88a334623ec424c0b1c8fe3e5f9d3c865"}, + {file = "ruff-0.4.3-py3-none-win32.whl", hash = "sha256:25cacda2155778beb0d064e0ec5a3944dcca9c12715f7c4634fd9d93ac33fd30"}, + {file = "ruff-0.4.3-py3-none-win_amd64.whl", hash = "sha256:7a1c3a450bc6539ef00da6c819fb1b76b6b065dec585f91456e7c0d6a0bbc725"}, + {file = "ruff-0.4.3-py3-none-win_arm64.whl", hash = "sha256:71ca5f8ccf1121b95a59649482470c5601c60a416bf189d553955b0338e34614"}, + {file = "ruff-0.4.3.tar.gz", hash = "sha256:ff0a3ef2e3c4b6d133fbedcf9586abfbe38d076041f2dc18ffb2c7e0485d5a07"}, ] [[package]] @@ -7193,13 +7192,13 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "2.0.1" +version = "2.1.1" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = ">=3.6" files = [ - {file = "sentry_sdk-2.0.1-py2.py3-none-any.whl", hash = "sha256:b54c54a2160f509cf2757260d0cf3885b608c6192c2555a3857e3a4d0f84bdb3"}, - {file = "sentry_sdk-2.0.1.tar.gz", hash = "sha256:c278e0f523f6f0ee69dc43ad26dcdb1202dffe5ac326ae31472e012d941bee21"}, + {file = "sentry_sdk-2.1.1-py2.py3-none-any.whl", hash = "sha256:99aeb78fb76771513bd3b2829d12613130152620768d00cd3e45ac00cb17950f"}, + {file = "sentry_sdk-2.1.1.tar.gz", hash = "sha256:95d8c0bb41c8b0bc37ab202c2c4a295bb84398ee05f4cdce55051cd75b926ec1"}, ] [package.dependencies] @@ -7208,6 +7207,7 @@ urllib3 = ">=1.26.11" [package.extras] aiohttp = ["aiohttp (>=3.5)"] +anthropic = ["anthropic (>=0.16)"] arq = ["arq (>=0.23)"] asyncpg = ["asyncpg (>=0.23)"] beam = ["apache-beam (>=2.12)"] @@ -7223,6 +7223,8 @@ flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"] grpcio = ["grpcio (>=1.21.1)"] httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] +huggingface-hub = ["huggingface-hub (>=0.22)"] +langchain = ["langchain (>=0.0.210)"] loguru = ["loguru (>=0.5)"] openai = ["openai (>=1.0.0)", "tiktoken (>=0.3.0)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] @@ -7745,13 +7747,13 @@ files = [ [[package]] name = "tqdm" -version = "4.66.2" +version = "4.66.4" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, - {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, + {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, + {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, ] [package.dependencies] From c05fc4872e83d77d749f2e196a953faf36438e8b Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 6 May 2024 13:47:20 -0700 Subject: [PATCH 557/599] [bot] Fingerprints: add missing FW versions from new users (#32357) Export fingerprints --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index b7262252a5..c2c850877f 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -417,6 +417,7 @@ FW_VERSIONS = { b'\xf1\x00LX2_ SCC FHCUP 1.00 1.03 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCUP 1.00 1.04 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCUP 1.00 1.05 99110-S8100 ', + b'\xf1\x00ON__ FCA FHCUP 1.00 1.00 99110-S9110 ', b'\xf1\x00ON__ FCA FHCUP 1.00 1.01 99110-S9110 ', b'\xf1\x00ON__ FCA FHCUP 1.00 1.02 99110-S9100 ', b'\xf1\x00ON__ FCA FHCUP 1.00 1.03 99110-S9100 ', From e5107b1eabc3a04cb097f0f17d5cf587eb387453 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 6 May 2024 15:01:06 -0700 Subject: [PATCH 558/599] debug test_models script fixes (#32362) * some things were renamed without checking * fix that --- selfdrive/car/tests/test_models.py | 2 +- tools/car_porting/test_car_model.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 69220ae2b9..2a0626c590 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -94,7 +94,7 @@ class TestCarModelBase(unittest.TestCase): car_fw = msg.carParams.carFw if msg.carParams.openpilotLongitudinalControl: experimental_long = True - if cls.platform is None and not cls.ci: + if cls.platform is None and not cls.test_route_on_bucket: live_fingerprint = msg.carParams.carFingerprint cls.platform = MIGRATION.get(live_fingerprint, live_fingerprint) diff --git a/tools/car_porting/test_car_model.py b/tools/car_porting/test_car_model.py index b4d263667c..5f8294fd3c 100755 --- a/tools/car_porting/test_car_model.py +++ b/tools/car_porting/test_car_model.py @@ -12,7 +12,7 @@ def create_test_models_suite(routes: list[CarTestRoute], ci=False) -> unittest.T test_suite = unittest.TestSuite() for test_route in routes: # create new test case and discover tests - test_case_args = {"car_model": test_route.car_model, "test_route": test_route, "ci": ci} + test_case_args = {"platform": test_route.car_model, "test_route": test_route, "test_route_on_bucket": ci} CarModelTestCase = type("CarModelTestCase", (TestCarModel,), test_case_args) test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(CarModelTestCase)) return test_suite From 1de64288965d457cd5827a4128103589831f72b4 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 6 May 2024 16:29:23 -0700 Subject: [PATCH 559/599] remove foxglove, rerun is the future --- tools/foxglove/fox.py | 304 ----------------------------- tools/foxglove/install_foxglove.sh | 3 - 2 files changed, 307 deletions(-) delete mode 100755 tools/foxglove/fox.py delete mode 100755 tools/foxglove/install_foxglove.sh diff --git a/tools/foxglove/fox.py b/tools/foxglove/fox.py deleted file mode 100755 index a1e930d893..0000000000 --- a/tools/foxglove/fox.py +++ /dev/null @@ -1,304 +0,0 @@ -#!/usr/bin/env python3 -import sys -import json -import base64 -import os -import subprocess -from multiprocessing import Pool -from openpilot.tools.lib.route import Route -from openpilot.tools.lib.logreader import LogReader - -try: - from mcap.writer import Writer, CompressionType -except ImportError: - print("mcap module not found. Attempting to install...") - subprocess.run([sys.executable, "-m", "pip", "install", "mcap"]) - # Attempt to import again after installation - try: - from mcap.writer import Writer, CompressionType - except ImportError: - print("Failed to install mcap module. Exiting.") - sys.exit(1) - - -FOXGLOVE_IMAGE_SCHEME_TITLE = "foxglove.CompressedImage" -FOXGLOVE_GEOJSON_TITLE = "foxglove.GeoJSON" -FOXGLOVE_IMAGE_ENCODING = "base64" -OUT_MCAP_FILE_NAME = "json_log.mcap" -RLOG_FOLDER = "rlogs" -SCHEMAS_FOLDER = "schemas" -SCHEMA_EXTENSION = ".json" - -schemas: dict[str, int] = {} -channels: dict[str, int] = {} -writer: Writer - - -def convertBytesToString(data): - if isinstance(data, bytes): - return data.decode('latin-1') # Assuming UTF-8 encoding, adjust if needed - elif isinstance(data, list): - return [convertBytesToString(item) for item in data] - elif isinstance(data, dict): - return {key: convertBytesToString(value) for key, value in data.items()} - else: - return data - - -# Load jsonscheme for every Event -def loadSchema(schemaName): - with open(os.path.join(SCHEMAS_FOLDER, schemaName + SCHEMA_EXTENSION), "r") as file: - return json.loads(file.read()) - - -# Foxglove creates one graph of an array, and not one for each item of an array -# This can be avoided by transforming array to separate objects -def transformListsToJsonDict(json_data): - def convert_array_to_dict(array): - new_dict = {} - for index, item in enumerate(array): - if isinstance(item, dict): - new_dict[index] = transformListsToJsonDict(item) - else: - new_dict[index] = item - return new_dict - - new_data = {} - for key, value in json_data.items(): - if isinstance(value, list): - new_data[key] = convert_array_to_dict(value) - elif isinstance(value, dict): - new_data[key] = transformListsToJsonDict(value) - else: - new_data[key] = value - return new_data - - -# Transform openpilot thumbnail to foxglove compressedImage -def transformToFoxgloveSchema(jsonMsg): - bytesImgData = jsonMsg.get("thumbnail").get("thumbnail").encode('latin1') - base64ImgData = base64.b64encode(bytesImgData) - base64_string = base64ImgData.decode('utf-8') - foxMsg = { - "timestamp": {"sec": "0", "nsec": jsonMsg.get("logMonoTime")}, - "frame_id": str(jsonMsg.get("thumbnail").get("frameId")), - "data": base64_string, - "format": "jpeg", - } - return foxMsg - - -# TODO: Check if there is a tool to build GEOJson -def transformMapCoordinates(jsonMsg): - coordinates = [] - for jsonCoords in jsonMsg.get("navRoute").get("coordinates"): - coordinates.append([jsonCoords.get("longitude"), jsonCoords.get("latitude")]) - - # Define the GeoJSON - geojson_data = { - "type": "FeatureCollection", - "features": [{"type": "Feature", "geometry": {"type": "LineString", "coordinates": coordinates}, "logMonoTime": jsonMsg.get("logMonoTime")}], - } - - # Create the final JSON with the GeoJSON data encoded as a string - geoJson = {"geojson": json.dumps(geojson_data)} - - return geoJson - - -def jsonToScheme(jsonData): - zeroArray = False - schema = {"type": "object", "properties": {}, "required": []} - for key, value in jsonData.items(): - if isinstance(value, dict): - tempScheme, zeroArray = jsonToScheme(value) - if tempScheme == 0: - return 0 - schema["properties"][key] = tempScheme - schema["required"].append(key) - elif isinstance(value, list): - if all(isinstance(item, dict) for item in value) and len(value) > 0: # Handle zero value arrays - # Handle array of objects - tempScheme, zeroArray = jsonToScheme(value[0]) - schema["properties"][key] = {"type": "array", "items": tempScheme if value else {}} - schema["required"].append(key) - else: - if len(value) == 0: - zeroArray = True - # Handle array of primitive types - schema["properties"][key] = {"type": "array", "items": {"type": "string"}} - schema["required"].append(key) - else: - typeName = type(value).__name__ - if typeName == "str": - typeName = "string" - elif typeName == "bool": - typeName = "boolean" - elif typeName == "float": - typeName = "number" - elif typeName == "int": - typeName = "integer" - schema["properties"][key] = {"type": typeName} - schema["required"].append(key) - - return schema, zeroArray - - -def saveScheme(scheme, schemaFileName): - schemaFileName = schemaFileName + SCHEMA_EXTENSION - # Create the new schemas folder - os.makedirs(SCHEMAS_FOLDER, exist_ok=True) - with open(os.path.join(SCHEMAS_FOLDER, schemaFileName), 'w') as json_file: - json.dump(convertBytesToString(scheme), json_file) - - -def convertToFoxGloveFormat(jsonData, rlogTopic): - jsonData["title"] = rlogTopic - if rlogTopic == "thumbnail": - jsonData = transformToFoxgloveSchema(jsonData) - jsonData["title"] = FOXGLOVE_IMAGE_SCHEME_TITLE - elif rlogTopic == "navRoute": - jsonData = transformMapCoordinates(jsonData) - jsonData["title"] = FOXGLOVE_GEOJSON_TITLE - else: - jsonData = transformListsToJsonDict(jsonData) - return jsonData - - -def generateSchemas(): - listOfDirs = os.listdir(RLOG_FOLDER) - # Open every dir in rlogs - for directory in listOfDirs: - # List every file in every rlog dir - dirPath = os.path.join(RLOG_FOLDER, directory) - listOfFiles = os.listdir(dirPath) - lastIteration = len(listOfFiles) - for iteration, file in enumerate(listOfFiles): - # Load json data from every file until found one without empty arrays - filePath = os.path.join(dirPath, file) - with open(filePath, 'r') as jsonFile: - jsonData = json.load(jsonFile) - scheme, zerroArray = jsonToScheme(jsonData) - # If array of len 0 has been found, type of its data can not be parsed, skip to the next log - # in search for a non empty array. If there is not an non empty array in logs, put a dummy string type - if zerroArray and not iteration == lastIteration - 1: - continue - title = jsonData.get("title") - scheme["title"] = title - # Add contentEncoding type, hardcoded in foxglove format - if title == FOXGLOVE_IMAGE_SCHEME_TITLE: - scheme["properties"]["data"]["contentEncoding"] = FOXGLOVE_IMAGE_ENCODING - saveScheme(scheme, directory) - break - - -def downloadLogs(logPaths): - segment_counter = 0 - for logPath in logPaths: - segment_counter += 1 - msg_counter = 1 - print(segment_counter) - rlog = LogReader(logPath) - for msg in rlog: - jsonMsg = json.loads(json.dumps(convertBytesToString(msg.to_dict()))) - jsonMsg = convertToFoxGloveFormat(jsonMsg, msg.which()) - rlog_dir_path = os.path.join(RLOG_FOLDER, msg.which()) - if not os.path.exists(rlog_dir_path): - os.makedirs(rlog_dir_path) - file_path = os.path.join(rlog_dir_path, str(segment_counter) + "," + str(msg_counter)) - with open(file_path, 'w') as json_file: - json.dump(jsonMsg, json_file) - msg_counter += 1 - - -def getLogMonoTime(jsonMsg): - if jsonMsg.get("title") == FOXGLOVE_IMAGE_SCHEME_TITLE: - logMonoTime = jsonMsg.get("timestamp").get("nsec") - elif jsonMsg.get("title") == FOXGLOVE_GEOJSON_TITLE: - logMonoTime = json.loads(jsonMsg.get("geojson")).get("features")[0].get("logMonoTime") - else: - logMonoTime = jsonMsg.get("logMonoTime") - return logMonoTime - - -def processMsgs(args): - msgFile, rlogTopicPath, rlogTopic = args - msgFilePath = os.path.join(rlogTopicPath, msgFile) - with open(msgFilePath, "r") as file: - jsonMsg = json.load(file) - logMonoTime = getLogMonoTime(jsonMsg) - return {'channel_id': channels[rlogTopic], 'log_time': logMonoTime, 'data': json.dumps(jsonMsg).encode("utf-8"), 'publish_time': logMonoTime} - - -# Get logs from a path, and convert them into mcap -def createMcap(logPaths): - print(f"Downloading logs [{len(logPaths)}]") - downloadLogs(logPaths) - print("Creating schemas") - generateSchemas() - print("Creating mcap file") - - listOfRlogTopics = os.listdir(RLOG_FOLDER) - print(f"Registering schemas and channels [{len(listOfRlogTopics)}]") - for counter, rlogTopic in enumerate(listOfRlogTopics): - print(counter) - schema = loadSchema(rlogTopic) - schema_id = writer.register_schema(name=schema.get("title"), encoding="jsonschema", data=json.dumps(schema).encode()) - schemas[rlogTopic] = schema_id - channel_id = writer.register_channel(schema_id=schemas[rlogTopic], topic=rlogTopic, message_encoding="json") - channels[rlogTopic] = channel_id - rlogTopicPath = os.path.join(RLOG_FOLDER, rlogTopic) - msgFiles = os.listdir(rlogTopicPath) - pool = Pool() - results = pool.map(processMsgs, [(msgFile, rlogTopicPath, rlogTopic) for msgFile in msgFiles]) - pool.close() - pool.join() - for result in results: - writer.add_message(channel_id=result['channel_id'], log_time=result['log_time'], data=result['data'], publish_time=result['publish_time']) - - -def is_program_installed(program_name): - try: - # Check if the program is installed using dpkg (for traditional Debian packages) - subprocess.run(["dpkg", "-l", program_name], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - return True - except subprocess.CalledProcessError: - # Check if the program is installed using snap - try: - subprocess.run(["snap", "list", program_name], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - return True - except subprocess.CalledProcessError: - return False - - -if __name__ == '__main__': - # Example usage: - program_name = "foxglove-studio" # Change this to the program you want to check - if is_program_installed(program_name): - print(f"{program_name} detected.") - else: - print(f"{program_name} could not be detected.") - installFoxglove = input("Would you like to install it? YES/NO? - ") - if installFoxglove.lower() == "yes": - try: - subprocess.run(['./install_foxglove.sh'], check=True) - print("Installation completed successfully.") - except subprocess.CalledProcessError as e: - print(f"Installation failed with return code {e.returncode}.") - # Get a route - if len(sys.argv) == 1: - route_name = "a2a0ccea32023010|2023-07-27--13-01-19" - print("No route was provided, using demo route") - else: - route_name = sys.argv[1] - # Get logs for a route - print("Getting route log paths") - route = Route(route_name) - logPaths = route.log_paths() - # Start mcap writer - with open(OUT_MCAP_FILE_NAME, "wb") as stream: - writer = Writer(stream, compression=CompressionType.NONE) - writer.start() - createMcap(logPaths) - writer.finish() - print(f"File {OUT_MCAP_FILE_NAME} has been successfully created. Please import it into foxglove studio to continue.") diff --git a/tools/foxglove/install_foxglove.sh b/tools/foxglove/install_foxglove.sh deleted file mode 100755 index 0f401549a2..0000000000 --- a/tools/foxglove/install_foxglove.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -echo "Installing foxglvoe studio..." -sudo snap install foxglove-studio From 1c42b8a05fc8b525902904a855ff04af8f56d869 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 6 May 2024 16:42:35 -0700 Subject: [PATCH 560/599] revert changes to release/ (#32364) * revert changes to release/ * put those back * revert Jenkinsfile --- Jenkinsfile | 217 ++++++++++++-------------------- release/README.md | 34 ----- release/build_git_release.sh | 105 ---------------- release/build_release.sh | 80 ++++++++++-- release/package_casync_agnos.py | 59 --------- release/package_casync_build.py | 108 ---------------- 6 files changed, 146 insertions(+), 457 deletions(-) delete mode 100644 release/README.md delete mode 100755 release/build_git_release.sh delete mode 100755 release/package_casync_agnos.py delete mode 100755 release/package_casync_build.py diff --git a/Jenkinsfile b/Jenkinsfile index efba905c6b..f21d7f20fe 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,11 +9,6 @@ def retryWithDelay(int maxRetries, int delay, Closure body) { throw Exception("Failed after ${maxRetries} retries") } -// check if started by timer: https://gist.github.com/aaclarker/75b8a0eb2b4d600779f84f8e849f2c37 -def isJobStartedByTimer() { - return currentBuild.getBuildCauses()[0]["shortDescription"].matches("Started by timer"); -} - def device(String ip, String step_label, String cmd) { withCredentials([file(credentialsId: 'id_rsa', variable: 'key_file')]) { def ssh_cmd = """ @@ -31,7 +26,6 @@ export SOURCE_DIR=${env.SOURCE_DIR} export GIT_BRANCH=${env.GIT_BRANCH} export GIT_COMMIT=${env.GIT_COMMIT} export AZURE_TOKEN='${env.AZURE_TOKEN}' -export AZURE_TOKEN_OPENPILOT_RELEASES='${env.AZURE_TOKEN_OPENPILOT_RELEASES}' export MAPBOX_TOKEN='${env.MAPBOX_TOKEN}' # only use 1 thread for tici tests since most require HIL export PYTEST_ADDOPTS="-n 0" @@ -111,7 +105,7 @@ def pcStage(String stageName, Closure body) { checkout scm - def dockerArgs = "--user=batman -v /tmp/comma_download_cache:/tmp/comma_download_cache -v /tmp/scons_cache:/tmp/scons_cache -e PYTHONPATH=${env.WORKSPACE} -e AZURE_TOKEN_OPENPILOT_RELEASES='${env.AZURE_TOKEN_OPENPILOT_RELEASES}' --cpus=8 --memory 16g -e PYTEST_ADDOPTS='-n8'"; + def dockerArgs = "--user=batman -v /tmp/comma_download_cache:/tmp/comma_download_cache -v /tmp/scons_cache:/tmp/scons_cache -e PYTHONPATH=${env.WORKSPACE} --cpus=8 --memory 16g -e PYTEST_ADDOPTS='-n8'"; def openpilot_base = retryWithDelay (3, 15) { return docker.build("openpilot-base:build-${env.GIT_COMMIT}", "-f Dockerfile.openpilot_base .") @@ -119,7 +113,7 @@ def pcStage(String stageName, Closure body) { lock(resource: "", label: 'pc', inversePrecedence: true, quantity: 1) { openpilot_base.inside(dockerArgs) { - timeout(time: 25, unit: 'MINUTES') { + timeout(time: 20, unit: 'MINUTES') { try { retryWithDelay (3, 15) { sh "git config --global --add safe.directory '*'" @@ -141,56 +135,14 @@ def pcStage(String stageName, Closure body) { def setupCredentials() { withCredentials([ string(credentialsId: 'azure_token', variable: 'AZURE_TOKEN'), - string(credentialsId: 'azure_token_openpilot_releases', variable: 'AZURE_TOKEN_OPENPILOT_RELEASES'), string(credentialsId: 'mapbox_token', variable: 'MAPBOX_TOKEN') ]) { env.AZURE_TOKEN = "${AZURE_TOKEN}" - env.AZURE_TOKEN_OPENPILOT_RELEASES = "${AZURE_TOKEN_OPENPILOT_RELEASES}" env.MAPBOX_TOKEN = "${MAPBOX_TOKEN}" } } -def build_git_release(String channel_name) { - return parallel ( - "${channel_name} (git)": { - deviceStage("build git", "tici-needs-can", [], [ - ["build ${channel_name}", "RELEASE_BRANCH=${channel_name} $SOURCE_DIR/release/build_git_release.sh"], - ]) - } - ) -} - - -def build_casync_release(String channel_name, def is_release) { - def extra_env = is_release ? "RELEASE=1 " : "" - def build_dir = "/data/openpilot" - - extra_env += "TMPDIR=/data/tmp PYTHONPATH=$SOURCE_DIR" - - return deviceStage("build casync", "tici-needs-can", [], [ - ["build", "${extra_env} $SOURCE_DIR/release/build_release.sh ${build_dir}"], - ["package + upload", "${extra_env} $SOURCE_DIR/release/package_casync_build.py ${build_dir}"], - ]) -} - - -def build_stage() { - return parallel ( - 'nightly': { - build_casync_release("nightly", true); - }, - 'master': { - build_casync_release("master", false); - }, - 'publish agnos': { - pcStage("publish agnos") { - sh "PYTHONWARNINGS=ignore release/package_casync_agnos.py" - } - } - ) -} - node { env.CI = "1" env.PYTHONWARNINGS = "error" @@ -205,105 +157,94 @@ node { 'testing-closet*', 'hotfix-*'] def excludeRegex = excludeBranches.join('|').replaceAll('\\*', '.*') - def nightlyBranch = "master" - - def props = []; - - if (env.BRANCH_NAME == nightlyBranch) { - props.add(pipelineTriggers([ - cron('0 9 * * *') // at 2am PST (9am UTC) every night - ])) + if (env.BRANCH_NAME != 'master') { + properties([ + disableConcurrentBuilds(abortPrevious: true) + ]) } - if (env.BRANCH_NAME != "master") { - props.add(disableConcurrentBuilds(abortPrevious: true)) - } - - properties(props); - try { if (env.BRANCH_NAME == 'devel-staging') { - build_git_release("release3-staging") + deviceStage("build release3-staging", "tici-needs-can", [], [ + ["build release3-staging", "RELEASE_BRANCH=release3-staging $SOURCE_DIR/release/build_release.sh"], + ]) } if (env.BRANCH_NAME == 'master-ci') { - build_git_release("nightly") + deviceStage("build nightly", "tici-needs-can", [], [ + ["build nightly", "RELEASE_BRANCH=nightly $SOURCE_DIR/release/build_release.sh"], + ]) } if (!env.BRANCH_NAME.matches(excludeRegex)) { - parallel ( - // tici tests - 'onroad tests': { - deviceStage("onroad", "tici-needs-can", [], [ - // TODO: ideally, this test runs in master-ci, but it takes 5+m to build it - //["build master-ci", "cd $SOURCE_DIR/release && TARGET_DIR=$TEST_DIR $SOURCE_DIR/scripts/retry.sh ./build_devel.sh"], - ["build openpilot", "cd selfdrive/manager && ./build.py"], - ["check dirty", "release/check-dirty.sh"], - ["onroad tests", "pytest selfdrive/test/test_onroad.py -s"], - ["time to onroad", "pytest selfdrive/test/test_time_to_onroad.py"], - ]) - }, - 'HW + Unit Tests': { - deviceStage("tici-hardware", "tici-common", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], - ["test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"], - ["test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py"], - ["test pigeond", "pytest system/ubloxd/tests/test_pigeond.py"], - ["test manager", "pytest selfdrive/manager/test/test_manager.py"], - ]) - }, - 'loopback': { - deviceStage("loopback", "tici-loopback", ["UNSAFE=1"], [ - ["build openpilot", "cd selfdrive/manager && ./build.py"], - ["test boardd loopback", "pytest selfdrive/boardd/tests/test_boardd_loopback.py"], - ]) - }, - 'camerad': { - deviceStage("AR0231", "tici-ar0231", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test camerad", "pytest system/camerad/test/test_camerad.py"], - ["test exposure", "pytest system/camerad/test/test_exposure.py"], - ]) - deviceStage("OX03C10", "tici-ox03c10", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test camerad", "pytest system/camerad/test/test_camerad.py"], - ["test exposure", "pytest system/camerad/test/test_exposure.py"], - ]) - }, - 'sensord': { - deviceStage("LSM + MMC", "tici-lsmc", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test sensord", "pytest system/sensord/tests/test_sensord.py"], - ]) - deviceStage("BMX + LSM", "tici-bmx-lsm", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["test sensord", "pytest system/sensord/tests/test_sensord.py"], - ]) - }, - 'replay': { - deviceStage("model-replay", "tici-replay", ["UNSAFE=1"], [ - ["build", "cd selfdrive/manager && ./build.py"], - ["model replay", "selfdrive/test/process_replay/model_replay.py"], - ]) - }, - 'tizi': { - deviceStage("tizi", "tizi", ["UNSAFE=1"], [ - ["build openpilot", "cd selfdrive/manager && ./build.py"], - ["test boardd loopback", "SINGLE_PANDA=1 pytest selfdrive/boardd/tests/test_boardd_loopback.py"], - ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], - ["test amp", "pytest system/hardware/tici/tests/test_amplifier.py"], - ["test hw", "pytest system/hardware/tici/tests/test_hardware.py"], - ["test qcomgpsd", "pytest system/qcomgpsd/tests/test_qcomgpsd.py"], - ]) - }, - ) - } + parallel ( + // tici tests + 'onroad tests': { + deviceStage("onroad", "tici-needs-can", [], [ + // TODO: ideally, this test runs in master-ci, but it takes 5+m to build it + //["build master-ci", "cd $SOURCE_DIR/release && TARGET_DIR=$TEST_DIR $SOURCE_DIR/scripts/retry.sh ./build_devel.sh"], + ["build openpilot", "cd selfdrive/manager && ./build.py"], + ["check dirty", "release/check-dirty.sh"], + ["onroad tests", "pytest selfdrive/test/test_onroad.py -s"], + ["time to onroad", "pytest selfdrive/test/test_time_to_onroad.py"], + ]) + }, + 'HW + Unit Tests': { + deviceStage("tici-hardware", "tici-common", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], + ["test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"], + ["test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py"], + ["test pigeond", "pytest system/sensord/tests/test_pigeond.py"], + ["test manager", "pytest selfdrive/manager/test/test_manager.py"], + ]) + }, + 'loopback': { + deviceStage("loopback", "tici-loopback", ["UNSAFE=1"], [ + ["build openpilot", "cd selfdrive/manager && ./build.py"], + ["test boardd loopback", "pytest selfdrive/boardd/tests/test_boardd_loopback.py"], + ]) + }, + 'camerad': { + deviceStage("AR0231", "tici-ar0231", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test camerad", "pytest system/camerad/test/test_camerad.py"], + ["test exposure", "pytest system/camerad/test/test_exposure.py"], + ]) + deviceStage("OX03C10", "tici-ox03c10", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test camerad", "pytest system/camerad/test/test_camerad.py"], + ["test exposure", "pytest system/camerad/test/test_exposure.py"], + ]) + }, + 'sensord': { + deviceStage("LSM + MMC", "tici-lsmc", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test sensord", "pytest system/sensord/tests/test_sensord.py"], + ]) + deviceStage("BMX + LSM", "tici-bmx-lsm", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["test sensord", "pytest system/sensord/tests/test_sensord.py"], + ]) + }, + 'replay': { + deviceStage("model-replay", "tici-replay", ["UNSAFE=1"], [ + ["build", "cd selfdrive/manager && ./build.py"], + ["model replay", "selfdrive/test/process_replay/model_replay.py"], + ]) + }, + 'tizi': { + deviceStage("tizi", "tizi", ["UNSAFE=1"], [ + ["build openpilot", "cd selfdrive/manager && ./build.py"], + ["test boardd loopback", "SINGLE_PANDA=1 pytest selfdrive/boardd/tests/test_boardd_loopback.py"], + ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], + ["test amp", "pytest system/hardware/tici/tests/test_amplifier.py"], + ["test hw", "pytest system/hardware/tici/tests/test_hardware.py"], + ["test qcomgpsd", "pytest system/qcomgpsd/tests/test_qcomgpsd.py"], + ]) + }, - if (env.BRANCH_NAME == nightlyBranch && isJobStartedByTimer()) { - stage('build release') { - build_stage() - } + ) } } catch (Exception e) { currentBuild.result = 'FAILED' diff --git a/release/README.md b/release/README.md deleted file mode 100644 index 89e6cce6f3..0000000000 --- a/release/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# openpilot releases - - -## terms - -- `channel` - a named version of openpilot (git branch, casync caibx) which receives updates -- `build` - a copy of openpilot ready for distribution, already built for a specific device -- `build_style` - type of build, either `debug` or `release` - - `debug` - build with `ALLOW_DEBUG=true`, can test experimental features like longitudinal on alpha cars - - `release` - build with `ALLOW_DEBUG=false`, experimental features disabled - - -## openpilot channels - -| channel | build_style | description | -| ----------- | ----------- | ---------- | -| release | `release` | stable release of openpilot | -| staging | `release` | release candidate of openpilot for final verification | -| nightly | `release` | generated nightly from last commit passing CI tests | -| master | `debug` | current master commit with experimental features enabled | -| git branches | `debug` | installed manually, experimental features enabled, build required | - - -## build - -`release/build_release.sh ` - creates an openpilot build into `build_dir`, ready for distribution - -## packaging a casync release - -`release/package_casync_build.py ` - packages an openpilot build into a casync tar and uploads to `openpilot-releases` - -## release builds - -to create a release build, set `RELEASE=1` environment variable when running the build script diff --git a/release/build_git_release.sh b/release/build_git_release.sh deleted file mode 100755 index 08f8a5a185..0000000000 --- a/release/build_git_release.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/bash -e - -# git diff --name-status origin/release3-staging | grep "^A" | less - -DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" - -cd $DIR - -BUILD_DIR=/data/openpilot -SOURCE_DIR="$(git rev-parse --show-toplevel)" - -if [ -f /TICI ]; then - FILES_SRC="release/files_tici" -else - echo "no release files set" - exit 1 -fi - -if [ -z "$RELEASE_BRANCH" ]; then - echo "RELEASE_BRANCH is not set" - exit 1 -fi - - -# set git identity -source $DIR/identity.sh - -echo "[-] Setting up repo T=$SECONDS" -rm -rf $BUILD_DIR -mkdir -p $BUILD_DIR -cd $BUILD_DIR -git init -git remote add origin git@github.com:commaai/openpilot.git -git checkout --orphan $RELEASE_BRANCH - -# do the files copy -echo "[-] copying files T=$SECONDS" -cd $SOURCE_DIR -cp -pR --parents $(cat release/files_common) $BUILD_DIR/ -cp -pR --parents $(cat $FILES_SRC) $BUILD_DIR/ - -# in the directory -cd $BUILD_DIR - -rm -f panda/board/obj/panda.bin.signed -rm -f panda/board/obj/panda_h7.bin.signed - -VERSION=$(cat common/version.h | awk -F[\"-] '{print $2}') -echo "#define COMMA_VERSION \"$VERSION-release\"" > common/version.h - -echo "[-] committing version $VERSION T=$SECONDS" -git add -f . -git commit -a -m "openpilot v$VERSION release" - -# Build -export PYTHONPATH="$BUILD_DIR" -scons -j$(nproc) - -# release panda fw -CERT=/data/pandaextra/certs/release RELEASE=1 scons -j$(nproc) panda/ - -# Ensure no submodules in release -if test "$(git submodule--helper list | wc -l)" -gt "0"; then - echo "submodules found:" - git submodule--helper list - exit 1 -fi -git submodule status - -# Cleanup -find . -name '*.a' -delete -find . -name '*.o' -delete -find . -name '*.os' -delete -find . -name '*.pyc' -delete -find . -name 'moc_*' -delete -find . -name '__pycache__' -delete -rm -rf .sconsign.dblite Jenkinsfile release/ -rm selfdrive/modeld/models/supercombo.onnx - -# Restore third_party -git checkout third_party/ - -# Mark as prebuilt release -touch prebuilt - -# Add built files to git -git add -f . -git commit --amend -m "openpilot v$VERSION" - -# Run tests -TEST_FILES="tools/" -cd $SOURCE_DIR -cp -pR -n --parents $TEST_FILES $BUILD_DIR/ -cd $BUILD_DIR -RELEASE=1 selfdrive/test/test_onroad.py -#selfdrive/manager/test/test_manager.py -#selfdrive/car/tests/test_car_interfaces.py -rm -rf $TEST_FILES - -if [ ! -z "$RELEASE_BRANCH" ]; then - echo "[-] pushing release T=$SECONDS" - git push -f origin $RELEASE_BRANCH:$RELEASE_BRANCH -fi - -echo "[-] done T=$SECONDS" diff --git a/release/build_release.sh b/release/build_release.sh index 19c06700fa..fc15cf6cdf 100755 --- a/release/build_release.sh +++ b/release/build_release.sh @@ -1,40 +1,72 @@ -#!/usr/bin/bash +#!/usr/bin/bash -e -set -e +# git diff --name-status origin/release3-staging | grep "^A" | less DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" -SOURCE_DIR="$(git -C $DIR rev-parse --show-toplevel)" -BUILD_DIR=${1:-$(mktemp -d)} + +cd $DIR + +BUILD_DIR=/data/openpilot +SOURCE_DIR="$(git rev-parse --show-toplevel)" if [ -f /TICI ]; then FILES_SRC="release/files_tici" else - FILES_SRC="release/files_pc" + echo "no release files set" + exit 1 fi -echo "Building openpilot into $BUILD_DIR" +if [ -z "$RELEASE_BRANCH" ]; then + echo "RELEASE_BRANCH is not set" + exit 1 +fi + +# set git identity +source $DIR/identity.sh + +echo "[-] Setting up repo T=$SECONDS" rm -rf $BUILD_DIR mkdir -p $BUILD_DIR +cd $BUILD_DIR +git init +git remote add origin git@github.com:commaai/openpilot.git +git checkout --orphan $RELEASE_BRANCH -# Copy required files to BUILD_DIR +# do the files copy +echo "[-] copying files T=$SECONDS" cd $SOURCE_DIR cp -pR --parents $(cat release/files_common) $BUILD_DIR/ cp -pR --parents $(cat $FILES_SRC) $BUILD_DIR/ -# Build + cleanup +# in the directory cd $BUILD_DIR -export PYTHONPATH="$BUILD_DIR" rm -f panda/board/obj/panda.bin.signed rm -f panda/board/obj/panda_h7.bin.signed -if [ -n "$RELEASE" ]; then - export CERT=/data/pandaextra/certs/release -fi +VERSION=$(cat common/version.h | awk -F[\"-] '{print $2}') +echo "#define COMMA_VERSION \"$VERSION-release\"" > common/version.h +echo "[-] committing version $VERSION T=$SECONDS" +git add -f . +git commit -a -m "openpilot v$VERSION release" + +# Build +export PYTHONPATH="$BUILD_DIR" scons -j$(nproc) +# release panda fw +CERT=/data/pandaextra/certs/release RELEASE=1 scons -j$(nproc) panda/ + +# Ensure no submodules in release +if test "$(git submodule--helper list | wc -l)" -gt "0"; then + echo "submodules found:" + git submodule--helper list + exit 1 +fi +git submodule status + # Cleanup find . -name '*.a' -delete find . -name '*.o' -delete @@ -45,7 +77,29 @@ find . -name '__pycache__' -delete rm -rf .sconsign.dblite Jenkinsfile release/ rm selfdrive/modeld/models/supercombo.onnx +# Restore third_party +git checkout third_party/ + # Mark as prebuilt release touch prebuilt -echo "----- openpilot has been built to $BUILD_DIR -----" +# Add built files to git +git add -f . +git commit --amend -m "openpilot v$VERSION" + +# Run tests +TEST_FILES="tools/" +cd $SOURCE_DIR +cp -pR -n --parents $TEST_FILES $BUILD_DIR/ +cd $BUILD_DIR +RELEASE=1 selfdrive/test/test_onroad.py +#selfdrive/manager/test/test_manager.py +selfdrive/car/tests/test_car_interfaces.py +rm -rf $TEST_FILES + +if [ ! -z "$RELEASE_BRANCH" ]; then + echo "[-] pushing release T=$SECONDS" + git push -f origin $RELEASE_BRANCH:$RELEASE_BRANCH +fi + +echo "[-] done T=$SECONDS" diff --git a/release/package_casync_agnos.py b/release/package_casync_agnos.py deleted file mode 100755 index b80cdfa98d..0000000000 --- a/release/package_casync_agnos.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python3 -import argparse -import json -import os -import pathlib -import tempfile -import time -from openpilot.common.basedir import BASEDIR -from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop, AGNOS_MANIFEST_FILE -from openpilot.system.updated.casync.common import create_casync_from_file -from release.package_casync_build import upload_casync_release - - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="creates a casync release") - parser.add_argument("--manifest", type=str, help="json manifest to create agnos release from", \ - default=str(pathlib.Path(BASEDIR) / AGNOS_MANIFEST_FILE)) - args = parser.parse_args() - - manifest_file = pathlib.Path(args.manifest) - - with tempfile.TemporaryDirectory() as temp_dir: - working_dir = pathlib.Path(temp_dir) - casync_dir = working_dir / "casync" - casync_dir.mkdir() - - agnos_casync_dir = casync_dir / "agnos" - agnos_casync_dir.mkdir() - - entry_path = working_dir / "entry" - - with open(manifest_file) as f: - manifest = json.load(f) - - for entry in manifest: - print(f"creating casync agnos build from {entry}") - start = time.monotonic() - downloader = StreamingDecompressor(entry['url']) - - parse_func = unsparsify if entry['sparse'] else noop - - parsed_chunks = parse_func(downloader) - - size = entry["size"] - - cur = 0 - with open(entry_path, "wb") as f: - for chunk in parsed_chunks: - f.write(chunk) - - print(f"downloaded in {time.monotonic() - start}") - - start = time.monotonic() - agnos_filename = os.path.basename(entry["url"]).split(".")[0] - create_casync_from_file(entry_path, agnos_casync_dir, agnos_filename) - print(f"created casnc in {time.monotonic() - start}") - - upload_casync_release(casync_dir) diff --git a/release/package_casync_build.py b/release/package_casync_build.py deleted file mode 100755 index 5f92e893be..0000000000 --- a/release/package_casync_build.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python3 - -# packages a casync release, uploads to azure, and creates a manifest - -import argparse -import dataclasses -import json -import os -import pathlib -import tempfile - -from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE, get_partition_path -from openpilot.system.updated.casync.common import create_build_metadata_file, create_casync_release -from openpilot.system.version import get_build_metadata -from openpilot.tools.lib.azure_container import AzureContainer - - -BASE_URL = "https://commadist.blob.core.windows.net" - -OPENPILOT_RELEASES = f"{BASE_URL}/openpilot-releases/openpilot" -AGNOS_RELEASES = f"{BASE_URL}/openpilot-releases/agnos" - - -def create_casync_caibx(target_dir: pathlib.Path, output_dir: pathlib.Path): - output_dir.mkdir() - build_metadata = get_build_metadata() - build_metadata.openpilot.build_style = "release" if os.environ.get("RELEASE", None) is not None else "debug" - - create_build_metadata_file(target_dir, build_metadata) - - digest, caibx = create_casync_release(target_dir, output_dir, build_metadata.canonical) - - print(f"Created casync release from {target_dir} to {caibx} with digest {digest}") - - -def upload_casync_release(casync_dir: pathlib.Path): - if "AZURE_TOKEN_OPENPILOT_RELEASES" in os.environ: - os.environ["AZURE_TOKEN"] = os.environ["AZURE_TOKEN_OPENPILOT_RELEASES"] - - OPENPILOT_RELEASES_CONTAINER = AzureContainer("commadist", "openpilot-releases") - - for f in casync_dir.rglob("*"): - if f.is_file(): - blob_name = f.relative_to(casync_dir) - print(f"uploading {f} to {blob_name}") - OPENPILOT_RELEASES_CONTAINER.upload_file(str(f), str(blob_name), overwrite=True) - - -def create_partition_manifest(partition): - agnos_filename = os.path.basename(partition["url"]).split(".")[0] - - return { - "type": "partition", - "casync": { - "caibx": f"{AGNOS_RELEASES}/{agnos_filename}.caibx" - }, - "path": get_partition_path(0, partition), - "ab": True, - "size": partition["size"], - "full_check": partition["full_check"], - "hash_raw": partition["hash_raw"], - } - - -def create_openpilot_manifest(build_metadata): - return { - "type": "path_tarred", - "path": "/data/openpilot", - "casync": { - "caibx": f"{OPENPILOT_RELEASES}/{build_metadata.canonical}.caibx" - } - } - - -def create_manifest(target_dir): - with open(pathlib.Path(target_dir) / AGNOS_MANIFEST_FILE) as f: - agnos_manifest = json.load(f) - - build_metadata = get_build_metadata(args.target_dir) - - return { - "build_metadata": dataclasses.asdict(build_metadata), - "manifest": [ - *[create_partition_manifest(entry) for entry in agnos_manifest], - create_openpilot_manifest(build_metadata) - ] - } - - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="creates a casync release") - parser.add_argument("target_dir", type=str, help="path to a release build of openpilot to create release from") - args = parser.parse_args() - - target_dir = pathlib.Path(args.target_dir) - - with tempfile.TemporaryDirectory() as temp_dir: - casync_dir = pathlib.Path(temp_dir) / "casync" - casync_dir.mkdir(parents=True) - - manifest_file = pathlib.Path(temp_dir) / "manifest.json" - - create_casync_caibx(target_dir, casync_dir / "openpilot") - upload_casync_release(casync_dir) - manifest = create_manifest(target_dir) - - print(json.dumps(manifest, indent=2)) From 3e7d9fa2febb061f226fc72cb9f7965398d41dbf Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Mon, 6 May 2024 17:10:12 -0700 Subject: [PATCH 561/599] Kia: add missing Carnival 2024 FW (#32365) carnival 2024 FW --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index c2c850877f..77a04a7aaf 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1118,6 +1118,7 @@ FW_VERSIONS = { b'\xf1\x00KA4 MFC AT EUR LHD 1.00 1.06 99210-R0000 220221', b'\xf1\x00KA4 MFC AT KOR LHD 1.00 1.06 99210-R0000 220221', b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.00 99210-R0100 230105', + b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.01 99210-R0100 230710', b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.05 99210-R0000 201221', b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.06 99210-R0000 220221', b'\xf1\x00KA4CMFC AT CHN LHD 1.00 1.01 99211-I4000 210525', From 6dd55b64d8b7cf3a0ffea14add074f519425e663 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 6 May 2024 17:30:33 -0700 Subject: [PATCH 562/599] fix pigeond test path --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f21d7f20fe..9d12b77746 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -195,7 +195,7 @@ node { ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], ["test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"], ["test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py"], - ["test pigeond", "pytest system/sensord/tests/test_pigeond.py"], + ["test pigeond", "pytest system/ubloxd/tests/test_pigeond.py"], ["test manager", "pytest selfdrive/manager/test/test_manager.py"], ]) }, @@ -250,4 +250,4 @@ node { currentBuild.result = 'FAILED' throw e } -} \ No newline at end of file +} From f93b1390983c3761a8dbf98d5d07949024ff2eef Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 6 May 2024 20:01:15 -0700 Subject: [PATCH 563/599] remove tools/zookeeper/ --- tools/zookeeper/__init__.py | 78 ---------------------------- tools/zookeeper/check_consumption.py | 27 ---------- tools/zookeeper/disable.py | 8 --- tools/zookeeper/enable_and_wait.py | 31 ----------- tools/zookeeper/ignition.py | 10 ---- tools/zookeeper/power_monitor.py | 40 -------------- tools/zookeeper/test_zookeeper.py | 25 --------- 7 files changed, 219 deletions(-) delete mode 100644 tools/zookeeper/__init__.py delete mode 100755 tools/zookeeper/check_consumption.py delete mode 100755 tools/zookeeper/disable.py delete mode 100755 tools/zookeeper/enable_and_wait.py delete mode 100755 tools/zookeeper/ignition.py delete mode 100755 tools/zookeeper/power_monitor.py delete mode 100755 tools/zookeeper/test_zookeeper.py diff --git a/tools/zookeeper/__init__.py b/tools/zookeeper/__init__.py deleted file mode 100644 index 598e0a0587..0000000000 --- a/tools/zookeeper/__init__.py +++ /dev/null @@ -1,78 +0,0 @@ -import ft4222 -import ft4222.I2CMaster - -DEBUG = False - -INA231_ADDR = 0x40 -INA231_REG_CONFIG = 0x00 -INA231_REG_SHUNT_VOLTAGE = 0x01 -INA231_REG_BUS_VOLTAGE = 0x02 -INA231_REG_POWER = 0x03 -INA231_REG_CURRENT = 0x04 -INA231_REG_CALIBRATION = 0x05 - -INA231_BUS_LSB = 1.25e-3 -INA231_SHUNT_LSB = 2.5e-6 -SHUNT_RESISTOR = 30e-3 -CURRENT_LSB = 1e-5 - -class Zookeeper: - def __init__(self): - if ft4222.createDeviceInfoList() < 2: - raise Exception("No connected zookeeper found!") - self.dev_a = ft4222.openByDescription("FT4222 A") - self.dev_b = ft4222.openByDescription("FT4222 B") - - if DEBUG: - for i in range(ft4222.createDeviceInfoList()): - print(f"Device {i}: {ft4222.getDeviceInfoDetail(i, False)}") - - # Setup GPIO - self.dev_b.gpio_Init(gpio2=ft4222.Dir.OUTPUT, gpio3=ft4222.Dir.OUTPUT) - self.dev_b.setSuspendOut(False) - self.dev_b.setWakeUpInterrut(False) - - # Setup I2C - self.dev_a.i2cMaster_Init(kbps=400) - self._initialize_ina() - - # Helper functions - def _read_ina_register(self, register, length): - self.dev_a.i2cMaster_WriteEx(INA231_ADDR, data=register, flag=ft4222.I2CMaster.Flag.REPEATED_START) - return self.dev_a.i2cMaster_Read(INA231_ADDR, bytesToRead=length) - - def _write_ina_register(self, register, data): - msg = register.to_bytes(1, byteorder="big") + data.to_bytes(2, byteorder="big") - self.dev_a.i2cMaster_Write(INA231_ADDR, data=msg) - - def _initialize_ina(self): - # Config - self._write_ina_register(INA231_REG_CONFIG, 0x4127) - - # Calibration - CAL_VALUE = int(0.00512 / (CURRENT_LSB * SHUNT_RESISTOR)) - if DEBUG: - print(f"Calibration value: {hex(CAL_VALUE)}") - self._write_ina_register(INA231_REG_CALIBRATION, CAL_VALUE) - - def _set_gpio(self, number, enabled): - self.dev_b.gpio_Write(portNum=number, value=enabled) - - # Public API functions - def set_device_power(self, enabled): - self._set_gpio(2, enabled) - - def set_device_ignition(self, enabled): - self._set_gpio(3, enabled) - - def read_current(self): - # Returns in A - return int.from_bytes(self._read_ina_register(INA231_REG_CURRENT, 2), byteorder="big") * CURRENT_LSB - - def read_power(self): - # Returns in W - return int.from_bytes(self._read_ina_register(INA231_REG_POWER, 2), byteorder="big") * CURRENT_LSB * 25 - - def read_voltage(self): - # Returns in V - return int.from_bytes(self._read_ina_register(INA231_REG_BUS_VOLTAGE, 2), byteorder="big") * INA231_BUS_LSB diff --git a/tools/zookeeper/check_consumption.py b/tools/zookeeper/check_consumption.py deleted file mode 100755 index dab948318f..0000000000 --- a/tools/zookeeper/check_consumption.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import time -from openpilot.tools.zookeeper import Zookeeper - -# Usage: check_consumption.py -# Exit code: 0 -> passed -# 1 -> failed - -if __name__ == "__main__": - z = Zookeeper() - - averaging_time_s = int(sys.argv[1]) - max_average_power = float(sys.argv[2]) - - start_time = time.time() - measurements = [] - while time.time() - start_time < averaging_time_s: - measurements.append(z.read_power()) - time.sleep(0.1) - - average_power = sum(measurements)/len(measurements) - print(f"Average power: {round(average_power, 4)}W") - - if average_power > max_average_power: - exit(1) diff --git a/tools/zookeeper/disable.py b/tools/zookeeper/disable.py deleted file mode 100755 index 4bea3e7ed0..0000000000 --- a/tools/zookeeper/disable.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python3 - -from openpilot.tools.zookeeper import Zookeeper - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_power(False) - diff --git a/tools/zookeeper/enable_and_wait.py b/tools/zookeeper/enable_and_wait.py deleted file mode 100755 index 51b8dc0a5c..0000000000 --- a/tools/zookeeper/enable_and_wait.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python3 -import os -import sys -import time -from socket import gethostbyname, gaierror -from openpilot.tools.zookeeper import Zookeeper - -def is_online(ip): - try: - addr = gethostbyname(ip) - return (os.system(f"ping -c 1 {addr} > /dev/null") == 0) - except gaierror: - return False - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_power(True) - - - ip = str(sys.argv[1]) - timeout = int(sys.argv[2]) - start_time = time.time() - while not is_online(ip): - print(f"{ip} not online yet!") - - if time.time() - start_time > timeout: - print("Timed out!") - raise TimeoutError() - - time.sleep(1) - diff --git a/tools/zookeeper/ignition.py b/tools/zookeeper/ignition.py deleted file mode 100755 index d5f01c362f..0000000000 --- a/tools/zookeeper/ignition.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python3 - -import sys -from openpilot.tools.zookeeper import Zookeeper - - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_ignition(1 if int(sys.argv[1]) > 0 else 0) - diff --git a/tools/zookeeper/power_monitor.py b/tools/zookeeper/power_monitor.py deleted file mode 100755 index a081baa72a..0000000000 --- a/tools/zookeeper/power_monitor.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python3 -import sys -import time -import datetime - -from openpilot.common.realtime import Ratekeeper -from openpilot.common.filter_simple import FirstOrderFilter -from openpilot.tools.zookeeper import Zookeeper - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_power(True) - z.set_device_ignition(False) - - duration = None - if len(sys.argv) > 1: - duration = int(sys.argv[1]) - - rate = 123 - rk = Ratekeeper(rate, print_delay_threshold=None) - fltr = FirstOrderFilter(0, 5, 1. / rate, initialized=False) - - measurements = [] - start_time = time.monotonic() - - try: - while duration is None or time.monotonic() - start_time < duration: - fltr.update(z.read_power()) - if rk.frame % rate == 0: - measurements.append(fltr.x) - t = datetime.timedelta(seconds=time.monotonic() - start_time) - avg = sum(measurements) / len(measurements) - print(f"Now: {fltr.x:.2f} W, Avg: {avg:.2f} W over {t}") - rk.keep_time() - except KeyboardInterrupt: - pass - - t = datetime.timedelta(seconds=time.monotonic() - start_time) - avg = sum(measurements) / len(measurements) - print(f"\nAverage power: {avg:.2f}W over {t}") diff --git a/tools/zookeeper/test_zookeeper.py b/tools/zookeeper/test_zookeeper.py deleted file mode 100755 index 89f7f28975..0000000000 --- a/tools/zookeeper/test_zookeeper.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python3 - -import time -from openpilot.tools.zookeeper import Zookeeper - - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_power(True) - - i = 0 - ign = False - while 1: - voltage = round(z.read_voltage(), 2) - current = round(z.read_current(), 3) - power = round(z.read_power(), 2) - z.set_device_ignition(ign) - print(f"Voltage: {voltage}V, Current: {current}A, Power: {power}W, Ignition: {ign}") - - if i > 200: - ign = not ign - i = 0 - - i += 1 - time.sleep(0.1) From e1c9d59951e69150d7d7bd6be6c790ced9011288 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 7 May 2024 02:38:55 -0400 Subject: [PATCH 564/599] Revert "Revert LFS changes for now" This reverts commit def7873e7e6a1387d4d97517274e3987ce9398a5. --- .lfsconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.lfsconfig b/.lfsconfig index 42dfa2d944..5b63415cd8 100644 --- a/.lfsconfig +++ b/.lfsconfig @@ -1,4 +1,4 @@ [lfs] - url = https://gitlab.com/commaai/openpilot-lfs.git/info/lfs - pushurl = ssh://git@gitlab.com/commaai/openpilot-lfs.git + url = https://gitlab.com/sunnypilot/public/sunnypilot-lfs.git/info/lfs + pushurl = ssh://git@gitlab.com/sunnypilot/public/sunnypilot-lfs.git locksverify = false From eff510223509e03db662cf0c02e657ef4dfd29d4 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 7 May 2024 02:40:03 -0400 Subject: [PATCH 565/599] Bump submodules --- cereal | 2 +- opendbc | 2 +- panda | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cereal b/cereal index 5783d53f3f..78aca3ea81 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 5783d53f3fb4c7f1a6cf3abed934e95f5b17720f +Subproject commit 78aca3ea81fb131da51776315fbdd546d2b6987e diff --git a/opendbc b/opendbc index 304e9f35ca..b5271a35df 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit 304e9f35ca6e1dc060284f8a572207a469a48478 +Subproject commit b5271a35dfe262aeeecd36c402b2f1c2aad6920d diff --git a/panda b/panda index a0e4c6ed55..6683e77bcc 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit a0e4c6ed55230c87f4e600f2110b78d00522969f +Subproject commit 6683e77bcccda0c55aa53859ffcd9eeb782db164 From 11351823ef41ce6d1156c46c591f87c816327550 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 7 May 2024 04:05:11 -0400 Subject: [PATCH 566/599] GAC: Remove from sunnypilot --- selfdrive/car/chrysler/interface.py | 2 +- selfdrive/car/ford/carcontroller.py | 2 +- selfdrive/car/ford/fordcan.py | 4 +- selfdrive/car/ford/interface.py | 4 +- selfdrive/car/gm/carcontroller.py | 2 +- selfdrive/car/gm/carstate.py | 1 - selfdrive/car/gm/gmcan.py | 4 +- selfdrive/car/gm/interface.py | 6 +-- selfdrive/car/honda/carcontroller.py | 2 +- selfdrive/car/honda/hondacan.py | 4 +- selfdrive/car/honda/interface.py | 7 ++-- selfdrive/car/hyundai/carcontroller.py | 2 +- selfdrive/car/hyundai/hyundaican.py | 2 +- selfdrive/car/hyundai/hyundaicanfd.py | 4 +- selfdrive/car/hyundai/interface.py | 6 +-- selfdrive/car/interfaces.py | 46 +---------------------- selfdrive/car/mazda/interface.py | 2 +- selfdrive/car/nissan/interface.py | 2 +- selfdrive/car/subaru/interface.py | 2 +- selfdrive/car/toyota/carcontroller.py | 4 +- selfdrive/car/toyota/carstate.py | 10 ----- selfdrive/car/toyota/interface.py | 39 ++----------------- selfdrive/car/toyota/toyotacan.py | 4 +- selfdrive/car/volkswagen/carcontroller.py | 2 +- selfdrive/car/volkswagen/carstate.py | 2 - selfdrive/car/volkswagen/interface.py | 6 +-- selfdrive/car/volkswagen/mqbcan.py | 4 +- selfdrive/car/volkswagen/pqcan.py | 2 +- 28 files changed, 45 insertions(+), 132 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 9c6f0f71a8..fd760c2322 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -91,7 +91,7 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = [] diff --git a/selfdrive/car/ford/carcontroller.py b/selfdrive/car/ford/carcontroller.py index 261119c485..45516d6035 100644 --- a/selfdrive/car/ford/carcontroller.py +++ b/selfdrive/car/ford/carcontroller.py @@ -101,7 +101,7 @@ class CarController: if (self.frame % CarControllerParams.ACC_UI_STEP) == 0 or send_ui: can_sends.append(fordcan.create_acc_ui_msg(self.packer, self.CAN, self.CP, main_on, CC.latActive, fcw_alert, CS.out.cruiseState.standstill, hud_control, - CS.acc_tja_status_stock_values, CS.gac_tr_cluster)) + CS.acc_tja_status_stock_values)) self.main_on_last = main_on self.lkas_enabled_last = CC.latActive diff --git a/selfdrive/car/ford/fordcan.py b/selfdrive/car/ford/fordcan.py index ef9a558c02..7320c0a3e6 100644 --- a/selfdrive/car/ford/fordcan.py +++ b/selfdrive/car/ford/fordcan.py @@ -144,7 +144,7 @@ def create_acc_msg(packer, CAN: CanBus, long_active: bool, gas: float, accel: fl def create_acc_ui_msg(packer, CAN: CanBus, CP, main_on: bool, enabled: bool, fcw_alert: bool, standstill: bool, - hud_control, stock_values: dict, gac_tr_cluster): + hud_control, stock_values: dict): """ Creates a CAN message for the Ford IPC adaptive cruise, forward collision warning and traffic jam assist status. @@ -212,7 +212,7 @@ def create_acc_ui_msg(packer, CAN: CanBus, CP, main_on: bool, enabled: bool, fcw "AccFllwMde_B_Dsply": 1 if hud_control.leadVisible else 0, # Lead indicator "AccStopMde_B_Dsply": 1 if standstill else 0, "AccWarn_D_Dsply": 0, # ACC warning - "AccTGap_D_Dsply": gac_tr_cluster, # Fixed time gap in UI + "AccTGap_D_Dsply": 4, # Fixed time gap in UI }) # Forwards FCW alert from IPMA diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index 844d600b73..d60c6c8e2a 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -66,7 +66,7 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = [] @@ -89,7 +89,6 @@ class CarInterface(CarInterfaceBase): if not self.CS.prev_lkas_enabled and self.CS.lkas_enabled: self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, self.CS.buttonStates["gapAdjustCruise"], 1, 3, 4, "-") else: self.CS.madsEnabled = False @@ -105,6 +104,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled + # TODO: SP: add CS.distance_button to gap_button from upstream ret, self.CS = self.get_sp_common_state(ret, self.CS) if self.CS.out.madsEnabled != self.CS.madsEnabled: diff --git a/selfdrive/car/gm/carcontroller.py b/selfdrive/car/gm/carcontroller.py index 7ea84f3fb7..5e6583b62a 100644 --- a/selfdrive/car/gm/carcontroller.py +++ b/selfdrive/car/gm/carcontroller.py @@ -117,7 +117,7 @@ class CarController: # Send dashboard UI commands (ACC status) send_fcw = hud_alert == VisualAlert.fcw can_sends.append(gmcan.create_acc_dashboard_command(self.packer_pt, CanBus.POWERTRAIN, CC.enabled and CS.out.cruiseState.enabled, - hud_v_cruise * CV.MS_TO_KPH, hud_control.leadVisible, send_fcw, CS.gac_tr_cluster)) + hud_v_cruise * CV.MS_TO_KPH, hud_control.leadVisible, send_fcw)) # Radar needs to know current speed and yaw rate (50hz), # and that ADAS is alive (10hz) diff --git a/selfdrive/car/gm/carstate.py b/selfdrive/car/gm/carstate.py index da24fd2c6b..03530e870a 100644 --- a/selfdrive/car/gm/carstate.py +++ b/selfdrive/car/gm/carstate.py @@ -35,7 +35,6 @@ class CarState(CarStateBase): self.prev_cruise_buttons = self.cruise_buttons self.cruise_buttons = pt_cp.vl["ASCMSteeringButton"]["ACCButtons"] self.buttons_counter = pt_cp.vl["ASCMSteeringButton"]["RollingCounter"] - self.gap_dist_button = pt_cp.vl["ASCMSteeringButton"]["DistanceButton"] self.pscm_status = copy.copy(pt_cp.vl["PSCMStatus"]) # This is to avoid a fault where you engage while still moving backwards after shifting to D. # An Equinox has been seen with an unsupported status (3), so only check if either wheel is in reverse (2) diff --git a/selfdrive/car/gm/gmcan.py b/selfdrive/car/gm/gmcan.py index f626e9a0f2..bd1e29ce3b 100644 --- a/selfdrive/car/gm/gmcan.py +++ b/selfdrive/car/gm/gmcan.py @@ -102,14 +102,14 @@ def create_friction_brake_command(packer, bus, apply_brake, idx, enabled, near_s return packer.make_can_msg("EBCMFrictionBrakeCmd", bus, values) -def create_acc_dashboard_command(packer, bus, enabled, target_speed_kph, lead_car_in_sight, fcw, gac_tr_cluster): +def create_acc_dashboard_command(packer, bus, enabled, target_speed_kph, lead_car_in_sight, fcw): target_speed = min(target_speed_kph, 255) values = { "ACCAlwaysOne": 1, "ACCResumeButton": 0, "ACCSpeedSetpoint": target_speed, - "ACCGapLevel": gac_tr_cluster * enabled, # 3 "far", 0 "inactive" + "ACCGapLevel": 3 * enabled, # 3 "far", 0 "inactive" "ACCCmdActive": enabled, "ACCAlwaysOne2": 1, "ACCLeadCar": lead_car_in_sight, diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 701a0a8f81..9a482a28c4 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -212,7 +212,7 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_loopback) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = [] @@ -236,7 +236,6 @@ class CarInterface(CarInterfaceBase): if self.CS.prev_lkas_enabled != 1 and self.CS.lkas_enabled == 1: self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, bool(self.CS.gap_dist_button), 1, 3, 3, "-") else: self.CS.madsEnabled = False @@ -252,7 +251,8 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.gap_dist_button)) + # TODO: SP: add CS.distance_button to gap_button from upstream + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 6d78fb3ebf..25d6372b47 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -323,7 +323,7 @@ class CarController: if self.frame % 10 == 0: hud = HUDData(int(pcm_accel), int(round(hud_v_cruise)), hud_control.leadVisible, hud_control.lanesVisible, fcw_display, acc_alert, steer_required, CS.madsEnabled and not CC.latActive) - can_sends.extend(hondacan.create_ui_commands(self.packer, self.CP, CC.enabled and CS.out.cruiseState.enabled, pcm_speed, hud, CS.is_metric, CS.acc_hud, CS.lkas_hud, CC.latActive, CS.gac_tr_cluster)) + can_sends.extend(hondacan.create_ui_commands(self.packer, self.CP, CC.enabled and CS.out.cruiseState.enabled, pcm_speed, hud, CS.is_metric, CS.acc_hud, CS.lkas_hud, CC.latActive)) if self.CP.openpilotLongitudinalControl and self.CP.carFingerprint not in HONDA_BOSCH: self.speed = pcm_speed diff --git a/selfdrive/car/honda/hondacan.py b/selfdrive/car/honda/hondacan.py index 1a31902d28..8c9a78a548 100644 --- a/selfdrive/car/honda/hondacan.py +++ b/selfdrive/car/honda/hondacan.py @@ -122,7 +122,7 @@ def create_bosch_supplemental_1(packer, car_fingerprint): return packer.make_can_msg("BOSCH_SUPPLEMENTAL_1", bus, values) -def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, lkas_hud, lat_active, gac_tr_cluster): +def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, lkas_hud, lat_active): commands = [] bus_pt = get_pt_bus(CP.carFingerprint) radar_disabled = CP.carFingerprint in (HONDA_BOSCH - HONDA_BOSCH_RADARLESS) and CP.openpilotLongitudinalControl @@ -132,7 +132,7 @@ def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, acc_hud_values = { 'CRUISE_SPEED': hud.v_cruise, 'ENABLE_MINI_CAR': 1 if enabled else 0, - 'HUD_DISTANCE': gac_tr_cluster, # max distance setting on display + 'HUD_DISTANCE': 0, # max distance setting on display 'IMPERIAL_UNIT': int(not is_metric), 'HUD_LEAD': 2 if enabled and hud.lead_visible else 1 if enabled else 0, 'SET_ME_X01_2': 1, diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index c9d1096333..781f3bf38b 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -352,7 +352,7 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_body) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = [ *create_button_events(self.CS.cruise_buttons, self.CS.prev_cruise_buttons, BUTTONS_DICT), @@ -371,7 +371,6 @@ class CarInterface(CarInterfaceBase): if self.CS.prev_cruise_setting != 1 and self.CS.cruise_setting == 1: self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, (self.CS.cruise_setting == 3), 1, 3, 0, "-") else: self.CS.madsEnabled = False @@ -387,9 +386,9 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = self.CS.pcm_cruise_enabled + # TODO: SP: add CS.distance_button to gap_button from upstream ret, self.CS = self.get_sp_common_state(ret, self.CS, - min_enable_speed_pcm=(self.CP.pcmCruise and self.CP.minEnableSpeed > 0 and self.CP.pcmCruiseSpeed), - gap_button=(self.CS.cruise_setting == 3)) + min_enable_speed_pcm=(self.CP.pcmCruise and self.CP.minEnableSpeed > 0 and self.CP.pcmCruiseSpeed)) ret.buttonEvents = buttonEvents diff --git a/selfdrive/car/hyundai/carcontroller.py b/selfdrive/car/hyundai/carcontroller.py index ed47aaa3bb..d585a145dc 100644 --- a/selfdrive/car/hyundai/carcontroller.py +++ b/selfdrive/car/hyundai/carcontroller.py @@ -235,7 +235,7 @@ class CarController: can_sends.extend(hyundaicanfd.create_adrv_messages(self.packer, self.CAN, self.frame)) if self.frame % 2 == 0: can_sends.append(hyundaicanfd.create_acc_control(self.packer, self.CAN, CC.enabled and CS.out.cruiseState.enabled, self.accel_last, accel, stopping, CC.cruiseControl.override, - set_speed_in_units, CS.gac_tr_cluster)) + set_speed_in_units)) self.accel_last = accel else: # button presses diff --git a/selfdrive/car/hyundai/hyundaican.py b/selfdrive/car/hyundai/hyundaican.py index 2a624d6099..40241819da 100644 --- a/selfdrive/car/hyundai/hyundaican.py +++ b/selfdrive/car/hyundai/hyundaican.py @@ -135,7 +135,7 @@ def create_acc_commands(packer, enabled, accel, upper_jerk, idx, lead_distance, scc11_values = { "MainMode_ACC": 1 if main_enabled else 0, - "TauGapSet": CS.gac_tr_cluster, + "TauGapSet": 4, "VSetDis": set_speed if enabled else 0, "AliveCounterACC": idx % 0x10, "ObjValid": 1, # close lead makes controls tighter diff --git a/selfdrive/car/hyundai/hyundaicanfd.py b/selfdrive/car/hyundai/hyundaicanfd.py index 2489790085..5501cd962d 100644 --- a/selfdrive/car/hyundai/hyundaicanfd.py +++ b/selfdrive/car/hyundai/hyundaicanfd.py @@ -121,7 +121,7 @@ def create_lfahda_cluster(packer, CAN, enabled, lat_active, lateral_paused, blin return packer.make_can_msg("LFAHDA_CLUSTER", CAN.ECAN, values) -def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_override, set_speed, gac_tr_cluster): +def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_override, set_speed): jerk = 5 jn = jerk / 50 if not enabled or gas_override: @@ -146,7 +146,7 @@ def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_ov "SET_ME_2": 0x4, "SET_ME_3": 0x3, "SET_ME_TMP_64": 0x64, - "DISTANCE_SETTING": gac_tr_cluster, + "DISTANCE_SETTING": 4, } return packer.make_can_msg("SCC_CONTROL", CAN.ECAN, values) diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index d899ac878a..5cd62fb5ac 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -396,7 +396,7 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = create_button_events(self.CS.cruise_buttons[-1], self.CS.prev_cruise_buttons, BUTTONS_DICT) @@ -419,7 +419,6 @@ class CarInterface(CarInterfaceBase): if self.CS.prev_lfa_enabled != 1 and self.CS.lfa_enabled == 1: self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, (self.CS.cruise_buttons[-1] == 3), 1, 3, 4, "-") else: self.CS.madsEnabled = False @@ -434,7 +433,8 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) ret.cruiseState.enabled = False if self.CP.pcmCruise else self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=(self.CS.cruise_buttons[-1] == 3)) + # TODO: SP: add CS.distance_button to gap_button from upstream + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 0ef758cafe..d488244a93 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -1,5 +1,4 @@ import json -import operator import os import numpy as np import time @@ -41,7 +40,6 @@ TORQUE_NN_MODEL_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/lat_mode # dict used to rename activation functions whose names aren't valid python identifiers ACTIVATION_FUNCTION_NAMES = {'σ': 'sigmoid'} -GAC_DICT = {1: 1, 2: 2, 3: 3} FORWARD_GEARS = [GearShifter.drive, GearShifter.low, GearShifter.eco, GearShifter.sport, GearShifter.manumatic, GearShifter.brake] @@ -234,9 +232,6 @@ class CarInterfaceBase(ABC): self.experimental_mode_hold = False self.experimental_mode = self.param_s.get_bool("ExperimentalMode") self._frame = 0 - self.op_lookup = {"+": operator.add, "-": operator.sub} - self.prev_gac_button = False - self.gac_button_counter = 0 self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam") self.mads_main_toggle = self.param_s.get_bool("MadsCruiseMain") self.lkas_toggle = self.param_s.get_bool("LkasToggle") @@ -602,6 +597,7 @@ class CarInterfaceBase(ABC): else: return CS.madsEnabled + # TODO: SP: add CS.distance_button to gap_button from upstream for supported platforms def get_sp_common_state(self, cs_out, CS, min_enable_speed_pcm=False, gear_allowed=True, gap_button=False): cs_out.cruiseState.enabled = CS.accEnabled if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed or min_enable_speed_pcm else \ cs_out.cruiseState.enabled @@ -653,39 +649,6 @@ class CarInterfaceBase(ABC): self.gap_button_counter = 0 self.experimental_mode_hold = False - def get_sp_gac_state(self, gac_tr, gac_min, gac_max, inc_dec): - op = self.op_lookup.get(inc_dec) - gac_tr = op(gac_tr, 1) - if inc_dec == "+": - gac_tr = gac_min if gac_tr > gac_max else gac_tr - else: - gac_tr = gac_max if gac_tr < gac_min else gac_tr - return int(gac_tr) - - def get_sp_distance(self, gac_tr, gac_max, gac_dict=None): - if gac_dict is None: - gac_dict = GAC_DICT - return next((key for key, value in gac_dict.items() if value == gac_tr), gac_max) - - def toggle_gac(self, cs_out, CS, gac_button, gac_min, gac_max, gac_default, inc_dec): - if not self.CP.openpilotLongitudinalControl: - CS.gac_tr_cluster = gac_default - if CS.gac_tr != 2: - CS.gac_tr = 2 - self.param_s.put_nonblocking("LongitudinalPersonality", "2") - return cs_out, CS - if gac_button: - self.gac_button_counter += 1 - elif self.prev_gac_button and not gac_button and self.gac_button_counter < 50: - self.gac_button_counter = 0 - CS.gac_tr = self.get_sp_gac_state(CS.gac_tr, 0, 2, inc_dec) - self.param_s.put_nonblocking("LongitudinalPersonality", str(CS.gac_tr)) - else: - self.gac_button_counter = 0 - CS.gac_tr_cluster = clip(CS.gac_tr + 1, gac_min, gac_max) # always 1 higher - self.prev_gac_button = gac_button - return cs_out, CS - def create_sp_events(self, CS, cs_out, events, main_enabled=False, allow_enable=True, enable_pressed=False, enable_from_brake=False, enable_pressed_long=False, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise)): @@ -747,14 +710,12 @@ class CarInterfaceBase(ABC): return events, cs_out - def sp_update_params(self, CS): + def sp_update_params(self): self.experimental_mode = self.param_s.get_bool("ExperimentalMode") - CS.gac_tr = int(self.param_s.get("LongitudinalPersonality")) self._frame += 1 if self._frame % 300 == 0: self._frame = 0 self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam") - return CS class RadarInterfaceBase(ABC): def __init__(self, CP): @@ -795,9 +756,6 @@ class CarStateBase(ABC): self.prev_mads_enabled = False self.control_initialized = False self.pcm_cruise_enabled = False - self.gap_dist_button = 0 - self.gac_tr = int(self.param_s.get("LongitudinalPersonality")) - self.gac_tr_cluster = clip(int(self.param_s.get("LongitudinalPersonality")), 1, 3) Q = [[0.0, 0.0], [0.0, 100.0]] R = 0.3 diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 4bc1d1491e..0acd96e834 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -56,7 +56,7 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = [] diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 09d4614248..0ff8de0ad2 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -32,7 +32,7 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_adas, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = [] #be = car.CarState.ButtonEvent.new_message() diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index e6a1094753..079290fdd5 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -121,7 +121,7 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_body) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = [] diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index b7ec9f3d8c..80fbedc9b2 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -152,10 +152,10 @@ class CarController: if pcm_cancel_cmd and self.CP.carFingerprint in UNSUPPORTED_DSU_CAR: can_sends.append(toyotacan.create_acc_cancel_command(self.packer)) elif self.CP.openpilotLongitudinalControl: - can_sends.append(toyotacan.create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type, fcw_alert, reverse_acc, CS.gac_send)) + can_sends.append(toyotacan.create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type, fcw_alert, reverse_acc)) self.accel = pcm_accel_cmd else: - can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False, reverse_acc, CS.gac_send)) + can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False, reverse_acc)) if self.frame % 2 == 0 and self.CP.enableGasInterceptor and self.CP.openpilotLongitudinalControl: # send exactly zero if gas cmd is zero. Interceptor will send the max between read value and gas cmd. diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index 52113c2fb3..010cc31f1f 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -57,9 +57,6 @@ class CarState(CarStateBase): self.lta_status = False self.prev_lta_status = False self.lta_status_active = False - self.gac_send = False - self.gac_send_counter = 0 - self.follow_distance = 0 if CP.spFlags & ToyotaFlagsSP.SP_ZSS: self.zss_compute = False @@ -73,7 +70,6 @@ class CarState(CarStateBase): self.prev_mads_enabled = self.mads_enabled self.prev_lkas_enabled = self.lkas_enabled self.prev_lta_status = self.lta_status - self.prev_gap_dist_button = self.gap_dist_button ret.doorOpen = any([cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_FL"], cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_FR"], cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_RL"], cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_RR"]]) @@ -202,13 +198,7 @@ class CarState(CarStateBase): self.acc_type = cp_acc.vl["ACC_CONTROL"]["ACC_TYPE"] ret.stockFcw = bool(cp_acc.vl["PCS_HUD"]["FCW"]) - if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): - self.gap_dist_button = cp_cam.vl["ACC_CONTROL"]["DISTANCE"] - if self.CP.flags & ToyotaFlags.SMART_DSU: - self.gap_dist_button = cp.vl["SDSU"]["FD_BUTTON"] - fd_src = "PCM_CRUISE_ALT" if self.CP.carFingerprint in UNSUPPORTED_DSU_CAR else "PCM_CRUISE_2" - self.follow_distance = cp.vl[fd_src]["PCM_FOLLOW_DISTANCE"] # some TSS2 cars have low speed lockout permanently set, so ignore on those cars # these cars are identified by an ACC_TYPE value of 2. diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index ba5bcb6585..95f51fae64 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -15,10 +15,6 @@ EventName = car.CarEvent.EventName SteerControlType = car.CarParams.SteerControlType GearShifter = car.CarState.GearShifter -GAC_DICT = {3: 1, 2: 2, 1: 3} -GAC_MIN = 1 -GAC_MAX = 3 - class CarInterface(CarInterfaceBase): @staticmethod def get_pid_accel_limits(CP, current_speed, cruise_speed): @@ -310,9 +306,9 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() - buttonEvents = create_button_events(self.CS.gap_dist_button, self.CS.prev_gap_dist_button, {1: ButtonType.gapAdjustCruise}) + buttonEvents = [] self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) @@ -330,34 +326,6 @@ class CarInterface(CarInterfaceBase): (self.CS.prev_lkas_enabled == 1 and not self.CS.lkas_enabled): self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - if not self.CP.openpilotLongitudinalControl: - self.CS.gac_tr_cluster = 3 - if self.CS.gac_tr != 2: - self.CS.gac_tr = 2 - self.param_s.put_nonblocking("LongitudinalPersonality", "2") - else: - gap_dist_button = bool(self.CS.gap_dist_button) - if gap_dist_button: - self.gac_button_counter += 1 - elif self.prev_gac_button and not gap_dist_button and self.gac_button_counter < 50: - self.gac_button_counter = 0 - pre_calculated_distance = 3 if self.CS.gac_tr == 3 else self.CS.follow_distance - follow_distance_converted = self.get_sp_gac_state(pre_calculated_distance, GAC_MIN, GAC_MAX, "+") - gac_tr = self.get_sp_distance(follow_distance_converted, GAC_MAX, gac_dict=GAC_DICT) - 1 # always 1 lower - if gac_tr != self.CS.gac_tr: - self.param_s.put_nonblocking("LongitudinalPersonality", str(gac_tr)) - self.CS.gac_tr = gac_tr - else: - self.gac_button_counter = 0 - self.prev_gac_button = gap_dist_button - self.CS.gac_tr_cluster = clip(self.CS.gac_tr + 1, GAC_MIN, GAC_MAX) # always 1 higher - gap_distance = self.get_sp_distance(self.CS.gac_tr_cluster, GAC_MAX, gac_dict=GAC_DICT) - if self.CS.gac_send_counter < 10 and gap_distance != self.CS.follow_distance: - self.CS.gac_send_counter += 1 - self.CS.gac_send = 1 - else: - self.CS.gac_send_counter = 0 - self.CS.gac_send = 0 else: self.CS.madsEnabled = False @@ -366,7 +334,8 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise: ret.cruiseState.enabled = self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.gap_dist_button)) + # TODO: SP: add CS.distance_button to gap_button from upstream + ret, self.CS = self.get_sp_common_state(ret, self.CS) # CANCEL if self.CS.out.cruiseState.enabled and not ret.cruiseState.enabled: diff --git a/selfdrive/car/toyota/toyotacan.py b/selfdrive/car/toyota/toyotacan.py index cd7746f8ad..0542b001f2 100644 --- a/selfdrive/car/toyota/toyotacan.py +++ b/selfdrive/car/toyota/toyotacan.py @@ -33,12 +33,12 @@ def create_lta_steer_command(packer, steer_control_type, steer_angle, steer_req, return packer.make_can_msg("STEERING_LTA", 0, values) -def create_accel_command(packer, accel, pcm_cancel, standstill_req, lead, acc_type, fcw_alert, reverse_acc, gac_send): +def create_accel_command(packer, accel, pcm_cancel, standstill_req, lead, acc_type, fcw_alert, reverse_acc): # TODO: find the exact canceling bit that does not create a chime values = { "ACCEL_CMD": 0 if pcm_cancel else accel, "ACC_TYPE": acc_type, - "DISTANCE": gac_send, + "DISTANCE": 0, "MINI_CAR": lead, "PERMIT_BRAKING": 1, "RELEASE_STANDSTILL": not standstill_req, diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index 45686060a3..190f02f086 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -170,7 +170,7 @@ class CarController: # FIXME: follow the recent displayed-speed updates, also use mph_kmh toggle to fix display rounding problem? set_speed = hud_control.setSpeed * CV.MS_TO_KPH can_sends.append(self.CCS.create_acc_hud_control(self.packer_pt, CANBUS.pt, acc_hud_status, set_speed, - lead_distance, CS.gac_tr_cluster)) + lead_distance)) # **** Stock ACC Button Controls **************************************** # diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index 2de49d1147..b9ba097f41 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -162,7 +162,6 @@ class CarState(CarStateBase): ret.rightBlinker = ret.rightBlinkerOn = bool(pt_cp.vl["Blinkmodi_02"]["Comfort_Signal_Right"]) ret.buttonEvents = self.create_button_events(pt_cp, self.CCP.BUTTONS) self.gra_stock_values = pt_cp.vl["GRA_ACC_01"] - self.gap_dist_button = pt_cp.vl["GRA_ACC_01"]["GRA_Verstellung_Zeitluecke"] # Additional safety checks performed in CarInterface. ret.espDisabled = pt_cp.vl["ESP_21"]["ESP_Tastung_passiv"] != 0 @@ -281,7 +280,6 @@ class CarState(CarStateBase): pt_cp.vl["Gate_Komf_1"]["GK1_Blinker_re"]) ret.buttonEvents = self.create_button_events(pt_cp, self.CCP.BUTTONS) self.gra_stock_values = pt_cp.vl["GRA_Neu"] - self.gap_dist_button = pt_cp.vl["GRA_Neu"]["GRA_Zeitluecke"] # Additional safety checks performed in CarInterface. ret.espDisabled = bool(pt_cp.vl["Bremse_1"]["ESP_Passiv_getastet"]) diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index f43539ab55..36b766e538 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -122,7 +122,7 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_ext, self.CP.transmissionType) - self.CS = self.sp_update_params(self.CS) + self.CS = self.sp_update_params() buttonEvents = [] @@ -146,7 +146,6 @@ class CarInterface(CarInterfaceBase): if not self.CS.prev_mads_enabled and self.CS.mads_enabled: self.CS.madsEnabled = True self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, bool(self.CS.gap_dist_button), 1, 3, 3, "-") else: self.CS.madsEnabled = False self.CS.madsEnabled = self.get_sp_started_mads(ret, self.CS) @@ -163,7 +162,8 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=(self.CS.gap_dist_button == 3)) + # TODO: SP: add CS.distance_button to gap_button from upstream + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: diff --git a/selfdrive/car/volkswagen/mqbcan.py b/selfdrive/car/volkswagen/mqbcan.py index 35542f9f6b..1c2e14e649 100644 --- a/selfdrive/car/volkswagen/mqbcan.py +++ b/selfdrive/car/volkswagen/mqbcan.py @@ -133,11 +133,11 @@ def create_acc_accel_control(packer, bus, acc_type, acc_enabled, accel, acc_cont return commands -def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, gac_tr_cluster): +def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance): values = { "ACC_Status_Anzeige": acc_hud_status, "ACC_Wunschgeschw_02": set_speed if set_speed < 250 else 327.36, - "ACC_Gesetzte_Zeitluecke": gac_tr_cluster, + "ACC_Gesetzte_Zeitluecke": 3, "ACC_Display_Prio": 3, "ACC_Abstandsindex": lead_distance, } diff --git a/selfdrive/car/volkswagen/pqcan.py b/selfdrive/car/volkswagen/pqcan.py index b5be66e957..a45e7fad17 100644 --- a/selfdrive/car/volkswagen/pqcan.py +++ b/selfdrive/car/volkswagen/pqcan.py @@ -99,7 +99,7 @@ def create_acc_accel_control(packer, bus, acc_type, acc_enabled, accel, acc_cont return commands -def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, gac_tr_cluster): +def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance): values = { "ACA_StaACC": acc_hud_status, "ACA_Zeitluecke": 2, From 3adbebd701d302e0a38fbb42d0e776012719cfd3 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 7 May 2024 00:38:04 -0800 Subject: [PATCH 567/599] Bump submodules (#326) --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index 6683e77bcc..19302c53d0 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 6683e77bcccda0c55aa53859ffcd9eeb782db164 +Subproject commit 19302c53d00756e5e8c946441877a5528c0e36c3 From f597d63bf6f2b8c8cf9a48934a059ef25ec69cd7 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 7 May 2024 15:00:02 -0700 Subject: [PATCH 568/599] PlatformConfig: clean up and print all flags (#32369) * script to print flags * don't need * SAL * back * fix --- selfdrive/car/__init__.py | 18 +----------------- selfdrive/car/hyundai/values.py | 3 --- selfdrive/car/subaru/values.py | 3 --- selfdrive/debug/print_flags.py | 18 ++++++++++++++++++ .../examples/subaru_fuzzy_fingerprint.ipynb | 2 +- 5 files changed, 20 insertions(+), 24 deletions(-) create mode 100755 selfdrive/debug/print_flags.py diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index bbdae4f3d4..4a1df550d0 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -1,5 +1,5 @@ # functions common among cars -from collections import defaultdict, namedtuple +from collections import namedtuple from dataclasses import dataclass from enum import IntFlag, ReprEnum, EnumType from dataclasses import replace @@ -276,19 +276,3 @@ class Platforms(str, ReprEnum, metaclass=PlatformsType): @classmethod def with_flags(cls, flags: IntFlag) -> set['Platforms']: return {p for p in cls if p.config.flags & flags} - - @classmethod - def without_flags(cls, flags: IntFlag) -> set['Platforms']: - return {p for p in cls if not (p.config.flags & flags)} - - @classmethod - def print_debug(cls, flags): - platforms_with_flag = defaultdict(list) - for flag in flags: - for platform in cls: - if platform.config.flags & flag: - assert flag.name is not None - platforms_with_flag[flag.name].append(platform) - - for flag, platforms in platforms_with_flag.items(): - print(f"{flag:32s}: {', '.join(p.name for p in platforms)}") diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 2456e4aa6e..2518d3807b 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -746,6 +746,3 @@ LEGACY_SAFETY_MODE_CAR = CAR.with_flags(HyundaiFlags.LEGACY) UNSUPPORTED_LONGITUDINAL_CAR = CAR.with_flags(HyundaiFlags.LEGACY) | CAR.with_flags(HyundaiFlags.UNSUPPORTED_LONGITUDINAL) DBC = CAR.create_dbc_map() - -if __name__ == "__main__": - CAR.print_debug(HyundaiFlags) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index e8ced2b9af..dcbea1979f 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -273,6 +273,3 @@ FW_QUERY_CONFIG = FwQueryConfig( ) DBC = CAR.create_dbc_map() - -if __name__ == "__main__": - CAR.print_debug(SubaruFlags) diff --git a/selfdrive/debug/print_flags.py b/selfdrive/debug/print_flags.py new file mode 100755 index 0000000000..28e18f6f7e --- /dev/null +++ b/selfdrive/debug/print_flags.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +from openpilot.selfdrive.car.values import BRANDS + +for brand in BRANDS: + all_flags = set() + for platform in brand: + if platform.config.flags != 0: + all_flags |= set(platform.config.flags) + + if len(all_flags): + print(brand.__module__.split('.')[-2].upper() + ':') + for flag in sorted(all_flags): + print(f' {flag.name:<24}: ', end='') + for platform in brand: + if platform.config.flags & flag: + print(platform.name, end=', ') + print() + print() diff --git a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb index 99efc45aca..1048011c05 100644 --- a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb +++ b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb @@ -18,7 +18,7 @@ "from openpilot.selfdrive.car.subaru.values import CAR, SubaruFlags\n", "from openpilot.selfdrive.car.subaru.fingerprints import FW_VERSIONS\n", "\n", - "TEST_PLATFORMS = CAR.without_flags(SubaruFlags.PREGLOBAL)\n", + "TEST_PLATFORMS = set(CAR) - CAR.with_flags(SubaruFlags.PREGLOBAL)\n", "\n", "Ecu = car.CarParams.Ecu\n", "\n", From 888b38c3db44a53b059565b4f863503dd5bcf6c1 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 7 May 2024 15:06:23 -0700 Subject: [PATCH 569/599] print_flags.py: clean up always ensure current impl of something is the best! --- selfdrive/debug/print_flags.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/selfdrive/debug/print_flags.py b/selfdrive/debug/print_flags.py index 28e18f6f7e..c69765550e 100755 --- a/selfdrive/debug/print_flags.py +++ b/selfdrive/debug/print_flags.py @@ -10,9 +10,5 @@ for brand in BRANDS: if len(all_flags): print(brand.__module__.split('.')[-2].upper() + ':') for flag in sorted(all_flags): - print(f' {flag.name:<24}: ', end='') - for platform in brand: - if platform.config.flags & flag: - print(platform.name, end=', ') - print() + print(f' {flag.name:<24}:', {platform.name for platform in brand.with_flags(flag)}) print() From 1fc3d9224e820e150dc382de1adcfd49fa972b42 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 7 May 2024 15:58:29 -0700 Subject: [PATCH 570/599] remove Offroad_InvalidTime alert --- common/params.cc | 1 - selfdrive/controls/lib/alerts_offroad.json | 4 ---- selfdrive/ui/translations/main_ar.ts | 4 ---- selfdrive/ui/translations/main_de.ts | 4 ---- selfdrive/ui/translations/main_fr.ts | 4 ---- selfdrive/ui/translations/main_ja.ts | 4 ---- selfdrive/ui/translations/main_ko.ts | 4 ---- selfdrive/ui/translations/main_pt-BR.ts | 4 ---- selfdrive/ui/translations/main_th.ts | 4 ---- selfdrive/ui/translations/main_tr.ts | 4 ---- selfdrive/ui/translations/main_zh-CHS.ts | 4 ---- selfdrive/ui/translations/main_zh-CHT.ts | 4 ---- 12 files changed, 45 deletions(-) diff --git a/common/params.cc b/common/params.cc index a00401d20a..2330160173 100644 --- a/common/params.cc +++ b/common/params.cc @@ -172,7 +172,6 @@ std::unordered_map keys = { {"Offroad_CarUnrecognized", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, {"Offroad_ConnectivityNeeded", CLEAR_ON_MANAGER_START}, {"Offroad_ConnectivityNeededPrompt", CLEAR_ON_MANAGER_START}, - {"Offroad_InvalidTime", CLEAR_ON_MANAGER_START}, {"Offroad_IsTakingSnapshot", CLEAR_ON_MANAGER_START}, {"Offroad_NeosUpdate", CLEAR_ON_MANAGER_START}, {"Offroad_NoFirmware", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, diff --git a/selfdrive/controls/lib/alerts_offroad.json b/selfdrive/controls/lib/alerts_offroad.json index 35446ca22b..4ef6d9d191 100644 --- a/selfdrive/controls/lib/alerts_offroad.json +++ b/selfdrive/controls/lib/alerts_offroad.json @@ -17,10 +17,6 @@ "severity": 1, "_comment": "Set extra field to the failed reason." }, - "Offroad_InvalidTime": { - "text": "Invalid date and time settings, system won't start. Connect to internet to set time.", - "severity": 1 - }, "Offroad_IsTakingSnapshot": { "text": "Taking camera snapshots. System won't start until finished.", "severity": 0 diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index f00905b75b..d8146723a4 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -440,10 +440,6 @@ غير قادر على تحميل التحديثات %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - إعدادات التاريخ والتوقيت غير صحيحة، لن يبدأ النظام. اتصل بالإنترنت من أجل ضبط الوقت. - Taking camera snapshots. System won't start until finished. التقاط لقطات كاميرا. لن يبدأ النظام حتى تنتهي هذه العملية. diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 71d95244cb..010aa4d304 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -431,10 +431,6 @@ %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - - Taking camera snapshots. System won't start until finished. diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 5da51d8b47..dde6adadd3 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -436,10 +436,6 @@ Impossible de télécharger les mises à jour %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - Paramètres de date et d'heure invalides, le système ne démarrera pas. Connectez l'appareil à Internet pour régler l'heure. - Taking camera snapshots. System won't start until finished. Capture de clichés photo. Le système ne démarrera pas tant qu'il n'est pas terminé. diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 7a27f46ea3..e0fb60620b 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -430,10 +430,6 @@ %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - - Taking camera snapshots. System won't start until finished. diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index 518bb4b58f..b2d07b770b 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -431,10 +431,6 @@ 업데이트를 다운로드할 수 없습니다 %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - 날짜 및 시간 설정이 잘못되어 시스템이 시작되지 않습니다. 날짜와 시간을 동기화하려면 인터넷에 연결하세요. - Taking camera snapshots. System won't start until finished. 카메라 스냅샷 찍기가 완료될 때까지 시스템이 시작되지 않습니다. diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 6210e35f2a..feaa6e86a1 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -432,10 +432,6 @@ Não é possível baixar atualizações %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - Configurações de data e hora inválidas, o sistema não será iniciado. Conecte-se à internet para definir o horário. - Taking camera snapshots. System won't start until finished. Tirando fotos da câmera. O sistema não será iniciado até terminar. diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index c8bf0d3ade..e594a6975f 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -435,10 +435,6 @@ ไม่สามารถดาวน์โหลดอัพเดทได้ %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - วันที่และเวลาไม่ถูกต้อง ระบบจะไม่เริ่มทำงาน เชื่อต่ออินเตอร์เน็ตเพื่อตั้งเวลา - Taking camera snapshots. System won't start until finished. กล้องกำลังถ่ายภาพ ระบบจะไม่เริ่มทำงานจนกว่าจะเสร็จ diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index 000fc1a2ec..48615f1699 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -434,10 +434,6 @@ %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - - Taking camera snapshots. System won't start until finished. diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 3d9cf1c001..306678363a 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -431,10 +431,6 @@ 无法下载更新 %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - 日期和时间设置无效,系统无法启动。请连接至互联网以设置时间。 - Taking camera snapshots. System won't start until finished. 正在使用相机拍摄中。在完成之前,系统将无法启动。 diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index d9030b82ff..8d0df30f94 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -431,10 +431,6 @@ 無法下載更新 %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - 日期和時間設定無效,系統無法啟動。請連接至網際網路以設定時間。 - Taking camera snapshots. System won't start until finished. 正在使用相機拍攝中。在完成之前,系統將無法啟動。 From cdf2e75cc314af694514077b659e5ba1d3782e8a Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 7 May 2024 15:58:59 -0700 Subject: [PATCH 571/599] reduce severity of offroad temperature alert --- selfdrive/controls/lib/alerts_offroad.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selfdrive/controls/lib/alerts_offroad.json b/selfdrive/controls/lib/alerts_offroad.json index 4ef6d9d191..6fb6c569b0 100644 --- a/selfdrive/controls/lib/alerts_offroad.json +++ b/selfdrive/controls/lib/alerts_offroad.json @@ -1,7 +1,7 @@ { "Offroad_TemperatureTooHigh": { "text": "Device temperature too high. System cooling down before starting. Current internal component temperature: %1", - "severity": 1 + "severity": 0 }, "Offroad_ConnectivityNeededPrompt": { "text": "Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1", From b551e7c1a2d913b18752a45857c4675191eb4419 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 8 May 2024 10:59:30 +0800 Subject: [PATCH 572/599] cabana: Implement Remote Route Browsing Feature (#32332) browse remote routes --- tools/cabana/SConscript | 2 +- tools/cabana/streams/replaystream.cc | 20 +++-- tools/cabana/streams/routes.cc | 123 +++++++++++++++++++++++++++ tools/cabana/streams/routes.h | 26 ++++++ tools/cabana/streamselector.cc | 16 +--- 5 files changed, 168 insertions(+), 19 deletions(-) create mode 100644 tools/cabana/streams/routes.cc create mode 100644 tools/cabana/streams/routes.h diff --git a/tools/cabana/SConscript b/tools/cabana/SConscript index 6af4ca08f5..2574e3368b 100644 --- a/tools/cabana/SConscript +++ b/tools/cabana/SConscript @@ -26,7 +26,7 @@ cabana_env.Command(assets, assets_src, f"rcc $SOURCES -o $TARGET") cabana_env.Depends(assets, Glob('/assets/*', exclude=[assets, assets_src, "assets/assets.o"])) cabana_lib = cabana_env.Library("cabana_lib", ['mainwin.cc', 'streams/socketcanstream.cc', 'streams/pandastream.cc', 'streams/devicestream.cc', 'streams/livestream.cc', 'streams/abstractstream.cc', 'streams/replaystream.cc', 'binaryview.cc', 'historylog.cc', 'videowidget.cc', 'signalview.cc', - 'dbc/dbc.cc', 'dbc/dbcfile.cc', 'dbc/dbcmanager.cc', + 'streams/routes.cc', 'dbc/dbc.cc', 'dbc/dbcfile.cc', 'dbc/dbcmanager.cc', 'utils/export.cc', 'utils/util.cc', 'chart/chartswidget.cc', 'chart/chart.cc', 'chart/signalselector.cc', 'chart/tiplabel.cc', 'chart/sparkline.cc', 'commands.cc', 'messageswidget.cc', 'streamselector.cc', 'settings.cc', 'detailwidget.cc', 'tools/findsimilarbits.cc', 'tools/findsignal.cc'], LIBS=cabana_libs, FRAMEWORKS=base_frameworks) diff --git a/tools/cabana/streams/replaystream.cc b/tools/cabana/streams/replaystream.cc index c75a128a15..3c3e431ce7 100644 --- a/tools/cabana/streams/replaystream.cc +++ b/tools/cabana/streams/replaystream.cc @@ -7,6 +7,7 @@ #include #include "common/timing.h" +#include "tools/cabana/streams/routes.h" ReplayStream::ReplayStream(QObject *parent) : AbstractStream(parent) { unsetenv("ZMQ"); @@ -107,29 +108,36 @@ AbstractOpenStreamWidget *ReplayStream::widget(AbstractStream **stream) { // OpenReplayWidget OpenReplayWidget::OpenReplayWidget(AbstractStream **stream) : AbstractOpenStreamWidget(stream) { - // TODO: get route list from api.comma.ai QGridLayout *grid_layout = new QGridLayout(this); grid_layout->addWidget(new QLabel(tr("Route")), 0, 0); grid_layout->addWidget(route_edit = new QLineEdit(this), 0, 1); - route_edit->setPlaceholderText(tr("Enter remote route name or click browse to select a local route")); - auto file_btn = new QPushButton(tr("Browse..."), this); - grid_layout->addWidget(file_btn, 0, 2); + route_edit->setPlaceholderText(tr("Enter route name or browse for local/remote route")); + auto browse_remote_btn = new QPushButton(tr("Remote route..."), this); + grid_layout->addWidget(browse_remote_btn, 0, 2); + auto browse_local_btn = new QPushButton(tr("Local route..."), this); + grid_layout->addWidget(browse_local_btn, 0, 3); - grid_layout->addWidget(new QLabel(tr("Camera")), 1, 0); QHBoxLayout *camera_layout = new QHBoxLayout(); for (auto c : {tr("Road camera"), tr("Driver camera"), tr("Wide road camera")}) camera_layout->addWidget(cameras.emplace_back(new QCheckBox(c, this))); + cameras[0]->setChecked(true); camera_layout->addStretch(1); grid_layout->addItem(camera_layout, 1, 1); setMinimumWidth(550); - QObject::connect(file_btn, &QPushButton::clicked, [=]() { + QObject::connect(browse_local_btn, &QPushButton::clicked, [=]() { QString dir = QFileDialog::getExistingDirectory(this, tr("Open Local Route"), settings.last_route_dir); if (!dir.isEmpty()) { route_edit->setText(dir); settings.last_route_dir = QFileInfo(dir).absolutePath(); } }); + QObject::connect(browse_remote_btn, &QPushButton::clicked, [this]() { + RoutesDialog route_dlg(this); + if (route_dlg.exec()) { + route_edit->setText(route_dlg.route()); + } + }); } bool OpenReplayWidget::open() { diff --git a/tools/cabana/streams/routes.cc b/tools/cabana/streams/routes.cc new file mode 100644 index 0000000000..c805e7d60d --- /dev/null +++ b/tools/cabana/streams/routes.cc @@ -0,0 +1,123 @@ +#include "tools/cabana/streams/routes.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "system/hardware/hw.h" + +// The RouteListWidget class extends QListWidget to display a custom message when empty +class RouteListWidget : public QListWidget { +public: + RouteListWidget(QWidget *parent = nullptr) : QListWidget(parent) {} + void setEmptyText(const QString &text) { + empty_text_ = text; + viewport()->update(); + } + void paintEvent(QPaintEvent *event) override { + QListWidget::paintEvent(event); + if (count() == 0) { + QPainter painter(viewport()); + painter.drawText(viewport()->rect(), Qt::AlignCenter, empty_text_); + } + } + QString empty_text_ = tr("No items"); +}; + +RoutesDialog::RoutesDialog(QWidget *parent) : QDialog(parent) { + setWindowTitle(tr("Remote routes")); + + QFormLayout *layout = new QFormLayout(this); + layout->addRow(tr("Device"), device_list_ = new QComboBox(this)); + layout->addRow(tr("Duration"), period_selector_ = new QComboBox(this)); + layout->addRow(route_list_ = new RouteListWidget(this)); + auto button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + layout->addRow(button_box); + + device_list_->addItem(tr("Loading...")); + // Populate period selector with predefined durations + period_selector_->addItem(tr("Last week"), 7); + period_selector_->addItem(tr("Last 2 weeks"), 14); + period_selector_->addItem(tr("Last month"), 30); + period_selector_->addItem(tr("Last 6 months"), 180); + + // Connect signals and slots + connect(device_list_, QOverload::of(&QComboBox::currentIndexChanged), this, &RoutesDialog::fetchRoutes); + connect(period_selector_, QOverload::of(&QComboBox::currentIndexChanged), this, &RoutesDialog::fetchRoutes); + connect(route_list_, &QListWidget::itemDoubleClicked, this, &QDialog::accept); + QObject::connect(button_box, &QDialogButtonBox::accepted, this, &QDialog::accept); + QObject::connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); + + // Send request to fetch devices + HttpRequest *http = new HttpRequest(this, !Hardware::PC()); + QObject::connect(http, &HttpRequest::requestDone, this, &RoutesDialog::parseDeviceList); + http->sendRequest(CommaApi::BASE_URL + "/v1/me/devices/"); +} + +void RoutesDialog::parseDeviceList(const QString &json, bool success, QNetworkReply::NetworkError err) { + if (success) { + device_list_->clear(); + auto devices = QJsonDocument::fromJson(json.toUtf8()).array(); + for (const QJsonValue &device : devices) { + QString dongle_id = device["dongle_id"].toString(); + device_list_->addItem(dongle_id, dongle_id); + } + } else { + bool unauthorized = (err == QNetworkReply::ContentAccessDenied || err == QNetworkReply::AuthenticationRequiredError); + QMessageBox::warning(this, tr("Error"), unauthorized ? tr("Unauthorized, Authenticate with tools/lib/auth.py") : tr("Network error")); + reject(); + } + sender()->deleteLater(); +} + +void RoutesDialog::fetchRoutes() { + if (device_list_->currentIndex() == -1 || device_list_->currentData().isNull()) + return; + + route_list_->clear(); + route_list_->setEmptyText(tr("Loading...")); + + HttpRequest *http = new HttpRequest(this, !Hardware::PC()); + QObject::connect(http, &HttpRequest::requestDone, this, &RoutesDialog::parseRouteList); + + // Construct URL with selected device and date range + auto dongle_id = device_list_->currentData().toString(); + QDateTime current = QDateTime::currentDateTime(); + QString url = QString("%1/v1/devices/%2/routes_segments?start=%3&end=%4") + .arg(CommaApi::BASE_URL).arg(dongle_id) + .arg(current.addDays(-(period_selector_->currentData().toInt())).toMSecsSinceEpoch()) + .arg(current.toMSecsSinceEpoch()); + http->sendRequest(url); +} + +void RoutesDialog::parseRouteList(const QString &json, bool success, QNetworkReply::NetworkError err) { + if (success) { + for (const QJsonValue &route : QJsonDocument::fromJson(json.toUtf8()).array()) { + uint64_t start_time = route["start_time_utc_millis"].toDouble(); + uint64_t end_time = route["end_time_utc_millis"].toDouble(); + auto datetime = QDateTime::fromMSecsSinceEpoch(start_time); + auto item = new QListWidgetItem(QString("%1 %2min").arg(datetime.toString()).arg((end_time - start_time) / (1000 * 60))); + item->setData(Qt::UserRole, route["fullname"].toString()); + route_list_->addItem(item); + } + // Select first route if available + if (route_list_->count() > 0) route_list_->setCurrentRow(0); + } else { + QMessageBox::warning(this, tr("Error"), tr("Failed to fetch routes. Check your network connection.")); + reject(); + } + route_list_->setEmptyText(tr("No items")); + sender()->deleteLater(); +} + +void RoutesDialog::accept() { + if (auto current_item = route_list_->currentItem()) { + route_ = current_item->data(Qt::UserRole).toString(); + } + QDialog::accept(); +} diff --git a/tools/cabana/streams/routes.h b/tools/cabana/streams/routes.h new file mode 100644 index 0000000000..31e42fb075 --- /dev/null +++ b/tools/cabana/streams/routes.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include + +#include "selfdrive/ui/qt/api.h" + +class RouteListWidget; + +class RoutesDialog : public QDialog { + Q_OBJECT +public: + RoutesDialog(QWidget *parent); + QString route() const { return route_; } + +protected: + void accept() override; + void parseDeviceList(const QString &json, bool success, QNetworkReply::NetworkError err); + void parseRouteList(const QString &json, bool success, QNetworkReply::NetworkError err); + void fetchRoutes(); + + QComboBox *device_list_; + QComboBox *period_selector_; + RouteListWidget *route_list_; + QString route_; +}; diff --git a/tools/cabana/streamselector.cc b/tools/cabana/streamselector.cc index 07755c0fe0..d12f1a5df7 100644 --- a/tools/cabana/streamselector.cc +++ b/tools/cabana/streamselector.cc @@ -13,12 +13,8 @@ StreamSelector::StreamSelector(AbstractStream **stream, QWidget *parent) : QDialog(parent) { setWindowTitle(tr("Open stream")); - QVBoxLayout *main_layout = new QVBoxLayout(this); - - QWidget *w = new QWidget(this); - QVBoxLayout *layout = new QVBoxLayout(w); + QVBoxLayout *layout = new QVBoxLayout(this); tab = new QTabWidget(this); - tab->setTabBarAutoHide(true); layout->addWidget(tab); QHBoxLayout *dbc_layout = new QHBoxLayout(); @@ -35,9 +31,8 @@ StreamSelector::StreamSelector(AbstractStream **stream, QWidget *parent) : QDial line->setFrameStyle(QFrame::HLine | QFrame::Sunken); layout->addWidget(line); - main_layout->addWidget(w); auto btn_box = new QDialogButtonBox(QDialogButtonBox::Open | QDialogButtonBox::Cancel); - main_layout->addWidget(btn_box); + layout->addWidget(btn_box); addStreamWidget(ReplayStream::widget(stream)); addStreamWidget(PandaStream::widget(stream)); @@ -48,14 +43,11 @@ StreamSelector::StreamSelector(AbstractStream **stream, QWidget *parent) : QDial QObject::connect(btn_box, &QDialogButtonBox::rejected, this, &QDialog::reject); QObject::connect(btn_box, &QDialogButtonBox::accepted, [=]() { - btn_box->button(QDialogButtonBox::Open)->setEnabled(false); - w->setEnabled(false); + setEnabled(false); if (((AbstractOpenStreamWidget *)tab->currentWidget())->open()) { accept(); - } else { - btn_box->button(QDialogButtonBox::Open)->setEnabled(true); - w->setEnabled(true); } + setEnabled(true); }); QObject::connect(file_btn, &QPushButton::clicked, [this]() { QString fn = QFileDialog::getOpenFileName(this, tr("Open File"), settings.last_dir, "DBC (*.dbc)"); From d0e5f42b684171854edc0ab8d4eef8c38aadbc78 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 7 May 2024 20:05:38 -0700 Subject: [PATCH 573/599] agnos 10.1 (#32348) --- launch_env.sh | 2 +- system/hardware/tici/agnos.json | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/launch_env.sh b/launch_env.sh index bfc2e6ac6a..81578aff01 100755 --- a/launch_env.sh +++ b/launch_env.sh @@ -7,7 +7,7 @@ export OPENBLAS_NUM_THREADS=1 export VECLIB_MAXIMUM_THREADS=1 if [ -z "$AGNOS_VERSION" ]; then - export AGNOS_VERSION="10" + export AGNOS_VERSION="10.1" fi export STAGING_ROOT="/data/safe_staging" diff --git a/system/hardware/tici/agnos.json b/system/hardware/tici/agnos.json index cc3f6bb830..46611505c4 100644 --- a/system/hardware/tici/agnos.json +++ b/system/hardware/tici/agnos.json @@ -1,10 +1,10 @@ [ { "name": "boot", - "url": "https://commadist.azureedge.net/agnosupdate/boot-543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1.img.xz", - "hash": "543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1", - "hash_raw": "543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1", - "size": 15636480, + "url": "https://commadist.azureedge.net/agnosupdate/boot-5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f.img.xz", + "hash": "5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f", + "hash_raw": "5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f", + "size": 16029696, "sparse": false, "full_check": true, "has_ab": true @@ -61,17 +61,17 @@ }, { "name": "system", - "url": "https://commadist.azureedge.net/agnosupdate/system-bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a.img.xz", - "hash": "dc2f960631f02446d912885786922c27be4eb1ec6c202cacce6699d5a74021ba", - "hash_raw": "bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a", + "url": "https://commadist.azureedge.net/agnosupdate/system-327fc30fd004eba86e9d6f25d8401738ee73b6001b9cee8358d578bd822192be.img.xz", + "hash": "9cc5c01c3455fb24d0a2651acf94a66e3f3de9edf45175621db854cb57ddaa29", + "hash_raw": "327fc30fd004eba86e9d6f25d8401738ee73b6001b9cee8358d578bd822192be", "size": 10737418240, "sparse": true, "full_check": false, "has_ab": true, "alt": { - "hash": "283e5e754593c6e1bb5e9d63b54624cda5475b88bc1b130fe6ab13acdbd966e2", - "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a.img.xz", - "size": 4548070712 + "hash": "782850019153a72451874ee3d7655ded15606f63ca08a786b81b7d78938fcc55", + "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-327fc30fd004eba86e9d6f25d8401738ee73b6001b9cee8358d578bd822192be.img.xz", + "size": 4548040748 } } ] \ No newline at end of file From 85c9fea5d8e3f5ee673317e15df958a7168a899d Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Wed, 8 May 2024 04:28:59 +0100 Subject: [PATCH 574/599] Ford: use platform codes to fuzzy fingerprint (#31124) * Ford: use platform codes to fuzzy fingerprint TODO: write scripts/tests (print platform codes and version ranges etc.) May close #31052 * get_platform_codes: fix return type * add print_platform_codes.py script * print_platform_codes: sort versions * match_fw_to_car_fuzzy: use set comprehension, and fix typo * Ford: add missing Mach-E fw From the route 83a4e056c7072678/2023-11-13--16-51-33 (which is already in selfdrive/car/tests/routes.py, added in #30691). * add ford_fuzzy_fingerprint.ipynb notebook * get_platform_codes: use regex to parse firmware * test_ford: test_platform_codes_fuzzy_fw * test_ford: use get_platform_codes in test_fw_versions * match_fw_to_car_fuzzy: improve comments * test_ford: add test_platform_codes_spot_check * test_ford: add test_match_fw_fuzzy * remove comment from notebook * TestFordFW: remove engine ECU FW * update print_platform_codes.py * remove part number (unecessary) * platform codes can just use platform hint and model year - software revision not useful * fuzzy FP on the platform hint and model year hint range * fix platform codes test * update notebook * add notebook * explain model year hint better * test part numbers again * cleanup notebooks * remove notebook * cleanup match_fw_to_car_fuzzy and add comments * update comment * . * Revert "remove notebook" This reverts commit 5d4ca202f2a23601d5c829204119f36a58f2b451. * add notebook back * remove PSCM from PLATFORM_CODE_ECUS ABS and IPMA are the best for uniquely matching, and the radar is always required * Revert "remove PSCM from PLATFORM_CODE_ECUS" This reverts commit b7baeac19c18b5aa0c31da52f12054f4bae6e1ff. * fix from merge * more fixes revert * FW_RE -> FW_PATTERN * this can actually be set * conventions * just add * convention * refactor matcher, this brings it more in line with Hyundai. IMPORTANT NOTE: NOTE THAT WE remove the separation for the different platform code model year hint ranges, I don't see that being a problem * better/smaller test * add test to catch overlapping platform codes * remove nb * not now --------- Co-authored-by: Shane Smiskol --- .../car/ford/tests/print_platform_codes.py | 30 +++++ selfdrive/car/ford/tests/test_ford.py | 111 ++++++++++++++---- selfdrive/car/ford/values.py | 75 +++++++++++- 3 files changed, 193 insertions(+), 23 deletions(-) create mode 100755 selfdrive/car/ford/tests/print_platform_codes.py diff --git a/selfdrive/car/ford/tests/print_platform_codes.py b/selfdrive/car/ford/tests/print_platform_codes.py new file mode 100755 index 0000000000..670199980a --- /dev/null +++ b/selfdrive/car/ford/tests/print_platform_codes.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +from collections import defaultdict + +from cereal import car +from openpilot.selfdrive.car.ford.values import get_platform_codes +from openpilot.selfdrive.car.ford.fingerprints import FW_VERSIONS + +Ecu = car.CarParams.Ecu +ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} + + +if __name__ == "__main__": + cars_for_code: defaultdict = defaultdict(lambda: defaultdict(set)) + + for car_model, ecus in FW_VERSIONS.items(): + print(car_model) + for ecu in sorted(ecus, key=lambda x: int(x[0])): + platform_codes = get_platform_codes(ecus[ecu]) + for code in platform_codes: + cars_for_code[ecu][code].add(car_model) + + print(f' (Ecu.{ECU_NAME[ecu[0]]}, {hex(ecu[1])}, {ecu[2]}):') + print(f' Codes: {sorted(platform_codes)}') + print() + + print('\nCar models vs. platform codes:') + for ecu, codes in cars_for_code.items(): + print(f' (Ecu.{ECU_NAME[ecu[0]]}, {hex(ecu[1])}, {ecu[2]}):') + for code, cars in codes.items(): + print(f' {code!r}: {sorted(map(str, cars))}') diff --git a/selfdrive/car/ford/tests/test_ford.py b/selfdrive/car/ford/tests/test_ford.py index 2ad3f5db1b..5d7b2c3332 100755 --- a/selfdrive/car/ford/tests/test_ford.py +++ b/selfdrive/car/ford/tests/test_ford.py @@ -1,12 +1,15 @@ #!/usr/bin/env python3 +import random import unittest -from parameterized import parameterized from collections.abc import Iterable import capnp +from hypothesis import settings, given, strategies as st +from parameterized import parameterized from cereal import car -from openpilot.selfdrive.car.ford.values import FW_QUERY_CONFIG +from openpilot.selfdrive.car.fw_versions import build_fw_dict +from openpilot.selfdrive.car.ford.values import CAR, FW_QUERY_CONFIG, FW_PATTERN, get_platform_codes from openpilot.selfdrive.car.ford.fingerprints import FW_VERSIONS Ecu = car.CarParams.Ecu @@ -23,7 +26,7 @@ ECU_ADDRESSES = { } -ECU_FW_CORE = { +ECU_PART_NUMBER = { Ecu.eps: [ b"14D003", ], @@ -37,9 +40,6 @@ ECU_FW_CORE = { b"14F397", # Ford Q3 b"14H102", # Ford Q4 ], - Ecu.engine: [ - b"14C204", - ], } @@ -53,29 +53,96 @@ class TestFordFW(unittest.TestCase): @parameterized.expand(FW_VERSIONS.items()) def test_fw_versions(self, car_model: str, fw_versions: dict[tuple[capnp.lib.capnp._EnumModule, int, int | None], Iterable[bytes]]): for (ecu, addr, subaddr), fws in fw_versions.items(): - self.assertIn(ecu, ECU_FW_CORE, "Unexpected ECU") + self.assertIn(ecu, ECU_PART_NUMBER, "Unexpected ECU") self.assertEqual(addr, ECU_ADDRESSES[ecu], "ECU address mismatch") self.assertIsNone(subaddr, "Unexpected ECU subaddress") - # Software part number takes the form: PREFIX-CORE-SUFFIX - # Prefix changes based on the family of part. It includes the model year - # and likely the platform. - # Core identifies the type of the item (e.g. 14D003 = PSCM, 14C204 = PCM). - # Suffix specifies the version of the part. -AA would be followed by -AB. - # Small increments in the suffix are usually compatible. - # Details: https://forscan.org/forum/viewtopic.php?p=70008#p70008 for fw in fws: self.assertEqual(len(fw), 24, "Expected ECU response to be 24 bytes") - # TODO: parse with regex, don't need detailed error message - fw_parts = fw.rstrip(b'\x00').split(b'-') - self.assertEqual(len(fw_parts), 3, "Expected FW to be in format: prefix-core-suffix") + match = FW_PATTERN.match(fw) + self.assertIsNotNone(match, f"Unable to parse FW: {fw!r}") + if match: + part_number = match.group("part_number") + self.assertIn(part_number, ECU_PART_NUMBER[ecu], f"Unexpected part number for {fw!r}") - prefix, core, suffix = fw_parts - self.assertEqual(len(prefix), 4, "Expected FW prefix to be 4 characters") - self.assertIn(len(core), (5, 6), "Expected FW core to be 5-6 characters") - self.assertIn(core, ECU_FW_CORE[ecu], f"Unexpected FW core for {ecu}") - self.assertIn(len(suffix), (2, 3), "Expected FW suffix to be 2-3 characters") + codes = get_platform_codes([fw]) + self.assertEqual(1, len(codes), f"Unable to parse FW: {fw!r}") + + @settings(max_examples=100) + @given(data=st.data()) + def test_platform_codes_fuzzy_fw(self, data): + """Ensure function doesn't raise an exception""" + fw_strategy = st.lists(st.binary()) + fws = data.draw(fw_strategy) + get_platform_codes(fws) + + def test_platform_codes_spot_check(self): + # Asserts basic platform code parsing behavior for a few cases + results = get_platform_codes([ + b"JX6A-14C204-BPL\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"NZ6T-14F397-AC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"LB5A-14C204-EAC\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ]) + self.assertEqual(results, {(b"X6A", b"J"), (b"Z6T", b"N"), (b"J6T", b"P"), (b"B5A", b"L")}) + + def test_fuzzy_match(self): + for platform, fw_by_addr in FW_VERSIONS.items(): + # Ensure there's no overlaps in platform codes + for _ in range(20): + car_fw = [] + for ecu, fw_versions in fw_by_addr.items(): + ecu_name, addr, sub_addr = ecu + fw = random.choice(fw_versions) + car_fw.append({"ecu": ecu_name, "fwVersion": fw, "address": addr, + "subAddress": 0 if sub_addr is None else sub_addr}) + + CP = car.CarParams.new_message(carFw=car_fw) + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), CP.carVin, FW_VERSIONS) + self.assertEqual(matches, {platform}) + + def test_match_fw_fuzzy(self): + offline_fw = { + (Ecu.eps, 0x730, None): [ + b"L1MC-14D003-AJ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"L1MC-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ], + (Ecu.abs, 0x760, None): [ + b"L1MC-2D053-BA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"L1MC-2D053-BD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ], + (Ecu.fwdRadar, 0x764, None): [ + b"LB5T-14D049-AB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"LB5T-14D049-AD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ], + # We consider all model year hints for ECU, even with different platform codes + (Ecu.fwdCamera, 0x706, None): [ + b"LB5T-14F397-AD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"NC5T-14F397-AF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ], + } + expected_fingerprint = CAR.FORD_EXPLORER_MK6 + + # ensure that we fuzzy match on all non-exact FW with changed revisions + live_fw = { + (0x730, None): {b"L1MC-14D003-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}, + (0x760, None): {b"L1MC-2D053-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}, + (0x764, None): {b"LB5T-14D049-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}, + (0x706, None): {b"LB5T-14F397-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}, + } + candidates = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fw, '', {expected_fingerprint: offline_fw}) + self.assertEqual(candidates, {expected_fingerprint}) + + # model year hint in between the range should match + live_fw[(0x706, None)] = {b"MB5T-14F397-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"} + candidates = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fw, '', {expected_fingerprint: offline_fw,}) + self.assertEqual(candidates, {expected_fingerprint}) + + # unseen model year hint should not match + live_fw[(0x760, None)] = {b"M1MC-2D053-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"} + candidates = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fw, '', {expected_fingerprint: offline_fw}) + self.assertEqual(len(candidates), 0, "Should not match new model year hint") if __name__ == "__main__": diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index a5494c921c..b1868bfa9b 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -1,4 +1,5 @@ import copy +import re from dataclasses import dataclass, field, replace from enum import Enum, IntFlag @@ -7,7 +8,7 @@ from cereal import car from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, dbc_dict, DbcDict, PlatformConfig, Platforms from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, \ Device -from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 +from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, LiveFwVersions, OfflineFwVersions, Request, StdQueries, p16 Ecu = car.CarParams.Ecu @@ -143,6 +144,76 @@ class CAR(Platforms): ) +# FW response contains a combined software and part number +# A-Z except no I, O or W +# e.g. NZ6A-14C204-AAA +# 1222-333333-444 +# 1 = Model year hint (approximates model year/generation) +# 2 = Platform hint +# 3 = Part number +# 4 = Software version +FW_ALPHABET = b'A-HJ-NP-VX-Z' +FW_PATTERN = re.compile(b'^(?P[' + FW_ALPHABET + b'])' + + b'(?P[0-9' + FW_ALPHABET + b']{3})-' + + b'(?P[0-9' + FW_ALPHABET + b']{5,6})-' + + b'(?P[' + FW_ALPHABET + b']{2,})\x00*$') + + +def get_platform_codes(fw_versions: list[bytes] | set[bytes]) -> set[tuple[bytes, bytes]]: + codes = set() + for fw in fw_versions: + match = FW_PATTERN.match(fw) + if match is not None: + codes.add((match.group('platform_hint'), match.group('model_year_hint'))) + + return codes + + +def match_fw_to_car_fuzzy(live_fw_versions: LiveFwVersions, vin: str, offline_fw_versions: OfflineFwVersions) -> set[str]: + candidates: set[str] = set() + + for candidate, fws in offline_fw_versions.items(): + # Keep track of ECUs which pass all checks (platform hint, within model year hint range) + valid_found_ecus = set() + valid_expected_ecus = {ecu[1:] for ecu in fws if ecu[0] in PLATFORM_CODE_ECUS} + for ecu, expected_versions in fws.items(): + addr = ecu[1:] + # Only check ECUs expected to have platform codes + if ecu[0] not in PLATFORM_CODE_ECUS: + continue + + # Expected platform codes & model year hints + codes = get_platform_codes(expected_versions) + expected_platform_codes = {code for code, _ in codes} + expected_model_year_hints = {model_year_hint for _, model_year_hint in codes} + + # Found platform codes & model year hints + codes = get_platform_codes(live_fw_versions.get(addr, set())) + found_platform_codes = {code for code, _ in codes} + found_model_year_hints = {model_year_hint for _, model_year_hint in codes} + + # Check platform code matches for any found versions + if not any(found_platform_code in expected_platform_codes for found_platform_code in found_platform_codes): + break + + # Check any model year hint within range in the database. Note that some models have more than one + # platform code per ECU which we don't consider as separate ranges + if not any(min(expected_model_year_hints) <= found_model_year_hint <= max(expected_model_year_hints) for + found_model_year_hint in found_model_year_hints): + break + + valid_found_ecus.add(addr) + + # If all live ECUs pass all checks for candidate, add it as a match + if valid_expected_ecus.issubset(valid_found_ecus): + candidates.add(candidate) + + return candidates + + +# All of these ECUs must be present and are expected to have platform codes we can match +PLATFORM_CODE_ECUS = (Ecu.abs, Ecu.fwdCamera, Ecu.fwdRadar, Ecu.eps) + DATA_IDENTIFIER_FORD_ASBUILT = 0xDE00 ASBUILT_BLOCKS: list[tuple[int, list]] = [ @@ -201,6 +272,8 @@ FW_QUERY_CONFIG = FwQueryConfig( (Ecu.shiftByWire, 0x732, None), # Gear Shift Module (Ecu.debug, 0x7d0, None), # Accessory Protocol Interface Module ], + # Custom fuzzy fingerprinting function using platform and model year hints + match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, ) DBC = CAR.create_dbc_map() From 71832d651a8bbb23707df8c2001883c32af22876 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 7 May 2024 20:33:09 -0700 Subject: [PATCH 575/599] Revert "agnos 10.1 (#32348)" This reverts commit d0e5f42b684171854edc0ab8d4eef8c38aadbc78. --- launch_env.sh | 2 +- system/hardware/tici/agnos.json | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/launch_env.sh b/launch_env.sh index 81578aff01..bfc2e6ac6a 100755 --- a/launch_env.sh +++ b/launch_env.sh @@ -7,7 +7,7 @@ export OPENBLAS_NUM_THREADS=1 export VECLIB_MAXIMUM_THREADS=1 if [ -z "$AGNOS_VERSION" ]; then - export AGNOS_VERSION="10.1" + export AGNOS_VERSION="10" fi export STAGING_ROOT="/data/safe_staging" diff --git a/system/hardware/tici/agnos.json b/system/hardware/tici/agnos.json index 46611505c4..cc3f6bb830 100644 --- a/system/hardware/tici/agnos.json +++ b/system/hardware/tici/agnos.json @@ -1,10 +1,10 @@ [ { "name": "boot", - "url": "https://commadist.azureedge.net/agnosupdate/boot-5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f.img.xz", - "hash": "5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f", - "hash_raw": "5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f", - "size": 16029696, + "url": "https://commadist.azureedge.net/agnosupdate/boot-543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1.img.xz", + "hash": "543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1", + "hash_raw": "543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1", + "size": 15636480, "sparse": false, "full_check": true, "has_ab": true @@ -61,17 +61,17 @@ }, { "name": "system", - "url": "https://commadist.azureedge.net/agnosupdate/system-327fc30fd004eba86e9d6f25d8401738ee73b6001b9cee8358d578bd822192be.img.xz", - "hash": "9cc5c01c3455fb24d0a2651acf94a66e3f3de9edf45175621db854cb57ddaa29", - "hash_raw": "327fc30fd004eba86e9d6f25d8401738ee73b6001b9cee8358d578bd822192be", + "url": "https://commadist.azureedge.net/agnosupdate/system-bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a.img.xz", + "hash": "dc2f960631f02446d912885786922c27be4eb1ec6c202cacce6699d5a74021ba", + "hash_raw": "bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a", "size": 10737418240, "sparse": true, "full_check": false, "has_ab": true, "alt": { - "hash": "782850019153a72451874ee3d7655ded15606f63ca08a786b81b7d78938fcc55", - "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-327fc30fd004eba86e9d6f25d8401738ee73b6001b9cee8358d578bd822192be.img.xz", - "size": 4548040748 + "hash": "283e5e754593c6e1bb5e9d63b54624cda5475b88bc1b130fe6ab13acdbd966e2", + "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a.img.xz", + "size": 4548070712 } } ] \ No newline at end of file From 2d838f95dabb0229dba01cd585d852e7ca5d47ff Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 7 May 2024 21:36:04 -0700 Subject: [PATCH 576/599] boardd: add debug flag for injecting SPI errors (#32346) * pull out ll first * errors --------- Co-authored-by: Comma Device --- selfdrive/boardd/panda_comms.h | 1 + selfdrive/boardd/spi.cc | 34 ++++++++++++++++++++++++++++---- selfdrive/debug/check_timings.py | 2 +- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/selfdrive/boardd/panda_comms.h b/selfdrive/boardd/panda_comms.h index e61d25402f..6b64768c17 100644 --- a/selfdrive/boardd/panda_comms.h +++ b/selfdrive/boardd/panda_comms.h @@ -78,5 +78,6 @@ private: int bulk_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx_len, uint8_t *rx_data, uint16_t rx_len, unsigned int timeout); int spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx_len, uint8_t *rx_data, uint16_t max_rx_len, unsigned int timeout); int spi_transfer_retry(uint8_t endpoint, uint8_t *tx_data, uint16_t tx_len, uint8_t *rx_data, uint16_t max_rx_len, unsigned int timeout); + int lltransfer(spi_ioc_transfer &t); }; #endif diff --git a/selfdrive/boardd/spi.cc b/selfdrive/boardd/spi.cc index d11e955c49..e02252018f 100644 --- a/selfdrive/boardd/spi.cc +++ b/selfdrive/boardd/spi.cc @@ -268,7 +268,7 @@ int PandaSpiHandle::wait_for_ack(uint8_t ack, uint8_t tx, unsigned int timeout, tx_buf[0] = tx; while (true) { - int ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &transfer); + int ret = lltransfer(transfer); if (ret < 0) { LOGE("SPI: failed to send ACK request"); return ret; @@ -291,6 +291,32 @@ int PandaSpiHandle::wait_for_ack(uint8_t ack, uint8_t tx, unsigned int timeout, return 0; } +int PandaSpiHandle::lltransfer(spi_ioc_transfer &t) { + static const double err_prob = std::stod(util::getenv("SPI_ERR_PROB", "-1")); + + if (err_prob > 0) { + if ((static_cast(rand()) / RAND_MAX) < err_prob) { + printf("transfer len error\n"); + t.len = rand() % SPI_BUF_SIZE; + } + if ((static_cast(rand()) / RAND_MAX) < err_prob && t.tx_buf != (uint64_t)NULL) { + printf("corrupting TX\n"); + memset((uint8_t*)t.tx_buf, (uint8_t)(rand() % 256), rand() % (t.len+1)); + } + } + + int ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &t); + + if (err_prob > 0) { + if ((static_cast(rand()) / RAND_MAX) < err_prob && t.rx_buf != (uint64_t)NULL) { + printf("corrupting RX\n"); + memset((uint8_t*)t.rx_buf, (uint8_t)(rand() % 256), rand() % (t.len+1)); + } + } + + return ret; +} + int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx_len, uint8_t *rx_data, uint16_t max_rx_len, unsigned int timeout) { int ret; uint16_t rx_data_len; @@ -316,7 +342,7 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx memcpy(tx_buf, &header, sizeof(header)); add_checksum(tx_buf, sizeof(header)); transfer.len = sizeof(header) + 1; - ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &transfer); + ret = lltransfer(transfer); if (ret < 0) { LOGE("SPI: failed to send header"); goto transfer_fail; @@ -334,7 +360,7 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx } add_checksum(tx_buf, tx_len); transfer.len = tx_len + 1; - ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &transfer); + ret = lltransfer(transfer); if (ret < 0) { LOGE("SPI: failed to send data"); goto transfer_fail; @@ -355,7 +381,7 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx transfer.len = rx_data_len + 1; transfer.rx_buf = (uint64_t)(rx_buf + 2 + 1); - ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &transfer); + ret = lltransfer(transfer); if (ret < 0) { LOGE("SPI: failed to read rx data"); goto transfer_fail; diff --git a/selfdrive/debug/check_timings.py b/selfdrive/debug/check_timings.py index 3de6b8eb66..24c467659d 100755 --- a/selfdrive/debug/check_timings.py +++ b/selfdrive/debug/check_timings.py @@ -21,5 +21,5 @@ if __name__ == "__main__": if len(ts[s]) > 2: d = np.diff(ts[s]) - print(f"{s:25} {np.mean(d):.2f} {np.std(d):.2f} {np.max(d):.2f} {np.min(d):.2f}") + print(f"{s:25} {np.mean(d):7.2f} {np.std(d):7.2f} {np.max(d):7.2f} {np.min(d):7.2f}") time.sleep(1) From 7ab39fb92c38987517350b8a5826982c6d8520b1 Mon Sep 17 00:00:00 2001 From: andreasdamm Date: Tue, 7 May 2024 22:49:52 -0600 Subject: [PATCH 577/599] Added ECU FW version for 2021 Lincoln Aviator Black Label Grand Touring (#32361) --- selfdrive/car/ford/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index 4dcf2a65fd..2201072fa3 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -61,6 +61,7 @@ FW_VERSIONS = { b'L1MC-2D053-BB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'L1MC-2D053-BD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'L1MC-2D053-BF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'L1MC-2D053-BJ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'L1MC-2D053-KB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x764, None): [ From c0633953121059b80bd942b5c54311bd9fe08def Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 9 May 2024 01:18:43 +0800 Subject: [PATCH 578/599] util: remove unused functions (#32372) cleanup --- common/util.cc | 22 ---------------------- common/util.h | 6 ------ 2 files changed, 28 deletions(-) diff --git a/common/util.cc b/common/util.cc index b6097bf28f..5ffd6e4099 100644 --- a/common/util.cc +++ b/common/util.cc @@ -246,12 +246,6 @@ std::string random_string(std::string::size_type length) { return s; } -std::string dir_name(std::string const &path) { - size_t pos = path.find_last_of("/"); - if (pos == std::string::npos) return ""; - return path.substr(0, pos); -} - bool starts_with(const std::string &s1, const std::string &s2) { return strncmp(s1.c_str(), s2.c_str(), s2.size()) == 0; } @@ -277,20 +271,4 @@ std::string check_output(const std::string& command) { return result; } -struct tm get_time() { - time_t rawtime; - time(&rawtime); - - struct tm sys_time; - gmtime_r(&rawtime, &sys_time); - - return sys_time; -} - -bool time_valid(struct tm sys_time) { - int year = 1900 + sys_time.tm_year; - int month = 1 + sys_time.tm_mon; - return (year > 2023) || (year == 2023 && month >= 6); -} - } // namespace util diff --git a/common/util.h b/common/util.h index 0e8bcd56bf..186873ac21 100644 --- a/common/util.h +++ b/common/util.h @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include @@ -45,10 +44,6 @@ int set_realtime_priority(int level); int set_core_affinity(std::vector cores); int set_file_descriptor_limit(uint64_t limit); -// ***** Time helpers ***** -struct tm get_time(); -bool time_valid(struct tm sys_time); - // ***** math helpers ***** // map x from [a1, a2] to [b1, b2] @@ -75,7 +70,6 @@ int getenv(const char* key, int default_val); float getenv(const char* key, float default_val); std::string hexdump(const uint8_t* in, const size_t size); -std::string dir_name(std::string const& path); bool starts_with(const std::string &s1, const std::string &s2); bool ends_with(const std::string &s, const std::string &suffix); From adf52c7355222b994e932226b43c9ed434f7e6ea Mon Sep 17 00:00:00 2001 From: young <44352170+thftgr@users.noreply.github.com> Date: Thu, 9 May 2024 05:35:32 +0900 Subject: [PATCH 579/599] Kia: add missing K8 Hybrid 2024 FW (#32259) add kia k8 hev 2024 fingerprints --- selfdrive/car/hyundai/fingerprints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 77a04a7aaf..0c43b8e340 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -1133,6 +1133,7 @@ FW_VERSIONS = { CAR.KIA_K8_HEV_1ST_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00GL3HMFC AT KOR LHD 1.00 1.03 99211-L8000 210907', + b'\xf1\x00GL3HMFC AT KOR LHD 1.00 1.04 99211-L8000 230207', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00GL3_ RDR ----- 1.00 1.02 99110-L8000 ', From 93fa207c5cafa908a15dd460025c005ee7cf1746 Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Wed, 8 May 2024 17:38:08 -0400 Subject: [PATCH 580/599] VW: raise minimum steering speed to fix a fault (#31450) * VW: Steer to zero, for large values of zero * ah, the joy of floating point * comment, style * actually fix floating point issue * follow PlatformConfig refactor * this check is not useful after PlatformConfig * don't really need that * work around docs assert * little better * one comment * update refs --------- Co-authored-by: Shane Smiskol --- selfdrive/car/docs_definitions.py | 2 +- selfdrive/car/volkswagen/interface.py | 4 ++-- selfdrive/car/volkswagen/values.py | 6 ++++++ selfdrive/test/process_replay/ref_commit | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py index bb1ca6bd42..b66d2a16e0 100644 --- a/selfdrive/car/docs_definitions.py +++ b/selfdrive/car/docs_definitions.py @@ -266,7 +266,7 @@ class CarDocs: # min steer & enable speed columns # TODO: set all the min steer speeds in carParams and remove this if self.min_steer_speed is not None: - assert CP.minSteerSpeed == 0, f"{CP.carFingerprint}: Minimum steer speed set in both CarDocs and CarParams" + assert CP.minSteerSpeed < 0.5, f"{CP.carFingerprint}: Minimum steer speed set in both CarDocs and CarParams" else: self.min_steer_speed = CP.minSteerSpeed diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 83a8cde9a8..91cd300e92 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -2,7 +2,7 @@ from cereal import car from panda import Panda from openpilot.selfdrive.car import get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase -from openpilot.selfdrive.car.volkswagen.values import CAR, CANBUS, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags +from openpilot.selfdrive.car.volkswagen.values import CAR, CANBUS, CarControllerParams, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags ButtonType = car.CarState.ButtonEvent.Type EventName = car.CarEvent.EventName @@ -111,7 +111,7 @@ class CarInterface(CarInterfaceBase): enable_buttons=(ButtonType.setCruise, ButtonType.resumeCruise)) # Low speed steer alert hysteresis logic - if self.CP.minSteerSpeed > 0. and ret.vEgo < (self.CP.minSteerSpeed + 1.): + if (self.CP.minSteerSpeed - 1e-3) > CarControllerParams.DEFAULT_MIN_STEER_SPEED and ret.vEgo < (self.CP.minSteerSpeed + 1.): self.low_speed_alert = True elif ret.vEgo > (self.CP.minSteerSpeed + 2.): self.low_speed_alert = False diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index a0d38d1b57..d25c52f225 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -34,6 +34,8 @@ class CarControllerParams: STEER_TIME_ALERT = STEER_TIME_MAX - 10 # If mitigation fails, time to soft disengage before EPS timer expires STEER_TIME_STUCK_TORQUE = 1.9 # EPS limits same torque to 6 seconds, reset timer 3x within that period + DEFAULT_MIN_STEER_SPEED = 0.4 # m/s, newer EPS racks fault below this speed, don't show a low speed alert + ACCEL_MAX = 2.0 # 2.0 m/s max acceleration ACCEL_MIN = -3.5 # 3.5 m/s max deceleration @@ -159,6 +161,7 @@ class VolkswagenPQPlatformConfig(VolkswagenMQBPlatformConfig): class VolkswagenCarSpecs(CarSpecs): centerToFrontRatio: float = 0.45 steerRatio: float = 15.6 + minSteerSpeed: float = CarControllerParams.DEFAULT_MIN_STEER_SPEED class Footnote(Enum): @@ -195,6 +198,9 @@ class VWCarDocs(CarDocs): if CP.carFingerprint in (CAR.VOLKSWAGEN_CRAFTER_MK2, CAR.VOLKSWAGEN_TRANSPORTER_T61): self.car_parts = CarParts([Device.threex_angled_mount, CarHarness.j533]) + if abs(CP.minSteerSpeed - CarControllerParams.DEFAULT_MIN_STEER_SPEED) < 1e-3: + self.min_steer_speed = 0 + # Check the 7th and 8th characters of the VIN before adding a new CAR. If the # chassis code is already listed below, don't add a new CAR, just add to the diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 4e24f8eb29..a0d3cc6bb2 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -692a21e4a722d91086998b532ca6759a3f85c345 +685a2bb9aacdd790e26d14aa49d3792c3ed65125 \ No newline at end of file From 451a38ddee4d54d2d9b06fe6d8cef8ef09c6b1cf Mon Sep 17 00:00:00 2001 From: YI418LT <135338253+YI418LT@users.noreply.github.com> Date: Thu, 9 May 2024 07:19:06 +0900 Subject: [PATCH 581/599] Honda: add missing FW for Civic Hatchback 2020 (Type R Japanese model) (#32305) * Update fingerprints.py * format --------- Co-authored-by: Shane Smiskol --- selfdrive/car/honda/fingerprints.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 55bd8b7aec..052b4b60a3 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -295,6 +295,7 @@ FW_VERSIONS = { b'37805-5BB-L540\x00\x00', b'37805-5BB-L630\x00\x00', b'37805-5BB-L640\x00\x00', + b'37805-5BF-J130\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ b'28101-5CG-A920\x00\x00', @@ -328,6 +329,7 @@ FW_VERSIONS = { b'57114-TGG-G320\x00\x00', b'57114-TGG-L320\x00\x00', b'57114-TGG-L330\x00\x00', + b'57114-TGH-L130\x00\x00', b'57114-TGK-T320\x00\x00', b'57114-TGL-G330\x00\x00', ], @@ -341,6 +343,7 @@ FW_VERSIONS = { b'39990-TGG-A020\x00\x00', b'39990-TGG-A120\x00\x00', b'39990-TGG-J510\x00\x00', + b'39990-TGH-J530\x00\x00', b'39990-TGL-E130\x00\x00', b'39990-TGN-E120\x00\x00', ], @@ -355,6 +358,7 @@ FW_VERSIONS = { b'77959-TGG-G110\x00\x00', b'77959-TGG-J320\x00\x00', b'77959-TGG-Z820\x00\x00', + b'77959-TGH-J110\x00\x00', ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TBA-A150\x00\x00', @@ -366,6 +370,7 @@ FW_VERSIONS = { b'36802-TGG-A130\x00\x00', b'36802-TGG-G040\x00\x00', b'36802-TGG-G130\x00\x00', + b'36802-TGH-A140\x00\x00', b'36802-TGK-Q120\x00\x00', b'36802-TGL-G040\x00\x00', ], @@ -380,6 +385,7 @@ FW_VERSIONS = { b'36161-TGG-G070\x00\x00', b'36161-TGG-G130\x00\x00', b'36161-TGG-G140\x00\x00', + b'36161-TGH-A140\x00\x00', b'36161-TGK-Q120\x00\x00', b'36161-TGL-G050\x00\x00', b'36161-TGL-G070\x00\x00', @@ -387,6 +393,7 @@ FW_VERSIONS = { (Ecu.gateway, 0x18daeff1, None): [ b'38897-TBA-A020\x00\x00', b'38897-TBA-A110\x00\x00', + b'38897-TGH-A010\x00\x00', ], (Ecu.electricBrakeBooster, 0x18da2bf1, None): [ b'39494-TGL-G030\x00\x00', From fe4c7f1499e3ce70eb1ec614ae8ea370415ed802 Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Wed, 8 May 2024 18:34:16 -0400 Subject: [PATCH 582/599] VW MQB: Add FW for 2022 CUPRA Ateca (#32318) * VW MQB: Add FW for 2022 SEAT Ateca * extend Ateca supported model-years * CUPRA Ateca available from 2018 * regen CARS.md * wrong model year format --- docs/CARS.md | 5 +++-- selfdrive/car/volkswagen/fingerprints.py | 5 +++++ selfdrive/car/volkswagen/values.py | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/CARS.md b/docs/CARS.md index 6cf224d135..7e5324d322 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -4,7 +4,7 @@ A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. -# 285 Supported Cars +# 286 Supported Cars |Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Resume from stop|Hardware Needed
 |Video| |---|---|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:| @@ -29,6 +29,7 @@ A supported vehicle is one that just works when you install a comma device. All |Chrysler|Pacifica Hybrid 2018|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chrysler|Pacifica Hybrid 2019-23|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |comma|body|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|None|| +|CUPRA|Ateca 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Dodge|Durango 2020-21|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Bronco Sport 2021-23|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Escape 2020-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -192,7 +193,7 @@ A supported vehicle is one that just works when you install a comma device. All |Nissan|Rogue 2018-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Nissan A connector
- 1 RJ45 cable (7 ft)
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Nissan|X-Trail 2017|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Nissan A connector
- 1 RJ45 cable (7 ft)
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ram|1500 2019-24|Adaptive Cruise Control (ACC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Ram connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|SEAT|Ateca 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|SEAT|Ateca 2016-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |SEAT|Leon 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Subaru|Ascent 2019-21|All[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| |Subaru|Crosstrek 2018-19|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index def5ce6e03..e20fa4fc1c 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -891,6 +891,7 @@ FW_VERSIONS = { b'\xf1\x8704L906056CR\xf1\x892181', b'\xf1\x8704L906056CR\xf1\x892797', b'\xf1\x8705E906018AS\xf1\x899596', + b'\xf1\x8781A906259B \xf1\x890003', b'\xf1\x878V0906264H \xf1\x890005', b'\xf1\x878V0907115E \xf1\x890002', ], @@ -900,6 +901,7 @@ FW_VERSIONS = { b'\xf1\x870CW300050J \xf1\x891908', b'\xf1\x870D9300014S \xf1\x895202', b'\xf1\x870D9300042M \xf1\x895016', + b'\xf1\x870GC300014P \xf1\x892801', b'\xf1\x870GC300043A \xf1\x892304', ], (Ecu.srs, 0x715, None): [ @@ -910,6 +912,7 @@ FW_VERSIONS = { b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1312001313001305171311052900', b'\xf1\x873Q0959655BH\xf1\x890712\xf1\x82\x0e1312001313001305171311052900', b'\xf1\x873Q0959655CM\xf1\x890720\xf1\x82\x0e1312001313001305171311052900', + b'\xf1\x875QF959655AT\xf1\x890755\xf1\x82\x1311110011110011111100110200--1113121149', ], (Ecu.eps, 0x712, None): [ b'\xf1\x873Q0909144L \xf1\x895081\xf1\x82\x0571N60511A1', @@ -918,8 +921,10 @@ FW_VERSIONS = { b'\xf1\x875Q0909144P \xf1\x891043\xf1\x82\x0511N01805A0', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521N01309A1', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521N05808A1', + b'\xf1\x875WA907145M \xf1\x891051\xf1\x82\x0013N619137N', ], (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x872Q0907572AA\xf1\x890396', b'\xf1\x872Q0907572M \xf1\x890233', b'\xf1\x875Q0907572B \xf1\x890200\xf1\x82\x0101', b'\xf1\x875Q0907572H \xf1\x890620', diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index d25c52f225..2ea169d1c6 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -378,7 +378,8 @@ class CAR(Platforms): ) SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( [ - VWCarDocs("SEAT Ateca 2018"), + VWCarDocs("CUPRA Ateca 2018-23"), + VWCarDocs("SEAT Ateca 2016-23"), VWCarDocs("SEAT Leon 2014-20"), ], VolkswagenCarSpecs(mass=1300, wheelbase=2.64), From b895095031918dd092061481a9212acda5368c8f Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 8 May 2024 15:58:27 -0700 Subject: [PATCH 583/599] Cleanup auto_fingerprints.py (#32377) * messyyy * super clean car wash * rm --- tools/car_porting/auto_fingerprint.py | 60 +++++++-------------------- 1 file changed, 15 insertions(+), 45 deletions(-) diff --git a/tools/car_porting/auto_fingerprint.py b/tools/car_porting/auto_fingerprint.py index 0a6b602a15..145f38c63f 100755 --- a/tools/car_porting/auto_fingerprint.py +++ b/tools/car_porting/auto_fingerprint.py @@ -4,67 +4,37 @@ import argparse from collections import defaultdict from openpilot.selfdrive.debug.format_fingerprints import format_brand_fw_versions -from openpilot.selfdrive.car.fw_versions import match_fw_to_car -from openpilot.selfdrive.car.interfaces import get_interface_attr +from openpilot.selfdrive.car.fingerprints import MIGRATION +from openpilot.selfdrive.car.fw_versions import MODEL_TO_BRAND, match_fw_to_car from openpilot.tools.lib.logreader import LogReader, ReadMode - -ALL_FW_VERSIONS = get_interface_attr("FW_VERSIONS") -ALL_CARS = get_interface_attr("CAR") - -PLATFORM_TO_PYTHON_CAR_NAME = {brand: {car.value: car.name for car in ALL_CARS[brand]} for brand in ALL_CARS} -BRAND_TO_PLATFORMS = {brand: [car.value for car in ALL_CARS[brand]] for brand in ALL_CARS} -PLATFORM_TO_BRAND = dict(sum([[(platform, brand) for platform in BRAND_TO_PLATFORMS[brand]] for brand in BRAND_TO_PLATFORMS], [])) - - if __name__ == "__main__": parser = argparse.ArgumentParser(description="Auto fingerprint from a route") parser.add_argument("route", help="The route name to use") - parser.add_argument("platform", help="The platform, or leave empty to auto-determine using fuzzy", default=None, nargs='?') + parser.add_argument("platform", help="The platform, or leave empty to auto-determine using fuzzy", default=None, nargs="?") args = parser.parse_args() lr = LogReader(args.route, ReadMode.QLOG) - - carFw = None - carVin = None - carPlatform = None - - platform: str | None = None - CP = lr.first("carParams") + assert CP is not None, "No carParams in route" - if CP is None: - raise Exception("No fw versions in the provided route...") + carPlatform = MIGRATION.get(CP.carFingerprint, CP.carFingerprint) - carFw = CP.carFw - carVin = CP.carVin - carPlatform = CP.carFingerprint - - if args.platform is None: # attempt to auto-determine platform with other fuzzy fingerprints - _, possible_platforms = match_fw_to_car(carFw, carVin, log=False) - - if len(possible_platforms) != 1: - print(f"Unable to auto-determine platform, possible platforms: {possible_platforms}") - - if carPlatform != "MOCK": - print("Using platform from route") - platform = carPlatform - else: - platform = None - else: - platform = list(possible_platforms)[0] - else: + if args.platform is not None: platform = args.platform + elif carPlatform != "MOCK": + platform = carPlatform + else: + _, matches = match_fw_to_car(CP.carFw, CP.carVin, log=False) + assert len(matches) == 1, f"Unable to auto-determine platform, matches: {matches}" + platform = list(matches)[0] - if platform is None: - raise Exception("unable to determine platform, try manually specifying the fingerprint.") - - print("Attempting to add fw version for: ", platform) + print("Attempting to add fw version for:", platform) fw_versions: dict[str, dict[tuple, list[bytes]]] = defaultdict(lambda: defaultdict(list)) - brand = PLATFORM_TO_BRAND[platform] + brand = MODEL_TO_BRAND[platform] - for fw in carFw: + for fw in CP.carFw: if fw.brand == brand and not fw.logging: addr = fw.address subAddr = None if fw.subAddress == 0 else fw.subAddress From 7ff66986c1a7bcfc9b459a5bb635a9f394cf2fa1 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 8 May 2024 16:51:27 -0700 Subject: [PATCH 584/599] agnos 10.1 (#32373) --- launch_env.sh | 2 +- system/hardware/tici/agnos.json | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/launch_env.sh b/launch_env.sh index bfc2e6ac6a..81578aff01 100755 --- a/launch_env.sh +++ b/launch_env.sh @@ -7,7 +7,7 @@ export OPENBLAS_NUM_THREADS=1 export VECLIB_MAXIMUM_THREADS=1 if [ -z "$AGNOS_VERSION" ]; then - export AGNOS_VERSION="10" + export AGNOS_VERSION="10.1" fi export STAGING_ROOT="/data/safe_staging" diff --git a/system/hardware/tici/agnos.json b/system/hardware/tici/agnos.json index cc3f6bb830..b1862bdef9 100644 --- a/system/hardware/tici/agnos.json +++ b/system/hardware/tici/agnos.json @@ -1,10 +1,10 @@ [ { "name": "boot", - "url": "https://commadist.azureedge.net/agnosupdate/boot-543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1.img.xz", - "hash": "543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1", - "hash_raw": "543fdc8aadf700f33a6e90740b8a227036bbd190626861d45ba1eb0d9ac422d1", - "size": 15636480, + "url": "https://commadist.azureedge.net/agnosupdate/boot-5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f.img.xz", + "hash": "5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f", + "hash_raw": "5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f", + "size": 16029696, "sparse": false, "full_check": true, "has_ab": true @@ -61,17 +61,17 @@ }, { "name": "system", - "url": "https://commadist.azureedge.net/agnosupdate/system-bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a.img.xz", - "hash": "dc2f960631f02446d912885786922c27be4eb1ec6c202cacce6699d5a74021ba", - "hash_raw": "bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a", + "url": "https://commadist.azureedge.net/agnosupdate/system-1badfe72851628d6cf9200a53a6151bb4e797b49c717141409fc57138eae388a.img.xz", + "hash": "328e90c62068222dfd98f71dd3f6251fcb962f082b49c6be66ab2699f5db6f4f", + "hash_raw": "1badfe72851628d6cf9200a53a6151bb4e797b49c717141409fc57138eae388a", "size": 10737418240, "sparse": true, "full_check": false, "has_ab": true, "alt": { - "hash": "283e5e754593c6e1bb5e9d63b54624cda5475b88bc1b130fe6ab13acdbd966e2", - "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-bd2967074298a2686f81e2094db3867d7cb2605750d63b1a7309a923f6985b2a.img.xz", - "size": 4548070712 + "hash": "bc11d2148f29862ee1326aca2af1cf6bbf5fed831e3f8f6b8f7a0f110dfe8d26", + "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-1badfe72851628d6cf9200a53a6151bb4e797b49c717141409fc57138eae388a.img.xz", + "size": 4548070000 } } ] \ No newline at end of file From a83b182c552476dfda71784570916777135b3d4e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 8 May 2024 17:17:08 -0700 Subject: [PATCH 585/599] Volkswagen: improve fuzzy fingerprinting (#32378) * improve VW fuzzy FP matching * annotate * Revert "annotate" This reverts commit 09cbb150e91f5093849c22d95e31152fb8d4d1a9. * hmm --- selfdrive/car/volkswagen/tests/test_volkswagen.py | 9 +++++---- selfdrive/car/volkswagen/values.py | 15 +++++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/selfdrive/car/volkswagen/tests/test_volkswagen.py b/selfdrive/car/volkswagen/tests/test_volkswagen.py index 92569e194e..17331203bb 100755 --- a/selfdrive/car/volkswagen/tests/test_volkswagen.py +++ b/selfdrive/car/volkswagen/tests/test_volkswagen.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +import random import re import unittest @@ -38,9 +39,9 @@ class TestVolkswagenPlatformConfigs(unittest.TestCase): f"Shared chassis codes: {comp}") def test_custom_fuzzy_fingerprinting(self): - for platform in CAR: - expected_radar_fw = FW_VERSIONS[platform][Ecu.fwdRadar, 0x757, None] + all_radar_fw = list({fw for ecus in FW_VERSIONS.values() for fw in ecus[Ecu.fwdRadar, 0x757, None]}) + for platform in CAR: with self.subTest(platform=platform): for wmi in WMI: for chassis_code in platform.config.chassis_codes | {"00"}: @@ -50,9 +51,9 @@ class TestVolkswagenPlatformConfigs(unittest.TestCase): vin = "".join(vin) # Check a few FW cases - expected, unexpected - for radar_fw in expected_radar_fw + [b'\xf1\x877H9907572AA\xf1\x890396']: + for radar_fw in random.sample(all_radar_fw, 5) + [b'\xf1\x875Q0907572G \xf1\x890571', b'\xf1\x877H9907572AA\xf1\x890396']: should_match = ((wmi in platform.config.wmis and chassis_code in platform.config.chassis_codes) and - radar_fw in expected_radar_fw) + radar_fw in all_radar_fw) live_fws = {(0x757, None): [radar_fw]} matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fws, vin, FW_VERSIONS) diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 2ea169d1c6..eb537575fa 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -1,4 +1,4 @@ -from collections import namedtuple +from collections import defaultdict, namedtuple from dataclasses import dataclass, field from enum import Enum, IntFlag, StrEnum @@ -9,7 +9,7 @@ from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, \ Device -from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 +from openpilot.selfdrive.car.fw_query_definitions import EcuAddrSubAddr, FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu NetworkLocation = car.CarParams.NetworkLocation @@ -434,19 +434,26 @@ class CAR(Platforms): def match_fw_to_car_fuzzy(live_fw_versions, vin, offline_fw_versions) -> set[str]: candidates = set() + # Compile all FW versions for each ECU + all_ecu_versions: dict[EcuAddrSubAddr, set[str]] = defaultdict(set) + for ecus in offline_fw_versions.values(): + for ecu, versions in ecus.items(): + all_ecu_versions[ecu] |= set(versions) + # Check the WMI and chassis code to determine the platform wmi = vin[:3] chassis_code = vin[6:8] for platform in CAR: valid_ecus = set() - for ecu, expected_versions in offline_fw_versions[platform].items(): + for ecu in offline_fw_versions[platform]: addr = ecu[1:] if ecu[0] not in CHECK_FUZZY_ECUS: continue - # Sanity check that a subset of Volkswagen FW is in the database + # Sanity check that live FW is in the superset of all FW, Volkswagen ECU part numbers are commonly shared found_versions = live_fw_versions.get(addr, []) + expected_versions = all_ecu_versions[ecu] if not any(found_version in expected_versions for found_version in found_versions): break From c53c90f7fac73a9ba7dad81bf9c349535651bf6d Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 8 May 2024 17:58:14 -0800 Subject: [PATCH 586/599] Bump submodules (#327) --- cereal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cereal b/cereal index 78aca3ea81..2a2de7edc3 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 78aca3ea81fb131da51776315fbdd546d2b6987e +Subproject commit 2a2de7edc39baff6b10cb52ca7a8d97c7452dcb1 From 273a4f5ca9313673caadccf9e6910ab080f7f047 Mon Sep 17 00:00:00 2001 From: ZwX1616 Date: Wed, 8 May 2024 20:05:03 -0700 Subject: [PATCH 587/599] Always-on DM: no audible alert at low speeds / block engagement if alert present (#32379) * min speed * cmments * no entry? * comment --- selfdrive/monitoring/dmonitoringd.py | 9 +++++---- selfdrive/monitoring/driver_monitor.py | 16 +++++++++++----- selfdrive/monitoring/test_monitoring.py | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/selfdrive/monitoring/dmonitoringd.py b/selfdrive/monitoring/dmonitoringd.py index 84a147bd47..c18bbf29b9 100755 --- a/selfdrive/monitoring/dmonitoringd.py +++ b/selfdrive/monitoring/dmonitoringd.py @@ -22,7 +22,7 @@ def dmonitoringd_thread(): v_cruise_last = 0 driver_engaged = False - # 10Hz <- dmonitoringmodeld + # 20Hz <- dmonitoringmodeld while True: sm.update() if not sm.updated['driverStateV2']: @@ -46,14 +46,15 @@ def dmonitoringd_thread(): if sm.all_checks() and len(sm['liveCalibration'].rpyCalib): driver_status.update_states(sm['driverStateV2'], sm['liveCalibration'].rpyCalib, sm['carState'].vEgo, sm['controlsState'].enabled) - # Block engaging after max number of distrations + # Block engaging after max number of distrations or when alert active if driver_status.terminal_alert_cnt >= driver_status.settings._MAX_TERMINAL_ALERTS or \ - driver_status.terminal_time >= driver_status.settings._MAX_TERMINAL_DURATION: + driver_status.terminal_time >= driver_status.settings._MAX_TERMINAL_DURATION or \ + driver_status.always_on and driver_status.awareness <= driver_status.threshold_prompt: events.add(car.CarEvent.EventName.tooDistracted) # Update events from driver state driver_status.update_events(events, driver_engaged, sm['controlsState'].enabled, - sm['carState'].standstill, sm['carState'].gearShifter in [car.CarState.GearShifter.reverse, car.CarState.GearShifter.park]) + sm['carState'].standstill, sm['carState'].gearShifter in [car.CarState.GearShifter.reverse, car.CarState.GearShifter.park], sm['carState'].vEgo) # build driverMonitoringState packet dat = messaging.new_message('driverMonitoringState', valid=sm.all_checks()) diff --git a/selfdrive/monitoring/driver_monitor.py b/selfdrive/monitoring/driver_monitor.py index 749931af77..7db0bd6c9f 100644 --- a/selfdrive/monitoring/driver_monitor.py +++ b/selfdrive/monitoring/driver_monitor.py @@ -55,6 +55,7 @@ class DRIVER_MONITOR_SETTINGS(): self._POSESTD_THRESHOLD = 0.3 self._HI_STD_FALLBACK_TIME = int(10 / self._DT_DMON) # fall back to wheel touch if model is uncertain for 10s self._DISTRACTED_FILTER_TS = 0.25 # 0.6Hz + self._ALWAYS_ON_ALERT_MIN_SPEED = 7 self._POSE_CALIB_MIN_SPEED = 13 # 30 mph self._POSE_OFFSET_MIN_COUNT = int(60 / self._DT_DMON) # valid data counts before calibration completes, 1min cumulative @@ -302,7 +303,7 @@ class DriverStatus(): elif self.face_detected and self.pose.low_std: self.hi_stds = 0 - def update_events(self, events, driver_engaged, ctrl_active, standstill, wrong_gear): + def update_events(self, events, driver_engaged, ctrl_active, standstill, wrong_gear, car_speed): always_on_valid = self.always_on and not wrong_gear if (driver_engaged and self.awareness > 0 and not self.active_monitoring_mode) or \ (not always_on_valid and not ctrl_active) or \ @@ -327,14 +328,19 @@ class DriverStatus(): if self.awareness > self.threshold_prompt: return - standstill_exemption = standstill and self.awareness - self.step_change <= self.threshold_prompt - always_on_red_exemption = always_on_valid and not ctrl_active and self.awareness - self.step_change <= 0 + _reaching_audible = self.awareness - self.step_change <= self.threshold_prompt + _reaching_terminal = self.awareness - self.step_change <= 0 + standstill_exemption = standstill and _reaching_audible + always_on_red_exemption = always_on_valid and not ctrl_active and _reaching_terminal + always_on_lowspeed_exemption = always_on_valid and not ctrl_active and car_speed < self.settings._ALWAYS_ON_ALERT_MIN_SPEED and _reaching_audible + certainly_distracted = self.driver_distraction_filter.x > 0.63 and self.driver_distracted and self.face_detected maybe_distracted = self.hi_stds > self.settings._HI_STD_FALLBACK_TIME or not self.face_detected + if certainly_distracted or maybe_distracted: - # should always be counting if distracted unless at standstill and reaching orange + # should always be counting if distracted unless at standstill (lowspeed for always-on) and reaching orange # also will not be reaching 0 if DM is active when not engaged - if not standstill_exemption and not always_on_red_exemption: + if not (standstill_exemption or always_on_red_exemption or always_on_lowspeed_exemption): self.awareness = max(self.awareness - self.step_change, -0.1) alert = None diff --git a/selfdrive/monitoring/test_monitoring.py b/selfdrive/monitoring/test_monitoring.py index 39fef75479..50b2746e2d 100755 --- a/selfdrive/monitoring/test_monitoring.py +++ b/selfdrive/monitoring/test_monitoring.py @@ -63,7 +63,7 @@ class TestMonitoring(unittest.TestCase): # cal_rpy and car_speed don't matter here # evaluate events at 10Hz for tests - DS.update_events(e, interaction[idx], engaged[idx], standstill[idx], 0) + DS.update_events(e, interaction[idx], engaged[idx], standstill[idx], 0, 0) events.append(e) assert len(events) == len(msgs), f"got {len(events)} for {len(msgs)} driverState input msgs" return events, DS From 2e6b2ef3c973549c5375684ba36f1b12372167a4 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 8 May 2024 23:54:20 -0700 Subject: [PATCH 588/599] card: preparation (#32382) * card prep * also format --- selfdrive/car/card.py | 7 ++----- selfdrive/car/mock/interface.py | 1 + selfdrive/controls/controlsd.py | 4 ---- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py index 82335500d8..8d1ef70d62 100755 --- a/selfdrive/car/card.py +++ b/selfdrive/car/card.py @@ -15,7 +15,6 @@ from openpilot.selfdrive.boardd.boardd import can_list_to_can_capnp from openpilot.selfdrive.car.car_helpers import get_car, get_one_can from openpilot.selfdrive.car.interfaces import CarInterfaceBase - REPLAY = "REPLAY" in os.environ @@ -28,7 +27,7 @@ class CarD: self.sm = messaging.SubMaster(['pandaStates']) self.pm = messaging.PubMaster(['sendcan', 'carState', 'carParams', 'carOutput']) - self.can_rcv_timeout_counter = 0 # conseuctive timeout count + self.can_rcv_timeout_counter = 0 # consecutive timeout count self.can_rcv_cum_timeout_counter = 0 # cumulative timeout count self.CC_prev = car.CarControl.new_message() @@ -54,12 +53,11 @@ class CarD: if not disengage_on_accelerator: self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS - car_recognized = self.CP.carName != 'mock' openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly - self.CP.passive = not car_recognized or not controller_available or self.CP.dashcamOnly + self.CP.passive = not controller_available or self.CP.dashcamOnly if self.CP.passive: safety_config = car.CarParams.SafetyConfig.new_message() safety_config.safetyModel = car.CarParams.SafetyModel.noOutput @@ -139,4 +137,3 @@ class CarD: self.pm.send('sendcan', can_list_to_can_capnp(can_sends, msgtype='sendcan', valid=self.CS.canValid)) self.CC_prev = CC - diff --git a/selfdrive/car/mock/interface.py b/selfdrive/car/mock/interface.py index 6100717a74..7506bab053 100755 --- a/selfdrive/car/mock/interface.py +++ b/selfdrive/car/mock/interface.py @@ -18,6 +18,7 @@ class CarInterface(CarInterfaceBase): ret.wheelbase = 2.70 ret.centerToFront = ret.wheelbase * 0.5 ret.steerRatio = 13. + ret.dashcamOnly = True return ret def _update(self, c): diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 35dad3f81a..725a433dc6 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -111,7 +111,6 @@ class Controls: if not self.CP.openpilotLongitudinalControl: self.params.remove("ExperimentalMode") - self.CC = car.CarControl.new_message() self.CS_prev = car.CarState.new_message() self.AM = AlertManager() self.events = Events() @@ -805,9 +804,6 @@ class Controls: cc_send.carControl = CC self.pm.send('carControl', cc_send) - # copy CarControl to pass to CarInterface on the next iteration - self.CC = CC - def step(self): start_time = time.monotonic() From ae6ef196e79d846aea7c943c12e4217a407e47fb Mon Sep 17 00:00:00 2001 From: devtekve Date: Thu, 9 May 2024 15:40:26 +0200 Subject: [PATCH 589/599] Add QStackedLayout to onroad_home.cc Added QStackedLayout to the includes in onroad_home.cc file. Not sure how it was compiling for others, but it wasn't working for me on m1 --- selfdrive/ui/qt/onroad/onroad_home.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/selfdrive/ui/qt/onroad/onroad_home.cc b/selfdrive/ui/qt/onroad/onroad_home.cc index 1c12a2c3a2..66eb1812e6 100644 --- a/selfdrive/ui/qt/onroad/onroad_home.cc +++ b/selfdrive/ui/qt/onroad/onroad_home.cc @@ -1,6 +1,7 @@ #include "selfdrive/ui/qt/onroad/onroad_home.h" #include +#include #ifdef ENABLE_MAPS #include "selfdrive/ui/qt/maps/map_helpers.h" From 0f8c4ed15533933f28c9560f72a5b1619b7e717e Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 9 May 2024 10:39:58 -0800 Subject: [PATCH 590/599] Bump submodules (#329) --- cereal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cereal b/cereal index 2a2de7edc3..09c31020f5 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 2a2de7edc39baff6b10cb52ca7a8d97c7452dcb1 +Subproject commit 09c31020f55d9cb700887e905ae2f535ad1007eb From f5171c34a93461b0eb22f53887a876f723c76eb8 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 9 May 2024 15:48:47 -0400 Subject: [PATCH 591/599] Bump panda --- panda | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panda b/panda index af4e7088a6..d1ea04f063 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit af4e7088a68f690c70dec17b48991ef98de426b5 +Subproject commit d1ea04f063f48c5010b15796066c487940ab25d2 From 59405443b56b31eb68c67c7525f6e6bd33aa3028 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 9 May 2024 12:09:05 -0800 Subject: [PATCH 592/599] Bump submodules (#330) --- cereal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cereal b/cereal index 09c31020f5..f1978b8bb4 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 09c31020f55d9cb700887e905ae2f535ad1007eb +Subproject commit f1978b8bb4da356c9fe8007e434e6b5d98020e30 From 003d5ccf739dcc573add2e77609192a93270312d Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 9 May 2024 12:31:52 -0800 Subject: [PATCH 593/599] Bump submodules (#331) --- cereal | 2 +- opendbc | 2 +- panda | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cereal b/cereal index f1978b8bb4..60e93dd52d 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit f1978b8bb4da356c9fe8007e434e6b5d98020e30 +Subproject commit 60e93dd52d905aee47f79a7ccf703c9f1ab211b6 diff --git a/opendbc b/opendbc index b5271a35df..9876e5827d 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit b5271a35dfe262aeeecd36c402b2f1c2aad6920d +Subproject commit 9876e5827d32f5c40a236e1cc7ee0598b9bea285 diff --git a/panda b/panda index 19302c53d0..a6eb8dd7be 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 19302c53d00756e5e8c946441877a5528c0e36c3 +Subproject commit a6eb8dd7be07d066fcd72ec9ad82970fdf2db76e From d7715899cb3e91347ab6abe36cf961f11ef2c111 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sat, 11 May 2024 11:27:27 -0800 Subject: [PATCH 594/599] Bump submodules (#332) --- cereal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cereal b/cereal index 60e93dd52d..5ce28549ba 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit 60e93dd52d905aee47f79a7ccf703c9f1ab211b6 +Subproject commit 5ce28549ba09cdf199f5a0edaf7dc8e9b8a53344 From e1e26c6b4f1b2ff1eaf21aed8fdc494f37d0eb94 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Mon, 13 May 2024 01:27:05 -0400 Subject: [PATCH 595/599] NNLC: Rename to new platform names and remove EPS-specific fits for now --- .../lat_models/ACURA RDX 2020 b'39990-TJB-A030x00x00'.json | 1 - .../lat_models/ACURA RDX 2020 b'39990-TJB-A040x00x00'.json | 1 - .../lat_models/ACURA RDX 2020 b'39990-TJB-A070x00x00'.json | 1 - .../lat_models/ACURA RDX 2020 b'39990-TJB-A130x00x00'.json | 1 - .../lat_models/{ACURA RDX 2020.json => ACURA_RDX_3G.json} | 0 ...RD GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566G0HA14A1'.json | 1 - ...RD GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571G0HA16A1'.json | 1 - ...RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516G00804A1'.json | 1 - ...RD GEN b'xf1x875Q0909144T xf1x891072xf1x82x0521G00807A1'.json | 1 - ...ND GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567G6000800'.json | 1 - ...ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571G60533A1'.json | 1 - .../lat_models/{AUDI A3 3RD GEN.json => AUDI_A3_MK3.json} | 0 .../lat_models/{AUDI Q3 2ND GEN.json => AUDI_Q3_MK2.json} | 0 .../lat_models/{BUICK LACROSSE 2017.json => BUICK_LACROSSE.json} | 0 .../car/torque_data/lat_models/CHEVROLET BOLT EV NO ACC.json | 1 - .../car/torque_data/lat_models/CHEVROLET EQUINOX NO ACC.json | 1 - .../torque_data/lat_models/CHEVROLET SUBURBAN PREMIER 2019.json | 1 - .../{CHEVROLET BOLT EUV 2022.json => CHEVROLET_BOLT_EUV.json} | 0 ...EVROLET SILVERADO 1500 2020.json => CHEVROLET_SILVERADO.json} | 0 ...HEVROLET TRAILBLAZER 2021.json => CHEVROLET_TRAILBLAZER.json} | 0 .../{CHEVROLET VOLT PREMIER 2017.json => CHEVROLET_VOLT.json} | 0 .../lat_models/CHRYSLER PACIFICA 2018 b'68288891AE'.json | 1 - .../lat_models/CHRYSLER PACIFICA 2018 b'68378884AA'.json | 1 - .../lat_models/CHRYSLER PACIFICA 2020 b'68416742AA'.json | 1 - .../lat_models/CHRYSLER PACIFICA 2020 b'68460393AA'.json | 1 - .../lat_models/CHRYSLER PACIFICA 2020 b'68524936AB'.json | 1 - .../lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AC'.json | 1 - .../lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AD'.json | 1 - .../lat_models/CHRYSLER PACIFICA HYBRID 2018 b'68288309AD'.json | 1 - .../torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018.json | 1 - .../lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68416741AA'.json | 1 - .../lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68460392AA'.json | 1 - .../lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AA'.json | 1 - .../lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AB'.json | 1 - ...IFICA HYBRID 2017.json => CHRYSLER_PACIFICA_2017_HYBRID.json} | 0 ...LER PACIFICA 2018.json => CHRYSLER_PACIFICA_2018_HYBRID.json} | 0 ...IFICA HYBRID 2019.json => CHRYSLER_PACIFICA_2019_HYBRID.json} | 0 .../{CHRYSLER PACIFICA 2020.json => CHRYSLER_PACIFICA_2020.json} | 0 selfdrive/car/torque_data/lat_models/GENESIS (DH).json | 1 - ... 2018 b'xf1x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106'.json | 1 - selfdrive/car/torque_data/lat_models/GENESIS G80 2017.json | 1 - ...C 1ST GEN b'xf1x00JW1 MDPS R 1.00 1.03 57700-CU100 1C02'.json | 1 - .../lat_models/{GENESIS G70 2018.json => GENESIS_G70.json} | 0 ...S GV60 ELECTRIC 1ST GEN.json => GENESIS_GV60_EV_1ST_GEN.json} | 0 .../{GENESIS GV70 1ST GEN.json => GENESIS_GV70_1ST_GEN.json} | 0 .../lat_models/{GMC ACADIA DENALI 2018.json => GMC_ACADIA.json} | 0 .../lat_models/HONDA ACCORD 2018 b'39990-TVA,A150x00x00'.json | 1 - .../lat_models/HONDA ACCORD 2018 b'39990-TVA-A140x00x00'.json | 1 - .../lat_models/HONDA ACCORD 2018 b'39990-TVA-A150x00x00'.json | 1 - .../lat_models/HONDA ACCORD 2018 b'39990-TVA-A160x00x00'.json | 1 - .../lat_models/HONDA ACCORD 2018 b'39990-TVA-A340x00x00'.json | 1 - .../HONDA ACCORD HYBRID 2018 b'39990-TVA-A150x00x00'.json | 1 - .../HONDA ACCORD HYBRID 2018 b'39990-TVA-A160x00x00'.json | 1 - .../HONDA ACCORD HYBRID 2018 b'39990-TVA-A340x00x00'.json | 1 - .../car/torque_data/lat_models/HONDA ACCORD HYBRID 2018.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TBA,C120x00x00'.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C020x00x00'.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C120x00x00'.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A020x00x00'.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A120x00x00'.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A020x00x00'.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A120x00x00'.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TGG-J510x00x00'.json | 1 - .../HONDA CIVIC (BOSCH) 2019 b'39990-TGL-E130x00x00'.json | 1 - .../lat_models/HONDA CIVIC 2016 b'39990-TBA,A030x00x00'.json | 1 - .../lat_models/HONDA CIVIC 2016 b'39990-TBA-A030x00x00'.json | 1 - .../lat_models/HONDA CIVIC 2016 b'39990-TBG-A030x00x00'.json | 1 - .../lat_models/HONDA CIVIC 2016 b'39990-TEA-T020x00x00'.json | 1 - .../lat_models/HONDA CIVIC 2016 b'39990-TEG,A010x00x00'.json | 1 - .../lat_models/HONDA CIVIC 2022 b'39990-T39-A130x00x00'.json | 1 - .../lat_models/HONDA CIVIC 2022 b'39990-T43-J020x00x00'.json | 1 - .../lat_models/HONDA CR-V 2017 b'39990-TLA,A040x00x00'.json | 1 - .../lat_models/HONDA CR-V 2017 b'39990-TLA-A040x00x00'.json | 1 - .../lat_models/HONDA CR-V 2017 b'39990-TLA-A110x00x00'.json | 1 - .../lat_models/HONDA CR-V 2017 b'39990-TLA-A220x00x00'.json | 1 - .../HONDA CR-V HYBRID 2019 b'39990-TPA-G030x00x00'.json | 1 - .../HONDA CR-V HYBRID 2019 b'39990-TPG-A020x00x00'.json | 1 - .../lat_models/HONDA HRV 2019 b'39990-THX-A020x00x00'.json | 1 - .../lat_models/HONDA INSIGHT 2019 b'39990-TXM-A040x00x00'.json | 1 - selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019.json | 1 - .../lat_models/HONDA ODYSSEY 2018 b'39990-THR-A020x00x00'.json | 1 - .../lat_models/HONDA PILOT 2017 b'39990-TG7-A040x00x00'.json | 1 - .../lat_models/HONDA PILOT 2017 b'39990-TG7-A060x00x00'.json | 1 - .../lat_models/HONDA PILOT 2017 b'39990-TG7-A070x00x00'.json | 1 - .../lat_models/HONDA PILOT 2017 b'39990-TGS-A230x00x00'.json | 1 - .../lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A020x00x00'.json | 1 - .../lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A030x00x00'.json | 1 - .../lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A050x00x00'.json | 1 - .../lat_models/{HONDA ACCORD 2018.json => HONDA_ACCORD.json} | 0 .../lat_models/{HONDA CIVIC 2016.json => HONDA_CIVIC.json} | 0 .../lat_models/{HONDA CIVIC 2022.json => HONDA_CIVIC_2022.json} | 0 .../{HONDA CIVIC (BOSCH) 2019.json => HONDA_CIVIC_BOSCH.json} | 0 .../lat_models/{HONDA CLARITY 2018.json => HONDA_CLARITY.json} | 0 .../lat_models/{HONDA CR-V 2017.json => HONDA_CRV_5G.json} | 0 .../{HONDA CR-V HYBRID 2019.json => HONDA_CRV_HYBRID.json} | 0 .../lat_models/{HONDA HRV 2019.json => HONDA_HRV.json} | 0 .../lat_models/{HONDA ODYSSEY 2018.json => HONDA_ODYSSEY.json} | 0 .../lat_models/{HONDA PILOT 2017.json => HONDA_PILOT.json} | 0 .../{HONDA RIDGELINE 2017.json => HONDA_RIDGELINE.json} | 0 ...A 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050 4CNDC106'.json | 1 - ...021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050x00 4CNDC106'.json | 1 - ...A 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA070 4CNDC106'.json | 1 - ...021 b'xf1x00CN7 MDPS C 1.00 1.07 56310AA050x00 4CNDC107'.json | 1 - ... C 1.00 1.07 x00x00x00x00x00x00x00x00x00x00x00 4CNDC107'.json | 1 - ...D 2021 b'xf1x00CN7 MDPS C 1.00 1.02 56310BY050 4CNHC102'.json | 1 - ...D 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050 4CNHC103'.json | 1 - ...021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050x00 4CNHC103'.json | 1 - ...021 b'xf1x00CN7 MDPS C 1.00 1.04 56310BY050x00 4CNHC104'.json | 1 - ... 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI000 4NEDR106'.json | 1 - ... 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI090 4NEER106'.json | 1 - ... 2022 b'xf1x00NE MDPS R 1.00 1.07 57700GI000 4NEDR107'.json | 1 - ...D 2019 b'xf1x00AE MDPS C 1.00 1.04 56310G7301 4AEEC104'.json | 1 - ...V 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2310 4APHC101'.json | 1 - ...V 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2510 4APHC101'.json | 1 - ...019 b'xf1x00OS MDPS C 1.00 1.04 56310K4000x00 4OEDC104'.json | 1 - ...019 b'xf1x00OS MDPS C 1.00 1.04 56310K4050x00 4OEDC104'.json | 1 - ...020 b'xf1x00OS MDPS C 1.00 1.00 56310CM030x00 4OHDC100'.json | 1 - ... 2020 b'xf1x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103'.json | 1 - ... 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104'.json | 1 - ... 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104'.json | 1 - ...SADE 2020 b'xf1x00ON MDPS C 1.00 1.00 56340-S9000 8B13'.json | 1 - ...SADE 2020 b'xf1x00ON MDPS C 1.00 1.01 56340-S9000 9201'.json | 1 - ...A FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8409'.json | 1 - ...A FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8A12'.json | 1 - ...A FE 2019 b'xf1x00TM MDPS C 1.00 1.01 56340-S2000 9129'.json | 1 - ...A FE 2022 b'xf1x00TM MDPS C 1.00 1.02 56370-S2AA0 0B19'.json | 1 - ... 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102'.json | 1 - ... 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100'.json | 1 - ... 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102'.json | 1 - ... 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0000 4DNAC101'.json | 1 - ... 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101'.json | 1 - ... 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101'.json | 1 - ... 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102'.json | 1 - ...020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0000x00 4DNAC101'.json | 1 - ...020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0010x00 4DNAC101'.json | 1 - ...020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC101'.json | 1 - ...020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC102'.json | 1 - ... 2020 b'xf1x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100'.json | 1 - ... 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102'.json | 1 - ... 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102'.json | 1 - ... 2021 b'xf1x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103'.json | 1 - ...N 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.00 56300-N9100 2228'.json | 1 - ...N 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-CW000 1A15'.json | 1 - ...N 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-N9000 0B24'.json | 1 - selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN.json | 1 - ...D 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-P0100 2228'.json | 1 - ...D 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-P0000 0B27'.json | 1 - ...D 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.05 56300-P0000 1514'.json | 1 - .../{HYUNDAI ELANTRA 2021.json => HYUNDAI_ELANTRA_2021.json} | 0 ...AI ELANTRA HYBRID 2021.json => HYUNDAI_ELANTRA_HEV_2021.json} | 0 .../{HYUNDAI GENESIS 2015-2016.json => HYUNDAI_GENESIS.json} | 0 .../{HYUNDAI IONIQ 5 2022.json => HYUNDAI_IONIQ_5.json} | 0 ...ONIQ ELECTRIC LIMITED 2019.json => HYUNDAI_IONIQ_EV_LTD.json} | 0 .../{HYUNDAI IONIQ PHEV 2020.json => HYUNDAI_IONIQ_PHEV.json} | 0 .../{HYUNDAI KONA ELECTRIC 2019.json => HYUNDAI_KONA_EV.json} | 0 ...HYUNDAI KONA ELECTRIC 2022.json => HYUNDAI_KONA_EV_2022.json} | 0 .../{HYUNDAI KONA HYBRID 2020.json => HYUNDAI_KONA_HEV.json} | 0 .../{HYUNDAI PALISADE 2020.json => HYUNDAI_PALISADE.json} | 0 .../{HYUNDAI SANTA FE 2019.json => HYUNDAI_SANTA_FE.json} | 0 .../{HYUNDAI SANTA FE 2022.json => HYUNDAI_SANTA_FE_2022.json} | 0 ... SANTA FE HYBRID 2022.json => HYUNDAI_SANTA_FE_HEV_2022.json} | 0 ... PlUG-IN HYBRID 2022.json => HYUNDAI_SANTA_FE_PHEV_2022.json} | 0 .../lat_models/{HYUNDAI SONATA 2020.json => HYUNDAI_SONATA.json} | 0 ...YUNDAI SONATA HYBRID 2021.json => HYUNDAI_SONATA_HYBRID.json} | 0 .../{HYUNDAI SONATA 2019.json => HYUNDAI_SONATA_LF.json} | 0 ...AI TUCSON HYBRID 4TH GEN.json => HYUNDAI_TUCSON_4TH_GEN.json} | 0 .../lat_models/JEEP GRAND CHEROKEE 2019 b'68417283AA'.json | 1 - .../lat_models/JEEP GRAND CHEROKEE 2019 b'68453433AA'.json | 1 - .../lat_models/JEEP GRAND CHEROKEE 2019 b'68499171AB'.json | 1 - .../lat_models/JEEP GRAND CHEROKEE 2019 b'68501183AA'.json | 1 - .../lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AB'.json | 1 - .../lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AC'.json | 1 - .../lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321646AC'.json | 1 - .../lat_models/JEEP GRAND CHEROKEE V6 2018 b'68367342AA'.json | 1 - ...JEEP GRAND CHEROKEE V6 2018.json => JEEP_GRAND_CHEROKEE.json} | 0 ...EP GRAND CHEROKEE 2019.json => JEEP_GRAND_CHEROKEE_2019.json} | 0 ... EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.03 57700-CV000 1A19'.json | 1 - ... EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.04 57700-CV000 1B30'.json | 1 - ... EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.05 57700-CV000 2425'.json | 1 - ... EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.06 57700-CV000 2607'.json | 1 - ... 2021 b'xf1x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101'.json | 1 - ...020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4000x00 4DEEC105'.json | 1 - ...020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4100x00 4DEEC105'.json | 1 - selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2019.json | 1 - ... 2021 b'xf1x00SP2 MDPS C 1.00 1.04 56300Q5200 '.json | 1 - ...GEN b'xf1x00MQ4 MDPS C 1.00 1.04 56310R5030x00 4MQDC104'.json | 1 - ...GEN b'xf1x00MQ4 MDPS C 1.00 1.05 56310P4030x00 4MQHC105'.json | 1 - selfdrive/car/torque_data/lat_models/KIA SPORTAGE 5TH GEN.json | 1 - ... 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503'.json | 1 - ... 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503'.json | 1 - ... 2018 b'xf1x00CK MDPS R 1.00 1.04 57700-J5420 4C4VL104'.json | 1 - ... 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5220 4C2VL106'.json | 1 - ... 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5420 4C4VL106'.json | 1 - .../lat_models/{KIA CEED INTRO ED 2019.json => KIA_CEED.json} | 0 .../torque_data/lat_models/{KIA EV6 2022.json => KIA_EV6.json} | 0 .../lat_models/{KIA K5 2021.json => KIA_K5_2021.json} | 0 .../lat_models/{KIA NIRO EV 2020.json => KIA_NIRO_EV.json} | 0 .../{KIA NIRO HYBRID 2021.json => KIA_NIRO_HEV_2021.json} | 0 .../{KIA NIRO HYBRID 2ND GEN.json => KIA_NIRO_HEV_2ND_GEN.json} | 0 .../{KIA OPTIMA 4TH GEN FACELIFT.json => KIA_OPTIMA_G4_FL.json} | 0 .../lat_models/{KIA SELTOS 2021.json => KIA_SELTOS.json} | 0 .../{KIA SORENTO GT LINE 2018.json => KIA_SORENTO.json} | 0 .../{KIA SORENTO 4TH GEN.json => KIA_SORENTO_4TH_GEN.json} | 0 ... PLUG-IN HYBRID 4TH GEN.json => KIA_SORENTO_HEV_4TH_GEN.json} | 0 ...IA SPORTAGE HYBRID 5TH GEN.json => KIA_SPORTAGE_5TH_GEN.json} | 0 .../lat_models/{KIA STINGER GT2 2018.json => KIA_STINGER.json} | 0 .../lat_models/{KIA STINGER 2022.json => KIA_STINGER_2022.json} | 0 .../LEXUS ES 2019 b'8965B33252x00x00x00x00x00x00'.json | 1 - .../LEXUS ES 2019 b'8965B33690x00x00x00x00x00x00'.json | 1 - .../LEXUS ES 2019 b'8965B33721x00x00x00x00x00x00'.json | 1 - .../LEXUS ES HYBRID 2019 b'8965B33252x00x00x00x00x00x00'.json | 1 - .../LEXUS ES HYBRID 2019 b'8965B33590x00x00x00x00x00x00'.json | 1 - .../LEXUS ES HYBRID 2019 b'8965B33690x00x00x00x00x00x00'.json | 1 - .../LEXUS ES HYBRID 2019 b'8965B33721x00x00x00x00x00x00'.json | 1 - selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019.json | 1 - .../LEXUS IS 2018 b'8965B53271x00x00x00x00x00x00'.json | 1 - .../LEXUS IS 2018 b'8965B53280x00x00x00x00x00x00'.json | 1 - .../LEXUS IS 2018 b'8965B53281x00x00x00x00x00x00'.json | 1 - .../LEXUS NX 2018 b'8965B78060x00x00x00x00x00x00'.json | 1 - .../LEXUS NX 2018 b'8965B78080x00x00x00x00x00x00'.json | 1 - .../LEXUS NX 2020 b'8965B78120x00x00x00x00x00x00'.json | 1 - .../LEXUS NX HYBRID 2018 b'8965B78060x00x00x00x00x00x00'.json | 1 - .../LEXUS NX HYBRID 2018 b'8965B78080x00x00x00x00x00x00'.json | 1 - .../LEXUS NX HYBRID 2018 b'8965B78100x00x00x00x00x00x00'.json | 1 - selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018.json | 1 - .../LEXUS RX 2016 b'8965B0E011x00x00x00x00x00x00'.json | 1 - .../LEXUS RX 2016 b'8965B0E012x00x00x00x00x00x00'.json | 1 - .../LEXUS RX 2016 b'8965B48111x00x00x00x00x00x00'.json | 1 - .../LEXUS RX 2016 b'8965B48112x00x00x00x00x00x00'.json | 1 - selfdrive/car/torque_data/lat_models/LEXUS RX 2016.json | 1 - .../LEXUS RX 2020 b'8965B48271x00x00x00x00x00x00'.json | 1 - selfdrive/car/torque_data/lat_models/LEXUS RX 2020.json | 1 - .../LEXUS RX HYBRID 2017 b'8965B0E012x00x00x00x00x00x00'.json | 1 - .../LEXUS RX HYBRID 2017 b'8965B48102x00x00x00x00x00x00'.json | 1 - .../LEXUS RX HYBRID 2017 b'8965B48112x00x00x00x00x00x00'.json | 1 - .../LEXUS RX HYBRID 2020 b'8965B48271x00x00x00x00x00x00'.json | 1 - .../lat_models/{LEXUS ES 2019.json => LEXUS_ES_TSS2.json} | 0 .../torque_data/lat_models/{LEXUS IS 2018.json => LEXUS_IS.json} | 0 .../torque_data/lat_models/{LEXUS NX 2018.json => LEXUS_NX.json} | 0 .../lat_models/{LEXUS NX 2020.json => LEXUS_NX_TSS2.json} | 0 .../lat_models/{LEXUS RX HYBRID 2017.json => LEXUS_RX.json} | 0 .../lat_models/{LEXUS RX HYBRID 2020.json => LEXUS_RX_TSS2.json} | 0 ... CX-5 2022 b'KSD5-3210X-C-00x00x00x00x00x00x00x00x00x00'.json | 1 - ... CX-9 2021 b'TC3M-3210X-A-00x00x00x00x00x00x00x00x00x00'.json | 1 - .../lat_models/{MAZDA CX-5 2022.json => MAZDA_CX5_2022.json} | 0 .../lat_models/{MAZDA CX-9 2021.json => MAZDA_CX9 2021.json} | 0 .../torque_data/lat_models/{MAZDA CX-9.json => MAZDA_CX9.json} | 0 .../torque_data/lat_models/RAM 1500 5TH GEN b'68273275AG'.json | 1 - .../torque_data/lat_models/RAM 1500 5TH GEN b'68466110AB'.json | 1 - .../torque_data/lat_models/RAM 1500 5TH GEN b'68469901AA'.json | 1 - .../torque_data/lat_models/RAM 1500 5TH GEN b'68469904AA'.json | 1 - .../torque_data/lat_models/RAM 1500 5TH GEN b'68522583AA'.json | 1 - .../torque_data/lat_models/RAM 1500 5TH GEN b'68552788AA'.json | 1 - .../torque_data/lat_models/RAM 1500 5TH GEN b'68552791AB'.json | 1 - .../lat_models/{RAM 1500 5TH GEN.json => RAM_1500_5TH_GEN.json} | 0 .../lat_models/{RAM HD 5TH GEN.json => RAM_HD_5TH_GEN.json} | 0 ...1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820527T6070405'.json | 1 - ...ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G500'.json | 1 - ...ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G600'.json | 1 - ...RD GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521T00403A1'.json | 1 - ...RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516A00604A1'.json | 1 - ...3RD GEN b'xf1x875Q0909143K xf1x892033xf1x820514UZ070203'.json | 1 - ...3RD GEN b'xf1x875Q0909143M xf1x892041xf1x820522UZ070303'.json | 1 - ...RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070600'.json | 1 - ...RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070700'.json | 1 - .../{SKODA KAROQ 1ST GEN.json => SKODA_KAROQ_MK1.json} | 0 .../{SKODA KODIAQ 1ST GEN.json => SKODA_KODIAQ_MK1.json} | 0 .../{SKODA OCTAVIA 3RD GEN.json => SKODA_OCTAVIA_MK3.json} | 0 .../{SKODA SUPERB 3RD GEN.json => SKODA_SUPERB_MK3.json} | 0 .../lat_models/SUBARU ASCENT LIMITED 2019 b'x05xc0xd0x00'.json | 1 - .../lat_models/SUBARU ASCENT LIMITED 2019 b'x85xc0xd0x00'.json | 1 - .../lat_models/SUBARU ASCENT LIMITED 2019 b'x95xc0xd0x00'.json | 1 - .../lat_models/SUBARU FORESTER 2019 b'x8dxc0x04x00'.json | 1 - .../lat_models/SUBARU IMPREZA LIMITED 2019 b'x8axc0x10x00'.json | 1 - .../lat_models/SUBARU IMPREZA LIMITED 2019 b'zxc0x04x00'.json | 1 - .../lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x00'.json | 1 - .../lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x01'.json | 1 - .../lat_models/SUBARU IMPREZA SPORT 2020 b'x9axc0x04x00'.json | 1 - .../lat_models/SUBARU OUTBACK 6TH GEN b'x9bxc0x10x00'.json | 1 - .../{SUBARU ASCENT LIMITED 2019.json => SUBARU_ASCENT.json} | 0 .../{SUBARU FORESTER 2019.json => SUBARU_FORESTER.json} | 0 .../{SUBARU IMPREZA LIMITED 2019.json => SUBARU_IMPREZA.json} | 0 .../{SUBARU IMPREZA SPORT 2020.json => SUBARU_IMPREZA_2020.json} | 0 .../{SUBARU LEGACY 7TH GEN.json => SUBARU_LEGACY.json} | 0 ...BARU LEGACY 2015 - 2018.json => SUBARU_LEGACY_PREGLOBAL.json} | 0 .../{SUBARU OUTBACK 6TH GEN.json => SUBARU_OUTBACK.json} | 0 .../TOYOTA AVALON 2016 b'8965B41051x00x00x00x00x00x00'.json | 1 - .../TOYOTA AVALON 2019 b'8965B07010x00x00x00x00x00x00'.json | 1 - .../TOYOTA AVALON 2022 b'8965B41110x00x00x00x00x00x00'.json | 1 - ...OYOTA AVALON HYBRID 2019 b'8965B41090x00x00x00x00x00x00'.json | 1 - .../car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019.json | 1 - ...OYOTA AVALON HYBRID 2022 b'8965B41110x00x00x00x00x00x00'.json | 1 - .../car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022.json | 1 - .../TOYOTA C-HR 2018 b'8965B10040x00x00x00x00x00x00'.json | 1 - .../TOYOTA C-HR HYBRID 2022 b'8965B10091x00x00x00x00x00x00'.json | 1 - .../TOYOTA C-HR HYBRID 2022 b'8965B10092x00x00x00x00x00x00'.json | 1 - .../TOYOTA CAMRY 2018 b'8965B33540x00x00x00x00x00x00'.json | 1 - .../TOYOTA CAMRY 2018 b'8965B33542x00x00x00x00x00x00'.json | 1 - .../TOYOTA CAMRY 2018 b'8965B33581x00x00x00x00x00x00'.json | 1 - .../TOYOTA CAMRY 2021 b'8965B33630x00x00x00x00x00x00'.json | 1 - ...TOYOTA CAMRY HYBRID 2018 b'8965B33540x00x00x00x00x00x00'.json | 1 - ...TOYOTA CAMRY HYBRID 2018 b'8965B33542x00x00x00x00x00x00'.json | 1 - ...TOYOTA CAMRY HYBRID 2018 b'8965B33580x00x00x00x00x00x00'.json | 1 - ...TOYOTA CAMRY HYBRID 2018 b'8965B33581x00x00x00x00x00x00'.json | 1 - .../car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018.json | 1 - ...TOYOTA CAMRY HYBRID 2021 b'8965B33630x00x00x00x00x00x00'.json | 1 - ...TOYOTA CAMRY HYBRID 2021 b'8965B33650x00x00x00x00x00x00'.json | 1 - .../car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021.json | 1 - .../TOYOTA COROLLA 2017 b'8965B02181x00x00x00x00x00x00'.json | 1 - .../TOYOTA COROLLA 2017 b'8965B02191x00x00x00x00x00x00'.json | 1 - ...COROLLA HYBRID TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json | 1 - ...COROLLA HYBRID TSS2 2019 b'8965B12451x00x00x00x00x00x00'.json | 1 - ...COROLLA HYBRID TSS2 2019 b'8965B76012x00x00x00x00x00x00'.json | 1 - ...OLLA HYBRID TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json | 1 - ...OLLA HYBRID TSS2 2019 b'x018965B12520x00x00x00x00x00x00'.json | 1 - ...OLLA HYBRID TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json | 1 - ... COROLLA HYBRID TSS2 2019 b'x018965B1254000x00x00x00x00'.json | 1 - .../torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019.json | 1 - ...TOYOTA COROLLA TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json | 1 - ...OTA COROLLA TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json | 1 - ...OTA COROLLA TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json | 1 - .../TOYOTA COROLLA TSS2 2019 b'x018965B1255000x00x00x00x00'.json | 1 - .../TOYOTA HIGHLANDER 2017 b'8965B48140x00x00x00x00x00x00'.json | 1 - .../TOYOTA HIGHLANDER 2017 b'8965B48150x00x00x00x00x00x00'.json | 1 - .../TOYOTA HIGHLANDER 2020 b'8965B48241x00x00x00x00x00x00'.json | 1 - .../TOYOTA HIGHLANDER 2020 b'8965B48310x00x00x00x00x00x00'.json | 1 - .../TOYOTA HIGHLANDER 2020 b'8965B48320x00x00x00x00x00x00'.json | 1 - .../TOYOTA HIGHLANDER 2020 b'8965B48400x00x00x00x00x00x00'.json | 1 - ...A HIGHLANDER HYBRID 2018 b'8965B48160x00x00x00x00x00x00'.json | 1 - .../torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018.json | 1 - ...A HIGHLANDER HYBRID 2020 b'8965B48241x00x00x00x00x00x00'.json | 1 - ...A HIGHLANDER HYBRID 2020 b'8965B48310x00x00x00x00x00x00'.json | 1 - ...A HIGHLANDER HYBRID 2020 b'8965B48400x00x00x00x00x00x00'.json | 1 - .../torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020.json | 1 - .../TOYOTA PRIUS 2017 b'8965B47022x00x00x00x00x00x00'.json | 1 - .../TOYOTA PRIUS 2017 b'8965B47023x00x00x00x00x00x00'.json | 1 - .../TOYOTA PRIUS 2017 b'8965B47050x00x00x00x00x00x00'.json | 1 - .../TOYOTA PRIUS 2017 b'8965B47060x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 2017 b'8965B42082x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 2017 b'8965B42083x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 2019 b'8965B42170x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 2019 b'8965B42171x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 2019 b'8965B42180x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 2019 b'8965B42181x00x00x00x00x00x00'.json | 1 - ...9 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json | 1 - ...9 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json | 1 - ...9 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json | 1 - ...2 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json | 1 - selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022.json | 1 - .../TOYOTA RAV4 HYBRID 2017 b'8965B42103x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 HYBRID 2017 b'8965B42162x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 HYBRID 2017 b'8965B42163x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 HYBRID 2019 b'8965B42170x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 HYBRID 2019 b'8965B42171x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 HYBRID 2019 b'8965B42181x00x00x00x00x00x00'.json | 1 - ...9 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json | 1 - ...9 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json | 1 - ...9 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json | 1 - .../car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019.json | 1 - .../TOYOTA RAV4 HYBRID 2022 b'8965B42172x00x00x00x00x00x00'.json | 1 - .../TOYOTA RAV4 HYBRID 2022 b'8965B42182x00x00x00x00x00x00'.json | 1 - ...2 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json | 1 - .../TOYOTA SIENNA 2018 b'8965B45070x00x00x00x00x00x00'.json | 1 - .../TOYOTA SIENNA 2018 b'8965B45080x00x00x00x00x00x00'.json | 1 - .../TOYOTA SIENNA 2018 b'8965B45082x00x00x00x00x00x00'.json | 1 - .../lat_models/{TOYOTA AVALON 2016.json => TOYOTA_AVALON.json} | 0 .../{TOYOTA AVALON 2019.json => TOYOTA_AVALON_2019.json} | 0 .../{TOYOTA AVALON 2022.json => TOYOTA_AVALON_TSS2.json} | 0 .../lat_models/{TOYOTA CAMRY 2018.json => TOYOTA_CAMRY.json} | 0 .../{TOYOTA CAMRY 2021.json => TOYOTA_CAMRY_TSS2.json} | 0 .../lat_models/{TOYOTA C-HR 2018.json => TOYOTA_CHR.json} | 0 .../{TOYOTA C-HR HYBRID 2022.json => TOYOTA_CHR_TSS2.json} | 0 .../lat_models/{TOYOTA COROLLA 2017.json => TOYOTA_COROLLA.json} | 0 .../{TOYOTA COROLLA TSS2 2019.json => TOYOTA_COROLLA_TSS2.json} | 0 .../{TOYOTA HIGHLANDER 2017.json => TOYOTA_HIGHLANDER.json} | 0 .../{TOYOTA HIGHLANDER 2020.json => TOYOTA_HIGHLANDER_TSS2.json} | 0 .../lat_models/{TOYOTA MIRAI 2021.json => TOYOTA_MIRAI.json} | 0 .../lat_models/{TOYOTA PRIUS 2017.json => TOYOTA_PRIUS.json} | 0 .../{TOYOTA PRIUS TSS2 2021.json => TOYOTA_PRIUS_TSS2.json} | 0 .../lat_models/{TOYOTA PRIUS v 2017.json => TOYOTA_PRIUS_V.json} | 0 .../lat_models/{TOYOTA RAV4 2017.json => TOYOTA_RAV4.json} | 0 .../{TOYOTA RAV4 HYBRID 2017.json => TOYOTA_RAV4H.json} | 0 .../lat_models/{TOYOTA RAV4 2019.json => TOYOTA_RAV4_TSS2.json} | 0 .../{TOYOTA RAV4 HYBRID 2022.json => TOYOTA_RAV4_TSS2_2022.json} | 0 .../lat_models/{TOYOTA SIENNA 2018.json => TOYOTA_SIENNA.json} | 0 ...ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020800'.json | 1 - ...ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002MB4092M7N'.json | 1 - ...ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002NB4202N7N'.json | 1 - ...ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B60924A1'.json | 1 - ...ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B6G920A1'.json | 1 - ...1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6080105'.json | 1 - ...1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6090105'.json | 1 - ...TH GEN b'xf1x873Q0909144F xf1x895043xf1x82x0561A01612A0'.json | 1 - ...TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566A01613A1'.json | 1 - ...TH GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571A0J714A1'.json | 1 - ...TH GEN b'xf1x873Q0909144L xf1x895081xf1x82x0571A0JA15A1'.json | 1 - ...TH GEN b'xf1x873Q0909144M xf1x895082xf1x82x0571A0JA16A1'.json | 1 - ...TH GEN b'xf1x873QM909144 xf1x895072xf1x82x0571A01714A1'.json | 1 - ...TH GEN b'xf1x875Q0909144AAxf1x891081xf1x82x0521A00608A1'.json | 1 - ...TH GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A07B05A1'.json | 1 - ...TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A00442A1'.json | 1 - ...TH GEN b'xf1x875QN909144B xf1x895082xf1x82x0571A01A18A1'.json | 1 - ...TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A10A01A1'.json | 1 - ...TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521B00404A1'.json | 1 - ...TH GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A00642A1'.json | 1 - ...TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566B00611A1'.json | 1 - ...8TH GEN b'xf1x875Q0909143K xf1x892033xf1x820514B0060703'.json | 1 - ...8TH GEN b'xf1x875Q0909143M xf1x892041xf1x820522B0080803'.json | 1 - ...8TH GEN b'xf1x875Q0909143P xf1x892051xf1x820526B0060905'.json | 1 - ...TH GEN b'xf1x875Q0910143B xf1x892201xf1x82x0563B0000600'.json | 1 - ...TH GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020600'.json | 1 - ...ND GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A60604A1'.json | 1 - ...ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A60634A1'.json | 1 - ...ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A62A32A1'.json | 1 - ...ND GEN b'xf1x875QM907144D xf1x891063xf1x82x002SA6092SOM'.json | 1 - ...ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60604A1'.json | 1 - ...ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60804A1'.json | 1 - ...VOLKSWAGEN ARTEON 1ST GEN.json => VOLKSWAGEN_ARTEON_MK1.json} | 0 .../{VOLKSWAGEN ATLAS 1ST GEN.json => VOLKSWAGEN_ATLAS_MK1.json} | 0 .../{VOLKSWAGEN GOLF 7TH GEN.json => VOLKSWAGEN_GOLF_MK7.json} | 0 .../{VOLKSWAGEN JETTA 7TH GEN.json => VOLKSWAGEN_JETTA_MK7.json} | 0 ...VOLKSWAGEN PASSAT 8TH GEN.json => VOLKSWAGEN_PASSAT_MK8.json} | 0 .../{VOLKSWAGEN PASSAT NMS.json => VOLKSWAGEN_PASSAT_NMS.json} | 0 ...VOLKSWAGEN TIGUAN 2ND GEN.json => VOLKSWAGEN_TIGUAN_MK2.json} | 0 424 files changed, 314 deletions(-) delete mode 100755 selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A030x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A040x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A070x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A130x00x00'.json rename selfdrive/car/torque_data/lat_models/{ACURA RDX 2020.json => ACURA_RDX_3G.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566G0HA14A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571G0HA16A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516G00804A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144T xf1x891072xf1x82x0521G00807A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567G6000800'.json delete mode 100755 selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571G60533A1'.json rename selfdrive/car/torque_data/lat_models/{AUDI A3 3RD GEN.json => AUDI_A3_MK3.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{AUDI Q3 2ND GEN.json => AUDI_Q3_MK2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{BUICK LACROSSE 2017.json => BUICK_LACROSSE.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EV NO ACC.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHEVROLET EQUINOX NO ACC.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHEVROLET SUBURBAN PREMIER 2019.json rename selfdrive/car/torque_data/lat_models/{CHEVROLET BOLT EUV 2022.json => CHEVROLET_BOLT_EUV.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{CHEVROLET SILVERADO 1500 2020.json => CHEVROLET_SILVERADO.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{CHEVROLET TRAILBLAZER 2021.json => CHEVROLET_TRAILBLAZER.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{CHEVROLET VOLT PREMIER 2017.json => CHEVROLET_VOLT.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68288891AE'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68378884AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68416742AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68460393AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68524936AB'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AC'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AD'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018 b'68288309AD'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68416741AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68460392AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AB'.json rename selfdrive/car/torque_data/lat_models/{CHRYSLER PACIFICA HYBRID 2017.json => CHRYSLER_PACIFICA_2017_HYBRID.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{CHRYSLER PACIFICA 2018.json => CHRYSLER_PACIFICA_2018_HYBRID.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{CHRYSLER PACIFICA HYBRID 2019.json => CHRYSLER_PACIFICA_2019_HYBRID.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{CHRYSLER PACIFICA 2020.json => CHRYSLER_PACIFICA_2020.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/GENESIS (DH).json delete mode 100755 selfdrive/car/torque_data/lat_models/GENESIS G70 2018 b'xf1x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106'.json delete mode 100755 selfdrive/car/torque_data/lat_models/GENESIS G80 2017.json delete mode 100755 selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN b'xf1x00JW1 MDPS R 1.00 1.03 57700-CU100 1C02'.json rename selfdrive/car/torque_data/lat_models/{GENESIS G70 2018.json => GENESIS_G70.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{GENESIS GV60 ELECTRIC 1ST GEN.json => GENESIS_GV60_EV_1ST_GEN.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{GENESIS GV70 1ST GEN.json => GENESIS_GV70_1ST_GEN.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{GMC ACADIA DENALI 2018.json => GMC_ACADIA.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA,A150x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A140x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A150x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A160x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A340x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A150x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A160x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A340x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA,C120x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C120x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A120x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A120x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-J510x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGL-E130x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA,A030x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA-A030x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBG-A030x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEA-T020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEG,A010x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T39-A130x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T43-J020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA,A040x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A040x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A110x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A220x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPA-G030x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPG-A020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA HRV 2019 b'39990-THX-A020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019 b'39990-TXM-A040x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018 b'39990-THR-A020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A040x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A060x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A070x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TGS-A230x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A020x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A030x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A050x00x00'.json rename selfdrive/car/torque_data/lat_models/{HONDA ACCORD 2018.json => HONDA_ACCORD.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA CIVIC 2016.json => HONDA_CIVIC.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA CIVIC 2022.json => HONDA_CIVIC_2022.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA CIVIC (BOSCH) 2019.json => HONDA_CIVIC_BOSCH.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA CLARITY 2018.json => HONDA_CLARITY.json} (100%) rename selfdrive/car/torque_data/lat_models/{HONDA CR-V 2017.json => HONDA_CRV_5G.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA CR-V HYBRID 2019.json => HONDA_CRV_HYBRID.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA HRV 2019.json => HONDA_HRV.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA ODYSSEY 2018.json => HONDA_ODYSSEY.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA PILOT 2017.json => HONDA_PILOT.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HONDA RIDGELINE 2017.json => HONDA_RIDGELINE.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050 4CNDC106'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050x00 4CNDC106'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA070 4CNDC106'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 56310AA050x00 4CNDC107'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 x00x00x00x00x00x00x00x00x00x00x00 4CNDC107'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.02 56310BY050 4CNHC102'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050 4CNHC103'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050x00 4CNHC103'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.04 56310BY050x00 4CNHC104'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI000 4NEDR106'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI090 4NEER106'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.07 57700GI000 4NEDR107'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019 b'xf1x00AE MDPS C 1.00 1.04 56310G7301 4AEEC104'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2310 4APHC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2510 4APHC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4000x00 4OEDC104'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4050x00 4OEDC104'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020 b'xf1x00OS MDPS C 1.00 1.00 56310CM030x00 4OHDC100'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.00 56340-S9000 8B13'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.01 56340-S9000 9201'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8409'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8A12'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.01 56340-S2000 9129'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022 b'xf1x00TM MDPS C 1.00 1.02 56370-S2AA0 0B19'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0000 4DNAC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0000x00 4DNAC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0010x00 4DNAC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC102'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.00 56300-N9100 2228'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-CW000 1A15'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-N9000 0B24'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-P0100 2228'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-P0000 0B27'.json delete mode 100755 selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.05 56300-P0000 1514'.json rename selfdrive/car/torque_data/lat_models/{HYUNDAI ELANTRA 2021.json => HYUNDAI_ELANTRA_2021.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI ELANTRA HYBRID 2021.json => HYUNDAI_ELANTRA_HEV_2021.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI GENESIS 2015-2016.json => HYUNDAI_GENESIS.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI IONIQ 5 2022.json => HYUNDAI_IONIQ_5.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI IONIQ ELECTRIC LIMITED 2019.json => HYUNDAI_IONIQ_EV_LTD.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI IONIQ PHEV 2020.json => HYUNDAI_IONIQ_PHEV.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI KONA ELECTRIC 2019.json => HYUNDAI_KONA_EV.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI KONA ELECTRIC 2022.json => HYUNDAI_KONA_EV_2022.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI KONA HYBRID 2020.json => HYUNDAI_KONA_HEV.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI PALISADE 2020.json => HYUNDAI_PALISADE.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI SANTA FE 2019.json => HYUNDAI_SANTA_FE.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI SANTA FE 2022.json => HYUNDAI_SANTA_FE_2022.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI SANTA FE HYBRID 2022.json => HYUNDAI_SANTA_FE_HEV_2022.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI SANTA FE PlUG-IN HYBRID 2022.json => HYUNDAI_SANTA_FE_PHEV_2022.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI SONATA 2020.json => HYUNDAI_SONATA.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI SONATA HYBRID 2021.json => HYUNDAI_SONATA_HYBRID.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI SONATA 2019.json => HYUNDAI_SONATA_LF.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{HYUNDAI TUCSON HYBRID 4TH GEN.json => HYUNDAI_TUCSON_4TH_GEN.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68417283AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68453433AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68499171AB'.json delete mode 100755 selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68501183AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AB'.json delete mode 100755 selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AC'.json delete mode 100755 selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321646AC'.json delete mode 100755 selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68367342AA'.json rename selfdrive/car/torque_data/lat_models/{JEEP GRAND CHEROKEE V6 2018.json => JEEP_GRAND_CHEROKEE.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{JEEP GRAND CHEROKEE 2019.json => JEEP_GRAND_CHEROKEE_2019.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.03 57700-CV000 1A19'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.04 57700-CV000 1B30'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.05 57700-CV000 2425'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.06 57700-CV000 2607'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA K5 2021 b'xf1x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4000x00 4DEEC105'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4100x00 4DEEC105'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2019.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA SELTOS 2021 b'xf1x00SP2 MDPS C 1.00 1.04 56300Q5200 '.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.04 56310R5030x00 4MQDC104'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.05 56310P4030x00 4MQHC105'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA SPORTAGE 5TH GEN.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.04 57700-J5420 4C4VL104'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5220 4C2VL106'.json delete mode 100755 selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5420 4C4VL106'.json rename selfdrive/car/torque_data/lat_models/{KIA CEED INTRO ED 2019.json => KIA_CEED.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA EV6 2022.json => KIA_EV6.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA K5 2021.json => KIA_K5_2021.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA NIRO EV 2020.json => KIA_NIRO_EV.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA NIRO HYBRID 2021.json => KIA_NIRO_HEV_2021.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA NIRO HYBRID 2ND GEN.json => KIA_NIRO_HEV_2ND_GEN.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA OPTIMA 4TH GEN FACELIFT.json => KIA_OPTIMA_G4_FL.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA SELTOS 2021.json => KIA_SELTOS.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA SORENTO GT LINE 2018.json => KIA_SORENTO.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA SORENTO 4TH GEN.json => KIA_SORENTO_4TH_GEN.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA SORENTO PLUG-IN HYBRID 4TH GEN.json => KIA_SORENTO_HEV_4TH_GEN.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA SPORTAGE HYBRID 5TH GEN.json => KIA_SPORTAGE_5TH_GEN.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA STINGER GT2 2018.json => KIA_STINGER.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{KIA STINGER 2022.json => KIA_STINGER_2022.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33252x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33690x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33721x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33252x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33590x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33690x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33721x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53271x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53280x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53281x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78060x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78080x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS NX 2020 b'8965B78120x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78060x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78080x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78100x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E011x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E012x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48111x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48112x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX 2016.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX 2020 b'8965B48271x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX 2020.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B0E012x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48102x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48112x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020 b'8965B48271x00x00x00x00x00x00'.json rename selfdrive/car/torque_data/lat_models/{LEXUS ES 2019.json => LEXUS_ES_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{LEXUS IS 2018.json => LEXUS_IS.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{LEXUS NX 2018.json => LEXUS_NX.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{LEXUS NX 2020.json => LEXUS_NX_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{LEXUS RX HYBRID 2017.json => LEXUS_RX.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{LEXUS RX HYBRID 2020.json => LEXUS_RX_TSS2.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022 b'KSD5-3210X-C-00x00x00x00x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021 b'TC3M-3210X-A-00x00x00x00x00x00x00x00x00x00'.json rename selfdrive/car/torque_data/lat_models/{MAZDA CX-5 2022.json => MAZDA_CX5_2022.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{MAZDA CX-9 2021.json => MAZDA_CX9 2021.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{MAZDA CX-9.json => MAZDA_CX9.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68273275AG'.json delete mode 100755 selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68466110AB'.json delete mode 100755 selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469901AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469904AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68522583AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552788AA'.json delete mode 100755 selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552791AB'.json rename selfdrive/car/torque_data/lat_models/{RAM 1500 5TH GEN.json => RAM_1500_5TH_GEN.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{RAM HD 5TH GEN.json => RAM_HD_5TH_GEN.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820527T6070405'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G500'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G600'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521T00403A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516A00604A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143K xf1x892033xf1x820514UZ070203'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143M xf1x892041xf1x820522UZ070303'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070600'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070700'.json rename selfdrive/car/torque_data/lat_models/{SKODA KAROQ 1ST GEN.json => SKODA_KAROQ_MK1.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SKODA KODIAQ 1ST GEN.json => SKODA_KODIAQ_MK1.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SKODA OCTAVIA 3RD GEN.json => SKODA_OCTAVIA_MK3.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SKODA SUPERB 3RD GEN.json => SKODA_SUPERB_MK3.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x05xc0xd0x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x85xc0xd0x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x95xc0xd0x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019 b'x8dxc0x04x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'x8axc0x10x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'zxc0x04x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x01'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'x9axc0x04x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN b'x9bxc0x10x00'.json rename selfdrive/car/torque_data/lat_models/{SUBARU ASCENT LIMITED 2019.json => SUBARU_ASCENT.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SUBARU FORESTER 2019.json => SUBARU_FORESTER.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SUBARU IMPREZA LIMITED 2019.json => SUBARU_IMPREZA.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SUBARU IMPREZA SPORT 2020.json => SUBARU_IMPREZA_2020.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SUBARU LEGACY 7TH GEN.json => SUBARU_LEGACY.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SUBARU LEGACY 2015 - 2018.json => SUBARU_LEGACY_PREGLOBAL.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{SUBARU OUTBACK 6TH GEN.json => SUBARU_OUTBACK.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016 b'8965B41051x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019 b'8965B07010x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022 b'8965B41110x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019 b'8965B41090x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022 b'8965B41110x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018 b'8965B10040x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10091x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10092x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33540x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33542x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33581x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021 b'8965B33630x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33540x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33542x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33580x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33581x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33630x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33650x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02181x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02191x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12451x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B76012x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12520x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B1254000x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B1255000x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48140x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48150x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48241x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48310x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48320x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48400x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018 b'8965B48160x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48241x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48310x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48400x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47022x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47023x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47050x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47060x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42082x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42083x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42170x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42171x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42180x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42181x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42103x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42162x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42163x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42170x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42171x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42181x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42172x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42182x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45070x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45080x00x00x00x00x00x00'.json delete mode 100755 selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45082x00x00x00x00x00x00'.json rename selfdrive/car/torque_data/lat_models/{TOYOTA AVALON 2016.json => TOYOTA_AVALON.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA AVALON 2019.json => TOYOTA_AVALON_2019.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA AVALON 2022.json => TOYOTA_AVALON_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA CAMRY 2018.json => TOYOTA_CAMRY.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA CAMRY 2021.json => TOYOTA_CAMRY_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA C-HR 2018.json => TOYOTA_CHR.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA C-HR HYBRID 2022.json => TOYOTA_CHR_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA COROLLA 2017.json => TOYOTA_COROLLA.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA COROLLA TSS2 2019.json => TOYOTA_COROLLA_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA HIGHLANDER 2017.json => TOYOTA_HIGHLANDER.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA HIGHLANDER 2020.json => TOYOTA_HIGHLANDER_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA MIRAI 2021.json => TOYOTA_MIRAI.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA PRIUS 2017.json => TOYOTA_PRIUS.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA PRIUS TSS2 2021.json => TOYOTA_PRIUS_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA PRIUS v 2017.json => TOYOTA_PRIUS_V.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA RAV4 2017.json => TOYOTA_RAV4.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA RAV4 HYBRID 2017.json => TOYOTA_RAV4H.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA RAV4 2019.json => TOYOTA_RAV4_TSS2.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA RAV4 HYBRID 2022.json => TOYOTA_RAV4_TSS2_2022.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{TOYOTA SIENNA 2018.json => TOYOTA_SIENNA.json} (100%) mode change 100755 => 100644 delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020800'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002MB4092M7N'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002NB4202N7N'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B60924A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B6G920A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6080105'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6090105'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144F xf1x895043xf1x82x0561A01612A0'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566A01613A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571A0J714A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144L xf1x895081xf1x82x0571A0JA15A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144M xf1x895082xf1x82x0571A0JA16A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873QM909144 xf1x895072xf1x82x0571A01714A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144AAxf1x891081xf1x82x0521A00608A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A07B05A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A00442A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QN909144B xf1x895082xf1x82x0571A01A18A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A10A01A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521B00404A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A00642A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566B00611A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143K xf1x892033xf1x820514B0060703'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143M xf1x892041xf1x820522B0080803'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143P xf1x892051xf1x820526B0060905'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143B xf1x892201xf1x82x0563B0000600'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020600'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A60604A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A60634A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A62A32A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM907144D xf1x891063xf1x82x002SA6092SOM'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60604A1'.json delete mode 100755 selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60804A1'.json rename selfdrive/car/torque_data/lat_models/{VOLKSWAGEN ARTEON 1ST GEN.json => VOLKSWAGEN_ARTEON_MK1.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{VOLKSWAGEN ATLAS 1ST GEN.json => VOLKSWAGEN_ATLAS_MK1.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{VOLKSWAGEN GOLF 7TH GEN.json => VOLKSWAGEN_GOLF_MK7.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{VOLKSWAGEN JETTA 7TH GEN.json => VOLKSWAGEN_JETTA_MK7.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{VOLKSWAGEN PASSAT 8TH GEN.json => VOLKSWAGEN_PASSAT_MK8.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{VOLKSWAGEN PASSAT NMS.json => VOLKSWAGEN_PASSAT_NMS.json} (100%) mode change 100755 => 100644 rename selfdrive/car/torque_data/lat_models/{VOLKSWAGEN TIGUAN 2ND GEN.json => VOLKSWAGEN_TIGUAN_MK2.json} (100%) mode change 100755 => 100644 diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A030x00x00'.json b/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A030x00x00'.json deleted file mode 100755 index 39f881e4a7..0000000000 --- a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.786729],[0.5672887],[0.28005219],[0.035554193],[0.5677058],[0.56628585],[0.56508285],[0.55352837],[0.54181147],[0.52912265],[0.5155199],[0.035507876],[0.0354848],[0.03545452],[0.03514088],[0.03492326],[0.034622278],[0.034296613]],"model_test_loss":0.019161002710461617,"input_size":18,"current_date_and_time":"2023-08-05_00-23-35","input_mean":[[27.090303],[0.047497954],[0.016577758],[0.0007272725],[0.044373695],[0.045599286],[0.046824276],[0.053295966],[0.05693411],[0.058819015],[0.0594564],[0.0004213227],[0.0004913575],[0.00056855136],[0.0008395286],[0.0009874002],[0.0010656398],[0.0010756186]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.25851473],[2.4962583],[-0.016582556],[-0.08381792],[-0.16407841],[0.7527331],[0.22097391]],"dense_1_W":[[0.23336808,-0.7667592,0.0008973085,0.34888005,0.4696916,-0.8726721,-0.052713018,-0.3410398,0.083063185,-0.21388897,0.14544983,-0.6639639,0.34076384,0.43210688,-0.18405053,0.14303815,0.1860583,-0.29693],[1.5149847,0.7346798,0.0012407255,0.12526828,-0.15258078,0.75175434,0.43043575,0.8569343,0.3044722,0.6560543,-0.6017985,0.586774,-0.2042676,-0.57615256,-0.82250106,-0.3673933,0.39087212,0.28107244],[-0.056961607,0.14175236,-0.14529344,-0.21935074,-0.4685559,-0.38604775,-0.30533233,0.08093428,-0.054244533,0.046247467,0.002660106,-1.0756555,-0.34733522,0.5118129,0.555274,0.9977485,0.5343106,0.76034987],[0.043177918,1.1426508,-0.2574032,-0.80439544,-1.0474149,0.018192194,-0.72060835,-1.5457815,0.4839822,-0.22740847,0.33749956,0.56239605,-0.18597472,-0.7004514,-0.12335018,0.9408467,1.3969381,1.9147022],[0.15510105,-0.51416093,-0.1709066,0.3122005,-0.27975515,-0.18827502,-0.018079426,-0.07361344,-0.17749901,-0.16815776,0.329771,-0.96269935,-0.41497013,-0.11298405,0.90808386,0.5985053,0.6670271,1.0441304],[0.04084261,-0.3579519,5.764384,2.1556206,-3.1756268,-2.5591285,-3.1059926,-2.1751692,1.9893773,5.344765,3.8095784,0.0068162596,-0.05961051,-0.7790495,0.25181335,0.08936475,-0.4691672,-1.5800782],[0.008442975,-0.9664588,1.254223,0.07495671,-0.9211808,-0.31230834,-1.420559,1.5870605,2.9423354,1.2097238,-1.5209136,0.53799206,-0.24978906,-0.4991973,-0.045118414,0.22720768,-0.021786746,-0.028036244]],"activation":"σ"},{"dense_2_W":[[0.08589389,0.5554316,-0.76533294,1.4370406,-0.749679,0.8190772,0.7847909],[-0.36651522,-0.23656718,-0.9679525,0.54530346,-0.44935027,-0.33107117,-0.11653592],[0.1937388,-0.51963365,-0.41821185,-0.56238693,-0.42072704,0.29349342,0.28873855],[0.18568017,-0.6255592,0.3175428,-0.1296441,0.36066276,0.090375744,0.011777949],[0.29389882,0.41541627,0.29456857,-0.06099775,0.8544443,-0.32980224,-0.018656367],[0.46638128,1.1828619,-1.0409766,1.1076639,-0.8162737,-0.1841819,0.35339093],[-3.1295595,-1.7625448,-0.9519052,2.3819635,-1.5629697,1.4751475,1.054407],[-0.26031867,-0.17098531,-0.86596596,-0.2823039,-0.09237936,-0.5557033,0.21093917],[0.17419276,-0.33989495,0.75525665,-0.23243514,0.067577615,-0.11459458,-0.12737218],[-0.5143146,-0.114794,-0.48588708,0.014262976,-0.3147008,-0.3320594,-0.050031766],[0.69564664,-0.20285861,-0.045860726,-0.24353331,-0.077484764,-0.48740336,-0.49667886],[-0.73832846,-0.056390353,-1.1750503,0.9696539,-0.14256468,-0.9768354,0.3639443],[-0.33827624,1.3389958,-0.90204453,1.2786052,-0.37693223,1.0066575,0.7839061]],"activation":"σ","dense_2_b":[[0.004400438],[-0.012242325],[-0.24042149],[-0.2775402],[0.026533086],[0.17362237],[-0.11018203],[-0.26839134],[-0.012196942],[-0.27722296],[0.061678015],[-0.030844057],[-0.1247429]]},{"dense_3_W":[[-0.004011368,0.44971785,-0.29006478,0.44446334,0.15595631,0.18539023,-0.027091525,-0.36382222,-0.47578183,0.3841759,-0.58085823,0.21311298,0.43156254],[-0.114403516,-0.58336,-0.15005592,0.4984802,0.050974183,-0.2988934,0.17598677,-0.38844588,-0.43446323,-0.46759152,0.59965366,-0.22926027,0.46112597],[-0.666863,-0.06357686,-0.37007764,0.7205996,0.7096061,-0.1758518,-0.8103027,-0.44219843,0.7200449,0.5289802,-0.16617142,-0.40598816,0.00529661]],"activation":"identity","dense_3_b":[[-0.09627088],[0.058493696],[0.09405641]]},{"dense_4_W":[[0.8841606,-0.039429788,-0.82832056]],"dense_4_b":[[-0.09594059]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A040x00x00'.json b/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A040x00x00'.json deleted file mode 100755 index 8c389b9507..0000000000 --- a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8066874],[0.6620071],[0.29624054],[0.031885646],[0.67469865],[0.6712079],[0.6675276],[0.6426469],[0.62732595],[0.60797465],[0.5914247],[0.032055974],[0.032022122],[0.031979207],[0.031657174],[0.031374358],[0.031031318],[0.030767966]],"model_test_loss":0.016631487756967545,"input_size":18,"current_date_and_time":"2023-08-05_00-24-05","input_mean":[[27.279354],[0.07628178],[0.004740573],[0.004332477],[0.07348854],[0.07386953],[0.074113265],[0.07658985],[0.07849997],[0.08176357],[0.08127507],[0.004234957],[0.004238124],[0.004233249],[0.004148433],[0.004073079],[0.0040188804],[0.0037603448]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.5227308],[-0.9277926],[0.01344287],[-0.12681559],[1.8620169],[-0.18611176],[-0.46804744]],"dense_1_W":[[1.3088025,0.7938517,-0.07550197,0.12162848,-0.23023312,-0.53417087,0.7298755,-0.35863844,-1.232776,-0.32464856,0.69969106,-0.19938065,0.14594285,0.67643446,-0.7466748,-0.1924248,0.25988856,0.03815833],[-0.00032034,0.09513859,0.14649239,0.84448385,-0.33081084,-0.7636266,-0.43756434,0.15544043,-0.5536561,0.5097238,-0.44260737,-0.99638957,-0.6095418,0.38101298,-0.108550996,0.5993398,-0.28177363,-0.27099723],[0.017245863,-0.8860011,0.06905833,-0.23131342,-0.31428957,-0.5846859,0.11834183,0.10321145,-0.19951913,-0.13262431,0.051923424,-0.18100934,-0.4455598,0.7395236,-0.022803197,0.41319725,0.7613758,1.0495721],[0.01882326,-0.8194868,-0.009853303,0.4151132,0.38719785,-0.25005072,0.4127618,0.054583337,-0.5390043,-0.10014917,0.34088063,-1.117872,-0.08286508,0.46948376,0.35110041,0.38353947,0.25921276,-0.5767032],[1.2597413,-0.06712699,0.07406188,0.005649942,0.32073185,0.41326395,-0.71213233,0.1408067,0.5081324,0.06824581,-0.22174098,0.42761666,-0.5766476,-0.7140219,0.44048855,0.48427463,0.31352678,-0.4882206],[-0.016965292,1.2305305,0.10325935,0.24419214,2.1640618,2.4280353,2.9627275,1.0981169,-1.7519482,-3.7584212,-3.6021638,-0.63591194,-0.52256954,0.8271195,-0.3019169,-0.87059563,0.38380772,0.69980204],[-0.031441774,-1.5607485,-7.438145,1.1177127,1.5216038,0.7637881,0.8477267,-0.835395,-1.5533942,-0.35314834,1.1110218,-1.644007,-1.0006105,-0.3352244,0.20025133,0.83611494,0.31554085,0.33613914]],"activation":"σ"},{"dense_2_W":[[-0.38370743,0.32968736,-0.004957762,-0.9081518,0.15075667,-0.068389416,0.008115187],[-0.3697097,0.47690573,-0.55084234,-0.7900301,0.27233642,0.14098246,-0.3138353],[-1.0909184,-0.5307646,0.27474627,-0.8662306,-0.30040765,0.033314817,-0.3492279],[0.5701307,-0.5303288,0.031248378,0.6385814,0.010645484,-0.016549833,0.46346626],[0.1442632,-0.42781132,0.24439524,0.23937261,-0.81748235,0.064812824,0.4000337],[-0.36214906,0.19428124,0.5956358,0.9273549,-0.14404434,0.21891229,-0.5955698],[0.7355732,-0.09893048,0.07489529,0.38501185,0.9168706,0.050819628,1.2076929],[0.6842598,0.1722268,-0.2845938,0.2455436,0.97617817,0.25799465,1.0193411],[-0.08084107,-0.58205926,0.07038275,-0.30948064,0.07723996,-0.5130746,0.4102158],[0.04777135,-0.3226301,0.02726643,-0.6204659,0.7076705,-0.080048494,-0.05065219],[0.33558354,-0.32304227,0.38823822,-0.8043962,0.65630925,-0.22564156,-0.18366374],[-0.72608715,0.54069227,-0.4357295,0.016691474,0.19214477,-0.21972942,-0.7132383],[-0.2671177,-0.59838676,-0.09683501,-0.67224425,0.39455676,0.14678267,0.29082012]],"activation":"σ","dense_2_b":[[0.042974856],[0.047666013],[0.071242],[-0.067780755],[-0.13547619],[-0.022536043],[-0.1646825],[-0.09613349],[-0.062535584],[0.06297165],[0.19214764],[-0.0261287],[-0.11438154]]},{"dense_3_W":[[0.3077478,0.14613815,0.65330607,-0.18163036,-0.67502165,-0.5579221,-0.202035,0.18795493,0.12072459,-0.10777223,0.4149204,0.61287045,0.58160293],[-0.5099703,-0.19231012,-0.377239,0.59486294,0.59117395,0.51951456,0.15894152,0.528822,-0.40744722,-0.56634617,-0.6320977,-0.22041576,-0.54817945],[0.33777002,-0.54104495,-0.24469995,-0.37649524,-0.5114555,0.42566466,-0.16754289,-0.10115532,0.15072124,0.3869163,0.36524448,-0.001329152,0.4387867]],"activation":"identity","dense_3_b":[[-0.04467462],[0.033724587],[-0.113627024]]},{"dense_4_W":[[0.64887154,-1.1038072,0.022054804]],"dense_4_b":[[-0.033230864]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A070x00x00'.json b/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A070x00x00'.json deleted file mode 100755 index 05288d3d86..0000000000 --- a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A070x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.804848],[0.8000588],[0.3076164],[0.04094818],[0.8080633],[0.80525005],[0.80151165],[0.7824581],[0.7688379],[0.75354946],[0.73837227],[0.040943466],[0.040922932],[0.04089199],[0.04062815],[0.040328],[0.039892863],[0.03927387]],"model_test_loss":0.036003123968839645,"input_size":18,"current_date_and_time":"2023-08-05_00-24-34","input_mean":[[28.423885],[0.007884776],[-0.0031538303],[0.015055777],[0.006704811],[0.0065370076],[0.0068571228],[0.0054512075],[0.004117628],[0.005428144],[0.0066870335],[0.015062948],[0.015041507],[0.015016925],[0.014904091],[0.014769581],[0.014618669],[0.014560436]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16520002],[1.9058155],[0.08453396],[-0.5702096],[-0.022235246],[2.1811569],[0.32843062]],"dense_1_W":[[0.007258376,0.5546316,0.0021156757,-0.11869205,-0.44563162,0.5686885,-0.49791276,0.32130694,0.18480486,0.20529743,-0.2983059,0.9580912,-0.30417892,-0.17480053,-0.5471751,-0.15583673,0.09669533,0.13655974],[1.1045209,0.72982305,-0.0012157066,-0.32325575,0.36619568,0.28777912,0.4200975,0.32855922,1.0964329,0.0125418985,-0.3758639,0.045545604,0.15269232,-0.3104408,0.2671959,-0.42339674,-0.24723499,-0.19590895],[-0.018215153,-0.9239081,-7.2882724,-0.043018136,0.89870304,0.26894778,0.9689756,-0.2952786,-1.5947425,-0.1945536,0.7288008,-1.1317624,-0.5719013,-0.14229906,0.4161876,-0.08783979,0.42565742,0.90669537],[1.5756099,0.74937963,-0.6682266,0.17876424,0.41060305,0.463597,-0.1566954,-0.2545488,0.60787153,0.32818866,-0.6589883,0.27973333,-0.2438422,-0.05319809,-0.15574023,-0.6602739,0.26140356,0.13322982],[0.0029903697,0.8079928,-1.8084258,0.065171555,2.247587,1.658609,1.4290156,-0.038293317,-1.8411868,-2.3568115,-1.5802773,-0.48189434,-0.3668556,0.065492555,-0.07620456,-0.24639589,0.45018005,0.522461],[0.8719188,-0.5783348,-0.004002766,0.28650954,-0.4252121,-0.44623157,0.058663256,-0.56094223,-0.55295444,-0.3040901,0.3919486,-0.46245384,-0.029172314,0.18465641,0.25736162,0.39288744,0.36129612,-0.11474042],[0.04924682,-0.42568168,0.00047019235,0.047753103,-0.6865259,-0.47911242,-0.964993,-0.102179274,-0.02535022,0.20489506,-0.38479173,0.51818967,0.28378603,-0.42722967,-0.48230556,0.024352815,0.07428285,0.62325346]],"activation":"σ"},{"dense_2_W":[[0.90986884,0.47950652,0.25053373,0.19939893,0.022542464,-0.38787457,0.35567287],[-1.0180658,-1.145854,0.6623716,-0.28077835,0.15672879,-0.85848707,-1.4568413],[1.406467,0.28726155,-0.062790155,-0.1506732,-0.9504507,0.3980746,-0.17273381],[1.1017784,-0.79252,-0.19594195,-0.58535796,-0.43267435,-1.4622566,1.099609],[-1.6988904,-1.4887654,1.0556726,0.14193814,0.567861,-0.78099054,-1.1916547],[1.3314943,-0.04540647,0.01911306,0.5834418,0.35737038,-0.3738458,-0.9131301],[-1.4514605,-1.1643327,0.3310674,-0.40083563,-0.2108704,-0.35081738,-1.25731],[1.4591875,0.51000947,0.6822781,-0.026922852,-0.20268947,-0.74282473,-0.7089955],[-1.5790056,-0.81782144,0.12857606,-0.031774927,0.009384996,-0.011062012,-0.47970626],[0.6185028,-0.44301233,0.16603012,-0.12869644,-0.550066,-0.039163988,-0.13839607],[-0.018947372,0.18183467,-0.7923736,0.45726624,-0.7995292,-0.59161717,0.1465947],[1.1080922,-0.83549255,-1.2054135,0.81522685,-0.83383155,-1.7733766,0.60040456],[-1.173769,0.9102019,0.8067946,0.12065304,0.46038142,0.988551,-0.8998902]],"activation":"σ","dense_2_b":[[-0.34571314],[-0.06508791],[-0.16475885],[-0.51652795],[0.09335283],[-0.3354126],[-0.05395547],[-0.31864733],[0.0341759],[-0.28023538],[-0.24353532],[-0.6017034],[0.3884714]]},{"dense_3_W":[[-0.14432088,-0.26102468,-0.16678491,0.27030742,0.5432606,0.36784706,0.31559888,-0.39181647,0.25105116,0.031935308,0.059210572,-0.27962592,-0.23508798],[0.10690615,-0.6226754,0.33630693,0.72590107,-0.7262614,0.36729288,-0.35301742,0.729708,-0.85739464,0.085655235,-0.09123609,0.3166798,-0.6107507],[-0.24342504,0.5378751,-0.33611593,-0.14817247,0.11123475,0.48445055,0.52930707,0.3598816,0.5077164,-0.062455237,-0.2566208,-0.5888578,-0.27487496]],"activation":"identity","dense_3_b":[[0.18145333],[-0.101992324],[0.0892087]]},{"dense_4_W":[[-0.021246718,1.246937,-0.05223701]],"dense_4_b":[[-0.08010172]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A130x00x00'.json b/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A130x00x00'.json deleted file mode 100755 index 0676cba6ca..0000000000 --- a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A130x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.23255],[0.72479707],[0.2731752],[0.041931108],[0.7306734],[0.728485],[0.72535795],[0.70364136],[0.6862298],[0.6646152],[0.6451095],[0.041831795],[0.041856535],[0.04186677],[0.041598115],[0.04127907],[0.040753823],[0.040154044]],"model_test_loss":0.02374698594212532,"input_size":18,"current_date_and_time":"2023-08-05_00-25-01","input_mean":[[25.491344],[0.044132378],[0.0061853817],[-0.0029408792],[0.041254394],[0.04185997],[0.04264751],[0.044891346],[0.045578476],[0.048339594],[0.049801964],[-0.002985854],[-0.0029757507],[-0.0029692403],[-0.003035695],[-0.0031368348],[-0.0032066072],[-0.003333973]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.2589055],[-0.6300203],[-0.18905114],[0.035437174],[-0.19216189],[-0.18303323],[0.30025914]],"dense_1_W":[[-0.22914602,0.37103513,-3.0855074,-0.016385019,-0.1979585,0.269418,0.30819643,-0.057719447,-0.6764055,-0.551892,0.44502893,-0.14667127,0.09163551,0.13834381,-0.032953348,-0.1365294,0.108110294,-0.015983328],[0.78569615,-0.10759539,-2.9499667,0.063911594,0.32446858,0.47014278,-0.37796447,0.17923851,0.04087841,-0.1296694,-0.25734457,0.13309121,0.117884666,-0.24419518,0.18338855,-0.34687102,-0.28147766,0.2696666],[-0.08656571,0.008094062,3.595688,-0.26259422,-0.08986283,-0.2759453,-0.21220718,0.46498194,-0.04266637,0.19100346,-0.15709823,-0.12756641,0.08520138,-0.15009129,0.46134138,0.45091918,-0.34697345,-0.04493433],[-0.0057781595,0.89213103,-0.6567681,0.06595929,0.7855131,0.69278926,1.5298123,0.91839993,-2.0061233,-2.435459,-0.6626293,-0.74082696,0.24077982,0.32887235,0.38966477,-0.42399997,-0.13695207,0.89643025],[0.00082410604,0.5266071,0.0135379555,0.69229037,-0.6991144,0.1244281,-0.08241515,0.19330071,0.6835726,-0.17600393,-0.27664047,0.3862313,-0.16833216,0.13843256,-0.8122221,-0.7083284,-0.53014934,0.8007278],[-0.002461339,0.5366552,0.005371866,-0.20480752,-0.02694003,0.43186262,-0.022536932,-0.2710664,-0.20992674,0.055011317,0.10523869,0.7081066,-0.25829124,-0.3393486,-0.033259023,0.11424787,0.25399274,-0.21338066],[-0.83344615,0.4972349,-2.674982,-0.8011467,-0.00091532787,0.15652598,-0.1011277,0.16851202,-0.010218224,-0.3162073,-0.21929123,0.8358039,-0.3675451,0.20605241,-0.044107787,0.02273551,-0.12779047,0.16776903]],"activation":"σ"},{"dense_2_W":[[-0.19773088,-0.07987414,-0.46394402,-0.25385913,-0.51523316,-0.7734022,-0.24892572],[0.7524863,-0.83441466,-0.15295947,-0.52500844,-0.65857184,-1.0245075,-0.12141446],[0.47812417,-0.31713268,-0.4710023,0.8264185,-0.8333809,-0.7837305,-0.21949],[-0.10150827,-0.33362886,-0.570894,-0.6523667,-0.12733579,-1.03887,0.089515604],[0.2693557,0.33961922,0.5830918,-0.16009484,0.88582087,-0.18754318,0.27771476],[-0.32544395,0.44090092,0.28255528,-0.7974365,0.17504413,0.75356585,0.58148295],[-0.31234935,0.13871694,0.8212621,-0.041753158,0.7099144,0.2015646,-0.056245737],[0.2175629,0.09308608,0.80202895,-0.24198753,0.48807403,-0.22803837,0.64155793],[-0.37297815,-0.454524,-0.2041459,-0.21450296,-0.4926007,-0.6716726,-0.30035603],[0.28631696,-0.6844529,-0.3590589,0.0717205,-0.8350303,-0.9547256,0.01994262],[0.09526404,-0.37569124,-0.54859555,-0.25455466,0.08059891,-0.5854736,-0.28227013],[0.49766162,-0.4683451,-0.30763015,1.2545203,-1.0363722,-0.6756313,-0.67825943],[-0.020436687,-0.17459548,-0.8167955,0.5455366,-0.37868357,-0.6452078,-0.50482]],"activation":"σ","dense_2_b":[[0.14226258],[0.20491779],[0.21216024],[-0.09415054],[-0.10954374],[-0.15493721],[-0.081466906],[-0.0703362],[0.024982613],[-0.039309245],[-0.06658772],[0.5169116],[0.23269281]]},{"dense_3_W":[[0.032323103,-0.54836,-0.5319698,-0.29569536,0.23183687,0.6694105,0.038498178,0.63660324,-0.38424796,0.06097146,-0.4531479,-0.43248698,-0.5142001],[0.6478883,0.25922352,0.62727135,0.7343839,-0.5265464,-0.61613655,-0.18139401,0.109259166,0.08149141,0.73708165,0.20760447,-0.15330316,0.5328034],[-0.27989653,-0.7052997,-0.25653857,0.116460204,0.14982809,0.19868049,0.6558363,0.39804822,-0.17899916,0.09420844,0.19702157,-0.65146506,-0.42718345]],"activation":"identity","dense_3_b":[[0.008412994],[-0.026723087],[0.007888077]]},{"dense_4_W":[[0.60362816,-0.77239645,0.9147824]],"dense_4_b":[[0.010696713]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020.json b/selfdrive/car/torque_data/lat_models/ACURA_RDX_3G.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/ACURA RDX 2020.json rename to selfdrive/car/torque_data/lat_models/ACURA_RDX_3G.json diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566G0HA14A1'.json b/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566G0HA14A1'.json deleted file mode 100755 index 5a9673b63d..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566G0HA14A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.577478],[0.7438756],[0.36118278],[0.032957785],[0.73931956],[0.7406723],[0.74192834],[0.74210787],[0.7407529],[0.73199296],[0.7199361],[0.03313112],[0.03308075],[0.03302625],[0.032850783],[0.032766964],[0.032702252],[0.03262269]],"model_test_loss":0.005140421446412802,"input_size":18,"current_date_and_time":"2023-08-05_01-40-02","input_mean":[[25.733025],[-0.0530399],[-0.0037603835],[-0.010416541],[-0.052312925],[-0.051846784],[-0.05134495],[-0.054431908],[-0.05473598],[-0.057869826],[-0.06307359],[-0.0104753],[-0.010442205],[-0.010416312],[-0.010369451],[-0.010322098],[-0.010290761],[-0.010380604]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.3245497],[-1.4683536],[-1.0290579],[-1.1341333],[-2.1062934],[0.3018172],[-0.23615684]],"dense_1_W":[[-0.7003263,0.49873114,0.0898631,-0.124622256,-0.074973226,0.9586173,-0.38187122,-0.2140207,-0.17437121,-0.08466658,0.18243429,0.332077,0.091170385,-0.31530052,-0.40582517,-0.18025973,0.01580242,0.16465585],[0.65071887,0.098929696,0.081038885,-0.43317255,0.09570322,0.6772797,0.09694697,-0.2210818,-0.36565584,0.14244506,0.1442449,-0.060965866,0.69212425,-0.22231308,-0.38532606,0.025514778,-0.33013564,0.31779227],[-0.45925462,-0.7011064,-0.117601246,-0.29964444,0.5295153,-1.7198939,1.0653187,-0.25740883,-0.017742164,-0.3926751,0.14859986,0.093567744,-0.0036377048,0.6028897,-0.024838587,-0.72965765,0.22210832,0.17412421],[-0.41014504,0.7981556,0.12894426,-0.15330562,-0.46003667,0.80571204,-0.28026396,0.07452426,0.46427798,0.08275176,-0.15462086,-0.22026892,0.2446177,-0.11201427,0.13369443,0.085089125,0.04192831,-0.079959705],[-1.4503621,0.59118265,0.22731866,-0.0001668829,-0.1303347,0.73156023,-0.5737055,0.043029774,0.20244285,-0.0695449,0.08930824,0.064521626,0.068293415,-0.44724983,0.15501118,0.5946885,0.51368195,0.7538089],[0.004021074,-0.6826504,-3.3770466,-0.7409217,1.6001521,0.0391899,-0.124299094,-1.0929167,-1.0039091,0.09728141,1.62364,0.04166459,-0.9421838,-0.19240098,1.0952632,0.8884146,0.37573487,-0.81200004],[-0.018716704,0.2596357,0.085221626,-0.33597907,-0.328589,0.86857575,-0.25697392,-0.06518752,0.058769446,-0.46493977,0.26284,0.32883435,0.3965106,-0.51409185,-0.35840464,0.25830442,0.17984946,-0.09297429]],"activation":"σ"},{"dense_2_W":[[-0.5632885,-0.53817147,0.64087266,-0.6966918,0.19645694,0.20904736,-0.6993455],[-0.16920735,-1.1400033,0.759447,-0.8198524,-0.19880797,0.8225933,-0.57966435],[-1.5840745,0.2576235,-1.4874045,-0.97268665,0.10756933,-1.5350775,0.09277853],[-0.746399,-0.69672894,0.029895214,-0.47871673,-0.044179466,-0.40327352,0.16566314],[-0.038666934,0.08509904,0.038226664,0.19170763,-0.115979545,-0.61926454,-0.34254095],[0.4221073,0.9338458,0.43968564,0.060404833,-0.27444592,0.18882848,0.04802321],[0.11849655,0.6292092,-1.1421567,0.91632056,0.12051813,-0.47201702,0.47282815],[0.65729594,0.95542836,0.29725003,-0.13384224,0.040036652,-0.3340561,0.91600364],[-0.50302577,0.20259018,-0.82741207,-0.78905314,-0.99308705,0.37110266,-0.2015438],[-0.6504161,-0.95296395,1.3312038,-0.82766765,-0.015905075,0.6261558,-0.30300564],[-0.5737891,0.27416453,-0.13240442,-1.0399845,-0.13625641,-1.1091161,-0.10313148],[-0.88772994,-1.1795825,1.4089849,-0.89326316,-0.2216985,1.2031909,-1.0210301],[-0.45486033,-0.6124461,0.7889247,-0.48303822,-0.066258006,0.67935133,-0.68396086]],"activation":"σ","dense_2_b":[[0.1795089],[0.1396347],[0.28086272],[0.088517],[-0.40390638],[0.033958796],[-0.24937943],[-0.11856169],[-0.36012134],[0.3268745],[-0.16133401],[0.5044416],[-0.036166213]]},{"dense_3_W":[[0.21906924,-0.43080992,-0.26896283,-0.5586104,0.46261472,-0.18390699,0.68614185,0.44715905,0.5650668,-0.5596256,0.0845164,-0.1399013,-0.0069408407],[-0.6725418,-0.5217038,-0.41263464,-0.14729826,-0.3349171,0.45824003,0.45669848,0.41630223,-0.1198797,-0.37809664,-0.58279663,-0.39970228,-0.46720004],[-0.0911098,-0.2839844,0.74057204,0.28854206,-0.602245,-0.027574118,-0.23919757,-0.57538325,-0.20772439,0.4040517,-0.1298003,0.9268099,-0.33000454]],"activation":"identity","dense_3_b":[[0.09233651],[0.16433457],[-0.078944445]]},{"dense_4_W":[[0.3148156,0.70836514,-0.25909597]],"dense_4_b":[[0.12378432]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571G0HA16A1'.json b/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571G0HA16A1'.json deleted file mode 100755 index fe26c2fbaa..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571G0HA16A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.444296],[0.925862],[0.3873827],[0.037189186],[0.91709805],[0.9205691],[0.92302024],[0.92303276],[0.92241675],[0.9182511],[0.9138257],[0.0370443],[0.03708567],[0.03713202],[0.037330262],[0.03739135],[0.037358396],[0.037249684]],"model_test_loss":0.005741582717746496,"input_size":18,"current_date_and_time":"2023-08-05_02-04-31","input_mean":[[25.35733],[0.06905999],[0.003920239],[-0.0061412086],[0.06798497],[0.067765675],[0.067846335],[0.07060763],[0.07478977],[0.08159132],[0.08384652],[-0.00630684],[-0.006240933],[-0.0061786305],[-0.005954251],[-0.0058416207],[-0.005766785],[-0.0058315513]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09965041],[-2.8333573],[0.1400968],[0.009966896],[-0.54726493],[0.0015999223],[-3.2500806]],"dense_1_W":[[0.008949206,-0.7134963,-0.039546415,0.32233778,0.046066836,-1.0873427,0.9605672,0.20299414,0.19314864,0.08948046,-0.20269577,-0.3755727,-0.37828064,0.14123754,0.4638058,0.26318562,-0.13823359,-0.23261546],[-1.1191226,1.24295,0.5152675,-0.08874825,0.0025459442,0.80788636,-0.104676746,0.4805844,-0.02262418,-0.03299286,-0.034461044,0.1827796,0.026162459,-0.3095013,0.17938249,0.18499815,-0.08783259,-0.045922197],[0.00032858906,1.4926245,0.046637077,-0.32630235,-0.5585684,0.4034735,0.034369424,0.32580245,0.6714615,0.1760409,-0.24315467,0.4334825,0.4505814,-0.71569765,-0.20759046,0.37798336,0.05509028,-0.05075517],[-0.0020555735,1.4031184,4.5700407,0.20270438,0.024622126,0.36119592,0.061005134,0.40066856,0.019982928,-1.0741708,-0.95529234,0.091578454,0.10358388,-0.14398912,-0.42586878,0.46220022,-0.20536982,0.016865704],[-0.002008851,-0.69844705,0.08216384,0.44206062,-0.69932556,-0.9771249,1.0371966,0.47466856,0.09576244,-0.109484494,-0.39007372,-0.006908211,0.0011474143,0.66040933,1.1697054,0.06390619,0.45119238,0.11735442],[0.008935762,0.91445494,0.028773237,-0.52121264,-0.174554,0.9050357,-1.0716133,0.12847908,0.044074073,-0.09941267,-0.028681703,0.0962431,0.08194988,0.08453359,0.29791412,-0.14331576,0.10533343,-0.020068252],[-1.1533717,-1.6527721,-0.52385485,-0.4202616,0.2607004,-1.0356239,0.27048177,-0.3373225,-0.09205943,0.3441015,-0.11975457,-0.055931754,0.18685083,0.20495965,0.187628,-0.1650148,-0.1626427,0.17851348]],"activation":"σ"},{"dense_2_W":[[-0.16502862,0.6035214,-0.4797608,-0.26366422,0.1172479,0.65635234,-0.32176182],[0.82605934,-0.22745298,-0.5525386,-0.36830527,0.23893076,-0.3919843,0.49190587],[-0.2966492,0.09588704,-0.45871517,-0.11154242,0.35666984,0.039538093,-0.1328796],[0.034723956,-0.46226948,-0.48428744,0.31498548,-0.24748813,-0.13231282,0.09660036],[-0.1478363,-0.19293658,-0.2720306,-0.45817015,-0.37688,-0.50546414,-0.28803188],[0.8061317,-0.35915154,0.11437668,-0.25236553,0.11779728,-0.5324483,0.11850576],[0.022361243,-0.26832423,-0.62965536,0.22057025,0.24124865,-0.34575233,-0.38505265],[0.2575399,0.05998816,0.061493885,0.018274274,-0.5433316,-0.29543966,-0.61841214],[-0.16821893,-0.15542041,0.30067912,0.050528307,0.18159576,0.247534,-0.4873542],[-0.5824741,0.4054871,0.64855784,0.20722958,-0.41800383,0.43538094,-0.7275382],[0.31753623,0.07011032,0.57152003,0.090241544,0.20502838,0.20511343,-0.107010804],[0.44585994,-0.39532375,-0.526214,-0.23581168,0.26709425,-0.246547,0.028189523],[-0.5761572,-0.07350907,0.4795847,-0.2759125,-0.26325545,0.70039105,0.071710885]],"activation":"σ","dense_2_b":[[-0.027677696],[0.045070633],[-0.02658284],[-0.22184646],[-0.017363569],[0.015014292],[-0.24714506],[-0.25203505],[-0.008711522],[-0.065313436],[-0.03065247],[0.060002126],[0.012620704]]},{"dense_3_W":[[0.20473917,-0.651288,-0.23288384,-0.59891415,-0.1475974,-0.23222987,-0.32410318,0.11691736,0.6000578,0.51066893,0.20957007,-0.028224448,-0.19108637],[-0.31180796,-0.4837876,-0.252939,-0.34604937,0.15680352,-0.285469,0.56567293,-0.51167464,-0.016737705,0.21543846,0.13277481,-0.622958,0.62488127],[-0.6404472,0.4868364,0.45634153,-0.29710093,0.09397441,0.103426725,0.52781576,-0.28619406,-0.16805595,-0.5277735,-0.58615893,0.44762912,-0.23755693]],"activation":"identity","dense_3_b":[[-0.00061371934],[0.0008866203],[0.0041582286]]},{"dense_4_W":[[0.2813102,0.8880676,-1.0474501]],"dense_4_b":[[-0.0030482505]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516G00804A1'.json b/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516G00804A1'.json deleted file mode 100755 index 623cfc6fd6..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516G00804A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.647897],[0.77807677],[0.3786303],[0.027181908],[0.76505655],[0.7691365],[0.7753112],[0.75485826],[0.7388133],[0.7235482],[0.7017126],[0.027084801],[0.027107615],[0.02713881],[0.02727208],[0.027347732],[0.027291704],[0.02712333]],"model_test_loss":0.005975625012069941,"input_size":18,"current_date_and_time":"2023-08-05_02-53-24","input_mean":[[22.687336],[0.041830763],[0.0013497239],[0.0025117223],[0.04265397],[0.041225184],[0.040064774],[0.041646685],[0.041738126],[0.039837133],[0.037775867],[0.0025273785],[0.0024943845],[0.0024706146],[0.002355649],[0.0022401763],[0.00213939],[0.0020558846]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.1844455],[-1.1541857],[-0.015318193],[-0.6885228],[0.031907413],[-0.4154868],[-1.2283381]],"dense_1_W":[[0.9976641,0.21748708,0.007614968,0.21005726,-0.24952233,-1.1167002,0.40800944,0.65574366,0.16467258,-0.026125554,-0.32524306,0.22688352,0.1259429,-0.41789296,0.24079186,-0.22830102,0.100322604,0.023678515],[-0.29762468,0.88740426,0.112175226,-0.2225173,-0.3093645,0.6364987,-0.8023527,0.6150709,-0.10853348,-0.07048834,-0.07352686,0.06482338,0.32714766,-0.2653219,0.07407067,-0.046005152,0.16475457,-0.06553305],[0.00032146444,1.5183012,0.071805686,0.15944685,-0.55036193,0.6881477,-0.78218305,0.17549933,0.40891948,0.07851986,-0.28071985,-0.39318854,0.309669,0.0018471086,-0.49772733,-0.035861548,0.156975,-0.014822093],[-0.18374057,-0.45571524,-0.09747847,0.07835499,0.71659774,-0.95522517,0.26217383,-0.50928473,0.20344277,0.040699393,0.03725089,-0.14224511,-0.37767497,0.40781656,0.231836,-0.3131839,0.16274065,-0.08154563],[-0.0026246961,0.9705764,3.6681292,-0.3000036,-0.44400433,0.16176015,-0.41099662,-0.02601824,0.6407803,0.42456567,-1.0577953,0.48476946,0.20323749,-0.25966495,0.19856524,-0.14002256,-0.3655814,0.23497105],[0.010234776,-1.908564,-0.07929717,0.75593996,0.50410277,-1.43933,-0.60249954,-1.4044362,-2.1078866,-1.8422328,-0.08159568,-0.5587607,-0.7469554,0.5997705,-0.32854697,0.038176045,0.069803216,-0.09369286],[0.9902383,-0.13063963,-0.006834419,-0.00481643,0.19603567,1.0950303,-0.60231364,-0.26128826,-0.18049927,-0.24451904,0.4080662,0.18761696,-0.05200454,-0.23603702,-0.033294257,-0.26397884,0.005336438,0.10861761]],"activation":"σ"},{"dense_2_W":[[-0.12819418,-0.04965034,-0.019238193,0.548027,-0.31324998,-0.24846186,-0.71080023],[0.48580822,-0.4452061,-0.3211533,0.52164257,-0.2934621,-0.21353783,-0.5648211],[-0.046689708,-0.15082699,-0.101832494,0.57533866,-0.3347912,0.2058913,-0.032502484],[-0.4508244,0.53148896,0.68331164,-1.0367274,0.18762335,0.049984977,0.4796921],[-0.10827881,0.098909445,0.20143649,0.0621116,-0.09980022,-0.70837736,-0.24850541],[-0.23459274,0.3976682,0.74400216,0.07945248,-0.0918161,-0.36116856,0.36160964],[-0.3334947,-0.7710084,-0.63277185,0.45722532,-0.16698726,0.29963008,-0.40333414],[0.11296678,-0.55500394,-0.5733111,0.19517982,-0.14325383,-0.23166345,-0.026499728],[0.50150007,-0.38261527,-0.6961804,-0.25895122,0.30894667,-0.5299628,0.123440936],[0.7214627,-0.086619996,-0.38500652,0.52342546,-0.49543855,0.60024095,-0.007926223],[-0.12577087,-0.13799962,-0.6489934,-0.43941757,-0.5788901,-0.08122388,-0.21836436],[-1.039173,0.054396313,0.21242972,-0.7820335,0.25794864,-0.04855301,0.87666434],[0.5399379,-0.034065444,-0.23672304,0.35554442,-0.06592034,0.20189549,-0.34307384]],"activation":"σ","dense_2_b":[[-0.13632841],[0.048632354],[-0.15356292],[-0.122767694],[-0.10747351],[0.089311264],[-0.14307816],[-0.14580268],[-0.17635764],[-0.0041631833],[-0.09472099],[-0.12868434],[-0.12293586]]},{"dense_3_W":[[-0.23443374,-0.43379006,0.38643113,0.7170689,-0.31815973,0.7005203,-0.0989276,0.3470744,-0.09264834,-0.51163256,-0.15258677,-0.2910665,0.27302915],[0.28812635,0.20398347,0.22110644,-0.7146041,-0.27986667,-0.2958926,0.4361534,-0.012043313,0.31531844,0.467926,0.4048369,-0.29521784,0.3930137],[0.25268626,0.5656607,0.34994185,0.061901323,0.4205215,-0.66544545,-0.048824873,0.40229976,0.3616486,0.054331604,-0.57134205,-0.731286,0.493206]],"activation":"identity","dense_3_b":[[0.13606566],[-0.14437976],[-0.14025378]]},{"dense_4_W":[[0.3672289,-1.1880862,-0.3997548]],"dense_4_b":[[0.14610623]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144T xf1x891072xf1x82x0521G00807A1'.json b/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144T xf1x891072xf1x82x0521G00807A1'.json deleted file mode 100755 index 7a36f606d2..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144T xf1x891072xf1x82x0521G00807A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.406553],[1.1444793],[0.48023388],[0.04517182],[1.1198108],[1.1292706],[1.1378976],[1.1248115],[1.1107553],[1.0959218],[1.0747414],[0.04489478],[0.04499193],[0.04508163],[0.045316804],[0.045437645],[0.045486297],[0.045448944]],"model_test_loss":0.010464400053024292,"input_size":18,"current_date_and_time":"2023-08-05_03-20-24","input_mean":[[21.85032],[-0.06325212],[0.01593448],[-0.0067214244],[-0.0617676],[-0.062218133],[-0.062741525],[-0.052988674],[-0.046424996],[-0.036852293],[-0.026416903],[-0.006868046],[-0.006833722],[-0.0067935614],[-0.006550063],[-0.006349941],[-0.00603803],[-0.0058110217]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.1758758],[-0.02333589],[-0.9422901],[-1.8183272],[-2.0369716],[-0.0022337937],[1.0386317]],"dense_1_W":[[-0.016577989,0.8713441,5.688127,-0.3929182,-0.04865473,0.6506077,-0.28903118,0.36254203,-0.011359748,-0.80350965,-0.7413686,0.2852788,-0.180391,0.030887136,-0.24853921,-0.10783466,0.50824666,-0.06847572],[-0.0092391325,-0.21448685,0.03441581,0.110536866,-0.0051872088,-0.92594856,0.75064564,0.028740149,0.03222661,0.006082844,-0.101520896,-0.4111015,0.1091794,0.39225927,-0.2532579,-0.039659202,0.11658903,-0.053364333],[-1.3687131,-0.16632304,0.15804188,0.0037932456,-0.12444754,1.1138352,-1.0514365,-0.041139685,-0.25043303,0.26688784,-0.07053993,-0.37225965,0.32112512,-0.027879953,-0.051089693,0.14374797,-0.18620768,0.005694514],[-0.6469966,-1.5555854,-0.20889208,-0.5880108,0.4715537,-1.2139171,0.75022185,-0.16585363,-0.2956166,-0.15876539,0.14122242,0.035947774,-0.33897576,0.19888888,0.6707361,0.18586846,0.10368669,-0.28106293],[-0.657111,1.6010174,0.21602994,0.4263732,-0.06848571,0.5598709,-0.49075437,0.25268188,0.11085831,0.2158561,-0.10458329,0.24656911,-0.39565903,0.37622258,-0.67023623,-0.14563817,-0.02180011,0.20525338],[-0.026721686,-1.4577084,-0.026119402,0.5333309,0.38764423,-0.9197922,0.69576514,-0.31642672,-0.1339865,0.10481822,0.14266707,-0.6337337,0.012707174,0.26578203,0.16265541,0.17228846,-0.1989113,-0.10555704],[1.4377016,0.06603403,0.16708663,-0.15933846,0.11354903,0.99252284,-1.1596392,-0.35168508,-0.15729623,0.031751093,0.12479976,0.37379214,-0.23274498,-0.43550903,0.18850462,0.39560428,-0.2743065,-0.03711172]],"activation":"σ"},{"dense_2_W":[[0.13976535,-0.567236,0.72977924,-0.37755272,0.8387794,-0.6176494,-0.1588559],[-0.46564472,0.4264771,-0.77863467,0.6377271,-0.32651326,1.3463035,-0.59549373],[0.28558275,0.28753272,-0.4952516,0.7528485,-0.7717421,0.5046622,-0.77360827],[-0.96945935,-0.0453178,-0.6731784,0.21861276,0.0004108777,-0.5904792,0.046018012],[-1.2385854,0.6857041,0.36958358,0.8480664,-0.43229854,-0.010444919,-1.322231],[0.036224924,0.3547489,-0.8043728,-0.053537022,0.016718367,0.6929881,-0.30040604],[0.06862226,-0.259559,0.5140289,-0.7720217,-0.041946124,-0.51667583,-0.06930547],[0.9849274,0.889979,0.15711601,-0.24940383,0.5364856,0.5195277,-0.788271],[-0.02180253,-0.22045894,0.29244867,-0.09937624,0.62102586,-0.9813616,0.22756088],[1.0398556,-0.8574942,0.72217983,-1.5679595,0.9945934,-1.205857,0.5450476],[0.5572645,-0.56064814,0.49424344,-0.6622529,0.9019719,-0.7570887,-0.12037264],[-0.0053947666,-0.6394732,0.45090503,-0.25865456,0.5792981,-0.59776926,0.17400868],[-0.01624432,-0.8273978,0.76286685,-0.8753738,0.50364363,-0.188468,0.7102324]],"activation":"σ","dense_2_b":[[-0.094213076],[-0.007611653],[-0.09876658],[-0.20891039],[-0.34281158],[-0.024532793],[-0.36961433],[0.07229608],[-0.094220944],[-0.19420828],[-0.24400096],[-0.022362027],[-0.14466679]]},{"dense_3_W":[[0.35009202,-0.54889274,-0.6271456,0.3699252,-0.7306264,-0.040469803,-0.1333791,-0.34627312,0.48485342,-0.027413882,0.41518027,-0.20679481,0.6512874],[0.52266765,-0.75062644,-0.04478057,0.18780099,-0.42413864,-0.6919877,0.13284668,-0.4328708,0.10996859,0.4937182,0.5085866,0.6378642,0.523424],[-0.18289043,-0.62926316,-0.77449095,-0.5117072,0.27590525,0.27471027,0.27253544,0.13643086,-0.122853294,0.6343227,0.06519875,0.55697745,0.34692377]],"activation":"identity","dense_3_b":[[-0.00441717],[-0.0539032],[0.024021728]]},{"dense_4_W":[[0.27877802,0.706807,0.113575056]],"dense_4_b":[[-0.045484345]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567G6000800'.json b/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567G6000800'.json deleted file mode 100755 index a8aa9f68ea..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567G6000800'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.7607994],[0.9292432],[0.46292055],[0.044395123],[0.9189823],[0.92225415],[0.9265908],[0.9041406],[0.89363676],[0.8758474],[0.8587412],[0.044199012],[0.04426089],[0.044309698],[0.044270102],[0.044164237],[0.043878913],[0.043546345]],"model_test_loss":0.012919353321194649,"input_size":18,"current_date_and_time":"2023-08-05_04-11-04","input_mean":[[23.187113],[0.0015932432],[0.011463172],[-0.037785653],[0.0014130658],[0.002005605],[0.0032030009],[0.008243341],[0.012254494],[0.015819417],[0.020851867],[-0.037866723],[-0.03782731],[-0.037789218],[-0.037560076],[-0.037380483],[-0.037283257],[-0.037284937]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.3650206],[0.3503434],[0.049026404],[0.48147553],[-0.2179137],[-1.1410009],[0.35613173]],"dense_1_W":[[-0.0044370415,-0.088976935,0.09736069,0.13261136,-0.5935368,0.10521503,-0.8068187,-0.09207722,-0.15163152,-0.2225436,-0.56512666,0.64190215,0.6911761,-0.20394018,0.26521412,0.14738402,0.2390292,0.669949],[1.9099827,-0.20041782,0.06653255,0.04290131,1.081289,-0.07771372,0.5794198,0.055194955,0.3341548,0.12740795,0.00016614748,-0.01401175,-0.253479,0.3490117,-0.38425395,0.33906642,0.35481378,-0.3718989],[0.05287488,0.7134841,4.096453,-0.08065371,0.21688524,0.47354707,-0.46061245,0.13619322,0.7494003,-1.0308193,-0.90699166,-0.027265368,-0.0905294,0.0786151,-0.066612154,-0.21861951,0.6264546,-0.2477698],[0.49850515,-0.52765816,-0.02077531,-0.22489151,-0.06462903,-0.47247145,0.5355608,0.028485456,-0.11019967,0.13962062,-0.107459456,0.038771443,-0.23801842,0.5196211,0.15457287,-0.32410073,-0.018090906,0.15865909],[0.046214443,-0.64695966,-0.0069883303,0.25497442,0.20284595,-0.9400158,0.75683576,-0.27035123,-0.1531759,-0.27745956,0.27680025,-0.41793835,0.021180544,-0.06378223,0.15259326,0.23614758,0.19549917,-0.32855147],[-0.4081381,-0.5767889,-0.02048695,0.4837626,0.07757592,-0.59393334,0.50364584,-0.10654109,0.20280221,0.018726189,-0.1135464,-0.4784118,-0.17838266,0.2907484,0.2355112,-0.19352722,-0.16305554,0.076068975],[1.9215813,0.28210905,-0.07538363,0.33930507,-0.7474612,0.30265597,-1.1443635,-0.11762971,-0.41968435,-0.16676956,0.13010335,0.02262152,0.14194168,-0.5343928,-0.14601786,0.24347968,-0.24895756,0.15329723]],"activation":"σ"},{"dense_2_W":[[-0.97410744,0.3293568,-0.51517206,-0.3463321,-1.3647133,-0.86492306,0.36742914],[-0.38897687,0.48228312,0.33890837,0.44431418,1.3277258,0.16005625,-0.45875192],[0.02537137,-1.8192227,-2.2544084,-0.079543754,0.45377818,1.312974,-1.4039407],[0.19882208,-0.9093105,0.20501111,-0.87385803,-0.422892,-1.2277902,0.26516685],[-0.5868707,-0.1976348,-0.052873705,0.8127852,1.433916,0.6659879,-0.36126196],[-0.34342724,-0.59553665,0.40787566,-0.7651616,-0.49521706,-0.50139594,-0.44844094],[0.0324562,-0.030006122,-0.81495327,-0.08844059,-0.73199207,-0.9749751,0.193641],[-0.50183594,-0.53056437,-0.015531296,0.18623666,-0.09462893,-0.7861786,0.3987878],[0.38298038,0.19052242,0.19199069,0.044229858,-1.4711231,-1.2591913,0.59195024],[0.43198085,0.019489845,-0.22293438,0.16365366,0.32915708,0.86797434,-0.5055899],[-0.8588905,0.09965971,-0.15875271,-0.10829414,-0.3715543,-0.28131244,0.4689924],[0.4073162,-0.31107745,0.34453806,-1.0047082,-1.3331152,-0.3225261,-0.28392723],[-0.24590243,-0.5074513,0.45170495,-1.0937929,-0.29165098,-0.9534984,-0.44262615]],"activation":"σ","dense_2_b":[[-0.20421302],[-0.071595274],[-0.49483255],[0.08749108],[-0.27975222],[-0.030872881],[-0.04815583],[0.030535745],[0.12027835],[-0.10508093],[-0.19207817],[0.09736322],[0.057723336]]},{"dense_3_W":[[0.23816557,0.46098536,-0.6313008,0.7918219,-0.5916585,0.48531923,-0.27558136,-0.31984928,0.4619099,0.14357577,0.11340685,0.10802043,0.23884438],[0.3486614,-0.639459,-0.26902324,0.48187697,-0.6724132,0.48073167,0.26574108,0.25904334,0.53890723,-0.5283542,0.16785589,0.6735239,0.8907758],[-0.34013325,0.23225747,-0.83007133,0.5564732,-0.3356769,0.4536341,0.2693847,0.08861304,0.22285238,0.06831062,0.16584419,0.2606426,0.047501706]],"activation":"identity","dense_3_b":[[-0.010792147],[0.008722057],[-0.2345991]]},{"dense_4_W":[[0.14804278,1.4997839,0.04654937]],"dense_4_b":[[0.0038731655]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571G60533A1'.json b/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571G60533A1'.json deleted file mode 100755 index e409b82438..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571G60533A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.9746957],[0.74846905],[0.3776189],[0.03050829],[0.73187035],[0.7361276],[0.7414741],[0.73505235],[0.7348843],[0.72738355],[0.71373457],[0.03035072],[0.030408371],[0.030481495],[0.03054445],[0.030590964],[0.030465184],[0.030331135]],"model_test_loss":0.010437331162393093,"input_size":18,"current_date_and_time":"2023-08-05_04-35-32","input_mean":[[21.84806],[0.037775595],[-0.00015706694],[-0.021587897],[0.040338658],[0.039734323],[0.039004818],[0.040646035],[0.039115567],[0.03719198],[0.038230542],[-0.021592842],[-0.021576356],[-0.021578403],[-0.021549474],[-0.021593899],[-0.021818507],[-0.022061665]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0914413],[0.0015551149],[0.22065881],[-0.1891756],[-0.0135917235],[-0.038417384],[-0.022252519]],"dense_1_W":[[0.011237223,0.097167924,0.01444804,0.2124649,1.3246,0.31190768,0.7195392,0.8302937,0.22576901,0.45450732,-0.10925574,0.03514202,0.5961049,0.3985722,0.61802393,0.080905825,0.32926518,-0.25256667],[-0.02162882,2.0190244,5.799918,-0.14539114,-1.9311626,0.66446453,-0.11302035,0.1226316,0.6734189,0.16489778,-1.2370133,0.56925017,-0.12738787,-0.374375,-0.18332094,0.38210422,-0.45544025,0.283806],[-0.005536447,0.6118752,0.005302229,-0.35660002,-1.1228982,1.576737,-0.6586397,-0.06552918,0.1747147,0.03373086,-0.1062423,0.7913594,0.33732173,-0.76828235,-0.055734146,-0.2576106,-0.09492317,0.33747092],[0.011188102,-1.2844069,-0.0012297877,0.07251332,-0.095956035,-1.1642455,-0.28017807,-0.014453496,0.04811712,-0.47494012,-0.488219,-0.11300311,-0.44098395,0.07885455,0.16945864,0.42555395,-0.1273186,-0.15138112],[-0.007230606,-0.44893888,0.0066998103,-0.16217937,0.25698268,-0.87970287,0.6202854,-0.15496038,0.051418323,-0.038406387,-0.06764698,0.17037104,-0.27248234,0.2816981,0.18553548,-0.33725816,0.08385291,0.045085847],[0.00084464176,-0.54823476,-0.0034105896,0.26671872,-0.015223509,-0.9550469,0.6014387,0.025267186,0.13067198,-0.43440172,0.20197645,-0.44261578,-0.16689432,-0.023613267,0.7486101,-0.19077903,-0.2137139,-0.02373193],[-0.030234346,-0.13823445,-2.021196,0.2427088,-0.07732753,-1.0305628,0.04975273,-0.1942112,-0.12176859,1.0165497,1.224236,-0.5657689,0.1795685,-0.1477603,0.30288523,-0.0046483153,0.2759976,-0.32901245]],"activation":"σ"},{"dense_2_W":[[0.083859816,0.933766,1.0253052,-0.7105447,-0.9955442,-0.8595731,-0.21401848],[0.25676674,-0.2483161,-0.51074135,-0.31487563,0.7560016,0.6237004,-0.36207017],[-0.45140705,-0.555112,-0.32009697,0.2014101,-0.14508359,-0.7487613,-0.5627604],[-0.052259363,-0.27644405,-0.56982166,-0.22415726,-0.08912631,-0.3108934,-0.07020982],[-0.30388612,-0.282844,0.6231819,-0.1827591,-0.8701069,-0.1363012,-0.06061468],[0.42716765,0.14838749,-0.77454436,-0.08531688,0.5431199,-0.33343503,0.47535864],[-0.29570216,0.054118063,0.8065188,-0.5626743,-0.58843243,-0.2626986,-0.13115627],[-0.16683827,0.01042097,-0.6624693,-0.16589774,-0.064373836,0.67642355,0.30223835],[-0.3474019,0.1442944,-0.24758828,-0.12841912,0.015519108,-0.8910641,0.26689053],[0.015551913,0.25193524,-0.28172082,-0.35587707,0.7043338,0.18275745,0.33005205],[0.1932851,0.3542477,0.49002793,-0.33909148,0.05432396,-0.86836,0.086581126],[0.35653573,0.041390643,-0.34532556,0.07281016,0.62669814,-0.24314882,0.41167533],[-0.19783325,0.031141564,-0.33750173,0.097428255,-0.43643403,0.22732346,0.46779665]],"activation":"σ","dense_2_b":[[0.3251711],[0.03284726],[-0.2276918],[-0.27249786],[0.07225366],[-0.064165816],[-0.052187826],[-0.040996723],[-0.27600503],[-0.027009819],[-0.094922386],[-0.079575196],[-0.04894184]]},{"dense_3_W":[[0.5707442,0.06543564,-0.41911805,-0.4872908,0.30000013,-0.5824054,0.31254762,0.37488416,-0.03498339,-0.31771377,0.49000293,-0.547452,-0.31576237],[-0.08784592,0.36186367,-0.35686487,-0.21170178,-0.28615108,0.6641257,0.09387274,0.36688283,-0.31936723,-0.52464163,-0.24194345,0.13221104,-0.044297554],[0.6223347,-0.6184397,0.5959415,0.56463706,0.57754964,0.3649079,-0.118873656,-0.58997124,-0.048462644,-0.46443146,0.43778852,0.10792423,0.27066556]],"activation":"identity","dense_3_b":[[-0.033067573],[0.030761039],[-0.045770094]]},{"dense_4_W":[[1.1994555,-0.36797908,0.91548634]],"dense_4_b":[[-0.03687687]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN.json b/selfdrive/car/torque_data/lat_models/AUDI_A3_MK3.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN.json rename to selfdrive/car/torque_data/lat_models/AUDI_A3_MK3.json diff --git a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN.json b/selfdrive/car/torque_data/lat_models/AUDI_Q3_MK2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN.json rename to selfdrive/car/torque_data/lat_models/AUDI_Q3_MK2.json diff --git a/selfdrive/car/torque_data/lat_models/BUICK LACROSSE 2017.json b/selfdrive/car/torque_data/lat_models/BUICK_LACROSSE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/BUICK LACROSSE 2017.json rename to selfdrive/car/torque_data/lat_models/BUICK_LACROSSE.json diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EV NO ACC.json b/selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EV NO ACC.json deleted file mode 100755 index 0558edf3a8..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EV NO ACC.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8204904],[1.1288383],[1.3588161],[0.03592331],[1.0998698],[1.1152987],[1.1261423],[1.0726436],[1.0445082],[1.0255826],[0.9991902],[0.035928443],[0.03594955],[0.035947755],[0.035830557],[0.035794962],[0.035545427],[0.03522763]],"model_test_loss":0.013521275483071804,"input_size":18,"current_date_and_time":"2023-08-31_20-20-29","input_mean":[[21.15819],[-0.07168204],[-0.011260089],[-0.009422209],[-0.05070435],[-0.059720647],[-0.06839208],[-0.058936212],[-0.056256358],[-0.04905059],[-0.043772068],[-0.009612985],[-0.0095514655],[-0.009495763],[-0.009358192],[-0.009470251],[-0.009541206],[-0.009760213]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.14674146],[-0.13742483],[-0.22120655],[-4.8659616],[0.37734386],[0.0043874597],[0.0011968147]],"dense_1_W":[[-0.008038606,0.36823353,0.13374972,-0.121557444,0.8109894,0.1619341,-0.27322704,-0.5143952,-0.13323402,-0.28316674,0.41146618,0.069739744,-0.05502182,-0.16582587,-0.03316632,0.15212743,0.63178277,-0.47640973],[0.00472655,5.34618,2.1071396,-0.27966323,-3.491801,-4.7198477,-0.9055106,3.4698536,0.36450383,0.52648926,-0.9086405,0.34823787,0.17502202,0.17913261,0.5389167,-0.95546067,-1.1175836,1.1106054],[-0.0044299415,0.17029423,-0.07841701,-0.13078262,-2.5494642,-1.063504,-0.3024431,1.9482937,3.7423036,1.9179893,-2.4140003,-0.19327636,-0.11139729,0.8710235,0.80850005,-0.5346497,0.122894056,-0.8393351],[-3.4416573,0.2720535,-0.036259558,-0.13027346,0.13627039,-0.30027944,0.2926907,-0.53764284,-0.08440139,-0.01651856,0.15396604,0.15355577,-0.04698026,-0.14798953,0.14998728,-0.3586781,0.75842935,-0.37555856],[-0.29392308,-4.2560554,0.054719303,0.40846434,-2.129364,-3.1015625,-3.853146,-3.1836767,-2.180161,-2.0388255,-2.4251742,0.03920686,-0.38703024,0.41823363,-0.019605622,-0.5604943,0.22793195,0.0057709315],[-0.002196624,5.8481355,-0.09095744,-0.015489594,-2.612487,-1.536748,0.06610644,2.500532,0.4939543,-0.63674825,-0.8083325,-0.26766282,-0.16603528,0.10459684,-0.6615658,-0.78105426,-0.5034555,0.9925575],[-0.013433307,-0.20619735,-0.15958488,-0.25665176,1.9273874,1.1793138,-0.34153762,0.061601996,-0.73064274,0.42999524,0.5411453,0.031738162,-0.11005042,-0.7472006,-0.14436004,0.4244081,-0.2877388,0.18756717]],"activation":"σ"},{"dense_2_W":[[-0.67943275,-0.24000154,-0.13848315,0.30882534,-0.01988677,0.0654716,-0.14717165],[-0.55921,-0.0072287056,-0.21438314,0.13855484,-0.18693337,0.091503285,-0.6234959],[0.29719043,0.34836015,0.31882486,2.2765832,-2.8485565,-0.13084944,0.18394771],[0.09499309,0.20721479,-0.22826056,-0.5555067,0.4858052,-0.297806,-0.7479107],[0.7698728,-0.12123032,-0.32042873,0.64103067,0.29181543,0.35124788,0.3626909],[-0.7722087,-0.0970277,-0.66611034,0.8990095,0.008845325,-0.2853908,0.096749336],[-0.056676403,0.10399554,0.07880596,0.15535226,-0.29964685,0.20662634,0.747629],[-0.45565298,-0.61348987,-0.3170684,0.66529834,0.20692064,0.1784706,-0.52314126],[0.07283485,-0.041357554,-0.5544705,0.029298512,-0.07259363,0.12714466,-0.4060869],[-0.6921391,-0.28740877,0.16838852,0.34705403,0.5441259,-0.56957257,-0.23424709],[0.5224591,0.08929995,-0.3917331,0.77703923,1.2387965,0.4035521,0.038004678],[-0.21601413,-0.27209452,-0.006628554,0.26490286,-0.48555186,-0.14057891,-0.23594409],[0.025565607,-0.1843107,-0.74081415,0.21653186,-0.20180094,-0.1775718,0.2597312]],"activation":"σ","dense_2_b":[[-0.11495718],[0.029644735],[-1.5003729],[0.0062865904],[0.063854754],[0.043472946],[-0.03168991],[-0.05123685],[-0.21858792],[0.11300286],[-0.04152576],[-0.09974841],[-0.10666013]]},{"dense_3_W":[[-0.46642318,0.29889506,0.0647746,0.031128142,-0.5190028,-0.2265485,-0.12124089,0.15220042,0.1487402,0.09831015,0.57098764,-0.353228,0.45436162],[0.24007116,0.43487012,-0.43202627,0.39710402,-0.47436452,0.5207094,-0.44189987,0.55030584,-0.002478384,0.49253044,-0.40208483,0.25778514,0.05400483],[0.40668672,-0.80624264,0.49121335,0.28858688,0.4708336,-1.031162,-0.12058632,-0.4919157,-0.0032738608,-1.1038178,0.59533536,0.42121547,-0.42830208]],"activation":"identity","dense_3_b":[[-0.09258446],[-0.10893599],[0.048807696]]},{"dense_4_W":[[0.013993477,-1.1382563,0.45117924]],"dense_4_b":[[0.10757936]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET EQUINOX NO ACC.json b/selfdrive/car/torque_data/lat_models/CHEVROLET EQUINOX NO ACC.json deleted file mode 100755 index 00a68d269b..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHEVROLET EQUINOX NO ACC.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.534294],[1.5504998],[1.4046903],[0.029573984],[1.5927145],[1.578906],[1.564156],[1.5118331],[1.493684],[1.4678634],[1.4253669],[0.02943281],[0.029483505],[0.029535847],[0.02967169],[0.029826282],[0.03000203],[0.030046586]],"model_test_loss":0.02003631368279457,"input_size":18,"current_date_and_time":"2023-08-31_20-50-28","input_mean":[[20.131113],[0.009686473],[0.06975938],[0.0023475066],[0.0038891183],[0.0060874033],[0.008401226],[0.013517541],[0.01840766],[0.0266773],[0.02453028],[0.0023093733],[0.002328295],[0.0023440488],[0.0024961669],[0.0025724813],[0.0024677413],[0.0023574075]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.0288644],[0.10457083],[-3.9555483],[0.1691402],[-0.012094571],[-0.0782635],[-0.2598278]],"dense_1_W":[[-2.1827135,1.6132607,-0.9255983,0.116717376,-1.8178183,-0.54029983,0.33489665,0.56080383,-0.22747517,-0.5733255,0.5044412,-0.2292483,0.043896638,0.08075467,-0.28934216,0.17338042,0.0033520209,0.10574474],[-0.03214852,1.3043286,1.787647,-0.19292493,-1.496456,-1.6432034,-1.0122085,0.6772478,0.9241051,2.137595,1.1481318,0.7382223,0.24003813,-0.26050806,-0.28489965,-0.055436503,-1.5187881,0.5395662],[-2.130688,-2.4082897,0.8946516,1.182773,1.0356439,1.0627962,0.681919,-1.07377,0.9514841,0.2902732,-0.51102746,-1.0186149,0.06007755,0.55835754,-0.8702267,-0.27547133,1.1577551,-0.79220283],[0.048019372,0.56005365,0.090563335,0.04659274,-0.3400944,0.08129445,0.079794005,1.6712024,0.37665895,0.92944545,-0.818461,1.0755452,0.03035464,-0.7417196,0.46747556,-1.7863483,0.1933551,0.6655417],[0.010540867,-2.1044421,0.123707764,0.19983652,-0.3400125,0.042333197,-0.14189881,-0.15991694,1.1688339,0.89001805,-1.0717757,-0.12767468,-0.23459645,0.55075175,0.08273279,-1.410371,-0.11742753,1.0628744],[-0.0035597957,3.3175247,-0.08206834,-0.41877395,-2.3628318,-0.3887815,0.33513132,1.0517763,1.3315583,-0.45716277,-0.83998686,0.038495045,-0.29630885,-0.5393306,0.004715303,-0.3557685,-0.0024815162,0.5117863],[-0.06787126,-1.0245934,0.846602,0.76652443,-3.6147707,-3.2961829,-3.046585,-2.334436,-2.2018268,-2.0479157,-2.1753612,-0.3235234,0.3021576,0.6696055,-0.5296955,-0.34782553,-0.6869261,0.61321783]],"activation":"σ"},{"dense_2_W":[[0.64928615,0.2816972,-0.8923362,0.39578387,-0.61536825,0.81299543,0.32944572],[-3.469548,-0.088318504,4.506985,1.7126206,-0.54613674,1.1776173,-1.3406864],[-0.16514356,-0.18710926,-0.049463313,-0.74177825,-0.89867437,-0.12767266,-0.41532612],[0.3880128,0.14577644,-0.22068585,0.47859693,-0.3810993,0.21953157,-0.28429258],[0.09226449,-0.31862667,-0.7718878,-0.3926271,0.39786428,0.24407528,0.50177044],[0.67237484,0.12668592,-0.30338138,-0.625696,0.26677904,-0.40067798,-0.32989067],[0.55108297,-0.46753818,-0.2422762,-0.32914385,1.0277789,-0.21390574,-0.51578075],[-0.6387295,0.087801814,0.4115124,0.19489816,-0.50232434,0.88593876,0.04993241],[-0.0012766474,-0.39255276,-0.43439093,0.5811583,0.04147405,0.39352056,-0.2983913],[0.5312808,-0.46965963,-0.2202195,0.022353612,0.9100419,-0.7610306,-0.045171853],[-0.4153422,0.25298238,-0.16235219,0.6847717,-0.24125478,0.12481583,0.17123348],[0.019955412,-0.049374487,-0.028301261,-0.1474805,-0.99081236,0.46832514,0.04314314],[-0.060847353,-0.4487362,0.11238633,-0.2315336,0.61632276,-0.037449174,-0.31603873]],"activation":"σ","dense_2_b":[[-0.0784909],[-0.78942764],[-0.15396598],[-0.0694357],[0.42111325],[0.13395377],[0.13471761],[-0.2390017],[-0.10127865],[0.021352982],[-0.10597191],[-0.0495153],[0.08049109]]},{"dense_3_W":[[-0.5803282,-0.4269681,-0.29210615,-0.35849357,0.6151693,0.4374335,0.33656615,-0.38959798,-0.124871194,0.80708337,-0.2547417,-0.4598867,0.28997138],[-0.024669895,1.1817242,-0.08351745,-0.24313891,-0.31439584,-0.25903952,-0.07882097,0.5553487,-0.3152985,-0.31680647,-0.116309114,0.010063961,0.2913986],[-0.43385702,-0.37067002,0.0936241,0.23112701,0.11643858,-0.15334345,-0.003450505,0.18969658,0.37703827,-0.25617403,0.11559996,-0.19988349,0.1828592]],"activation":"identity","dense_3_b":[[0.098078996],[0.0034752209],[0.008636777]]},{"dense_4_W":[[-0.73048496,0.39407238,-0.07285802]],"dense_4_b":[[-0.09288416]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET SUBURBAN PREMIER 2019.json b/selfdrive/car/torque_data/lat_models/CHEVROLET SUBURBAN PREMIER 2019.json deleted file mode 100755 index 1383fdf7f9..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHEVROLET SUBURBAN PREMIER 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.0000353],[0.91031396],[1.269469],[0.0315604],[0.9563133],[0.95031977],[0.9356424],[0.873496],[0.8912867],[0.8935701],[0.96191794],[0.031832103],[0.031727515],[0.031619374],[0.03170114],[0.03179356],[0.031944003],[0.03203715]],"model_test_loss":0.025683574378490448,"input_size":18,"current_date_and_time":"2023-08-31_22-32-43","input_mean":[[27.019146],[0.2162388],[-0.102987334],[-0.016973253],[0.2426502],[0.23661843],[0.22663806],[0.18541981],[0.17368032],[0.14804864],[0.09238692],[-0.017235657],[-0.017166195],[-0.017074104],[-0.016875083],[-0.016880676],[-0.017125089],[-0.017351476]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.23588695],[-0.5088953],[1.5173167],[0.21325926],[0.7270255],[1.0430372],[-2.1749456]],"dense_1_W":[[-0.00035987928,1.4975938,2.03412,-0.83676016,-5.5800395,-1.7383903,-0.18633558,6.249567,0.15692733,1.1870492,-1.8389847,0.8397649,0.41889027,0.19991927,-0.71028113,-0.42742363,-0.01929488,0.56470984],[0.1451778,-0.42022082,-0.08357744,0.37352008,0.13762045,-0.513736,0.19210075,-0.99654514,0.07671047,0.3092085,-0.09438795,-0.7692168,-0.05790273,-0.019019479,0.68036485,-0.3681197,0.042775016,0.113177255],[0.17934947,0.6802453,0.53991216,1.2953564,0.36064458,-2.232729,-1.3662916,9.39327,3.2034888,0.82174385,-3.8604288,-0.059266165,0.23885792,1.2206435,-0.037034295,-1.0659415,-1.2380418,-0.38709572],[-0.63551307,0.14085051,-0.058989003,-0.096907504,-0.08637354,-0.9568107,-0.203569,0.09172185,-1.7067626,0.23453063,0.40079904,-0.33019188,-0.14800894,0.4674501,-0.058009204,-0.3754687,-0.10436635,0.64636946],[0.33742648,-0.36501276,-0.034292817,-0.51860994,-1.3856511,-1.5455489,-1.0439808,-0.75624853,-1.0810176,-0.5734188,0.55518353,-0.80131483,-0.6185672,-0.28676248,-0.104135,-0.62493587,-0.8962451,-1.5516719],[0.43760708,-1.6991494,-0.03338309,-0.96213526,0.00956474,-1.2663416,-1.9227605,-3.5994406,0.26717234,1.618855,-0.69799376,-0.3365453,0.08994935,0.16855639,-2.0510433,-1.3217996,-1.0182589,-0.993361],[0.38308197,-1.8382412,-0.15014274,0.11305897,1.90282,-0.91276294,-1.8583714,-2.2861354,-1.0779126,-2.9923978,-2.1958616,-0.40794706,-0.3506177,0.21085607,0.39614698,0.46702477,-0.1904523,-0.28659886]],"activation":"σ"},{"dense_2_W":[[-0.13722074,0.17729984,-0.24335465,0.24187207,-0.14201832,-0.07732416,0.13892417],[-0.4686111,0.30702016,-0.15520222,0.2413592,-0.06519562,-0.02441734,0.05019473],[0.79214656,-0.7921441,-0.6606072,0.055532016,-0.11311045,-0.08024592,-0.0085274875],[-0.25042439,0.21615438,0.4954985,0.0046605244,-0.4504836,-0.13616334,-0.39802498],[0.49501747,-0.8520829,-0.74666256,0.59406155,-0.3424727,-0.42375195,-0.056689456],[0.09918636,-0.27861944,-0.06896329,0.07916021,0.39362162,-0.3197992,-0.38495535],[-0.44832206,0.775501,-1.5508496,-1.2964923,0.2656348,0.73607206,0.102380335],[-0.12338452,0.45182562,0.15285002,0.36166486,0.106165096,-0.44855922,0.26180896],[1.468655,-2.9420528,1.1340134,-1.8203074,-1.8435699,1.8503501,-0.6241417],[0.11571435,0.44641992,0.5466342,0.460799,0.34136263,0.118771955,0.03079372],[-0.89526504,0.4808293,-0.020656256,0.23367782,0.24296117,0.14677529,-0.17654741],[0.48179916,-0.9906037,-0.5923862,-0.4594782,-0.35988396,0.8058588,-0.045400906],[0.5093772,0.44455037,0.17609815,-0.81010824,-0.7701845,-0.67883664,-0.105422966]],"activation":"σ","dense_2_b":[[-0.016313186],[-0.23423415],[-0.11555125],[0.031153541],[-0.008395348],[-0.05427732],[0.04926095],[-0.03232725],[1.3587319],[0.039414253],[-0.2525624],[0.069728516],[-0.1901692]]},{"dense_3_W":[[-0.40749985,-0.48021835,0.56590366,0.18960631,0.38889936,-0.016490487,0.2452584,-0.49623072,0.38123888,-0.64162004,-0.4950841,-0.28877184,0.033746734],[-0.42167312,0.4292303,-0.117614456,-0.051768117,0.051334534,0.5342065,0.5592815,-0.093919486,0.65363497,-0.43596736,0.16242468,0.2578982,-0.2107315],[0.3909801,0.0338481,0.17298904,-0.6669294,0.66819596,0.5040033,-0.11421765,0.24396016,0.58365494,-0.4551556,0.13173825,0.29966846,-0.28813577]],"activation":"identity","dense_3_b":[[-0.039529935],[-0.049995966],[-0.054298006]]},{"dense_4_W":[[0.5930795,0.46760607,0.73884505]],"dense_4_b":[[-0.046037514]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EUV 2022.json b/selfdrive/car/torque_data/lat_models/CHEVROLET_BOLT_EUV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EUV 2022.json rename to selfdrive/car/torque_data/lat_models/CHEVROLET_BOLT_EUV.json diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET SILVERADO 1500 2020.json b/selfdrive/car/torque_data/lat_models/CHEVROLET_SILVERADO.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHEVROLET SILVERADO 1500 2020.json rename to selfdrive/car/torque_data/lat_models/CHEVROLET_SILVERADO.json diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET TRAILBLAZER 2021.json b/selfdrive/car/torque_data/lat_models/CHEVROLET_TRAILBLAZER.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHEVROLET TRAILBLAZER 2021.json rename to selfdrive/car/torque_data/lat_models/CHEVROLET_TRAILBLAZER.json diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET VOLT PREMIER 2017.json b/selfdrive/car/torque_data/lat_models/CHEVROLET_VOLT.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHEVROLET VOLT PREMIER 2017.json rename to selfdrive/car/torque_data/lat_models/CHEVROLET_VOLT.json diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68288891AE'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68288891AE'.json deleted file mode 100755 index a3d545654f..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68288891AE'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.373018],[0.9030777],[0.5074704],[0.04613504],[0.88142586],[0.8866381],[0.89388347],[0.8932321],[0.8819763],[0.8731947],[0.8590319],[0.045989916],[0.0460441],[0.0460619],[0.045975763],[0.045940377],[0.045967344],[0.045802947]],"model_test_loss":0.015751762315630913,"input_size":18,"current_date_and_time":"2023-08-05_06-59-32","input_mean":[[24.77125],[-0.0032338882],[0.0011955422],[-0.006900902],[-0.0038386101],[-0.0039004202],[-0.0042313747],[-0.0024037024],[-0.00096440193],[0.0012867558],[0.0017196954],[-0.0071007432],[-0.00707776],[-0.00704705],[-0.006997249],[-0.0070410697],[-0.007170475],[-0.0072323773]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.6144774],[-0.611369],[0.06358977],[0.3156127],[0.8767984],[3.4156723],[0.003413344]],"dense_1_W":[[-1.6343578,-1.049992,-0.0069447346,-0.07656319,0.9073908,-0.4678912,0.71257806,0.1714419,-0.26281458,-0.35347363,-0.3895179,0.44868368,0.380276,-0.39410144,-0.2020346,-0.5423825,0.033040486,0.34113047],[0.061624493,-0.82921517,-0.01718619,0.5021635,0.38075656,-0.9557198,1.0850599,-0.040632535,-0.06843774,-0.057645954,0.08296408,-0.80168,-0.18512976,0.29119503,0.110343546,0.41180205,0.12086572,-0.41889068],[-0.010757727,0.5473467,0.011401861,0.6086944,0.049230263,0.99673975,-1.3204706,0.28527504,0.3079167,-0.08217005,-0.11085929,-0.020257747,-0.23550712,0.24950017,-0.5063016,-0.26893258,0.0859618,0.10826616],[0.00026013076,0.23115467,-0.069196984,-0.75177777,0.22679992,1.7333206,0.07338034,0.116831884,0.0074134893,-0.018370198,0.30970082,-0.50682133,-0.19027503,-0.6724099,-0.18199274,0.13397577,0.164965,-0.20918545],[-0.20541261,-0.5444166,-0.021420065,-0.3442164,0.057785954,-0.30310464,0.30055538,-0.1295605,-0.19352978,0.24066639,-0.042200003,-0.36956027,-0.02677732,0.31982243,0.6093545,-0.115526475,0.1776776,-0.22874752],[1.5681508,-0.8700428,-0.003696639,0.28922054,0.5389638,-0.2202644,0.91082454,0.17935306,-0.5075993,-0.52194244,-0.18601756,0.29824322,0.11232214,-0.089093655,-0.6800216,-0.10418546,-0.23698366,0.39502653],[0.0059208865,1.0288696,6.2661505,-0.66229445,-1.1125858,-0.38614404,-0.32643217,0.47949737,1.3503966,0.5618509,-1.4472144,0.6179492,0.65568125,-0.07885619,0.13408393,-0.21204486,-0.24597093,-0.19171685]],"activation":"σ"},{"dense_2_W":[[-0.6874904,1.4170951,-0.12745337,-0.60079765,1.2469791,1.1586337,-0.78649855],[1.2081319,0.90333015,-1.1146795,-0.48159444,-0.3649141,-0.17463505,-0.6678926],[-0.55214715,-0.34822515,0.66485703,0.39923072,-0.12463221,0.08416195,0.28940073],[-0.050559178,-0.5941852,0.69570416,0.4125025,-0.4354757,-0.7011088,-0.16208832],[1.1914842,0.6823764,-1.2257708,-0.15821911,0.2223274,-0.7032655,-0.848314],[1.6538767,1.1209396,-1.2886561,-0.4070121,-0.115177,-0.8090923,-0.81735224],[0.22016695,-0.7717329,-0.11587681,0.21162826,-0.92120653,-0.97903466,0.43579248],[0.56604755,0.37791598,-0.20845827,0.09919322,-0.30082363,-0.038313784,0.5362454],[-0.68821806,-0.49654222,0.9537832,0.65139836,-0.11693425,0.14916053,-0.06942568],[0.046630222,-0.8000676,0.7262631,0.11821005,0.051495228,-0.85939616,0.057547066],[0.53842676,0.48920274,-1.0697515,-0.08906106,-0.111993946,0.0057545984,-0.07658284],[0.6831117,-1.0648286,0.68546003,0.0413394,-0.80540425,-1.5328187,0.56354785],[0.16279308,0.67666584,-0.6573683,-0.31834096,0.037058678,0.16600053,-0.30611348]],"activation":"σ","dense_2_b":[[0.18475154],[-0.5353296],[0.0045686276],[0.0644243],[-0.34292984],[-0.44532895],[-0.15199955],[-0.039516825],[-0.0066641783],[-0.121129245],[-0.30155125],[-0.13434392],[-0.20536488]]},{"dense_3_W":[[0.5609779,0.41182333,0.09668643,-0.11169122,0.65781176,-0.20218727,-0.20579323,-0.39217472,-0.1875857,0.07013257,-0.14129624,-0.8516521,-0.4181056],[0.17330131,0.5577742,-0.41269195,0.3908688,-0.28000897,-0.4038982,-0.7611636,-0.17782487,0.4776658,0.10774335,-0.63901216,0.07952478,0.30694935],[0.6155099,0.32474285,-0.5803224,-0.57116944,0.52884084,0.5404638,-0.44095984,0.5225624,-0.6491606,-0.3627888,0.35069153,-0.8106001,0.3223117]],"activation":"identity","dense_3_b":[[-0.08286718],[-0.068888254],[0.0319719]]},{"dense_4_W":[[-0.13953766,0.008684733,-0.9822762]],"dense_4_b":[[-0.035473026]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68378884AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68378884AA'.json deleted file mode 100755 index c7ee2877a3..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68378884AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.4114137],[0.8722323],[0.46932527],[0.044081252],[0.86028934],[0.8640826],[0.86798763],[0.8536187],[0.8410519],[0.82815075],[0.810109],[0.044043],[0.04407502],[0.04409199],[0.043937493],[0.043765776],[0.043546446],[0.04328152]],"model_test_loss":0.014643135480582714,"input_size":18,"current_date_and_time":"2023-08-05_07-24-40","input_mean":[[24.419659],[0.074539855],[-0.0017381747],[-0.008417752],[0.07829621],[0.077322125],[0.07638317],[0.07649018],[0.07914126],[0.07727339],[0.07422926],[-0.008268176],[-0.008305934],[-0.00833634],[-0.0085348915],[-0.008592072],[-0.008777455],[-0.008993609]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.6179284],[0.023280667],[-0.08620803],[0.06128514],[0.02275239],[-0.18200094],[1.8732487]],"dense_1_W":[[1.1412842,-0.65644145,-0.021648865,0.20894393,0.11492929,0.024267908,0.52723205,0.019462796,-0.47829676,-0.16443051,0.17201795,0.42243433,-0.36430183,0.22046827,0.32417053,-0.18519317,0.080741584,-0.16006538],[-0.005015809,-1.0202065,-5.871842,0.71349776,1.488136,0.45296022,0.71639055,-0.3002113,-2.253665,-0.42296624,1.242773,-0.7964674,-0.9905283,0.2496325,0.61510533,-0.15485354,0.21373129,0.04878167],[-0.010342299,-0.39523616,0.046641767,-0.24375893,-0.06735964,-1.2132907,0.37299547,0.3911464,-0.25198907,0.3312644,-0.34782395,-0.48724928,0.29790998,0.35056496,-0.0473569,-0.43243703,0.6975423,-0.29797408],[-0.00034046813,0.5919114,0.09751131,-0.5365073,-0.27980977,0.6561016,-1.3969619,0.7704919,0.22894996,0.1283786,-0.47947106,0.7656381,-0.072749116,-0.22385994,-0.35181323,-0.12690988,0.14871003,0.11680299],[-0.013497786,0.45467585,4.8478483e-5,-0.03120461,-0.101532854,1.0691814,-0.8467964,-0.021295521,-0.45961225,0.59129924,-0.089904785,0.008552424,0.18295166,0.22167599,-0.15085436,-0.24900465,-0.119021356,0.22574107],[-0.008662208,-0.63313335,0.018632747,0.3784552,0.43672615,-1.0928847,0.454874,0.19710287,-0.28992844,0.23891906,-0.09657884,-0.4631879,0.07360768,0.18814832,-0.12545085,0.2790517,0.08361877,-0.19971517],[1.1187938,0.60673416,0.01786017,-0.09599037,-0.13338761,0.18924287,-0.71290374,0.25608516,0.055396356,0.32042313,-0.14714265,0.16070165,-0.44769058,-0.3857691,0.32144114,-0.2591744,0.04301578,0.12334804]],"activation":"σ"},{"dense_2_W":[[-0.82576907,-0.44307485,-0.5584657,-0.26069835,0.025256865,-0.22589661,-0.30988473],[0.5059596,0.51916337,0.37335545,-0.78297406,-0.5575328,0.4401032,0.58699924],[0.11900411,0.11446233,0.19891147,-0.46948108,-0.9270995,0.35623828,-0.6453305],[0.19260314,0.21158606,-0.80488014,0.1861143,-0.40799478,0.14247413,-0.47271043],[-0.017787304,0.20611304,0.4156514,-0.61586165,-0.94270116,0.66989255,-0.67521656],[-0.31637055,0.20475076,0.49659994,-0.8381352,0.3070665,0.29303974,0.3692397],[-0.24042161,0.14646454,0.4807689,-0.38160017,-0.11857776,0.52430975,-0.6127423],[-0.65716666,-0.05448026,-0.08932297,0.44863978,0.6453178,-0.8167935,0.32415792],[-0.97310895,-0.9338679,-0.55535233,0.95583254,0.7763494,-1.2186505,-0.56390756],[-0.756582,0.030662287,-0.5920601,0.26177648,0.0058387904,-0.79189116,0.22250274],[-0.32252684,0.052682888,0.22795783,-0.22263758,0.1424579,-0.4165235,0.082806356],[-0.5069151,0.230296,-0.7718149,0.86378086,0.6413413,-0.7768083,0.09442894],[0.7895166,-1.1067913,-0.9261671,1.5575143,0.72259814,-0.71757495,1.2043413]],"activation":"σ","dense_2_b":[[-0.25221804],[0.009360817],[-0.21046683],[-0.30669668],[-0.19557822],[-0.051661972],[-0.010102212],[-0.07111588],[-0.024985338],[-0.20747323],[-0.070582196],[-0.024536485],[0.429603]]},{"dense_3_W":[[-0.05159049,0.4616699,0.31688318,-0.35587642,0.10358843,0.23453818,0.62690145,-0.17403877,-0.34668615,-0.2585309,0.042846948,-0.64290446,-0.66602695],[0.25770965,-0.6448781,-0.1178888,0.02731388,-0.62877536,-0.4874037,-0.16834061,0.3735322,0.6264744,0.23036048,0.57248384,0.0652369,0.033351496],[0.08815916,-0.34792545,-0.33370885,0.6393934,0.23722698,-0.3480035,0.47185498,-0.6307859,-0.080584675,0.27943882,0.40409383,-0.10291437,0.25641736]],"activation":"identity","dense_3_b":[[0.06215998],[-0.043686442],[0.044486612]]},{"dense_4_W":[[-1.0976462,0.4308298,-0.47021297]],"dense_4_b":[[-0.056185924]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68416742AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68416742AA'.json deleted file mode 100755 index 2614d74873..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68416742AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.639734],[0.85540456],[0.51403534],[0.0358391],[0.8370467],[0.8427152],[0.8486273],[0.84191525],[0.8333683],[0.81845397],[0.8031892],[0.03569495],[0.03575506],[0.035804357],[0.035734106],[0.035606634],[0.035394073],[0.035043836]],"model_test_loss":0.01249884907156229,"input_size":18,"current_date_and_time":"2023-08-05_08-42-51","input_mean":[[28.944149],[0.008511811],[0.006614594],[-0.0007803046],[0.008761563],[0.008401991],[0.0077602137],[0.010470908],[0.011851343],[0.013133246],[0.012414774],[-0.00091107877],[-0.00089483795],[-0.000888365],[-0.0009297467],[-0.00096828357],[-0.0011469029],[-0.0011704979]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.42215475],[-0.13067937],[-0.97678196],[0.032708973],[-0.21987508],[-0.13514404],[-0.035059012]],"dense_1_W":[[0.21781056,-0.33137965,-0.021430474,-0.025393143,0.41623712,-0.85452425,0.5125608,-0.028942296,-0.25001037,0.1056078,0.02808124,0.07531937,-0.1905481,0.16195467,0.12945747,0.20600978,-0.26016086,0.06601578],[0.45804447,0.39586294,0.016093273,-0.4889348,0.2889768,0.097107925,-0.4900717,0.08450028,0.12946251,0.029848771,-0.04884375,0.29394668,0.08218726,-0.18262681,0.046750773,0.006920203,0.25929216,-0.123556316],[-0.36142796,-0.4761168,-0.031057041,-0.03201091,0.3264201,-0.28861398,0.03595103,-0.03517199,0.12988408,-0.33035025,0.20245835,-0.050757732,-0.106270775,0.37782818,-0.1009953,-0.13087629,0.26906365,-0.10609762],[0.025104474,0.019358486,-0.024905588,0.21881673,-0.25832435,0.96893126,-0.7209163,0.41793713,-0.13289197,-0.12783904,0.13794017,0.21045911,0.050720435,-0.25170416,-0.62401164,-0.024670731,-0.29609823,0.35617065],[-0.008312407,-0.7407596,-7.084344,0.028729403,0.6807612,-0.014186225,0.67334884,0.29722595,-0.9668716,-0.531245,0.66484416,-1.1115197,-0.64549005,-0.120867796,-0.17233334,0.78614897,0.8250422,0.34976736],[-0.48205698,0.4224278,0.018553648,-0.2134916,0.04153917,0.7245894,-0.93251956,0.013013465,0.24247682,0.04031593,-0.08674914,0.14843619,0.25142464,-0.052657608,-0.067281075,-0.18016832,-0.3367292,0.36795783],[0.0060425145,-0.6726894,0.12755352,0.6079416,-0.19894339,-0.67753744,0.42177054,0.25688335,-0.6894623,-0.2502804,0.32992235,-0.27346176,-0.35465118,0.29624695,-0.12629414,-0.6665767,-0.173872,0.28384444]],"activation":"σ"},{"dense_2_W":[[-0.7923206,-0.009339641,-0.5352346,0.6091468,-0.04876316,0.39490545,-0.034111094],[-1.0249208,0.39700195,-0.58438927,0.16584569,0.17201081,0.5389196,-0.0868657],[-0.6531692,-0.007390197,0.17620674,-0.13442127,-0.58781165,0.47517285,-0.3037654],[0.93093103,-0.8664581,0.60659295,-0.41851223,-0.008249123,-0.3610143,-0.1658192],[0.18383585,-0.9612978,0.108306736,-1.0595605,0.6152441,-0.18968369,0.12764637],[-0.23412292,0.8866577,-0.36853278,0.41754025,-0.6953287,-0.2107403,0.3878631],[1.6182716,-1.1367084,1.2613131,-0.22455032,-1.5450573,-1.1383495,1.2916391],[-0.6907885,0.21876465,-0.37425384,0.28203624,-0.37134746,-0.060869645,-0.36596343],[0.32001236,-0.48894957,0.4011093,-0.63292897,0.14903933,-0.69945556,0.2776244],[0.7659646,-0.14666194,0.77608156,-0.29742083,0.26605186,0.016574113,-0.22834513],[-0.71138144,-0.062448937,0.30001172,-0.01717667,-1.2297869,0.69679105,0.046717945],[-0.7727106,0.2412452,-0.464044,0.80845594,-0.62951875,-0.08542672,0.07366458],[-0.025123067,-0.027039677,0.34798175,-0.7620366,0.43302727,-0.89325774,0.0035131366]],"activation":"σ","dense_2_b":[[-0.099672936],[-0.0876946],[-0.08204721],[-0.025810441],[-0.34068185],[0.060692374],[-0.024438279],[-0.07015547],[-0.039097134],[-0.14396088],[-0.15622896],[-0.005676818],[-0.011064758]]},{"dense_3_W":[[0.39419955,0.5720024,0.54087794,-0.73478484,-0.51288295,0.4327564,-0.5041765,0.3271926,-0.48603916,-0.5796963,0.72407377,0.71574676,-0.6588747],[-0.4544194,0.26937458,0.039873235,-0.34116194,0.16377093,-0.59205776,0.7291578,-0.12695956,0.7046899,0.10085361,0.14058925,-0.6534143,-0.31029704],[0.36182398,0.6130376,-0.03244722,-0.1537163,-0.62813044,0.25602,-0.7971318,0.06725275,-0.21288694,0.23565246,0.45994118,0.029152358,-0.028171498]],"activation":"identity","dense_3_b":[[-0.008158646],[0.024065692],[-0.046528816]]},{"dense_4_W":[[0.623884,-0.1895593,0.47617644]],"dense_4_b":[[-0.010568268]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68460393AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68460393AA'.json deleted file mode 100755 index d19a7be8cb..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68460393AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.4242563],[1.090038],[0.5387467],[0.045696616],[1.0706453],[1.0769838],[1.0826412],[1.0662853],[1.044258],[1.015598],[0.9955335],[0.045430943],[0.04546534],[0.04548917],[0.045445427],[0.045430474],[0.045357496],[0.045145508]],"model_test_loss":0.012552225962281227,"input_size":18,"current_date_and_time":"2023-08-05_09-07-51","input_mean":[[28.232662],[0.0413919],[8.108091e-5],[-0.00953157],[0.038943794],[0.03873717],[0.039187554],[0.038665015],[0.041457415],[0.042767525],[0.03904675],[-0.009741066],[-0.009699849],[-0.009670657],[-0.009643033],[-0.009600081],[-0.00964547],[-0.009827622]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.13912317],[-0.18454184],[-0.12308464],[-0.05414716],[0.22322485],[0.0986465],[0.046013463]],"dense_1_W":[[0.039979875,-0.45747104,0.01409263,0.1038344,-0.39685473,-0.33794326,0.87375444,-0.39493144,-0.022856656,0.16293114,-0.1021352,-0.16609733,-0.13024335,0.3786684,-0.14359765,0.29113892,0.29941785,-0.29400635],[0.052472137,-0.053698886,-5.422898,-0.21991543,0.313983,0.36116323,0.05229922,-0.48481512,-0.699478,-1.117739,-0.30874887,-0.38158453,-0.1338971,-0.44151375,-0.17320636,0.7264404,0.32501188,0.7165989],[-0.010304283,-0.98240876,-0.022742985,0.22672749,0.48251867,-0.9433817,0.9824343,0.13986214,-0.1942156,-0.30411872,0.28717113,-0.571053,0.24414678,0.07596924,0.18768153,0.14563765,-0.18377183,-0.043441784],[0.005285528,1.0535682,-0.017260179,-0.33124572,0.0039716414,0.74013585,-0.39428404,-0.272743,0.07434402,0.27876472,-0.08732285,0.96002966,-0.4802241,-0.25286382,0.28896594,0.02317922,0.14128046,-0.017183177],[0.28194147,0.18924262,-0.002696126,0.21734203,0.0018270598,0.7102033,-0.8090373,0.58956873,0.02791912,0.08000271,-0.14373638,0.92130774,-0.071700506,-0.61309874,-0.88973755,-0.11552046,-0.11336341,0.41735962],[0.31988075,-0.3792179,-0.0064482973,0.41482916,0.30242506,-0.8525714,0.587519,-0.21211164,-0.014709177,-0.25068194,0.2086841,-0.5114691,0.027261272,0.32500595,0.09924409,-0.19256444,0.16786371,-0.11739298],[0.0021515805,0.30027154,5.952735,0.5089647,-1.6394058,-1.0211537,-0.9829749,0.8358446,2.6611304,0.60455,-0.4308957,0.83339345,0.9026655,0.08858586,-0.7351174,-0.9489569,-0.40282488,-0.341631]],"activation":"σ"},{"dense_2_W":[[0.9260268,-0.8087541,0.7243133,-1.0124146,-0.4938717,0.81473345,0.11277119],[0.21146505,0.24969757,-0.018303309,0.021199943,-1.0386741,0.06976922,-0.5488614],[-0.3201507,0.091772825,-0.39746743,0.5359968,0.67508984,0.09967213,0.25258896],[-0.54746306,-0.0038191364,-0.20888582,0.43253246,-0.3283931,0.21827807,0.25115517],[-0.54352003,0.28153777,0.21302846,-0.8480698,-0.58262014,-0.61925584,-0.10825497],[0.3063305,0.2462994,0.23962738,-0.41100392,-0.53911793,0.321222,0.07766791],[0.10468989,-0.021128409,-0.6309457,0.36274424,0.28997198,0.0035589251,0.40533248],[-0.29012105,-0.5573741,0.27605262,0.3979421,-0.06551908,0.22975506,-0.36112309],[-0.64441514,-0.102396026,-0.47194633,-0.14262818,0.6258268,-0.06171014,0.020799521],[0.47843814,0.04975281,0.31482425,0.13627958,-0.5157222,0.59243554,-0.54984564],[0.5728869,0.45515713,-0.12804388,0.15026231,-0.317451,0.033666957,-0.3124569],[0.6588982,-0.52865326,0.89718544,-0.6003115,-0.33325368,0.73482186,-0.22547686],[-0.5273782,-0.087307595,-0.60608846,0.036910504,-0.22960147,-0.7512217,0.302108]],"activation":"σ","dense_2_b":[[-0.13479586],[-0.13513349],[0.0009373699],[-0.042181917],[-0.29355353],[-0.048629034],[-0.046268582],[-0.0064258813],[0.05825038],[-0.13651372],[-0.1501067],[-0.08589544],[0.048994377]]},{"dense_3_W":[[0.3654538,0.115187585,-0.439915,0.5377413,0.007418098,0.27751163,0.044657342,-0.17946307,-0.3654914,0.116421804,0.4164621,0.6509678,-0.427143],[-0.15930192,0.5932584,-0.62384886,-0.061347995,-0.07626731,0.02358485,-0.5655159,-0.30620593,0.20285667,0.5263857,0.33262604,-0.40084362,-0.63168716],[-0.39700428,-0.15882798,0.5767276,0.6016253,-0.090940565,0.20918909,-0.052728947,-0.0024816794,0.44058868,-0.63286716,-0.04175788,-0.5301039,0.33433867]],"activation":"identity","dense_3_b":[[-0.052033406],[-0.022464612],[0.028837651]]},{"dense_4_W":[[-0.79853165,-0.5028229,0.9493444]],"dense_4_b":[[0.032302264]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68524936AB'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68524936AB'.json deleted file mode 100755 index 3038daba51..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68524936AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[3.987233],[0.8537959],[0.3147956],[0.046582546],[0.84401494],[0.84688294],[0.84943753],[0.8459254],[0.8367666],[0.8265147],[0.81790316],[0.046407577],[0.046432234],[0.046448592],[0.046412252],[0.046326056],[0.046176534],[0.045897327]],"model_test_loss":0.015449066646397114,"input_size":18,"current_date_and_time":"2023-08-05_10-23-38","input_mean":[[25.967857],[0.06622085],[-0.0020416742],[0.015556498],[0.066534],[0.067036055],[0.06743562],[0.06573888],[0.06696677],[0.06556534],[0.06443423],[0.015573572],[0.015597905],[0.015617301],[0.015684133],[0.015687725],[0.01558393],[0.015239334]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0808946],[0.037367117],[-0.038749795],[0.9390711],[-0.32065046],[-1.1784762],[-0.88848305]],"dense_1_W":[[-0.00011032098,0.9780359,-0.0014145505,-0.4366488,-0.013176787,0.33611873,-0.29262367,-0.3578369,0.11645427,0.42088133,-0.2598451,0.6237576,-0.13795596,-0.09887536,-0.12733373,-0.08417586,0.4013575,-0.07988855],[-0.0009259077,-0.062645964,-0.0018059709,-0.12713021,-0.055080768,-0.22723031,-0.026899165,0.200585,-0.42516625,0.22538531,-0.08643315,-0.6855331,0.5384225,0.5383578,-0.28057948,0.35908887,0.18033692,-0.29071817],[0.00023606251,-0.2708152,-3.7008457,-0.18686758,0.7081413,0.5238141,0.29570386,-0.37760863,-0.7263605,-0.6313755,0.52763283,-0.7201515,-0.24693261,-0.0033690718,0.19305243,0.28949165,0.15849951,0.32188925],[-0.0030307523,0.9266019,-0.00071122346,0.2938597,-0.7209375,-0.25652483,-0.833887,-0.41061628,-0.6894746,-0.44843826,-0.023134246,0.7723488,-0.032426476,-0.21999909,1.0757654,0.2777427,0.4482543,0.7690393],[0.005163568,0.3910777,0.0008774753,-0.1327848,0.038467746,0.2735437,-0.44077805,0.32235864,0.39658654,0.20570071,-0.13710664,0.1422694,-0.52818966,-0.07204501,-0.05014466,0.01687801,-0.32406497,-0.30950892],[0.22730923,0.26141903,-0.000953725,-0.37078547,0.3688389,0.28006992,-0.35340187,0.032271273,-0.079801165,0.38975418,-0.13068317,0.51164424,-0.14360848,-0.15369992,0.077170156,-0.22220115,-0.43598184,0.27546084],[0.2213501,-0.15664451,0.00094546424,0.3464266,-0.53368324,-0.1391294,0.38088232,-0.02687833,-0.24897413,0.004964223,-0.012853597,-0.73865753,0.11176492,0.6087426,-0.2588389,0.3292955,0.21136026,-0.15702726]],"activation":"σ"},{"dense_2_W":[[0.8372817,-0.25008437,-0.12787572,0.2646305,0.31623498,0.13657083,-1.0080503],[0.046799798,0.00918828,0.40113875,0.2216699,-0.27304304,-0.38028294,0.39347392],[-0.23938853,-0.34641623,-0.62152797,-0.46418,-0.7241759,-0.5278883,0.25341335],[-0.09937506,0.8862087,-0.24579188,-0.27517456,-0.660784,-0.34946993,-0.0786754],[0.7788807,-0.035170402,-0.38853168,0.22640607,0.14605336,0.8359692,-0.7039278],[-0.16715685,0.30906233,0.4299202,-0.15657364,-0.75562745,-0.5894536,0.67901284],[0.011040685,0.72528595,-0.3475271,0.20744416,0.0671484,-0.801704,-0.032896496],[-0.10695809,0.57284784,0.13369241,0.09459562,-0.75450206,-0.65015566,0.64747673],[0.41928726,-1.2618666,-0.31203488,0.500999,0.60130423,-0.015696425,-0.93787414],[-0.3277222,0.70236963,0.41655436,-0.5232463,-0.6613873,-0.7214429,0.6023961],[0.5236259,-0.8083846,-0.4727932,0.5152158,0.49668074,0.51633376,-0.30741963],[-0.29883748,-0.70302063,-0.06388201,-0.46135828,0.15648502,0.5698643,-0.37563467],[0.8581469,-0.22009362,-0.6310318,0.2918128,-0.03789091,0.3939349,-0.40259096]],"activation":"σ","dense_2_b":[[-0.11143744],[-0.044303834],[-0.28920218],[0.07294065],[-0.20649768],[-0.017393855],[0.033349346],[-0.0056764074],[-0.25138023],[0.08198082],[-0.17676844],[-0.29986814],[-0.16457124]]},{"dense_3_W":[[-0.49123013,-0.094490446,-0.23686716,0.6143184,-0.5806659,-0.10567876,0.564474,0.3225216,-0.16980709,0.15226522,-0.5543669,-0.2539091,-0.2111866],[-0.67487806,0.6078758,0.5300193,0.3342076,-0.46282768,0.7419035,-0.11941694,0.1968823,-0.3510679,0.7736118,-0.1578716,0.12241213,-0.426154],[-0.028797744,-0.23915093,0.5088453,-0.23264304,0.015492338,-0.5100102,-0.40799907,-0.34939715,-0.29578912,-0.24078988,0.72473073,-0.1903113,-0.08354421]],"activation":"identity","dense_3_b":[[0.04028917],[0.022620372],[0.00910732]]},{"dense_4_W":[[-0.95017105,-0.7261867,0.14058225]],"dense_4_b":[[-0.029187044]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AC'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AC'.json deleted file mode 100755 index 479e2cb351..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AC'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6217413],[0.7114013],[0.42171296],[0.030692505],[0.70313025],[0.7054758],[0.7074203],[0.7039908],[0.70165694],[0.6984613],[0.69011045],[0.030523904],[0.030557213],[0.03057646],[0.030458547],[0.030253412],[0.029954236],[0.029606614]],"model_test_loss":0.014747933484613895,"input_size":18,"current_date_and_time":"2023-08-05_11-38-04","input_mean":[[28.228518],[0.08038404],[-0.0051411754],[-0.0056266068],[0.07707682],[0.07840141],[0.07956922],[0.07400305],[0.0744884],[0.072456144],[0.070939764],[-0.005806301],[-0.0057515134],[-0.0057001603],[-0.00563613],[-0.005653806],[-0.0057565314],[-0.0059536397]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20161064],[0.3708137],[-0.2759572],[-1.7354532],[-0.006582411],[-0.1967276],[-1.6732626]],"dense_1_W":[[-0.0022043844,-0.47374737,0.12160097,0.6890159,0.3377973,-1.5650418,0.3390089,-0.20914559,-0.29470372,0.56673414,-0.3568904,-0.3345458,-0.1208839,-0.0800197,0.28805646,-0.16699065,-0.24808967,0.006654419],[0.22055951,0.5663217,0.014226842,-0.33060122,-0.48807305,0.8183591,-0.4619248,-0.16517015,0.22057265,0.120730974,-0.15235895,0.21393985,0.4685399,-0.42490304,-0.18560103,0.05731757,-0.09875112,0.17101038],[-0.18863444,0.46009055,0.0143123325,-0.09180277,-0.15147366,0.57024676,-0.45547467,-0.067543074,-0.022116022,0.31504935,-0.16846871,-0.01573877,0.087595,0.038511798,-0.007259396,-0.22452337,-0.12686455,0.20235924],[2.2950037,-0.15815431,0.0035836962,-0.67872524,0.08919689,-0.5821427,0.21903394,-0.044731744,-0.04884043,0.08973389,-0.054229386,0.02415706,0.070902705,0.26732698,0.2716208,0.2851963,0.22980438,-0.22686587],[0.0044000545,-0.21573843,-0.07105931,0.26565573,0.38492048,-0.6680098,1.1778332,-0.87731117,-0.20947257,-0.06640749,0.37599987,-0.25529432,0.014358948,0.2096504,0.005265327,-0.15837903,-0.03779916,0.04513996],[0.007100553,1.2550566,7.1150217,-0.43107417,-0.036019012,-0.31804258,-1.1444212,0.16977336,0.6080755,-0.29834473,-0.24948287,0.9989788,0.054998364,0.1742214,-1.2599926,0.17053154,0.40663227,0.12926742],[2.3231199,0.16382016,-0.0039322176,0.6659583,0.38590056,0.4255518,-0.53491396,-0.038882855,0.059910268,-0.08183135,0.11287891,-0.23418863,0.033189584,-0.24378267,-0.18320867,-0.231686,-0.18503504,0.1318578]],"activation":"σ"},{"dense_2_W":[[0.29945847,-0.4116662,-0.6404434,0.4817164,0.4524414,-0.32461753,-0.28166708],[-1.3570027,0.5354018,0.13801058,-1.1377261,-1.2545471,0.47778574,-0.6778595],[-0.53093123,0.3986449,0.514258,-0.44630268,-0.34877014,-0.09241833,0.015654555],[-0.33301157,0.015162718,-0.57307935,0.51319146,0.76107,-0.32635444,0.0483822],[0.4356511,-0.56064665,-0.60171497,0.31180757,0.058051504,-0.12626185,-0.16386817],[-0.49370843,1.3684434,0.6723376,0.47739267,-0.3493264,0.4534191,1.194232],[-0.6864368,-0.55467093,-0.28965995,0.21849571,-0.2885239,-0.4037181,-0.2568297],[-0.027406203,0.4347179,0.52915186,-0.7199698,-0.98106146,0.1689552,0.6664304],[0.53957736,-0.43386227,-0.17693467,-1.3255388,-0.7924073,-0.93818575,-0.79954004],[0.4243802,-0.7055154,-0.8640908,0.6045224,0.35185826,0.29153374,-0.043798342],[-0.18059891,-0.5451181,-0.31403798,0.29197556,0.48968676,-0.36734742,-0.6153273],[-0.21743168,0.0968663,-0.7951512,0.22858825,0.056076594,0.352806,-0.43122748],[-0.5219958,0.7666835,0.78582376,0.04805443,-0.69653535,-0.1948839,0.47690478]],"activation":"σ","dense_2_b":[[0.14940926],[-0.26764292],[-0.065943636],[-0.012099177],[0.020878451],[-0.037716556],[-0.27098712],[-0.24203163],[-0.3071356],[-0.19974586],[0.091521814],[-0.030127151],[0.011759832]]},{"dense_3_W":[[0.2272818,-0.7090007,-0.44646376,0.5245258,-0.11126927,0.06856284,-0.55245084,-0.03672042,-0.2831085,-0.26106173,-0.15778822,0.6185201,-0.25463623],[-0.6678536,0.27332652,0.32911164,-0.46993744,-0.57457846,0.51333696,-0.51108074,0.419496,-0.4008391,-0.28695276,-0.4039776,-0.2274611,0.65224385],[-0.4540261,-0.110272445,0.62588185,0.3793935,0.21624547,0.00488706,0.2968329,0.5401233,-0.0827374,-0.28764433,-0.7044611,-0.16364492,0.43638176]],"activation":"identity","dense_3_b":[[0.025508499],[-0.012451561],[-0.038591553]]},{"dense_4_W":[[-0.36511594,0.9680025,0.498792]],"dense_4_b":[[-0.017125914]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AD'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AD'.json deleted file mode 100755 index c10e99ad04..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AD'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.597233],[0.65757],[0.39041167],[0.03043365],[0.64351803],[0.6471017],[0.6502902],[0.6549102],[0.6508157],[0.6482903],[0.64279133],[0.03026653],[0.03030699],[0.030344505],[0.030493243],[0.030504394],[0.030502517],[0.030399079]],"model_test_loss":0.01550232619047165,"input_size":18,"current_date_and_time":"2023-08-05_12-03-26","input_mean":[[24.96868],[0.017203558],[0.004998304],[-0.016466307],[0.014747153],[0.015813118],[0.016414983],[0.015427833],[0.0135320425],[0.01846833],[0.02000356],[-0.016424928],[-0.016428037],[-0.016443778],[-0.016528388],[-0.01664044],[-0.016721481],[-0.017032597]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.11971746],[-1.0482128],[-1.290418],[1.6633401],[-0.09557239],[-0.15225793],[-1.3385328]],"dense_1_W":[[0.029821552,0.035007924,5.103129,-0.37369263,-0.89283395,-0.5466001,-1.1722021,0.012656213,2.3184931,0.7863226,-0.40544683,0.035955865,-0.05933657,-0.36182928,0.14284906,0.47995996,0.0033706422,-0.05209815],[-0.19044665,0.46416685,-0.0097643575,0.022599934,0.1270844,0.3457657,-0.6301875,0.13222663,0.3651115,-0.04052697,-0.097950056,0.36680222,-0.53108186,0.37180126,-0.26814926,-0.22918452,0.24378005,-0.03704089],[-0.8465522,-0.15320513,-0.2111905,-0.33488435,0.19261867,-0.35840833,0.37324944,0.059546437,-0.20470025,-0.08982175,0.30586445,0.101371676,-0.18726619,0.18133822,0.12725775,-0.01725966,0.3126423,-0.20531909],[0.33607936,0.10578455,-0.012572882,-0.17274776,-0.05706274,0.27834845,-0.03742849,0.37046883,0.18207937,0.15750422,-0.21119557,0.58034253,0.14551485,-0.19281861,-0.6219534,-0.07461531,0.12687907,0.13601732],[-0.0028057445,-0.130438,-0.00028447545,-0.2205653,-0.061741494,-0.76060104,0.43488175,0.2109757,0.20559938,0.036044482,-0.22720902,0.10089816,-0.075031996,0.35783985,-0.16343401,-0.207879,0.11746362,0.11620118],[-0.04128383,-0.4868478,0.11253476,0.52899015,0.35399616,-0.4295484,0.33201,-0.13990371,0.08484948,0.10046226,-0.107716724,-0.22875123,-0.03329333,-0.11531053,-0.070716955,-0.003677542,0.12015404,-0.13361935],[-0.84564525,-0.20329769,0.20679265,-0.17321548,-0.43559217,0.6301703,-0.17066625,0.18654998,0.05553996,0.11210628,-0.30537042,0.45863834,0.17521833,-0.08643193,-0.42064783,-0.15470168,-0.061689895,0.282349]],"activation":"σ"},{"dense_2_W":[[-0.2675255,-1.0888523,0.5519257,0.19295022,0.6083571,0.013318467,0.068802685],[-0.029764846,0.5881194,-0.5320143,0.56432325,-0.7338648,-0.6991274,0.78376025],[-0.24376978,0.97442836,-0.43990833,0.58720297,-1.1058803,-0.24998356,0.5523079],[0.37818435,-0.04477066,-0.6413349,0.7311632,-0.7551129,-0.66932064,0.80996406],[0.42194343,-0.55635,0.24982749,-0.08299721,-0.47013214,-0.32509625,0.34097055],[0.18750918,-0.48607266,0.018563168,-0.4435128,0.025003254,0.37226567,-0.5008819],[-0.690127,-0.061610896,0.52321345,-1.2141404,0.24980456,0.39222413,0.29739323],[0.12713604,0.8961836,-0.0420679,0.3697559,-0.66627675,-0.9004507,0.36056203],[-0.17872968,-0.5655011,0.31398085,-0.0073691937,0.8368489,-0.102135964,-0.098749965],[-0.25579226,-0.1895283,0.65268534,-0.032067355,0.88545084,-0.2616384,-0.73489314],[0.038353052,-0.6248039,-0.17452268,-0.3505884,0.6240491,0.117965795,-0.40689456],[0.11943678,0.85648805,-0.7428271,0.4420883,-0.14259496,0.047728933,0.06425332],[-0.37097242,-0.49184024,0.3623645,0.066325314,0.36482123,0.62196106,-0.6113287]],"activation":"σ","dense_2_b":[[0.015802983],[-0.010237919],[-0.12576309],[-0.016577639],[-0.0723307],[0.007504116],[-0.2507953],[-0.20577176],[0.01650445],[0.004272095],[0.07060706],[-0.113387175],[0.05941394]]},{"dense_3_W":[[-0.102179505,0.7396626,0.40349957,0.35000306,-0.14271958,-0.41911846,-0.75510114,-0.080605164,-0.25986177,0.05678764,-0.36452737,0.42877302,-0.3750224],[-0.2336813,-0.17504057,0.076827765,0.26307496,-0.2195151,-0.025769087,0.016375436,0.34215918,0.22750534,-0.33795378,-0.350775,0.46386904,0.27268404],[0.4288828,-0.7942581,-0.19615512,-0.62076753,-0.11076431,0.41423005,-0.07186949,-0.72240573,0.56579494,0.56211066,0.2636863,-0.4551915,0.2820574]],"activation":"identity","dense_3_b":[[-0.045709725],[-0.0753816],[0.058061324]]},{"dense_4_W":[[0.6145353,0.11919738,-0.88881034]],"dense_4_b":[[-0.05525869]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018 b'68288309AD'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018 b'68288309AD'.json deleted file mode 100755 index 02c740db16..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018 b'68288309AD'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.082215],[0.9560447],[0.410062],[0.042449385],[0.9435806],[0.9485456],[0.9529106],[0.93789405],[0.9226771],[0.9034362],[0.883721],[0.04244234],[0.04244558],[0.042444732],[0.042347185],[0.042244907],[0.04203911],[0.041821305]],"model_test_loss":0.015666939318180084,"input_size":18,"current_date_and_time":"2023-08-05_12-54-12","input_mean":[[25.45074],[0.0068904622],[-0.000671541],[-0.0010801569],[0.0104450565],[0.008953298],[0.0077940514],[0.010752567],[0.011151168],[0.013636157],[0.015005147],[-0.001118472],[-0.0011114934],[-0.0011069404],[-0.0010113739],[-0.0010170324],[-0.001066506],[-0.001190821]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.011303913],[-0.101262875],[0.56544256],[0.19651274],[0.02540219],[1.1908269],[-0.025591249]],"dense_1_W":[[0.03296629,-0.9849526,-0.019233003,0.26284894,0.30721006,-1.0549244,1.2970554,-0.45588621,-0.42953083,0.06103454,0.2431949,-0.9065374,0.36690086,0.2656691,0.35073105,0.49389052,0.051688332,-0.3485854],[-0.03754764,-0.49999028,-0.007074961,0.79917264,-0.36037976,-1.3411741,0.58469564,-0.23178867,-0.068214,-0.08796609,-0.065810174,-0.13842778,-0.5216702,-0.056535564,-0.13458252,-0.2092706,-0.31087565,0.35361972],[0.27463603,-0.381356,-0.012061922,-0.31239793,-0.053919703,-0.6916296,0.3541282,-0.15095334,-0.10328145,-0.0723153,0.042322796,0.11545691,0.21939,-0.17112115,0.07391443,0.072348714,-0.040974505,0.090883106],[0.064744584,0.17418511,-5.185299,0.5444673,0.9003128,0.6023629,1.193266,-0.46961012,-2.531239,-1.2398077,0.90796435,-0.18854257,0.029938832,0.16980654,-0.6187146,-0.35119575,0.58308375,0.098467305],[-0.9406685,-0.2624951,-0.027796533,0.20334917,-0.34153846,-0.1046165,-1.0237727,-0.11846653,-0.1513934,-0.28889307,0.1425305,-0.16230091,0.041497145,0.13115646,-0.4476718,-0.026639748,-0.115308225,0.2959161],[0.26337644,0.9059509,0.0142672965,0.11553737,-0.15986507,0.4649627,-0.57561105,0.28975698,0.2352414,0.12916806,-0.24250211,0.5852871,-0.28024945,-0.32947764,-0.29004428,0.07504865,-0.22164239,0.1658566],[0.8496862,0.06132964,-0.026063204,0.33203503,-0.71281123,0.53899145,-0.5046964,-1.0536666,-0.46766424,-0.0017764475,0.28805846,0.3337219,-0.00876953,-0.1794407,-0.8609011,0.06300348,-0.16952239,0.4276372]],"activation":"σ"},{"dense_2_W":[[0.5989996,0.28228945,0.24243695,0.30473667,0.09565392,0.039883718,-0.012167493],[-0.5965035,-0.5132559,-0.809263,-1.0380533,0.74597716,-0.19448324,-0.51433825],[-0.50900024,-0.6781642,-0.055860262,-0.07686463,0.5264645,0.64901555,0.37830654],[0.45566165,0.4638939,0.18080807,-0.37435606,0.34035242,-0.17389183,0.09466603],[0.25517422,-1.1810887,0.02548111,-2.524108,-0.26499692,2.612718,2.0904224],[-0.07452685,0.45176342,0.5291961,-0.22377542,0.35242108,-0.58295393,-0.43978348],[-0.64365584,-0.28436708,-0.5298343,-0.7013793,0.43208584,-0.31733987,0.3173478],[-0.7023152,-0.3866031,-0.5978307,-0.52242154,0.5038582,0.18732077,0.032031976],[0.4123047,0.50972766,0.4979604,-0.016046334,-0.44517237,-0.36656827,0.027112957],[-0.108008094,0.34119272,0.5035501,-0.27905923,-0.5105666,0.12349028,-0.39550483],[-1.6549016,-0.76342964,-0.9001871,0.484857,0.38083476,0.5935866,1.0620447],[-0.8487929,-0.73791504,-0.902351,-0.034185782,0.5050549,0.61939895,0.6907873],[0.555242,0.61760396,0.53889614,-0.2472908,-0.5995396,-0.14475305,-0.4659583]],"activation":"σ","dense_2_b":[[-0.037849087],[-0.0046516205],[-0.06366198],[0.015965618],[0.48888913],[0.04543125],[-0.052545607],[-0.00619908],[-0.047677517],[-0.02190815],[-0.068623856],[0.03490071],[-0.04638153]]},{"dense_3_W":[[0.59825534,-0.7146144,-0.55275774,0.16583651,-0.29240578,0.5159985,-0.39059043,-0.5139529,0.074755795,0.25480804,-0.6676097,-0.45776275,0.18318963],[0.25388056,-0.35969815,-0.34763938,0.38946125,-0.42040497,0.5035119,-0.014665137,-0.4923147,0.66271615,0.11658979,-0.08055782,-0.3412976,0.6100553],[-0.36014816,-0.29852802,0.31007996,0.45297718,-0.111436516,-0.08528401,0.3125368,-0.56639135,0.013241491,0.4247302,-0.6792052,-1.0650945,0.05410819]],"activation":"identity","dense_3_b":[[0.032773122],[0.016646186],[0.008999612]]},{"dense_4_W":[[-0.85478663,-0.68413824,-0.13936913]],"dense_4_b":[[-0.024688363]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018.json deleted file mode 100755 index b3a029677d..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.08229],[0.9560322],[0.4162128],[0.04234246],[0.944914],[0.9496715],[0.9534703],[0.93756986],[0.9214626],[0.9029512],[0.8827786],[0.042334676],[0.04232983],[0.042330787],[0.04222349],[0.042102575],[0.041963458],[0.041727293]],"model_test_loss":0.015212969854474068,"input_size":18,"current_date_and_time":"2023-08-05_12-28-56","input_mean":[[25.450489],[0.007018491],[0.0017526483],[-0.0012496245],[0.010258301],[0.00915797],[0.008296782],[0.009687563],[0.010408748],[0.012445741],[0.015780684],[-0.0012874664],[-0.0012762811],[-0.0012723668],[-0.0012203716],[-0.0012326657],[-0.001319404],[-0.0014248163]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.0474128],[-2.0153387],[0.3068582],[-0.005494932],[-0.8460963],[0.043121926],[0.34363338]],"dense_1_W":[[0.40921986,0.83686906,0.017928291,-0.14663637,0.03245214,0.9670171,-0.557215,0.053447653,0.19983685,0.14913826,-0.07026286,0.35218892,-0.1331316,-0.24948378,0.23776667,0.024677012,-0.18177196,0.081563935],[-0.4710796,1.0182377,0.025632562,0.25463507,0.15371,0.5884998,-0.50182223,0.27641,0.27793694,0.40336907,-0.31872264,-0.23831047,0.10746539,0.053897705,-0.08914807,0.09828412,-0.39313728,0.18685032],[0.9079908,-0.5044986,0.027937002,-0.09682488,0.6568831,-0.38266635,0.9817865,1.2524801,0.38089994,0.12696266,-0.30947885,-0.50164545,-0.23758912,0.010382648,0.9870671,0.36033058,-0.08208099,-0.4297762],[-0.0020627899,0.96122843,0.0019422979,-0.2890112,-0.19326063,0.67663735,-1.2096393,0.69867593,0.24395284,0.015038193,-0.2639015,0.23797843,-0.19254467,0.17160857,-0.3693636,-0.3780116,-0.1757647,0.36420926],[-0.035085507,0.022627689,-5.207178,0.662441,1.6342354,1.2160088,1.2780991,-1.1770558,-2.9736173,-1.1000638,0.7337506,-0.5362961,-0.29924804,0.33022583,-0.7002066,0.04807395,0.3741729,0.31349945],[-0.002872556,-0.54440963,-0.0055537154,0.1456208,-0.30050763,-1.4995376,0.9476729,-0.74908423,-0.28116608,0.15615615,-0.03335187,-0.0051539144,0.13452101,-0.20905544,0.25087494,-0.45868522,-0.40181822,0.4119573],[1.0714998,-0.38579407,-0.024760136,0.06929095,-0.7495878,-0.25940558,-0.19196063,-0.39601323,-0.32055146,-0.10028662,0.06978139,0.50141144,0.43209225,-0.3733558,-0.8468494,-0.051437717,-0.19248068,0.45854166]],"activation":"σ"},{"dense_2_W":[[1.0826005,-0.20854715,0.12272468,0.45186186,-0.33309188,-0.11777644,0.57938504],[-0.5927767,-0.28290668,0.62141377,-0.6324294,-0.03813597,0.25737914,-0.082683794],[0.16264565,-0.50887585,-0.4667856,0.048738178,-0.5574825,0.1486967,-0.059898414],[-0.73018765,-0.33298212,0.464258,-0.22951585,-0.19468288,0.58376384,-0.10449995],[-0.3376829,-0.015965454,-0.5374289,-0.1125972,0.20699061,0.46242332,-0.39699847],[-0.7966657,1.1282952,-1.2893173,0.0007569245,-3.1860337,-0.18262017,-0.9651093],[-0.3432437,0.15395725,0.49788675,-0.6686831,-0.3084999,0.4104962,-0.19762419],[-0.6902327,-0.03177878,-0.3615717,-0.1965282,0.21896532,0.31481862,-0.39253464],[0.06330853,0.59432584,-0.7664653,1.0718739,-0.22649164,-0.9899889,0.19520594],[0.60814977,0.26673782,-0.8529133,1.0040137,0.14190473,-1.0532364,0.009188715],[-0.6209684,-0.01673939,-0.322892,-0.14584474,0.1624394,0.21571153,-0.7087542],[-0.5637814,-0.47300205,-0.21020818,-0.21443935,0.19412827,0.17739315,-0.7089613],[0.77079105,0.29888508,-0.3602861,0.5112615,-0.24378149,-0.1931251,-0.20249362]],"activation":"σ","dense_2_b":[[-0.03581929],[-0.046200734],[-0.1481214],[-0.077726975],[-0.17219913],[0.35100186],[-0.07100971],[-0.14290616],[-0.059892148],[-0.38624978],[-0.13309816],[-0.087655105],[-0.046923585]]},{"dense_3_W":[[-0.57040024,0.40345442,0.19436547,0.42902845,0.120898366,-0.63833594,0.39891332,-0.13518181,-0.37702882,0.18261324,0.54879117,0.5178564,-0.069270305],[0.16411436,0.5797063,-0.04110642,0.032352872,0.10857908,0.12132189,0.4528278,0.5046357,-0.54672295,-0.514517,0.102962494,0.39607972,-0.62058264],[-0.04601366,0.16334765,-0.16627654,0.103514455,0.6421524,-1.1889938,0.9212643,0.16994889,-0.85712564,-1.0109627,0.3073874,0.13189326,-0.2665801]],"activation":"identity","dense_3_b":[[-0.081992626],[-0.0802459],[0.057288777]]},{"dense_4_W":[[-1.0061765,-0.9223554,-0.31279898]],"dense_4_b":[[0.07849179]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68416741AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68416741AA'.json deleted file mode 100755 index 2cfe8d0c26..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68416741AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[3.540884],[0.72527695],[0.45695683],[0.034991868],[0.709294],[0.71476114],[0.72185975],[0.7211512],[0.7235535],[0.7168181],[0.7078516],[0.034848806],[0.03490882],[0.034961533],[0.03501503],[0.03508182],[0.035303213],[0.035285834]],"model_test_loss":0.008240409195423126,"input_size":18,"current_date_and_time":"2023-08-05_13-46-44","input_mean":[[25.921837],[0.0125832055],[-0.01164115],[0.0026885534],[0.014492291],[0.0139633],[0.013493571],[0.008726519],[0.008531813],[0.009844244],[0.0044681607],[0.0026176367],[0.0026374457],[0.0026502886],[0.0027010296],[0.00267962],[0.0024883181],[0.0022550253]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.13672608],[-0.041571867],[1.2636456],[-0.065467335],[0.011800385],[-0.46202916],[-1.372556]],"dense_1_W":[[0.007422458,0.6754113,7.4073644,0.11848473,-2.1631336,-0.912065,-0.8724629,-0.2556371,3.0907576,1.412602,-0.8293619,0.79462373,0.14016043,0.24535954,-0.30560818,-0.57401854,-0.60158664,0.14450504],[-0.0018305334,0.09137483,0.0048553096,-0.18322048,-0.17445193,1.1315465,-0.99553066,0.20692046,-0.1573373,0.10723841,0.034833677,0.013222382,0.04913359,-0.063011676,0.080315255,0.007860034,-0.06869685,-0.10426123],[0.41642052,-0.43292236,-0.00016212527,-0.28172606,0.22388797,-0.5387432,0.5000487,-0.0662662,-0.19251756,-0.24930976,0.21399923,0.21182868,0.23792529,0.36422804,-0.12048849,-0.10356604,-0.18955365,0.20988986],[0.007196369,-0.40141714,0.004146293,0.24328095,0.08316568,-0.7725523,0.24712877,0.31170592,-0.2618485,0.3492374,-0.23321508,-0.5998228,0.054245714,0.05656959,0.42039597,0.29605547,-0.16332126,-0.25805196],[-0.0066868253,0.24793896,-0.9155987,-0.22574951,0.2279949,-0.75932324,0.5498709,-0.50319123,-0.25042525,-0.16740315,0.9464338,-0.6654067,-0.46457547,-0.62106884,0.38022646,0.66043746,0.57050747,-0.051786408],[-0.013603165,-0.7850666,0.22816952,-0.94007343,0.6314619,-1.1180922,0.9316161,0.71419287,1.565776,0.82271457,-0.6743947,-0.03324018,-0.22406328,0.11753971,-0.86198115,-0.7191324,-1.2573929,-1.3663477],[-0.39971876,-0.90275395,-0.002747763,0.3259772,0.053136084,-0.1129504,0.67844796,-0.12035228,-0.111051224,-0.23912819,0.22313052,0.015122417,-0.042040545,0.31138957,-0.21768394,-0.19387904,0.17800824,-0.058540124]],"activation":"σ"},{"dense_2_W":[[-0.2712744,-0.27548417,-0.24589045,-0.94929534,0.056101516,0.37687665,-0.34930152],[0.12890357,0.107452646,0.05273279,-0.2842241,-0.26417354,-0.36303985,-0.88106096],[0.10812536,0.8229097,-0.48439428,-0.6146967,0.30271894,-0.47587743,-0.72306526],[-0.2970765,-0.9954584,0.8347318,0.28984168,0.22221072,-0.08318426,0.5174111],[0.022121632,-0.9320088,-0.13187025,0.84971243,0.11638838,-0.18265942,0.6944859],[-0.81018156,-1.4140185,0.0050559104,0.8047088,0.112945594,0.11903153,1.4750458],[-0.10029377,0.79245657,-0.129312,-0.96144485,-0.14801987,-0.19154973,-0.27617636],[-0.42813414,-1.1076767,0.41040602,0.6022723,0.2166483,0.101234265,0.25476956],[-0.2616646,0.06810875,-0.2897757,-0.34468642,0.19396816,-0.23995267,0.042478308],[0.064412996,0.088728696,-0.83973736,0.046822183,-0.044361882,-0.2079744,-0.5540397],[-0.9322635,-0.08910884,2.045478,0.7023676,0.27462402,-0.3360689,-0.5251471],[-0.82763696,0.09217775,-0.5712728,-0.1493765,0.17474991,-0.029826907,-0.55813324],[-0.30443445,-0.47327244,-0.5111389,-0.45714694,0.37277365,0.38366705,0.1959204]],"activation":"σ","dense_2_b":[[0.08118501],[0.07975673],[0.11642572],[-0.2567934],[-0.4266919],[-0.5458668],[0.18571955],[-0.08934562],[-0.29633301],[0.13670655],[0.07141965],[-0.30583197],[-0.0840992]]},{"dense_3_W":[[-0.5074871,-0.28185704,0.4593259,0.47745362,-0.44245535,0.07299903,-0.67817503,0.13860504,0.30813742,0.42423633,-0.060915153,-0.56996584,-0.0628069],[-0.63610864,-0.52725506,-0.59844047,0.43560866,0.6619392,0.40266907,-0.7854964,0.7018912,-0.12779734,-0.56247413,0.6380423,0.3426679,0.12550351],[-0.22990963,-0.22485729,0.11532963,0.1304727,0.34375438,0.09126867,-0.44410926,0.5529583,-0.08919587,-0.62609166,-0.042024292,-0.44053796,-0.45395342]],"activation":"identity","dense_3_b":[[-0.029381804],[-0.053650945],[-0.030720724]]},{"dense_4_W":[[-0.4063532,-1.1326009,-0.48396984]],"dense_4_b":[[0.045191046]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68460392AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68460392AA'.json deleted file mode 100755 index 6db2a51340..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68460392AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.110466],[1.1166294],[0.4333575],[0.04491246],[1.101045],[1.106509],[1.1112565],[1.0918282],[1.0688635],[1.0413644],[1.0151801],[0.044668887],[0.044713814],[0.04475609],[0.044801924],[0.04479171],[0.044668294],[0.04430072]],"model_test_loss":0.020542951300740242,"input_size":18,"current_date_and_time":"2023-08-05_14-14-04","input_mean":[[28.738178],[0.04136104],[-0.0026099419],[-0.0051334198],[0.044128302],[0.043093566],[0.041869074],[0.042427693],[0.046236813],[0.04548593],[0.042877004],[-0.005089196],[-0.005111265],[-0.0051377458],[-0.005226521],[-0.005262634],[-0.00543846],[-0.0057465434]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.037278734],[-0.079774134],[-0.8162887],[-0.31243566],[-0.22615224],[-0.8256233],[1.4499795]],"dense_1_W":[[-0.005449315,0.35854638,-0.0047398233,-0.1440494,-0.512616,0.7778192,-0.398415,0.0010072874,-0.5800812,-0.10013973,0.26047555,0.16202927,-0.008031342,-0.13875856,-0.22610746,-0.6603844,-0.10960839,0.40812218],[-0.051943477,-0.26004118,4.607082,-0.12921393,-1.9564761,-0.83791864,-1.289598,0.3517151,3.87916,1.1050774,-0.77605593,0.896561,0.58562213,-0.5287581,0.122337416,-0.44951877,-0.40622,-0.16376685],[-0.16226001,0.83511513,0.009577342,-0.011364819,0.009493924,0.34977683,-0.5710836,0.20358273,-0.047720235,0.21904317,-0.13963147,0.61891454,0.1469637,-0.6860567,-0.14435394,0.13068855,-0.094664365,0.1009682],[-0.0026090448,-0.75837827,0.00792941,-0.042877182,0.24020967,-0.6194338,0.44166493,0.017847896,-0.3192753,-0.4271276,0.41098025,-0.60054016,0.18626004,0.17326199,0.068281084,0.23828898,0.28316006,-0.3320513],[0.027624318,-0.76117027,0.0054043583,0.33760962,0.116977885,-0.9307711,1.0756055,-0.2172874,-0.21198179,0.080145285,0.04210036,-0.51823384,-0.11447423,0.13206464,0.51927197,0.14165966,-0.1777355,-0.111683],[-0.12876868,-0.7229542,-0.0074477443,0.16747089,0.050191335,-0.50053203,0.59926206,-0.26795742,0.048716802,0.004515228,-0.00087909383,-0.8720959,0.3561962,0.41411182,0.0037264847,-0.26657674,0.36355504,-0.20191583],[1.5456613,0.3672433,2.1607227,0.15501712,-1.0307076,-0.12250712,-0.5461449,-0.012928717,-0.08450569,-0.32112712,-0.7111483,0.63424677,-0.07049318,-0.2134942,0.5441593,0.11881617,0.13171925,0.11188784]],"activation":"σ"},{"dense_2_W":[[0.4314676,0.43680868,-0.33696127,-0.17014731,-0.05842231,-0.7266061,-0.5114572],[0.15322033,0.046555553,-0.43650016,0.8490571,0.8243241,0.27194533,0.093695216],[0.61560154,-0.12009854,0.3021778,-0.2980031,-0.6986972,-0.52874625,0.2868508],[-0.20433629,0.17755696,-0.016080111,0.48249146,-0.24425584,0.93740374,0.18655425],[-0.00067611254,-0.5348082,-0.04893072,0.16420071,0.84226584,0.48445752,-0.53488594],[0.5304203,-0.052413676,0.84903955,-0.7850803,-0.39337084,-0.48024574,0.22300348],[-0.40384635,-0.2198121,-0.9246295,0.21698718,0.013713661,0.33346254,-0.16243497],[-0.21693845,-0.5599039,0.16844617,0.33478138,-0.2944021,0.2285425,-0.45965782],[0.65655226,0.5756963,0.40696257,-0.87685615,-0.025619268,-0.60703444,0.34351036],[0.4858341,0.5645004,0.280065,-0.61226463,-0.070656925,-0.8439244,-0.4341403],[-0.5802423,-0.2585727,-0.5184978,0.41481337,0.55786633,0.19180918,0.27964547],[-0.1608777,-0.050595388,-0.75230426,0.0011275461,0.055260886,-0.035873853,0.49184152],[-0.052665144,-0.035036366,0.5804482,-0.8756545,-0.8726204,-0.6846766,0.07926964]],"activation":"σ","dense_2_b":[[-0.19394487],[-0.10838762],[-0.07325213],[-0.033972114],[-0.0065951333],[-0.2264441],[-0.26640517],[-0.066091046],[-0.1312786],[0.049138386],[-0.10959771],[-0.018617028],[0.049152326]]},{"dense_3_W":[[0.5829933,0.53154945,-0.6436874,0.26961514,0.2114049,0.48927963,-0.077363156,-0.117650375,-0.07863482,-0.42213118,-0.025127105,0.1802662,-0.78018814],[0.1384695,-0.57305473,0.30702972,-0.31226707,-0.617097,0.32141355,-0.5152638,-0.5388638,0.6503955,0.7239906,-0.5044503,-0.32009524,0.49322724],[-0.43255872,-0.18591267,-0.57748216,0.21049492,0.18677677,-0.35376894,-0.43073297,-0.34409273,-0.587622,-0.17651634,0.07379629,0.51700467,-0.6392041]],"activation":"identity","dense_3_b":[[0.030356286],[-0.044458546],[0.07339491]]},{"dense_4_W":[[-0.28381646,0.84335744,-0.5880341]],"dense_4_b":[[-0.055418875]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AA'.json deleted file mode 100755 index b944ebfeaf..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.7788153],[0.86318105],[0.45887572],[0.03240975],[0.84916407],[0.85424227],[0.8574619],[0.8389892],[0.81995696],[0.7941099],[0.7717739],[0.032342657],[0.03233888],[0.032331638],[0.03231616],[0.03229451],[0.032231897],[0.032137062]],"model_test_loss":0.026132144033908844,"input_size":18,"current_date_and_time":"2023-08-05_14-38-55","input_mean":[[28.931513],[0.014174745],[-0.00050709123],[-0.013757554],[0.015852991],[0.01568708],[0.0151331145],[0.015902033],[0.014520537],[0.010255078],[0.009157378],[-0.013667275],[-0.013699755],[-0.01373048],[-0.013899637],[-0.014020047],[-0.014123588],[-0.014132852]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0011439975],[0.08114154],[-0.047111176],[-0.00014506892],[-0.058797296],[0.008746821],[-0.112746514]],"dense_1_W":[[0.0036827116,-0.85230404,0.9694389,-0.6527038,0.10460156,0.8590413,0.14416954,0.9132283,0.17232226,0.01029374,-0.95463884,0.84203064,-0.34578338,0.032106902,-0.14620203,0.13692686,0.3113949,-0.13478504],[-7.447542e-5,0.9491887,-0.04109987,0.040202092,0.2734764,1.0008796,-0.82018507,-0.34369794,-0.270975,0.00058271387,0.25813425,-0.29383036,0.18492047,-0.31528273,0.09403308,0.24762149,0.21983506,-0.28232306],[0.0005957179,-1.5132132,-0.064817086,0.1532922,0.5894306,-0.46862274,0.68522537,0.05819377,0.22867863,0.007096001,0.020394647,-0.46124545,0.3289496,-0.03179155,0.22535956,-0.1858501,0.12605724,-0.11331306],[0.0037144264,0.17526588,0.8997809,0.13560319,0.7582112,0.3016461,1.6678429,-1.3722198,-1.1396137,-0.3491821,0.39440334,-0.2175496,-0.17992109,0.026779918,-0.19932391,0.65749645,0.42792454,-0.59700435],[-0.004916627,-0.86949986,-3.1472104,-0.046245735,0.58949816,0.13029447,0.49943313,0.119921446,-1.1917382,-1.7929658,-0.74677783,-0.51036227,0.06405667,0.093736,0.075880684,0.12603562,0.5108349,0.052058537],[0.0023457597,-0.664783,4.946816,0.81403846,-2.2644951,-2.0607138,-1.7517816,0.28588998,3.9568594,2.7328053,-0.2896687,0.79322964,0.75960326,-0.25073573,-0.5724614,-0.71555763,-1.2048925,0.40946966],[-0.0023486963,-0.7795025,0.021107612,-0.08805968,-0.32326528,-0.68839264,0.9240335,0.4994968,-0.023836527,0.175137,-0.34672633,-0.34674078,0.32279867,0.05844317,-0.023075575,0.37232506,-0.09687563,-0.12452232]],"activation":"σ"},{"dense_2_W":[[-0.37854546,0.34903055,-0.4462544,0.11327805,-0.24875195,0.35234123,-0.5626592],[0.42957336,0.53799313,-0.06286047,-0.31929597,0.14332363,0.52426404,-0.65911615],[-0.15604308,0.447812,-0.58008,0.051283363,-0.40378952,0.24825498,-0.20840329],[-0.3440618,-0.9011778,1.4646084,0.38501295,-0.4189048,-0.5722096,0.6253895],[-0.36881042,0.15492533,-0.12835744,-0.13917302,-0.41941592,-0.064528316,-0.024679296],[-0.3952051,-0.19353123,0.42472473,0.25226733,0.36719245,0.15404089,0.17196153],[0.046834674,0.48506153,-0.014719895,-0.01911938,-0.5700787,0.12933014,0.3826227],[0.5885063,0.33175373,-0.5520266,0.16487138,0.027746325,0.20234767,-0.6893546],[-0.24454424,-0.71767586,-0.108539544,0.74538267,-0.101703376,0.06964665,-0.1827993],[-0.8758459,-0.6128819,1.5650461,0.45312274,-0.5894857,-0.4010452,0.24010707],[-0.3640231,-0.295227,0.009693909,0.32785308,-0.42453107,0.5494616,-0.3201437],[0.6608706,-0.08454871,-0.5333993,-0.6653004,-0.021712486,0.63731277,-0.43692258],[-0.34482664,-1.5146594,1.5212393,0.5039458,-0.98475206,0.15418348,1.4046031]],"activation":"σ","dense_2_b":[[-0.012626887],[-0.060023643],[0.050328624],[-0.15241708],[0.002586862],[-0.0811935],[-0.032516863],[-0.047326654],[-0.04986636],[-0.058775026],[-0.035809994],[0.05208208],[-0.15562724]]},{"dense_3_W":[[0.6006235,-0.2893421,-0.28629094,0.28537595,0.56650835,-0.51059633,0.07124142,0.10285289,-0.06570319,0.27793735,-0.042230252,0.327788,-0.6483426],[0.23293988,-0.25339293,0.4200759,-0.49375746,0.0040358165,-0.6081097,-0.108511046,0.4325967,-0.2370615,-0.4646658,0.5137965,0.62279403,0.19901751],[0.46578276,-0.67444813,-0.6492283,0.40810102,0.13862292,0.4688345,-0.19089985,-0.38935006,0.5318019,0.25233418,0.2683579,-0.5857107,0.32623842]],"activation":"identity","dense_3_b":[[0.028790487],[0.028534047],[-0.03063328]]},{"dense_4_W":[[0.7596348,0.72767824,-1.0551875]],"dense_4_b":[[0.031701148]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AB'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AB'.json deleted file mode 100755 index 7e10555ddb..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.7539926],[0.93529695],[0.4818552],[0.038544405],[0.9241015],[0.9277656],[0.93047893],[0.92769974],[0.9196844],[0.90819216],[0.8909238],[0.038282566],[0.03835162],[0.03842366],[0.03860774],[0.038648367],[0.038378567],[0.037988614]],"model_test_loss":0.01552480086684227,"input_size":18,"current_date_and_time":"2023-08-05_15-05-03","input_mean":[[28.271704],[-0.018472683],[0.008247399],[-0.011640539],[-0.016549714],[-0.016534679],[-0.015966991],[-0.012970649],[-0.013244884],[-0.021792166],[-0.030313933],[-0.0117374305],[-0.011689001],[-0.011635759],[-0.011480733],[-0.011386347],[-0.011478815],[-0.011520906]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16247147],[-1.9445274],[0.015820462],[0.1109649],[0.18606652],[0.14743169],[-0.25301546]],"dense_1_W":[[0.033168066,-0.87919986,-6.0003424,-0.11847333,0.23891214,-0.017026797,0.21457405,0.06397584,-1.1299858,0.119912185,1.2341022,-0.718399,-0.26759303,-0.5534113,1.0412015,0.43450904,0.20104626,-0.084277354],[0.6811516,-0.121241845,-0.015429761,-0.15817125,0.8674318,0.3464547,0.028172173,0.14950341,0.32529193,-0.21055248,0.17845789,0.92391425,-0.07065611,-0.065732196,-0.22456542,-0.7568571,-0.347454,-0.64657813],[0.060744118,-0.73202413,-0.012868376,0.4323286,0.18275686,-0.9485156,0.8238945,-0.10487157,-0.10203484,0.05330652,0.008031068,-0.023272691,-0.24555291,-0.039335933,0.06328203,0.17615116,-0.27155656,0.016184507],[-0.022168336,-0.4993914,4.419826,0.3107063,-2.6004608,-1.7346139,-1.8055027,-0.15056731,3.5626802,3.1007571,0.50810057,0.7390148,0.39296082,-0.6219894,-0.9289591,0.29771698,-0.002542225,-0.38791353],[0.07870597,0.8395529,0.013242184,-0.37794262,-0.2873907,0.75163865,-0.4381639,-0.17677695,0.047819123,0.007587919,0.010396626,0.38303232,0.201019,-0.5262356,0.27791938,-0.081237584,-0.17390475,0.19786458],[0.25589576,0.27254564,0.0028974493,0.337075,-0.32846543,0.07265917,-1.2584563,-0.101628564,0.20059124,-0.32358432,0.050918363,-0.031572163,0.28416264,-0.78280866,0.062558874,-0.11689831,0.5253208,0.8678441],[0.16486502,-0.6348946,-0.0078088874,0.20368655,-0.37894782,-0.3180483,0.77805275,-0.105039515,-0.10222425,-0.17470093,0.12180855,-0.6105949,-0.108344056,0.27209398,0.18639357,0.055669807,0.4774451,0.18108374]],"activation":"σ"},{"dense_2_W":[[-0.5479722,0.51978314,-0.3325378,0.7052226,0.82599765,0.20821774,-0.5566406],[-0.47786564,-0.5044051,1.2295787,0.34785864,-0.5027773,-0.53672224,0.4329206],[0.3557253,0.010534457,0.42732254,-0.4092949,-0.46742332,-0.6942757,0.48867208],[-0.70371103,-0.37598246,-0.64199096,0.5582689,0.3377767,-0.16154085,-0.6031509],[0.28246686,-0.18254404,-1.0761517,-0.44560048,1.0163425,0.6645717,-0.7254034],[0.038954254,-0.6713239,-1.047652,0.3876244,0.296178,-0.048443664,-0.5365625],[0.15319476,0.32095867,0.7348781,-0.05432626,0.10117875,-0.50145245,0.5931825],[0.23199868,-0.5129736,-0.18174349,-0.5271858,-0.4329709,-0.0027121021,-0.46761963],[0.1928321,0.30944964,-0.6179093,0.20904343,0.51145256,0.19034328,-0.9151516],[-0.14230113,0.5926942,-0.46564186,-0.1299676,0.29295698,-0.15119109,-0.7302749],[-0.27700615,-0.49345413,0.12770167,0.36850908,-0.8730177,0.26205686,0.66320413],[-0.47383484,-0.05481399,0.00739117,-0.33691958,-0.48928645,-0.14246316,-0.07991372],[-0.24223731,0.29117322,-0.2750107,0.42836645,0.5076202,0.4529231,-0.034581553]],"activation":"σ","dense_2_b":[[-0.011054851],[0.11898975],[0.016430143],[-0.121288925],[0.033908624],[-0.1270793],[0.024081398],[-0.03873727],[-0.03128879],[0.0043782927],[-0.054906446],[-0.03501189],[-0.075150594]]},{"dense_3_W":[[-0.5973777,0.6543564,0.6513368,-0.6236035,-0.6703424,-0.5459989,0.5743272,0.303027,-0.17172754,-0.5232033,0.20740275,0.17208031,-0.37048194],[0.17000821,0.15035313,0.15856911,0.34882855,0.46245342,0.4996729,-0.02127124,-0.097889625,-0.309891,-0.5858313,-0.07663794,0.36841103,-0.12395392],[-0.1960993,0.25925174,0.46165013,0.112479284,-0.15205826,0.03679703,0.6391964,0.15686889,-0.34719947,0.024827098,0.5550302,-0.29560098,-0.13534045]],"activation":"identity","dense_3_b":[[0.06578365],[-0.039697763],[0.035733122]]},{"dense_4_W":[[-1.3297648,-0.00095071405,-0.35285485]],"dense_4_b":[[-0.06175809]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017.json b/selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2017_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017.json rename to selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2017_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018.json b/selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2018_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018.json rename to selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2018_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2019_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019.json rename to selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2019_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020.json b/selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2020.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020.json rename to selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2020.json diff --git a/selfdrive/car/torque_data/lat_models/GENESIS (DH).json b/selfdrive/car/torque_data/lat_models/GENESIS (DH).json deleted file mode 100755 index e80fc2aa96..0000000000 --- a/selfdrive/car/torque_data/lat_models/GENESIS (DH).json +++ /dev/null @@ -1 +0,0 @@ -{"test_dict":{"[0.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.2699708,"[0.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.44897613,"[0.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.27972165,"[40.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.6288122,"[40.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.009419857,"[40.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.29464614,"[20.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.8718414,"[40.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.16241446,"[20.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.23373634,"[40.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.5460306,"[40.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.18178429,"[40.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.2661167,"[0.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.25971827,"[0.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.8656753,"[0.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.65435606,"[0.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.16348448,"[20.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.23745517,"[40.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.55276626,"[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.005459955,"[40.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.57930475,"[20.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.6679626,"[20.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.6516425,"[0.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.48749548,"[40.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.16435784,"[0.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.6784933,"[0.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.6372965,"[0.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.19476463,"[20.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.66950613,"[40.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.5756492,"[40.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.26849964,"[40.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.35364658,"[40.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.8425623,"[0.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.29070386,"[0.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.84755886,"[40.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.70718986,"[40.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.025362803,"[0.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.14202757,"[20.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.46855992,"[40.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.2911558,"[0.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.6686591,"[0.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.29949942,"[40.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.46808085,"[40.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.019595843,"[20.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.68658686,"[40.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.5766193,"[20.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.7178196,"[0.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.0318396,"[20.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.29348856,"[0.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.6638601,"[20.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.6627258,"[0.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.07437267,"[20.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.6055348,"[20.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.23798963,"[40.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.17592952,"[20.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.01030465,"[0.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.7545617,"[20.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.18164062,"[40.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.16152,"[20.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.8436983,"[0.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.9237289,"[20.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.19309354,"[20.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.19966654,"[20.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.48542765,"[40.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.1542686,"[20.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.011308879,"[20.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.95253545,"[20.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.92795116,"[0.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.1619431,"[20.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.21448861,"[20.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.30357608,"[20.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.17162016,"[0.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.9254877,"[20.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.61486626,"[0.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.2479979,"[40.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.72604245,"[0.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.6708805,"[40.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.35719714,"[20.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.0061618295,"[0.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.8119934,"[40.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.4702388,"[40.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.830137},"input_std":[[8.253246],[1.2265166],[0.8396968],[0.03495619],[1.1769793],[1.1944457],[1.2117249],[1.2462167],[1.2448307],[1.2171412],[1.172086],[0.035094533],[0.035049263],[0.034998577],[0.034752842],[0.034525692],[0.034230117],[0.03413073]],"model_test_loss":0.003963234834372997,"input_size":18,"current_date_and_time":"2023-07-16_12-10-58","input_mean":[[24.465681],[0.14132848],[0.343076],[0.019675385],[0.10810958],[0.11891723],[0.12978078],[0.16952017],[0.17916267],[0.17290013],[0.1463772],[0.019302443],[0.019420939],[0.019535815],[0.01998929],[0.020338312],[0.020922989],[0.02162974]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"test_dict_zero_bias":{"[0.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.23143637,"[0.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.4652263,"[0.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.35620037,"[40.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.72915876,"[40.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.033811964,"[40.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.2459415,"[20.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.93224394,"[40.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.19291008,"[20.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.20748353,"[40.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.5995451,"[40.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.11259879,"[40.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.31002465,"[0.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.34267417,"[0.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.84346217,"[0.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.67134356,"[0.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.2411822,"[20.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.2577998,"[40.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.5963392,"[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.030760199,"[40.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.61936307,"[20.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.7194478,"[20.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.6834684,"[0.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.4523713,"[40.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.23015223,"[0.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.6842142,"[0.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.62436,"[0.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.16453701,"[20.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.71494484,"[40.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.62495947,"[40.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.20527135,"[40.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.37316445,"[40.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.95322937,"[0.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.24505597,"[0.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.8992404,"[40.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.7107156,"[40.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.023601279,"[0.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.12803368,"[20.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.4761059,"[40.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.34226668,"[0.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.66734576,"[0.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.2568946,"[40.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.5198489,"[40.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.039260928,"[20.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.6992957,"[40.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.57003254,"[20.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.7749707,"[0.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.06198548,"[20.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.3452634,"[0.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.6636515,"[20.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.6915985,"[0.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.027520018,"[20.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.6457659,"[20.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.27366233,"[40.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.20291242,"[20.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.03861127,"[0.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.8053802,"[20.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.23112899,"[40.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.13886195,"[20.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.8606299,"[0.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.97973317,"[20.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.16530247,"[20.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.2352428,"[20.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.510034,"[40.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.15056436,"[20.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.02322955,"[20.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":1.0131809,"[20.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.93524235,"[0.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.20059028,"[20.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.2240225,"[20.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.2621489,"[20.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.13601273,"[0.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.90459216,"[20.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.6621921,"[0.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.2747507,"[40.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.83059245,"[0.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.6849924,"[40.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.43381947,"[20.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.043959964,"[0.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.7887305,"[40.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.5149402,"[40.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.8446559},"layers":[{"dense_1_b":[[-0.06827587],[-0.028500285],[-0.25173208],[-0.07750105],[-0.2940142],[0.6922563],[0.8121905],[0.7862803],[0.045949236],[-0.752093],[0.0956208],[-0.07192505]],"dense_1_W":[[0.9860141,0.06856981,0.16649614,0.34863472,-0.4680053,-0.5291158,0.22607322,-0.44315264,0.38767982,0.095361136,-0.04150002,-0.23525304,-0.02514362,0.030176405,-0.124883376,0.21063851,0.24710408,-0.0042801024],[0.7650095,0.40897316,0.15986899,-0.41831535,0.20153247,0.535765,0.31352526,-0.11838379,0.07478691,0.30549064,-0.25162768,-0.5103203,-0.74696344,-0.36560678,0.2748608,0.26366073,0.6311933,0.713333],[-0.13126527,-0.39487827,-0.13285579,-0.5997767,-0.07298161,-0.73874617,0.102481976,-0.4895145,0.20335777,-0.06410841,0.16459773,-0.49094355,0.15613374,0.11448425,0.020741098,0.16492575,0.4202937,0.23035619],[0.21678914,0.28709143,0.31667808,0.38460296,0.2784755,-0.118180774,0.23113173,0.31613338,-0.14956291,-0.21667449,-0.32722402,-0.27772832,-0.49006936,0.2742082,0.011245524,-0.43906662,0.3694417,0.1636142],[-0.49277544,-0.32197058,-0.020395037,-0.17285073,-1.8189527,-1.3681763,-0.9464799,2.308432,2.1192882,0.9617323,-0.55478024,0.17136998,0.28032053,-0.1915387,-0.2276642,0.34017745,-0.0736793,-0.046107627],[0.9547897,-0.1796725,0.08065475,0.2715653,0.6025838,0.07301243,0.63076055,-1.0844946,0.0689092,-0.19870193,-0.028648961,0.3244974,0.11944415,0.042525414,-0.11440154,-0.070732705,-0.13264629,-0.3839806],[0.4166084,-0.22970842,0.03894506,0.27970275,-1.6061078,-0.7616155,-1.0644445,2.3107653,1.3266898,0.7445326,-0.42004168,0.32592276,-0.5272901,-0.058386777,-0.011751664,-0.24185024,0.2550218,0.037888173],[1.227693,-0.08679133,-0.058664244,-0.32752186,-0.33977526,-0.44716588,0.1074168,1.2112535,0.38789093,-0.5875413,-0.13212678,-0.48916072,-0.5090327,0.048765358,0.009949782,-0.036129378,0.4284392,0.5424678],[0.05534743,-0.0070937686,0.012779384,-0.020212462,-0.810695,-0.7458955,-0.06678266,0.24761188,0.7959795,0.18153493,-0.77803063,-0.3331065,-0.41612664,-0.10347939,0.4260129,-0.12432382,0.19131409,0.5900885],[-1.3917207,-0.10825836,0.25955147,0.117827095,0.1907617,0.056196008,-0.44743136,0.46662346,-0.07211038,-0.27684382,0.048279505,-0.67529994,-0.1008146,-0.26535323,-0.21489926,0.33245432,0.37282628,0.8048224],[0.9139895,0.18345529,-0.11113925,-0.024819624,-0.0057961256,0.42582917,0.20965768,0.09122352,-0.04145471,-0.08591005,0.033041902,0.102651305,0.28468904,-0.14300235,-0.1514348,0.27464387,-0.3937016,-0.21395943],[0.14075463,-0.36453637,0.022140993,-0.24156585,-0.22243826,0.5132401,0.317588,-1.4172845,0.07024156,0.36280203,0.19390614,0.31465214,-0.43508086,-0.014590371,0.38123438,0.31295216,0.064947814,-0.3264055]],"activation":"σ"},{"dense_2_W":[[0.2944305,-0.1596823,-0.53525865,0.49642923,0.23475026,0.23187475,0.71439105,0.65725046,-0.721471,0.39266056,0.37784654,-0.27128077],[0.081694655,0.13397129,0.15713829,-0.09578413,-0.5178259,-0.08045092,-0.54402024,-0.33381253,-0.22557487,-0.44034663,-0.5231108,-0.014040657],[-0.53353846,-0.49547645,-0.5018153,-0.3451814,-0.4162906,-0.11419333,0.14722995,-0.4278855,-0.30550334,-0.57627094,-0.48164564,-0.6556868],[-0.3350859,-0.53481793,0.17310745,0.041560747,-0.17386791,-0.36399472,-0.6959931,-0.07396456,0.06297616,0.041960794,-0.44298738,0.47928327],[0.37257755,0.056011233,0.121093154,0.13028839,0.112854324,-0.15124673,0.18506464,-0.25879407,0.010806852,-0.38031578,-0.30364817,0.40391642],[-0.7007721,-0.05058494,-0.37102678,0.0057000583,0.36505723,-0.0139328055,0.33886233,0.13501829,-0.7866263,-0.08625708,0.06882772,-0.7447073],[0.24382925,-0.7427297,-0.087578066,0.27406982,0.55775076,-0.9633511,0.8514653,0.5075772,-0.8725846,0.26276717,-0.49534693,-0.85888404],[0.2656534,0.19259208,0.40583682,0.31773284,0.034196496,-0.16609356,0.15637825,-0.6308068,0.47307655,0.19246396,-0.28782868,-0.031524025],[-0.33996844,0.35855332,-0.8875853,0.34016752,0.1107245,-0.4759234,0.05391628,-0.3273293,-0.60782087,0.21380496,-0.42787686,-0.67130834],[0.28692353,-0.27509448,0.04464982,-0.3738229,-0.16551112,0.030297015,-0.48875,-0.19420627,0.017036378,-0.16820177,0.10364311,-0.35664937],[0.10276442,0.07036441,-0.09596506,-0.26394823,-0.21366283,-0.145804,-0.33585423,-0.6869976,-0.15877219,-0.13249736,-0.7068687,0.04853754],[-0.063890144,-0.34752303,0.036439255,0.007083208,-0.12175009,-0.21223761,-0.3370601,-0.6512872,0.024522861,-0.12854238,-0.12914781,0.24186853],[0.26432735,-0.32675922,-0.7650313,-0.027757708,0.35079917,-0.76993525,0.14455345,0.25884274,-0.22133446,0.37703148,0.23170869,-1.0444877],[0.32937536,-0.13382863,0.48463398,-0.047336943,-0.27687612,0.23009335,-0.32501528,0.15273342,0.12341018,-0.33050254,-0.5033011,0.36793295],[0.019172277,-0.46311465,-0.47122756,0.3662296,-0.05598463,-0.45946774,0.11587991,0.16402873,0.065510325,-0.06082724,-0.52629966,-0.15041721],[0.13054866,-0.29858604,-0.38646755,-0.26892266,-0.3903054,0.10999007,-0.6066756,-0.27233317,-0.09195491,-0.39942724,-0.7569417,0.04020184]],"activation":"σ","dense_2_b":[[-0.024400406],[-0.012108642],[-0.2738606],[-0.06441908],[-0.035198342],[-0.17128238],[-0.2096501],[-0.047762156],[-0.16214791],[-0.025786025],[-0.21445137],[-0.25522697],[-0.14236587],[-0.06891089],[-0.11348295],[-0.27611488]]},{"dense_3_W":[[-0.045766644,0.39230958,0.35891584,-0.4291976,-0.04042154,-0.30131957,0.2852373,0.22184609,-0.26795706,-0.3909815,-0.0844706,0.004657081,-0.12571083,0.081972,0.22855265,0.14256158],[-0.0930191,0.18007645,-0.19445603,0.17205104,0.24538551,-0.04826821,-0.21634555,0.19088717,0.026500426,-0.15073289,0.2712199,-0.035126556,-0.12222757,0.20960063,-0.38159323,-0.14284025],[-0.441732,-0.15396653,0.03677415,0.3120023,0.011853378,-0.29715177,0.3207848,0.345577,0.13360831,-0.058848828,0.4174631,0.05521104,-0.1556204,0.2805419,-0.34175965,-0.33693245],[-0.4516799,-0.23317254,0.23108752,0.21102518,-0.030421874,-0.1663392,0.29930797,0.10362555,-0.08888556,0.30611843,-0.10012278,-0.13986777,0.23634678,-0.3123206,0.20500444,-0.192751],[-0.004745441,-0.43816042,-0.034584858,0.19766587,0.3116471,-0.03267742,-0.20999157,-0.20225246,-0.067765154,0.2848538,-0.16701016,-0.059503432,0.3308554,0.22440504,-0.3225443,0.05546478],[0.05413141,-0.3679634,-0.08688536,-0.07090988,-0.29120877,0.1316063,0.44080707,-0.16184773,0.20294042,0.20072685,-0.12445014,0.3804063,0.20178777,-0.13255891,-0.30791807,0.10261593],[0.38054186,-0.036883593,0.111167036,-0.15566286,-0.23951554,-0.059736684,0.5326792,-0.41414064,0.3691683,-0.09329605,0.22044435,-0.21697398,0.2869305,-0.39302784,-0.13643056,-0.27738827],[-0.14465772,-0.4031915,-0.17516668,0.13024601,-0.37880698,0.40701059,0.2547356,0.094646186,0.19080016,-0.40483093,-0.2865975,0.23534034,0.31190503,0.24550194,0.39888,-0.27389622],[0.36007127,-0.093776844,0.11617923,-0.02295303,-0.08457082,0.09956218,-0.013975839,-0.46377388,0.2146814,0.2755668,-0.09221034,0.035337944,0.20806664,0.042331383,0.2022907,-0.19461066],[0.39033055,-0.52232456,-0.25495735,-0.5319784,-0.31744576,0.6584618,0.81467754,0.12727821,0.33764753,-0.0022844106,-0.543308,-0.39109668,0.36655223,-0.5292826,0.4390524,-0.44351915],[-0.14593528,-0.040282447,-0.30888835,0.19295529,0.07064081,-0.39783165,0.039676864,-0.06879557,-0.39840496,0.19014457,0.04776782,0.38430482,-0.2741348,0.08051817,-0.14613572,-0.100173116],[0.17331427,-0.24296136,0.33474293,0.19222625,0.29851925,-0.30138525,-0.019168438,-0.2754576,-0.122989416,-0.0025447265,0.33477452,0.28567022,-0.3947916,-0.037584867,-0.15590495,0.3125137],[0.4101434,-0.3299672,0.28667036,-0.08923333,-0.16061012,0.0777971,0.38074505,-0.103880584,-0.117819495,-0.24564442,-0.4328198,-0.18800925,0.23287506,-0.29935506,-0.09091186,0.10900072],[-0.026216649,0.34356278,0.16383435,-0.20038186,-0.15712044,-0.15588541,-0.077189654,0.20966166,-0.1291972,0.14222729,-0.3434131,0.007533742,-0.06533606,0.09545395,-0.19654328,0.24315165],[0.43069547,0.045578357,-0.25710672,-0.111668326,-0.017155485,0.10505446,0.34679157,0.28005412,0.031709734,-0.30453283,-0.12727985,-0.057555404,0.06327874,-0.33901685,0.034049414,0.108673126],[0.016011784,0.0637642,-0.38568556,0.18072137,-0.3611924,0.30670312,0.05511325,-0.075690806,-0.39434642,0.079114,-0.19587561,0.1014485,0.40695387,0.0076808794,-0.15043128,0.121672675]],"activation":"identity","dense_3_b":[[0.01894022],[-0.0973606],[-0.005777353],[0.020744076],[-0.046186622],[0.00427233],[0.004350739],[-0.018349739],[-0.14396259],[-0.02958251],[0.038920324],[-0.017607786],[0.0048550465],[0.02556554],[-0.030977953],[0.034558125]]},{"dense_4_W":[[-0.006525211,-0.010181395,-0.1280271,-0.17862214,0.0013907425,0.17761578,0.55933243,0.20846461,0.03992837,0.16985804,-0.12210165,-0.014709531,0.4256174,-0.040674876,0.20955296,0.010441904]],"dense_4_b":[[-0.0021002437]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/GENESIS G70 2018 b'xf1x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106'.json b/selfdrive/car/torque_data/lat_models/GENESIS G70 2018 b'xf1x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106'.json deleted file mode 100755 index 8904b3bb61..0000000000 --- a/selfdrive/car/torque_data/lat_models/GENESIS G70 2018 b'xf1x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.67504],[0.83055073],[0.4504677],[0.031510424],[0.8270034],[0.8270758],[0.8283119],[0.82153946],[0.82032317],[0.8195808],[0.8197018],[0.03126837],[0.03131486],[0.031380102],[0.03158359],[0.03163829],[0.03178264],[0.031831454]],"model_test_loss":0.001804972067475319,"input_size":18,"current_date_and_time":"2023-08-05_16-18-44","input_mean":[[25.399244],[0.061304945],[-0.0003437192],[-0.017434629],[0.06381776],[0.06372736],[0.063848905],[0.063940406],[0.065443896],[0.06275638],[0.06494871],[-0.017370405],[-0.017361412],[-0.017346727],[-0.017236443],[-0.017156692],[-0.017259058],[-0.017420387]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0690558],[-0.77586544],[-0.22050455],[-0.00765285],[-0.19674423],[-0.8347951],[-0.09352683]],"dense_1_W":[[0.020506917,-0.15335819,-0.0008360731,0.6498087,0.17344612,1.1971287,-0.2960149,-0.4612594,0.17628047,-0.22166184,0.34056312,0.75876623,-0.24494657,-0.78779393,-0.5285824,-0.06854418,0.110915035,0.108071424],[-0.5525338,-0.18559927,-0.8664502,-0.19414489,0.32285878,0.104777955,0.32996055,-0.5476456,0.2609833,-0.6216712,0.30093062,-0.44722554,0.10542638,0.3017626,0.10288904,0.38855773,0.19561474,-0.3270897],[-0.14589511,0.20689815,-0.0024478706,0.35753623,0.29983085,0.30490085,0.19881076,-0.5439725,-0.055093203,0.23563561,0.10342807,0.18627505,0.009484609,-0.5248601,-0.15741313,0.25914413,-0.06266835,-0.051203806],[0.011763201,-0.32582518,1.6164731,0.1839908,-1.0310354,-0.51407796,1.5570961,-0.35941225,-0.24897343,-0.20450619,1.1247143,0.07288912,-0.09742617,-0.011884875,-0.3086428,0.21652025,0.033836115,-0.14367257],[-0.00040854778,1.1504747,0.00023197546,-0.15424743,0.40093625,-0.89857256,0.12767099,-0.9129619,-0.77709115,0.5045758,0.12572749,0.08928875,-0.0022053611,0.0144833615,-0.18096298,0.17682968,0.198336,0.16687107],[-0.62956375,0.0370336,0.90060794,0.16559666,-0.26498243,-0.0035898676,-0.3527606,0.6536402,-0.15629528,0.18882553,-0.04355473,-0.0017563448,0.060951266,-0.07628207,-0.10434113,-0.33889666,0.12719911,0.032956228],[0.00914529,0.18054785,2.2880237,0.2819539,-0.25446033,-0.76159877,-1.333457,-0.0044576577,0.7970225,1.3939439,-0.08412827,-0.21678115,0.40472636,0.022984171,-0.405091,0.08374549,-0.27028057,0.09941351]],"activation":"σ"},{"dense_2_W":[[0.7266154,0.32628095,0.51000977,-0.4783954,0.086360686,-0.22168429,-0.2880397],[0.598752,-0.3016096,0.5087822,-0.5399995,-0.5202169,0.058336493,0.047094647],[-0.28886208,0.44084644,0.1333289,0.47497818,-0.28537926,0.033592604,0.07091276],[-0.21188565,0.3598567,-0.25231984,-0.32756943,0.39144737,0.048175387,-0.13305938],[0.03274561,-0.55677044,-0.11253939,-0.013972536,-0.06857901,0.28146827,-0.55059713],[0.5122463,0.43594432,0.17488275,-0.720984,-0.17414498,0.51594955,-0.16287713],[0.14888862,0.06988386,-0.29811302,0.23327418,-0.44284585,-0.313677,0.414895],[-0.7221291,-0.33080924,0.34764898,-0.15981244,0.09235077,0.24312954,-0.6309208],[0.31931618,-0.16977033,0.4973229,0.31941646,-0.33441898,-0.25843173,-0.33283034],[0.081630506,0.19055562,-0.32433864,0.38465676,-0.35722488,-0.5474165,-0.25410983],[-0.5063781,0.4390191,0.057292584,0.41282323,0.40151483,-0.69037515,-0.13255808],[-0.89217335,0.3417005,0.13010992,0.39993486,0.0745399,-0.006703715,-0.55569714],[0.46920383,0.00090861076,-0.34466454,-0.62741935,-0.54203355,0.26534078,0.31966165]],"activation":"σ","dense_2_b":[[-0.0036245622],[-0.013149616],[-0.11431158],[-0.068017736],[-0.21495658],[-0.016385378],[0.016726723],[-0.063780464],[-0.0170552],[-0.06312584],[-0.066713385],[-0.08563329],[-0.023486812]]},{"dense_3_W":[[0.05525152,0.3041412,-0.26633847,-0.4607755,-0.50169283,-0.13767284,0.525694,0.027187727,-0.54194945,0.00530328,-0.29629645,0.06593012,-0.13549523],[0.20180804,0.22567257,0.099739715,-0.5508954,0.5213892,0.6428468,0.41780272,-0.44941857,0.57049906,-0.5196749,-0.44776997,-0.3975976,0.3711528],[-0.104158744,-0.27345514,-0.4545859,0.40854144,-0.49072927,-0.49170205,-0.3166091,0.23397347,0.61358595,-0.037754327,-0.2841472,-0.10350736,0.2719038]],"activation":"identity","dense_3_b":[[0.052092277],[0.035965864],[0.066190146]]},{"dense_4_W":[[0.8467955,1.0950449,0.25318098]],"dense_4_b":[[0.043908965]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/GENESIS G80 2017.json b/selfdrive/car/torque_data/lat_models/GENESIS G80 2017.json deleted file mode 100755 index 84e07c5900..0000000000 --- a/selfdrive/car/torque_data/lat_models/GENESIS G80 2017.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.38813],[1.0174526],[0.39554036],[0.046162203],[1.0090938],[1.0111505],[1.0117267],[1.0022837],[0.9907708],[0.9691922],[0.93781143],[0.045898493],[0.0458996],[0.045888968],[0.04573459],[0.045532204],[0.045233488],[0.044901755]],"model_test_loss":0.012157289311289787,"input_size":18,"current_date_and_time":"2023-08-05_16-43-40","input_mean":[[25.00623],[0.054802105],[0.011563125],[-0.012088739],[0.050388798],[0.05198936],[0.05343812],[0.056934483],[0.05857226],[0.05653321],[0.05339159],[-0.012127758],[-0.012105216],[-0.012089895],[-0.012095662],[-0.012160323],[-0.012418678],[-0.012670423]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.23510607],[0.017906608],[-0.09428025],[2.0587661],[2.4378984],[-0.2166746],[0.17629944]],"dense_1_W":[[-0.008606778,0.34109786,0.6875069,0.0028993126,0.8000613,0.546632,-0.9264688,0.03937569,0.13737564,-0.2733249,-0.96302414,0.339788,0.60886014,0.26368546,-0.23521979,-0.1668846,0.3196768,-0.15900844],[-0.0011819584,0.729729,2.0695696,0.20169054,-1.0443937,-0.5805483,-1.2778925,-1.3182445,0.7515108,1.8376803,0.88894564,0.9433448,0.60453916,-0.5198952,-0.27219102,-0.18214135,-0.32308298,-0.5258672],[-0.0007019058,-0.45617288,-0.058651116,-0.1715701,-0.1380315,-0.021959623,0.026901057,0.082620144,0.1911437,0.00152804,-0.042670403,-0.3032745,0.45580253,0.032131206,-0.2713613,0.3809063,-0.021339726,-0.046729088],[0.9848692,-2.0930884,0.05227474,0.14134067,-0.5008443,-0.51911664,-0.10874144,-0.11555108,0.059225876,-0.20209119,-0.5084024,0.119557716,-0.17086504,0.5155482,-0.2892066,-0.723269,0.19560312,0.18627037],[0.9442295,1.9961289,-0.05074522,-0.043404724,0.6943,0.59966326,-0.045782663,0.08436519,-0.1630318,0.05319531,0.67571694,-0.3004089,-0.12995596,-0.41098842,0.36848706,0.87160724,0.39175102,-0.7181419],[-0.0074142898,-0.04797374,0.64808965,0.55981237,0.49558824,0.63315,1.5447174,-0.5666181,-1.9028187,-1.1591543,0.67295575,-0.3617059,-0.2785844,0.52386093,0.78436995,0.022645274,0.30185598,-0.6463948],[-0.002286195,0.25007936,-0.027766582,-0.2213954,0.28290057,0.71661454,0.073331274,-0.017547475,-0.64222115,-0.2412949,0.5705157,0.31924602,-0.050814595,-0.45005983,-0.31452417,0.30082983,-0.56895506,0.3093173]],"activation":"σ"},{"dense_2_W":[[0.49283543,1.4813224,-1.1632105,1.1330808,1.6111002,-0.79484963,0.521326],[-0.45535,-0.27000293,0.20228699,-0.021973267,-0.20624182,-0.20179789,-0.0924967],[-0.6126425,0.12641166,0.12921864,0.18841244,0.22053215,-0.0732061,-0.6845349],[-0.44073936,-0.26221433,0.71035826,0.8264845,0.27127275,0.1522136,-0.40632126],[1.1533407,0.74939775,-0.74686474,-0.15980572,1.3828646,-0.47532186,-0.49893177],[-0.010718742,-0.49425468,0.57077384,0.52116805,-0.1557675,-0.2101485,0.1713434],[0.123579755,-0.003964546,0.37106356,0.31162402,-0.1109699,-0.013212317,-0.050931312],[0.46784705,0.20873305,-0.51459223,-0.12245424,-0.35924026,-0.6009022,0.7039142],[0.6885935,0.4780248,-0.95869493,-1.1940409,-0.37541804,-1.0116334,0.3657836],[-0.084950574,0.20079572,-0.6036541,-0.5749908,-0.4149406,-0.06347254,0.3201109],[0.6054816,-0.26072496,-0.6472537,-0.10404058,0.28988326,-0.7315275,0.71709865],[-0.46448785,0.027026115,0.68479264,-0.25374988,-0.82326454,0.63361776,-0.95420885],[0.4081272,0.4028123,-0.54246926,0.45891264,0.535415,-1.0074925,0.021217577]],"activation":"σ","dense_2_b":[[-0.31526598],[-0.04387461],[-0.012186167],[0.16261126],[-0.48067328],[0.021213803],[-0.06306296],[-0.18538073],[-0.3133758],[-0.33385947],[-0.30100945],[-0.1241097],[-0.03466007]]},{"dense_3_W":[[0.21734363,0.043079853,0.18524005,-0.2568567,0.15158817,-0.36534816,-0.34965506,-0.36512575,-0.06888381,-0.31225628,-0.10772074,-0.67586124,-0.20552121],[-0.5188872,-0.5363552,0.6651099,0.42919686,0.35317427,0.5209541,0.4917763,-0.62617296,0.0038265921,0.033600807,-0.36337307,0.619507,-0.45799708],[-0.20623821,0.2606718,0.049107946,0.78371567,-0.46874192,-0.036460795,-0.09059373,-0.622457,-0.82094365,-0.10458149,-0.10322752,0.7906474,-0.24749829]],"activation":"identity","dense_3_b":[[0.030028654],[0.035442725],[0.060197428]]},{"dense_4_W":[[0.047837973,-0.35243145,-1.0255531]],"dense_4_b":[[-0.05134228]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN b'xf1x00JW1 MDPS R 1.00 1.03 57700-CU100 1C02'.json b/selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN b'xf1x00JW1 MDPS R 1.00 1.03 57700-CU100 1C02'.json deleted file mode 100755 index 1a2b1b864e..0000000000 --- a/selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN b'xf1x00JW1 MDPS R 1.00 1.03 57700-CU100 1C02'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8666883],[1.3245112],[0.52562356],[0.052998435],[1.3207145],[1.3219501],[1.322223],[1.3074695],[1.2883352],[1.257932],[1.2234186],[0.0526958],[0.05277707],[0.052846666],[0.052899044],[0.052800883],[0.05247098],[0.05198219]],"model_test_loss":0.004962869919836521,"input_size":18,"current_date_and_time":"2023-08-05_17-34-41","input_mean":[[25.097816],[0.03033095],[0.009557012],[0.0017949705],[0.025300408],[0.02690665],[0.028368048],[0.032760378],[0.03126874],[0.0306388],[0.028780613],[0.0017470417],[0.001759046],[0.0017673858],[0.0017764169],[0.0017657065],[0.001777597],[0.0017051382]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.4459309],[-0.031835943],[-0.6412851],[1.5992996],[-1.8778602],[0.067136765],[-0.1248056]],"dense_1_W":[[0.23177835,0.5813533,-0.03405331,-0.5137932,0.4210262,0.27980956,-0.82241374,-0.19962446,0.11077991,-0.093077675,0.1452694,0.8414958,0.57338977,0.19254212,-0.737942,0.19993012,-0.20208997,-0.3420811],[-0.000672615,0.59404653,0.035378806,-0.02149494,-0.18110669,0.2673035,-0.31291944,0.18944205,0.16411953,-0.004739658,-0.18394397,0.08154405,-0.19406919,-0.35596544,-0.19057219,-0.75509447,0.12070875,0.52753425],[0.29864538,-0.47656062,0.03612531,-0.026517967,0.042197336,-0.7134168,0.7022738,0.3648459,-0.26705045,-0.120554686,0.0457595,-0.77211475,-0.1677129,-0.06930536,0.10366717,0.58520234,-0.1898025,0.50099725],[0.39080697,-0.61320007,-0.17329827,0.5142849,0.093346365,-0.8120696,0.27996528,0.053159885,-0.1457705,-0.18952872,0.0007353743,-0.23638912,-0.07647951,0.3922934,-0.42914188,-0.37108567,0.20613119,0.062412854],[-0.39423087,-0.40943775,-0.18895875,0.17182297,-0.6007384,-0.11699258,0.3204309,-0.2494266,-0.16516677,-0.13115573,-0.014376576,0.05930437,0.23952278,0.056292366,-0.34672272,-0.29824072,-0.15019956,0.32797214],[0.10670553,0.5959076,0.009395143,-0.41772658,0.22091666,0.25926113,-0.105012566,-0.24128042,-0.23561135,-0.16422139,0.39602,-0.030733602,0.1917602,-0.1896667,0.5195841,0.19198169,-0.09055647,-0.114016406],[0.004652841,-1.0700105,-4.301339,0.18097587,0.88896906,0.100279324,0.78191584,-0.1407951,-0.6152163,-0.36759338,0.3781233,-0.2559152,-0.22632733,0.0830458,0.30006638,0.070950896,-0.10994307,-0.077234626]],"activation":"σ"},{"dense_2_W":[[-0.59839344,-0.36497867,-0.02586302,-0.31546462,0.67249775,0.17433609,0.033796396],[0.7766115,0.40153167,-0.7150285,-0.80042535,-0.720546,0.31380758,0.4402431],[0.0970656,0.51849407,-0.65787846,-0.28156418,-0.7972932,0.52290595,0.16948703],[-0.16617168,-0.28093967,0.43271568,0.5635128,-0.15296243,0.05517985,0.5591824],[-0.07375612,0.9804654,-0.45864907,-0.011922217,-0.76456034,0.71113896,-0.17698406],[0.08965309,-0.3817331,0.56427354,0.22461765,0.36535984,-0.41643435,0.02309694],[-0.3194701,-0.9402775,0.035420515,1.0038631,-0.04493413,0.46595728,0.61562926],[0.3133922,0.54886144,0.20508583,-1.9232413,0.29925007,-0.15759094,-0.964843],[-0.07229484,-0.40885624,0.36455467,0.22989284,0.29330707,-0.23192556,-0.25334215],[-0.66204053,-0.6006576,0.46530548,0.8226111,-0.50858915,0.65410966,0.8907581],[0.062297866,-0.5300527,-0.24341863,-0.26440525,-1.0893056,0.6854048,-1.044881],[-0.3985859,-0.46718082,-0.12280806,0.5118322,0.58033365,-0.4268356,0.27308896],[0.66325355,1.5489223,-0.2619856,0.8496741,-1.5036632,0.18988253,-1.092742]],"activation":"σ","dense_2_b":[[-0.067070246],[-0.0031838221],[0.026247503],[0.016272478],[-0.05702159],[-0.06190444],[0.047330927],[-0.14584902],[-0.043730203],[0.10126568],[-0.23609862],[-0.107597634],[0.5373265]]},{"dense_3_W":[[-0.16748182,-0.4861085,-0.4175482,0.17064394,0.1626839,0.6020392,0.69299996,-0.7983646,-0.3389632,-0.22732152,0.15245983,0.19130903,-0.7817714],[0.16310972,-0.6437373,-0.5314633,0.23254934,-0.1725596,-0.4100144,0.43598408,-0.77505416,0.14245929,0.27584276,0.6299163,0.51607686,-0.5231239],[0.4058488,-0.5608606,-0.7491334,0.3631101,-0.32120687,0.37973177,-0.12449112,-0.1279431,0.57055753,0.59800303,-0.3972419,0.73630637,-0.36663607]],"activation":"identity","dense_3_b":[[0.12561505],[0.06481958],[0.04212058]]},{"dense_4_W":[[-0.47166833,-0.46609542,-0.5415291]],"dense_4_b":[[-0.052935593]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/GENESIS G70 2018.json b/selfdrive/car/torque_data/lat_models/GENESIS_G70.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/GENESIS G70 2018.json rename to selfdrive/car/torque_data/lat_models/GENESIS_G70.json diff --git a/selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN.json b/selfdrive/car/torque_data/lat_models/GENESIS_GV60_EV_1ST_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/GENESIS_GV60_EV_1ST_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/GENESIS GV70 1ST GEN.json b/selfdrive/car/torque_data/lat_models/GENESIS_GV70_1ST_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/GENESIS GV70 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/GENESIS_GV70_1ST_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/GMC ACADIA DENALI 2018.json b/selfdrive/car/torque_data/lat_models/GMC_ACADIA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/GMC ACADIA DENALI 2018.json rename to selfdrive/car/torque_data/lat_models/GMC_ACADIA.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA,A150x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA,A150x00x00'.json deleted file mode 100755 index 35fd803df5..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA,A150x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.97151],[0.74501616],[0.33569595],[0.028122501],[0.7403551],[0.73829293],[0.7401743],[0.7252648],[0.7144178],[0.7009765],[0.6888075],[0.028033128],[0.028054733],[0.028070904],[0.027984012],[0.027977224],[0.027935864],[0.027860973]],"model_test_loss":0.007779959123581648,"input_size":18,"current_date_and_time":"2023-08-05_18-55-32","input_mean":[[24.977537],[0.008342045],[0.002733684],[-0.0039678486],[0.0046404926],[0.00584171],[0.006370007],[0.008761067],[0.010619238],[0.012941762],[0.014379741],[-0.0040723],[-0.0040712818],[-0.004070556],[-0.004221088],[-0.004329774],[-0.0044895913],[-0.0046329168]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.06255275],[-0.10187155],[0.7811029],[0.5233844],[-1.1382071],[-0.1777123],[-1.2519176]],"dense_1_W":[[0.11130547,-4.7213726,-0.47437814,0.11127721,-0.18916543,-1.6377331,0.9418644,-1.1306248,-2.1403713,-1.7070324,-0.64424783,-0.33537778,-0.09433337,-0.21594714,-0.18122146,0.16977471,0.10330264,0.19049811],[-0.0004276181,0.6357742,0.05217043,-0.20857349,-0.80013305,1.4368694,0.5090257,-1.1573409,-0.36113778,-0.1694356,0.4889256,0.09562526,0.070235886,-0.3155261,0.23921712,0.034688536,-0.078639016,-0.010847355],[0.7599186,2.121532,0.72905946,-0.14806178,0.5078854,-1.3953625,0.24837576,-0.44519806,-0.4571781,-0.11445646,-0.1446055,0.013272849,-0.096724935,0.31767842,0.0024148482,-0.38241157,0.518821,-0.24625751],[0.6820916,-1.5524395,-0.7604904,-0.09014856,0.14045534,-0.09164528,-0.043247532,0.71089435,0.00785311,0.5674591,-0.06433367,-0.0075882818,0.078265265,-0.1252983,0.23067287,-0.24010041,0.17806269,-0.0014166064],[-0.5627969,1.037751,-0.86133707,-0.49025095,-0.46149084,-0.9962395,0.5214078,-0.56174046,-0.39522848,0.08022861,0.518166,-0.3117448,0.23640868,0.2056402,0.45708388,-0.06492579,-0.064152785,0.03409542],[0.13577399,0.5898029,-0.45204794,-0.57214713,-1.5238308,-0.8625397,-1.3790354,-3.5523987,-1.6210394,-1.4617451,-0.67999744,-0.4513496,-0.03868263,0.0944409,0.544846,-0.21822882,0.50802565,-0.085099295],[-0.68000346,-0.7993309,0.8909783,0.27740914,0.51246107,1.4516846,-1.2700812,0.45289844,0.44953805,0.022532407,-0.5839419,0.20553645,0.1257213,0.067001835,-0.839108,-0.08893746,0.19246873,0.060739163]],"activation":"σ"},{"dense_2_W":[[0.085230306,-0.29360268,0.51161885,0.23618865,0.6497735,-0.26098794,-1.0364774],[-0.22014649,-0.24637136,-0.42513672,0.5623381,-0.12819354,0.14416225,-0.39033532],[0.7196067,-0.34021074,-0.5724672,-0.37321565,0.49308595,-0.9088214,-0.8430574],[0.19003648,-0.14491072,-0.39664307,0.27051845,0.005819935,0.22110407,-0.15665153],[-0.34837252,-0.96703774,-0.14450067,-0.3116821,0.3658192,0.21894221,-0.35829273],[0.11697895,-1.0484563,0.5595325,-0.5593309,0.18357657,-1.3186389,-0.31535873],[-0.3179443,0.6616187,-0.046228375,0.5932086,-0.54266274,0.59215814,0.18800579],[0.13047467,0.6949298,-0.24352126,0.11897494,0.0057367617,0.66297096,-0.010114408],[1.5367961,-1.7399038,-0.69597286,-1.7319793,1.36763,-0.45350328,-0.15131596],[-0.32002783,-0.03297229,-0.607617,-0.49017462,0.34876344,-0.28122258,0.258027],[0.36292878,-0.3491634,1.0256252,0.7740448,0.7382758,0.10291141,-0.99806124],[0.6031384,-1.1245648,0.40815106,0.7438041,0.6337614,0.10372877,-0.10575027],[-0.57705086,0.21220624,0.038151897,-0.33815548,0.2740102,0.01581186,0.541243]],"activation":"σ","dense_2_b":[[0.012299448],[-0.04102267],[-0.034108546],[-0.27925974],[-0.0057511167],[-0.22451408],[0.009193072],[0.0060836924],[-0.31634617],[-0.062315367],[0.12637672],[0.0059941616],[-0.06976539]]},{"dense_3_W":[[-0.20017228,-0.14052714,0.03923989,-0.60445774,-0.04527449,-0.12592994,-0.66201633,-0.54722226,0.1441803,-0.37791568,0.04386546,0.50280595,-0.020515436],[0.35166073,-0.20586215,0.5838703,0.58067,0.55858165,0.3304557,-0.64685065,0.090058595,0.35607472,-0.38356113,0.3500607,-0.088301666,-0.022835555],[0.54761213,0.07857258,-0.34005758,-0.28216037,0.5361241,0.3974213,-0.26704797,-0.3374281,0.6506741,0.3128651,0.540587,0.5345023,-0.60392904]],"activation":"identity","dense_3_b":[[-0.029276293],[-0.044624712],[-0.05815794]]},{"dense_4_W":[[-0.9044067,-1.1482185,-0.6116598]],"dense_4_b":[[0.036644172]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A140x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A140x00x00'.json deleted file mode 100755 index ab8badd20d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A140x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.992972],[0.761277],[0.33648303],[0.042408932],[0.76959854],[0.76725096],[0.7643645],[0.74037844],[0.7259183],[0.7094538],[0.6951536],[0.04228616],[0.042296555],[0.042313654],[0.042262528],[0.042218875],[0.04204096],[0.041743096]],"model_test_loss":0.02265222929418087,"input_size":18,"current_date_and_time":"2023-08-05_19-20-20","input_mean":[[24.21027],[-0.02817834],[0.013860759],[-0.0006401126],[-0.0324325],[-0.03152595],[-0.030524159],[-0.02442753],[-0.018565625],[-0.009745938],[-0.003067271],[-0.0006674106],[-0.0006681617],[-0.0006630953],[-0.0007476516],[-0.0006563686],[-0.0006758302],[-0.0007831018]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[3.7685766],[2.8427706],[-3.8559403],[-0.14407404],[-0.054108057],[-2.4449306],[-3.0141466]],"dense_1_W":[[1.8801908,1.4156594,-1.0323609,0.79236954,-0.80337536,0.58097416,-2.2510185,-0.1828844,0.15489013,0.27806175,0.015761895,0.25713542,-0.2735746,-0.14071672,-0.46098727,-0.13111337,-0.45133302,0.4580773],[1.8035195,1.6041955,0.8874118,-0.80396426,0.22453892,1.6733601,-2.4467292,-0.14284624,0.12720221,-0.07064604,-0.26454973,-0.114142805,0.27872777,-0.03267202,0.5485695,0.4108842,-0.18058304,-0.14545393],[-1.8154907,2.1600099,0.97071725,-0.58187705,0.003728732,2.3155384,-3.23783,-0.1090358,-0.13879994,0.10283042,-0.3239596,-0.13651542,0.10076348,0.14383954,0.36411935,0.49005857,-0.4234995,0.0010333508],[-0.013895141,-0.54229933,0.02395054,0.39421257,-0.9302867,3.529645,-1.1669548,-0.33310902,0.19925158,0.15934487,0.121357955,-0.34288648,0.6551107,-0.052651346,-1.2509402,-0.32869434,0.3425414,0.025959644],[0.038595013,1.9379244,3.9255502,-1.687313,0.69473827,1.657322,-2.1877844,1.0006453,-0.80904555,-1.0939405,-0.70684177,0.2738023,-0.4664105,-0.3705315,2.6731036,0.44496182,-0.3791093,-0.48865584],[-0.115257055,9.220496,-3.8134823,-4.2458467,9.2529545,9.778793,8.01551,7.5823874,4.997883,4.0989575,1.6614507,0.40712392,0.81142205,1.4502381,0.9823255,0.6349457,0.30227003,-0.36331397],[0.76528615,1.8912066,0.4003822,0.42052475,1.0807861,1.2272604,-0.09050154,0.26065364,0.34981024,0.48282778,-0.016957628,-0.016907506,0.46985832,-0.25855386,-1.092362,-0.57151246,-0.62681884,0.43833002]],"activation":"σ"},{"dense_2_W":[[-0.50458944,0.3265226,1.3503221,1.1455716,-0.24126105,0.30343592,-0.24365348],[-0.6311094,-0.504272,0.38552013,-1.1871966,-0.15529175,-0.5199216,-0.23288444],[-0.85456246,-1.0671792,-0.5235838,-0.058778144,-0.83717144,-0.25111958,0.6668136],[-0.18605676,-0.37535578,0.26066002,0.40830556,-0.26472908,-0.5714715,-0.4442903],[0.23003292,-1.1301463,-2.4274843,-0.6968535,-0.33779627,0.40726957,-0.7347456],[1.0467806,0.18329021,0.09319784,1.1631411,-0.15507531,0.493985,0.5579849],[-0.08045475,-0.05917078,-0.4645429,-0.6068606,-0.0685764,-0.17900154,-0.62299603],[-0.42154956,0.20449437,-0.698377,-1.0489599,-0.028300853,0.43246627,0.25651544],[-0.19329518,-0.8510341,1.2749082,1.3596451,0.8580042,0.60158896,-0.30835444],[1.9168442,2.0033686,-1.2564323,-0.30960408,1.3287855,2.8171167,0.6671751],[-1.4893216,-1.6534694,0.564758,0.19810775,-1.1537246,-2.037296,0.047834612],[-0.201097,-0.20977359,0.9980199,0.017591937,0.5220423,-0.32709578,-0.040991563],[-0.76144993,-0.66945726,-1.386429,-0.21879196,0.1684756,-0.07748325,-0.59191686]],"activation":"σ","dense_2_b":[[-0.7321166],[0.11477704],[0.19248009],[-0.20476317],[-0.01635628],[-0.306795],[0.14476658],[0.30890986],[-2.4419878],[-0.5385942],[0.10476772],[-0.5766014],[0.20005944]]},{"dense_3_W":[[-0.0791274,-0.7011603,-0.44377816,0.48128963,-0.21547104,0.16660322,-0.2547173,-0.44273084,0.101601996,-0.053882852,0.19060013,-0.3184192,-0.04856416],[0.54122835,-0.97574085,-0.4281066,0.53716606,-0.91660917,0.52668923,-0.25096038,-1.0447183,0.5229288,0.3251163,-0.78397036,0.10469802,-0.14347981],[0.17414881,-0.19212788,-0.57071036,-0.3887359,-0.38976607,0.53497523,-0.30920812,-0.97329575,0.73605007,0.53398937,-0.44441673,0.50344443,-0.57531935]],"activation":"identity","dense_3_b":[[-0.070742786],[-0.16557649],[-0.13552403]]},{"dense_4_W":[[0.26535642,0.6260712,1.0967736]],"dense_4_b":[[-0.12048781]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A150x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A150x00x00'.json deleted file mode 100755 index 63d3b65564..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A150x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.9692955],[1.0462041],[0.34472412],[0.04641226],[1.0452274],[1.0453075],[1.0450946],[1.024636],[1.0050676],[0.97589207],[0.9462255],[0.046267003],[0.046294868],[0.046317346],[0.04618255],[0.045980483],[0.04564968],[0.045252338]],"model_test_loss":0.03223121911287308,"input_size":18,"current_date_and_time":"2023-08-05_19-47-05","input_mean":[[26.72697],[0.015196333],[0.008158946],[-0.0072922846],[0.016061665],[0.01694688],[0.017287692],[0.020473402],[0.024061868],[0.02608422],[0.026487894],[-0.0072585293],[-0.0072514866],[-0.0072510433],[-0.007187894],[-0.0071194707],[-0.007084319],[-0.007147751]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.0053709066],[-0.069100745],[-0.24173476],[0.018720765],[-2.658498],[0.08992927],[2.6063461]],"dense_1_W":[[-0.7797147,-0.24583623,-0.88254195,0.0173836,-0.50750786,0.37038887,-0.8329198,-0.342489,0.24630426,0.21707475,-0.047959063,0.47431317,-0.025067769,-0.41275406,-0.17909347,-0.19092616,0.17230788,0.10136766],[-0.0012605502,-0.5430936,1.951147e-5,-0.18644217,0.56073266,-1.5806167,0.08031272,0.4637494,0.53803164,0.043792747,-0.41318613,-0.3511995,0.12757961,0.05843077,0.29561853,0.32287258,0.29052848,-0.35279953],[-0.015627703,1.0913446,5.4548607,0.0019527893,0.9042406,1.312217,-0.92229325,0.8994472,0.37474668,-0.73789614,-2.0389037,0.49409056,0.22369379,-0.06340535,-0.74901664,-0.085118875,0.23661421,0.09581273],[-0.022811597,0.30691484,0.77790153,-0.02884179,0.04066356,1.4911604,-1.467617,0.43204272,0.48140588,0.09566626,-0.42150202,0.3869267,-0.04126597,-0.44423687,-0.16106682,0.30693826,0.23328182,-0.23946704],[-1.2928423,0.067281894,-0.6787146,0.3759086,0.24533954,-0.6795638,0.03710647,-0.2054399,-0.6824192,-0.3679239,0.65891474,-0.48138765,0.090168886,0.6424454,-0.5723904,-0.41047156,0.18585621,0.14156008],[0.68296534,-0.64913756,-0.82184064,0.2655869,-0.41704178,0.9174468,-1.6555954,0.287859,0.48787528,0.13453256,-0.17992531,0.38143292,-0.23726897,-0.35850066,-0.29180393,0.050075218,0.19315714,-0.028771134],[1.3216897,-0.29175788,-0.6859045,0.14724936,0.10884442,-0.5644274,0.24575797,-0.0428606,-0.6327769,-0.36707297,0.61235654,-0.16210133,-0.01487571,0.30677927,-0.28883606,-0.2559978,0.18417324,0.053345177]],"activation":"σ"},{"dense_2_W":[[-0.103882276,0.31470892,-1.8375779,-0.534572,1.2007096,-1.7940954,-0.37573653],[-0.63279027,0.9299332,-0.111214824,-0.7431275,0.8024956,-0.55281454,0.28450286],[-0.43225008,0.60088736,-0.26085025,-0.39814708,-0.08506316,0.01633656,0.33291754],[0.039310254,0.47769195,-0.5393823,-1.6670729,1.3035929,-1.0608637,0.5870348],[-0.1174263,-0.97375834,-0.027412066,0.6608341,-0.37277678,-0.4925518,0.28332362],[0.13831323,-1.0317672,4.1466556e-6,0.27205467,-0.22654021,0.6352973,-0.3061979],[0.68478835,-1.1200122,0.49105233,0.0025720224,0.11970721,-0.31467515,-1.128045],[0.11189791,0.6215034,-0.6437067,-0.7515869,0.058660362,-0.32508639,-0.108250536],[-0.5286013,-0.16399997,0.6210019,0.64366394,0.22958006,0.18419576,-0.4012846],[-0.70348305,1.2658945,0.02501988,-0.935665,0.26696518,-0.5101827,0.6538908],[-0.21789736,0.6723394,-0.08539437,-0.8460047,-0.17483915,-0.37412062,0.7993581],[-0.8686919,-0.66447544,-0.6087589,0.24117005,-0.79812706,-0.9840042,1.0074927],[0.6557862,-1.2507699,-0.37768507,1.1560878,-0.24072878,0.6311272,-0.6242684]],"activation":"σ","dense_2_b":[[-0.19177495],[-0.112480655],[-0.089774124],[-0.34718063],[-0.112820394],[0.057589203],[-0.093300395],[-0.1753979],[0.019089865],[-0.034315366],[-0.085869856],[-0.38535318],[0.14190724]]},{"dense_3_W":[[0.5097348,0.67754096,0.52962065,0.04817331,-0.6922436,-0.36220315,-0.4028201,-0.46196294,-0.2545076,0.557987,0.46720836,-0.22117886,-0.4909693],[-0.46042284,-0.23727898,-0.3391561,0.04250506,0.65917873,0.33226073,0.61423135,-0.32596922,0.18013869,-0.7446482,-0.4805382,0.3051152,0.55622435],[0.6239629,0.6955541,-0.18727995,0.826164,0.35150817,-0.6036857,-0.46225572,0.246462,-0.12272623,0.59749544,0.039747227,-0.07667652,-0.95489794]],"activation":"identity","dense_3_b":[[-0.0060902396],[0.04111355],[-0.06983808]]},{"dense_4_W":[[-0.19373165,0.73869556,-0.8776082]],"dense_4_b":[[0.047680747]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A160x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A160x00x00'.json deleted file mode 100755 index cb334ad936..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A160x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.49194],[1.0090374],[0.32741097],[0.04503255],[1.0046614],[1.0036002],[1.0027647],[0.9775086],[0.9545954],[0.92410934],[0.8945295],[0.04490622],[0.04489754],[0.044878017],[0.044477623],[0.044133097],[0.043632846],[0.043093666]],"model_test_loss":0.033570460975170135,"input_size":18,"current_date_and_time":"2023-08-05_20-15-32","input_mean":[[26.035246],[0.045233466],[0.010294131],[-0.0072865174],[0.044775],[0.04602094],[0.047530252],[0.051602263],[0.055537395],[0.058699816],[0.059884205],[-0.007372401],[-0.007366469],[-0.0073642046],[-0.0073072882],[-0.0073471284],[-0.007360663],[-0.007469154]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09299513],[0.99559826],[2.2766173],[-3.9771109],[0.12520352],[2.4193058],[2.7656164]],"dense_1_W":[[0.008882242,-0.5422807,-0.0002336353,0.01617526,0.8583874,-2.4942827,1.4216851,0.1248724,-0.13589047,-0.066334665,0.02762919,-0.4940848,-0.12450009,0.18496531,0.49923882,0.27323833,0.054380663,-0.27277908],[-0.15047085,11.108585,8.433331,3.1956594,1.8067094,3.30043,2.734295,3.0606732,3.369255,1.1053773,0.6848547,-1.8516142,-1.1967942,-1.1085081,1.346842,2.6222417,-1.195061,-1.624805],[1.3133404,-0.12083638,0.0007961169,-0.23202601,0.6129334,-1.6041852,0.99454767,0.15254462,0.20371678,0.24268706,-0.3928021,0.049325507,-0.054227505,0.55261385,0.059264336,-0.5856581,-0.03817136,0.28743318],[-1.9012314,1.385867,-2.025853,-1.0055757,-0.64875823,-1.7402864,-0.42040223,-1.4739327,-0.64548254,-0.48058653,0.87804145,-0.050029688,0.5145021,1.2076339,-0.2322068,-0.68835676,0.28086215,0.25951275],[-0.038164284,-0.08451804,3.1345243,0.2487556,1.0404258,1.7846637,-1.8702495,1.0127681,1.2862203,-0.032533776,-1.9886582,0.072810635,0.18250643,-0.6539082,-0.2870161,0.005425706,0.010262065,0.17513292],[1.34946,0.29742,0.00049295614,-0.22644196,-0.42795974,0.8740508,-0.4660372,-0.6542262,0.14851026,-0.060079012,0.21750873,0.15181087,0.2850322,-0.53175086,0.41612315,-0.11555391,-0.049993888,0.019541081],[1.7984701,0.3795027,-1.8703946,0.18217215,-0.52728933,-1.2252984,-0.2807449,-0.83578867,-0.8151141,-0.3777622,0.8302332,-0.33189002,-0.012024458,0.4554754,-0.05377574,0.08181595,0.11449017,-0.13549945]],"activation":"σ"},{"dense_2_W":[[0.30057818,-0.5125399,0.08678791,0.5703662,-0.16577314,-0.51497936,-0.59201944],[-1.3349988,0.17055506,-0.40969828,0.1002354,-0.40812024,0.7593544,-0.021026442],[-1.3476006,-0.307753,-0.39836642,0.32035866,0.34645033,0.6541528,-0.11978619],[1.0706519,-0.11172953,0.13594998,-0.31495008,-0.17336859,-0.90303296,0.30903512],[0.11788255,-2.1570463,-1.473401,2.0036843,-0.18897057,-2.3958793,-0.489127],[-0.21737087,0.70327544,-2.0328362,-0.14981914,0.34608698,-0.9596065,-1.543088],[0.7181709,-0.18646976,0.84519434,-0.08900306,-0.12886512,-0.6509856,-0.035224058],[-1.3900654,-0.39416093,0.0057178154,-0.22539444,0.1284596,0.5915423,0.25858587],[0.40323433,-1.4929813,2.3567243,-0.35257843,-0.23848845,1.4922398,2.6448793],[-0.3958001,-0.25138742,0.13818374,0.0016877509,-0.07190418,-0.27509594,0.43224633],[-1.0602188,-0.05900237,-0.8719072,0.28974754,0.6910853,-0.03215386,-0.3785859],[0.6947681,-0.27714795,0.06559979,0.9486355,-1.0534314,-1.2011576,-0.5980476],[-0.08220092,-0.34411815,-1.0552499,-0.42018646,-0.3000449,0.052615464,-0.306543]],"activation":"σ","dense_2_b":[[-0.4391624],[0.23300678],[0.056632668],[-0.34913296],[-0.46800882],[-0.24273382],[-0.2016009],[0.15158728],[0.24031189],[-0.49144945],[0.21675928],[-0.42321655],[-0.055365965]]},{"dense_3_W":[[0.25063983,-0.8822437,-0.051102765,0.49928358,1.177921,-1.1238751,0.28403863,-0.6484505,0.8230714,-0.17540641,-0.6073617,0.35004044,0.10672483],[0.3259577,0.17100744,-0.71396255,-0.010511353,0.86950207,-0.7843216,0.55835444,-0.5223806,0.10780978,0.22867572,-0.6069358,0.73018676,-0.6146279],[-0.26045316,0.07879293,-0.5699643,-0.46051645,-0.0956609,0.3587972,0.029547071,-0.5279882,0.38736728,0.37889102,0.40453973,0.2636936,0.11244217]],"activation":"identity","dense_3_b":[[-0.107788354],[-0.055486],[-0.051283088]]},{"dense_4_W":[[-1.1602503,-0.75891525,-0.0110743595]],"dense_4_b":[[0.06482917]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A340x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A340x00x00'.json deleted file mode 100755 index 7def5a2d03..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A340x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.285257],[0.90969217],[0.3262842],[0.04224495],[0.90321463],[0.9048089],[0.90605587],[0.8943948],[0.880907],[0.86333126],[0.8418114],[0.04201932],[0.042064562],[0.042102545],[0.042084828],[0.041905332],[0.041611735],[0.041251395]],"model_test_loss":0.016588984057307243,"input_size":18,"current_date_and_time":"2023-08-05_20-42-14","input_mean":[[26.176859],[0.00011118907],[-0.004803623],[-0.0135722],[0.001126639],[0.00071867846],[0.00035347088],[-0.0023926632],[-0.0049975757],[-0.004179076],[-0.0032093525],[-0.01355709],[-0.013565135],[-0.013578342],[-0.01361649],[-0.013766948],[-0.013810823],[-0.01394108]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.5828786],[-0.42487454],[-0.5860775],[-0.3924228],[-4.156905],[-0.060464315],[1.6714457]],"dense_1_W":[[-1.2391292,-0.7255202,-0.7149997,0.16955006,0.43161064,-1.5196625,1.2468553,-0.071515016,-0.041017335,0.027320042,0.08827585,-0.62211466,0.2565574,0.14729472,0.09935687,-0.08157328,-0.15545787,0.21235037],[0.54294,-0.9017544,-0.0015285303,-0.2486782,-0.37458047,1.867659,0.01736451,-0.52015305,0.17510238,0.05885162,0.15736608,0.7702755,0.0045363996,-0.46379182,-0.20661989,-0.33729848,0.1395115,0.17314467],[0.6333146,-0.64309436,-0.0016357203,-0.30024365,0.29567558,-1.1414801,0.6359127,0.46182653,-0.16813087,0.29373816,-0.25674814,0.16211522,0.2612078,-0.11247607,-0.17053197,0.25727552,0.15015963,-0.07780689],[0.08204409,-5.296336,-0.19631286,-0.30446285,-0.9166598,-1.578382,-0.9072005,-1.8740348,0.8618472,-2.1606903,-2.506682,-0.087750815,0.7405412,-0.10877983,-0.024537828,-0.5145231,-0.0984921,0.3776963],[-1.5639482,0.6270082,0.92740273,0.1320447,-0.30681872,0.91045624,-0.56207407,-0.07224428,0.57218313,-0.25058916,-0.15184608,0.48521915,-0.37326074,-0.096426256,-0.2717795,0.17715892,0.36343423,-0.44790557],[-0.019131253,0.82311773,1.8916593,0.21888073,-0.06414682,1.3677776,-1.2980947,0.51103127,-0.04186381,0.18803987,-1.2860446,0.67675817,0.24575692,-0.7166477,-0.42896202,-0.12064442,0.21754202,0.05445969],[1.5609717,0.27270493,0.9630874,0.08518879,1.0404123,-0.8161039,0.7068876,-0.20095998,-0.16304882,-0.29293203,0.28063586,-0.076921694,0.19091095,0.4278214,-0.5607254,-0.02762551,-0.001111984,-0.07030928]],"activation":"σ"},{"dense_2_W":[[0.2804132,-0.13895643,-0.23771775,0.47444814,-0.51085377,0.21878356,0.58479327],[-0.08321861,0.14579421,0.2814126,0.52304,-0.293537,-0.47646093,0.5845127],[0.26914057,-0.34944284,0.74141604,0.1236916,-0.09920406,-0.060909335,-0.06005805],[-1.4356169,-0.5180524,-0.72453684,-2.6035,1.435797,0.60814214,-2.9555132],[0.64786196,-0.09151601,0.47274497,-0.39977676,0.17197065,0.18651703,-0.16694967],[-0.80667734,0.9907132,-0.91753274,-0.005180825,0.22297877,0.24063785,0.1417271],[0.20353276,0.099244505,-0.029554786,0.5615652,-0.33194682,-0.45568216,0.16432087],[-1.2388202,0.42652553,-0.1761103,0.36473453,-0.060970604,0.45147756,-0.7594475],[0.012322099,-0.51204675,0.38572678,0.2549631,-0.4418449,-0.29435337,-0.19872236],[0.077596396,-0.70494324,0.2179608,-0.23151939,-0.16577247,0.16438329,-0.37517852],[0.20178632,-0.62199104,0.48660368,-0.2870354,-0.6407446,0.41582656,-0.29254413],[-1.0518187,1.1063659,-0.7544956,0.10702813,0.74395657,0.15702203,-0.1864767],[-0.63775724,0.34627312,-0.8619933,0.04293425,0.6597697,0.645077,-0.7322161]],"activation":"σ","dense_2_b":[[-0.001978294],[-0.009128096],[-0.017481709],[-0.4458992],[-0.015151555],[0.05412811],[-0.004844698],[-0.04905217],[0.017835202],[-0.26468143],[0.030852908],[-0.028026102],[-0.08113619]]},{"dense_3_W":[[-0.10027717,-0.504976,-0.472057,-0.09842345,-0.41717574,-0.31354278,0.41566893,0.29177436,0.5562917,0.4179752,-0.17883797,0.6059956,0.37823814],[0.060615566,0.5161335,0.050068315,0.41364664,-0.19892827,0.60002375,-0.19573946,0.4755645,-0.5418251,0.06393862,0.15766098,0.7054907,-0.1107634],[-0.44845265,-0.60228455,-0.46412948,0.21494012,0.00026316356,0.37754428,-0.21720393,0.6286488,-0.5957711,-0.18741381,-0.5058221,0.7328814,0.5197948]],"activation":"identity","dense_3_b":[[-0.029418001],[-0.060718555],[-0.032819174]]},{"dense_4_W":[[0.072936475,0.9442555,1.3265595]],"dense_4_b":[[-0.036884606]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A150x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A150x00x00'.json deleted file mode 100755 index 041149b412..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A150x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3568473],[0.6368644],[0.3621445],[0.028429369],[0.62337],[0.62633],[0.63082033],[0.62320864],[0.6176417],[0.609843],[0.602721],[0.028280454],[0.028343052],[0.02838899],[0.028202886],[0.028042728],[0.027971348],[0.027896484]],"model_test_loss":0.02074519358575344,"input_size":18,"current_date_and_time":"2023-08-05_21-36-06","input_mean":[[26.268566],[0.014088257],[-0.00889927],[0.0067222156],[0.017173024],[0.01741099],[0.016948618],[0.01863091],[0.019397574],[0.02196835],[0.023213096],[0.00668622],[0.0066892426],[0.0066930084],[0.0068618897],[0.0069062025],[0.006895933],[0.0069377027]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.1995587],[-0.47429535],[0.19334412],[-0.21672982],[-0.27716032],[5.8877892],[-6.008035]],"dense_1_W":[[0.0005194978,-0.65315354,-0.057737853,-0.39396256,0.30802312,-0.3239047,-0.3970071,0.88091785,0.6602338,-0.077789664,-0.5863329,-0.12479964,-0.2263099,-0.25829545,0.61697304,-0.15929471,0.24446645,0.021373697],[0.5315006,-0.45457247,-1.5373756,-0.22400512,-0.48288196,-0.21536522,0.08653377,-0.15771005,0.08480614,-0.34505862,0.6252429,0.2198124,-0.3875561,0.6826408,-0.26497376,-0.31600574,0.32690576,0.039243232],[-0.011016559,-0.22290792,0.047274135,0.31294435,0.36215684,-1.1929703,0.9624354,0.27155292,-0.23349008,0.23899989,0.012858517,-0.025381617,0.097487696,0.21736427,-0.060409587,-0.03895033,-0.039632954,-0.16827586],[0.007530679,0.6272331,-5.9082806e-5,-0.50064355,0.1890715,-1.4997022,0.2494477,0.34411368,-0.11911669,-0.1729306,-0.111411996,-0.31751806,0.31902125,0.4071708,0.19330676,0.046474922,-0.055167746,0.06530873],[0.06477413,-0.4143308,-1.1347487,0.49881503,0.3372273,-1.0338107,1.5387237,-1.2813011,-0.96986556,-0.06861591,1.1139094,-0.5686622,-0.1382266,0.59405875,-0.5119853,0.44440156,-0.27856424,0.061716564],[2.6618116,-2.6944232,-1.6849242,0.2943839,-1.2206858,-1.6760917,3.2621088,-1.346089,0.12785757,0.65797406,0.23447312,-0.2641723,-0.09202524,1.2026188,-0.35406348,-0.22568066,-0.22311862,0.33460006],[-2.524092,-1.1037054,-1.5745661,0.34811226,-1.0722256,-1.469448,1.1310738,-0.79519266,0.23566909,0.520147,0.04779183,0.06821212,-0.044598527,0.48379797,-0.09668029,-0.31965488,-0.022990584,0.22089563]],"activation":"σ"},{"dense_2_W":[[0.1452953,0.44373477,-0.37055212,-1.237667,-0.33072272,0.5906958,-0.72541124],[0.6050153,0.18081863,0.3219009,0.53810394,-0.27058914,0.5653902,0.39473966],[0.0072378046,0.33330625,-0.50146735,0.26918072,0.094004184,-1.0713059,-1.8176602],[-0.7740321,0.14885269,-0.049412318,-0.6021773,-0.15935902,-0.29204068,-0.23126967],[0.75276387,0.49135745,0.13820073,0.2738786,0.5364459,-0.13695998,0.109765306],[-0.495929,-0.5069509,-0.6110922,0.14872241,-0.74613875,-0.9538579,-0.4567764],[-1.0281471,0.62180805,-0.96085227,-1.6853067,0.018576303,-0.8588159,0.68361557],[0.42588946,-0.26907757,0.23912542,-0.06811771,-0.74220026,-0.27280283,-1.2218596],[-1.1149594,0.066279486,-0.9029124,-0.71226245,-0.06838502,-0.7946668,0.5717353],[0.45661336,-0.17646663,0.58106536,0.08798294,0.60043395,-0.07761284,0.7525004],[0.30987135,0.21097131,-0.16904172,-0.14777327,-0.11339709,-0.52481216,-0.03865954],[-0.060135614,0.019844456,-0.67346084,-0.35991776,-0.121882424,-0.61238956,-0.2918601],[-0.02398618,0.007916715,-0.40608528,-1.0254555,-0.35098127,0.23078367,-0.19067071]],"activation":"σ","dense_2_b":[[0.23936874],[-0.3634644],[-0.44582018],[0.06315371],[-0.2324115],[0.027791763],[0.3565209],[0.23263572],[0.25501364],[-0.33273873],[-0.29837456],[-0.15084697],[0.25726482]]},{"dense_3_W":[[0.046232812,-0.440931,-0.15037328,0.43493935,-0.51912284,0.045042932,0.88925415,0.14369765,0.78630996,-0.7177186,-0.17527293,0.22752169,0.6153992],[-0.54912806,0.433324,-0.35273063,-0.044021495,0.6402973,-0.35384876,-0.6985052,-0.6068913,-0.81778973,0.5319122,-0.07269251,0.13063483,-0.69683],[0.5169438,-0.35359862,-0.10132895,0.11897226,-0.085469395,-0.16861942,-0.08650058,0.37113622,0.70226514,-0.23939428,-0.13833824,0.02503397,0.38701722]],"activation":"identity","dense_3_b":[[0.04381452],[-0.016084831],[-0.0028816245]]},{"dense_4_W":[[0.72029024,-1.1095761,0.230978]],"dense_4_b":[[0.024953682]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A160x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A160x00x00'.json deleted file mode 100755 index 0583af9d50..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A160x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.052148],[0.99393505],[0.34106338],[0.043077335],[0.9844239],[0.98582995],[0.9884839],[0.9738173],[0.9590651],[0.93786967],[0.91432065],[0.042897582],[0.042924967],[0.0429479],[0.042887576],[0.042719226],[0.042463634],[0.042128034]],"model_test_loss":0.02400932088494301,"input_size":18,"current_date_and_time":"2023-08-05_22-02-42","input_mean":[[26.74306],[0.04475667],[0.0005680814],[0.005798226],[0.042986136],[0.042365443],[0.042118706],[0.042853605],[0.043510012],[0.047170512],[0.0480464],[0.005632593],[0.00564793],[0.0056592273],[0.0056284214],[0.0056102416],[0.00559482],[0.0054539493]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.14669883],[2.0542202],[3.5631552],[-2.4476655],[-1.6368238],[-0.08192704],[-0.12643908]],"dense_1_W":[[-0.002688858,0.903495,-0.0039008197,0.536614,-1.0010473,2.6391416,-1.4351965,-0.39022684,0.040289626,0.0038532107,0.1117465,-0.15723981,0.1849457,-0.3804201,-0.23395342,-0.027777348,-0.09085117,0.051439773],[1.4187059,-0.71839726,-1.4857477,-0.35429287,-0.29257032,-2.1014547,0.87460905,-0.5020713,-0.10428327,-0.08505193,1.1532818,0.29176822,0.12277781,0.4743827,0.03149446,0.2719759,-0.03777604,0.085584775],[1.8566557,-0.24062611,-0.0011948039,-0.101594344,0.04939513,0.19952813,-0.5482559,0.44138482,0.08667071,0.23756696,-0.270445,0.122838944,0.38297632,-0.2767516,-0.02534552,-0.11921599,-0.26003793,0.28193194],[-0.0047300863,-6.341346,0.008009274,4.7131796,-6.4125834,-6.832203,-4.170335,-4.4403443,-2.5265903,-2.792916,-0.96007043,-1.32485,-1.5275828,-2.0901973,0.05010127,0.5274726,-2.8127787,2.2884195],[-1.0541825,-1.1389667,-1.393989,0.049987935,-0.75335485,-1.2349916,0.44251662,0.024381286,0.071242295,0.017732512,0.83954465,0.23342346,0.104376666,0.39074865,-0.07692479,0.06292374,-0.20384182,0.2776107],[0.004347823,-2.0705073,-5.136332,1.5171243,-0.83530605,-0.83658594,0.6289342,-0.030435214,-0.09875959,1.0472045,0.6507859,-0.7110026,-0.61495453,-0.09955488,0.4563318,-0.39846316,-0.25004956,0.01138379],[0.028734487,-2.2628179,0.006837875,-0.67525387,-0.19999692,2.3506331,-0.6480495,0.32595164,0.22536819,0.17169411,-0.05625255,0.47865602,0.5283645,-0.26655892,-0.1795276,-0.25767052,0.1652347,0.17300352]],"activation":"σ"},{"dense_2_W":[[-1.7424338,-0.51204246,0.36681414,-0.43318233,0.26413685,-0.24067368,-0.4046541],[1.6531072,-0.47434783,0.02790722,-0.27149042,0.1917067,0.12952308,0.33537757],[1.2889733,-1.1361824,-0.624928,0.42658234,-0.23174223,0.11642459,0.93661875],[0.030492313,-1.5744985,0.3470011,-0.67208254,-0.35061973,-0.7376617,-0.118316226],[0.8261336,-0.8387976,-1.5988837,-0.8216873,-1.0717056,-0.3048729,0.8943968],[-2.0692046,0.5661956,-0.6376975,0.22744314,0.0028517665,0.22136337,-0.797771],[-0.2306479,-1.9774442,-3.616496,-4.481281,1.9556458,-0.058455996,1.4602649],[-1.3596288,-0.67229724,-2.6969142,0.41598597,1.6690115,1.0873245,-1.388754],[1.200881,-1.2607982,-2.0214107,-0.56441516,-0.6533298,-1.6340346,1.1757377],[-1.5519762,0.5947591,1.1866498,0.121581264,0.16602829,0.52355,-0.65718275],[1.1053609,0.028224928,0.8389564,-0.036384143,-0.54692584,-0.015354119,0.9502837],[-1.2469714,-0.28302318,-0.9857567,-0.46757036,0.2623652,0.31925344,-0.7774453],[1.5188146,0.4473179,1.9020143,-0.43271357,-0.99845284,-0.8403063,1.144983]],"activation":"σ","dense_2_b":[[0.071747996],[-0.24544376],[-0.40959486],[-0.14752373],[-0.56056744],[-0.035408586],[-0.76051474],[-0.42436004],[-0.28535128],[0.28020537],[-0.13632238],[-0.005974313],[0.43866658]]},{"dense_3_W":[[-0.6859634,-0.23211952,0.55380285,-0.090849504,-0.20580705,-0.28912854,-0.020036949,0.46019077,0.004479716,0.4496421,-0.14756668,0.32039902,-0.050126474],[-0.7476754,-0.19232515,0.4732885,-0.7891429,0.37273914,0.03617925,1.9029447,-1.6632549,0.3088266,-0.24991319,-0.35748976,0.24193496,0.3710967],[0.40051168,-0.4676041,-0.25612128,0.11686202,-0.45049718,0.7905412,-1.0448263,1.1216654,-0.95308435,0.618275,-0.58974785,0.43219963,-0.43541226]],"activation":"identity","dense_3_b":[[-0.07793948],[-0.0012238226],[0.19977793]]},{"dense_4_W":[[-0.0024938032,0.3952009,-1.017814]],"dense_4_b":[[-0.16230789]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A340x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A340x00x00'.json deleted file mode 100755 index 9b40cd1e3d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A340x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.621885],[1.0284406],[0.37194255],[0.046268534],[1.0293045],[1.0279852],[1.0266788],[0.99801177],[0.9776714],[0.9462372],[0.91703874],[0.04612887],[0.046153124],[0.046166956],[0.045992836],[0.04568058],[0.045171134],[0.04459945]],"model_test_loss":0.03329197317361832,"input_size":18,"current_date_and_time":"2023-08-05_22-29-17","input_mean":[[23.719963],[0.018466847],[0.009788129],[-0.01490712],[0.015184435],[0.015390393],[0.016122056],[0.019774657],[0.02080643],[0.020894347],[0.021406556],[-0.014832959],[-0.014840206],[-0.014854504],[-0.01494558],[-0.014958628],[-0.015116547],[-0.015349785]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[4.073725],[0.06636997],[0.45188215],[4.3373733],[0.61344504],[-0.05576782],[-0.029394656]],"dense_1_W":[[1.899682,-1.0220546,1.6209704,1.1128091,0.11807787,2.1193304,-0.84074396,0.9205597,0.6422064,-0.16473949,-0.2929423,0.015562142,-0.5113624,-0.5597578,-0.2079032,0.14909668,0.0016590576,-0.078255],[0.00257754,0.7842404,0.008843346,0.151356,-0.10317699,1.593811,-0.6585409,-0.792097,-0.18440624,0.21284863,0.18914178,0.038071778,0.59510386,-0.53487957,-0.26356593,-0.1510972,-0.23310432,0.2344722],[1.4983231,-0.18011008,-0.33435732,0.29978395,-0.644463,0.8832816,-0.6403558,-0.09016495,0.5140635,0.03930244,-0.2350084,0.14089371,0.071680106,-0.43234694,-0.25356972,-0.052213926,0.2982631,-0.12704615],[2.136221,0.94127697,-2.0502431,-1.0999187,-0.5389837,-1.0795466,0.15500735,-1.1946503,-0.7447494,-0.08565692,0.62933886,-0.3306759,0.72309256,0.5842993,0.4425341,-0.24024099,0.040228825,0.0051129814],[1.6822681,0.30469584,0.36311707,0.054079443,0.47980347,-0.75729567,0.9435193,-0.6902986,0.12720026,-0.32843223,0.32795638,-0.44525057,-0.07920844,0.27367336,0.5342503,-0.061932556,-0.1713259,-0.036089286],[-0.011671145,0.5296286,3.192862,-0.2014884,0.2564892,1.1807487,-1.3911327,1.1489043,0.83134156,-0.14983152,-1.5866762,0.5376133,0.41090357,-0.8031455,0.02215685,-0.24331515,0.30741853,0.0040395837],[0.015617138,-0.15004326,-0.1066052,0.05774972,0.84747916,-1.7410339,0.65046513,0.34189066,-0.1092925,0.13014615,-0.12986074,0.012468467,-0.46450385,0.55993074,-0.24884948,0.071061395,0.025357306,-0.017320933]],"activation":"σ"},{"dense_2_W":[[-0.30674583,0.06968486,-0.65429723,0.019582884,0.42960247,0.08177306,-0.7079286],[-0.4900685,-0.04209327,-0.5845738,-0.5474764,-0.44426113,-1.0495229,-0.31141305],[0.25227436,0.8856029,0.30998233,-0.6853428,0.13426903,-0.08633423,-0.7613986],[-0.61833984,-1.1719488,0.24792127,-0.19045483,0.45563322,0.42715865,0.69238126],[-0.27654642,0.30347988,0.21834162,0.23924747,0.15591425,-0.3061046,-0.93160504],[-0.2864238,1.0342413,0.3272169,-0.90983087,0.24268456,0.5175742,-0.8516676],[-0.05429682,0.61511075,0.27329326,-0.5729799,0.007327092,0.29609978,-0.8520901],[-1.074,-0.47218233,-0.90919787,0.18335287,-0.48629844,-0.7468036,-0.007822784],[0.58963263,-0.08803438,0.15459517,0.20894565,0.22934368,-0.25880885,0.24365251],[-3.1923928,-0.9013152,-1.5476278,0.92910975,2.0374515,-1.3871164,3.1174033],[-0.25149995,-1.1271017,0.45119533,-0.55721474,0.37220192,0.25739494,0.6835184],[0.24823236,-0.08169282,-0.8473349,1.7971821,1.7446034,-0.27146766,0.53165376],[0.13963719,0.48935938,0.39636797,0.09254681,-0.31144914,-0.44353837,-0.8852852]],"activation":"σ","dense_2_b":[[-0.11470798],[-0.23226368],[0.05471394],[-0.38724783],[-0.14420551],[-0.0023474924],[-0.08733412],[-0.23541285],[0.04872051],[0.6622674],[-0.29157898],[-0.08680658],[-0.08127291]]},{"dense_3_W":[[-0.5358264,-0.03906741,-0.3538137,0.05883006,-0.13302572,0.20354034,-0.41887388,0.3213541,0.6214788,1.0040325,-0.053876217,-0.32266176,-0.5326619],[-0.45899904,0.40331557,0.5624095,0.29449025,0.32427883,0.6714431,-0.09542968,0.43741795,-0.6450682,-0.22411184,-0.58734274,-0.05180798,0.32618254],[0.47514984,-0.60623705,-0.043168258,-0.61707187,0.05064353,0.51197284,0.24825503,-0.36806884,0.365072,-0.021128317,0.21732265,-0.58820313,0.2991621]],"activation":"identity","dense_3_b":[[0.06643589],[-0.06561],[-0.06563976]]},{"dense_4_W":[[-0.97301435,1.0852075,0.9260317]],"dense_4_b":[[-0.06335182]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018.json deleted file mode 100755 index 9076cc416e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.381411],[1.0896009],[0.36953825],[0.047667623],[1.0861374],[1.0860499],[1.0858915],[1.059937],[1.0386494],[1.0071863],[0.9757613],[0.04749054],[0.047521003],[0.0475409],[0.047391217],[0.047076195],[0.04665814],[0.046108272]],"model_test_loss":0.034288953989744186,"input_size":18,"current_date_and_time":"2023-08-05_21-11-37","input_mean":[[25.474146],[0.03260382],[0.0059239552],[-0.003850426],[0.03166146],[0.031421233],[0.031903807],[0.03409185],[0.035556797],[0.036786668],[0.03876473],[-0.0039243186],[-0.0039191637],[-0.00391803],[-0.0038912839],[-0.0038927502],[-0.0039427923],[-0.0040721553]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[4.576026],[0.014205613],[0.023928426],[2.2423766],[5.1118927],[0.009245147],[-0.09884353]],"dense_1_W":[[2.4283671,-2.5114954,1.7636794,-1.1276282,-0.29702592,2.3460658,0.2110311,1.8921894,1.6966429,0.5912078,-1.7593364,0.1788557,0.30617765,-0.06459494,0.68998104,-0.04987163,0.25082457,-0.20820954],[-0.06577886,-1.3371822,-3.9895184,0.49147522,-0.6437115,-1.0457126,1.5372813,-1.0199159,-0.90439004,1.17174,1.0530282,-0.68119884,0.18246703,0.1336504,0.1513831,-0.24112555,-0.038728017,-0.0071232794],[0.0033733498,0.7199784,0.0044814195,-0.20844589,0.021990225,1.5578223,-0.86644346,-0.26690495,-0.3389482,0.19740379,0.1897156,0.42373288,0.11811549,-0.42115727,-0.18958901,-0.43254307,0.3219206,-0.043830786],[1.1540352,0.3651104,-1.2646542,0.12534688,-1.3592131,0.22650717,-1.2461386,0.33907446,0.30825207,0.041745562,-0.04699643,0.31513706,-0.53145754,-0.13887237,0.339121,0.03572653,-0.09926298,-0.031500425],[2.4470172,1.1391506,-1.6994115,0.6633088,-0.24181224,-1.3209784,-0.38846213,-1.2859731,-0.6845487,-0.27900544,1.0526913,-0.490945,-0.31496993,0.42710644,0.018268349,-0.34324366,0.14006558,-0.0737592],[0.048280872,-0.036711592,0.12419936,0.09806018,0.073621884,2.3262064,-0.7835345,-0.45401052,0.17831485,-0.057094287,-0.038377315,0.23754936,-0.03390427,-0.3424702,-0.39207128,0.3649582,-0.36824515,0.22671352],[-0.044838708,0.36282212,-0.12990756,0.5413003,-2.0524702,1.6110876,-0.7925812,-0.55331826,-0.12824701,0.14961694,0.17928742,0.3061131,-0.040306978,-0.5500592,0.22041802,-0.30549437,-0.029204259,0.083384514]],"activation":"σ"},{"dense_2_W":[[-0.27619088,-0.30106953,0.8406808,-0.3034487,-0.8182391,0.12433698,0.20802778],[-0.4154569,0.19215287,-0.5395798,-1.0011816,-0.3622965,-0.053402603,-0.61655515],[-0.9554062,0.9567613,-0.43412912,-0.8109775,0.11694456,-0.73263913,-0.9729235],[0.21786267,-0.43021828,0.32044673,0.17683136,-0.7033162,1.1777877,0.46853],[-1.4941593,0.53598636,-0.34361255,-0.8429453,-0.17071423,0.41571486,-0.76921165],[-0.94654614,0.7506226,0.57346565,-0.65036005,0.049414758,1.046369,0.621918],[-0.54215634,0.72266793,0.45845777,0.16018274,0.18923126,0.6181075,0.9243036],[1.2958286,-0.67843175,1.2844336,-0.98265636,-1.9873784,1.3621792,1.0309747],[-2.4644299,1.0382956,0.7543066,-2.2521183,0.15328787,0.34243378,-0.6569763],[-0.71319073,0.64474607,0.020551767,-0.35136765,0.58472896,-1.4593328,-0.6378294],[0.3122531,0.11463693,-0.34882697,0.10761847,0.24621284,-0.8933121,-0.8421242],[0.26174104,0.20181425,0.6962465,0.12650499,-0.685376,0.65012974,-0.25467616],[0.6355601,-0.26024923,-0.6393189,0.25180802,0.62417173,-1.4139053,-0.9215187]],"activation":"σ","dense_2_b":[[-0.053085864],[-0.03349851],[0.33215925],[-0.13303766],[-0.07017026],[-0.11995311],[-0.18605317],[0.10708742],[0.5208379],[0.11261442],[0.09599934],[-0.22087996],[0.25543278]]},{"dense_3_W":[[-0.5387559,0.5180723,0.18928285,-0.017278178,-0.1654849,0.2684458,0.0049315374,-0.70783985,0.79352444,0.13864544,0.43856966,-0.26839373,0.76968014],[-0.34399128,0.6650704,0.4771153,-0.555316,0.5630293,-0.60538894,-0.22792831,-0.3027566,0.20719895,0.5640226,0.6806705,-0.09628916,0.2438542],[0.004954449,-0.27236447,0.5799102,-0.50637424,0.124922864,-0.16860567,0.1477868,-0.27912074,-0.11646297,0.59069705,-0.5256959,0.2693647,-0.42514357]],"activation":"identity","dense_3_b":[[0.03715595],[0.044411514],[0.045904953]]},{"dense_4_W":[[-0.7679762,-1.1008085,0.064006686]],"dense_4_b":[[-0.03675505]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA,C120x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA,C120x00x00'.json deleted file mode 100755 index fcc323b691..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA,C120x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5199685],[1.0041546],[0.38786623],[0.036677998],[0.9962397],[0.9980732],[0.9996651],[0.99639624],[0.9926015],[0.98370975],[0.97062755],[0.03642298],[0.036467228],[0.0365202],[0.03664619],[0.03662207],[0.03652128],[0.036423597]],"model_test_loss":0.01514572836458683,"input_size":18,"current_date_and_time":"2023-08-05_23-47-27","input_mean":[[24.48734],[0.0031791632],[-0.0077214316],[-0.012247895],[0.006253456],[0.0050531863],[0.0044050324],[0.0013900376],[0.0022928454],[0.0046939156],[0.0059022754],[-0.012277604],[-0.012273932],[-0.012272934],[-0.012301066],[-0.012308702],[-0.012408637],[-0.012596107]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.603401],[-0.16526419],[-1.8255664],[-1.6662012],[0.93965286],[0.79468465],[-0.15217474]],"dense_1_W":[[0.8369962,-0.030552765,0.5335952,0.43184772,0.23580156,1.2673365,-1.1400558,0.318804,-0.187539,-0.14375025,0.12492712,0.13123405,0.26685792,-0.9589225,-0.06946809,0.3054905,0.048283525,-0.14636886],[0.0075710495,0.34496903,3.662821,-0.1975815,-1.0349215,1.1001909,-0.22282363,0.5475843,0.55354905,-0.0045275143,-1.056081,0.844821,0.39349076,-0.296638,-0.6005872,-0.4671467,-0.6291099,0.90066314],[-0.9008946,-0.24484369,0.57615465,-0.15220997,0.2609631,1.0398844,-0.4644058,0.016499873,-0.018956503,-0.17380044,0.14669017,0.10224152,0.07262521,-0.36812365,0.23994175,0.08805341,0.32293737,-0.29662415],[-0.7426475,0.32210937,0.50062597,0.035566118,-0.29872537,1.0625906,-0.50212467,-0.24334303,-0.21319605,0.0060904995,0.06582723,0.41223416,0.33519742,-0.7705234,-0.060677625,-0.087017514,0.059937757,0.08177721],[1.350326,-0.9069702,-0.8710248,-0.032668646,-0.22678213,0.8018885,-1.0114281,0.4558404,-0.04972723,0.14267842,0.011223235,0.11178159,-0.08149843,-0.11696354,0.25129175,-0.022107668,-0.3123493,0.18239275],[1.4265958,0.7363564,0.9003141,0.5874882,0.36590812,-0.58121115,0.8468888,-0.6961116,0.19182444,-0.04914105,-0.041381188,-0.053005338,-0.37206975,0.0049440977,-0.06299007,-0.22749563,0.3903245,-0.22555515],[-0.0026155524,-1.6855055,-0.023907602,-0.020194484,0.9718681,-0.72989947,-0.072883844,0.6755627,-0.40358946,-0.36142477,0.24014348,-0.06568305,-0.18836774,0.24938382,0.26712775,0.26481214,-0.32187027,0.17701942]],"activation":"σ"},{"dense_2_W":[[0.055921525,0.79568124,0.622393,0.6891148,-0.41505626,-1.0494971,-1.1746889],[0.9990047,0.79401237,0.458197,0.044893876,0.7398994,0.1380711,-0.5833474],[0.49300948,0.40176773,0.69490945,0.017886199,-0.43334186,-0.42760152,-0.81184334],[-0.88839275,-0.39359003,-0.3923254,0.34303936,-0.4980547,0.3823284,0.31585476],[-1.0028759,-0.80133754,-0.038923886,-0.24988107,-0.6692906,-0.59269744,0.10528791],[0.95424086,0.5241753,0.69329005,-0.043293044,0.12808672,-0.54708153,-1.6431684],[-0.42091933,0.30759153,-0.8659509,-0.50176823,-0.4401355,-0.1235168,0.37031946],[0.9405245,-0.26903427,0.54586095,0.6150369,0.38332707,-0.45095354,-1.0229797],[-0.16152474,0.29404435,-0.4458113,-0.37584528,-0.45882532,0.44415447,0.28708586],[0.1605365,-0.54369676,-0.6820084,0.26447654,0.044480074,-0.1798705,0.29587266],[-0.88492364,0.28911477,-0.75960296,-0.038635474,-0.20156361,0.48187855,0.37745267],[-0.15852904,0.26374456,-0.1987117,0.15489428,-0.13169791,-0.14686994,0.23826097],[-0.27699766,-0.46768573,0.0784821,-0.71520346,-0.43777713,0.3317684,0.44976833]],"activation":"σ","dense_2_b":[[-0.4873253],[-0.31497946],[-0.33876145],[0.057083856],[0.15119348],[-0.19719751],[0.06655213],[-0.18075633],[0.0077841002],[0.047988962],[-0.013275895],[0.01678699],[0.054340936]]},{"dense_3_W":[[0.039507,-0.65482193,0.24057858,0.49380097,0.095387414,-0.71386194,0.54591215,-0.5667636,-0.471354,0.27266452,0.42956528,0.5700684,-0.14070532],[0.70610636,-0.21885805,-0.20008874,-0.03001694,-0.6918378,-0.18722558,-0.28595456,-0.13420972,-0.3792731,0.26539686,-0.73036075,0.41510108,0.3419122],[-0.47617888,-0.49639332,-0.47731593,0.37749213,0.8312911,-0.6428844,0.16035818,-0.5646238,0.49566412,0.44224903,-0.18195282,0.13512439,0.69913447]],"activation":"identity","dense_3_b":[[0.06694408],[-0.04941525],[0.065208524]]},{"dense_4_W":[[-0.57436824,0.5449645,-1.0910698]],"dense_4_b":[[-0.06264942]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C020x00x00'.json deleted file mode 100755 index 19d4e59be2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.576799],[0.91867346],[0.36527267],[0.042645145],[0.91787136],[0.91783434],[0.916926],[0.8943326],[0.87538767],[0.8462922],[0.8175801],[0.042509034],[0.0425443],[0.04257122],[0.04245028],[0.042234104],[0.041799206],[0.041292917]],"model_test_loss":0.02719402126967907,"input_size":18,"current_date_and_time":"2023-08-06_00-12-47","input_mean":[[25.356604],[-0.040762104],[0.015186845],[-0.010929545],[-0.03763134],[-0.036849402],[-0.03564124],[-0.030817972],[-0.029279217],[-0.026289875],[-0.024418497],[-0.010802534],[-0.010760807],[-0.010724829],[-0.010715251],[-0.010753985],[-0.010909137],[-0.011096374]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.7099435],[-4.4820223],[-3.7053332],[-0.15313303],[1.0490966],[0.08996243],[-0.3402487]],"dense_1_W":[[0.45726943,0.2803945,0.4495259,0.49884623,0.39872238,-0.36475766,0.26503468,-0.10885596,0.12820537,-0.06644224,-0.022389729,-0.3476893,-0.23661518,0.20323817,-0.1134223,-0.30204472,0.100813694,-0.06834288],[-2.3185985,1.2631202,-1.458182,0.048201833,0.24334751,-1.6046109,-0.30837595,-0.76168555,-1.0279249,-0.4423357,0.7814656,0.023939118,-0.3526689,0.34330973,-0.30489683,0.11396334,0.4730625,-0.1433239],[-1.9229746,-0.23190774,1.2471163,-0.34702885,0.12792219,0.39012522,0.5828723,0.19460873,0.9788912,-0.005666579,-0.41922984,0.19924892,-0.028308399,0.009771974,0.30980968,-0.25503463,-0.05167787,-0.03963391],[-0.00017526199,1.2134194,0.08365528,0.931635,-0.8134952,1.2126458,-0.3847136,-0.85404164,-0.029047096,0.057293534,0.099689804,-0.14430292,0.07266458,-0.035892077,-0.8494992,-0.16429287,-0.16963851,0.28444648],[0.66932124,-0.38224223,-0.48026696,-0.4556043,-0.16880098,0.11090016,-0.20848279,-0.0031408698,0.01483041,-0.057521474,0.0781242,0.3797575,0.15699562,-0.16381691,0.083613425,0.029958013,0.25532284,-0.049085815],[0.09758302,-1.5125183,0.51068544,-0.8873621,-0.039125204,1.2438344,-0.35688224,1.0463076,0.44335338,0.043060914,-0.3624858,0.18927102,-0.06789407,-0.11586316,0.5108622,0.23109579,-0.022569554,-0.22217596],[-0.022621945,-0.38620147,-5.9938316,0.57457525,-0.034727138,-0.31493336,-0.0024856962,-1.0160756,-0.4097327,0.31027526,1.5442436,-0.1086705,-0.06946156,-0.20705701,-0.29661253,0.24825081,-0.28626466,0.086528964]],"activation":"σ"},{"dense_2_W":[[0.053173117,-0.9156596,1.0074764,0.07819087,0.06604967,0.9604824,-0.46700448],[0.67615795,-0.6646975,0.40410203,1.1270711,0.51432085,0.36799482,-0.58051807],[-0.3406286,0.633063,-0.10993261,-1.4732538,-0.96888214,-0.10222697,0.36921522],[-0.22857061,0.048582908,0.106903225,0.39300185,-0.15854754,-0.00396511,0.5772822],[0.61022013,0.28100282,0.32486463,-1.4011261,-0.6755233,-0.6537198,-0.099644266],[-0.58349746,0.18500583,0.1230866,1.2761316,-0.29147163,0.23169333,0.03729417],[-0.9677123,0.12448332,1.4926296,0.14635411,-1.0473512,-0.392972,-1.2231176],[0.3896849,0.07481266,0.14770286,-0.88864774,-0.39602855,-0.64242584,-0.51282495],[-0.46045932,-0.6738887,0.017901536,0.6665944,-0.36764455,0.83067524,0.18793342],[0.057541758,0.5166745,0.49835142,-1.8220221,-1.4198332,0.05825049,0.30070993],[-0.021827364,1.1368597,-0.37343314,-1.2435678,-1.3651601,-0.8234563,0.6481897],[0.59054244,-1.6380736,-0.5568102,-0.24568368,0.028800676,-1.0597489,-0.9525837],[1.2516085,-0.38927004,-1.0174257,-0.60735077,0.85879636,-0.1796094,1.3270812]],"activation":"σ","dense_2_b":[[-0.12381021],[0.014428079],[-0.07002476],[-0.23227106],[0.076019384],[-0.18954094],[-0.39796123],[-0.023646781],[-0.20775545],[-0.18200971],[0.09294506],[0.04337285],[0.461896]]},{"dense_3_W":[[-0.26331434,0.46046373,-0.52959347,0.2898921,-0.5544527,0.12640098,0.053101886,-0.055325672,0.27165207,0.23696445,-0.9369918,-0.51779336,0.47617438],[-0.343167,-0.48102528,0.5826724,0.04648191,0.778018,-0.79673433,-0.6825545,0.36792636,-0.3386519,0.6587451,0.59682995,0.4857488,0.6149705],[0.7029585,-0.25926727,-0.274154,0.64148325,-0.07228898,0.21374674,0.65440977,-0.63847566,-0.2272515,0.42236963,0.25460508,-0.70692426,-0.6473448]],"activation":"identity","dense_3_b":[[0.016272327],[-0.07080089],[0.05776005]]},{"dense_4_W":[[0.27981392,-1.6592484,0.18638746]],"dense_4_b":[[0.06507368]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C120x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C120x00x00'.json deleted file mode 100755 index 8d0a5fe248..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C120x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.5490465],[0.91654193],[0.30993494],[0.04199027],[0.9220449],[0.91940266],[0.91617274],[0.88627845],[0.86233324],[0.8315542],[0.8018313],[0.041735847],[0.041725885],[0.041704368],[0.041467432],[0.04125315],[0.04087492],[0.040402256]],"model_test_loss":0.03576897457242012,"input_size":18,"current_date_and_time":"2023-08-06_00-38-31","input_mean":[[25.217424],[0.025067292],[-0.005204237],[-0.007812521],[0.026058447],[0.02579975],[0.025364147],[0.022783877],[0.022563396],[0.023355754],[0.023063915],[-0.007938141],[-0.007910316],[-0.00788824],[-0.007943815],[-0.00795849],[-0.008054328],[-0.008234501]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.56764346],[-0.2503772],[-3.2322495],[-1.2317773],[0.867053],[4.308423],[-0.07558963]],"dense_1_W":[[0.61443913,1.1731157,0.009846442,-1.1333587,-1.0492755,0.835613,-0.68129694,0.3589496,0.5659384,0.08182793,-0.46320507,1.2664362,0.3659727,0.043432895,-0.78966564,-0.2789253,-0.13537817,0.58561194],[-0.05032384,2.7911828,-3.7081556,-0.22916593,-0.360789,-0.8509512,0.3955322,-2.2810001,-1.5297779,-0.37920654,1.2837292,-1.0756621,0.05912324,0.79691005,0.09919885,0.5648314,0.12931578,-0.2828693],[-1.3801426,0.8747989,2.6738997,0.97103757,0.64060503,1.3203064,0.78513944,0.21045975,0.27105168,0.008706952,0.47002545,0.17457546,-0.019201785,0.022376636,-0.8146881,-0.56253856,-0.40608642,0.1788786],[-0.969806,0.27810913,-0.019731548,0.20302768,-0.9765407,1.7610842,-0.3367136,-1.2561709,-1.1086024,-0.23725067,0.82246333,0.4905772,-0.39064184,-0.62869024,0.1729788,0.09018552,0.26754,-0.16145436],[0.77530533,-0.44069135,-0.016620232,0.91353315,0.7982677,0.18398845,-0.06542974,-0.99103695,-1.0689898,-0.41018635,1.0071982,-1.0062531,-0.37093124,-0.11219994,0.9221856,0.06667381,0.102350205,-0.44873643],[1.837604,0.17821689,2.7829952,0.15930298,-0.18984689,1.3086654,1.0448655,1.2770351,0.9262832,0.571854,-0.44966817,0.9585924,0.4791195,-0.7341206,-1.1710364,-0.137599,-0.054511473,0.0011886378],[-0.13465121,0.42229307,0.01184741,1.9792279,-1.3213581,2.0345612,-0.38451922,-0.08214897,-0.052292295,-0.003056054,0.016048811,0.14917925,-0.21642695,-1.6820744,-0.51334184,0.4513876,-0.0945018,-0.17454582]],"activation":"σ"},{"dense_2_W":[[0.462196,-0.695528,0.16549478,0.2736693,-0.56030834,0.19088152,0.89675313],[-1.4432595,0.9668788,-0.052712087,0.48390535,-1.6715928,-1.1171504,-0.93195546],[-0.7672027,0.73007417,-0.41485545,-0.41052285,0.17164469,0.41768378,-0.6074929],[0.42105144,-0.07561751,-0.071338296,0.5440764,-0.23689774,0.29708165,0.5137933],[-0.9067054,0.2790484,-0.27540752,-0.10838713,0.2654337,0.43244293,-0.84643334],[1.1417533,-1.143838,-0.8191056,-0.42449018,1.7451103,1.1444204,1.5084718],[-0.3675419,0.17639667,-0.024025898,-0.2504475,-1.080494,-0.48680314,-0.49096605],[-0.3961711,-1.3744208,0.4152261,-1.47457,1.1814389,1.061417,-0.9474496],[-1.0131743,-3.5613608,2.3236957,2.097592,-2.561644,-1.4451259,1.6597106],[-0.49788824,-0.18982293,0.17864513,-0.37159964,-1.355421,-0.842698,-0.01138827],[0.5584375,-0.6589816,-0.14198032,0.27809986,-0.29245555,0.2221168,0.70997316],[-0.18313819,-0.16005597,0.18829824,-0.80455697,-0.7474139,-0.46905053,-0.532434],[-0.8919243,-0.26659176,0.03377461,-0.0041140113,-0.96533835,-0.18453701,-0.29215154]],"activation":"σ","dense_2_b":[[-0.72258896],[-0.015371009],[0.37933466],[-0.29024404],[0.16602242],[-0.036112666],[0.019811722],[0.13048169],[-1.32474],[-0.21386966],[-0.14519048],[-0.037656378],[-0.10292112]]},{"dense_3_W":[[0.085076064,0.3378735,0.17556626,0.20053186,-0.4336372,0.27722207,0.04970122,-0.20942238,0.20168552,-0.27926138,-0.1960737,0.020075899,-0.6230306],[-0.27460775,1.1687195,0.616611,-0.21896681,0.06441218,-0.4682532,0.5580457,0.36150676,-0.68175566,0.2615018,-0.27429396,0.32094082,0.47348568],[0.07691053,-0.9330427,-0.46400392,0.28614432,-0.67953914,0.32567665,0.023056043,-0.5036641,0.92684317,-0.21211706,0.6364576,-0.33836454,0.13877176]],"activation":"identity","dense_3_b":[[-0.035371166],[-0.039440315],[0.032718766]]},{"dense_4_W":[[0.043920163,-1.2300794,0.6862739]],"dense_4_b":[[0.038186513]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A020x00x00'.json deleted file mode 100755 index 8488bf11f6..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.428436],[0.8747422],[0.348336],[0.032838576],[0.8674841],[0.8698202],[0.872086],[0.8741188],[0.8746484],[0.8732703],[0.87034994],[0.03268689],[0.032726675],[0.032762397],[0.032804232],[0.032797463],[0.032751366],[0.032637663]],"model_test_loss":0.012720033526420593,"input_size":18,"current_date_and_time":"2023-08-06_01-03-18","input_mean":[[23.87719],[-0.09830344],[0.00987912],[-0.024293454],[-0.10104403],[-0.101183325],[-0.100655936],[-0.09613443],[-0.09292035],[-0.09032173],[-0.08915678],[-0.024517087],[-0.024474092],[-0.024432585],[-0.024249792],[-0.0241554],[-0.0241027],[-0.02419038]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.24818847],[-0.3569515],[-3.8611186],[0.052523665],[-0.061705776],[3.9736814],[-0.51413184]],"dense_1_W":[[-0.023707427,-1.1511034,-3.6214488,-0.88728464,0.7192584,-1.1216406,0.45078358,0.019147111,-0.16734436,0.21107747,1.2753613,-0.18621182,0.0021676207,0.64575016,0.555723,0.22198512,-0.105586044,-0.15878774],[-1.5766635,0.11333443,0.51480776,-0.36963126,0.10475719,-0.49697906,0.68160355,0.2969201,0.19487274,-0.030125976,-0.25609782,-0.630222,0.006213502,0.21161628,0.58924896,0.6157995,0.23309676,-0.61899596],[-1.8898737,0.33577567,-0.97434026,-0.037966143,-0.48877138,-1.5976278,1.1424898,0.56372863,-0.60689634,0.071804985,-0.0496236,-0.34190592,-0.014153756,0.52909875,-0.24744025,0.29303122,-0.23210055,0.05141031],[-0.024221305,0.44990522,-0.028304478,-0.0656701,0.17381778,-1.9562191,0.8350715,0.35282776,0.17968453,-0.019806169,-0.24479271,-0.81009316,-0.3293401,0.4533207,1.2084676,0.015344962,-0.15701972,-0.30990687],[0.011324843,-0.59531343,0.5854086,0.089412585,-0.9452245,1.9720498,0.19747502,0.20461471,1.2405642,0.14468583,-1.165413,0.27390787,-0.3910681,-0.16858988,0.39210764,-0.16402015,-0.12277656,0.07982532],[1.9530678,-0.08342983,-0.9890411,-0.32505137,-0.856526,-0.8791079,0.93317574,0.6200249,-0.06489498,-0.14845468,-0.1365828,-0.39299142,0.10178991,0.26328257,0.49346048,0.0047012162,0.015337047,-0.15793596],[0.0994865,0.37539056,-0.098761536,-0.13319957,0.8647312,-2.085531,0.26294917,0.35073626,0.08432079,0.027274208,-0.13727656,-0.21488512,0.3379102,0.3641513,-0.21915336,-0.2852004,-0.12663482,0.27321863]],"activation":"σ"},{"dense_2_W":[[-0.16425237,0.3091328,0.29525888,0.11240746,-0.74184674,0.43020418,0.70645195],[0.49677476,-0.43110228,0.21888019,0.20753606,-0.7800873,0.7741635,0.03567749],[-0.6097133,0.45192087,-0.781976,-0.23472853,0.57883346,0.05555812,0.20443378],[-0.46759868,0.36920962,-0.31299806,-0.34370378,-0.09269494,-0.4917414,-0.37711906],[0.23382114,0.43119097,0.12654792,-0.4602898,0.13595147,-0.6564136,0.19074993],[0.0017450978,0.44209385,0.52378607,0.5839574,-0.0767268,-0.28383034,0.26752976],[-0.4171056,0.3210464,0.27096882,-0.5315671,-0.12448658,-0.13850246,-0.24946442],[-0.15794876,0.45271224,-0.35790992,-0.13619353,0.45923787,-0.6412923,-0.6191985],[0.016369851,0.27200398,0.6724704,0.7589611,-0.1148256,-0.3482276,0.040378712],[-0.50706065,0.34294152,0.054178692,-0.34360346,-0.14778374,-0.58891815,-0.4531453],[0.3940274,-0.6713925,0.051861253,-0.898765,0.31961933,-0.59337765,0.05139436],[-0.11673336,-0.5929527,-0.15008944,-0.2537059,-0.0013014909,0.31044847,-0.12393371],[-0.19167545,-0.28842226,-0.11017555,-0.3114551,-0.035935447,0.29415083,-0.56570745]],"activation":"σ","dense_2_b":[[-0.13478862],[-0.23486298],[0.13705392],[0.15494871],[-0.020777982],[-0.13753998],[0.016483061],[0.121896364],[-0.123885065],[0.09847333],[0.03438525],[-0.03845259],[0.011853518]]},{"dense_3_W":[[-0.54575056,-0.47849953,0.5990695,0.42073256,0.5419929,0.043547045,0.54512763,0.3283325,-0.2048869,-0.31806502,0.5119246,0.4535623,-0.05827584],[-0.3388336,-0.28757206,-0.29846734,0.38009873,-0.24882287,-0.4701529,0.0076963897,0.17254484,-0.60017455,0.7332266,0.44687817,-0.0715153,0.6319616],[-0.032579347,0.5607797,-0.5665692,-0.39868695,-0.007274041,0.3449716,-0.072209254,-0.49229744,0.6039037,0.024303837,-0.4079465,0.11291028,0.18834813]],"activation":"identity","dense_3_b":[[0.03005079],[0.041132923],[-0.03719341]]},{"dense_4_W":[[0.74240994,1.0283083,-0.91570294]],"dense_4_b":[[0.038777113]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A120x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A120x00x00'.json deleted file mode 100755 index 06eea5a5c7..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A120x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.237355],[0.87519014],[0.44057557],[0.03548801],[0.87787986],[0.8774264],[0.8760763],[0.8587142],[0.8437336],[0.82851934],[0.8162014],[0.035328448],[0.035375077],[0.035424557],[0.03544107],[0.035294056],[0.03506294],[0.034851927]],"model_test_loss":0.022225305438041687,"input_size":18,"current_date_and_time":"2023-08-06_01-29-22","input_mean":[[22.534292],[0.058919504],[-0.0069944696],[-0.006594112],[0.057512816],[0.057811707],[0.057591096],[0.056336958],[0.057281986],[0.051038712],[0.04328098],[-0.006509515],[-0.006505374],[-0.0065190606],[-0.006622567],[-0.006714965],[-0.0068818894],[-0.0070974007]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.5739499],[3.878269],[0.45385617],[-0.20725146],[-0.079795115],[-4.091677],[0.36011276]],"dense_1_W":[[-0.22821122,-2.8194423,1.6595688,-0.4830238,2.3802936,1.9161788,-0.6213912,0.7039542,-0.6125425,-0.4726092,-0.23838855,0.67865574,-0.09634735,-0.7351034,0.53436965,0.28926876,-0.1594619,-0.037523255],[2.5516446,-1.2378905,0.00072916696,0.6147921,1.4464301,-0.31585398,-0.30207664,1.2950996,-0.16590804,-0.7658588,0.15745218,0.18785125,-0.21452165,-0.55619836,0.059614744,-0.24405465,0.18975312,-0.036489666],[0.00046311753,5.2895155,-0.0064032064,2.3568318,-3.7788632,-0.6730425,0.94534135,1.7328202,1.210308,1.5939676,2.7725132,-0.5959545,-0.2708361,-0.4567112,-0.26398024,-0.2822813,-0.13274622,0.08366669],[0.00060495536,-1.8627077,0.0016775115,0.011831294,2.4184442,-2.741676,0.9209026,0.2837613,-0.23187289,-0.9453196,0.7903965,-0.18015528,-0.081913516,0.082411945,0.48140436,0.35204688,0.08898967,-0.32223535],[-0.04008556,-1.1614711,-5.304956,-0.06615373,0.4991292,-0.93462783,1.6848874,-0.72819597,-1.0155044,0.67655045,0.24754661,0.25713775,0.25633144,0.46113673,-0.5089996,-1.4017544,0.52801764,0.53018683],[-2.6250875,-0.8428706,-0.0068993093,0.6359419,1.5150832,-0.8593881,-0.123320185,1.1137877,0.16923575,-1.062661,0.20523195,0.13212685,-0.509759,-0.021390263,-0.16270931,-0.41007507,0.4482517,-0.11212839],[0.121950485,-3.06296,1.6239958,-0.33307838,2.5052757,3.2169566,-1.3293189,-0.22467609,-0.37574983,-0.5922604,0.09215065,0.62051153,0.5787191,-0.8557021,-0.56089085,0.5316071,-0.062818,0.082696125]],"activation":"σ"},{"dense_2_W":[[-0.35287166,0.5735374,-0.33316278,1.2891138,-0.3599736,0.12537672,-0.66336924],[-1.423288,0.8357749,-1.3781912,-1.1710855,0.51321846,-1.5293682,-0.21053772],[-0.32105762,0.28671432,-0.5801889,0.35754833,-0.7569594,0.03212915,-0.5317869],[0.091680296,-0.7365891,-0.07562274,-0.25502372,-0.3725359,-0.041279055,0.18312061],[1.1346624,1.4142879,1.076152,0.8530887,-0.36640313,-1.5642645,0.8622971],[0.25187486,-0.8454855,0.24975924,-0.6653769,0.17570826,-0.1467031,0.52752095],[-0.52542835,1.0067426,-0.3432608,0.6156269,0.4721524,0.13591726,-0.41583073],[-1.4627284,-0.97950006,-1.8288456,0.23860978,1.5214525,2.4171803,-1.1142124],[0.762936,0.5988445,0.6786874,-0.67899644,-0.82305706,-1.1394529,0.61851394],[0.28733522,-0.8497635,-0.41946363,-0.0458478,-0.43066698,-0.29245007,-0.5107658],[-0.44353834,0.6743515,-0.37099394,0.461348,0.5619282,-0.27031732,0.15943629],[-0.30596974,-1.1035383,-0.51829547,0.14438403,0.09970497,-0.40294972,0.31800285],[1.0255032,-2.2046218,0.77438307,-0.21968207,-1.4422927,0.9943756,0.4114353]],"activation":"σ","dense_2_b":[[-0.18944573],[0.12252371],[-0.30214006],[-0.10644982],[0.2681959],[-0.09597638],[-0.06898104],[-0.60539126],[0.21081245],[-0.2496423],[-0.07610517],[-0.13910647],[-0.78967816]]},{"dense_3_W":[[0.22095068,-0.51939535,-0.36592597,-0.48365295,-0.41380858,-0.56315166,0.6327542,0.22628462,-0.16801901,-0.24263306,0.40058422,0.13298513,0.28335148],[0.113773875,0.5613844,0.37089002,0.57024395,0.4068071,-0.06056436,-0.65681094,-0.31930733,0.39740247,0.6750699,0.4575854,0.20065524,0.2139887],[0.7378495,-0.4070432,0.5941009,0.4365137,-0.33317804,0.1605702,0.64352435,0.26713678,-0.26348892,0.22799617,0.41001305,-0.50239944,-0.97245806]],"activation":"identity","dense_3_b":[[-0.03496299],[-0.0028519286],[-0.052557867]]},{"dense_4_W":[[-1.090145,0.25029793,-0.99950933]],"dense_4_b":[[0.038892392]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A020x00x00'.json deleted file mode 100755 index 38c0af829e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.9397926],[0.58847904],[0.2768134],[0.03328077],[0.5956492],[0.59220606],[0.5897729],[0.5776224],[0.56892926],[0.56445587],[0.56639653],[0.033096638],[0.033156663],[0.033203375],[0.03332432],[0.033254243],[0.033312503],[0.033484638]],"model_test_loss":0.028057441115379333,"input_size":18,"current_date_and_time":"2023-08-06_01-53-50","input_mean":[[21.049675],[0.18402193],[-0.003428923],[-0.007548354],[0.18359452],[0.1835885],[0.18393785],[0.18181257],[0.17725796],[0.17158064],[0.164546],[-0.0077345166],[-0.007683261],[-0.007645073],[-0.0075830934],[-0.0077846153],[-0.008191],[-0.008583602]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.8156507],[-2.4066193],[0.028636524],[-0.31134236],[-0.28471118],[0.08179851],[1.679371]],"dense_1_W":[[1.844903,0.027804963,0.5669119,-0.778688,0.8034288,-0.78931105,1.2116214,0.19344883,-0.6704197,0.016172517,0.20178398,-0.3408561,-0.25060442,0.1655656,0.71878904,0.5432098,0.24100736,-0.5256183],[-2.200448,0.405909,0.6434607,0.26235482,-0.18575469,1.2817595,-0.7119806,0.38927037,0.39060992,-0.49538943,0.016932135,-0.14391725,-0.0885561,-0.6673529,0.36674196,0.29924622,-0.29776922,0.022200285],[0.0029789726,0.6943829,-0.00041380787,-1.1453172,-0.50027996,0.85155296,-0.13035522,-0.7368721,0.06147018,0.18088032,0.012485195,0.4306581,0.5157353,0.28600702,-0.6693201,-0.008134162,0.35026318,0.11398255],[0.1142896,0.00468294,-2.5078979,1.377898,-0.73678875,-1.4563999,0.8267823,0.16948342,-0.14088418,-0.5553062,-0.21878052,-1.5041614,-1.117198,-0.30893826,0.59749913,0.702367,0.1315873,-0.670245],[0.0009085219,1.0001184,4.3506665,-2.042315,-0.15742837,1.0259328,-0.17750828,0.54632634,-0.46832186,-0.42449352,-1.556151,0.57148683,0.68085456,0.1495435,-0.39299193,0.8861771,0.7166561,-0.54555255],[0.100348786,0.014175879,-0.012427769,-0.5041687,-0.5826174,0.5256853,-0.52756214,0.07132036,0.34683812,0.07438995,-0.26059008,-0.13695654,-0.67984086,0.38298985,0.9229481,0.80970156,-0.29075277,-0.43736833],[2.0044293,-0.20208758,0.54538536,1.1377499,0.3106265,1.0160546,-0.32974172,-0.089798145,0.2855685,-0.03635302,-0.041824948,-0.18219398,-0.25772902,-1.0644519,0.43982273,-0.08722686,-0.2421627,0.051588144]],"activation":"σ"},{"dense_2_W":[[0.30571613,-0.18013296,0.5926545,0.14476953,0.16642626,-0.11212167,0.3821252],[0.94783115,2.5033114,-3.1206958,-0.15871608,-1.994079,-1.3640877,-1.5263621],[0.47148222,0.104184546,-0.37317687,-0.8472351,0.08160871,-0.6943246,-0.40566835],[-0.64335907,0.78053916,-0.20363255,-0.016910687,0.40413967,-0.23705012,-0.060175724],[-0.31357315,0.1102892,0.34789997,0.24466582,0.2282046,0.27680242,0.41566148],[-0.2819869,-0.49597213,-0.29658175,0.20754631,-0.1396202,-0.3569357,-0.3499282],[0.016052477,0.72212625,0.5342962,-0.58273345,-0.40965185,0.0081045525,0.16813238],[1.3594749,-1.0821377,-0.9876373,0.14710972,-0.7891241,0.990827,0.35404012],[0.10145038,0.27034414,0.099734664,-0.21233094,0.46582258,0.14897184,0.31720132],[-0.6530252,-0.9807932,0.80537784,-0.11495904,-0.7238929,-0.2512353,-0.7177895],[0.4390709,-0.23511182,-0.49958336,-0.14200853,0.25195497,0.6376854,-0.29144466],[0.24465889,-0.7938168,0.060746156,0.095193386,0.07138605,0.036473136,-0.7767482],[-0.36048752,0.43844214,-1.3429878,-0.18445532,0.037344575,0.018166453,-1.3115227]],"activation":"σ","dense_2_b":[[-0.08002864],[-0.27753568],[-0.33821508],[-0.06898969],[-0.07934998],[-0.022124004],[-0.014806774],[0.5396857],[0.04967859],[-0.20298636],[-0.017854981],[-0.3076046],[-0.053490125]]},{"dense_3_W":[[-0.4066065,0.97251016,0.033346247,-0.10809236,0.085812196,0.42724374,-0.22504164,0.30916232,-0.58347124,0.72406,0.47510427,0.4123366,0.73240745],[0.2478319,0.008268835,0.5303551,0.5601437,0.47338668,-0.5492546,0.47054175,0.45232275,-0.37064263,0.22936313,-0.08599906,-0.2583833,0.33278263],[0.12888186,-0.061529376,0.41770902,-0.6266616,-0.5737836,0.13413434,-0.46319184,0.70543456,0.042693373,-0.25845766,0.24550076,-0.44863605,0.488171]],"activation":"identity","dense_3_b":[[-0.039126486],[0.006651634],[-0.018630983]]},{"dense_4_W":[[-1.4650652,0.3291624,-0.77633846]],"dense_4_b":[[0.022054376]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A120x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A120x00x00'.json deleted file mode 100755 index 7e478a115c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A120x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.382928],[0.831745],[0.30223858],[0.03895733],[0.84030503],[0.837596],[0.8347243],[0.81036496],[0.7911638],[0.7661664],[0.741643],[0.0389547],[0.038950026],[0.03893477],[0.03872475],[0.038503967],[0.038221505],[0.03784756]],"model_test_loss":0.04651949554681778,"input_size":18,"current_date_and_time":"2023-08-06_02-19-12","input_mean":[[25.801882],[0.013322295],[0.00012067948],[-0.014118517],[0.012097556],[0.012325566],[0.012585732],[0.012787061],[0.012398119],[0.011666994],[0.01200301],[-0.014120493],[-0.014129876],[-0.014137334],[-0.01423779],[-0.014323668],[-0.014383154],[-0.014402781]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.68441534],[-0.13293418],[-2.3703692],[1.0513278],[-0.049006693],[0.4361167],[-1.6526378]],"dense_1_W":[[-0.3009049,-1.3486567,-4.1750894,0.1664098,1.4217969,0.1054205,0.59044117,-1.1253078,-0.6447645,-0.2502474,0.96328413,-0.28410953,-0.31804475,-0.1947907,0.38729358,0.4187392,0.4089219,-0.61806595],[0.010645178,-1.0883038,-2.5133154,-0.25236014,0.5784265,-0.51083916,0.4832404,-0.4849606,-1.0525901,-0.13375925,1.4631903,-0.4047331,0.0050009037,0.6095067,-0.09834975,0.2519382,-0.038879942,-0.069640845],[-0.8899254,-1.0230187,-1.439176,1.1679554,1.0210379,-1.1627477,0.8465841,-0.39189994,-0.7394402,-0.02806761,0.5266214,-0.40435284,-0.35882106,0.068795145,-0.2524109,-0.17227925,-0.18992348,0.12400747],[1.1131828,-0.5260197,-1.7403282,-0.33493716,-0.5395197,0.6774204,-0.8929776,0.60346586,-0.0066875615,0.0138423955,-0.11350326,0.6344896,0.1835288,-0.34619817,-0.4588385,-0.015822446,0.22261441,0.07688962],[8.6207525e-5,-0.70675,-0.0007860533,0.20384522,0.1318535,-1.014616,-0.009205295,0.9519155,0.46291843,0.028296059,-0.4624722,-0.6242399,0.016376816,0.6099459,-0.1398835,0.015813632,0.13008049,-0.14142884],[1.0258418,0.436164,1.851793,0.42419407,0.42999953,-0.19701813,0.41379267,-0.11730983,-0.3859213,-0.2814823,0.33615586,-0.5434531,-0.08128047,0.37816283,0.19217548,-0.36968186,0.09063848,-0.046774127],[-0.7571031,0.4970347,1.3990597,0.11719525,-0.56139064,0.7697264,-0.3542842,0.37262577,0.3073247,0.16176817,-0.36358887,0.43785885,-0.3470084,-0.07056978,-0.31751567,0.34110883,-0.28786156,0.15170412]],"activation":"σ"},{"dense_2_W":[[-0.30184454,0.3802063,0.4967091,-0.35028198,0.51986647,0.4000042,-0.21709704],[0.09750685,0.06357492,-0.7158158,0.2812576,-0.2995527,-0.7086002,-0.5355136],[0.08785149,0.3272583,0.47600603,-0.8402297,0.52597255,-0.45987862,-0.76386476],[0.08306526,-0.16242865,-0.6435881,0.53329647,-0.6757787,-0.37396497,0.7116671],[-0.22419164,-0.022920314,-0.04075283,0.8179769,-1.016423,0.34336585,0.5386958],[-0.15732218,0.33430022,0.11486374,-0.78740937,0.99910235,0.39482287,-0.5267216],[-0.77424455,-0.14682956,-0.55741477,-0.38432997,-0.28245547,-0.4974875,0.24210082],[-0.96440476,-0.7743205,0.13630813,-0.74980104,-0.007871434,-0.38619104,-0.035752743],[0.0011592604,0.10274233,-0.8914161,0.9206268,-0.62343633,-0.23734997,0.6717641],[-1.9650924,-0.90385705,0.55099785,-0.39466116,0.12528175,-1.7182279,0.89252603],[0.012258381,0.19495833,-0.08824382,-0.22507101,-0.15942216,-0.2785897,-0.22172463],[-0.1748081,0.17200747,0.4328849,-0.24547942,0.43270597,0.3054646,0.18000092],[-0.2559985,0.36312464,0.11709605,0.09233141,0.9310238,-0.029632417,-0.25157112]],"activation":"σ","dense_2_b":[[-0.1474299],[-0.3277726],[-0.21582118],[0.036078904],[-0.05503096],[-0.005676639],[-0.055123266],[-0.17541403],[0.0015975577],[-0.104181305],[-0.20293538],[-0.10939717],[-0.07661626]]},{"dense_3_W":[[-0.21298198,0.110187896,-0.60958046,0.45805818,0.54682696,-0.7046855,0.6269348,0.21081105,0.42615926,0.8367855,-0.1845897,0.06679362,-0.09966726],[0.15750672,0.1327235,-0.2181211,-0.36494306,-0.52508456,0.68815714,-0.5968023,0.026029408,-0.29523292,-0.05900207,0.06698885,0.25658783,0.51479304],[0.09501332,0.0035566674,-0.19596317,0.68399763,0.2697313,-0.61212915,0.09689588,0.17770325,-0.19476512,0.5935955,0.3390856,-0.20666745,-0.5220273]],"activation":"identity","dense_3_b":[[-0.030582575],[0.022597056],[-0.022908542]]},{"dense_4_W":[[1.1999085,-0.6172392,0.81952834]],"dense_4_b":[[-0.02394666]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-J510x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-J510x00x00'.json deleted file mode 100755 index d33eb1eac2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-J510x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9383917],[0.8355506],[0.3390312],[0.03119497],[0.82312363],[0.82553184],[0.828844],[0.81786305],[0.8089189],[0.7983574],[0.78663474],[0.031027893],[0.031051435],[0.031081835],[0.031122375],[0.031173797],[0.031170428],[0.031091694]],"model_test_loss":0.012541690841317177,"input_size":18,"current_date_and_time":"2023-08-06_02-44-08","input_mean":[[29.07186],[-0.06912211],[0.013657895],[-0.002133514],[-0.072693],[-0.072877966],[-0.072644964],[-0.06586901],[-0.06460334],[-0.0633031],[-0.06268608],[-0.0021806108],[-0.0022094164],[-0.0022406473],[-0.0022201212],[-0.0022082466],[-0.0021234895],[-0.0020255505]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.026404249],[0.13105589],[0.16516872],[-0.06090279],[-0.14405267],[-2.502384],[2.218792]],"dense_1_W":[[-0.0021143458,0.4845371,-1.1704693,0.95396703,-0.45841944,-0.29033682,0.53932166,-0.37416738,-0.41057795,-0.23133592,0.54513544,0.26240727,-0.17659351,0.054697156,-1.1045226,-0.40194085,0.27317593,0.23824252],[-1.7758781,0.48786885,-0.00477917,-0.22493805,-0.515321,1.3253579,-0.6839125,-0.6387143,-0.17747526,-0.1419738,0.30965427,0.1709874,0.23986466,0.087099396,-0.62111133,-0.1853607,0.43471354,-0.028164243],[-1.7272408,0.3076149,0.00765919,-0.3540082,0.38353494,-1.060162,-0.1053273,0.6142481,0.07908985,0.1091809,-0.28727072,0.12411787,-0.030564038,-0.13592651,0.42188758,0.2681106,-0.008810187,-0.16449693],[-0.044815022,-0.29972354,-0.71397084,0.24435022,-0.6555711,0.1949695,-0.53771883,0.91733986,0.5420983,-0.06943186,-0.35568416,-0.44354844,0.33030087,-0.29652244,-0.008032364,0.36644423,0.20427188,-0.3417492],[-0.003277743,0.84705424,0.019459587,0.33182937,-0.32682094,1.042309,-0.6059422,-0.4592401,-0.14659667,-0.02649014,0.19585942,-0.29718736,0.60278606,0.13007255,-0.9305752,-0.15275106,-0.0688484,0.28789634],[-0.8902708,0.15024209,1.0265517,-0.25550342,-0.17248401,1.1255769,-0.5883171,0.15187076,0.15472615,-0.036912397,-0.12170663,0.2438034,-0.19690259,-0.06634575,0.02245947,0.3350466,0.1365908,-0.21177408],[0.8790335,0.08951593,1.0052422,-0.36786625,0.26908866,0.5844786,-0.5167404,0.17875771,0.15087639,0.004691414,-0.13105698,-0.304317,-0.16428755,0.42695817,0.6963123,-0.10174697,-0.08647683,-0.09663916]],"activation":"σ"},{"dense_2_W":[[-0.5507626,0.7375308,-0.49619263,0.64276683,0.31423688,-0.047046438,0.14320022],[0.06431445,-0.91829306,0.61997795,-0.87665886,-1.1699272,-0.266563,0.2754743],[-0.23304823,-0.80016303,-0.62006134,-0.050004035,-0.19096582,-0.0061811367,-0.35022056],[-0.6022076,0.24352926,0.3797693,-0.4641736,0.58151716,0.086308055,-0.024125725],[0.42020667,-0.43386108,0.78020096,-0.07576871,-0.96067387,-0.7232814,-0.35634282],[-0.5178249,-0.06836039,-0.37178206,-0.50464267,-0.0235822,0.026802443,0.30778465],[0.6183374,-0.23700354,0.6740862,-0.8557632,-0.63150823,-0.45882928,-0.59726715],[-0.015967928,0.26693594,0.08684808,-0.3305254,-0.21529642,-0.9623077,-0.7667298],[-0.40488502,0.08908774,0.11001882,-0.48002744,-0.38036668,-0.5579617,-0.8118769],[-0.6996953,-0.08383944,0.14571202,-0.2791817,0.19681555,0.61584616,0.5265486],[0.33932468,0.4615041,-0.46465427,0.030247016,0.33767444,0.4764484,0.49228984],[0.739168,-0.5647498,0.87683797,-0.41238332,-0.6725376,-0.31792146,-0.80818856],[-0.29039443,-0.15418902,0.16983575,0.404602,0.8631,-0.08719541,0.4968237]],"activation":"σ","dense_2_b":[[-0.03965108],[0.28927684],[-0.18241821],[-0.108551204],[0.6023028],[-0.031586934],[0.09187851],[-0.025837803],[-0.2092672],[-0.095620565],[-0.14529799],[0.21532695],[-0.038257282]]},{"dense_3_W":[[0.69658524,0.13405359,-0.5135836,0.039699517,0.4089305,0.015523863,-0.37848678,-0.5778005,-0.39460537,-0.08848027,-0.47406712,-0.5140029,0.4353925],[0.36546764,-0.85153615,-0.26655787,0.3066136,-0.7395783,-0.21865855,-0.5632104,0.11118248,0.04402694,-0.31351718,0.64110416,-0.21988907,0.48327655],[-0.48011708,-0.64806235,0.50163656,0.42039683,-0.5115424,0.22310808,-0.30667087,-0.23503205,0.08582519,0.6786953,0.5058911,0.013384847,-0.13791536]],"activation":"identity","dense_3_b":[[0.017121604],[0.016458558],[0.014057028]]},{"dense_4_W":[[0.9904114,0.8519098,1.0665607]],"dense_4_b":[[0.015847046]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGL-E130x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGL-E130x00x00'.json deleted file mode 100755 index 782a71a292..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGL-E130x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.29796],[0.6869096],[0.3043955],[0.053746838],[0.69718754],[0.6945284],[0.6902723],[0.6647322],[0.648803],[0.6250414],[0.6004392],[0.05371038],[0.053712133],[0.053708736],[0.053587437],[0.053468417],[0.053344723],[0.05339542]],"model_test_loss":0.059682220220565796,"input_size":18,"current_date_and_time":"2023-08-06_03-09-39","input_mean":[[20.848803],[0.09077284],[0.0004920535],[-0.013807639],[0.08834558],[0.0896692],[0.090346344],[0.09061075],[0.08792884],[0.085393175],[0.07933361],[-0.013748395],[-0.013738229],[-0.013735628],[-0.01376535],[-0.013799873],[-0.0139192855],[-0.013997918]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.12927625],[0.039042104],[0.06305568],[0.5509221],[-1.2879711],[6.2787247],[-6.190384]],"dense_1_W":[[0.0027083303,-0.10112696,0.00021239324,-0.25530028,0.19750968,-1.0146434,0.19078395,0.17337662,-0.13830121,-0.34922576,0.18369395,-0.41599622,0.31424782,0.36015517,-0.025049085,-0.16560718,0.32461762,-0.14546283],[0.0011184415,0.34731707,0.000591945,0.020096293,-0.40281445,0.9857871,-0.54341626,-0.2996433,-0.0023747282,-0.11858881,0.16937213,0.40306735,-0.17791511,0.015529411,-0.32821342,-0.2275615,0.12587199,-0.13679199],[-0.01001298,-0.43627232,3.8718,-0.020895703,1.6419108,1.1942697,-1.3671072,0.8677243,0.6161768,0.25344366,-2.1509552,0.3635223,0.14490978,-0.93930185,0.51710093,0.37570456,-0.20570871,-0.06064528],[8.5005406e-5,1.5534368,0.0050369557,0.76705796,0.096726,-1.0784471,0.21296425,0.047997892,-0.504228,0.21246566,0.077220924,-0.5910409,-0.39798212,0.40880397,0.21635057,0.2121605,-0.57481694,-1.6995429],[0.0016134434,0.048475664,0.25585577,0.23253338,-0.4305987,0.23644239,-1.0944809,-0.41095805,-0.1506762,-0.39978436,-0.4151889,0.9040056,0.29542196,0.5904203,0.2782569,0.23929867,0.42858773,1.7019073],[4.025802,2.5585697,-2.4830704,-1.6901246,-0.3633653,-0.89175445,-0.29274487,-1.4318734,-2.3919513,-0.24146257,1.3682926,0.39687443,0.4862581,0.75898904,0.14836557,-0.61106664,-0.041406788,0.43938866],[-3.6613293,3.431119,-2.267677,1.7728403,-0.28788745,-1.4352858,-0.6164974,-1.5066901,-1.9746417,-0.3478911,1.202695,-0.8438115,0.29883432,0.07818771,-0.89911157,-0.89166856,-0.061227016,0.44411016]],"activation":"σ"},{"dense_2_W":[[0.24542594,-2.2395196,-0.14947067,0.041994963,-0.2406378,0.5588424,-0.41520935],[-0.8674741,1.2369518,0.48354208,-0.019096198,0.03493316,0.061816297,-0.6701676],[-0.34608337,0.24626403,-0.51114035,-0.7236035,-1.0586612,-0.8953887,1.0207646],[-0.6603612,1.3253964,0.6621064,-0.3136026,0.07262768,-0.73918,-0.087288626],[0.77753216,-1.2590296,-0.6827706,0.5964797,-0.081819944,0.025609335,0.23794611],[-0.027843717,1.0459992,0.16385391,-0.42424512,-0.60500985,-0.20268683,0.20546572],[-0.43445817,1.1618135,-0.25778547,0.38488075,0.3197356,-0.3485739,-0.6816144],[-0.7163731,0.474339,-0.11365654,0.0881506,0.23063587,0.097380914,0.07446911],[-0.9666889,0.9888771,-0.19698231,0.023333492,0.20297973,-0.0487526,-0.10499752],[-0.02302885,-2.0536203,-0.17813562,0.27943268,-0.45622507,0.46923488,1.5073433],[0.11166716,0.5468084,-0.059901386,0.17259055,-0.3219094,-0.50135636,0.19411519],[-0.51580197,0.98296887,0.12504756,-0.04137333,-0.5060232,0.20122856,0.0911331],[-0.39491713,1.1337756,0.17506048,-0.4171312,-0.10811109,-0.689537,-0.4207489]],"activation":"σ","dense_2_b":[[0.15749712],[-0.32822123],[-0.16269855],[-0.23587422],[0.1348652],[-0.16819751],[-0.13819136],[-0.1933703],[-0.16497153],[0.26468632],[-0.1549707],[-0.18713947],[-0.11378069]]},{"dense_3_W":[[0.36997053,-0.2313704,-0.4401421,0.026918795,0.8393843,-0.58421713,-0.44875944,-0.10873468,0.16037284,0.7108794,-0.46192494,0.07450364,-0.07943991],[-0.69230264,0.2847919,-0.2528415,0.40409324,-0.8334492,-0.019472836,0.005906335,0.3058701,0.62732667,-0.43410972,0.1603031,0.39690167,0.3522643],[-0.1730077,0.37127316,0.6238479,0.14937235,-0.54297125,0.56943595,0.46046963,-0.21287519,-0.046794858,-0.6515185,-0.625884,0.6049786,0.33925623]],"activation":"identity","dense_3_b":[[0.09230293],[-0.10100416],[-0.14628187]]},{"dense_4_W":[[-0.96249396,1.0031632,0.1955458]],"dense_4_b":[[-0.09062254]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA,A030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA,A030x00x00'.json deleted file mode 100755 index d3a1bb6bc2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA,A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.828868],[1.3588611],[0.41877922],[0.042109862],[1.341616],[1.3486344],[1.3538228],[1.3478316],[1.328037],[1.2895682],[1.2430215],[0.04203343],[0.042057183],[0.042080052],[0.04202502],[0.0419028],[0.041697],[0.04135808]],"model_test_loss":0.01706458441913128,"input_size":18,"current_date_and_time":"2023-08-06_04-07-16","input_mean":[[23.807858],[0.03894964],[-0.009764001],[-0.011655796],[0.041675754],[0.04040426],[0.038979076],[0.034793235],[0.032237094],[0.03182612],[0.0351043],[-0.011650053],[-0.011667487],[-0.011685415],[-0.011778335],[-0.011861333],[-0.012015583],[-0.012147856]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.5615673],[0.7718801],[-3.7769625],[0.4954386],[-1.2168337],[0.3834438],[-1.4409952]],"dense_1_W":[[1.6587557,-0.03201305,-0.4806989,0.36387846,-0.48278156,-0.3905921,-0.0388727,-0.14381675,-0.24559438,-0.24794875,0.020391222,-0.36554426,-0.045786988,0.37558827,-0.5150567,0.011279025,0.37533346,-0.15497313],[1.856302,0.3850902,0.3822126,0.35716665,-0.5155237,0.07582075,0.8278192,0.35297492,-0.5057421,-0.09577705,0.27150053,0.065463945,0.034616094,0.029208321,-0.22792868,0.005505799,-0.15835825,0.12173401],[-1.966878,0.09221255,-0.5907079,0.43561482,-0.8552626,-0.6498669,0.31348014,-0.25722724,-0.3638425,-0.01811314,-0.1542113,-0.05421908,0.22119746,-0.052404914,-0.6179151,-0.010884692,-0.09178448,0.26305836],[-0.14198878,-0.7116039,-0.08581363,-0.13187033,0.4916839,-0.7834652,0.32754624,0.055074025,0.17711979,-0.013773762,-0.08651409,-0.12673153,-0.14753248,0.2293844,0.40847418,-0.14559479,-0.11703128,0.04356386],[-1.872429,-0.15238704,0.40203246,-0.02868895,0.14101167,-0.40041912,1.2534008,-0.09318469,-0.03764272,-0.087983645,0.26885307,-0.67364323,0.31495255,0.37216207,0.24445911,0.17665292,0.012208228,-0.2388997],[0.11508778,0.6316238,3.0819817,-0.16016749,-0.2190627,-0.06308648,-0.9233147,0.6661318,1.2984458,0.091404624,-1.5613545,0.18205322,-0.15544152,0.17819074,-0.051608723,0.10189869,0.014511001,-0.011415061],[0.18752714,-0.78931046,-0.10892214,0.19746861,0.58102345,-0.6981444,0.18360513,0.14009249,-0.062272664,-0.18457152,0.10788008,-0.5033553,-0.35309345,0.4638519,0.12721097,0.21150345,0.28216785,-0.38438264]],"activation":"σ"},{"dense_2_W":[[-0.41296047,0.009994055,-0.56219316,-0.5554611,-0.26297602,0.18101925,-0.16817299],[-0.37041304,-0.7107613,-0.7427994,0.114892006,-0.34880233,-0.22947483,-0.6385373],[-0.49729323,-0.07977957,0.66374093,-0.017636025,0.4205715,-0.9580843,0.43858218],[0.38907713,-0.76856196,-0.4815348,-0.21716839,-0.3260819,-0.5470339,-0.92810947],[-0.31227747,0.2155603,-0.36565685,-0.55944705,0.021143533,-0.49740636,-1.0799714],[-1.6338145,-0.4843085,0.12082096,-0.9157364,-0.15951772,1.3216581,0.5687549],[0.058031183,0.1682733,0.74648166,0.3186676,-0.21778281,-0.7438653,0.29449734],[-0.24235114,-0.33672345,-0.046596766,0.9317643,0.45289803,0.5095793,1.5327915],[1.3766825,0.38467634,-0.38601008,0.906059,-0.043449163,-1.0596842,0.4888961],[-0.19836484,0.14401913,0.7339981,-0.35825434,-0.07396672,-0.8178357,0.06628493],[-0.7688364,-0.24399456,0.09368414,-0.77106285,-0.61470944,0.2647412,-0.3470581],[-0.37717023,0.5652293,-0.7643337,-0.8346215,-0.42952943,-0.7881854,-0.66797024],[-0.17988431,0.41044593,1.0204062,0.23822533,-0.5833684,-0.18772323,0.49101728]],"activation":"σ","dense_2_b":[[0.08490299],[0.019760115],[-0.34167358],[-0.048392903],[0.03218207],[-0.070515014],[-0.24773756],[-0.22226538],[0.0024391487],[-0.28946945],[0.11847323],[0.16301791],[-0.264623]]},{"dense_3_W":[[-0.6551264,0.20192637,0.17543362,-0.37154144,-0.4004771,-0.19728865,0.23193756,0.45298353,0.5133015,0.15628278,-0.747469,-0.79281825,-0.11067879],[-0.1810723,-0.41811052,0.42333624,-0.39242148,-0.33600914,-0.8151715,-0.07931125,0.42133102,0.40676335,-0.2168068,-0.7562931,-0.3301234,0.52793944],[0.21940233,-0.54502714,0.58356434,-0.5688791,-0.43637988,-0.79480255,0.5184784,-0.16852017,0.013635831,0.11912652,-0.33910868,-0.32096627,0.2924903]],"activation":"identity","dense_3_b":[[0.012673786],[0.01128344],[0.022662073]]},{"dense_4_W":[[-0.85258716,-0.6859794,-0.7441323]],"dense_4_b":[[-0.010446228]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA-A030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA-A030x00x00'.json deleted file mode 100755 index ef1e50fb4b..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA-A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.321424],[1.0282952],[0.3231149],[0.050224524],[1.0217996],[1.0223825],[1.0230912],[1.0082365],[0.9936996],[0.9721316],[0.94674724],[0.050032564],[0.050057508],[0.050079145],[0.04995292],[0.049778342],[0.049467754],[0.04904953]],"model_test_loss":0.04801265150308609,"input_size":18,"current_date_and_time":"2023-08-06_04-34-24","input_mean":[[24.640993],[0.0068147755],[-0.00017586962],[-0.007561566],[0.0058099264],[0.005813637],[0.0063611735],[0.005459741],[0.0055605527],[0.004139945],[0.0030338452],[-0.007694561],[-0.007676937],[-0.007659136],[-0.007666928],[-0.00773279],[-0.007866388],[-0.007996489]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.7891235],[-1.3479378],[3.686604],[-0.041683935],[0.44453996],[0.89426214],[-0.07687369]],"dense_1_W":[[-2.6697454,-0.03765943,1.0202249,-0.52507985,-0.13629472,0.6595523,-0.13299626,-0.048831288,-0.13964303,-0.62626183,0.16865243,0.25943044,-0.5501048,-1.1343125,0.94113344,0.9836929,-0.003212936,-0.70527804],[-0.41116533,1.0958958,0.012986355,-0.32682467,-2.421896,2.745534,0.9753023,0.13926715,0.91335714,0.52315897,-0.7597256,2.3798738,-0.07218695,-1.5000907,-1.3250524,-0.9156551,0.118389815,0.88640165],[2.4582686,-0.72908694,0.94068986,-0.34913862,-0.041044798,1.2958984,-0.024698433,-0.24287732,-0.42381126,-0.74013126,0.52158904,0.19182011,-0.514857,-1.3592434,0.94803435,1.2861104,-0.039313756,-0.8227899],[0.033646453,-3.5824103,-6.09218,0.43962353,1.8247055,-1.3911265,1.4840937,-0.15692972,-0.5501356,-0.7384373,2.226222,-1.9952009,-0.8098372,2.1930652,-0.10924932,1.0031217,-0.57847834,0.072315976],[0.10464661,-3.4566085,-0.04553826,-3.0969014,-1.1141416,-1.5840448,-2.459453,-1.2589267,-1.7775773,0.013487749,0.36193714,0.9506872,0.2682508,0.8656542,-0.36186987,-0.22262314,-0.09480439,0.49781433],[0.23307775,1.1548069,-0.005890356,-0.36526188,-1.7491344,1.6553907,0.7824479,0.28973,1.0826069,0.27719763,-0.7125912,1.6590072,0.50719297,-1.3509704,-1.0290717,-1.1256452,0.31335434,0.72853845],[-0.047236566,-3.5460665,-3.2294989,-0.019556083,0.1316267,-2.8824382,0.1793949,-0.37179092,-1.2276187,0.8579884,2.932915,-0.8372722,0.085465014,1.8520348,0.1647215,-0.5610902,-0.38116512,0.21042979]],"activation":"σ"},{"dense_2_W":[[0.35697874,0.13488762,0.17423156,0.051741544,-0.4516404,0.37111923,-0.3326717],[-0.020012485,0.20876743,-0.470396,-0.48033553,0.032553833,-0.055029735,-0.5415699],[0.53745645,0.11958758,-0.59997284,-0.3589176,-0.1754238,-0.013715318,-0.19413082],[-1.2985301,-0.89441663,3.2249649,-1.9904556,-3.8377733,4.1878753,0.033228528],[0.30518278,-0.14937647,0.55065024,0.44417018,-0.07627243,0.16218498,-0.53365713],[-0.26422963,-0.05829067,-0.22699557,-0.35607624,-0.5975787,0.2094802,0.34373868],[0.42617777,1.194375,0.6779001,-0.27449745,0.8595841,0.21543206,-0.30614635],[0.56020504,0.1932858,0.28161722,0.5497468,-0.44715992,-1.0248823,0.45490965],[1.1460264,0.17489141,0.008437298,0.5179868,1.538886,-0.15028878,0.65506715],[0.19077669,-0.359682,-0.07988683,0.13030027,-0.07886453,-0.09370026,-0.39061382],[1.2301579,0.48008695,1.26726,-0.61532944,-1.0548761,0.45611963,-1.2783793],[-1.6239753,-1.8029108,1.2390069,1.7501497,2.0948563,-0.19781892,0.31619692],[-0.13156338,0.56530046,0.7108869,-0.15966755,0.09949921,0.847682,-0.5426604]],"activation":"σ","dense_2_b":[[-0.2809068],[0.071166106],[0.09345343],[1.8773439],[0.18102801],[0.0072933524],[0.044778902],[0.17261441],[-0.022777654],[0.12632732],[-0.19065998],[0.2023951],[-0.08659856]]},{"dense_3_W":[[-0.44438112,-0.027584514,-0.0035520266,-0.29944763,0.38794,0.4122213,-0.48664984,-0.16656086,0.25323913,0.23457485,0.40909493,0.062813886,-0.46914828],[-0.33397192,0.19350144,-0.6312562,0.4614687,0.3287365,-0.6280831,-0.16421531,-0.1758853,0.10033424,0.08385237,0.19110605,0.21503538,-0.5893766],[0.41958082,-0.17782119,-0.13674387,0.51600313,-0.31165692,-0.15396564,0.23499595,-0.47514582,0.51199234,-0.48403975,0.541148,-0.8224857,0.2995478]],"activation":"identity","dense_3_b":[[0.065908685],[-0.027226413],[-0.075099945]]},{"dense_4_W":[[0.023863196,0.109854415,1.0994612]],"dense_4_b":[[-0.07588644]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBG-A030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBG-A030x00x00'.json deleted file mode 100755 index c40b267684..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBG-A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.345774],[0.6516757],[0.2946899],[0.036000013],[0.6570742],[0.65476614],[0.65189326],[0.6298937],[0.61620677],[0.5998042],[0.585703],[0.035867088],[0.035853058],[0.03583253],[0.035650827],[0.035447672],[0.03509526],[0.034743294]],"model_test_loss":0.04811468347907066,"input_size":18,"current_date_and_time":"2023-08-06_04-58-52","input_mean":[[23.215597],[-0.0051006116],[-0.0055196565],[-0.01567796],[-0.005811626],[-0.006771491],[-0.0076306327],[-0.0097848335],[-0.012780408],[-0.015299056],[-0.014718147],[-0.0158138],[-0.01582171],[-0.015839318],[-0.01598839],[-0.016109424],[-0.016302101],[-0.016615149]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.5351528],[-0.08217364],[0.7499818],[-0.9374063],[-2.8954298],[0.5392535],[-3.6015053]],"dense_1_W":[[-0.3087897,0.36021253,0.001141582,-0.5416911,-0.37556788,1.0140606,-0.10794389,0.041419383,0.09076369,0.22191924,-0.13948734,0.77267516,-0.42759845,0.05381029,0.18476713,-0.004047777,-0.30918673,0.26700374],[0.0053725103,2.3370762,2.1885164,-0.6068641,-1.8911628,-0.1114463,-1.1982107,1.506414,1.4532031,-1.4538794,-0.44084385,0.23688209,0.25542602,-0.57141525,-0.3206077,0.6730285,-0.21775477,0.139656],[1.3912241,0.5980732,0.007555601,-0.3157546,1.0649415,-1.0759517,0.38208148,0.39749306,0.4723742,0.079457946,-0.22618146,-0.52275753,0.36008105,0.15328345,0.31112024,0.47836456,-0.34323418,-0.06713888],[-0.5376176,-0.8203641,-0.0054783067,0.18999593,0.8493549,-1.6256207,0.5286132,0.17178455,-0.12867084,-0.57045287,0.380642,-0.21426243,0.012443455,0.08020425,0.04434846,-0.2713304,0.26582962,-0.11160915],[-1.6407828,1.6409405,2.1913364,0.022263499,0.09162234,0.83557415,-0.5309621,0.024207013,-0.07581847,-0.014490255,-0.81525505,-0.0492574,0.24616976,0.15028022,-0.59524703,-0.0825454,0.4095187,-0.094127044],[1.3961402,-0.08105169,-0.008954976,-0.07117163,-0.8383657,0.87360406,-0.6657976,-0.87985647,-0.5403045,0.18084845,0.17272979,0.52761483,-0.10129359,0.052255798,-0.6804288,-0.19871165,0.32997298,0.08579106],[-2.1104581,-0.24356179,-2.845604,0.654625,-0.96994275,-1.8767366,0.09136246,-0.1956461,0.53588957,1.3931365,-0.2444548,-0.15516165,0.21176384,0.14917651,-0.5694106,-0.70854956,0.0043206294,0.400021]],"activation":"σ"},{"dense_2_W":[[1.0278689,0.4348165,-0.7295973,-0.17747834,-0.10278106,0.8901122,0.17545664],[0.13757691,-0.1752453,0.14579734,-1.0508666,-0.22797246,0.38786298,0.19690785],[1.1957673,0.0039350316,-0.40309194,-0.2067109,-0.49688277,0.046528805,0.34363425],[0.9798856,0.49028137,-0.85653776,-1.1984895,-0.36523688,0.46900073,-0.32531098],[-1.2176576,-0.14628303,1.6475934,1.303342,-1.3007184,1.0287305,1.0352072],[-1.4576483,0.32830203,0.16497982,0.9603124,0.10295537,-0.26579857,0.044457998],[-1.0095707,-0.47438616,-0.8685609,1.2697761,-1.1946431,-1.4605931,1.2599539],[0.81197304,-0.09208761,0.40551397,-0.056155458,-0.58765817,-0.23485978,-0.2638987],[-1.5602592,0.087970994,0.52796125,0.39796272,0.12936676,-0.81510574,0.2554148],[-0.37163022,-1.1731296,-0.14651866,0.54896307,-0.6345117,-0.76398563,-0.594298],[0.55459255,-0.11434374,-0.7491592,-1.2193239,0.03146761,-0.27160767,0.13656238],[-0.41351238,-1.394458,0.32861343,-0.5550233,-0.06432965,-0.26546374,-1.3905721],[-0.07234112,0.12938619,-0.5258625,0.20187783,-0.11095027,-0.5983514,0.17259556]],"activation":"σ","dense_2_b":[[0.07223941],[-0.18307218],[-0.011371265],[-0.030353792],[0.399116],[-0.2056006],[-0.18057384],[-0.034727614],[-0.1045567],[-0.02377866],[-0.08901428],[-0.19908707],[-0.12886626]]},{"dense_3_W":[[0.6559019,0.16872415,0.47964025,0.6487196,-0.8777068,-0.23541385,-0.89913565,0.15309054,-0.58269215,-0.7279551,0.29873818,-0.32794726,0.08947766],[0.26739633,-0.18432048,0.59314704,-0.2931499,-0.4403377,-0.13366148,-0.7476601,0.040935304,0.4834687,-0.46328762,0.38387424,0.24528371,-0.11175901],[0.35347906,-0.0840438,0.3375809,0.18057397,-0.5231106,-0.3020804,0.014876371,0.24072316,-0.3709018,0.04671709,0.20817442,-0.017570972,-0.4402727]],"activation":"identity","dense_3_b":[[0.10084228],[0.0669727],[0.031454615]]},{"dense_4_W":[[1.4559509,0.20071371,0.08563809]],"dense_4_b":[[0.09271952]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEA-T020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEA-T020x00x00'.json deleted file mode 100755 index 691c3d8257..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEA-T020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.3856297],[0.59803385],[0.26888487],[0.03426154],[0.6021013],[0.60129803],[0.600173],[0.58730155],[0.5795345],[0.56942075],[0.56083477],[0.034230746],[0.034222513],[0.0342368],[0.034183532],[0.034086205],[0.03391226],[0.03362311]],"model_test_loss":0.04541628807783127,"input_size":18,"current_date_and_time":"2023-08-06_05-23-15","input_mean":[[19.52228],[0.079693735],[-0.0040563247],[-0.016650539],[0.080978006],[0.08070611],[0.080451526],[0.07918187],[0.07886801],[0.077705875],[0.07789241],[-0.016722582],[-0.016714904],[-0.01669564],[-0.0163877],[-0.016280727],[-0.016055403],[-0.015882453]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.08104281],[3.8909714],[0.057941712],[3.2389338],[-0.10055978],[-4.1230493],[0.006579657]],"dense_1_W":[[0.0019672236,1.7124008,5.2847867,0.31392902,0.54002285,1.149604,-0.40869483,-1.4113252,0.25494707,-0.3660509,-0.9714891,0.9837418,0.9273289,-0.36905542,-0.59060776,-1.2861198,-0.14369972,0.1715609],[2.0075417,-1.0534788,-2.5004108,0.10716736,0.4385972,-0.6827907,0.45479578,-1.0585693,-1.0196034,0.4777303,0.98654383,0.1564951,-0.558304,0.5957592,-0.12573951,-0.28325465,0.012213282,0.11858977],[0.093256205,-0.27820048,-1.1696479,-0.46487743,-0.5531493,0.66647863,-1.3765898,0.36791116,0.12435645,0.5120396,-0.24957871,0.12178344,0.8057537,-0.54323083,0.07556655,-0.0014235709,-0.056690272,0.15405625],[-0.024608504,0.010786505,-0.037946787,-0.32397965,-0.4846185,1.032738,-0.6093787,-1.2915424,-0.03675826,-0.21950667,0.44720176,-0.44202822,-0.5876285,-0.5605793,-1.8322814,-1.6573476,-1.3555098,-0.7895331],[-5.2810225e-5,-1.4757657,-0.0046121287,0.4629083,1.1526763,-1.8665615,0.6062522,0.7366192,0.40736353,-0.106786564,-0.2220295,-0.98978,-0.2532476,0.9250863,0.1220093,0.0031458773,-0.19573754,-0.063445985],[-1.8668225,-1.0928262,-2.4432688,0.76242334,1.1889721,-0.9581941,0.0032050284,-0.8823583,-1.2202708,0.3004889,1.2086878,-0.53652066,-0.28588182,1.1637923,-1.0296966,-0.27406633,-0.034686062,0.2627352],[-0.09106887,-0.31075913,1.17905,-0.74274266,-0.20221533,1.2496672,-0.28414592,0.021432078,1.0067991,-0.25608063,-0.43758723,0.52320695,0.09239755,-0.6291368,0.6016738,0.16577406,0.10509334,-0.21720383]],"activation":"σ"},{"dense_2_W":[[-0.085414894,-0.20918435,0.17373109,0.10737947,-0.82685804,0.20342289,0.212457],[-0.20115225,0.29464254,-0.44532576,-0.014358113,0.691581,-0.33132514,-0.13227542],[-0.09087903,0.5010818,0.5607322,0.03217964,-0.5053537,-0.39688778,0.47023636],[-0.30364254,0.49323803,0.055883832,0.05977077,-0.7746708,-0.17011528,-0.2880824],[0.18880495,-0.5190757,0.31874385,0.29983982,-0.3985195,0.035492044,-0.44292748],[-0.9273464,-0.13842295,-0.036056563,-1.1684054,0.9577527,0.66510856,-0.027885118],[0.099401176,-0.5396238,-0.6235069,-1.3781581,0.79803157,0.43778622,-0.40184033],[-0.9619544,2.0476668,-0.8396164,-0.12754412,1.6685368,0.44752124,-1.353382],[-0.5558298,0.5099584,0.110654734,-0.37428614,0.7436413,0.6881325,-0.9043214],[-0.06558644,0.24584974,0.6592815,-0.19850211,-0.9235771,0.078365356,0.45574242],[-0.57793844,-0.91109204,0.60808426,0.3936904,-1.3562016,0.5863055,0.008310561],[-0.8589996,-0.53710437,-1.2663639,0.18269065,2.293696,1.254948,-0.7799597],[0.6527474,-0.3124623,-0.34758097,0.27498147,0.002866847,-0.77761084,0.6969836]],"activation":"σ","dense_2_b":[[-0.0076770815],[-0.0019400008],[0.023349117],[-0.008292667],[-0.011734453],[-0.4216689],[-0.20562689],[-0.08058182],[-0.12332897],[-0.007057092],[-0.27095175],[-0.28152117],[-0.0048717586]]},{"dense_3_W":[[-0.54598933,0.30111024,-0.31070733,-0.30095556,-0.28257152,-0.30806056,0.61478865,0.639757,0.48092464,-0.31418368,-0.6392647,0.82360584,-0.12001248],[-0.4009894,0.28335997,0.059711292,-0.19983076,0.3395215,-0.6511789,0.46926227,0.012918541,-0.4768196,0.34748575,-0.33296925,0.40980956,0.29510143],[-0.32422495,-0.28320903,0.22919968,-0.18012339,0.25318158,0.44350082,-0.51897806,0.51467586,0.14846486,-0.5721817,-0.20305538,0.67044383,0.2138928]],"activation":"identity","dense_3_b":[[-0.043942094],[0.03467515],[-0.047385007]]},{"dense_4_W":[[-1.329141,0.5136682,-0.26201633]],"dense_4_b":[[0.043247793]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEG,A010x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEG,A010x00x00'.json deleted file mode 100755 index 1d04ec1f69..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEG,A010x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.414752],[0.809778],[0.32968998],[0.038563218],[0.81399393],[0.8130152],[0.8116411],[0.8044098],[0.7990659],[0.7908311],[0.7781809],[0.03845621],[0.038476728],[0.038496315],[0.038509805],[0.038388517],[0.03807538],[0.037689537]],"model_test_loss":0.007678080350160599,"input_size":18,"current_date_and_time":"2023-08-06_05-48-54","input_mean":[[21.623014],[-0.06315314],[0.028330239],[-0.0069412887],[-0.07000519],[-0.06754908],[-0.06473992],[-0.055388335],[-0.04912587],[-0.041271344],[-0.032815684],[-0.006859833],[-0.0068624676],[-0.006869615],[-0.0069527323],[-0.0069756005],[-0.0070287744],[-0.0070639635]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.7605686],[3.5044053],[2.0832198],[-0.25828874],[0.3039091],[-0.089539275],[0.118453376]],"dense_1_W":[[-1.7583797,0.589543,-1.0319984,0.110393494,-0.21674192,-1.7155991,0.8325825,-0.16004571,-0.913345,-0.0812225,0.67669153,-0.80105156,0.25075755,0.916074,-0.095394626,-0.020104544,-0.005883078,-0.080861904],[1.8151304,0.19393112,-1.090924,0.33811733,0.05085238,-1.1737207,0.32235587,-0.44897,-0.5966143,-0.14382847,0.75931793,-0.14169198,-0.35926667,0.5962395,-0.093506224,0.16791871,-0.18208155,-0.02677418],[1.5013692,0.84768164,0.9670481,-0.18950337,0.05811444,0.036552854,0.6984422,0.047381528,-0.19678752,-0.6145364,0.11384745,-0.26299715,0.15431781,0.42217052,-0.61956424,0.076191664,0.17176628,-0.015458679],[0.010009106,-0.08474945,-0.11727848,-0.5954893,0.21653149,-0.83162314,-0.12228016,-0.006441115,-0.48080042,0.007156214,0.22622024,-0.6214733,0.30532193,0.7250713,-0.22122426,-0.3155122,0.31625217,0.4177061],[-0.0022816912,0.36319026,2.6736248,-0.23002017,-0.6987022,-0.0061110156,-0.36389568,0.5511679,0.08328913,0.5146548,-0.5392843,0.7437445,-0.046624888,-0.21139482,-0.35767952,-0.3415711,0.3786916,0.07167081],[0.0050385734,-0.43462712,-0.05308,0.025633823,0.29115447,-1.6235275,0.13262115,0.3036328,0.48786274,0.30519634,-0.50269544,-0.89282864,0.34320372,0.69487166,0.34770367,0.17281933,0.122459196,-0.2835277],[-0.16018158,-2.6079166,0.051285002,-0.8959181,-2.6147542,-2.7455857,-3.0082538,-2.166046,-1.4802098,-0.9145916,0.4948057,-3.1999378,-1.971094,-1.618746,-0.6039725,0.5491652,1.9303606,5.316056]],"activation":"σ"},{"dense_2_W":[[-0.8494065,-0.94668996,-0.25524712,-0.49821833,0.10248175,0.16570607,0.08037025],[0.407395,1.2177871,0.6595171,0.51689386,-0.5024803,-0.112236835,0.55882525],[0.38773674,-0.94255173,-0.21581627,0.40207997,-0.7363527,0.35848704,0.21115805],[0.6955828,-0.40022588,0.18614924,-0.1998243,-0.5945706,0.63007945,0.121129975],[0.6693154,-0.42887792,-0.43107304,-0.12879528,0.096946076,0.4243904,-0.1448268],[-0.45311376,-0.06397047,-0.475693,-0.18040454,0.19093697,-0.36706218,-0.008771336],[-0.84971607,-0.5401956,0.28763822,-0.50512564,-0.279698,-0.8399409,0.5433065],[-1.0076836,-0.49472776,0.20072678,-0.19309734,-0.29518792,-0.08193111,0.2831805],[-1.0347741,0.15746295,0.09370998,-0.25177705,-0.017589109,-0.40057716,0.45802802],[-0.32091177,0.17798328,-0.49051303,-0.12601621,0.10984774,-0.7267025,0.09803074],[0.39275715,0.24044967,-0.058441114,-0.15604238,-0.051029686,-0.18873541,0.061358593],[-0.1873293,-1.9225551,-0.067686126,-0.5021896,-0.051216066,0.24865563,-1.235181],[1.4839585,-1.365924,-1.2432988,-0.8610499,-0.119583905,-0.20667724,-2.5413523]],"activation":"σ","dense_2_b":[[-0.090611175],[0.13049172],[-0.2995885],[-0.18042783],[-0.18258452],[0.03439863],[0.038779728],[-0.0974849],[0.2627597],[-0.09157007],[0.0042730095],[-0.022836503],[0.07373033]]},{"dense_3_W":[[-0.09544235,0.07383687,0.57643867,0.51306605,0.5831484,-0.39026436,0.4894308,-0.30050197,-0.3482933,0.16585375,-0.013200446,-0.538111,0.012991255],[-0.23729068,0.22367261,-0.22196151,0.670639,0.15204789,-0.5559103,-0.42776123,0.12732859,0.0007805089,-0.40029454,-0.12749611,0.1569053,-0.42127144],[-0.5697941,0.6104953,0.22483532,0.38580984,0.058564458,-0.20807105,-0.41168946,-0.49617398,-0.67103213,-0.032330584,0.30103138,-0.6870759,-0.7820781]],"activation":"identity","dense_3_b":[[0.0017381236],[0.0156807],[0.015327422]]},{"dense_4_W":[[-0.36441112,-0.7462365,-1.0239874]],"dense_4_b":[[-0.012290128]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T39-A130x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T39-A130x00x00'.json deleted file mode 100755 index f6b6dc3973..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T39-A130x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9030814],[1.0453333],[0.3170026],[0.04460543],[1.0398759],[1.0416826],[1.0431112],[1.0299109],[1.0157675],[0.99077934],[0.96246296],[0.044478334],[0.044504065],[0.04452782],[0.044476468],[0.044363912],[0.04419919],[0.043906868]],"model_test_loss":0.028506241738796234,"input_size":18,"current_date_and_time":"2023-08-06_07-28-34","input_mean":[[25.499252],[0.028501904],[-0.0028704705],[-0.006133777],[0.028923629],[0.028642828],[0.028525524],[0.027212968],[0.02708821],[0.025971029],[0.025491338],[-0.0061524976],[-0.0061464473],[-0.0061450717],[-0.006191866],[-0.006216849],[-0.006269715],[-0.0064120986]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.1612873],[1.1304555],[-0.045539603],[0.18508305],[-0.056664106],[2.359981],[-0.003104607]],"dense_1_W":[[-1.0261196,1.6714283,-4.9839725,-0.25472918,-0.5927435,-2.1332676,0.41972587,-1.4847857,-0.5297093,-0.5873834,0.4926704,0.35519528,0.5963999,0.29114577,-0.44986778,0.24840392,-0.19448282,0.29746208],[1.5984797,1.2807095,-2.855458,-0.28417665,-0.6741327,0.14131893,-0.8411344,-0.48792252,0.20918193,-0.12904613,-0.06057345,0.27155536,0.5005968,0.12182206,-0.4972699,-0.26681903,-0.13244413,0.41992095],[-0.01631524,-0.11127795,0.62778777,0.14360946,-0.19943185,1.6136284,-0.74262536,0.17609622,0.47054547,-0.66130835,-0.34703505,0.30890283,-0.011658758,-0.9054101,-0.07164689,0.6967732,-0.07093875,-0.29011974],[0.24211173,-0.12465638,-2.2150717,0.5197125,0.5969984,-0.9115877,1.2352886,-0.61733866,-0.70987016,-0.34082124,0.6792926,-0.14224347,-0.39383444,0.29159838,-0.6175597,0.5266842,0.09999084,-0.22068383],[0.0020527053,-0.124916494,-0.0072491574,-0.32790923,0.6288478,-1.2486193,-0.077829614,0.290347,0.27691,-0.38082907,0.04554726,-0.42446274,-0.11070265,0.38662457,0.4693785,0.28157672,0.053745594,-0.1984251],[2.0714083,-0.45528322,2.190492,-0.2294528,0.80421203,-0.24660808,0.631071,-0.50690234,-0.35972506,-0.05297636,0.38328585,-0.41214883,0.13557836,0.58240587,-0.12109465,-0.19043957,0.1687669,-0.041427426],[-0.007373681,-0.24503441,-0.766152,0.19888358,-1.297256,0.97417396,-0.7913301,0.32273322,0.63816434,0.11862124,0.2828841,0.32503918,0.26446965,-0.75070786,0.17617404,-0.102831915,0.12236231,0.072185144]],"activation":"σ"},{"dense_2_W":[[0.84075487,-0.9698966,-1.1863552,0.39111534,0.61300087,-1.074546,-0.6429345],[-0.16599394,-0.34588924,-0.34965044,-0.070526905,-0.5569146,-0.33049506,-0.07336439],[0.5915367,-0.5171752,-0.13241306,-0.46928012,0.92575246,-0.72971493,-0.722351],[1.5593696,1.5437826,-0.8387062,1.0409446,0.35062063,1.3033848,-0.048639357],[-0.030403387,0.44161096,0.46425432,-0.1915973,-0.7348229,-0.3039007,0.29630142],[0.5050197,0.5076173,0.4501814,-0.48338422,-1.1334643,-0.32370403,-0.065987155],[-0.53219205,0.38907552,-0.56034696,-0.21546341,0.62926334,-0.26963118,-0.11765221],[-0.13998857,-0.41180918,-0.68951356,0.5040533,0.43773162,-0.37432873,-0.3054661],[0.060598448,-0.052345384,-0.05926513,-0.79581696,-0.536353,-0.58540416,-0.5439933],[-0.1929987,-0.074298754,0.2989631,0.09550092,-0.7899365,-0.4491801,0.20246264],[0.1728909,-1.0256978,-0.30253175,0.36276552,-0.5255227,-0.3984827,-0.042940307],[-0.37483662,-0.5567497,0.24257487,-0.9368595,-0.71663094,-0.7617147,0.5222287],[0.3595344,0.31717294,0.641732,-0.1949688,-1.1738145,0.16135724,0.059228286]],"activation":"σ","dense_2_b":[[-0.2908681],[-0.11676679],[-0.20927037],[-0.022777379],[-0.056520674],[-0.1025079],[-0.010873501],[-0.08840967],[-0.20289198],[-0.08710838],[-0.3852181],[-0.09839834],[-0.18181786]]},{"dense_3_W":[[-0.45135853,-0.43684617,0.16072902,-0.3907492,0.5050306,0.5548873,-0.0016576584,0.30690256,0.43964118,0.4280059,-0.029079122,0.6312158,-0.16514885],[0.8751171,-0.41735888,0.5142745,0.41110802,-0.5030071,-0.30468556,0.5376879,0.45157358,0.087431885,-0.2522119,0.017974667,-0.5217977,-0.5559542],[0.10950831,0.45705712,-0.2692873,-0.15272701,0.5711136,-0.009069097,-0.36759618,-0.6967481,-0.29732275,-0.16078,0.037027664,0.5842399,0.46625558]],"activation":"identity","dense_3_b":[[-0.048144232],[0.038749587],[-0.04579552]]},{"dense_4_W":[[1.0830055,-1.3294458,0.5527587]],"dense_4_b":[[-0.04092441]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T43-J020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T43-J020x00x00'.json deleted file mode 100755 index a96719aa6f..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T43-J020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9427967],[0.87432146],[0.3449518],[0.041372716],[0.88073754],[0.8794919],[0.8774352],[0.85170704],[0.8311592],[0.80134684],[0.7728664],[0.041213993],[0.041262195],[0.041307535],[0.04130587],[0.041196827],[0.04102109],[0.040738378]],"model_test_loss":0.032795943319797516,"input_size":18,"current_date_and_time":"2023-08-06_07-53-24","input_mean":[[23.424137],[-0.12035412],[0.0040231682],[-0.0048080194],[-0.118285224],[-0.11840886],[-0.118516885],[-0.116480246],[-0.11301401],[-0.107189395],[-0.09997545],[-0.0046797423],[-0.0047175437],[-0.0047546746],[-0.004927507],[-0.005063428],[-0.005227956],[-0.005348952]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.9417369],[-0.24273592],[1.4223384],[1.0486506],[1.447565],[-0.6927629],[1.0804037]],"dense_1_W":[[-0.4058283,-0.81563294,0.00033183617,-0.27639547,3.1342106,-1.7313385,-0.228073,0.9913803,-2.3060467,-0.96959984,0.75029725,-0.22633775,-0.21490769,0.52506644,0.95701593,-0.8487675,-0.19613568,0.23440045],[0.034500286,1.0905547,7.9065676,0.10637991,0.026667506,0.49172896,-0.59656775,0.9809094,0.0049328264,-0.4872245,-1.1707573,1.2050977,-0.18107356,-0.5157706,-0.38871238,-0.47595924,-0.17320715,0.5229742],[0.5588498,-0.6570481,0.0021321403,-0.2896172,1.1236126,-0.575634,0.56214845,-0.016197847,-1.0184777,-0.7082013,0.07940224,0.23188433,0.004668281,-0.2397409,0.34752426,-0.22746754,0.22416848,-0.100688644],[1.541966,0.42912173,-7.156812e-5,-0.5115884,-0.25799006,1.4016091,-0.72769475,-0.40935022,-0.5667163,-0.3968267,0.61420083,0.06877578,0.041468274,0.2682816,0.1332453,-0.3914694,-0.0010588124,0.10998447],[0.19860983,0.18228313,1.4962244,-0.24713515,0.309561,1.1720607,-0.4798918,0.60050476,0.5141609,0.010664739,-1.9016608,0.06223622,0.4967279,-0.18392076,-0.484281,-0.18898958,0.4617198,-0.01832523],[-0.051042855,0.36178812,1.3606699,-0.20764841,0.10236579,1.031499,-0.72788227,0.9447528,0.38027644,0.2683604,-1.9967669,0.91526955,-0.15156461,-0.5247163,-0.6771034,-0.011823598,0.7620024,-0.19407678],[1.524111,-0.18364623,-7.7449076e-5,-0.026552787,0.15087162,-1.7394279,0.66268677,0.75670546,0.7576604,0.20102891,-0.6852404,-0.28242418,0.23329456,0.32087836,-0.26189858,0.14684094,0.30590108,-0.1579458]],"activation":"σ"},{"dense_2_W":[[0.21370113,-0.5469511,0.38994473,-0.87885034,0.22193275,-0.2623318,0.9725592],[-0.39974675,-0.2669233,-0.7280023,0.0744481,0.31313443,0.68184376,-0.8690639],[-1.1618038,1.040867,0.07579963,1.2550652,0.9444778,0.6170199,1.5694822],[-0.55496246,-0.6109581,0.047377832,-0.6034833,-0.563908,-0.29172823,-0.1873672],[-0.47154403,-0.15439837,-0.33464748,-0.32102966,-0.43370283,-0.30466565,-0.50861603],[0.94471455,0.15859249,-0.49109864,-0.82194316,-0.28949282,-0.26072252,0.6200601],[-0.17757672,0.42580798,0.5348059,-0.86694545,-0.5312405,-0.20982458,1.0570047],[-0.9717297,0.6032017,-1.4936788,-1.3035914,-0.5127796,1.341816,-1.5745448],[-0.21112834,-0.380845,-0.2000692,-0.14918523,0.37498268,0.49246258,-0.07759563],[0.5571681,-0.37033182,-0.45625687,-1.1621255,0.45340016,-0.14524722,0.8753156],[-1.644583,1.9391878,0.6463959,1.3763337,0.7492759,-0.33528683,1.2163771],[0.20058957,-0.5563082,0.08262119,-0.48758602,0.08011511,0.15911381,0.589174],[1.0828615,0.3445846,0.008124553,-1.3508773,-0.7360904,-0.6484338,-0.007040125]],"activation":"σ","dense_2_b":[[-0.09792841],[-0.12135925],[0.28469688],[-0.3146848],[-0.030983448],[-0.22707085],[-0.07664623],[-0.28448796],[-0.03253531],[-0.19589026],[0.38351893],[-0.13162117],[-0.24342652]]},{"dense_3_W":[[0.6724217,-0.3455274,0.048990987,-0.08371895,-0.28143087,-0.019941397,0.6274694,-0.5836906,-0.40752873,0.17574412,-0.40815762,0.5177674,0.6628741],[0.71871656,-0.67533195,-0.5226403,0.0062096105,-0.03194264,0.2772788,0.45594773,-0.80367815,0.25479558,0.28959462,-0.7620481,-0.055599444,0.32025474],[0.49274486,0.089585,-0.58489066,-0.15075734,0.35932115,0.16879536,0.18689315,-0.38381797,0.37573037,0.19162786,0.30417326,0.35219628,0.20757556]],"activation":"identity","dense_3_b":[[-0.029657809],[-0.0076349713],[-0.10236976]]},{"dense_4_W":[[-1.0305482,-0.9352994,-0.15167141]],"dense_4_b":[[0.019799424]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA,A040x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA,A040x00x00'.json deleted file mode 100755 index c6e920b660..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA,A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.540721],[0.97576207],[0.3313625],[0.037843365],[0.9687592],[0.97072476],[0.97218126],[0.97131544],[0.9684263],[0.9628179],[0.9533884],[0.037710436],[0.03772708],[0.037749223],[0.03774041],[0.03766764],[0.037492532],[0.037175607]],"model_test_loss":0.008188891224563122,"input_size":18,"current_date_and_time":"2023-08-06_09-11-21","input_mean":[[25.743162],[-0.03419077],[1.694457e-5],[-0.0058412226],[-0.032445744],[-0.031978246],[-0.032078236],[-0.03277639],[-0.033087995],[-0.03541121],[-0.03758282],[-0.0058416994],[-0.005846817],[-0.005852368],[-0.0059208623],[-0.005982407],[-0.0061672865],[-0.0062656854]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.00080405985],[0.7854822],[-0.12339557],[4.3081584],[-0.7866419],[-4.1709423],[-0.8409999]],"dense_1_W":[[-0.011464089,-0.21720867,1.7038208,-0.8018396,-0.31464818,0.6335713,-0.37999704,0.64242667,0.94747055,-0.08193086,-1.2666425,0.025586708,0.432876,-0.09704421,0.07735149,0.66563797,-0.055053703,-0.16396695],[-0.92180765,0.47178316,0.037608773,0.25415114,-0.49117133,0.68139184,0.12054695,-0.040742125,-0.32435754,-0.20692724,0.31272388,0.33671296,0.19074297,-0.5344022,-0.32216358,-0.16691925,0.12728797,0.038775913],[-0.103043444,-0.30544865,-0.25746647,-0.17237106,0.052905187,0.4400764,-0.67536193,-0.06703455,0.24000691,0.061700933,-0.38188213,0.31053326,-0.18271814,-0.37914285,0.009493447,0.29651824,0.05323582,-0.039326254],[1.0605786,-0.060056392,-0.5810357,0.22576235,-0.13578887,0.011457395,0.030639524,-0.40217978,-0.83826524,-0.6082418,0.15762202,-0.23657623,-0.46672913,-0.047515202,0.35081884,0.13669041,0.22352155,-0.080405615],[1.6374902,1.1410245,0.59359837,-0.27866,-0.13386817,0.13762549,-0.16988072,0.41271707,0.14994158,0.27289742,-0.16715708,0.40429235,0.005580401,-0.69167936,-1.1274492,-0.71839035,-0.8099919,-1.0824188],[-1.0478101,0.0044337907,-0.5723063,0.11623494,-0.034284834,-0.650081,0.5400228,-0.29708397,-1.1310123,-0.20287414,-0.046815645,-0.61760116,-0.08759878,0.072666995,0.19055136,0.5814996,-0.16782755,0.014659258],[0.86524445,0.49477735,0.035929088,-0.13251677,-0.36860162,0.9281964,-0.471796,-0.18288918,-0.0002611768,0.058924783,0.05732142,0.45911258,0.06966288,0.0044731353,-0.40496862,-0.22457011,-0.16845165,0.31822684]],"activation":"σ"},{"dense_2_W":[[-0.15426435,-0.046661343,-0.43946412,0.624533,-0.09205635,-0.47168306,-0.8016902],[-0.53101015,-0.3685878,-0.5863992,0.4510693,-0.16216898,0.9400012,-0.21748114],[0.22712189,0.16995162,-0.29991642,-0.7336719,0.3751938,-0.53952307,0.26768756],[0.27349526,-0.6804414,0.07234837,0.6874648,0.106653705,0.12508605,-0.65603495],[0.07313242,-0.97843266,-0.5148208,-0.14121139,0.07274063,0.79724526,-0.4383511],[-1.1264609,-1.1770498,0.52797097,-0.36545604,0.5212269,1.5757213,-0.085593045],[-0.097091556,0.369785,0.14884436,-0.67693,0.5140766,-0.8676453,-0.016739987],[0.085827775,-0.100521185,-0.6224066,-0.30192837,0.35849503,0.041973434,0.35816756],[-0.42120174,-0.3240992,-0.4097286,0.18434778,-0.20248985,1.2600665,-0.68534833],[0.124515295,0.049313035,0.2003641,-1.1119213,-0.04333023,-0.38769117,0.48661488],[0.48089156,-0.05526323,0.25297868,-0.92118233,-0.34588912,-0.34006065,0.5504206],[0.50554097,0.048244223,-0.13434097,-0.4654796,-0.175737,-0.5890811,0.5968848],[0.2714133,-0.76585513,-0.4710219,0.72425234,-0.08094333,0.45696303,-0.24324968]],"activation":"σ","dense_2_b":[[-0.30605197],[-0.0722725],[-0.061257467],[-0.0143502485],[-0.055046625],[-0.11999873],[0.0056539187],[-0.047943417],[-0.031266216],[-0.028862225],[-0.044943057],[-0.006668254],[0.009506268]]},{"dense_3_W":[[-0.18731649,-0.08790928,0.05439343,0.08261642,-0.18359958,-0.42045295,-0.49756563,0.55669594,0.42419568,-0.36434284,0.29313055,0.55965924,-0.20341128],[0.17575984,0.11026421,0.10531715,0.39341643,0.4011678,0.34916008,-0.45358273,-0.12599039,0.6143738,-0.71328527,-0.583732,-0.4881176,0.5818727],[-0.1525316,0.094295666,-0.708604,0.46496,0.4017641,-0.020599859,-0.03952808,-0.17086326,0.27307847,0.0376419,-0.5269954,-0.020001007,0.52539593]],"activation":"identity","dense_3_b":[[0.0076207337],[-0.07809654],[-0.07344336]]},{"dense_4_W":[[0.03995432,-0.7892518,-0.67607296]],"dense_4_b":[[0.07132181]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A040x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A040x00x00'.json deleted file mode 100755 index b14894015b..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.041878],[1.0629945],[0.33361882],[0.04470225],[1.0674024],[1.0653876],[1.0623872],[1.0305605],[1.0037603],[0.9659078],[0.9315669],[0.044532184],[0.044523124],[0.044505402],[0.04425743],[0.04400374],[0.043602895],[0.043178014]],"model_test_loss":0.050424300134181976,"input_size":18,"current_date_and_time":"2023-08-06_09-38-42","input_mean":[[25.06497],[0.074133344],[-0.003671015],[-0.0061551738],[0.07510349],[0.07509486],[0.074765146],[0.07192954],[0.06950652],[0.06514102],[0.06143682],[-0.0061509674],[-0.006146431],[-0.006140578],[-0.0061463905],[-0.006205736],[-0.006276082],[-0.0062960368]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.045673113],[0.7692602],[3.6866767],[-3.3985317],[1.3993363],[0.0016273671],[0.036870282]],"dense_1_W":[[-0.052982505,0.06573528,0.5580607,-0.032680344,0.20608537,0.6934426,-1.0580161,0.66156256,0.06940833,0.55721414,-0.5868014,0.7408258,0.25445056,-1.0855104,-0.049797036,-0.38484633,0.13387734,0.20955376],[0.82260245,-0.01934001,-0.8111281,-0.418187,-0.78638,0.022366054,-0.8557658,0.23719062,0.43918282,0.55011797,-0.5533236,0.73082197,0.39111775,-0.66629314,0.08269158,0.29669186,-0.49751994,0.30054808],[2.0007224,-0.31018302,-1.8883644,-0.46103692,-0.182084,-1.1692013,0.18340528,-0.45994648,-0.63908005,-0.38715318,0.80325556,0.21984062,0.25636217,0.26680768,-0.064179085,0.06973789,0.029908044,-0.051753674],[-1.7532426,-0.44865423,-1.6179291,-0.5686573,0.20539987,-1.3053204,0.3192343,-0.39442357,-0.7004488,-0.24894904,0.73180014,0.023328634,0.32073107,0.6846023,-0.30778062,-0.08105825,0.2476391,-0.07462059],[1.0470898,0.13631506,0.9359457,0.7269999,0.48282263,-0.5516526,0.9416267,0.5219997,-0.12951173,-0.4016694,0.07761096,-0.9994486,0.00889868,0.37176034,0.17872189,-0.6502687,0.14589402,0.009702152],[-0.0022762392,0.54675275,-0.00070867874,0.030965228,-0.4284072,1.4484926,0.120421134,-0.8816781,-0.12615833,-0.3113866,0.5081008,0.26918358,0.42232123,-0.35750753,-0.4280094,-0.102303475,-0.05531494,0.061394636],[-0.0032405164,-1.2942008,-5.5235214,-0.3269165,0.6261494,-0.23602912,0.20249991,-0.63172483,-0.9731877,-0.5860727,2.2520695,-1.5046892,-0.71375567,0.421119,1.3741344,0.75040346,-0.39606163,0.1400608]],"activation":"σ"},{"dense_2_W":[[0.8646755,0.6376676,-0.26202708,-0.85868895,-0.07354249,0.69815946,-0.30686975],[-0.79679435,-0.32395786,0.058006734,0.82902014,1.1024014,-1.2736039,-0.13299379],[0.009736041,-0.35343233,-0.33363932,-0.5966722,0.2299318,-1.2228652,0.09423904],[-0.62453824,-0.16437167,0.10942579,-0.060125638,0.45838273,-0.27015314,-0.092518486],[-0.63952684,-0.032483563,0.028590042,0.8343624,-0.30501577,-0.4676638,0.4329707],[0.79951334,-0.10701151,-0.478834,0.11537501,-0.4790387,0.29373074,-0.45883498],[-0.38821566,-0.29865965,0.2401885,0.10201916,0.42648098,-0.95061827,-0.565707],[-0.33430934,-0.2328123,-0.4937564,-0.82547146,-0.38432762,0.33364365,-0.056874156],[-0.1879909,0.3929959,-0.035755124,0.042920403,0.099859655,0.34126663,-0.06774957],[-0.51760626,-0.7163332,0.46123,0.80046433,0.774819,-1.2809892,-0.071995825],[-0.2212481,-0.03539259,0.15500164,0.21800677,0.43387356,-0.9091443,-0.23553239],[0.0588365,-0.41657263,0.07661814,-0.45269957,-0.31246582,0.02730263,-0.52968377],[0.13910463,0.18369111,-0.8858626,0.21748419,0.09809011,0.5938796,-0.64197445]],"activation":"σ","dense_2_b":[[0.008012182],[-0.23325977],[-0.2646487],[-0.097698614],[-0.12920478],[-0.017523877],[-0.22028513],[-0.23008367],[-0.05471147],[-0.037543405],[-0.12661214],[-0.33879024],[-0.008564516]]},{"dense_3_W":[[-0.551337,0.31575167,-0.024517886,0.18234162,0.46279272,-0.56980455,-0.39026403,-0.40458184,0.12136029,0.77060765,0.5890807,-0.3826594,-0.66982037],[-0.5236327,0.1744381,0.2181645,0.23067036,0.3604599,-0.076701306,0.59198534,0.33430535,-0.3067706,0.40997064,-0.025134366,0.43618867,-0.18496975],[0.05840421,-0.04895308,0.13395454,0.1376814,0.007172281,-0.2367984,0.11277437,-0.39632714,0.30861083,-0.18120328,0.32123065,-0.3300665,-0.18326597]],"activation":"identity","dense_3_b":[[-0.044578213],[-0.053736046],[-0.039986763]]},{"dense_4_W":[[-1.1892661,-1.1514404,-0.23770276]],"dense_4_b":[[0.04846745]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A110x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A110x00x00'.json deleted file mode 100755 index cd654f158c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A110x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.1835976],[0.50364196],[0.2896164],[0.03164149],[0.50323784],[0.5006565],[0.4974164],[0.47733185],[0.4672212],[0.4542667],[0.44199622],[0.03166166],[0.031591646],[0.03152813],[0.031085894],[0.030772492],[0.03049355],[0.030188115]],"model_test_loss":0.019862331449985504,"input_size":18,"current_date_and_time":"2023-08-06_10-03-07","input_mean":[[28.85244],[0.04425216],[-0.0041957223],[0.00189616],[0.043761343],[0.044177886],[0.044471547],[0.042200115],[0.042693224],[0.04143423],[0.039585713],[0.0020322406],[0.0019822456],[0.0019134535],[0.0018024064],[0.0017335061],[0.0015339962],[0.0013252598]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0658591],[0.1936436],[0.4518953],[-0.11609417],[-0.1570751],[0.048095826],[-0.046569347]],"dense_1_W":[[-0.004707457,0.4473956,0.13764602,-0.22395788,0.24242325,0.63776755,-0.08127542,-0.42399785,0.29475614,0.2582357,0.109188624,0.09910998,0.37004673,-0.2302277,-0.70400834,-0.546052,0.023547564,0.4741781],[0.0381955,0.18421915,0.04350661,0.21583354,0.5884542,-0.2158797,0.07718011,-0.5616537,0.9083394,0.28627363,-0.1894099,-0.2100446,0.2202206,-0.1370028,-1.1312602,-0.47487968,0.24832286,0.4408434],[0.7762898,1.0442834,0.11404148,-0.34878308,-0.69273955,0.19884741,-0.1626407,0.13349383,-0.10278405,0.23388162,-0.089451395,0.46177745,0.37723348,0.121763706,-0.13678956,0.17649323,-0.07549353,-0.3959775],[-0.783192,1.122855,0.11342515,-0.24931048,-0.2821019,-0.35657248,0.02068258,-0.05386639,0.06588212,0.02498524,0.044847738,0.4069754,0.47117302,-0.19849198,0.20845832,-0.0699782,0.33122358,-0.6795351],[0.00011326268,1.4474508,-0.098368526,1.2762718,0.11316425,-1.4516851,0.64065456,-0.46301305,-0.8283665,0.27508196,0.18671927,-0.077629045,-0.18879989,-0.3955652,-0.48879743,-0.4056032,0.56802994,-0.11471572],[-0.0065793786,-2.1783507,-4.4956875,0.762094,0.012346029,-0.15102327,0.2524295,-0.28421104,-0.21410158,0.61175346,1.7392899,-0.90156704,-0.70463955,-0.2968591,0.38830018,0.14128718,0.2747739,0.35311458],[0.02353997,0.5450724,-0.0693562,-1.2107227,0.037023995,-0.7917878,-0.85124665,-0.15312323,1.1409906,-0.098705195,-0.6119329,0.6510644,0.5715456,0.6724691,0.14829972,-0.040057376,-0.23069982,0.20904635]],"activation":"σ"},{"dense_2_W":[[-0.36790708,-0.18296367,0.087080166,-0.39760453,0.3830243,0.62241393,0.6919145],[-0.7202243,-0.5884722,-0.15091783,0.2659929,0.25983915,0.5449759,-0.28087506],[-0.21222237,-0.06622563,-1.3436327,0.88072056,-0.46033114,-0.9914056,-1.2281073],[-0.46628833,-0.6112388,-0.7006136,0.045268953,-0.23548295,0.7181559,0.20354599],[1.2175599,0.12018807,1.7073644,1.8852,-2.6759875,-0.3933904,-1.1572093],[1.3216994,0.41956323,0.8226303,0.4240975,-1.5096661,0.27466688,-0.9298248],[0.58509827,0.1648558,-0.6233443,-0.4295914,-0.07741821,-0.24388136,-0.73506886],[-0.04536918,-0.118758574,-0.3014637,0.047318716,0.64757127,0.14709125,0.39016318],[-0.6148649,-0.044658426,0.047632687,0.16062225,0.12757532,-0.034659315,0.21982273],[1.2609576,0.5800496,1.1579013,1.0035592,-1.7974799,0.22080913,-1.1055709],[0.13451947,0.16517463,-0.29923442,-0.058697946,-0.5875903,-0.06878949,-0.14853679],[0.89515847,-0.05425017,-0.032778192,1.0362097,-0.7897799,-0.25606072,-1.7008675],[-0.9417327,-0.41135532,-0.17152491,0.24920806,0.12018676,-0.27114066,0.35788602]],"activation":"σ","dense_2_b":[[0.035452064],[-0.061806444],[-0.30320156],[-0.12731765],[-0.6156671],[-0.28060502],[-0.23378925],[-0.117936365],[-0.048415676],[-0.6017655],[-0.06631394],[-0.66439056],[-0.23023686]]},{"dense_3_W":[[-0.11672003,0.29795578,-0.12456141,0.5381993,-0.53840685,-0.40247312,0.20989291,0.49159276,-0.22878003,-0.042824574,-0.33531192,0.28073245,0.41946027],[-0.32805252,0.475642,0.3573824,-0.49994805,-0.39569223,-0.047109567,0.37351373,-0.48844007,-0.24302717,-0.09685829,0.50959045,-0.5235462,-0.4820086],[-0.39068025,-0.54056823,-0.01175546,-0.18405816,0.17738347,-0.23445752,0.3221799,0.3147654,-0.12418336,0.099429056,0.4175861,0.476971,0.4542602]],"activation":"identity","dense_3_b":[[0.0010864699],[0.0154576665],[-0.007836798]]},{"dense_4_W":[[-0.5562848,0.1392212,0.80414385]],"dense_4_b":[[0.013946899]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A220x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A220x00x00'.json deleted file mode 100755 index a87088b951..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A220x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9001546],[0.8910148],[0.3274157],[0.040540826],[0.8834622],[0.88589716],[0.8873834],[0.8764539],[0.8639384],[0.8453592],[0.82689476],[0.040332053],[0.040367138],[0.040403977],[0.040435143],[0.040342487],[0.04024493],[0.04013887]],"model_test_loss":0.020078090950846672,"input_size":18,"current_date_and_time":"2023-08-06_10-28-39","input_mean":[[25.522003],[0.08582278],[0.008883545],[-0.0002037975],[0.08510361],[0.08551095],[0.0860396],[0.08883015],[0.08862984],[0.0864298],[0.085077845],[-0.0002148503],[-0.00018821703],[-0.00016339964],[-6.241602e-5],[-6.687763e-5],[-0.00015304367],[-0.00029702246]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.915253],[2.939623],[-2.4185839],[-0.39643773],[-2.1530814],[0.4893658],[-0.13724159]],"dense_1_W":[[0.9216667,0.97025573,1.421669,-0.1396882,0.010332967,0.18803304,-0.9332185,0.2703217,0.00060562004,-0.12600191,-0.46021286,-0.2240383,0.20271374,-0.51589763,0.6207215,0.44742525,-0.39367884,-0.09291592],[1.6715853,0.7785398,0.005850832,-1.0173491,0.4553079,0.8458037,0.15688483,0.2634571,0.17708033,0.5423796,-0.055217728,0.9168812,-0.05433235,-0.024376664,-0.11111259,0.07965978,-0.23499657,0.3001446],[-0.7692335,0.45367107,1.3062898,0.12114362,-0.17871203,1.0367825,-1.3598495,0.32659042,0.01519312,0.08482268,-0.53881526,0.24113093,-0.12762344,-0.99958193,0.72357845,0.28504324,-0.07869418,-0.2410385],[-0.074967586,-0.8932838,-4.0057364,0.23615836,0.00941108,-0.7341468,0.49867523,-0.9044516,0.017188888,0.23537557,1.3382684,-0.77924585,-0.360125,1.0818274,0.53180915,-0.3764401,0.011514799,-0.08477046],[-1.5886045,1.2000962,0.004453795,-1.3671204,0.4819133,0.9824152,-0.5023873,0.28243682,0.40704778,0.07260184,0.1365017,0.86467725,0.03233452,-0.00952661,0.41033107,0.08297209,-0.46377563,0.34948194],[0.0075910687,2.266687,-0.0016384237,-3.0903444,-0.12066506,1.5151056,-0.63468546,0.5725647,0.6257293,0.4341759,0.15218543,0.8532952,0.8546602,0.40895426,0.53916293,1.0854417,-0.201866,-0.102309674],[-0.0011239403,-0.4433194,0.00013618177,0.07685914,0.44627297,-1.6901579,1.0461199,0.4270096,-0.19944872,-0.11602348,-0.023843208,-0.30021128,-0.7937927,0.82419336,0.41979665,0.24550915,0.12163588,-0.3639143]],"activation":"σ"},{"dense_2_W":[[0.08416271,-0.5661969,-0.094601616,-0.3356624,-0.43013197,0.29852423,-0.8936265],[-0.5426509,-0.31218562,0.1849797,0.92220074,-0.5298976,-0.28005078,0.958257],[-2.0036426,-2.5069656,-0.067196965,0.6672491,2.1173136,-1.5086235,1.268983],[0.8646879,0.21513842,0.4661601,-0.37882644,0.43791708,-0.2726415,-1.1590294],[-0.1635753,0.0068531507,-0.23812433,-0.30881009,0.19607985,-0.5296054,1.3078867],[0.65519524,-0.06720645,0.5960915,-0.5721334,-0.028427409,0.57693595,1.4606386],[-0.8911282,-0.3865244,-0.21443066,0.3449886,0.2604962,-0.21623199,1.1859549],[-0.031681005,-0.001625172,-0.53140074,0.5074547,0.17773396,0.117535636,0.6632053],[-0.0011490636,-0.36523163,0.0739205,-0.64264727,-0.18925111,0.30340505,-0.96839094],[-1.436539,-1.8282489,0.36490238,0.29383078,1.4719483,-1.199148,0.6856162],[-0.19116129,-0.55093837,0.68717355,0.5201886,0.015916765,0.39059064,-1.8648827],[-0.5506419,0.028565405,-0.78308797,-0.22101557,0.26896167,0.5421017,0.4748071],[-0.94420785,-2.5275416,2.1711938,-1.8177447,3.1286716,1.4996614,-2.2908063]],"activation":"σ","dense_2_b":[[-0.00038391305],[-0.11835421],[-0.47617963],[-0.19209594],[-0.3635465],[-0.25211266],[-0.3669457],[-0.18456477],[-0.10934913],[-0.38656622],[0.10978525],[-0.44773534],[-1.3670834]]},{"dense_3_W":[[0.047170885,0.4870071,0.71617556,0.12684053,0.6240494,-0.06735785,0.43605405,0.48105004,0.24143027,0.47041366,-0.81402504,-0.6457708,-0.80621207],[0.6236853,-0.39605463,-1.0041298,0.6159786,0.21967448,-0.37449515,-0.12439844,-0.47799566,0.8507706,-0.0146902865,0.67411196,-0.43745592,0.7313358],[-0.07477755,0.34393924,-0.19138569,0.24039291,0.40378293,0.16958828,0.10585917,-0.04923932,-0.29897973,0.25619817,-0.65909696,0.15387979,-0.470382]],"activation":"identity","dense_3_b":[[-0.12447261],[0.07334185],[-0.15171815]]},{"dense_4_W":[[-0.44094202,0.9386458,-0.12973748]],"dense_4_b":[[0.09239494]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPA-G030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPA-G030x00x00'.json deleted file mode 100755 index b394c71309..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPA-G030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.034213],[0.75561374],[0.4482074],[0.029542489],[0.7461425],[0.7492127],[0.7519972],[0.75616795],[0.7586054],[0.76215684],[0.7658316],[0.029329019],[0.029394325],[0.029459374],[0.029631147],[0.029686036],[0.02966829],[0.029647704]],"model_test_loss":0.013146449811756611,"input_size":18,"current_date_and_time":"2023-08-06_11-45-32","input_mean":[[22.384304],[-0.09092718],[0.0023652136],[-0.01865998],[-0.0913438],[-0.0915985],[-0.0908737],[-0.090024576],[-0.087187625],[-0.08577747],[-0.08269682],[-0.01866263],[-0.018653778],[-0.01863699],[-0.018579295],[-0.018651243],[-0.018765053],[-0.018734809]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.047012586],[0.92324436],[1.1744541],[0.22243287],[-0.3944335],[-0.34763417],[1.5356755]],"dense_1_W":[[-0.00047711062,0.4344246,-0.003556974,-0.05324533,-0.104414105,1.1889359,-0.56735265,-0.37708575,-0.06931248,0.64209265,-0.22444351,0.38017142,0.09980623,-0.07572917,-0.9272979,-0.089443296,0.0127646355,0.3978492],[1.076277,0.7404641,0.068134926,0.1926029,-0.35190815,1.1527709,-0.7064761,-0.8153627,-0.5065293,0.47775775,0.02251806,0.14456208,-0.043609474,-0.26085764,0.00093237846,0.36519462,0.028837174,-0.4271338],[1.263567,0.35015926,-0.14665723,0.43871006,-0.10830087,0.7354503,-0.9999807,-0.022604555,0.034673784,-0.35979328,0.35240602,-0.18725228,-0.24774587,-0.41631046,0.20720515,-0.0032023392,0.047886286,0.17100596],[-0.00094677473,0.19828819,-1.8369352,0.30248693,-0.54879934,-1.1427166,1.008834,0.21161656,-0.41065678,0.8713622,-0.10214338,-0.40863365,-0.24902351,0.20304148,-0.12075667,0.458101,0.2590354,-0.43551084],[0.6667485,0.91926587,-0.22846676,0.33097208,0.73958164,-1.4895654,1.0193743,-0.5367387,-1.5389364,-0.11664559,0.9663045,-0.51155037,-0.23083033,0.06350666,0.1535683,-0.0091331415,0.19499558,0.03682613],[-0.04119794,0.9239906,2.6969457,-0.25119433,-0.041676786,1.493704,-0.05057316,0.7667589,0.37086174,0.17998935,-0.830209,0.039195158,0.3242035,-0.39648166,-0.05009495,0.03618407,-0.030978123,0.1289426],[1.3126956,-0.55459666,-0.08771991,-0.20699926,-0.049515888,-1.0882213,1.0564349,0.6318207,0.0051460112,0.37931073,-0.39057365,-0.09507244,0.09743938,0.3942499,-0.33766025,-0.32643616,-0.18655044,0.65716547]],"activation":"σ"},{"dense_2_W":[[-0.42937973,-0.1671434,-0.43484113,0.6091573,-0.40485424,-0.54429215,-0.23403765],[0.44798595,0.19865125,-0.28430828,-0.4019087,-0.35975724,-0.1540725,-0.5593976],[0.38287392,0.458221,0.15593868,-0.14855632,0.14968492,0.031657934,-0.36288145],[-1.0350971,-0.5071168,-0.6141563,-0.088436134,0.52254784,-0.8051361,0.45060462],[0.45581025,-0.32779318,-0.7036135,-0.8545516,0.12893179,0.24949677,-1.2301726],[-0.037454057,1.2664734,1.068089,1.4344928,0.36088267,-1.0365765,1.7306651],[-0.122854166,0.12376001,0.48009405,0.109703854,-0.56688136,-0.14703372,-0.024793213],[-1.0537682,-0.46469265,-0.12660673,0.6073404,-0.2877888,0.15866885,-0.14931393],[0.17649716,-3.0929239,-2.3515308,2.8477354,1.1622903,-0.68750924,-0.45515713],[-0.73418194,-1.0775651,-0.7719372,0.16897969,0.3085781,-0.16281687,1.0447707],[0.46595046,-0.3949184,0.18229371,-0.12530676,-0.26597655,-0.0012733624,-0.114680044],[-0.124461986,0.5196014,-0.34539875,0.10735016,-0.06331189,0.4852887,-0.5834995],[0.39723673,-0.09609674,-0.1471512,-0.51641434,-0.2519636,-0.34744382,-0.43439695]],"activation":"σ","dense_2_b":[[-0.11312245],[0.027094306],[0.017765665],[0.044731423],[-0.18022782],[0.09928121],[-0.09837057],[-0.1548419],[-1.0962769],[-0.053587534],[-0.0071940883],[-0.014310544],[-0.03562835]]},{"dense_3_W":[[0.18594098,-0.6818517,-0.12188004,0.65018547,-0.37953106,0.40454167,0.16297354,0.59620595,0.025523338,0.44727668,0.1114748,-0.48999,-0.062479552],[0.29692125,-0.21146217,-0.5138796,0.6005236,-0.7997973,0.20368089,-0.22437662,-0.2668092,0.8479786,0.28527832,-0.6137382,0.43294674,-0.24874023],[-0.27988523,0.5345244,0.52841073,0.26012418,0.5051741,-0.47729176,0.04220592,-0.024942419,-0.9326824,-0.69562954,-0.09658818,0.2498976,-0.07045708]],"activation":"identity","dense_3_b":[[-0.060025424],[-0.049905777],[0.058896556]]},{"dense_4_W":[[-0.78769284,-0.9394558,0.4579486]],"dense_4_b":[[0.05315631]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPG-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPG-A020x00x00'.json deleted file mode 100755 index 19fe18efd7..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPG-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.299596],[0.7368779],[0.3343281],[0.038595177],[0.74043566],[0.73867756],[0.7369786],[0.7199797],[0.7073316],[0.692301],[0.6776942],[0.038740512],[0.038692366],[0.038640175],[0.038314454],[0.038039386],[0.037639543],[0.03721186]],"model_test_loss":0.0196799598634243,"input_size":18,"current_date_and_time":"2023-08-06_12-10-34","input_mean":[[25.72662],[0.05758428],[0.0074817957],[0.00042151322],[0.054403115],[0.054942675],[0.055003498],[0.05778212],[0.058146343],[0.055029176],[0.052427325],[0.00031705483],[0.00029397535],[0.00027291433],[0.00026472707],[0.00016882192],[-7.878055e-5],[-0.00038947008]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.24635658],[-2.3609567],[0.8278294],[1.8481108],[-0.0009179342],[-5.722017],[-0.38498595]],"dense_1_W":[[-0.3599328,-0.22590983,-1.5835724,-0.45297816,-0.39821658,-0.84838223,1.0513067,-0.6676435,-0.3157859,0.36385095,0.60838795,-0.36815816,0.40623605,1.0187281,-0.8164682,0.725533,-0.109838545,-0.119914874],[-1.4658633,0.8083861,1.0365679,0.96016145,0.032342948,0.61396354,-0.7277645,0.117941886,0.31804556,0.06370998,-0.3070831,0.049492776,-0.5002591,-0.41411608,0.03904327,-0.024719765,0.01514654,-0.15549083],[1.6183398,1.3368306,-0.1774287,0.22880824,0.05070626,-0.26586214,0.6101463,0.20884643,0.13692065,0.27627236,-0.06529142,-0.047958486,0.45105627,0.6535041,-0.70374006,0.008929227,-0.6404756,-0.76474065],[2.0271378,-0.26031396,-1.3868793,1.0859234,-0.20835875,0.2494928,-0.80513215,-0.44871587,-0.146529,0.26627505,0.12287333,0.31685492,-0.6343925,-1.0001003,0.31669822,0.13197689,-0.18177116,0.01344866],[-0.004777084,0.52823824,-0.004140687,1.4137487,0.4144139,-1.1794671,-0.8262742,0.68985987,0.17687458,0.017687704,-0.3234715,-0.41124478,-0.74011046,-0.7056069,0.7699347,-0.18429211,0.079565994,-0.069221176],[-2.434899,1.0662471,-1.7045196,0.9491714,-0.4924587,-1.0995914,-0.13104963,-0.5397869,-0.56282854,-0.28371578,0.5355493,0.1188877,-0.3160381,-0.19142266,-0.8446787,0.21822764,-0.13194595,0.25231192],[-0.63578004,0.10998647,-1.5226461,0.2984399,-0.49102226,0.18339495,-0.71859634,-0.36171985,0.19367056,0.30713537,0.3568834,0.034046147,-0.028167615,-0.20357361,-0.037238467,0.22969781,0.55273587,-0.56385]],"activation":"σ"},{"dense_2_W":[[-1.1939403,0.627583,-0.29303935,0.31645858,-0.28299263,-0.20175016,0.27266392],[-0.35470998,0.5116036,-0.21302372,-0.2682391,-0.6379024,0.19036521,0.16326782],[-1.0515031,0.0016675633,-0.328475,0.5562253,-0.21258254,-0.58660126,0.28343913],[0.30803204,-1.06867,-0.17983183,-0.25306872,1.4627538,0.0038065887,-0.014348506],[0.6233269,-1.2878839,-0.005203554,-0.70451117,1.1213775,0.103565186,0.059290078],[-0.22157122,1.0198585,0.11228626,0.16640806,-1.4210382,-0.23331583,0.19227381],[-0.51894325,0.7483681,0.3329935,0.4065807,-1.060425,-0.07506867,0.37457123],[-0.10200199,-0.080105394,0.19919048,-0.5509593,0.11211719,-0.5586402,-1.0667413],[-1.0931015,-0.064168,-0.80489373,-0.41687313,-0.41320696,-0.33071667,0.742609],[-0.039056696,-0.54934025,0.22863005,-1.4414634,0.55120647,-0.38611275,-0.7619764],[1.028561,-0.8452004,0.035485722,-0.2982418,0.9679217,0.684532,-1.0359311],[0.372593,-1.0716276,-0.57134145,-1.3408467,1.7297199,1.9872373,-0.7560159],[1.0906591,-1.6118517,0.19121306,-0.9672179,0.58213896,0.7299898,0.15404381]],"activation":"σ","dense_2_b":[[-0.090343356],[-0.08339459],[-0.0072327256],[-0.13952537],[-0.3003466],[-0.035847075],[-0.20601946],[-0.23709813],[-0.14278656],[-0.34552336],[0.06587117],[-0.3463747],[-0.2306921]]},{"dense_3_W":[[-0.2524472,-0.27034226,0.6634469,-0.746348,0.25183922,0.6880417,0.85341954,-0.31553096,-0.12491534,0.45396265,-0.4605119,-0.58887863,0.27989408],[0.2640799,0.35472974,0.70435447,-0.70013833,0.13855529,0.36433235,0.056772206,-0.40470412,0.18910164,-0.14314908,-0.7391794,-0.8970169,-0.25722122],[0.53352684,0.34132504,-0.5049692,0.14928706,-0.51827705,0.7143463,0.5245271,0.32858804,0.5338223,-0.07519559,0.05255393,0.14157031,-0.27464214]],"activation":"identity","dense_3_b":[[0.073314704],[-0.005890205],[-0.042565797]]},{"dense_4_W":[[0.18600833,0.98189795,0.93567103]],"dense_4_b":[[-0.032305032]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA HRV 2019 b'39990-THX-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA HRV 2019 b'39990-THX-A020x00x00'.json deleted file mode 100755 index 5b0e745ae2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA HRV 2019 b'39990-THX-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.196055],[0.87593496],[0.33765027],[0.04197189],[0.886328],[0.8834333],[0.87928975],[0.85071605],[0.8310174],[0.8089368],[0.7878991],[0.041903123],[0.041929454],[0.04194031],[0.04174096],[0.041557845],[0.041190308],[0.040708046]],"model_test_loss":0.01768307387828827,"input_size":18,"current_date_and_time":"2023-08-06_14-17-31","input_mean":[[27.28112],[0.05775289],[0.0292109],[0.0014245252],[0.04902593],[0.05110525],[0.053358402],[0.06730357],[0.07672258],[0.086834796],[0.09349608],[0.0012768332],[0.001302666],[0.0013326345],[0.0014557338],[0.0014853236],[0.0014835508],[0.001441598]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.4649247],[0.16453019],[-0.28886992],[-0.3648863],[-0.42144147],[1.2591343],[0.26168013]],"dense_1_W":[[0.65970325,0.3643967,-0.0078023723,-0.3371772,0.44859505,0.13993022,-0.59133023,0.06776411,0.40852416,0.2055092,-0.22950652,1.1044699,-0.061070323,0.018156692,-0.92917067,-0.29989886,-0.24349432,-0.2445954],[0.0043564676,0.14943714,1.5694466,0.54570717,0.23205929,0.23940374,-0.8834056,0.29886281,0.13640915,-0.07918449,0.06823687,0.4230718,-0.20778643,-0.80100656,0.067888916,0.013294644,-0.17124765,0.11134056],[-0.004692583,0.8932629,-3.326059,-0.13999403,0.71647453,0.7221725,-0.42850545,-0.27863225,-0.17863697,-0.19051133,-1.0301774,0.54785955,0.09839519,-0.52338004,-0.028131597,0.10106243,-0.26319197,0.2228086],[-0.13291039,-0.4817582,0.0022403449,-1.604327,-0.1416615,0.6045698,0.6883181,-0.09455803,-0.119714886,-0.031930104,0.16707899,1.219931,-0.027221087,0.2683029,-0.017352045,0.0354093,0.08798443,-0.011031896],[-0.0001811604,-0.55647755,-4.251647,0.10555062,1.2620865,0.87399095,1.7948182,0.5045302,-2.1733336,-1.323175,-0.20426413,-0.8539617,-0.42787957,0.87268126,0.50717103,0.21002649,-0.043627627,-0.31594208],[-0.7002713,0.0439368,-0.007873659,-0.15335229,-0.08326318,0.8655352,-0.4760854,-0.06738273,0.33060014,0.61478436,-0.43724525,0.8940125,0.14382815,-0.5073753,-0.16832146,-0.39969006,-0.77300745,-0.07796513],[0.18735953,0.5023311,-0.00044152042,0.6289259,-0.7044324,0.8138658,0.3475159,-0.48989236,0.070642374,-0.012694965,0.0680297,0.7051084,-0.33375153,-0.81817293,0.061156776,-0.22678623,0.075785585,-0.11933581]],"activation":"σ"},{"dense_2_W":[[0.44918334,-0.44261467,-0.37257126,0.06871936,-0.76875246,-0.02301384,-0.45431],[-0.028300185,0.74804,0.16640806,0.42070544,-0.45251933,-0.21348317,0.6122552],[-0.75886244,-0.4412132,-0.88113075,-0.5994053,0.81894237,0.0319869,0.07787325],[0.016850863,-0.46549502,-0.84523696,-0.4440643,-0.08756868,0.010443555,-0.11621737],[-0.11881556,0.04645116,0.035857048,0.5879231,0.10456129,0.2670699,0.30576423],[0.18244462,-0.18358052,0.63081473,0.678613,-0.065976664,0.5200684,0.0114103705],[0.17458354,-0.758713,-1.1933472,-1.2458708,2.0880768,-0.35880476,0.043243304],[0.6276925,0.3325886,0.42858002,-0.19699302,0.26399422,-0.5362572,-0.32001755],[0.019581828,-0.7625633,-0.43383184,-0.56120574,0.28209898,0.18763974,-0.48512912],[-0.72589034,-0.39149624,-0.69566345,0.25285095,0.9949407,-0.6764689,-0.86815906],[-0.229745,-0.04891058,-0.23069735,0.05986481,0.24995661,0.65987855,0.42597428],[0.21872666,-0.2117571,0.25106636,0.69597656,-0.34293714,0.08462207,0.626666],[-0.28573155,-0.4643647,-0.40302104,-0.41738722,0.75807416,0.047476795,-0.82152224]],"activation":"σ","dense_2_b":[[-0.040295057],[-0.038580682],[0.41026086],[0.13927889],[-0.051729757],[-0.19358195],[1.3526292],[-0.060473673],[0.15599808],[0.31490785],[-0.026681194],[-0.103706256],[0.075545505]]},{"dense_3_W":[[-0.19065312,-0.68438256,-0.1597246,0.23868644,0.2844928,0.24808933,-0.33611223,-0.09016653,0.7001218,0.3639498,0.2646331,-0.4721014,0.4990256],[-0.31301543,-0.42533165,-0.35976458,-0.23861757,0.4356561,0.6322021,-0.6240161,-0.16950898,-0.17745121,-0.17519787,0.5549622,0.65472394,0.46188885],[-0.048509836,0.6186861,-0.56957906,-0.63238627,0.35587925,0.47782204,-0.622644,0.1277044,-0.32014754,-0.24985255,0.19653115,-0.11492239,-0.59642744]],"activation":"identity","dense_3_b":[[-0.0043907734],[0.0006517651],[0.0069493363]]},{"dense_4_W":[[-0.6007436,0.5252799,1.091879]],"dense_4_b":[[0.0049111033]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019 b'39990-TXM-A040x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019 b'39990-TXM-A040x00x00'.json deleted file mode 100755 index 4957b7620b..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019 b'39990-TXM-A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.561399],[0.9560459],[0.31967336],[0.04428853],[0.96082354],[0.95901185],[0.9568036],[0.9313539],[0.9091667],[0.8810181],[0.8528346],[0.04422074],[0.04421771],[0.04421117],[0.043970585],[0.043718267],[0.04335803],[0.04287711]],"model_test_loss":0.043126773089170456,"input_size":18,"current_date_and_time":"2023-08-06_15-33-56","input_mean":[[26.94165],[0.021270154],[0.0046278955],[-0.009065303],[0.021303134],[0.021765355],[0.021796774],[0.022019608],[0.023005532],[0.02868764],[0.03272592],[-0.009263705],[-0.00921664],[-0.009177719],[-0.009201262],[-0.009262942],[-0.009267896],[-0.009328963]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.8717046],[1.401547],[-3.6374924],[0.011636128],[-0.010584985],[-0.1608906],[-3.4310641]],"dense_1_W":[[1.1484131,0.2360844,-1.2279263,0.6593642,-0.706906,0.57722515,-1.5107461,0.148039,0.48555797,0.14457138,-0.4081769,0.12444598,-0.5787572,-0.6569945,-0.012713922,0.6449968,-0.18181801,0.03532019],[0.83998966,-0.7946136,-1.1200137,0.31668094,0.31830063,-0.95925987,0.99205875,-0.60420567,-0.1273,-0.11898313,0.2820395,-0.71049374,-0.48740363,0.55304694,0.13322441,0.119103864,0.31011325,-0.21130522],[-1.4661362,0.23715574,-1.2752273,-0.041717865,0.2500426,-0.56513333,1.121119,-1.1740829,-1.4563355,-0.31711218,1.0432303,-0.606916,-0.4165662,0.40286353,0.2652817,0.29227725,0.57232744,-0.4241923],[-0.014610312,2.4209461,-0.0010322147,-0.48897117,-1.4935441,1.4336565,0.21062562,-1.205451,-0.3245356,0.69025,-0.1866847,0.47154546,-0.33315396,0.31453168,-0.23816307,0.23188154,0.21139425,-0.31219307],[0.0049821893,-1.9138168,0.0008263949,-0.6567317,-0.6164778,2.2373643,0.1648842,0.29560664,-0.15978582,0.13433349,0.09199213,0.7548104,0.8661949,-0.5156456,-0.84439373,-0.769481,-0.13660415,0.8850856],[-0.04535164,-1.3319466,-5.446676,0.7491545,1.40338,-0.27946347,0.58855826,-1.6417941,-1.3516777,-0.061358944,1.9686421,-2.0562751,-0.9776005,0.5102906,0.71488136,0.8446566,0.029088987,-0.0021240264],[-1.6955886,1.0932087,1.2057613,1.2197119,0.26736736,0.40396026,-1.1926581,-0.027528899,0.41201085,0.04445834,-0.17239684,-0.047891464,-0.2615087,-0.34971696,-0.186749,-0.07132908,-0.2368726,-0.10784222]],"activation":"σ"},{"dense_2_W":[[-1.013594,0.5034582,-0.95556456,-0.08708601,-0.8562468,0.16710468,0.07527283],[0.6687172,-0.7619872,-0.53848594,0.6010305,0.9034991,0.014348103,-0.593205],[-0.860986,0.6847677,0.3897247,-0.18235233,-0.56724346,0.42058796,-0.9473925],[-0.57470554,0.049254473,-0.3956524,-0.27702963,-0.1518893,-0.22931539,0.0917812],[-0.7363305,0.19133672,-0.47538042,-0.037515156,-1.0081038,0.37126565,-0.02480417],[0.058126763,-0.3683029,-0.31503877,-0.33700588,0.28384364,-0.41182697,0.21078625],[-1.699499,0.43488288,3.1312578,-2.43165,-0.23042913,1.4457437,-0.23582318],[1.1079293,0.21069455,-0.10997463,0.67785615,-0.1292696,-0.19016528,0.23199928],[-0.18085922,0.26667058,-0.11703674,-0.13090491,-0.98974144,0.2998666,-0.34656715],[0.56333655,-0.9618346,0.17298692,0.49641728,0.3144268,-0.17813024,0.25162554],[-0.18821634,0.47741577,-0.53012407,0.021764161,-0.90728444,-0.15855366,-0.4862484],[-1.1602566,0.254095,-1.2540381,-0.8706271,0.036233105,-0.36567953,0.12120533],[-0.3278052,-2.3773234,0.59865904,0.86674654,0.14178967,-1.3721049,1.4259635]],"activation":"σ","dense_2_b":[[-0.013262277],[-0.22405964],[0.09981698],[-0.04231693],[-0.027923957],[-0.10180608],[-0.8146485],[0.0004782006],[0.038938325],[-0.23186892],[-0.031742647],[-0.032234117],[-0.57888836]]},{"dense_3_W":[[0.58763653,-0.32315147,0.1878662,-0.2600824,-0.02019101,-0.4588076,1.4286964,-0.16221656,0.019991938,0.1896809,0.17505044,-0.06803269,-0.3277477],[0.31274745,0.08359626,-0.48973972,0.19148718,-0.022602405,-0.10987586,-1.4325415,-0.11361555,-0.1394098,0.47897077,-0.15372795,-0.7521875,0.5662985],[-0.41849798,0.636405,-0.480077,-0.29047763,-0.3423191,-0.06704497,-0.5570328,0.70148677,-0.62109405,0.680771,-0.6235916,-0.40535742,0.8969159]],"activation":"identity","dense_3_b":[[0.11709517],[0.070712626],[-0.017060732]]},{"dense_4_W":[[-0.14990221,0.26407397,0.9163793]],"dense_4_b":[[-0.008794706]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019.json b/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019.json deleted file mode 100755 index 7125acea96..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.603165],[0.968196],[0.31648555],[0.043116625],[0.97207046],[0.97122186],[0.9696193],[0.9440986],[0.9209154],[0.89170784],[0.8635297],[0.0430813],[0.043076806],[0.043065626],[0.04281562],[0.042584687],[0.0422511],[0.041811552]],"model_test_loss":0.0409439355134964,"input_size":18,"current_date_and_time":"2023-07-18_02-56-25","input_mean":[[26.58399],[0.02317232],[0.002863659],[-0.0103310775],[0.023948237],[0.024388459],[0.024497893],[0.02269405],[0.02217117],[0.02469916],[0.02554692],[-0.01046288],[-0.010425196],[-0.010389729],[-0.0103868665],[-0.010423806],[-0.010380345],[-0.010442573]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.7315183],[-2.0931118],[-0.08195505],[-0.07830412],[0.17271917],[-4.8443527],[1.3409065]],"dense_1_W":[[1.3492318,0.050542787,-2.0778215,0.23633496,-0.18946455,0.08569419,-1.1538246,-0.56782997,-1.1068271,-0.28026178,0.6351039,-0.5325991,-0.16680008,-0.6554269,0.7481424,0.39339453,-0.037751142,0.12015114],[-0.8597578,1.2366588,1.7126143,-0.63454264,-0.43808976,0.8164015,-0.69233084,0.61550444,0.9666506,0.42250025,-0.7908081,0.5167161,0.30983937,0.048737403,-0.14529826,0.22033516,-0.09019369,-0.3203758],[0.051401302,1.1819376,5.170329,-0.33289638,-1.3051468,0.29249665,-0.37950587,0.86728233,1.2912674,0.83467674,-2.1016138,1.439997,0.83915204,0.022718783,-1.1455536,-0.6881879,-0.294737,0.1764151],[0.13776821,-0.616747,-0.0515103,0.09284325,0.5059833,-2.2745788,0.8794392,0.23675422,0.050319634,-0.16485108,0.022945715,-0.55973744,-0.19152954,0.5871755,0.48204577,0.43679258,0.084300846,-0.48278216],[0.32304537,-0.17996605,-0.050503615,0.057818476,-1.1874164,0.93133926,-1.135065,-0.2207176,0.5842914,0.26639673,-0.4034041,0.74324435,-0.26271045,0.25194508,-0.33687708,-0.11164587,-0.21532725,0.31314066],[-2.675871,0.18930794,0.004894184,0.36429468,-0.28649125,1.037061,-0.8956486,-0.2692209,0.13867386,0.14524221,-0.07555664,0.13616084,-0.29872495,0.0028986863,-0.50115776,0.32039323,0.062777095,-0.08310216],[0.82229155,0.4732484,1.5131059,0.062322427,-0.036212314,0.24138685,-0.46806708,0.7292275,1.3152804,0.55548984,-1.013016,0.65633196,0.2736623,-0.5331334,-0.49591142,0.22494234,0.028473936,-0.29246685]],"activation":"σ"},{"dense_2_W":[[-0.07206964,-0.69786,-0.3486531,0.48960513,-0.0696577,-0.49357864,0.2556807],[-0.2884806,-0.41657805,-0.3665416,0.15454409,-0.028397316,-0.2936546,-0.16180961],[0.803782,-0.27441671,0.8961105,-0.4721216,0.7000408,0.5584937,0.4574221],[0.2588418,0.21096861,-0.08602997,-0.7243836,0.6489519,1.1368387,-0.47698346],[0.5214179,-0.4379109,-0.10204686,0.5734521,-0.5929383,-0.35884753,0.059597526],[0.7346847,-0.71839786,-0.044602457,-1.2187109,-0.13774236,-2.6510515,-0.51899457],[-1.7133079,-4.6997886,-0.25009632,0.4603738,-0.87082464,3.0611444,-3.0963175],[-0.048846636,0.91797,-0.31641433,-0.20087503,0.10279341,0.38753894,-0.038774494],[0.15197727,-0.81371284,-0.12212125,0.7514405,0.32369855,-0.2520269,-0.50490427],[0.25197092,0.8954266,0.3530475,-0.9002343,-0.6774651,0.55687094,-0.2753792],[0.9715217,0.11435808,0.7430187,-0.18673508,0.24399346,0.75376093,0.18281539],[0.07828533,0.40924087,-0.0052447147,-0.87007385,-0.16614385,0.75889,-0.09113192],[-0.42538083,-0.6130854,-0.18442006,0.81436867,-0.4363763,-0.4421119,-0.20321086]],"activation":"σ","dense_2_b":[[0.21890728],[-0.08548715],[-0.08091435],[-0.101685315],[0.10115151],[-0.14451991],[0.54433477],[-0.21013816],[-0.0104931025],[-0.4982431],[-0.1676464],[-0.31867242],[0.17811179]]},{"dense_3_W":[[0.7400645,-0.16807431,-0.12028546,-0.58515614,0.34891638,-0.5609874,0.7747953,-0.06871472,-0.044812664,-0.26168486,-0.2864116,-0.4026426,0.7852125],[0.13187477,0.58926487,-0.62580276,-0.043964617,0.5385393,0.07869039,0.43877578,-0.6161494,0.4016125,-0.06597045,-0.4159714,0.23538205,0.7423825],[0.11068092,0.26080158,0.051800307,0.3499296,-0.56061244,0.5514093,-1.840586,-0.14135396,-0.050766982,0.4223278,0.39574477,0.30749676,-0.8040509]],"activation":"identity","dense_3_b":[[0.034426726],[0.022138074],[-0.039126255]]},{"dense_4_W":[[-0.8798318,-0.64988774,0.49071792]],"dense_4_b":[[-0.03172631]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018 b'39990-THR-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018 b'39990-THR-A020x00x00'.json deleted file mode 100755 index 690b647429..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018 b'39990-THR-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.624078],[1.0587155],[0.30083516],[0.047404915],[1.0569501],[1.0572157],[1.0565227],[1.0357862],[1.0151423],[0.9855047],[0.9551931],[0.04727608],[0.047284212],[0.047292266],[0.047139347],[0.046923578],[0.046476692],[0.045933507]],"model_test_loss":0.03084651380777359,"input_size":18,"current_date_and_time":"2023-08-06_16-32-16","input_mean":[[24.835194],[0.0007982536],[-0.006176701],[-0.0052586584],[0.00027294309],[-0.0003220067],[-0.0009233009],[-0.0011664837],[-5.9159433e-6],[0.00031557973],[0.0022665297],[-0.005350762],[-0.005354779],[-0.005356321],[-0.0052974457],[-0.0052572815],[-0.0053089443],[-0.005361436]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.3534836],[-0.029432654],[1.8868316],[-0.09822117],[-2.4564312],[-0.062489524],[4.9500136]],"dense_1_W":[[1.3379444,-0.023224303,0.92547566,0.23139125,0.49582657,-0.19798304,0.17489886,0.19757572,0.4532939,0.05501206,0.44625548,-0.37186652,0.23857181,0.08223163,-0.40953666,-0.31662405,0.36565343,-0.02073929],[0.0018158369,-0.46781677,0.014307537,0.7127616,-0.183635,-0.75742817,0.6894066,0.24744697,-0.17661563,-0.27236703,0.15312704,-0.57848364,-0.5893935,0.2702419,0.44554567,0.22370823,-0.226104,-0.09203226],[1.799059,-0.198707,-1.016055,-0.011727806,-0.029179385,0.14295676,-0.29293978,0.17230937,-0.47932827,-0.69661826,-0.093703836,0.18523113,-0.10232647,0.03687105,0.44274545,-0.19036789,-0.29666153,0.107951805],[-0.003098032,-0.24532981,-0.017002787,-0.5023018,0.39906764,-1.200529,0.4519783,0.4683689,-0.14362553,0.06751771,-0.17091979,0.3470844,-0.1885182,0.16463032,-0.009498001,-0.10712965,0.6976556,-0.33137426],[-1.357193,0.119205914,0.77373636,0.08123809,-0.53554714,0.04073674,0.14673577,0.47008705,0.36763436,0.7785362,-0.2854519,0.033120852,-0.38505244,-0.0073482324,-0.027826203,-0.18191494,0.7202002,-0.36105922],[0.011540895,0.42653874,3.4537587,-0.14331447,0.17654268,-0.25341675,-0.9539831,0.67298365,0.9465182,0.5915356,-1.033552,0.40142527,0.23822671,-0.1597271,-0.6579629,-0.23393449,-0.18252316,0.27954388],[2.213533,1.03911,1.1523687,-0.7107895,-1.6353345,0.7368801,-0.029617624,0.59569466,-0.3488169,1.8759083,-0.59652627,-0.33486545,-0.16461614,0.23255706,0.38946012,0.0076609664,1.2241695,-0.82663125]],"activation":"σ"},{"dense_2_W":[[-0.38179168,-0.03762462,-0.16407442,0.22533777,0.21200526,-0.75755686,-0.70566297],[0.23745127,0.79392534,-0.13295732,0.2560252,-0.525396,-0.3199242,-0.37806568],[-0.07160659,-0.8020838,0.9527979,-0.8270174,0.4712437,0.30625376,0.11045921],[-0.760045,-0.27719706,-0.10346,-1.3937811,0.93653303,0.7137455,-0.27598134],[-0.47952121,-0.6838305,0.20842296,-0.347254,0.57235146,0.32606634,-0.29145405],[-0.75135994,0.47685748,-0.6925233,0.6067481,-0.47287223,-0.6708088,-0.5606238],[-0.1407047,-0.042412486,0.19884428,0.6875437,-0.051208068,0.089406244,-0.25268498],[0.15601759,-0.5533243,0.65179765,-0.9195583,0.54043883,-0.31588987,0.042402852],[0.016135221,0.43866783,0.14963633,0.45334944,-0.13526076,-0.47658014,-0.27877006],[-0.6760022,-0.99107736,-0.0065089352,-0.7310922,1.198063,0.26301616,0.15857588],[-0.53217345,0.08108589,-0.42232883,0.2585569,-0.6059891,-0.16030814,-0.38680902],[0.20514117,-0.7086649,0.30526543,-1.014871,0.70494556,-0.1754464,0.6393286],[-0.44732463,0.7236195,-0.20577241,0.6082023,0.08172972,-0.12622307,-0.26760522]],"activation":"σ","dense_2_b":[[-0.23157027],[0.10348182],[0.103248015],[-0.25145143],[-0.16215345],[0.05333198],[-0.007814407],[-0.12305106],[0.015793381],[-0.11626731],[-0.21887426],[-0.013616658],[-0.045431573]]},{"dense_3_W":[[0.11133691,-0.7149343,0.6122002,0.5992357,0.48934844,-0.8058861,-0.61579424,-0.20425087,0.0400084,0.7586056,0.21969084,0.73337686,-0.5684788],[-0.32940114,0.5844858,0.33521906,-0.1380717,-0.15706351,0.44334856,-0.03572488,-0.44520766,0.33684713,-0.0387427,0.3344798,0.22412832,-0.34584302],[0.41397762,0.5771128,-0.17538065,-0.2331263,0.2025833,0.167861,-0.30182636,-0.55495805,0.4524257,-0.08304705,0.5681975,-0.48104328,-0.034903586]],"activation":"identity","dense_3_b":[[-0.029943425],[-0.01140329],[0.025632406]]},{"dense_4_W":[[1.1838417,-0.092230946,-0.76815987]],"dense_4_b":[[-0.028896004]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A040x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A040x00x00'.json deleted file mode 100755 index 9f7945bc6c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3870325],[0.88046026],[0.31456453],[0.045971613],[0.8823275],[0.88133013],[0.8802286],[0.85606366],[0.83917105],[0.81649935],[0.7949408],[0.045805056],[0.045844175],[0.045870136],[0.045709606],[0.045540884],[0.04515765],[0.044633806]],"model_test_loss":0.03413263335824013,"input_size":18,"current_date_and_time":"2023-08-06_18-19-42","input_mean":[[23.715818],[-0.030671604],[-0.0010694538],[-0.002801656],[-0.03120858],[-0.03159417],[-0.032069772],[-0.028450362],[-0.02625614],[-0.023662683],[-0.020763114],[-0.002952926],[-0.002957236],[-0.0029530823],[-0.002849485],[-0.0027969833],[-0.0027900888],[-0.002775541]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.030706996],[-0.037872314],[-0.05548866],[3.9280896],[0.7474149],[0.90278316],[3.6281414]],"dense_1_W":[[0.024131007,1.1437668,5.7560873,0.15635465,-0.29974687,0.29323357,-1.209728,-0.08944458,0.8328114,0.55170995,-0.49652693,1.7797251,0.356449,-0.22379819,-0.6863433,-0.7702987,-0.084863424,-0.71548474],[0.039950125,-0.1556448,0.90247494,-0.21784821,0.081626974,0.20843558,1.5873073,-0.3335005,-0.6408446,-0.004191309,-0.01373474,-0.3732137,0.0840519,0.481374,0.0065601915,-0.0018563746,-0.11723978,-0.15687008],[-0.041693777,0.8153725,-0.93551993,0.8342616,-0.9125522,-1.0517205,0.80132794,-0.33272502,-0.5316489,-0.020130547,0.51738137,-1.1073763,-0.06170218,0.75484115,-0.099664174,0.078711264,-0.3155204,0.23027797],[1.347042,0.35269168,2.0550568,-0.19498034,0.82868904,0.7170074,-0.6723933,0.46272853,0.51815087,0.19424136,-0.32263738,0.5095938,0.105270185,-0.3356029,-0.6227554,0.18846878,0.35004437,-0.55869645],[-0.68249965,-0.7106739,-0.00091033557,-0.1215673,0.15705624,-0.83085936,0.22485417,0.6567156,0.13330625,-0.08166536,-0.17778291,-0.45113075,-0.04207592,0.35418072,0.21138912,0.44137782,0.0059437924,-0.133213],[-0.6332932,0.5227072,-0.0001976942,0.34365958,0.32673892,0.2907148,-0.113340415,-0.39088866,-0.26699466,-0.05758928,0.29842612,0.024981031,0.13643564,-0.099530175,-0.41440305,-0.029128596,-0.51134044,0.29531562],[1.258255,-0.44770962,-1.8778437,-0.04598984,-0.900177,-0.19406404,0.4236334,-0.42944542,-0.32314876,-0.38610578,0.3892241,-0.43024847,0.047275137,0.42269197,0.073702455,0.19503468,-0.13383509,0.37180188]],"activation":"σ"},{"dense_2_W":[[-0.6328002,-0.2733073,-0.91156006,0.084900156,0.24577273,0.21559577,-0.45250878],[0.31812322,-1.1152663,-0.6027436,0.2201572,-0.53793555,1.0482581,-0.9947389],[0.15643081,-1.0215927,-0.24996142,-0.19163433,-1.1767645,0.20719749,0.052449297],[-0.64238095,0.6003157,0.50265914,-1.0465411,0.7531211,-0.8987147,-0.47903138],[-0.045131184,-0.89249134,-0.2586124,-0.3946543,-0.66559446,0.7098345,-0.35624668],[0.01925909,0.70794433,0.6441276,0.05606592,0.5759388,-0.44503638,-0.16193989],[0.106712155,0.49243534,0.91235846,-0.508013,-0.17323163,-0.39521646,0.27420443],[0.14106807,-0.38276723,-0.74229676,-0.17772292,-0.2867895,0.07301143,-0.5713336],[-0.3910647,-0.331973,-0.71291363,0.44479296,-0.372079,0.43584257,0.23784764],[0.6200412,-0.46858776,-1.0548015,-0.37598544,-0.95491964,0.7775705,-0.32049537],[-0.5429174,-0.33909863,-0.51903373,-0.53528494,-0.9287474,-0.050585847,-0.24405093],[0.08782715,-0.5397067,-0.39007556,-0.11375101,-0.4224178,0.72133744,-0.851765],[0.23905222,-0.28642985,-0.86665606,0.44080213,-0.5833951,0.714745,-0.7849159]],"activation":"σ","dense_2_b":[[-0.28084794],[0.035663433],[-0.17919558],[-0.14884101],[-0.19750093],[-0.05943652],[-0.010351563],[-0.13942906],[-0.26031336],[-0.12523566],[-0.32246646],[-0.19670182],[0.03445928]]},{"dense_3_W":[[-0.54237396,-0.12057569,-0.33454332,-0.22615993,-0.5465151,-0.14707579,0.05022189,0.56217587,-0.17346314,-0.24858905,0.34007478,-0.00070786034,0.52975553],[0.5001979,0.41751292,0.6217282,-0.7284195,0.47918427,-0.6284354,-0.34686244,0.010521516,0.46527955,0.300923,0.1515217,0.24209905,0.6725099],[-0.36316845,0.706709,-0.09291999,-0.8208684,0.164437,0.1152729,-0.014193419,-0.3382088,-0.5153448,0.64160955,-0.4063204,-0.023448244,-0.27234897]],"activation":"identity","dense_3_b":[[-0.04338367],[-0.095272206],[-0.045654554]]},{"dense_4_W":[[0.4292374,1.7759846,0.5118597]],"dense_4_b":[[-0.059387]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A060x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A060x00x00'.json deleted file mode 100755 index 52fbc920a8..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A060x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.0581903],[0.92126673],[0.29617915],[0.04191473],[0.9171323],[0.9183279],[0.9188417],[0.9060646],[0.89225584],[0.87377656],[0.85549104],[0.04186598],[0.041867044],[0.041861024],[0.041707642],[0.041504312],[0.04113141],[0.040689647]],"model_test_loss":0.024623241275548935,"input_size":18,"current_date_and_time":"2023-08-06_18-45-10","input_mean":[[26.12887],[-0.018342948],[0.0023950052],[-0.00060018164],[-0.020283561],[-0.020622766],[-0.020715354],[-0.020511365],[-0.020389233],[-0.020154186],[-0.019204807],[-0.0007310425],[-0.0007260691],[-0.0007204341],[-0.0006898669],[-0.00067769137],[-0.0007068316],[-0.0007057846]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.34347212],[-0.04366823],[3.8996286],[-3.2322345],[0.0011430938],[0.31775263],[0.02871207]],"dense_1_W":[[-1.2845949,0.13241255,-0.00054695434,0.30559602,-0.457657,-0.50316894,0.41611654,0.76597494,-0.020354524,-0.1652268,-0.1537093,-0.95382077,-0.4738125,0.2229064,0.497753,0.5096397,0.2834458,-0.39443842],[-0.01576654,1.0631088,-0.0001952519,0.2668259,0.5884113,0.42140722,-1.0702667,0.06912717,0.29095903,-0.16439292,0.07887146,0.29752833,-0.5947841,-0.45468485,-0.29552692,0.02692619,0.34921086,-0.04025514],[0.918351,-0.39751226,-2.0331492,0.636789,-0.6820441,-0.2611252,0.43445766,-1.2055922,-0.8403307,-0.123105325,0.5316267,-0.883859,0.15459336,0.32164282,0.28913066,0.20976447,0.02999975,0.067868724],[-0.8948686,0.07852778,-1.858944,0.25246492,-0.72072095,-0.721946,0.2008207,-0.6164795,-0.620322,0.054701116,0.13644697,-1.0398991,0.23678952,0.9060979,0.24625729,0.06296468,-0.09471517,0.18253052],[-0.039542284,0.14739217,-1.8839234,-0.05269514,0.22938618,0.1295076,-1.715298,1.3541347,0.60284644,0.07251003,-0.58243793,0.369853,0.17180686,-0.93567884,0.41123584,0.22822875,-0.015471544,-0.1450907],[-1.309309,-0.0065789986,-0.0009026052,-0.43786958,0.66638273,0.6100126,-0.80755997,-0.44549793,-0.33233902,-0.14217907,0.4560685,1.0638386,-0.23771513,0.031021614,-0.31280205,0.110058166,-0.23958574,0.024892198],[0.021762278,1.2449024,2.3610842,0.10449084,0.035584703,-0.20509337,-2.1041403,1.2424486,0.5425319,0.13568977,-0.68708223,0.6785129,0.2722758,-0.94338864,-0.11912091,-0.061731618,-0.21562424,0.265597]],"activation":"σ"},{"dense_2_W":[[0.8672452,-1.6432475,-0.089617,3.4410927,-1.8457493,-1.653231,-1.1289697],[-0.8830999,0.42412817,0.3355593,0.30391192,0.37201688,0.70189875,0.76556355],[-1.0386908,0.7344996,-0.46029314,-0.045133006,0.41179648,0.23103125,0.06681513],[0.97836345,-0.851959,0.74249834,-0.25212237,-0.082773805,-0.61097443,-0.47594827],[-0.489878,0.80100036,-0.38931137,0.06700653,-0.20617403,0.2470712,0.9071803],[-0.9829343,0.34199762,-0.5856996,0.21864368,0.9632561,-0.06746073,0.14236969],[-0.22686507,0.0058632977,-0.67398316,0.106053695,0.06964084,0.42800158,0.84875035],[0.8461344,0.14065352,0.077666566,0.5249845,-0.3699625,-1.0579052,-1.0444427],[-0.6473488,0.069085024,0.1963253,0.106187075,0.045327008,0.5108394,0.20862271],[-0.18507846,0.81007284,0.59458715,-0.20684378,0.41903466,1.124245,-0.0002866817],[1.8409206,-1.6266977,1.558487,-0.14739716,-0.71901566,-0.9584196,-0.24527057],[0.061728116,-0.75477535,-0.22849028,-0.3439474,-0.65592027,-0.9196831,-0.34239137],[-0.24715817,0.27214324,-0.46822995,-0.11250425,0.4140462,0.5036997,0.808618]],"activation":"σ","dense_2_b":[[0.3682189],[-0.3061952],[-0.2186805],[0.26665255],[-0.20908445],[-0.25180277],[-0.16508935],[0.37200344],[-0.132723],[-0.0748416],[0.77447575],[0.07100879],[-0.28392908]]},{"dense_3_W":[[-0.7492231,0.6381115,0.22848813,-0.6114985,0.4652135,0.43796808,0.15224089,-0.86344284,0.23925477,0.66866344,-0.874919,-0.37883374,0.47491515],[-0.23657976,-0.20048968,0.14517088,0.0775067,-0.15648171,0.5634285,-0.51960784,-0.31498674,-0.14429168,-0.22901323,0.0648477,0.0648267,0.5823677],[-0.010220655,0.21547753,-0.08935665,0.67853194,0.40634638,0.30693397,-0.31160212,0.8876798,0.2663386,-0.41578376,-0.043752998,0.05976479,-0.30815133]],"activation":"identity","dense_3_b":[[-0.03995597],[0.043906566],[-0.009552566]]},{"dense_4_W":[[0.96169305,-0.013711991,-0.33541062]],"dense_4_b":[[-0.032807786]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A070x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A070x00x00'.json deleted file mode 100755 index d9ddfeb90d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A070x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.899371],[0.91326123],[0.34754744],[0.047207538],[0.921164],[0.9188041],[0.9149523],[0.8824703],[0.86114454],[0.8327107],[0.80909157],[0.04698797],[0.04704211],[0.04708921],[0.0469777],[0.04675353],[0.04638313],[0.045919105]],"model_test_loss":0.029772095382213593,"input_size":18,"current_date_and_time":"2023-08-06_19-12-45","input_mean":[[23.732822],[0.017107664],[-0.0011733986],[-0.0058285887],[0.017914131],[0.017934287],[0.018237941],[0.017002761],[0.015237825],[0.013338944],[0.011673382],[-0.005840362],[-0.005826218],[-0.0058171875],[-0.005817545],[-0.0058693774],[-0.0060108923],[-0.00612493]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20021264],[3.4939082],[-0.06716851],[0.058503635],[-0.010445441],[-0.16600388],[4.0031]],"dense_1_W":[[0.67624974,0.5699806,1.7589446,0.38397965,0.04085462,-0.35647398,0.94661707,-0.042084765,-0.36401713,0.15266082,-0.11755991,-0.42012995,-0.390879,0.27095684,-0.3359402,0.44403496,-0.50348926,0.20556912],[1.2939718,-1.0459632,-1.4953133,0.24710384,-0.07565443,-0.4741599,0.8066539,-0.5519822,-0.8259321,0.08815797,0.5646691,-0.22644426,0.6596317,0.49577862,-0.5832377,-0.30473575,-0.07392759,0.22181918],[-0.0067671034,-0.56580436,-1.5979874,0.72282726,0.14223135,-0.70996284,1.6942539,-1.0655241,-0.59319955,-0.13150467,0.68681896,-0.33786333,-0.6004301,0.93967056,-0.18882798,-0.21886076,-0.018479563,-0.026317876],[0.73770875,-0.35808742,-1.7224159,-0.11537585,0.23505013,0.3487726,-1.6180664,0.44352862,0.087284215,0.14080617,-0.049784306,0.67705816,-0.18708247,-0.038130477,-0.0593233,0.15170136,-0.2373075,0.12623678],[-0.00046603545,0.062258437,-0.00017648668,0.5743302,-0.14112268,0.7994641,-0.5734729,-0.1330987,0.122790836,-0.05908033,0.053587526,0.40562433,0.48647818,0.07770536,-0.8969449,-0.569001,-0.15433595,0.106549785],[-0.00043468282,-0.44794786,-0.0009173404,-0.15259606,-0.423234,-0.7315594,0.2841295,0.7197476,0.27196157,-0.043154158,-0.35170138,-0.3242454,0.4141323,0.15176967,0.3337161,-0.022378944,-0.016765838,-0.13956091],[1.370725,0.92907214,1.5363995,-0.07274529,0.06922402,0.47750995,-1.1804242,1.0793897,0.87313735,0.03309975,-0.787432,0.1583054,-0.06471896,-1.6379938,1.0917811,0.2863863,0.16701585,-0.370107]],"activation":"σ"},{"dense_2_W":[[-1.1142431,-0.98553467,-1.7528756,-0.7601161,0.023125764,0.29621416,0.057998575],[-0.57707655,-0.035297927,0.7552565,0.40910327,-0.045871045,0.7647045,-0.17583843],[0.54533637,0.37994358,0.48098484,-0.60859483,-0.679812,1.1466373,-0.7521221],[-0.766621,0.29065615,-0.96372104,0.4400032,1.691393,-1.3640326,1.5831442],[-0.03152584,-0.0041346215,-0.59791905,0.0149094295,0.5149197,-0.568262,0.5052371],[-0.62852687,-0.5016056,-0.88126785,0.6810648,0.76567554,-0.68329334,0.26362616],[0.09154294,-0.23193486,0.9080769,0.06993361,-0.50866467,0.6603812,-0.6362647],[-0.7537723,-0.8049923,-0.8947776,0.73191917,0.7269287,-0.6561125,-0.15393494],[-0.45121416,0.21887077,0.8701729,0.49937823,0.093833074,0.6793174,-0.26953593],[-0.21209432,-0.52174926,-0.84514666,0.044568583,0.4728377,-0.45035967,0.13409898],[0.5650158,-0.6122694,-0.23879126,0.88060015,-0.02077808,-1.9465554,-0.37588525],[0.19426925,0.5452357,0.12054777,-0.40416533,-0.81852937,0.9164135,0.20086637],[-1.2047343,-0.5585611,-1.8479179,-0.6856552,0.07956908,0.2805922,0.37198797]],"activation":"σ","dense_2_b":[[0.060228728],[-0.04707918],[-0.14618197],[0.106457904],[-0.03570688],[-0.08961752],[-0.05534363],[-0.121585414],[-0.109557174],[-0.067889966],[-0.14876497],[-0.058959074],[-0.12490072]]},{"dense_3_W":[[0.38950223,0.3090716,-0.4296155,-0.33159044,-0.105799004,-0.119462036,0.53925854,0.22593993,-0.034717377,-0.23057248,0.3610593,-0.022898644,-0.06612316],[0.7082383,-0.2031159,-0.35994145,0.57508343,0.49524105,0.3460956,-0.74825346,0.7125477,-0.066172495,0.29165456,0.6697642,-0.56427914,0.5089701],[-0.21685903,-0.047797453,-0.24373047,-0.06741093,0.49110416,0.062480558,-0.5235519,-0.48258132,-0.27274242,0.333045,0.41328818,-0.4939122,-0.037244707]],"activation":"identity","dense_3_b":[[0.018447949],[-0.053515278],[-0.02512046]]},{"dense_4_W":[[-0.07239497,1.4876865,0.61020267]],"dense_4_b":[[-0.03861425]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TGS-A230x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TGS-A230x00x00'.json deleted file mode 100755 index bb87addba0..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TGS-A230x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.844337],[0.5474532],[0.2851794],[0.027097791],[0.54364073],[0.5449447],[0.54493386],[0.5406305],[0.53676015],[0.5303491],[0.52479345],[0.02704525],[0.027049432],[0.027056439],[0.027171213],[0.027275724],[0.027305145],[0.027313853]],"model_test_loss":0.011909760534763336,"input_size":18,"current_date_and_time":"2023-08-06_19-37-10","input_mean":[[22.95614],[0.03637806],[0.0046443446],[-0.009752038],[0.035477746],[0.03569809],[0.03587167],[0.038072705],[0.041633505],[0.043689143],[0.044423867],[-0.009905221],[-0.009882373],[-0.009861099],[-0.009661706],[-0.009565372],[-0.009564497],[-0.009780675]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.017572576],[-4.3160543],[0.0974798],[0.036516342],[-0.109429516],[-0.09818942],[4.911552]],"dense_1_W":[[-0.0024906907,-0.16255474,0.0021684417,0.15618499,0.51274085,-1.5496616,0.80450743,-0.17654379,0.029981567,0.29689407,-0.22370933,-0.40722302,-0.47401586,0.088543475,0.39740565,0.16661157,-0.21702406,0.18496276],[-1.7687228,0.7045914,1.427233,-0.52335125,0.59448713,0.15286753,-1.2777213,0.61541426,0.16629013,0.4778544,-0.32696342,-0.17506757,0.095090166,-0.1734923,0.12915663,0.4323549,-0.13984495,0.013180874],[-0.0005372349,0.14655821,0.00052846695,-0.1672421,-0.10420727,1.4758636,-1.3471918,-0.3041868,0.0994203,0.18412685,-0.011641346,0.20525645,0.029496245,0.26476464,-0.43268526,-0.11217049,-0.21945795,0.25870478],[-0.032725878,-0.5761932,-3.2336373,0.5103813,-0.077060595,-0.80228996,1.8519014,0.14672789,-0.111017115,0.24072622,-0.12112954,-0.3908596,0.10182307,-0.07298533,-0.080630735,0.008331639,-0.120116994,0.006328887],[0.03457588,-0.49316353,2.6339474,0.19689563,0.17444913,-0.8295214,1.600949,-0.595955,-0.69125766,-0.7232554,0.86711705,-0.012927358,-0.16348226,0.26314303,-0.0088081835,-0.46151197,-0.063149415,0.23691247],[-0.0007938469,-0.26171395,-1.7098687,0.26605788,-1.0185215,-1.438486,1.65897,0.34761468,-0.032835998,0.5944291,0.07509286,-0.3272494,-0.19096224,0.46081677,-0.099406004,0.1578144,0.2245294,-0.33107895],[1.8251307,-0.31498715,1.4632752,-0.25625032,0.15879938,1.4816606,-1.8760675,1.3390347,0.31716788,0.5548306,-0.5275588,0.24619943,0.06173876,-0.8373367,-0.09087632,0.6366511,-0.082824394,-0.030000336]],"activation":"σ"},{"dense_2_W":[[0.7515066,-0.5105429,-0.5129767,0.17204086,0.4370165,0.21994908,-0.6377811],[-0.8214936,-0.19322807,0.41158032,0.1989778,-0.14067653,-0.64911515,0.5294647],[0.51943374,-0.06608904,-0.29252574,-0.024339033,0.43838638,0.051782995,-0.806854],[-0.20359917,-0.32902804,0.337066,-0.61808026,-0.07043727,-0.34022537,0.30081543],[-0.24775623,0.51326185,0.5934297,-0.98377573,-0.11107068,-0.32810766,0.3160865],[0.5520875,-0.010964958,-0.69238853,0.44000012,0.18294834,0.55245346,-0.085966766],[0.266246,0.22741622,-1.3200338,0.31004852,0.4994686,0.6832114,-1.012235],[0.6528813,-0.3028174,-0.9139022,0.44758174,0.6425402,0.010288926,-0.20716433],[-0.5859752,0.29565674,0.641747,-0.30805898,-0.56379014,-0.216961,0.75915325],[-0.7312802,1.830524,1.2278521,-0.80010766,-0.8330499,-0.69043976,-0.28447995],[0.5335052,-0.064827405,0.027745938,-0.46684337,0.44196686,-0.48609126,-0.21828449],[0.14514819,0.4311585,-0.54999,0.5635193,-0.4327273,-0.14394662,0.111346856],[-1.0599593,1.1263603,0.78328055,-0.37957004,-1.5480173,0.1396851,-0.2799352]],"activation":"σ","dense_2_b":[[-0.23358788],[0.1585287],[-0.13420668],[-0.07403241],[0.010910343],[-0.18071596],[-0.14818127],[-0.12828562],[0.14517418],[-0.07583147],[-0.09213995],[-0.09467464],[-0.08490435]]},{"dense_3_W":[[0.34530333,-0.25396794,0.3704989,-0.45187533,-0.6564372,0.28631496,0.28807354,0.6734085,-0.5048169,-0.14331086,0.3927886,0.21402659,-0.19487047],[0.5606163,-0.28793406,-0.03255529,-0.27054605,-0.64770496,0.5929222,0.71289337,0.023057688,-0.31981897,-1.0039912,-0.42174533,-0.2053406,-0.33733523],[-0.05791618,-0.55499506,0.4860968,0.516192,0.107287996,0.33412755,0.3361389,0.28090212,0.30633086,-0.5674268,0.15556479,-0.100490406,-0.6992101]],"activation":"identity","dense_3_b":[[0.05391226],[0.12384217],[-0.0018761213]]},{"dense_4_W":[[-0.80719674,-0.53903717,-0.10743938]],"dense_4_b":[[-0.060299486]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A020x00x00'.json deleted file mode 100755 index 4fc4f99db6..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.526597],[0.8048686],[0.30508777],[0.03864828],[0.80819684],[0.80695915],[0.8048399],[0.78234345],[0.76694405],[0.7469485],[0.7296534],[0.038567755],[0.038570154],[0.038559318],[0.03835149],[0.03808803],[0.03767571],[0.037237816]],"model_test_loss":0.03462047502398491,"input_size":18,"current_date_and_time":"2023-08-06_20-57-06","input_mean":[[26.62668],[0.036549807],[-0.011428904],[0.0053228196],[0.03878817],[0.038509928],[0.03783984],[0.032552782],[0.02958787],[0.025563305],[0.02255467],[0.005326508],[0.0053158393],[0.0053043445],[0.0053029354],[0.005256346],[0.005181934],[0.0050085713]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.14232375],[1.8012465],[-0.09831748],[0.5650695],[-1.1499583],[-0.073488325],[1.0894103]],"dense_1_W":[[0.056877207,0.6916827,5.06491,-0.66757196,-0.064828135,0.602485,-0.75314325,-0.17327878,0.6848782,0.34329203,-0.5423522,1.1682849,0.17310293,-0.36728725,-0.4643529,-0.31240857,0.02507186,0.3971787],[0.8599211,0.040786155,1.3326324,-0.47951195,0.44746584,0.6010731,-0.21368843,0.12426477,-0.04983132,0.23454875,-0.15349868,0.19200465,0.3104551,-0.3557172,-0.13984811,0.4962251,0.053631846,-0.1638603],[-1.8845662e-5,-0.96039295,-0.008062018,-0.4011542,0.38096327,-0.589807,0.55235106,0.41631168,0.11027108,0.09306343,-0.19353023,-0.60363764,-0.12267431,0.49039286,0.5191193,0.55169106,0.30454066,-0.5621538],[1.0135822,-0.75806355,-1.6029091,-0.3095834,-0.22254121,-0.09464273,-1.3611665,0.771017,0.79057467,0.24156936,-0.58263016,0.49122322,-0.08950236,-0.12695374,-0.22518735,0.39627716,-0.10022992,0.050749615],[-1.2416042,-0.17200327,-1.6770357,-0.3177143,-0.34086037,-0.027091691,-1.5113678,0.49007565,0.66320384,-0.0010659369,-0.34323072,0.5169337,-0.15815243,-0.034780547,0.1575047,-0.0329744,-0.3683034,0.32797682],[-0.0022168742,-0.66831297,0.010362603,-0.41855475,-0.009861155,-0.94385296,0.1030419,0.45698124,0.26305547,-0.21666865,-0.11719163,-0.22144005,-0.04730197,0.7822476,0.046567436,-0.084721416,-0.086411186,0.39097503],[0.5916624,-0.35777295,-1.1239158,0.20729716,-0.6318845,-0.7276167,1.2016071,-0.27480146,-0.15381776,-0.08857165,0.15498745,-0.845312,0.26758724,0.7284694,-0.2389467,-0.1021588,0.118127644,-0.060775146]],"activation":"σ"},{"dense_2_W":[[-0.22620663,0.41269052,-0.24866156,0.6366785,0.7235434,-0.927365,-1.0595255],[-0.36320922,-0.8501176,0.7743313,-0.2655733,-0.20027223,0.3987106,0.16717343],[0.04363351,-0.39013597,-0.14777897,0.050077282,0.23006651,0.32082573,0.6458379],[-0.10794271,0.6917472,-1.081361,0.42123145,0.6480493,-0.3713631,-0.89706177],[-0.78707266,0.32178167,1.1140773,0.19835484,-0.92583483,0.54546994,1.2142284],[-0.4685015,-1.2930269,0.8641388,-1.1940204,-0.26867914,0.68155724,0.5093967],[-0.1882023,0.36285752,-0.6288009,0.08845282,0.53267115,-0.48252743,-0.72988355],[0.42914814,-0.29254675,-0.78575516,0.43952206,0.26590148,-0.6462319,-0.8898721],[-1.1129463,-1.0545493,0.41503805,-0.4397955,0.37739003,0.2824943,-0.12243744],[0.5261344,-0.49560457,-0.19782127,-0.63711095,0.24736477,0.4398861,0.6398021],[0.05428658,-0.59174234,0.26730546,-0.12481052,-0.08528374,0.07640281,0.28411782],[0.78370523,1.1058642,-0.23422256,0.77695924,-0.41036674,-0.23147115,-0.84960663],[0.22395311,-0.522629,-0.0788354,-0.15769184,-0.3324099,0.5808104,0.924355]],"activation":"σ","dense_2_b":[[-0.039920773],[-0.052275084],[-0.0664735],[-0.018644892],[0.00933328],[-0.054911967],[-0.00089501834],[-0.023597311],[-0.3882073],[-0.091632456],[-0.4284712],[-0.028570231],[-0.12698737]]},{"dense_3_W":[[-0.30708212,-0.07836911,-0.51141727,-0.12163258,-0.34234747,-0.13424605,0.5527976,0.338374,-0.08043284,-0.53650296,-0.08814839,-0.09911217,0.26711917],[-0.5153229,0.610062,-0.3431148,-0.43862098,0.6182512,0.8723251,0.027186068,-0.46111137,0.6949713,-0.20838192,-0.17872754,-0.25688672,-0.2768381],[0.5712013,-0.50477827,-0.41985807,0.6996244,-0.04315098,-0.090902686,0.57373744,0.65513474,0.2195478,-0.17768551,-0.16094655,0.4999511,-0.60238904]],"activation":"identity","dense_3_b":[[-0.019368384],[0.06465865],[-0.06263113]]},{"dense_4_W":[[0.30276972,-0.77930284,1.3356577]],"dense_4_b":[[-0.057673924]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A030x00x00'.json deleted file mode 100755 index 072cb370f2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.718611],[0.8000405],[0.316423],[0.04299987],[0.8036066],[0.80211085],[0.80001944],[0.7775613],[0.75944704],[0.7362369],[0.7155587],[0.042815663],[0.042829156],[0.042837203],[0.042570762],[0.042158205],[0.041655492],[0.04112391]],"model_test_loss":0.022167924791574478,"input_size":18,"current_date_and_time":"2023-08-06_21-24-15","input_mean":[[24.369797],[-0.025400253],[0.017546965],[-0.00700374],[-0.02907116],[-0.0272434],[-0.026022244],[-0.018144533],[-0.013257402],[-0.008418786],[-0.005300719],[-0.0070171817],[-0.006979727],[-0.0069393516],[-0.0067121363],[-0.006487458],[-0.0063709775],[-0.006421042]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.7274725],[0.025503755],[0.3050141],[-5.3191023],[-0.03876078],[0.005245881],[-5.0506983]],"dense_1_W":[[-0.2822948,-0.722028,3.7289326,0.10887399,0.23870549,0.50487334,-0.123285055,0.6266674,-0.16613187,-0.31120768,0.21549895,0.8222215,0.093914084,-0.508679,-0.32368693,-0.5741282,-0.12807958,0.4776648],[0.055145074,-0.08890773,2.0090845,-0.22150633,0.07060641,-0.22094366,1.112321,-0.9160675,-0.5255298,-0.2628351,0.6098551,-0.54194224,0.21753678,0.80302423,-0.20514414,-0.26842067,0.14056496,0.033558667],[0.07740017,0.015846146,2.7256997,-0.40292552,0.21246663,0.70980185,-1.5323384,0.36885697,0.4570335,0.031200917,-0.2520181,0.7061896,0.4765367,-0.40083462,-0.020111812,-0.83463514,-0.2164461,0.6454257],[-1.7542838,0.968146,-2.7611947,1.1451197,-1.0110191,-0.8876714,0.20558445,-0.9517466,-0.4182316,-0.12540092,0.31168443,-0.33938956,0.24651282,0.0059528793,-0.85313106,0.4553901,-0.33676484,0.039334722],[0.0048947604,0.28315127,-0.00082401093,0.1642722,-0.026302634,0.5552507,-0.4484803,-0.77365834,0.3072703,0.20140412,-0.07074192,1.1858759,-0.019229556,0.54098135,-0.6814733,-0.69271094,-0.06874056,-0.38412106],[0.0007334778,0.7766232,0.00028844643,-0.21648946,0.092252165,0.67591894,-0.27549696,-0.24640717,-0.29265153,-0.3485241,0.46819794,0.36771885,0.1777801,-0.9394743,-0.5500784,0.5453998,0.23175853,-0.06195575],[-1.6910515,-0.50021756,2.6513228,-1.0415213,0.7283371,1.1932234,-0.42946246,0.6699792,0.35031915,0.056402538,-0.2107231,0.35974085,0.18628371,-0.5288515,0.4471923,-0.037989102,0.38440272,-0.13335472]],"activation":"σ"},{"dense_2_W":[[0.32577014,0.79221934,-0.328502,0.93716705,-0.48035973,-1.1603907,-0.2849361],[-0.018025871,1.2269095,-0.17799911,0.3586097,-0.5202041,-0.9837849,-0.52449334],[0.4882362,0.007634269,-0.8909171,-0.3146946,0.22157149,-1.2225018,0.20821871],[0.80880105,0.06718037,1.1132499,0.29183453,0.04864204,-0.16105369,0.35970175],[-0.37581718,-0.5779451,0.3496446,-0.47957718,0.56743324,0.7492507,0.09928946],[-0.4170784,0.6871286,-1.0214018,0.49072498,0.097653925,-0.34628057,-0.669162],[0.07657919,0.3276044,0.025352756,0.4546719,-0.42029864,-0.9768511,-0.06424113],[-0.034272887,0.27446097,-0.026066864,-0.23361085,0.50696295,0.26659736,0.061146133],[0.20783767,-0.38495246,0.64545757,-0.5973285,0.28495064,0.6255407,-0.27093932],[-0.18777645,-0.10720107,-1.0076562,-0.91708684,0.035999604,-0.3695375,-0.40669018],[0.097274005,-0.0091937585,0.77790815,0.5603293,-0.007872101,0.16779582,0.57061195],[-0.27653685,0.8055118,-0.16641589,0.67337465,-0.68099606,-0.7176573,-0.09002476],[0.50360245,-0.814891,-0.0020142735,0.34887952,0.38281712,0.5023187,0.52313113]],"activation":"σ","dense_2_b":[[0.2157577],[0.2698682],[-0.019235173],[-0.10241727],[-0.100874275],[0.06276079],[0.035551473],[-0.12188733],[-0.1428853],[-0.20376948],[-0.16719232],[0.18453568],[-0.34984714]]},{"dense_3_W":[[-0.15546247,0.4479613,0.29678583,-0.07754084,-0.34736145,0.23861347,0.62535715,-0.21091194,-0.4652678,0.41793606,-0.08758342,-0.032690294,0.18323281],[0.70506346,0.4563717,0.3900941,-0.7799406,-0.11504136,0.42975253,-0.052854165,-0.2509722,-0.19303511,0.4449753,-0.030831125,0.6785045,-0.16403332],[-0.6801335,-0.18466944,-0.18921193,0.6546068,0.3580845,-0.63010234,-0.6467311,-0.13526618,0.15568815,0.35201934,0.61143976,-0.62779784,0.7224356]],"activation":"identity","dense_3_b":[[-0.05987917],[-0.07057249],[0.046607416]]},{"dense_4_W":[[-0.41022143,-1.0402968,0.69203836]],"dense_4_b":[[0.06063404]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A050x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A050x00x00'.json deleted file mode 100755 index e2f4fae4a9..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A050x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.436153],[1.0504706],[0.3418279],[0.044102445],[1.0572962],[1.055557],[1.0525179],[1.0187471],[0.9908011],[0.95748615],[0.92414606],[0.043971427],[0.044015896],[0.044045128],[0.04389467],[0.04364494],[0.043296155],[0.042847775]],"model_test_loss":0.038220494985580444,"input_size":18,"current_date_and_time":"2023-08-06_21-51-36","input_mean":[[23.848715],[0.018280305],[0.012880258],[0.00016874999],[0.015305563],[0.01623863],[0.01724972],[0.02289785],[0.026459597],[0.03181198],[0.03424346],[0.00015466582],[0.00016650796],[0.00017154339],[0.00011696259],[5.7035195e-6],[-6.984356e-5],[-0.00021620118]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.03454988],[-4.80883],[-0.0003980326],[0.045162812],[2.7693284],[-0.12798071],[-5.1148744]],"dense_1_W":[[-0.021953972,-0.6909956,0.0017137715,0.075967655,0.19107713,-0.6735136,0.5936085,-0.059220172,-0.3937673,-0.08009787,0.19657694,-0.92206305,-0.40902787,0.80064285,0.36957166,0.41741195,-0.09949758,0.0328572],[-0.41551954,0.34888965,4.58918,-0.58479553,1.2140695,1.0730668,-0.80987257,1.7057942,1.8264681,0.5418806,-1.5800008,0.90441865,0.40738422,-0.9309175,-0.5846453,-1.1779749,-0.21697095,1.2636313],[-1.3167963,0.22196263,0.00087620446,0.11951662,0.23572233,0.98367923,-1.184788,-0.15921544,-0.17442104,-0.03715148,0.20377636,0.7771119,-0.31182548,-0.39967468,-0.30966496,0.10307021,-0.1549598,0.16605021],[0.016689815,0.62469226,5.6109867,0.25332543,0.017362839,0.066708766,-0.90982044,0.4760742,1.3472136,0.47811866,-1.0950692,0.7803302,0.23873158,-0.12769687,-1.0736917,-0.9507369,-0.3849879,0.9753211],[1.010975,0.48392332,2.3908904,-0.09404196,0.29996136,0.6191447,-0.33926985,0.94034505,0.6360225,0.15894395,-0.681273,0.48581445,-0.14646457,-0.5143217,-0.61096245,0.016869107,0.16057582,0.25225523],[1.2771941,-0.12252131,-0.0015340669,-0.18589194,-0.108365774,0.8503448,-0.28897393,-0.25453618,-0.109775856,-0.07973199,0.20226198,0.16910028,-0.13213143,-0.004498944,-0.079716355,0.31004015,0.1381526,-0.22449149],[-1.9269731,0.68068326,2.6605928,0.31519896,0.73409057,0.86063737,-1.4537466,1.1653538,0.65197283,0.33013284,-0.82076246,0.5808779,-0.16310015,-1.1616337,-0.56682473,-0.24635708,0.90833735,-0.1679019]],"activation":"σ"},{"dense_2_W":[[-0.19316064,0.20220636,0.1543245,0.56923085,-0.5256424,0.6484845,0.5277906],[0.58739203,0.02642884,-0.5941336,-0.06645716,-0.47577676,-0.6182639,0.22779459],[0.47835082,-0.13229278,-0.5625976,1.091255,1.0804834,1.1058354,0.12684019],[-1.1107054,-0.5791231,1.0741233,0.6597225,0.1555275,0.37428802,-0.07498665],[0.71273017,-0.030820772,-1.1579764,0.3962723,0.1522951,-0.62006533,-0.22865336],[-0.43192923,-1.3364362,0.49843183,1.4019581,1.2106336,0.93200284,-0.84781635],[0.33329925,-0.50564456,-0.025362682,0.08924529,-0.44918236,-0.18738124,-0.9237199],[0.74970734,0.2891013,-0.88326615,-0.37782103,-0.12960875,-0.46564922,0.253634],[-0.38317993,-0.049594685,0.62969357,-0.4982168,-0.8223472,-1.1548349,-0.9691452],[-0.509654,1.1230011,-0.095659316,-0.08150701,0.13044642,0.76143026,1.9938471],[-1.733176,0.57158726,0.43324548,-0.34991685,-0.22035135,0.76057756,-0.052056145],[0.975577,-0.4635662,-0.9864897,-0.0116866175,0.28406203,-0.43784142,0.101669684],[1.0218577,-0.020748869,-0.8567677,-0.03760161,-0.33631977,-0.11666814,-0.17231067]],"activation":"σ","dense_2_b":[[-0.34342867],[0.0511681],[0.14040104],[-0.18537521],[-0.013827617],[-0.11964682],[-0.0019164886],[0.05570073],[-0.22459657],[-0.46932775],[-0.59917027],[0.19691558],[0.12876545]]},{"dense_3_W":[[-0.20874692,-0.03773357,-0.22803174,0.17655598,-0.21538508,-0.22147778,-0.36320722,0.2394826,0.309721,-0.50003666,0.18370363,0.965146,0.6532681],[-0.68880624,0.089210816,-0.13193853,-0.09678856,0.26519805,0.21867493,0.03511478,0.21086489,0.13713072,-0.3630258,0.02014443,0.5465172,0.19587718],[0.2179609,-0.33041763,0.349815,0.50508064,-0.6743199,0.49183506,-0.36830014,-0.34079608,-0.62299275,0.13984378,0.3973101,-0.7238013,-0.31278804]],"activation":"identity","dense_3_b":[[0.019930799],[-0.07322117],[0.0665013]]},{"dense_4_W":[[-0.13234596,-0.36558858,1.5018625]],"dense_4_b":[[0.064201705]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018.json b/selfdrive/car/torque_data/lat_models/HONDA_ACCORD.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018.json rename to selfdrive/car/torque_data/lat_models/HONDA_ACCORD.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016.json b/selfdrive/car/torque_data/lat_models/HONDA_CIVIC.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016.json rename to selfdrive/car/torque_data/lat_models/HONDA_CIVIC.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022.json b/selfdrive/car/torque_data/lat_models/HONDA_CIVIC_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022.json rename to selfdrive/car/torque_data/lat_models/HONDA_CIVIC_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019.json b/selfdrive/car/torque_data/lat_models/HONDA_CIVIC_BOSCH.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019.json rename to selfdrive/car/torque_data/lat_models/HONDA_CIVIC_BOSCH.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CLARITY 2018.json b/selfdrive/car/torque_data/lat_models/HONDA_CLARITY.json similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CLARITY 2018.json rename to selfdrive/car/torque_data/lat_models/HONDA_CLARITY.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017.json b/selfdrive/car/torque_data/lat_models/HONDA_CRV_5G.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CR-V 2017.json rename to selfdrive/car/torque_data/lat_models/HONDA_CRV_5G.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/HONDA_CRV_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019.json rename to selfdrive/car/torque_data/lat_models/HONDA_CRV_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA HRV 2019.json b/selfdrive/car/torque_data/lat_models/HONDA_HRV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA HRV 2019.json rename to selfdrive/car/torque_data/lat_models/HONDA_HRV.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018.json b/selfdrive/car/torque_data/lat_models/HONDA_ODYSSEY.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018.json rename to selfdrive/car/torque_data/lat_models/HONDA_ODYSSEY.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017.json b/selfdrive/car/torque_data/lat_models/HONDA_PILOT.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA PILOT 2017.json rename to selfdrive/car/torque_data/lat_models/HONDA_PILOT.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017.json b/selfdrive/car/torque_data/lat_models/HONDA_RIDGELINE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017.json rename to selfdrive/car/torque_data/lat_models/HONDA_RIDGELINE.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050 4CNDC106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050 4CNDC106'.json deleted file mode 100755 index 810d5b1684..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050 4CNDC106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.83634],[1.3114692],[0.61259305],[0.04069087],[1.3149719],[1.3138335],[1.3109658],[1.2883614],[1.2688274],[1.2462783],[1.2217312],[0.040413603],[0.040479485],[0.040545307],[0.040706556],[0.040736057],[0.04062868],[0.040408727]],"model_test_loss":0.004580862820148468,"input_size":18,"current_date_and_time":"2023-08-06_22-45-30","input_mean":[[20.29631],[-0.20027053],[0.014035869],[0.0016505374],[-0.20306659],[-0.20239536],[-0.20110086],[-0.1928657],[-0.18353474],[-0.171302],[-0.16113067],[0.0016583024],[0.0016512063],[0.0016456466],[0.001655548],[0.0016689815],[0.0017368481],[0.0018190349]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.326124],[0.2025785],[-0.098271556],[-3.9150567],[-0.034150004],[0.15999922],[0.15790012]],"dense_1_W":[[-1.299842,0.7154461,0.50361294,0.707755,-0.32854462,0.5378334,-0.2463958,0.55273217,-0.11124414,0.0818784,0.12354188,-0.2839917,-0.0078714555,-0.43367207,-0.06824078,-0.11825003,0.009444434,-0.050293162],[0.012949336,-0.29667792,0.020020511,0.20652233,0.07910441,-0.9396354,-0.07545959,0.2788547,-0.13547169,0.24944903,-0.3807775,-0.20812687,0.6074481,0.8033544,0.63277185,0.624231,0.2708898,-0.12817378],[0.007405703,0.3899947,0.011966838,-0.28451037,-0.41553152,0.5924629,-0.3221766,0.27565926,0.12245936,0.07997573,-0.18988231,0.25652406,0.0025251263,0.024572864,-0.1805577,-0.041730937,-0.09416745,0.114651345],[-1.314923,-0.8099221,-0.5021875,-0.65911645,0.3549381,-0.34351438,-0.018062847,-0.33712468,-0.083063975,0.118071266,-0.21253352,0.42918342,0.22217433,-0.006059381,0.07905543,0.071201935,0.08123039,0.03532524],[0.0059883036,0.633405,3.1777372,-0.35775912,-0.48683342,0.45391664,-0.12081466,-0.10396013,-0.058201157,0.02189144,-0.2272636,0.3546558,0.3708983,-0.53645164,0.015508216,0.0337646,-0.060697123,0.12773308],[0.016417185,-0.08919656,0.0043452727,1.0047843,-0.27470052,0.3708835,-0.5663267,-0.29918858,-0.1055758,-0.048055023,-0.0047955806,0.3848289,0.09456668,-0.1911486,0.38866982,0.40791333,0.34307832,-0.107040025],[0.012326768,-0.35066816,0.023062164,0.11834323,-0.49445873,-0.40111482,0.67107445,-0.17822216,0.012243669,-0.015511885,-0.075803205,-0.20342149,-0.04872656,0.1803967,0.067403704,-0.13901299,-0.016193623,0.10545096]],"activation":"σ"},{"dense_2_W":[[0.68674135,-0.6659134,0.5956395,0.12655623,-0.062817745,-0.12547888,-0.25941992],[-0.61886525,0.17155291,-0.22070692,0.7328443,-0.5755818,-0.34458303,-0.08562272],[0.20490937,0.091596,0.17527196,-0.46830234,0.45194998,0.086104736,0.026383685],[0.41048616,-0.27680868,0.8749343,-0.3792618,0.015523265,0.13319112,-0.39641076],[-0.21381493,0.5849179,-0.9504806,0.21972664,0.120829634,-0.519766,0.78654087],[-0.07081899,0.30812186,-0.042367518,0.22959028,-0.8620051,-0.47999159,-0.10604032],[0.48751,0.14033422,0.3791711,-0.9662732,0.42280945,0.42151052,-1.1193146],[-0.42666185,0.0900884,-0.7094497,0.8601399,-0.023163248,-0.6888624,0.7585005],[0.7715003,-0.54247683,0.024090352,0.24359225,0.11092992,-0.21225674,-0.42073125],[-0.74185073,-0.08530311,-0.13807726,-0.13045816,-0.23199996,-0.5793514,0.31687632],[-0.29189909,0.6799488,-0.71430886,0.044500347,0.031233395,-0.36464205,0.23336875],[0.0026518344,-0.35539848,-0.24951808,-0.15187661,0.06614357,-0.51367974,-0.53242975],[-0.083562754,-0.36494836,-0.62077016,-0.5867332,0.061696846,-0.87958634,0.12203935]],"activation":"σ","dense_2_b":[[-0.11182095],[0.019549185],[-0.06678602],[-0.016046902],[-0.09487844],[-0.09783255],[-0.21236032],[0.04908964],[-0.26582202],[-0.059639674],[-0.094594166],[-0.29934412],[-0.23795456]]},{"dense_3_W":[[-0.6317685,0.5268228,-0.15907462,-0.7917317,0.5163576,0.30266294,-0.2348481,0.6155206,-0.027430234,0.17797364,0.41818848,-0.036049694,-0.5178868],[-0.26872328,-0.39003056,-0.09896492,0.12855911,-0.55909926,-0.5083438,0.2223784,0.64059246,0.22532892,0.23159789,0.27662674,0.23292752,-0.30605522],[0.15627481,0.2843338,-0.08109648,-0.6148113,0.47045776,0.15507717,-0.22756813,0.17076828,-0.17303488,0.011014704,0.2036813,-0.018549033,0.5282868]],"activation":"identity","dense_3_b":[[-0.08994592],[0.018008003],[-0.09251441]]},{"dense_4_W":[[-0.9093955,0.009164481,-1.0056945]],"dense_4_b":[[0.08682442]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050x00 4CNDC106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050x00 4CNDC106'.json deleted file mode 100755 index e975ca93ad..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050x00 4CNDC106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.59357],[1.477006],[0.56332403],[0.0488563],[1.4668952],[1.4705441],[1.4723984],[1.4532107],[1.4244952],[1.3764879],[1.322398],[0.048695624],[0.048735626],[0.048768714],[0.048758227],[0.048573222],[0.048228193],[0.04771695]],"model_test_loss":0.006445982027798891,"input_size":18,"current_date_and_time":"2023-08-06_23-11-36","input_mean":[[22.237236],[6.9949005e-5],[-0.011986303],[-0.00972222],[0.0063137817],[0.0058564004],[0.0051534283],[0.004587619],[0.0048142886],[0.005183529],[0.008339459],[-0.009665056],[-0.0096769305],[-0.009684455],[-0.009677782],[-0.009679327],[-0.009684613],[-0.0095741255]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.855301],[0.052071594],[-0.9259835],[-0.39606982],[-0.28288805],[2.4262483],[-0.34318432]],"dense_1_W":[[-0.43493858,-0.70013213,-0.31350356,-0.43949002,-0.598497,-0.5485545,0.4025656,-0.5401992,-0.018980056,-0.061278734,0.1137699,-0.25585833,0.4615678,0.1875789,0.30483955,-0.031047022,0.28664255,-0.0021283238],[0.16496778,0.69868094,2.0469344,-0.17368059,-1.1800704,-0.13566142,-0.42462012,0.23021017,0.65531075,0.49585822,-0.36106113,0.7175682,0.0027661566,-0.519457,-0.08598626,-0.26602933,0.166157,0.115440816],[0.7728235,-0.4924479,2.2911828,0.36538774,0.028460652,-0.89249814,0.8510172,0.028672855,0.31544507,-0.12564549,0.436127,-0.38716024,-0.22180186,0.23269372,0.10323456,0.09477643,-0.39314544,0.08314657],[1.5947833,0.21068165,-1.9855356,-0.33621395,-0.21167557,0.5248549,0.27686295,-0.20009576,-0.08829141,-0.38474026,-0.2801312,0.15994297,-0.16367479,0.23527442,0.0995661,0.087180234,0.0139048565,-0.01788154],[-0.1763247,-0.7516114,0.018385636,0.02481674,-0.13665949,-1.128679,0.63042605,0.19469936,0.008045146,0.17501755,-0.26599288,-0.36662114,0.17498758,-0.06488771,0.494955,-0.1309667,0.06411596,-0.025877746],[0.41982695,-0.89662635,-0.3100757,-0.18364146,-0.72511435,-0.31305894,0.42398736,-0.40684158,-0.09220529,-0.14246567,0.17467463,-0.16741924,0.34426558,0.06386407,0.064436376,0.07904302,0.37082943,-0.05846411],[-1.2621454,-0.40426448,0.008373463,-0.5806397,-0.37494826,0.25897807,-0.87750936,-0.34095204,-0.12761776,-0.22150302,0.18955815,0.19867262,0.21504422,0.07421347,0.14425631,-0.102518186,0.16319299,0.14805317]],"activation":"σ"},{"dense_2_W":[[-0.3315551,0.6894821,-0.077518575,-0.22825818,-0.15571377,-0.9379825,0.15222666],[-0.40593046,-0.07850631,0.2123167,-0.6120017,-0.32046098,0.25036517,-0.5017452],[1.6233888,-0.81733793,0.32388014,-0.49089634,0.5228173,0.27702752,-0.019065294],[-0.81814194,0.2933751,-0.43884784,0.24256489,-0.89946127,0.005718796,0.1616723],[-0.646881,0.11765002,0.020421116,-0.06024994,-0.7751037,-0.69670886,0.40203825],[-0.4584075,-0.29050452,-0.53295654,0.4170185,-0.4519702,-0.2822419,-0.35187477],[-0.6656979,-0.33147767,0.07978853,0.13856018,-0.66579354,-0.27202693,-0.45372754],[0.45943737,-0.61478317,0.09913581,-0.2357037,0.39553985,0.45948792,-0.12240596],[0.043193635,-0.08017425,0.03667257,-0.087842114,-0.8149818,-0.1100522,-0.41438082],[-0.37532488,0.7357754,0.1027241,-0.89521164,-0.2897733,-1.1208502,0.6037124],[-0.39368445,0.0629941,0.02851393,-0.046042874,-0.1590253,-0.016730668,-0.53213465],[0.31148022,-0.68707335,-0.06828221,-0.11472954,0.2530224,0.66532046,-0.10488325],[1.1789107,0.08234099,0.20439823,-0.51836455,0.7248978,0.5591445,-0.13914037]],"activation":"σ","dense_2_b":[[-0.11449777],[-0.1390032],[-0.37206075],[-0.01236088],[-0.04907102],[-0.05842376],[-0.15911177],[-0.19211829],[-0.11261235],[-0.15294583],[-0.13028015],[0.081644855],[-0.13006176]]},{"dense_3_W":[[-0.115885824,-0.47170904,0.5831736,-0.082577854,-0.31832224,-0.33083022,-0.11571216,0.19875251,-0.476999,0.02469458,-0.26611003,0.35896003,0.20480263],[0.2875189,-0.26662576,-0.2587217,0.49244243,-0.21378644,0.59825927,-0.085313775,-0.8429834,-0.09471229,0.7827554,0.05744314,0.1804075,-0.5764435],[-0.6480157,-0.07066631,0.13443626,-0.6231428,-0.4225046,-0.06471173,-0.16550478,-0.12601337,-0.10136987,-0.46307796,-0.026577879,0.6142914,0.4441342]],"activation":"identity","dense_3_b":[[0.06527926],[-0.009909654],[0.06479232]]},{"dense_4_W":[[-0.2580477,0.33718058,-1.1184793]],"dense_4_b":[[-0.062109288]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA070 4CNDC106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA070 4CNDC106'.json deleted file mode 100755 index e992f30792..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA070 4CNDC106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.869463],[0.5858021],[0.32688117],[0.02582744],[0.58848983],[0.58583117],[0.584275],[0.58906364],[0.59349614],[0.59887445],[0.610877],[0.025786323],[0.025794433],[0.025818141],[0.025857087],[0.02581527],[0.025688644],[0.025606968]],"model_test_loss":0.0014639738947153091,"input_size":18,"current_date_and_time":"2023-08-06_23-37-00","input_mean":[[26.716673],[-0.074982375],[0.043144263],[-0.0048145084],[-0.09424786],[-0.086935855],[-0.080987304],[-0.06796313],[-0.063149996],[-0.056549143],[-0.056314655],[-0.0047811475],[-0.0048097097],[-0.0048591294],[-0.0050809965],[-0.0051085255],[-0.005041358],[-0.0050054914]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.078991316],[0.3026068],[-0.25273243],[0.013439778],[0.37009302],[0.13664821],[-0.16456622]],"dense_1_W":[[-0.0030744555,-1.0954541,-0.03142538,-1.6753882,-0.12300866,0.79268783,-0.56524116,0.06749773,0.08401616,0.6239685,0.59483725,0.9908935,0.2398722,0.2553315,0.21238373,0.056749463,-0.23877978,0.30825418],[-0.8543499,0.46904665,0.6405476,0.6127007,0.2573736,0.18805248,0.36992317,-0.25051284,-0.08710556,-0.09765011,-0.5353191,0.2860888,-0.31374735,0.2946619,-0.7910126,-0.3691096,-0.79668784,-0.8112845],[0.004426532,-0.38074616,-2.8285646,0.8732835,0.24752633,-0.13101755,0.24333438,-0.19012967,-0.750537,0.4089185,0.44140428,-0.6625775,-0.22507015,-0.15794866,0.21373549,0.1863199,-0.16652858,-0.13657795],[-0.00061952876,0.20687495,-0.031221379,0.15000737,0.057221938,-0.414117,0.08427917,0.028406061,-0.3196398,-0.16508502,0.2385029,0.21718143,0.20419118,-0.23100859,-0.07353892,-0.30362707,-0.14411929,0.2562531],[0.75676596,0.7595603,0.5913131,1.2620265,0.06014515,-0.35853025,0.65820545,-0.26407003,0.24967487,-0.14225705,-0.6774673,-0.34284183,0.23795949,-0.122109324,-0.8345771,-0.65687364,-0.34826776,-0.9373063],[0.015336452,0.8013101,0.25717196,-0.2589111,-0.070080526,-0.015039927,-0.18020448,0.43581685,-0.23000908,-0.49613452,-0.006530597,0.5405513,0.14728923,0.15658382,-0.35035008,-0.57975715,-0.4771852,0.07149061],[-0.0016935252,0.004342065,0.007302239,0.34465888,-0.025569389,0.35721523,0.01775156,-0.2676134,0.13569762,0.04341658,0.00885,-0.121513374,-0.008711255,-0.3805635,0.1356443,0.13222197,-0.06938037,-0.13515687]],"activation":"σ"},{"dense_2_W":[[-0.35044748,0.75662565,0.15265507,0.7413438,-0.4943425,-0.7841103,-0.4461334],[0.5878455,-0.53052,0.46835116,-0.15082686,0.21561971,-0.30972666,0.28406903],[0.20365499,0.4938969,-0.37405172,0.36490002,0.35413012,-0.9276364,-1.271868],[0.15956812,-0.38227826,-0.34810027,-0.014073657,-0.17678988,-0.24762544,-0.8106593],[0.22776775,0.13553928,-0.2668433,-0.55416316,0.092818014,-0.066418946,0.45135185],[-0.379788,0.040577516,-0.18843734,0.21656789,0.1811508,-0.56766593,-0.465205],[-0.23584001,0.24342734,-0.08911726,0.93044406,0.47716722,-0.79287815,-0.7560821],[-0.08083705,0.20666538,0.38358647,0.16494158,0.17152569,-0.5743303,-0.84767425],[0.024201993,0.40508404,-0.452589,-0.14900035,-0.33940226,0.47047055,0.12949952],[0.0010686722,0.10515713,0.31118774,0.42902952,-0.27714232,-0.8179147,-0.23361693],[-0.20535007,-0.012914676,-0.24386998,-0.32201836,0.07650227,0.40637252,0.18290128],[0.46828738,0.15236787,-0.09334366,0.13351235,-0.347683,-0.4621099,0.34972924],[0.11132558,-0.08493177,0.22236344,-0.5575323,-0.43925527,0.57304513,0.71222407]],"activation":"σ","dense_2_b":[[-0.033294365],[-0.02055917],[-0.012818121],[-0.15711962],[-0.008688181],[0.054913495],[0.07755708],[-0.019581897],[-0.043765243],[-0.053016193],[-0.26712343],[-0.07999009],[-0.05613337]]},{"dense_3_W":[[0.696178,-0.5648311,0.6407045,0.19891022,-0.50313693,0.40486115,0.22351098,0.5828681,-0.601358,0.35544997,0.2282452,-0.27341864,-0.26009113],[-0.3853707,0.18478364,-0.5145561,0.32450193,0.5612143,-0.056345817,-0.28207055,-0.359446,0.550403,-0.423757,-0.0041745333,0.059421163,0.12554394],[-0.25317714,0.23387927,-0.35460812,0.067600355,-0.37119082,0.52048504,0.7020422,0.29556522,-0.58882946,0.039621986,-0.4467602,0.32936186,-0.4934978]],"activation":"identity","dense_3_b":[[-0.03463644],[0.016086485],[-0.025971314]]},{"dense_4_W":[[-0.73397875,0.10442852,-0.5272976]],"dense_4_b":[[0.033531036]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 56310AA050x00 4CNDC107'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 56310AA050x00 4CNDC107'.json deleted file mode 100755 index 2124ae9ec3..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 56310AA050x00 4CNDC107'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8824434],[0.71507746],[0.40526694],[0.027533442],[0.70021],[0.70435107],[0.70917654],[0.72280884],[0.7279133],[0.72587556],[0.71601045],[0.027381662],[0.027431164],[0.027479855],[0.027565915],[0.027533367],[0.027572744],[0.027474292]],"model_test_loss":0.0026778955943882465,"input_size":18,"current_date_and_time":"2023-08-07_00-25-13","input_mean":[[23.297268],[-0.03233586],[0.0028342474],[-0.0057605663],[-0.032880228],[-0.032776646],[-0.032454334],[-0.032823607],[-0.034516074],[-0.031360645],[-0.0298374],[-0.0057719713],[-0.0057596182],[-0.005749741],[-0.005749389],[-0.005687085],[-0.005583106],[-0.005525541]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.5215416],[-0.57060343],[-0.10824382],[0.24978213],[1.0079527],[0.3802316],[0.889446]],"dense_1_W":[[-0.26616007,0.32819784,0.00067071285,-0.17974856,-0.27740893,0.317025,-0.06948472,-0.059453495,0.011850398,0.09067377,-0.06956775,-0.018317414,0.17877837,-0.18234687,0.09975633,-0.06088335,0.67421824,-0.501803],[-0.2902224,0.03435688,-0.0007335937,0.096210994,0.12977274,-0.5014846,0.12585396,0.19064707,-0.33947954,0.09289936,0.0021525132,-0.5650862,0.1586393,0.24856442,5.5656827e-5,-0.16046683,0.47567898,-0.26273644],[0.004148071,-0.20369966,0.0006762518,-0.12915482,0.31135672,-0.40276182,-0.023599507,-0.048985712,0.14804183,-0.27225778,0.13084674,-0.2682165,0.079972215,0.3869157,0.16938664,-0.06664921,0.18059294,-0.10463955],[-0.042720374,-0.44797078,0.106441885,-0.23366769,0.3137181,0.46343398,0.44943058,0.6756963,0.63177943,0.18888515,0.6256494,-0.64797264,-0.7504678,-0.021724926,-1.2981596,-0.49731153,-0.041930113,-0.5024712],[0.93396103,0.0685933,-2.0326483,-0.108520836,-0.112476364,-0.18603157,0.4607162,0.0659317,-0.21982923,0.030069323,-0.005501312,-0.19012018,0.0807506,-0.08516471,0.017757716,0.59362125,0.06101577,-0.30881],[-0.039777555,0.6639411,0.10703323,-0.17111959,0.74993485,0.4655031,-0.24367447,-0.091623016,0.21031639,0.5017018,0.9008939,-0.2138174,-1.124537,-0.841201,-0.6622513,-0.45340645,-0.6225992,-0.35385105],[0.652006,0.12817843,1.9792969,0.122777954,-0.5505552,0.32176024,-0.59021205,0.6974296,0.23109314,-0.08562345,-0.243364,0.04599025,0.48566473,-0.2583534,-0.23012485,-0.47488052,-0.08368516,0.34066808]],"activation":"σ"},{"dense_2_W":[[1.3105916,-0.9507534,0.12762353,-0.48912024,-0.82522184,-0.28377983,0.09846663],[0.6104658,-0.36417446,-1.0213474,-0.0030217022,-0.5582867,0.26822597,0.1030378],[-0.2444796,0.6386674,0.64500415,-0.32919264,-0.2632627,-0.2914869,-0.41501835],[-0.17211501,0.72615033,0.8057921,-0.3012537,-0.06894025,-0.6685643,0.12407082],[1.0545709,-0.7296641,-0.7836252,-0.5428908,0.31110647,0.5414368,0.78908324],[-1.0883812,0.45824885,0.30062124,0.6135413,-0.5220157,-0.2808084,-0.65922874],[-0.45479217,0.72624725,0.80973893,0.16011865,0.14399557,-0.057426546,0.4549376],[0.26526257,-0.9891332,-0.5146369,0.21206275,-0.1548442,-0.29759446,-0.63057125],[-0.89195234,0.7344573,0.13697046,0.1335858,-0.3111978,-0.10358053,-0.5817338],[0.35159203,-0.53573203,-0.37090668,-0.07636804,-0.7223272,0.34780052,0.25976828],[1.4417952,-0.9369937,-0.5165861,-0.5886849,0.27827945,-0.17774494,0.33352372],[-0.83197176,0.056716688,0.3176061,-0.0045141433,0.40866536,-0.42308146,0.32042512],[0.21989709,-0.18666251,-0.56908923,-0.5630903,-0.44349894,0.4591227,0.2543278]],"activation":"σ","dense_2_b":[[0.13017428],[-0.26941714],[-0.088276364],[-0.046999395],[0.4457564],[-0.06871929],[-0.10337065],[-0.22012532],[-0.08198058],[-0.033206128],[0.10756691],[-0.02121439],[-0.059810642]]},{"dense_3_W":[[-0.10640557,0.06776593,0.32191923,-0.28953195,0.026864873,0.2731794,0.16903114,0.44673413,0.48168063,-0.3712548,0.23447442,0.29575455,-0.1468495],[0.66085047,-0.27319327,0.2644553,-0.5318593,0.7203917,-0.34130642,-0.5875807,-0.46950552,-0.6058821,0.41351122,-0.006779633,-0.31155804,0.5298571],[-0.29553437,-0.58076066,0.52323264,0.45213857,-0.16277957,0.25945267,0.4144006,-0.66534394,0.22506356,-0.63662976,-0.7497482,0.07323068,0.024176065]],"activation":"identity","dense_3_b":[[-0.034318473],[-0.04050105],[0.079460956]]},{"dense_4_W":[[-0.04219099,0.38754243,-0.83605766]],"dense_4_b":[[-0.053366307]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 x00x00x00x00x00x00x00x00x00x00x00 4CNDC107'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 x00x00x00x00x00x00x00x00x00x00x00 4CNDC107'.json deleted file mode 100755 index 2dbdb89f2e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 x00x00x00x00x00x00x00x00x00x00x00 4CNDC107'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3239555],[1.2216686],[0.56163263],[0.040356442],[1.2047082],[1.2095532],[1.2141893],[1.2243134],[1.227764],[1.2343445],[1.2368515],[0.040138606],[0.04019667],[0.040256687],[0.040477395],[0.040625844],[0.040658556],[0.04046674]],"model_test_loss":0.003521745325997472,"input_size":18,"current_date_and_time":"2023-08-07_00-49-58","input_mean":[[24.67693],[-0.04921823],[0.0012857419],[0.0007996762],[-0.04480579],[-0.04406795],[-0.043653794],[-0.043152645],[-0.0432289],[-0.046706084],[-0.050676387],[0.0009143127],[0.0009410887],[0.00097576616],[0.0010559426],[0.0011112413],[0.0010468352],[0.0010160342]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.49570504],[1.3210211],[2.6898615],[-0.02208882],[-0.09377371],[-2.7531927],[0.006006821]],"dense_1_W":[[0.15420651,0.23067516,0.11304303,0.013207053,-0.28895557,0.4683098,-0.20896511,0.015550693,0.122526914,-0.109381676,0.07471001,-0.13962431,0.2163086,0.028139457,-0.44415337,0.0053714034,0.042319868,0.042410903],[0.50394976,-0.23329197,-0.15899694,-0.12280355,0.14703913,-0.48161858,0.69567484,-0.34582955,-0.36040807,-0.004507536,0.14408033,0.1836344,0.11809705,0.32179466,-0.16438203,-0.31062344,0.1120704,0.18364586],[0.49820933,-0.26314422,-0.26272264,-0.22503936,-0.12580016,-0.47477996,0.33671036,-0.34708446,-0.31003487,0.25983158,-0.15030581,0.091946304,0.03323872,0.34110484,0.39555183,-0.2991158,-0.2320138,0.28421888],[0.01583395,1.1208205,3.865706,-0.44494992,-0.5262589,0.31796062,-0.81724226,0.43527883,0.4510549,-0.08255983,-0.6121285,0.9358581,-0.0058640586,-0.34025922,-0.21380498,-0.23998466,0.11081464,-0.20770882],[-0.0034587705,0.21727203,-0.007030041,0.011187133,0.24777392,0.7926248,-0.55883515,-0.28467444,-0.32108763,0.23630463,0.122614495,0.5811709,0.06195977,-0.31027994,-0.46347076,0.063689135,-0.34609768,0.3360888],[-0.5817377,-0.59925795,-0.2828089,0.12346245,-0.023504892,-0.43106267,0.37201306,-0.25494003,-0.04706249,-0.23423873,0.07503895,-0.08940586,-0.017763922,0.51661766,0.123237476,-0.40396547,-0.06934791,0.2436692],[-0.00840452,0.30712155,-0.2591553,-0.13306698,-0.66947764,0.38101527,-0.18025695,0.18304327,0.42003196,-0.19946226,-0.31748682,0.37292734,0.12961847,-0.26775375,0.4295266,-0.30892614,0.2832681,-0.0377284]],"activation":"σ"},{"dense_2_W":[[-0.7306887,-0.3954964,0.39146426,-0.29959947,-0.47128507,0.3531377,-0.334773],[-0.20252958,0.19992398,-0.33168688,-0.44316828,-0.403189,0.8955503,0.049495354],[-0.5052344,0.2230648,0.7528356,-0.11088759,-0.22496831,0.6596836,-0.5600461],[0.7656071,-0.48874223,-0.57206357,-0.23170787,-0.06306857,-0.43644294,0.34748504],[0.1213388,0.25739238,-0.41398072,0.06884506,0.82274115,-0.41439316,-0.13129346],[-0.66222745,-0.39265332,0.34125367,-0.5192327,-0.01774378,0.07983937,-0.5983968],[0.05495612,0.7774879,0.5478655,-0.4151472,-0.3105426,0.10111106,-0.31487244],[0.20206158,-0.57719696,-0.76630634,-0.8810195,-0.77503985,0.31274256,-0.30636895],[0.6253499,0.25690252,-0.74118155,0.46701622,0.42273006,-0.3957298,-0.3012005],[-0.020889444,0.19570331,0.09289772,0.13839301,-0.5962096,0.24448077,-0.4408785],[0.38479564,-0.4298671,-0.22112085,0.36361158,-0.18309206,-0.19321738,0.38277677],[0.6633294,-0.20508423,0.10870525,-0.35996673,0.8237321,-0.77270275,0.51027477],[-0.03977624,0.15964952,0.7697739,0.24770993,-0.8757424,0.37308407,-0.7050307]],"activation":"σ","dense_2_b":[[-0.092581324],[-0.1461753],[-0.054165266],[0.06442791],[-0.00013360326],[-0.11788689],[0.06482655],[-0.25213814],[-0.059510298],[-0.23111191],[-0.030306052],[-0.00994865],[-0.10923587]]},{"dense_3_W":[[0.26818967,-0.13706638,-0.016091619,0.60452354,0.23608918,-0.5172543,-0.46327448,0.18274918,0.674987,0.38215277,-0.19895244,0.44653496,-0.5346905],[-0.592465,-0.39396238,-0.6349639,0.1223753,0.6926395,-0.30194458,-0.54252756,-0.0013925297,0.51748616,-0.26460662,0.20391932,0.058503315,0.03102843],[0.5844198,0.15142864,0.5510742,-0.54181045,-0.11530869,-0.38452375,0.34452912,0.33701643,0.21574911,0.43324685,-0.42422894,-0.22249535,0.19921371]],"activation":"identity","dense_3_b":[[0.043458235],[0.064931095],[-0.06555825]]},{"dense_4_W":[[0.75090593,0.62048215,-0.7586382]],"dense_4_b":[[0.054481287]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.02 56310BY050 4CNHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.02 56310BY050 4CNHC102'.json deleted file mode 100755 index ca102af60e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.02 56310BY050 4CNHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.952709],[1.1003942],[0.47154436],[0.03557234],[1.0985221],[1.100109],[1.1007283],[1.0919963],[1.0812235],[1.0604604],[1.0346675],[0.035514425],[0.035544988],[0.035569686],[0.03549034],[0.035385482],[0.035147294],[0.034815073]],"model_test_loss":0.004957424011081457,"input_size":18,"current_date_and_time":"2023-08-07_01-40-53","input_mean":[[24.884089],[-0.016909879],[0.012826358],[-0.026510358],[-0.019373143],[-0.018562341],[-0.01784492],[-0.013357136],[-0.008858641],[-0.0046453234],[-0.0011935525],[-0.026596593],[-0.026568031],[-0.026541922],[-0.026392153],[-0.026309952],[-0.02631445],[-0.02632764]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.4760303],[-0.18308954],[-2.167727],[-0.417148],[-0.013595293],[2.8997235],[0.019984849]],"dense_1_W":[[2.096428,0.04293517,-0.055048794,-0.46484697,-0.35501856,0.42526284,-0.45293817,0.22161071,-0.635065,0.12139629,0.0034814414,0.5435328,0.020969981,-0.072267376,-0.08442676,-0.28275377,0.42481178,-0.0931807],[0.03543624,-0.6877385,-3.3156288,-0.10774069,0.90167654,-0.23635304,0.26507783,0.22863936,-0.51606226,-0.7042943,1.0019395,-0.19395043,0.54403013,-0.22361496,-0.0723612,0.024753883,0.21771601,-0.058525223],[-0.2608231,0.1017871,0.077472344,0.2912071,0.06507552,0.55804306,0.16650774,-0.20267099,0.31049293,0.34334332,-0.22618186,0.56663543,-0.40060464,-0.41012672,-0.46737882,0.41070658,-0.19341056,0.07924895],[-2.1272566,-0.26860842,-0.056874078,0.028759755,-0.117427334,0.6830661,-0.49746,-0.15804365,-0.597628,0.20925169,0.075665824,0.06611037,0.1801026,-0.04828015,-0.060966395,-0.237039,-0.07277843,0.1432378],[-0.012815778,-0.123973764,-0.14136693,0.3905719,0.11651388,0.14950705,0.09933541,-0.7976692,-0.060879573,0.2617282,0.19549161,-0.40608075,-0.12369088,0.50207996,-0.102547385,-0.44343522,0.08439864,0.0862764],[0.31134474,0.71243083,0.095208526,0.27090108,0.3364311,0.3387401,-0.6072888,0.26359472,0.51003397,-0.03195535,-0.1718143,0.122315615,0.08455601,-0.29650295,-0.45320752,0.15260614,-0.14674625,0.12800558],[-0.013968377,-0.26977414,0.052489035,-0.20114611,-0.16536346,-0.5467719,0.34399673,0.33305255,-0.11911299,-0.012991744,-0.2281494,-0.38340676,0.2801909,0.06072155,0.11670941,0.27231306,0.056253888,-0.20349257]],"activation":"σ"},{"dense_2_W":[[0.25041997,0.10206583,0.715677,0.18107271,-0.95661914,-0.17999575,-1.1160771],[0.18456584,0.117620505,0.6509535,0.23106942,-0.979118,0.9328957,-0.4987036],[1.0633037,-0.7188896,0.55112547,0.08787729,-0.6966662,1.2828107,-0.46829444],[0.26642972,-1.0333931,2.0355246,1.8633006,-1.7384061,-0.27828768,-1.8381956],[0.22363526,-0.08106195,0.26395926,-0.62673736,-0.12962806,-0.7491592,0.7798321],[-0.09318676,-0.4941464,-0.38996404,0.26097637,0.17723922,-0.5002643,0.8469415],[-0.32657585,0.23485117,-0.6398364,-0.10261886,0.57225746,-0.9840285,0.23459736],[-0.6653256,0.20312071,-0.052869216,-0.010713486,-0.021094337,-0.53480285,0.46862552],[0.19337021,0.5902509,-0.45771724,-0.40887538,0.65314317,0.2744537,0.36075133],[-0.09122067,-0.13116741,-0.72494227,-0.5763938,0.48517498,-0.15608339,0.7322048],[1.1417534,-0.78113425,0.78245425,0.040167056,-0.5890334,1.335385,-0.67876405],[-0.39274675,0.036710966,-0.059761982,-0.35286152,-0.02719329,-0.27672735,-0.50070906],[0.02223952,-0.45935592,0.25860146,-0.30429536,-0.16111197,-0.3231146,0.62293917]],"activation":"σ","dense_2_b":[[-0.04028944],[-0.028142564],[0.078946814],[-0.46476564],[-0.0035999476],[0.030332983],[-0.25515258],[-0.018076524],[-0.026729377],[0.031496003],[0.08078611],[-0.27224502],[-0.045907073]]},{"dense_3_W":[[0.4620854,-0.02418078,0.7011184,0.020806301,-0.27951247,-0.5371555,0.116979554,-0.30603725,-0.18933018,-0.40903252,0.6753726,0.568753,-0.4310432],[-0.54020286,-0.041412946,-0.24306548,-0.61936015,-0.05605574,0.15100999,-0.07693919,0.16520485,-0.05813703,0.47304806,-0.64346826,0.19271328,-0.038352612],[-0.33212858,-0.55580896,-0.67064255,-0.3418983,0.586469,0.21342045,0.7920437,0.2883454,0.4300167,0.6901999,0.34964025,0.1846654,0.04058318]],"activation":"identity","dense_3_b":[[-0.059763335],[0.079902194],[0.035987742]]},{"dense_4_W":[[0.39221895,-0.7381316,-0.6760117]],"dense_4_b":[[-0.046233788]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050 4CNHC103'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050 4CNHC103'.json deleted file mode 100755 index 6494d76e93..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050 4CNHC103'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.5466146],[0.80981266],[0.4014232],[0.035715338],[0.808276],[0.80946004],[0.8099587],[0.8003049],[0.79292077],[0.7788614],[0.7569955],[0.035431836],[0.03552915],[0.035616748],[0.035825603],[0.035789166],[0.035539445],[0.035157643]],"model_test_loss":0.0024959088768810034,"input_size":18,"current_date_and_time":"2023-08-07_02-05-51","input_mean":[[20.843248],[-0.067527235],[0.00015006482],[-0.012940521],[-0.06860682],[-0.06791663],[-0.06730508],[-0.06773257],[-0.066599436],[-0.0642261],[-0.06246489],[-0.012981559],[-0.012971355],[-0.012961813],[-0.013026318],[-0.013139244],[-0.013358213],[-0.013696734]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.36959708],[-0.3927159],[0.015337716],[-2.6280007],[0.013323148],[-2.6784072],[0.012876663]],"dense_1_W":[[0.00441593,-0.28445426,0.12868425,-0.06594001,0.643517,-0.26863223,0.23516199,0.0933076,-0.54322356,-0.13129324,0.22534953,0.15129176,-0.13127483,0.19987836,-0.39554223,-0.0589629,-0.49924454,-0.28881076],[0.39027417,0.15401302,-0.056920696,-0.47890553,-0.3300009,-0.48306167,0.5828366,-0.065358765,0.11067453,-0.19332197,0.08158799,-0.13183025,0.08212273,0.34178394,0.30528525,-0.046424016,0.45213524,0.049064413],[-0.0018742161,1.0021389,3.8293767,-0.20225114,-0.7356092,0.38675764,-0.6186065,0.1530118,-0.19326465,-0.16745023,-0.09147689,0.3500271,0.28329384,-0.3719793,-0.11645031,0.012525024,-0.15232189,0.16442363],[-0.37709048,-0.18989839,-0.39395905,0.45258853,-0.27445865,-1.0695606,0.52972853,-0.24389778,0.18883058,-0.3289555,0.026898181,-0.4512817,-0.012726739,0.24032715,0.039549112,-0.15741278,0.23836505,-0.22582999],[0.0026869208,0.5816565,0.0047081015,0.33716485,-0.43749458,-0.90179884,0.090872325,-0.18876752,0.28434423,0.30354127,-0.45683673,-0.0043129507,-0.15474738,-0.12864216,0.33334208,-0.37975344,-0.17868224,0.17245947],[-0.37269658,0.056210883,0.39117196,-0.20178121,0.48395464,0.6668031,-0.19134971,0.05924893,0.20031299,-0.051123295,0.11479842,0.3327035,0.406696,-0.60037625,-0.55025846,0.3823001,0.067088164,0.03777696],[0.28842884,0.27748382,0.055223227,0.24982269,-0.25035748,0.6999531,-0.5086199,-0.16066559,0.18782836,-0.009960592,-0.09571262,0.5652131,-0.20471764,-0.25930697,-0.46783432,-0.36040586,-0.04924343,-0.036189865]],"activation":"σ"},{"dense_2_W":[[0.4325747,0.05352207,-0.019636882,0.23707733,0.51061547,-0.4637862,-0.40100852],[0.20493814,-0.20983218,-0.4001346,-0.008143373,0.2476857,-0.037123583,-0.67152816],[-0.38300198,-0.5133637,0.054119077,-0.6279624,-0.49244288,0.6256476,0.7907053],[0.19233866,0.08520638,0.08706983,-1.0209559,-0.61933124,0.5403933,0.96377575],[-0.5673173,-0.8495875,0.35421842,-0.16951926,-0.36651966,0.16976853,0.0146132065],[-0.11585242,0.6740597,-0.41580456,-0.12795658,-0.036778353,-0.3175067,0.04743779],[-0.07734896,-0.36116868,-0.13891894,0.13353403,-0.17158407,0.18492623,0.215829],[-0.079607025,-0.0628624,-0.40307927,-0.6614631,0.25177357,0.37012863,-0.057130966],[-0.39253744,-0.11905358,-0.0998102,0.14498588,0.031866945,0.4783852,-0.27589342],[-0.46258968,-0.5466553,0.5868711,-0.5633951,-0.14532568,0.22600377,1.0318995],[0.11289376,-0.40194705,0.4572626,0.7012955,-0.27434063,-0.30249357,0.39138433],[0.0068481546,0.33485183,-0.21508186,-0.07030695,-0.10074153,-0.07031553,0.2075642],[0.19613013,0.27113703,-0.25391266,-0.21612066,0.19921905,-0.14536792,-0.3427696]],"activation":"σ","dense_2_b":[[-0.012001398],[-0.02212474],[0.14096059],[0.041697618],[-0.008908936],[0.047332846],[-0.009194286],[-0.039932724],[-0.043813754],[0.036821954],[-0.0014258353],[0.00875199],[0.015467969]]},{"dense_3_W":[[0.32098088,-0.32571092,-0.6606648,-0.15589207,-0.29422677,-0.11235969,0.27968746,-0.4088068,0.46579373,-0.32524452,-0.25602353,-0.074144796,0.4581445],[0.2711465,0.4530056,0.31585717,0.165996,0.09512367,0.54065865,-0.5712976,0.093997784,0.22095615,-0.3393496,0.04974402,0.16312775,0.20385568],[0.6250006,0.51413673,-0.7039048,-0.40498862,-0.30975106,0.5319801,-0.030333402,-0.34835565,-0.48519892,-0.087083556,0.5168309,0.3949118,0.14679015]],"activation":"identity","dense_3_b":[[0.029179294],[2.9370978e-5],[0.024199445]]},{"dense_4_W":[[-0.8672829,-0.09036683,-0.9275841]],"dense_4_b":[[-0.027475327]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050x00 4CNHC103'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050x00 4CNHC103'.json deleted file mode 100755 index d347614e8c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050x00 4CNHC103'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.490675],[1.1291032],[0.58252037],[0.039405],[1.1280589],[1.1279522],[1.1269643],[1.1124369],[1.1045281],[1.0925866],[1.0763438],[0.039314747],[0.039330542],[0.039342582],[0.039305937],[0.039206024],[0.038994968],[0.03869199]],"model_test_loss":0.005967735778540373,"input_size":18,"current_date_and_time":"2023-08-07_02-32-21","input_mean":[[22.534412],[-0.032263618],[-0.0037575949],[-0.0020172608],[-0.032352883],[-0.032752782],[-0.032883693],[-0.034339994],[-0.03540198],[-0.038307104],[-0.037811134],[-0.0020329459],[-0.0019997917],[-0.0019778514],[-0.0019503924],[-0.001969454],[-0.0020386311],[-0.0020115753]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.476557],[-0.68177766],[-1.4334949],[0.9746544],[-1.3537669],[-0.16913444],[1.5312378]],"dense_1_W":[[-1.4674118,-0.24609241,-0.017173812,-0.1921773,-0.33003026,-0.7032546,0.8222835,0.45996,0.033816524,0.1080052,-0.2516134,0.101496324,0.052959982,0.008949171,0.2056011,-0.13730909,-0.070785694,0.091235936],[-0.15725255,-1.8879077,-3.1574435,-0.026291944,0.91971624,0.7033072,0.87052536,0.5834137,-1.1149441,-1.1206936,0.80906874,-0.29204804,-0.66741747,0.41703406,0.6053606,-0.0012035158,0.24638794,-0.3302526],[-0.6278058,-0.38527206,-0.31773865,-0.08035399,0.022208743,-1.0113361,0.106477626,-0.0055144937,-0.11381203,0.112506695,-0.0055704513,0.38441408,-0.06360585,-0.008369453,0.008495975,-0.45555764,0.25611266,0.114160754],[1.2448323,0.124219336,0.3851474,0.1306329,0.17512998,0.5563543,0.33161706,0.5850413,-0.12428443,-0.16596517,0.01010055,-0.5043342,0.37030837,0.16615497,-0.36301187,0.0164275,0.034172643,-0.044182498],[-1.5838906,0.20879757,-0.015540314,-0.18438894,-0.05623706,-0.16800252,0.08689027,-0.24974507,0.009985618,-0.004396259,0.034236554,0.11091792,0.11175782,-0.080768205,-0.24925712,0.37246683,-0.022103941,-0.048722908],[0.056122262,0.2864052,-0.05922396,-0.15394859,0.2536335,-0.6977994,0.12732469,-0.56870854,0.11164165,-0.16432123,0.20823452,-0.35387105,0.1299614,0.02070388,0.43777424,0.29617321,-0.0202072,-0.2295211],[0.29040423,-0.44746503,-0.37836528,-0.5874443,-0.40612307,-0.81674665,0.2653388,-0.074799396,-0.13337858,0.16270955,-0.046827342,0.16102041,-0.042110663,0.68649536,0.16037555,-0.6455673,0.2862756,0.15030107]],"activation":"σ"},{"dense_2_W":[[0.88346493,-0.88215524,-0.714372,-1.4153144,1.6741431,-0.96062607,-2.4220207],[-1.0811888,0.7783481,-0.61303014,0.08742927,-0.32858953,-1.0313102,-0.14017701],[-0.83909744,-0.51418436,-0.34867173,-0.40438738,0.38744128,-0.9341407,0.5689156],[1.2234789,0.4505039,0.883525,-0.9082529,-0.45139286,-0.037596144,-0.4650941],[0.28187194,-0.01952515,0.6481759,0.5426486,-0.35617682,0.15431538,0.9969678],[0.9743034,-0.5146453,0.46463448,0.4160945,0.36689076,1.08357,0.15814787],[0.98991585,-2.347642,0.09153862,-1.1622584,0.11513134,-0.03356802,-0.5818536],[0.22896764,0.23242263,0.2844799,0.4641689,-0.3848538,0.4694864,0.82048494],[0.5654004,-0.40305212,0.9788426,-0.47530088,0.11026323,0.9248025,-0.09487986],[-0.66444695,0.07370127,-0.9244193,0.23670202,0.02346553,-0.8573719,0.1414936],[-1.7262199,0.06688502,-0.24180819,-0.55838716,-0.031299785,-1.0274018,0.274008],[0.29235423,-0.4138396,-0.8648773,-1.1904085,1.2492888,-0.97297734,-1.8818952],[-0.6758243,0.089520454,-1.1900347,-1.3192135,0.22304952,-0.4525044,-0.4759342]],"activation":"σ","dense_2_b":[[-0.028017305],[-0.061963774],[0.20414406],[-0.6334071],[-0.03253269],[-0.25242165],[-0.16586097],[-0.124249145],[-0.3108962],[0.24476607],[0.23445076],[-0.09690479],[0.23614454]]},{"dense_3_W":[[0.012833234,-0.3479158,-0.5259433,0.17710736,0.40674126,0.61857796,-0.07993461,0.4996034,0.12137744,-0.7061775,-0.7857778,-0.22047266,-0.6328669],[1.1566063,0.04082107,0.8082871,-0.7832778,-0.23352258,-0.6495986,0.6835129,-0.091181114,-0.3048599,0.7264398,0.43395072,0.89236176,0.31225243],[-0.80061877,-0.6287943,-0.4909107,0.12166274,0.54646,0.12600482,-0.28478548,0.48107162,0.044651717,-0.007296607,-0.81748486,-0.8812352,-0.6868977]],"activation":"identity","dense_3_b":[[-0.050449766],[-0.01878802],[0.12566388]]},{"dense_4_W":[[-0.20012462,0.9402982,-0.45523268]],"dense_4_b":[[-0.0072831307]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.04 56310BY050x00 4CNHC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.04 56310BY050x00 4CNHC104'.json deleted file mode 100755 index 118eb1cf3e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.04 56310BY050x00 4CNHC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.336879],[1.3154227],[0.59994406],[0.036185816],[1.3162037],[1.3162056],[1.3148344],[1.2966222],[1.275338],[1.2474067],[1.2149154],[0.036175884],[0.036184948],[0.036186848],[0.03609507],[0.03606698],[0.03593411],[0.03568829]],"model_test_loss":0.004663573112338781,"input_size":18,"current_date_and_time":"2023-08-07_02-57-17","input_mean":[[20.966389],[-0.1988315],[0.007915254],[-0.0028921724],[-0.19796984],[-0.19835053],[-0.19851768],[-0.19411317],[-0.18918088],[-0.1827134],[-0.17358756],[-0.0029098932],[-0.0029171635],[-0.0029238905],[-0.0029175677],[-0.0029673595],[-0.0030402362],[-0.0030292866]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.50860286],[-1.1555929],[0.23071012],[-0.1957657],[-1.2921786],[-0.5563927],[0.019920422]],"dense_1_W":[[0.39047584,-0.47947386,-0.005918953,0.2007276,0.044099685,0.15533815,-0.040589128,-0.2630327,0.0071245213,0.061105832,0.04366077,0.1350462,-0.1124703,0.12785473,-0.04178164,-0.44747785,0.0028341468,0.23350663],[-0.34462857,-0.5556194,0.0146421995,0.0050324253,0.1526045,-0.52050006,0.40116233,-0.29075962,0.1761436,-0.34321496,0.18081273,-0.052150007,-0.34601086,0.51632524,0.06400605,0.0061850185,-0.32717043,0.20724139],[0.029175306,0.7315644,4.721232,0.08325713,-0.48493296,-0.24665754,-0.1523269,-0.005119804,0.22956513,0.3020592,-0.4038248,0.6253751,0.25363073,-0.5005454,-0.31425786,0.23239496,-0.31191078,0.047809538],[-0.010508659,0.15341635,0.43864673,-0.1464096,0.18380292,-0.08827558,-0.6522776,0.029167967,0.5192565,0.123401366,-0.32648972,0.15496483,0.31653887,-0.5059119,0.057938904,-0.04915116,0.21404971,-0.12505578],[-0.3848665,0.5562081,-0.031109845,-0.091075,0.122943915,0.46815628,-0.37999207,-0.12903124,0.1892725,0.27956063,-0.132565,0.096547544,-0.34272483,0.12283442,0.06688585,0.3923325,-0.27006665,-0.034028348],[0.08722563,-0.2605648,-0.0077059204,0.053181015,0.0549966,-0.57108873,0.17384295,0.23858054,-0.06958964,0.34006983,-0.2719506,-0.047910836,-0.11265416,-0.12560493,0.27393594,0.2091702,-0.055573467,-0.10821209],[-0.06763393,-0.37754446,-0.009697453,0.08860953,0.28071558,-0.67214215,0.34979525,0.117161624,0.16652317,0.029180126,-0.10343166,-0.21206415,-0.08761407,0.08291694,-0.07274916,0.22889741,0.40336818,-0.373356]],"activation":"σ"},{"dense_2_W":[[0.055040672,0.5993177,-0.22644603,-0.8265452,-0.0038502845,0.44068658,-0.03040217],[-0.70651376,-0.3338041,0.42435834,-0.18500227,0.81759316,-0.5486541,-1.110574],[-0.5266372,-0.7444737,-0.3628261,0.5852146,0.95713323,-0.26699162,-0.8405533],[-0.28034517,-0.2479486,0.64379674,0.7883626,-0.12794921,-0.8036546,-0.1523485],[-1.3158185,0.12383007,0.49551678,0.13944684,0.43195948,-0.86401516,-1.1620226],[-0.077836744,0.46037325,-0.11932971,-0.4114782,-0.32642493,0.08826335,0.3426612],[-0.869882,0.32593668,-0.9218525,-0.37414593,-0.120396055,0.61139256,-0.12451638],[0.018881803,-0.6284976,-0.21616842,-0.26261458,0.17759265,-0.4875057,-0.7788972],[0.23179096,0.5346621,0.14235991,-0.16656797,-0.6345287,0.6345263,0.6490954],[0.42456567,0.16523154,0.15447061,-0.33069327,-0.7372917,0.64228994,0.3790743],[0.3378659,0.57663065,-0.011852186,-0.34422934,-0.8071215,0.16176973,0.9347968],[0.8090811,-1.1519405,1.155839,0.8935971,-0.04736475,-0.6883236,-0.16425224],[0.5435343,-1.5603184,-1.8775592,0.040111613,-1.4295818,-0.6792629,-0.17226006]],"activation":"σ","dense_2_b":[[-0.16689628],[-0.2849929],[0.050556302],[0.0045983535],[-0.21896972],[-0.038251407],[-0.4631888],[-0.45150843],[-0.2340387],[-0.040570892],[0.017508559],[0.33123934],[0.029258676]]},{"dense_3_W":[[-0.48214975,0.61397964,-0.3610514,0.635723,0.8418613,-0.08425857,-0.6093145,0.36558312,0.05758606,-0.27470613,-0.981727,0.8191294,0.86783963],[0.6742536,-0.09863488,-0.8090672,-0.087475404,-0.34558988,0.46608582,0.0860837,-0.19014728,0.6121176,0.5906499,0.030970646,-0.84944576,-0.10872761],[0.34069678,0.72464764,0.53571326,0.3477245,0.24464273,-0.55484986,0.52443147,-0.5883181,-0.4959677,-0.40765953,-0.7288586,0.7889583,0.81876206]],"activation":"identity","dense_3_b":[[-0.13179861],[0.03719345],[-0.098335996]]},{"dense_4_W":[[0.6273808,-0.39738363,0.47976896]],"dense_4_b":[[-0.057788193]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI000 4NEDR106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI000 4NEDR106'.json deleted file mode 100755 index 332a128784..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI000 4NEDR106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.042358],[1.4254401],[0.56163555],[0.046136778],[1.4076314],[1.4138519],[1.4181747],[1.4050233],[1.3790605],[1.3384784],[1.2876749],[0.045835752],[0.045892626],[0.045947872],[0.04606048],[0.04602913],[0.045808274],[0.0454029]],"model_test_loss":0.010334409773349762,"input_size":18,"current_date_and_time":"2023-08-07_04-17-44","input_mean":[[22.024511],[-0.043522414],[-0.002961347],[-0.0065920064],[-0.04150471],[-0.042428624],[-0.043336894],[-0.04086171],[-0.034525074],[-0.028886782],[-0.018756818],[-0.0065919408],[-0.0066040247],[-0.006626225],[-0.0068288157],[-0.0070200725],[-0.0073607014],[-0.0076632937]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.473138],[2.221549],[-1.0823368],[-2.8256664],[0.085434295],[0.028407706],[-0.061113566]],"dense_1_W":[[-0.0089028245,-0.9912872,0.009611258,0.25393942,-0.41998756,-0.32313955,0.8952989,0.029626163,0.11626525,-0.054468796,-0.1326496,-0.4476868,-0.2042107,0.46837947,0.069956504,-0.21724562,0.23439048,-0.047289353],[1.2613285,-0.96326435,-0.17513342,-0.000854132,-0.47149596,-0.018597946,-0.21429752,-0.21073529,0.1354099,-0.07295649,0.030318158,-0.12007737,0.12014077,-0.2163875,0.072022185,0.03959235,0.396182,-0.062489647],[0.012516819,-0.8584632,0.007924718,-0.30343324,-0.42617807,-0.7755947,1.0091652,0.1223127,0.3468889,-0.40062675,-0.07905825,-0.24530481,0.03633433,0.47560924,0.037581664,-0.13015322,0.22054312,0.031255197],[-1.5378897,-1.4828793,-0.18857823,0.16092972,-0.42702663,-0.34182322,0.41900903,-0.18607922,-0.13843817,0.24557483,-0.076981656,-0.4961918,-0.3452876,0.64607316,0.0009507385,0.08998216,0.14214522,0.046318714],[-0.0011267369,0.27540267,0.016030233,-0.20225953,0.013771044,0.6201634,-0.556872,-0.13545676,0.35052666,-0.124900356,0.002072807,0.4798739,-0.08431086,-0.10877774,0.04850312,-0.35767382,0.02486711,0.12758201],[0.024379028,-0.24700065,-2.853376,-0.32122508,0.8939814,0.82656956,1.4070201,0.09498728,-1.3611526,-1.5815003,0.30544436,-0.27033755,0.11556027,-0.054265734,0.20834558,0.13427551,-0.37772593,0.4640547],[-0.030686565,0.84678096,1.770179,-0.36134493,0.24199459,0.28295025,-0.47493774,0.23200317,0.70101535,-0.14119998,-1.0417818,0.40630406,0.13111247,-0.6430103,-0.2674837,0.017178508,-0.29887456,0.38562188]],"activation":"σ"},{"dense_2_W":[[-1.1036853,-1.3721989,-0.51504,1.2015524,0.09316521,-0.96497333,0.4021814],[-0.8097407,-0.7509286,-1.1158744,0.42325807,-0.20259377,0.0626439,0.31110045],[-1.2145201,-1.2441981,0.19279541,0.18892047,0.29747686,-0.25250465,0.6102425],[0.2313029,0.118307896,0.113481075,-0.15884186,-1.111768,0.13841225,0.20408762],[-0.71204215,-0.12088688,-1.1419623,-0.6261491,1.1400135,0.7190926,-0.7439571],[-0.25191402,-0.37898734,-0.28048715,-1.4491202,-0.3656834,-0.7907398,-0.641557],[-0.011884956,-0.5971226,0.335598,1.460086,-1.3101952,0.24946465,-0.7721908],[-0.291724,-1.2193375,0.9255212,1.4103785,-1.3861861,1.1069193,-0.9564451],[-0.005167844,-0.5868809,-0.04781744,-0.4605364,-0.5491854,-0.12518165,0.4831307],[-0.8599904,0.355135,0.13032773,0.4898609,0.9977364,-0.20243338,-0.3729824],[-0.8057951,-1.4712548,0.041369762,0.38580742,0.17479813,-0.5943229,0.58907944],[0.4630881,-0.67586523,0.7142299,-0.026821358,-0.4351039,0.16494957,-0.6159792],[0.47451556,-0.24695386,0.12806706,-0.45427,-0.49645072,0.16154642,0.051802393]],"activation":"σ","dense_2_b":[[-0.10206211],[-0.18115936],[-0.18227798],[-0.24110062],[0.019271357],[-0.057440575],[-0.268234],[-0.5252925],[-0.2866936],[0.05449511],[-0.24483305],[-0.18191986],[-0.07886301]]},{"dense_3_W":[[-0.5275586,0.21438916,0.42354757,-0.080388896,-0.22814655,0.08274758,0.58728325,0.23497643,-0.34910187,-0.65987664,-0.5979741,0.47347566,0.29530162],[0.2212618,-0.04398215,0.08195705,0.55958235,-0.2671096,-0.41001236,-0.07496751,-0.09160523,-0.40878737,0.17242602,-0.28486353,0.67506176,-0.4861643],[0.74257594,0.3091425,0.6776007,-0.5314211,0.5221815,-0.245857,-0.82829714,-0.7256044,-0.20003343,0.63602597,0.68443066,-0.60656106,-0.33084148]],"activation":"identity","dense_3_b":[[-0.08715922],[-0.015241552],[-0.020386416]]},{"dense_4_W":[[-0.18016826,0.060740642,0.8485467]],"dense_4_b":[[-0.027167765]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI090 4NEER106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI090 4NEER106'.json deleted file mode 100755 index 326f775d56..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI090 4NEER106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.3275805],[1.0196048],[0.52010816],[0.0352276],[1.02782],[1.0252671],[1.0222956],[0.9997506],[0.985749],[0.96506876],[0.9418997],[0.035265286],[0.035257738],[0.035243317],[0.035129223],[0.034967538],[0.034930766],[0.034761045]],"model_test_loss":0.005986420903354883,"input_size":18,"current_date_and_time":"2023-08-07_04-42-18","input_mean":[[16.81989],[-0.0023870994],[0.016375398],[0.007987486],[-0.0038331433],[-0.0028706586],[-0.002052483],[0.0037261376],[0.0077264695],[0.015267296],[0.022873675],[0.007976887],[0.008012079],[0.0080480315],[0.0083447285],[0.008644844],[0.008951735],[0.009266214]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.081543066],[-0.056712516],[1.020892],[1.2038189],[0.8294046],[-1.550392],[0.14646924]],"dense_1_W":[[0.007095242,-0.3357324,-0.020644788,0.15498674,0.3233852,0.681572,-0.58889717,0.10339724,-0.101055495,0.14906228,0.10875192,0.6335114,-0.055108294,-0.29020736,-0.20417833,-0.15015094,-0.17299037,0.08851465],[0.004572572,-0.031241285,-0.13219641,-0.32799125,-0.15282044,0.3018361,-0.04475915,-0.1852419,0.29663882,0.11407058,-0.28158987,0.15243189,-0.138962,-0.818821,-0.21749938,0.16543967,0.674217,0.5435629],[0.6141752,-0.15518521,-1.046077,-0.2757983,0.08250556,-0.15337233,0.7715917,0.11102678,-0.09630107,-0.5728525,-0.09002878,-0.034704853,0.036534615,-0.08534044,0.17554262,0.59318084,0.4653607,-0.6824117],[0.36545298,1.5887244,0.07696325,1.0003874,-0.86354816,0.23606206,-0.5116619,0.38954034,0.11738926,-0.06503386,-0.26383808,-0.15202644,0.03476461,-1.241754,0.06332426,0.76582646,0.33149716,-0.796532],[0.65361756,0.13396756,1.0613457,0.26300004,-0.40400812,-0.013307764,-0.75999826,0.49663877,0.22844444,0.55961716,-0.1376457,0.37311572,-0.24733792,0.14654122,-0.5692375,-0.5544628,-0.27533975,0.66560614],[-0.34781328,1.6558565,0.07238359,0.20479903,-0.8403306,-0.32243812,-0.16335258,0.52112013,0.17627572,-0.04307547,-0.3611007,0.30237716,-0.6051238,-0.386868,0.38447434,0.46520847,0.3120966,-0.6709089],[0.0036248034,0.23074862,0.020143876,0.5349166,-0.40822935,-0.41078866,0.2051622,0.49179015,-0.1525134,-0.59394807,0.23505864,-0.066738114,-0.7911307,0.33049953,0.6046334,-0.020162396,0.5588138,-0.7296629]],"activation":"σ"},{"dense_2_W":[[-0.543734,-0.11568991,0.46326157,-0.3440383,-0.19483161,-0.22621068,0.3506779],[0.5665691,0.39223912,-0.3114283,-0.24454129,0.20308813,0.26517904,-0.55094284],[-0.37307048,-0.3695241,-0.5802875,-0.67846954,-0.4361852,-0.6546891,0.347107],[0.20529634,0.20746405,-0.6926493,0.35652137,-0.09917265,0.36297628,-0.30438402],[-0.13266158,-0.105559945,0.48330346,0.05460201,-0.7987386,-0.11119831,-0.1520496],[0.12158869,-0.16989066,-0.21201673,-0.8567653,-0.80356854,-0.6502743,-0.6812023],[-0.67351097,-0.4814339,0.0066772657,-0.36529928,-0.32967392,-0.014957418,0.56022096],[0.65586,0.5302613,-0.53480864,-0.1837586,-0.37755764,0.5224716,-0.65894675],[0.632538,-0.12352366,-0.17432757,0.053469837,-0.23578659,0.8563387,0.010090043],[0.755902,-0.33837405,0.06354072,-0.0023081547,0.24040125,0.19006617,-0.6459784],[-0.84905565,0.34682384,-0.74062455,-0.36064273,0.06456776,-1.0320303,-0.1568676],[0.11871192,-0.45685586,-0.43699044,0.6423253,-0.41473007,0.8033967,-0.24556923],[-0.7037791,0.28321943,0.3725407,-1.0338148,-0.7480845,0.16597597,-0.18685772]],"activation":"σ","dense_2_b":[[0.0362523],[-0.15209907],[0.06911948],[-0.098613776],[-0.05953099],[-0.11117059],[0.0083315335],[-0.14510527],[-0.099141985],[-0.024182098],[-0.008950716],[-0.078234635],[0.007288485]]},{"dense_3_W":[[-0.28421518,0.64839506,-0.67347926,0.24251053,-0.5610912,-0.08075926,-0.6807234,0.032682177,0.022037055,0.37259215,-0.27325115,0.662137,-0.691926],[0.526823,0.050769817,0.35217327,-0.046594553,0.26780704,0.11182747,0.11998007,0.086257815,0.3501235,-0.32662,-0.34344003,0.25669885,0.21290292],[-0.52280086,-0.16297898,-0.19620705,0.5186644,-0.12866393,-0.18155573,-0.6449941,0.5744024,0.6484104,0.11549675,-0.62331545,0.06612739,-0.012873929]],"activation":"identity","dense_3_b":[[0.031896967],[-0.058957797],[0.028432038]]},{"dense_4_W":[[0.7332587,-0.31298956,1.0786972]],"dense_4_b":[[0.029880757]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.07 57700GI000 4NEDR107'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.07 57700GI000 4NEDR107'.json deleted file mode 100755 index 75fdb3425f..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.07 57700GI000 4NEDR107'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.16771],[1.2480878],[0.50373644],[0.0415057],[1.240927],[1.243768],[1.2455409],[1.2407454],[1.2340634],[1.2248088],[1.211883],[0.041283466],[0.041348],[0.0414103],[0.041489914],[0.04143776],[0.041264478],[0.0409134]],"model_test_loss":0.007933193817734718,"input_size":18,"current_date_and_time":"2023-08-07_05-08-25","input_mean":[[24.345285],[-0.096162066],[-0.014125192],[-0.0055604912],[-0.09105816],[-0.09206972],[-0.09341297],[-0.10010282],[-0.10234851],[-0.10274896],[-0.10063276],[-0.0054888204],[-0.0055110557],[-0.0055406075],[-0.005718475],[-0.0058116997],[-0.0059951427],[-0.0062671383]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.23237821],[0.018722376],[-1.3757128],[-0.01460865],[0.02967189],[0.08705265],[-1.2340055]],"dense_1_W":[[0.06750661,-0.3542061,0.2432691,0.14180695,-0.5219781,-0.0007836083,0.42668152,-0.0022440958,0.10387852,-0.041751936,0.068489484,-0.14231609,-0.17892262,0.13729224,0.04235856,-0.1593134,0.008738201,0.012944615],[-0.0105973855,-0.33196992,-2.107344,-0.2111076,0.67654485,-0.085388966,0.36568716,-0.049111266,-0.44938025,-0.010503432,0.12672867,-0.15217097,-0.22909231,0.3746955,0.3520743,-0.3600366,-0.08118863,0.04671434],[-0.4432249,-0.2638647,-0.15509327,-0.22285405,0.39585304,-0.07322643,0.20026541,-0.19971582,-0.2071554,0.11940002,-0.09321449,-0.13317838,-0.06569787,0.48338866,0.2730768,-0.22072834,0.17696315,-0.09108241],[0.0020572126,-0.12674253,0.022357568,-0.1565539,0.045776367,0.47296986,-0.17684759,0.25313404,0.09111438,-0.07021955,-0.0518055,-0.12567686,0.21444373,-0.33187112,0.19476555,0.06619808,-0.21118708,0.023201488],[-0.00025779597,-0.35387865,0.012450542,0.14741261,-0.269924,-0.45123708,0.7130625,0.1300766,0.10266559,-0.19306725,-0.058982134,-0.36948946,0.1953737,-0.29075292,0.22910224,0.15611844,-0.11712315,0.058328316],[0.051375203,0.31793782,-0.14423588,-0.0068918834,-0.18315102,0.5918731,-0.28164175,-0.20071678,0.069824845,-0.020674566,-0.11778088,0.17801747,0.2703763,-0.2515284,0.2291236,0.0033097556,-0.43070522,0.29516613],[-0.4140676,0.39011925,0.14862205,-0.13030078,-0.52621514,0.5111128,-0.45828196,-0.27297536,0.23763113,0.3718947,-0.14322172,-0.21290484,0.089274585,0.020155977,0.22360091,-0.28303128,0.13209493,-0.042907283]],"activation":"σ"},{"dense_2_W":[[-0.31453168,0.033921305,0.70444196,-0.58351177,1.0959978,-0.66988647,-0.85257435],[-0.5903374,-0.44103688,-0.70230186,-0.0026794649,-0.34333006,0.5302745,0.918816],[-0.42183512,0.05530731,-0.5427745,0.69254327,-0.8815986,0.44960234,0.30365023],[0.122158416,0.16294368,0.63959545,-0.7836469,0.68446577,-0.47389457,-0.62848955],[0.901804,0.7217306,0.10951365,-0.3829389,0.87658155,0.29891163,-1.3996044],[0.031781312,-0.5354891,-0.7041477,0.31751466,-0.53644896,-0.15998416,-0.16574423],[-0.27697673,-0.28073364,-0.78330237,0.573196,-0.13137478,0.6830283,0.03175229],[-0.045285385,-0.5539421,-0.31835833,0.24435757,-0.6752784,0.5702699,0.70634973],[-0.20699495,-0.047943812,-0.558686,-0.11867195,-0.74516237,0.6060502,0.89396],[0.0669213,0.109555185,0.32660756,-0.73635364,1.029282,-0.38516814,-0.6496012],[-0.41036522,-0.10196122,-0.14805846,0.57442135,-0.6432521,-0.083222605,0.0065267035],[-0.006969785,0.23751916,0.84181625,-1.1058564,0.46725896,-0.6190618,-0.36652294],[0.21793355,0.290169,-0.93023765,0.36604545,-0.7807498,-0.17316261,0.07708634]],"activation":"σ","dense_2_b":[[-0.05177098],[0.037132636],[-0.06423338],[-0.10677436],[0.0036231237],[-0.19121082],[0.053780135],[0.007149082],[-0.021132331],[-0.06560636],[-0.013925233],[-0.20192423],[-0.011626902]]},{"dense_3_W":[[0.14344205,-0.07113653,-0.17046611,-0.59838146,-0.6294641,0.12431688,0.82706773,-0.054024965,0.0036742366,-0.16770674,-0.1288102,0.16114827,-0.18475987],[-0.47564578,0.31864712,-0.14267874,-0.3570462,-0.20744337,0.4933738,0.0050251503,0.44604447,0.3714721,-0.20655935,0.15740293,-0.67137367,0.5913701],[-0.7149089,0.7454441,0.5369203,-0.662988,-0.48257586,-0.2050814,0.18968539,0.2163754,0.17718616,-0.6017345,0.3639053,-0.034539547,0.3536264]],"activation":"identity","dense_3_b":[[0.16334216],[0.029995969],[0.03828924]]},{"dense_4_W":[[0.055147056,0.6825625,0.9658336]],"dense_4_b":[[0.03797484]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019 b'xf1x00AE MDPS C 1.00 1.04 56310G7301 4AEEC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019 b'xf1x00AE MDPS C 1.00 1.04 56310G7301 4AEEC104'.json deleted file mode 100755 index a14217fff8..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019 b'xf1x00AE MDPS C 1.00 1.04 56310G7301 4AEEC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.365931],[1.0053464],[0.48621035],[0.040902473],[0.9949335],[0.999163],[1.0026134],[0.99977523],[0.9919684],[0.97725195],[0.96077615],[0.04045883],[0.04060025],[0.040737074],[0.041246798],[0.04151738],[0.041603032],[0.041438416]],"model_test_loss":0.007651639170944691,"input_size":18,"current_date_and_time":"2023-08-07_05-59-00","input_mean":[[21.148514],[0.04878841],[-0.0029595776],[-0.042372182],[0.047377028],[0.048310757],[0.04831951],[0.046471857],[0.041722726],[0.038647328],[0.0400284],[-0.04253156],[-0.042471983],[-0.042429984],[-0.0424216],[-0.042509023],[-0.042691946],[-0.04297347]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.121761754],[-0.005262723],[-0.42553833],[-1.4800751],[0.39852682],[1.5660636],[-0.2885766]],"dense_1_W":[[-0.0071449946,-0.22166711,0.040895086,0.074089214,-0.24226914,-0.60404766,0.008154148,0.5209098,-0.03358146,0.32940406,-0.45302716,-0.26397997,0.026462026,0.3500697,0.13830581,-0.30527312,0.16121124,-0.07390656],[0.0022779773,0.00796991,2.0393221,0.3221699,-1.7534194,-0.89475006,-1.0659475,0.77743155,2.5998273,1.7403948,-1.4950538,1.2407383,0.099073306,-0.1965835,-0.6947619,-0.5265118,-0.42691574,0.052154247],[0.051531065,0.33934996,0.028932936,0.09824733,-0.27226272,0.6414971,-0.57750374,0.04495341,0.12243749,0.48152295,-0.4014161,0.2573053,0.36582318,-0.2320656,-0.45263124,-0.529971,0.06477085,0.36134705],[-0.69859356,0.37024122,0.18599005,-0.6343367,0.048961602,0.64901793,-0.014536332,-0.35943583,0.07028741,-0.49705738,0.3390023,-0.11667915,0.26095447,-0.13361779,0.18741582,0.45414707,0.04516702,-0.18339908],[-0.0724652,-0.03210611,0.0017774315,-0.021023385,-0.18996063,1.0227648,-0.6022702,0.09638655,0.004159916,0.11472787,-0.03836134,0.4005762,-0.29560152,-0.45276555,0.22651882,0.16092128,0.03422194,-0.106695466],[0.6899316,0.14993052,0.1758256,-0.60796994,-0.1518822,0.5145441,-0.05431888,0.17881271,0.05299809,0.14818904,-0.22618657,0.4235098,0.05817998,0.14069048,-0.5904664,0.058542084,0.4009274,-0.00811349],[-0.0029274654,-1.2603375,0.9620041,-0.3834267,0.5099088,1.114527,-0.28767705,0.72205675,-0.21023215,-0.49849328,-0.1329101,0.0074135163,0.32214153,0.15615329,0.093625374,0.092150904,-0.024664165,-0.09238503]],"activation":"σ"},{"dense_2_W":[[0.12002893,-0.17805395,-0.2880083,-0.38067022,0.12869482,-0.6071237,0.12071723],[-0.12379059,0.2787932,-0.35626152,0.121466,0.32586035,0.1355638,-0.45241648],[-1.130496,0.7352465,0.6112711,0.10642678,-0.08899688,0.04508099,-0.030892976],[0.67437845,0.13706607,-0.7985538,-0.17117155,-0.3313495,-0.3713848,-0.027845394],[-0.517497,-0.46660402,0.1784289,0.50726193,0.36130485,0.43994057,0.3730332],[-0.85701996,-0.3851742,0.50393444,0.33921102,0.42251298,0.54051745,0.14791974],[0.593431,-0.48125875,-0.015125809,-0.37809905,-0.25327942,0.48657876,-0.480061],[0.5388885,-0.7307186,-0.41774607,0.06747027,-0.86199886,0.08562353,0.24053545],[-0.09548584,0.04586038,-0.3076278,0.21206705,-0.670656,-0.5026032,-0.52725095],[-1.2665727,0.18871929,1.1413674,0.5228994,0.10997097,-0.34521362,0.120387435],[0.0748604,0.4996035,-0.0855786,-0.05275676,0.6006561,0.07183944,0.36708173],[-0.48888278,-0.7535756,0.3745485,0.6277024,-0.430217,-0.75581187,-0.6709151],[0.7400373,-0.59288275,-0.7235487,-0.15054081,-0.12360353,0.0075691734,0.16587299]],"activation":"σ","dense_2_b":[[-0.1345922],[-0.2812786],[-0.22687326],[-0.013213066],[-0.11886535],[-0.26479134],[0.110779524],[-0.022709124],[0.013283567],[-0.5753985],[-0.20628732],[-0.069668956],[-0.010791435]]},{"dense_3_W":[[-0.055820215,0.18302114,0.47397888,-0.44688433,0.5031685,0.2437073,-0.5109226,-0.6158206,-0.6161359,0.35794947,0.30956054,-0.39124405,-0.5219915],[-0.09907215,-0.4441128,-0.24953865,-0.61175,0.30950993,0.41822892,-0.2842331,0.23637499,-0.57602996,0.2360482,0.17507787,0.15714398,-0.16979274],[-0.4119329,-0.2348606,0.44085753,-0.46800396,0.37048897,0.27227882,-0.48144114,0.5093462,-0.5514392,0.020650176,-0.1336957,0.27199176,-0.15389821]],"activation":"identity","dense_3_b":[[0.08689549],[0.099912],[0.10019605]]},{"dense_4_W":[[1.2855291,0.25690037,0.18219778]],"dense_4_b":[[0.083643846]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2310 4APHC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2310 4APHC101'.json deleted file mode 100755 index c7fc30d6f5..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2310 4APHC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.9939313],[1.0528377],[0.5315027],[0.029189091],[1.0448871],[1.0467738],[1.0488317],[1.039207],[1.0235921],[0.9892058],[0.946193],[0.028987626],[0.029057996],[0.029122358],[0.029161116],[0.029061846],[0.028845914],[0.028680017]],"model_test_loss":0.005588449537754059,"input_size":18,"current_date_and_time":"2023-08-07_06-50-32","input_mean":[[18.301882],[0.08731057],[0.0127743315],[-0.015221847],[0.083781615],[0.084988184],[0.086485535],[0.08923056],[0.08884011],[0.083579615],[0.07677084],[-0.015187935],[-0.015199815],[-0.015214948],[-0.015418597],[-0.015619739],[-0.01592285],[-0.016167268]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10865636],[2.3342428],[1.9012878],[-1.0550975],[0.42597178],[-0.072197296],[0.13246399]],"dense_1_W":[[0.014873456,-0.6716018,0.030190289,0.05807356,0.1659468,-1.2892563,0.7523864,0.17761192,-0.1367714,-0.25312293,0.10743949,-0.86903024,0.38059515,0.36618868,-0.17938752,0.4116222,-0.04126272,-0.16534285],[0.5307081,0.70384896,0.17447057,-0.5299634,-0.1137985,0.66921306,-0.4550779,0.4195087,0.022407524,-0.011906744,0.01779598,0.31284544,0.12419175,-0.37242392,0.29023978,0.29320818,-0.03838816,-0.1365707],[0.49472126,-0.9217689,-0.16751769,0.2551346,0.4287786,-0.7115711,0.13987176,0.081955396,-0.10713988,-0.14384302,0.056155935,-0.41739097,0.31321964,0.18086141,0.07986471,-0.59072965,0.019683728,0.2156733],[-0.21605797,-0.0773706,1.8579228,-0.054307144,0.09962813,0.459771,-0.43688956,0.4817178,-0.11751329,0.24354506,0.048119925,0.15544271,0.5567847,-0.44885188,-0.071555234,-0.21245098,-0.12196474,0.1607481],[1.1639537,0.22229235,-0.0055136923,0.18512912,-0.31992313,0.6914639,-0.441095,-0.47246328,-0.17016385,0.31878585,-0.050539054,0.5196653,-0.45885605,-0.06979618,-0.6328351,-0.1972874,0.34543124,-0.029788537],[-1.2173545,0.1734982,-0.006638391,0.31715307,-0.49786195,0.5964912,-0.46224737,0.428369,-0.27108857,-0.47364435,0.28244984,-0.38170126,0.3462351,-0.040848292,-0.57324094,0.092280604,-0.33654806,0.22344877],[-0.023229493,0.6459344,3.563477,-0.027724274,-0.50558513,0.3390488,-0.7422579,-0.26814136,0.10699902,0.7712946,-0.27946892,0.16129833,0.41574493,-0.38143778,-0.21668792,0.08835417,-0.18336411,0.06490999]],"activation":"σ"},{"dense_2_W":[[-0.7401138,-0.33438444,-0.30976433,0.15630613,0.13618709,0.44008145,0.43946928],[0.3344595,-0.32618588,0.32839847,0.15315771,-1.035439,-0.41636187,0.18828368],[-1.6167084,-0.46759644,-1.9622544,1.1570694,-0.06380261,0.70214266,0.045398716],[0.7825211,-0.885754,0.5565485,0.076575294,-0.52415085,-0.30411518,-0.025386691],[0.8624213,-1.7385436,-0.08763568,-0.8164249,-0.70833945,0.5085741,-0.4101307],[-0.5877383,0.8294365,-0.3091808,-0.512284,0.39336714,0.38540366,0.5915022],[0.34969604,-0.36038882,0.58447695,-0.14356469,-0.0804361,-0.3685647,-0.3614559],[0.72681546,-1.4046979,0.05443059,-0.16271566,-0.34866697,-0.22142158,-0.74306345],[0.5620642,-0.3955179,0.833503,-0.054495268,-0.54243296,-0.229325,-0.19776875],[-0.4541713,0.9203334,-0.70482004,-0.301528,0.21780983,0.25789845,-0.045716804],[-1.002443,-0.6559031,0.046121206,0.037933722,0.035592597,-0.0741523,-0.62133527],[0.9827719,-1.4614758,-0.3133424,-0.52563715,-0.24086906,-0.17160659,-0.6464693],[0.83488077,0.028223112,0.78030294,0.04748862,-0.31935772,-0.51587915,-0.18742341]],"activation":"σ","dense_2_b":[[-0.13555096],[-0.32605985],[-0.35664767],[-0.10862631],[-0.2544254],[-0.043318216],[0.000725854],[-0.23828812],[0.10916386],[0.00066704256],[-0.21592386],[-0.24546382],[0.03496515]]},{"dense_3_W":[[-0.48865333,0.012070441,-1.1093414,0.37793216,0.106044106,-0.37514287,0.2380262,0.6363306,0.13366772,-0.5155996,0.35994524,0.29682592,0.7856256],[0.07205148,0.53575456,0.73853123,0.31763637,0.29280093,0.4034669,-0.43210915,0.1826047,-0.6585059,0.087924495,0.4158608,0.10441277,-0.53451645],[-0.5815711,0.5280911,-0.4214647,0.73003256,0.8056002,-0.8074712,0.11868743,0.352855,0.50734097,-0.23951167,-0.20682806,0.3864585,-0.0063988008]],"activation":"identity","dense_3_b":[[-0.0008838433],[0.05478047],[-0.09860168]]},{"dense_4_W":[[-0.43285844,0.1527011,-0.5464815]],"dense_4_b":[[0.096321255]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2510 4APHC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2510 4APHC101'.json deleted file mode 100755 index 946d3622da..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2510 4APHC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.562192],[1.1790692],[0.4002067],[0.04594392],[1.1686502],[1.1728791],[1.1756221],[1.1729841],[1.156941],[1.1271893],[1.0963595],[0.045839865],[0.045870736],[0.045898065],[0.045978826],[0.04594467],[0.045800198],[0.045554243]],"model_test_loss":0.004118586890399456,"input_size":18,"current_date_and_time":"2023-08-07_07-15-40","input_mean":[[23.066132],[0.057099603],[-0.01063407],[0.004261095],[0.062055044],[0.060667243],[0.058939908],[0.05526614],[0.05360945],[0.051924873],[0.05241744],[0.00427781],[0.0042802687],[0.00428003],[0.004243646],[0.0041739033],[0.0040482194],[0.0038935656]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10965323],[-0.052080173],[-0.1538397],[-2.384923],[-0.09352556],[0.0018890598],[2.3688684]],"dense_1_W":[[0.7755966,-0.2301085,0.06612401,-0.35135305,-0.36526012,0.6195271,-0.17558895,0.33820674,0.29887065,-0.27747476,-0.13994163,0.43222815,0.16581486,-0.0976609,-0.25181568,-0.47843766,-0.32353792,0.45968184],[0.7839898,-0.45771372,-0.06646608,0.0075052464,0.48982865,-0.43683746,0.25553277,0.032161202,-0.55129576,0.59574753,0.017138774,-0.6380152,0.14585742,0.4083551,0.21304548,0.6200874,-0.086530834,-0.21368058],[0.08205719,0.03429464,0.016315881,-0.12871714,0.07213858,-0.45993748,0.095523514,-0.11810924,0.06553878,-0.5675574,0.2978788,-0.1445707,-0.33768746,0.50254714,0.22325698,-0.1333724,-0.06763935,0.09734261],[-0.35377377,-0.43953004,-0.19076808,0.15645324,-0.23917644,-0.0014493754,0.17704272,-0.25057337,-0.78162295,-0.06046742,0.096349254,0.027729603,-0.36563933,0.80371153,-0.027431296,-0.2516018,-0.13851781,0.04337426],[0.00498448,0.8467486,3.7462854,0.1478785,-1.0097741,0.0915918,-0.5104059,0.09881933,-0.0863164,0.48782897,-0.091693185,0.5003006,0.5728494,0.21510558,-0.710957,-0.29564264,-0.25217718,-0.17932595],[0.037292775,0.549042,-0.020767516,0.042928286,-0.015053085,0.80091596,-0.5040608,-0.20316118,-0.30876288,0.18842556,0.16377552,0.7935661,0.03645923,-0.8193547,-0.08692827,0.11217417,0.064909056,-0.06385711],[0.35312757,-0.118093394,-0.19476774,0.5554578,0.1930753,-0.48555315,0.057567388,-0.7159381,-0.27626652,-0.37647247,0.20957941,-0.44620857,0.0002755669,0.58868754,0.10452296,-0.66695416,0.27288365,-0.14926693]],"activation":"σ"},{"dense_2_W":[[-0.19584657,-0.56228656,0.049819242,0.3356435,-0.8650626,-0.22927399,-0.7001092],[-0.08733842,-0.654029,-0.8732687,0.31039196,0.65217227,0.6601506,-0.9831877],[-0.28144318,-0.5611539,0.32681772,0.31215787,-0.44330865,0.008832871,0.37263072],[-0.09786935,-0.48769787,-0.69821197,-0.38688582,0.5728046,0.18644942,-0.7118146],[-0.8619828,0.0027679028,0.43955415,1.0463487,-0.69266444,-1.0750707,-0.07059785],[0.31811947,-0.2366228,-0.72350734,0.1262254,0.25636208,0.46176276,-0.34769687],[-0.69273907,1.5178095,0.8711242,-0.07443719,-0.69538844,-0.69129455,0.7530523],[0.3147337,-0.11657144,-0.8414669,-0.09644994,0.08891191,0.1703831,-0.6425643],[-0.3112073,0.35414124,0.11913388,0.3313928,0.11848869,-0.853674,0.47229782],[-0.60429984,0.27235946,0.7851893,0.31956023,0.6252034,-1.6533685,0.58046734],[0.41311583,-0.19508654,-0.0685557,-0.17002022,0.1134038,0.4991351,-0.3182844],[-0.8717183,0.66564476,0.12376991,1.2741002,-0.5322097,-1.1083273,-0.37658596],[0.67320377,-0.41162866,-0.042097807,-0.6380872,-0.46145105,0.875035,-0.52515566]],"activation":"σ","dense_2_b":[[-0.36951348],[-0.20310313],[-0.1163803],[-0.058099788],[-0.27018055],[-0.12597482],[0.15152946],[-0.2217294],[0.014968804],[-0.19001697],[-0.042399503],[-0.189941],[0.096105725]]},{"dense_3_W":[[-0.12309125,0.77507085,-0.3702677,0.4653985,-0.7352844,0.17442249,-0.20582232,0.52809495,-0.38240287,-0.38384795,0.35505968,-0.7694335,0.81513363],[0.49237758,-0.24538146,-0.54058105,-0.29702288,0.7292889,0.23451614,0.2204175,0.16993591,-0.58852774,0.5432413,0.13110612,0.1945469,-0.18632029],[0.40756968,0.5396459,-0.06640867,0.52895707,-0.22500473,0.5870712,-0.55817175,0.10517919,-0.51188445,-0.37411118,0.49139977,-0.56567246,0.21133785]],"activation":"identity","dense_3_b":[[0.039045013],[-0.05285484],[0.031891406]]},{"dense_4_W":[[0.4020106,-0.34673893,0.3534026]],"dense_4_b":[[0.032409564]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4000x00 4OEDC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4000x00 4OEDC104'.json deleted file mode 100755 index 62ea60b001..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4000x00 4OEDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9823537],[1.4029322],[0.5391447],[0.04887051],[1.3963706],[1.3995055],[1.4009825],[1.3885417],[1.3692048],[1.3372831],[1.2967274],[0.04857869],[0.048658866],[0.048733797],[0.04879035],[0.048757277],[0.04862833],[0.048260294]],"model_test_loss":0.00437383446842432,"input_size":18,"current_date_and_time":"2023-08-07_08-07-32","input_mean":[[21.874346],[-0.0005797015],[0.010789347],[-0.012909609],[-0.003366453],[-0.002296705],[-0.0016360051],[0.0021639771],[0.005118338],[0.0068367384],[0.008824422],[-0.012872645],[-0.012881624],[-0.012900158],[-0.013073698],[-0.013239728],[-0.0134497825],[-0.013658659]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.66749334],[-2.3284407],[-2.552216],[-0.51326174],[-0.16542026],[-0.78371996],[0.58516866]],"dense_1_W":[[-0.20467584,0.3742327,-2.1127253,0.4140109,0.20715296,-0.40205246,0.7444451,-0.40750897,-0.32128036,-0.10457273,0.029910121,-0.114483304,-0.17820649,0.09675455,0.15047672,-0.07704191,-0.08496522,-0.05037796],[-0.75994927,1.0465562,0.074481115,0.45544595,-0.099778585,-0.30777687,0.45363194,-0.26308686,0.34833267,-0.061779257,0.19875576,0.0100148255,0.026750173,-0.087523125,-0.44454777,-0.16642322,0.22628598,-0.020208687],[-0.79274124,-1.5697699,-0.0782978,-0.27417132,0.8103041,-0.113830596,-0.45296183,0.41277897,-0.14532241,-0.25087643,-0.024198774,-0.08969185,0.0901834,-0.2042583,0.41698653,0.31030753,-0.13242747,-0.111738786],[0.72596943,0.70769554,-0.0069162454,-0.1704995,0.033077016,-0.14304133,-0.018031847,-0.013690503,0.2569981,-0.08117829,-0.07157592,0.62022674,0.22071594,-0.22532593,-0.5013286,-0.37610313,0.016311774,0.18602486],[0.07123103,-0.7177917,2.071481,0.12931369,-0.08568253,0.006763331,0.5998342,-0.65402156,0.13034452,-0.1689963,0.48351094,-0.1429906,-0.4140654,0.6116886,-0.28543368,-0.3805712,0.27751157,0.042374272],[0.7390709,-0.30262133,0.007570949,-0.09976768,0.11671621,-0.57199293,0.060994264,0.17037009,-0.23032549,0.08530586,-0.033951357,-0.04542262,-0.36450365,0.41992882,0.061726227,0.15781905,0.02539049,0.070994005],[0.27319646,0.6453565,-1.9857005,0.5767287,0.21463604,-0.2138314,0.2007721,-0.25790113,-0.2563649,-0.000869855,-0.091922425,-0.72040427,0.13880335,0.62027377,-0.44047758,-0.050440025,0.25620586,-0.2074692]],"activation":"σ"},{"dense_2_W":[[-0.22115013,0.055372495,-0.6996138,0.5370589,-0.47052458,-0.651092,0.3839152],[0.42745695,-0.38167813,0.14885446,-0.37276337,-0.05345867,-0.013708567,-0.3856122],[0.12907071,-0.54699695,0.39133784,0.2088913,-0.28036752,-0.3084716,0.032560136],[-0.5054007,0.7835044,-0.44982964,-0.23468708,0.12779902,-0.1858994,-0.6199746],[0.045793723,0.039428864,-1.0686759,0.91881555,-0.108995505,-0.029487936,-0.21528293],[0.19056086,0.6597351,-0.8134895,0.018328965,-0.45527688,0.03831411,0.214237],[0.31016105,-0.1720769,0.6232735,-0.0155809345,0.04817505,0.15304431,0.10533786],[-0.42903107,-0.13552563,-0.09239265,0.4200264,-0.4343141,-0.47912154,-0.39496207],[0.20956168,-0.2317832,0.21835831,-0.16000728,0.49696466,0.14894594,0.57515436],[-1.595405,0.8692183,1.0247264,-0.9062122,0.17050256,-0.7897474,-0.94245416],[0.51542455,0.5987507,-0.84974045,0.5130476,-0.10149645,-0.5025105,-0.49863508],[0.604559,-0.26422802,-0.07353111,-0.7784861,0.42281657,0.66297257,-0.4316652],[0.08229692,0.19338071,0.0894164,-0.5593924,0.03616016,0.012567026,-0.30123827]],"activation":"σ","dense_2_b":[[-0.056233797],[-0.0057250382],[-0.21214126],[-0.011911729],[0.085418984],[-0.15823714],[-0.06585213],[0.00472772],[-0.017725466],[-0.118805535],[0.026983896],[0.005067724],[-0.005340161]]},{"dense_3_W":[[0.22465749,-0.015047881,-0.32157594,0.1449359,-0.06417016,0.21772367,-0.12643653,0.51667756,-0.28002724,-0.052840073,-0.21226676,-0.3199402,-0.088716716],[0.38327125,-0.26344195,-0.22620219,-0.37501743,-0.12782073,-0.17671679,-0.0013878844,-0.39273772,0.29493284,-0.15408261,-0.6016259,0.6571256,0.38118032],[0.5750975,-0.63398695,0.040233657,0.29500204,0.55213654,0.23952343,-0.20580381,0.39102614,-0.5990083,0.6517685,0.48111153,-0.4062521,0.022178443]],"activation":"identity","dense_3_b":[[-0.025877675],[0.030203432],[-0.03420004]]},{"dense_4_W":[[0.7982145,-0.41420195,1.1245165]],"dense_4_b":[[-0.03153333]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4050x00 4OEDC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4050x00 4OEDC104'.json deleted file mode 100755 index bb7fd89979..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4050x00 4OEDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.2050185],[0.9195626],[0.5246053],[0.026908562],[0.9114053],[0.91469693],[0.9157698],[0.9051642],[0.89098597],[0.8697803],[0.84026057],[0.02667492],[0.026759142],[0.026839804],[0.02711494],[0.027168302],[0.027056737],[0.02683038]],"model_test_loss":0.012174735777080059,"input_size":18,"current_date_and_time":"2023-08-07_08-31-57","input_mean":[[17.967325],[0.011739178],[0.026453309],[-0.011081186],[0.0075463396],[0.009542315],[0.011502368],[0.022000773],[0.02539335],[0.027365072],[0.028902],[-0.011176858],[-0.011109888],[-0.0110546965],[-0.010866341],[-0.010897031],[-0.011053293],[-0.011188322]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.07830097],[-0.106249824],[0.012656421],[-0.7821596],[-4.5630274],[4.243537],[-0.025950456]],"dense_1_W":[[-0.0061698896,0.9194918,-0.00018699981,-0.34165612,-0.23813021,0.5475082,-0.3704561,-0.42950627,-0.13424502,0.21240903,-0.011586605,1.1467392,0.22920804,-0.97056633,-0.19121549,-0.14086221,0.1938753,0.06405196],[-0.017454816,0.94919956,-1.7687415,0.4144439,0.8393141,-0.34053108,0.591435,-1.1978676,-0.8482392,-0.29364696,0.25886354,-0.35653427,-0.13556425,0.47442123,-0.4813972,-0.018155526,0.33277246,-0.18364869],[-0.040766764,0.3978997,-1.3777528,0.16677733,-0.3166893,0.5034032,-0.571129,0.6231584,0.10250656,-0.090288945,-0.61956155,0.77258164,-0.37414613,-0.29708913,-0.17747499,0.037844185,-0.56138355,0.47048673],[0.008608961,0.64667994,0.023636322,0.044800144,-0.5491374,0.11336454,0.20036654,0.08956678,-0.33463073,0.093234874,-0.018535366,0.532879,-0.23179846,-0.06182031,-0.34088808,0.03265121,-0.2914414,0.30612496],[-1.8624474,-0.19170734,-1.0794584,0.2858776,-0.1582014,-0.25510505,-0.03886111,-0.35928875,-0.14603446,-0.5926313,0.2556083,-0.33798292,0.021711705,0.8842171,-0.400223,-0.5245886,0.14859252,0.14324439],[1.9104458,-0.11458521,-1.0961788,0.19383249,-0.31420794,-0.17993532,0.25383317,-0.7584393,-0.2644037,-0.38957348,0.24189566,-0.5495086,0.5854412,0.56651443,-0.59044236,-0.0595582,-0.07797032,0.15840146],[0.0036954198,0.69409066,-0.012849071,0.46628892,-0.17679054,0.4750851,0.1464102,-0.27525088,0.07638812,-0.2049708,0.18918438,-0.12693706,0.07179836,-0.335187,-0.066388905,-0.20065263,0.34333003,-0.1499994]],"activation":"σ"},{"dense_2_W":[[-0.13210453,0.08910437,0.112129636,-0.6724287,0.32233343,-0.38829568,-0.6956729],[-1.2644566,1.0245068,-0.37191963,-0.15572028,0.32260516,-0.31606585,-0.22227848],[-0.03247183,-0.47341025,0.4291947,0.39933267,0.13988854,-0.39599544,0.55437887],[-0.90225273,0.96759653,-0.16322282,-0.085484885,0.7531134,-0.113716386,-0.94529647],[0.48373836,-0.3832921,0.46859494,-0.18692574,-0.41694966,-0.53875446,0.5226155],[-0.67205244,0.7038471,0.22241417,-0.48700184,0.42653432,0.7408016,-0.48191002],[-0.45786425,-0.30025077,0.2096484,-0.34739977,-0.48270205,0.44449425,-0.16691647],[-0.7252935,0.30027175,-0.36952794,-0.33110753,0.74412864,0.31916663,-0.48723075],[-0.24956082,0.15855722,0.11829418,-0.35178453,0.20442583,0.10315542,-0.5577277],[0.60572875,0.15592562,0.2794675,0.13093506,-0.44617447,-0.35550103,-0.050321754],[-0.3681325,-0.061035957,-0.2969062,-0.47592452,0.4287097,0.3534037,-0.18543088],[-1.0721568,0.7378009,-0.9598528,-0.12334156,0.38073373,-0.10097934,-0.232853],[0.04294625,-0.63974065,0.42062205,-0.42591855,-0.27762684,0.15938188,-0.47567785]],"activation":"σ","dense_2_b":[[-0.30254075],[-0.22242764],[-0.022691285],[-0.24312088],[-0.06020819],[0.030239394],[-0.026921261],[0.007865209],[-0.22096242],[-0.037584588],[-0.26260158],[-0.1736811],[-0.039475847]]},{"dense_3_W":[[0.25513327,0.070872426,-0.110507585,0.3759061,0.35881704,0.3910026,-0.6006786,-0.03306147,0.493357,-0.46323946,0.03671056,-0.21105683,-0.39182687],[-0.43874225,-0.18637833,0.6820224,-0.62881595,0.27813682,-0.48058766,-0.5119805,-0.54016674,0.04924179,-0.08472005,0.53560334,-0.2701661,0.002975206],[-0.32438537,0.13052621,-0.6701673,-0.32776773,-0.35359666,0.3229217,-0.29717216,0.11487679,-0.066415556,-0.12536126,0.4941659,0.1786442,0.120943174]],"activation":"identity","dense_3_b":[[-0.036048852],[0.051064212],[-0.037224863]]},{"dense_4_W":[[-0.5492757,1.0810244,-1.2183135]],"dense_4_b":[[0.040853735]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020 b'xf1x00OS MDPS C 1.00 1.00 56310CM030x00 4OHDC100'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020 b'xf1x00OS MDPS C 1.00 1.00 56310CM030x00 4OHDC100'.json deleted file mode 100755 index 89f76fc1e7..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020 b'xf1x00OS MDPS C 1.00 1.00 56310CM030x00 4OHDC100'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.320636],[1.4672288],[0.555081],[0.033456076],[1.4485593],[1.454114],[1.4598106],[1.4775645],[1.4885659],[1.5030168],[1.5086156],[0.033279758],[0.033330515],[0.03337976],[0.03357182],[0.03373127],[0.033942096],[0.034174994]],"model_test_loss":0.0034313653595745564,"input_size":18,"current_date_and_time":"2023-08-07_09-47-01","input_mean":[[16.719969],[-0.34553456],[-0.025382733],[-0.0116697345],[-0.3357296],[-0.33838782],[-0.34124425],[-0.34988672],[-0.35434204],[-0.36063692],[-0.36771125],[-0.01169898],[-0.011674334],[-0.01165932],[-0.011694122],[-0.011704462],[-0.011737361],[-0.011825235]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.12625436],[-0.030992975],[1.7781299],[0.1869105],[-1.89145],[0.008262398],[0.07576191]],"dense_1_W":[[0.009522326,-0.5508854,-0.03136063,0.029506687,-0.05980197,-0.63274986,0.97521657,-0.13758267,-0.011687601,0.08580122,-0.079591334,-0.6555507,0.22438921,0.28736886,-0.12301472,0.2645947,0.49559113,-0.4847965],[-0.018401735,0.37491256,0.0038027354,-0.07964615,0.38655296,0.3701792,-0.5896364,0.00059126964,0.04474745,0.26934335,-0.16293159,0.21059878,0.50954914,-0.18871093,-0.7607577,-0.2164596,0.43915057,-0.026766567],[0.9350977,-0.71919394,-0.3546374,0.20745265,-0.13460818,0.039738543,0.40334892,-0.07613035,0.030847827,0.008619683,0.08559006,0.15181334,0.12347329,-0.15474145,-0.24624701,-0.25018868,-0.195366,0.33170772],[-0.012065977,-0.27186581,0.051803753,0.2872634,0.20535347,-0.2876118,-0.20237778,0.08967258,-0.22776744,-0.11768601,0.09860908,-0.26557824,-0.34911528,0.6094111,0.072002344,-0.28330874,-0.15977615,0.20908129],[-0.94839776,-0.4837727,-0.37379816,-0.36139977,0.24034177,-0.30601895,0.071798995,-0.08959876,0.05900306,0.09905,0.025198964,0.03703683,0.15677285,0.38272214,-0.23764542,-0.28992912,0.1327766,0.1434804],[0.008056818,0.38128582,2.9280443,0.1751433,-0.3785394,-0.18362774,-0.77038676,0.3448695,0.30613825,0.60532063,-0.16727439,-0.08651086,-0.08615892,0.21958824,0.027262067,-0.003296754,-0.5401621,0.18965037],[1.0339775,0.45337832,-0.015582236,-0.0063054073,0.056368716,-0.30668864,-0.02802569,-0.19660905,0.43840367,-0.17627239,-0.030975454,-0.057090487,0.306885,-0.24460675,-0.060861766,0.19225666,-0.3149098,0.15006702]],"activation":"σ"},{"dense_2_W":[[0.6902859,-0.6393492,-0.44761193,-0.3838106,0.4084184,-0.509032,0.4051396],[-0.22254738,-0.08053956,-0.18914244,0.13284113,-0.6440283,-0.17699161,0.3351629],[-0.67853475,-0.18324746,-0.8725586,0.063068196,-0.50468117,0.4416853,-0.718201],[-0.21037722,0.026921168,-0.9217467,-0.5199083,-0.1263664,-0.42184907,0.10097415],[-0.4352312,0.13832696,-0.9440917,-0.61247665,0.11328457,0.5671792,-0.52296823],[0.39174297,-0.09831927,0.28159302,0.31369746,0.10481584,0.09035183,0.13667637],[-0.24003993,0.57464117,0.012518535,-0.31918442,-0.2873576,-0.105834864,0.13482167],[-0.1323263,-0.07528578,0.03620373,0.1001147,-0.34535193,0.2595585,-0.05328041],[-0.6540329,0.5568342,-0.3725302,-0.6058455,-0.09868532,-0.8560664,0.4088728],[-0.072663926,0.43851793,0.17612897,-0.22449215,-0.7815626,-0.23553626,0.42175516],[0.036100484,-0.17945322,0.7347332,0.62554735,-0.22215228,-0.49261123,-0.0353556],[0.4271888,-0.74014676,-0.46194273,0.3661966,0.7197653,-0.4986745,-0.6228453],[0.36488712,-0.13825116,-0.48768026,0.5608169,0.323051,-0.027168993,0.07831102]],"activation":"σ","dense_2_b":[[-0.027757965],[-0.016351482],[-0.024558742],[-0.085644595],[-0.046783354],[-0.07285203],[-0.0006671193],[-0.05067625],[-0.016443914],[-0.020814378],[0.03668154],[-0.20516597],[-0.048601683]]},{"dense_3_W":[[0.32911223,-0.26069397,-0.043751866,-0.48354477,-0.07570592,-0.33116663,-0.4901479,-0.13365264,-0.6457748,-0.36664736,0.58490235,0.1868273,-0.45664176],[-0.34076023,0.24871762,0.6651098,-0.2161779,0.12477483,0.10071758,0.59505385,-0.081202336,-0.16617194,0.083364025,-0.6090697,-0.2990762,0.18049675],[0.35747406,-0.3925092,-0.20388703,-0.22220151,-0.6932658,0.40903154,-0.59456044,0.10416559,-0.23720811,-0.17813742,0.5602839,0.33316627,0.6221551]],"activation":"identity","dense_3_b":[[0.03296679],[-0.010274947],[0.0053764265]]},{"dense_4_W":[[-0.38123104,0.6776871,-1.0605929]],"dense_4_b":[[-0.008991764]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103'.json deleted file mode 100755 index bc74f44fbe..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.175346],[1.2147926],[0.40956834],[0.043589003],[1.2094305],[1.2120428],[1.213341],[1.1980789],[1.1770303],[1.1413853],[1.096605],[0.043463618],[0.043503705],[0.043532778],[0.043430444],[0.043218896],[0.04280715],[0.04230417]],"model_test_loss":0.007078256458044052,"input_size":18,"current_date_and_time":"2023-08-07_10-44-09","input_mean":[[23.77826],[0.042549085],[0.0008366095],[-0.004325034],[0.041777823],[0.04188725],[0.04202964],[0.04286655],[0.041103654],[0.037775554],[0.035643935],[-0.0043570427],[-0.0043655117],[-0.0043805246],[-0.004415017],[-0.004466785],[-0.004567743],[-0.0046552946]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.965341],[-1.3328798],[2.873564],[0.35027432],[0.6997454],[-0.21583362],[-0.27257147]],"dense_1_W":[[-0.47184834,-0.69497913,-0.2730397,-0.13578247,-0.41297266,-0.36849588,0.45024145,-0.2319935,-0.30260193,-0.15122801,-0.51926386,-0.45438546,0.07730465,0.5861091,-0.020928165,0.48080453,0.056900945,0.042121172],[0.59712833,-0.7607585,0.026460258,0.32494903,-0.122338474,-0.1373476,0.071163654,0.1314587,-0.12158134,-0.2506838,0.13905102,-0.7858368,-0.19018257,0.18298808,0.830341,0.3877357,0.040660307,-0.34048963],[0.4699344,-1.0309892,-0.29336283,-0.13386539,-0.38560688,0.13875784,0.310352,-0.46929145,-0.19158518,-0.39478084,-0.32203192,-0.44451842,-0.03810472,0.13355829,1.0309442,0.12171281,0.06862913,-0.056783624],[-0.31507948,0.88658756,3.0891764,-0.016361725,-0.46861553,0.06094547,-0.7714304,-0.1749589,0.7333911,0.28544956,-0.52014995,0.7543131,-0.18914306,-0.438352,-0.09483591,-0.10935197,0.06640237,0.10865169],[-0.6810932,-0.62288636,3.2094796,0.23221104,-0.025693255,-0.024708634,0.39303362,0.26580834,0.01109397,-0.008134186,-0.011310946,-0.16316406,-0.22316264,0.030972356,0.5338975,-0.17917001,0.2126686,-0.2364076],[0.11154792,0.45386994,-0.0020048814,-0.13927853,0.20206624,0.26231214,-0.5960362,0.5244008,0.074492626,-0.26563543,0.07578456,0.25490692,0.20137514,-0.46869782,-0.06294161,0.13251714,-0.106802404,-0.038976945],[0.04923776,-0.56570596,-0.023485426,0.31115237,-0.015669545,-0.54184866,0.43453303,-0.05844923,-0.059031844,-0.3202865,0.20897299,-0.4897307,-0.5586684,0.590096,0.2163083,0.06288182,-0.15607044,0.043854684]],"activation":"σ"},{"dense_2_W":[[0.6042513,-0.41607365,-0.15501793,-0.9058375,0.494895,-0.5677933,-0.19259822],[0.24214138,0.89813733,1.3278699,-1.0037,-0.27477452,0.15186948,0.82211167],[-0.4369761,-0.27131867,-0.46790847,0.4080189,0.12101331,0.57774526,-0.6197042],[-0.3105224,0.19357671,-0.5197163,-0.1386291,-0.3751452,0.76656866,-0.42951363],[0.4263876,-0.19077252,-0.45208168,-0.2320784,0.2086758,-0.11445575,-0.5586836],[0.1574424,-0.08930149,-0.025565622,0.11400002,0.07183162,0.33150333,-0.67951137],[-0.00696618,0.02959456,-0.30796584,0.09413716,-0.016803082,-0.2540206,-0.64932644],[-0.478996,-0.22900066,0.17936084,0.51007396,-0.27805895,-0.19075584,0.362384],[0.011149391,0.36451602,0.42717254,-0.2344727,0.6348016,-0.77200013,-0.15786803],[0.43334863,-0.38772285,-0.4590563,0.33910498,-0.32742906,0.5451967,-0.672129],[1.9660255,0.25045738,-0.2614816,-1.1789049,0.25753427,-1.7329595,0.075383596],[0.80854565,0.44739807,0.09770806,-0.48315546,-0.13119374,-0.7300847,0.13286975],[0.11956496,-0.28744987,0.3014693,-0.28274173,0.52113587,-0.47521448,0.35999197]],"activation":"σ","dense_2_b":[[-0.1408794],[-0.06288287],[-0.012260787],[0.08074568],[0.02582188],[0.002878733],[-0.238239],[0.022335405],[-0.08137566],[0.048318516],[-0.48222473],[-0.11309628],[-0.17126083]]},{"dense_3_W":[[0.5729494,0.443129,-0.5894581,-0.52491343,-0.10086044,-0.36603114,0.09061523,-0.0777708,0.45014396,-0.44782442,0.61933756,0.6175609,0.5284045],[0.60463345,0.24479416,-0.64297765,-0.64166015,0.07398127,-0.23124957,0.013111015,-0.58013326,0.60139996,-0.5977943,-0.31441298,-0.034418926,0.5766632],[-0.41230297,0.0819272,0.021512562,0.40312076,0.5106018,-0.0969059,0.306975,0.06700377,-0.34809703,0.48136255,-0.21470276,0.09597008,0.49942]],"activation":"identity","dense_3_b":[[-0.04435611],[-0.025747824],[0.027492581]]},{"dense_4_W":[[-0.851287,-0.29851007,0.48474476]],"dense_4_b":[[0.038550936]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104'.json deleted file mode 100755 index 4e0dfca188..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.056006],[1.4101361],[0.41225532],[0.045771565],[1.4047778],[1.4076663],[1.4089199],[1.3933164],[1.3716278],[1.3344857],[1.2923727],[0.04557442],[0.045628536],[0.045675997],[0.045730982],[0.04567293],[0.04542135],[0.045018636]],"model_test_loss":0.00867381040006876,"input_size":18,"current_date_and_time":"2023-08-07_11-10-56","input_mean":[[25.56377],[-0.052645843],[-0.0035276904],[-0.013127003],[-0.051226523],[-0.05180752],[-0.052373447],[-0.05199156],[-0.051400427],[-0.052954886],[-0.052905556],[-0.013169344],[-0.013158662],[-0.0131510245],[-0.013154536],[-0.013176389],[-0.013252023],[-0.013282005]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.68120617],[-1.2007718],[-0.50614536],[0.7864571],[1.8299532],[0.14825825],[-0.015340148]],"dense_1_W":[[1.1199652,-0.078471795,-0.02101174,0.3584074,0.17968981,-0.19903003,0.12223812,0.18867153,-0.1669939,0.012081453,-0.10156123,-0.16801898,0.13951854,-0.04682727,0.040429268,-0.04173933,0.19039303,-0.07381891],[-0.18552107,-0.63688856,-0.02137382,0.20457703,-0.29974234,-0.55259144,0.45336398,-0.021133235,0.01901811,-0.37169448,0.13456118,-0.3071185,-0.22914943,0.61524135,-0.27383205,-0.1330443,0.14043514,0.08927942],[0.1926113,-0.27000305,-0.008649953,-0.21855511,-0.030888382,-0.16513677,0.39715445,-0.30844018,-0.017153203,0.093351975,-0.012528175,-0.35072303,-0.10748886,0.113659255,0.49542776,0.28211826,0.23563762,-0.4190026],[0.9724377,0.5390427,0.01619258,-0.3782754,-0.13919044,-0.18610589,-0.25080666,0.039643906,-0.23925631,0.45390597,-0.16189374,-0.15735695,0.32372928,-0.49280795,0.13093178,0.40426654,0.30928588,-0.4606705],[0.31533858,-0.32204363,-0.031351704,0.25225377,-0.6184541,0.012579387,-0.013788457,-0.2484758,-0.38601685,-0.37180173,0.30587637,-0.41104367,-0.06381989,0.28475899,-0.11201605,0.15005648,-0.02408876,0.070196375],[-0.05559003,-0.57731414,0.0009183374,-0.15830034,0.32752046,-0.47376716,0.32692105,-0.028732348,-0.3711419,0.3037169,0.026518416,-0.16056052,-0.086504,0.080008745,0.2828945,-0.017448967,-0.06945115,-0.020946816],[-0.01733753,0.7237506,3.472701,0.27271795,-0.40486532,0.056092504,-0.24601175,-0.052139923,0.16743213,-0.068572104,-0.00896937,0.2883757,0.5440398,-0.29913893,-0.3024588,-0.5673238,-0.2726739,0.35933533]],"activation":"σ"},{"dense_2_W":[[-0.5932156,-0.17436917,-0.86359346,0.32812464,-0.7771405,-0.2133228,0.42944756],[-0.21486568,0.017540466,-0.3076961,-0.040222447,0.12777315,0.01670594,-0.72814006],[0.037832227,-0.3021096,-0.43493658,0.2691959,0.002386393,-0.90290415,-0.8527598],[-0.05667615,0.4105785,0.43791267,-0.66102684,0.19379678,0.0034966974,-0.63614714],[-0.24539289,-0.2868011,-0.971667,0.74372065,0.0054125004,-0.70493174,-0.27502376],[0.22307737,1.1438144,0.48204678,-1.34653,-0.48455057,0.64900017,-0.72665155],[0.47112092,1.0107919,0.5427512,-1.2793072,-0.42651054,0.5067852,-0.5551137],[-0.7673742,-0.6745484,-0.99198294,-0.41266263,-0.4100962,-0.174795,0.5818804],[0.0852762,0.18207242,0.8183619,-0.5843856,1.0058954,0.18574238,0.08424301],[-0.08769919,0.5601262,0.5962264,-0.0019132155,0.8132487,0.6793232,0.17075731],[-0.7578988,-0.79018444,-0.47751963,0.36069503,-0.040583238,0.050442085,0.2954631],[-0.4815163,-0.32178232,-0.15335134,0.6915401,-0.60536283,-0.56515604,-0.20786098],[0.2656557,0.9920723,0.4726771,-1.0218889,-0.14299747,0.23651631,-0.15890613]],"activation":"σ","dense_2_b":[[0.026248137],[-0.44299766],[0.043020185],[-0.44655073],[0.21503547],[-0.51649547],[-0.52930456],[0.09336591],[-0.2554213],[-0.28878778],[0.1169097],[0.3210494],[-0.4154725]]},{"dense_3_W":[[0.41299453,-0.066272356,0.33743006,-0.20297222,0.3149677,-0.66625124,-0.47435388,0.87357444,-0.46995607,-0.6577897,0.6913372,0.8391053,-0.41768512],[0.21756826,-0.04198229,-0.34622204,-0.077409394,0.36491418,0.34946445,-0.16554481,0.25513986,-0.21913688,-0.49385577,-0.107037865,0.13471128,0.3483314],[-0.65252286,-0.4097913,0.49876347,-0.57664716,-0.16723605,-0.40482098,-0.10828655,-0.3436007,0.1842379,0.20728882,-0.73673856,0.11894116,0.22566953]],"activation":"identity","dense_3_b":[[0.09075453],[0.16417536],[-0.034160458]]},{"dense_4_W":[[1.3366597,0.032031875,-0.25315842]],"dense_4_b":[[0.08058132]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104'.json deleted file mode 100755 index f115f5f8a5..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.973073],[0.95391583],[0.41054899],[0.04000471],[0.948944],[0.9501768],[0.9511314],[0.94470316],[0.9386586],[0.9273338],[0.9128515],[0.039655894],[0.039748702],[0.039835606],[0.040048752],[0.040042162],[0.039870463],[0.039569415]],"model_test_loss":0.006820903159677982,"input_size":18,"current_date_and_time":"2023-08-07_11-35-32","input_mean":[[25.87563],[0.03444932],[-0.005718268],[-0.0067776064],[0.035757456],[0.034977943],[0.03397304],[0.032574583],[0.033818536],[0.035891917],[0.03648409],[-0.0067452686],[-0.0067759207],[-0.0068118596],[-0.0069498047],[-0.0070627993],[-0.0072338316],[-0.0074106893]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.29337177],[0.66558135],[1.4415557],[-0.5266783],[0.16447654],[-0.10947574],[-0.06639086]],"dense_1_W":[[0.005461846,0.3028855,-0.9854084,-0.36890888,-0.53238684,0.52668965,-0.25776407,0.22581728,0.46904722,-0.04119145,-0.3861126,0.05695158,0.46752244,-0.22415254,0.03926628,-0.30610013,0.33170545,-0.08449963],[0.22456734,0.3669208,-0.0028302418,0.03447742,0.23297563,0.29559872,-0.5093176,0.085083686,-0.2612917,0.48527485,-0.1594518,-0.00450076,-0.21800643,0.43129826,-0.35478443,0.33027887,-0.5035417,0.14951973],[0.49297655,0.15207167,-1.0634992,0.11992674,-0.119991384,-0.032969154,0.3350461,-0.05330331,0.2389221,-0.31744695,-0.019832905,-0.011234121,-0.19565247,0.27552214,-0.02907322,-0.20475934,-0.27375516,0.22658962],[-0.2927863,-0.25061154,-0.86077774,0.38277695,0.46133354,-0.24130213,0.49445266,-0.30399632,-0.16158967,0.27781072,-0.081007525,-0.2356671,-0.027503187,-0.046890937,-0.062831424,0.13332452,-0.20753789,0.0064896126],[0.14027123,-0.31178385,0.00042652222,0.046416104,-0.06375891,-0.7625973,0.49403247,0.08477962,0.19782965,0.06535667,-0.2237524,0.00016943947,-0.4144055,0.47161788,0.22153234,-0.3320155,-0.17704901,0.29443938],[0.038497016,-0.37529072,-0.0028597962,0.108154766,0.060559765,-0.06721315,0.19045271,0.049022302,-0.2868929,-0.24597946,0.20001437,-0.54507667,0.13740665,-0.09072125,0.15628168,0.4834033,0.5418541,-0.52194417],[-0.084147945,0.7816322,3.3733516,-0.17901123,-0.5475804,0.13706692,-0.5615205,0.06558603,-0.15445961,-0.041518424,0.07307288,0.54342633,-0.091437295,-0.04500106,-0.18742481,-0.11182337,-0.32038802,0.37347284]],"activation":"σ"},{"dense_2_W":[[-0.33089092,-0.22617778,-0.2098423,0.464438,0.4536977,0.6569846,-0.11208219],[0.42292553,0.72667843,-0.3986618,-0.48419535,-0.89743257,-0.45015466,-0.03912514],[0.15107515,0.95479184,0.40600297,-0.19311583,-1.0210984,-0.8584778,0.5974732],[0.0047267857,0.15918939,0.07144057,-0.35448834,0.637432,0.184555,0.18535456],[-0.12454911,0.29654753,-0.34574932,0.34942415,-0.26024386,0.44442993,0.14613877],[-0.37099168,-0.5386991,-0.3271315,0.54532915,0.6926416,-0.17912938,-0.6608735],[-0.63072056,-0.3643776,0.64305526,-0.29544187,0.7246565,0.56209284,-0.16261125],[-0.04684182,0.7014187,0.08467743,-0.5152171,-0.0669242,-0.09466255,0.2614267],[1.1972748,0.91310155,-0.61666393,-0.3711597,-1.1699697,-0.8451692,-0.5264526],[-0.17695586,-0.7369236,0.15112078,0.4462285,0.8489584,-0.19433662,-0.18448965],[-0.53724587,0.017794129,0.4338191,0.24491285,0.36948907,0.70015615,-0.30459952],[0.757806,-0.034863185,-0.77135277,-0.2933871,-0.27939826,-0.9393837,0.2961518],[0.43675852,0.053857032,0.498965,0.37739882,0.4588103,-0.37056544,0.14442298]],"activation":"σ","dense_2_b":[[-0.06206714],[0.07846223],[0.107750826],[-0.046243668],[-0.033654705],[-0.035633843],[0.015834749],[0.017618928],[0.04875132],[-0.032331567],[-0.041599613],[-0.009607665],[-0.095047034]]},{"dense_3_W":[[-0.27053934,-0.5599827,-0.5261372,0.5703626,0.2743929,0.6257322,0.3774779,-0.20829831,-0.4448903,0.6131186,0.29582694,-0.49130827,-0.046639528],[0.2578624,-0.83337194,-0.027313164,-0.29705286,-0.3806988,-0.019476013,0.53997874,-0.44911963,-0.4572695,0.39203748,0.4073216,-0.5038811,0.19435048],[0.5505637,-0.52018625,-0.22615957,-0.042771284,0.30023396,0.07614445,-0.36263672,-0.5696729,-0.15394297,0.29655027,0.5070545,-0.16651826,0.013556858]],"activation":"identity","dense_3_b":[[0.004786969],[0.017816467],[0.008341951]]},{"dense_4_W":[[-0.70178753,-0.6261923,-0.58992994]],"dense_4_b":[[-0.009440654]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.00 56340-S9000 8B13'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.00 56340-S9000 8B13'.json deleted file mode 100755 index 3583885a42..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.00 56340-S9000 8B13'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6636677],[1.0415155],[0.4405441],[0.03810654],[1.0415744],[1.0396914],[1.0376655],[1.0191053],[1.0017574],[0.9810815],[0.9587672],[0.03804814],[0.038069014],[0.0380983],[0.038099322],[0.037983626],[0.037768982],[0.037503105]],"model_test_loss":0.0070123192854225636,"input_size":18,"current_date_and_time":"2023-08-07_12-25-32","input_mean":[[24.58516],[-0.053356342],[0.0018561187],[-0.028318454],[-0.052350596],[-0.05162282],[-0.050804704],[-0.052188896],[-0.050713386],[-0.048506834],[-0.04722293],[-0.028366687],[-0.028323544],[-0.028278554],[-0.028274836],[-0.028321512],[-0.028377615],[-0.028479535]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.40149847],[-0.036968376],[2.9324126],[-0.050440587],[-1.6624343],[-3.111909],[-0.08347813]],"dense_1_W":[[-0.2231008,0.43419427,-0.008418177,-0.25645596,-0.27315116,0.3730735,-0.56420225,0.531981,0.050561436,0.049857076,0.01984278,0.15615726,0.14532468,-0.1341266,-0.14356773,0.022001041,-0.47281718,0.04480727],[-0.3699377,-0.8539471,-0.011191063,-0.03840326,0.5528697,-0.5095522,0.79292774,0.53987986,0.3397071,0.09874697,0.16869819,-0.20077275,-0.38679546,0.18692482,0.27885512,-0.3531348,-0.11918749,-0.47793227],[0.44518143,-0.8884128,-0.12010096,0.2840199,-0.01654247,-0.37926447,0.6241959,-0.3588111,-0.18594895,-0.37540522,-0.1184817,-0.28526396,0.09523298,-0.08844218,0.28927204,-0.030794572,-0.22434682,0.02950121],[0.051157415,-1.5702069,-3.6776006,0.07019505,0.37266773,0.20280795,0.16947661,0.08074228,-0.93735164,0.26037607,1.2727387,-0.5875368,0.118953235,-0.052235976,0.5290898,0.0075836885,0.2145108,-0.341396],[0.8406824,-0.6357117,-0.012508759,-0.114874125,0.22464035,0.6901549,0.30033943,0.15118437,0.42181274,0.32857767,0.35121942,0.5021367,-0.826353,-0.3353306,-0.15846261,0.104648225,-0.16137573,-0.854983],[-0.48347813,-0.9890036,-0.12638868,0.4244501,0.22061923,-0.6496192,0.73929363,-0.2879861,-0.27470425,-0.47338513,-0.026745116,-0.7317621,0.03403621,0.31189573,0.43235132,-0.16640383,-0.20338999,-0.027866011],[-0.0053826473,-0.8913341,0.00012506823,0.27318633,-0.0037789296,-0.86155355,0.40793747,0.27253038,-0.080729984,-0.031735364,-0.02203216,-0.15663473,-0.13908623,-0.0398157,0.14052938,0.24337272,-0.40471002,0.18925937]],"activation":"σ"},{"dense_2_W":[[0.30025923,-0.26395065,-0.6900893,0.12076107,-0.27104673,-0.4204864,-0.12814534],[-0.59520245,-0.31921673,0.12515253,-0.10728783,0.30437303,-0.44225642,-0.7510248],[-0.97030437,0.091399565,1.041651,0.5298835,0.12482943,-0.39294013,0.3376671],[-0.35264635,0.030865038,-0.043722976,-0.25330108,-0.47328326,-0.044327017,0.23717652],[0.45056573,0.22202963,-0.79909515,-0.29515973,-0.34452644,-0.12819465,0.28630367],[-0.1962231,-0.06441422,-0.3860033,-0.45442382,0.5523658,-0.37580812,0.17132744],[0.15821941,-0.65717125,-0.29991794,-0.23657624,0.30773747,-0.4825543,0.3368553],[0.44671333,-0.23616415,0.060102407,-0.4938546,0.5823045,0.030239027,-0.5907059],[-0.7725862,0.65374887,0.99496603,-0.52427566,-0.74721336,1.1665807,0.485246],[0.5747518,-0.54922277,-0.4279965,-0.32235864,-0.39549112,-0.63029706,0.08336972],[-0.6286281,0.53232676,0.09173603,-0.3197821,-0.58844185,0.6930728,0.89978975],[-0.8540552,0.23237345,0.01174916,0.02329381,-0.21082848,0.4638076,0.61707777],[-0.38213924,0.12289726,0.02848087,-0.2358143,-0.09083596,0.68827146,0.39511114]],"activation":"σ","dense_2_b":[[0.007899074],[-0.24461511],[-0.17740962],[-0.0007998822],[-0.01197454],[0.04764368],[-0.017339833],[0.072300844],[-0.23241436],[0.096137755],[-0.14189208],[-0.18733168],[-0.09664416]]},{"dense_3_W":[[0.49906957,0.43125764,-0.0050584874,0.29804975,0.15355866,-0.29560578,0.35590634,0.5839829,-0.59895027,0.1900103,0.30921668,-0.6190028,0.016287152],[-0.09681585,-0.42354482,-0.550485,-0.07733479,0.41151676,0.5945164,-0.04800964,0.37133008,0.010906173,0.52148324,-0.5151786,-0.2838045,-0.49523494],[-0.25222576,-0.27630806,0.11442517,-0.29334897,-0.17029618,-0.20770106,-0.042667136,0.15740934,0.22484288,-0.6796396,0.36673924,0.31320038,0.2187441]],"activation":"identity","dense_3_b":[[0.041152943],[0.050569043],[-0.04529463]]},{"dense_4_W":[[0.6610413,0.93398947,-0.9665046]],"dense_4_b":[[0.04895585]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.01 56340-S9000 9201'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.01 56340-S9000 9201'.json deleted file mode 100755 index 17e7de42ee..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.01 56340-S9000 9201'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.31745],[1.1132171],[0.47852853],[0.042235937],[1.1178341],[1.1160868],[1.1140894],[1.0932467],[1.0700195],[1.0378196],[1.0042937],[0.042053793],[0.042099174],[0.042147044],[0.04229224],[0.042290386],[0.04213167],[0.04170115]],"model_test_loss":0.007971670478582382,"input_size":18,"current_date_and_time":"2023-08-07_12-50-19","input_mean":[[22.745663],[-0.02314496],[0.006329487],[-0.007906635],[-0.024401885],[-0.024847621],[-0.024651228],[-0.020919092],[-0.019033547],[-0.014008034],[-0.00841008],[-0.007998144],[-0.007991008],[-0.007984672],[-0.007925103],[-0.007978865],[-0.008057719],[-0.008112883]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10009004],[-2.4347603],[-0.45647046],[-0.26168102],[0.4559833],[-2.3471363],[-0.024856634]],"dense_1_W":[[0.00685374,0.29781812,-0.0045040743,-0.2483261,0.36356887,0.7941921,0.115958326,-0.303391,-0.31066865,-0.4133796,0.5499007,0.6501906,-0.06862256,-0.59767103,0.10247653,0.22389303,-0.0670222,0.012925103],[-0.43374088,0.95874643,0.010345864,0.029017475,-0.63670444,0.31695086,0.07258637,0.13453023,0.47587368,0.46790752,-0.30345193,0.46282083,-0.093325965,-0.0597011,-0.52926123,-0.23205075,0.21186207,0.15266287],[-0.010350411,0.40709472,0.0041358415,0.5390394,-1.0806609,0.64311004,-0.09017517,-0.18798684,-0.12183539,0.010223074,-0.05575936,0.11231753,-0.13522181,0.09871264,0.1674028,0.2260443,0.92522573,0.22312124],[0.20998508,-0.7601628,0.0044564125,0.0017229705,0.8512942,-0.2566007,-0.22104141,-0.06553982,-0.23601292,-0.25825587,0.37305197,-0.1024032,-0.36825082,0.21398295,0.9294358,0.4860802,0.548133,-0.0834842],[0.37757793,0.6797055,-0.004590874,-0.56208813,-0.2976163,0.6580122,-0.56625277,-0.09451766,0.17261557,0.19591618,-0.17517307,0.20502836,-0.16963857,-0.29324597,-0.00045291794,0.17973329,-0.5582203,-0.4135608],[-0.43611768,-1.3107734,-0.009830083,0.20460518,0.74073887,-0.54199576,0.2283278,-0.0015428674,-0.17581679,-0.8339866,0.4044754,-0.4352709,-0.3658589,0.2867904,0.8084769,-0.29901847,0.13045451,-0.26202014],[-0.00031012832,-0.38003787,-2.2669997,0.3342903,0.09606713,-0.04249713,0.8710125,-0.60461634,-0.725245,0.3113496,0.45141265,-0.7288661,-0.29998294,0.6268596,0.084224634,-0.021362655,0.14650373,-0.14192608]],"activation":"σ"},{"dense_2_W":[[0.6022557,0.12733772,0.5688971,-0.47040647,-0.19734168,-0.25412557,-0.64506894],[-0.87848234,-0.2927233,-0.38882446,0.01753978,-0.66094726,-0.009080832,-0.046852414],[-0.6812371,-0.12201253,-0.17657526,-0.14278913,0.10146227,-0.33213505,-0.42730355],[0.5288182,-0.1530913,0.2752494,0.21740611,0.08138198,-0.79552627,-0.09336282],[-0.67439306,-0.7681033,-0.25968102,0.10087962,-0.073134035,0.74803954,0.5110043],[-0.26234108,-0.5890924,-0.90448207,-0.34318918,-0.14372866,0.06295756,-0.5832333],[0.56269956,0.31309462,-0.22407316,-0.74141455,0.3451219,0.16766134,-0.038615566],[-0.42197526,-0.6832733,-0.11012318,0.81781024,-0.49532312,0.5044022,0.6058622],[-0.22078349,-0.49892014,-0.6127092,0.39234552,-0.9247115,0.024139864,-0.1763933],[0.4427586,0.6229294,0.29448354,-0.64260805,-0.12868074,-0.14595105,-0.4953741],[-0.8060251,-0.57394534,-0.24703805,0.22687304,-0.019541593,0.08022944,-0.17855246],[-0.1300446,0.48822337,0.5738244,-0.4108309,0.12754422,-0.551131,-0.15526813],[-0.9597397,0.17972887,-0.75652325,0.14697702,-0.6045928,0.7029836,0.5235034]],"activation":"σ","dense_2_b":[[-0.047481403],[-0.06560398],[-0.27885428],[0.0077811894],[0.058150165],[-0.25603768],[-0.049105696],[-0.031028127],[-0.19086929],[-0.09221374],[-0.01903645],[-0.00713192],[-0.066267215]]},{"dense_3_W":[[0.04823237,-0.536979,0.27751818,0.1655786,-0.38873705,-0.2579097,0.089698836,-0.45589212,-0.138498,0.4641493,-0.38723156,0.27027082,-0.26783973],[0.61633486,-0.5096373,-0.36629617,-0.20646454,-0.7141381,-0.18465841,0.49784765,-0.26393116,0.26770627,0.6908027,0.36391553,-0.4442028,-0.09214944],[0.5473221,0.5475575,-0.34196937,0.420392,-0.2992392,0.3096095,0.6112058,-0.34745613,-0.20254803,-0.1975557,-0.50081915,0.5198232,-0.6212465]],"activation":"identity","dense_3_b":[[0.056188975],[0.049475864],[0.041392375]]},{"dense_4_W":[[1.0715346,0.3261359,0.63600165]],"dense_4_b":[[0.051208194]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8409'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8409'.json deleted file mode 100755 index 4cc4de130e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8409'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.896653],[1.2753624],[0.5317558],[0.04692811],[1.2610264],[1.2643604],[1.2686262],[1.2531861],[1.2319366],[1.202845],[1.1703773],[0.046726346],[0.046764154],[0.04680635],[0.046880126],[0.04682511],[0.046679065],[0.046382528]],"model_test_loss":0.007070815656334162,"input_size":18,"current_date_and_time":"2023-08-07_13-44-54","input_mean":[[22.618917],[-0.12753934],[0.0057965177],[-0.0060813604],[-0.1289674],[-0.12929432],[-0.13033809],[-0.12293899],[-0.12034268],[-0.11245273],[-0.10651569],[-0.0061726016],[-0.006176799],[-0.0061910134],[-0.0061672167],[-0.006181863],[-0.0062086484],[-0.0062240455]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20530139],[-0.33197266],[-2.1811483],[3.7774518],[1.2599417],[-3.9418454],[-0.18807785]],"dense_1_W":[[-0.03620619,0.19689178,0.09866175,-0.09322594,-0.078725435,1.1390496,-0.7356808,-0.012869471,0.15444094,0.07297737,-0.14101654,0.03384644,0.15915924,-0.4428113,0.22565778,-0.04034416,0.19587907,-0.20443197],[-0.06502236,-1.4234812,-6.6071515,-0.25332624,0.78716946,1.0407856,1.018014,-0.38713723,-1.3469931,-0.75132585,0.98401487,-0.26469627,-0.3915288,0.12644795,0.454595,-0.08865953,0.17730202,0.021167783],[-1.5585331,-0.5798272,0.22335605,0.03818846,0.6245181,-0.47028995,0.5918746,-0.054077096,0.54335994,0.034108605,0.047890723,-0.41479602,0.2831795,0.124537066,0.255331,-0.33859366,0.039150972,-0.07043993],[1.394775,-0.23261723,-0.28053886,-0.22738497,0.10594227,-0.6431526,0.0015595681,0.1450129,0.015581782,-0.0155119905,-0.31749186,-0.25720045,0.47923756,0.052539762,-0.22887582,0.12794253,0.039806157,0.09652687],[1.740706,0.11734064,0.3073235,0.26312536,0.08612904,-0.15223877,0.44893447,-0.15653725,0.32468832,0.13602708,0.0652706,-0.584739,0.15232132,0.11354476,0.053987373,0.033912808,0.3362455,-0.4482535],[-1.4522748,-0.30714616,-0.29713413,-0.21153042,0.35632578,-1.3907708,0.5317352,0.12741564,-0.0064160936,0.12887736,-0.41460907,0.34433788,-0.2432804,0.09331247,-0.24749541,0.36895674,-0.23798321,0.21776763],[8.573988e-6,0.27198073,0.0034219692,-0.06563512,-0.29250515,1.0881044,-0.64386135,0.1843868,0.031134987,0.025746144,-0.008881639,0.6693814,-0.17966537,-0.19181062,-0.4711859,0.06456762,-0.24241222,0.27226776]],"activation":"σ"},{"dense_2_W":[[-1.4079269,0.36448163,0.54817736,0.5838273,0.023329774,0.6411659,-1.3597034],[-0.51554555,-0.4119896,-0.0757938,-0.52624255,-0.32881626,-0.09241929,-0.6173628],[0.17114219,-0.5917404,0.52103335,-0.91308004,-0.64996517,-0.45323023,-0.27036774],[-0.7816448,-0.34142476,0.27209246,0.83823246,0.25578618,0.78207064,-0.5922945],[-0.63912165,0.056242548,0.40855795,-0.16621237,0.15351564,0.39832217,-1.1449009],[0.4102927,0.34681398,-0.034716405,-0.62436956,0.011792132,-0.74056876,0.11482153],[0.24064858,0.38059077,-0.389402,-0.75450635,-0.05456221,-0.24500677,0.71137184],[-0.047961276,0.31060773,-0.3119071,-0.08383901,-0.21034946,-0.39693183,0.71529126],[0.8864901,-0.13776888,-0.40138802,-0.5242289,0.3239953,-0.2595277,0.62388825],[0.47216353,-0.35241503,-0.41698897,-0.24461508,0.41777575,-0.14391029,0.903978],[-0.8213227,1.2268875,-0.76732516,1.3276708,0.9519929,0.39465946,-0.77069944],[-0.72467273,0.39069507,-0.303594,0.23257187,-0.3579329,0.6990695,-0.30224627],[-0.8027119,0.16713265,0.5837898,-0.078509,0.07100372,0.7838912,-1.001968]],"activation":"σ","dense_2_b":[[-0.25387064],[-0.30531904],[-0.02434373],[-0.18550278],[-0.324516],[-0.007148533],[0.015090404],[-0.005064251],[0.035354376],[0.17334807],[-0.047236674],[-0.22442318],[-0.2525012]]},{"dense_3_W":[[-0.5563823,0.087780975,0.18698041,-0.3394262,0.008317095,0.66230845,0.58490086,-0.0028694326,0.66133267,0.11329112,-0.48986503,-0.11975826,-0.68024075],[-0.54618734,-0.104708515,0.64458096,-0.55121964,-0.24448135,-0.28165248,0.36517873,0.50535154,-0.17659181,0.5379147,-0.3447484,-0.52534163,-0.031908248],[0.3347168,-0.2290193,0.5621586,0.30639598,-0.36269528,0.5464596,-0.4033829,0.14275603,-0.34687775,-0.47407392,-0.01195648,0.4732098,-0.3589579]],"activation":"identity","dense_3_b":[[0.059350483],[0.070591144],[0.03717587]]},{"dense_4_W":[[1.0896041,0.62514883,0.03852297]],"dense_4_b":[[0.06460823]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8A12'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8A12'.json deleted file mode 100755 index 17e2a43814..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8A12'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.358906],[1.038606],[0.52003336],[0.03449092],[1.025025],[1.0285342],[1.033122],[1.0280541],[1.0189449],[1.0088568],[0.9928373],[0.034335066],[0.03436934],[0.03440254],[0.03445266],[0.034416895],[0.0341578],[0.033791963]],"model_test_loss":0.005529345478862524,"input_size":18,"current_date_and_time":"2023-08-07_14-09-26","input_mean":[[22.959547],[-0.052741483],[-0.004481133],[-0.0017092802],[-0.050769974],[-0.051488187],[-0.05162069],[-0.051915728],[-0.050174993],[-0.052261814],[-0.05214494],[-0.0018301547],[-0.0017879381],[-0.0017471444],[-0.0015715543],[-0.0013785135],[-0.0013404073],[-0.0012749063]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.502992],[-4.356874],[-0.0042948504],[-0.5028367],[0.051018726],[-0.15338463],[-0.1509676]],"dense_1_W":[[-1.6411753,-0.32697722,0.3120288,-0.39750454,-0.13167776,0.86057496,-0.6939451,0.6071072,0.14159355,-0.0063595567,0.25375837,0.44821614,-0.29423907,-0.028513383,0.3023456,0.1316031,0.036363505,-0.14323804],[-1.6328104,0.5942663,-0.30570295,-0.123248264,-0.034441516,-0.87338793,0.69189394,-0.6236746,-0.052855786,-0.13514496,-0.221532,0.0011332782,-0.20347112,0.4917645,-0.20858406,-0.14016572,-0.089411296,0.21504334],[-0.21007055,0.41557994,0.037863724,0.4959517,-0.45360732,0.7074271,-0.28405392,-0.111691974,0.18850206,0.015849397,-0.12006921,0.25533158,0.07951575,-0.8312149,0.03035362,-0.21261916,-0.1735698,0.18428572],[0.3310752,-1.6132231,0.045440618,-0.7522596,0.412424,0.76531404,0.04731471,0.6839483,-0.027021188,0.28972885,-0.1742223,0.42704728,0.58289766,-0.2732268,-0.12959486,-0.24415614,-0.101852916,0.3081016],[-0.011170702,-1.5589105,-3.495791,0.33255365,0.94771427,0.5074355,1.0023425,-0.1316612,-1.802023,-0.406795,1.0740488,-0.35055503,-0.06440544,0.37088916,0.3481748,-0.535885,0.018674394,0.108048186],[-0.03412157,0.6122013,0.07255059,0.06107659,-0.46524987,1.2860525,-0.8113254,0.04586139,0.033707816,-0.16047795,-0.015120353,0.37895563,0.42033595,-0.6925642,-0.38245085,-0.044110574,0.058740735,0.07787144],[-0.005288463,0.5904715,-0.10395662,0.34950814,0.29257905,1.0213965,-0.35862765,-0.72644925,0.097196706,-0.19612406,0.52340215,-0.017568931,0.2601534,-0.986547,0.5020255,0.2743259,0.23409082,-0.5168832]],"activation":"σ"},{"dense_2_W":[[-0.47496098,0.5138251,-0.7892653,-0.75560045,0.48735014,-0.53306115,0.16811597],[-0.3102205,1.9871738,-0.4366547,-0.41493884,0.11469561,-0.6691428,-0.44414428],[0.19802967,0.3727984,0.39753315,0.42768952,0.41358182,0.6435363,0.24335779],[-0.66378856,0.5819373,-0.051759593,-0.89287,0.096190274,-0.6734764,0.11215895],[0.3314184,-0.13227205,0.21310683,-0.12126428,-0.16501734,0.4487741,0.72218174],[-0.8345799,-0.4282664,-0.47909757,-0.4936077,-0.46425676,-0.7605428,0.2990966],[0.066827886,-0.5356042,0.10570844,0.5161373,0.062971145,-0.31447783,0.17028944],[-0.7473447,0.56870705,-0.67485994,-0.19401033,0.22181664,-0.14370336,-0.010975309],[0.24166872,-0.4976755,0.6000056,0.3400344,-0.38725704,-0.06810995,0.5731925],[-0.35525835,1.1168011,-0.22931977,0.10211827,0.0522062,-0.82619613,-0.69551224],[-0.9838338,1.1467155,-0.25217372,-0.08675337,0.07187647,-0.39047343,-0.51041925],[0.5434614,0.47051767,0.7331644,0.36079296,0.21453767,0.2669549,-0.24738385],[-1.5833589,0.7161828,-0.08223795,-0.0792626,0.7528849,-0.024336126,-0.06581944]],"activation":"σ","dense_2_b":[[0.22666334],[0.53868324],[-0.1864018],[0.20797202],[-0.102829635],[0.17410047],[-0.059639398],[0.046856824],[-0.15465018],[0.37563977],[0.42138037],[-0.040794667],[0.15081088]]},{"dense_3_W":[[0.059286855,-0.6201953,0.66562283,0.22414349,0.51240027,-0.13008,0.6259135,-0.5094883,0.33165294,-0.08362942,0.012212406,0.27687398,0.4015779],[-0.49880126,0.070532426,-0.43096852,0.37746346,0.10856794,0.5118211,0.2279282,0.27002206,-0.3318831,0.39096662,-0.351321,-0.09415256,0.6066714],[-0.62661433,-0.4761153,0.30911666,-0.43303257,0.7428668,-0.21072751,0.14316693,-0.31729576,0.503867,-0.40831396,-0.5834226,0.30889633,-0.3942228]],"activation":"identity","dense_3_b":[[0.008437807],[-0.045322042],[0.051086687]]},{"dense_4_W":[[0.20634736,-0.37115717,0.97134864]],"dense_4_b":[[0.040139616]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.01 56340-S2000 9129'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.01 56340-S2000 9129'.json deleted file mode 100755 index 3c127b3ecc..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.01 56340-S2000 9129'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.282052],[1.4976072],[0.5488163],[0.04954058],[1.4906036],[1.492054],[1.4935261],[1.4723681],[1.4461412],[1.4036433],[1.3585291],[0.049254097],[0.049325753],[0.049396638],[0.049512744],[0.04941646],[0.049044546],[0.04844633]],"model_test_loss":0.00627125846222043,"input_size":18,"current_date_and_time":"2023-08-07_14-36-50","input_mean":[[25.058535],[-0.022251762],[-0.0062643415],[-0.006741323],[-0.019891106],[-0.02031645],[-0.020919193],[-0.022687394],[-0.024389008],[-0.02746425],[-0.027944699],[-0.006677959],[-0.0066979136],[-0.006710192],[-0.0067440853],[-0.0067666965],[-0.006773558],[-0.006752982]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.17761493],[0.065649986],[-0.76249593],[-2.9280584],[2.8058326],[1.0595294],[0.66408336]],"dense_1_W":[[0.009145467,0.4170902,0.034774374,-0.0138638485,-0.39550337,1.045921,-0.68865854,0.19794099,-0.033008657,-0.044810697,0.031777132,0.11889747,-0.09361271,-0.012631721,-0.17615353,0.20466472,0.15644592,-0.16351333],[-0.0061399164,-1.4166915,-5.645784,0.073381424,0.5393407,0.32291308,0.31408218,0.2008273,-0.35585976,-0.43743655,0.7283993,-0.46206388,0.11366365,-0.11259773,0.06420009,0.11462869,0.35199496,-0.32473722],[0.75156087,-0.054094438,0.056640625,0.14823626,-0.48060635,-0.6280021,0.5193494,0.21376126,-0.3183618,0.16855966,-0.12529948,-0.49619958,-0.31324717,0.3645703,0.082277454,0.36189565,0.5037089,-0.29449514],[-0.7632688,-0.27169684,-0.23086967,-0.15549572,-0.079988874,-0.84466547,0.5305665,-0.14300905,-0.6319775,-0.18426856,0.20290938,-0.075952776,-0.1215382,0.9547558,-0.08411024,-0.18286705,0.14476883,-0.06562494],[0.7433322,-0.45799735,-0.22533219,-0.16057462,-0.43227366,-0.50694495,0.7030353,-0.27264476,-0.36092183,-0.18616752,0.113610044,-0.19430344,0.013998261,0.79424304,0.10917846,-0.07473551,-0.054330464,-0.032398082],[-0.0100051705,0.2767743,0.012484329,0.14437622,-0.21558216,0.60862535,-0.45100874,0.0608264,-0.20519726,0.11275251,0.0047225803,0.16176194,0.4537485,-0.5460852,-0.45898968,0.17339261,-0.0010471605,0.0726244],[-0.7537442,-0.23575833,0.058653012,-0.1419492,0.1560171,-0.88010234,0.43974218,-0.1777623,0.07786165,-0.18940662,0.11003291,-0.7475638,-0.46154422,0.7977223,0.62764406,0.48734587,-0.122180894,-0.07988648]],"activation":"σ"},{"dense_2_W":[[-0.44969195,-0.47718954,0.44621757,-0.10789645,0.611765,-0.18588941,0.012329608],[0.13036671,-0.5190893,-0.45879737,-0.15106045,-0.3414679,0.8747279,-0.12338378],[0.382678,0.49006438,-0.55374706,-0.7979588,-0.66582894,0.49023482,-0.22071177],[-0.82273644,0.6556447,0.6050713,-0.14068466,1.266661,-0.21573777,-0.105440065],[1.0855136,-0.30474165,-0.08955326,-0.34984973,-0.12816525,0.5724931,-0.68358016],[-1.020146,-0.46681815,0.47050923,0.23170453,0.49748507,-0.21584909,0.50045234],[-0.51235473,-0.16342548,-0.10362162,0.7775686,0.25859034,-0.5426786,0.15350342],[-0.7412454,-0.19349915,0.51770556,0.89931875,0.44185257,-1.0582427,-0.053990576],[1.1346184,-0.40109345,-0.22971821,-0.6369844,-0.07736686,0.45002407,-0.34542826],[0.8599848,-0.50594753,-0.01019188,-0.6136041,-0.44588706,0.10080783,0.19961627],[-0.74791193,0.3330768,-0.34094897,1.0123053,-0.008348638,-0.9700476,0.23540768],[-0.2771327,-0.008559937,0.33475313,0.34185767,0.7079121,-0.68679994,0.523643],[0.55554783,-0.041663673,-0.45565832,-0.08963832,-1.0109894,0.22129427,-0.42119744]],"activation":"σ","dense_2_b":[[-0.2371153],[0.11922548],[-0.030385548],[-0.0757551],[0.15123996],[-0.11702709],[-0.081945956],[-0.14611888],[0.25165284],[-0.0024621708],[-0.15761453],[-0.23728251],[-0.10741819]]},{"dense_3_W":[[-0.22576405,-0.19548972,-0.60756344,0.12658192,0.19608,-0.4017061,0.35516047,0.015072161,0.42969325,0.09205027,0.6273664,-0.4431949,-0.40578642],[0.035641454,-0.60118145,-0.11233975,0.5058922,-0.47696126,0.49505487,0.44402495,0.28497314,-0.49870777,-0.109422185,0.32074592,0.6422087,-0.25553414],[0.5741452,0.13303332,-0.6632543,-0.23719987,-0.19621162,-0.22117068,0.102075905,0.15589632,-0.5905995,-0.64983845,0.25684682,0.6521155,0.109088175]],"activation":"identity","dense_3_b":[[-0.019887898],[-0.09508023],[-0.051447187]]},{"dense_4_W":[[-0.08363187,-1.1579778,-0.26778743]],"dense_4_b":[[0.08655493]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022 b'xf1x00TM MDPS C 1.00 1.02 56370-S2AA0 0B19'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022 b'xf1x00TM MDPS C 1.00 1.02 56370-S2AA0 0B19'.json deleted file mode 100755 index 616274010e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022 b'xf1x00TM MDPS C 1.00 1.02 56370-S2AA0 0B19'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.993529],[1.324396],[0.5305161],[0.04294904],[1.3205608],[1.3210983],[1.3210579],[1.2954506],[1.2668177],[1.222909],[1.1779213],[0.04279379],[0.04282814],[0.04286333],[0.042902395],[0.042827405],[0.042586636],[0.042191453]],"model_test_loss":0.006565318908542395,"input_size":18,"current_date_and_time":"2023-08-07_15-28-26","input_mean":[[22.832775],[-0.040264394],[-0.02767458],[-0.003989959],[-0.03488428],[-0.03718118],[-0.03951456],[-0.05100156],[-0.06057131],[-0.07277594],[-0.083841816],[-0.0039337794],[-0.003943521],[-0.00395225],[-0.004023454],[-0.0040841275],[-0.0041823583],[-0.0042870827]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.18876944],[1.3463621],[-1.908932],[0.94169223],[-2.0187588],[0.0035511698],[0.0053254846]],"dense_1_W":[[0.005867352,1.2254535,3.4375358,0.068283305,0.16577429,-0.009294751,-0.5739759,0.19231455,0.27828252,-0.1432012,-0.838622,0.21616323,-0.06911776,-0.2046535,-0.27959976,0.06780521,0.39013436,-0.15592383],[1.3789212,-0.19859079,0.14766572,0.47943616,0.29903832,-0.6807818,1.1864055,-0.063221924,0.0021910756,0.15888207,0.3227435,-0.102154195,0.05816301,0.067887574,-0.14981405,-0.23042272,0.024423974,-0.20121309],[-0.6294663,0.81912273,0.117754824,0.045635737,-0.30043265,0.41747543,-0.72729063,0.30596933,0.083178654,-0.009687303,0.18535374,0.15427576,0.048291914,-0.27375552,-0.06383911,0.36632884,0.025411423,-0.36048925],[1.5819824,-0.44059455,-0.19170646,-0.11758157,-0.6440937,0.96508884,-0.54323167,-0.35875118,0.20947236,-0.018358774,-0.49196693,-0.30316466,0.13093069,-0.11939344,0.26340368,0.10947761,-0.3237495,0.4436966],[-0.8038508,-0.9236595,-0.12660962,0.053774275,0.24433418,-0.726227,1.2170812,-0.3135991,-0.23039672,0.09241596,-0.22223517,-0.362112,0.26941076,0.17195722,-0.3402102,-0.08320549,0.06449958,0.28475815],[-0.0011107235,-0.038697846,0.0022872635,-0.28063372,-0.14913365,1.2446141,-0.6184191,0.11545028,-0.017611,0.13889763,-0.023370638,0.33740774,0.31302363,-0.35052314,-0.42641684,-0.2141415,-0.34904203,0.42076],[-0.005175982,-0.7099676,0.00016399156,0.03889922,-0.30047348,-0.9106055,0.5045013,0.35966375,-0.023503177,-0.0043678866,-0.19590726,-0.6871834,0.24169926,0.17034449,0.21276642,0.10462949,-0.37484288,0.20454486]],"activation":"σ"},{"dense_2_W":[[0.104682855,-0.50470614,0.35854033,-0.035443306,-0.37905973,-0.27697846,-0.9634923],[0.112081155,-0.7351773,0.41254714,0.7830785,-0.38910425,0.9948105,-0.3034996],[-0.3261952,0.676342,-0.8663035,0.049848557,0.327171,-0.3208539,0.79908615],[-0.15818742,0.07726966,0.43970603,0.24589102,-0.50519943,-0.37369853,-0.4947362],[0.06886326,-0.4172607,0.28755546,-0.41808438,-0.52109635,-0.42815572,-0.263946],[0.051430058,-0.28650117,-0.009554365,-0.07774851,0.7187316,-1.0449941,0.017990898],[-0.08103111,0.17932983,-0.5922217,-0.5895948,0.3433449,-0.3952535,0.07908759],[-0.30518368,0.87019897,-0.8338993,0.51584834,0.7291329,-0.6600101,0.73442346],[0.46777672,0.60007197,0.4286051,0.8649935,-1.1103383,0.74301636,-0.80451095],[0.08020403,-0.6593858,0.086899064,0.23602426,-0.012647624,0.6520031,-0.9400746],[-0.35595152,0.041667316,0.3093184,0.03735144,-0.7210566,0.5299639,-0.15386833],[0.09228896,-0.71585226,0.30710077,0.2406018,-0.47016156,-0.11183533,-0.27596667],[-0.612182,-0.2192639,-0.19045848,-0.06639905,0.1694014,-0.33918324,-0.1311936]],"activation":"σ","dense_2_b":[[-0.21769845],[-0.07666798],[0.1883953],[-0.15336362],[-0.39611495],[-0.028968781],[-0.30332094],[0.133016],[0.062327497],[-0.11558597],[-0.038368657],[-0.13163656],[-0.23315099]]},{"dense_3_W":[[-0.20311363,-0.5751432,-0.09544995,0.40782174,-0.3749152,0.42719337,-0.27624348,0.23038137,-0.10259029,0.42679816,0.14456484,-0.28356594,0.40488628],[0.101418085,-0.10259608,0.37198663,0.20094174,-0.16163434,0.11256627,0.0009847895,0.36355582,-0.68457043,0.038573015,-0.30619755,-0.40124977,0.18100727],[-0.26906586,-0.5600097,0.5290126,-0.36010587,0.13541447,0.42952237,0.15362886,0.7573779,-0.41288292,-0.43268642,-0.23467787,0.1252901,-0.15268406]],"activation":"identity","dense_3_b":[[-0.04268578],[0.0621331],[0.05889129]]},{"dense_4_W":[[-0.026682906,-1.0218076,-1.0972601]],"dense_4_b":[[-0.0560793]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102'.json deleted file mode 100755 index 2c61a6ddc0..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.194418],[0.9826876],[0.43571737],[0.03203097],[0.98284227],[0.9834058],[0.9829836],[0.9639176],[0.94775534],[0.92251784],[0.8937146],[0.03200366],[0.03202884],[0.032050643],[0.032007705],[0.031979978],[0.031913992],[0.031803887]],"model_test_loss":0.004605790600180626,"input_size":18,"current_date_and_time":"2023-08-07_16-17-55","input_mean":[[21.787415],[-0.073023595],[0.006111772],[-0.0030836551],[-0.07544397],[-0.07518822],[-0.074919075],[-0.072652444],[-0.07070591],[-0.06814254],[-0.06605076],[-0.0029780078],[-0.0030136248],[-0.0030446842],[-0.0032140582],[-0.0032444522],[-0.0033729817],[-0.0034472218]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.021883458],[-0.013235099],[-0.121804215],[-0.25270373],[0.013701096],[1.7847886],[1.8580865]],"dense_1_W":[[0.015979825,0.025676368,0.82048047,-0.20396332,-0.06994716,-0.19865473,0.85325474,-0.46978325,-0.24091806,0.10684887,0.10043876,-0.08637539,0.26329783,0.46833506,-0.48420766,-0.046872795,-0.19976763,0.2933011],[-0.010659484,-0.5590501,-1.8482552,0.18219163,-0.29451025,-0.039495107,0.69195104,0.3583238,-0.246975,-0.3466151,0.39438456,-0.101077646,-0.20400386,0.21190208,-0.20427756,0.02704431,0.14872628,-0.09532689],[0.28008336,-0.19451748,0.002395767,0.07651338,-0.013720813,-0.7281727,0.46541923,0.05587276,-0.076292664,0.27889255,-0.22249366,-0.20972478,-0.32013837,0.35491177,0.019567257,-0.05948678,0.061387423,0.12222018],[0.38760716,0.28468573,-0.0046121255,-0.503213,0.15541966,0.010528314,-0.08428991,0.20208262,-0.106319115,-0.12040755,0.10501226,0.4507385,0.60220087,-0.4585774,-0.02489347,0.114339024,-0.33559904,0.10983539],[0.0009784829,0.35729215,-0.003829106,-0.0028381112,-0.48749572,0.8682397,-0.29993644,-0.08423156,0.010641775,0.07446828,-0.037331752,0.27161676,-0.1789018,-0.30909738,-0.3551168,-0.248932,0.2984701,0.13843094],[0.44399467,-0.5334002,-0.23803857,-0.21615528,-0.016919455,-0.5706182,0.545457,0.27349538,-0.114982955,-0.39205012,0.124447465,-0.10823347,0.1663843,0.2260901,-0.15672842,0.13161573,-0.02115449,0.0032338887],[0.5019759,0.68048036,0.25314942,0.13284066,-0.33117083,0.582654,-0.24854451,-0.47353426,0.40295416,0.24269429,-0.14332053,0.23747285,-0.33417442,-0.106693946,0.0037535615,0.04599831,0.037733346,-0.04265533]],"activation":"σ"},{"dense_2_W":[[0.08401161,-0.2599535,-0.609856,0.7646542,0.67341596,-0.26291236,0.76118547],[-0.3651008,-0.20817277,0.31787935,-0.43461692,-0.29770243,0.018088236,-0.46393844],[0.2615463,0.48856091,-0.40368366,-0.18834044,-0.08188224,0.2784943,-1.0847317],[-0.52402174,-0.20936744,-0.77195823,-0.22592704,0.69131356,-0.7199108,-0.06898959],[0.080265164,-0.16496317,-0.8305106,0.6760351,0.37774935,-0.30932015,0.4807624],[0.37443948,-0.778584,-0.66466296,-0.3686006,-0.43090945,-0.57971597,-0.24787214],[0.07640942,0.3376665,0.6566895,0.113762006,-0.49356726,0.7215417,-0.42951873],[0.50611526,-0.21789505,0.79877114,-0.11904481,-0.68082315,0.22485676,-0.97027636],[-0.26019892,-0.22099318,-0.19246079,0.57908934,0.6265812,-0.54631793,0.5911588],[0.117363736,-0.5874855,-0.49562076,0.7931459,0.28048941,-0.39128372,0.27204272],[-0.45832366,0.06207395,-0.73029464,0.796244,0.60792464,-0.3163733,0.099765696],[0.120567635,-0.30641696,-0.59669787,-0.55059415,0.08865131,-0.259314,-0.06436874],[0.6329438,0.59759134,0.57218724,-0.645048,-0.735474,0.9010533,0.20121096]],"activation":"σ","dense_2_b":[[0.030452332],[-0.09173468],[-0.22073863],[-0.046627972],[-0.05838497],[-0.0528763],[-0.09991468],[-0.034997243],[-0.055857778],[0.04780818],[-0.05873308],[-0.317891],[-0.035200205]]},{"dense_3_W":[[0.3929027,-0.3861305,-0.49493206,-0.0818116,0.027093373,-0.31794766,-0.57132995,-0.5508263,0.24935243,0.44998237,0.27979627,-0.02445104,-0.590858],[0.5505083,0.5507326,0.19556087,0.2572581,0.4237801,0.65517,0.028538687,-0.09970234,0.18431105,-0.009243993,-0.021522932,0.17175677,-0.37279418],[0.00045096828,-0.19784781,0.35283023,0.6747326,-0.057934422,0.43838486,-0.45512754,-0.47786975,-0.2604245,0.16420609,0.05705802,-0.25166398,-0.37800297]],"activation":"identity","dense_3_b":[[0.058641378],[0.038829286],[0.08638757]]},{"dense_4_W":[[1.2422407,0.79126894,0.21478729]],"dense_4_b":[[0.05097585]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100'.json deleted file mode 100755 index 7096b57212..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.052273],[0.9509479],[0.50553817],[0.038164727],[0.9445496],[0.94397974],[0.94506735],[0.93094087],[0.91978514],[0.90017253],[0.8804518],[0.037949175],[0.037987206],[0.038005527],[0.037829578],[0.03761687],[0.037189245],[0.036789745]],"model_test_loss":0.004591483157128096,"input_size":18,"current_date_and_time":"2023-08-07_16-42-35","input_mean":[[23.199976],[0.06977518],[0.010112249],[0.011418438],[0.06521592],[0.06679082],[0.06787061],[0.07323156],[0.07372562],[0.07214795],[0.07004894],[0.011164797],[0.011199542],[0.011221814],[0.011139646],[0.011041907],[0.010719572],[0.010505906]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.014942537],[-4.3474574],[-0.08941054],[-4.3885407],[-0.014533082],[-0.040196232],[0.061592374]],"dense_1_W":[[-0.012185595,0.2322522,0.7511205,0.02690325,0.5641042,0.42065173,-0.8066829,0.18944919,0.39064535,-0.5669989,-0.14261945,0.34274545,-0.20055962,-0.6011869,-0.12676005,0.13741869,0.45624214,-0.2540088],[-1.3546237,0.8447106,0.35209763,0.076260105,-1.0732373,0.3980371,-0.39189407,1.4404069,0.225998,0.47837642,-0.25626668,0.47501436,-0.20985436,-0.2627164,-0.21115017,-0.010310166,-0.54525554,0.4810268],[0.002832261,-1.1939845,-3.5876055,0.5727716,0.8229184,0.06148804,0.54211617,0.0322967,-0.6423043,-0.55174315,0.664836,-0.16645195,-0.5878055,-0.32204002,0.13268834,0.2666557,0.5713847,-0.38673636],[-1.3233963,-0.87649137,-0.3446561,0.14505188,0.6079438,-0.34363598,0.624898,-0.82965463,-0.60310423,-0.3681155,0.16082169,0.0010988517,-0.4206278,0.33600268,0.02962365,0.1367739,0.277682,-0.30213332],[0.013596902,-0.13552241,-0.70311356,-0.13047394,-0.32529,0.5773636,-1.1701663,0.24257344,0.43782198,0.043168012,0.08643236,0.48032,0.23322079,-0.021323098,-0.31740412,-0.11516121,-0.24237125,0.31669086],[0.001166192,-0.40128833,0.0049709324,0.111636855,0.27789602,-0.79010975,0.42289734,0.16445734,0.12562138,-0.34984663,0.12859115,-0.35596535,-0.0395504,-0.019919783,-0.21450609,-0.14650743,0.23265977,0.41473433],[0.0023671926,-0.6460285,-0.0019327962,0.14094958,0.38341612,-0.9574827,-0.101965494,0.004554995,0.46401522,-0.12909779,-0.1426274,-0.29289252,0.08252197,0.46871328,0.22656342,0.13870023,-0.055463392,-0.2501583]],"activation":"σ"},{"dense_2_W":[[-0.62714016,-0.42675447,0.39623365,0.09701159,-0.5383957,0.45013547,0.6001207],[-0.35508782,-0.57408017,-0.12564163,0.28653708,-0.08157015,0.20559573,0.46634027],[0.5093158,0.36876306,-0.4645391,-0.65979177,0.57504994,-0.35079157,-0.17476],[-0.31621355,-0.29714108,-0.34154972,-0.78180116,-0.008518251,-0.4106797,-0.19771425],[-0.43568668,-0.17445277,0.23282811,-0.3699338,0.16136363,0.05052372,-0.09912311],[-0.46512806,-0.5448078,-0.08042258,0.6210385,-0.16905335,0.28547442,0.5111774],[-0.034349065,0.5364692,-0.51728934,-0.16454658,-0.22226335,-0.42052928,-0.20821048],[0.33714008,-0.4330567,0.37451595,0.2814601,-0.47018304,-0.39796677,-0.55231714],[0.57910985,-0.024047505,0.30089426,-0.6221561,0.50119555,-0.50120574,-0.7213545],[-0.40165135,0.20899656,-0.2954376,-0.14917205,-0.59254116,0.37713796,0.22864541],[0.6255446,-0.06200693,-0.4204777,-0.036136795,0.446564,-0.2950839,-0.64832413],[-0.26900464,0.49159622,0.3034731,-0.13085237,0.56453574,-0.8307436,-0.28495753],[-0.47413096,-0.7120706,-0.035541266,0.24300101,-0.6801091,0.27434683,-0.107843675]],"activation":"σ","dense_2_b":[[-0.09530544],[-0.091849595],[0.10365482],[-0.28563413],[-0.27218583],[-0.11129274],[0.004807437],[-0.06996],[0.050393272],[-0.10061962],[0.04376929],[-0.04139788],[-0.13395813]]},{"dense_3_W":[[-0.66973096,-0.48279104,0.7676326,-0.5096833,0.2064793,-0.38637576,0.35450128,0.07051719,0.5298366,-0.20001142,0.28865328,-0.04322722,-0.4298923],[0.3608688,-0.3860877,0.34115362,0.10120958,-0.30185267,0.09988014,-0.46597403,0.5618963,-0.13389808,-0.2762836,0.5472369,0.30736694,-0.16745393],[-0.459392,0.11412182,-0.040371146,0.6745572,-0.27183312,-0.536198,-0.15377107,-0.07133568,0.04935285,-0.06970548,0.27231002,0.4255971,0.2895038]],"activation":"identity","dense_3_b":[[0.044112355],[-0.017487336],[0.043834195]]},{"dense_4_W":[[1.0927324,0.054080144,0.7976937]],"dense_4_b":[[0.042528085]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102'.json deleted file mode 100755 index 039dbb74b4..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9339604],[1.088105],[0.44446564],[0.040635813],[1.0915902],[1.0908207],[1.0892842],[1.0640342],[1.0442107],[1.0169972],[0.9836625],[0.040394578],[0.04044262],[0.040480178],[0.040640704],[0.040678967],[0.040454783],[0.040132876]],"model_test_loss":0.012677030637860298,"input_size":18,"current_date_and_time":"2023-08-07_17-34-14","input_mean":[[22.346836],[-0.1010392],[0.011439833],[-0.024613421],[-0.104070425],[-0.103574194],[-0.10293765],[-0.095743805],[-0.08788937],[-0.07853373],[-0.06978028],[-0.024727972],[-0.02470151],[-0.02467759],[-0.024601528],[-0.024534974],[-0.024629418],[-0.024778875]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.15558718],[-2.6034374],[-0.04039103],[0.65522605],[1.2802107],[-0.27219942],[-2.634381]],"dense_1_W":[[-0.24201536,0.7082375,0.0028008588,-0.027780006,-0.17135863,0.8042699,-0.29119372,-0.007927601,0.47618863,-0.03486508,-0.16500926,0.45117432,0.007103674,-0.5084788,0.060515866,-0.011655033,-0.18416026,0.17665891],[-0.4738057,-1.3893577,-0.26687565,0.5591557,0.19673826,-1.0583004,0.4100114,0.08631018,-0.27167842,-0.36606842,0.17948642,-0.91138256,0.396046,0.4691029,0.03294264,-0.1527472,-0.1440006,-0.040798534],[-0.062322266,0.8630222,3.1276238,0.31263065,-1.0991832,-0.350469,-0.7729707,0.5405366,1.1623893,0.3297452,-0.467351,0.8092153,0.47536352,-0.62649566,-0.13063848,0.078494415,-0.9319446,-0.035552464],[2.002557,-0.40489927,-0.013253979,0.0036408182,-0.96465665,0.19661005,-0.953392,-0.20606351,-0.26921293,0.00091835565,0.024142867,0.30179256,-0.05378692,-0.3731178,0.29126972,0.056546733,-0.13077201,0.019902507],[0.016891545,-0.07916437,0.11697357,-0.5920895,0.8242633,-0.11014468,0.3030195,0.35970256,0.08895364,-0.30832535,0.84346753,-0.8849758,-0.47036183,0.11911124,-0.22588879,0.065679416,0.021028057,-0.427552],[9.724902e-5,-0.38385,-0.020528087,0.05751557,-0.14688933,-0.86524874,0.8712383,0.03841566,0.18008858,0.11291066,-0.35409862,-0.13303213,-0.1636967,0.5216691,0.06455103,0.35800162,-0.08108982,-0.05743626],[-0.4588684,0.83262295,0.25882557,-0.19348866,-0.21520121,0.85895246,0.24441022,0.04129096,0.09734719,0.33709678,-0.10813452,0.626401,-0.23454317,-0.4344429,-0.44665545,0.30053115,0.17539406,0.007217913]],"activation":"σ"},{"dense_2_W":[[-0.651883,-0.28622374,0.12934318,-0.29924047,0.45619386,0.49076936,-0.5204953],[0.19332084,-0.8814819,0.12185404,0.1112917,0.09789456,-0.32125413,0.5419122],[-0.0070752506,0.30487537,0.22090623,0.374676,0.5418867,0.1608909,0.16253495],[1.6104504,-0.8317929,-0.48558232,0.23532712,-0.2672344,-1.3590785,1.5980096],[0.1554723,-0.67611736,-0.075388476,0.024493428,-0.4251306,-0.6432536,0.05229573],[-0.44482633,-0.36988914,-0.8266434,-0.77991384,-0.020200279,0.08657742,0.4415185],[0.37289235,-1.3610709,1.2108856,1.1463528,-0.08294851,-0.36348182,0.015509408],[-0.26891112,-0.4422061,0.04140005,-0.25809646,-0.45758307,0.12543325,-0.11151142],[0.6491537,-0.6115983,0.12226665,-0.022036532,0.25215194,-0.39254242,-0.08420935],[0.41343462,0.040416438,0.5110888,-0.30294675,-0.24655536,-0.94380873,0.4448432],[-0.21065868,0.49556023,-0.3594535,-0.1782758,-0.1000126,0.6914605,-0.44446382],[0.50264686,-0.51379687,0.38724154,0.19442251,0.023962934,-0.3308979,0.17989966],[-0.08920153,0.04748019,-0.23014763,0.21383081,-0.33842874,-0.65826106,-0.1681412]],"activation":"σ","dense_2_b":[[0.011876502],[-0.36479667],[0.017360244],[-0.07617602],[-0.23157506],[-0.28419593],[0.06942652],[0.011033443],[-0.086510606],[-0.045363814],[0.03267394],[-0.13571551],[-0.264156]]},{"dense_3_W":[[-0.6548141,-0.13956049,-0.48768273,0.120333016,-0.28902444,0.21501225,0.307953,-0.107009396,0.440212,0.4713256,-0.055264547,-0.3514998,-0.5159563],[-0.096859366,0.5156044,-0.23406532,0.55331874,-0.026274543,-0.5353379,0.25472736,-0.5028626,0.25127223,0.3485652,-0.64658546,0.40520468,0.34961805],[0.60555744,0.38062447,0.51950586,-0.049985483,-0.54793733,-0.44031206,-0.013909685,-0.4211523,-0.22971645,-0.38632122,0.6218737,-0.41705465,-0.09672569]],"activation":"identity","dense_3_b":[[-0.02192258],[-0.031370267],[0.023667987]]},{"dense_4_W":[[0.74219704,1.1328688,-0.6478822]],"dense_4_b":[[-0.026964737]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0000 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0000 4DNAC101'.json deleted file mode 100755 index 49384985ac..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0000 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.0880184],[0.927232],[0.38201457],[0.029326165],[0.9297298],[0.9282585],[0.926674],[0.9185298],[0.9110499],[0.9009496],[0.8885786],[0.02925959],[0.029274147],[0.029276866],[0.029164143],[0.028929831],[0.028371913],[0.027726393]],"model_test_loss":0.002121754689142108,"input_size":18,"current_date_and_time":"2023-08-07_18-58-26","input_mean":[[22.443861],[-0.06408811],[0.0033772418],[-0.0077469447],[-0.063098],[-0.0624671],[-0.061826434],[-0.05872468],[-0.052127004],[-0.04868136],[-0.043194663],[-0.007867037],[-0.0077954014],[-0.0077240258],[-0.0075072567],[-0.0073709814],[-0.007499314],[-0.0075947903]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.4392896],[0.11256368],[-0.009349937],[0.017267969],[0.07836847],[-0.49510518],[-0.36707103]],"dense_1_W":[[-0.0035144198,-0.07837074,-0.10444379,-0.21379957,-0.055707484,-0.43247733,0.12956916,-0.16459478,-0.026531655,-0.41787723,0.11838695,-0.36631712,0.29493195,0.8054866,0.48842925,0.3487459,0.29926014,0.33285514],[-0.00566682,0.0685797,-0.0070852637,-0.1262075,-0.117236935,0.11295796,-0.070642754,0.23535657,-0.13772064,0.20243229,-0.08022183,-0.3007161,-0.27897793,-0.74277157,-0.1217799,0.18944399,0.512346,0.80977684],[-0.00033654989,-0.31247973,-1.0609967,-0.4622876,0.098224156,0.07347569,0.4536589,0.16399379,-0.21179616,-0.25765136,0.28651273,0.2288293,0.3252808,-0.009037016,0.08319518,-0.38650706,-0.22199428,0.3495078],[8.025195e-5,0.117466316,-0.0020013717,0.25343972,0.21027248,-0.3314746,-0.24337924,0.21665736,-0.124749966,-0.16508707,0.118159376,-0.6589648,-0.38464743,0.24033323,0.11305636,0.06770096,0.3398314,0.020196075],[-0.123161614,0.23502746,-1.6969047e-5,-0.08013821,-0.13597044,0.68115455,-0.29792637,-0.023697855,-0.14486383,-0.10938473,0.1794991,0.07350343,0.15798949,0.06415683,-0.18382339,-0.21429943,-0.013510968,0.160445],[-0.0044880393,0.19351251,-0.1222242,0.38997644,-0.82055694,0.039774433,-0.34056687,0.69073474,-0.21781223,-0.43224278,-0.09824878,0.6865208,-0.13685298,0.07766766,-0.13825902,0.3761925,0.53175914,0.50025547],[0.19364405,-0.07879009,-0.0004976161,-0.16666786,0.40081018,0.60932076,-0.4746135,-0.16062911,0.00033986976,-0.12215615,0.24129596,-0.051383093,-0.29511973,0.03366455,0.4457546,0.17353448,0.10611054,-0.27080864]],"activation":"σ"},{"dense_2_W":[[-0.21429534,-0.2805947,0.33813262,-0.55704015,0.19794577,-0.41809848,0.5465813],[0.05483169,-0.48598504,0.2133983,0.4682273,0.08959408,-0.68643206,0.14104469],[0.5768833,0.2345835,0.23833336,0.88208973,-0.7001157,-0.87939644,-0.5970078],[-0.50687236,0.34342203,-0.60396534,-0.39049196,0.1544499,0.37261438,0.6712155],[-0.2097123,-0.5347513,-0.26231483,-0.16484694,-0.0996075,0.47142714,0.6025729],[0.14433241,-0.26973325,-0.40456578,-0.22319494,-0.16914153,0.34973475,0.41994274],[-0.39278847,-0.26437518,0.014975275,-0.3900699,0.20229916,-0.47895268,0.3397611],[0.018268416,0.19815785,-0.16354918,-0.6932698,0.82313913,0.33753312,-0.23361456],[0.84115773,-0.4972589,0.04639677,0.57515514,-1.2003638,-0.4645931,-0.35091218],[0.2870165,0.29187405,0.13971819,0.32765952,-0.43575177,-0.54234403,-0.47328368],[-0.534798,0.1346562,-0.35825455,-0.4411009,0.7369132,-0.24896927,0.43602455],[0.60806775,-0.6560042,0.121712156,0.8236341,-1.3794309,-0.54273456,-0.23115636],[-0.36894193,0.43866634,-0.4424108,-0.3495697,0.2603339,-0.26079863,0.54851836]],"activation":"σ","dense_2_b":[[-0.17165633],[-0.1849741],[0.04078258],[-0.08273829],[-0.16197646],[-0.22186738],[-0.10296965],[-0.15492782],[0.10536137],[-0.21006389],[-0.0909507],[0.008903828],[-0.12633856]]},{"dense_3_W":[[0.12136265,-0.18142237,0.20568378,0.43467548,-0.3135675,-0.30494106,0.32837293,0.43891245,-0.10172039,-0.6920788,0.3248927,-0.36158195,-0.36961478],[0.20634529,0.016585633,0.615192,0.3980539,0.31894875,-0.22123288,-0.44111037,0.21111517,0.5416054,0.48227146,0.4775837,0.023265895,0.086540245],[0.097952254,0.069732554,-0.85863006,0.5982017,0.4785997,0.2211003,-0.16872703,0.26387373,-0.45675164,0.3492257,0.14213935,-0.22985671,0.5829968]],"activation":"identity","dense_3_b":[[-0.089413054],[0.038146988],[-0.09979728]]},{"dense_4_W":[[0.7397742,-0.18844637,1.2101274]],"dense_4_b":[[-0.09552154]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101'.json deleted file mode 100755 index 75ef8f9f84..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.206886],[1.4504983],[0.49971998],[0.04266468],[1.4383729],[1.442444],[1.4449018],[1.4304984],[1.408558],[1.374435],[1.3352983],[0.042570964],[0.04259354],[0.042611882],[0.04251703],[0.04239174],[0.042183105],[0.041899502]],"model_test_loss":0.010444642044603825,"input_size":18,"current_date_and_time":"2023-08-07_19-25-56","input_mean":[[22.475485],[0.031372134],[0.0032399746],[-0.008984418],[0.032596383],[0.032747533],[0.033002835],[0.034930702],[0.03454325],[0.032979634],[0.030567244],[-0.009006616],[-0.008997529],[-0.008991521],[-0.008974956],[-0.008960746],[-0.008996439],[-0.0090720635]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.4730613],[-1.0220556],[2.2321498],[-0.24373206],[-0.12732792],[-0.5460787],[0.106436335]],"dense_1_W":[[-0.41534066,-0.9714392,-0.31006238,0.09352594,0.055552863,-0.83239764,0.31457546,0.21544012,-0.02930472,-0.10614339,-0.15644209,-0.32349718,-0.2776175,0.4681082,-0.023063358,0.07786211,0.2524736,-0.23179433],[-0.95453423,-0.26022857,-0.8862801,0.13255504,-0.07940164,-0.13633952,0.97671944,-0.32103124,0.13677597,-0.54467875,0.006754226,-0.5190258,0.22493096,-0.069508426,0.35693893,0.23997544,-0.24516748,-8.168083e-5],[0.4379902,-0.5599902,-0.32294285,-0.11438441,-0.28119034,-0.41465545,-0.007964375,-0.23656115,0.24708937,-0.0064412868,-0.27999642,-0.06364177,-0.022107648,-0.14844713,0.67481005,-0.39441112,0.21968858,-0.11588854],[0.0060809795,-1.1198676,0.0067951665,0.40737534,-0.17178549,-0.29760578,0.22654669,-0.15745667,0.113858625,0.35876435,-0.29039302,-0.09667714,-0.28005886,0.4659065,-0.2083599,-0.044308778,0.10261238,-0.015207596],[1.192366,-0.13911475,-0.7602778,0.061394785,-0.33700565,0.43223011,-0.383315,0.21897188,0.0576574,-0.06383468,-0.40268126,0.25918442,-0.083131015,-0.057717066,-0.16279124,0.056148607,-0.22752735,0.26602584],[-0.70031285,0.80340934,0.86016697,-0.10652274,-0.49268568,-0.25453496,-0.77597094,0.038994193,0.80372953,0.4799013,-0.42903787,0.16632754,-0.05639839,0.06240709,0.04071726,-0.36329105,0.119140625,0.0075790263],[1.2511556,0.18218865,0.8153701,-0.17519355,0.03620571,0.020730898,0.62968934,-0.6549357,0.038980555,-0.24152188,0.6776999,-0.15306287,-0.034662757,0.29590893,-0.04357369,0.18099506,-0.09237122,-0.09097706]],"activation":"σ"},{"dense_2_W":[[-0.3733046,-0.63211983,-0.2867291,-0.62118083,-0.010183722,-0.8466765,0.16133504],[0.0067310715,0.09728172,-0.6812141,-0.9659649,0.40198094,0.19644472,-0.74384815],[0.9709826,0.20648259,0.1305725,0.3045001,-0.48293394,0.117387146,0.25224584],[1.4520717,0.2679463,-0.0059825173,0.42838717,-0.34279865,-1.3324488,-0.41395462],[-0.14703725,0.24708863,0.47823694,0.2118483,0.19143926,-0.33324513,-0.41627753],[0.63378096,0.0006939869,-0.2391469,1.0002756,-0.46094698,-0.0097055435,0.49494484],[0.1101795,0.34717083,0.48524472,0.53889567,-0.20231925,-0.6760102,0.3543506],[-0.61280346,-0.46988106,-0.82949644,-0.14417309,0.5123994,0.38542563,-0.31748974],[-0.14198948,-0.46256673,-0.24424392,-0.5878419,-0.6047017,-0.9315717,-0.25987655],[-0.20438918,-0.2538593,-1.2795161,-0.36110374,-0.18944141,0.4315354,-0.09864795],[0.35757583,0.24092562,-0.48579407,-0.2887947,-0.2939099,-0.08969654,-0.53155077],[-1.1322478,-0.42064786,0.14613308,-0.4441744,0.60612696,-0.1682891,-0.77085215],[-0.9423813,-0.71970075,-0.32939398,-0.046559554,0.1559522,0.72302336,-0.31480452]],"activation":"σ","dense_2_b":[[-0.0395953],[0.10148138],[-0.08946762],[-0.5085817],[-0.16269651],[-0.09828724],[-0.14257945],[0.028001558],[-0.25607547],[0.19008303],[-0.15752983],[-0.08156744],[0.2400192]]},{"dense_3_W":[[-0.6305707,-0.7183922,0.61189455,-0.12082674,0.584848,0.7042283,0.2124863,-0.44369617,0.06019076,-0.84690446,-0.1584007,-0.1594603,-0.6551266],[-0.46845788,-0.041823298,0.21797846,-0.23213589,-0.018164458,0.39548802,0.30017138,-0.03640287,-0.08625531,-0.6911282,0.25928518,-0.51322585,0.30503047],[-0.070132144,0.36179328,-0.12638825,-0.6702514,0.2901435,-0.48632953,-0.3823228,0.6769935,0.23988372,0.72708833,-0.030890048,-0.0013352007,0.744018]],"activation":"identity","dense_3_b":[[0.030665295],[0.012413447],[-0.042725306]]},{"dense_4_W":[[-0.6892979,-0.21168873,0.8236525]],"dense_4_b":[[-0.033550464]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101'.json deleted file mode 100755 index 889660b7e2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.9665575],[1.5094953],[0.52320474],[0.049412034],[1.494938],[1.5003909],[1.5036423],[1.4904568],[1.4657476],[1.4215478],[1.3661709],[0.049073346],[0.04916127],[0.049235035],[0.049330566],[0.049299713],[0.049100358],[0.048681706]],"model_test_loss":0.006334397010505199,"input_size":18,"current_date_and_time":"2023-08-07_20-16-55","input_mean":[[23.208042],[0.017637342],[0.0033097109],[-0.0011208885],[0.016748862],[0.016963536],[0.017422808],[0.018023973],[0.019261051],[0.018516017],[0.017028408],[-0.0012430567],[-0.00119908],[-0.001152659],[-0.0010296609],[-0.0009178911],[-0.00079258456],[-0.00066169875]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.9270706],[0.34167355],[-0.01630501],[3.9094112],[-0.043808307],[0.15332954],[0.118518315]],"dense_1_W":[[-1.5419726,0.58544344,0.56862235,-0.06356117,0.07506152,0.28493872,-0.35853422,0.20940292,0.24808577,0.45340854,-0.049729943,-0.34037575,0.31803313,0.018770482,-0.05861212,0.21162248,-0.21842924,0.08095126],[-0.07264593,-0.5357274,-0.024528537,0.15763216,0.3570794,-0.42941192,0.094519556,-0.16744949,0.18548526,0.052800182,-0.063974306,-0.5917518,0.29506087,0.2680911,-0.042359374,-0.037600614,-0.09749487,0.073244646],[-0.0029357334,0.72618747,-0.015540882,-0.093255214,0.22835523,0.555266,-0.62294084,-0.17355366,0.3260155,0.08499513,-0.09322718,0.27955085,-0.20150794,-0.20985933,-0.066402666,-0.24783993,-0.23513341,0.08126326],[1.5574979,0.559662,0.567851,0.1754574,0.23001745,0.08429833,-0.1186271,0.104694836,-0.034708384,0.5989565,0.003940667,0.0305492,-0.13524628,-0.33834115,0.23645407,-0.13648601,0.36581174,-0.23015225],[0.01866292,0.70351815,2.7991784,0.10008903,0.32329226,0.06749305,-0.7636863,-0.22283834,0.55308366,0.393383,-0.91913027,0.05840779,0.3406047,-0.19909629,-0.42205387,-0.11921279,0.065681584,0.23244768],[-0.11102194,0.20182216,0.020422867,-0.07504458,-0.041374493,0.92653614,-0.7219375,0.13102369,0.15029763,-0.3139946,0.18343666,0.3855709,0.13207433,-0.15633012,-0.43713525,0.017802745,0.13749008,0.023212397],[-0.12214576,0.27012697,-0.20684451,0.30103195,0.1707631,-0.061825205,-0.5469716,0.43340564,-0.0114306,-0.054020558,-0.16695587,0.03798708,-0.08483028,-0.18931572,0.10700518,-0.017429946,-0.3692487,0.19230193]],"activation":"σ"},{"dense_2_W":[[-0.28481036,0.4442005,-0.49662253,-0.30369344,0.28666368,-0.5901366,-0.19034614],[-0.39463997,0.82266545,-0.47083145,0.26275617,-0.55930537,0.09152094,0.12053862],[-0.065527946,0.7516073,-0.38549796,-0.4017811,-0.5203226,-0.34265035,0.35704702],[0.49352384,-0.07352777,0.31377402,-0.31515568,0.24645923,-0.40181553,0.16380012],[-0.44656533,0.9368167,0.067596,-0.3864591,-0.21814522,-0.50566894,-0.037946723],[-0.11529442,-0.77994573,0.49268404,0.60564643,0.42883676,0.14445429,0.1348402],[0.2191809,-0.33139595,0.16480243,0.16290003,-0.0043159393,0.6970341,-0.041437156],[-0.46837336,-0.39128634,-0.3864894,-0.42419514,0.5158304,0.16268568,0.089716256],[0.33990654,-0.64127713,0.6676083,-0.027778113,-0.36237058,0.54869413,0.3664469],[0.56407857,0.14337154,-0.07523904,-0.20489646,0.29481626,0.22405949,-0.68056136],[-0.039734222,0.16601059,-0.36197644,-0.5222118,-0.7296214,0.16421038,-0.07977159],[-0.1643846,0.2016056,0.0016275152,-0.34612948,-0.37732452,-0.4296534,0.097400256],[-0.32195345,0.8429351,-0.26391914,-0.64564407,0.23150569,-0.26123956,-0.60648614]],"activation":"σ","dense_2_b":[[0.10372978],[0.12321004],[0.13260162],[-0.16394557],[0.07401815],[-0.18640429],[-0.14209749],[-0.15091346],[-0.1005035],[-0.18927059],[-0.04283729],[-0.29649624],[0.123969376]]},{"dense_3_W":[[0.19306692,0.2528086,-0.3471299,0.34726095,-0.6172253,0.20776936,0.25171283,-0.26050565,0.62590677,-0.57339996,0.2380261,-0.6438946,-0.26486552],[0.6904486,0.42464823,-0.35924688,0.54782605,0.543181,-0.4043161,0.009881902,-0.16082425,-0.42172116,-0.22864279,0.05615898,-0.28659266,-0.4109365],[-0.29332277,-0.5604171,-0.74596137,0.29303262,-0.14240001,0.4824831,0.46960396,0.37756348,0.60751295,0.49847186,-0.4308299,0.2783596,-0.70612234]],"activation":"identity","dense_3_b":[[-0.056833137],[0.060321722],[-0.06470401]]},{"dense_4_W":[[0.8418126,-0.58512366,1.0991992]],"dense_4_b":[[-0.059645038]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102'.json deleted file mode 100755 index e5e8da5f6b..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.209062],[1.0191541],[0.56490785],[0.03716055],[1.0188767],[1.0189412],[1.0184771],[1.020577],[1.0258486],[1.0280116],[1.0317844],[0.037011214],[0.037051532],[0.03710102],[0.03726322],[0.03710542],[0.036862206],[0.036776513]],"model_test_loss":0.002482755808159709,"input_size":18,"current_date_and_time":"2023-08-07_20-41-25","input_mean":[[26.846655],[-0.005333997],[-0.006017142],[-0.010085426],[-0.0068516037],[-0.006621865],[-0.007106698],[-0.0063117202],[-0.001445884],[0.0037559327],[0.00702609],[-0.010317291],[-0.010258594],[-0.010206334],[-0.010051272],[-0.009953821],[-0.01002816],[-0.010258082]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.04493686],[1.2359415],[-0.16813134],[0.30498078],[-0.004396829],[-0.11936104],[-0.10290137]],"dense_1_W":[[0.028586365,0.6713196,0.037628382,0.4525395,-0.4088543,-0.52644724,0.25289974,-0.106175065,-0.05286671,-0.105505764,-0.06060507,-0.066001944,-0.16948535,-0.14447865,0.15240416,-0.12086707,-0.22067334,0.29359263],[-0.25259453,0.72662085,-0.019954639,-0.37567586,-0.14041515,-0.110880576,0.028293425,-0.111130856,0.09566052,-0.21661228,0.100265615,-0.12622023,0.32393003,0.1720742,0.23493229,-0.2314176,-0.29668775,0.054298155],[0.0075020846,-1.0379118,0.058415513,-0.6336649,0.1777533,0.3996224,-0.14824356,0.53841037,0.20370372,0.06709238,-0.20242065,0.16530342,0.005269978,0.07914464,0.18396617,0.3359595,0.11940208,0.41780698],[-0.26971325,-0.29349837,0.016340017,-0.28127313,0.19968756,-0.35273314,-0.12725332,0.16223203,0.31847185,-0.08272004,-0.13002057,-0.23478554,-0.21000664,0.18946603,0.4066612,0.3821535,0.22385387,-0.25274214],[-0.011883075,0.35591817,1.8070056,-0.06357242,-0.49122602,-0.32094464,-0.035770092,0.23602432,0.17338297,0.42658088,-0.5602121,0.20542847,0.16731963,-0.7897803,0.1867783,0.29209885,0.06069555,-0.044831645],[-0.1184021,0.49316457,-0.011386314,0.28487483,-0.52669007,0.39699084,-0.15737064,0.023462037,0.13752255,0.11296199,-0.18964504,0.13462819,0.020783164,-0.37708953,-0.05232704,-0.2913591,0.2881553,-0.29922846],[-0.00057304814,-0.1185001,-0.13426046,-0.5729028,-0.01707388,-0.430987,0.17981416,0.108656205,-0.09637776,0.20971496,-0.047136426,0.10920909,0.16905956,0.19190785,0.0035438074,-0.025583372,0.28871274,-0.07032088]],"activation":"σ"},{"dense_2_W":[[-0.49437255,-0.3074483,0.12577564,-0.80536854,0.3818203,-0.2508327,-0.77941257],[-0.590948,0.057729438,0.5775266,-0.82149684,-0.16385625,0.26468316,-0.1986721],[-0.8693337,0.20204362,0.1808782,-0.6436834,0.3982201,0.04757887,-0.7291577],[0.48308417,-0.22587106,-0.62049073,0.30455,0.25944746,-0.08833746,0.29077286],[-0.050321363,0.29200885,0.25033513,-0.55846786,0.1142234,0.7839083,-0.91171724],[0.52267236,0.182393,-0.44948658,0.33957008,-0.57718825,-0.3744284,0.7962124],[-0.5793259,-0.39043754,0.56887144,-0.95162636,-0.04339133,0.38223684,-0.22251375],[0.29715785,-0.73829925,-0.6508201,0.26157615,-0.04009715,-0.3925987,0.42690706],[-0.5547783,-0.23581004,-0.20441227,-0.7084414,-0.7474019,0.15549515,-0.3855206],[0.74185896,-0.4140863,-0.5546949,0.042983074,0.33081874,-0.43315694,0.48314857],[-0.94190675,-0.1646355,-0.072953984,0.065710135,0.06073757,0.06576593,-0.103899956],[0.016691964,-0.77896374,-0.30583504,0.5844499,-0.4492795,-0.8628446,0.3806826],[-0.8750809,0.30358797,0.28483135,-0.42145577,0.469206,0.36288846,-0.21708845]],"activation":"σ","dense_2_b":[[-0.16136013],[-0.147815],[-0.048753243],[-0.020298453],[-0.06278913],[-0.051829122],[-0.26132149],[0.015052996],[-0.2423293],[-0.06199252],[-0.122265354],[0.0028793006],[-0.06900899]]},{"dense_3_W":[[0.35378894,0.46196505,0.25659692,0.03284285,0.061739363,-0.08112019,0.21352358,-0.7698974,0.073869765,-0.54001474,0.1673904,-0.12502979,0.46009788],[-0.058786314,0.07694819,0.7003563,-0.64618176,0.6994461,-0.4292753,-0.09363771,-0.04728599,0.1309421,0.060272142,0.29588172,-0.62102175,0.56741786],[0.3380847,0.40602964,0.22502236,0.46803278,-0.7782516,0.16471472,-0.37719798,0.038931362,0.22495954,0.6876152,0.021589195,0.5572496,-0.62703234]],"activation":"identity","dense_3_b":[[-0.045253523],[-0.04910254],[-0.007204871]]},{"dense_4_W":[[1.0239853,0.8379715,-0.19809574]],"dense_4_b":[[-0.042378113]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0000x00 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0000x00 4DNAC101'.json deleted file mode 100755 index d9e967aaa0..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0000x00 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9410305],[1.0135205],[0.43755898],[0.035255913],[1.0150132],[1.0147188],[1.0138017],[1.0047818],[0.99736667],[0.9853777],[0.97017664],[0.035170607],[0.03518756],[0.035202954],[0.03514626],[0.03504212],[0.03485243],[0.034570012]],"model_test_loss":0.003483835142105818,"input_size":18,"current_date_and_time":"2023-08-07_21-07-13","input_mean":[[24.285349],[-0.05928403],[-0.01614233],[-0.009645592],[-0.053309042],[-0.05531696],[-0.056520157],[-0.062387902],[-0.06518509],[-0.06607999],[-0.06631701],[-0.009559443],[-0.009565792],[-0.009585358],[-0.009782268],[-0.009886353],[-0.010085134],[-0.010364845]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.32126558],[0.036132913],[0.14653946],[-0.16673681],[0.011947655],[0.8634933],[-0.8429776]],"dense_1_W":[[0.4527837,-0.36523563,-0.00895103,0.0708803,-0.37383398,-0.15341127,0.58478814,-0.08056343,0.17823605,-0.26987255,0.11071506,-0.03524059,-0.19979352,0.007495296,0.41383117,0.05486684,0.34592432,-0.36494422],[-0.005359442,-0.2667065,0.013745064,-0.084581405,0.24264771,-0.15815671,-0.086041525,-0.26656815,0.012661911,-0.2871439,0.47772396,-0.571899,0.061434507,-0.15776612,-0.11044384,0.37591726,0.2713445,-0.026513515],[0.004771754,-0.26444337,-3.0509355,0.42927757,-0.16592573,-0.5067485,0.500884,0.20909443,0.04189764,-0.027662966,0.37295133,-0.43910545,-0.21445197,0.1298138,-0.10558352,0.2703849,0.1670119,-0.43948233],[0.39938697,0.29979974,0.008373226,0.16164267,-0.26766345,0.43186393,-0.039016787,0.019693874,0.1261662,-0.37198588,0.1659897,0.1892901,0.117931575,-0.6488737,-0.16253956,0.0455478,-0.0022032904,0.025826642],[-0.011956519,0.021317355,0.021973232,0.3160384,-0.28960922,-0.29251087,0.60586154,-0.41510195,0.128146,0.22726218,-0.32743308,-0.2132152,-0.10418378,0.035125237,0.119344465,-0.1968828,0.0840623,-0.04892973],[0.4348723,0.22955361,0.015684376,-0.16318707,-0.31230125,0.19132592,-0.2461668,0.23461606,0.09528534,0.4775696,-0.3119358,0.0008261773,-0.13662255,-0.09776182,0.34027192,0.13092493,0.0071137655,-0.14361662],[-0.32389423,0.38325608,0.0145612145,-0.11149766,0.051686168,-0.008923491,-0.25343153,-0.36856908,0.40953627,0.27845463,-0.15776885,0.014580425,0.035484746,-0.1405985,0.008262141,0.0750361,0.22170645,-0.17522527]],"activation":"σ"},{"dense_2_W":[[-0.6714466,-0.34783113,-0.12780505,0.91295844,-0.19930731,0.36767703,0.5786663],[-0.6771721,-0.11134032,-0.033869732,0.45200992,-0.19539332,-0.059520427,0.39429346],[0.43033612,0.83407825,-0.5783082,-0.9366921,0.93509126,-0.028040314,-0.72735274],[0.15360972,0.077082366,0.35429364,-1.051215,0.7068334,-0.85113597,-0.18565065],[-1.3485137,0.31199598,-0.9909041,0.35103118,-0.8839503,-0.51250356,1.0146881],[-1.1571593,-0.21886723,0.22874051,0.36782742,-0.33092886,0.5572583,0.21506594],[-0.86161023,-0.9853974,-0.45453233,0.28777933,-0.9925813,-0.37540138,0.96739244],[-0.5824667,-0.54830873,-0.7745198,-0.02694336,-0.8390693,-0.05262828,0.9321934],[0.90932316,0.36091605,-0.29672763,-0.4059818,0.5786526,-0.32232416,-0.83604115],[-0.0006442681,0.18862467,-0.693046,1.0736086,-0.44083816,0.92259085,0.4656397],[-0.1815308,0.3588715,0.97227794,-1.3006788,0.060749445,-1.4515802,-0.3403856],[0.13273185,0.4301123,0.09077474,-0.66371524,0.5008187,-0.8510345,-0.8018143],[-0.32866758,0.45398203,0.11124515,-0.40842384,0.4973462,-0.7254867,-0.8856933]],"activation":"σ","dense_2_b":[[0.0012725799],[-0.11492474],[-0.017718269],[-0.3617725],[-0.1245201],[-0.038838513],[-0.22801119],[-0.1657449],[-0.04381892],[0.11536696],[-0.42785484],[-0.074301556],[-0.3165186]]},{"dense_3_W":[[0.7072188,0.32837203,-0.8357544,-0.07334732,0.36024168,0.6057319,0.73583984,-0.059062883,-0.6172043,-0.002954617,-0.55209947,-0.6971218,0.38010213],[-0.69038504,-0.23186448,0.36981446,-0.3447812,0.38637486,-0.032711018,-0.046227716,0.39877996,0.38114014,-0.111415684,-0.082114026,0.21984167,0.5183156],[-0.51899433,-0.12916048,0.5884876,0.71727073,-0.6060962,-0.33618042,-0.24320374,-0.5715705,0.822553,-0.59673494,0.3488014,0.63506675,0.38828656]],"activation":"identity","dense_3_b":[[-0.0030867092],[-0.08421286],[-0.05693552]]},{"dense_4_W":[[0.26367742,-0.0008218267,-0.6682586]],"dense_4_b":[[0.034324795]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0010x00 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0010x00 4DNAC101'.json deleted file mode 100755 index 5988f76d32..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0010x00 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.724716],[1.4959972],[0.5397873],[0.048951324],[1.4975377],[1.4972339],[1.4954233],[1.4662817],[1.4340023],[1.3873618],[1.3405958],[0.048942763],[0.048936542],[0.048920844],[0.04871155],[0.04843174],[0.047928806],[0.047302604]],"model_test_loss":0.008742202073335648,"input_size":18,"current_date_and_time":"2023-08-07_21-34-23","input_mean":[[22.895647],[-0.05509051],[-0.0009339962],[-0.0024197318],[-0.05186684],[-0.05237507],[-0.052418586],[-0.051652323],[-0.04790127],[-0.043305434],[-0.039102893],[-0.0023933721],[-0.0023879136],[-0.0023819967],[-0.0023226556],[-0.0023347258],[-0.0023805785],[-0.002389813]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.1189297],[0.028616758],[-0.120110326],[-1.3364003],[-1.155689],[4.545205],[4.6856055]],"dense_1_W":[[1.6764991,-0.2165616,0.02171967,0.16306138,-0.33178213,-0.51356286,-0.92342836,0.073167734,-0.3029504,-0.49412876,0.22411734,-0.050114613,0.45258516,-0.39424014,-0.27986053,0.68608093,0.5258633,-0.16820106],[-0.052571695,0.91275,-0.014465118,0.043426633,-0.025098825,0.6740059,-0.13264339,-0.07667199,-0.09834313,0.036156673,0.09688627,-0.3393718,0.2594245,-0.45005876,0.22202903,0.16855074,-0.18687673,-0.25429112],[0.035393406,0.03501877,2.4415658,-0.43501148,-0.05228597,0.2040651,-0.20346655,0.38124704,0.24086578,0.21851066,-0.5910301,0.24155477,0.3626571,-0.36362377,-0.028416263,-0.33286482,0.31952125,0.0679023],[1.2067224,0.446494,0.0043112906,-0.16087066,0.18499684,0.39496493,-0.5509506,-0.075064704,0.13784459,-0.0049934876,0.006677537,0.26749933,0.39251417,-0.03499381,-0.6604564,-0.17244674,0.16260312,0.11549027],[1.0689722,-0.8116208,-0.006096875,0.34023157,0.47210988,-0.4384605,0.5331227,-0.41759884,-0.069540545,0.19452903,0.044704154,-0.47479782,-0.5569904,0.34265992,0.62784165,-0.021865688,-0.0069787498,-0.18864322],[1.831592,0.787637,0.15575852,0.030726168,0.3170631,-0.2733012,-0.09314743,-0.054926086,0.25987238,0.3793867,0.17776896,0.3717297,0.16224486,-0.16089486,-0.75732154,0.07296396,0.22855438,0.05832146],[1.7819636,-1.194306,-0.15287273,0.1887876,0.27201483,0.029433675,0.21670823,-0.35105628,-0.034238473,-0.11963524,-0.24842486,-0.26960924,-0.4148937,0.21680552,0.606679,-0.034082934,-0.29762813,-0.009257641]],"activation":"σ"},{"dense_2_W":[[-0.4629005,-0.4974006,-0.2904858,-0.6057455,0.7039836,-0.41832525,1.0372955],[0.28977782,0.80422324,-0.13876091,0.116478674,-0.019442132,0.9098352,-0.26412618],[0.26888716,-0.03308781,-0.11852592,0.05119105,0.31046206,-0.46183512,-0.50962996],[-1.0175097,-0.2795209,-0.91239053,-0.49764445,0.46378636,-0.72158617,-0.30564114],[-0.13860786,-0.5658692,-0.37510815,-0.2453204,-0.09008834,-0.40480798,-0.38012755],[-0.44616798,0.29338104,-0.093062796,0.35459974,0.14732593,0.3038334,-0.11383935],[0.22607525,-0.17798835,0.35510284,0.40880376,-0.8194073,-0.17143391,-0.46821502],[0.4565513,-0.55615324,-0.13392484,-0.49555677,0.7522913,-0.8161395,1.1037465],[-0.12025648,-1.121007,-0.07142694,-0.48535815,0.806789,-0.2798449,0.904912],[-0.6080642,-0.3117671,-0.7829517,-0.8494238,-0.41115513,-0.7792509,-0.17217514],[-0.3106535,0.37121254,0.16562602,0.6343219,-0.45030606,0.21602832,-1.0619884],[-0.48947912,-0.78191125,0.010906762,-0.2521157,0.61846507,-1.1840519,0.18846932],[-0.2804687,-0.8394935,-0.39661968,-0.5188922,0.90818566,-0.8677206,-0.12709521]],"activation":"σ","dense_2_b":[[-0.0071314005],[-0.017422963],[-0.04535261],[-0.2071086],[-0.061347343],[0.0069322526],[-0.026729736],[0.07267423],[-0.18793571],[-0.049161524],[-0.05531663],[-0.099349104],[0.08250706]]},{"dense_3_W":[[-0.25297967,0.50810736,-0.46908683,-0.03641949,0.038947254,0.34386054,0.5226972,-0.039223388,0.1741124,-0.5845979,0.7130592,0.2419447,-0.4491347],[0.5216683,-0.018714925,-0.06133189,0.31551158,0.32538223,-0.11293018,-0.16491419,0.6735836,0.35999843,0.32989758,-0.6725572,0.58409536,0.079916805],[0.038063955,0.29448617,0.57898533,-0.0692794,0.28799778,0.13160062,-0.37904146,-0.67243326,-0.32990336,0.2804782,-0.2603852,-0.19796656,-0.3136028]],"activation":"identity","dense_3_b":[[0.06003448],[-0.08627991],[0.07051213]]},{"dense_4_W":[[0.9887464,-1.0906954,0.7141598]],"dense_4_b":[[0.06921589]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC101'.json deleted file mode 100755 index c9966e62df..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.973185],[1.2308006],[0.47124374],[0.039767727],[1.2234948],[1.2267562],[1.228702],[1.2206274],[1.2050939],[1.1789762],[1.1437212],[0.0397065],[0.039725386],[0.039734013],[0.039686594],[0.039645616],[0.039555065],[0.039334625]],"model_test_loss":0.005078984424471855,"input_size":18,"current_date_and_time":"2023-08-07_22-00-26","input_mean":[[22.121334],[-0.010464258],[-0.004889951],[0.003433857],[-0.00816012],[-0.008416927],[-0.008662932],[-0.008998272],[-0.008217049],[-0.0068580806],[-0.006010885],[0.003438706],[0.0034568459],[0.0034763422],[0.0035396859],[0.0035731636],[0.0036217745],[0.0036836462]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10654221],[-0.2905768],[-2.871999],[-0.1245177],[0.16143306],[0.082655065],[2.428078]],"dense_1_W":[[-0.009274342,0.5175485,-0.040819537,-0.2658763,0.66790605,0.5001351,-0.3282055,-0.21050686,0.13056423,-0.19473574,0.27589467,0.500145,0.09231609,-0.6249076,0.07356131,-0.2784489,0.2743887,-0.14142068],[0.045650993,-0.7187672,-3.9221926,0.25971168,0.0050335308,0.815766,0.9371128,-0.28306046,-0.60010844,-0.4402398,0.334732,-0.3486068,-0.43578961,0.25923377,-0.06565995,-0.33657274,0.63861084,-0.118178956],[-0.21374783,0.42282847,0.266799,0.05025237,0.0064825355,0.820618,0.2315524,0.26671964,-0.082816996,0.4062073,-0.17926975,0.1487991,0.139769,-0.3999773,-0.13033853,-0.06021389,0.13246544,-0.12687539],[2.2001243,-0.46080446,0.021041024,-0.025847267,-0.0166095,-0.59955376,0.71440715,0.577141,0.040229637,0.1345268,-0.21883093,-0.07305829,0.07283621,-0.030786302,0.3648521,-0.32475784,0.45030454,-0.24509932],[0.0038562298,-0.60293394,-0.020617504,0.019694017,0.3763915,-0.5692821,0.9114758,-0.21734723,-0.1944635,-0.018555427,0.17110226,-0.13353539,-0.5393221,0.6298117,0.1664842,-0.04548269,0.03591765,-0.080464125],[2.0805016,0.294753,-0.015689991,-0.55368453,0.109172165,0.39725655,-0.34113577,-0.54655766,-0.3882753,0.09528684,0.21858771,-0.055341844,0.22205897,-0.2005731,0.5021007,0.059200656,-0.046633355,-0.09212842],[0.21265858,0.5654287,0.24386185,0.10141437,0.066008195,0.45167878,0.1299337,0.4275724,0.05719904,0.15785104,-0.13811876,0.19489175,-0.2531665,0.06650904,-0.31723106,-0.05296288,0.14543928,-0.10396655]],"activation":"σ"},{"dense_2_W":[[0.7208203,-0.5637391,0.59667504,-0.24075457,-0.9961346,-0.13531135,-0.12724179],[0.08353179,-2.235628,0.29917157,-1.315324,-0.22382064,-1.8709669,-0.44139647],[0.5387289,0.32765672,0.35890356,-0.52188003,-0.70411855,0.3507985,0.5237647],[-0.25249085,0.050148275,0.6831794,-0.27731276,-0.10181721,0.8868131,0.51331794],[-0.061348394,0.0007661709,-0.43009564,-0.5424198,0.14139919,-0.5450331,-0.039015777],[-0.18883842,0.14738812,-0.23603185,-0.3689771,0.36367714,0.12600073,-0.4179159],[-0.4459407,0.36866704,0.113049746,0.29777262,0.1801355,-0.38669178,-0.7965472],[-0.017579421,0.05280841,-0.38046154,0.4176994,0.14375417,0.10180892,-0.53780746],[-0.13019691,0.32150963,-0.7783258,0.4411255,0.9020806,0.30856878,-0.24670088],[-0.71212524,-0.3333824,-0.10890434,-0.05027984,0.58339226,-0.3812356,0.18127146],[0.4350403,0.11608274,0.16477108,-0.072991945,-0.6695063,-0.11097746,0.06759265],[-0.7526205,0.5938332,0.34072697,-0.696911,0.17783667,-0.74074334,-0.9378376],[0.804114,-0.12623003,0.16351596,-0.31503728,-0.7229197,0.40303767,0.2082207]],"activation":"σ","dense_2_b":[[-0.31468102],[-0.17055899],[-0.2285355],[-0.097128555],[-0.010586535],[-0.015096155],[-0.0655667],[0.019932993],[0.071114086],[0.026876245],[-0.35583144],[-0.100859694],[-0.06898828]]},{"dense_3_W":[[0.2983101,-0.7078514,-0.65568393,-0.36758986,0.13057497,0.6307905,0.36659017,-0.25304082,0.42478424,-0.14673297,-0.34746668,-0.24960928,-0.6091494],[-0.3587975,0.03995377,-0.4216834,-0.5777477,0.10252213,-0.20580202,0.28845647,0.40347326,0.67879415,0.48831588,0.15095003,0.6822594,-0.04936859],[0.22906187,0.17523333,0.50960416,0.23045082,-0.21069351,0.058853656,0.3477555,-0.40553525,-0.54917115,0.047501687,-0.12622266,-0.13184138,0.646118]],"activation":"identity","dense_3_b":[[0.042785127],[0.029713841],[-0.12879385]]},{"dense_4_W":[[-1.0081478,-1.2892519,0.112720646]],"dense_4_b":[[-0.032802135]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC102'.json deleted file mode 100755 index 988cca6227..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.848481],[0.8862211],[0.48629978],[0.033282995],[0.8825565],[0.8842056],[0.88548553],[0.8823946],[0.8792348],[0.8754788],[0.869421],[0.03292297],[0.03304511],[0.033158313],[0.03340195],[0.033433877],[0.033367477],[0.03335788]],"model_test_loss":0.004575948230922222,"input_size":18,"current_date_and_time":"2023-08-07_22-26-28","input_mean":[[18.430927],[-0.07129647],[0.018491521],[-0.026260056],[-0.07448064],[-0.073375314],[-0.07258443],[-0.065266214],[-0.063046746],[-0.059541434],[-0.054584157],[-0.02657762],[-0.02647423],[-0.026383044],[-0.02612497],[-0.026040455],[-0.026031366],[-0.026007706]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.001867291],[2.5971534],[0.22938758],[-0.22608748],[-2.7614555],[-0.07245665],[0.011351448]],"dense_1_W":[[0.0048964336,0.32368863,0.0071244487,-0.06219253,-0.69971055,0.66141987,-0.1635048,-0.32375827,0.06625927,-0.06529672,0.21220222,0.6800635,-0.10624061,-0.30102918,-0.25439295,-0.24798034,-0.30751342,0.45424858],[0.8717096,0.27175072,0.008614075,-0.39488295,-0.5048402,-0.07688018,0.21375221,0.25862306,0.3802419,0.780373,-0.34666312,0.07282488,0.2847437,-0.38848653,0.20993155,0.44143435,-0.11863596,-0.10396724],[-0.0052353255,-0.31822816,0.004281337,-0.30333275,0.034296587,-1.0526781,0.15911727,0.13257483,0.3769281,0.06922915,-0.31705686,-0.13642934,0.15893984,0.35623473,-0.2221777,-0.53985226,0.31177884,0.1331077],[-0.0026488309,-0.46307364,0.0040305443,0.21302664,0.10572383,-0.33876655,0.11481708,0.06491223,0.22308613,0.20670146,-0.18406537,0.18875864,0.001323788,-0.15270492,-0.009875742,0.10065525,-0.10484487,0.07724725],[-0.8517313,1.2480507,0.009313202,-0.59048694,-1.1145165,0.34028202,-0.09743023,-0.15318984,0.5041415,0.41274792,-0.16457404,0.8264525,-0.21307376,-0.43806297,0.17587166,0.0247668,0.416932,-0.20631395],[-0.0018124692,1.0170236,-2.7477639,0.19892676,-0.17666285,-0.57476693,0.5719481,-0.52562296,-0.88914037,-0.8647134,1.5394452,-0.3119364,0.088813215,0.07492086,-0.11926867,-0.3707679,0.21501637,0.24960175],[-0.023958094,0.095316805,-0.016534787,0.16063792,0.04441202,0.39860037,0.024935467,0.1530449,-0.15884824,-0.40695116,-0.09302091,0.56395507,-0.28016278,0.13766079,-0.5281072,-0.44597715,0.28976548,0.1696837]],"activation":"σ"},{"dense_2_W":[[0.15154204,-0.78675294,0.22928046,-0.033503618,-0.15833412,0.45278502,-0.4705822],[-0.5834908,-0.14377658,0.38843614,-0.029937692,-0.35921872,0.36018422,-0.058587343],[0.053825956,-0.6018707,0.35535994,0.5998146,-0.44884253,-0.37599027,-0.13201852],[0.073090784,0.5060707,0.09179472,-0.24177255,0.38017172,-0.23855892,0.20076287],[0.06758576,0.10149547,-0.86642444,-0.6211972,0.19965667,0.40455145,-0.032479934],[0.5254006,0.2655984,-0.13189656,-0.57774425,0.29848206,-0.013868569,-0.47990555],[0.5851224,0.48843405,-0.07289669,-0.42773506,0.3975408,-0.44622093,0.1360654],[-0.015633296,-0.62110466,-0.38382724,0.0018601576,0.1371097,0.0743509,-0.3674576],[-0.6463754,-0.70364404,0.25133833,0.18379001,-0.28124034,0.38435185,0.32847217],[-0.61743426,0.28012255,0.51616675,0.08034732,-0.3428058,0.39314508,-0.211209],[-0.4220699,-0.4960329,0.33365622,0.41486493,-0.45122844,-0.29246688,-0.30248302],[0.09507034,-0.3089235,-0.5273463,-0.7179823,0.86094236,-0.2863892,0.14491831],[0.24167342,-0.19868858,0.18480074,-0.42431474,0.15458284,0.12002474,0.038593136]],"activation":"σ","dense_2_b":[[-0.053941116],[-0.019561898],[0.053443328],[-0.07374648],[-0.30186814],[-0.10220643],[-0.006079856],[0.005632312],[-0.06199264],[0.0008034756],[0.06794324],[-0.13134351],[-0.025431834]]},{"dense_3_W":[[0.6019684,0.08368994,0.11931014,-0.5326191,-0.5951374,0.17335932,-0.6391729,0.5901674,-0.44038236,-0.26132423,-0.13372217,0.4315051,0.07855694],[-0.38172075,-0.4879406,0.26037207,-0.19332667,-0.50175065,0.5571594,0.3143821,0.21798374,-0.5415063,-0.11827112,-0.7028584,0.52945256,0.61205876],[-0.27886352,-0.20352115,0.5313796,-0.33827436,-0.23451158,-0.11697601,-0.4642654,0.21843909,0.17134716,0.55283946,0.53888303,-0.64016294,0.59808445]],"activation":"identity","dense_3_b":[[0.028694455],[-0.02157225],[0.021652581]]},{"dense_4_W":[[-0.88839185,1.1335969,-1.251347]],"dense_4_b":[[-0.02365967]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100'.json deleted file mode 100755 index 982d9a2e7a..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8251824],[0.97374165],[0.39678615],[0.039650038],[0.9675714],[0.96974653],[0.971445],[0.96010584],[0.9482498],[0.93838036],[0.9262751],[0.039522577],[0.039549936],[0.039577607],[0.03943945],[0.039266065],[0.03906478],[0.038730167]],"model_test_loss":0.005850189831107855,"input_size":18,"current_date_and_time":"2023-08-07_22-51-04","input_mean":[[23.948711],[-0.11042184],[0.0008513909],[-0.004719362],[-0.10913178],[-0.109804966],[-0.11005321],[-0.10579765],[-0.10312579],[-0.10175711],[-0.098089136],[-0.0047842367],[-0.004759096],[-0.0047326833],[-0.0044965143],[-0.0043862625],[-0.0043439874],[-0.004256917]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.19536564],[-0.0041716034],[-1.7697656],[0.034405522],[-0.9804138],[1.5592381],[-4.038623]],"dense_1_W":[[-0.96289176,-0.16844435,-0.33135042,0.04781623,-0.0905433,0.31838787,-0.7973821,-0.6977461,-0.22462271,-0.15944098,0.05584555,0.032361288,-0.017556911,-0.4097252,0.08451744,0.47493675,0.24613103,-0.13016479],[0.0025252467,0.36295822,0.0051952563,-0.061572302,-0.35887212,0.22229104,-0.22204724,0.034594852,0.14076412,-0.17208177,0.011452716,0.090597436,0.29632482,-0.23263389,-0.075431645,0.027754778,-0.26631972,0.22669151],[0.98580307,0.1460111,-0.006533776,0.25585753,-0.2031787,0.75645447,-0.19832224,0.22909965,-0.22415143,0.056795266,0.034398753,0.4630238,-0.19674145,-0.13854524,-0.4064176,-0.12922981,-0.060546197,0.065589026],[0.045029007,0.50269336,2.7796633,-0.0076377117,-0.63786316,-0.06653349,-0.55045384,0.08327676,0.27944806,0.5322522,-0.36390388,0.3737667,-0.20071353,-0.21758012,-0.16247746,0.31800562,-0.12797713,0.037218444],[-0.55134237,-0.18539825,-0.19819416,0.27468693,-0.15253156,-0.55906934,0.24991404,-0.03944831,-0.2475911,-0.038619418,-0.102022864,-0.13440825,-0.39271066,0.31743523,-0.016324805,0.19443971,-0.21604395,0.17059657],[-1.036423,-0.37088332,-0.0090809995,0.4914565,-0.09154215,0.25218782,0.24309473,0.30631322,0.35170037,0.23679022,-0.34137195,0.12669902,0.0069693094,0.13518511,-0.4373841,-0.6247206,-0.14910895,0.30531472],[-1.0771234,0.76018256,0.35249147,-0.31738096,0.097953156,0.07492969,-0.1556959,0.533758,0.14374508,0.8647132,-0.44715706,0.62586576,0.11443575,-0.3779071,-0.2320536,0.10263231,-0.2999651,0.04361549]],"activation":"σ"},{"dense_2_W":[[-0.10324592,0.11039738,0.51771843,0.09347721,-0.87196016,0.6635172,0.24947388],[0.024585094,0.59421515,0.068763964,0.5486269,-1.4608854,0.88192827,-0.39993966],[0.4413766,0.7881249,0.39034104,0.18230437,-0.9140034,0.05566271,0.09512442],[-0.47279245,-0.3493564,0.14005436,-0.5340587,0.5966407,-0.46430302,0.22444999],[-0.45392346,-0.04614412,-0.35355964,-0.18547632,0.3873904,-0.7008455,0.12206877],[-0.36739802,0.20268749,-0.12268851,-0.106193095,0.5999196,-0.37765756,-0.44922847],[-0.54880965,-0.7290866,-0.28915912,0.17727232,0.38667715,-0.6511501,-0.1383285],[0.52068883,0.50054383,0.6252861,-0.23605038,-1.4634428,0.41514036,0.9438054],[-0.648459,0.2471083,-0.65482795,-0.119111195,-0.30439776,-0.04859132,-0.6602194],[-0.5173293,0.11870849,-0.33469254,-0.796215,-0.45731404,-0.4510818,-0.40196368],[-0.45839694,-0.41415405,-0.6876088,0.11170082,-0.13311273,-0.35558105,-0.49632224],[0.39769867,-0.35987017,-0.20037495,-0.5226243,0.72143537,-0.20635548,-0.46655688],[-0.37865394,0.016113892,-0.520626,-0.25705534,0.94881725,0.11235735,-0.83941835]],"activation":"σ","dense_2_b":[[-0.4009523],[-0.35328817],[-0.17279775],[0.024035925],[-0.0030043991],[-0.0042769755],[0.08547396],[-0.49828207],[0.03243174],[-0.38892063],[0.16030122],[0.15409443],[0.15423937]]},{"dense_3_W":[[-0.35692686,0.11431418,-0.20940931,-0.16842283,0.5645013,-0.037901483,-0.5341042,0.054549012,0.54704887,0.54749495,-0.27935258,-0.17022972,-0.36970934],[-0.4523077,-0.20165743,-0.606432,-0.17038603,-0.01184516,0.4348867,0.696362,-0.133869,0.5862017,0.3475741,0.57729375,0.45561698,0.055455644],[0.17490287,-0.49273917,-0.6702675,0.52635163,0.24822022,-0.15901737,0.50198627,-0.7415996,-0.32407025,-0.50210077,0.2912399,-0.02596676,0.75527865]],"activation":"identity","dense_3_b":[[-0.030630419],[0.020200811],[0.036532093]]},{"dense_4_W":[[-0.01753921,-1.0593574,-0.9545534]],"dense_4_b":[[-0.026306424]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102'.json deleted file mode 100755 index 7e8479916d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.689964],[1.1172562],[0.47065306],[0.039288677],[1.1148199],[1.1146759],[1.1138787],[1.0997579],[1.0863613],[1.0626523],[1.0341643],[0.039109986],[0.039163604],[0.03921246],[0.039282],[0.0392662],[0.03901584],[0.03859772]],"model_test_loss":0.006890684831887484,"input_size":18,"current_date_and_time":"2023-08-08_00-34-17","input_mean":[[22.360703],[0.03464188],[0.0027785136],[1.2959163e-5],[0.037677385],[0.03741321],[0.03715227],[0.03595462],[0.03641664],[0.032926656],[0.026464323],[-2.0994983e-5],[-8.1254e-6],[-7.6023986e-7],[-6.278352e-5],[-8.228038e-5],[-0.0002560112],[-0.00051422045]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.4041638],[-0.009381184],[-1.2474654],[-0.32208985],[4.033501],[-0.6852106],[-3.9728174]],"dense_1_W":[[-0.687249,1.1542901,2.1917975,-0.54792583,0.11244576,0.16998574,-0.49382955,-0.13925558,0.09835213,-0.15130454,-0.9653543,0.16384646,0.027884314,-0.14891884,-0.48109746,0.091843285,0.5578272,-0.05534039],[-0.0014183326,0.726647,-0.0035275402,-0.11533925,-0.4059522,0.7295035,-0.47751862,-0.2416707,-0.02734288,0.06507004,-0.0064442307,0.6041324,0.67849165,-0.55099046,-0.23613937,-0.032516804,-0.16318728,-0.08419399],[-0.5954915,-0.76488334,-2.0431242,0.15687804,0.23584543,-0.42583415,0.10554652,0.11953392,-0.15156066,0.21460378,0.87915903,-0.35293782,0.25323242,0.39901143,0.25572163,0.08249874,-0.38727182,-0.047129497],[0.14069723,-0.3919022,-0.0008744924,-0.059669092,-0.09359133,-0.6368598,0.5902478,0.20133625,-0.121440604,-0.065659136,-0.0057477783,-0.30779642,0.24014011,0.40626147,-0.12158061,-0.14876814,0.16586542,-0.033642642],[1.5318011,1.1091315,0.0042629745,-0.28907332,-0.062063456,-0.10614539,-0.03415317,-0.004241847,0.26679656,0.012595347,0.6646693,0.22112225,0.17988127,0.090471245,-0.17571782,0.19749698,-0.393442,0.21523812],[0.310905,0.29187796,-0.0007723808,-0.363841,-0.6149396,0.70793575,0.0772483,0.04830643,0.29118708,-0.17558831,-0.028698755,0.21452032,0.6498187,-0.6480603,0.19537422,-0.61544496,0.34354338,0.06310341],[-1.525909,1.1347268,0.006725862,0.065649055,-0.52072847,0.30013448,0.3943772,-0.4068202,-0.0063213394,0.3581553,0.6199145,0.49079955,0.060594473,-0.46649554,-0.118231915,0.08833182,-0.1837789,0.1082475]],"activation":"σ"},{"dense_2_W":[[-0.41003475,-0.5941811,0.35549054,0.70805454,0.06241565,0.24009907,-0.2571945],[-0.17879263,-0.5668489,0.078311555,0.26954442,-0.46130812,-0.2986236,0.026367432],[-0.032109488,0.4100262,-0.53486085,0.4058389,0.044560365,0.16679758,-0.3034037],[0.73847044,-0.20993896,-0.5642298,-0.3659582,0.20961727,0.43580025,0.0177744],[-0.4672462,-0.61421245,-0.44849893,-0.17692474,0.22861485,-0.3238457,0.15435395],[0.22824611,0.28959498,-0.2854186,-1.4559703,0.9620582,0.74461776,-0.108179726],[-0.02588813,-0.3127553,-0.71865684,-0.44503638,-0.27046338,0.14424235,-0.038083725],[0.32513967,-0.3561943,0.24827418,-0.32704267,-0.38088554,0.2438981,-0.1064644],[-0.17885895,0.42748332,-0.74465275,-0.8093966,-0.11033694,0.3553823,0.62148225],[0.131998,0.100577846,-0.17490678,0.6352548,-0.47178045,-0.57052344,-0.17243351],[-0.6209595,0.369551,0.19621795,-1.3971734,0.64587736,0.51646644,0.4175135],[0.0005163468,-0.24055383,-0.20226417,0.67244124,-0.23466797,-0.48380762,-0.53093874],[-0.22020346,0.3996716,0.2970228,-0.7995752,0.09480631,-0.08127671,0.62530756]],"activation":"σ","dense_2_b":[[0.031364277],[0.07349004],[-0.05814894],[-0.024128156],[-0.0155091975],[-0.29374],[-0.26029426],[-0.021580614],[-0.16836035],[0.012105176],[-0.36115757],[0.10476691],[-0.13135944]]},{"dense_3_W":[[-0.5763429,-0.56471676,0.12633902,0.5479549,-0.6422557,0.27148914,-0.23865283,0.15508497,0.5120569,-0.18321085,-0.20305811,-0.3290402,0.043243363],[-0.02372374,0.39314762,0.15481226,-0.5593528,-0.5013217,-0.16603263,-0.23262566,0.25007325,-0.20149072,0.21564138,-0.6830406,0.700577,-0.50517535],[-0.5742908,-0.04224201,-0.06110482,-0.050169945,-0.53291845,-0.1360594,0.564487,-0.24321367,-0.24506827,-0.27379003,0.5516074,-0.5063531,0.4253847]],"activation":"identity","dense_3_b":[[-0.02731678],[0.03552884],[-0.0069239554]]},{"dense_4_W":[[1.098094,-0.99127156,0.16504136]],"dense_4_b":[[-0.030831616]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102'.json deleted file mode 100755 index 157ce56e6c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.806735],[1.2785676],[0.5104689],[0.044312194],[1.2728615],[1.2750368],[1.2765797],[1.2632731],[1.244448],[1.2167825],[1.1834176],[0.044200357],[0.044231147],[0.044254437],[0.04425257],[0.04418865],[0.044067442],[0.043792143]],"model_test_loss":0.01218547485768795,"input_size":18,"current_date_and_time":"2023-08-08_00-59-43","input_mean":[[23.11654],[-0.032949522],[0.009155593],[-0.029586772],[-0.034678016],[-0.034348194],[-0.033619005],[-0.028988048],[-0.025731714],[-0.019963661],[-0.016452389],[-0.029611032],[-0.02960542],[-0.029594153],[-0.029447835],[-0.029455785],[-0.029506048],[-0.029566707]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.8828355],[0.40646476],[2.090121],[0.8059917],[2.205458],[0.9334858],[-0.33200896]],"dense_1_W":[[-0.53053826,0.27904403,1.8534683,-0.2955934,-0.3956192,0.78547305,-0.38176653,-0.35697734,0.3331119,0.34091163,-0.686063,0.7608489,-0.5477775,-0.041410368,-0.1755996,0.27248794,-0.08716658,0.06782427],[-0.0023688215,0.28428173,0.0065304525,-0.08413256,-0.49787298,1.0713955,-0.62245727,0.101583414,-0.008971785,-0.22987749,0.13199726,0.29666874,0.24260923,-0.649986,0.11152149,-0.28588438,-0.0071382457,-0.29161188],[0.3604459,0.8241495,0.008147093,0.061904266,0.021917332,0.83537346,0.071819894,0.21101502,0.039214145,0.07105925,0.017073013,0.5363549,-0.0137413,-0.37729445,-0.37352064,0.1549617,-0.30158794,0.29164574],[0.50972414,0.21102065,1.906497,-0.3665385,-0.2077211,0.5899225,-0.7436237,-0.027170774,0.59833825,0.55375063,-1.0024506,0.2756846,0.1362578,-0.4424235,0.17111245,0.14868937,0.27094048,-0.2256927],[0.3570491,-0.9449637,-0.0038414046,-0.18648717,-0.21053085,-0.71682775,0.19967486,-0.24819107,-0.12916584,-0.021362225,-0.01222075,-0.39958,-0.110254936,0.35989097,0.5008998,0.0059754075,0.054075558,-0.20690106],[-0.0066155936,-0.92957646,0.013711732,-0.28924587,0.9040592,-0.5274747,0.5186851,0.4869224,0.07748703,0.21800375,-0.13250247,-0.3384952,-0.19564785,0.61564326,-0.33629382,0.21877833,-0.17645325,-0.85731995],[-0.15106708,-0.18163809,1.5749623,-0.080494866,0.0063749384,-0.41591707,1.2240275,-0.5400741,0.18987378,-0.2516748,-0.13973542,-0.62628853,0.36244768,0.08076608,0.24033926,0.054027114,0.13816029,-0.222367]],"activation":"σ"},{"dense_2_W":[[0.18049516,0.06898391,0.026188483,0.50226945,-0.836067,-0.15816489,-0.035430282],[0.77764225,0.4938293,-0.18668377,0.33298555,-1.4891886,-0.24971096,-0.17076197],[-0.60486037,-0.68777907,-1.0724757,0.35820767,0.6229709,0.89322317,0.55584955],[-0.6130941,-0.45594084,0.2157379,-0.32011363,0.8813185,0.22641036,0.34688213],[-0.054075092,-0.7679671,-0.13776255,0.19197619,0.26417407,-0.16748618,0.29280367],[-0.10182613,-0.12194571,-1.0255779,-0.60696757,-0.09953989,0.23414455,-0.36724913],[-0.20329732,0.5056915,-0.016156103,0.11111321,-0.5714082,0.2851215,0.07377184],[0.050893724,0.2936281,0.19905426,0.02157211,-0.71915215,-0.31541398,-0.32369208],[-0.38534418,-0.57820314,-0.69817704,-0.78573805,-0.22289091,-0.1444706,0.84120387],[-0.22642383,-0.1060583,-0.6594286,-0.86231923,-0.11660855,-0.09651285,0.41405997],[0.35768324,0.29057413,0.52457124,-0.084269114,-0.76201826,-0.09401483,-0.106591016],[-0.43864337,-0.53775054,-1.1092063,-0.5224982,0.116868414,0.6581688,0.5014254],[0.34511328,-0.054018814,0.8002029,-0.07694278,-0.40526733,-0.13650577,-0.44867894]],"activation":"σ","dense_2_b":[[-0.09483589],[-0.30355707],[0.013573359],[0.045211345],[-0.0871814],[-0.24410044],[-0.0775358],[0.11720473],[-0.008279821],[-0.2442025],[-0.2776844],[0.015379876],[0.09168367]]},{"dense_3_W":[[0.40055394,0.582905,-0.4111319,-0.31334177,-0.48468548,0.11764927,-0.08204717,0.27377617,-0.7112729,0.19272773,0.26190874,-0.8084976,0.4428442],[-0.21866779,0.3226937,0.10855049,0.07141476,-0.13760294,-0.22177294,0.160254,-0.37559277,-0.5011528,-0.32128072,0.5026536,-0.39558798,0.10326434],[-0.18509546,-0.48764798,0.19780253,0.2646118,0.09047094,0.31383237,-0.58293486,-0.08110487,0.6763159,0.46092844,0.059963726,0.57369226,-0.64778125]],"activation":"identity","dense_3_b":[[0.052880295],[0.07685314],[-0.04764411]]},{"dense_4_W":[[0.9994107,0.08082187,-0.78512675]],"dense_4_b":[[0.05184357]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103'.json deleted file mode 100755 index 85544ca5c7..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.26363],[1.2876029],[0.4691794],[0.042342793],[1.2798712],[1.281447],[1.2820183],[1.2581282],[1.2295567],[1.1863525],[1.135284],[0.04198092],[0.042049758],[0.04212124],[0.042146564],[0.041984763],[0.041710183],[0.041294366]],"model_test_loss":0.006388714537024498,"input_size":18,"current_date_and_time":"2023-08-08_01-25-55","input_mean":[[22.872793],[-0.08689881],[0.0010234753],[-0.0038607456],[-0.08724453],[-0.087999865],[-0.08858455],[-0.08748225],[-0.08481368],[-0.08042719],[-0.07732415],[-0.003858866],[-0.0038813055],[-0.0039040009],[-0.0041669253],[-0.004390024],[-0.0046632714],[-0.004900364]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.5336922],[-0.6008307],[-0.6673705],[-1.177618],[2.1967514],[-2.8734276],[-0.27195445]],"dense_1_W":[[1.2013925,-0.38953242,-0.028237127,-0.14180943,-0.18575947,0.1106242,0.12136914,-0.71949697,-0.20943782,0.047901746,0.09341362,0.0044323304,-0.29708275,-0.052522436,0.53091663,0.27349496,0.3104034,-0.38801497],[-0.23073046,0.8099321,-0.03846076,-0.91607964,0.11726978,0.42854434,-0.07123206,-0.2530622,0.029919352,0.23274454,0.029808447,0.55654866,0.31956628,0.027127922,-0.24346891,0.12953727,0.1545052,-0.016463429],[0.4944997,-0.507676,-0.021496933,-0.13818543,0.00021766199,-0.45922992,0.5179483,-0.1616277,-0.13048062,-0.02763714,0.031596903,-0.2688555,0.3347001,0.022401655,0.18831164,0.16599877,-0.00036161195,-0.058895797],[0.79052234,0.5169544,0.004457134,0.07639163,0.040505003,0.16811295,-0.49953467,0.30723387,0.43350053,-0.30323687,0.0021920651,0.5147583,0.1054229,-0.8480872,-0.08184729,-0.10606368,-0.11437162,0.14529237],[0.87388206,1.4188874,0.005403591,-1.2710905,-0.5001256,0.66239464,-0.049878355,-0.09099538,0.22368619,0.1436128,-0.05005276,0.5060512,0.5519586,0.14216568,-0.03614136,-0.30450502,-0.01521232,0.22127852],[-1.1201782,1.1519747,0.018877197,-0.84099257,-0.10477958,0.22008999,-0.0178951,0.098986864,-0.25299644,0.25593615,0.013966401,-0.02736472,0.4958138,0.34917468,-0.06082836,-0.18867119,-0.08527511,0.14691037],[-0.011524901,1.2455785,3.091312,0.2794258,0.30048615,-0.25095785,-0.81237376,0.073421545,-0.07831179,0.29788557,-0.48452437,0.3920703,-0.35341492,-0.0816123,-0.2704529,0.057917055,-0.08816406,-0.20087627]],"activation":"σ"},{"dense_2_W":[[-0.16297658,0.03952007,0.017301178,0.11138396,-0.54143757,-0.6359262,-0.48702642],[0.023838406,0.53726286,-0.8185933,0.9541119,-0.21379428,1.0464535,-0.14768387],[-1.4899192,-0.46342307,-0.012913185,0.6559764,-1.133273,0.5413093,-0.4222291],[-1.5246911,-0.19620198,0.47882864,-0.2679241,-1.1384221,-0.3305512,-0.79238653],[-0.67590755,-0.47291875,-0.37138042,-0.867928,-0.3243818,0.35817894,-0.081819],[-0.44167435,0.26642233,-0.7098097,0.98480886,0.2975434,1.3568006,-0.6182568],[0.021911422,0.0072481604,0.80867565,-0.6889035,-0.58101594,-0.28012198,0.083424546],[-0.31145698,-0.15393952,0.88755167,-0.5754666,0.14976555,-0.2653118,-0.24384615],[-0.24493891,-0.06982408,-0.36303687,-0.28657684,-0.14763613,-0.33112663,0.09139967],[-0.3299021,0.33315933,-1.5499225,0.38461637,-0.3175137,1.1142358,0.43303496],[-1.0491866,0.33792546,-0.069094226,-0.509567,-1.1447937,-0.050081585,-1.2587998],[0.19292325,-0.06235127,0.7175149,-0.33345056,-0.8505459,-0.8724147,0.4035013],[-0.26649722,-0.77229846,1.0092193,-0.67018247,-0.044674527,-0.95283824,0.4402431]],"activation":"σ","dense_2_b":[[-0.19604135],[-0.27089414],[-0.061074182],[0.049550105],[-0.17541133],[-0.013591371],[-0.1635722],[-0.110457405],[-0.2914021],[-0.630707],[0.06793911],[-0.19795586],[-0.1507593]]},{"dense_3_W":[[0.20882441,0.32402983,-0.65811265,-1.3424684,0.384235,0.53797245,-0.056847516,-0.7877067,-0.21982256,0.8989965,-0.93191963,-0.13438137,-0.60060513],[-0.26045218,0.37893888,-0.31171417,-0.692449,-0.33556944,0.19751847,-0.22969474,-0.47745273,0.08315438,0.36671123,-0.725029,-0.41554233,-0.31832826],[0.11780495,-0.14251727,-0.22456245,-0.6772515,0.4477451,0.006119811,-0.36196816,-0.3983645,0.06536692,1.012304,-0.91562796,0.46987322,0.039987262]],"activation":"identity","dense_3_b":[[0.07951171],[0.20113988],[0.19002767]]},{"dense_4_W":[[0.76106316,0.6755035,0.4400971]],"dense_4_b":[[0.20939666]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.00 56300-N9100 2228'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.00 56300-N9100 2228'.json deleted file mode 100755 index ae735ba724..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.00 56300-N9100 2228'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.974163],[1.2132347],[0.5706513],[0.0502793],[1.2130301],[1.2128786],[1.2129273],[1.2019379],[1.1921468],[1.1817437],[1.1693443],[0.049872153],[0.050001368],[0.050128575],[0.0504321],[0.050471127],[0.05024059],[0.049630113]],"model_test_loss":0.0027105817571282387,"input_size":18,"current_date_and_time":"2023-08-08_02-17-02","input_mean":[[24.601255],[0.09067642],[0.00598973],[-0.01976689],[0.08466021],[0.085768804],[0.087323815],[0.088206366],[0.08898853],[0.08882811],[0.08783784],[-0.019929642],[-0.019905197],[-0.019887373],[-0.019954689],[-0.02004099],[-0.02029898],[-0.020633632]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.033486906],[-0.9854258],[0.18699676],[0.23900361],[0.066415675],[0.29984745],[-0.8694348]],"dense_1_W":[[-0.017391304,-0.1664158,1.2471004,0.17742877,-0.17622486,-0.07136989,0.17133567,-0.4406301,-0.17438401,0.10146424,0.2975635,-0.1329268,-0.1988518,0.13207461,-0.07052476,-0.57519513,0.1340373,0.2621166],[-0.53872705,-0.23616274,-0.9677832,0.3608879,0.5576081,0.5372162,-0.07011008,-0.33063745,-0.5091716,-0.47236058,0.5879706,-0.025170565,-0.39819354,-0.0017943033,0.23057717,0.32230052,0.053017925,-0.38491854],[-0.007569397,-0.15017577,0.017163722,0.11802223,0.086126305,-0.43940485,0.27736512,-0.08943185,0.12873243,0.42947087,-0.3468891,0.022381762,-0.22449934,-0.0031788715,0.19415219,0.17616823,-0.16482577,-0.6204708],[0.484722,-0.47863308,-0.003916951,-0.14998426,0.27055895,-0.62900317,0.35633156,0.2332263,-0.23696448,0.15093268,-0.056025397,-0.15387145,-0.028749702,-0.114084855,0.43514955,0.20574397,-0.04303955,0.029721491],[-0.0050577456,0.45235983,1.3863038,0.11857966,-1.062984,0.024143053,-0.5049202,0.520871,0.14744748,0.660791,-0.5397323,0.1884993,-0.3807901,-0.26886487,0.04286105,-0.15216194,-0.18675679,0.3220595],[0.3422851,-0.091745734,0.00288963,0.20548403,0.0039008386,0.80896676,-0.24846731,-0.039755683,-0.37319353,0.19646579,0.11100307,0.28086716,0.011461304,-0.20595428,-0.4130035,0.09002887,-0.08794721,-0.04846733],[-0.5121424,-0.10687892,0.97480345,-0.32319045,-0.55000156,0.039779805,-0.23451307,0.39487234,0.677461,0.028733881,-0.3141663,-0.006031874,0.020082282,-0.2869862,0.3214539,0.14777255,-0.032176822,-0.0048443917]],"activation":"σ"},{"dense_2_W":[[0.51288545,0.26980367,0.41815448,0.7882964,-0.01700049,-0.40586126,-0.7246673],[-0.032620583,0.6513666,0.52040267,-0.40663394,-0.97148997,-1.0426518,-0.22752136],[0.16157787,-0.28532407,-0.62873006,0.2976417,-0.2695294,-0.6110988,-0.32099858],[0.288502,0.5002554,0.24604729,0.60736823,-0.52036625,-0.591719,-0.34863025],[-0.49133012,0.13397883,-0.3788907,-0.95399517,0.04031534,0.8688636,0.36374664],[0.57312244,0.38245326,-0.06361987,-0.015409997,-0.4972398,-1.1938152,-0.1887008],[-0.23034595,-0.06613118,-0.42114103,-0.5018989,-0.034961794,0.59000736,0.19794862],[-0.6363575,-0.519735,-1.0045744,-0.11841846,0.09764135,-0.7355506,-0.1620501],[-0.740666,0.07916898,0.051017664,-0.20237261,0.42158294,0.64777046,0.18364593],[-0.3495589,-0.21401046,-0.56614906,-0.9645764,0.23658282,0.30558574,0.44571444],[0.54428804,0.7490656,0.028581897,0.068156295,-0.8264058,-1.1980392,0.34633735],[0.12275982,-0.13522817,0.5264364,0.5047181,-0.529052,-1.3191032,0.2033573],[0.62411124,0.4409063,-0.18518022,0.8019149,-0.49426788,-0.65130705,-0.27399883]],"activation":"σ","dense_2_b":[[-0.110052325],[-0.29302466],[-0.5614016],[-0.07483078],[0.18669383],[-0.20799044],[0.07792293],[-0.3352715],[0.062055763],[0.018744566],[-0.0924943],[-0.23109648],[-0.04416926]]},{"dense_3_W":[[0.50142425,0.10667864,0.4399292,-0.028254379,-0.39511585,-0.5136239,-0.34489322,-0.21440437,-0.5778223,-0.33600324,0.6226011,0.27962455,0.11977961],[-0.043028127,0.52723306,0.20324984,-0.5955265,0.15386851,0.15855698,0.4817966,0.53277177,-0.517283,0.78218174,-0.12013057,0.39024982,-0.7431557],[0.4440453,0.35185146,-0.028372388,0.61086553,-0.9743987,0.5447786,-0.42143017,0.11649257,-0.6926346,-0.6080743,0.47793046,0.5229465,0.56632364]],"activation":"identity","dense_3_b":[[-0.03343789],[0.052187573],[-0.114594795]]},{"dense_4_W":[[-0.18980438,0.15273905,-0.88665426]],"dense_4_b":[[0.09599546]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-CW000 1A15'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-CW000 1A15'.json deleted file mode 100755 index 71720e600d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-CW000 1A15'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.22473],[0.8251674],[0.55987936],[0.04294055],[0.80855274],[0.8140519],[0.819299],[0.8224256],[0.8223862],[0.8136785],[0.807375],[0.042726606],[0.042794228],[0.042867724],[0.043195076],[0.04336566],[0.043502316],[0.043476745]],"model_test_loss":0.0011282428167760372,"input_size":18,"current_date_and_time":"2023-08-08_02-41-29","input_mean":[[21.709253],[0.02837096],[0.014460302],[-0.004794128],[0.024455145],[0.026277967],[0.028953284],[0.0311847],[0.033131044],[0.030929914],[0.030909915],[-0.0050024847],[-0.004941226],[-0.0048792004],[-0.004936204],[-0.0050907354],[-0.005161467],[-0.005247103]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20276919],[-0.81567574],[0.17173824],[0.02485116],[-0.16411562],[0.4910318],[-0.05420777]],"dense_1_W":[[-0.0012471483,0.89754707,-0.30605346,0.30311847,-1.4427079,0.6952515,-0.65700763,0.040769663,0.49388984,-0.0077092303,-0.12679042,0.30025703,0.22031534,-0.947996,-0.76274323,0.6916131,0.9007639,0.7855221],[-0.6438617,0.5432943,0.055781104,0.14055097,-0.05817591,0.85594875,-0.63760585,-0.14287747,0.0445909,-0.4966032,0.3642643,0.5872178,-0.43109778,-0.80650455,0.052074146,0.2705149,0.12943903,-0.19362473],[0.003357844,0.31364292,0.22141118,0.98970664,-0.247483,0.6660532,-0.45712006,0.2463237,0.04045275,-0.11441027,-0.20408206,0.25224286,-0.0011789324,-0.36312783,-0.7617343,-0.306311,-0.3153426,-0.5837831],[0.028954435,0.66365343,0.022223057,0.07054718,0.24609722,-1.2109858,-0.4602635,0.3987523,0.01633434,-0.09760745,-0.1753251,-0.49207205,0.0021850022,0.53756136,-0.00042571075,0.009666692,0.042855307,-0.11420329],[-0.03580821,1.9344804,8.167719,-0.66073954,0.7095272,0.1456512,-1.4878063,-1.1827188,-0.20311646,-0.14221944,-0.27837816,0.6607043,0.51872766,-0.2517782,0.24511532,-0.028188378,-0.12866867,-0.06853984],[0.53031373,0.023884322,0.039527502,-0.16327015,-0.037574653,0.8523508,-0.17424065,-0.25996268,-0.031912126,-0.14452986,0.22546388,-0.028659882,-0.0152696865,-0.29828578,0.35591877,0.16280918,-0.16622923,-0.045724925],[-0.0099094855,-0.024337003,-0.90923375,0.33954924,-1.0551822,-1.4047244,3.1376684,-0.67196745,0.21238333,-0.35975868,0.3339244,-0.7338359,-0.37664357,0.6216561,0.230003,0.13399994,0.009667031,-0.18426572]],"activation":"σ"},{"dense_2_W":[[-0.46300676,-0.92880476,-0.6603387,0.18106437,0.6114232,-0.3085461,-0.34915724],[-0.27267945,-0.032490827,-0.19413497,0.67636174,-0.25963235,-1.0346236,0.5159924],[0.10341285,-0.2286906,0.58102465,-0.6124768,0.27501637,0.63732,-0.25335288],[0.47252873,0.15228121,0.15265052,-0.1303907,-0.27630845,0.29428765,0.054996368],[-0.60003024,-1.7184374,-0.3925117,2.1059344,-1.1817226,0.8805947,2.0097177],[-0.5157754,0.2864647,-0.2600413,-0.5098677,-0.8062721,-0.8342195,-0.12589265],[-0.27893555,0.4498806,-0.46256977,-0.34525606,0.16928495,0.57889444,0.1360685],[-0.069990896,-0.033348653,-0.5150556,0.86856264,-0.43608308,0.2634268,0.50319856],[-0.92615515,0.8989689,-1.0192099,1.1630723,-1.5832745,-2.3778448,1.1420947],[0.24078313,-0.059227604,0.52533114,-0.22976397,0.26565957,0.0019856135,-0.37963587],[-0.43368915,-0.19412571,0.030553307,-0.008343276,-0.24855247,-0.38562915,0.028216615],[0.24137807,0.50673467,0.58424366,-0.5623794,-0.4958684,0.043686286,-0.29952815],[-0.53380847,-0.6478634,-0.66525984,-0.09425604,0.30415344,0.033006296,-0.2779725]],"activation":"σ","dense_2_b":[[-0.19925767],[-0.22416385],[-0.024587726],[0.00076841726],[0.9967099],[-0.21401763],[-0.009374596],[0.037712634],[-0.41577217],[-0.08446474],[-0.22238271],[0.029249683],[-0.19375889]]},{"dense_3_W":[[-0.064283945,-0.28218833,0.29587984,0.47048366,0.1037391,-0.34584334,-0.099526614,-0.4141651,-0.71549547,-0.14117901,-0.48195595,0.6179986,-0.056695417],[-0.5290835,-0.5220605,-0.5042605,-0.30072263,0.6284589,-0.45276895,0.028285943,-0.31197917,0.39458558,0.17490475,0.0648546,-0.5194648,-0.4971718],[-0.32037377,-0.016439343,0.07254626,-0.09806289,-0.59013605,0.27251726,0.36449474,-0.557429,0.4412477,0.3926684,0.5275635,0.4008913,-0.14265701]],"activation":"identity","dense_3_b":[[0.004609829],[0.016195556],[0.0031462326]]},{"dense_4_W":[[0.73565596,-0.034537062,0.4909206]],"dense_4_b":[[0.0029074473]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-N9000 0B24'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-N9000 0B24'.json deleted file mode 100755 index df9d5c3321..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-N9000 0B24'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.049927],[0.90012175],[0.48095357],[0.04241544],[0.8875352],[0.8917799],[0.8952688],[0.89421207],[0.88974833],[0.8810388],[0.8717085],[0.04214072],[0.042199083],[0.042250115],[0.04236346],[0.042318553],[0.042197257],[0.04192991]],"model_test_loss":0.0027597311418503523,"input_size":18,"current_date_and_time":"2023-08-08_03-06-21","input_mean":[[24.36531],[-0.12347623],[0.006147819],[-0.016785737],[-0.12271177],[-0.123503655],[-0.12395989],[-0.118791655],[-0.116043516],[-0.107350565],[-0.103384055],[-0.016675012],[-0.0167048],[-0.016730325],[-0.016802218],[-0.016868604],[-0.017092224],[-0.017343003]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.3077128],[-0.053523973],[-0.08867575],[-3.564466],[-0.8363932],[-0.03499285],[-0.9791886]],"dense_1_W":[[-0.657707,-0.40130603,-0.05392449,-0.17988339,0.54668987,-0.46538657,0.57125705,-0.8721553,-0.48437503,-0.3783023,0.20773576,-0.006874521,-0.16955361,0.5569281,0.012815096,-0.24756004,0.13119608,-0.0070960107],[-0.00478684,-0.024804201,-0.7233322,0.07783175,-0.24326427,-0.3535344,0.9700095,-0.7786834,-0.6422574,0.0039578755,1.0983216,-0.08911305,-0.43728283,0.4707163,-0.30569777,0.37014574,0.22817229,-0.17220958],[-0.0018613227,0.18911898,-0.003760839,-0.19434088,-0.11199104,0.8207415,-0.1570958,-0.0013982604,-0.3096825,-0.12772126,0.23146391,0.71790016,-0.23160003,-0.35091403,-0.104312025,-0.04883372,0.24788088,-0.024843656],[-0.6503062,0.4760144,0.05285127,-0.5623532,-0.31313643,0.11321604,-0.39134973,0.48142427,0.8163628,0.24858923,-0.16951846,0.20952548,-0.13689561,0.36601552,-0.25696254,0.21768238,0.08233283,-0.015864879],[-0.9636597,0.40053022,-0.0058141947,-0.33463675,-0.11677622,0.26507962,-0.21261413,-0.79070723,0.18271628,-0.105050296,0.18018496,0.17602134,0.7042138,-0.3778066,-0.45499915,0.03500361,0.11619197,0.020927545],[-0.0077773444,0.5942843,3.5123742,0.106612384,-1.3349271,-0.28774235,-0.8317361,0.39143825,1.498797,0.28138006,-0.60930085,0.0037155056,0.28335968,-0.20002076,-0.15279055,0.09878292,0.17169282,-0.04990126],[-0.9617149,-0.15065387,0.0058096866,-0.28747433,0.38993824,-0.16643299,-0.17986324,0.08583848,0.41806793,-0.09902705,-0.102467,0.09218759,0.28329134,-0.0128028095,-0.28463566,0.009430492,0.3542676,-0.045534987]],"activation":"σ"},{"dense_2_W":[[-0.81077546,-0.10424342,0.6886152,0.848398,0.6319954,-0.058461085,-0.36828956],[0.60984695,0.55423707,-0.42063406,-0.32707918,-0.24104166,-0.48186648,-0.24464516],[0.161898,-0.48786223,-0.41306773,-0.6622412,-0.13313001,0.022441162,-0.036522806],[0.57633585,0.079778,-0.68529695,-0.6923111,-0.63098544,0.06022443,0.58791363],[-1.1134484,-0.025714546,1.190732,1.4953258,1.1254282,-0.68416023,-1.3409424],[0.33615056,-0.18059164,-0.32584703,-0.43712434,0.011917973,-0.38235188,-0.048886925],[0.27672747,0.2700329,-0.5545609,-0.17063317,0.06863414,-0.29364643,-0.068461105],[-0.75640607,-0.67021567,-0.8091184,-0.5977734,-0.33590022,0.33695093,-0.052878845],[-0.29990476,0.07485581,-0.18799536,0.3113804,-0.2548531,0.079891905,0.5823901],[0.7713344,0.40596846,-0.39756826,-0.42803642,-0.12433386,-0.5623329,0.15788138],[0.47727326,0.5254002,-0.44868997,-0.5893729,0.033892345,-0.47418627,0.5335775],[-0.5053448,-1.0315061,0.3315767,1.0608679,0.8883031,0.15161903,-0.40771657],[-1.3299836,-0.099792145,0.9213788,0.5617499,1.2194797,0.03981927,-1.172062]],"activation":"σ","dense_2_b":[[-0.3320475],[0.016477866],[-0.29854566],[0.0858396],[-0.28445113],[0.055967335],[-0.0076928814],[-0.32438016],[-0.011105792],[0.0491247],[-0.061171416],[-0.26423758],[-0.19981484]]},{"dense_3_W":[[0.07605307,-0.5657727,0.21602604,0.33659753,0.061791074,0.16310127,0.0704255,0.33747506,-0.37032503,0.48479742,0.47762752,0.07121615,-0.47501156],[0.60820574,0.17259821,-0.14938714,-0.53478646,0.82433504,-0.56874645,-0.27502382,0.037113808,-0.19531803,-0.52230936,-0.5779869,0.4101667,0.6944722],[-0.07375422,-0.5958687,0.09147497,-0.47058004,-0.16646929,0.12560609,-0.015372727,-0.5500357,0.5909702,-0.19595517,-0.6633332,0.46147022,0.5020841]],"activation":"identity","dense_3_b":[[-0.018324953],[0.00094535865],[0.0076563973]]},{"dense_4_W":[[0.03257061,0.92077035,0.33927587]],"dense_4_b":[[0.0008585189]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN.json deleted file mode 100755 index bebd461c43..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8535337],[1.1871091],[0.57845885],[0.049630664],[1.1714827],[1.1759739],[1.1807529],[1.1754702],[1.163419],[1.1391207],[1.1146902],[0.049304288],[0.04938992],[0.04947085],[0.049577486],[0.049585983],[0.049360827],[0.048854783]],"model_test_loss":0.0038447733968496323,"input_size":18,"current_date_and_time":"2023-08-08_01-51-57","input_mean":[[23.75506],[0.019698216],[0.02125942],[-0.012130068],[0.02019723],[0.019409409],[0.020214675],[0.029943746],[0.034989115],[0.04343616],[0.04719076],[-0.012154487],[-0.012135111],[-0.012114784],[-0.012035617],[-0.012112525],[-0.012144607],[-0.012390441]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.2290616],[-0.06566025],[-0.26232734],[-0.014396481],[-0.23760305],[0.014094781],[-0.13057418]],"dense_1_W":[[-0.2349692,-0.0063291234,-0.035249587,0.08617903,-0.365861,1.0055882,0.2188088,0.1449217,-0.24121442,-0.4175699,0.37988308,0.62451494,-0.123622105,-0.09489112,-0.50720054,-0.44936404,0.0527042,0.2325743],[-0.0063050375,0.3207623,-0.0044895783,0.28548434,-0.507397,0.6541944,-0.6847768,0.43596634,0.030897599,0.20960332,-0.057178702,-0.21487401,0.053376693,0.13392489,-0.21650217,-0.109688595,0.039938804,-0.116206385],[0.2708052,0.5528461,-0.03331542,-0.12908351,0.06319576,0.12678441,0.13067268,-0.2470256,0.05019679,0.10845501,-0.038128812,0.35948697,-0.12627743,-0.37605998,0.25131917,0.24767017,-0.49968937,0.09801629],[-2.6202499e-5,0.37221593,2.4131448,-0.299408,-0.6506924,0.47218078,-0.29836714,0.32324246,0.577699,0.008439944,-1.0393782,0.1451764,-0.10641525,0.44623712,-0.0794428,-0.11800355,-0.12773673,0.28916764],[0.0017583282,-0.03781789,-0.21004789,0.41564634,-0.0032608341,0.31357232,-0.6957937,-0.53825456,-0.52614933,-0.6324325,-0.009301665,0.02049273,-0.048440617,-0.4821638,-0.18134792,0.3243188,0.33311984,0.39314845],[0.004920383,-0.533088,0.1415015,-0.13392477,-0.40952107,0.8444377,-0.8526385,0.7274967,0.9084346,0.18900108,-0.6379418,0.19544344,0.42572308,-0.39255446,-0.24895424,-0.019269833,0.0014590932,0.02395835],[0.00041457335,-0.469483,-0.03338856,0.17351627,0.01683441,-0.35584116,0.016615873,0.38706398,0.33813193,-0.23397829,-0.32178026,-0.17345887,-0.10871371,0.21958116,-0.042337235,-0.1781205,0.16341408,0.14160205]],"activation":"σ"},{"dense_2_W":[[0.44592378,0.15143807,-0.009424234,0.35239178,-0.09963268,0.55982405,-1.0174559],[-0.442566,0.29746428,-0.33482108,-0.014999504,-0.6711541,-0.40101603,0.6295242],[0.39900258,0.30389005,-0.26535806,0.3451803,0.120485105,0.536382,-0.30911598],[0.11134723,-0.23925714,0.19048968,-0.7852743,-0.16722661,-0.5444894,0.43297023],[0.07680695,-0.53264195,0.015406939,-0.086414926,-0.002185912,-0.81844103,0.35812145],[-0.40373468,-0.54447883,0.13417311,0.024675215,-0.48897472,-0.30226046,-0.10632472],[0.6465857,-0.38075125,-0.18136446,0.3086386,0.03399703,0.64962906,-0.71223384],[-0.46307555,-0.057900187,-0.23908263,-0.2741226,-0.4267321,-0.24727249,0.78550595],[0.0005410685,0.5130376,0.18730785,0.32222855,-0.16497147,0.5314175,-1.0230789],[0.019229718,0.06334568,-0.5937085,-0.46484637,-0.60105985,-0.21383111,0.51939124],[0.23276499,0.666815,0.71696717,-0.31990758,0.5952141,0.4067587,-1.1618655],[0.1722438,0.71504825,0.46906963,-0.13681711,0.47640622,0.45497712,-1.2770692],[0.3419466,0.85895354,0.057526387,0.11937055,0.3142995,0.68276507,-1.9635502]],"activation":"σ","dense_2_b":[[-0.24404627],[0.09535624],[-0.2836256],[0.032848567],[0.057316262],[0.049310047],[-0.25128764],[0.15491374],[-0.3825811],[0.13178083],[-0.30603507],[-0.29319304],[-0.7450717]]},{"dense_3_W":[[-0.30619392,0.6724943,-0.17787461,0.21804851,0.57443386,0.35076854,-0.5711128,0.59865326,-0.13248625,0.35207286,-0.35570997,-0.6262289,-0.32156947],[0.63655996,-0.082538255,0.31164888,-0.009138885,-0.13852367,-0.18027483,-0.38830742,-0.57337445,0.09914936,-0.7164049,0.45311737,-0.097862616,0.3133059],[0.21028735,0.1864526,0.24931045,0.3717982,0.38209185,-0.06889437,0.4184427,-0.15917623,-0.6388955,0.72339946,-0.59677637,-0.51407987,-0.3791772]],"activation":"identity","dense_3_b":[[0.06066313],[-0.053203672],[0.042732116]]},{"dense_4_W":[[-0.9345688,0.41612437,-0.1675497]],"dense_4_b":[[-0.06134532]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-P0100 2228'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-P0100 2228'.json deleted file mode 100755 index e4a5d71459..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-P0100 2228'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.217079],[1.0207418],[0.529568],[0.040043645],[1.0053055],[1.0108265],[1.0154151],[1.0237554],[1.0261607],[1.0251414],[1.0156276],[0.039747525],[0.03984065],[0.0399419],[0.040151272],[0.040166046],[0.040242888],[0.040208846]],"model_test_loss":0.00269640376791358,"input_size":18,"current_date_and_time":"2023-08-08_04-21-19","input_mean":[[23.900599],[-0.008398695],[0.0015282386],[-0.007829772],[-0.009208989],[-0.008911737],[-0.008798698],[-0.005703768],[-0.0035596534],[-0.0031186447],[-0.0031662488],[-0.007885317],[-0.007857131],[-0.007826983],[-0.00763483],[-0.0073542255],[-0.0071039707],[-0.007163035]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-8.591739e-5],[-0.17085157],[-0.12687801],[4.364553],[0.8255702],[-0.8432205],[-4.7023892]],"dense_1_W":[[-0.00036674185,-0.15393308,-0.0043171174,0.52888125,0.19427226,1.0408313,0.117876925,-0.2845569,-0.089497805,-0.29269257,0.46610746,0.038173147,-0.28103483,-0.36340392,0.34743688,0.18314365,-0.16116409,-0.29159978],[-0.0051495107,-0.11477599,-0.15387562,0.12564987,0.4429667,-1.0813134,0.2080362,-0.20897992,0.1524622,0.039019175,0.15941331,-0.51186883,-0.16175619,0.35541835,0.15099002,-0.093263775,0.3209118,0.2376951],[-0.0045729824,0.17833863,-0.13646784,-0.19206388,-0.14445858,0.50118786,-1.1250085,-0.12486535,0.12982805,0.18782985,0.025482606,0.8972726,0.32246736,-0.6113951,-0.66491884,-0.60095704,0.4065867,0.78783005],[0.8883356,-0.004670374,-0.3004736,0.43118215,0.2730039,-0.73936516,-0.18756554,-0.30551004,-0.60160047,-0.4570068,0.42535797,-0.5673324,0.23564544,0.31826892,0.3946162,0.030204464,-0.21274225,-0.18297665],[0.5877724,-0.5607949,-2.7950788,0.3463737,0.3446188,-0.49314648,0.37603086,0.14976244,-0.11499728,-0.20843907,0.7227414,-0.21543501,-0.25004113,0.5456382,-0.35219005,-0.28194588,0.22977184,-0.019029563],[-0.42525807,-0.37978706,-2.812959,-0.20304315,0.23198645,-0.7054526,0.9276223,-0.21462558,-0.45101932,0.18400525,0.6539824,-0.4523719,-0.067426644,0.8022,0.12475116,-0.29360187,0.1820839,-0.08618455],[-0.8887159,-0.47105905,-0.30436194,0.5955465,0.044637978,-0.35214606,0.17866008,-0.38256323,-0.6545903,-0.4565794,0.49180064,-1.1552716,0.23951262,0.5748429,0.9034781,-0.27641115,-0.06816631,-0.3625054]],"activation":"σ"},{"dense_2_W":[[-0.057308674,0.07639922,0.2855919,0.06315537,-0.5223864,-0.32385927,-0.7735022],[-0.88395154,-0.36314768,0.18841538,-0.03785002,-0.5138743,-0.74670565,-0.33253807],[0.12478751,-0.6835147,0.49607527,-0.73937863,0.026476782,0.09121713,-0.42469463],[-0.7171305,0.4833388,-0.5362656,0.599928,-0.14776947,-0.052318748,0.46912462],[0.40110588,-0.31508088,0.4552697,-0.9951328,-0.36453304,0.095689364,-0.25619012],[-0.21850535,0.5483896,-0.102815315,-0.30166072,0.42355484,0.024482686,0.47288817],[-1.2052294,0.0726458,-0.46747494,0.19683914,-0.39607075,0.4458234,1.4317138],[0.19502828,-0.048589204,-0.19319248,-0.6721833,0.011818287,-0.031072982,-0.28005797],[-0.019494833,-0.30039933,-0.5927758,0.06800316,-0.08778525,-0.50062007,0.1897266],[0.15044136,-0.33724236,-0.27866372,0.012466757,0.35915533,-0.41124758,-0.57960784],[0.114993274,-0.24257775,0.6021602,-0.96579486,0.07640555,-0.3595668,-0.405754],[0.5267543,-0.18335517,-0.13551843,0.045388196,-0.58716494,-0.32110387,-0.0056233923],[-0.36361262,0.5996567,-0.4573528,0.7281233,-0.21097347,-0.55819994,1.4120568]],"activation":"σ","dense_2_b":[[-0.10522118],[-0.31128448],[-0.07047554],[0.011506447],[0.010999659],[-0.14467213],[-0.42379537],[-0.1810383],[-0.13019946],[-0.102506414],[-0.04960739],[-0.026930744],[-0.10272136]]},{"dense_3_W":[[-0.5352019,0.019407902,-0.4207235,0.6295458,-0.6254561,0.53919613,0.25542,-0.08012609,-0.44455698,-0.5093523,-0.5136104,-0.34459922,-0.37261885],[0.2026642,0.60963094,0.4016697,0.10310326,0.7051762,0.050026696,-0.55055726,0.1682248,0.48129147,0.19183299,0.45172593,-0.32796833,-0.81298125],[-0.4364362,-0.31193537,-0.17849928,-0.27077642,-0.2368534,-0.31495923,0.20951663,-0.035278384,-0.5224049,-0.42713875,0.56383544,0.28901008,-0.67109203]],"activation":"identity","dense_3_b":[[0.064849064],[-0.06753018],[-0.040117458]]},{"dense_4_W":[[-0.8941895,0.62574023,0.66779023]],"dense_4_b":[[-0.055856243]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-P0000 0B27'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-P0000 0B27'.json deleted file mode 100755 index 363238aa43..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-P0000 0B27'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.403178],[0.7899407],[0.46679014],[0.038778264],[0.78739744],[0.78873724],[0.7892707],[0.7664106],[0.7474393],[0.72352415],[0.7035473],[0.038599715],[0.038635705],[0.03867455],[0.038486294],[0.03835014],[0.037975483],[0.037434243]],"model_test_loss":0.0036874583456665277,"input_size":18,"current_date_and_time":"2023-08-08_04-46-00","input_mean":[[21.313442],[-0.007652719],[-0.0010814818],[-0.015364245],[-0.008704642],[-0.0084470315],[-0.008181152],[-0.009390086],[-0.006841837],[-0.005270116],[-0.004453076],[-0.015435301],[-0.015421092],[-0.015408219],[-0.015379849],[-0.015380499],[-0.01542405],[-0.01552717]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.015034866],[-2.333925],[0.07472282],[0.33385256],[-1.7635626],[0.20520012],[1.4994509]],"dense_1_W":[[-0.020420635,0.47671422,-2.2228365,0.061408564,-0.33446848,-0.34008023,0.24743442,-0.049677674,-0.3092543,0.027715717,0.2433644,0.22493373,-0.33363193,-0.21346657,0.053122807,0.13210946,0.15116207,-0.1479962],[-0.7627412,-0.33639726,-0.017733732,-0.26600602,-0.030820448,-0.4295762,0.34820956,0.049817856,-0.08305463,0.0075742602,-0.021596808,-0.45695007,0.3086963,0.84450537,-0.5957173,0.10477459,0.18988973,-0.06328525],[-0.06376427,0.20835318,0.002514508,0.26117352,-0.62271047,-0.19520147,0.32756966,0.06494971,0.0065356204,-0.080957,-0.078121,-0.3372254,-0.0696566,0.28001508,0.14789122,0.07902147,-0.37852517,0.10395386],[-0.023382343,-1.0105892,0.16153766,-0.05629362,0.98606056,-0.38667163,0.120815866,-0.0031459653,-0.0114722485,-0.10742418,0.29860422,0.0918033,-0.18897793,0.8804208,0.28319594,-0.3183279,-0.60766125,-0.98080194],[-0.7378326,0.35443896,-0.0014945221,0.23333554,-0.066297725,0.59670603,-0.48733267,-0.0073978053,-0.15717119,0.0717004,0.048404034,0.22451897,-0.4241085,-0.28380367,-0.052011304,0.5055362,-0.11498784,-0.12756315],[-0.004277259,0.42898464,0.09345899,-0.24447562,-0.45621815,0.31656915,-0.1402948,0.04722811,0.008236777,-0.17245218,0.09979451,0.3201254,0.48197353,0.14734976,-0.1808025,-0.3086107,-0.4733515,-0.280876],[1.5839243,0.048649643,-0.01699404,-0.14009474,-0.11868921,0.5394154,-0.35899943,-0.021968285,-0.117241286,0.027508566,0.05609089,0.72090036,-0.19876392,-0.5080364,0.174731,-0.023319548,-0.32231605,0.2783173]],"activation":"σ"},{"dense_2_W":[[-0.22034773,-0.31270447,0.5831825,-0.3320837,-0.39305016,-0.6177819,0.22597681],[-0.5904076,-0.52282643,-0.20162795,-0.12272505,0.43796244,0.72379744,-1.1039912],[-0.3313703,-0.2817194,-0.5364639,-0.57078487,0.87520176,0.567861,-0.7439988],[-0.78400034,-0.3179023,-0.55988556,0.032341063,1.5522407,0.6788271,-1.6406517],[0.010183664,0.27435702,0.79238176,-0.10173684,0.32933375,-0.51913565,-0.42577544],[-0.69303,-0.39014181,-0.107236296,-0.48264664,1.0204724,0.5373991,-0.97509813],[-0.14288978,0.6519878,0.8277582,-0.12722696,-0.00015177799,-0.6953236,-0.16517387],[-0.3694772,-0.12806806,-0.33594415,-0.653893,0.2182475,-0.26103872,-0.2874901],[-0.07374445,0.19246729,0.5173003,0.61818415,-0.022056762,-0.5472877,-0.58056134],[-1.0251218,-1.2561343,-0.07483788,-0.9255225,0.44686273,1.6848487,2.3562455],[-0.349229,-0.21101256,-0.5525006,-0.7540905,0.49885616,0.4253754,-0.5412813],[-0.12317935,-0.6319155,-0.8908915,0.08234697,0.8512533,0.3687786,-0.09611299],[0.05607153,0.01724528,0.10498003,0.18284152,-0.31280768,-0.2632974,-0.622548]],"activation":"σ","dense_2_b":[[-0.025739571],[-0.23397255],[-0.0609166],[-0.2377031],[-0.022815771],[-0.3112023],[0.03326642],[-0.33141518],[0.0427826],[0.45685703],[-0.23909605],[-0.019891355],[-0.017059732]]},{"dense_3_W":[[0.048393164,0.01459173,0.55632687,0.16953933,-0.6129878,0.27854604,-0.30732617,-0.3395474,-0.6306935,0.41403195,-0.24093059,0.3859709,-0.14472291],[0.6029767,-0.49897185,-0.55901927,-0.5471171,-0.2063777,0.09599516,0.64774793,-0.48304877,0.38883877,0.17090505,-0.65467936,-0.7351466,0.53769803],[-0.08842656,0.06706266,-0.32794118,0.12725264,-0.24223024,-0.19160233,-0.22151925,-0.39071792,0.48049617,-0.7938209,-0.2654298,0.28608698,-0.3520467]],"activation":"identity","dense_3_b":[[-0.05909381],[0.06149542],[0.10376763]]},{"dense_4_W":[[1.2233244,-0.6344225,-0.43675804]],"dense_4_b":[[-0.06323359]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.05 56300-P0000 1514'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.05 56300-P0000 1514'.json deleted file mode 100755 index 8b65df1a06..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.05 56300-P0000 1514'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.7955017],[0.89799774],[0.5061451],[0.04870496],[0.897324],[0.89804333],[0.8983218],[0.88777643],[0.8856539],[0.87744457],[0.8659113],[0.048619226],[0.048616584],[0.048609655],[0.048495032],[0.048379052],[0.048049383],[0.047698256]],"model_test_loss":0.0017304600914940238,"input_size":18,"current_date_and_time":"2023-08-08_05-11-25","input_mean":[[23.104206],[-0.034794316],[-0.020573495],[-0.0021940465],[-0.028357053],[-0.030680137],[-0.032690864],[-0.042001907],[-0.0496564],[-0.052361522],[-0.051856462],[-0.0021513677],[-0.0021468238],[-0.0021485426],[-0.002253827],[-0.0023359228],[-0.0024148696],[-0.0024249407]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.08124138],[0.1903408],[-0.013999624],[-0.17143527],[0.1768055],[-0.20094149],[-3.179182]],"dense_1_W":[[0.0024723092,-0.09259051,-0.09757232,-0.12717314,0.25085792,-0.30573526,0.052445546,-0.08738104,-0.29787505,0.27411562,-0.018140156,-0.3799589,0.09386907,0.09939116,0.5356948,0.31420502,-0.38083148,-0.029328207],[-0.15488878,0.20467338,0.35297525,-0.60644305,0.6169192,0.115096435,0.48780584,0.056056496,-0.08405607,-0.23489293,0.92967564,-1.6062328,-1.3127173,0.013400019,-1.0209213,-1.1354511,-0.38825014,-1.3973286],[-0.005542379,0.099915504,-0.03526838,0.2042634,0.01714366,0.5498627,-0.26516965,-0.062147252,-0.019922264,-0.098149635,0.15541059,0.5616284,0.28126147,-0.5231745,-0.4385349,-0.16692646,-0.11820826,0.13180146],[-0.001893487,-0.12823583,-0.057376172,0.4284407,-0.047093183,-0.71953607,0.5155282,0.009202056,0.2418623,-0.21878259,-0.012335793,-0.03496361,-0.45879838,0.49171248,-0.1584971,-0.1781668,0.06704749,0.10256722],[0.08270151,-0.091461316,-2.2379663,-0.0538001,0.56830716,-0.22148854,0.0931062,-0.2950928,-0.50371003,0.100836776,0.6016303,0.26128513,0.41152674,0.28541353,-0.695136,-0.79610765,0.3173571,0.21472184],[0.16334678,-0.5975227,-0.34775907,1.1889083,0.43193462,-0.41070813,0.43282235,-0.7802282,-1.0563897,-0.5516799,0.39116058,0.38568383,0.96553546,1.4799829,0.5509527,0.6597429,1.5476053,0.72938883],[-1.1631825,-0.011732463,-1.3126845,0.18595614,-0.5279944,-0.20657395,0.09089918,-0.21701668,-0.29725736,0.09534146,0.16501014,-0.01930718,0.22282849,-0.078318045,-0.2752747,-0.5757349,0.60279995,-0.0931696]],"activation":"σ"},{"dense_2_W":[[-0.781368,-0.6196695,0.22133054,-0.58676493,-0.6143645,-0.38137332,0.5647905],[-0.28955936,-0.5514581,0.023019072,-0.7495296,-0.008635288,-0.43638018,-0.39646024],[-0.3833366,-0.34759468,-0.06495598,-0.098383896,-0.5783148,-0.16990937,-0.03879645],[-0.70470786,-0.24903737,0.15529387,-0.11518866,-0.5277072,0.20462422,-0.35701025],[0.36111197,0.36466828,-1.0183784,0.010062257,-0.2265021,0.78467375,0.3216761],[0.2558025,0.8101411,-0.42377698,0.6952867,0.50709,0.31241566,-0.44120306],[-0.44082734,-0.80780107,0.7503476,-0.26734918,0.42134613,0.060052637,-0.49203876],[-0.21579593,-0.85413295,0.5198353,-0.04937046,-0.25109845,-0.071964934,-0.1370948],[-0.2127926,0.023194531,-1.0355452,0.80749786,0.2418679,0.07336516,0.5543946],[-0.20147315,0.13373135,0.42837965,-0.2858223,-0.08012954,-0.6707916,-0.3436601],[-0.6738826,0.17187825,-0.07171224,-0.5686729,-0.63062835,-0.11246825,0.1411205],[-1.3131889,-0.8463761,0.691169,-0.7734476,-0.655862,-0.7365177,1.823689],[-0.31629813,-0.037334282,0.023063287,-0.9846409,0.076071545,-0.34590834,-0.38197684]],"activation":"σ","dense_2_b":[[-0.008497481],[-0.0669677],[-0.09891911],[-0.05246839],[-0.18587142],[-0.30422455],[0.1410383],[-0.2284569],[-0.499407],[-0.043939065],[-0.31666586],[0.44777015],[0.034658033]]},{"dense_3_W":[[0.23496294,-0.28386167,0.27681643,0.5520175,-0.75150144,-0.37156543,0.30156407,-0.27607068,0.30984825,0.5151721,0.37007424,-0.33879584,0.4097188],[0.31137607,0.26859313,0.34590572,-0.0062326957,-0.6559486,-0.36561298,0.4681323,0.16856219,-0.8273677,0.40059263,-0.12678978,0.7264656,0.6313906],[0.524701,-0.33622202,0.03420367,-0.34464833,-0.37003994,-0.43387958,0.36096427,-0.07529622,-0.31695953,-0.47834525,0.23216519,0.530552,0.54391605]],"activation":"identity","dense_3_b":[[-0.085940674],[-0.08410808],[0.08695583]]},{"dense_4_W":[[0.3335539,1.011704,0.07253775]],"dense_4_b":[[-0.07161993]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_ELANTRA_2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_ELANTRA_2021.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_ELANTRA_HEV_2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_ELANTRA_HEV_2021.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI GENESIS 2015-2016.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_GENESIS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI GENESIS 2015-2016.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_GENESIS.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_5.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_5.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_EV_LTD.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_EV_LTD.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_PHEV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_PHEV.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_EV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_EV.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_EV_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_EV_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_HEV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_HEV.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_PALISADE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_PALISADE.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_HEV_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_HEV_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_PHEV_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_PHEV_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2019.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA_LF.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2019.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA_LF.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_TUCSON_4TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_TUCSON_4TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68417283AA'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68417283AA'.json deleted file mode 100755 index 4dd26dd5c5..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68417283AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.8728914],[1.2090142],[0.50676817],[0.040933758],[1.2023742],[1.205829],[1.2078925],[1.1974459],[1.1874248],[1.1770345],[1.1642895],[0.040819507],[0.04086639],[0.04089597],[0.040786948],[0.040585384],[0.04012954],[0.039522402]],"model_test_loss":0.006614471320062876,"input_size":18,"current_date_and_time":"2023-08-08_06-01-10","input_mean":[[26.654694],[-0.054407947],[-0.01670446],[0.0044869445],[-0.050178558],[-0.052209977],[-0.05427611],[-0.056261167],[-0.0544454],[-0.055462785],[-0.055245146],[0.004572334],[0.004530314],[0.0044882884],[0.004352177],[0.0042599128],[0.0041515296],[0.0040832255]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.43810543],[-0.49519923],[-2.1822188],[-0.58497167],[0.47684842],[-0.09626731],[-2.2094405]],"dense_1_W":[[0.76050776,0.1499411,0.381249,0.04709322,-0.32396638,0.3491626,-0.782436,0.34238994,-0.08037048,0.6680065,0.33735675,0.22206604,-0.103562996,-0.31060776,-0.43599552,0.16334474,-0.25804174,-0.082635574],[0.0035128025,0.5811635,-0.004408256,-0.37787032,0.03389848,0.4616148,-0.32768515,0.18803275,-0.052016713,-0.3570066,0.24113122,0.42042783,0.2498919,-0.17125513,-0.33577308,-0.14208402,0.236966,0.011127863],[-0.18902422,0.9714371,0.0059900363,-0.38097516,-0.22164193,0.20545805,-0.076091416,0.31648,0.11805389,0.18802157,-0.22251801,0.5153625,-0.05821966,-0.091360226,0.0012999892,-0.16460156,-0.16339059,0.15703438],[-0.03422036,0.92381644,6.921008,0.24507758,-0.7177696,-0.6458995,-0.4362909,0.48058942,1.076679,0.42145476,-0.9482223,0.61656874,0.5209579,0.41245258,-0.7608114,-0.24345283,-0.6975248,0.038341008],[0.07477459,0.78708345,0.004199321,-0.23788536,0.15640183,0.40163487,-0.41976067,0.0005454862,-0.054376323,0.094340526,0.030391933,0.49687427,-0.21395701,-0.09833246,0.019072657,-0.102057405,-0.07488578,0.069800615],[-0.74563086,0.5257453,-0.38915852,-0.014258607,-0.014805873,-0.021846136,-0.42956972,0.027794166,0.47592774,-0.21122316,-0.9867605,0.27827996,0.026848149,0.1879612,-0.11019756,0.01456598,0.033016063,0.34982008],[-1.017594,0.6378586,0.49575526,-0.25753835,-0.713349,-0.26929113,-0.6297332,0.2448187,0.93313706,0.418847,0.17675856,0.16072711,-0.031137649,-0.1681622,-0.18200019,-0.021670578,-0.45446116,0.0076085203]],"activation":"σ"},{"dense_2_W":[[0.7745368,0.0051938873,-0.11890521,0.88995504,0.2751288,0.54162115,0.06283707],[0.54824007,0.6159212,0.62110627,-0.4791488,0.16185509,0.3104695,0.45510858],[0.52840376,0.49313548,0.55167854,-0.34572417,0.9121422,0.53487015,0.17644465],[-0.4247197,-0.5281056,0.21303625,-0.6262236,-0.13522103,-0.26233667,-0.14396249],[-0.508547,-0.39328104,-0.39791986,-0.37415636,-0.91709316,-0.24228512,0.27710044],[-0.3951146,-0.31486347,-1.1718545,0.5269846,-1.1596807,-0.5815726,-0.14178322],[0.5949875,0.6315601,0.40430224,-0.038406808,0.53312445,0.18815556,0.085526235],[-0.29179358,-0.8260168,-0.18030375,0.07779656,-0.5514634,-0.49806046,-0.1366583],[-0.73898417,-0.016584689,-0.3333454,-0.22896339,-0.05116171,-0.1202695,-0.32896835],[-0.15493649,-0.76765895,0.004673897,0.10474267,-0.16431782,-0.014079051,0.23144981],[-0.042101637,-0.17159042,-0.7375734,0.071759894,-1.0362455,-0.43458578,-0.23665032],[0.7093842,0.9741466,-0.3642162,0.9787917,0.6507126,0.5392259,-0.42433175],[0.26979947,-0.52341074,-0.9280764,0.26746207,-0.5718743,-0.6411997,-0.5801518]],"activation":"σ","dense_2_b":[[-0.5332849],[-0.6305155],[-0.58254653],[0.12631744],[0.15982336],[0.32477045],[-0.57614744],[0.058194503],[0.30769274],[-0.14737707],[0.074832365],[-0.38743407],[0.04811002]]},{"dense_3_W":[[-0.55727553,-0.051364966,-0.17064416,0.2017602,0.008057165,0.32420316,-0.6367807,0.18341993,0.56611097,0.17584346,0.7482443,0.2938565,0.06779992],[-0.24583314,-0.08192307,0.26317647,0.64154226,0.37813106,0.21800083,0.3874455,0.1719494,0.24538884,-0.30450168,0.12902369,-0.38736972,0.76431566],[-0.04105808,-0.18581067,-0.69706976,0.6209051,0.670406,0.60423225,-0.6668137,0.18300876,0.7437342,0.09521902,0.0137198325,-0.62237316,0.23223503]],"activation":"identity","dense_3_b":[[0.09012325],[0.0749679],[0.11545244]]},{"dense_4_W":[[-0.48435527,-0.45564538,-1.096167]],"dense_4_b":[[-0.0997911]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68453433AA'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68453433AA'.json deleted file mode 100755 index 9ddff83051..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68453433AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.43866],[0.9594654],[0.3912325],[0.038489565],[0.9550493],[0.9573054],[0.95820725],[0.9453249],[0.93590647],[0.9254975],[0.91544265],[0.03837764],[0.038416598],[0.03845292],[0.038414918],[0.038395535],[0.038228408],[0.0379494]],"model_test_loss":0.005756708327680826,"input_size":18,"current_date_and_time":"2023-08-08_06-49-45","input_mean":[[27.448889],[-0.0067297285],[-0.012206868],[-0.012023059],[0.0005211621],[-0.001140509],[-0.002781004],[-0.0060957638],[-0.008815731],[-0.008225145],[-0.010236002],[-0.011980975],[-0.011978335],[-0.011977974],[-0.012018364],[-0.012198565],[-0.012354674],[-0.01254546]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.26672667],[0.020335548],[-0.3113232],[-1.0529982],[0.40098032],[-0.9344168],[0.20128816]],"dense_1_W":[[0.48369458,-0.3686703,0.0016632332,-0.16971397,0.25181967,-0.46175927,0.4843163,-0.374836,-0.37514406,0.34082055,0.026280358,-0.6478774,0.15835607,0.16001779,0.37194988,0.37345862,0.036551144,-0.28789935],[0.07043975,-0.45260653,-0.00046572334,0.37180796,0.5052569,-0.923053,0.37163734,-0.23138288,0.10260282,0.188695,-0.19567782,0.021202957,-0.079410076,-0.09227521,-0.18622167,0.41924185,-0.40328145,0.18227412],[0.017748738,-0.48881784,0.004065963,-0.21506804,0.54495573,-0.85553426,0.14905618,-0.029548364,-0.5290159,-0.07689605,0.3329747,-0.54319984,0.00667545,0.7586954,0.2262732,0.29633564,0.26088232,-0.29550886],[-0.64260155,0.3662986,3.173239,0.63683313,-0.6430913,0.4424823,-0.16027375,0.084609404,0.03705194,0.081928365,-0.097669385,0.18059629,-0.5149442,0.03890781,-0.11840206,-0.10823692,-0.1191671,0.04037941],[0.10563207,0.49981126,0.0029415153,-0.10415694,-0.18625958,0.90915346,-0.7287493,-0.13796005,-0.015489749,0.38912502,-0.15327297,0.3765297,0.088555075,-0.50586104,-0.13467893,0.12457146,0.046435032,-0.057002276],[-0.5938456,-0.024423348,-3.6706417,0.34764245,-0.1914768,-0.114475735,0.13170964,-0.187258,0.2949009,0.20557038,-0.3126963,-0.4473035,-0.41970354,0.6434845,-0.025949601,-0.27021688,0.10270479,0.02460305],[-0.54888344,-0.6696987,-0.00082320906,0.32633713,0.005453797,-0.47443417,0.67143047,-0.013440813,0.004097872,-0.007966471,0.0029117528,-0.3179762,0.02713174,0.09619391,-0.028661765,-0.37402767,0.26313016,-0.016989414]],"activation":"σ"},{"dense_2_W":[[0.5209726,-0.25359967,0.6619714,0.39587265,-0.35387352,-0.04535335,0.120071486],[0.48709035,0.3180766,0.29595408,0.098535866,-0.2987927,0.057739243,0.22679059],[0.23933189,-0.08163726,-0.9657385,-0.4965831,0.68811953,0.09032152,-0.6589171],[0.57636416,0.39442053,0.18478166,-0.12974693,-0.8272915,-0.29775232,0.20715299],[-0.5449741,-0.9353625,-0.31370834,-0.13274054,0.83518785,0.008355828,0.033751678],[0.35901573,-0.66106963,-0.1888595,0.41194937,1.588338,-0.5385817,-0.740165],[-0.98802006,-0.67757845,-0.0989083,0.26249525,-0.2753127,-0.47687986,0.025367346],[0.2892236,0.35800815,-0.13770878,0.55578154,-0.785857,-0.08480091,0.64590573],[0.09093238,-0.48290733,-0.99116063,0.46500945,0.6056846,-0.012176678,-0.12520207],[-0.9990715,-0.28646934,-0.07094919,0.5173688,0.10600437,0.06450096,-0.5188569],[0.68128484,0.008618474,-0.09483195,-0.17140749,-0.6186476,0.34410867,0.29150036],[0.80427694,0.737846,-0.22390766,-0.50543666,0.05763516,0.29581627,0.14593346],[-0.56531626,-1.014788,-1.0390762,0.37543738,0.08958771,-0.27486435,0.24934056]],"activation":"σ","dense_2_b":[[-0.1413122],[-0.15693974],[0.034285396],[-0.10772752],[0.21373348],[0.5429162],[-0.24522312],[-0.023586268],[0.023880517],[0.17696953],[-0.12841567],[-0.026000533],[0.11256094]]},{"dense_3_W":[[0.02749057,-0.4342947,0.59011424,-0.0131820105,0.4288545,0.41173843,0.3578794,-0.13965432,0.16253465,0.36047092,-0.64697146,-0.6048068,0.70385855],[-0.53569496,0.30542025,0.6883935,-0.63130975,-0.15454243,0.19938475,-0.52876604,-0.5835625,0.46811375,0.43471345,0.46132883,-0.004729517,-0.20376478],[0.23920149,-0.5100696,0.109994635,-0.41538352,0.65883255,0.04808402,0.65057176,-0.26300353,0.67316395,-0.23753574,-0.6068177,-0.36342996,0.5059538]],"activation":"identity","dense_3_b":[[-0.043995153],[-0.035359237],[-0.028157346]]},{"dense_4_W":[[1.0061214,0.5680961,0.2576211]],"dense_4_b":[[-0.04061578]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68499171AB'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68499171AB'.json deleted file mode 100755 index a74e54d2e9..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68499171AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.5967526],[1.0102762],[0.43027443],[0.05251798],[0.999985],[1.0024607],[1.0053881],[1.0012413],[0.98920035],[0.97731537],[0.96259564],[0.052146535],[0.052252885],[0.05235032],[0.05248029],[0.052331988],[0.05202955],[0.05168756]],"model_test_loss":0.009552407078444958,"input_size":18,"current_date_and_time":"2023-08-08_07-40-22","input_mean":[[27.414038],[-0.0075059575],[-0.004310022],[-0.012558367],[-0.005643982],[-0.006085868],[-0.0062815067],[-0.006680969],[-0.006342892],[-0.005391843],[-0.004076586],[-0.012551318],[-0.012558776],[-0.0125591215],[-0.0125386985],[-0.012456482],[-0.012317335],[-0.012218792]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.010202121],[-0.20869955],[-1.2660872],[-0.054420657],[0.055866957],[-1.3448147],[-0.8834831]],"dense_1_W":[[0.0012557846,-0.6672937,0.0010295995,0.32252085,-0.048310652,-0.5376883,0.7697637,0.0823376,-0.30575013,-0.26277706,0.24928996,-0.8753449,-0.5025692,-0.077491626,0.5145067,0.079226255,0.5474699,0.06658418],[0.0039056255,0.9247404,-0.009912007,-0.25928807,0.99379,0.96465033,0.08479168,0.010440816,0.27576396,0.073882826,0.17389007,0.53772444,0.30138925,-0.32761773,0.63664806,0.24958122,-0.05548543,-0.2774185],[-1.1338029,0.7972837,2.7477882,-0.2877902,-1.754552,-0.2689002,-0.63449675,0.42324004,1.8994156,0.73137105,-1.1024318,1.0254707,0.08409975,-0.529214,-0.502221,-0.14801149,-0.4222293,0.6621312],[0.00042969367,-0.8577691,-0.0021418685,0.35081863,0.65922713,-0.6490291,0.2931224,-0.60029286,-0.014103398,0.47114435,-0.123872444,-0.43758586,-0.47995508,0.6163008,0.4267091,0.38276717,-0.47198132,-0.14263928],[0.00044543247,0.36023495,0.0021837356,-0.2779762,0.05987485,0.64892846,-0.517532,0.32271734,-0.18660611,0.28274518,-0.1146797,0.13610251,0.5230807,-0.19606018,-0.39453036,-0.046586644,-0.046734218,0.08382657],[-1.2255402,-0.22072525,-2.8729386,-0.25934264,1.7529143,0.06705062,0.02021511,0.045151696,-1.9299484,-0.7893005,0.9692529,-0.14630248,-0.14744897,0.118275866,0.6106455,0.28660807,-0.06394074,-0.28017327],[0.005199153,-1.1621727,0.00077480485,0.17639922,0.46977073,-0.020649184,0.18502355,0.5452717,-0.090024605,0.017219655,0.016716335,0.6221494,1.1390406,1.5075128,0.48781365,0.17463161,0.10828733,-0.43913674]],"activation":"σ"},{"dense_2_W":[[-0.58769137,0.05236564,0.35124663,0.04817339,0.2898144,0.28079572,-0.00064369116],[0.005263831,0.19137648,-0.48806444,-0.23123759,0.6268823,-0.16993119,0.34425706],[-0.5901436,-0.23695424,0.098380215,-0.17219543,0.48076913,-0.4071234,0.28624105],[0.14382643,0.13441655,0.45674977,-0.027003672,0.56117404,-0.45108694,0.33755574],[-0.2538037,0.45569667,0.27736127,-0.23255807,0.07589655,-0.2602569,-0.5057338],[-0.46332666,-0.13729805,-0.12543498,-0.39890754,0.0796631,0.31270605,-0.31902856],[0.49847755,-0.2749227,0.0026628354,0.55073225,-0.50455254,-0.07015729,0.18485697],[0.16384278,0.4331959,-0.2250921,0.16277151,0.5106723,0.31678322,-0.18506958],[0.2638649,0.3195002,-0.43078262,0.13981557,-0.004984484,-0.5785593,-0.18042926],[0.19678845,0.00667378,-0.30015993,0.36041152,-0.8781901,0.11745428,0.40608066],[0.15176365,-0.2606354,-0.27513868,0.46041733,-0.14977318,0.29587746,0.034236424],[0.5043066,0.046352975,-0.06961968,0.10950722,-1.003576,0.024827112,0.36801037],[-0.18985961,-0.4802785,0.3937008,-0.663785,0.06894842,0.10332041,0.35070738]],"activation":"σ","dense_2_b":[[-0.030413345],[-0.018623633],[0.037994068],[-0.039921794],[0.06337368],[-0.0037913572],[-0.11922998],[-0.01326628],[-0.015669143],[-0.30007255],[-0.0722405],[-0.16496572],[0.00060786883]]},{"dense_3_W":[[0.32435206,0.028846495,-0.13252908,-0.1982058,-0.36715662,-0.30138585,0.46504492,-0.31018558,-0.24452554,-0.29342332,0.51592284,-0.40441313,-0.0497606],[-0.08831045,-0.06720264,-0.1351913,-0.31066024,0.31655452,-0.31953314,-0.49679926,0.38395572,-0.3895881,-0.047352865,0.13741386,-0.31013528,0.3948293],[0.45862782,0.2571993,0.62897617,0.37644735,0.40071562,0.31087562,-0.5142998,-0.41985396,0.27594817,-0.54097104,-0.5071787,-0.6661379,-0.014177239]],"activation":"identity","dense_3_b":[[-0.006262847],[0.010518014],[0.007370069]]},{"dense_4_W":[[-0.95558,0.989042,1.2003003]],"dense_4_b":[[0.007831933]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68501183AA'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68501183AA'.json deleted file mode 100755 index d1a79626db..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68501183AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.452467],[0.86690396],[0.40215713],[0.040074926],[0.8606064],[0.8630931],[0.8649407],[0.85491246],[0.844539],[0.8305169],[0.81689984],[0.03982056],[0.039912425],[0.039979994],[0.039879803],[0.03978153],[0.039445743],[0.03891937]],"model_test_loss":0.010768964886665344,"input_size":18,"current_date_and_time":"2023-08-08_08-04-56","input_mean":[[27.322044],[-0.024251966],[0.010604335],[-0.013273577],[-0.024150817],[-0.02318872],[-0.022487855],[-0.016739838],[-0.013881857],[-0.01513014],[-0.018847467],[-0.01310166],[-0.0131332185],[-0.013161585],[-0.013236801],[-0.0134922145],[-0.013910382],[-0.0144336065]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.7449901],[0.5293309],[-0.13684131],[-0.012751344],[-0.7529798],[-0.23311737],[0.07853056]],"dense_1_W":[[-0.13072656,0.6283987,0.015078402,-0.054005172,-0.2233314,0.45095843,-0.43263704,0.04728289,0.26050776,-0.021932844,-0.11329059,0.54408914,-0.4077183,-0.18935005,-0.10371036,0.2651148,-0.35418501,0.19614394],[-1.7171507,-0.3317916,0.004072612,-0.15467915,0.41885808,0.92006916,-0.8898168,-0.4614065,0.29903418,0.25961474,-0.05122034,-0.20094745,0.5485216,0.06610662,0.016513953,-0.37984493,-0.1926293,0.29794264],[0.007063484,0.6856636,-0.011413773,-0.72127,-0.20380542,1.0480517,-0.8238829,0.2790337,-0.3606132,0.31933337,-0.07325723,0.5433965,0.121130235,-0.2291283,-0.32528403,0.11580332,0.12170283,0.054295488],[0.12663618,0.91206276,0.004443536,-0.30484363,-0.75032,0.7143595,-0.5558535,0.1742707,0.3093525,-0.26842314,-0.069468714,0.12913592,0.27518988,0.11542955,-0.49559456,0.11280359,-0.117812514,0.20811172],[1.7389579,0.4180518,-0.01172704,0.21032059,0.47659472,-0.032733813,-0.875458,0.10615792,-0.013827842,0.23314281,-0.13350959,0.48809958,0.059256323,-0.3293328,-0.038980376,-0.70255446,-0.111022756,0.4263937],[-0.047828943,0.9741059,1.9788678,0.035556808,-0.33137748,0.06869328,-0.0728806,0.30185872,0.42945105,-0.2668291,-1.0493917,0.75109553,-0.044287033,0.2789782,-0.78056633,-0.5101993,-0.1294507,0.57637715],[0.06523681,-1.1740252,-5.89938,-0.22002901,1.5458798,0.5268267,1.4306431,-0.6207323,-1.5871657,-0.4998738,0.18801236,-0.4513105,-0.568868,-0.10367136,0.37126714,0.53899825,0.38020688,0.17896129]],"activation":"σ"},{"dense_2_W":[[-0.8985011,0.11458038,-0.37006074,-0.9091467,0.08845758,-0.4780092,-0.09387305],[-0.30258346,-0.2478026,-0.138898,-0.72172093,-0.6169151,-0.314319,0.7819804],[-0.7148826,-0.49621424,-0.2916977,-0.6574481,-0.073164396,0.27022183,-0.113334574],[-0.20976768,0.049662825,-1.0442357,-0.4784036,-0.31232062,-0.010284477,0.37272945],[0.11602564,-0.09091442,0.43364218,-0.1808539,0.42867213,0.110103086,-0.30165982],[-0.2179075,-1.046752,-0.68968844,-0.23109698,0.047580823,-0.14457914,-0.8176898],[0.65831876,0.8798172,0.87773097,0.5937055,-0.42482352,-0.15033811,0.6182065],[0.017662104,0.35544062,-0.044278342,0.3860054,0.6023141,0.46972203,-0.08535246],[-0.2605915,0.6408727,0.7716486,-0.15743664,0.6014163,-0.008522242,0.12289313],[-0.77912825,0.11850717,-1.0912898,-0.14447807,-0.4524029,0.21814777,0.4140316],[-0.98378664,-0.28703195,-0.5935176,-0.41121966,-0.10323715,0.25849262,0.59001917],[-0.61543965,0.08229077,-0.11793402,0.059594512,-1.2362256,-0.30034783,0.43083572],[-0.15708973,-0.303757,0.52465874,0.088811316,0.15832427,0.11913656,-0.2735138]],"activation":"σ","dense_2_b":[[0.3555512],[0.1413531],[0.0609361],[-0.0072417697],[-0.06120809],[0.16177845],[0.00092023175],[-0.15782398],[-0.20185831],[-0.07573758],[0.08495398],[-0.36860523],[-0.06752801]]},{"dense_3_W":[[-0.17603812,-0.4140721,-0.62913364,-0.49161103,0.06334394,-0.4608268,0.50220513,0.6482869,0.28214014,-0.30096096,-0.68956196,0.14852367,-0.13984762],[0.70722806,0.81301016,-0.0990699,0.34233677,-0.2081479,0.6863452,-0.40330297,-0.23650733,-0.4555184,0.78053814,0.06477601,0.5426404,-0.3088452],[0.06759314,-0.38149613,0.4649801,-0.024833316,-0.14772557,0.68093634,-0.31712177,-0.31436524,0.021902535,-0.06391409,0.52740633,-0.023403548,-0.30866808]],"activation":"identity","dense_3_b":[[0.040954825],[-0.05325551],[0.009019909]]},{"dense_4_W":[[0.83495075,-0.86214906,-0.13330713]],"dense_4_b":[[0.043454375]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AB'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AB'.json deleted file mode 100755 index b31907e804..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.1622963],[0.9471656],[0.44518656],[0.040083434],[0.9350785],[0.94012755],[0.94425213],[0.93108463],[0.91875947],[0.8984224],[0.87960774],[0.040001612],[0.04003194],[0.04005136],[0.040004794],[0.039946392],[0.039676767],[0.039269198]],"model_test_loss":0.010425965301692486,"input_size":18,"current_date_and_time":"2023-08-08_08-57-13","input_mean":[[23.123226],[0.014666694],[0.0013152711],[-0.015370418],[0.015775913],[0.015918152],[0.015987042],[0.017566826],[0.01997459],[0.024210589],[0.023963585],[-0.01532087],[-0.015298695],[-0.015288566],[-0.01526749],[-0.015188506],[-0.015101968],[-0.0150896525]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.4020265],[-0.38869652],[0.5984056],[-0.40903288],[-0.7209127],[-0.21461262],[-0.022622019]],"dense_1_W":[[-0.48059335,0.3100128,0.0076716603,0.16913813,-0.39116326,0.30901742,0.15213187,0.27245435,0.30929,0.0393514,-0.21169001,0.37455606,-0.0841324,-0.35264006,0.057713106,-0.3693904,-0.043460626,0.16143373],[0.1948784,0.3596294,0.0016701045,0.078808986,-0.031749953,0.5201668,-0.3876555,0.035953883,-0.052751865,0.29071456,-0.11915809,0.18078142,0.2654659,-0.3440918,-0.36261106,-0.04538469,-0.16205196,0.2049061],[0.27058375,0.39068493,0.008152962,-0.46268412,-0.37271506,1.1953743,-0.838863,0.20327426,-0.029140756,0.40090236,-0.25554156,0.1980216,-0.24836442,0.40255845,-0.11239343,0.08096013,0.28145158,-0.1982731],[-0.09668808,0.72334373,4.232626,-0.2011821,-1.4960433,-0.6716198,-0.7842683,0.3259893,1.7003231,1.2187169,-0.7756498,0.0010294656,0.015891263,0.07841224,0.28969085,-0.011956924,-0.21773098,-0.1516659],[-1.0268521,-0.04623315,0.02006263,0.53300685,0.49791265,-0.031559914,-0.06060664,0.40332755,0.24802661,0.4815803,-0.37091663,-0.009678896,-0.12575178,0.25624207,-0.65037,-0.19531684,-0.40527076,0.4080783],[0.06124146,0.33298203,-0.007085769,-0.3564556,-0.62365544,0.39928165,-0.30484197,-0.03956767,0.47177354,-0.32725462,-0.05135365,0.41259632,0.104655325,0.02163898,-0.3252136,0.19845222,-0.34582257,0.3192759],[-0.215077,0.61514986,0.014335081,-0.23261109,0.028965365,0.5105243,-0.8640813,0.41804183,0.06355636,-0.26415628,0.11219327,0.18719119,0.18345302,-0.09234277,-0.21879959,-0.077284895,-0.051544398,0.12303621]],"activation":"σ"},{"dense_2_W":[[-0.047037657,-0.82620645,-1.1012506,-1.5222656,1.2184019,-0.95923287,-0.32852557],[0.6561262,0.5126057,-0.24760722,-0.088599116,0.011952697,0.5099274,0.6522026],[-0.5948736,-0.51518464,-0.31788582,0.50248563,-0.48923284,-0.6654764,-1.0108097],[0.5930829,0.5896004,-0.34024367,0.5411401,-0.23081586,0.025500938,0.018493457],[-0.0699199,0.07561291,-0.099223636,0.2656774,0.12801234,-0.09348627,0.39833513],[0.1711992,0.61261594,0.10941279,0.15368794,-0.016752176,-0.08643972,0.51187015],[0.52641517,0.29478607,0.28599206,0.36893985,-0.012896536,-0.36574146,-0.06489677],[-0.9348127,-0.63718593,-0.9197959,-0.17101024,0.6478388,-0.25748882,-0.6722122],[-0.039446525,-0.17253296,-0.1102254,0.11489417,-0.12034824,-0.64540935,-0.61393607],[-0.018881954,-0.5315948,-0.20833272,-0.026863215,-0.46395144,0.38346213,-0.69737613],[-0.89750475,-0.9264009,-0.50270903,0.38569385,-0.1646158,-0.009521657,-0.2364964],[0.64389735,0.66855454,-0.51955,0.20904338,-0.059642173,-0.34599668,0.3828592],[-0.41403893,-0.23343006,0.27303386,0.32080367,-0.08580585,-0.0022561064,0.5581373]],"activation":"σ","dense_2_b":[[0.1540804],[-0.1450312],[0.42652166],[-0.16428761],[-0.15953712],[-0.17998531],[-0.22780614],[0.16343741],[-0.14679368],[0.12547316],[-0.083877504],[-0.18424872],[-0.14974242]]},{"dense_3_W":[[-0.79740316,0.3058743,-0.88944197,0.25014403,0.06497559,0.17014328,0.27509627,-0.6445844,0.052368652,-0.73738235,-0.5432747,0.4932797,0.065226056],[-1.4201472,0.54557586,-1.273868,0.49129322,-0.29190016,0.4022955,0.20194477,-1.0692892,-0.11673556,-0.22659089,-0.57724833,0.10635412,-0.22017439],[-0.029564494,0.52538013,0.31247225,0.23336294,0.4273138,0.10889286,-0.012862975,-0.57009745,-0.06713728,-0.5318249,0.48261672,-0.479357,0.26141784]],"activation":"identity","dense_3_b":[[0.027114814],[-0.091438465],[0.011498378]]},{"dense_4_W":[[1.1969254,0.4108815,0.4734377]],"dense_4_b":[[0.025864411]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AC'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AC'.json deleted file mode 100755 index 352d7b0341..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AC'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.830911],[1.115638],[0.4198547],[0.045398682],[1.1110027],[1.1132046],[1.1144112],[1.0970649],[1.0804734],[1.0600687],[1.0419487],[0.04529199],[0.045321435],[0.045338377],[0.045098767],[0.04478193],[0.044281803],[0.04369981]],"model_test_loss":0.016744062304496765,"input_size":18,"current_date_and_time":"2023-08-08_09-22-33","input_mean":[[25.32558],[0.020876955],[-0.0031986607],[-0.021073462],[0.023825074],[0.023209965],[0.022263236],[0.022898776],[0.022900082],[0.021173751],[0.019993754],[-0.021117106],[-0.021114947],[-0.02110833],[-0.020907117],[-0.020756595],[-0.020630443],[-0.020645482]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.08477574],[-1.1208596],[0.056731466],[-0.13102329],[1.3400327],[-0.21376154],[-0.14902717]],"dense_1_W":[[-0.019731255,0.5049976,-0.036526002,0.011823861,-0.1379057,1.0417687,-0.41630954,-0.28008935,-0.10283441,-0.05499538,0.25074315,0.047100175,-0.29597563,-0.07547027,0.25998276,0.22996715,-0.18355547,-0.08965249],[-0.5427593,-0.20459586,-1.1918509,0.49397376,0.40827742,-0.22497697,0.4398683,-0.36652535,-0.032938156,-0.5691974,0.40494335,-0.31987035,-0.33914092,0.37502846,0.1593614,-0.20469041,-0.11929302,0.08297961],[0.09138077,0.5844746,0.01609009,0.106926106,0.18020171,0.29379869,-0.33216235,0.0700583,-0.16037555,-0.24483693,0.24122177,0.21059227,0.16990502,-0.34959447,-0.22446343,-0.048417874,-0.10075254,0.14260091],[-0.04069323,0.72442687,6.4593797,-0.11315368,-0.64344734,-0.65112764,-0.43653354,0.18658906,1.393825,0.79047185,-1.1749243,0.47932476,-0.05644744,0.082114056,0.06887666,-0.52010685,-0.27435255,0.34667605],[0.5707703,-0.5124983,-1.2294043,-0.03657325,0.3137657,0.1472218,0.2302784,-0.17878631,-0.04963707,-0.4735355,0.3274108,-0.5153868,0.3066991,0.21095222,0.18537575,0.19664803,-0.3297685,0.09996214],[-0.064720176,0.19063953,0.034651436,-0.36256272,-0.21260333,0.6277773,-0.3070442,0.04620047,0.34898838,0.21007203,-0.30331737,0.5204954,0.28685373,-0.061015386,-0.26879862,-0.41823646,-0.34857938,0.550084],[-0.021767776,-0.65322065,1.1321541,0.16613401,0.57740504,-0.3740601,0.65210044,-0.37584355,0.0014690036,-0.06747381,0.32518736,-0.50768954,-0.30564624,0.591422,0.2179493,-0.316548,0.25551757,-0.22068849]],"activation":"σ"},{"dense_2_W":[[0.7023776,-0.5377536,0.447295,0.20259193,0.35656255,0.34270075,0.14764449],[-0.8119403,1.898599,-1.0897249,-0.9444553,-0.95713764,-0.7802652,1.1571481],[-0.41300622,0.5057582,-0.42050916,-0.26921916,0.4071575,-0.72827977,0.6723096],[0.659268,0.41014376,0.7103329,-0.2158735,-0.5761206,0.8324001,-0.6932241],[0.7650227,-0.098119624,-0.13894603,-0.09793376,-0.29583746,0.15023077,-0.18984264],[-0.5645378,0.37838322,-0.25003466,0.30110332,-0.17372216,-0.14515066,-0.2892711],[-0.86647314,-0.6360927,-0.512288,-0.40345564,-0.57944584,-0.10611315,0.3009823],[0.47419962,0.12130229,0.47665277,-0.22477815,-0.6503073,0.7154409,-0.5352525],[-0.33391073,0.19982284,-0.18712083,-0.61583984,0.32468942,-0.30625635,0.5543383],[-0.7848551,0.3256499,-0.20679983,-0.61387134,1.2375975,-0.54205257,0.7628237],[-0.80773836,0.5552902,-0.82975096,0.44044396,0.20548598,-0.41023898,-0.015094675],[-0.0031497905,-0.34568506,0.714917,0.34772903,-0.47651246,0.11289852,0.01636551],[0.26711908,0.18439986,0.6041066,-0.32462585,-0.6204204,0.6425605,-0.3411199]],"activation":"σ","dense_2_b":[[-0.09711639],[-0.08352111],[0.047110736],[-0.097634606],[0.0056070853],[-0.100640625],[-0.27092776],[-0.0012954418],[-0.0036094699],[0.3191952],[0.009079399],[-0.12750977],[-0.056785733]]},{"dense_3_W":[[0.06739133,0.59006786,0.6211502,-0.5984078,-0.32169876,0.3524586,0.24023733,-0.27815732,0.5021664,0.56558025,0.14635971,-0.56661624,0.3526846],[0.40286243,-0.37436473,-0.6752988,0.6229788,0.06661106,0.28863597,0.2982523,0.62539214,-0.2726357,0.0369207,-0.49113652,0.13289927,0.42825526],[-0.5299166,-0.058093112,0.2767313,0.31623214,-0.46782243,-0.02541171,0.52295595,-0.17039666,0.5000973,0.43198228,0.28259963,0.442186,-0.49364412]],"activation":"identity","dense_3_b":[[-0.045575317],[0.01754547],[-0.034936134]]},{"dense_4_W":[[-0.8772865,0.7928133,-0.44498837]],"dense_4_b":[[0.02575194]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321646AC'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321646AC'.json deleted file mode 100755 index 547a4dd4b9..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321646AC'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.737005],[0.88882256],[0.40919855],[0.039857272],[0.8705369],[0.8758246],[0.8814676],[0.8781675],[0.86962575],[0.85621184],[0.8394485],[0.03945453],[0.03953348],[0.03961019],[0.03977209],[0.039786596],[0.039618857],[0.03923206]],"model_test_loss":0.012028406374156475,"input_size":18,"current_date_and_time":"2023-08-08_09-48-14","input_mean":[[22.945333],[-0.0010462697],[0.0048553967],[-0.0153987445],[-0.0021738543],[-0.0016759728],[-0.0015154154],[-0.001325464],[-0.00038370863],[-0.0006709971],[-0.00058776775],[-0.015591592],[-0.015539771],[-0.01549547],[-0.015391692],[-0.015357372],[-0.01538723],[-0.015529609]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.5486719],[0.2716225],[-1.6157514],[1.1729423],[-1.1907693],[-0.39801067],[-0.121997826]],"dense_1_W":[[-0.46544072,0.7250584,4.8497953,0.14721076,-0.5592774,-0.06463778,-0.64544016,-0.40530452,1.03972,0.39865008,-0.32899725,0.3914242,0.2066326,-0.092136934,-0.25278154,-0.43968657,-0.29141605,0.33539483],[0.020392422,0.024581747,0.0031651654,0.040796407,-0.38519448,-0.8635064,0.37892318,0.102256194,-0.09094794,0.21679239,-0.2812365,-0.15923738,-0.108921684,0.6662101,-0.08453101,-0.07277869,0.05620035,-0.016352834],[-0.3585343,1.2613775,0.0038963037,-0.15068118,-0.13595745,0.22841744,-0.5804063,-0.11421715,0.540371,0.38811037,-0.412488,0.33400613,0.15549748,-0.08101292,-0.13149312,-0.3663767,-0.065549724,0.3084776],[0.23774011,0.95270973,0.0014370019,-0.033368304,-0.42406502,0.77913195,-0.5337653,0.07241031,0.044325322,0.3215471,-0.20761405,0.43413407,0.478264,-0.83566636,-0.32521436,0.21832462,-0.10103389,0.15086488],[-0.8515809,-0.001838693,-3.2252197,0.042975638,0.43727648,-0.22219318,0.35821626,0.15869705,-0.42442384,-0.39166257,0.0048108334,0.078742936,0.040681444,-0.3639781,-0.15564561,-0.12332069,0.5021788,-0.055283524],[0.005189595,-0.8111827,0.0013606233,0.50199807,0.3737952,-1.0003718,0.851964,-0.122223474,-0.3087659,-0.2764092,0.34383842,-0.43569988,-0.20424576,0.35416314,0.2666806,0.2474478,-0.25429338,-0.09367016],[0.012469906,-0.51571983,0.0040051304,0.15235668,0.5664555,-1.1568508,0.97973454,0.22787246,0.12199299,0.16332985,-0.17958714,-0.6260466,0.3168435,0.07752037,-0.16694872,-0.05125427,0.54919314,0.07834808]],"activation":"σ"},{"dense_2_W":[[0.42687958,0.35546088,-0.0835482,-0.16971982,0.44030172,-0.1060948,-0.27846086],[0.3972471,-0.26396534,0.60359323,-0.2778684,-0.5613684,-0.27746892,-0.39469868],[-0.2463116,0.42827067,-0.22504425,-0.59708124,-0.3661039,0.63707,0.15119193],[-0.33165976,0.33214015,-0.6223232,-0.38051826,0.030521309,0.08566356,0.44499964],[-0.19122124,-0.08419296,0.65129405,0.6664746,-0.13785547,-0.83451825,-0.1729238],[0.2925262,-0.8603122,0.49935588,0.41965902,0.0442165,-0.05522488,-0.82031214],[0.1410513,-0.08103695,0.25278136,0.37289864,0.25904986,-0.37102434,0.062144414],[0.29021037,0.3428696,-0.6168156,-0.13681921,0.34707314,0.5923309,-0.08615041],[0.4242105,-0.6498356,-0.19368397,0.86813235,0.12725602,-0.058380764,-0.29565084],[0.3024098,-0.06166411,0.3740148,0.6663715,-0.040609878,-0.41137022,-0.7049944],[-0.18053831,-0.37341672,-0.07160507,0.080549926,0.0789703,0.20618889,-0.40184686],[-0.7074698,-0.29236713,0.28588095,-0.20616542,0.13988344,0.09854203,-0.21226078],[0.3260612,0.23354511,0.35486403,0.6984273,-0.24646878,-0.60650444,-0.46223956]],"activation":"σ","dense_2_b":[[0.031995755],[-0.2639717],[0.0073487367],[0.057454802],[-0.040088877],[-0.07751858],[0.015209585],[-0.004185873],[-0.06493244],[-0.010564818],[-0.065297335],[-0.2724362],[0.016460005]]},{"dense_3_W":[[-0.07241538,0.51749754,-0.66165704,-0.6295341,-0.1707448,-0.43621805,0.18211804,-0.03065691,-0.13813734,0.6441604,-0.30329812,0.54201734,0.55464447],[0.19548033,-0.28439224,0.6228154,0.26898032,-0.5306852,-0.60617685,0.33318204,-0.16073118,-0.37244457,-0.5546019,0.17876261,-0.3419583,-0.09833642],[-0.5292195,-0.26595876,-0.27626458,-0.15267096,0.22562627,0.53073275,-0.20250128,-0.67357546,0.26390368,0.25917968,0.29303232,-0.573905,0.6053267]],"activation":"identity","dense_3_b":[[-0.032989413],[0.044406198],[-0.033128925]]},{"dense_4_W":[[0.5753529,-0.8160843,1.1863258]],"dense_4_b":[[-0.037123773]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68367342AA'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68367342AA'.json deleted file mode 100755 index 4676ef8177..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68367342AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.3758683],[0.8794069],[0.46141535],[0.037675492],[0.88829136],[0.886115],[0.8817511],[0.84581715],[0.8278533],[0.80277216],[0.7799678],[0.03770945],[0.037679393],[0.037663188],[0.03748336],[0.037227985],[0.03666999],[0.03598855]],"model_test_loss":0.006474275607615709,"input_size":18,"current_date_and_time":"2023-08-08_10-12-47","input_mean":[[26.350012],[-0.09385938],[0.041549694],[-0.0030162074],[-0.09805675],[-0.09651579],[-0.09413497],[-0.07463795],[-0.06469781],[-0.05300219],[-0.045351826],[-0.0031147127],[-0.0030688543],[-0.0030160798],[-0.0029022517],[-0.0028611047],[-0.002841013],[-0.0029479503]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09162939],[-0.0024971273],[-0.24881262],[-1.32228],[-0.4374819],[-0.9960854],[-0.32367432]],"dense_1_W":[[0.0013978665,0.5157658,0.057618756,-0.4238105,-0.5857702,0.50526756,-0.3266269,0.012936584,0.3625385,0.11991571,0.0066418285,0.40299493,-0.23047242,0.21920505,-0.4174118,-0.089936666,-0.104478516,0.045391113],[0.045715943,0.04829665,0.030840999,-0.24445257,-0.267954,0.2661487,-0.7767349,0.6312683,0.6088808,-0.05871689,-0.37978205,0.4366248,0.22490036,-0.57898104,0.0108244065,0.28357658,-0.55379957,0.32254124],[0.011607531,0.6717766,-0.07031896,-0.20974216,0.22755674,1.115498,-0.24775673,-0.08535654,-0.2567366,0.009943826,0.21396203,0.22771065,0.110520564,-0.5468987,0.0013472787,0.12118877,0.38788018,-0.5846402],[1.2240443,0.36507532,-0.0076892683,0.1908495,0.10025321,0.8377715,-0.829348,0.010610993,-0.34508568,-0.002731332,0.255436,0.22866087,-0.1078464,0.13727446,-0.16703908,-0.24019064,-0.047107916,0.0975457],[-0.049711026,0.4607915,0.015162587,-0.170386,-0.80058587,0.6337767,-0.053720508,0.19613627,0.17618516,-0.047628276,-0.115387514,-0.010986527,0.14302418,0.016793815,-0.2661772,0.047418084,0.41987264,-0.30581895],[1.1685805,0.011218695,0.007829905,-0.68930507,-0.43452054,-0.6339981,0.60769325,0.28270322,0.07532135,-0.04884226,-0.21931998,-0.008426204,0.04834048,-0.06860812,0.38515458,0.122956015,0.4017405,-0.29282153],[-0.020134322,-0.8001443,-4.5559916,0.18659148,0.70608896,-0.2582699,0.20592918,0.049877867,-0.35152316,0.053292986,0.19451627,-0.7794339,-0.2684154,0.07639334,0.6773159,0.5250616,-0.0034250547,-0.43527722]],"activation":"σ"},{"dense_2_W":[[0.21119271,-1.0255879,-0.16154091,-0.4769789,-0.61767894,0.34280777,0.05404951],[-0.02319971,-0.5616842,-0.29918796,-0.4990605,-0.56629777,0.18677638,0.112850465],[-0.3342754,-0.06275528,-0.16850384,-0.0028333499,-0.7661835,-0.41394717,-0.03308939],[-0.4943371,-0.15990037,0.2436778,0.23711683,-0.41802898,0.472897,0.36362448],[-0.5475525,-0.5687474,0.4426769,-0.5622382,-0.11734036,0.46177107,0.16163152],[-0.26939043,-0.84531426,-0.17959583,-0.20131466,-0.16513735,0.46629128,0.11826833],[-0.66524285,-0.62074107,-0.2418173,-0.6427534,-0.16397402,-0.3407568,0.38450608],[-0.72491395,-0.3333499,-0.01070937,0.06758591,-0.3469214,0.58276814,-0.60413307],[-0.7090462,-0.28402704,-0.29168892,-0.97276664,0.17415757,-0.29785421,0.35881364],[-0.053390227,-0.1611089,-0.8964952,0.26221168,-0.58006567,0.667772,-0.67146504],[0.09106713,0.40570852,0.030234145,0.12706229,0.72801465,-0.7008442,0.033457078],[0.64675695,0.34196526,-0.0063973228,-0.15831146,0.3233861,-0.818193,-0.70464826],[-0.43582126,0.39073256,0.6456649,0.5558599,0.7124559,-0.4439334,0.094163485]],"activation":"σ","dense_2_b":[[0.089445606],[-0.12313768],[-0.06173512],[-0.1068826],[-0.07586955],[0.044505995],[0.046850294],[0.107835546],[-0.07275619],[0.1918601],[-0.15383899],[-0.19150755],[-0.17611705]]},{"dense_3_W":[[-0.26096532,-0.30031928,0.18381803,-0.22780605,0.06046405,0.6438302,0.45061895,0.15275083,0.5594882,-0.23233925,-0.0062613282,-0.37721986,-0.3175804],[0.57467216,0.42339224,0.36510932,0.22639248,-0.0027739918,-0.29680425,0.39515868,0.18335965,0.6245671,0.56803894,-0.58078635,-0.732932,-0.5319626],[-0.20106415,-0.45754662,-0.37109572,0.052946024,-0.08164918,-0.5180276,0.24222454,-0.39028975,-0.37767205,-0.3367975,-0.057989135,0.5503922,0.27205816]],"activation":"identity","dense_3_b":[[-0.037949592],[-0.040613495],[0.0736481]]},{"dense_4_W":[[-0.91081345,-1.2000608,0.3280663]],"dense_4_b":[[0.040748246]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018.json b/selfdrive/car/torque_data/lat_models/JEEP_GRAND_CHEROKEE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018.json rename to selfdrive/car/torque_data/lat_models/JEEP_GRAND_CHEROKEE.json diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019.json b/selfdrive/car/torque_data/lat_models/JEEP_GRAND_CHEROKEE_2019.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019.json rename to selfdrive/car/torque_data/lat_models/JEEP_GRAND_CHEROKEE_2019.json diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.03 57700-CV000 1A19'.json b/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.03 57700-CV000 1A19'.json deleted file mode 100755 index d772752e47..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.03 57700-CV000 1A19'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.6028657],[0.998016],[0.53611773],[0.047976688],[0.9928589],[0.9924185],[0.991688],[0.96648145],[0.9476359],[0.9231466],[0.89530784],[0.047654726],[0.047677517],[0.047703277],[0.04752716],[0.04720977],[0.04657623],[0.045824196]],"model_test_loss":0.0073777767829597,"input_size":18,"current_date_and_time":"2023-08-08_11-03-36","input_mean":[[22.331253],[0.008268598],[-0.0049328315],[-0.016445948],[0.00974977],[0.009845438],[0.008850363],[0.0060875807],[0.005707362],[0.004997126],[0.001550338],[-0.016557517],[-0.016519358],[-0.016480202],[-0.016507305],[-0.016554574],[-0.016674902],[-0.016686343]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.2134058],[-0.4401382],[0.013421209],[-0.34870654],[-0.17111516],[-1.2804115],[1.5166906]],"dense_1_W":[[-0.003492201,-0.7001189,-4.9897428,-0.06689495,0.26876342,0.35482764,0.30641812,-0.21851085,-0.555579,0.24643534,0.8393177,-0.0675409,-0.0201491,-0.020234931,-0.11246266,-0.29563373,0.021233577,0.1581605],[0.01416149,-0.40680584,0.007477288,0.27667442,0.49908307,-0.8357575,0.31320336,0.078352265,-0.120635815,0.19794565,-0.11251097,-0.046342086,-0.14189145,0.031422284,0.12273671,-0.020133087,-0.41442218,0.2202907],[0.006394261,-0.26172528,0.014584929,0.05768383,0.0585847,-0.5514914,0.8517142,-0.24889153,-0.22688049,-0.16613601,0.26893988,-0.74086446,-0.04820193,0.005417286,0.62154377,0.22829771,-0.13376506,-0.03882397],[0.057499748,-0.086839266,-0.0019575898,0.4038879,-0.19230208,0.757238,-0.3092829,0.1257818,0.0051625846,0.057344712,0.007206614,-0.29419062,0.25565282,-0.1575536,-0.10660876,0.022886055,-0.52114695,0.33686352],[-0.04594949,0.0063070045,0.008311233,0.27411845,-0.10505312,0.59662914,-0.1289434,-0.062175047,-0.14703758,0.17578988,0.012138173,0.08942247,0.03361194,-0.5405618,0.01592405,0.21723932,-0.08538327,-0.03150985],[-0.9764623,0.6599259,0.10607622,-0.031322658,-0.25540224,0.593693,-0.8804088,0.257759,0.093271345,-0.016888158,-0.026402805,0.2872013,-0.113752045,-0.52583855,-0.055375155,-0.08507545,-0.29209676,0.3949437],[0.96527904,0.58919865,0.104077555,-0.018589191,-0.21170476,0.5390397,-0.80143183,0.2932772,0.10296324,-0.13822582,0.045123298,0.3152447,0.085109994,-0.72252256,0.008645425,-0.4263549,0.017035658,0.32861862]],"activation":"σ"},{"dense_2_W":[[-0.37199923,-0.12832722,0.1749511,-0.67342365,-0.13077573,0.13716596,-0.31276017],[0.08311641,-0.8226717,-0.732273,0.43065447,0.42091942,-0.23820308,0.46186474],[0.061342355,-0.13367933,0.7275678,-0.5163101,-0.97730047,-0.16040334,-0.39433354],[-0.0016042206,0.23937365,0.7839997,-0.5188498,-0.54760414,-0.75992507,0.20722012],[0.05986252,0.7940592,0.017990412,-0.5053787,0.250168,-0.6725281,-0.35185984],[-0.7115049,-0.0011200714,0.0579297,0.19635859,-0.52030295,-0.37339073,-0.6610869],[-0.18911484,0.5807425,-0.3931502,-0.35992047,0.19167884,0.107894614,-0.35034665],[-0.30906686,0.10427205,-0.1708548,0.64270127,-0.06690356,0.036203638,0.36818498],[-0.43202224,0.11372802,-0.32337222,0.45003918,0.3964415,0.48027653,0.13094209],[-0.19394279,-0.61314553,-0.982793,0.24535689,0.7340253,0.034465324,0.5163571],[-0.08394236,-0.114718884,-1.0960547,-0.13727869,0.5059502,0.4406658,0.71635777],[-0.16832595,-0.03387522,-0.105201766,0.4467705,0.4825295,-0.062805906,-0.23995127],[0.03845694,0.3393674,0.32816932,0.23535535,-0.2891049,-0.26096547,-0.60556257]],"activation":"σ","dense_2_b":[[-0.0046654143],[-0.26616848],[-0.15242769],[0.063154235],[0.06204032],[-0.3036946],[-0.05402751],[-0.11423277],[-0.14205089],[-0.076766774],[-0.13189071],[-0.118149914],[0.022861073]]},{"dense_3_W":[[-0.40607935,-0.36904916,0.37094548,0.46005347,0.35317707,-0.38036,-0.0136696,-0.031072931,-0.4748755,-0.64991397,-0.09883376,-0.51478076,0.4007376],[0.5878066,-0.048418067,0.11663792,0.37321356,0.61102366,0.2959198,0.108360104,-0.11913145,-0.3183053,-0.43023407,-0.4099306,0.11975287,0.29941538],[0.08712033,0.3742091,-0.39980045,-0.22939302,0.5524921,0.33014178,-0.061465893,-0.37761515,0.06954819,-0.040838677,-0.24257697,-0.23456632,0.16012669]],"activation":"identity","dense_3_b":[[0.046470255],[0.030692197],[0.032811448]]},{"dense_4_W":[[-0.89180064,-1.1650615,-0.18752445]],"dense_4_b":[[-0.03583435]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.04 57700-CV000 1B30'.json b/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.04 57700-CV000 1B30'.json deleted file mode 100755 index b17e312325..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.04 57700-CV000 1B30'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.636926],[0.99775106],[0.51730037],[0.04172602],[0.9902031],[0.991702],[0.99406433],[0.98449016],[0.98021054],[0.97221226],[0.9606815],[0.04157153],[0.041613027],[0.04166065],[0.041698292],[0.041637298],[0.04147782],[0.041154478]],"model_test_loss":0.008439864963293076,"input_size":18,"current_date_and_time":"2023-08-08_11-29-58","input_mean":[[23.63399],[-0.070179984],[-0.017329546],[-0.016923679],[-0.06702602],[-0.06750857],[-0.067957565],[-0.07641299],[-0.080450155],[-0.08741072],[-0.08942049],[-0.016724136],[-0.016768401],[-0.01682333],[-0.016932698],[-0.016983371],[-0.017182635],[-0.01732987]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.3281497],[-0.1386229],[0.068819225],[-0.019412158],[-2.451048],[2.45977],[0.072729476]],"dense_1_W":[[-1.0003167,0.059292447,-0.0025035366,-0.07270117,0.03486205,-0.71160764,0.47882712,0.1636013,0.34797484,-0.19271761,-0.08604989,-0.38023552,-0.10472232,-0.03376971,0.4000991,0.3570124,0.33536893,-0.24505846],[0.0052611283,0.84425735,5.585779,-0.021570992,-0.7179723,-0.113942355,-1.1103576,0.15865955,1.2473391,0.06493884,-0.2477255,0.14004384,0.18952657,0.010783735,-0.8468175,0.04784935,0.1129318,0.1958878],[-0.004737935,-0.6588937,0.006123585,0.17500632,0.287176,-0.9833101,0.61836934,-0.025035203,-0.16567795,-0.17453128,0.15334582,-0.41367865,-0.35360122,0.7015716,0.22423786,-0.3394676,-0.035324857,0.023584878],[0.99039614,0.02071242,-0.002529335,0.22897765,0.14088887,-0.9813151,0.72088784,0.18345436,-0.061098445,0.36531118,-0.29483438,-0.48716846,-0.70862526,0.6618173,0.22802202,0.24263938,0.26600027,-0.17759201],[-0.4457454,0.7465454,0.19822481,-0.6893106,-0.33370095,0.08260407,0.112919874,0.64286476,0.47592863,0.36428148,-0.38146886,0.2040808,0.13841604,-0.04391594,0.27622476,-0.19026394,0.16928938,-0.21241508],[0.46304423,0.7735011,0.19910802,-0.52521425,-0.6831936,0.5753077,-0.2356248,0.9027313,0.46573797,0.4141583,-0.48462674,0.341143,0.4956985,-0.6265562,-0.067270085,0.22146614,-0.08455455,-0.10452678],[-0.17997652,-0.048065923,0.0543845,0.7212201,0.35718217,0.16550168,0.57716334,-0.3129087,0.18472067,-0.73616695,-0.7397382,0.020727323,0.18844429,0.37562203,-0.19119298,-0.5826378,-0.62202686,-1.1500102]],"activation":"σ"},{"dense_2_W":[[0.30996957,0.3620612,0.19219857,0.5534441,-1.2349578,-0.41534692,0.35350785],[-0.2175235,-0.029167634,-0.07900721,0.53388363,-0.57290107,0.119387515,-0.16951317],[0.2695079,0.08399006,0.738549,0.2894061,-0.5357801,-0.71563846,0.31262836],[0.38937768,-0.9733951,-0.08894609,-0.013909257,0.24918033,-1.5008242,-0.7839707],[-0.6003588,0.14547037,-0.55455977,-0.48437524,0.39916262,0.56922144,0.22648938],[-0.46998897,0.34172785,-0.30137694,-0.34641954,0.11116893,0.46578008,0.24678849],[-0.78984165,0.46101516,-0.5639303,-1.1220579,1.1517729,-0.4244306,0.31534004],[0.4589919,-0.31986734,0.47596893,0.76536596,-0.051692575,-0.10105569,-0.4216019],[0.0010699058,1.2612101,-1.3807253,-1.1397744,1.6594896,-0.6309603,-0.8039972],[1.2380359,-1.7453684,0.4242525,0.019551069,0.49429622,-1.795323,0.08261984],[0.3972687,-0.8025517,0.60930085,0.07706176,0.076197505,-1.22639,0.18504499],[-0.9094243,-1.7106271,-0.7486791,1.3113708,-1.1184276,0.014299314,-0.34431195],[-0.008385938,0.27393603,0.6410162,0.70163506,-0.66412205,-1.0397469,0.1510303]],"activation":"σ","dense_2_b":[[-0.25120014],[-0.14833862],[-0.2754657],[-0.50557667],[0.13908446],[0.069000565],[-0.07628111],[-0.2187848],[-0.31339166],[-0.4099455],[-0.2503555],[-0.09509195],[-0.39131135]]},{"dense_3_W":[[0.5850583,0.24930371,0.47890794,0.36771303,-0.61603814,-0.48785573,-0.7595788,0.343497,-0.68425894,0.26591393,0.5141339,0.034521252,0.6326022],[-0.15742448,0.05325502,-0.34628916,0.28195977,0.7598076,-0.1799433,0.4802377,-0.044031564,0.3854451,-0.9805936,-0.07348244,0.84516305,-0.49842322],[-0.50455654,0.32130662,0.0916387,-0.09003524,-0.19368353,-0.28112268,0.22840995,0.5315722,0.31819898,-0.25823647,0.23832029,-0.007766277,-0.35535583]],"activation":"identity","dense_3_b":[[-0.10590303],[0.07168751],[-0.014283153]]},{"dense_4_W":[[-0.62888306,0.5515062,0.04721317]],"dense_4_b":[[0.08200853]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.05 57700-CV000 2425'.json b/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.05 57700-CV000 2425'.json deleted file mode 100755 index 5383620d87..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.05 57700-CV000 2425'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.756191],[0.8422167],[0.3935759],[0.03985225],[0.847421],[0.84577143],[0.8438802],[0.8312308],[0.82332045],[0.8139623],[0.8044926],[0.039848723],[0.039851446],[0.039843414],[0.039771948],[0.039651867],[0.03946986],[0.039127663]],"model_test_loss":0.00447295093908906,"input_size":18,"current_date_and_time":"2023-08-08_11-54-31","input_mean":[[21.687302],[0.006407267],[0.018950889],[-0.009187785],[0.005421752],[0.006316563],[0.007847993],[0.013237735],[0.014951903],[0.018369293],[0.020485098],[-0.009148834],[-0.009137076],[-0.009120599],[-0.009176439],[-0.009111171],[-0.008984524],[-0.008785447]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20498206],[0.14577107],[0.08559532],[-0.36848816],[-0.19730051],[-0.030227017],[-0.2253597]],"dense_1_W":[[2.308543,0.03020248,0.018995002,-0.024404034,0.8007829,-0.5156367,0.10489569,-0.33277398,-0.09787901,0.20294352,0.080392405,-0.31504363,-0.31018522,0.2897744,0.52273995,-0.031090064,0.19173853,-0.22689787],[0.00081780413,0.8643929,3.7596824,0.04694658,-0.97499377,-1.0411439,-1.1665148,0.29043487,1.221662,0.76075923,-0.2100547,0.18282944,0.30418468,-0.4097326,0.0014765597,-0.008321829,0.049456507,-0.028409772],[0.03110457,0.12643631,-0.033637524,0.82713836,0.14466572,-1.1336243,0.21813098,0.0455519,0.22815101,0.16354488,-0.3041193,-0.30829903,-0.19326043,-0.0013841438,-0.11585437,-0.13768283,-0.09550705,0.045170184],[-0.035894755,-0.30930525,-0.024392668,-0.2612936,0.21937297,-0.86915934,0.56173295,0.01745204,0.20141557,-0.32779387,0.061529484,-0.27867725,0.3428134,-0.095910266,0.05310102,0.5960199,0.067442365,-0.3346001],[2.3743505,-0.27000943,-0.024168417,0.15309551,-0.26398262,0.25595742,-0.022308368,-0.039125554,0.19000678,-0.11940631,-0.030037664,0.37605497,-0.33591053,0.050574202,-0.61969125,0.434404,-0.15990326,0.011175081],[-0.0070874724,0.15298845,-0.00084517436,0.2524529,-0.030157164,0.22337195,-0.17864515,0.3122118,0.14113893,-0.0834633,-0.050355904,0.6705104,0.16077328,-0.40681332,-0.06884257,-0.2205331,-0.079806775,-0.28337547],[-0.006012093,0.03713952,0.0051948116,0.14509241,0.31448504,-0.15223765,0.84517163,-0.62974775,-1.0796629,0.020326132,0.12779477,0.07742896,0.16281007,0.89423746,0.21255082,-0.6164101,-0.36238167,0.23721826]],"activation":"σ"},{"dense_2_W":[[-0.08678365,-0.28735358,-0.44816428,-0.67430466,0.49221525,0.5313274,-0.075466506],[0.44214758,0.23506661,-0.07796156,0.14776449,-0.2601569,-0.92744434,0.28036892],[-0.9958226,0.5270989,-0.9116515,-0.4043872,-0.4005815,0.42227224,-0.14791597],[-1.0120796,-0.99568295,0.4510569,0.76626235,-1.3704773,-0.5985419,0.33657166],[-0.1804857,-0.0013589673,-0.24071819,-0.6249834,0.46821326,0.7279164,-0.411145],[0.18040283,0.0071279733,0.62853,0.6653126,0.1514985,-0.036630243,0.4138839],[0.23634094,-0.45010313,0.83803207,0.14591682,-0.47077256,-0.18304086,-0.05127678],[0.4930245,0.24832006,-0.14192279,0.6992845,-0.36574662,-1.0204111,0.3912414],[-0.011458314,0.35960925,0.000741611,-0.6913261,-0.5707353,0.49046513,-0.6306739],[-0.6022925,-0.35062015,-0.29702994,-0.16955367,-0.76008457,-0.11612536,-0.7346027],[-0.52043587,-0.17739458,-0.53521717,-0.75561386,-0.29444557,0.084623955,-0.4924554],[-0.40299603,-0.39608985,0.59452647,0.39619842,-0.681544,-0.9410745,0.25125793],[-0.19426703,0.17029157,-0.7068769,-0.0753074,0.5027616,0.4312823,-0.6993899]],"activation":"σ","dense_2_b":[[0.01738418],[-0.055564888],[-0.11172867],[-0.517177],[0.10449031],[-0.16354589],[-0.02996434],[-0.39060414],[-0.075024545],[-0.30811903],[0.040471796],[-0.15641882],[0.08672954]]},{"dense_3_W":[[-0.35984564,0.46071008,-0.39839146,-0.3249784,-0.0111061195,0.3353518,-0.18329817,0.11267565,-0.12863319,-0.6369906,0.1716676,0.09197707,-0.45575505],[-0.21391304,0.47215983,0.8454924,-0.6340474,0.14945674,0.42495897,-0.47129405,-0.44493976,0.017284637,-0.17222904,0.61577874,-0.025167221,0.5150705],[-0.2882089,0.1130023,-0.5851863,0.5870541,-0.6550108,0.37209293,0.4928965,0.19859159,-0.32288226,0.39181784,-0.39298615,0.5562495,-0.19359553]],"activation":"identity","dense_3_b":[[0.061583135],[0.027594171],[0.048770953]]},{"dense_4_W":[[-0.88079363,0.123071805,-1.1413969]],"dense_4_b":[[-0.05361239]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.06 57700-CV000 2607'.json b/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.06 57700-CV000 2607'.json deleted file mode 100755 index 15385f410f..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.06 57700-CV000 2607'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.371664],[0.8660402],[0.44205353],[0.04006577],[0.8695941],[0.86906177],[0.86788267],[0.8551706],[0.8498503],[0.8475595],[0.84451574],[0.039957225],[0.0399996],[0.040031727],[0.039957136],[0.039866317],[0.039591454],[0.039338887]],"model_test_loss":0.003942334558814764,"input_size":18,"current_date_and_time":"2023-08-08_12-18-48","input_mean":[[24.679834],[-0.0610162],[-0.030723063],[-0.011534694],[-0.052937914],[-0.05447521],[-0.05660855],[-0.067540534],[-0.074050665],[-0.079697154],[-0.08435825],[-0.0114096245],[-0.011442526],[-0.011459501],[-0.011501318],[-0.011486345],[-0.011416641],[-0.011339719]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.0816141],[-0.18171957],[0.44719312],[-0.09176599],[0.3736729],[-0.1810884],[0.12800315]],"dense_1_W":[[-0.0047654295,0.43260875,0.026083717,-0.13993602,-0.56262296,0.23557863,0.2347399,0.2155446,-0.100177564,0.57063645,0.0511386,0.58946824,0.12326792,-0.27978677,-0.34483367,-0.39934745,0.037110258,0.14460585],[0.008695711,-0.11661433,0.063519776,0.11895952,-0.31001577,0.2511811,-0.21447526,0.5321257,0.5065731,-0.103904374,-0.21310645,-0.20680007,0.5116181,0.0080869775,-0.708677,0.11794399,-0.0753133,0.11726266],[0.01728632,-0.5147893,-3.7443237,-0.008262636,0.52203393,0.429946,0.37147424,-0.5823051,-0.6834975,0.38940904,0.3236906,-0.0104796365,-0.044810288,0.52437323,-0.52473974,-0.32590485,0.10339124,0.09157462],[-0.002603426,-0.17195284,0.10924778,-0.077441126,-0.25571346,-1.384354,1.4639283,0.087904915,2.1046076,1.8955059,-1.0389798,-0.030392189,0.28473544,0.12830776,-0.5015701,-0.2827064,0.22205079,-0.32293126],[0.471999,-0.33321312,0.014776426,0.3969741,0.06666081,-0.69879496,0.47338915,0.020157907,-0.435533,0.15537709,-0.08532591,-0.33910295,-0.31417578,0.3437639,0.1030388,-0.1870897,-0.12972718,0.11436254],[0.000637897,0.12112293,0.015960619,-0.32365808,-0.09766896,-0.090567514,0.3855356,-0.2726324,-0.49548095,-0.20762078,0.41708624,0.0070781377,-0.10015481,0.17304403,0.37958065,0.46784183,0.3907835,-0.2139301],[0.44996986,0.1220842,-0.01267547,-0.09012574,-0.17965375,0.73542017,-0.15659401,0.04869948,0.14307545,0.11160313,0.010984089,0.21072775,-0.04606061,0.05491384,-0.4440439,0.32647374,0.19412273,-0.18947527]],"activation":"σ"},{"dense_2_W":[[0.7131255,0.56979114,-0.20163262,-0.76048356,-0.8553241,-0.08986244,0.09411956],[-0.5182983,-0.42607206,-0.1451523,-0.10615285,0.032286465,0.35113242,-0.66459066],[-0.42765474,-0.7001917,0.66741145,-0.17573306,0.3278255,-0.850597,0.24560727],[-0.5889132,-0.8559872,-0.14758717,0.6270137,0.8541969,-0.11721104,-0.7477589],[-0.684439,-0.4758031,-0.026908234,0.817481,0.5295401,0.8627598,-0.7020077],[0.13727106,0.6912117,0.15914854,-0.09929708,-0.47058728,0.41985986,0.46591565],[-0.77461493,-0.48245478,-0.078716494,0.26805362,0.06693142,0.52222615,-0.3683436],[-0.7610143,-0.53920734,1.1778057,0.17035471,1.7079359,0.060867958,0.65265995],[0.5485359,0.21809472,0.089422144,0.18732184,0.13284095,-0.5967669,-0.057103433],[0.5938206,-0.058559667,0.3107985,0.29578283,-0.08403785,-0.4867308,-0.3937628],[0.043648288,0.17193118,0.14474227,-0.38408777,-0.49636945,-0.62368274,0.54162353],[0.44284257,-0.29537362,-0.64413524,-0.2906911,-0.9059539,-0.3265376,-0.47823036],[-1.0017595,-0.69023037,1.7603761,0.15749584,-1.549278,-0.037252687,-2.2732258]],"activation":"σ","dense_2_b":[[0.020199465],[-0.04349766],[-0.35098335],[-0.07552022],[-0.32699242],[0.013798403],[-0.06263833],[0.15603606],[-0.024233129],[-0.0554949],[0.02559489],[0.01943721],[0.043122534]]},{"dense_3_W":[[0.36593956,0.2853892,-0.54242194,-0.042743444,-0.49066496,-0.2595811,-0.05406562,0.006202219,0.27496532,0.35713604,-0.39133155,0.37615958,-0.43270436],[-0.023188023,-0.50453436,0.055650853,-0.14124836,-0.25217998,0.28775543,-0.5941702,-0.69895655,0.12989889,-0.23987368,0.7094374,0.4217381,-0.7861608],[-0.551317,0.49120143,-0.2342702,0.61732894,-0.022938209,-0.44924045,0.13548025,0.32949445,-0.5254622,-0.33368072,-0.47489953,-0.29117772,0.09898376]],"activation":"identity","dense_3_b":[[0.047230996],[0.068798855],[-0.031155106]]},{"dense_4_W":[[0.20761946,0.83402395,-0.8194524]],"dense_4_b":[[0.0384233]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA K5 2021 b'xf1x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101'.json b/selfdrive/car/torque_data/lat_models/KIA K5 2021 b'xf1x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101'.json deleted file mode 100755 index f2947b26a6..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA K5 2021 b'xf1x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.854484],[1.1301922],[0.52762777],[0.03877506],[1.1222172],[1.1249937],[1.1272055],[1.1161014],[1.0981379],[1.0717709],[1.0430657],[0.038641475],[0.038688984],[0.038735364],[0.03873086],[0.03864822],[0.038562547],[0.03838567]],"model_test_loss":0.012177987955510616,"input_size":18,"current_date_and_time":"2023-08-08_13-33-06","input_mean":[[21.915575],[-0.06991629],[0.008433489],[0.007756771],[-0.071591675],[-0.07195356],[-0.07209177],[-0.06747005],[-0.06206288],[-0.055634778],[-0.04844025],[0.0078251595],[0.007823075],[0.007812319],[0.0076907766],[0.00752464],[0.0073143714],[0.007158594]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.6469083],[0.78235936],[0.08529988],[0.17299432],[-0.5838562],[0.1480536],[-2.9458652]],"dense_1_W":[[0.6887408,0.7862894,0.46915615,-0.7615858,0.18839829,0.28929535,-0.49877065,0.5568004,0.91740584,0.35415035,-0.18235375,0.013719181,0.5743932,0.19287096,-0.3434696,-0.024053648,0.064986974,-0.055624507],[0.7481552,0.44785875,-0.39244938,-0.5366956,-0.46786323,-0.1834816,-0.9788827,0.03859454,-0.30279753,-0.08496807,-0.3507284,0.19772953,0.36484724,-0.31819546,0.22478342,0.37129864,-0.10703407,0.08960236],[-0.0018834132,-0.78730613,0.00020844977,0.13114999,-0.22980459,-0.8770316,0.9075459,0.038643394,-0.19233434,0.0454518,-0.097979,-0.58106935,0.1089662,0.51069635,-0.056984548,0.02036188,0.28987607,-0.26365396],[0.8899782,-0.058186773,-0.002375113,-0.22645739,0.46521798,-0.80593467,0.43126416,-0.41846383,0.24639922,0.16433802,-0.10675408,-0.23226354,0.006861831,0.14686735,0.547673,0.004610249,-0.090327084,-0.08441118],[1.2577723,0.41239512,-0.0039192457,0.039716844,-0.14862831,0.2655834,-0.34833747,-0.019234447,-0.16249205,0.07985215,-0.018647766,0.07292356,-0.3869771,0.3235518,-0.2897348,-0.10409623,0.37779024,-0.16593073],[-0.08166623,-1.599451,-5.784969,0.3708807,0.18732668,-0.1005467,0.7795171,-0.76319546,-0.52485704,0.82277596,1.2727301,-0.9839783,-0.13048978,0.18545102,0.13665888,0.013392682,0.037149593,0.32225874],[-0.8011789,1.2479645,0.45739445,-1.1320211,0.014393064,0.8998146,-1.3779738,0.7481604,0.5442367,0.41216576,-0.12928943,0.5111585,0.6192922,-0.19101119,-0.14709279,0.099627435,-0.20379099,0.1167656]],"activation":"σ"},{"dense_2_W":[[-0.39168912,0.12821183,-0.5745629,-0.2955745,-0.32214537,-0.48573247,-0.0049454668],[0.045028664,0.24872321,0.86677504,0.6680555,-0.5444451,-0.44519505,-1.0166295],[-0.6287411,-1.0502021,-0.37122965,-0.1330107,-0.16224831,-0.016187359,-0.22554144],[0.14796557,-0.2989984,-0.99244916,0.122506104,-0.020859987,-0.22429037,-0.38963094],[-0.3986394,0.42711204,-0.84266853,-0.03070883,-0.33096692,-0.56852376,0.6374697],[0.41194984,-0.27822644,-0.97238785,-0.66755277,0.60301566,0.10326954,0.7110429],[-0.43703943,-0.066251904,0.36446202,-0.4253811,0.092789024,0.01931588,-0.1531331],[-2.0546894,-2.0581992,0.060728226,-1.9572034,-1.0979232,1.7699203,-0.25269505],[-0.6677076,-0.65859634,-0.6190105,-0.66367626,0.07593136,-0.723147,-0.792268],[0.11594589,0.028933136,-0.51343495,-0.74736786,0.6151048,-0.40659943,0.320618],[-0.8179273,-0.39457303,0.65922356,0.2230339,-0.1805746,0.24354604,-0.45367607],[0.13779806,0.3070163,-0.083634906,-0.6793103,-0.31604096,-0.2882177,-0.05156203],[-0.5967588,-0.3445199,0.49922496,0.72002596,-0.2383223,-0.07767089,-0.014663982]],"activation":"σ","dense_2_b":[[-0.020715965],[-0.1509274],[-0.22611032],[-0.23432997],[-0.08001996],[0.011014631],[-0.13749276],[-0.13827106],[-0.27956584],[0.020674339],[-0.114044055],[-0.033070605],[-0.067024864]]},{"dense_3_W":[[-0.56229556,0.37780973,-0.28346238,0.006381281,-0.427774,-0.63294375,0.19204108,0.59055233,-0.13668692,-0.71561706,0.49993688,0.2800797,0.37756824],[0.45251364,0.53362393,0.4679781,-0.29337665,-0.3235545,-0.07848005,0.058482118,0.10375023,0.27879906,-0.3273172,0.57563937,-0.4281684,0.54832417],[-0.07654791,0.19594347,0.14752778,0.0811722,0.35966474,-0.45563278,-0.40835533,0.9917353,-0.05505701,-0.18214287,0.28810912,-0.64292353,0.5321835]],"activation":"identity","dense_3_b":[[-0.027110294],[-0.04791606],[-0.03029678]]},{"dense_4_W":[[-0.9615104,-0.5668664,-0.5576843]],"dense_4_b":[[0.032777302]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4000x00 4DEEC105'.json b/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4000x00 4DEEC105'.json deleted file mode 100755 index 31b7512c4b..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4000x00 4DEEC105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.385439],[1.5132291],[0.5865538],[0.05131345],[1.5001018],[1.504909],[1.5081477],[1.4920704],[1.4653914],[1.4241073],[1.3771554],[0.051144965],[0.051199757],[0.051243976],[0.051260624],[0.051153995],[0.050753817],[0.050118044]],"model_test_loss":0.009958313778042793,"input_size":18,"current_date_and_time":"2023-08-08_14-53-23","input_mean":[[20.6522],[0.019880848],[-0.0015674612],[-0.009201578],[0.020643277],[0.020050274],[0.019826038],[0.018546505],[0.019691756],[0.02080321],[0.01971522],[-0.009233499],[-0.009218388],[-0.00920795],[-0.009186053],[-0.009161949],[-0.009261446],[-0.00937544]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.0022040606],[-0.45466518],[3.0495393],[0.1841935],[-0.07598528],[-0.049344935],[-2.8103917]],"dense_1_W":[[-0.043426234,-0.47749293,-0.02466255,0.26999012,0.29533443,-0.85174936,0.46759945,-0.18788536,-0.0090048555,-0.02694799,0.074940585,-0.17094204,0.2226856,-0.06197424,-0.06083671,0.5117093,0.3611478,-0.38309807],[0.0601729,-0.32238936,-0.0061821314,0.048993003,-0.119464226,-1.3493574,1.2128321,-0.24819785,0.09360174,0.017154751,-0.0945332,-0.31525713,-0.2354354,0.57461387,0.36087188,0.13730818,-0.27768645,0.046786904],[1.042279,1.1418763,0.38546368,0.38151142,-0.26414976,0.71848893,-1.2714393,0.41527608,0.8832226,-0.2916028,-0.11199533,0.6145823,-0.26009154,-1.2898295,0.5483713,0.22604805,-0.12541296,-0.10260658],[0.028834756,-0.7402766,0.042994425,0.13127239,0.82102907,-0.27223384,1.2230023,0.047152817,-0.7632143,0.07432769,0.35270634,-0.6807149,-0.39266413,-0.19658811,0.21255049,-0.20994696,0.0052200574,-0.28414842],[-0.03333096,-0.6419931,0.027721735,0.36765352,0.11669098,-1.0186125,0.45446727,0.2501265,0.030704029,-0.33163616,0.05462923,-0.61002415,0.079051115,0.4292307,-0.07177714,-0.19314681,0.12356582,-0.008606654],[0.015638076,-1.2189353,-4.177184,-0.15027538,0.59214276,-0.23344256,0.7318988,0.45370457,-0.88853407,-0.5243129,0.94887865,-0.35619122,-0.30369094,0.002676145,0.34892917,0.4637993,-0.02337859,-0.06700445],[-1.0455103,0.6458623,0.38122165,0.5683208,0.20575817,0.32748055,-0.7285804,0.36887115,0.49960437,-0.09581171,-0.014829534,0.14658736,-0.017480083,-0.75519586,-0.19585466,0.30125234,0.086563274,-0.15215997]],"activation":"σ"},{"dense_2_W":[[0.35791105,-0.14427873,-0.5609901,-0.12562588,0.58622676,-0.07395914,0.06280237],[0.29988632,0.0102157295,-0.4695938,0.1638178,-0.4523483,-0.34046823,-0.16422306],[-0.51069945,-0.63829863,0.4701338,0.068921834,0.11567098,-0.69826823,0.54002196],[-0.79609793,-0.9238868,-0.09042327,-0.31421772,-0.79002506,0.6459851,-1.3542271],[0.22355427,0.4964034,0.26008382,0.16483073,0.51995987,0.2259448,-0.6673576],[0.55433714,0.53631747,-0.24075024,0.49828082,0.21127781,-0.020997947,-0.054750577],[-0.5900872,-0.21735254,-0.0059305774,-0.6136997,-0.5256363,-0.2422479,0.9974833],[-0.16341521,-0.93104196,0.9141925,-0.5388812,-1.0119808,0.5274667,0.69387174],[-0.5459448,-0.6007257,0.129759,0.08534032,-0.6757581,0.08227118,-0.34070605],[-0.7405544,-0.68379045,0.5396067,0.05680183,-0.7028731,0.2363397,0.033819582],[0.6035027,0.40737432,-0.60496193,0.078725085,-0.14720674,0.38410118,-0.4465598],[0.63455087,-0.0047353907,-0.31880525,0.14844397,0.070003085,0.56770957,-0.025018206],[0.44256854,-0.6075469,0.81187916,-0.13535014,-0.39242724,-0.65649754,-0.16534975]],"activation":"σ","dense_2_b":[[-0.09462253],[-0.12638599],[0.058491252],[-0.14447154],[-0.13812666],[-0.1805173],[0.123461604],[0.089515485],[-0.19189687],[0.06357807],[-0.111211635],[-0.15331227],[0.31715086]]},{"dense_3_W":[[0.20542404,0.28171518,-0.15866286,0.11350425,0.4895743,0.3516957,-0.48876178,-0.7698101,-0.42093396,-0.25786847,-0.09865759,0.4434046,0.0078012934],[-0.21756878,0.12013417,0.38058028,0.51441383,-0.5845196,-0.095519304,0.5266495,-0.03282074,-0.25921062,0.4537682,-0.58191466,-0.35777017,0.61608887],[0.5017704,0.21205097,-0.3583318,-0.32390872,0.2300428,-0.023676097,0.39568096,-0.45662916,-0.34641036,0.13468637,0.2221489,-0.5345382,0.43819726]],"activation":"identity","dense_3_b":[[-0.069445506],[0.069069415],[-0.08497246]]},{"dense_4_W":[[-0.87340665,0.89448696,-0.035979144]],"dense_4_b":[[0.06572075]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4100x00 4DEEC105'.json b/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4100x00 4DEEC105'.json deleted file mode 100755 index 825d921373..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4100x00 4DEEC105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.397211],[1.1705283],[0.5805502],[0.03463821],[1.170059],[1.1703928],[1.1692861],[1.1415536],[1.1109211],[1.0685993],[1.0272604],[0.034454443],[0.034516428],[0.034570444],[0.03471502],[0.034645453],[0.034350075],[0.03395382]],"model_test_loss":0.00880099181085825,"input_size":18,"current_date_and_time":"2023-08-08_15-18-22","input_mean":[[18.077564],[-0.0021696435],[-0.009493895],[-0.00854008],[0.0008538185],[0.0005043035],[-0.0007781019],[-0.0034785918],[-0.0073397853],[-0.013359681],[-0.020281872],[-0.008589204],[-0.008590469],[-0.008597665],[-0.008717762],[-0.008793198],[-0.008924687],[-0.0091278395]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.14579934],[-0.14519477],[-3.863266],[3.8427587],[0.04578299],[0.26524872],[0.043028243]],"dense_1_W":[[-0.0036881375,-0.7376499,0.04573843,0.29232818,0.15998328,-1.1800053,0.7352752,0.4613827,-0.3654027,-0.05274166,0.008809302,-0.61651105,-0.19563314,0.30206302,0.48970523,0.70374197,-0.13464865,-0.34472147],[0.0448257,0.74444777,3.2913778,-0.3223886,-0.6795882,-0.048044868,-1.4441773,-0.44268838,1.1609985,1.1341279,-0.6441928,0.8005167,-0.016733218,-0.2582139,0.16986738,-0.40873948,-0.0124958,0.2744736],[-1.4770237,1.2707175,0.45410442,0.4337624,-0.21555193,0.30369025,-0.48256037,0.6929506,0.1363345,0.21567695,0.062066473,0.29594067,-0.016186427,-0.10937184,-0.69198745,0.013495664,-0.49616784,0.4540782],[1.4769372,1.6837573,0.44657153,0.3844198,0.055160612,0.5586182,-1.2392403,0.45482898,0.2477672,-0.08027943,0.28896198,0.13463345,-0.13796607,0.4082866,-1.1263032,0.29988325,-0.50733644,0.42053643],[-0.18178491,-0.9996767,0.046967883,-0.20623134,-0.1303795,-1.4485639,1.2343187,-0.1420455,0.15228446,0.3398408,-0.43701938,-0.09172013,0.17285657,-0.29155666,0.23236762,-0.0009749657,0.069472015,0.017742855],[1.9397535,-0.1242461,-0.09390661,0.22746196,0.65666324,-0.017458677,1.3508519,0.7675915,-0.09389921,0.36527961,-0.014139866,-0.10747237,0.61991864,0.2315784,-0.45759675,-0.15266441,-0.6211227,0.3915748],[-0.018558232,0.32297674,0.12868294,-0.767525,0.06287016,-0.07393509,-0.90018725,0.67280954,0.26545826,-0.15014802,-0.2787869,0.10362763,0.010670472,-0.5394097,0.79302734,0.7212029,-0.006213169,-0.43942323]],"activation":"σ"},{"dense_2_W":[[-0.9424259,0.5383402,0.90808415,-0.23045784,-0.757859,-0.16473587,0.23173162],[-0.15289421,0.38641956,-0.17613852,0.17639944,0.20112754,-0.08048493,0.6478715],[-0.3414318,0.026470331,0.50385565,-0.69266576,0.21662991,-0.18625331,-0.6141596],[-0.64374024,0.15664189,0.7064422,0.40667814,-1.746435,-1.2451849,0.22172058],[0.19559817,0.20769882,0.0077794413,-0.63236123,0.5809092,0.55333596,-0.22226444],[-0.06922767,-0.40762365,0.13696685,-0.70997673,0.5166103,0.19697687,-0.35657585],[0.62951344,-0.5005433,-0.6374106,-0.37252572,0.27152944,0.120718695,0.22742479],[-0.6968117,-0.07335819,0.61275095,0.35386997,-0.4375137,0.3337331,0.14570476],[-0.4349244,-0.14802983,0.19549963,0.40037483,-0.7249839,0.20111199,0.65657336],[0.62348944,-0.4536519,-0.17162655,-0.8989549,0.3261032,-0.54278314,-0.5373072],[-0.560637,-0.25253636,-0.021217873,0.12173196,-0.5342579,0.10775077,0.17879365],[-0.13053471,-0.44042438,-0.16759785,0.37813523,-0.47821322,0.32358372,-0.85976815],[0.71070844,-0.48786935,-0.80289835,0.453067,0.36268723,0.4134905,-0.7282149]],"activation":"σ","dense_2_b":[[-0.35494593],[-0.07334628],[-0.24927561],[-0.2947056],[-0.008191638],[0.014220917],[0.045416523],[-0.05121714],[-0.049447175],[-0.03848008],[-0.05180068],[-0.05216243],[0.12374667]]},{"dense_3_W":[[0.047790118,0.27769247,0.5402979,0.43852547,-0.1079715,0.5151454,-0.28413603,0.36645323,0.54276174,0.2656338,-0.01668038,0.35102823,-0.39181972],[-0.29544407,-0.32329983,-0.4288008,-0.20716709,-0.46158203,0.183949,0.49660423,-0.11650807,-0.65825564,0.3827715,-0.5592475,-0.30018342,-0.18621238],[-0.21135932,-0.095152944,0.2985688,-0.35737342,0.48794743,0.52512395,0.48139963,-0.43845367,-0.67661566,0.5103034,0.08317309,0.37826058,0.3123688]],"activation":"identity","dense_3_b":[[-0.020624995],[0.021909116],[-0.0076635494]]},{"dense_4_W":[[0.28056747,-0.27962217,-1.0827732]],"dense_4_b":[[0.0051891515]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2019.json deleted file mode 100755 index 38e5fcf3bd..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.316835],[1.3095051],[1.0337898],[0.036481883],[1.4656641],[1.4189432],[1.3673624],[1.186987],[1.1331091],[1.0980399],[1.0884928],[0.03714614],[0.03689554],[0.03668804],[0.03629855],[0.036578406],[0.036640365],[0.036640473]],"model_test_loss":0.010191518813371658,"input_size":18,"current_date_and_time":"2023-09-02_05-46-53","input_mean":[[15.765028],[0.016704094],[0.8253681],[-0.018551834],[0.0161312],[0.018667452],[0.018879415],[0.011466884],[0.024275666],[0.019936267],[0.025728673],[-0.018568791],[-0.018556552],[-0.018561324],[-0.01832107],[-0.01819993],[-0.018170435],[-0.017576592]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.32030553],[-0.44030616],[-0.148952],[-0.02167373],[-0.19297738],[-0.5169743],[-0.1770638]],"dense_1_W":[[-0.007737738,-0.99422234,-0.034771074,0.12463431,-0.44775382,-0.82441384,0.8120246,0.39558184,-0.08208208,-0.23790717,0.13854492,-0.35261232,0.2457002,0.28888467,0.06925625,0.06105845,-0.14821048,0.107533954],[1.3339429,-0.13082603,-0.019043105,-0.023946976,-0.8637906,-0.60042715,0.86515206,-0.14659251,0.42036998,0.22912209,-0.41044295,-0.3358372,-0.27527428,0.66332656,0.40219405,-0.32527128,-0.013785728,0.036081836],[0.038707253,-0.5486137,-0.020425517,-0.1048983,0.76533777,-0.12729818,-0.39131224,0.1432435,-0.2479908,0.09698657,0.059673753,0.37905008,0.22068103,-0.5984838,-0.021788964,-0.20137078,0.19989464,0.011386371],[-0.0005377785,-1.626023,0.014272335,0.35176843,2.007245,2.9080265,2.833754,-3.6938229,-1.5402598,-0.2808591,0.53739095,-0.05241689,-0.37616622,-0.22666292,0.34943548,-0.22642688,0.671277,-0.53848034],[-0.060603973,-1.7406929,0.044681583,0.30462697,0.81336474,0.3294149,0.94690406,-0.7220944,0.038787086,-0.110932425,0.29978025,0.3340294,0.097162254,-0.65183747,-0.14593266,0.18223895,-0.41430587,0.27231583],[0.6866103,-0.20675205,-0.008971864,-0.08271559,0.51373845,-0.59504503,-0.028739108,-0.01990747,-0.023005802,-0.23189393,0.16085576,-0.050083302,0.2854166,-0.17596366,-0.16408251,0.23354928,0.27060062,-0.20318592],[1.1686878,0.124509655,0.020137059,-0.0041627684,0.70473355,0.21293509,-0.2924701,-0.11603153,-0.26426125,0.0057812296,0.20993786,0.2904828,0.12312651,-0.4460388,-0.06700564,-0.17043492,0.16500446,-0.016062014]],"activation":"σ"},{"dense_2_W":[[-0.4900633,-0.54592615,-0.527382,0.12028304,-0.54894257,0.27355847,0.31364885],[-0.32254124,0.08293343,0.35285667,0.554822,0.10410332,0.5597751,-0.2383367],[-0.24240835,-0.2615861,-0.4423311,-0.5210761,-0.64304876,0.05002648,-0.30079335],[0.3660343,0.25507227,0.2009346,0.20860061,0.50754935,-0.17693439,-0.75036037],[0.017052304,0.2941397,0.48104966,-0.15767454,0.09076614,0.4001092,-0.383107],[0.5902993,0.07642233,0.042343333,0.3176652,0.051399287,0.06696487,-0.8254014],[0.5891686,-0.1186497,0.3283763,-0.2719375,0.4032117,0.4197208,-0.3724789],[-0.68634295,-0.52495784,0.17351876,-0.35263985,0.06430874,0.027971778,0.6754105],[0.20389055,-1.0025079,-0.5531749,-0.13745287,-1.0573874,-0.75676477,-0.5205683],[0.20552444,0.012774647,-0.54596126,-0.8671801,0.06615193,-0.75334895,0.015773846],[-0.33991626,-0.42872685,0.20969433,-0.02223333,-0.8523562,-0.26464137,0.6920498],[0.20529774,0.58902216,0.031505145,-0.1747456,0.41559178,0.5189576,-0.7233773],[-0.009052229,-0.5893052,0.17319442,-0.64532185,-0.79119825,-0.11295332,1.4095422]],"activation":"σ","dense_2_b":[[0.12995131],[-0.034807533],[-0.13722797],[-0.16153306],[-0.04602981],[-0.083130985],[-0.08390648],[0.071044385],[0.08433932],[0.04963225],[0.21911931],[-0.17281601],[0.68126506]]},{"dense_3_W":[[0.5093516,-0.5465462,0.15503123,-0.35234037,0.49185485,0.30204552,-0.5992861,0.0021642335,-0.05107888,0.26263082,-0.18888572,0.12664975,0.13551807],[-0.5860282,-0.09242898,0.1262402,0.32523513,0.379274,0.6664111,-0.3863529,-0.53702825,-0.08325101,-0.26101434,-0.31930283,0.4272874,-0.026482869],[-0.3292326,0.3132907,-0.25563857,0.3411082,0.20792365,0.07308729,0.4294356,-0.6729368,-0.48279455,-0.4198804,-0.2859276,0.60702205,-0.5340056]],"activation":"identity","dense_3_b":[[-0.0040983167],[0.007357109],[0.007665874]]},{"dense_4_W":[[0.24334429,-0.71678704,-1.1551462]],"dense_4_b":[[-0.0067243]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA SELTOS 2021 b'xf1x00SP2 MDPS C 1.00 1.04 56300Q5200 '.json b/selfdrive/car/torque_data/lat_models/KIA SELTOS 2021 b'xf1x00SP2 MDPS C 1.00 1.04 56300Q5200 '.json deleted file mode 100755 index 7a38f06d90..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA SELTOS 2021 b'xf1x00SP2 MDPS C 1.00 1.04 56300Q5200 '.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.5049157],[1.2475282],[0.53859144],[0.048527],[1.2465597],[1.247301],[1.2471614],[1.2284999],[1.2013417],[1.1699766],[1.1366358],[0.04837552],[0.04840895],[0.048440192],[0.0483831],[0.048159745],[0.047685053],[0.047009286]],"model_test_loss":0.0057355728931725025,"input_size":18,"current_date_and_time":"2023-08-08_16-34-39","input_mean":[[22.57612],[0.051288225],[-0.016445091],[-0.009996599],[0.056181632],[0.055123083],[0.054446794],[0.046347804],[0.039804146],[0.03435145],[0.029239772],[-0.010040664],[-0.009997898],[-0.009956628],[-0.009932108],[-0.009981547],[-0.010063302],[-0.0102707045]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0029297848],[1.8960894],[-0.7305671],[-0.6444308],[0.08400337],[-0.044434916],[-2.0828273]],"dense_1_W":[[-0.013393204,-1.2459188,-5.89612,0.48348445,0.71024114,0.761591,0.62751406,-0.5100544,-1.1702846,-0.5760703,0.9551647,-0.38647708,0.02746218,0.30091053,-0.4128432,0.65483654,-0.22607383,-0.17742366],[0.88628805,-0.8472278,-0.16042891,0.12056248,0.8128825,-0.3501976,-0.112867065,-0.14086482,0.22233468,0.18555838,-0.11159323,-0.56888944,-0.008235887,0.28833345,0.2616878,-0.03133189,-0.023425877,-0.10819697],[0.55932784,-0.50783956,0.016862486,0.021586508,-0.052158702,-0.2640505,0.36748064,-0.10141347,0.11880612,-0.01899467,-0.04536525,-0.03297897,-0.48517683,0.29445776,0.30262306,0.15327907,0.21546906,-0.23894748],[0.57508934,0.10616214,-0.02150118,0.15490909,-0.22505246,0.33355552,0.17564031,-0.078227825,0.33327138,-0.21566688,0.049708415,0.46191642,0.18780328,-0.89038825,-0.059960928,-0.12284671,-0.03831184,0.07615082],[0.006142582,-0.41586003,0.28906634,-0.39670786,-0.15463385,0.5797065,-0.07188739,0.0075380234,0.42778745,0.18411557,-0.22944504,-0.24470419,0.035731394,-0.13284975,-0.056895383,0.2658999,0.09685396,-0.004589674],[0.00045123146,-0.30300197,0.024411071,-0.32110432,0.007924963,-0.95534456,0.3975994,0.30021676,0.20445354,-0.2845605,-0.024686944,-0.15269357,0.010459293,0.06211917,-0.14940602,0.09413633,0.12700596,0.20926088],[-0.8864738,-0.91397375,-0.17195456,-0.099857494,0.64577985,-0.28100497,0.023341348,-0.11484865,0.3246616,-0.009700837,-0.04576229,-0.20125109,0.07292384,0.11487104,-0.019341417,0.3695137,-0.4571989,0.14654264]],"activation":"σ"},{"dense_2_W":[[0.16676657,0.044276875,-0.42283165,0.71878445,0.40764466,-1.0148888,-0.33971024],[0.69733125,-0.44017676,0.32185918,-1.5657734,-1.1737024,0.6366674,0.6671088],[-0.022854185,-0.71255684,0.2196965,-0.3687845,0.040978383,0.062146485,-0.22804913],[-0.28942934,-0.23564734,-0.42564517,-0.039671488,0.365399,0.20703237,-0.597828],[0.0347196,-0.07633118,0.58261573,-0.15203993,-0.91041917,0.7339944,0.48777974],[-0.32692164,-0.6838728,-0.25992492,0.6972931,0.53116393,-0.5526861,-0.030371524],[-0.2410249,-0.45013347,0.20631957,-0.15482004,-0.44667387,-0.76256126,-0.19490236],[0.3978247,-0.10121961,-0.5776459,0.7954871,0.22263652,-1.0624558,-0.46528906],[0.2895336,0.9195127,1.048547,-0.32349822,-0.8403002,0.08939599,0.22750446],[-0.41278213,-0.17696421,1.0299006,-0.5467821,-0.47607332,0.9951936,0.687682],[-0.009069157,-0.6828468,-0.22575156,0.52762353,0.37542656,-0.6015784,-0.07695309],[1.2645018,1.0877368,1.2602909,0.12577315,-0.3815145,0.06697079,-0.4439591],[0.28825867,-0.43880102,0.0008854993,-0.21242517,0.37472376,-0.21022174,-0.71526283]],"activation":"σ","dense_2_b":[[-0.0043339795],[-0.7411984],[-0.3235559],[-0.0028266062],[-0.30525705],[0.09933733],[-0.28506866],[-0.12051076],[-0.2798327],[-0.34464663],[0.04831867],[-0.31347185],[-0.0137135675]]},{"dense_3_W":[[0.48027906,-0.34028012,-0.5646587,0.106692836,-0.03532492,0.63961244,0.66511965,0.54406637,0.21516123,-0.17382753,0.376983,-0.55481,-0.113014586],[-0.6947742,0.5437955,-0.26280165,-0.6517489,-0.17782186,-0.09640967,0.45545045,0.11279408,0.322814,-0.40994444,-0.68243754,-0.049466625,0.17386594],[-0.2016882,0.33245435,-0.22961138,-0.045353495,0.5742978,-0.75247186,0.120317265,-0.09858627,0.5166808,0.6125953,-0.088035,0.14460035,-0.23711456]],"activation":"identity","dense_3_b":[[0.04315742],[-0.025058303],[-0.06259806]]},{"dense_4_W":[[0.5995295,-0.25079918,-1.226213]],"dense_4_b":[[0.054296162]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.04 56310R5030x00 4MQDC104'.json b/selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.04 56310R5030x00 4MQDC104'.json deleted file mode 100755 index e58a0a3add..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.04 56310R5030x00 4MQDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.828237],[0.97600704],[0.4089475],[0.035214473],[0.9679743],[0.970265],[0.9714391],[0.9529998],[0.93442535],[0.907574],[0.87835944],[0.035107806],[0.035135653],[0.035162415],[0.03512646],[0.0350294],[0.03484094],[0.034691963]],"model_test_loss":0.010908995755016804,"input_size":18,"current_date_and_time":"2023-08-08_17-24-46","input_mean":[[23.668701],[0.043239903],[-0.008454303],[-0.0006616455],[0.05023332],[0.0483886],[0.046359282],[0.042707],[0.038750947],[0.031606093],[0.023638321],[-0.0005428065],[-0.00058967434],[-0.00064167456],[-0.0007974575],[-0.0008222639],[-0.0008730811],[-0.0009429487]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.07139598],[2.2307112],[-0.22793715],[0.028497862],[-1.4758755],[-2.2683609],[1.7139114]],"dense_1_W":[[0.05402334,0.7879195,4.0841537,-0.56412846,-0.06755307,0.16052529,-0.98961514,0.082657665,-0.29167134,0.3808659,-0.24588543,0.27139375,-0.021965634,0.08988655,0.5314556,0.022917956,-0.28474882,0.16892314],[0.040134925,0.9678868,0.2435498,-0.22607546,0.26583675,0.16535611,-0.29292968,-0.06048666,0.3677877,0.12361147,-0.06213637,0.23552014,0.001912692,-0.086550094,-0.35551274,-0.057126056,0.035038613,0.025732724],[-1.2022591,-0.2863651,0.33088538,0.5872443,0.15807754,-0.37816197,0.79342896,-0.52512366,-0.14498816,-0.047592632,0.23991925,-0.3639295,-0.25689954,-0.12431776,0.17954038,0.04690324,0.27545586,-0.3235991],[-0.0032510161,-0.90251637,0.0055037816,-0.046377614,-0.15268828,-0.56092745,0.54981595,0.039801016,-0.04936413,-0.0055981306,-0.071823165,-0.70809287,0.013437283,0.69162565,0.26313534,-0.058428794,0.08031778,-0.09614916],[-1.5630318,0.17789239,0.4537161,-0.0041152863,-0.39420608,-0.15796205,-0.7327813,0.66765463,0.4993053,0.405701,-0.65776676,0.3633854,-0.38824862,-0.53840584,0.27669683,0.48978165,-0.033090215,-0.2082885],[-0.029351536,0.9172641,0.2475216,-0.3134773,0.17839907,0.2644386,-0.063878715,-0.15182072,0.32643992,0.184796,-0.05073872,0.13546649,0.33546865,-0.20729195,-0.36180612,-0.11467291,-0.092137635,0.1431712],[-2.7309752,0.47239518,-0.8031595,-0.45335308,-0.5626998,0.3833318,-0.09541673,-0.21970436,-0.67134327,-0.43375826,0.4113513,0.43214273,0.17258164,0.00038695108,-0.27933037,0.2652092,-0.11726535,0.14931515]],"activation":"σ"},{"dense_2_W":[[0.18113254,0.2362841,0.23913723,0.4250595,0.41874975,-0.14176264,0.07982823],[1.2559026,-0.04362239,-1.9165045,-3.4750113,2.4915068,3.245088,0.7472181],[0.21553496,-0.15909076,0.1990112,0.06815371,0.40578955,-0.74799186,-0.40865952],[-1.270139,-0.5704174,0.013024697,-0.17953704,-0.36550337,-0.51389843,-1.1189383],[-0.4607257,-0.24294525,0.30119574,0.51511997,-0.5896765,-0.38873392,0.4903248],[0.27587494,1.3980604,0.41343182,-0.55864316,0.13226879,0.41889343,-0.025503036],[-0.11382582,-0.72006303,0.31443623,0.47339836,-0.05456861,-0.45569026,-0.44168296],[-0.14633095,-0.86015487,0.18689813,-0.007913177,-0.68155503,0.0981196,-0.20697698],[0.21121454,0.07270005,-0.47414,0.14561962,-0.47502828,-0.058896564,-0.30503902],[1.5235077,4.3672147,-1.9797657,-2.1577153,0.08651692,0.56285816,0.7441386],[-0.35447982,-0.2280675,0.2248906,0.69576144,-0.19720139,-0.035972144,0.23887096],[0.5307749,0.8708496,-0.9982855,0.06719293,0.5508931,-0.3601659,1.1098136],[0.41608205,-0.9552457,-0.7181348,0.54820853,-0.20942546,-0.0229672,-0.61255497]],"activation":"σ","dense_2_b":[[-0.09698142],[-1.4033747],[-0.07078607],[-0.105896965],[-0.032276735],[0.039644904],[-0.049273986],[-0.123684354],[-0.19865851],[-1.3548915],[-0.040826697],[-0.2473369],[-0.1898357]]},{"dense_3_W":[[-0.07364597,-0.28819343,0.33614686,-0.11555612,0.54371834,0.06078414,0.25967473,0.16326325,0.052277688,-0.2328434,-0.1264749,-0.36707604,0.6011789],[-0.4987282,0.21116212,-0.041836318,-0.45521593,-0.2570767,0.5502648,-0.13099706,-0.33858767,-0.0388845,0.24381347,-0.45033324,-0.28740764,0.032078497],[-0.360317,0.73834044,-0.30889666,0.7047129,0.37393212,0.31944397,-0.13176474,0.18058318,-0.22899523,0.7277826,-0.43414494,-0.6223405,0.1327134]],"activation":"identity","dense_3_b":[[-0.07107471],[0.075273246],[0.038589373]]},{"dense_4_W":[[-0.73965013,0.41693646,0.8098712]],"dense_4_b":[[0.070436954]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.05 56310P4030x00 4MQHC105'.json b/selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.05 56310P4030x00 4MQHC105'.json deleted file mode 100755 index da245a1a09..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.05 56310P4030x00 4MQHC105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.360649],[0.8416322],[0.33437338],[0.04986401],[0.8348178],[0.83668405],[0.8381006],[0.8281648],[0.8175133],[0.80145794],[0.7849904],[0.04949942],[0.0495519],[0.04959984],[0.049575604],[0.049440794],[0.049178783],[0.048773665]],"model_test_loss":0.011909223161637783,"input_size":18,"current_date_and_time":"2023-08-08_19-02-44","input_mean":[[18.798538],[0.060060456],[0.0042254925],[-0.01005732],[0.061129835],[0.06208465],[0.06287847],[0.05924524],[0.053896163],[0.050247815],[0.048835788],[-0.010078115],[-0.010027372],[-0.009984768],[-0.010235178],[-0.010460788],[-0.010615164],[-0.010720316]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.3711772],[4.0384655],[-0.60371107],[-0.021517932],[0.059795618],[0.014027763],[0.6545455]],"dense_1_W":[[-1.7019469,0.01004788,1.2882278,-0.38348064,0.12244237,1.0539651,0.010641099,0.41091317,0.3839485,0.36134282,-0.18248878,0.036194474,0.5019625,-0.4913562,-0.25413185,-0.011724185,0.1496672,0.11843239],[1.7626301,0.23605797,1.3201638,-1.0663824,0.2729441,0.6596989,-0.081463575,0.61732155,0.33063596,0.53841823,-0.3461883,0.6325652,0.09249081,-0.21124457,-0.2544897,0.28014565,-0.013723431,0.19491264],[0.27358976,-0.88453114,-0.03890136,0.48175734,-0.016419638,-0.97174513,0.2863007,0.3938403,0.11718968,0.18793224,-0.29152203,-0.6642347,0.14523181,0.30439466,0.17772515,0.17078802,-0.075555354,0.038167004],[0.04198796,-0.43382403,1.6559426,0.09345928,0.6753657,-0.4891842,0.44554886,0.011966843,-0.26713324,-0.09224718,0.20697893,-0.8472049,0.14456306,0.44531605,0.005752212,0.19066374,0.34522521,-0.41704535],[-0.3430911,-0.33624044,-0.03918591,0.4145386,-0.37784162,-0.32403097,-0.3204265,0.19870447,0.10699937,0.0043252283,-0.15599932,0.11689893,-0.06691096,2.8774783e-5,0.07241905,-0.3570826,0.23487402,0.17241248],[0.02902531,0.22444873,2.0474432,-0.046874467,-0.318975,0.12265587,-0.33706895,0.3610506,0.22912423,0.44967905,-0.6113972,0.63183457,-0.12738343,-0.534021,-0.06903115,0.026587073,0.024522554,0.063068636],[0.0050931163,-0.5446937,0.1994072,-0.9001721,1.0302886,0.49093354,1.1983348,1.1123027,0.4812851,0.057845764,-0.39551273,-0.40197656,0.018871471,0.021246241,0.06228036,-0.3096515,-0.12146903,-0.37020501]],"activation":"σ"},{"dense_2_W":[[-0.35032728,-0.5031512,0.20565645,0.5048391,0.5721213,-0.75960577,0.41200778],[-0.083224565,-0.4266255,0.3613455,-0.31832695,0.7508301,-0.42364982,-0.041131567],[-0.19479334,0.13154602,-0.49550515,-0.057689346,0.25966644,0.019963862,-0.30955124],[0.56296927,-0.2241234,-0.74579465,-0.19006501,-0.5774306,0.5061718,-0.4157748],[-0.18207398,0.74063724,-0.43985197,-0.60961854,-0.63657373,0.98453957,-0.2611528],[-0.08481909,-0.17079473,-0.9215012,-0.28457326,-0.108750716,0.5557871,-0.24374656],[0.28946897,-0.2658649,-0.17986174,0.7817012,-0.03662516,-0.15243457,0.65582645],[0.06432835,0.035722017,0.24966948,0.1820806,-0.34214944,0.04920283,0.10240223],[-0.106335714,-0.43905434,-0.99428046,-0.5975757,-0.6509662,0.8275932,0.12634481],[1.0581882,-0.3677934,-0.9597405,-1.0668633,-0.7719651,1.0440427,0.07109511],[0.57484365,-0.48430628,0.32345054,0.79538834,0.54478437,0.47041076,-0.14143173],[-0.35414475,-0.41750684,0.8834586,0.2510105,0.15189533,-0.17024374,0.30005693],[0.45395577,0.93997616,-0.9476304,-0.6193973,-0.8066399,0.6195946,-0.048480663]],"activation":"σ","dense_2_b":[[-0.10116813],[-0.14295042],[-0.0813808],[-0.002537517],[0.23133247],[-0.06090244],[-0.012912041],[-0.31398782],[0.026570017],[0.100405954],[0.024308678],[0.013686816],[0.16338688]]},{"dense_3_W":[[0.67018026,0.45342138,0.2517602,-0.7161156,-0.45907423,-0.30567223,0.6014191,-0.2725562,-0.45720404,-0.52766263,0.22907431,0.38704422,-0.6652359],[-0.43428063,0.278939,0.07284501,0.58099675,0.534265,0.408692,0.2663524,-0.13852553,0.70378095,0.12224407,-0.06698436,-0.7304552,0.043905403],[0.49885213,0.35949433,-0.28865784,-0.4043822,-0.032159276,-0.4398066,-0.1666352,0.3646978,0.109651156,-0.052056532,0.2463666,0.16612957,0.099209264]],"activation":"identity","dense_3_b":[[0.0218462],[-0.042534254],[0.01341708]]},{"dense_4_W":[[-0.94743174,0.5062643,-0.579337]],"dense_4_b":[[-0.02170465]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA SPORTAGE 5TH GEN.json b/selfdrive/car/torque_data/lat_models/KIA SPORTAGE 5TH GEN.json deleted file mode 100755 index 69e710e228..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA SPORTAGE 5TH GEN.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.271582],[1.2324897],[0.6433989],[0.04141489],[1.2489065],[1.2435695],[1.2356619],[1.172688],[1.1162171],[1.0433639],[0.9707198],[0.04149849],[0.041483577],[0.04144006],[0.041163605],[0.04088149],[0.040357973],[0.039594423]],"model_test_loss":0.008056153543293476,"input_size":18,"current_date_and_time":"2023-09-02_08-29-22","input_mean":[[18.359726],[-0.037949927],[0.5234115],[-0.008337179],[-0.04552693],[-0.04569026],[-0.04552523],[-0.039857816],[-0.033734176],[-0.024680167],[-0.015604315],[-0.008196234],[-0.008305338],[-0.00844266],[-0.0089836335],[-0.009296811],[-0.009439258],[-0.009452471]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.94973767],[-2.433663],[-0.034619235],[-0.077283],[-2.7017562],[-0.09339245],[-0.6244862]],"dense_1_W":[[0.80034006,1.0705961,0.000825829,-0.09964225,0.40290698,0.47271788,-0.30613136,0.9018622,0.00026438956,0.09919525,-2.150913,0.49553874,-0.3608581,-0.1313319,-0.4082762,0.09144183,0.0788233,0.34741214],[-2.3832078,0.71298873,-0.005020484,-0.17478089,1.0590492,-0.31795993,-1.1199154,-0.5731978,-0.0998752,-0.25876248,0.21498705,-0.14916337,0.33611503,0.25201452,-0.13425598,-0.23907493,0.0071402895,0.17116584],[-0.07616245,-0.34612796,-0.011475999,-0.072679855,0.58056265,-0.395393,-0.27633327,-1.8887899,-0.6015088,0.49371734,1.9656835,0.19998965,0.0057602297,0.13962367,0.12470687,-0.18640584,-0.023864588,-0.19377947],[0.010883457,0.6855033,-0.0010638234,-0.24550597,0.015826495,-0.35939503,0.53073984,0.3727611,-0.5348426,-0.44873196,0.39434654,-0.17992191,0.4207321,-0.22305717,0.23088501,-0.09521394,-0.11022331,0.06272074],[-2.3750079,0.02318054,0.005723935,0.4172705,-0.6483569,0.11516915,0.21627235,0.8689977,-0.097739585,-0.17518516,0.080854654,-0.5044023,-0.23945011,0.5778991,-0.19969985,-0.05412506,-0.018118298,-0.047388777],[0.034274723,-0.57860583,-0.0072152913,0.24105103,-2.9188197,-2.175338,-1.1614898,3.7702558,2.6517565,0.844019,-0.7422007,0.3744097,0.13847013,-0.2812754,-0.75471646,0.14402452,0.31923193,-0.22577274],[0.6020792,-0.93845457,0.0032515822,0.29181626,-0.71029466,-0.23251307,0.4013084,-0.9979102,0.07712134,0.010485791,1.9087931,-0.24826817,0.05725912,0.07313231,0.22776487,-0.03669609,-0.074751236,-0.3001132]],"activation":"σ"},{"dense_2_W":[[0.41379273,-1.5534699,-0.061251666,0.9784582,-0.31017292,0.5312373,-0.30788672],[-0.8307559,-0.5997123,-0.10822264,-0.16534962,-0.92172116,-1.0821096,0.27836254],[-0.04996724,0.016284576,0.15466881,-1.2067809,-1.0948375,-0.033628576,0.46014366],[-0.23169208,0.75857294,-0.95120645,-0.9115383,0.30752045,-0.28777564,0.08635593],[-0.39187977,0.5864086,-0.6104791,-0.4405727,-0.5313213,0.30406076,0.062464662],[0.34800822,0.8006306,-0.2674241,0.30921367,1.2659222,0.5549054,-0.80455273],[0.52084416,0.28339612,0.35776538,0.61953413,0.5954671,0.35080484,-0.4923708],[0.6637605,-0.90991306,1.2823876,-0.31609806,-0.17648666,0.84696317,0.4531972],[0.18129082,-0.1456923,0.860548,0.9921053,0.10297215,-0.23329806,-0.703881],[-0.6871936,-0.35452083,0.16561241,0.52725476,0.30145702,0.095435195,-0.031700533],[-1.037031,-0.12172777,-0.37805697,0.9377832,1.6396,1.0745027,-0.81819445],[0.4548168,-0.14163275,0.34056768,0.24697062,0.20977701,-0.09230414,-0.4355987],[-0.4384788,0.08605435,-0.4810871,-0.79529417,-0.68544877,0.46262282,0.39435223]],"activation":"σ","dense_2_b":[[-0.48680034],[0.068014495],[0.04869933],[0.2673811],[0.15607266],[-0.048658077],[-0.26778942],[-0.18545923],[-0.28900617],[-0.2309299],[-0.33494246],[-0.16927081],[0.20434596]]},{"dense_3_W":[[0.3822013,-0.4389438,-0.41882336,-1.0697446,-0.36492467,0.11356586,0.35364708,0.65464646,0.21121821,0.11611892,0.44234788,0.32605755,-0.81655335],[-0.4098758,0.73658663,-0.137919,0.9484474,0.6109782,-0.055106185,-0.0077281683,0.19195211,-0.24094999,0.010442004,-0.6749704,0.28052664,0.024752859],[-0.25375482,-0.2737522,0.2542901,-0.19734219,0.17325146,0.15619496,-0.18796492,-0.107151814,0.055576775,0.52131623,-0.14911918,0.16789204,-0.67280823]],"activation":"identity","dense_3_b":[[-0.123436764],[0.06764906],[-0.048735052]]},{"dense_4_W":[[1.3109156,-0.35272652,0.104447454]],"dense_4_b":[[-0.1077713]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503'.json deleted file mode 100755 index 2dc670357d..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.1329846],[1.0240825],[0.55357367],[0.032864623],[1.0280122],[1.0259764],[1.0244912],[1.0091227],[0.99859416],[0.99492943],[0.99062693],[0.03290333],[0.03287097],[0.03284539],[0.03274356],[0.03259516],[0.03226275],[0.031924404]],"model_test_loss":0.0039173574186861515,"input_size":18,"current_date_and_time":"2023-08-08_21-06-15","input_mean":[[17.373055],[-0.121487565],[0.004857097],[-0.0043323576],[-0.122308314],[-0.12176135],[-0.12166673],[-0.12044618],[-0.11866407],[-0.11413705],[-0.11999074],[-0.0043443115],[-0.0043463064],[-0.0043407544],[-0.0043205405],[-0.004334937],[-0.004431707],[-0.0045705433]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.15578866],[-0.121010795],[2.607187],[0.024626328],[-0.2870057],[-1.3427569],[-0.17659523]],"dense_1_W":[[-0.0033034484,-0.052573163,0.22313437,-0.4994298,0.23290847,0.23589677,0.24603657,-0.08493268,-0.17096585,0.21070172,0.14998867,-0.12246095,-0.27713594,0.266521,0.15202883,-0.5736784,-0.7178588,-0.22354351],[-0.033423953,0.48308042,4.3161335,-0.13211238,-0.22973481,-0.2271183,-0.17018077,-0.080117166,0.23103811,-0.06745466,-0.22646382,-0.14490494,-0.44278416,0.23661947,0.76887465,-0.16852573,-0.29098848,0.19946156],[0.8961271,-0.47064975,0.49676007,-0.5249683,0.1959607,0.82731485,-0.08854316,0.487867,-0.09237197,0.09834567,0.050139025,0.031087723,-0.018046698,0.23961507,0.48042274,-0.050623044,-0.061986376,-0.09952346],[-0.0008700511,-0.16591707,0.14862742,-0.07141854,-0.5259756,0.843034,-0.30464283,0.47228673,0.47462964,-0.019866813,-0.20559688,-0.12733686,-0.3478062,0.6510686,-0.49144772,-0.57306224,-0.30681828,-0.07526166],[-0.871296,-0.1437896,0.5101226,0.24243414,0.23617809,-0.778845,0.66372377,0.8925617,0.811687,-0.4287381,-0.18957064,0.00992578,-0.08970741,0.320578,-0.4153779,-0.30179247,0.32845688,-0.09843358],[-0.56676364,0.10569009,0.32999828,0.031681255,0.019788198,0.49837622,-0.1160794,0.06925489,0.10766315,-0.06880369,0.07340804,0.4267022,-0.24849682,-0.16590549,-0.19864106,0.101786755,0.19663657,-0.15131107],[0.016626861,-0.24604829,-0.008103917,0.4317491,0.09287087,0.963533,-0.42994773,0.15286058,-0.10805577,-0.01726937,0.1516635,0.12822759,-0.06660257,-0.07250721,-0.49660203,0.03619374,-0.09870995,0.12891567]],"activation":"σ"},{"dense_2_W":[[0.35354838,0.08248845,-0.2643721,0.028969606,-0.16676016,-0.8305304,-0.3016516],[-0.22521318,0.3866312,0.4977837,0.076887876,-0.71179044,0.6780423,0.50716233],[0.46899542,-0.24904732,0.14908811,-0.89964503,0.46441752,-0.70685565,-0.22258599],[0.11673758,-0.67375845,-0.84481615,-0.048750993,0.20950693,-0.4879097,0.16695245],[0.13204935,-0.24652998,-0.33666334,0.89801437,0.33655748,0.5779938,-0.14154734],[-0.5384168,0.014923374,0.29242253,0.00864887,-0.09533511,0.30288514,0.830687],[-0.5773432,-0.32536963,-0.42681998,-0.23757271,-0.17945053,0.15035582,0.0041262284],[0.34518933,-0.32978058,-0.21651018,-0.5379371,0.34204122,-0.32106385,-0.6527221],[-0.42277348,0.16665061,0.3108687,-0.28702435,-0.5732586,0.75958574,0.86309266],[0.015375347,0.19915505,-0.42266467,-1.0245055,-0.05351699,-0.6963474,0.14833081],[0.23518765,0.3833349,0.13227822,-0.584967,0.30398777,-0.93099904,-0.5175701],[0.06394686,-0.43986523,-0.12684605,-0.8447283,0.6266354,0.04569117,-0.8361707],[0.49337465,0.33293915,-0.96844876,-0.4276928,-0.6929566,-0.28569952,-0.14265089]],"activation":"σ","dense_2_b":[[-0.024476556],[-0.11499582],[0.022631852],[-0.009896085],[-0.014204676],[-0.043049544],[-0.30805475],[0.025720058],[-0.107878506],[0.009352697],[-0.04004397],[-0.022493577],[-0.01955864]]},{"dense_3_W":[[-0.57439166,0.5246423,-0.19036132,-0.40068084,0.5114071,0.46818924,0.3444213,-0.7027561,0.40878892,-0.3749757,-0.6299576,0.32576016,-0.16117278],[0.4093721,-0.3366498,-0.52919716,-0.008743298,-0.08526943,0.6047717,-0.1464253,-0.6356685,0.27361497,-0.6559057,-0.636247,-0.10396182,-0.087822154],[-0.0016937943,-0.6977227,0.6259379,0.64517385,-0.23953342,-0.55496264,0.22454576,-0.4191411,0.0044411933,0.005649371,0.58461046,0.60280037,0.57034343]],"activation":"identity","dense_3_b":[[0.011864344],[0.06484405],[-0.028621858]]},{"dense_4_W":[[0.63415956,0.3032611,-1.0295273]],"dense_4_b":[[0.026569296]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503'.json deleted file mode 100755 index 8d8208b0f0..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.766022],[0.5533229],[0.2856296],[0.033792395],[0.5389918],[0.54306436],[0.54760325],[0.55337805],[0.55737114],[0.5617065],[0.5625296],[0.03348953],[0.033542342],[0.033610392],[0.033808257],[0.033930898],[0.034050055],[0.034098357]],"model_test_loss":0.0027918475680053234,"input_size":18,"current_date_and_time":"2023-08-08_21-31-03","input_mean":[[21.389719],[0.0015681498],[-0.0053915554],[-0.002413832],[0.0013884547],[0.0015199955],[0.0016545503],[-0.0005008584],[-2.2193064e-5],[0.003740185],[0.0043427483],[-0.0020289146],[-0.0020741888],[-0.0021126948],[-0.0021486785],[-0.0021773984],[-0.0021409069],[-0.002074085]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.005023801],[-0.11859596],[-0.083387464],[2.9536428],[-3.17796],[0.013405252],[0.29147854]],"dense_1_W":[[-0.0033325052,0.6876983,-0.07805519,-0.19289164,0.65789926,-1.3244646,-0.020963509,-0.37362412,0.13077013,-0.40126017,0.35083288,-0.46714717,-0.6626373,-0.3469128,1.4830853,0.5011229,0.28441152,-0.4636832],[0.3598699,-0.64306945,2.2225964,0.4161311,0.41669363,-1.0839597,0.92909795,-0.95103395,-0.5053492,0.12075414,1.4680102,-0.2333293,-0.24382429,0.008533065,-0.19225878,0.18216391,0.11589113,-0.20803492],[0.20756045,2.033753,2.1817362,-0.9258632,-0.0874673,-0.5312963,-2.7698588,-0.14382717,0.5049645,0.37967896,0.4239767,0.7745002,-0.13785833,-0.38348323,0.5186508,-0.078807354,0.21235526,-0.11610479],[1.4961438,-0.3139877,0.28255,0.26589444,-0.61779964,1.0510086,-0.6857809,0.25174332,0.8591813,0.0057339612,0.012607628,0.16490415,-0.06531447,-0.11422419,-0.04204824,-0.2578638,-0.073865555,0.12349488],[-1.5165002,-0.0548487,0.28816897,-0.44763196,-0.85135686,1.1610124,-0.761776,0.5293456,0.32867563,0.25241977,-0.027216699,0.032018177,0.37777507,0.1571353,-0.21763782,0.32281792,-0.48416787,0.24708028],[-0.0059207403,0.75648165,0.00349558,-0.6363216,-0.2229793,-1.8046044,-0.11476358,0.26718977,0.025075352,0.8795477,-0.95764613,1.086634,0.044866603,-0.14078698,-0.16995233,-0.6281635,-0.20085551,0.6414435],[-0.003071575,0.12751202,-0.011326043,-0.020205589,-0.36886206,0.30381098,-0.34500697,0.18834841,-0.24861936,-1.2992047,0.863031,-1.9390234,-1.3683192,-0.63276744,-1.2014979,9.656866e-5,0.09690952,-1.0078585]],"activation":"σ"},{"dense_2_W":[[0.39662704,0.48374733,-0.29005706,0.07393947,-0.42477635,0.2564262,-0.42727342],[0.21152999,0.061012335,-0.7423783,-0.5523955,-0.39889368,0.38016352,0.54106915],[0.68259335,0.47207102,-0.8016757,-0.12860833,-0.49738726,0.6516305,0.014673964],[0.47920755,-0.107558385,0.04683691,-0.006397021,-0.44672456,-0.18994014,-0.46220642],[-0.30933115,-0.46241206,-0.063971646,-0.63298374,0.16368231,0.45431167,0.069120824],[0.13341828,0.12734184,0.23883563,-0.30482867,0.6489039,0.54735976,0.3412583],[0.12302853,0.066058725,-0.73864675,-1.1300348,0.62163764,0.53437996,-0.48281124],[0.20568475,-0.00066856324,-0.23245256,-0.07801379,-0.051070046,0.18588813,-0.42292082],[-0.75646293,-0.43007204,-0.013988241,0.65225786,0.47503433,-0.5898269,0.097233206],[0.4212197,0.27158758,-0.03540538,-0.8047878,0.059127036,0.35010928,-0.7840495],[-0.74006635,-0.7154454,0.26572984,0.67159295,0.33328587,-0.29086044,0.44390428],[-0.26889247,-0.01841652,-0.12786053,0.7110297,0.9222276,-0.13066176,-0.4141216],[-0.13986242,-0.16117467,0.5941917,-0.43290535,0.29161388,-0.7472561,-0.6601617]],"activation":"σ","dense_2_b":[[-0.10558703],[-0.086225174],[-0.024091406],[-0.06185179],[-0.1395063],[0.0145245325],[-0.14875814],[-0.06766006],[0.15597098],[-0.31839365],[0.027026298],[0.028820656],[-0.21016255]]},{"dense_3_W":[[-0.231988,-0.5889274,-0.1283931,0.20118165,-0.3871818,0.6120688,-0.5323036,0.09410525,-0.37467438,-0.33146307,0.18340798,0.30552286,0.5499228],[0.38446704,0.16326652,0.51952577,-0.2927903,0.28178582,-0.28718108,-0.019530099,0.15835221,0.12750727,0.4528022,-0.37826803,-0.32343772,0.41362897],[-0.07056111,-0.5892277,-0.6703741,-0.48694804,0.19810483,0.2863676,-0.40396088,-0.33865243,0.5503839,0.37918863,0.62173796,0.26518953,0.3827839]],"activation":"identity","dense_3_b":[[0.068464704],[-0.059921235],[0.04597432]]},{"dense_4_W":[[0.1415478,-0.47448632,0.58617306]],"dense_4_b":[[0.04461211]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.04 57700-J5420 4C4VL104'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.04 57700-J5420 4C4VL104'.json deleted file mode 100755 index d83cf8beb0..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.04 57700-J5420 4C4VL104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.1246],[0.9034975],[0.48962846],[0.03529078],[0.8946102],[0.8961149],[0.89784646],[0.8950175],[0.88876706],[0.87975305],[0.86753106],[0.035175696],[0.035196],[0.03522797],[0.035351437],[0.035319105],[0.035140432],[0.034972258]],"model_test_loss":0.00436203321442008,"input_size":18,"current_date_and_time":"2023-08-08_22-21-02","input_mean":[[23.931408],[-0.13063739],[-0.0062418687],[-0.010867324],[-0.13015318],[-0.13073899],[-0.13138658],[-0.12890545],[-0.126041],[-0.12821095],[-0.12799272],[-0.010868597],[-0.010878354],[-0.010887906],[-0.010903779],[-0.010916722],[-0.011080605],[-0.011242595]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.1994641],[-0.07004483],[0.04915275],[0.83877975],[0.13017571],[-1.118901],[-2.8877945]],"dense_1_W":[[0.7289999,-0.5943847,-2.0439968,0.1408729,0.014804936,-0.33637556,0.6747208,-0.031742137,-0.1290714,-0.25518748,0.66278976,-0.9197349,0.2682647,0.546328,0.183721,0.025967568,-0.26059458,-0.0011381623],[1.41076,-0.98072547,-0.009269284,0.10443673,0.2938804,0.11221869,0.023663813,-0.06939159,-0.12669353,0.1424146,0.008126474,0.2754397,0.27598444,-0.34879938,-0.3349643,-0.2994688,0.12687577,0.18874463],[-0.027532505,-0.13840102,-0.00062686426,0.08105477,0.09020943,0.84446275,-0.33102164,0.1570382,-0.040472265,-0.041165356,0.11451907,-0.17574714,0.45523196,-0.45946833,-0.24832533,0.28354466,-0.39972436,0.14596395],[0.66988164,-0.24064808,1.7260609e-5,-0.26275954,0.17384419,-0.66181016,0.7648268,-0.19273083,-0.16069436,0.009835958,0.0616284,-0.6692072,0.19462675,0.5278246,0.2114967,0.26900306,-0.14592189,-0.11368748],[0.11565289,-0.0024831272,-0.0010179644,-0.14267418,0.16810471,-0.91123056,0.27969635,-8.086505e-5,-0.17184173,0.050572287,-0.026562115,0.06282069,-0.10155926,0.18597111,-0.29300997,0.30992374,-0.074498996,0.022345124],[-0.5783355,-0.5027382,-1.9156728,0.34726906,-0.037399657,-0.6643333,1.2222189,-0.09885066,-0.38930404,-0.31581903,0.7669719,-0.7148593,-0.22047392,0.79417294,0.10776789,-0.27856073,-0.040653545,-0.017878184],[-1.0912887,-1.4251192,-0.0131444745,0.22531693,0.86903757,-0.95501935,0.8628306,0.45285952,-0.35062796,-0.31220162,0.3204548,-0.38606355,-0.23453595,0.6793242,0.079120405,-0.5386359,0.07823436,0.10280147]],"activation":"σ"},{"dense_2_W":[[-0.25574526,-0.3905968,-0.12767315,0.63553566,0.47872183,0.3867656,-0.10150367],[-0.473101,-0.020838056,-0.07608826,-0.56385255,-0.42035136,-0.4738983,0.13273646],[-0.6361896,-0.44256058,0.04147736,0.18567401,-0.7560507,0.050679706,-0.29739967],[0.20478374,0.4391665,0.79290694,-0.77543974,-1.0579494,0.37044573,-0.8896225],[-0.24755138,0.51200044,0.3236799,-0.7383176,-0.9946837,0.61080724,-0.7761964],[-0.13916887,0.51012295,0.66491944,-0.13200557,-0.38854194,-0.084789805,-0.5896282],[0.8047527,-0.44165358,-0.54248846,-0.17254305,0.20149636,-0.100210406,0.2344219],[0.14421801,0.559272,0.97542876,-0.56136894,-0.044083755,-0.3763456,-1.0293499],[-0.3186897,0.246195,-0.54825604,0.7406943,0.06757733,0.32055023,0.5683255],[-0.6583612,0.06683394,0.36377707,-0.8377172,-0.20560446,0.017155979,0.25158632],[-0.2456164,0.44221503,0.3131527,-0.74782497,-0.2063776,-0.65555835,0.4115904],[-0.012511154,-0.41900334,0.076221436,-0.30040342,-0.14252718,-0.6142689,-0.06536472],[-0.25791836,0.03984432,-0.79253113,-0.08203707,0.73551714,0.45526472,0.046143852]],"activation":"σ","dense_2_b":[[-0.05287782],[0.014592212],[-0.2794043],[-0.146621],[-0.024146877],[-0.08312265],[0.0064267763],[-0.028975371],[-0.06253404],[-0.07943845],[-0.15185589],[-0.1090268],[-0.09112515]]},{"dense_3_W":[[0.27280647,-0.35127035,0.3050531,-0.7444606,-0.48179445,0.3789633,-0.25849003,-0.7030355,0.39771867,-0.39718223,0.3331106,0.47105515,0.47934374],[0.6726295,0.0630439,0.33165845,0.23258673,-0.7143303,-0.5131551,-0.27799842,-0.20236474,0.49068013,-0.21187434,-0.18124661,0.3935689,0.58411384],[0.08724511,-0.577467,-0.12056874,-0.40466517,-0.2821864,-0.29668784,0.5748119,-0.19402814,0.33314952,-0.35929132,-0.119962655,-0.44145095,0.39621937]],"activation":"identity","dense_3_b":[[-0.034004413],[0.04665063],[0.09105554]]},{"dense_4_W":[[-0.16068545,-0.31246737,-1.0885646]],"dense_4_b":[[-0.084667206]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5220 4C2VL106'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5220 4C2VL106'.json deleted file mode 100755 index d092bd2a9a..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5220 4C2VL106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.5646715],[0.6694641],[0.44737],[0.026886152],[0.6618878],[0.663675],[0.6667225],[0.66845155],[0.66961575],[0.6750626],[0.67718285],[0.02651441],[0.026632387],[0.026751718],[0.027223678],[0.027500574],[0.027766436],[0.027753508]],"model_test_loss":0.0021724598482251167,"input_size":18,"current_date_and_time":"2023-08-08_22-46-54","input_mean":[[26.029737],[-0.12229291],[-0.00878866],[-0.017934654],[-0.11821583],[-0.11995477],[-0.12079329],[-0.1245332],[-0.12938891],[-0.1290596],[-0.12787117],[-0.017873093],[-0.017926747],[-0.017972697],[-0.018089544],[-0.018230878],[-0.018407188],[-0.018459646]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.36057478],[-0.16445863],[3.0447748],[-0.022469003],[-0.6659535],[0.22373353],[-3.3467278]],"dense_1_W":[[-0.2376849,0.38567924,-0.38532612,-0.36708954,0.5690472,-0.2458212,0.07751702,0.2212711,-0.46712497,-0.6651113,0.29152408,-0.08464707,-0.018103926,-0.24177329,0.7310908,-0.058990337,-0.030694641,-0.11854629],[-0.0009913361,-0.077025376,-0.0065500247,0.046067335,-0.049254794,-0.9076616,-0.0003211376,0.14927548,0.15986459,0.24684179,-0.38523427,-0.22149515,0.0073642987,0.11100769,-0.09587406,0.30423173,0.025807435,0.13052529],[0.4883289,0.30375436,-0.3209597,0.13514149,0.10009362,-0.5936262,-0.22444941,-0.5819263,-0.34365678,0.076933436,0.21189494,-0.28389084,0.15581718,0.038204152,0.13983965,-0.040451385,0.29750612,-0.2481491],[-0.0014382814,-0.13296318,2.1798,0.10981343,0.6367385,-0.13009104,-0.9085796,0.6248629,0.5663407,-0.34945607,-0.026286183,-0.09252589,0.32709804,-0.5283437,0.06888198,0.34782213,-0.0396639,-0.15430778],[-0.9994939,0.6315036,-0.39675602,0.10514331,0.31768408,-0.28510046,-0.07353569,0.50522256,-0.25331956,0.31126252,0.05213495,-0.62016946,-0.14337428,-0.5253215,0.36232558,-0.39571983,-0.51797396,-1.1316494],[0.22178838,0.65085924,0.38133407,0.45604607,-0.14068341,-1.0306925,0.30833307,-0.18152203,-0.11089663,0.14951013,0.20940769,-0.18067391,-0.058062352,-0.21344402,0.2434591,0.2801642,-0.2628211,-0.070006035],[-0.5233583,0.20665656,-0.3384473,0.57583076,0.21660234,-0.94515306,0.1279248,-0.9392442,-0.08341735,0.21010256,0.09249825,-0.3514638,-0.11611042,-0.052045938,0.30880475,0.03110251,-0.06850783,-0.12792635]],"activation":"σ"},{"dense_2_W":[[0.6317959,0.6705066,0.20417199,0.21395814,0.10470223,0.14087297,-0.12592584],[0.08588891,-0.081240855,0.5760022,-0.22544949,-0.54510444,0.23245768,0.046276238],[-0.23795508,0.006579916,-0.9301286,-0.43157038,-0.09368898,-0.5191553,-1.0032965],[0.19750868,-0.0020027894,-0.33918998,0.1652486,0.17350669,-0.22918618,-0.3234288],[-0.40517142,-0.044377446,-0.7739969,-0.5347441,0.010773094,0.4562043,-0.7532082],[-0.04751407,0.86060613,-0.27241683,-0.10298587,-0.272535,0.35024813,0.59923714],[-0.010178873,-0.37041524,0.23013395,-0.109916255,0.29119843,0.0144743025,-0.61659116],[-0.40173405,-0.7648917,-0.6105268,0.308084,0.3153847,-0.49524066,0.04767403],[0.34532696,-0.43309987,-0.3433278,-0.1705872,-0.14465691,-0.22976112,-0.2721868],[-0.2980317,0.22856045,-0.27896377,0.14522254,-0.23149188,-0.20256028,-0.7814072],[-0.42373073,0.24569665,-0.9021987,0.44055524,0.0935608,-0.39574504,-0.36532554],[0.4243805,0.6297723,-0.28280917,-0.7076218,0.3524698,-0.013303791,0.6177503],[0.2468454,0.41776308,0.8151066,-0.42162442,0.018570265,-0.22239894,0.3231103]],"activation":"σ","dense_2_b":[[-0.026862532],[-0.14978711],[-0.005214749],[-0.07263994],[-0.08199721],[-0.045804795],[-0.0866205],[-0.06230838],[-0.07474814],[-0.05142401],[-0.07595316],[-0.18088594],[-0.2217942]]},{"dense_3_W":[[0.4388805,0.08923334,0.15111509,-0.17938077,-0.47965288,0.3093158,-0.08968161,-0.30242828,-0.5312799,-0.31545746,-0.6203474,0.31204218,0.09222002],[0.6803294,0.07273466,-0.66237503,-0.3718425,0.5460477,0.036861733,-0.56628793,-0.24408782,-0.33143753,-0.58106333,-0.13587737,0.29482222,0.0920682],[0.13532409,0.10077603,0.13572003,0.31044018,0.5533716,-0.27005956,-0.5925635,-0.2709091,0.1561405,0.20917125,0.27186853,0.25998002,-0.21802285]],"activation":"identity","dense_3_b":[[0.048612285],[0.05009564],[-0.057215467]]},{"dense_4_W":[[-1.0191514,-0.7887438,0.3675588]],"dense_4_b":[[-0.044860546]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5420 4C4VL106'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5420 4C4VL106'.json deleted file mode 100755 index 1fecceac92..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5420 4C4VL106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.501248],[0.66097784],[0.39463165],[0.033822067],[0.6530338],[0.6543088],[0.65753746],[0.6521385],[0.65343094],[0.6497655],[0.64884734],[0.033726152],[0.03373755],[0.033731945],[0.03357754],[0.033446345],[0.033136833],[0.033040747]],"model_test_loss":0.005525775719434023,"input_size":18,"current_date_and_time":"2023-08-08_23-11-12","input_mean":[[29.792126],[-0.04522217],[0.021310413],[-0.0061475663],[-0.042909686],[-0.04259835],[-0.041554518],[-0.03512602],[-0.022554956],[-0.014822821],[-0.010136456],[-0.006064173],[-0.0060414663],[-0.006004127],[-0.005759402],[-0.005674136],[-0.005454047],[-0.0052154707]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.22852585],[1.3894823],[0.122581],[1.568894],[-0.24534363],[-0.081348546],[-0.062656134]],"dense_1_W":[[0.013982386,0.33132157,-2.8375375,-0.2577825,1.5605328,-0.44175422,1.4673861,0.30788234,-0.8293273,-0.35149613,-0.20746693,-0.2756051,0.19700375,0.56104803,-0.22943902,-0.9442609,0.29700294,0.33738524],[-0.7498267,-0.6624498,-0.04035213,0.64772356,0.22239381,0.752236,0.7376311,0.22121955,-0.68275774,-0.31479657,0.5766379,1.1977735,0.23543899,-0.03235867,-1.2889259,-0.5574388,-0.38497743,0.22112268],[0.0009815576,-0.42306572,0.3711868,0.32548174,-0.6101839,-0.07870281,-0.6290229,1.9477028,1.6681696,-0.12739149,-0.51679254,0.08266713,-0.13435598,-0.860949,0.19675814,-0.040138233,-0.25093862,-0.4040983],[-0.6976788,0.25720024,0.0430806,0.3727656,-0.017078696,-0.7331152,-0.580502,0.19809097,0.21536557,0.19312605,-0.34806177,-0.7567413,-0.37611556,-0.52824664,0.42451826,0.5508943,0.23928273,0.03949534],[-0.0014112287,0.0859497,-0.6420441,0.250335,-0.79082257,0.26661268,-0.060180947,0.01820874,-0.537458,-0.52666235,-0.65162635,0.5239975,0.1635141,-0.46365562,-0.10242774,0.7817764,0.06101124,0.6259446],[0.00052573474,0.8818668,0.010850059,0.47755244,-0.89471304,0.77187765,0.29030934,-0.61783034,-0.51367205,0.24970502,0.19460167,0.5136466,0.047820516,-0.5154373,-0.59959394,-0.4312206,0.19824192,0.24100806],[0.0010626772,2.6087165,-0.4629497,0.6686539,-1.1897037,-0.84694195,0.7046186,-1.2559808,-0.6581498,-0.23632167,0.63437265,-0.9454196,0.3392225,0.8520271,-0.0974469,-0.7927253,-0.193067,0.31566033]],"activation":"σ"},{"dense_2_W":[[-0.1513031,-0.93051434,-0.44909996,0.3317688,-0.4884435,-0.67838585,0.36971784],[0.35191703,-0.048789192,0.450275,-0.039996978,-0.20984387,0.5479376,-0.6852263],[-0.12902059,0.37265527,0.117599756,-0.5375113,0.20516054,0.87671304,-1.022533],[0.2674715,-0.007845689,-0.46048212,0.40396458,-0.2595625,-1.1184877,0.9535189],[-0.09281683,-0.718375,-0.5129304,0.29733542,-0.34454262,-0.65599316,0.31568497],[-0.40095973,0.17952402,-0.92779064,-0.5870983,-0.632861,-0.69213766,0.52468324],[-0.040474832,0.059520535,-1.0331043,0.04681406,-0.19046701,-0.5846261,0.25040108],[-0.27255413,0.27288094,-0.50989443,-0.3859617,-0.533083,-1.1661375,0.29892063],[-0.3460965,0.14177947,0.19027938,-0.369559,0.14183414,1.0526645,-0.33656517],[-0.17344117,-0.5123712,0.048518293,-0.69904965,-0.5825566,-0.75061584,0.3186972],[-0.6285899,-0.07304559,0.1665746,-0.12463482,-0.07659766,-0.5974891,-0.490175],[0.58759695,-0.7291639,-0.010515633,0.49339303,-0.17044984,-1.4153128,0.3785607],[0.44372615,0.21508391,-0.5312156,0.004264401,-0.71482986,-1.0418825,0.7020857]],"activation":"σ","dense_2_b":[[0.08850905],[-0.24293129],[-0.15789112],[0.17704202],[0.24606779],[-0.11684559],[0.029992603],[-0.024114225],[-0.09106879],[-0.3028866],[-0.14801322],[0.24917996],[-0.050585084]]},{"dense_3_W":[[0.21220079,0.05355472,-0.63798493,0.04563667,0.4423918,0.0664141,0.6139182,0.38336623,-0.76794696,-0.22829553,0.27020785,0.57621443,-0.1627959],[-0.16809194,0.27078873,-0.5811216,0.09835563,0.20550297,0.42691118,-0.17207801,0.2604539,-0.49177387,0.26957557,-0.43846667,0.29487315,0.57365525],[0.26274177,-0.48716888,-0.8324663,0.5967428,0.5331667,0.0806274,0.32409737,0.18292934,-0.39461344,-0.02578827,0.13157013,0.17259999,0.15921797]],"activation":"identity","dense_3_b":[[-0.101195484],[-0.051826347],[-0.04482993]]},{"dense_4_W":[[-0.1355761,-0.1400903,-0.5103199]],"dense_4_b":[[0.037658684]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA CEED INTRO ED 2019.json b/selfdrive/car/torque_data/lat_models/KIA_CEED.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA CEED INTRO ED 2019.json rename to selfdrive/car/torque_data/lat_models/KIA_CEED.json diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022.json b/selfdrive/car/torque_data/lat_models/KIA_EV6.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA EV6 2022.json rename to selfdrive/car/torque_data/lat_models/KIA_EV6.json diff --git a/selfdrive/car/torque_data/lat_models/KIA K5 2021.json b/selfdrive/car/torque_data/lat_models/KIA_K5_2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA K5 2021.json rename to selfdrive/car/torque_data/lat_models/KIA_K5_2021.json diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020.json b/selfdrive/car/torque_data/lat_models/KIA_NIRO_EV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020.json rename to selfdrive/car/torque_data/lat_models/KIA_NIRO_EV.json diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2021.json b/selfdrive/car/torque_data/lat_models/KIA_NIRO_HEV_2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2021.json rename to selfdrive/car/torque_data/lat_models/KIA_NIRO_HEV_2021.json diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2ND GEN.json b/selfdrive/car/torque_data/lat_models/KIA_NIRO_HEV_2ND_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2ND GEN.json rename to selfdrive/car/torque_data/lat_models/KIA_NIRO_HEV_2ND_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/KIA OPTIMA 4TH GEN FACELIFT.json b/selfdrive/car/torque_data/lat_models/KIA_OPTIMA_G4_FL.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA OPTIMA 4TH GEN FACELIFT.json rename to selfdrive/car/torque_data/lat_models/KIA_OPTIMA_G4_FL.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SELTOS 2021.json b/selfdrive/car/torque_data/lat_models/KIA_SELTOS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SELTOS 2021.json rename to selfdrive/car/torque_data/lat_models/KIA_SELTOS.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO GT LINE 2018.json b/selfdrive/car/torque_data/lat_models/KIA_SORENTO.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SORENTO GT LINE 2018.json rename to selfdrive/car/torque_data/lat_models/KIA_SORENTO.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN.json b/selfdrive/car/torque_data/lat_models/KIA_SORENTO_4TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN.json rename to selfdrive/car/torque_data/lat_models/KIA_SORENTO_4TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN.json b/selfdrive/car/torque_data/lat_models/KIA_SORENTO_HEV_4TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN.json rename to selfdrive/car/torque_data/lat_models/KIA_SORENTO_HEV_4TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SPORTAGE HYBRID 5TH GEN.json b/selfdrive/car/torque_data/lat_models/KIA_SPORTAGE_5TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SPORTAGE HYBRID 5TH GEN.json rename to selfdrive/car/torque_data/lat_models/KIA_SPORTAGE_5TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018.json b/selfdrive/car/torque_data/lat_models/KIA_STINGER.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018.json rename to selfdrive/car/torque_data/lat_models/KIA_STINGER.json diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022.json b/selfdrive/car/torque_data/lat_models/KIA_STINGER_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA STINGER 2022.json rename to selfdrive/car/torque_data/lat_models/KIA_STINGER_2022.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33252x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33252x00x00x00x00x00x00'.json deleted file mode 100755 index e26a3cc055..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33252x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.4440565],[1.0028862],[0.36267638],[0.043678306],[0.99411225],[0.9974919],[0.99982977],[0.99254435],[0.979976],[0.95886236],[0.93553513],[0.043576345],[0.043595448],[0.043623183],[0.04364424],[0.043546103],[0.0433696],[0.0430985]],"model_test_loss":0.008524268865585327,"input_size":18,"current_date_and_time":"2023-08-09_00-29-37","input_mean":[[24.4086],[-0.0049972953],[0.0014472222],[-0.011187174],[-0.0048188227],[-0.0048300573],[-0.004904814],[-0.0039606136],[-0.0010262493],[0.0019202619],[0.004503857],[-0.011211575],[-0.011217863],[-0.011226438],[-0.011296215],[-0.011372426],[-0.011467264],[-0.011505676]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.9125192],[-0.13636686],[0.03213368],[-0.31655693],[0.113999754],[2.0803509],[-0.14560352]],"dense_1_W":[[-0.95836014,0.21151903,0.22434151,-0.002453981,0.13014187,0.5596393,-0.16869491,0.077085264,0.14677656,0.18345413,0.3242226,0.081019655,0.31809556,-0.38337004,-0.1310791,0.091724716,-0.5161398,0.25401837],[-0.14619967,0.5092507,0.0018193424,-0.21825372,-0.6449165,0.92955756,-0.13284698,0.06275948,-0.08579267,0.35583824,-0.18346414,0.69240427,-0.16283554,-0.18422249,-0.4282623,-0.027244156,0.02582024,0.1427941],[1.0047165,0.015293248,-0.02223404,0.052268773,-0.41808492,0.386935,-0.42386678,-0.5135216,-0.24958232,-0.5126944,0.43498564,0.06511655,0.37023535,-0.114505425,-0.434018,0.116916806,0.0014085828,0.17056656],[-0.06596466,1.2519224,4.74866,0.11355789,-0.51302266,0.28445745,-0.3053417,0.36204198,0.647499,-0.60584915,-1.0571691,0.32952857,-0.0777627,0.3500026,-0.4212409,0.12553304,-0.213272,-0.122726746],[0.03182641,-0.04754851,0.0029030219,0.11716655,-0.2078027,1.1533194,-0.8695852,0.119884744,-0.13354245,0.10176885,-0.00028662398,0.17332709,0.30320284,-0.038923513,-0.54227114,-0.296703,-0.06784862,0.34063476],[0.79970616,0.43940097,0.1962523,-0.118129455,-0.41660714,0.8126276,-0.6059025,0.39716172,0.52851135,0.2263594,-0.08056667,0.2966726,-0.277799,-0.5333231,0.38141567,0.33619776,-0.037727766,-0.2941527],[-0.10851895,0.8244319,0.011763683,-0.3026351,-0.49091163,0.84520894,-0.45440027,0.18291348,0.3710321,-0.5599674,0.15607528,0.6427925,0.29607928,-0.6419731,-0.39483508,0.15418234,0.043094926,0.031589415]],"activation":"σ"},{"dense_2_W":[[0.090692595,-0.4490544,0.24625836,-0.28497836,-0.109338924,-0.17009985,-0.4655793],[-0.669885,-0.61082786,-0.7925282,-0.20993824,-0.09015391,-0.2284157,0.15029445],[-0.44977325,-0.7235435,-0.36254668,-0.009851951,-0.1750803,-0.81676334,-0.23792371],[-0.2912695,-0.7815833,0.59908646,-0.25272,0.3039248,0.45951632,-0.4202785],[-0.38828993,-0.35401246,0.038314883,-0.47171852,0.44466084,0.3610528,0.35880306],[-0.054223396,-0.16728099,-1.057462,-0.61807907,-0.5963022,-0.87659144,-0.45062214],[-0.71182984,0.4919117,0.7364119,0.81453204,0.5218261,0.27536118,0.6695429],[-0.29577672,-0.26198146,-0.54313695,0.18035722,0.05070786,-0.31965226,0.13927855],[0.21813929,0.77980363,-0.26194462,-0.55060804,-0.27208176,0.4345995,0.8768538],[0.020967001,0.74533176,-0.30123144,-0.015122309,0.6550382,-0.28115028,0.10651019],[-0.16647351,-0.4178918,0.0001960198,-0.22321661,-0.60688865,0.119590364,-0.3315932],[-0.35213155,-0.464748,0.48835987,-0.05246687,-0.2060589,0.046264112,-0.5531751],[-0.2018665,-0.063097775,-0.8816539,-0.6065871,-0.92965955,-0.6128336,0.014582347]],"activation":"σ","dense_2_b":[[-0.06833847],[0.012058566],[0.1310296],[0.107997425],[-0.09987967],[0.143086],[-0.116671406],[-0.290171],[0.030431822],[-0.029693417],[0.08782878],[0.045630615],[-0.1426334]]},{"dense_3_W":[[-0.328282,0.23894995,0.5074013,0.16549413,0.1285143,-0.13915035,-0.42390114,-0.55725336,-0.66650647,-0.22075084,0.6307297,-0.21100862,0.16000639],[0.13250639,0.52014196,-0.043805785,0.3813022,0.5189094,0.79271615,0.17715289,0.54481244,-0.60536987,-0.60951567,0.16811334,0.21930675,0.5196005],[0.12788317,0.67415655,0.75158405,0.47136194,-0.47586355,0.5831669,-0.61521083,0.016530482,-0.19323698,-0.15085855,0.6299936,0.32262608,-0.11284211]],"activation":"identity","dense_3_b":[[-0.00085244136],[-0.018760033],[-0.008874107]]},{"dense_4_W":[[-0.7199532,-0.7991476,-1.1705709]],"dense_4_b":[[0.008561696]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33690x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33690x00x00x00x00x00x00'.json deleted file mode 100755 index 51117292a5..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33690x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.680412],[0.85285246],[0.3884425],[0.03205119],[0.8500491],[0.85049105],[0.8514502],[0.8458795],[0.8377078],[0.82015127],[0.8038297],[0.031919472],[0.03195958],[0.03199403],[0.03202506],[0.03193417],[0.03161889],[0.031273898]],"model_test_loss":0.009339340031147003,"input_size":18,"current_date_and_time":"2023-08-09_01-20-38","input_mean":[[24.875648],[0.0041736388],[0.010556495],[-0.0046896804],[-0.0006003252],[0.0007327586],[0.0016012463],[0.0060975295],[0.006737074],[0.0062413993],[0.0063207992],[-0.0047094855],[-0.004715502],[-0.0047238604],[-0.004803993],[-0.0049048723],[-0.005078436],[-0.0051641]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.17949091],[-3.3968902],[-0.07593549],[0.5466097],[0.03951519],[-0.00081275025],[-0.2818511]],"dense_1_W":[[0.03091709,-1.3157804,-5.490474,0.2759644,1.2174463,0.13602142,0.30531374,-0.5896565,-1.0454189,0.024137963,1.2799596,-0.5758251,-0.67036736,-0.10264167,1.023584,-0.022457464,0.0423572,-0.072023876],[-1.5988137,-0.4146702,-0.038053937,0.63521147,0.58526903,-0.3437994,0.22620016,0.08106555,-0.7296988,-0.448912,-0.47618243,-0.71913254,0.12589867,0.8123822,-0.8396519,-0.6090673,-0.2687799,0.8079711],[-0.017673936,-0.20331055,-0.0016520993,-0.20215373,0.5373215,-0.8593722,0.20908187,0.03162978,-0.35333672,0.28399038,-0.056258224,-0.83239245,0.2361236,0.645981,0.21572426,0.23369376,0.030962478,-0.20426486],[0.6789347,-0.81145126,-0.007111559,0.050477408,0.7655705,-0.961523,0.547529,0.29283896,0.11744454,-0.23781727,-0.49012998,-0.77257276,0.14991538,0.8663245,-0.47725388,-0.17021804,0.22196974,0.09640378],[-0.023541855,-0.037035666,0.55035615,-0.4223085,-0.3162554,1.0634682,-0.31260857,0.38816622,0.5183418,0.00963337,-0.9862806,0.35859644,-0.107738346,-0.23407808,-0.29413855,-0.43096134,0.33290064,0.27480224],[-0.008280398,0.5080252,-0.0030781063,-0.24516527,-0.076359816,1.3229189,-0.40155405,-0.6557982,-0.084914856,0.34833226,0.048928127,0.06514959,0.33998683,-0.17689575,0.01783814,0.2977825,-0.10754876,-0.10063827],[1.4288968,0.108082466,-0.031209342,-0.06544005,-0.39778545,0.56522495,0.20475589,0.061119992,-1.1141357,-0.5437865,-0.2889625,0.3729891,0.55635136,-0.78631455,-0.120706834,-0.44492543,-0.4325845,0.863979]],"activation":"σ"},{"dense_2_W":[[-0.30310643,-0.12873378,0.39852074,0.46089283,-0.061163615,-0.47244763,0.08307709],[0.063253105,-0.0028390735,0.6435178,0.021038773,-0.24314678,-0.30235827,0.201086],[-0.4110213,-0.15217133,-0.47424644,-0.5498248,-0.40863478,-0.03644606,-0.165162],[-1.0989958,1.0549769,-0.81128615,-0.29547232,-0.11975506,0.7134397,-0.58516175],[-0.19868451,0.50366116,0.31972986,0.55210483,-0.34068644,0.11577465,0.32061067],[-0.22519416,0.26882055,0.6880949,0.3129291,0.34909117,-0.63557214,-0.45552465],[-0.90025496,0.63476175,-0.5909716,-0.7426136,0.48243678,0.16065429,-0.2919061],[-0.40407148,-0.5999356,-0.45084292,-0.50555605,0.49569342,0.78641695,0.6107878],[0.19533251,-0.18449633,-1.2098444,-1.1110471,0.83463633,0.6744162,0.47429064],[0.2519356,-0.2709652,-0.43452793,0.16501693,-0.1434805,-0.164745,-0.55715173],[0.5556845,-0.7147965,-0.7962351,-0.9492054,0.45981735,0.48979762,0.5166068],[-0.81657475,-0.76384026,-0.46112433,-0.4948062,0.8747664,0.9776133,0.7079956],[-0.20226195,-0.2591615,0.63573545,-0.01795919,-0.082302935,-0.42891976,0.26436207]],"activation":"σ","dense_2_b":[[-0.047301266],[-0.016725123],[-0.049676552],[-0.07829081],[-0.08770606],[0.0036026512],[0.084506735],[0.109670915],[0.11299696],[-0.022765491],[-0.008457604],[0.32036614],[0.0072946316]]},{"dense_3_W":[[-0.31729496,0.12889174,0.4225155,0.31061146,0.24402286,-0.10446856,-0.48671034,0.3845978,0.2660345,0.3093137,0.44116616,0.38984168,-0.3460159],[0.0358234,0.31940135,-0.21071792,-0.5266989,0.4593207,0.17332634,-0.66819376,-0.58671886,0.024372714,0.10640016,0.038679607,-0.11834236,0.5630265],[0.10535604,0.40837932,0.53625077,0.50682795,-0.11473014,0.5603721,0.14725567,0.080817915,-0.60673153,0.3120416,-0.47885686,-0.3498024,-0.46723753]],"activation":"identity","dense_3_b":[[-0.09867763],[0.05700437],[0.053955115]]},{"dense_4_W":[[0.45426035,-1.1652403,-0.79250604]],"dense_4_b":[[-0.060487706]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33721x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33721x00x00x00x00x00x00'.json deleted file mode 100755 index c2836f44b7..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33721x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.344813],[1.0432545],[0.40825117],[0.03865216],[1.0351241],[1.0378826],[1.0401973],[1.0332909],[1.0210356],[0.99993485],[0.97768444],[0.03855244],[0.0385832],[0.038604163],[0.038570847],[0.038460117],[0.038177595],[0.037886962]],"model_test_loss":0.007136368192732334,"input_size":18,"current_date_and_time":"2023-08-09_01-47-26","input_mean":[[23.442703],[0.0035179595],[0.00408823],[0.012855675],[0.0033001432],[0.0034371077],[0.0034639447],[0.0074803857],[0.012283631],[0.018361822],[0.021030566],[0.01292293],[0.012896148],[0.012869411],[0.012853285],[0.012912567],[0.013085337],[0.013110078]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.9161396],[-0.22788599],[2.968902],[-0.009821155],[-0.18505585],[0.32007432],[-0.014948483]],"dense_1_W":[[-1.0511566,-0.29206184,0.8199831,-0.15576178,-0.38916576,1.1162808,-0.5011398,1.0977064,-0.5836164,0.16133548,-0.053778384,0.4155293,0.19529353,-1.2087135,0.5919332,0.53749675,-0.08758931,-0.2511601],[-0.09181765,0.33316463,-0.78092057,0.0865392,0.3381008,-0.6151113,0.3660635,-0.72633314,-0.6142182,0.0048095123,0.37035215,0.12880829,-0.23413754,0.5010518,-0.5957484,-0.16287656,-0.04932468,0.26007095],[1.0044367,0.35445923,0.78647244,-0.32049915,0.06494051,0.12055531,-0.22746965,0.26814324,0.05199458,-0.037158065,-0.03201108,-0.14750965,0.3159122,-0.053600136,0.2906058,0.037501868,-0.01485947,-0.0680036],[-0.0018256758,-0.39913148,-0.0054692593,-0.47800386,0.4134914,-1.2333674,0.23680426,0.23282804,0.3836774,-0.06254318,-0.22074893,-0.4077003,0.09583857,0.025910378,0.62602794,0.43462366,-0.12558399,-0.17822921],[-0.0047321627,0.55899805,-0.00081870187,-0.25419536,-0.3257252,1.1633046,-0.39042598,-0.20668344,-0.21059605,-0.006790498,0.18107124,0.15924998,0.02389586,-0.06371585,-0.44330505,0.36899558,-0.3173842,0.09592921],[0.095295206,-0.08933727,0.59179264,0.40638387,0.5824425,-0.25730613,0.7851391,-0.4444533,-0.6680196,-0.08562278,0.53340226,-0.57082343,-0.17787477,0.7951686,-0.13043731,-0.13890404,-0.28527093,0.17461915],[0.034483686,-0.7067752,-4.019811,0.037841592,1.0770723,-0.28922594,0.22808869,-0.094380274,-0.6669433,-0.2657373,0.5791061,-0.7896833,-0.3886935,-0.19634429,0.7110262,0.7885148,-0.027897676,-0.19876951]],"activation":"σ"},{"dense_2_W":[[-0.20400774,-0.22307488,0.83168095,-0.99375516,1.4662783,-0.54265076,-0.15802172],[-0.12194149,0.3057387,-0.25224084,0.86720455,-0.6698733,0.3360012,-0.292734],[0.37222654,0.122192845,-0.57808757,0.31621838,-1.051521,-0.18741105,0.18480313],[0.41065305,0.56189334,-0.65107477,0.33912212,-1.1690532,0.32877356,0.27887678],[0.58805436,-0.3522203,-0.8155676,-0.47617933,-0.42864746,-1.1024536,-0.7342275],[-0.28316686,0.42155153,0.1351553,0.00020168634,-0.39858565,-0.038997397,-0.0620207],[-0.2676193,0.5867359,0.34214348,0.46678424,-0.9861758,0.19793625,0.35967037],[0.26571375,0.49524286,-0.6020044,-0.31548288,0.0521101,-0.50098413,0.02061019],[-0.35134986,0.5898171,-0.8887333,0.49588937,-0.2849531,-0.15621391,0.39262283],[0.11367938,-0.035091795,0.20310073,-0.29153082,0.5581006,-0.1919044,-0.28208742],[2.092034,-0.5602147,-0.42445743,-1.403385,0.8866187,-1.2998788,-0.3509462],[-0.010185507,-0.2035467,0.33422557,0.7748165,-0.65113765,0.4648428,0.25325134],[-0.07438275,-0.06233438,1.0291604,-0.95668316,1.2571595,-0.65489537,-0.20861064]],"activation":"σ","dense_2_b":[[0.09113021],[0.04578328],[-0.29403162],[-0.2192368],[-0.28878424],[-0.11772192],[0.008928186],[-0.10850013],[-0.18696937],[-0.114522],[0.1894073],[-0.0047073704],[0.20806429]]},{"dense_3_W":[[0.69607276,-0.25463992,0.19224781,-0.64511865,0.27775756,0.4589496,-0.7449188,0.41997963,-0.12018125,0.4897476,0.9306085,-0.10257274,0.84184134],[-0.64124787,0.752149,-0.2837551,0.29449946,0.26526523,0.30954522,0.2830915,0.5043165,-0.16997944,-0.43304175,-0.694841,0.057517774,0.09658051],[-0.03208746,-0.26029688,-0.74573,-0.1032463,0.13831443,-0.64660555,-0.21513747,-0.40704614,-0.48390958,-0.06794522,0.12341715,-0.26635003,0.78502613]],"activation":"identity","dense_3_b":[[-0.09851486],[0.03344719],[-0.047249585]]},{"dense_4_W":[[0.797171,-0.25833753,0.61133206]],"dense_4_b":[[-0.06307325]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33252x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33252x00x00x00x00x00x00'.json deleted file mode 100755 index 0a80cfd0df..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33252x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.8285],[1.1188737],[0.47342262],[0.05126763],[1.1050262],[1.1092741],[1.1127472],[1.0983341],[1.0797789],[1.0525575],[1.0272892],[0.050943088],[0.05100398],[0.051071826],[0.050979707],[0.050723284],[0.050214104],[0.049760416]],"model_test_loss":0.008092939853668213,"input_size":18,"current_date_and_time":"2023-08-09_03-05-40","input_mean":[[22.832628],[-0.048477665],[-0.0015699231],[-0.010172784],[-0.044837113],[-0.045658123],[-0.04680434],[-0.045073368],[-0.043960348],[-0.039256155],[-0.03613124],[-0.01008188],[-0.010097768],[-0.010119672],[-0.01006197],[-0.009999101],[-0.009887467],[-0.0099477405]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.15260588],[-3.2536018],[0.043962248],[-0.090603456],[3.5123594],[0.029381314],[0.24542183]],"dense_1_W":[[-0.018435279,1.2527711,4.230789,0.018031234,-1.4346001,-0.15953755,0.061720558,0.35755047,0.37375236,0.58350205,-0.88426137,0.59743536,-0.10547891,-0.33643883,0.21758044,-0.13492396,-0.36006564,0.20787364],[-1.5682247,-0.035563767,0.19118826,-0.43019408,0.14057355,1.0501944,-0.82073975,-0.14322114,-0.08808569,-0.013670676,0.67794806,0.5938818,-0.4189539,-0.5114651,0.5719749,0.39641926,-0.06207111,-0.38755944],[0.18513687,-0.71987325,-0.011965726,0.018532543,0.258614,-0.97279245,0.59959203,-0.22303152,-0.17081428,0.23112038,-0.04976506,-0.05941518,-0.5961051,0.20494816,0.33866015,0.023431057,-0.02673853,-0.027390076],[-0.0032866031,-0.46916834,-0.03375909,0.22316715,0.33248055,-1.0202448,0.7034391,-0.2351044,-0.13222691,-0.14861125,0.23242648,-0.035604436,-0.32533994,0.19433749,0.29952523,0.31940687,0.045100812,-0.16624303],[1.7107601,0.027855793,0.2056705,-0.48186287,-0.19466202,1.5228227,-1.2701944,0.4916286,-0.15901598,-0.4066886,0.8435757,0.29054174,-0.1801262,-0.5044365,0.6704808,0.3633137,0.21051206,-0.6159748],[-0.031839076,0.52859527,0.016463235,-0.66599137,-0.79132366,1.1579964,-0.58045477,0.13249406,0.4277288,-0.09080096,-0.18318327,1.2263923,0.5539931,-0.8813475,-0.576685,-0.13317113,0.06021947,0.3146238],[0.9673127,0.39608166,-0.02511569,-0.0046267007,-0.64154017,0.57387704,-0.346695,-0.9827318,-0.61006016,-0.05364682,0.4217874,0.039297163,0.57102877,-0.43577328,-0.42087564,-0.10482892,-0.18938681,0.42926088]],"activation":"σ"},{"dense_2_W":[[0.41543797,1.1738479,-1.0748413,-0.68251723,-0.23535445,-0.014745399,-0.074383706],[0.42731732,-0.5514982,0.074961975,0.59009844,-0.3027509,-0.5616325,-0.28420764],[0.11749416,0.3126048,-0.5657671,-0.26303276,0.39180964,0.77518344,0.33590633],[-0.14604264,-0.6352743,0.2253331,0.58631027,-0.3192098,0.20994529,0.007633578],[0.3937283,-0.078028925,-0.5664736,-0.124979004,0.48761243,0.3210194,0.07755378],[0.27684122,0.7713517,-0.31364554,-0.5921977,-0.18462463,0.47987497,-0.61615944],[0.29768473,0.41583326,-0.9713817,-0.35854688,0.09248492,0.31493294,0.040650316],[-0.112342775,-0.1878338,0.5448513,0.7486996,-0.56119305,-0.5220495,-0.5096629],[0.19718203,0.4135663,-0.28367767,-0.1573982,-0.19590908,0.104961894,-0.49705368],[0.77046275,-0.19075769,-0.46065587,-0.13512029,0.47356725,0.38181776,0.71995],[-0.18105839,-0.55663234,0.33512706,0.016357377,-0.55092573,-0.17190884,0.08964193],[0.31455922,0.20463717,0.033571117,0.43436614,-0.41633865,0.19258104,0.33313715],[0.08064332,-0.68228775,0.7010398,0.24371538,0.22882102,-0.54400474,-0.08356227]],"activation":"σ","dense_2_b":[[-0.43676507],[-0.006130799],[-0.15402001],[0.026011059],[-0.12692562],[-0.43001604],[-0.33370367],[0.05327725],[-0.13920946],[-0.041543793],[0.06294844],[0.038047582],[-0.014338484]]},{"dense_3_W":[[-0.5613603,-0.17332096,-0.1882884,0.18131785,0.23258103,-0.44985455,0.1740991,-0.45171297,0.35409343,0.20938201,0.22257555,-0.12860954,0.31328893],[-0.2600292,0.064422175,-0.56568885,0.34872493,-0.014263635,-0.0898774,0.34932417,-0.04355818,0.33161792,-0.4384388,0.21339151,0.4251023,0.3974905],[-0.6470215,0.23639736,-0.59931415,0.20245089,-0.12388959,-0.57567924,-0.40078935,0.7244318,-0.4283423,-0.62795776,0.66424334,0.4475859,0.5476653]],"activation":"identity","dense_3_b":[[-0.025201272],[0.023392009],[0.030334707]]},{"dense_4_W":[[0.7327956,-0.77316505,-1.070442]],"dense_4_b":[[-0.028413372]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33590x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33590x00x00x00x00x00x00'.json deleted file mode 100755 index 3d325cc48d..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33590x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.4012003],[0.9084744],[0.3989995],[0.04316203],[0.9050049],[0.9055595],[0.90684354],[0.90098166],[0.89330155],[0.8834002],[0.872413],[0.04302624],[0.0430567],[0.04308886],[0.043104757],[0.043008905],[0.042880133],[0.042604897]],"model_test_loss":0.008806328289210796,"input_size":18,"current_date_and_time":"2023-08-09_03-30-27","input_mean":[[21.916237],[0.0112053035],[0.010207012],[-0.0057604206],[0.008076623],[0.008825207],[0.009262305],[0.015784515],[0.02193309],[0.029440241],[0.03471279],[-0.0059500956],[-0.0059324577],[-0.0059074587],[-0.005736568],[-0.005659438],[-0.005594903],[-0.005524908]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.113812774],[0.3718239],[-0.35734212],[-0.06904639],[1.668204],[-0.10319402],[1.6449547]],"dense_1_W":[[0.0018752348,1.2200488,-0.0005085679,-0.23384064,-0.9084212,1.2045864,-0.25443128,-0.13910054,-0.11256105,0.2179745,-0.08867826,0.16488013,0.35168028,-0.41050524,-0.1787089,0.43994418,-0.023817252,-0.08793733],[-0.04312678,0.43942824,0.11929371,-0.043850373,0.66910386,0.82385707,-1.033506,-0.08680779,0.37272778,0.28918013,0.2645954,-0.54255456,-0.44501963,-0.69097805,-0.45430678,-0.16467454,-1.2062163,-0.99093336],[0.06042321,1.267067,-0.12690838,-0.019565715,-0.8008834,1.6967841,-2.0936992,-0.73309845,-0.57475215,-0.97032815,0.53988296,0.0694317,0.19901374,-0.14523467,2.1987944,1.229183,0.41753313,0.53431153],[-0.005792214,1.6355677,3.5869675,-0.10959287,-2.1918557,-0.3136515,0.09652676,0.25249338,1.2399355,0.40560603,-1.0075005,0.6674059,0.023685906,-0.21504764,-0.5677693,-0.24701545,0.07742603,0.32459712],[0.9218543,-0.52115893,0.6683122,-0.49547228,-0.24380639,2.4874837,-1.3078512,0.50638986,-0.0022452448,0.18564974,-0.75149935,0.63630646,0.5417998,-0.47571868,-0.15869981,-0.19382617,-0.10689215,0.2615386],[0.0010884085,-0.07797116,-0.0022833152,-0.39120084,-0.54005134,2.2633855,-1.2395691,0.12394578,0.00030362024,0.113682985,-9.3380804e-5,0.9033568,0.15587245,-0.3935733,-0.43733695,-0.7241415,0.28267393,0.3301238],[0.8352049,-0.1388708,-0.62930346,0.028555281,0.0054504126,-1.2476301,0.70772225,-0.15140262,-0.14464574,0.05757089,0.6135008,-0.12531146,-0.37553704,0.107572205,0.24616258,0.23056793,-0.0013457185,-0.12736495]],"activation":"σ"},{"dense_2_W":[[0.08851535,0.6167409,0.05891007,0.5029618,-0.24713053,0.92836577,0.004156225],[-0.52199286,-0.36050865,-0.34034714,0.061794642,-0.109552786,-0.6266087,-0.31169102],[-0.7092186,-0.6801971,-0.26420647,0.39295742,0.05788309,-0.20119189,0.14084439],[-0.913237,-0.04797298,-0.48572946,-0.4032914,-0.7313818,0.1410581,-0.65766007],[0.6392394,0.24680118,-0.33827496,0.19102065,-0.08179918,0.7670678,-0.85375905],[0.8877098,-0.51691145,0.18935633,0.81099534,-0.6835733,0.80652905,-1.7127429],[0.26195377,-0.3456285,-0.71416736,-0.26705638,0.22344078,-0.27062252,-0.74219775],[0.1864041,-0.4139672,0.72243375,0.9860188,0.8927306,0.20730978,-0.0032860562],[0.029019173,0.7799921,-0.2924467,0.3229736,0.47412586,0.4905737,-0.71431655],[-0.9057719,-0.34483552,-0.6339002,0.44039795,-0.0815456,-0.6209059,-0.35469422],[-0.7642978,-0.21761882,-0.520907,0.38787058,-0.4754871,-0.47818175,0.5515306],[-0.45161492,-0.341044,-0.13645881,-0.65541065,-0.56910133,-0.19134521,-0.15136522],[0.8295409,0.03669771,0.38553452,0.446268,-0.31960988,0.7838232,0.068201065]],"activation":"σ","dense_2_b":[[-0.26521447],[0.122462295],[0.078140855],[-0.01945191],[-0.5003525],[-0.746069],[-0.45675567],[-0.3471183],[-0.29891852],[-0.21655038],[0.10162625],[0.14103983],[-0.29887974]]},{"dense_3_W":[[0.33197686,0.62199056,0.4247967,0.44158882,-0.12146235,-0.3375973,-0.44318354,0.0066761184,-0.13157894,-0.3443774,-0.44290087,-0.4360939,-0.33858845],[-0.4692612,0.46826863,0.054673724,0.283901,-0.01885255,0.2757358,0.31324366,0.4469478,0.3509845,-0.09880974,0.26294768,0.55622286,0.2389067],[-0.18467896,0.5184241,0.67473835,0.17306642,-0.28510845,-0.4426461,-0.046053376,-0.4500548,-0.50170314,0.26636368,0.60352683,0.80709,-0.5185129]],"activation":"identity","dense_3_b":[[0.08293219],[0.03822249],[0.060750734]]},{"dense_4_W":[[-0.12425623,-0.45378837,-1.2967176]],"dense_4_b":[[-0.056304324]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33690x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33690x00x00x00x00x00x00'.json deleted file mode 100755 index d6d0089b3b..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33690x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.15974],[1.045871],[0.3754209],[0.049849007],[1.0412234],[1.042158],[1.0431666],[1.0308688],[1.0145941],[0.9937998],[0.9695306],[0.049699858],[0.049720936],[0.049743976],[0.049645588],[0.049436506],[0.04910737],[0.048739962]],"model_test_loss":0.007239425089210272,"input_size":18,"current_date_and_time":"2023-08-09_03-55-25","input_mean":[[24.619316],[0.008315056],[-0.002209118],[-0.0009603967],[0.009455924],[0.009065263],[0.008578662],[0.008924362],[0.010585633],[0.012140301],[0.013719992],[-0.0010016458],[-0.000992241],[-0.0009847628],[-0.0009990969],[-0.0010099016],[-0.001055779],[-0.0010218886]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.01751012],[-2.792658],[-0.0036304477],[0.23906733],[-0.67204577],[2.824586],[0.020084955]],"dense_1_W":[[-0.0013722869,0.22783591,-0.010999781,-0.7420795,-0.5004164,0.8528246,-0.40537062,-0.3579778,0.20538606,-0.06207938,0.037892103,0.16028564,0.39440292,-0.47795537,-0.4981077,0.40456992,0.21351387,0.69398695],[-1.0907546,-0.37810156,0.5256466,-0.06323017,-0.28386277,0.40039942,-0.5656102,0.8704236,0.7594878,0.08758965,-0.2850435,-0.19939376,0.24667862,-0.5915887,0.7124935,0.33228317,0.40017298,-0.76232785],[-0.0022229636,-0.3566666,-0.0003173761,-0.2331804,0.32406712,-1.133683,0.29599214,0.07946594,0.19223347,0.10109193,-0.21318913,-0.4314191,-0.42940962,-0.059293773,0.96213984,0.3274362,-0.051667612,-0.10392697],[-0.17001934,0.31136727,0.00019800797,-0.39408368,-0.3893838,0.79402786,-0.490016,0.24215008,0.092356876,0.15550926,-0.18264957,0.2104772,0.2055425,-0.6079279,-0.100256115,0.35539958,-0.22659436,0.038026005],[0.5023145,0.415188,0.00086236314,-0.12141318,-0.3487774,0.5604944,0.29927528,-0.12137407,-0.20653158,-0.15300342,0.23502706,0.29839256,-0.15043968,-0.32693824,-0.2807662,0.010725707,-0.37295666,0.29116592],[1.1302519,0.29944658,0.5366313,-0.11482564,-0.48424527,-0.06633996,-0.12468005,0.48905316,0.53044945,0.3081709,-0.33819312,-0.054454595,-0.13536377,-0.1478465,0.49783385,0.4558332,0.22333856,-0.6476589],[0.019672142,-1.1385515,-2.8618698,0.5519799,0.5598079,-0.19218405,0.6098082,-0.34360152,-0.7758295,0.28531215,0.9757375,-0.13217533,-0.31033158,0.45779207,-0.3197823,-0.21947153,-0.24169978,0.12113089]],"activation":"σ"},{"dense_2_W":[[0.55490434,-0.06586316,-1.7488526,1.0742077,-0.26382893,0.5936367,-0.048338335],[0.22041039,-0.07157286,-1.3535683,0.9498899,0.59100443,0.13426219,0.1314393],[0.060050584,-0.37686986,0.93393904,-0.8473732,-0.8137314,0.3513347,0.13401532],[0.031560004,-0.67102486,-0.4638209,-0.16865264,0.19910118,-0.0022606154,0.014461398],[-0.26292112,-0.8773706,-0.27558997,-0.98985237,0.115747504,0.15425104,-0.32170153],[0.3645839,0.23929603,-1.0847621,0.7692537,0.053893678,0.29140672,-0.55564046],[-0.29527074,-0.8282215,0.6947013,-0.34474802,0.33731544,-0.47208363,-0.2703771],[0.10967559,-0.45384485,1.1605363,-1.1405638,-0.16794126,0.009725002,0.25623515],[-0.47460532,0.014810191,-0.049116056,-0.103007615,-0.7748003,0.020772532,0.164838],[-0.23443891,0.22693226,0.8323869,-0.5907415,-0.18859898,-0.5243307,0.024510408],[0.35138795,-0.71696883,0.6208494,-0.21413626,-0.30234987,-0.19566858,0.203605],[0.29550865,-0.5253764,0.44364005,-0.15027097,-0.52989537,-0.6267321,0.56808716],[-0.16024043,0.7365189,-0.48886365,-0.01982367,0.4768797,-0.4950252,-0.5998298]],"activation":"σ","dense_2_b":[[-0.28562254],[-0.28906816],[-0.004571446],[-0.16752788],[-0.11627307],[-0.17883891],[-0.08537872],[0.15237623],[-0.16480568],[-0.032770704],[0.038674396],[0.07090385],[-0.14601162]]},{"dense_3_W":[[0.6690154,0.071317546,-0.10587343,0.4107949,-0.19921759,0.026011487,0.083912425,-0.68911606,0.29841265,0.040238436,-0.19996041,-0.055458866,0.08188202],[0.8015601,0.021846859,-0.5534128,0.6944063,0.11055347,-0.0645739,-0.38998172,0.34884468,-0.06341523,-0.43967232,-0.49337965,-0.21307902,-0.22756565],[0.45879635,0.8307091,-0.22719614,-0.40354267,-0.23650342,0.8461611,-0.037451327,-0.43379617,-0.20254998,-0.5837768,-0.53370506,-0.6808303,0.31557706]],"activation":"identity","dense_3_b":[[-0.057544097],[0.14032708],[0.144235]]},{"dense_4_W":[[0.14295731,0.35312867,0.8483934]],"dense_4_b":[[0.13570417]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33721x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33721x00x00x00x00x00x00'.json deleted file mode 100755 index 8ad70e4908..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33721x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.935237],[1.1821631],[0.40853298],[0.042256694],[1.1741917],[1.1772016],[1.179894],[1.1685648],[1.1510983],[1.1243435],[1.0962706],[0.042120658],[0.042167474],[0.04220416],[0.04219818],[0.042086348],[0.04190632],[0.041555516]],"model_test_loss":0.00865387637168169,"input_size":18,"current_date_and_time":"2023-08-09_04-21-28","input_mean":[[23.898808],[-0.061529078],[-0.0012386319],[-0.0038458514],[-0.05761159],[-0.058545504],[-0.058786135],[-0.0583106],[-0.05796732],[-0.055892948],[-0.055688474],[-0.0037394448],[-0.003766136],[-0.0037952624],[-0.004012165],[-0.0041559814],[-0.004327924],[-0.004494689]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.04631648],[-0.06555636],[-0.27339923],[1.8481191],[-1.92371],[-0.07156656],[-0.097226106]],"dense_1_W":[[0.007923849,-0.33078587,0.032207586,0.18164907,0.23387666,-0.6738162,0.24611568,-0.37660727,0.110470906,-0.2237764,0.11238094,-0.31033733,0.20521657,0.43043175,0.14618683,0.4109157,-0.045097392,-0.018656284],[0.0059264796,-1.4818896,-3.214948,0.72709614,1.4496776,-0.11549172,0.05585469,0.067367174,-0.5819717,-0.3143236,0.77938473,0.07448307,-0.5458307,-0.06897672,-0.307255,0.16108052,0.27242532,-0.31170502],[-0.029176371,-0.20550303,-0.011238303,0.40422836,0.651665,-1.205251,0.51314026,-0.06254734,-0.11725389,-0.004469061,0.057605438,-0.16204368,-0.20271099,-0.023192484,-0.09425388,0.12548377,0.16910473,-0.18110643],[0.913644,-0.22446877,-0.21192145,-0.35401252,0.32936195,-0.61308485,0.41242036,-0.054412857,-0.02144861,-0.7086938,0.46699503,-0.004493464,0.0013601056,0.81566185,-0.3642738,-0.123768955,-0.16624025,0.25355738],[-0.8782031,-0.4412915,-0.21091951,0.22394417,0.46380237,-0.52400494,0.51977473,-0.3934778,-0.035707317,-0.24971296,0.28146827,-0.033155452,-0.19057514,0.6566132,-0.22685449,-0.43057168,-0.40194762,0.46104968],[-0.009924806,0.34001565,0.008358892,0.17911334,-0.2556001,1.0795789,-0.789162,0.09035937,0.12697068,-0.20735092,0.08643546,0.22710793,0.63394094,-0.51461715,-0.55570894,-0.44454226,0.11515733,0.27629676],[-0.010439776,0.4010142,-0.008085905,0.10725627,-0.02110396,1.1806133,-0.8606922,-0.046847433,0.20864236,-0.11985588,0.0857068,0.15260428,0.2444861,-0.03642649,-0.59779644,0.32445312,-0.30190656,0.18685275]],"activation":"σ"},{"dense_2_W":[[-0.52392507,-0.053534046,-0.13596098,0.18724343,-0.7713173,0.71427715,0.7350986],[0.103605255,0.41991144,0.39895838,0.5297367,0.19954357,-0.07358835,-0.3800046],[-0.13534087,-0.07954504,-0.7891074,-1.04155,0.031840924,0.41851434,0.057672217],[0.18972358,0.53236634,0.6439358,0.110999696,-0.29787117,-0.5545026,-0.57896006],[0.46418715,0.073028445,0.16890584,0.31551063,0.44200546,-0.26141322,-0.8365631],[0.12976393,-0.42719504,-0.051802225,-0.9134454,-0.3056411,0.13355789,0.07198249],[-0.63852465,0.2367602,-0.17162862,0.09097974,-0.52287674,-0.110359624,0.25404847],[0.5456408,0.06541811,0.044041876,-0.079029,-0.19681188,-0.21370907,-0.32052663],[0.09726532,-0.21465707,0.609168,0.0588532,0.20782056,-0.029063694,-0.6592013],[0.014375357,-0.883838,0.1768969,-0.9506456,0.25958836,-0.26901084,-0.1747859],[-0.35349178,-0.045510672,-0.17568451,-0.18829311,-0.38173485,0.728441,0.254347],[0.10186036,-0.28966042,-0.20384645,-0.1784742,-0.72974414,0.7239003,0.84594786],[-0.13665237,-0.15572082,-0.23385355,0.24481148,-0.43725377,-0.0049998006,-0.47707897]],"activation":"σ","dense_2_b":[[0.058335815],[-0.08154515],[-0.10210349],[-0.017691245],[-0.09656311],[-0.11049739],[-0.0880714],[-0.0022098408],[0.0071529862],[-0.1155999],[0.015483792],[0.025640251],[-0.042404395]]},{"dense_3_W":[[-0.12712753,0.21623728,0.28793716,0.1288633,0.64396095,0.3019295,0.46078098,0.57720184,0.17094983,-0.29401407,-0.25292718,-0.6778351,-0.41588908],[-0.22999658,0.09658766,-0.6467794,0.43180892,0.09925922,-0.5388918,-0.21273088,0.39167225,0.42423695,-0.09006673,-0.5738687,-0.0685332,0.021032669],[-0.32774815,0.556063,0.13476838,0.33248642,0.581253,-0.13394178,-0.5767492,-0.31769308,0.14392637,-0.24081674,-0.4971341,-0.698404,0.42863867]],"activation":"identity","dense_3_b":[[0.012507354],[0.022687975],[0.023133183]]},{"dense_4_W":[[-0.598664,-0.94400805,-0.8493222]],"dense_4_b":[[-0.019668857]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019.json deleted file mode 100755 index 1f72524957..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.264645],[1.3075382],[0.44552016],[0.05060625],[1.2979935],[1.3015733],[1.3041736],[1.2848994],[1.2584554],[1.2216989],[1.1856711],[0.0503414],[0.050400995],[0.050465323],[0.050478272],[0.050248075],[0.04985913],[0.049460884]],"model_test_loss":0.0099137919023633,"input_size":18,"current_date_and_time":"2023-08-09_02-40-24","input_mean":[[23.043215],[-0.03371662],[0.0018890268],[-0.0067125894],[-0.031319],[-0.031593338],[-0.031663474],[-0.028725801],[-0.027785186],[-0.025144741],[-0.02163734],[-0.0065818275],[-0.0066027185],[-0.0066283992],[-0.0066961027],[-0.0067884526],[-0.006846654],[-0.006944263]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.22580747],[-0.259433],[0.15566492],[0.089529224],[-2.3941963],[1.9521749],[0.06790461]],"dense_1_W":[[0.077735715,0.5491028,0.031780783,0.061651852,-0.069661885,0.5064926,-0.63392377,-0.0062182117,0.39679298,-0.26671922,0.048575882,0.5175869,0.57268655,-0.72039944,-0.31672445,-0.682284,0.17552397,0.30148625],[-0.0033005108,1.3755544,2.9333427,-0.05311045,-1.6043663,0.119831525,-0.5092124,0.2000376,0.7576132,0.73848486,-0.8814628,0.3480808,0.3585077,-0.4351482,-0.43040854,0.005097866,0.15632282,0.105506845],[-0.12613682,0.053123258,-0.011962454,-0.31154743,-0.2879405,0.78129184,-0.3477709,0.11016321,-0.397643,0.29684106,-0.08335899,0.0011086084,0.101133905,0.14986652,0.10471807,0.088165864,-0.22822371,0.123035155],[-0.005890634,-0.5132265,0.02232674,0.038106803,0.26947373,-1.2872188,0.6846012,-0.06600805,0.23923853,-0.29101142,0.04426992,-0.41297558,0.27426517,0.054011345,0.22521552,-0.360118,0.13597938,0.0095917815],[-1.3102455,0.18389338,0.037292566,-0.4504437,-0.38227966,0.32267326,-0.41582158,0.34839186,0.41863716,-0.19948383,0.033166535,0.11101668,-0.17950892,0.03513152,0.5583567,-0.21783155,0.24341545,-0.21313481],[1.28462,-0.29303363,0.03239438,-0.07798496,0.47706926,0.26473632,-0.61586124,-0.015281519,0.34897882,-0.07400412,0.17125309,-0.11961657,-0.23919915,-0.15667392,0.09201665,0.82350713,0.0330319,-0.45983887],[0.008501559,0.4151316,0.24970283,-0.1932585,-0.3999573,0.7981322,0.08446922,0.43549573,0.42775178,-0.35798648,-0.25701943,0.6345054,-0.10344621,-0.4299825,-0.776323,-0.3758547,-0.5269095,0.2744096]],"activation":"σ"},{"dense_2_W":[[-0.42842335,0.05620099,-0.41398174,0.0075187576,-0.65040445,0.043987595,-0.7884258],[-0.21810047,-0.52364224,-0.24926645,1.5748769,-1.0048369,0.6784754,-0.17087893],[-1.0974892,-1.1205297,-0.52288646,-0.4585741,0.8355013,-0.86901873,0.08091025],[0.19924684,-1.6000783,-0.5017675,-0.6335594,0.81060636,-1.6753666,0.0042119725],[-0.6766826,0.035237,-0.5353934,0.8407999,-0.06624779,-0.5392324,-0.3999412],[0.83403057,-0.38959885,0.15132989,-0.74285805,0.81045157,0.045238588,0.057127055],[0.95894325,0.36917272,0.7675816,-0.8249631,-0.34739387,0.8758971,-0.17811485],[0.44207436,-0.13875146,-0.17526102,-0.48803738,0.8165408,-0.08225913,0.5292656],[-0.28129107,0.20525171,-0.7332951,-0.1858197,-1.0882939,-0.50657177,-0.48805308],[-0.7845191,-0.29932752,-0.3210797,0.7842274,0.120213665,-0.36830777,-0.4480391],[-0.4418548,-1.008012,-0.7143584,-0.03555356,0.6086784,-0.7865452,-0.24040942],[-0.14839058,-0.32335532,-0.67143065,0.41939855,-0.535096,-0.68048733,0.21396716],[-0.76420903,0.36155707,-0.16971277,0.82980686,-0.45884535,-0.16401686,-0.6478219]],"activation":"σ","dense_2_b":[[0.12145026],[0.4703432],[-0.17840025],[-0.04283482],[-0.062148705],[-0.016880652],[-0.028769262],[-0.25934026],[-0.3588194],[0.076413475],[-0.092342615],[0.0006822613],[-0.045883182]]},{"dense_3_W":[[-0.45874047,-0.6988261,-0.31221494,-0.6035287,-0.28207257,0.38988772,0.83404875,0.6202294,0.09104912,-0.2267445,-0.38150835,-0.57334363,-0.1794997],[-0.40566936,-0.5168596,-0.5243848,-0.11845207,0.35303384,-0.10472868,0.7140052,0.47152635,0.16413036,0.1380713,-0.43810734,-0.47773978,-0.4005078],[-0.44185263,-0.6747273,0.061594818,-0.0121055255,-0.28526518,0.7952212,0.69975144,-0.06553925,-0.3437621,-0.53210264,-0.114378266,-0.53271616,-0.10757975]],"activation":"identity","dense_3_b":[[0.09586072],[0.047312237],[0.13191016]]},{"dense_4_W":[[0.9993152,0.24272008,0.6070091]],"dense_4_b":[[0.08831376]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53271x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53271x00x00x00x00x00x00'.json deleted file mode 100755 index 2754e4d694..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53271x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.653599],[1.0475699],[0.507353],[0.0511427],[1.0465056],[1.0461539],[1.0466276],[1.0435494],[1.0403829],[1.034095],[1.0267593],[0.05091882],[0.050985433],[0.05104327],[0.051194124],[0.051185224],[0.050950732],[0.0506017]],"model_test_loss":0.002317079808562994,"input_size":18,"current_date_and_time":"2023-08-09_05-35-31","input_mean":[[24.87495],[-0.022877222],[0.03129203],[-0.005471257],[-0.033396523],[-0.030427122],[-0.026651071],[-0.015034059],[-0.0059272125],[0.004262375],[0.010118156],[-0.0058831],[-0.005736906],[-0.005597743],[-0.0052517094],[-0.0050170966],[-0.004636833],[-0.0044273734]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0750014],[-0.69738495],[-0.057568032],[-0.8138096],[0.8422802],[0.00422568],[-0.025037726]],"dense_1_W":[[-0.92567337,-0.4179756,-2.364189,-0.37799117,0.359521,-0.23128231,0.16912965,0.15324992,-0.29314092,0.35514003,0.1113519,0.18702953,-0.22939733,0.39211923,-0.19355458,-0.14666928,0.2541103,-0.015037065],[-0.26681975,0.19461927,-0.02443796,-0.19870783,0.015366757,-0.83895224,0.50951827,-0.046161894,-0.26054674,-0.10241932,0.09262357,0.32455042,-0.35291085,0.4337215,-0.047874916,-0.070374765,-0.19080578,0.16888785],[-0.0450405,0.3024657,-0.020173237,-0.18040816,-0.6210729,0.668985,-0.1294948,0.102294534,0.027441807,0.19392844,-0.15024275,0.2724876,0.30017278,-0.8359932,-0.09295618,0.5128679,-0.025930675,-0.08442807],[-0.9385832,0.38830346,2.4171264,-0.072888754,-0.6450525,-0.0052705472,-0.2073176,0.37481403,0.5322297,-0.016934434,-0.6272646,-0.011407112,0.2999659,-0.056183133,-0.17157498,0.16704822,-0.00995726,-0.016760994],[0.41495678,-0.36016837,-0.044468425,0.699604,0.12629355,-0.9168069,0.42850283,0.077245876,0.3887621,0.0388322,-0.26400945,-0.4751828,-0.018784745,-0.17013955,0.21044336,0.14742237,-0.257179,-0.07762288],[-0.0029706263,-0.27664563,0.20847207,0.26354775,0.20674135,1.0040307,0.04915213,-0.13483308,-0.15825804,-0.057579137,-0.0058719614,0.7015616,0.5505965,-0.08130265,-1.0528653,-0.55547035,-0.94390494,0.61734366],[0.017797226,-0.38827214,0.011275224,0.4138954,0.15614575,-0.6526553,0.3634799,0.23701335,-0.198492,0.14194344,-0.071847096,-0.3582882,-0.39685383,0.5765013,-0.12813473,0.23526756,-0.30017313,0.05643834]],"activation":"σ"},{"dense_2_W":[[0.11522227,-0.50041586,0.7625706,0.12953083,-0.84721595,0.26854208,-0.78707874],[-0.26998946,0.9135468,-0.5267852,-0.47694728,0.26567996,-0.4057614,0.44248503],[0.3397881,0.241825,-0.22745344,-0.43884552,-0.31017342,-0.48791227,0.624083],[-0.23961566,-0.61447287,0.7523344,-0.1524797,-0.034522954,0.80298376,-0.74258584],[-0.20403866,-0.45207465,0.2864171,0.585039,-0.43790713,0.049314383,-0.691187],[-0.37280735,-0.9096017,0.79407877,0.06587302,0.13932212,0.7276438,-0.16217615],[0.042196184,0.80028385,-0.6367271,-0.046625376,0.25419405,-0.8610059,0.36960703],[0.09347458,0.43240634,-0.8759679,0.1721286,0.5472644,-0.0896131,0.6584737],[0.34702182,-0.17617214,-0.37235767,-0.0058014165,0.6870974,-0.38691258,0.28578055],[0.027087606,-0.38712898,-0.5076633,-0.047688764,0.16426884,-0.32992855,-0.16210902],[0.05157716,-0.47973877,0.12872508,0.22652198,0.093843356,0.47721627,-0.70800775],[0.13196792,0.70168835,-0.728704,-0.507929,-0.3850781,-0.2150298,0.13088666],[-0.12113243,-0.341827,0.24893352,-0.064033784,-0.024845326,-0.21256083,-0.37305534]],"activation":"σ","dense_2_b":[[-0.040676095],[-0.04934049],[-0.13523409],[0.032700114],[0.04797525],[0.012522698],[-0.053262446],[-0.14503641],[-0.07796666],[-0.3327117],[-0.06517155],[-0.29661015],[-0.043684535]]},{"dense_3_W":[[-0.39554232,0.50275403,0.46011072,-0.26603845,-0.6258986,-0.18898715,0.350607,0.6611593,0.36714667,-0.03429704,-0.38445738,-0.42724767,-0.415385],[-0.12109516,-0.0026784122,-0.33396584,-0.4921449,0.025638519,-0.26242292,0.57392186,0.6282738,-0.31419235,-0.15783457,0.29055953,-0.11300429,-0.31670427],[-0.27667677,0.12075474,-0.13275498,-0.71421945,-0.30053577,-0.46803996,0.68881786,0.33228284,0.24152169,0.09559637,-0.0023924343,0.56565654,0.16803065]],"activation":"identity","dense_3_b":[[-0.027746597],[0.20316003],[-0.029442076]]},{"dense_4_W":[[-0.45957002,-0.04833828,-0.58646995]],"dense_4_b":[[0.02725393]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53280x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53280x00x00x00x00x00x00'.json deleted file mode 100755 index a54f55a3cc..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53280x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5803027],[0.8603793],[0.4513569],[0.029105911],[0.8487619],[0.8510528],[0.8550627],[0.8484798],[0.83925754],[0.832451],[0.8223531],[0.028991073],[0.02902925],[0.029061288],[0.029074881],[0.02896926],[0.028916502],[0.02890444]],"model_test_loss":0.0030515140388160944,"input_size":18,"current_date_and_time":"2023-08-09_06-00-13","input_mean":[[30.979578],[0.022293376],[0.02019513],[0.016653037],[0.016664432],[0.017896485],[0.020654846],[0.027760973],[0.031163529],[0.030931678],[0.0288627],[0.01662461],[0.016658263],[0.016681287],[0.01674288],[0.016692968],[0.016676333],[0.016725713]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.024255],[-0.25703537],[0.066896215],[-0.077876054],[-1.1755685],[0.053735092],[-1.813157]],"dense_1_W":[[-0.27897373,0.6238509,-0.20489661,0.1433003,-0.44274482,-0.46238834,0.08278444,-0.12610668,-0.28404528,-0.08119373,0.11206268,-0.011977598,-0.08802816,0.35872343,-0.44637114,0.09940686,-0.098998114,0.087747104],[-0.077062964,0.3174407,0.08627412,-0.2621875,-0.39889467,0.75071305,-0.02536695,-0.11606417,-0.44491976,0.27360457,0.01498593,0.5227387,0.3463404,-0.38459015,-0.5227802,0.03605743,0.0087138405,0.20318434],[-0.04407056,0.6402981,2.5346818,-0.0052747075,-0.51173216,0.33047506,-0.53520495,0.59467864,-0.2947999,-0.36928508,-0.72547835,0.23617381,0.28750753,-0.41744986,0.010572497,0.10425088,0.1149194,-0.28841314],[-0.0036573706,0.22945316,-0.0073808106,0.06309982,-0.40813765,1.0437207,-0.39680403,-0.092092186,0.14273745,-0.1925738,0.11202375,0.5490815,0.34099597,-0.39302826,-0.64261353,-0.06269388,-0.08197236,0.13292448],[-0.42824522,-0.25304925,-0.16903412,-0.23054327,0.46596405,-0.5538919,0.0059226677,-0.4401322,0.076376624,0.08189739,0.06873566,-0.26616675,-0.16517103,0.4085307,0.3613046,0.17234507,-0.08328618,-0.148345],[0.011475744,-0.28661492,0.033517,-0.1035912,0.32961515,-0.2715907,-0.105986364,0.09126555,-0.22195859,-0.2122366,0.19187194,0.29742795,-0.20964493,0.0700461,0.13138907,-0.2559807,0.38601238,-0.18372318],[-0.5847607,0.0017109648,0.25774232,-0.2373588,-0.2924784,0.9778526,-0.45161787,0.49743965,0.23385304,0.0501783,-0.2576654,0.08772852,0.2509274,-0.3904387,-0.055983637,0.24153244,0.21497074,-0.16889808]],"activation":"σ"},{"dense_2_W":[[0.2696645,0.09097578,0.2661085,0.008203172,0.58712953,0.008232839,-0.38130957],[-0.44034633,0.2513559,0.05034199,-0.7566649,-0.5055022,0.28274307,-0.18962547],[0.35309595,-0.52410984,-0.2166621,-0.51837164,0.51281035,0.6052604,-0.13995785],[-0.37981346,0.28354916,-0.22428422,0.09537504,-0.6703727,0.09452615,0.34979334],[-0.1286504,0.4058662,0.06990852,0.2916711,-0.2246424,-0.031917993,0.05038822],[0.11269455,0.27946022,-0.013186193,0.57915336,-0.779333,0.11132818,-0.08520752],[-0.5124887,-0.39176804,0.32016045,0.38343418,0.072306104,-0.21488254,0.15051393],[-0.25066197,-0.099142715,0.3025643,0.1498029,-0.22075655,0.08285247,0.16742654],[-0.0027565423,-0.54777265,-0.33877024,-0.45952037,-0.17979734,-0.24340412,-0.24863824],[-0.39911193,0.0050099217,-0.21278913,0.64141303,0.24979603,-0.12581906,0.60516745],[-0.1935344,-0.11531806,-0.5091185,0.23634945,0.17247137,0.32147193,-0.16084859],[-0.118722916,0.26619238,-0.45988715,0.38617563,0.24613833,0.50531286,-0.6070944],[-0.31973958,0.569741,0.28206736,0.307348,-0.2108575,-0.49773324,-0.17307866]],"activation":"σ","dense_2_b":[[-0.0266998],[-0.030578468],[0.010926638],[-0.12699191],[-0.18184385],[-0.09752178],[-0.01733428],[-0.027403263],[0.02766463],[-0.06362805],[0.004015615],[-0.04242502],[-0.022493202]]},{"dense_3_W":[[-0.12600064,-0.633004,0.16414349,-0.04648247,-0.20951967,-0.12900907,0.45063862,0.103525355,-0.68074024,0.55499035,0.41209528,-0.42067012,0.39265448],[0.3260821,0.57643926,0.61910576,-9.839889e-6,-0.01744337,-0.48366365,0.29486895,0.09513366,0.1914889,-0.5954007,0.3020512,-0.16881369,-0.49208182],[0.10530183,0.49050504,-0.5989605,0.26496586,0.1901535,-0.4129085,0.31638667,0.10397078,-0.11685577,0.56756043,-0.17770557,-0.29197764,0.2562083]],"activation":"identity","dense_3_b":[[-0.123790324],[0.014918573],[-0.018756263]]},{"dense_4_W":[[0.02038734,-1.2047465,0.8046749]],"dense_4_b":[[-0.016778698]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53281x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53281x00x00x00x00x00x00'.json deleted file mode 100755 index c94650159d..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53281x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.684907],[0.9460035],[0.33342025],[0.043801006],[0.943236],[0.9438911],[0.9439055],[0.9338765],[0.9230702],[0.90794885],[0.8921319],[0.04381569],[0.043804597],[0.043778293],[0.04356958],[0.043327603],[0.042924862],[0.042455677]],"model_test_loss":0.00282586133107543,"input_size":18,"current_date_and_time":"2023-08-09_06-25-49","input_mean":[[29.41278],[-0.009032724],[-0.0021492816],[0.004332889],[-0.00860808],[-0.00887388],[-0.010132152],[-0.0102206785],[-0.00937236],[-0.0074595967],[-0.005152443],[0.004347949],[0.004330746],[0.0043104156],[0.0040981416],[0.0039356602],[0.0037958957],[0.0036709488]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.09501388],[0.8404856],[0.7934484],[-0.066568784],[-0.31608787],[-0.109698914],[-0.12751737]],"dense_1_W":[[0.0011169801,-0.018726321,0.0015862584,0.17112947,-0.5446971,0.5853068,-0.3039678,0.4737596,0.21017975,-0.23414794,-0.07348194,0.98195386,-0.14195174,-0.10654367,-0.34493265,0.20805775,-0.4868443,-0.23417883],[0.9548257,-0.46348402,-0.29633194,0.18528488,0.40596813,-0.824306,0.30642077,-0.007846376,0.033617396,-0.23929001,0.1453222,-0.35812417,-0.22854868,0.39195415,0.49922717,0.7028648,0.50149786,-0.86416316],[0.97592115,0.007649104,0.3003986,-0.33777642,-0.13973069,0.46592122,0.03299811,0.19446975,0.067927755,0.1478205,-0.13307863,-0.11891002,-0.47453943,-0.19565998,0.54486775,-0.04400889,-0.35464677,0.13683307],[0.0047029937,0.14668527,-0.005069146,0.24684682,-0.614384,1.0910827,-0.094034076,-0.19462726,0.28000307,-0.42661187,0.2321289,-0.064942434,-0.42558447,-0.39662802,-1.0747879,0.06939005,0.2870679,1.3147138],[0.016900972,0.39719796,-0.0023543735,-0.0913586,-0.27493247,0.90382856,-0.43656674,0.011338879,-0.26157647,0.2745171,-0.04499426,0.9156245,0.18295021,-0.9320426,-0.07365104,-0.19892058,0.16344132,-0.0042856243],[-0.011051511,-0.78559583,-3.1862526,-0.13295761,0.65890294,-0.68599087,-0.12433693,0.08657334,-0.41985497,0.47015917,0.5829991,-0.71003574,-0.34596688,-0.17925437,0.41965798,0.31952843,0.61812705,0.09319992],[0.014576556,-0.18765137,-0.001399782,-0.12696555,0.0890215,-0.64548665,0.17923205,0.14201109,-0.30869052,0.19999632,-0.092428885,-0.6353419,0.07439351,0.80051905,0.04906582,-0.1398521,-0.2728979,0.2945558]],"activation":"σ"},{"dense_2_W":[[-0.6210588,0.45552707,-0.25218815,-0.17052735,-0.28304043,-0.3500373,0.014205802],[0.33707482,-1.3240942,-0.6408793,0.8307369,-0.10797842,-1.2964274,-1.3836163],[-0.33217075,-0.43026388,-0.12341792,-0.41299066,0.2880537,0.083734885,0.1641773],[0.35629743,-0.4401899,0.1567848,0.30102292,1.318357,0.048755936,-1.2286369],[-0.12527834,-0.23215155,0.56640136,0.3483607,0.8943009,-0.039557446,-0.9478881],[-0.57511246,-0.2275013,0.23487775,0.46695858,0.37859124,-0.17711872,0.26375052],[0.63963145,-0.45322925,-0.54017925,-0.3060082,0.12730126,-0.6374732,-0.018194102],[-0.5951409,-0.08423941,-0.0051530325,-0.53952223,-0.6064661,0.23082048,0.39190525],[-0.3667256,0.008534655,0.4268871,0.34291455,-0.6101535,0.21997947,0.25764218],[-0.11584076,0.5873763,-0.63031334,0.2047302,-0.08922794,-0.18342617,0.6476465],[0.07069251,-0.45771497,0.12435426,0.04750334,1.8602587,0.24760254,-1.2554413],[0.33669302,0.4188555,-0.46464103,-0.048415337,0.05759297,0.3541,-0.13896422],[0.511148,0.23681977,0.36551967,0.35152832,0.792135,-0.31216228,-0.83162516]],"activation":"σ","dense_2_b":[[0.08171513],[-0.1163031],[-0.0041464856],[-0.21284437],[-0.06291548],[-0.047316123],[-0.13749899],[0.047459695],[-0.03701015],[0.045251872],[-0.29556692],[-0.00961862],[-0.029000068]]},{"dense_3_W":[[0.12327876,-0.048812684,0.6152893,0.21222751,0.18817006,-0.3728164,0.270455,0.4454563,-0.11968707,0.59693485,-0.06342227,0.34730113,-0.57901394],[-0.4065829,-0.04221764,0.020975756,0.42464995,0.34640458,0.4587765,0.20783032,-0.86228454,-0.72097176,0.101609,0.16048418,0.48934665,0.49102414],[-0.29578757,0.22049302,-0.14916682,0.33021316,0.40887907,-0.35374218,0.4427254,-0.24567138,0.15444578,-0.63093376,0.25220618,-0.3500056,0.50111896]],"activation":"identity","dense_3_b":[[0.016075611],[-0.12729394],[-0.029249111]]},{"dense_4_W":[[-0.2641593,0.3333745,0.8707298]],"dense_4_b":[[-0.031108981]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78060x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78060x00x00x00x00x00x00'.json deleted file mode 100755 index 4f170fb088..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78060x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5523615],[0.9379796],[0.45997825],[0.04207175],[0.93919086],[0.93780416],[0.93652314],[0.91719604],[0.9034866],[0.88726455],[0.87291807],[0.041934993],[0.04192026],[0.04190248],[0.04164398],[0.04141029],[0.04100794],[0.040568497]],"model_test_loss":0.009954309090971947,"input_size":18,"current_date_and_time":"2023-08-09_07-16-58","input_mean":[[23.397924],[-0.035182085],[-0.008444157],[-0.009997125],[-0.033629764],[-0.035007965],[-0.036390144],[-0.03466254],[-0.03890593],[-0.043926965],[-0.046389326],[-0.0101134945],[-0.010121674],[-0.010125806],[-0.010022554],[-0.010067445],[-0.01014944],[-0.01027719]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.11680644],[-0.051436793],[0.113495305],[-0.01763076],[-0.2807573],[-0.120603226],[-0.2764257]],"dense_1_W":[[-0.0065118936,0.56794316,-0.032589998,-0.50918645,-0.060956616,0.9810513,-0.4785043,-0.008406265,-0.25840858,-0.030046064,0.2434936,0.28673422,0.075997785,-0.024465384,0.08006076,0.0716426,0.28245556,-0.24962135],[-0.023541331,0.8734935,5.699426,0.19145805,-0.5681911,0.014759005,-0.56469446,0.1186507,1.0214005,0.043286715,-0.4702243,1.222705,0.19846615,-0.15771359,-0.5883803,-0.39430845,-1.0096143,0.27339858],[0.45483243,-0.49536738,0.072315626,-0.011725951,0.086452276,-0.66168356,0.45572364,-0.23768657,-0.18117812,0.05266754,-0.04890949,-0.38048756,0.16300593,0.13775355,-0.15970619,-0.3038916,0.6219313,0.1968499],[0.0054552057,-0.093241274,-0.34040582,0.12216264,0.037718106,-0.46982464,1.1711069,-0.35518944,-0.51062614,-0.24715386,0.38451096,-0.40132213,-0.30608684,0.052601833,0.74853015,0.23053922,-0.2007082,-0.23960419],[-0.8520971,0.24116111,-0.089963615,0.15706292,0.20338425,-0.37373862,0.75903034,0.090791985,0.17018794,0.37343842,-0.17452653,-0.66951627,0.18461663,0.5859271,0.29183576,-0.0037389225,-0.4057764,-0.47674724],[0.012710134,0.435232,0.03543807,-0.036046702,-0.75405264,1.3212848,-0.5093719,-0.08682382,0.04233904,0.07034154,-0.097755805,0.7234229,-0.13957694,-0.57484436,-0.054068033,0.07991787,-0.05443112,0.05077546],[0.0065418757,-0.6116693,0.025854474,-0.16136944,-0.16720891,-1.043264,0.4933813,0.224038,-0.3168288,-0.026011353,-0.05957108,0.23472212,0.37794927,0.2708049,0.15880762,0.61977124,0.012229787,-0.19856346]],"activation":"σ"},{"dense_2_W":[[0.03146408,-0.13779452,0.75000536,-0.11498503,0.039698552,-0.40190673,0.7709186],[0.37171277,0.22650109,-0.19030742,-0.073141806,-0.20702402,0.33066395,-0.45444292],[-1.1190504,0.69764763,0.5377285,0.8013254,-0.18115376,-1.2980549,0.25413626],[0.5416716,-0.31991583,0.14092752,-0.44703355,-0.55331653,0.51895857,-0.710503],[0.49094778,0.14815535,-0.32600418,-0.63197994,-0.5370441,-0.083100855,-0.49352166],[-0.23559721,-0.54140323,0.78799313,0.8764922,0.39852077,-0.28144458,-0.1821518],[0.1500585,-0.32034987,-0.84529537,-0.41722593,-0.05029655,0.6604846,0.10658351],[-0.42256495,-0.089720786,0.876472,-0.08991852,0.4667296,-0.97803175,0.5145723],[-0.27449653,-0.47807348,0.61057085,0.6598581,0.28521484,-0.8254127,0.06432298],[-0.382518,-0.21356484,0.25773606,0.5809972,-0.015983999,-0.84368616,0.5800405],[0.5958008,0.37813,-0.42608508,-0.27179977,-0.4507597,0.28317532,-0.16438048],[-1.1322341,-0.49540442,0.17639433,0.08400206,0.59758526,-1.2232964,0.34022707],[0.018905511,0.3392843,-0.59598386,-0.44822788,-0.29109383,0.74419224,0.015790993]],"activation":"σ","dense_2_b":[[-0.025122445],[-0.08817167],[-0.18689576],[-0.15509543],[0.008846949],[-0.18207294],[-0.09901433],[-0.17813578],[-0.14573547],[-0.19155172],[-0.052382644],[-0.32253534],[-0.07473206]]},{"dense_3_W":[[-0.68304485,0.5767948,-0.17764251,0.33225822,0.2699078,-0.49734563,0.49882662,0.18162656,-0.21204075,0.08684376,0.52946407,-0.059715066,0.45340413],[-0.07762768,-0.11692675,0.5170938,0.048767503,-0.60837173,-0.004813306,0.16917212,0.70467114,-0.026616994,0.24883772,-0.50158614,0.36716226,-0.30068868],[0.10084016,-0.039664295,-0.31447792,-0.15362875,0.42048535,-0.38715878,0.07678511,-0.1563305,0.6452277,0.7573569,-0.5292506,0.28040695,-0.584425]],"activation":"identity","dense_3_b":[[-0.06316189],[0.050863322],[0.07035302]]},{"dense_4_W":[[0.79278344,-0.8832224,-0.20445246]],"dense_4_b":[[-0.054674253]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78080x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78080x00x00x00x00x00x00'.json deleted file mode 100755 index 309a6385f1..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78080x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.7839713],[1.01453],[0.37487027],[0.036252256],[1.0074129],[1.0092586],[1.0114115],[1.0015283],[0.98707575],[0.9704761],[0.950582],[0.036038164],[0.036066703],[0.036101792],[0.036004264],[0.03577164],[0.03552027],[0.035136368]],"model_test_loss":0.005577164702117443,"input_size":18,"current_date_and_time":"2023-08-09_07-41-58","input_mean":[[26.561443],[-0.023815667],[0.010739189],[-0.013143686],[-0.026596677],[-0.024625478],[-0.023937158],[-0.020562654],[-0.018135259],[-0.018355336],[-0.021212468],[-0.013303214],[-0.013247967],[-0.013189033],[-0.013033623],[-0.012982845],[-0.012978024],[-0.0131039135]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.13472757],[-0.15373966],[-0.7054918],[0.0122620305],[-0.012871696],[-0.6218862],[0.036611043]],"dense_1_W":[[0.0034895893,-0.47329506,0.048285536,-0.074473254,0.3115557,-0.3702869,-0.22337489,-0.13975431,0.07517197,-0.24788152,0.01133247,0.096064724,0.07818763,0.2744151,0.1163445,0.08449597,0.11816498,-0.26796773],[-0.004053826,-0.2886099,0.007515931,-0.025261926,0.32493144,-0.54980326,-0.07815613,0.15308669,0.061913893,-0.0115428185,-0.104860805,-0.057970896,-0.102305494,0.38515946,-0.1713107,-0.03404761,-0.03721952,0.12314234],[0.32897007,0.02719031,0.006045787,-0.08623162,0.13007438,-0.5118012,0.48433113,-0.41582802,-0.120004706,-0.059094574,0.19850364,-0.72324777,0.09925934,0.13738394,0.55857325,-0.26578882,0.49354708,-0.24867299],[-0.0038880499,0.5191673,0.03414573,-0.25369272,-0.09369488,0.24986927,-0.44367638,0.24794495,0.10878251,-0.20875268,-0.00077913585,-0.00861606,0.2156449,0.116771065,-0.34864375,-0.025460653,0.20020796,0.0094880555],[0.03297434,0.026964193,-0.0009992104,0.16138399,0.23900521,-0.6232881,0.46326053,-0.27336964,0.074755706,-0.32827288,0.19562325,-0.47716168,-0.28450158,0.20518361,0.31182727,0.0014464655,0.114448994,-0.046351667],[0.29541498,-0.29648054,-0.00310848,0.52299774,-0.23534268,0.5741889,-0.123190366,0.26139322,0.10665974,0.1556051,-0.21010089,0.54775834,-0.3700308,-0.11212184,-0.4132441,-0.10879409,-0.008064727,-0.016256012],[0.0030948827,0.79608256,2.278605,0.073915124,-0.66955596,0.36016646,-0.2946711,-0.103818454,0.2748215,-0.3307413,-0.17108576,0.1856803,-0.14653331,-0.020247102,-0.4317631,0.20638601,0.020172743,0.16087113]],"activation":"σ"},{"dense_2_W":[[0.2784572,0.69297725,0.057563815,-0.71975124,0.6817395,0.30981833,-0.65247726],[0.49075776,0.42235997,-0.52229685,-0.7887346,0.51224124,-0.8081051,-0.5901962],[-0.5116851,-0.43084118,-0.255523,0.55842716,-0.73646706,-0.16906197,0.2810972],[0.4290504,0.11835542,0.09274147,-0.1294142,0.1156738,-0.5795711,-0.5911007],[0.52670825,0.17968906,0.5746221,-0.73111415,0.027278474,-0.71742743,0.10865298],[-0.63077503,-0.62192583,0.07450403,0.5630963,-0.4184549,0.6239278,-0.24081348],[-0.18570104,-0.09546027,-0.23013546,0.7691375,-0.7116309,0.59218144,0.51251227],[0.43361178,0.27859798,0.024286874,-0.40649956,0.13969101,-0.1732319,-0.20539345],[-0.31913874,-0.5736788,-1.0150186,0.61656374,-0.11421175,-0.05631541,0.41142127],[0.14283133,0.002449735,0.32700986,-1.0358429,0.54168445,-0.84849554,0.20175509],[-0.09336197,0.516962,0.6102334,-0.6526487,0.6995893,-0.43362787,-0.16046062],[-0.44804078,-0.5110132,-0.7325886,0.0035943415,-0.2756613,-0.2935251,0.20282711],[-0.086241946,-0.7803644,-0.51779443,0.59950584,-0.25105664,0.49625984,-0.13718586]],"activation":"σ","dense_2_b":[[-0.046400562],[-0.2743444],[0.101535104],[-0.12776503],[-0.18889363],[0.18883984],[-0.035363212],[-0.32065263],[-0.1838859],[-0.17174399],[-0.12857278],[-0.15375665],[0.13183501]]},{"dense_3_W":[[-0.51021737,-0.011125954,0.22268747,0.62723666,0.5020427,0.2123506,-0.44933605,-0.49467763,0.67046887,-0.21754947,-0.15336846,-0.4072764,0.040200777],[-0.64956605,-0.24969986,0.34987608,-0.56477535,-0.3730418,0.5834431,0.3829126,-0.09269529,0.22655901,-0.17133151,-0.56455123,0.23502398,0.81564665],[0.35202488,0.2378389,-0.59673995,-0.6565647,0.26492116,-0.07214567,0.33713487,-0.1934846,0.13139229,0.6117809,-0.5184132,0.45279473,0.10368968]],"activation":"identity","dense_3_b":[[0.071363665],[0.0600199],[-0.092375375]]},{"dense_4_W":[[0.006432696,1.1171645,-0.07490736]],"dense_4_b":[[0.05727158]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2020 b'8965B78120x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX 2020 b'8965B78120x00x00x00x00x00x00'.json deleted file mode 100755 index bf661cf881..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX 2020 b'8965B78120x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.146646],[1.0861496],[0.37736702],[0.041793752],[1.0729182],[1.0773717],[1.0815437],[1.0802093],[1.0698869],[1.0521225],[1.033094],[0.041741546],[0.04175913],[0.04176615],[0.04171372],[0.041648354],[0.041466083],[0.041214902]],"model_test_loss":0.007158362772315741,"input_size":18,"current_date_and_time":"2023-08-09_08-32-56","input_mean":[[24.87129],[0.0040199133],[-0.012174124],[-0.007803845],[0.008421226],[0.007382176],[0.0064237905],[0.0022175014],[0.0023437915],[0.00084140577],[0.0007466427],[-0.0077374396],[-0.0077325962],[-0.0077279285],[-0.0077621834],[-0.0077370647],[-0.0077854996],[-0.00790058]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.02440857],[0.30775324],[-0.38804558],[1.3022306],[-0.083552],[0.017909346],[1.0338217]],"dense_1_W":[[-0.018503293,-0.58764344,0.02424212,0.29838094,0.07453753,-0.31939444,0.71456915,-0.57316875,0.28442377,0.045891594,-0.09102808,-0.3166445,-0.21457,0.15771346,0.21041498,0.014606669,0.09654,-0.20440961],[0.11308228,0.36093086,0.0081503345,-0.15093833,-0.40928927,0.5281348,-0.3136049,-0.01366254,0.32156047,-0.01478815,-0.09433961,0.0589882,0.46570504,-0.08343458,-0.4513174,-0.23909375,0.32555535,0.03498277],[0.012934308,-0.807455,-5.4857802,-0.22414753,0.739661,0.35657424,0.100581415,-0.54639435,-0.54661614,-0.44405246,1.0174531,-0.23915811,0.018980676,0.3152944,0.16779307,0.06588091,-0.15882106,0.0069539533],[0.43364748,0.21731022,0.1509351,0.24937709,-0.266339,0.93301386,-0.77076274,0.03864835,0.16453606,-0.049564537,0.042268448,0.26538175,-0.3747379,-0.26633552,-0.1627539,0.4571696,-0.15453127,-0.052892048],[0.003844223,-0.30206564,0.007838732,0.44173336,0.16904438,-0.8539721,0.24912493,0.23093201,-0.30098426,-0.053782903,0.19755876,-0.8577459,0.08343516,0.19395697,0.13223626,0.15016438,-0.1095013,0.23785642],[0.13072594,-0.5031704,-0.008023158,-0.082815915,0.23274036,-0.3975246,0.06762822,0.28228945,-0.088360794,0.13266067,-0.15510467,0.14137018,-0.36540613,0.122993015,0.1820403,0.043875482,0.1807256,-0.17738947],[0.4567794,-0.4016854,-0.14515655,0.11580799,0.37104917,-0.80235296,0.84958047,-0.40907645,0.22014396,-0.29004142,0.14125343,-0.4521938,0.25444683,0.05556736,0.05717658,-0.0057016616,0.2562742,-0.2375869]],"activation":"σ"},{"dense_2_W":[[-0.48313946,-0.39628115,-0.11249228,0.2369702,-0.95594436,-0.016989736,-0.24979061],[-0.04802805,0.23703022,-0.2522654,0.8781721,-0.27487224,-0.32336324,-0.84614146],[-0.75498384,-0.02555702,-0.26924992,0.3685581,0.17157069,-1.1919085,-1.3296491],[0.24518122,-0.41801304,-1.3408265,-0.3844284,-0.43864518,-0.68599224,-1.1400452],[-0.7564912,0.5270413,0.5286734,0.07109369,-0.96531475,-0.43521672,-0.09374951],[-0.84034276,0.22120611,-0.4787729,-0.106007226,-0.423205,-0.35648152,-0.9256408],[0.12945794,-0.29220057,-0.1778261,-0.2368211,0.97371066,0.4675753,-0.24584447],[-0.3716841,0.90940213,0.02815187,0.45479253,-0.27149537,-0.50198483,-0.22473548],[-0.66260093,0.75476915,-0.03105298,0.57964265,-0.81710166,-0.061508402,0.17633282],[1.0140518,-0.72448766,-2.0274432,-0.70543754,0.20180465,-0.8068022,-1.4245642],[0.7672933,-0.52256364,0.1798329,-0.08854827,0.09783098,0.5402585,0.5772625],[0.6664194,-0.0006749223,-0.30461577,-1.0251858,0.48331183,-0.11165713,0.72331625],[0.94857574,-1.0158324,0.27272424,-1.608812,0.12564772,0.20672992,-0.026206829]],"activation":"σ","dense_2_b":[[-0.21546994],[0.036408603],[-0.099371314],[-0.22597122],[-0.15818553],[-0.13797529],[-0.049458597],[0.04860044],[0.277023],[0.074395016],[-0.16951285],[-0.06529862],[-0.2778253]]},{"dense_3_W":[[-0.18387982,0.8886978,0.66043097,0.7504068,0.36590803,0.12719806,-0.71894497,0.5354477,0.77389723,0.69074714,-0.70785916,-0.18604858,-0.7207551],[0.33382007,0.50233775,0.79906523,-0.17690791,0.2123564,0.48021612,-0.28027645,0.6302492,0.70902044,0.4347561,-0.8021013,-0.728156,-0.61748165],[-0.5456827,-0.0074385586,0.27454564,0.19413206,0.2291002,0.30727038,-0.49753815,0.2708291,-0.55447114,0.14861229,0.24177633,0.45634028,-0.15501119]],"activation":"identity","dense_3_b":[[-0.20096046],[-0.16594656],[0.02119976]]},{"dense_4_W":[[0.65935874,0.49205348,0.008652598]],"dense_4_b":[[-0.14721861]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78060x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78060x00x00x00x00x00x00'.json deleted file mode 100755 index 43c8600aff..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78060x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.571262],[0.9866572],[0.44786832],[0.030994067],[0.98464835],[0.98554516],[0.9865821],[0.96593],[0.9504797],[0.92728204],[0.904809],[0.03096524],[0.030987293],[0.03100753],[0.030929225],[0.030893764],[0.030828128],[0.030683307]],"model_test_loss":0.007625925354659557,"input_size":18,"current_date_and_time":"2023-08-09_09-24-50","input_mean":[[21.981443],[-0.03410452],[-0.0042907107],[-0.010875239],[-0.034431927],[-0.034863934],[-0.034671817],[-0.035121698],[-0.034416344],[-0.033750016],[-0.03282395],[-0.011034662],[-0.010998612],[-0.01096597],[-0.01084258],[-0.010833595],[-0.010883476],[-0.010945559]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.75581545],[0.11879905],[-0.6501629],[-0.022731934],[-0.0029385677],[0.26847437],[-0.0017951597]],"dense_1_W":[[0.2516616,0.39057118,0.00022413803,0.063490085,-0.42193273,1.2512321,-0.600658,-0.10923261,0.31011167,-0.16468239,0.044944312,-0.11299465,0.09586187,-0.100811586,0.20447883,-0.23340297,0.096681945,-0.039790932],[0.021704927,-0.20683353,-0.03011313,-0.15637654,0.15294304,-0.49757507,0.28674713,-0.023688028,-0.3239314,0.10428786,0.053708497,-0.42767534,-0.24340263,0.6549382,0.066411644,0.34770808,0.13055065,-0.306452],[-0.22692491,0.3703906,-0.0047728727,-0.3158897,-0.3546027,0.7207767,-0.24876097,0.27380067,-0.24621023,0.24137513,-0.1049461,-0.13480167,0.72030693,-0.4477213,-0.017713917,0.39679456,-0.254984,0.04286245],[1.057311,0.04657839,-0.056031335,-0.098100096,0.04250412,-0.36376515,0.7487397,0.15540043,0.18684135,-0.09664429,-0.05738495,-0.17933905,0.3892038,-0.05849292,0.41884843,-0.11726217,-0.16056898,0.086423434],[-0.012506045,-0.59728193,0.045439012,0.2765916,-0.23399554,-0.46535358,0.2761762,-0.1671016,0.07206194,0.28501,-0.26103756,-0.21281493,-0.080912635,0.2563691,-0.07951293,-0.12668297,-0.11916628,0.13779652],[1.0182611,0.027373608,0.05301419,-0.2813371,-0.39408943,0.3335591,-0.24602611,-0.68556553,0.085850835,0.47405693,-0.23440285,0.4555455,0.31906822,-0.8772108,-0.119383216,0.02932853,0.36750838,-0.16070719],[-0.004662744,-1.1186787,-3.4395354,0.24383633,0.50660896,0.01470808,0.7312308,0.3490615,-0.53634375,-0.56201684,0.45341375,-0.64736515,-0.83393633,0.5130379,0.6360629,-0.013693679,0.14626765,-0.010980777]],"activation":"σ"},{"dense_2_W":[[-0.9355151,-0.023498436,-0.7968888,0.31088433,0.7671889,-0.9731516,0.41286936],[0.52685624,-0.8809834,0.80358076,-0.8165037,-0.896308,0.29132918,0.23919983],[-0.46378753,0.1493763,-0.8195766,-0.80706054,0.2181272,0.08533837,-0.47286823],[-0.929153,0.6981678,-0.7250342,-0.21020086,0.57452005,-0.7235436,0.05653503],[0.18721063,-0.921323,0.9797812,-0.8922341,-0.38992167,-0.42454776,-0.8229087],[-0.80549794,0.48562962,-0.67541397,0.33862114,0.67381793,-0.24850826,-0.030231507],[-1.2585708,1.0969089,-0.8206399,0.19675127,0.14951561,-1.1598734,0.3381644],[0.1852816,-1.1352712,0.8965919,-0.97538066,-0.94872093,0.31611708,-0.38623008],[0.17095518,-0.9345781,0.8144248,-0.068343334,-1.051506,-0.70048666,0.13564703],[0.7746455,-0.26728967,0.53744304,-0.11955244,-0.53616977,0.46801162,-0.38597685],[-1.4234841,0.045931406,-0.7355768,-0.37909967,0.10869067,-0.44514802,0.63276064],[-0.9319143,0.24633782,-0.652142,0.048897915,0.03313439,-0.6740785,0.42693377],[-0.13351214,-1.0613108,-1.04803,-0.58857614,-0.7700214,-0.926666,-0.035181627]],"activation":"σ","dense_2_b":[[-0.3801605],[-0.13295135],[-0.39476892],[-0.17900646],[-0.10525445],[-0.27975556],[-0.22018868],[-0.02276822],[-0.21814801],[-0.048818234],[-0.32378197],[-0.34881616],[-0.5472454]]},{"dense_3_W":[[0.15212612,-0.7641529,0.084815554,0.03359007,-0.21354504,0.12747967,0.4120128,-0.21778765,-0.04332278,0.13283496,-0.25436175,0.38143668,-0.021156475],[-0.29871544,0.06072304,-0.18974409,-0.787422,0.5630134,-0.3311209,-0.38903987,0.6408349,0.36237547,0.66097933,-0.5393427,0.12618305,-0.01849426],[-0.27246246,0.47302738,0.31806195,-0.094901696,0.6957061,-0.47511533,-0.95053864,1.0960633,0.36602244,-0.18240735,-0.64022654,-0.38033855,0.034928925]],"activation":"identity","dense_3_b":[[0.04440576],[-0.04094681],[0.07032833]]},{"dense_4_W":[[-0.38054875,0.8218665,0.48242453]],"dense_4_b":[[-0.029091563]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78080x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78080x00x00x00x00x00x00'.json deleted file mode 100755 index 0d1263e2f9..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78080x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.765739],[0.94667494],[0.3616158],[0.03295844],[0.94349825],[0.94473606],[0.9459934],[0.93809646],[0.9294505],[0.9191347],[0.909892],[0.032861285],[0.032873545],[0.032887414],[0.03284168],[0.03278519],[0.032662667],[0.032455098]],"model_test_loss":0.00579620897769928,"input_size":18,"current_date_and_time":"2023-08-09_09-50-03","input_mean":[[26.929195],[0.025196731],[-0.012881554],[-0.010710338],[0.026543096],[0.026043745],[0.024963912],[0.020803003],[0.02182621],[0.021567121],[0.021462854],[-0.01068755],[-0.010679269],[-0.010679149],[-0.010794701],[-0.010869973],[-0.011037343],[-0.0112071205]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.44354764],[-0.7657953],[0.018021787],[-1.0539906],[-0.009620201],[0.6071759],[-1.4219347]],"dense_1_W":[[-0.14379139,-0.30779734,-0.011025622,0.052611172,0.557827,-0.4541853,0.054443758,-0.43811756,0.04116236,-0.065442,0.17522809,0.28900382,-0.30594754,0.03927426,0.10508941,-0.28021297,0.257097,-0.036213793],[0.9893257,-0.5675847,-0.014914029,-0.17742264,0.32900116,-0.73124397,0.13309838,0.13541694,0.116568185,0.20272915,-0.20234105,-0.17204566,-0.38287598,0.6434185,0.0064828196,0.1567134,-0.17254141,0.04431351],[0.17694262,0.110742696,-0.0072636493,-0.30341333,0.75194615,-0.3262881,-0.03383622,-0.6425869,-0.3143724,-0.1566403,0.4531637,-0.5161109,0.3051894,0.06773472,0.57514226,0.38881442,-0.24892426,-0.15087128],[0.6424904,0.08595462,0.017552882,-0.11244444,-0.0012405494,0.7457563,-0.16368888,-0.036026936,0.0022191536,0.013409932,0.04517947,0.5781084,-0.040897,-0.3180909,-0.26591027,0.22652127,-0.15628065,0.10445975],[-0.0072668577,0.8202856,2.617024,-0.2824348,-0.97013533,0.60666716,-0.6603529,0.07703543,0.7071423,0.31937075,-0.6525571,0.18346174,0.41531911,-0.38626656,-0.22641395,-0.33223557,-0.057725884,0.37739605],[-1.0272679,-0.3728853,-0.010129326,-0.12533276,-0.037398476,-0.42292497,0.38740557,0.026151482,0.066494055,-0.20116358,0.08494257,-0.56133485,-0.23647791,0.46512464,0.4194588,0.00095449237,0.40787858,-0.43964177],[0.47435406,-0.3580759,-0.016430117,0.4333006,-0.03563075,-0.3228895,0.2759132,-0.2764072,-0.08593015,0.08139821,0.03733085,-0.49198797,-0.3483896,0.08270213,0.55244505,0.034020998,-0.19379029,-0.08319991]],"activation":"σ"},{"dense_2_W":[[0.62931764,0.5971392,-0.27920744,-0.09625446,-0.2520517,0.15220097,0.4757284],[-0.06810498,-0.16192971,-0.67571473,0.77427846,0.7111675,-0.5092023,-0.5899211],[-0.12662062,-0.43264922,-0.42270333,1.0279697,0.9585099,-0.2272264,-0.8349456],[0.6851959,0.3806427,0.23734182,-0.32216796,-0.031175314,-0.31848902,0.7827528],[0.7574823,-0.016572893,0.13931036,-0.058099292,-0.27628875,0.32055375,0.8826999],[-0.44577265,-0.51336366,-0.17647457,-0.29222834,-0.403649,-0.5358206,-0.22588949],[0.8276441,0.69618565,0.28485808,-0.66541606,-0.55220205,-0.09244421,0.22509284],[-0.017253404,-0.61689866,-0.43271235,0.9186229,-0.06328271,-0.62504864,-0.02206981],[-0.24327579,-0.2601557,-0.7008787,0.5407824,-0.07432113,-0.6142975,-0.14885205],[0.2805065,0.4750363,-0.51714677,-0.8662437,-0.5432591,0.17315364,0.2283728],[0.07518284,-0.06419793,-0.058394507,0.0030758125,-0.45961043,0.096795864,-0.88641495],[0.40107206,0.83659804,0.60401416,-0.17886135,-0.18380448,0.026554653,0.42531914],[-0.5561093,-0.81054825,0.02538599,0.37181157,0.11950624,-0.48669273,-0.1697464]],"activation":"σ","dense_2_b":[[-0.15892611],[0.25231406],[0.21843024],[-0.11113979],[-0.32132435],[-0.13616537],[-0.033621266],[0.121211156],[0.11654428],[-0.2573873],[-0.17534298],[-0.35013044],[-0.10002702]]},{"dense_3_W":[[0.38975736,0.95184344,0.46049997,-0.036776196,-0.59762466,0.77046573,-0.6417351,0.2455277,0.38605514,-0.22826484,0.4754016,-0.20180263,0.72369117],[-0.34123415,0.52516204,-0.39218587,-0.2495947,-0.49277434,-0.24826856,0.08814419,0.57656366,-0.027706323,0.70304173,-0.46806642,-0.3219581,0.3978641],[0.6244901,-0.03226933,-0.593904,0.34863296,-0.08907449,-0.01563905,0.0118533475,-0.57811826,-0.56102645,0.41259542,0.020354345,0.6811666,0.4265405]],"activation":"identity","dense_3_b":[[-0.07089868],[-0.011698629],[0.01570641]]},{"dense_4_W":[[0.491706,0.3488659,-0.4674428]],"dense_4_b":[[-0.02980553]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78100x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78100x00x00x00x00x00x00'.json deleted file mode 100755 index 8b5278a2f4..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78100x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.339225],[0.66194373],[0.31205928],[0.024341436],[0.6674081],[0.66513306],[0.66231716],[0.63895327],[0.6226761],[0.6013514],[0.58303964],[0.024373248],[0.024379227],[0.0243759],[0.024252327],[0.024022032],[0.023766125],[0.023506766]],"model_test_loss":0.0085480697453022,"input_size":18,"current_date_and_time":"2023-08-09_10-15-22","input_mean":[[15.308053],[0.026956981],[0.012521076],[0.008223056],[0.022762844],[0.024105612],[0.025292715],[0.029286988],[0.03120046],[0.03498811],[0.03913229],[0.0080815395],[0.008096857],[0.008109519],[0.008077261],[0.008023134],[0.007986101],[0.007946235]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.5486839],[-0.004182566],[0.70444334],[-1.2786864],[1.4237925],[-2.3157184],[-0.19027016]],"dense_1_W":[[2.3501394,-0.25705758,-0.07988189,-0.4290957,0.4012017,-0.49507633,0.68234736,0.19331971,-0.17918207,-0.2851441,0.014464558,-0.27997214,0.057441402,0.21785,0.4626131,0.25091216,-0.14428633,-0.11459715],[0.003891034,0.4025592,2.048489,0.2223581,-0.3264602,0.2324849,-0.31729513,0.026396394,0.39784166,0.28578123,-0.6775234,0.5099526,0.19664104,-0.78575885,-0.31198698,0.06568886,-0.11406481,0.18468915],[-0.029596832,0.37486562,0.0014446818,-0.018797278,-0.18172906,0.00620379,0.24613884,-0.0092346985,0.3056447,-0.2428616,-0.5551724,0.26058063,0.3762853,-0.10942015,0.62718093,0.25591257,0.54290694,0.44276074],[-0.04114054,-0.20652032,0.0009401521,0.14549057,0.18316638,-1.1457938,0.16571473,-0.040683154,0.01334905,-0.018335016,-0.076690406,-0.6794025,0.07434657,0.50387204,0.17088206,-0.09142393,-0.020549657,-0.07973338],[2.3122618,0.0072796457,0.07924426,0.55116,-0.27173284,-0.21541947,0.10083326,-0.17866814,0.34227166,0.083340704,0.03105569,-0.12183439,-0.2974347,-0.19256411,0.279966,0.003367294,-0.2737957,0.04101335],[-0.07023867,0.57056046,-2.7999631e-5,-0.164115,-0.2467486,1.2809415,-0.2786617,-0.043639272,0.18761483,-0.088788636,0.08548801,0.5136481,-0.2621358,-0.25907272,-0.018350206,0.2105986,-0.08260793,0.031995647],[0.0007746239,0.57527333,-0.0020729017,-0.49926147,-0.33753145,0.5631315,-0.70021117,-0.113007955,0.029500647,-0.06764356,0.15615635,0.0883909,0.25133765,-0.19060083,0.016509565,-0.061984852,-0.073395506,-0.1258471]],"activation":"σ"},{"dense_2_W":[[-0.28617162,-0.8748424,-0.3045525,1.0268904,-0.692021,0.54420674,-0.5599996],[0.08057282,0.21628964,-0.4089967,-0.18864584,0.47374418,0.4785689,0.5501896],[-0.48260906,0.24998908,-0.40376288,-0.8485313,0.76005214,0.18822819,0.6730072],[-0.5493484,0.74067533,0.5290222,-0.74589324,0.21366102,0.9318854,-0.32034856],[-0.37596846,-0.13169625,0.46739164,-0.86299413,0.24203786,0.5865028,0.42028916],[2.4739633,-0.036862414,-0.65760493,2.6289167,1.6200708,-1.7124206,-1.2274244],[0.51397264,-0.8629164,0.085178815,1.0408322,-0.055253804,-0.6733212,-0.20133649],[-0.69732106,0.12842987,0.41530445,-0.387307,-0.089540526,0.19835305,0.81477255],[-0.20419389,0.3284613,-0.09723707,0.5140212,-1.157376,-0.84693354,-0.74240136],[0.8758132,-0.15793347,-0.09718561,0.8709293,0.040350463,-1.1266917,-0.5584791],[-1.6498971,0.27860475,-0.44611832,2.437586,-2.1081448,-2.2837684,-0.871032],[-0.78162026,-0.79014534,-0.5790472,2.1518378,-1.4926344,-0.24358809,-0.6452897],[-0.46411687,0.6652152,-0.44766068,-0.18919358,0.32152855,0.16063835,0.5126533]],"activation":"σ","dense_2_b":[[-0.075753756],[-0.14393337],[-0.138848],[-0.06541741],[-0.08361248],[0.9521424],[0.19756864],[-0.17231311],[0.12727004],[0.23659523],[-0.27445894],[0.07138053],[-0.083465844]]},{"dense_3_W":[[0.4272615,-0.49210763,0.38295087,-0.41412348,0.2860867,-0.4020542,0.4103019,0.41672885,0.21858406,0.3664715,-0.13791886,0.3195822,-0.22315404],[0.27507186,0.4673776,-0.42973244,0.44775274,-0.1259053,-0.2956321,-0.009527084,-0.08753577,-0.109627016,-0.08309372,-0.027477503,0.13203609,-0.26320615],[-0.20693302,0.15525103,0.5645003,0.18120688,0.6252794,-0.7330898,-0.26089343,0.61918086,-0.43114677,-0.6229183,-0.7104607,-0.4226231,0.54074675]],"activation":"identity","dense_3_b":[[-0.087035514],[0.0670505],[0.079935245]]},{"dense_4_W":[[0.0027248666,0.14787766,1.2931683]],"dense_4_b":[[0.07440508]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018.json deleted file mode 100755 index 16bd3503fd..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.585601],[1.0769356],[0.4152277],[0.032089308],[1.0751251],[1.0764067],[1.076593],[1.0550125],[1.0351758],[1.0109047],[0.9867031],[0.032038312],[0.032060873],[0.03208132],[0.031983834],[0.03192507],[0.031825032],[0.03163297]],"model_test_loss":0.009431030601263046,"input_size":18,"current_date_and_time":"2023-08-09_08-59-32","input_mean":[[23.35191],[0.014709264],[-0.007846618],[-0.0073924493],[0.015706308],[0.01488224],[0.014164865],[0.01273958],[0.011578967],[0.010703318],[0.011319831],[-0.0074810195],[-0.0074531967],[-0.0074234046],[-0.0073149926],[-0.0072922925],[-0.0073944805],[-0.007550104]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.010489621],[-3.390052],[-0.27632216],[0.06388101],[-0.0023289998],[-0.5310449],[-3.7337463]],"dense_1_W":[[0.044022243,-0.9602262,0.023165302,0.23139995,0.40745816,-1.3215717,1.0053997,0.00058070425,-0.18163256,-0.11781253,0.109620206,-0.12967418,-0.5115588,0.37036052,0.051331975,0.19479781,-0.042822767,-0.08214719],[-1.3167536,0.9873784,0.12040588,0.1293769,-0.2311463,0.4298457,-0.42706266,0.021210633,0.3404923,0.21219859,0.22471832,0.08838383,0.29760027,-0.88747275,-0.0634611,0.10965482,0.47251707,-0.43532783],[-0.39206186,-0.13839394,0.0042735203,-0.32981926,0.20854518,0.60123193,0.06244858,0.075630054,-0.19788578,-0.0059076576,0.21052705,-0.005142829,0.37731835,-0.00039926043,0.029549208,0.1704483,0.040654548,-0.09829513],[0.033498857,-1.03267,-3.2917075,0.1436397,0.40437415,-0.07208642,0.4386376,-0.016019847,-0.41353783,-0.27417776,0.8748351,-0.8393321,-0.08226523,0.15535136,0.46795392,0.21382397,-0.14780073,0.08567079],[0.0075990325,0.3534574,0.017199304,0.1619128,-0.69365615,1.2924689,-0.63552207,0.10506459,0.12512617,-0.0582667,-0.06807627,0.43178403,0.4894852,-0.95637363,-0.25379786,-0.043963056,-0.3546822,0.3529367],[-1.0046507,-0.16842256,0.0057131224,0.04903764,0.66925514,-0.5714975,0.6537934,-0.19450375,0.62123895,0.15355848,-0.16622919,-0.10328739,-0.1587315,0.50108814,0.16457188,-0.16681637,-0.098925866,0.036512375],[-1.3783246,-0.82125074,-0.12702073,0.13462974,0.22287484,-0.4129491,0.21670008,0.12311822,-0.4235394,-0.3596955,-0.1640687,-0.28299794,-0.16758752,0.8536019,-0.066162966,-0.194256,-0.39008158,0.4202336]],"activation":"σ"},{"dense_2_W":[[-0.5063604,-0.4741062,-0.5781108,-0.5322161,-0.59136206,0.16058896,0.058547825],[0.8868212,-0.45694777,-0.20642655,-0.3002692,-0.58157927,0.25157875,0.6711802],[0.795214,-0.86609215,-0.3717794,-0.069523655,-1.109417,0.53392845,0.6741648],[-0.03295086,0.33387217,-0.09837575,-0.2690749,0.4300655,0.030849602,-0.69364756],[-0.054043226,-0.055589274,0.45605162,-0.6619817,0.1327919,-0.11879317,-0.048832323],[0.74532807,-0.4380021,-0.4157702,0.5167606,-0.2990743,0.2512731,-0.18856232],[0.05154261,0.456311,0.4568838,-0.0567244,-0.2747546,0.36871868,-0.062383007],[1.1826025,-0.92312306,-0.4721928,-0.1572826,-1.11019,0.43225694,1.1563685],[-0.108299814,0.027349837,-0.7674503,0.5352721,-0.89908135,0.3278036,0.7806216],[-0.5583551,0.2056205,0.08362692,-0.5434645,0.5470751,-0.3124283,0.08043123],[0.45070142,-0.57115096,-0.2245427,-0.045519225,-0.6893506,0.037161164,-0.23384157],[0.1461993,0.41832474,0.4386533,-0.20438145,0.48432893,-0.052871887,-0.021635566],[-0.6163875,0.38114646,-0.23866823,0.25583425,0.60170585,-0.25978467,-0.12486062]],"activation":"σ","dense_2_b":[[-0.2458712],[-0.06637249],[-0.013759815],[0.03347602],[0.018802742],[-0.08192537],[-0.010520929],[-0.037358187],[-0.13399647],[0.06693022],[-0.26994675],[-0.093340464],[-0.041655704]]},{"dense_3_W":[[0.49996868,-0.373681,-0.51962894,0.62675476,-0.31773674,-0.59978634,0.6219736,0.050350633,0.33989727,0.5896998,0.3858415,-0.5429359,0.4819143],[-0.12461631,-0.17281315,-0.3340952,0.4874769,0.0636714,-0.042632986,0.44136724,0.02729029,-0.454583,0.48858696,-0.10563923,-0.28252137,-0.075173035],[-0.23492163,-0.40539813,-0.23685107,0.21184611,0.55601394,-0.3081886,0.2426802,-0.6480087,-0.5652243,-0.013350206,-0.33100715,0.58174974,0.016825484]],"activation":"identity","dense_3_b":[[0.038624156],[0.041515328],[0.04800828]]},{"dense_4_W":[[0.6152052,0.6204614,1.1353754]],"dense_4_b":[[0.04677127]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E011x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E011x00x00x00x00x00x00'.json deleted file mode 100755 index 5595dd0b52..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E011x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.497126],[0.7899638],[0.44968936],[0.040003814],[0.790069],[0.78973264],[0.7899307],[0.7765341],[0.7670328],[0.758676],[0.7496478],[0.039959125],[0.03996849],[0.039961126],[0.039813876],[0.039652888],[0.03946854],[0.039514165]],"model_test_loss":0.019624391570687294,"input_size":18,"current_date_and_time":"2023-08-09_11-08-09","input_mean":[[24.399408],[0.032711282],[0.0115032485],[-0.00525594],[0.030166635],[0.029666992],[0.029536955],[0.035590276],[0.03622483],[0.039915655],[0.042751476],[-0.005364839],[-0.005367187],[-0.0053584483],[-0.0053036655],[-0.0054080314],[-0.0055061234],[-0.00556505]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.6610016],[0.151701],[0.009707743],[-0.26353267],[-2.1897213],[-0.07288661],[-0.11378308]],"dense_1_W":[[0.7202683,-1.4521006,-0.36892205,-0.27287668,0.5218362,-0.9888661,0.7682538,-0.22947517,-0.0722589,0.04581978,0.17252716,0.20101401,0.2203343,0.5318873,0.16461913,-0.10408441,-0.046259586,-0.0836677],[0.0017382947,0.73556834,1.6531876,-0.23093462,0.20005266,0.42430395,-0.5890132,0.49725816,0.5355405,-0.10126484,-1.4101623,0.7921084,0.1510884,-0.73259395,0.084286,-0.4520055,0.11672066,0.25221756],[-0.015996123,0.6276854,0.052092206,-0.36424366,-0.07230438,-1.2923295,0.7504581,0.09663407,-0.18611723,-0.120635055,0.015938537,-0.37530875,0.2885642,-0.059331078,0.08137963,0.20130512,-0.021207044,0.046624325],[-0.012034361,-1.4192638,-5.2265596,0.2612958,4.1413407,2.314966,2.3661003,-1.5783347,-5.9282966,-2.0653381,1.9981527,-2.0700922,-0.5770653,0.38979787,1.1890407,0.48308054,1.4855419,-1.1318967],[-0.7691148,-1.4111314,-0.36992973,-0.56459725,0.38714254,-0.3826238,0.5399009,-0.63972545,0.04428801,-0.21149153,0.40715024,-0.2787244,0.7013386,0.6029106,0.50310415,-0.23025295,0.11826784,-0.23212224],[-0.006358524,0.69335353,0.02794763,0.3399404,-0.59244144,0.7978909,-0.6742573,0.063028805,-0.1886972,-0.104276046,0.08210134,0.7829205,-0.17847379,-0.42135885,-1.1342844,0.29648486,-0.25651482,0.43940562],[0.006844428,0.990331,0.011878585,0.54291165,-0.19225447,-1.9755626,0.30564827,-0.07925933,0.31555137,-0.15508366,-0.27373806,-0.18496017,-0.4336757,0.18401355,-0.26887777,-0.010644886,-0.10060476,0.2263297]],"activation":"σ"},{"dense_2_W":[[0.36306933,0.3977938,0.22641855,0.7298922,-0.27546063,-0.10226779,0.034273352],[0.08656265,-0.48553008,0.55096817,-0.048100367,0.53174394,-0.83036834,0.56428534],[-0.24495511,0.33051565,-0.12894641,-0.26901788,0.3568392,-0.52020496,-0.11631975],[0.37262198,-1.0897073,-0.45251986,0.30015078,-0.5788583,-0.06598383,-0.6937122],[-0.4771023,-0.2963909,0.20836869,-0.4795101,0.028140526,0.91956437,-0.6256226],[-0.035516877,0.4190135,-0.27137184,-0.76606,-0.10609275,1.59395,-0.753493],[-0.47961858,0.030423556,-0.071964465,0.21260998,0.027962271,0.08736105,0.0015122219],[0.44915485,-0.49171802,0.5426616,0.38728034,-0.04750208,-0.24676758,0.32686082],[0.014905465,-0.09540689,-0.39694756,-0.07622363,0.43361604,0.061137225,0.7645907],[0.2848,-0.07338248,-0.6300479,0.32704386,-0.45459402,-0.4455886,-0.20302792],[-0.14017946,0.19692336,-0.5500081,0.43361938,-0.79839504,0.14536503,-0.5962689],[-0.35142824,0.22747609,-0.5308471,-0.3816653,-0.14133443,0.7790726,-0.46167746],[0.033977807,-0.47663027,0.21505095,0.060140327,0.50756395,-0.46516722,0.5984394]],"activation":"σ","dense_2_b":[[-0.08834933],[-0.17998597],[-0.098719954],[-0.07162819],[0.18823287],[0.25482836],[-0.23286653],[-0.13847035],[-0.1420269],[-0.16621625],[0.107665256],[0.27800032],[-0.2690747]]},{"dense_3_W":[[0.31680772,-0.04880554,0.41232827,-0.5364121,-0.18391071,-0.19796918,0.4786881,0.3846168,0.53205895,0.21274851,-0.69326276,-0.359501,-0.47516134],[-0.21317686,0.22660097,-0.36739162,0.16952656,-0.485056,-0.033075597,0.113461725,0.47104463,-0.29169482,-0.12948655,0.38925797,-0.826083,0.6325188],[0.34189993,0.43732288,0.26165158,-0.18155214,-0.54409766,-0.19873665,-0.28346628,0.5721446,0.5639601,-0.036017355,-0.4653392,-0.79315287,0.1872007]],"activation":"identity","dense_3_b":[[-0.064026974],[-0.056641966],[-0.060960032]]},{"dense_4_W":[[-0.5811463,-0.62689096,-1.1673242]],"dense_4_b":[[0.05718782]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E012x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E012x00x00x00x00x00x00'.json deleted file mode 100755 index be3b6fb7c3..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E012x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.178389],[1.1035752],[0.4662704],[0.046207998],[1.1074592],[1.1067053],[1.1053001],[1.0732423],[1.0499698],[1.0244768],[1.0014167],[0.046057243],[0.04609966],[0.046142098],[0.04609972],[0.04592567],[0.045645263],[0.04529655]],"model_test_loss":0.01661650463938713,"input_size":18,"current_date_and_time":"2023-08-09_11-33-54","input_mean":[[24.113503],[0.026555553],[0.007805312],[0.0024834524],[0.025088156],[0.025798468],[0.026386062],[0.029757109],[0.030439591],[0.031094952],[0.03309283],[0.0025249124],[0.0025172262],[0.0025013706],[0.0023470775],[0.0021061723],[0.0018476403],[0.0016275451]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.04851935],[0.18912777],[-1.3116255],[-0.7472734],[1.5802238],[0.0032274537],[0.9271875]],"dense_1_W":[[-0.013812765,0.23587815,-0.88323635,0.4553478,-0.10918498,-1.4469972,1.0692941,-0.79699284,-0.6479312,0.06861249,1.1115149,-1.0295787,0.39040166,0.82937765,-0.28262046,-0.2515571,-0.27617222,0.80472493],[0.025999622,0.5356352,5.958624,-0.7345606,-2.8084228,-1.6167558,-2.1773086,0.74087584,4.05941,2.2720666,-0.5007629,1.8292586,0.73168993,-0.13792978,-1.0049746,-0.78412616,-0.32696438,0.1599063],[-0.68668175,1.2465404,0.0007119129,0.18416734,-0.17395344,1.1581551,0.3491509,0.015340899,-0.243164,0.3337365,0.0059605897,0.25817114,-0.012701957,-0.54250956,0.06875178,0.047875002,0.03650471,-0.042195074],[-1.4012998,0.15385582,0.00326918,0.23495099,1.1849846,-0.16899009,1.0280719,0.93690526,-0.14206767,-0.20286582,0.26880294,-0.5328709,-0.18946564,0.41029063,0.27763805,-0.22111964,0.04954255,-0.10736989],[0.7175712,1.2868648,-0.0006277978,0.26892963,0.06477711,0.9932033,0.34392086,-0.009526572,-0.22756432,0.25638282,0.08036479,0.50691277,-0.3837951,-0.49345502,0.054468766,0.033681694,0.08291686,-0.058626775],[-0.0014453949,0.14246415,-0.0014614231,0.21303391,-0.21408749,-1.5569146,1.0463302,-0.008707946,0.012354692,0.32674435,-0.3785094,-0.749308,-0.17875636,0.80370486,0.19241858,0.15964696,0.4008355,-0.4595413],[1.471798,0.053307597,0.0039579137,0.09766114,1.1792371,-0.15318848,1.1508945,0.9567271,-0.14996085,-0.31087992,0.346843,-0.35862166,0.021058438,0.12184848,0.20475146,0.04533049,-0.30174068,0.07555196]],"activation":"σ"},{"dense_2_W":[[-0.23688912,-0.29926342,-0.4236539,0.58860856,-0.35607925,0.62337095,-0.15733019],[-0.7429034,0.5418817,0.3976327,0.45379984,0.050487727,-0.19394211,-1.0679561],[-0.009215472,0.29501885,-0.70378315,0.044839945,-0.49085298,0.20003374,-0.35764387],[-0.19541922,-0.11391505,-0.20030189,0.0048329923,0.02828999,0.42400816,0.6403727],[0.08312188,0.31799898,-0.69704294,0.20299889,-0.2131362,0.44351074,0.098965526],[-0.3986167,0.18717383,0.62129164,-0.094000615,0.41735825,-0.50520986,-0.9462763],[0.19806273,-0.06787933,-0.59105605,0.36845544,-0.6435648,0.73989093,0.32647932],[-0.2055667,0.1422158,-0.43421987,0.20636247,-0.23087944,0.31787756,0.51859593],[-0.31988147,-1.4222198,-0.24275048,-1.1502436,-0.3906249,-0.6949595,0.47081533],[-0.32937595,0.38923815,0.8274464,-0.7638735,0.61449593,-0.20162378,0.33241272],[0.29764244,-0.8901207,-0.13424192,0.5848652,-0.61154383,-0.24175633,-0.35554945],[-0.4612609,0.10317978,0.24854125,0.13317706,0.54670334,-0.4810212,-0.74941343],[0.3080491,0.65429133,0.38162977,-0.8621924,0.78468126,0.30853254,0.40593398]],"activation":"σ","dense_2_b":[[-0.02144118],[-0.09335769],[-0.007059764],[-0.033586107],[-0.030305251],[-0.08470452],[-0.024528615],[-0.006754011],[-0.14906617],[0.07473883],[-0.25525466],[-0.049658544],[0.023403395]]},{"dense_3_W":[[0.6513854,-0.2971271,-0.10133595,0.06157518,0.5964825,-0.29642156,0.7061594,0.4733872,0.32888836,-0.55521995,0.50460774,-0.52282894,-0.6185102],[-0.23496525,0.37275878,-0.6667091,-0.39924023,-0.48301923,0.67697704,-0.6308714,-0.21922909,0.6176243,0.618389,0.0014676229,0.6497615,0.38443524],[-0.46734017,0.14557028,-0.28965655,0.39367342,0.04646032,-0.04165071,0.31603992,0.060060974,0.45381856,0.088807814,0.39907733,0.529591,-0.50600004]],"activation":"identity","dense_3_b":[[0.011306823],[-0.013359737],[-0.020531746]]},{"dense_4_W":[[-1.1962153,1.1962668,0.4678314]],"dense_4_b":[[-0.013093974]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48111x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48111x00x00x00x00x00x00'.json deleted file mode 100755 index 048b08551b..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48111x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.985375],[0.8484357],[0.40301353],[0.04616213],[0.84518045],[0.8455486],[0.8450366],[0.8306985],[0.8178662],[0.80961376],[0.7968393],[0.046044145],[0.046038657],[0.046025593],[0.045820486],[0.045615625],[0.045437485],[0.045231733]],"model_test_loss":0.011326421983540058,"input_size":18,"current_date_and_time":"2023-08-09_12-24-28","input_mean":[[22.471128],[-0.018951578],[0.010878803],[-0.0010533921],[-0.023024717],[-0.022267114],[-0.021230936],[-0.016909447],[-0.015211554],[-0.015772311],[-0.016099963],[-0.0011461969],[-0.0011510055],[-0.0011510034],[-0.0011011333],[-0.001083126],[-0.0011312175],[-0.0012207358]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.19449084],[0.23200378],[-2.1795752],[-0.06908683],[0.5561456],[0.74490666],[-1.4101259]],"dense_1_W":[[-0.03025444,-0.037244402,0.005869636,-0.11142137,0.30302644,1.9381279,-0.8191624,0.022108948,0.8009985,0.029354382,-0.08832442,0.72894895,0.3668595,-0.9385649,-0.2852418,-0.09583186,0.5544937,-0.21227281],[0.034946375,1.0261317,7.126802,-0.2404806,-1.1685041,-0.83051986,-0.4426787,0.6152297,1.1656748,0.80329746,-0.77668273,1.9598135,1.321885,-0.57261515,-1.2246871,-0.99875146,-0.9846027,0.7683447],[-0.42501846,0.98335177,0.0086295735,-0.38849956,-0.34183657,0.78103524,-0.3070697,0.041614834,0.010777993,0.16069779,-0.06382278,0.45972434,0.47352612,-0.8080994,-0.014047953,0.2616601,0.027314788,-0.023172976],[-0.002096383,0.42063478,-0.36391065,0.6753022,-0.427858,-1.5044448,1.4863667,-0.71073186,-0.30100074,0.20311977,0.043464664,-0.9429159,0.0748356,0.59035534,0.45266464,0.36573637,0.05602837,0.03608384],[1.132687,-1.1144317,0.022769302,-0.08955206,1.1042536,-0.5798501,0.5345062,1.2229115,1.1052201,0.23315747,-0.6132077,-0.11451021,-0.14781699,0.7205005,-0.5105502,-0.1375905,0.41816053,-0.13178313],[1.3072513,0.8143477,-0.02883156,0.032059945,-0.65769833,0.49218857,-1.0619043,-1.3068818,-0.7583709,-0.18983535,0.5098667,0.04548321,0.37096432,-0.49653402,-0.043797195,0.09462603,-0.117622316,0.09393342],[-0.36528334,-0.94333136,-0.00709332,0.11895063,0.4062324,-1.077606,0.63532376,-0.055628367,0.052410383,-0.17590849,0.052673202,-0.49115044,-0.166243,0.67629623,0.12474157,-0.26558882,-0.013086577,0.016891709]],"activation":"σ"},{"dense_2_W":[[-0.90425926,-0.3100587,-0.15216517,0.27145946,0.23597465,-0.330885,0.64773345],[0.98487633,1.1788161,1.4274528,-0.13287292,-1.942367,-1.2299767,-1.614185],[-0.23527108,-0.52527946,-0.22783957,0.94517636,0.804941,-0.40320855,0.18958431],[0.12163566,0.02718684,0.47783875,-0.95925164,-0.94627064,0.6247853,-0.8608685],[-0.94498646,-0.5125671,-0.29173845,-0.15166761,-0.8053367,-0.99756163,1.0966812],[-0.5952867,-1.0380365,-0.10330609,0.035324153,-1.1042368,-0.7014133,0.9698015],[-0.21240786,-0.23053433,-0.6369077,0.33950132,0.5255738,0.096905194,0.30876234],[0.5140029,-0.5269255,0.64448845,-0.7638766,0.0040237093,-0.020735802,-0.6104091],[1.2667329,0.045856774,0.7070585,-0.61856055,0.13016993,0.6576462,-0.6267828],[-0.17739317,0.37307802,-0.8725243,0.771662,0.049805034,-0.42982677,0.11095653],[-0.90507495,-0.25394666,-0.58229274,0.2684394,-0.50432193,-0.4329303,0.6245469],[0.77078027,-0.15400788,0.24913049,-0.8615302,-0.69670194,0.18226497,-0.8975012],[0.02397529,0.2646033,0.4380282,-0.15443936,-0.5261358,-0.52393633,-0.07421209]],"activation":"σ","dense_2_b":[[-0.09594069],[-0.6905126],[-0.074888185],[-0.037054244],[-0.12587616],[-0.27787346],[-0.057617527],[-0.01407181],[0.06147024],[-0.1516328],[-0.23781396],[0.075564094],[-0.19739097]]},{"dense_3_W":[[-0.36719826,0.2605464,-0.2282825,-0.15726866,-0.12012483,-0.31160554,0.17342465,0.33086634,0.38206747,0.18828884,-0.18907732,-0.01786273,-0.20533668],[-0.3468706,0.04522057,-0.072850615,0.605361,-0.6474378,-0.20503408,-0.0733508,0.12105218,-0.1717388,0.40598574,-0.18865044,0.4131868,0.19802985],[-0.6461299,0.69321644,-0.33386546,0.07647153,-0.42154786,-0.29778567,-0.3956274,0.23928347,0.59340984,-0.42163405,-0.052262533,0.2998,0.020345777]],"activation":"identity","dense_3_b":[[-0.0809652],[0.059218273],[0.06971658]]},{"dense_4_W":[[0.0938981,0.6363041,1.3952843]],"dense_4_b":[[0.06310906]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48112x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48112x00x00x00x00x00x00'.json deleted file mode 100755 index aca9bda063..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48112x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.513149],[0.9541818],[0.39656356],[0.046623718],[0.95074844],[0.950698],[0.95102835],[0.93498194],[0.92150253],[0.903537],[0.8869439],[0.046458315],[0.04645999],[0.046444196],[0.046160106],[0.04587233],[0.045259684],[0.044569284]],"model_test_loss":0.01733686961233616,"input_size":18,"current_date_and_time":"2023-08-09_12-49-35","input_mean":[[26.078451],[0.027438534],[0.0011958503],[-0.009430026],[0.024858253],[0.025092505],[0.025384951],[0.025721082],[0.027182773],[0.029522264],[0.029206349],[-0.009677318],[-0.009641802],[-0.009610473],[-0.009555977],[-0.009597703],[-0.00965417],[-0.009817797]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.1336756],[0.10344256],[0.30574226],[-1.0487646],[-0.14843734],[-0.028830774],[-0.43900487]],"dense_1_W":[[0.43604448,-0.5605264,0.012901217,0.022648716,-0.05411717,-0.52825683,0.976321,0.11842187,-0.5259775,-0.37925148,0.42006952,-0.84167475,-0.055660117,0.1304136,0.6104034,0.28378442,0.6410333,-0.76094],[0.4276094,0.15709533,-0.0169772,0.3044572,0.3100376,1.003849,-1.018638,0.02647807,0.1272281,-0.00826707,0.0850446,0.4799849,0.019232752,-0.39135626,-0.3757945,-0.61405283,-0.018439129,0.32969815],[0.007824015,-0.058601394,-0.105257824,-0.1341512,0.3888203,-0.28831708,0.48457155,-0.3913913,-0.40673906,-0.28273785,0.5328434,-0.33710465,0.0991382,0.6627208,-0.25941357,-0.16797468,0.1989,-0.016353317],[-0.21427123,0.86771905,6.534022,-0.6548552,-1.5710703,-1.0742532,-1.4654069,0.8514165,1.9961716,1.223437,-0.7285998,1.2758242,0.9320656,0.30135366,-0.34027484,-0.70199484,-0.7621133,-0.16112399],[0.085645236,0.7888055,0.00027891068,-0.39420474,-0.06814435,0.8111238,-0.8712305,-0.176747,0.01755771,-0.16584563,0.15874274,0.7242339,0.42814922,-0.7291331,-0.23838085,-0.005654039,0.31353015,-0.056190874],[0.695166,0.49490714,3.372351,-0.13590972,-0.9212608,-0.3051697,-0.50663286,0.20426105,0.7320531,0.55699635,-0.14507566,0.92698795,0.23466231,0.1211082,-0.4500127,-0.08752919,-0.47848958,-0.068858966],[-0.41407767,0.60256696,-0.012946635,-0.32264197,0.19446182,0.36647174,-0.5412527,0.036333155,-0.060324162,0.0108162025,0.08161502,0.40417644,-0.037009377,-0.21295482,-0.41150248,0.4401551,-0.18975988,0.027621428]],"activation":"σ"},{"dense_2_W":[[0.19137855,-0.59557676,0.28804228,0.32442906,-0.5375224,-0.20337382,-0.6008916],[-0.11394542,-2.0737066,-0.5354913,-1.3426789,-0.6801209,-0.27107587,-0.15083465],[0.29361624,0.1699438,0.7419668,-0.36620173,-0.8206793,0.00073572167,-0.4464687],[0.6434301,-0.4445039,-0.14719622,0.23853825,-0.286252,-0.24195918,-0.83651835],[-0.012359924,0.43869573,0.06229189,0.60834336,0.32198146,-0.24622436,-0.06080808],[-0.6786453,-0.13937657,-0.19309613,0.013606689,0.5540887,0.5298669,-0.05196762],[-0.013185264,0.5033074,0.31203073,0.047127012,-0.2498416,0.50795144,0.5977538],[0.8437041,-0.44398957,0.7342129,-0.45426455,-0.2659502,-0.31482774,-0.16570877],[0.34602955,-0.7132226,0.38534385,0.6092949,-1.3994591,1.1248631,-1.353814],[-0.08515577,0.5915542,-0.25632793,0.4754705,0.7452592,-0.18179281,0.12182859],[-0.049042016,-0.110786006,0.64409393,0.14546494,-0.9643141,0.29006732,-0.72953105],[-0.59469205,0.6471949,-0.26527888,0.23997271,-0.09655182,0.0051637134,0.52177334],[-1.4906286,-1.1227882,0.56706303,-2.809029,-0.85157853,-1.0621608,0.9694465]],"activation":"σ","dense_2_b":[[0.008693504],[0.15823685],[0.0637331],[-0.013258514],[0.0015104315],[-0.018139329],[-0.027512403],[0.10828464],[0.017622454],[-0.06617764],[-0.046749223],[-0.070872046],[0.3779424]]},{"dense_3_W":[[0.65443593,0.3343104,0.012527355,0.36417776,-0.28863862,-0.5988752,0.23106381,0.004670684,-0.122015595,0.28513318,0.60385746,-0.5160076,0.67743444],[0.627146,0.32316205,0.38000792,-0.027986798,0.116916984,-0.61325556,-0.4528739,0.25507253,-0.13200486,-0.60309863,0.20832081,0.25238237,0.15479685],[0.28230017,0.1581272,0.5597084,0.41742852,-0.5948192,-0.03049473,-0.3455425,0.30141747,0.7191692,-0.5980131,0.36263385,-0.5719517,0.45230243]],"activation":"identity","dense_3_b":[[-0.047069583],[-0.02659484],[-0.031588677]]},{"dense_4_W":[[-0.54359066,-0.6082866,-1.0533628]],"dense_4_b":[[0.03228879]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016.json deleted file mode 100755 index 8121234c29..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.430978],[1.1379495],[0.45858315],[0.048554417],[1.1417856],[1.1416621],[1.1402241],[1.103209],[1.0752802],[1.0438159],[1.015414],[0.048459742],[0.048481967],[0.048495647],[0.048316676],[0.048084732],[0.0477648],[0.047343533]],"model_test_loss":0.017764510586857796,"input_size":18,"current_date_and_time":"2023-08-09_10-41-53","input_mean":[[24.381577],[0.05514361],[0.013313259],[0.0006179983],[0.051813576],[0.05245275],[0.05269495],[0.057216838],[0.0603638],[0.0627208],[0.06460416],[0.00054358447],[0.00054860266],[0.0005474048],[0.00047689374],[0.00043869138],[0.00029944416],[8.212836e-5]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.26622558],[2.9497008],[1.813058],[-0.025023121],[-2.0630577],[-0.10530793],[-1.0611445]],"dense_1_W":[[0.025534231,-1.1805913,-6.9120297,0.4762668,1.141532,1.194718,0.6604293,-0.30574933,-2.2145832,-1.1851851,1.0677514,-2.5831132,-0.71438986,0.58066684,0.89023423,1.3890202,0.6341061,-0.24130233],[1.2830616,1.4180796,0.013817758,-0.66995686,0.36852577,0.42192948,-0.13681625,0.50336146,0.33836475,0.33387825,-0.03252644,0.36973232,0.3118444,-0.560369,-0.010612995,0.080320194,-0.013821916,0.09603328],[1.6039705,-1.0465006,-0.021859074,0.4317561,-0.3821928,-0.9248917,0.1911275,-1.008013,-0.21806867,-0.30369827,-0.012168507,-0.2818822,0.308418,-0.016223406,0.421061,-0.42053384,0.026600147,0.016264306],[-0.14462262,-0.7510906,0.0010378277,0.6862586,0.075593695,-1.3630501,0.78086907,-0.21945457,-0.29287562,0.12408464,-0.20034757,-0.6130181,-0.15015851,0.22744867,0.22026828,0.18415438,-0.18599446,-0.15435989],[-0.17025296,-3.2277153,0.028557282,-0.73297334,-0.56138515,-0.84773684,-0.0022175754,-0.58208245,-1.1386961,-1.4433861,-2.14009,0.19586197,0.39540797,-0.052566983,0.20787114,0.28620672,-1.2643102,0.7919278],[-0.0032478468,-0.5915213,-0.09130981,-0.15959802,-0.07250981,-1.233284,1.4387474,-0.018223405,0.01532253,-0.12527408,0.120767094,-0.48614782,-0.20340073,0.60070837,0.51384115,0.028175151,0.28134152,-0.22379196],[-1.2310994,0.35107216,-0.009768715,0.108554766,-1.4150821,0.24119836,-0.5592179,-0.3124385,-0.37922817,-0.35682285,-0.040580634,0.032491393,-0.24726222,-0.29392195,0.278081,0.7974623,0.24596404,-0.6094582]],"activation":"σ"},{"dense_2_W":[[-0.26285568,-1.1060537,-2.942825,-0.67371356,-3.5155258,0.46508044,0.39250213],[0.040603336,-0.4580863,-0.05867417,-0.17467877,-0.12807631,-0.16877379,-0.6004097],[-0.21166655,-0.5113058,0.65276754,-0.4754752,-0.13656586,-1.194988,0.8539784],[-0.15373452,-0.6933606,-0.7155214,-0.5996274,-1.0520024,-0.60170096,0.32668498],[0.6738468,-0.15951255,-0.17071065,0.041958928,-0.11103761,0.902966,-0.58521444],[0.8874169,-1.2575809,-0.82644594,0.67518294,-0.18607567,0.31737596,-0.23714398],[-0.3840576,0.024641534,-0.7565307,-0.88211155,-0.28571716,-0.29910767,0.24023683],[-0.058167692,0.17876865,0.4777526,-0.94331837,0.4652216,-0.43854114,-0.53990954],[0.23073974,-2.1207473,-0.6605163,-0.2945441,-4.001501,-0.2752776,1.7681032],[-0.70948744,-0.7407854,0.42118362,0.6708104,0.32626638,1.098384,0.24783559],[0.043585002,0.27145508,0.6032944,-0.8032509,-0.06791304,-0.73068494,0.27683318],[-0.6658628,0.7501746,-0.3240815,-1.147417,0.3406268,-0.6849644,0.568758],[-0.1976796,-0.02303728,-0.765593,-0.41832325,-0.46337137,-0.65529525,0.04229715]],"activation":"σ","dense_2_b":[[-0.079793036],[-0.2289362],[-0.090767354],[-0.23192126],[-0.066803485],[-0.2459263],[-0.112346604],[-0.05293226],[-0.35880116],[0.007642163],[-0.040404778],[-0.03216628],[-0.21668698]]},{"dense_3_W":[[-1.3067548,0.53903705,-1.0720602,0.45293874,0.44038934,0.445163,-0.057403624,-0.12081309,-0.8046321,0.2472878,-0.6329288,-0.80141,0.25300354],[-0.7013012,-0.33519942,-0.22784245,-0.31578028,0.35543197,0.58259434,-0.18224044,-0.19449191,-0.00866361,0.76322716,-0.5559447,-0.5042247,-0.082718976],[-0.2083438,-0.3291305,0.049302626,0.35232225,-0.56150305,-0.15463752,0.2730324,0.19683221,0.6830847,-0.035634395,-0.005636273,-0.06266247,0.16106449]],"activation":"identity","dense_3_b":[[-0.049557555],[0.068597704],[-0.039742917]]},{"dense_4_W":[[-0.55702186,-1.4275403,0.36695966]],"dense_4_b":[[-0.06800569]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2020 b'8965B48271x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2020 b'8965B48271x00x00x00x00x00x00'.json deleted file mode 100755 index 9acad7b27f..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2020 b'8965B48271x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.790511],[1.2051258],[0.486362],[0.046329346],[1.2025905],[1.2045679],[1.2048204],[1.1782552],[1.1522838],[1.114516],[1.0752699],[0.046031546],[0.0461143],[0.04619555],[0.0463639],[0.046436474],[0.046342947],[0.046053313]],"model_test_loss":0.01846417412161827,"input_size":18,"current_date_and_time":"2023-08-09_14-07-28","input_mean":[[23.297014],[-0.07091814],[-0.006433463],[-0.015964804],[-0.06944786],[-0.07049861],[-0.07169086],[-0.0725157],[-0.07295393],[-0.07059761],[-0.06671325],[-0.015837615],[-0.015886428],[-0.015935564],[-0.016081078],[-0.016197832],[-0.016277002],[-0.016316837]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.8718482],[0.043485954],[0.1334148],[0.04062672],[0.1371059],[0.47959167],[0.41457915]],"dense_1_W":[[0.302712,-0.64061826,0.00021023012,0.1270872,0.47509173,-0.88803416,0.07212928,0.042023487,-0.2701141,-0.11028586,0.14805569,-0.3301233,-0.030141128,0.110137366,0.24910642,0.022822332,-0.13628617,-0.02734447],[-0.0112305805,-0.062110696,0.9048815,-0.30518687,0.37704608,0.54086095,-0.36482716,0.78454524,0.09202176,0.124826275,-0.60082704,0.23958081,0.013718426,-0.59773356,-0.04289131,0.24219033,0.07552512,-0.14155541],[0.0095520355,-1.5135527,-7.146096,0.046556793,1.0016626,0.26657087,0.49129936,0.1192361,-1.3478962,-0.57923305,0.8990769,-1.2713641,-0.1449253,0.33309865,0.29299238,0.8477045,0.34352547,-0.26439115],[1.3360776,0.43069306,0.0033850432,0.13868013,0.12317294,-0.71958536,0.09370431,0.69450635,0.7858797,-0.061516054,-0.44013515,-0.36443138,-0.11492549,0.2905127,0.29464763,0.27047387,-0.009484421,-0.16326639],[-0.072193325,0.6810033,-0.0006428534,-0.17535646,-0.3925088,0.9478185,-0.4810887,0.14695391,0.22799563,-0.0067853555,-0.09267938,0.15300772,0.25419602,-0.25394833,-0.25696975,0.27363688,0.04384659,-0.047923796],[0.31465146,0.3511552,0.0015588161,0.2902856,-0.19568959,1.1875578,-0.8330673,0.016947713,0.26301575,-0.019239245,-0.031921107,0.33852276,-0.28278407,0.082128964,-0.28737378,-0.18144135,-0.28193912,0.35517663],[1.4577928,0.18897557,-0.0022648247,-0.5178223,-0.29067862,0.51650524,-0.51629674,-0.7847042,-0.3747238,0.10482232,0.20073019,0.57185805,0.13230741,-0.48319355,-0.041621983,-0.16511591,0.05802408,0.06077849]],"activation":"σ"},{"dense_2_W":[[0.09112419,0.3933311,-0.07912346,-0.16376911,-1.3840766,-1.13499,0.39429682],[-0.25075546,-0.139813,-0.10178927,-0.5902748,-0.03242446,0.10067222,0.17554912],[0.32162717,-0.26907963,0.4562144,-0.17545085,-0.8203269,-0.3948726,-0.48715237],[0.2058124,-0.26949823,-0.26260903,0.66973966,-0.8223285,-0.43544468,-0.20690836],[0.0921255,0.6398792,-0.4644536,0.43992248,0.66456866,-0.29228744,0.681274],[-0.701462,0.3418935,-0.30925137,-0.4308913,0.61918205,0.41725752,0.19738914],[1.0032815,-0.1373689,0.13509746,0.55519915,-0.66466725,-1.5082299,-0.6796551],[0.9098266,-0.6253603,0.9275299,1.3693849,-0.7913963,-0.12439643,0.2529121],[0.14551386,-0.302949,-0.6236385,0.38303864,-0.2522383,-1.0035355,0.37006238],[-0.6432663,0.26386604,0.11475341,-0.24213178,0.4122344,0.568145,-0.18189429],[-0.07105171,-0.6555986,0.7464795,-0.31800714,-0.6183989,-0.829439,-0.80282366],[-0.11153934,-0.00981713,-0.027943783,-0.25458655,0.29322457,-0.07820042,-0.009418274],[-0.08382857,-0.53568757,0.30139825,0.19761209,-0.21205801,0.19351888,-0.18371148]],"activation":"σ","dense_2_b":[[-0.1493231],[-0.00402506],[-0.037446134],[0.063946806],[0.047605712],[-0.063797615],[0.22099188],[0.028348964],[-0.08109348],[-0.016280346],[-0.046104338],[-0.038503833],[-0.014590311]]},{"dense_3_W":[[-0.23360372,-0.4386488,0.5417654,0.6029812,-0.102774434,-0.533376,-0.10394323,-0.3564222,0.6374826,-0.4906818,0.459046,0.38168675,-0.19220887],[-0.25327396,0.34030682,-0.5780689,-0.10341296,0.44794607,0.15350609,-0.51224583,-0.5694763,-0.3856984,0.60207605,0.124467865,0.37996173,0.4741996],[-0.65099394,-0.1436866,-0.34031066,-0.44880912,0.5899,0.31723353,-0.23588851,-0.50561076,0.28370628,-0.30152458,-0.38816845,0.047665782,-0.070512585]],"activation":"identity","dense_3_b":[[-0.023715347],[0.026487991],[0.03818343]]},{"dense_4_W":[[-0.68857694,1.0650787,0.9217563]],"dense_4_b":[[0.029519804]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2020.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2020.json deleted file mode 100755 index 554ac5ac3d..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2020.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.812706],[1.2046702],[0.48371235],[0.046686843],[1.1999358],[1.2024622],[1.2033786],[1.181801],[1.1561146],[1.1195389],[1.0815737],[0.04636314],[0.04644517],[0.046534877],[0.04676031],[0.046842918],[0.046764217],[0.04643078]],"model_test_loss":0.019136762246489525,"input_size":18,"current_date_and_time":"2023-08-09_13-16-19","input_mean":[[23.225687],[-0.071597725],[-0.006403737],[-0.014869247],[-0.07103227],[-0.07217188],[-0.07275048],[-0.074461505],[-0.07488792],[-0.07229588],[-0.068321556],[-0.01480668],[-0.014833956],[-0.014870731],[-0.0150201935],[-0.015132994],[-0.0152152665],[-0.015241827]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.1922611],[0.94190425],[-1.8803643],[1.8052227],[-0.0708761],[-0.15278636],[0.03023423]],"dense_1_W":[[1.552201,-0.3393357,-0.27431434,-0.43802527,-0.3741866,-0.08110382,-0.6744256,-0.32662967,0.117568575,-0.07447189,0.0011381231,0.0149186775,-0.026234545,0.27035344,-0.22903343,0.21218765,-0.13117951,0.1787165],[1.5157571,-0.01751974,0.2628785,0.10242989,0.8160844,0.033813257,0.5027697,0.25837898,0.026799573,0.033179637,0.04939591,-0.1756206,0.17158255,0.082036525,0.26975772,-0.24218568,0.03992314,-0.101497844],[-0.6898828,0.3296126,0.2381383,0.38712546,0.0020844117,0.3836064,0.045370143,0.13722278,0.10226575,0.38099837,-0.24260375,0.29536518,-0.25331467,-0.46099368,0.0860768,0.3208733,-0.048293054,-0.1899293],[0.72579914,0.0024951876,0.24405375,0.072388135,0.5108625,0.6879625,-0.768285,0.4665226,0.40248188,-0.088189945,-0.03153826,-0.12015286,-0.12880835,0.038919933,0.18531369,0.19858767,0.4032525,-0.49639243],[-0.006907261,1.1555037,5.512076,0.011916408,-1.3611755,0.047472972,0.4679199,0.18809648,0.8807568,0.79814273,-1.2557139,0.693036,-0.17998734,0.17353718,-0.72927487,-0.6196344,-0.10912921,0.36026958],[-0.0008086146,-0.6703738,-0.04672321,0.051983077,0.5071199,-1.3758855,1.051845,-0.13139765,0.10653976,0.16576192,-0.11845737,-0.29320416,-0.44305497,0.47334316,0.6171071,0.13699032,-0.11988301,-0.15529875],[-0.010062327,-0.4213587,-0.033820994,0.24619605,-0.107379094,-0.7219596,0.05261352,0.16658644,-0.5604586,-0.06510145,0.1325112,-0.3156187,-0.45383725,0.44158942,-0.100481614,0.15328817,0.27649054,-0.21409012]],"activation":"σ"},{"dense_2_W":[[0.09448425,0.3760177,-0.15260221,-0.40807378,-0.43990996,0.5492166,0.721128],[-0.72103924,-0.54227215,0.037051897,-0.30457422,-0.89297354,0.68800735,0.22008589],[0.28751957,-0.72327036,0.58277506,0.28192317,-0.026689565,-0.9505252,-0.50040275],[0.4725355,-0.62869906,-0.034366626,-0.08867052,0.33788702,-0.9937069,-0.8205744],[0.70781505,-0.1194498,0.69015354,0.60684264,-0.15911719,-1.1402134,-0.77705395],[-0.11801999,-0.90623593,-0.35348848,-0.13936913,0.27008694,-0.6951836,-0.85475653],[0.053964566,0.19979686,-0.6263667,-0.6289394,-0.1642748,0.97348315,0.6938839],[-0.057833552,0.25785288,0.33920816,-0.40871015,-0.19964917,-0.35569403,0.08428918],[-0.35905418,-1.1179031,1.069501,0.20561393,0.34141743,-0.50298977,-1.1658801],[0.5924804,0.05359343,-0.74364394,-0.542707,-0.7528103,-0.89056516,-0.49965763],[-0.17235844,0.009363647,0.14541583,-0.6132933,-0.4071755,0.72789896,0.4605604],[-0.037599627,-0.65237206,0.21704821,0.6360923,0.31922218,-1.1261895,-0.5370619],[-1.4063736,-0.410196,-0.4618791,-0.8892677,-0.7377025,0.60982996,1.0650238]],"activation":"σ","dense_2_b":[[-0.05620989],[-0.060037877],[-0.04623755],[0.015519294],[0.0995001],[-0.3057865],[-0.029583905],[-0.18218923],[-0.09876781],[-0.36697587],[-0.078949876],[-0.047403064],[0.027366562]]},{"dense_3_W":[[0.35254586,0.089774035,-0.44079193,-0.56373316,-0.6380692,0.019918533,0.78052264,-0.3596739,-0.64493376,-0.09652632,0.17468911,-0.6748918,0.8599969],[-0.5039963,-0.54529995,0.42020872,0.42345285,0.77461576,-0.18526357,-0.66473806,-0.3536843,0.8206677,0.08182418,-0.13014542,-0.14203,0.34024766],[0.24226099,-0.58680654,0.10851144,-0.08556077,0.54436725,0.29506567,-0.5938133,-0.20851049,0.33693817,0.085123494,-0.47413915,0.37861294,-0.23017392]],"activation":"identity","dense_3_b":[[0.06330438],[-0.025818001],[-0.030472636]]},{"dense_4_W":[[-0.7522928,0.38205072,0.60193]],"dense_4_b":[[-0.038911503]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B0E012x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B0E012x00x00x00x00x00x00'.json deleted file mode 100755 index ffbba4f215..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B0E012x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.858131],[1.0081798],[0.42891374],[0.04033326],[1.0039434],[1.0047058],[1.0057864],[0.9871899],[0.96912324],[0.9463845],[0.91797376],[0.040223543],[0.040249895],[0.040269017],[0.040249255],[0.040179927],[0.039965343],[0.039587643]],"model_test_loss":0.012978884391486645,"input_size":18,"current_date_and_time":"2023-08-09_15-22-40","input_mean":[[25.53512],[-0.057664793],[0.006972764],[0.0020606092],[-0.057454415],[-0.057828046],[-0.058313288],[-0.05210109],[-0.04723263],[-0.04305777],[-0.037324708],[0.0020332797],[0.0020444782],[0.0020467127],[0.0020990318],[0.0021205018],[0.0021155798],[0.002061087]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.9451743],[-2.0738995],[-0.061819293],[-1.8539776],[0.11293126],[0.8801313],[-0.34697428]],"dense_1_W":[[-1.3579488,-0.14123936,-0.018169187,0.2567915,0.2472419,-0.407651,0.44249314,0.404622,0.041434586,0.16605115,-0.18061078,-0.18744762,-0.007931179,0.06848994,0.23897268,-0.12570733,0.15255798,-0.054657888],[-0.5138878,0.7540569,0.01823065,-0.30429357,0.105593584,0.6283228,-0.88449097,0.35527444,0.34103888,-0.08124087,-0.12751521,-0.12272718,0.40023044,0.078568466,0.094270095,-0.24328744,0.22644232,-0.02296254],[0.01880253,0.041950032,0.025469717,0.41977495,-0.01845549,0.7469875,-0.5836401,-0.0023528198,0.06800503,0.048917662,-0.033807367,0.3940383,-0.3420582,0.048574876,-0.73250633,-0.3168187,0.19207624,0.14923036],[-0.5069683,-0.7299225,-0.017133389,0.27239755,0.09518913,-0.6464978,0.5669755,-0.22607638,-0.22541493,-0.05590562,0.15980408,-0.26756075,-0.22189523,0.26979044,-0.19004701,0.08372643,0.042589996,-0.106104],[0.003376271,0.99690795,5.194685,-0.08252821,-1.2339424,-1.278542,-0.95400864,0.22764781,2.1331182,1.0682175,-0.5518043,1.1603253,0.1512765,0.09291671,0.060322978,-0.39886457,-0.8555216,-0.31327197],[1.3195114,0.097568,-0.016457167,0.18425311,0.22003257,-0.49077654,0.6284053,-0.02067786,0.18970595,-0.003833334,-0.053493172,-0.3488455,-0.04374197,0.48894325,0.33779547,-0.61585546,0.335012,-0.015417546],[-0.05744463,1.1883487,-0.20707692,-0.32463714,0.8947988,0.5895385,0.09502346,0.2980289,-0.086293384,0.6502581,0.027666133,0.28947368,0.13124675,-0.7183947,0.23811169,0.54866403,-0.09458978,-0.1836273]],"activation":"σ"},{"dense_2_W":[[0.61253756,-1.1365101,-0.29902524,0.9798833,-0.2917683,0.59114116,-0.4712067],[0.52844095,-0.86928684,-0.78100795,0.8103875,-0.41248968,0.6061389,0.095086515],[-1.1287509,-1.1174941,-0.2299692,-0.5305931,-1.6240323,0.899128,-0.95204324],[-0.17106694,-0.65125066,-1.1487548,1.3049239,-0.03965821,0.7915052,0.23665957],[-0.1951633,0.736451,-0.018969562,-0.54605484,0.40702567,-0.7090892,0.14927544],[-0.43511096,1.3270646,0.090805426,-1.0105572,-0.117792316,-0.44068936,0.6473223],[0.52573407,-0.4151988,-0.7318552,1.1034199,-0.35240525,-0.29688236,-0.5681273],[0.8565392,-0.28433335,-0.68133914,1.1850481,-1.0075815,-0.13676727,-0.12454539],[-0.42941204,1.0876211,0.8470857,-0.7139818,0.4409865,-0.8451851,-0.2075387],[-0.58658993,1.1041594,0.80485415,-0.3956205,0.23861384,-0.6500841,-0.012711808],[-0.44264716,1.2002516,0.9671141,-0.777456,0.17264067,-0.8688163,-0.12924784],[0.83560413,-0.37854236,-0.9930072,0.970375,-0.09642324,-0.28791323,-1.1921409],[0.2517275,-0.98617977,-0.6023062,1.2428936,0.12169115,0.42175332,-0.4277408]],"activation":"σ","dense_2_b":[[-0.00045856892],[-0.13278121],[-0.38624468],[-0.009671737],[-0.11906116],[-0.098297276],[-0.10887506],[-0.17448516],[-0.11598807],[-0.1596173],[-0.09860622],[-0.26982278],[0.063321225]]},{"dense_3_W":[[-0.59850806,-0.55752456,0.21218449,-0.6224379,0.31959382,0.70844734,-0.67447245,-0.53966963,0.8812389,0.6643036,0.88396746,-0.3286644,-0.46220767],[-0.6034193,-0.5671035,0.73748684,-0.51771855,0.25666666,0.5623304,-0.5781052,0.20079169,-0.14487052,0.38135555,0.48326564,-0.115334585,0.1118099],[-0.3604728,-0.15291758,0.09415789,-0.1948471,0.6609959,0.6682593,-0.5599815,0.018269831,0.07930072,-0.060835414,0.57257175,-0.2622459,-0.668998]],"activation":"identity","dense_3_b":[[0.034600537],[0.1429371],[0.05962403]]},{"dense_4_W":[[0.8548602,0.121467695,0.28002813]],"dense_4_b":[[0.009385257]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48102x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48102x00x00x00x00x00x00'.json deleted file mode 100755 index 2986dbb0f5..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48102x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8977513],[0.68954486],[0.4139147],[0.030382803],[0.69193476],[0.69048476],[0.68913734],[0.6806858],[0.6777796],[0.67110157],[0.6681313],[0.030303426],[0.030323956],[0.030338047],[0.030418577],[0.030385923],[0.030345106],[0.030242294]],"model_test_loss":0.012908237986266613,"input_size":18,"current_date_and_time":"2023-08-09_15-48-43","input_mean":[[23.19783],[0.03271446],[0.025837483],[-0.011847352],[0.026097897],[0.02815446],[0.03049293],[0.041018687],[0.044047516],[0.044604685],[0.0430235],[-0.01190559],[-0.011907151],[-0.011900433],[-0.011840576],[-0.011839805],[-0.011870837],[-0.011916283]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.070281],[-2.4973028],[1.3214084],[-2.4905453],[-0.052674435],[-1.0832871],[0.5832555]],"dense_1_W":[[-1.782736,0.38585284,-0.08545495,0.4048967,-0.2801542,-0.13097851,-1.0943906,-0.27965558,0.29071763,-0.1403219,-0.10031121,0.19426891,-0.5468137,-0.5553437,0.3665551,0.53392786,-0.272529,-0.12062517],[-1.217346,1.0300412,0.00075295696,0.22974275,-0.012137472,0.65442824,-0.40739405,-0.16076401,0.26733837,-0.05870503,0.14761084,0.053736396,0.095834024,-0.21273386,-0.33324143,0.12504764,-0.15672976,0.07386392],[1.0505023,2.1441545,6.541688,-0.21625133,-1.9480888,-0.570705,-1.6117417,0.95555365,1.6392485,-0.043550003,-0.036482707,0.42250034,0.20424727,-0.1673073,0.22605596,-0.013399118,-1.0146956,0.16446613],[-1.2516127,-1.0277461,-0.0049578804,0.030769175,0.043333333,-0.8858235,0.54669535,0.13188538,-0.095215924,0.012589365,-0.18010837,-0.30505812,0.5021825,-0.31425828,0.38749072,-0.22350626,-0.05114633,0.08698958],[0.0035146833,0.3828884,0.055803537,-0.2754486,-0.3728101,1.3081414,-1.0317568,0.29426,0.10069639,0.089421265,-0.16310905,0.4280105,0.44955868,-0.30968818,-0.6182345,0.111985266,0.117390126,0.0961805],[-1.0358554,1.2746156,7.393638,-1.1811066,-1.6412053,-0.5476179,-1.172681,0.36368853,1.9390265,0.47966236,-0.11466104,0.56276196,0.5378139,-0.06509055,0.35610762,0.26768783,-1.025618,0.03889093],[1.7004466,0.20178793,-0.087380014,0.27393892,-0.51528084,0.27506933,-0.92300934,-0.37298542,0.03233947,0.030535467,-0.07243149,-0.23616593,0.1807038,-0.07146105,-0.17994934,0.1573161,-0.3682807,0.24465875]],"activation":"σ"},{"dense_2_W":[[-1.0014797,0.13553746,0.22278486,-0.399194,-0.527964,0.115432225,-0.60008395],[0.24153942,-0.031119501,-0.51762193,0.6818596,-0.97653997,-0.52417797,-0.25938374],[-0.5205759,-0.63843703,0.18108721,0.5189804,-0.839813,0.10334479,-0.100626364],[0.525222,0.54790866,0.33529684,-0.8107151,0.20456313,-0.30038992,0.41534916],[-0.35009837,-0.37109253,0.34654424,-0.23345965,-0.90483,-0.12241629,-0.3237933],[-0.28656074,0.5365135,-0.19887519,-0.4632808,0.5597225,0.58351445,0.5293639],[-0.06900586,-0.63779444,1.5707409,-1.1598672,0.1615726,1.5663954,1.0012243],[0.5492712,0.70519316,-0.4818449,-0.7936975,0.98074996,0.12498996,-0.13810375],[0.0056431335,-0.43114427,-0.09032395,0.506023,-0.7993859,-0.21588661,-0.07299588],[0.67064244,0.49529698,0.18830942,-0.7618566,0.73772794,-0.3761758,-0.46270788],[0.5728761,-0.06610756,-0.2067,0.24439229,1.0658774,0.022089032,-0.10871751],[-0.3089939,-0.46645024,-0.06367501,-0.6681549,-1.2519213,0.6221667,0.10172743],[0.09857253,-1.1578652,0.08043016,0.43568343,-0.8444561,0.28122354,-0.16943873]],"activation":"σ","dense_2_b":[[-0.09551276],[0.26105896],[0.22863466],[-0.23741141],[0.17701647],[-0.17702891],[-0.25717747],[-0.36781237],[0.19594961],[-0.14985447],[-0.24570842],[-0.05177276],[0.061600402]]},{"dense_3_W":[[-0.22265823,-0.45556778,0.17281826,-0.14696541,-0.5590243,-0.42801765,-0.17338079,-0.10080969,0.36018917,0.17413813,0.06440728,0.56492454,0.22878975],[0.16702455,0.83242625,0.3850462,-0.33998582,0.5892735,-0.33413044,-0.55653554,-0.54551136,0.60024905,-0.15473615,-0.633992,0.31632444,0.7458124],[0.30883184,-0.23770918,-0.17857468,-0.58323413,-0.5130921,-0.059556685,0.38129666,0.58364826,0.1521082,-0.17372313,0.2868733,-0.23405342,-0.07776656]],"activation":"identity","dense_3_b":[[0.055418704],[0.0787763],[0.036709785]]},{"dense_4_W":[[0.005051283,-1.2674674,0.09997759]],"dense_4_b":[[-0.07513949]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48112x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48112x00x00x00x00x00x00'.json deleted file mode 100755 index bd2c176bb7..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48112x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.672505],[0.97997594],[0.48896867],[0.036406606],[0.9879945],[0.98470104],[0.9816876],[0.9598457],[0.9478727],[0.9382326],[0.9277363],[0.036488507],[0.036457427],[0.036408816],[0.036040876],[0.035670046],[0.035212148],[0.034712877]],"model_test_loss":0.013047197833657265,"input_size":18,"current_date_and_time":"2023-08-09_16-38-38","input_mean":[[26.06892],[-0.032476645],[0.01847185],[0.008156076],[-0.03514416],[-0.03364282],[-0.03196355],[-0.0248437],[-0.023279596],[-0.017502444],[-0.018172378],[0.008091517],[0.008101025],[0.008103796],[0.00808531],[0.008018075],[0.0077868756],[0.007642417]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.0938547],[-1.5377342],[0.11164253],[-1.3607982],[-0.001633297],[0.28943086],[-0.017152473]],"dense_1_W":[[-2.6134133,0.1072478,-0.038407013,-0.55906427,-0.54777765,0.53895926,-0.26524103,0.15754877,0.0075992765,0.11399316,0.060622185,0.04282183,-0.9743834,-1.0467935,-0.030679928,0.2015473,-0.170534,0.72894627],[-0.4446471,-0.6120142,0.0009793217,0.28336817,0.028145306,-1.2111511,0.52227914,-0.02825454,-0.021248085,-0.09601412,-0.050700705,0.004752271,-0.20404592,0.27143523,-0.5377922,-0.22390097,0.28489593,0.043314826],[-0.013865213,-0.42944995,0.0024095853,0.33657116,-0.17577003,-1.3745159,0.96880376,0.08447174,-0.18238825,-0.11932599,-0.00020815701,-0.72243226,0.27775034,0.31180686,-0.02206438,0.043953754,0.0844208,0.16568054],[-0.37105855,0.68786305,-0.00039992417,0.18125659,-0.23189458,1.2473199,-0.55478483,0.04226533,0.08798957,-0.0069234855,0.058259994,0.7714291,-0.383511,-0.9248507,0.36679336,0.15952906,0.12819786,-0.2177665],[0.013770035,0.33806401,0.00094282354,0.17861775,-0.23762894,1.1728739,-1.2293357,0.07470985,-0.08396865,0.14319621,-0.040008016,0.5050906,0.26662126,-0.6125382,-0.6498126,-0.17428778,-0.17383261,0.46036986],[0.0077164564,1.5451698,7.429268,0.31939277,-2.2427018,-1.5543389,-2.5262957,1.1669385,3.063373,1.1486622,-0.49699086,1.9423336,1.13846,-0.5957547,-1.5996556,-0.34185794,-0.6949594,0.12978563],[-0.042126972,-0.29461217,-1.4955524,0.45490184,-0.033281934,-0.6029691,0.3394342,-0.30512628,-0.15046905,-0.14568257,0.8093577,-0.8086997,-0.15785371,0.51180923,0.26197797,-0.17697093,0.12429469,-0.21264184]],"activation":"σ"},{"dense_2_W":[[-0.5995437,-0.3603585,-0.20216258,0.08936401,-0.49370512,-0.54119444,0.28133863],[-0.58552414,0.81165653,0.91113776,-0.79454756,0.22261482,-0.21558377,0.10684496],[-0.4171185,-0.568881,0.43534383,0.0026570433,0.21137409,0.25033414,-0.29121745],[-0.36481413,-0.9939236,0.05604151,-0.35338676,0.9317966,1.4149865,-0.54362875],[0.54199463,-0.6108903,-1.0630567,0.39385843,0.7272977,0.33584854,-0.31977272],[0.24222183,-0.15256006,0.60300756,-0.4242564,-0.46528172,-0.34210142,-0.3140277],[0.09832237,-0.16391051,-1.2382702,1.0045747,0.8160615,0.110929355,0.02551595],[0.02746031,-0.19373654,-0.2355057,0.24359266,0.5353504,-0.22755131,0.2656299],[-1.1224236,-0.3300643,-0.407043,-0.353378,0.65846336,-1.0422004,0.09945112],[-0.18847044,-0.886505,-0.16673878,0.5101195,1.0061107,0.11062626,-0.050155606],[0.3335287,0.11981937,0.29632357,-0.13577487,-0.0740185,-0.02512637,0.44026503],[-0.10581189,0.38680208,0.5723,-0.26251873,-0.27632186,-0.5749631,0.35630655],[-0.16280471,-0.25712195,0.53059477,-0.66531825,-0.66056573,0.0900753,0.48065072]],"activation":"σ","dense_2_b":[[-0.2385691],[0.12793182],[-0.10159543],[0.25047785],[-0.23729679],[0.024322221],[-0.18446803],[-0.07810453],[-0.41927636],[-0.016799252],[-0.053551592],[0.055111423],[0.04165242]]},{"dense_3_W":[[-0.059520952,-0.5622691,0.45825937,0.39820474,0.13583045,-0.32961982,0.015958305,0.3244693,0.4253685,0.23013696,-0.54041684,-0.40731147,-0.30158764],[0.09375583,-0.0017320638,-0.39634547,0.24657139,0.5715864,-0.140639,0.52030236,0.553719,-0.18884522,0.516919,-0.1633942,-0.6434239,-0.5723449],[0.029367253,-0.6095855,-0.5169094,0.41468775,0.1923313,0.57539755,0.39066675,0.48482603,-0.5734151,-0.060352806,0.33851054,-0.28380212,-0.28927657]],"activation":"identity","dense_3_b":[[-0.022509072],[-0.026452657],[-0.0094871335]]},{"dense_4_W":[[0.83508223,0.90878975,0.025333464]],"dense_4_b":[[-0.026976062]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020 b'8965B48271x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020 b'8965B48271x00x00x00x00x00x00'.json deleted file mode 100755 index 3f7bdb166c..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020 b'8965B48271x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.316072],[0.9590723],[0.36351156],[0.0441653],[0.9523992],[0.954041],[0.9552573],[0.9414871],[0.92725456],[0.9035007],[0.8794774],[0.044077154],[0.044106334],[0.044123128],[0.04409188],[0.04404384],[0.04385866],[0.043682296]],"model_test_loss":0.01662302203476429,"input_size":18,"current_date_and_time":"2023-08-09_17-54-54","input_mean":[[24.043165],[0.030592984],[0.008662194],[-0.009329172],[0.030800642],[0.030898405],[0.031143442],[0.032330383],[0.031538412],[0.030825427],[0.032572977],[-0.00929861],[-0.00929033],[-0.009281115],[-0.009265514],[-0.009250021],[-0.009282802],[-0.009329454]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.026120635],[1.9416399],[0.60815054],[0.25644714],[0.3952565],[0.17582616],[-0.19558431]],"dense_1_W":[[3.335223,-0.14903972,0.017792625,0.44585547,-0.17456532,-0.3629251,0.34922808,0.67767817,0.15890893,0.31689033,-0.45744747,-0.78738886,-0.15512607,0.31531373,0.13215774,0.08615877,0.7029011,-0.66872466],[0.33444184,0.3865422,0.033097874,-0.10416669,-0.13609071,0.37232438,0.041280344,0.3434424,-0.06693412,0.37225628,-0.31096882,0.6194188,0.019381195,-0.81112,-0.11371732,0.12016824,0.15621446,-0.051286366],[0.32034597,-0.5460983,-0.022756906,0.24789928,0.08965753,-0.78998137,0.8077627,-0.25334057,0.30262712,-0.57730323,0.31271738,-0.413183,0.26481584,0.20591393,-0.2825443,0.048321266,0.037722778,-0.02604145],[-0.001096885,0.877505,4.375584,-0.21056944,-1.4921321,0.30686256,-0.07281465,-0.23879132,1.7749463,0.65912414,-1.1899405,0.7710069,0.51181823,-0.3327569,-0.69171345,-0.14890115,-0.16795291,-0.058986213],[3.0410533,0.37130952,-0.014436474,2.9947143e-5,-0.20359561,0.08057991,-0.4799077,-0.21630915,0.02990563,0.44693226,-0.31517798,0.34675393,-0.35125488,0.04655145,0.0073511093,-0.02863017,-0.3938378,0.28197953],[-0.02691242,-0.27878886,-0.025484474,0.11147362,0.010308179,-0.70408285,0.24386121,-0.26564816,-0.09767933,0.54513925,-0.30042544,-0.70545626,0.19622594,0.4065873,0.2987727,0.13130112,-0.16078812,-0.09777715],[-0.045214858,-0.3631571,-0.036500983,-0.11810798,0.45778593,-1.060346,1.0526772,0.031578775,-0.59605724,-0.36440456,0.511626,-0.73647,0.015697645,0.37303218,0.7600099,-0.21960646,0.16917647,-0.29108718]],"activation":"σ"},{"dense_2_W":[[-0.35218585,0.14308812,-0.57519746,0.31768999,0.17070374,-0.3732793,-0.48790818],[-0.34943467,-0.60227203,-0.4166511,-0.112191014,-0.04813801,-0.32272428,-0.032062355],[0.16224292,0.1755412,-0.6478811,-0.387053,0.63158387,-0.72614723,-0.8409673],[0.03339276,0.5439781,-0.7387804,-0.08449288,0.11998959,-0.18540213,-0.2549742],[-0.27214608,0.19542813,-0.13491894,-0.38912305,0.19247393,-0.8167929,-0.35544467],[-1.5148702,-0.19982053,-0.4914989,1.1792556,-0.88855046,-1.1474198,-0.6109534],[0.43902197,-0.2789942,-0.12047118,-0.30758274,-0.41768637,0.5652369,-0.0692086],[0.41314223,-0.50518227,0.5529299,-0.5850712,-0.14101315,0.15159719,0.4114286],[-0.013627578,-0.103289954,-0.45013615,0.4243168,-0.04401468,-0.6160927,-0.43941525],[-0.11910079,-0.30987215,0.2152533,0.38692838,-0.30739278,0.0892118,-0.04579046],[-0.44247296,1.0036645,0.045824107,0.4684638,0.7781144,-0.6853828,-0.62459666],[0.10554759,-0.05212664,0.4570351,-0.031150939,0.12591816,0.81590295,0.060838416],[0.4397581,-0.34536296,0.10181044,-0.39205134,-0.38584864,0.4655003,0.29053125]],"activation":"σ","dense_2_b":[[0.056989435],[-0.06921607],[0.05528886],[-0.010666541],[-0.2541545],[-0.019204568],[-0.021566926],[-0.043972496],[0.023812661],[-0.0577136],[0.13183823],[-0.033985566],[-0.05114418]]},{"dense_3_W":[[0.53362375,-0.31393358,0.77158445,0.42364752,0.27630767,0.6144512,-0.45349428,-0.63806015,0.28949618,-0.34986678,0.30039573,-0.56956017,-0.5325901],[0.25773355,-0.5742002,-0.18550177,-0.2709638,-0.43932548,0.4737292,0.486204,-0.49685073,0.22938772,0.07413067,0.3179722,-0.38822258,-0.021123026],[0.2324419,-0.27651238,-0.7168737,-0.4830318,0.29606512,0.303249,-0.074232936,0.09739446,-0.6291083,-0.49824134,-0.56967014,0.36437067,0.6702277]],"activation":"identity","dense_3_b":[[0.008113352],[0.044839732],[0.00069537724]]},{"dense_4_W":[[1.2693222,0.03663439,-0.6965769]],"dense_4_b":[[0.0059736283]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019.json b/selfdrive/car/torque_data/lat_models/LEXUS_ES_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS ES 2019.json rename to selfdrive/car/torque_data/lat_models/LEXUS_ES_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018.json b/selfdrive/car/torque_data/lat_models/LEXUS_IS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS IS 2018.json rename to selfdrive/car/torque_data/lat_models/LEXUS_IS.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018.json b/selfdrive/car/torque_data/lat_models/LEXUS_NX.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS NX 2018.json rename to selfdrive/car/torque_data/lat_models/LEXUS_NX.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2020.json b/selfdrive/car/torque_data/lat_models/LEXUS_NX_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS NX 2020.json rename to selfdrive/car/torque_data/lat_models/LEXUS_NX_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017.json b/selfdrive/car/torque_data/lat_models/LEXUS_RX.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017.json rename to selfdrive/car/torque_data/lat_models/LEXUS_RX.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020.json b/selfdrive/car/torque_data/lat_models/LEXUS_RX_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020.json rename to selfdrive/car/torque_data/lat_models/LEXUS_RX_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022 b'KSD5-3210X-C-00x00x00x00x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022 b'KSD5-3210X-C-00x00x00x00x00x00x00x00x00x00'.json deleted file mode 100755 index 7e79feb6d1..0000000000 --- a/selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022 b'KSD5-3210X-C-00x00x00x00x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.853387],[1.1592323],[0.5035471],[0.04757312],[1.1533973],[1.1566302],[1.1592906],[1.124919],[1.097695],[1.0662291],[1.031133],[0.04736746],[0.04742848],[0.047484897],[0.047564015],[0.047558986],[0.047428854],[0.04712477]],"model_test_loss":0.01737847924232483,"input_size":18,"current_date_and_time":"2023-08-09_18-49-11","input_mean":[[23.514374],[0.01205051],[-0.007076305],[-0.010646906],[0.013812598],[0.013436532],[0.01327746],[0.010840775],[0.010276086],[0.008101413],[0.0081624],[-0.010648332],[-0.010639621],[-0.010631156],[-0.010660867],[-0.0107276775],[-0.01080371],[-0.010883885]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.44225207],[-0.08251625],[-0.09139792],[-0.17654161],[-1.2058073],[-0.18010782],[-1.0617452]],"dense_1_W":[[0.81515855,0.19847405,-0.16027977,0.2605701,0.5020647,0.6416506,-0.74194986,0.2395706,0.008035103,-0.54028624,-0.68319666,-0.11733088,0.30929378,-0.57654405,-0.11921764,-0.07856754,0.36212778,-0.21245824],[-0.003413831,-0.88659906,-1.5215017e-5,0.2659344,0.66569483,-1.4612998,0.502116,-0.023383126,0.27923653,0.22036943,-0.24609998,-0.16959597,0.047625005,-0.4744547,0.54592556,-0.07476282,-0.057982,-0.0049017775],[-0.0071781585,1.3938068,5.4535723,-0.42513278,-1.0321593,-0.9752934,-0.7584714,0.67374307,1.2021991,0.6324794,-0.48040524,0.6027366,0.034736745,0.218859,0.021496648,-0.23673749,-0.3517566,0.1679437],[-0.7695569,0.26124287,-0.15884998,-0.08147379,-0.10981094,0.6529741,-0.19342661,0.43262586,-0.26433924,-0.30309507,-0.86631536,0.13160278,-0.033320703,-0.14629383,-0.047781195,0.07316912,-0.17327231,0.101880364],[-0.5631856,-0.42516446,0.13529952,-0.18435624,-0.1343596,0.2858478,-1.1791672,0.07787927,0.9311218,0.68779874,0.080623545,0.085128896,-0.26469198,0.19951835,0.5323622,-0.09537051,-0.2584652,0.101225466],[0.0015933844,-0.159882,0.00029708236,-0.26148286,-0.43383598,-0.5543793,0.9337357,-0.36895335,0.39094746,0.05787086,-0.24165697,-0.2886184,0.3548747,-0.29055887,0.74826497,0.10615606,0.20682812,-0.32921875],[-0.5261344,0.52323943,-0.13088919,-0.008910816,-0.21776229,-0.46300754,1.8696176,-0.20582403,-1.1688477,-0.6119323,-0.04257218,0.013339775,-0.043501914,0.2700189,-0.39648747,-0.0074166763,-0.10004616,0.16081381]],"activation":"σ"},{"dense_2_W":[[-0.5157362,0.9631259,-0.6171437,-0.63063097,-0.4735463,0.3908077,1.1676315],[-0.17338198,-0.23641111,-0.47618997,-0.8813003,0.06709429,0.39402965,-0.4519197],[0.059771042,-0.5551666,-0.1077192,0.09842683,-0.42055693,-1.128195,-0.056298535],[0.54656047,-1.1881918,-0.06123479,0.3539518,0.86083883,-0.22125135,-0.7932267],[0.43361214,-0.8142263,0.23757508,0.094281524,0.57598335,-0.29057238,-0.61107886],[-0.41463575,1.0157188,0.028030625,-0.78584176,-0.49250048,0.8294643,0.7266427],[-0.9193553,0.7055807,-0.585519,-0.31935224,-0.3264894,0.4916916,1.2605145],[0.22281124,-0.9272137,0.3690255,0.1680717,0.87741905,-1.0792515,0.07280114],[-0.0030278699,-1.4448571,0.16294147,0.63729775,0.4577902,-0.3729355,-0.14417095],[-0.7692859,0.9571105,-0.05139316,-0.5226682,-0.9362267,0.6496911,1.0343727],[-0.17001544,-0.5700911,0.4439341,0.087172486,0.5646342,-1.0282485,-0.018494168],[0.41095787,-0.8497653,-0.5612039,0.3726814,0.65113074,-0.5311523,-0.5471418],[-0.45295602,0.33931798,0.095446564,-0.54154277,-1.0325888,0.38092053,1.145116]],"activation":"σ","dense_2_b":[[-0.3186452],[-0.288119],[-0.38380378],[0.12766144],[-0.10716348],[-0.14310987],[-0.34722012],[-0.018767025],[-0.2038077],[-0.18889567],[0.07034628],[0.012997789],[-0.1260928]]},{"dense_3_W":[[-0.6318957,0.48257327,0.1136089,0.51249325,-0.49085104,-0.46579233,-0.32575548,0.69841176,-0.13590871,-0.48699,0.39608002,0.74255526,-0.28925848],[0.0032501454,0.12569621,-0.004480495,-0.45128265,-0.2787252,0.55744016,0.7084973,-0.52268666,-0.20164965,0.6661134,-0.37891406,-0.20163451,0.32705396],[0.5388942,-0.22452125,-0.35520035,0.22645302,-0.40178102,0.70361614,-0.22213759,-0.8835455,-0.56852955,0.671603,-0.407134,-0.011616957,0.27316284]],"activation":"identity","dense_3_b":[[-0.002264159],[-0.1245649],[-0.077148765]]},{"dense_4_W":[[0.3225791,-0.9383285,-0.49840775]],"dense_4_b":[[0.11291003]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021 b'TC3M-3210X-A-00x00x00x00x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021 b'TC3M-3210X-A-00x00x00x00x00x00x00x00x00x00'.json deleted file mode 100755 index 3c68fce4ea..0000000000 --- a/selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021 b'TC3M-3210X-A-00x00x00x00x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.1361938],[1.0207393],[0.46784142],[0.044281065],[1.0135106],[1.0156862],[1.0179193],[0.99846673],[0.9808455],[0.95554197],[0.93192744],[0.044129286],[0.044156313],[0.044183984],[0.044230428],[0.044231635],[0.04403099],[0.043691065]],"model_test_loss":0.015346277505159378,"input_size":18,"current_date_and_time":"2023-08-09_19-39-22","input_mean":[[26.720535],[0.05398475],[0.018588284],[-0.0071310536],[0.04973699],[0.051148783],[0.05272367],[0.059138265],[0.05985436],[0.061450966],[0.061546516],[-0.007231824],[-0.00721414],[-0.007194777],[-0.0072021107],[-0.007212742],[-0.007267123],[-0.007447193]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.07717255],[0.27171892],[-1.2506876],[-0.016007472],[-0.015063482],[-0.040170796],[-1.3193151]],"dense_1_W":[[-0.00046635105,0.23848942,0.0075265327,0.63944364,0.1347048,0.47492328,-0.37915337,0.41173533,-0.12487092,-0.29509735,0.12250014,0.45845526,-0.054787334,-0.5933447,-0.42548034,-0.45802563,-0.43666455,0.4965784],[0.0028189807,0.9642001,6.3449173,0.27022457,-1.2672639,-0.31867704,-1.0117996,0.016185766,1.29451,1.0355864,-0.5214663,0.12862188,0.3666462,-0.44845012,0.0503311,-0.55411357,-0.0335223,0.22428314],[-0.47832125,1.0210371,0.0025497465,-0.37653345,-0.3742908,0.41137654,-0.88231635,0.07470647,-0.13826749,0.077677675,0.14215057,0.4993727,0.23369971,-0.41651008,-0.20243475,0.10337624,0.048701506,0.0058387266],[-0.010898832,0.9759092,0.78411144,0.13314718,0.7009455,-0.24671309,1.0518397,-0.8327215,-1.1135107,-0.9663988,0.37700438,0.242799,0.26452747,0.23343697,-0.0026173661,-0.60242945,-0.27355608,-0.0491],[-0.010772643,-0.5600224,0.763155,0.30147272,0.78109336,0.837608,-1.0615004,0.5927615,0.50307256,-0.23107275,-0.9367593,0.56559885,0.300443,-0.50897396,-0.2478554,-0.058721192,-0.103559576,-0.29454744],[-0.0016055347,-0.30018213,0.007459824,0.09456597,-0.24748099,-1.0068074,0.22400783,0.22705272,0.46885622,0.7039897,-0.7698514,-0.67375356,0.1720363,0.25146246,0.05736602,0.07285658,-0.13567634,0.09812689],[-0.4724937,-1.0677936,-0.0013191341,0.3016288,0.3043617,-0.546663,0.9942631,0.047015384,0.33232743,-0.22391738,-0.16955799,-0.44435427,0.088968895,0.2033616,-0.024262402,-0.21804309,0.2939665,-0.10468075]],"activation":"σ"},{"dense_2_W":[[-0.02815128,-0.15404527,0.48134676,-0.2045751,0.45873386,-0.9992201,-0.4732975],[-0.81980515,-0.14103535,-0.7424751,0.32967785,-0.43455988,0.42265758,1.1696832],[0.17993073,0.36625385,1.2360194,-0.7851182,0.58637094,-0.9563679,-0.6327467],[-0.80701834,-0.46103284,-0.38886464,0.26659998,-0.25459498,0.27860713,1.0151616],[-0.26352298,-0.27474797,-0.71573704,0.5585518,-0.2905977,0.35913047,0.5679929],[-0.040301513,-0.41732746,0.12182226,0.23108034,-0.84193206,-0.024594149,-0.28726375],[-0.37716445,-0.017540926,-0.7418782,0.67433614,-0.4516054,0.43178025,-0.06261839],[-0.14396086,0.20600641,-0.6750777,0.64446765,-0.9558452,0.41428146,0.09141522],[0.8223245,-0.051082235,0.52545285,-0.6711533,0.26996845,-0.093948975,-1.0486971],[-0.30826652,-0.180534,-0.19349286,-0.20159452,-0.15312585,0.3642725,0.52487767],[0.75069547,0.0020414179,0.33697206,-0.7357639,0.5642956,-0.73201805,-0.15238681],[0.7387959,-0.04430659,0.5192625,-0.5607489,0.7265771,-0.6451385,-0.68313706],[0.017428305,-0.34786505,-0.16648427,0.16268884,-0.6232374,0.32126054,0.8016188]],"activation":"σ","dense_2_b":[[-0.009145167],[0.07557344],[-0.19250816],[-0.049706537],[-0.10579298],[-0.23372805],[-0.22532278],[-0.12664817],[-0.03729099],[-0.123311765],[0.025257772],[-0.1679509],[-0.08767181]]},{"dense_3_W":[[-0.71948236,0.20356402,0.3145974,0.13516659,0.52638,-0.29817042,0.498107,-0.010514032,0.18771078,0.013163666,-0.7712328,-0.4116291,0.3748885],[-0.64847153,0.23644143,-0.4865116,0.47148782,0.41150305,-0.12364886,-0.3837079,0.32072318,-0.022468964,0.55944085,-0.6452794,0.29679397,-0.124723144],[0.32205322,0.8586511,-0.8641501,0.16287574,0.18229792,0.4021785,-0.042451933,0.47848225,-0.5249389,0.13250944,-0.4461431,-0.25520405,0.1984305]],"activation":"identity","dense_3_b":[[-0.07424013],[-0.058659244],[-0.08360579]]},{"dense_4_W":[[-0.8438062,-0.24870598,-1.0960536]],"dense_4_b":[[0.073657714]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022.json b/selfdrive/car/torque_data/lat_models/MAZDA_CX5_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022.json rename to selfdrive/car/torque_data/lat_models/MAZDA_CX5_2022.json diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021.json b/selfdrive/car/torque_data/lat_models/MAZDA_CX9 2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021.json rename to selfdrive/car/torque_data/lat_models/MAZDA_CX9 2021.json diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-9.json b/selfdrive/car/torque_data/lat_models/MAZDA_CX9.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/MAZDA CX-9.json rename to selfdrive/car/torque_data/lat_models/MAZDA_CX9.json diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68273275AG'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68273275AG'.json deleted file mode 100755 index 376ff90932..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68273275AG'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.9210873],[1.1622182],[0.43444356],[0.05239421],[1.162601],[1.1617966],[1.1600338],[1.1373105],[1.1218978],[1.1002257],[1.0747715],[0.052226104],[0.052260432],[0.052283283],[0.052092496],[0.051803872],[0.051247757],[0.050530057]],"model_test_loss":0.013745146803557873,"input_size":18,"current_date_and_time":"2023-08-10_01-43-24","input_mean":[[23.540874],[0.039472643],[0.019381158],[0.010939346],[0.032198854],[0.03392217],[0.035938434],[0.04118405],[0.046537373],[0.049447913],[0.051183026],[0.010808573],[0.010828554],[0.010842155],[0.010789978],[0.01078458],[0.010702423],[0.010645217]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.3592632],[0.24013901],[0.02950762],[0.007981313],[0.16977344],[1.0341699],[0.067953564]],"dense_1_W":[[-0.29443944,-0.86964434,-0.0030668834,0.34641737,-0.052413613,0.25383303,0.39592203,-0.37595648,-0.09712996,-0.067028016,-0.15717228,-0.30866244,-0.31660882,0.03619487,0.36077827,0.14766766,-0.08112562,-0.16371004],[-1.0683546,-0.4225962,-0.0066022496,-0.4033901,0.46962708,-0.44821528,0.38007107,-0.35131562,-0.19155227,0.32398295,0.044747997,-0.17824192,0.5510669,-0.0595588,0.35617167,0.4413747,-0.034901265,0.04095095],[0.0008612147,0.3940898,-0.006288894,-0.55062485,0.5392667,0.33954364,-0.48541492,-0.16118298,-0.09376398,0.10986033,0.12394796,0.9228157,-0.45805627,0.11727515,-0.022528082,0.06427372,-0.0030711165,0.04155096],[1.0198417,-0.35909548,-0.006616111,-0.59779114,-0.31270605,-0.14032304,0.9551273,-0.2675044,-0.24046354,0.032812644,0.16535293,0.012905942,-0.11244921,0.6141845,0.098029315,0.584352,0.23467723,-0.16135265],[-0.0028723876,0.29212356,3.77251,-0.04027425,-0.7930384,-0.98414063,-1.0553377,-0.016249495,0.87524354,1.4566501,0.4455834,0.31893766,0.3175888,-0.23782718,0.70991355,-0.03134838,-0.38082367,-0.7664585],[0.23746029,-0.524643,-0.0032641755,0.016509473,0.14262381,-0.52993554,0.7516659,-0.27583307,-0.28979933,-0.025237296,-0.11929308,-0.61843383,-0.04413926,0.3603565,0.9432264,-0.51941097,-0.17327741,0.033388518],[0.022823358,0.3032578,0.0024921081,-0.1483726,0.3248898,0.11600146,-0.2852234,-0.16650069,0.113197386,0.11354485,0.004953061,0.29692334,0.16251172,-0.60039353,0.059377182,0.0968991,-0.17315012,0.034780342]],"activation":"σ"},{"dense_2_W":[[-0.10226482,-0.4129552,-0.011484651,-0.8094231,-0.007036115,0.068016745,0.30800965],[0.51679516,-0.0140688205,-0.85121125,-0.09242818,0.41688886,0.7517409,-0.64519745],[0.35164565,0.392633,-0.101708815,0.6600604,-0.51135594,-0.24759813,-0.7536511],[-0.46807855,0.22016473,0.8009246,-1.2497194,0.8632494,-1.2237775,0.2705352],[0.12294014,0.28189301,-0.82049996,0.42017826,0.31424674,0.5031236,-1.0273964],[0.031432822,-0.62932956,0.22953837,-0.49194145,0.15946166,-0.07545127,0.25037768],[-0.36138535,-1.1441826,0.8748997,0.30837125,1.1008774,-0.039432786,0.5913679],[0.6354077,0.27034265,-0.8441376,-0.3852919,-0.7068959,0.5080131,-0.106792346],[-0.1320543,-0.8137172,0.9680676,-1.2771759,0.39580464,-0.6290615,1.3455303],[-0.50728315,0.35654846,0.08924023,-0.60484344,0.574961,-1.1762985,-0.0043168655],[0.14633264,-0.041424304,-1.0337647,-0.3997866,-0.016652329,0.07367241,-0.07422297],[0.4978552,0.4680909,-0.8531208,-0.009683,0.09626235,0.60354567,-0.8143497],[-0.7302568,-0.7541932,1.0414218,-0.31683722,0.71962583,-0.09527239,0.5987053]],"activation":"σ","dense_2_b":[[-0.08878189],[0.012890921],[0.044211157],[-0.4465577],[-0.062322337],[-0.0074243415],[0.15457644],[-0.07897435],[-0.08090508],[-0.22858685],[-0.27673057],[-0.07622174],[0.058422644]]},{"dense_3_W":[[0.050709836,-0.03184132,0.44536084,0.092137754,0.3236647,0.18253805,-0.07791841,-0.20872086,0.09598713,-0.2740574,0.10335441,-0.28594363,-0.25284308],[-0.39783764,0.72701114,0.3897124,-0.78861535,0.6352359,0.42759028,-0.2990431,0.056067392,-1.2246326,0.31149596,0.4554911,0.13868588,-0.4529365],[0.027524881,-0.48940495,-0.44448495,0.46868488,-0.57126254,0.57925117,0.31945515,-0.66192514,0.5332039,0.21860516,0.000447623,-0.37591594,0.49015212]],"activation":"identity","dense_3_b":[[0.0158691],[0.023787307],[-0.030451657]]},{"dense_4_W":[[-0.11161881,-0.3257279,1.0980971]],"dense_4_b":[[-0.03284489]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68466110AB'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68466110AB'.json deleted file mode 100755 index cc62373968..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68466110AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.0463657],[0.9747688],[0.3453712],[0.03803554],[0.9690691],[0.97106147],[0.97251296],[0.9614686],[0.94826],[0.92959803],[0.9101179],[0.037928607],[0.037951168],[0.03796943],[0.03788738],[0.03772722],[0.03745093],[0.037048396]],"model_test_loss":0.017076648771762848,"input_size":18,"current_date_and_time":"2023-08-10_02-58-26","input_mean":[[27.871407],[-0.025981303],[-0.0066066827],[-0.005477946],[-0.021529026],[-0.021929484],[-0.022823982],[-0.023858318],[-0.025280826],[-0.029299965],[-0.032219402],[-0.005470874],[-0.0054753814],[-0.0054821577],[-0.0055401647],[-0.0056055295],[-0.0057070768],[-0.0058246236]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.4266238],[-0.3416357],[2.5780525],[-2.5398123],[-1.5365838],[-0.15346667],[0.017754281]],"dense_1_W":[[-1.0982449,0.20722441,0.013749752,0.07489929,0.41551197,0.004341639,0.0048132003,0.00025495235,-0.18475117,0.08220013,0.0560664,0.82137764,0.495301,-0.63355666,-0.47019786,-0.04666432,-0.25567988,0.04631287],[-0.012575525,1.013855,6.6538153,0.0006221404,-1.0208796,-0.513264,-1.0584702,0.4347041,0.50328493,0.99720603,-0.41704744,0.9781865,0.078827344,-0.22583015,0.3788141,0.114769615,-0.8264082,-0.4377368],[0.82146376,-1.1214737,-0.038538903,0.129783,0.16356055,0.04583769,0.09611903,-0.25096208,-0.45288768,0.033663888,0.2989499,-0.27392572,0.05673563,0.29652318,-0.17211635,0.37968886,-0.0377033,-0.17876798],[-0.78663635,-1.252811,-0.03569057,-0.024772601,0.1393824,-0.16137758,0.63462764,-0.56116915,-0.25827187,-0.035541687,0.32233778,-0.49389195,0.107298866,0.5767397,0.15331157,-0.009262639,0.056745403,-0.17108874],[1.075038,0.63599974,0.013103103,-0.13239852,0.2721682,0.215895,-0.43340504,-0.2561609,0.08369225,0.09600925,-0.031108124,0.9223862,0.037735846,-0.24475971,-0.11832876,-0.24068235,-0.2104002,0.018788245],[-0.012586371,0.8092677,-0.005002185,-0.0010346456,-0.19357827,0.4030301,-0.41376656,-0.014812962,-0.14178266,-0.15467277,0.16577497,0.46197078,0.28108403,-0.72031033,-0.2485265,0.044038273,0.20874186,-0.06851787],[-0.01091231,0.993412,0.026124477,0.3239028,0.502026,0.68568456,1.7555947,0.8855259,-1.2782414,-2.011024,-1.1780066,-0.7251421,0.3048075,0.79791856,0.25945005,-0.80709416,-0.24202144,0.24123403]],"activation":"σ"},{"dense_2_W":[[0.8615375,-0.37836078,0.059902865,-0.610202,0.60982454,-0.05805709,0.3699734],[0.11572612,0.48987415,0.2018818,-1.1636332,0.5043109,0.53963894,0.019587068],[-0.82412773,-0.5432425,0.86591834,1.4440024,-0.50299263,0.0073020295,0.33265102],[-0.937952,0.34060618,0.28250477,1.2533687,-0.24819559,-1.102934,0.4194565],[0.0850848,-1.4026527,0.18256377,1.2569317,-1.3412946,-0.51787454,0.60327196],[-0.49207494,0.006521548,-0.84601384,-0.063308366,-0.2913924,-0.5534405,-0.36416996],[-1.1227055,0.6364929,0.40246958,0.3539726,-0.71709025,-0.5450521,0.116008334],[-0.3193431,-0.12110501,0.44127515,0.29223323,-0.5647738,-0.5818968,0.104559764],[0.19634451,-0.11687351,-0.52581316,0.14469767,0.26439536,-0.25766855,-0.5510215],[-0.05923424,0.28980356,-0.14158152,0.43791518,-0.732061,-1.0311065,0.41942894],[0.7570111,0.53114414,-1.135714,-0.26154417,-0.21490821,0.23511015,-0.73162705],[-0.060524873,0.09525046,-0.9220807,-0.09318619,0.486466,0.85145307,-0.22442955],[-0.5580914,-0.055617023,1.4159099,0.7312611,-0.9474024,-0.42224932,0.1571235]],"activation":"σ","dense_2_b":[[-0.051363647],[-0.12564756],[0.057266533],[-0.20513932],[-0.5409964],[-0.26110366],[-0.17036414],[0.04884298],[-0.2544224],[-0.0654127],[-0.11066689],[0.043957688],[0.111824796]]},{"dense_3_W":[[0.4754135,-0.13027504,-0.70067513,-0.68032104,-0.2434314,-0.49364966,0.0809345,0.3409165,-0.35128537,0.5138682,0.24348976,0.12398042,0.07979309],[-0.3433468,0.24112704,-0.5154696,-0.14498284,-0.22987618,0.22425546,-0.03564995,-0.48462275,0.40817538,-0.0020781446,0.6011458,0.6723392,-0.47040144],[0.5232041,0.45503825,0.087453336,-0.20923337,-0.4118531,0.15931882,-0.49080586,-0.22813377,0.13799725,-0.5762673,0.56595653,0.68413365,-0.7339804]],"activation":"identity","dense_3_b":[[0.04150388],[0.051177654],[0.041261487]]},{"dense_4_W":[[0.5853262,0.47804958,0.9168704]],"dense_4_b":[[0.043468688]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469901AA'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469901AA'.json deleted file mode 100755 index 6e24c14c4d..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469901AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.33825],[1.1453629],[0.43486407],[0.046197876],[1.1367582],[1.1400605],[1.1420996],[1.1326395],[1.1184355],[1.1011796],[1.079299],[0.045960896],[0.046014525],[0.046063952],[0.046127878],[0.0460219],[0.045729626],[0.045291778]],"model_test_loss":0.021876206621527672,"input_size":18,"current_date_and_time":"2023-08-10_03-24-19","input_mean":[[27.181211],[-0.033823926],[0.008755515],[-0.0075790784],[-0.032792553],[-0.032709006],[-0.032333635],[-0.02890779],[-0.02326324],[-0.016518341],[-0.010042243],[-0.007586642],[-0.00755887],[-0.0075379773],[-0.007499133],[-0.0074144034],[-0.0072887978],[-0.007148881]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.046337597],[0.050293937],[1.8881503],[0.59185153],[0.8542854],[0.19480373],[1.5334643]],"dense_1_W":[[-0.008669442,-0.50197583,0.0013483413,0.07478634,-0.12987828,-0.42372242,0.451127,-0.21957916,-0.17928472,-0.0133529585,0.06471939,-0.61344665,-0.28108978,0.61214054,0.25012782,0.10078239,0.11161439,-0.16625455],[0.019537883,-0.25616175,0.0026798896,-0.47914556,-0.117883034,-0.5943702,0.47449878,0.02374437,-0.25907964,0.0004787899,0.041058734,-0.62058383,0.37889734,0.56780803,-0.12320269,0.24227172,0.05977054,-0.088733785],[0.9617319,0.5921454,0.08454962,-0.024177684,-0.33587864,0.7352508,-0.7387421,0.39873427,0.21945651,0.05807639,-0.2851063,0.16848388,-0.5095711,-0.648206,0.22489141,0.2630374,-0.10781773,0.05692585],[0.6508581,-0.034968324,-0.0046116984,0.042830404,0.2208985,-0.25876033,0.70590264,0.11468684,1.3392336,-0.462859,-0.19124633,-0.49964252,-0.112543315,0.23059364,0.22540659,0.8281614,-0.30613214,-0.41558707],[0.630478,0.72845036,-0.0040414827,-0.42815435,0.09451815,0.98280245,-0.5989212,0.11570024,0.012325331,-0.067932405,0.11440747,0.027836803,0.35311875,0.12638386,-0.23782413,0.35590366,-0.07542629,-0.12907898],[0.02959114,0.17071922,4.48706,-0.005770228,-1.3331827,-1.5406686,-1.4772613,-0.8343799,2.3675978,2.120532,0.66988176,0.90546036,0.2781295,-0.40613997,0.25572512,0.8060402,-0.9505193,-0.8492369],[0.9206642,-0.5364798,-0.08010512,0.04452516,0.0843251,-0.4182482,0.5212545,-0.20747036,-0.2660874,-0.06005273,0.2478061,-0.095565975,0.18786341,0.72273916,-0.19318765,0.028641535,-0.036184557,-0.10096181]],"activation":"σ"},{"dense_2_W":[[0.38142607,0.042492785,-0.77607405,-0.52826,-0.8402416,-0.63555807,0.26845828],[-0.36448377,0.013470403,-0.7751532,-0.62089664,-0.0025020323,-0.43518564,-0.032616902],[-0.51269734,-0.90651554,0.15344314,-0.97433233,0.13745055,0.95539695,-1.3348669],[-0.29381657,-0.72915894,0.1849723,-0.6422532,0.6542673,-0.23613134,-0.41772324],[0.98330545,0.1279324,0.07058928,-0.120830305,-0.6904588,0.43327442,-0.01615229],[-1.1281452,-0.7857186,0.7657339,-0.6405541,0.15110444,0.3140745,-0.77677655],[-0.10084952,-0.22716746,1.1716565,-0.091143146,1.0249162,1.0087454,-0.28616652],[-1.1938478,-0.12939769,-0.26710513,-0.8057877,0.28079078,0.6419189,-0.73595464],[-1.1646985,-0.43413186,0.16684091,-0.72566366,0.39882493,0.5024153,-0.07758079],[-1.0085496,-0.07076024,-0.20896135,-0.65417224,-0.2732086,-0.113864146,-0.6265197],[-1.1994962,-0.8906176,-0.33401784,-1.0209608,0.37494394,0.8777499,0.0017000877],[0.64241505,0.62737906,-0.6886972,-0.18807864,-0.07910444,0.48681334,-0.09631596],[0.8916427,0.6068368,-0.7540836,0.6216169,-0.3300996,-0.31663188,0.3107477]],"activation":"σ","dense_2_b":[[-0.13178545],[-0.15170422],[0.16972616],[0.02054858],[-0.06958599],[0.123835176],[0.06601367],[0.0011560497],[-0.0824041],[-0.1551787],[-0.07204721],[-0.0050074253],[-0.13309194]]},{"dense_3_W":[[-0.26774383,0.069543615,0.6138564,-0.19084257,-0.054911274,0.68343407,0.6239501,0.41537902,0.5271345,0.11967227,0.032000795,-0.057378754,-0.49043247],[-0.06432742,-0.7016147,0.10944263,-0.1354464,-0.13193382,-0.070864916,0.037493527,-0.88318646,0.12056807,0.35320503,-0.6730902,0.5864121,0.25374225],[-0.7003238,-0.21708901,0.26239115,0.7095383,-0.6740586,0.19532588,0.15621354,0.44259292,0.37482294,0.12022154,0.4868753,-0.46856374,-0.68130004]],"activation":"identity","dense_3_b":[[-0.056218784],[-0.079843864],[-0.01837998]]},{"dense_4_W":[[0.6685718,-0.15755904,1.0103254]],"dense_4_b":[[-0.027803186]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469904AA'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469904AA'.json deleted file mode 100755 index fba85d85ca..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469904AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.154286],[0.76042634],[0.3701081],[0.034407996],[0.7532322],[0.755637],[0.7579886],[0.7569121],[0.7567644],[0.75660825],[0.75161266],[0.034349248],[0.034364954],[0.034366276],[0.034332108],[0.03430826],[0.034186568],[0.033984024]],"model_test_loss":0.010220293886959553,"input_size":18,"current_date_and_time":"2023-08-10_03-48-50","input_mean":[[26.29757],[0.21858484],[-0.00041749518],[0.015462894],[0.21635525],[0.2165749],[0.21686907],[0.21543358],[0.21598789],[0.21505341],[0.21361327],[0.015312114],[0.01533278],[0.015349211],[0.015250495],[0.015165519],[0.014907059],[0.014465246]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.5426987],[0.12417949],[-1.4781233],[-0.028249433],[0.20633578],[-0.13907257],[0.72390795]],"dense_1_W":[[-1.1175315,-0.07495566,0.02891214,0.19389996,-0.45027134,0.13735463,-0.6250549,0.85820234,0.59452385,0.042644564,-0.27779862,0.13595949,-0.09487241,-0.10740118,0.17391424,-0.38815653,-0.27959245,0.3287145],[-0.0005434315,0.7250965,-0.001302344,-0.052765388,0.10030851,0.33485708,-0.21132289,-0.115699075,-0.12958458,-0.18765004,0.22767502,0.3379646,0.17437504,-0.35456493,-0.18415342,0.1511127,-0.023203105,-0.03965679],[-1.095963,0.10147642,-0.028861295,-0.45387205,0.49530742,-0.11415999,0.055746414,-0.2760433,-0.46584845,-0.20907946,0.19582038,0.14730005,-0.041585524,0.4082932,-0.3926017,0.2602935,0.29690772,-0.18358155],[0.0038369219,0.37911403,-0.0045367144,-0.23510593,0.094250835,0.34022862,-0.2284937,-0.13612238,0.27017567,-0.33356893,0.14501272,0.4917901,0.03173992,-0.1809757,-0.032653864,-0.33173367,0.115388945,-0.28278348],[-0.003918218,-0.43321767,0.0073618796,0.5832146,0.45349523,0.29272223,0.3733469,0.47134906,-0.83762276,-0.85482854,0.09775691,0.017050214,-0.01622581,0.47676057,-0.03653979,-0.34529078,-0.30939806,0.26684877],[-0.017790653,0.697322,-6.3714147,0.46992886,0.8733624,0.17037292,0.6718011,0.47720847,-0.32684425,-1.1077062,-1.3093247,-0.6193358,-0.10829769,0.15212813,0.27934057,-0.50214195,-0.5461845,0.43900922],[0.51826936,0.12391658,0.051776137,0.072040915,-0.3065168,0.027357819,-0.37797117,-0.17238732,-0.353872,-0.31592342,0.29717565,0.38155913,-0.3906893,-0.14551696,0.22231571,-0.15257306,0.20485455,1.0147902]],"activation":"σ"},{"dense_2_W":[[0.32709605,1.1362737,-0.17482026,-0.046062417,-0.51949316,0.17334434,-0.2578324],[-0.15792392,-0.9065706,0.30352244,-0.48481166,0.3429801,-0.02744591,-0.19637136],[0.91549116,0.3893739,-0.13849072,0.090474464,-0.4911054,-0.309263,-0.51762164],[-0.4134321,-0.7770418,0.8557953,-0.3741374,0.751485,-0.051834386,-0.51904815],[-0.4399301,-0.61924434,0.6309824,-0.35251677,0.66121125,0.2404353,-0.23494475],[0.086413786,0.6363439,-0.41028103,1.0290276,0.047232375,-0.40705454,-0.4344609],[0.9350081,-1.4516156,0.7794276,-0.565611,-0.6901311,0.41864678,-1.1327723],[-0.8245831,-0.8406043,0.08613439,0.052566387,0.6732224,0.28659236,0.16209623],[-0.20109951,1.205864,0.6048377,0.7521136,0.44900057,0.3182956,-0.281427],[0.8864913,0.30494544,-0.53948045,0.63693535,-0.5898942,-0.17208202,0.16690974],[-0.5475406,-0.7371354,0.4504668,-0.5240461,0.34616926,0.32284823,0.44203338],[0.12659965,0.09303629,0.014360431,0.11488345,0.17780194,0.13185121,0.030691903],[-0.29399133,-1.1127974,0.42915276,-0.2730042,0.13696739,-0.2734059,-0.30105415]],"activation":"σ","dense_2_b":[[-0.095232666],[-0.12903397],[-0.16596866],[0.10246624],[-0.03857397],[-0.073855616],[-0.2992988],[0.2189761],[-0.1223435],[-0.1884392],[0.18001069],[-0.08254514],[-0.029937575]]},{"dense_3_W":[[0.26818132,-0.25044084,0.027241506,-0.19964801,0.56580776,0.22428977,-0.43430313,0.67310864,-0.6071206,-0.75302726,0.5696926,-0.25766462,0.02067551],[-0.5776643,0.3400569,-0.1890818,0.5839983,0.35982898,-0.75322586,0.5884296,0.4361948,-0.04064355,-0.82264584,0.77007246,-0.028092124,0.30400428],[-0.565468,-0.022219652,-0.61670506,0.17880899,0.33762756,0.25232822,-0.6182462,0.07745964,-0.14152253,0.07606692,0.43158156,0.40247133,-0.14412662]],"activation":"identity","dense_3_b":[[-0.02423033],[-0.05393112],[-0.025509434]]},{"dense_4_W":[[-0.25194114,-0.987808,-0.020282954]],"dense_4_b":[[0.045462962]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68522583AA'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68522583AA'.json deleted file mode 100755 index 372c112a42..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68522583AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.100081],[0.7303489],[0.40821353],[0.033808213],[0.72612214],[0.72782314],[0.7296681],[0.7202953],[0.7148411],[0.7080344],[0.7024381],[0.03380297],[0.033810258],[0.03380648],[0.033657998],[0.03346423],[0.033204034],[0.03290225]],"model_test_loss":0.027830945327878,"input_size":18,"current_date_and_time":"2023-08-10_04-40-02","input_mean":[[26.731352],[-0.01177522],[-0.004391138],[-0.011022535],[-0.008092633],[-0.008825226],[-0.0103097875],[-0.0098579945],[-0.0067649335],[-0.0050272304],[-0.0049507814],[-0.0109223435],[-0.010953117],[-0.010988373],[-0.010941988],[-0.010961072],[-0.010930893],[-0.010915838]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.1745371],[0.9457931],[-1.2435032],[-1.0458435],[-0.1081323],[0.035753693],[-0.02165228]],"dense_1_W":[[0.16186859,-0.09768836,-4.7846518,-0.15079269,2.5244157,1.6883308,1.5134919,-0.89384186,-3.5332396,-0.6423725,-0.296458,-1.1548986,0.15355624,0.5327785,0.6254284,-0.37240118,-0.04440246,0.32268947],[2.0046134,0.53838843,3.4404945,-0.1141708,-1.1936749,-0.76779556,-0.97976905,-0.29515216,0.7165664,0.17453694,1.4159857,0.19968158,-0.324134,0.020139258,0.36342832,0.07758869,-0.21961124,-0.24075823],[-0.8806507,-0.36592105,-0.1603686,0.019333879,0.7319277,-0.018883258,-0.007104287,-0.4886063,-0.5159273,-0.25874293,0.71235996,-0.08952812,0.39945298,0.44347215,-0.71560186,-0.11375067,0.1372514,0.08856255],[-0.8596358,0.4530633,0.15744632,0.6229328,-0.19767399,0.50342345,-0.48811507,-0.012905224,0.035012916,0.10218181,-0.18411104,-0.14965416,0.28510785,-0.20222001,-0.84866565,-0.21149859,0.06309471,0.2692289],[0.00787326,0.17291375,0.02989127,0.33595058,0.097436145,-0.8344158,0.12299558,-0.056537054,0.063804835,0.102107935,-0.1609201,-0.4358222,0.17648806,-0.15191726,0.27956975,-0.26774335,0.21951361,0.14714526],[0.0013040424,0.0146544995,-0.034251958,-0.017003387,0.48911396,0.7778323,-0.6013927,-0.24220061,-0.1423357,-0.07045295,0.32420683,0.2770749,0.17541865,-0.6925609,0.13146631,-0.09090916,0.21767132,-0.08619563],[-0.0013283036,-0.76572543,-0.021439318,-0.07231562,0.33608717,-0.9519956,0.80349934,0.13154784,0.053906552,-0.0063607194,-0.05806696,-0.48233724,0.030579537,0.24628532,0.1421058,-0.049592685,0.37368706,-0.28366596]],"activation":"σ"},{"dense_2_W":[[-0.11426035,-0.4633911,0.5931024,-0.13167584,0.3877006,-0.8240802,0.4996165],[-0.6506094,-0.043036364,-0.63225603,0.09525037,-0.0013785976,0.30910346,0.09042436],[-0.111270815,-0.037402347,0.42292774,-0.5026528,-0.06920168,-0.5414584,-0.14867242],[0.62404346,-0.21483791,0.5609062,-0.58235985,0.1793472,-0.63125086,0.14775465],[0.39018965,0.30572656,0.19105321,0.120262615,-0.39587906,-0.3727809,0.19191758],[-0.43854353,-0.4174901,0.2537852,0.023853898,-0.6724934,-0.03747815,-0.44509795],[-0.59352624,0.107269265,-0.10295583,-0.05914811,-0.46114132,0.91326886,-0.28330517],[-0.6905027,-0.06767795,-0.20643814,0.2871444,-0.7398764,0.40445343,-0.16377075],[-0.19539294,-0.33604875,0.30735624,-0.3262871,0.6336829,-0.9044841,0.7461942],[-0.076478384,0.0081171375,-0.45632637,0.25862965,-0.033632897,0.95767784,-0.9119975],[-0.6780045,-0.5742568,-0.19451007,0.9155922,-0.2558469,0.7328771,-0.9628025],[0.10786977,-0.3863365,0.52240795,-0.4421973,0.7063569,-0.8783838,0.16820244],[0.043110512,-0.36765873,0.07240629,0.37819213,-0.38525218,0.62788934,-0.6130581]],"activation":"σ","dense_2_b":[[-0.1541479],[-0.0021927624],[-0.07528638],[-0.08054171],[-0.072549514],[-0.034027867],[0.12834808],[-0.10132512],[-0.065889865],[0.047784895],[0.03540158],[-0.04747654],[-0.065598845]]},{"dense_3_W":[[0.71479976,-0.3480489,0.110358596,0.32083592,0.24253292,-0.28188017,-0.5622667,0.011309102,0.6315449,-0.43116945,-0.5399975,0.29667172,-0.4142423],[0.19218774,-0.09594727,-0.10361748,0.10555191,-0.09383906,-0.56986606,0.03129942,-0.07917779,0.33813822,-0.41512942,-0.36388016,0.6792136,-0.223361],[0.34802097,0.07021865,-0.36761415,-0.12873147,-0.05381047,0.11233469,0.49716663,0.4738285,0.29140377,-0.2302745,-0.18917024,-0.5822452,-0.35502756]],"activation":"identity","dense_3_b":[[0.039899256],[0.044181313],[-0.031747688]]},{"dense_4_W":[[-1.0547942,-0.97846806,0.263912]],"dense_4_b":[[-0.039440837]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552788AA'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552788AA'.json deleted file mode 100755 index 6a3c858682..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552788AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.868239],[0.75070703],[0.34816617],[0.034229066],[0.74701726],[0.74780625],[0.74831426],[0.746065],[0.74128854],[0.7355061],[0.72421074],[0.03417469],[0.03418928],[0.034195792],[0.03400789],[0.033847637],[0.033606727],[0.03322697]],"model_test_loss":0.008458372205495834,"input_size":18,"current_date_and_time":"2023-08-10_05-30-40","input_mean":[[29.99863],[0.20272265],[-0.025704622],[0.008401776],[0.21002854],[0.20785059],[0.205384],[0.19537038],[0.18984987],[0.18505052],[0.1809265],[0.008209475],[0.008253665],[0.008296503],[0.008406267],[0.008323119],[0.0081936885],[0.007896792]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.2260764],[0.6165127],[0.2977843],[-0.14787921],[-0.9168285],[-0.12295077],[-0.09766494]],"dense_1_W":[[1.065022,-0.05936225,0.0022720068,0.08219392,-0.8567543,0.111217014,0.54122514,-0.2706693,-0.15036803,0.25742987,-0.08767648,-0.34830713,-0.027404225,-0.4185975,0.35305434,0.3575998,0.14072141,0.2625152],[0.15924072,0.593216,0.00052627287,-0.1057818,-0.36246762,0.28154594,-0.3878058,0.041176394,0.20087384,-0.038753517,0.042374074,0.48755527,0.036274087,-0.6767191,0.12023098,0.19956696,-0.13944839,0.03492848],[0.26169267,-0.59497786,-0.001051651,-0.324159,0.33932126,0.09371173,0.11345156,-0.016827654,-0.40026185,-0.100701384,0.15730438,-0.13552007,-0.1270308,0.4102569,0.28058168,0.12271481,-0.24961802,0.05837292],[-0.033944216,-0.29202187,0.00077848736,-0.114458814,-0.5727945,0.060648486,0.61588925,-0.11821368,0.11814919,-0.052538417,-0.13625127,-0.7172482,0.51400244,0.333069,-0.10085215,0.11445696,0.17483449,-0.20612186],[0.87344337,0.26699117,0.0022017667,0.28822276,0.37948754,-0.05094396,-0.41495946,0.40114012,-0.0048360685,-0.0020655768,-0.11235444,0.6665909,0.047259506,-0.11638346,-0.71936154,-0.22467732,-0.19744919,-0.10152469],[-0.107145384,-1.0915395,-6.141535,0.70560014,0.4831924,1.1330324,0.95880973,-0.5413501,-0.5439982,-0.9502495,0.21910736,-0.7986927,-0.226854,0.97576135,0.2663551,-0.53631556,-0.1967203,0.27619123],[0.014165441,0.4128995,-0.0009244823,0.15947568,0.20772904,-0.27174422,0.23572557,-0.68967,0.117952354,-0.32811052,-0.07497509,-0.07766617,-0.1715381,0.10645008,0.13909376,0.09034561,-0.076432556,-0.0002952288]],"activation":"σ"},{"dense_2_W":[[-0.11342565,-0.2809018,-0.05111502,0.22586785,-0.046716776,-0.035705794,0.6600342],[-0.18827938,0.9972883,-0.072743565,-0.61405253,0.7193729,-0.41576892,-0.104350396],[-0.3556824,0.66933596,-0.10034228,-0.36175656,0.80487776,-0.048805095,-0.6517391],[-0.0029814816,0.037780087,0.4565041,0.57524407,-0.61115396,0.00441405,-0.3738763],[-0.2594761,0.31262296,-0.09214641,-0.002778288,-0.00446783,0.19304605,0.54612243],[-0.28130808,-0.3503751,0.5588698,0.616398,-0.49632117,-0.41926727,0.7246912],[0.19776937,-0.29551616,-0.80695623,-1.1329869,0.094373874,0.6795281,-0.74388427],[-0.8445154,0.94859,-0.08256833,-0.4775403,0.04127346,0.10181072,-0.6063285],[-0.85923886,0.39777043,-0.36597455,-0.06115376,-0.044814575,-0.2704239,-0.4685487],[-1.1660684,0.25082108,-0.7324697,0.2520158,-1.2055342,-1.5113032,-0.13736865],[0.4879582,-0.67548096,0.3822733,-0.05974599,-0.4401489,0.06402922,-0.13399549],[-0.41230774,-0.33770072,0.6218817,0.5027607,-0.201837,-0.21050662,0.1802105],[-0.17762303,0.13510232,0.5571139,0.447668,-0.12594385,-0.07661345,0.27156433]],"activation":"σ","dense_2_b":[[-0.036336433],[0.23029093],[0.055804957],[-0.042286173],[-0.009081475],[0.06398727],[-0.23855366],[-0.03628939],[-0.059604287],[0.011632554],[0.008110043],[-0.00869093],[-0.060943495]]},{"dense_3_W":[[-0.35496664,0.23448576,0.5805028,-0.4621804,-0.5448057,-0.60412884,-0.11938377,0.13103668,0.5007172,0.321409,0.34096,-0.40516585,-0.017715745],[0.36484855,0.40388605,0.44538534,-0.056106996,-0.292742,0.19839688,0.2952001,-0.43382752,0.5743617,-0.051075302,-0.21471448,0.14332166,0.2699585],[-0.2499691,0.68792695,0.57182634,0.20412138,0.10965183,-0.7152176,0.39847228,0.60519606,-0.0041895057,0.82069314,-0.5085393,-0.22828765,-0.30936882]],"activation":"identity","dense_3_b":[[-0.014063893],[-0.06281853],[-0.02118316]]},{"dense_4_W":[[0.7967157,0.21090265,1.0282162]],"dense_4_b":[[-0.01977677]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552791AB'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552791AB'.json deleted file mode 100755 index 97d661e070..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552791AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.327477],[0.83636034],[0.35854557],[0.03027954],[0.8322574],[0.8326431],[0.8336623],[0.8205453],[0.8127496],[0.8029663],[0.7927199],[0.030091072],[0.030136604],[0.030175311],[0.030065328],[0.02983974],[0.029646473],[0.029447762]],"model_test_loss":0.014091002754867077,"input_size":18,"current_date_and_time":"2023-08-10_06-46-47","input_mean":[[30.319626],[-0.08276231],[0.005369592],[0.004473744],[-0.08501025],[-0.084354036],[-0.08372337],[-0.082539454],[-0.081338175],[-0.07844728],[-0.074738294],[0.0042737313],[0.0043124184],[0.0043546893],[0.004361203],[0.0043273983],[0.0043060128],[0.004311133]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.35763365],[-1.3521506],[-0.016218545],[-0.059472244],[-0.6437557],[-1.6056265],[0.12085991]],"dense_1_W":[[0.87513417,-0.49436525,0.001526756,0.007689951,0.105178826,-0.7741091,0.389623,0.30006444,-0.030422192,0.10987545,-0.14698596,0.18236087,-0.29306155,0.38676205,-0.33443922,0.039674185,0.33462492,0.22763555],[-0.36546978,-0.40689582,2.668961e-5,0.02264227,0.05264314,-0.024173336,0.4129403,-0.48889917,-0.012633747,-0.10086103,-0.20651652,-0.32730335,-0.29228786,0.3802635,0.3812668,0.4096499,-0.3554582,-0.11867983],[-0.0013656212,-0.48252577,-0.0009152643,0.2006504,0.14096452,-0.6883657,0.5257372,0.07914371,-0.047559284,-0.19422947,0.058318842,-0.44962868,0.28549084,0.012210312,-0.064143956,-0.0011885081,-0.015983405,0.013072292],[-0.0026489464,0.5069076,1.9415842,-0.15803127,-0.43643364,-0.22442625,-1.1007931,0.72446126,0.6154824,0.30189446,0.05599185,0.30916336,-0.42455056,-0.12520063,0.21027873,-0.04347085,0.32625684,-0.19425716],[0.9294821,0.54150075,-0.0014356759,0.098655105,0.17580858,0.3025255,-0.4274019,0.063312046,-0.056220684,-0.19399443,0.15516913,0.15510176,-0.17118718,-0.12277757,-0.15992972,0.1450927,-0.30511072,-0.21360834],[-0.38354275,0.5149199,0.00057220226,-0.19913933,0.113392256,0.16671515,-0.8061363,0.12808692,0.49387446,-0.045991942,0.21927999,0.46965662,-0.16261269,0.10389701,-0.14170384,-0.65069014,0.22400732,0.25261372],[-0.002354059,-0.7396432,0.0020271204,0.45820466,-0.25027558,-0.94205016,0.6306626,0.48574498,-0.2435183,-0.0036713302,-0.101162255,-0.15816127,0.22204119,0.070377395,-0.33187887,0.02354076,0.015245039,0.21813555]],"activation":"σ"},{"dense_2_W":[[-0.39639628,0.133772,-0.45599017,-0.12503287,0.6173994,-0.1820395,-0.10319031],[0.52661186,0.6336824,0.38281307,-0.27256545,-0.11690951,-0.31991315,0.35685524],[-0.3293337,-0.0649368,-0.71211916,-0.01983682,-0.04604264,0.21905379,0.22640918],[-0.13469312,-0.3821376,0.38459212,-0.9789118,-0.59137386,-0.69679177,-0.46103966],[-0.3486451,-0.30294892,0.20108142,0.033686325,0.20845367,-0.15991163,0.16748387],[-0.5856937,-0.43619728,0.027885517,0.10118421,0.29912174,0.16026014,-0.145594],[0.5430804,0.85552984,0.428548,-0.4006437,-0.4890019,-0.48459867,0.3640567],[0.05403504,0.021867719,0.0033385737,-0.40292013,0.5227002,-0.3627125,-0.039094802],[-0.40562767,1.3550378,0.45764822,-0.619266,-1.8762536,-0.93922824,0.09558092],[-0.36202994,-0.6913235,-0.7093955,0.21246669,0.16837499,0.5995575,0.14070001],[0.36312523,0.43244222,0.028741337,0.028756998,-0.41653222,-0.8163697,0.50980633],[-0.33022994,0.76520115,0.5691923,-0.50416476,-0.23335694,-0.47498608,0.39545852],[-0.1516905,-0.15376274,-0.5148544,0.33134565,-0.1089893,0.73183095,-0.6926165]],"activation":"σ","dense_2_b":[[0.07102355],[-0.12229542],[0.019641167],[-0.29842442],[0.010732347],[-0.22115242],[-0.14720376],[-0.03818797],[-0.65264404],[-0.054308396],[-0.0794121],[-0.37990314],[-0.015795233]]},{"dense_3_W":[[-0.17495315,0.6230324,-0.2510061,0.2996151,0.20122245,0.16665521,-0.5264948,-0.12510355,0.58361983,-0.035939705,0.39780724,-0.49274892,-0.13300937],[0.19338629,-0.14241812,0.38995105,-0.24322313,0.103984654,0.67614037,-0.59531045,-0.3055774,0.2720826,0.49907777,-0.348274,-0.4995533,0.62145895],[-0.4343396,0.46093857,-0.6372687,-0.59232146,-0.37132394,0.42294338,0.64938694,-0.38425207,0.43624443,0.01882502,0.60109246,0.43596882,-0.4406191]],"activation":"identity","dense_3_b":[[-0.04878774],[0.05141081],[-0.054991424]]},{"dense_4_W":[[-0.57082623,1.0047814,-0.8701593]],"dense_4_b":[[0.05418028]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN.json b/selfdrive/car/torque_data/lat_models/RAM_1500_5TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN.json rename to selfdrive/car/torque_data/lat_models/RAM_1500_5TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/RAM HD 5TH GEN.json b/selfdrive/car/torque_data/lat_models/RAM_HD_5TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/RAM HD 5TH GEN.json rename to selfdrive/car/torque_data/lat_models/RAM_HD_5TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820527T6070405'.json b/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820527T6070405'.json deleted file mode 100755 index 09703241a2..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820527T6070405'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.822513],[0.7748963],[0.45073962],[0.028469948],[0.7594248],[0.7647172],[0.7702192],[0.76471704],[0.7589174],[0.7535919],[0.7483726],[0.02835351],[0.028382754],[0.02841451],[0.028416976],[0.028403616],[0.02836127],[0.028289525]],"model_test_loss":0.005644185468554497,"input_size":18,"current_date_and_time":"2023-08-10_09-20-08","input_mean":[[21.586409],[-0.0068980567],[-0.009099182],[-0.012765147],[-0.003074515],[-0.0043314965],[-0.0054138857],[-0.00872431],[-0.008043755],[-0.007268204],[-0.008552191],[-0.012878481],[-0.012848849],[-0.012813383],[-0.012694143],[-0.012824441],[-0.012981006],[-0.013215528]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.559899],[0.061946217],[-1.1318369],[-0.15356188],[-0.11130223],[-1.6501099],[0.72932065]],"dense_1_W":[[1.2257729,-0.21475899,-0.21481141,-0.06141821,-0.32331187,0.34948754,-0.45195353,-0.7936406,-0.2963517,0.075721286,0.16471535,0.3187927,0.026701737,-0.12669133,-0.19016542,-0.21420473,-0.03571252,0.24129197],[-0.0037353956,1.1463906,-0.032696437,0.08411021,-0.45902684,0.47184968,-0.049507096,0.48809394,0.6835621,-0.15164956,-0.2564982,-0.13430756,-0.05483595,-0.10893071,0.14104505,-0.15664752,0.14854911,-0.14124799],[-0.5031497,0.5740853,0.13468973,-0.07342075,0.22242497,0.5158128,-0.49981844,0.13897888,0.05672014,0.012715707,0.039177578,0.15471649,-0.13522737,0.18366553,-0.012791789,-0.20473395,0.17170367,-0.028233869],[-0.0030404613,-0.23232347,-0.051857546,-0.08527703,0.5234089,-1.2333686,0.76485693,-0.14326906,0.036368743,0.053107988,-0.030047482,-0.16562696,0.020687701,0.39415163,0.3789338,-0.36305478,0.031212157,0.050091427],[-0.00634946,0.2520326,-2.9768014,0.45517653,-0.44722444,-0.4035937,0.13028944,-0.25888947,-0.60737526,0.18608572,0.7329467,-0.059370834,0.17232452,-0.3012327,-0.63019043,0.29433328,0.35139483,-0.2806337],[-0.72473496,-0.41749117,-0.15656829,0.24190299,-0.14515589,-0.86861235,0.59240955,-0.26769835,-0.025524082,-0.033400673,-0.0374126,-0.012645718,-0.2529195,0.034257527,-0.11211495,-0.07982842,0.20105368,-0.08527751],[1.3300412,0.21610664,0.21324499,-0.047655277,0.30579573,-0.16403562,0.3423395,0.5994678,0.36008987,-0.104190245,-0.12160565,-0.28337744,-0.3201555,0.46343824,0.2363151,0.3774341,-0.27325517,-0.117115274]],"activation":"σ"},{"dense_2_W":[[0.89337134,0.06212176,0.69424486,-1.1258126,-0.41406798,-0.03324763,-0.8690317],[0.45488375,0.9383094,0.7518038,-0.23470305,-0.3165762,-1.0129137,-0.03375848],[-0.31297848,-0.49257454,-0.9567864,0.8079615,0.031627808,0.47916612,0.3070335],[0.16672489,-0.57691675,0.05825881,0.7295758,-0.48249677,0.8452979,-0.0969158],[-0.78628397,0.23688492,1.0961475,-0.21738441,-0.89421016,-0.75636774,-0.74580187],[-0.77340865,-0.19145031,0.8292296,0.08286966,-1.4438053,-0.20321132,-1.5541686],[1.4181628,0.6372049,1.5007821,-0.7996564,-0.8494127,-0.7805535,0.40175954],[-0.5131002,-0.28726596,-0.7685454,0.82989246,-0.3419074,0.9553502,0.20237355],[-0.028016198,0.6447288,0.70404804,-0.9766476,-0.08476289,-1.1437272,-0.59247833],[-0.04841889,-0.17168015,-1.1055567,0.8258706,-0.11265719,0.14096239,0.44926792],[-0.7357998,-0.46887338,-0.5601688,0.18314798,-0.3938517,0.6898303,0.30288145],[-0.91847914,-0.9485166,-0.36430508,0.18779275,0.10875428,0.7242329,0.20822012],[0.9209807,-0.09816239,0.44547236,-1.0485634,-0.72605056,0.12374904,-0.86046124]],"activation":"σ","dense_2_b":[[-0.13824841],[-0.037492033],[0.009199112],[-0.032276437],[-0.19626792],[-0.35359505],[0.104143284],[0.13742983],[-0.02941952],[-0.082949385],[-0.0472394],[-0.13388354],[-0.030517787]]},{"dense_3_W":[[-0.50135684,-0.6265797,0.37889096,0.23949896,-0.28617254,-0.80253077,-0.78707784,0.76118404,-0.6785741,0.6882018,-0.12380857,0.76802224,0.35342324],[-0.65878934,-0.25308114,0.5803435,0.40448022,-0.5880374,-0.10790633,-0.61491644,0.7250317,-0.50604415,-0.16505781,0.6877505,0.31448555,-0.26105368],[-0.30674505,0.52787536,-0.73549473,0.4655279,0.70805156,0.37356392,-0.22046967,-0.53852963,0.295031,-0.6098088,0.40994385,-0.40091082,0.61514527]],"activation":"identity","dense_3_b":[[0.037118178],[0.025729012],[-0.0008306772]]},{"dense_4_W":[[-0.45146888,-0.6571699,0.3420233]],"dense_4_b":[[-0.017946098]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G500'.json b/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G500'.json deleted file mode 100755 index 040727ee92..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G500'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.170632],[0.5570021],[0.32616535],[0.036937848],[0.5544301],[0.55469906],[0.55466586],[0.54358166],[0.53542227],[0.5261058],[0.52150166],[0.036922906],[0.036903005],[0.036881007],[0.036733527],[0.03662628],[0.0365955],[0.036601096]],"model_test_loss":0.011051010340452194,"input_size":18,"current_date_and_time":"2023-08-10_09-45-15","input_mean":[[21.523685],[0.005822485],[0.017957574],[-0.0105598625],[0.0046025654],[0.006011144],[0.0077467156],[0.01335771],[0.019210018],[0.024844872],[0.029322863],[-0.010329333],[-0.010309703],[-0.010285427],[-0.010262218],[-0.010182764],[-0.010136091],[-0.01018172]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.8376012],[0.79891944],[0.27328137],[-0.049832694],[0.1671762],[0.77761924],[0.080337375]],"dense_1_W":[[0.061794475,0.615098,-0.45199832,-0.89162534,0.14803112,-0.3359411,1.216409,-0.30902275,-0.46318957,0.15326177,0.5617341,-0.79835445,-0.41347325,-0.11659805,-0.5467362,-0.07835621,-0.23650429,0.081196256],[0.6269029,0.6299682,0.00862801,-0.28406104,-0.40516195,0.34416673,-0.05962201,0.12889835,-0.118009314,-0.006291829,-0.015252909,0.4089935,-0.14335842,-0.44551474,0.32767174,-0.07098034,0.08289599,-0.05129482],[2.873063,-0.39785758,-0.06460063,0.5302846,-0.54400563,-0.32484847,-0.74205005,0.15385602,0.2992983,-0.14630033,-0.20480666,0.5095823,0.26476872,-0.21809368,-0.38910902,-0.36676934,0.13174173,0.21983561],[0.061674196,0.40320727,-0.005555039,-0.012705039,-0.44866937,0.76068926,-0.53796315,-0.019318009,-0.011975164,0.49870455,-0.34061676,0.10459906,-0.10904486,-0.43353584,-0.16262761,0.19058083,0.45760906,-0.37183845],[0.061266888,0.49422592,-2.2183287,-0.2156109,-0.4867127,-0.22925144,0.71946245,-0.42894575,-0.5862933,-0.4373623,1.1160414,0.12841341,-0.36759555,0.023551682,0.07593063,0.50553346,0.03556044,-0.25252578],[0.74545926,-0.32704693,-0.008650265,0.02720982,-0.01538259,-0.82613665,0.5189707,0.14880055,0.040636804,0.12673292,-0.19592556,-0.262724,-0.07316436,0.3629183,0.25224432,-0.09442609,0.19599767,-0.1895605],[0.008984444,-0.8195131,-0.0010790422,0.45667002,0.27273402,-0.70226806,0.18335287,0.106715776,-0.11851017,0.8999131,-0.59194285,-0.27304903,-0.5033789,0.045519818,-0.23001073,0.25903532,0.51413286,-0.51565295]],"activation":"σ"},{"dense_2_W":[[-0.17816369,-0.4823508,-0.19070831,0.3857896,-0.5818765,-0.5350052,-0.750577],[-0.04763508,-0.32846496,-0.28990135,-0.5891694,-0.40825295,0.6042029,0.80569786],[-0.31981805,-0.048176482,-0.6725098,-0.0116866045,-0.7275763,-0.6111508,-0.5524373],[0.8248028,-3.5739028,0.45623106,-1.4498163,0.16980822,-0.20465934,1.124565],[-0.43001968,0.0030000166,-0.078488536,0.76254296,-0.45105755,-0.65158,0.25315326],[0.28314695,-0.2640387,-0.010856731,0.6712196,-0.42694327,-0.7123847,-0.51776206],[-0.08497496,-0.2769552,0.3038657,-1.5984288,-0.94830346,0.76130813,-0.5299745],[-0.13139525,-0.14840417,0.13429053,-0.9094941,0.006232065,-0.209775,0.01644083],[-0.27333236,0.36955395,0.06687941,0.8257492,-0.4901239,-0.8291871,-0.66357756],[-0.25540715,-0.4607236,-0.46596804,-0.80555916,0.07256802,0.75021,0.38117334],[-0.47401762,-0.25782427,-0.48962656,-0.95336634,0.078216136,0.7174792,-0.33049294],[0.53245556,-3.517823,-0.40500528,-1.7386801,2.6048553,-1.0151122,0.45161602],[-0.25264537,-0.55914116,-0.60352135,-0.4744699,0.39310023,0.123256855,0.5423338]],"activation":"σ","dense_2_b":[[0.02130018],[0.03923013],[0.0066096364],[-0.10651471],[-0.02452014],[-0.026465867],[-0.19940089],[-0.33655235],[-0.008171532],[0.14014752],[-0.24019146],[-0.028391115],[-0.08230956]]},{"dense_3_W":[[-0.69569725,0.45874256,-0.28139538,-0.15990418,0.33506617,-0.048326474,0.42024234,0.12925243,-0.30243614,0.646346,-0.046070546,0.755795,-0.38833755],[0.27728352,-0.4111872,0.5240284,-0.023659706,0.40603057,0.42206782,0.19779211,0.20356862,0.623484,-0.61507636,-0.103538364,-0.3267671,-0.52325946],[-0.10045345,0.4899018,-0.33766255,0.53569114,-0.43111655,-0.3958533,0.6952763,0.29030153,-0.5106717,0.21320766,0.12684761,-0.031848744,-0.15174294]],"activation":"identity","dense_3_b":[[-0.1256119],[0.056057606],[-0.06149789]]},{"dense_4_W":[[-0.4201209,0.91140276,-0.7814627]],"dense_4_b":[[0.059609402]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G600'.json b/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G600'.json deleted file mode 100755 index f5a288fa5c..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G600'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.978942],[0.6101572],[0.41588354],[0.03231331],[0.60168684],[0.6050097],[0.60834473],[0.58961505],[0.57773924],[0.56671244],[0.5566466],[0.032140717],[0.032189563],[0.032246154],[0.032141175],[0.0321322],[0.032021564],[0.031848647]],"model_test_loss":0.011636423878371716,"input_size":18,"current_date_and_time":"2023-08-10_10-11-28","input_mean":[[19.614794],[-0.106306285],[0.01432459],[-0.024576934],[-0.10741898],[-0.106938824],[-0.106123485],[-0.099019445],[-0.093359515],[-0.09050246],[-0.08906652],[-0.024685377],[-0.02465698],[-0.024623092],[-0.024553658],[-0.024545813],[-0.02454542],[-0.02470256]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.69355416],[2.4732628],[-1.3702826],[-0.11549802],[-3.2115526],[-0.4695894],[1.7158915]],"dense_1_W":[[-0.09712236,0.70359236,0.029870417,-0.32686847,0.41420302,1.2504632,-0.16431941,1.2449944,0.8515324,0.1591466,-0.47704843,0.42924815,-0.3310643,-0.32485127,0.4103194,0.14313804,0.27483824,-0.3073054],[1.9112779,-2.012766,1.1709712,-0.12909168,0.92364335,1.5146329,-1.5916656,0.3833729,0.68214667,0.8704969,-0.7785849,0.20670438,-0.0054348283,-0.6571034,0.59524465,0.25777373,-0.13047084,-0.13789715],[-0.35545897,0.74289757,0.0010395766,-0.4791203,-0.17787026,0.69020367,-0.2601107,0.35769174,0.03863855,-0.17375207,0.06826012,0.4671819,0.2501633,-0.30800718,-0.009430912,-0.123984225,-0.17020024,0.27680448],[-0.012191877,-0.46145502,3.9199607,0.20028035,0.6080922,1.1058863,-1.2070769,1.5072201,0.40595236,0.57759535,-1.5408669,0.43732843,-0.37236336,-0.17954569,-0.64967644,-0.065201126,0.5412813,-0.12528999],[-2.0663908,-1.4909488,1.3023357,-0.53967714,0.24725075,1.0423123,-0.69051623,0.5551958,0.6623838,0.41527644,-0.6491754,0.6272475,-0.13575684,-0.4233404,-0.0887856,0.60994846,0.2752093,-0.32854816],[-0.28226903,-1.5632701,0.038757235,-0.01621774,1.8377037,-0.7989218,0.74388874,2.3336496,0.76146716,0.1356443,-0.5690615,-0.30151263,-0.21605678,0.47128358,0.29254648,0.062264904,0.07035633,-0.18515895],[0.56221074,1.1516801,0.0010512201,-0.8426568,-1.0685285,1.9994211,-0.8278666,0.5958917,0.074260615,-0.4739713,0.17006992,0.6652615,0.05565689,-0.0064310133,-0.0893498,-0.17889997,0.13203734,0.14932431]],"activation":"σ"},{"dense_2_W":[[0.50028837,-1.064031,0.90041625,0.47736132,0.90677744,-0.90660274,0.13473313],[0.5786526,-0.17570329,1.1356779,-0.316433,-0.18528749,0.074578024,0.07604858],[-0.5514635,0.12420603,-0.9303746,0.07806514,0.043209217,0.44727743,-0.3354667],[-0.97645247,-0.8832375,0.33142787,-0.8761601,0.562086,0.28258607,-0.7472652],[-0.012420426,0.10160729,0.9597554,-0.54730177,0.92053396,-0.76612854,0.1645351],[-0.05629443,-0.6274549,-0.5702288,-0.47625864,0.007329011,-0.00937992,-0.27663508],[-0.39911163,-0.47183767,-0.26182827,-0.5910186,0.24520285,0.8801795,-0.7366388],[1.183774,0.38708115,0.95070434,-0.27969792,-0.647032,-0.06648758,0.63079244],[-0.92506593,-0.43120384,-1.1437249,0.3507138,0.048965972,0.2929897,0.023275621],[0.065495975,-0.7477936,-0.49741834,-0.43279028,-0.4596529,0.5749685,0.10943722],[-0.26667404,0.1566403,-0.56995285,0.18439355,0.006458198,0.0508498,-0.6114961],[0.07948333,0.6847074,-0.94002885,0.18541375,-0.5421211,0.40665948,-0.54692215],[-0.45402494,0.73848003,-0.42449367,1.1125244,1.3159411,-0.5954729,-0.3588103]],"activation":"σ","dense_2_b":[[-0.6029877],[-0.059801936],[0.04953782],[0.036911793],[-0.211757],[0.055112183],[0.07609173],[-0.14383955],[-0.064524055],[-0.18153428],[-0.24345446],[-0.07112296],[-0.13606189]]},{"dense_3_W":[[0.014554647,0.094213516,-0.67582,-0.6185381,0.2408976,-0.10117373,-0.69420695,0.073527485,-0.32116425,0.22428901,-0.08845355,-0.14691015,0.21477464],[-0.8124889,-0.4184272,0.58543867,0.62858254,-0.21226135,0.3507662,0.030289248,-0.5906286,0.029745838,0.5918081,0.020885047,0.24012372,-0.18108715],[-0.5155024,-0.053247117,0.26342782,-0.14311959,-0.32982498,0.58627313,0.5567257,-0.2194575,0.4445848,-0.44104552,0.24620505,0.69306016,-0.55217963]],"activation":"identity","dense_3_b":[[0.059930358],[-0.027894666],[0.031020114]]},{"dense_4_W":[[1.1718056,-0.8948126,-0.15244067]],"dense_4_b":[[0.05171624]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521T00403A1'.json b/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521T00403A1'.json deleted file mode 100755 index 011cf806ea..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521T00403A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.092253],[0.8257708],[0.45484608],[0.028356912],[0.8140217],[0.81918985],[0.82255614],[0.8102244],[0.7955667],[0.77078706],[0.7444314],[0.028424477],[0.028405886],[0.028365526],[0.02817091],[0.028066315],[0.02797186],[0.027903816]],"model_test_loss":0.008641937747597694,"input_size":18,"current_date_and_time":"2023-08-10_11-28-48","input_mean":[[22.111403],[-0.020468052],[0.00260176],[0.017814223],[-0.019568035],[-0.019937012],[-0.02050278],[-0.017664416],[-0.015589151],[-0.013915732],[-0.0077555873],[0.017904663],[0.01790113],[0.017888824],[0.018040547],[0.01814623],[0.0184057],[0.01856536]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.8901903],[-0.7438429],[-0.6122344],[-0.2412558],[0.8543316],[-0.3185247],[1.8399776]],"dense_1_W":[[1.1625189,0.40039057,-0.0025008812,-0.41890216,0.16774665,1.3301513,-1.05835,-0.43560216,-0.29536605,-0.29428786,0.5059595,0.15214878,0.3311833,-0.1092579,-0.12995712,-0.2121695,-0.25328377,0.34366265],[-0.2108492,1.8213944,-0.0037650513,-0.4443187,-0.9336769,0.5478224,-0.17455208,-0.13268296,0.30928424,0.40694132,-0.46156526,0.110320315,0.2874757,0.1347806,0.08251065,-0.11447139,-0.15634517,0.11815532],[-0.39651474,0.2910717,-1.0581565,-0.39096954,-0.84142905,-0.6921981,1.3464824,-0.6867708,-0.22886333,0.3074725,-0.056309637,0.3235317,0.21882245,0.5208447,-0.23176116,-0.3196763,-0.3908853,0.4924444],[0.023868388,0.93133456,6.693503,0.1693899,-0.6633739,-0.0019848838,-0.81877935,0.98811,0.14710788,0.8430833,-0.9749285,-0.027155153,0.3262936,-0.36924264,-0.38995093,-0.27307773,0.2114907,0.10148348],[0.41686654,1.3670295,0.0021478476,0.057002787,-0.14275764,-0.056658525,0.024400754,-0.086303845,0.66810167,-0.03742678,-0.23496434,0.30531916,0.17594281,-0.22570042,-0.13516694,-0.38421035,0.20677494,0.019969082],[1.0289154,-0.64804214,-0.0014387759,0.42662656,0.14895122,-0.58820724,0.22127119,0.34592313,0.31323263,0.24369654,-0.36650044,0.03182343,0.10101775,-0.264594,0.10111715,-0.0765178,-0.1477554,0.11140398],[0.5695519,1.808156,-1.253366,0.49105036,-1.9823967,-1.4973999,2.9290652,-1.7067322,-0.6763123,0.7516668,-0.19734581,0.3499678,-0.111037284,-0.2012088,-0.07701846,-0.0106067145,-0.5977169,0.38696328]],"activation":"σ"},{"dense_2_W":[[0.012349895,-0.081942245,0.24179463,0.25615865,-0.3466578,0.20768717,0.20456062],[-0.34042543,-0.95279694,0.40695366,-0.15362829,-0.15595287,0.58774436,0.04863392],[1.3811588,1.5968466,-1.302473,0.5022756,1.007051,0.15855049,-0.41123948],[0.5894904,0.29552183,-0.088070914,-0.05923328,0.14361995,-0.48715538,-0.15394852],[0.6696779,0.8154732,0.08090532,-0.067599624,0.30964845,-0.4651497,-0.98328984],[1.048996,1.7286566,-0.8740424,0.68472356,0.6781938,-1.3097667,-0.841068],[-0.5152714,-0.8245123,0.51846474,-0.19924398,-0.9657816,-0.46467522,-0.2969826],[0.5162466,-1.3718777,-0.81976885,0.5777913,-1.1951425,0.52725565,-1.5065942],[-0.6157756,-0.64146185,0.28268078,0.11798595,-0.19853584,0.59471726,0.19424395],[-0.51709485,-0.27288422,0.44598293,-0.50114965,-0.4821885,0.1842942,-0.13447413],[0.30716494,0.5455412,0.2820038,0.42298153,-0.16316639,-0.67882645,-0.80919987],[0.20057538,-0.6075936,0.021517077,0.0058594905,-0.4455176,0.8283304,-0.04153079],[-0.5672435,-0.55653644,0.9335801,-1.064612,-0.98080814,-1.6662495,-0.7125999]],"activation":"σ","dense_2_b":[[-0.04758697],[0.103950314],[-0.21034029],[-0.1759661],[-0.14534564],[-0.4014301],[-0.07821672],[-0.34081164],[-0.09482991],[-0.00027300368],[-0.3289372],[0.22015864],[-0.12635086]]},{"dense_3_W":[[0.08841069,-0.7012008,-0.27067128,-0.22566004,0.42384112,0.537129,0.3303587,-0.202971,-0.10006057,0.25611818,0.3373171,-0.31684256,0.22898418],[-0.20768598,0.04598255,0.601375,0.29420632,0.33671921,0.5732239,-0.68677086,-0.5184719,-0.42104113,-0.5277463,0.5918677,-0.5941145,-0.60128295],[0.22220895,-0.21446738,-0.119648,-0.22185299,0.34326845,0.40759936,-0.04515529,-0.16942169,-0.40177232,0.38087803,0.14435387,-0.41597226,-0.17067248]],"activation":"identity","dense_3_b":[[-0.03592224],[-0.03948418],[0.031077854]]},{"dense_4_W":[[0.37178338,0.77815956,0.08979673]],"dense_4_b":[[-0.04114462]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516A00604A1'.json b/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516A00604A1'.json deleted file mode 100755 index 3ce7297d91..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516A00604A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.290525],[0.82917035],[0.45113942],[0.041450657],[0.808434],[0.81629485],[0.82408255],[0.80830437],[0.795252],[0.78207934],[0.75818783],[0.041417964],[0.04143028],[0.041436702],[0.04143413],[0.041470982],[0.041412164],[0.041415334]],"model_test_loss":0.009140637703239918,"input_size":18,"current_date_and_time":"2023-08-10_11-55-29","input_mean":[[21.323723],[0.03325226],[-0.0033735863],[-0.0014594422],[0.031559683],[0.031856444],[0.03170563],[0.030355902],[0.029319406],[0.029543923],[0.028728634],[-0.0014694724],[-0.0014749364],[-0.0014824574],[-0.0015196581],[-0.0014603077],[-0.0013572131],[-0.001339693]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.56922615],[0.041300163],[-1.254721],[-0.03413835],[-1.6554084],[-0.17410408],[-0.61522776]],"dense_1_W":[[1.0540022,0.32624736,-0.00025852903,-0.04124151,0.22274004,1.4750109,-1.0787313,-0.99540067,-0.21925406,0.2080301,0.2912927,-0.14616714,-0.25007066,0.20059223,-0.13467374,-0.0125623,-0.09478596,0.01950804],[-0.009923938,-0.8645872,-7.849316,0.710686,0.36944547,0.15362212,0.93729883,0.06761643,-0.86989343,-0.44896173,0.77435964,-0.17029198,-0.030723508,-0.21656048,-0.28410506,-0.06316728,0.2806839,-0.2605462],[-0.22319421,1.3061746,-0.0011745724,0.087363705,-0.25787622,0.4865888,-0.5896333,0.6109107,-0.22302917,-0.10719543,0.017179906,0.39940724,-0.05673451,0.004958241,-0.6851484,0.37105274,-0.19090329,0.16849352],[-0.00035891216,-0.08626613,0.7303526,-0.68880993,0.22034171,0.9209459,-0.9556948,0.24309121,0.3545939,-0.0061660036,-0.62081426,0.31249496,0.24340105,-0.7395673,0.9197471,0.015660668,0.32094327,-0.3404047],[-0.28631234,-1.2720017,0.0011188913,-0.2188701,0.4519371,-0.4818437,0.28755167,-0.6112673,0.016787104,0.31543645,-0.056267515,-0.013484296,-0.31466198,-0.011283184,0.7387095,-0.08435522,-0.17678128,-0.018290224],[0.0018439082,-2.029053,0.008057842,0.5382048,0.2763366,-0.38902655,0.37340102,-0.40996662,-0.72045624,-0.2956851,0.42397067,0.25387588,-0.2772578,0.2145016,0.18141706,0.32736105,-0.10156828,0.018716993],[1.0636653,0.48715422,-0.0015376196,0.06604384,0.097244695,-1.8101829,0.46069503,0.8842625,0.013887742,-0.037064083,-0.32184562,-0.029657703,-0.070020884,0.14429364,-0.09371257,0.57893306,0.1488897,-0.2923841]],"activation":"σ"},{"dense_2_W":[[0.7879515,-0.46467248,1.0794638,0.7671335,-0.037539307,-0.652591,-0.44380203],[0.33411276,-0.23360157,0.31899008,0.79018146,-0.8197005,-0.58276,-0.74289805],[0.024688005,-0.13412961,-0.04840187,-0.8028189,0.66260815,0.03016398,0.039253287],[-0.018770358,-0.40480068,-0.46193084,-0.3494696,0.14812449,-0.6306497,-0.5127451],[-0.16712199,0.83740616,0.36462277,-0.13354221,-0.23577684,0.30791536,-0.43564942],[0.6434626,-0.8392937,1.6532009,0.7021095,-1.2320117,-1.1602876,-0.48219097],[0.6646111,0.21732892,0.49050468,-0.043008015,0.15137905,-0.48478547,-0.7212236],[0.11034068,-0.25311738,0.92781943,0.45044476,-0.9269697,-0.19231662,-0.4140086],[-0.7476244,-1.0192593,-0.04007068,0.5831176,-0.26690418,0.002005247,-1.3112344],[-0.5888374,0.08341635,-0.115199275,-0.922099,0.46274543,-0.19802791,-0.35727945],[-0.46942028,-0.17014697,-0.69315624,-0.0143117765,0.60911614,-0.15416178,0.62788534],[-0.84331405,0.302827,-0.99390453,-0.7173678,0.94187963,0.43155667,0.8959295],[-0.7744463,0.28774765,-1.1058409,-0.44697827,1.1843737,0.58229053,0.52381843]],"activation":"σ","dense_2_b":[[-0.0032762832],[0.09442419],[-0.22760114],[-0.14811619],[-0.021788245],[0.3878685],[-0.08048255],[-0.012592701],[-0.31711572],[-0.11638991],[0.0040142215],[0.04542833],[-0.013753473]]},{"dense_3_W":[[0.28196597,0.22568545,-0.030387998,-0.18586706,-0.16660844,0.5718057,0.15152381,0.44033635,0.2491916,-0.37710536,-0.65969247,-0.5834342,-0.57187986],[-0.628642,-0.025283614,-0.596149,0.47220096,-0.15986364,0.097276665,0.09287301,-0.3092298,-0.31016326,0.29485568,0.55567294,0.20108289,0.51474637],[-0.26703876,-0.70533663,0.45624056,-0.48600736,-0.64598805,-0.038812235,-0.69938004,0.40345365,0.2961252,0.4420242,0.5804485,0.38022405,-0.23318103]],"activation":"identity","dense_3_b":[[0.049912658],[-0.018233176],[-0.024009932]]},{"dense_4_W":[[0.8335982,-0.14927465,-0.36007002]],"dense_4_b":[[0.041336924]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143K xf1x892033xf1x820514UZ070203'.json b/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143K xf1x892033xf1x820514UZ070203'.json deleted file mode 100755 index da7a4077ac..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143K xf1x892033xf1x820514UZ070203'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[11.043713],[0.70319986],[0.5343478],[0.026934588],[0.6932889],[0.6982947],[0.70214796],[0.6804861],[0.6649965],[0.6459059],[0.6288712],[0.02683069],[0.026860924],[0.026891591],[0.026939137],[0.026965177],[0.027052335],[0.027131638]],"model_test_loss":0.007857225835323334,"input_size":18,"current_date_and_time":"2023-08-10_12-47-08","input_mean":[[22.51676],[0.0007204448],[0.013955519],[-0.007230524],[-0.0025695318],[-0.0022219676],[-0.0015167582],[0.006477074],[0.012144769],[0.0140706785],[0.014874495],[-0.0073296432],[-0.007318436],[-0.007308196],[-0.0074638575],[-0.007604219],[-0.007796417],[-0.007880043]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.15176187],[1.7611258],[0.08499729],[1.2638843],[-1.0145266],[1.1479009],[0.019360576]],"dense_1_W":[[0.002253989,-3.1604483,2.767584,-0.8068704,2.3291543,2.6853511,-1.0791886,0.007758601,-0.49927247,0.57279307,-0.27753213,0.6716626,-0.06696021,-0.76052266,0.6966655,0.7008176,-0.40914094,-0.1446268],[0.7218885,1.6974216,0.0065495796,0.4848664,-0.38044524,0.9584917,-0.35017136,0.2935823,0.013307751,0.07913103,-0.08967284,0.17916568,-0.022755025,-0.45461747,-0.017031884,-0.22419493,-0.029785138,0.11329553],[-0.021195402,0.41831255,-0.006486072,-0.20005222,-0.044353534,1.5854481,-0.4566311,-0.5508707,0.0053089573,-0.73440605,0.7127015,0.0178563,0.105017535,-0.10557691,-0.08303766,-0.3148053,0.1120448,0.08851348],[1.0059944,-1.3769217,0.0028758708,-0.17301795,0.38417014,-0.8320218,-0.0021920572,0.05236675,-0.11604148,-0.010877651,0.017621847,-0.31199968,0.26072103,0.14645621,-0.060435038,0.23222387,-0.07030094,-0.048769366],[-0.59738463,-1.4774386,4.2301564,-0.6372516,0.28283474,0.29814866,-1.5950772,-0.37465736,-0.046396185,-0.23227905,0.2788923,0.43851766,-0.13952476,-0.1730685,0.5122576,0.09155205,0.22722334,-0.23425691],[1.9368905,-0.55235744,-0.030420046,0.088646464,-0.8423889,0.40580097,-1.086312,-0.1729247,0.11532571,-0.07618555,-0.12122231,0.14744973,0.014324671,-0.49680474,0.14322798,0.3056609,-0.1648101,-0.03914734],[-0.017226573,0.9975025,0.028348321,0.26694727,-1.7435403,0.6003638,-0.015127457,0.33234358,0.77899,0.36002707,-0.7812798,-0.110702105,0.4372163,0.062443327,-1.0144533,0.07515875,0.14223565,0.11260919]],"activation":"σ"},{"dense_2_W":[[-0.3708766,-0.09346849,-0.4860665,-0.28673357,-0.20471741,-0.3887301,-0.53816146],[-0.2870411,0.077891976,-0.7692872,0.46041366,-0.08263284,0.18123056,-0.50797004],[0.8342386,-0.045646798,0.4450974,-0.23703974,-0.12750176,0.7012232,-0.08630407],[0.08431561,-0.07679201,-0.581064,0.011516861,-0.7343563,-0.6116229,-0.34984374],[0.25569338,-0.5237751,-0.48068842,-0.102060966,0.28852814,0.32561827,-0.7739834],[0.17638424,-0.30714586,-0.8407769,0.7255838,0.32686406,0.014714416,-0.67529327],[0.15759718,-0.1990726,0.6290832,-0.42295182,-0.64416325,0.053911954,0.57387424],[-1.3421621,-1.2502698,0.12817562,-0.2831332,-0.016792206,-0.8235658,0.19831528],[-0.8367818,-1.409201,0.18254657,0.4927183,-0.25860602,-1.0264908,-0.50290155],[0.47554544,0.058592763,-0.0097552,-1.9191943,1.0258328,-0.8242871,0.45348266],[-1.2065568,-1.4047163,0.113010526,0.4773201,-0.4767762,-1.2966703,0.2312964],[-0.18884628,-0.058959916,-0.041673712,-0.5327593,0.11240756,0.10169141,-0.23927355],[0.22284397,-0.29184937,0.9790536,-1.3780024,-0.2994004,0.49964294,0.48355368]],"activation":"σ","dense_2_b":[[-0.22963583],[0.032741938],[-0.04570257],[-0.08706406],[-0.14223282],[0.05371619],[-0.34291068],[-0.20564795],[-0.061394084],[-0.5258954],[-0.060946673],[-0.1682708],[-0.30500868]]},{"dense_3_W":[[-0.109130874,0.1274272,0.13656163,-0.4027122,-0.4333919,-0.6936401,0.502236,-0.3675514,-0.7237411,0.4035158,-0.47524786,0.09295235,0.14962798],[-0.16585311,0.47740844,-0.37112427,0.06724968,-0.37363434,0.06406272,0.47516382,0.118478574,-0.022609822,0.2940244,-0.0018366133,-0.40694827,-0.63223433],[0.009586715,0.5517231,-0.34838903,0.078904286,-0.039595366,0.116432205,0.003195687,-0.17880835,0.5144741,-0.46928853,0.36233348,0.4112465,-0.08295281]],"activation":"identity","dense_3_b":[[0.073130004],[-0.049100634],[-0.073537566]]},{"dense_4_W":[[1.1643018,-0.47747687,-0.8026266]],"dense_4_b":[[0.068460904]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143M xf1x892041xf1x820522UZ070303'.json b/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143M xf1x892041xf1x820522UZ070303'.json deleted file mode 100755 index 97f7731e2e..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143M xf1x892041xf1x820522UZ070303'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.427667],[0.83860636],[0.42204696],[0.03361851],[0.81973565],[0.825077],[0.8310441],[0.83052015],[0.8284627],[0.8263309],[0.8187787],[0.033480283],[0.03350828],[0.03353586],[0.033594076],[0.0336516],[0.033648238],[0.033631567]],"model_test_loss":0.008597739972174168,"input_size":18,"current_date_and_time":"2023-08-10_13-12-36","input_mean":[[25.706522],[0.050851874],[-0.010751898],[0.01802959],[0.054632157],[0.05350465],[0.052438986],[0.04850811],[0.048906337],[0.046515435],[0.045032594],[0.018018972],[0.018040042],[0.018053347],[0.018092638],[0.018076882],[0.018033529],[0.018010886]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.2964697],[0.049180523],[-3.1576617],[0.118301444],[-0.61603487],[0.25273886],[-0.07330951]],"dense_1_W":[[0.89546925,0.7464279,0.35021314,0.22637925,-0.2754313,0.27137527,-0.031470492,0.33797157,0.21643418,0.26727158,-0.23981565,0.43944034,-0.3634637,-0.32961583,0.30687925,-0.18917838,-0.14749566,0.04560524],[0.0062736324,-0.26759228,-3.0462065,0.030409567,-0.7790592,-0.9642961,0.74581957,0.029767705,-0.2603852,0.43679196,0.83964103,-0.31235635,0.11810286,-0.33990052,0.35530522,0.512531,-0.19636977,-0.21697098],[-1.2924967,1.5836774,0.49238458,0.17067905,-0.25315788,0.8040949,-1.3140789,0.90885764,0.10285396,0.12174135,-0.1821378,-0.03410296,-0.02985042,-0.05142844,-0.092534445,0.31806526,-0.14324093,-0.14495374],[-0.0056716613,-0.20092379,0.015451282,-0.03791514,0.30047786,-0.6232725,0.5658962,0.2011616,-0.2557471,-0.06808377,-0.20146759,-0.44247743,-0.28945133,0.34938657,0.24206486,-0.2013541,0.4648372,0.19353375],[-0.05128189,0.67123437,0.06952555,-0.0042294925,-0.14324088,0.27791318,-0.5421431,0.23997568,0.13052511,0.08122149,-0.13987608,-0.022714188,0.032299228,-0.37737137,0.39930877,0.19679675,-0.15827186,-0.10318431],[-0.019568905,-0.0607303,0.0130618,0.12254651,0.45252982,0.62943685,-0.3645628,-0.24168354,-0.5303252,-0.24557371,-0.016784955,-0.15041395,-0.44035485,0.090951286,-0.45376906,0.050149996,0.75379664,0.5303551],[0.0017316106,0.90743756,-0.00965252,-0.23193015,-0.2623223,0.7361792,-0.38086128,0.18679944,-0.03619202,-0.030559268,0.008687389,-0.06500352,-0.14568505,0.24354985,0.37842107,-0.5658337,0.10926247,0.07731545]],"activation":"σ"},{"dense_2_W":[[-0.39177263,-0.18800414,-0.20788462,0.11247796,-0.22365552,-0.31875002,-0.5684635],[-0.40389916,-0.6881541,0.6079956,-1.2894017,0.4109726,0.6156602,0.94629717],[-0.7998929,-0.7778953,-0.44944042,-0.64266866,-0.12719534,-0.47801676,-0.39805946],[-0.5706913,0.22585051,0.16944969,-0.791522,0.31455386,-0.68588865,0.5746767],[-0.30519763,0.1677756,-0.25193778,0.90596414,-0.032425787,-0.3528361,-0.6918698],[0.21673183,0.024453318,0.1322771,-0.5855296,0.33343047,0.44287738,0.5721365],[-0.5699235,0.2542559,-0.35358787,0.50997967,-0.2712492,-0.5551658,-0.40215912],[0.2629367,-0.16355118,0.033490267,-0.13413614,0.5478591,-0.032118343,0.912505],[-0.36946553,-0.42410433,-0.52718824,-0.29544082,-0.79523194,-0.59584975,0.060524564],[-0.87224454,0.47336072,0.19169393,0.46603736,-0.86350787,-0.010868162,-0.6611907],[-0.67190355,0.14076924,-0.05090652,0.82290465,-0.009441278,-0.669959,-0.41791293],[0.21663819,-0.7003845,-0.1493456,0.60176605,-0.48739564,-0.47414222,-0.7249381],[-0.7122426,0.54805565,0.38896307,0.3285942,-0.112064436,-0.25502503,-1.1255239]],"activation":"σ","dense_2_b":[[0.03228759],[-0.33656517],[-0.34582642],[-0.14028646],[0.08078773],[-0.21520647],[0.10405124],[-0.26432717],[-0.13297138],[-0.03255631],[0.012594238],[0.13707925],[-0.05311798]]},{"dense_3_W":[[0.3323226,-1.0349873,0.16582553,-0.26558918,0.5585341,-0.50477654,0.5019021,-0.44945425,0.1489514,0.6722085,0.6043886,0.6088044,0.074028775],[0.32264686,0.2705527,0.6175214,-0.29842913,-0.061648432,0.5753947,-0.5904476,0.5447954,-0.03628221,-0.34314078,0.0864569,-0.61685383,-0.45528167],[0.63654476,-0.5604362,-0.044634674,0.42495975,0.19226094,-0.08704097,-0.45119545,-0.30201146,-0.48162442,0.5252597,-0.18146215,0.050959926,0.21880749]],"activation":"identity","dense_3_b":[[-0.0937596],[0.03815688],[0.062478464]]},{"dense_4_W":[[-1.019849,0.32047084,-0.07043468]],"dense_4_b":[[0.074612744]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070600'.json b/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070600'.json deleted file mode 100755 index 4e379cc35c..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070600'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5485353],[0.842432],[0.47768155],[0.04491059],[0.8398388],[0.84115833],[0.841805],[0.82316613],[0.80845445],[0.7870207],[0.7709587],[0.044732787],[0.04478789],[0.044834975],[0.044941053],[0.04496564],[0.04483491],[0.04457904]],"model_test_loss":0.006399661768227816,"input_size":18,"current_date_and_time":"2023-08-10_14-01-50","input_mean":[[18.00953],[0.099562876],[0.011085797],[0.0136965355],[0.093436636],[0.09476455],[0.09581153],[0.100991],[0.10254183],[0.103215754],[0.09966734],[0.013582862],[0.013622751],[0.013662026],[0.013673613],[0.013685121],[0.013669784],[0.013470834]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.15596858],[0.4892694],[-2.485747],[-0.9076746],[-2.5210748],[0.62608117],[-0.12859546]],"dense_1_W":[[0.06842267,-0.8856152,-6.732937,0.19605958,0.741428,0.17544515,0.8053877,-0.35061014,-0.9764092,0.036799543,0.6009394,-0.6558462,0.35444188,-0.045649398,-0.06968357,0.21508473,0.2215049,-0.29990086],[-0.05740703,2.9165752,-0.005158554,0.15602402,0.39699048,0.5971187,-0.41904238,1.342937,1.2498165,0.20092702,-0.7303743,0.651644,0.032748777,0.0769538,-0.3169141,-0.06470094,-0.28091532,0.12019054],[-1.1610528,-0.90291053,-0.31168118,0.055444643,0.44807604,-0.53198224,0.92507297,-0.8764255,-0.11257939,-0.023954267,0.044729616,-0.0076007335,-0.1563039,0.1664793,0.21945952,-0.2034357,0.105529465,-0.06975108],[0.7200636,0.8466922,-0.007632461,0.033045746,0.05856158,1.3452346,-1.1502894,-0.12675957,-0.031347644,0.048609737,0.10773478,-0.09310796,-0.0042046523,0.009717507,-0.48196545,0.12704822,-0.033978984,-0.037001982],[-1.2062674,0.9051149,0.32335874,-0.1533066,-0.51617926,1.020792,-1.4042579,0.9042442,0.25317815,-0.05583252,-0.03010343,0.20175298,0.094550155,-0.16070417,-0.47876874,0.32050544,0.077573724,-0.015020535],[-0.7045055,0.2921713,0.0013640912,0.19007114,0.12720339,1.0896366,-0.5078957,-0.07863772,-0.027926547,0.21197884,0.007679035,0.08988427,-0.16537076,0.047214698,-0.45457175,-0.35825354,0.05781769,0.10457059],[-0.00158783,-0.2575547,1.3867532,-0.40103778,0.7387132,0.89181244,-0.06297082,0.24265654,0.16146004,-0.4570955,-0.37828583,0.21716939,-0.32538953,0.059181254,-0.2786397,0.0642267,-0.0045156525,0.13521087]],"activation":"σ"},{"dense_2_W":[[-0.054360803,-0.93450505,1.1069156,-0.25341234,-0.6672028,-0.56871617,0.46180332],[0.66834545,0.311226,0.92539716,-0.7637285,-1.0001141,-0.04506302,-0.79037106],[-0.336666,0.43282512,0.5231884,-0.33170068,-0.5402114,-0.67988545,-0.52936053],[-0.32985738,0.09310308,0.2807457,0.7175757,0.3434783,-0.054528777,0.14698726],[-0.9319756,0.55159384,-0.94562346,1.0089458,1.0009207,0.78610414,-0.39165795],[-0.24430718,-0.17523226,-0.21583228,-0.25136957,0.7013932,-0.1965411,0.6438836],[-0.7124287,-1.5932802,0.37554362,-0.114048585,0.643049,-0.22720207,-0.061459664],[0.72168005,-0.4816915,0.06136277,-0.7875475,0.35240883,-0.42538184,-0.2659062],[0.26363212,-0.8677782,0.10591171,0.32766673,-0.31068003,-0.60304576,-0.44430232],[-0.5729361,0.18546028,-0.095558025,-0.46766767,-0.7543451,-0.78625745,0.0124949105],[-1.4273218,0.6574617,-1.3855623,0.2680664,-0.93055564,-1.384056,0.09248577],[-0.146575,0.10351455,0.07099619,0.09571776,-0.004123669,0.1455809,-0.22726196],[-0.46773708,0.4945239,-1.1005019,0.59550714,-0.406852,0.60328615,0.46037948]],"activation":"σ","dense_2_b":[[0.15551081],[0.063135676],[0.21190381],[-0.12186496],[-0.32130012],[-0.10350768],[-0.1497363],[0.13513808],[-0.3129862],[-0.019406611],[0.081084184],[-0.107219465],[-0.31931284]]},{"dense_3_W":[[0.038192756,0.90545493,0.22436228,-0.08363581,-0.95819527,-0.48104054,0.14439842,0.49872485,-0.52165586,0.4655063,0.96369386,0.08209213,-0.043807942],[0.24979138,0.046216443,-0.24985886,0.46128502,-0.14784333,0.29726094,-0.09796824,-0.37513828,-0.13519555,-0.10046912,-0.019793414,0.26303867,-0.32336316],[0.6733837,0.65772706,0.5991573,-0.2601565,-0.8885243,-0.5688783,0.6620791,0.56542003,0.17227326,0.053705327,0.33648482,-0.17200494,-0.6597408]],"activation":"identity","dense_3_b":[[0.020342646],[0.01258384],[-0.08370784]]},{"dense_4_W":[[-0.4212374,0.007912168,-0.6052606]],"dense_4_b":[[0.07501488]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070700'.json b/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070700'.json deleted file mode 100755 index b48d15badb..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070700'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.325298],[0.7057722],[0.47287977],[0.031460747],[0.6921104],[0.697218],[0.70135456],[0.69763875],[0.685733],[0.66782856],[0.6485855],[0.0315074],[0.031504214],[0.031491026],[0.03148004],[0.03150045],[0.03156164],[0.031616196]],"model_test_loss":0.006121247075498104,"input_size":18,"current_date_and_time":"2023-08-10_14-26-22","input_mean":[[22.306183],[0.0053800372],[-0.00795939],[0.0013631819],[0.009645737],[0.008109978],[0.007211559],[0.00485605],[0.001991116],[0.0019658916],[0.0011436291],[0.0012911396],[0.00132131],[0.0013504513],[0.0012909095],[0.0012066179],[0.0010719349],[0.000821153]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.037611403],[-0.039259925],[5.3037424],[-0.014289626],[-0.04116731],[-5.299878],[-0.047248736]],"dense_1_W":[[-0.0064652376,-0.86517066,0.009122232,0.64427334,0.60157204,-1.5649973,0.5922017,0.32393336,0.10592543,-0.10904223,-0.08311717,-0.41152525,-0.17221938,-0.024847839,-0.42303094,0.6325312,-0.20199557,-0.13121592],[-0.01127936,-0.17854609,3.2403448,0.4238691,-1.0125954,0.7522482,-0.7303807,0.5404295,1.1757061,0.29872945,-0.5916982,0.07851869,0.16200984,0.12478189,-0.49618125,-0.35802162,-0.44821835,0.57569295],[2.7688413,1.5677587,0.41038755,-0.33729497,0.1729276,-0.8542694,-2.1819742,1.2398255,1.4715692,0.047309943,-0.2706118,-0.24824658,-0.13942274,0.20966528,0.4355863,0.31434494,-0.293769,-0.07769441],[0.0036463365,-1.5028012,1.0467403,-0.26813957,0.76441354,1.4152889,-0.99150753,1.1589833,0.72802955,-0.70228565,-0.74011207,0.19401184,-0.1607593,-0.33000073,-0.08714993,0.64130986,-0.27448478,0.06201577],[-0.003765804,-0.2075825,-0.022305839,0.9898987,0.50378066,0.95337635,-0.22548404,-0.1336573,-0.58790505,-0.4490368,0.749273,0.13859859,-0.027452512,-0.61067677,-1.153898,-1.1776212,0.24113877,-0.27340102],[-2.7447796,1.9117345,0.4073564,-0.04775491,0.23204777,-0.51974696,-2.9568594,1.3113073,1.4277631,0.020979766,-0.2532327,-0.26606435,0.13057557,-0.30686697,0.4028711,0.3851677,-0.4117104,-0.023646714],[0.0020379785,-1.0273771,-0.0040772515,-0.15474853,0.40938514,-0.8294739,0.61741006,0.41521803,0.19431064,0.012701662,-0.14437585,-0.53484315,0.40445113,0.42614287,0.2149064,-0.33539692,-0.026481858,0.0847282]],"activation":"σ"},{"dense_2_W":[[-1.524189,0.9351632,0.55989957,0.6639257,-0.41399422,1.9353259,-2.080693],[0.4837269,-0.42052314,-0.016988551,0.26961946,-0.5820897,-0.113735415,0.6621344],[0.66784316,-0.18224554,-0.46350604,-0.24139507,-0.33972263,-0.10908334,0.46273032],[-0.25121573,-0.5433506,-0.3747119,-0.48113945,-0.6870209,-0.2597966,-0.6666107],[-1.5878243,0.8484644,1.6857767,0.8684603,-0.49275222,0.8885371,-1.6989545],[-0.37864903,0.1991398,1.0727624,-0.06963282,0.744443,0.0127678355,-1.0510542],[0.6948821,0.4031339,-0.4709602,0.024776852,-0.19349359,-0.61693877,0.6901456],[-0.16844974,0.34244663,0.2792154,-0.22678165,-0.009063555,-0.2205289,0.30833983],[-1.0003111,0.061680865,-0.22125538,-0.14785585,0.33567291,0.23772448,-0.49937972],[-0.25907272,-0.45068902,-0.4165561,0.371873,0.6574395,0.3054128,-0.3081276],[0.4063414,0.31216034,-0.351421,0.24184814,-0.48907033,0.2369533,0.18272556],[0.6680394,0.23359145,0.2988422,-0.13820608,-0.0924177,-0.6595436,0.7519552],[0.7290062,-0.29669526,-0.7187181,-0.4984251,0.33927912,-0.05567023,0.7271803]],"activation":"σ","dense_2_b":[[-0.2505063],[0.036255818],[0.03159872],[-0.22770797],[-0.0873118],[-0.06630587],[-0.048832744],[-0.07904234],[-0.22275046],[-0.08476886],[-0.0669902],[0.0096226],[0.07374443]]},{"dense_3_W":[[0.8759032,-0.59936947,-0.44472367,0.26480153,0.8450838,0.48954475,-0.5052384,0.16207619,0.013260613,0.43904993,-0.105288796,-0.16599573,-0.31243858],[0.14936896,-0.628315,0.2414504,-0.10917872,0.4430291,-0.35649955,0.22603549,-0.48412538,0.2549734,0.48249015,0.0134211285,-0.071542166,-0.37372112],[0.047143627,-0.08542679,0.6750787,0.18638729,-0.011972222,-0.2818068,-0.23235205,0.124561444,-0.23522471,-0.3220255,0.30383208,0.18026324,0.34829038]],"activation":"identity","dense_3_b":[[-0.031695265],[-0.013660732],[0.018769676]]},{"dense_4_W":[[0.80076545,0.24590294,-0.42213082]],"dense_4_b":[[-0.026628232]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA KAROQ 1ST GEN.json b/selfdrive/car/torque_data/lat_models/SKODA_KAROQ_MK1.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SKODA KAROQ 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/SKODA_KAROQ_MK1.json diff --git a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN.json b/selfdrive/car/torque_data/lat_models/SKODA_KODIAQ_MK1.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/SKODA_KODIAQ_MK1.json diff --git a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN.json b/selfdrive/car/torque_data/lat_models/SKODA_OCTAVIA_MK3.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN.json rename to selfdrive/car/torque_data/lat_models/SKODA_OCTAVIA_MK3.json diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN.json b/selfdrive/car/torque_data/lat_models/SKODA_SUPERB_MK3.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN.json rename to selfdrive/car/torque_data/lat_models/SKODA_SUPERB_MK3.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x05xc0xd0x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x05xc0xd0x00'.json deleted file mode 100755 index 31b79abf84..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x05xc0xd0x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.7864456],[1.0675452],[0.44117737],[0.042466324],[1.0634382],[1.0641662],[1.0649238],[1.0489594],[1.0356928],[1.0174093],[0.9990636],[0.04239807],[0.042411074],[0.042412493],[0.042160373],[0.041902237],[0.04156318],[0.041192904]],"model_test_loss":0.006247136276215315,"input_size":18,"current_date_and_time":"2023-08-10_15-19-46","input_mean":[[22.789394],[-0.107057944],[-0.015220077],[0.0053075603],[-0.10096015],[-0.1036062],[-0.10646909],[-0.1105645],[-0.11274725],[-0.1129047],[-0.112440266],[0.0053247744],[0.0052974327],[0.0052765487],[0.005187726],[0.0051564705],[0.005072803],[0.005050624]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.22735131],[-1.1558822],[-2.4949677],[-0.028262757],[0.016046714],[0.46825287],[2.14808]],"dense_1_W":[[0.0063389866,1.1687455,5.6478443,-0.7739389,-0.37703404,-0.2977524,-0.35879293,-0.2989859,0.27854565,0.5250727,-0.5768838,0.437727,0.79303294,-0.25440294,0.015966117,-0.7346069,0.1822349,0.40839165],[3.5873764,-0.038363542,-0.49252892,0.88343006,-0.8263806,-1.0448018,0.35837594,-0.82923394,-0.2903959,-0.59976083,0.39708364,0.4991477,0.14932378,0.23114131,0.71492994,0.7446338,0.86800545,-0.10675554],[-0.71696925,0.589286,0.005141117,0.2558955,-0.15218897,0.56768674,-1.9735179,0.37540847,0.70758367,0.54208136,0.011372507,0.30521852,-0.07170634,-0.3685703,-0.17633998,-0.12821102,0.49403462,-0.28528726],[-0.0126111545,-0.25394174,-0.0476702,-0.051051825,0.15847693,-0.8556249,0.9062775,-0.35461852,0.08610974,-0.016350707,0.05444419,-0.021587849,-0.024609195,-0.041649777,0.2721636,0.11223671,-0.13007721,0.027287088],[-0.00082902284,-0.2895202,0.02292975,0.40938672,-0.5772713,-1.4159223,0.9096195,0.46552798,0.07192008,0.58374035,-0.7259645,-0.4192547,-0.119582735,-0.040364027,0.023777857,-0.099143706,0.07231984,0.05833065],[-0.034051787,-0.68221754,0.09880095,-0.083567955,-0.74208,-0.90698755,0.04928286,0.16156256,0.019495055,0.042218853,-0.28641602,0.051178593,0.26687574,0.46796858,0.46098933,-0.07269996,0.45891553,0.5021809],[0.66424364,0.45286804,-0.0005165507,0.2288496,-0.004017847,0.39797547,-1.7530091,0.4336208,0.41258094,0.72541785,-0.0085950075,-0.29211155,0.17102799,0.101752244,-0.20573312,0.25594547,-0.22377016,-0.008692318]],"activation":"σ"},{"dense_2_W":[[0.20325899,0.082790025,-0.64574623,0.5835337,0.2445456,0.39990926,-0.37031835],[-0.6524255,-0.44563344,0.23222709,0.45553765,0.0009599149,0.07084656,-0.40249822],[-0.42582795,-0.35526115,-0.41792208,0.71313417,0.48622853,0.42440364,0.124865286],[-0.42827517,-0.33303145,0.6030186,-0.6233551,-0.7089609,-0.19002749,0.98240393],[0.37648484,0.5340621,-0.075831234,-0.35439888,-0.05369259,-0.0852395,-0.5522382],[-0.18600848,-0.17840625,-0.13572167,-0.39332452,0.069297686,0.55391586,-0.56896216],[0.5372773,-0.42328098,0.46704698,-0.3903592,-0.31730473,-0.1323594,-0.15068243],[-0.025426986,0.27607596,-0.8116318,0.44459775,-0.039600827,0.2860532,0.21579745],[-0.34013402,0.61537576,-0.37449715,0.2465375,0.1431466,-0.20966384,-0.50743437],[-0.42331675,0.2752822,1.4675745,-0.7314219,-0.98570365,-0.13913184,0.50083154],[0.42013124,0.5378009,-0.11075335,-1.0205,-0.12323601,-0.10791454,1.2503781],[-0.46719682,-0.30131668,-0.7835209,-0.36901754,-0.74570584,-0.18500452,0.309284],[0.4626236,-0.17921384,0.23175037,-0.45361674,0.032451127,-0.29581988,0.68514556]],"activation":"σ","dense_2_b":[[-0.10602414],[-0.017100008],[0.040201504],[0.31925488],[-0.023480363],[-0.014836832],[-0.083288915],[-0.06903872],[0.040521644],[0.03449383],[0.06455035],[-0.22185017],[-0.065645464]]},{"dense_3_W":[[0.24577592,0.60105056,0.39954543,-0.2241492,-0.024554443,-0.15969503,-0.3220896,0.3241807,0.17859495,-0.5020777,-0.20332621,-0.26195568,-0.43355486],[0.14188491,-0.31661624,-0.65018225,0.34786117,-0.24704528,-0.57218057,0.3886062,-0.13966885,-0.6255838,-0.3665181,-0.27110517,-0.43634248,0.3648473],[0.2685311,-0.24588606,0.4600874,-0.6152837,0.44763306,0.503137,-0.21638398,-0.21211603,-0.17489356,0.066063605,-0.35907042,0.3705208,-0.39206743]],"activation":"identity","dense_3_b":[[0.03704233],[-0.009847877],[0.03596555]]},{"dense_4_W":[[-1.1007925,0.13783514,-0.4093285]],"dense_4_b":[[-0.037597723]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x85xc0xd0x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x85xc0xd0x00'.json deleted file mode 100755 index 868f130879..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x85xc0xd0x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.751917],[1.2651925],[0.6286032],[0.041758075],[1.251075],[1.2542156],[1.25788],[1.2476728],[1.2321731],[1.209085],[1.171815],[0.0416455],[0.04166907],[0.041675318],[0.041540235],[0.041331045],[0.0410227],[0.04076636]],"model_test_loss":0.010389542207121849,"input_size":18,"current_date_and_time":"2023-08-10_15-45-17","input_mean":[[21.811985],[-0.08200492],[-0.021123547],[-0.015392087],[-0.077132],[-0.07836754],[-0.07990758],[-0.08903278],[-0.09390533],[-0.0994351],[-0.09906808],[-0.015419691],[-0.015373937],[-0.015333388],[-0.015234815],[-0.01517176],[-0.015184814],[-0.015314578]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.112263665],[-0.2413684],[2.3331506],[-2.6163883],[-0.065890506],[-0.11267999],[0.2540324]],"dense_1_W":[[0.00082437333,-0.6100184,0.0085841585,0.19443965,-0.3853334,-1.0094393,0.54652345,0.4635451,0.41569796,-0.024827078,-0.35933343,0.013195037,-0.34806025,0.38918108,-0.2045975,-0.028205873,0.21251714,-0.14155327],[0.00052090845,-0.067986116,-0.0049952795,-0.17397985,0.19120865,-1.151794,1.4686754,-0.26064983,-0.37115577,-0.14031996,0.22627379,-0.61062306,-0.6003732,-0.08005905,0.6625579,0.27400896,0.2810858,0.22422503],[0.9736936,-0.2066802,-0.03221171,0.38892078,0.12595229,-0.78887135,1.7474787,-0.357525,-0.87113667,0.059320755,0.12783788,0.29396367,-0.33448485,-0.18315637,-0.08755342,-0.07393691,-0.20805165,0.19661658],[-0.8980642,-0.61740303,-0.036882922,0.014804519,0.0004633668,-0.56963277,2.2672677,-0.8473421,-0.7454484,0.14973474,0.15070617,0.14196523,-0.4790531,0.44873357,0.1199102,-0.23800696,-0.27427772,0.2604217],[-0.019455962,0.23203465,-0.00544805,-0.37386358,0.198604,0.39421222,-0.9399687,0.4006715,-0.18001914,0.28436452,-0.16559297,-0.27809414,-0.3476229,-0.23943123,-0.15492289,0.29176927,0.45100713,0.6297477],[0.00265877,-1.9257119,-5.770941,-0.015959108,0.91101694,0.2507323,0.9135306,0.027248167,-0.37422356,-0.42659408,0.31162933,0.048672486,-0.09029977,0.20116101,-0.2788187,0.54255015,0.17655331,-0.34923193],[-0.053368453,-0.32306084,-0.0011745194,0.14451449,-0.10494747,-1.0513184,1.6973016,-0.3520769,-0.08723632,0.20861532,-0.03754033,-0.12658818,-0.45617837,-0.53323764,0.17189239,0.19411314,0.18694821,0.41706687]],"activation":"σ"},{"dense_2_W":[[-0.6774667,0.12969257,-0.4430792,-0.91589767,0.04770356,-0.14245662,0.32101628],[-0.007977094,-0.35256377,-0.17704034,-0.63430905,0.16956906,-0.70034474,0.04581389],[-0.46165147,-0.62357444,0.17046474,-0.75571364,0.43287623,-0.30724007,0.1923109],[-0.6784181,-1.1244366,0.11541932,0.0015692321,0.3201062,0.22912836,-0.3314084],[0.7617433,-0.10211574,0.85646874,0.09638195,-0.3320897,0.5301404,-0.12944654],[0.035080303,0.9425994,1.1255182,0.170445,-0.9830605,0.28675708,0.19016503],[0.050772995,0.07033034,-0.7225591,-0.4550455,-0.16105704,-0.13258936,-0.5693541],[0.33667997,-0.61400133,-0.51990676,-0.64140576,-0.114089586,-0.42780593,-0.09286493],[0.5349278,-0.001589271,0.36740375,1.0545287,-0.42867026,-0.08572172,0.1694925],[-1.0343602,-0.7271993,-0.040044453,-0.6931338,0.5427271,0.71489084,-0.30788174],[0.13735534,-0.39718962,-0.597495,-0.44561583,0.53015804,-0.5777026,-0.35073844],[-0.53797716,-0.5482148,-0.20631851,0.100615636,0.21108344,-0.1866766,-0.27603066],[1.0084223,-0.13957444,0.24433044,0.6394643,-0.8311719,-0.009334607,0.5582453]],"activation":"σ","dense_2_b":[[-0.09939182],[0.068688095],[0.009566937],[0.011495638],[-0.106889665],[-0.24243665],[-0.026521178],[0.1317154],[-0.10032767],[0.08581992],[-0.01238223],[0.015781516],[-0.17793517]]},{"dense_3_W":[[0.4781185,0.3084316,0.08325544,0.04606733,0.08636447,-0.6786478,-0.35504982,0.59879106,-0.120570466,0.8481977,0.4478148,-0.3906098,-0.63914454],[0.3031589,0.25322372,0.5268686,-0.22374596,-0.1588417,-0.0013027226,0.19833587,-0.4039331,-0.48228812,0.23426887,-0.09250619,0.19117919,-0.26200604],[0.059065677,0.54438025,0.23591729,0.44685203,-0.76421094,-0.22385049,0.4203905,0.5741656,-0.51101667,0.6874898,0.39969978,0.64433825,-0.3296311]],"activation":"identity","dense_3_b":[[0.021213043],[-0.017086985],[-0.06297748]]},{"dense_4_W":[[0.25790158,0.11600269,1.2381012]],"dense_4_b":[[-0.05793729]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x95xc0xd0x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x95xc0xd0x00'.json deleted file mode 100755 index 591ebdc7f7..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x95xc0xd0x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9305706],[1.166364],[0.52697164],[0.04559408],[1.1611184],[1.1617836],[1.1621717],[1.1572268],[1.1512266],[1.1410046],[1.1271056],[0.045430746],[0.045456205],[0.045471754],[0.04538521],[0.045166407],[0.044751257],[0.044259742]],"model_test_loss":0.007159117143601179,"input_size":18,"current_date_and_time":"2023-08-10_16-11-18","input_mean":[[23.875044],[-0.04762809],[0.0020058034],[-0.0051164185],[-0.04738313],[-0.047682315],[-0.04707818],[-0.04922181],[-0.052050225],[-0.05241706],[-0.053604044],[-0.0052390727],[-0.005214684],[-0.005188381],[-0.0052186437],[-0.0052642184],[-0.005336835],[-0.005483444]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.30677524],[2.305386],[0.21258113],[0.0011374068],[-0.07798925],[0.13210933],[-2.2330644]],"dense_1_W":[[-0.9153392,-0.04457669,0.07580861,-0.14653037,-0.09173063,-1.0210644,0.28700185,0.2787717,-0.110930994,-0.22061832,0.031545375,0.21201925,-0.14316308,0.22535005,-0.13208093,0.47763622,-0.19806175,0.07550945],[1.408277,-0.8102327,0.07669226,-0.36992925,-0.10502352,1.4004408,-0.944446,0.52676916,0.45272207,-0.24533494,0.035849094,0.2495303,0.107555866,-0.19849469,-0.20219192,0.3377574,0.091887705,-0.09355204],[0.9365069,-0.6004133,0.073348165,0.15801865,-0.25915328,-0.8621952,0.9956089,0.10657743,-0.26742437,-0.09970222,0.07917549,-0.56488645,-0.07252198,0.6092978,0.18529537,0.062446173,0.21213096,-0.21162209],[-0.021605618,2.0233808,6.686231,-0.77553934,-1.7767231,-0.2691988,-0.54059815,-0.5960048,0.83274704,1.3160363,-0.8824629,0.47476387,0.31446755,0.564766,0.32654157,0.2584088,-0.60193515,-0.5081355],[0.0014130626,-0.53958946,-0.0328115,0.029045805,-0.032773897,-0.6771303,0.90978366,-0.1976198,0.17000276,0.09847352,-0.13980895,-0.6394955,-0.0060927877,0.14346723,0.3639303,0.4022752,0.04658495,-0.3556684],[0.035749156,-0.10624368,-0.104625024,0.035823658,0.20164482,-0.25137526,1.265547,-0.2905279,-0.5661436,-0.21419431,0.47792393,-0.30237326,-0.12908356,0.4366763,-0.18249804,-0.4698138,0.027572105,0.08708235],[-1.396587,0.15164146,0.07955495,0.8348063,-0.16462886,1.0165251,-1.172671,0.6484491,-0.2163863,-0.007840905,0.042114086,-0.29386994,-0.31274995,-0.1285774,-0.3331896,0.39886513,-0.12885635,-0.101650245]],"activation":"σ"},{"dense_2_W":[[0.38495073,-0.7412111,-0.22137684,-0.12030764,0.6368522,-0.06314703,0.03507243],[-0.6724593,0.739151,0.34064248,0.48897338,-0.50050086,-0.22222371,0.38529333],[0.44841364,0.03794733,-0.1467243,-0.20161211,-0.21433899,-0.43315327,-0.6118354],[0.06565437,0.23752235,-0.54241395,-0.19601826,-0.2867999,-0.1890192,0.41696703],[-0.27295426,0.30162266,0.6954773,-0.09653864,0.48812908,0.26977977,-0.4546936],[0.48944157,-0.61165446,-0.2726838,-0.39025265,0.26824158,0.44155118,0.23420909],[0.17367882,-0.1447462,0.5705062,0.11740234,0.38665462,0.3405028,0.37385175],[-0.4640401,-0.34844878,-0.520765,0.2933172,-0.23360184,0.06336928,-0.20476247],[-0.2682518,-0.2981224,-0.061291657,-0.15070377,0.4602456,-0.1752958,-0.35343117],[-0.4592221,1.1183828,-0.8640038,-0.4991326,-0.44832966,-0.2623515,1.0564609],[-0.045591548,0.03365201,-1.1687095,0.5368091,-0.6330926,-0.8546177,0.9726235],[-0.67239046,0.06492867,-0.5151909,0.16666827,-0.059304733,-0.17748602,0.7295886],[-0.17871682,0.7711487,-0.93309194,-0.24634744,-0.4780839,0.016693426,0.3126589]],"activation":"σ","dense_2_b":[[-0.0015952135],[0.012052551],[-0.010449206],[-0.044464882],[0.009422688],[-0.04994557],[-0.035012778],[-0.028600752],[0.016694155],[0.09361134],[-0.25293818],[-0.04506597],[-0.0031262708]]},{"dense_3_W":[[0.50088197,-0.45380923,-0.3447632,0.17479855,0.35610682,-0.29754344,0.29226437,0.40267113,0.3446978,0.15563208,-0.3483347,-0.6286209,-0.17550218],[0.4510917,-0.59041935,0.36655262,-0.30154505,0.49209,0.6228336,-0.18296722,-0.020777082,-0.10334578,-0.5006874,0.010148908,-0.52687216,-0.41658545],[0.39971578,-0.6320007,0.4202651,-0.58625245,0.6280199,0.34103268,0.25863847,-0.6293903,0.5739891,-0.46801668,-0.13070941,-0.01960773,-0.064851746]],"activation":"identity","dense_3_b":[[0.025732024],[0.02984865],[0.02392714]]},{"dense_4_W":[[-0.8745196,-0.8096158,-0.53739285]],"dense_4_b":[[-0.028630944]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019 b'x8dxc0x04x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019 b'x8dxc0x04x00'.json deleted file mode 100755 index 51e4706c5d..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019 b'x8dxc0x04x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.799702],[1.4022106],[0.64107347],[0.048644897],[1.3754585],[1.384525],[1.3930372],[1.3637297],[1.3325337],[1.3025023],[1.2634097],[0.048490796],[0.04852734],[0.048555136],[0.04845293],[0.04838427],[0.048089206],[0.047663692]],"model_test_loss":0.007386927027255297,"input_size":18,"current_date_and_time":"2023-08-10_17-31-57","input_mean":[[23.816095],[-0.049997237],[-0.007897631],[-0.0071165124],[-0.04356241],[-0.044834737],[-0.046383783],[-0.045705367],[-0.044091124],[-0.04704344],[-0.044948243],[-0.0070246058],[-0.007036013],[-0.007050358],[-0.0070076296],[-0.0069411667],[-0.006977052],[-0.007046174]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.11336769],[-0.1558763],[-1.490285],[-1.5598854],[0.012304846],[-0.022315644],[0.041771296]],"dense_1_W":[[-0.01977819,1.1443615,6.4567647,0.22709283,-0.07258762,0.1256894,-0.9979844,-0.84394026,0.93974406,0.6906267,-0.6703605,-0.016698701,-0.12463053,0.4582139,-0.46097878,-0.1382326,-0.07665762,0.016058486],[0.01751075,-0.39227998,-0.042306893,-0.06479078,0.2590678,-0.7885349,0.8643044,-0.05622104,-0.5792078,0.49931744,-0.1498453,-0.091571845,0.068086684,-0.16460074,0.20773992,0.28189114,0.20789368,-0.30530888],[-0.84948033,1.009252,0.011256742,0.33373848,-0.42635688,-0.50016934,1.3120202,-0.9743089,-0.8169875,0.0070605767,0.07339234,-0.13629174,0.34325087,0.7454428,-1.020692,-0.6009766,-0.16322955,0.5690257],[-0.859371,0.6779426,-0.011156044,0.24427465,0.21054544,0.41095948,-1.243871,0.14078836,-0.18485905,-0.18274853,0.53857833,-0.17150062,0.010126415,-0.39408815,0.18594584,0.07860817,0.14298649,-0.1758404],[0.0010954959,0.5071819,-0.020262098,-0.2741187,0.15675487,0.48042226,-1.1560334,0.25577885,0.18734348,0.319839,-0.3276146,0.15339972,0.06763019,0.24912529,0.19296181,-0.35772792,-0.030918041,-0.056021962],[-0.001659214,-0.41259018,0.10546883,-0.04128334,-0.57788277,-1.2264594,0.9491901,0.31587604,0.42403442,-0.46528783,0.21479684,0.2612383,-0.07516154,0.10787102,0.12550128,0.20215736,0.010438747,-0.26799598],[0.0069037564,0.071458444,-0.17135356,-0.15143572,-0.42506117,-0.14927572,1.4475372,-0.7957649,-0.09695476,0.09732733,0.068755925,-0.447942,-0.39005634,-0.47970626,1.3778332,0.15125123,-0.061111715,-0.27014065]],"activation":"σ"},{"dense_2_W":[[-0.5476857,-0.34267196,-1.1804522,0.9826078,1.2559764,-0.06669344,-0.59067243],[-0.19235519,-0.73507553,-0.07926594,0.89560527,0.74729407,-0.61155975,-0.7242012],[-0.48663774,0.7720404,0.10374275,-0.6260227,-0.17417191,0.4686119,0.6312232],[0.36561587,-0.15491518,-0.44031703,0.06942568,0.64594734,-0.4462405,-0.6349547],[0.7081136,-0.29506996,-0.83266884,0.122376084,0.75587255,-0.3350482,-0.2778585],[-0.6224533,-0.5645358,-1.0115622,0.89887905,1.4065654,-0.32766277,-0.39135978],[-0.4492619,0.03162113,0.52745104,-0.41767576,-0.13911435,-0.020886017,-0.009816406],[-0.5448073,0.91549146,0.68613285,-0.013575926,-0.29431057,-0.06598866,-0.16217463],[-0.3627731,0.41454732,0.17659637,-0.039793443,-0.50492966,0.6114329,-0.2755667],[0.0074237594,0.78070295,0.22676738,-0.37978444,-0.3925154,0.5993168,0.31498003],[-0.34473616,0.4788029,-0.111885466,-0.2417559,-0.39796054,0.3986806,0.7663913],[-0.5048224,-0.041392315,-0.69820964,0.1713349,0.7381618,-0.29876855,-0.30547982],[0.028930116,0.4292938,-0.051137988,0.08411418,-0.11514599,-0.39944056,-0.04911791]],"activation":"σ","dense_2_b":[[0.20303766],[0.14015818],[-0.08520703],[0.09250628],[0.23017566],[0.48661518],[-0.00044188643],[-0.06016225],[-0.007325745],[-0.18048085],[-0.02599478],[0.0058664232],[-0.022089954]]},{"dense_3_W":[[0.13350116,0.4653472,0.35548818,-0.19969355,-0.19666392,-0.36159652,-0.4205869,0.4367674,-0.4891205,-0.15468554,0.156333,-0.36591503,-0.24838057],[-0.0064647943,-0.10470988,-0.5210429,-0.100936055,-0.54979503,0.6029704,-0.3322796,-0.58332735,0.060819454,-0.060762953,0.5044272,0.4439412,0.33067426],[0.26523876,0.8024418,-0.5483982,0.41635954,0.6793265,0.5232535,-0.3263415,-0.4702453,-0.20712556,-0.50518614,-0.36013588,0.21646436,-0.09427801]],"activation":"identity","dense_3_b":[[0.0074690827],[0.029551204],[-0.025025982]]},{"dense_4_W":[[0.06027109,0.044870634,1.0522106]],"dense_4_b":[[-0.022553917]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'x8axc0x10x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'x8axc0x10x00'.json deleted file mode 100755 index bdf37fa0a6..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'x8axc0x10x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9070053],[1.0543791],[0.45644546],[0.04216511],[1.0496393],[1.0514421],[1.0525388],[1.0388994],[1.0230772],[0.9977821],[0.97294074],[0.042082436],[0.042079873],[0.042074014],[0.04191643],[0.0416697],[0.0412085],[0.04074361]],"model_test_loss":0.01961229182779789,"input_size":18,"current_date_and_time":"2023-08-10_18-47-37","input_mean":[[24.166582],[-0.028447185],[-0.004559452],[-0.0096051665],[-0.024261262],[-0.025696838],[-0.027025647],[-0.028589323],[-0.030067492],[-0.03444616],[-0.035814732],[-0.009534621],[-0.009544901],[-0.0095633445],[-0.009623893],[-0.009606267],[-0.009746497],[-0.009912363]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.7455199],[0.049996253],[-0.28023538],[-2.2060273],[-0.013816978],[-0.9874536],[-0.9019276]],"dense_1_W":[[0.6895121,0.5161322,0.14658317,0.11381423,0.1892214,1.7092749,-0.96651584,0.44850215,-0.0011632228,-0.042724244,0.15792367,0.5514578,-0.377292,-0.20945737,-0.76233065,0.012376638,0.07503095,0.03581266],[-0.6286081,-0.19999953,-0.26134518,0.40281624,0.025883766,1.6258272,-1.282856,0.15094246,-0.4982385,-0.14781019,-0.1479545,0.2354319,0.11133424,0.01337905,-0.27134678,0.36755842,-0.2766078,0.20018724],[0.01425971,0.12655693,0.027717352,0.25218877,-0.14888945,1.3863931,-0.58381855,0.119170696,-0.30655816,0.28394252,-0.028384114,0.28937957,0.11933416,-0.17924944,-0.5354822,-0.1023875,-0.112619705,0.23060223],[-0.70373154,0.21793373,0.15077697,0.2048877,0.536804,1.0242751,-0.6825991,0.6318776,0.21126975,-0.1301757,0.11066647,0.16537508,-0.13113236,0.008809388,-0.91487056,0.1511099,-0.20573723,0.17212375],[0.6260223,-0.82557577,0.2577335,0.09809156,-0.0992909,0.8572501,-0.7068254,0.11579019,0.9520398,-0.10346599,0.24801868,-0.04993002,0.1822422,-0.8884633,-0.5575527,0.70132893,0.013880684,-0.26569209],[-0.038469315,1.393094,4.8376126,-0.17993413,-2.8555899,-0.81073236,-1.82493,0.3075214,3.1346302,2.149397,-1.5296553,0.16216949,0.63347834,-0.16527048,-0.52531976,0.4832946,-0.8622477,0.4553706],[-0.0084891105,1.6197035,2.4590979,-0.13657339,-1.2173172,0.13232367,-0.9361693,0.3940753,0.5279083,0.7115164,-0.9698505,0.27118906,0.24368131,-0.12613261,0.07012018,-0.2520898,-0.77435726,0.66100776]],"activation":"σ"},{"dense_2_W":[[-0.3877504,-0.5656672,-1.2326187,-1.1548815,-0.2756651,0.68949634,0.3156601],[-0.086553685,0.083017066,-0.46457613,-0.06040094,-0.24278064,0.21467605,-0.820212],[-0.31367186,-0.38895422,0.5136481,0.54023415,0.13330653,0.1338129,0.4324519],[0.48387918,0.4686007,0.7549132,0.5443022,0.64290255,-0.3914411,-0.18872365],[-0.4481094,-0.3843902,-0.18481985,-0.12798713,0.0073901964,-0.8419567,0.07509202],[0.5552352,0.042670928,-0.77402955,-0.73152304,-0.43447974,0.11009675,-0.40836683],[-0.3615617,-0.56010073,-0.20947416,-0.66224504,-0.020653427,0.21728848,-0.3211307],[-1.4455059,-0.76313007,0.2822113,1.7159922,-0.5230928,-2.34454,-0.7053262],[0.5867471,0.043875463,0.29294136,0.05382179,0.34849784,0.6732012,-0.029372701],[0.23746303,-0.28121752,-0.6422261,-0.517458,0.11123861,-0.21673626,-0.02707978],[0.14627667,-0.5604455,-0.556298,-0.32100976,0.32297257,-0.35747936,0.035987776],[-0.28271908,0.46155292,0.36581132,0.38092643,0.5151189,-0.36064845,0.38086742],[-1.7228172,-0.6008753,-0.028210318,0.9336887,-0.7923858,-1.5424409,-1.1373487]],"activation":"σ","dense_2_b":[[0.3649016],[-0.28463706],[-0.18955103],[-0.0975359],[0.014972014],[0.19693135],[-0.20519742],[0.5246628],[-0.010990981],[0.14763328],[-0.051889963],[-0.065584496],[0.24132432]]},{"dense_3_W":[[-0.2141626,-0.5071306,0.47525346,-0.30042058,-0.13658617,0.33044663,-0.19224532,0.47024256,-0.43578166,-0.17088617,0.11608789,-0.46500286,-0.25973997],[-0.69258684,-0.4011068,0.47469568,0.40183055,-0.6213789,-0.5464064,-0.21653396,-0.016826013,0.18607092,-0.6653599,0.15087543,-0.011308093,-0.69397706],[-0.55069065,-0.4436314,0.4907695,0.59020114,-0.2770053,-0.10887845,-0.5752601,-1.0579756,0.44049686,-0.7758806,-0.5634297,0.25996745,-1.2285975]],"activation":"identity","dense_3_b":[[-0.0030500097],[0.016847884],[0.21006793]]},{"dense_4_W":[[-0.8614738,1.2687197,0.32792068]],"dense_4_b":[[0.007946701]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'zxc0x04x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'zxc0x04x00'.json deleted file mode 100755 index d738a84d5c..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'zxc0x04x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.614999],[0.88142365],[0.4115542],[0.04286995],[0.8717417],[0.8741691],[0.8768661],[0.87092763],[0.86162114],[0.8471719],[0.83313096],[0.042673744],[0.04272682],[0.042776305],[0.04276147],[0.042682905],[0.042456076],[0.042026334]],"model_test_loss":0.020124401897192,"input_size":18,"current_date_and_time":"2023-08-10_20-02-36","input_mean":[[22.85947],[-0.016667789],[0.0068580806],[-0.012056368],[-0.020457769],[-0.019109555],[-0.018067708],[-0.017776748],[-0.018178418],[-0.018938173],[-0.020024292],[-0.011968072],[-0.011980279],[-0.011996548],[-0.012103643],[-0.01220858],[-0.012383698],[-0.012489372]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.08823245],[-1.1790096],[1.2441144],[-0.011465203],[1.0564277],[0.0697024],[-1.3683548]],"dense_1_W":[[0.0014331031,0.30712977,0.039872505,0.80071706,-0.06956878,-1.9827149,1.0480732,-0.021383282,0.005184354,0.0075036837,-0.20064104,-0.3831549,-0.048222806,-0.46527135,0.28325924,0.08959743,0.16869979,-0.19650029],[-0.47628394,1.0323036,0.0727205,-0.12824745,-0.03173074,0.8555501,-1.0978942,-0.3188049,-0.23511048,-0.108945906,0.25071257,-0.13640903,0.22402667,0.2394587,-0.2969934,-0.05407172,0.23281921,-0.08285842],[0.5358869,0.30272746,0.73764825,-0.47511554,-0.67684716,1.2363486,-0.9340444,-0.06546125,0.26209694,0.1302329,-0.31725046,-0.26148638,-0.084479555,0.05804304,0.812802,0.13063046,0.061406944,-0.28873906],[-0.006784061,-0.19369683,0.5173411,-0.14995524,0.69393647,-0.8419515,1.0821712,-0.57659614,-0.5480855,0.040282447,0.3126287,0.14098974,0.21859266,-0.27093312,0.17456277,-0.07563259,-0.03413685,0.0682818],[0.49518052,0.9090121,0.07206266,-0.07255221,-0.40314698,1.3829393,-1.300141,-0.10262215,-0.14204547,-0.16600157,0.189207,0.114158854,0.5331006,-0.039711166,-0.51919204,-0.41197154,0.16707423,0.21446657],[-0.010184907,2.5707195,4.8210435,-0.59082705,-2.13527,-0.02737542,-0.084925294,-1.5004889,1.5263844,0.82498163,-0.750615,0.46455646,0.5213816,0.3898705,-0.31170332,-1.3961885,0.08791534,0.6026678],[-0.604111,0.33238423,0.7429127,-0.4376858,-0.1869525,1.0722656,-1.3618989,0.13231814,0.12388613,-0.027485399,-0.14985481,0.01705928,-0.40608093,-0.46543834,1.1232054,0.62169623,0.074105,-0.5730497]],"activation":"σ"},{"dense_2_W":[[0.66628206,-0.3684147,0.29401556,0.33376765,-0.20291045,-0.43510544,-0.49534982],[0.3000001,-0.27556387,-0.4702806,-0.012585157,-0.4258327,0.33206144,-0.23892596],[0.4380561,-0.38661313,0.19346173,-0.010281955,-0.6983228,-0.7392101,0.36173314],[-0.90225124,0.7195273,0.5120532,-0.4113813,0.3908176,-0.19042808,0.5445649],[-2.0083435,0.1796547,0.53105164,-0.43887454,0.55858135,0.095837146,1.0666932],[0.94471526,-0.7361511,-0.3394616,0.5484322,0.21810979,-0.04098551,-0.55697936],[-0.17648907,-0.1659118,0.09883211,-0.019644987,0.09760398,-0.2444248,-0.23118357],[0.012475254,-0.2854982,0.77410185,-0.5734643,0.86467403,0.57916874,0.36548907],[0.21869864,-0.059679627,-0.8418387,-0.3505286,0.19995454,-0.18443146,-0.3518136],[0.733226,-0.8237715,0.11591505,0.12030088,-0.16572322,-0.29059696,0.033399917],[0.4081683,-0.40732962,-0.696102,0.46398422,-0.9380676,-0.117172115,0.06541085],[-0.636597,0.5673404,-0.18129148,-0.80558836,0.3210611,0.22610644,0.059019666],[-0.17355403,0.38050172,0.7130264,-0.49735093,0.6084085,0.47226894,-0.23599635]],"activation":"σ","dense_2_b":[[0.15390728],[-0.27060974],[0.051722474],[-0.18110798],[-0.45624837],[0.005322652],[-0.048935406],[-0.13153522],[-0.2941039],[0.02853757],[0.031165767],[-0.283588],[-0.11898526]]},{"dense_3_W":[[-0.6583376,-0.1158339,-0.5825397,0.38649017,0.6810171,-0.48431656,0.18096629,0.5144921,0.03614329,-0.6123482,-0.3714544,-0.12423297,0.5612449],[0.21774262,0.41141757,0.5053978,0.036839064,0.012879289,-0.01591902,-0.39873704,-0.15116392,0.39331844,0.013287693,-0.51785904,-0.40162948,0.036296766],[-0.6850239,-0.028873632,0.09147937,0.6863797,-0.22511397,-0.7087885,-0.38730666,0.30543882,-0.19349012,0.35246828,-0.21587896,0.49934873,0.63229257]],"activation":"identity","dense_3_b":[[-0.018641375],[-0.010103108],[-0.022765955]]},{"dense_4_W":[[1.1674396,-0.010352109,0.70566726]],"dense_4_b":[[-0.022187218]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x00'.json deleted file mode 100755 index fd0b885f31..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.149806],[1.0466807],[0.48216617],[0.03926948],[1.0378215],[1.0405693],[1.0433956],[1.034937],[1.0209817],[1.0002661],[0.97917086],[0.03917731],[0.039209686],[0.039230634],[0.039230503],[0.039089043],[0.03877449],[0.038412858]],"model_test_loss":0.0086250901222229,"input_size":18,"current_date_and_time":"2023-08-10_21-44-49","input_mean":[[24.784973],[0.022257574],[0.0018790626],[-0.0014456466],[0.021444617],[0.021993408],[0.022768045],[0.024583662],[0.0267569],[0.026212335],[0.025587328],[-0.0014159543],[-0.0014121836],[-0.0014230785],[-0.0014949344],[-0.0015499452],[-0.0016750016],[-0.0018316169]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.11915471],[0.4647498],[-0.18471648],[-0.05602483],[0.7303728],[-0.020603865],[0.08058517]],"dense_1_W":[[0.02919073,1.8689783,4.4265075,0.16716953,-3.2808,-1.9433872,-1.6631875,0.64648163,3.702317,1.9939891,-0.7665767,0.8001585,0.7883229,-0.39065278,-0.15145746,-0.16460232,-1.2793592,-0.002752089],[0.60766363,-0.8283458,0.086918816,0.49001363,0.1764836,1.6148571,-1.172861,0.28852218,-0.12384417,0.22311504,-0.038648173,0.08665237,-0.22122696,-0.1211155,-0.16418546,-0.06580166,-0.12981877,0.1223207],[-0.0611153,2.1892653,4.1823645,-0.020211374,-0.126075,-0.26824856,-0.21868485,0.009974396,0.54638195,0.08174665,-1.6289697,0.13641535,-0.026207518,0.037753426,0.0224,-0.30633605,-0.18595642,0.18627088],[-0.006284281,-0.9393309,0.131348,0.27939406,0.15329085,-1.1371962,0.67140526,0.23289137,-0.25185016,0.14388521,-0.20779973,-0.51052564,-0.30346033,0.5853443,0.3393873,-0.16495557,-0.28405264,0.07844043],[0.7133973,0.36651134,-0.09357234,0.053284127,-0.32661018,-1.1806043,1.2274599,-0.13515554,0.15792286,-0.40642232,0.14303061,-0.012403075,0.007870057,0.0046764547,-0.06777944,-0.23694073,0.4407839,-0.18311372],[0.063063905,-0.105903134,-0.07843828,-0.14851844,0.09402292,-0.94803673,0.9120545,-0.20011538,-0.16328399,0.105953924,0.057462662,0.09776021,-0.14990965,-0.06046959,0.15974031,0.2219897,0.004509259,-0.1270214],[0.0070889555,-0.44478884,0.06164922,-0.122812085,0.30908406,1.5513293,-0.5627223,0.25208586,0.123981394,-0.111266494,0.066460505,0.043457642,-0.06717314,-0.4400081,-0.30934328,0.038612906,0.059938014,-0.23997127]],"activation":"σ"},{"dense_2_W":[[0.36688,-0.19320922,0.28094387,-0.9803768,-1.1758837,-0.99039465,0.49203432],[-0.28640324,-0.72820544,-0.4875037,0.1816081,-0.5080949,0.39986604,-0.2271453],[-0.20991027,-0.33078238,0.36123854,-0.4010081,0.42690548,0.5543692,-0.66790026],[0.028127942,-0.46438977,-0.2351104,0.114041865,-0.8311537,-0.69191617,0.13150403],[0.6023005,3.1064928,0.30146995,-1.728805,0.39918655,-1.0887272,0.8644791],[0.17403108,-0.5989185,-0.5602132,0.23924266,0.047311135,-0.21583998,-0.08689489],[-0.408518,-0.67819715,-0.48529884,-0.43457308,-0.6859549,-0.72042423,-0.10757325],[0.13631205,0.05900456,-0.31221914,-0.42799878,-0.5074306,-0.066171676,0.2549441],[0.38185734,-0.41993743,0.16787384,0.48273364,0.23232572,0.16146578,0.1430547],[0.36192957,0.7118042,-0.11004752,-0.44175497,0.037270173,0.11878499,0.21234997],[-0.45457327,0.13838753,0.22052445,0.07949341,-0.62185955,-0.6223187,-0.597313],[-0.22084583,-0.1706968,-0.31476033,0.620582,0.66211015,0.5056345,-0.30923542],[-0.14307842,-0.09773044,-0.11317682,0.31420723,-0.032641448,0.05758633,-0.23174715]],"activation":"σ","dense_2_b":[[-0.1766578],[0.0030768153],[0.011622017],[-0.2613647],[0.41335022],[-0.029892111],[-0.27720392],[-0.03462619],[-0.03277327],[-0.033704933],[-0.23574014],[0.07590818],[-0.0031470906]]},{"dense_3_W":[[0.44066054,-0.5858187,-0.49569857,-0.27353624,0.016213497,-0.59161377,-0.48449734,0.46109423,-0.0024176766,0.34991503,-0.13543713,-0.48638907,-0.19906554],[0.669034,-0.12078269,0.06202367,0.44989127,0.5493621,0.336327,0.4797354,0.5557385,-0.36501727,0.26719907,0.3279164,-0.33229584,-0.3502743],[-0.5095002,-0.2236471,0.21968824,0.042991508,-0.38274318,-0.11278709,-0.5325957,-0.45203722,-0.12108213,-0.19157046,0.58804715,0.48384163,0.023208706]],"activation":"identity","dense_3_b":[[0.0001239895],[-0.013890755],[0.030029856]]},{"dense_4_W":[[1.067811,0.9453486,-0.14499813]],"dense_4_b":[[-0.002235052]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x01'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x01'.json deleted file mode 100755 index 6f5ea46958..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x01'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.433109],[0.9277941],[0.4133138],[0.042486828],[0.91961175],[0.9212083],[0.9230463],[0.9178699],[0.90644723],[0.8922139],[0.87602633],[0.042294905],[0.042328734],[0.04236129],[0.042348858],[0.04222418],[0.04196347],[0.041606702]],"model_test_loss":0.006344182416796684,"input_size":18,"current_date_and_time":"2023-08-10_22-11-17","input_mean":[[27.48561],[-0.045379456],[0.000610541],[-0.0075939377],[-0.04516856],[-0.04590259],[-0.04635042],[-0.0455905],[-0.044134438],[-0.047893465],[-0.04872525],[-0.0075862017],[-0.007591181],[-0.0075963517],[-0.0077280067],[-0.007869005],[-0.008030396],[-0.008253526]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.13907726],[0.91428226],[-0.08902528],[-0.8122626],[2.4960856],[0.6941552],[3.1465714]],"dense_1_W":[[0.012394863,2.442848,6.000615,-0.9667802,-2.4481606,0.04116472,-0.298802,-0.45781717,1.0988615,1.5439192,-1.6183215,1.5120034,0.70879805,0.33042568,-0.6360781,-0.72864187,-0.42245787,0.1924922],[-0.039127346,-2.5879724,0.45108536,0.10737795,-1.9936459,-2.6408718,-0.10216445,-0.74508464,-1.0754778,-1.6742834,-0.6845894,-0.2893954,-0.6440116,-0.68839306,-0.8477463,-0.49898022,0.39530098,0.49870434],[-0.028086787,0.11074618,-0.029657526,0.53074354,-0.09886754,-0.50980574,1.6068281,-0.1943193,-1.0108532,-0.4594659,0.7215557,-0.24808267,0.30215025,-0.18002108,0.2840001,-0.57245183,0.10710855,0.07138346],[0.4541753,0.06447674,0.019618178,-0.050374724,0.13303722,1.2749394,-0.6110799,-0.06389013,-0.17551425,-0.02773791,0.21997307,0.28395706,-0.14487898,-0.20185138,-0.18616714,0.03085588,-0.22616515,0.1570019],[0.933303,-0.34038252,-0.065301575,-0.16815153,-0.48548433,-1.0974069,1.3661956,-0.6751278,-0.06634803,-0.05417734,0.008298623,-0.21462391,-0.17723723,0.39795777,0.2967163,0.078405224,-0.10986368,0.0066645048],[-0.44923598,-0.02191377,0.020238422,0.43116552,0.33337408,1.5234641,-1.2367504,0.123196624,-0.13720761,0.06765882,0.14065754,0.2515097,-0.3147324,0.12851562,-0.5540239,-0.48021403,-0.22485968,0.4229258],[1.1905549,0.10563058,0.08857988,-0.563186,1.1590731,1.2013718,-2.1805055,0.6349522,0.81047887,0.13184841,-0.23018143,0.040691454,0.22812058,0.2580085,-0.2708511,0.37357846,-0.14638875,-0.019385386]],"activation":"σ"},{"dense_2_W":[[-0.4165453,-0.17428897,-0.656896,0.56047696,0.075286396,0.29055318,0.6539704],[0.67952734,0.31715697,-0.38251033,-0.9062763,0.61300415,-0.6845408,-0.5751852],[0.33353442,-0.4632752,-0.45792413,-0.58633304,0.45437384,-0.8976134,-0.459859],[-0.28707662,-0.20765603,-0.09663817,0.0712579,0.030774899,-0.9440693,-0.11771196],[-0.034040477,-0.44995186,-0.34478307,0.7316748,-1.0665529,-0.03579851,-0.029609136],[0.2525717,0.42749283,-0.3511222,0.24611457,0.047738947,0.7055022,-0.096511096],[1.0310456,-0.14640242,-0.67039543,-0.05573537,-0.97901416,0.053892918,-0.95491844],[1.935988,-0.24661754,-0.47021067,0.26482674,-2.1922724,0.12265447,-1.0171564],[-0.27922088,0.047959074,-0.4585162,0.43318775,-0.022253482,0.6992371,0.366425],[-1.2182665,0.30541417,0.54548246,-0.82654715,-0.86802375,0.36274722,-1.2755734],[-0.55027056,0.3726949,0.29450348,-0.663457,-0.28297377,-0.7872144,-0.77983695],[-0.29113156,-0.57935303,-0.07371765,0.569743,-0.046916172,-0.095878035,-0.24269529],[-0.4188927,0.2442818,0.6791062,-0.24187906,0.8024283,0.36645007,0.15694125]],"activation":"σ","dense_2_b":[[-0.13162552],[0.14610669],[0.06542088],[-0.008890042],[-0.25142753],[-0.13560805],[-0.25826016],[-0.17347474],[-0.1645501],[0.07222336],[0.059977163],[-0.32542986],[0.18807274]]},{"dense_3_W":[[0.57400185,-0.65310407,-0.026245644,-0.21171129,-0.0046483884,0.5902724,-0.07411066,-0.13533744,0.33003673,-0.23319454,-0.7222472,-0.062199857,-0.31266594],[0.08517949,0.10523219,0.17653435,0.22985537,0.03910563,0.48629716,0.024153559,-0.2307055,-0.5041997,-0.12600066,-0.1328216,0.066026025,0.2542358],[-0.07466326,0.03751704,0.34207597,0.08640459,-0.55675924,-0.43693897,-0.5372613,-0.67614335,-0.008879703,0.5449217,0.60687166,-0.079967305,0.23276323]],"activation":"identity","dense_3_b":[[-0.057068646],[-0.010597932],[0.064764485]]},{"dense_4_W":[[0.7126766,-0.056579176,-0.97978544]],"dense_4_b":[[-0.058505826]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'x9axc0x04x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'x9axc0x04x00'.json deleted file mode 100755 index e20bbbb102..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'x9axc0x04x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.236228],[0.9541643],[0.46896935],[0.037251],[0.942408],[0.94659024],[0.95044875],[0.9528363],[0.95431703],[0.9549371],[0.94726866],[0.037057787],[0.03711012],[0.037162427],[0.037273765],[0.03735724],[0.03742994],[0.037366863]],"model_test_loss":0.01245664618909359,"input_size":18,"current_date_and_time":"2023-08-10_22-36-02","input_mean":[[23.454796],[0.043741453],[-0.009617127],[0.008929559],[0.048594497],[0.0470797],[0.04575023],[0.04157434],[0.037163395],[0.031240081],[0.02667783],[0.00891148],[0.008930276],[0.0089419745],[0.0089975605],[0.00889156],[0.008654451],[0.008377715]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.08725138],[0.62947553],[0.55281675],[0.47698602],[-0.010579495],[0.5603157],[0.121154435]],"dense_1_W":[[0.010149323,0.0927383,-0.049159903,-0.92321444,0.5301868,1.6467744,-0.34752372,-0.7960734,-0.23776174,-0.47925645,0.85876715,-0.12972605,0.07995605,0.4340685,0.24205516,0.10737243,-0.12019449,-0.15221375],[0.06681955,-0.8268898,0.08758739,0.8848569,-0.36724785,-1.2158617,1.1197345,0.067235485,0.035998013,0.15957934,-0.3456709,0.58034456,0.4314829,0.35206887,0.54623073,0.46871477,0.18022528,0.060644507],[1.5824217,1.7102716,3.6078386,-0.0684419,-1.5800762,-0.6593468,-1.0315231,-0.30346423,1.6339799,1.228651,-0.4846987,0.3710236,-0.4006895,-0.34770697,0.8819552,-0.5398949,-0.32821923,0.17143293],[1.303329,-2.1399665,-3.1076748,0.23288973,2.0736525,1.078245,1.2427267,-0.34367758,-2.3364317,-1.4993668,1.4313731,0.25981635,-0.069500186,-0.007198234,-1.0189565,0.4751188,0.6546988,-0.30582112],[0.0036950526,0.04958046,-0.041147415,-0.23472723,0.24974303,-1.5454353,1.8054543,-0.6608297,-0.26494673,-0.4223114,0.47601548,0.24096386,-0.38269913,-0.12060513,0.5988521,0.036612313,0.05911714,-0.14717643],[0.08024163,1.0550786,0.07653441,0.4824589,-0.5017987,0.01434394,-1.376971,-0.131279,0.006976325,-0.22164595,-0.06650469,0.74893504,0.41389975,0.5270169,-0.2144425,0.6345238,0.68122786,-0.1719554],[-0.07933006,2.3567731,0.0042914962,0.74784595,2.28212,2.9230127,0.23938161,1.0576327,0.23800474,0.61905783,0.1781994,0.63615847,0.0073392615,-0.002428518,0.5748812,-0.15760459,-0.54738325,-0.36927438]],"activation":"σ"},{"dense_2_W":[[-0.21508381,0.9633951,0.5315358,0.92654145,0.28553194,0.039701536,-0.18630505],[-0.1678206,0.207308,0.40976796,0.08400935,-1.1243716,0.39975542,-0.330028],[-1.1226933,0.52033097,1.0243174,-0.62620866,1.505394,-0.3176458,-0.777051],[0.693296,-0.28314844,0.4684673,0.17668417,-0.82024777,-0.012310348,-0.5580614],[0.24386548,-0.4684305,-0.25006077,-0.4782456,-0.47599876,0.5501203,0.062193394],[-1.3514801,0.9189132,-0.7240175,-0.28889558,-0.18423705,-0.08741435,0.24606031],[-0.67244714,0.47862688,-1.0843797,-1.111484,0.4975643,-0.52863014,-1.5702293],[0.06620587,-0.3826648,0.0595068,-0.31371126,-0.9359945,0.5710785,0.30018663],[-0.08168836,-0.51131517,-0.073826596,-0.008216051,-0.54347867,0.20297381,-0.6430736],[0.4543929,-0.49646172,0.43142736,-0.66066104,-0.23015887,0.028297924,-0.05720952],[-0.52589,0.61320555,-0.7472295,0.4251358,0.8921376,-0.78721434,0.28226647],[-0.711873,0.25582448,0.14650942,0.4705447,0.64871144,-0.113993205,-0.037552968],[0.41052327,0.18220364,0.35270774,-0.49306205,-0.956854,0.4278162,-0.03011779]],"activation":"σ","dense_2_b":[[0.10105641],[-0.09731066],[0.0055902563],[0.15583935],[-0.1778042],[-0.31665945],[-0.35505518],[-0.011538101],[-0.15872312],[0.123221055],[-0.20084055],[0.12061009],[-0.092269965]]},{"dense_3_W":[[0.34495553,-0.52540576,0.48382422,-0.21559586,0.16588818,0.4986695,0.7247998,-0.20436342,-0.21009935,-0.33020142,0.42502496,0.23494504,-0.6989969],[-0.43483838,-0.16045101,-0.7069782,0.6482748,0.6546552,0.19802035,-0.19270848,0.603569,0.15212789,0.32036832,-0.1777731,-0.59341335,0.37551636],[-0.23369972,-0.018393897,-0.23587896,0.03520326,-0.4262701,0.34585303,0.126404,-0.4852999,0.50604486,0.18693419,0.6988773,0.2218146,-0.40111375]],"activation":"identity","dense_3_b":[[-0.077010185],[0.06201826],[-0.041295182]]},{"dense_4_W":[[-0.8782402,0.5793239,-0.13800435]],"dense_4_b":[[0.0672247]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN b'x9bxc0x10x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN b'x9bxc0x10x00'.json deleted file mode 100755 index 83a9167915..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN b'x9bxc0x10x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.572336],[1.1483445],[0.42820358],[0.048202544],[1.1448809],[1.1459116],[1.1458608],[1.1237723],[1.1024351],[1.0727179],[1.0412753],[0.047973968],[0.048014168],[0.04805022],[0.048102845],[0.04802677],[0.04776489],[0.04739827]],"model_test_loss":0.026644039899110794,"input_size":18,"current_date_and_time":"2023-08-10_23-31-10","input_mean":[[24.136143],[-0.042093538],[0.013022028],[-0.0036085332],[-0.0470961],[-0.0462333],[-0.04523365],[-0.040591415],[-0.036471754],[-0.03127247],[-0.027871577],[-0.0038120802],[-0.0037680487],[-0.003724908],[-0.0035597768],[-0.0034507068],[-0.0033237508],[-0.0032780103]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.05131335],[-0.22923447],[-0.014189909],[0.09295414],[-2.8221803],[2.6356938],[-0.1626522]],"dense_1_W":[[-0.0006246851,-1.937167,0.02453268,0.124314785,-0.07763876,-1.3915496,0.6514346,0.062224012,-0.3782371,0.045342997,0.0131263565,-0.07671119,0.2950009,0.5244766,0.24981722,-0.6029727,-0.1914875,0.17850396],[3.6474159,-0.3351425,-0.13860475,0.017950775,-0.5807133,-0.48789144,-0.33976758,-0.092757314,-0.5980742,0.16750406,0.022784369,-0.0036915683,0.2978329,0.22988808,0.5386405,0.8470415,0.41101706,0.8745821],[0.00071263144,0.34790343,-0.025052998,-0.2664853,0.1425834,-1.2502533,0.901666,-0.40636706,-0.07849224,0.18394355,-0.039707936,-1.0538421,-0.278847,0.80892915,0.6621467,0.35024366,0.22499272,-0.44423023],[5.855231e-5,2.4907784,6.5716834,-0.76951736,-2.4156885,-0.6084292,0.32178223,-0.12523341,0.017727956,2.4002576,-1.4535077,1.1310626,0.7982315,0.10428222,-0.34654096,-1.1077892,-0.17795445,0.20854695],[-0.6954145,0.84418166,0.0098673105,0.052796964,0.26646963,1.0693092,-1.161872,-0.3446245,0.8000167,0.6914431,-0.18510826,0.27281952,-0.013284309,-0.51565313,-0.14262609,0.20675737,-0.08539979,0.11145477],[0.68266046,0.9602112,0.009963625,-0.1402191,0.20056713,1.5516362,-1.738518,-0.2687681,0.82588196,0.6286699,-0.16402455,0.6550529,-0.15899514,-0.72548264,-0.29978648,0.7046594,-0.24264838,0.08307443],[4.025976,0.7285796,0.14887388,-0.6201622,0.13705282,0.47417828,0.4768622,0.35751063,0.19407505,0.7661748,-0.6106113,0.17202562,-0.2742306,0.21339923,-1.1030523,-0.35447115,-0.85436875,-0.7747486]],"activation":"σ"},{"dense_2_W":[[0.46410686,0.62191635,-0.062384292,-0.5430435,-0.695603,0.057965573,-0.52540386],[0.6584527,0.21343426,0.17701761,-0.69918996,-0.049447756,-0.037598107,-0.5069386],[-0.44375354,-0.26292452,-0.64291656,0.63415337,0.26265192,-0.11597562,0.15929869],[-0.812513,0.10907013,-0.8120618,-0.19890812,0.8949706,0.5529603,0.13160336],[0.1050679,0.5375794,0.6706402,-0.041373048,-0.6123938,-0.44150752,-0.34567338],[-0.40558782,0.11219362,-0.5137659,0.38914016,0.22155257,0.522915,-0.50805056],[0.63432807,-0.43097767,0.5424638,-0.31058156,0.0059383763,-0.3071036,0.523059],[0.34565827,0.36890084,0.48656797,0.107707486,-0.46674815,-0.2624921,-0.4052778],[-0.022453148,0.6077112,-0.5046755,1.402873,-0.6407784,0.8215227,0.25630465],[0.03767525,-0.2515635,-0.56157374,0.22053413,0.5938849,0.04716324,-0.55130476],[0.02723474,0.6362109,-0.7232292,-0.18455642,0.45341918,1.2936736,-0.802384],[0.06902041,-0.60314816,-0.22065936,0.08411181,-0.19968052,-0.4402093,0.5050189],[-0.58374166,-0.4504642,-0.1112549,0.46519062,0.15296236,-0.15458451,-0.00064379047]],"activation":"σ","dense_2_b":[[-0.014328261],[-0.034038804],[-0.056317214],[-0.025555097],[-0.023897748],[-0.27516785],[-0.03674292],[-0.04560086],[-0.13362178],[-0.17087862],[-0.1543581],[-0.063457526],[-0.20349929]]},{"dense_3_W":[[0.13543664,0.6195368,-0.43438953,-0.59657305,0.5921997,-0.14353473,0.44341394,0.5110973,-0.33468905,-0.41089338,-0.19091435,0.34869814,-0.3758429],[0.30076426,-0.21575679,-0.38356882,-0.036623813,0.2787459,-0.3038595,0.44368634,0.27318835,-0.63082767,0.14850685,-0.27673995,-0.14115706,0.30847898],[0.2674523,-0.39884198,0.21306512,0.41216707,-0.02011493,-0.04432381,0.3676808,-0.016420744,-0.40233457,-0.1554329,-0.009226843,0.43924707,-0.23986638]],"activation":"identity","dense_3_b":[[0.017441018],[0.01997646],[-0.017420627]]},{"dense_4_W":[[-1.0507979,-0.56773245,0.31234828]],"dense_4_b":[[-0.019663213]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019.json b/selfdrive/car/torque_data/lat_models/SUBARU_ASCENT.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019.json rename to selfdrive/car/torque_data/lat_models/SUBARU_ASCENT.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019.json b/selfdrive/car/torque_data/lat_models/SUBARU_FORESTER.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019.json rename to selfdrive/car/torque_data/lat_models/SUBARU_FORESTER.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019.json b/selfdrive/car/torque_data/lat_models/SUBARU_IMPREZA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019.json rename to selfdrive/car/torque_data/lat_models/SUBARU_IMPREZA.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020.json b/selfdrive/car/torque_data/lat_models/SUBARU_IMPREZA_2020.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020.json rename to selfdrive/car/torque_data/lat_models/SUBARU_IMPREZA_2020.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU LEGACY 7TH GEN.json b/selfdrive/car/torque_data/lat_models/SUBARU_LEGACY.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU LEGACY 7TH GEN.json rename to selfdrive/car/torque_data/lat_models/SUBARU_LEGACY.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU LEGACY 2015 - 2018.json b/selfdrive/car/torque_data/lat_models/SUBARU_LEGACY_PREGLOBAL.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU LEGACY 2015 - 2018.json rename to selfdrive/car/torque_data/lat_models/SUBARU_LEGACY_PREGLOBAL.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN.json b/selfdrive/car/torque_data/lat_models/SUBARU_OUTBACK.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN.json rename to selfdrive/car/torque_data/lat_models/SUBARU_OUTBACK.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016 b'8965B41051x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016 b'8965B41051x00x00x00x00x00x00'.json deleted file mode 100755 index dc9102a55c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016 b'8965B41051x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.155588],[1.2222154],[0.51593876],[0.045921255],[1.2146778],[1.2164576],[1.2193325],[1.2000308],[1.184473],[1.1582026],[1.1294578],[0.0457375],[0.04576663],[0.04578905],[0.04568079],[0.04555454],[0.04528545],[0.044940177]],"model_test_loss":0.0077543435618281364,"input_size":18,"current_date_and_time":"2023-08-11_00-22-19","input_mean":[[25.38624],[-0.109525174],[-0.0071247322],[-0.008090862],[-0.108410954],[-0.11049666],[-0.11148748],[-0.11183658],[-0.110412374],[-0.111614786],[-0.109395765],[-0.008206939],[-0.008208384],[-0.00822236],[-0.008191385],[-0.0081957765],[-0.008351754],[-0.008558403]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.147119],[-0.7151291],[-0.06542077],[-2.6854012],[-2.9215784],[-0.6333571],[-0.3588006]],"dense_1_W":[[0.050412737,-0.7688983,0.051297277,0.20422332,0.29614073,-0.7492136,0.6221707,-0.28156716,-0.25521812,-0.04673187,0.27558443,-0.7143839,-0.37546682,0.5423986,0.43472832,-0.09003486,-0.1610108,-0.13676094],[-0.86945575,-0.066927284,-0.060515594,-0.049497765,0.37880427,-0.4104487,0.99254173,-0.24023093,-0.22767603,-0.14191294,0.21729311,0.27627876,-0.03367094,0.08543982,-0.105297364,0.16060211,-0.23347247,0.2110998],[0.041003693,0.0019961689,-0.011989706,0.2586212,-0.2982694,1.1390727,-0.09271339,0.011216761,-0.07928292,-0.31107566,0.30151826,0.32163844,-0.111424804,-0.111504324,-0.54352456,0.08193889,-0.09293932,0.1449024],[-0.6092506,-0.34562534,-0.19357689,0.102853455,-0.076768324,-0.9644875,0.3549321,-0.35967496,-0.16627687,-0.3403019,0.100230105,-0.4866395,-0.054948322,0.3741284,0.2193991,0.1279479,-0.07926067,0.061663166],[-0.5892953,0.5779403,0.18596417,0.027102116,0.23143159,0.8041496,-0.5180442,0.17604749,0.13967356,0.3647289,-0.08085053,0.4862775,0.16692553,-0.6730509,-0.07277034,-0.0592746,-0.21806034,0.08425947],[-0.9096294,-0.17975268,0.062644206,0.16992755,-0.027315069,0.18641698,-0.2329115,-0.40319765,0.0728141,-0.022310384,0.15630817,0.19813018,-0.10582375,-0.52104795,-0.120786585,0.1117218,0.06465282,-0.11865458],[-0.032926153,1.0616482,6.864475,-0.11564605,-0.14158455,-0.4117831,-0.76951504,0.10398355,0.7756398,0.61653835,-1.1051329,1.1516933,-0.017778216,-0.34992045,-0.15732552,0.10676282,-0.53930724,-0.00068106386]],"activation":"σ"},{"dense_2_W":[[0.607369,0.045042686,-0.90820694,0.69801354,-1.0983257,-0.2685714,0.34300095],[-0.67589545,0.1324981,0.14731272,-0.85306466,0.5206796,0.7536436,0.09453407],[0.6423009,0.57089245,-0.4761381,0.6488958,-1.2223575,-0.8009584,0.3689039],[0.29086414,0.10636214,-0.45522293,0.20708704,-0.15621087,-0.78096426,-0.048316985],[-0.3550279,1.0548292,-0.88649863,1.015021,0.2844367,0.20109054,-1.1682143],[0.965661,-0.14941974,-0.7082443,0.19087248,-1.4366155,-0.36316642,0.28074083],[-0.21697107,0.5959022,-0.7900999,0.34238023,0.22955489,0.51429254,-1.3292482],[0.02833417,0.38777432,-0.41333404,0.41482702,-0.6048467,-0.38053027,-0.03946799],[-0.122554004,-0.105075054,0.72700727,-0.087382294,0.37528226,0.65905285,-0.4292818],[-0.47591224,-0.3380254,0.6051541,-0.2619172,0.30789238,0.24751364,0.37409812],[-0.08474495,-0.46902463,0.37705857,-0.61829376,0.35094222,0.6649397,0.07235656],[-0.6540115,-0.46159643,0.66689605,-0.59667706,1.0229484,0.06419672,-0.12906657],[0.14077464,0.25589386,-0.705507,0.41406876,-0.5768568,0.08440071,-0.3479489]],"activation":"σ","dense_2_b":[[0.06355875],[-0.17415898],[-0.1774852],[-0.11819309],[-0.41535345],[-0.1463154],[-0.38811693],[0.09710054],[-0.05073436],[-0.11638209],[-0.14782049],[-0.102039225],[0.13234599]]},{"dense_3_W":[[-0.17214395,0.5678262,-0.11139721,-0.08668092,-0.27163222,0.13644972,0.52798116,-0.08823449,-0.5390309,-0.41089463,-0.5085388,-0.5108906,0.6503059],[-0.49004817,0.507694,-0.28311312,-0.27198496,-0.6048582,-0.32954597,-0.027210526,-0.598534,0.24722685,0.6126394,0.63478196,0.4942442,-0.35184625],[0.66657585,-0.16694659,0.27015567,-0.4425793,-0.12436591,-0.39648074,0.17227231,0.61576825,0.53334814,-0.54657924,0.16337119,-0.4853141,-0.29025096]],"activation":"identity","dense_3_b":[[0.07506834],[-0.027431693],[0.033431824]]},{"dense_4_W":[[-0.19975226,1.0868903,-0.14778052]],"dense_4_b":[[-0.030237392]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019 b'8965B07010x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019 b'8965B07010x00x00x00x00x00x00'.json deleted file mode 100755 index 971abf4ae7..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019 b'8965B07010x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3547435],[0.9349845],[0.3416719],[0.03020802],[0.9287519],[0.93094236],[0.9321697],[0.9195053],[0.90565664],[0.88330543],[0.85894924],[0.03025142],[0.030234234],[0.030215727],[0.030088654],[0.030025238],[0.029914714],[0.029875476]],"model_test_loss":0.007811516057699919,"input_size":18,"current_date_and_time":"2023-08-11_01-12-12","input_mean":[[27.099766],[0.021257939],[-0.009488095],[-0.0040843748],[0.024692915],[0.023505691],[0.0221261],[0.019820152],[0.016889216],[0.016442697],[0.016379314],[-0.0040564938],[-0.004047964],[-0.004046166],[-0.0040283427],[-0.0039906264],[-0.0039846366],[-0.0040857326]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.2157677],[-2.3838754],[3.0455196],[0.8014893],[0.07945207],[3.106963],[2.1556125]],"dense_1_W":[[1.1125633,-0.56988466,-4.0888886,-0.15938745,0.6582105,-0.46116465,-0.41639355,0.04232433,-0.59602994,-0.32990792,1.0122606,-0.49626034,-0.13254666,0.37965775,0.3581549,0.51340127,-0.18809582,-0.113844536],[1.1409476,-0.52942747,0.0009779995,0.17279683,0.42025048,-1.0194471,0.19619784,0.018046845,-0.05372719,0.19695577,-0.14354223,-0.35454744,-0.4519569,0.3006548,0.89002454,-0.13396992,0.37972572,-0.4401214],[1.3309811,1.4823053,0.2582569,-0.032915797,-0.28236762,0.4846734,-0.15269001,0.3552266,0.30250248,0.14145501,-0.27240917,0.4871061,0.5173212,-0.7224162,-0.27998483,-0.41258854,0.20030643,0.14221442],[0.7907197,1.6901718,5.3816576,-0.27129257,-1.145268,0.31147382,0.019620774,0.17815213,0.4287783,0.04148877,-0.8830161,0.44120663,0.42428204,0.22440527,-0.92130196,-0.22413124,-0.33906758,0.54252696],[-0.012449405,1.7189058,-0.011069483,-0.08866588,0.0305128,0.9370316,-0.35130048,-0.024127513,0.24698113,0.31200036,-0.14631376,-0.17734727,0.21231978,-0.45571813,-0.14337474,0.32901996,0.2770767,-0.34568372],[1.3784999,-1.3435363,-0.2745729,0.25279233,0.07493813,-0.42336947,-0.063481055,-0.31757474,-0.12468922,-0.118494295,0.1393878,-0.64342916,-0.024168873,0.13941756,0.21592365,0.3690261,0.13736965,-0.3378454],[-1.1883208,-1.0948199,0.0016973034,0.36374646,0.6156439,-0.702277,0.4276083,-0.17839254,-0.15477405,-0.0038111163,0.15055132,-0.24193537,-0.24351074,-0.2785849,0.9893942,-0.10433792,0.28482616,-0.3947434]],"activation":"σ"},{"dense_2_W":[[-0.41992396,1.2538254,-1.3762401,0.18826605,-1.2015911,1.0849522,0.95279044],[-0.554603,-0.46099252,-0.21578617,0.045173306,0.6597546,-0.67514,-0.10196972],[-0.062698506,-0.5813329,-0.4847704,0.3779744,-0.18567432,-0.012139243,0.13781239],[0.54706806,0.63951415,-0.85959625,0.06293286,-0.7042504,0.8421599,0.5909391],[0.46164697,0.4020649,-0.33452457,-0.014348776,-0.62764764,0.124300346,0.9453233],[-0.3903317,0.6063093,-0.43484682,-0.2860064,-0.8296564,0.7835651,0.21584539],[0.175473,-0.5825516,-0.22237642,0.07386135,-0.3432968,-0.3868117,-0.21827103],[-0.5004876,0.97018445,-0.43547085,0.36776522,-0.27490538,0.48544273,0.9886506],[-0.6295581,-0.7262303,0.18957756,0.4320069,0.15381597,-0.37602007,-0.3400327],[-0.18816905,-0.27860478,0.91212904,0.38390306,0.2492882,0.12610404,-0.27094096],[0.037768684,0.45618993,-1.6272914,-1.0754924,-0.6273605,0.48672768,0.96011865],[-0.33102858,-0.027864542,0.42045346,0.14589894,0.015219363,-0.13589944,-0.77460396],[0.17902899,-0.50285494,-0.4366347,0.16011943,0.070149496,-0.4917402,0.015056903]],"activation":"σ","dense_2_b":[[-0.22400843],[-0.01302815],[-0.03749996],[-0.11806751],[-0.11926077],[-0.09058484],[0.06280237],[-0.2770851],[0.030630045],[0.07445694],[-0.22077157],[0.09475054],[-0.29818374]]},{"dense_3_W":[[-0.010462812,-0.24828628,0.041264076,0.5696833,0.15721063,-0.0060403845,0.0508466,-0.10241195,0.11243323,-0.5261026,0.49312815,-0.60535157,-0.22609983],[0.66831225,-0.3054378,-0.1565705,-0.031996824,0.26015618,0.4501768,-0.6939041,0.5919593,-0.69475293,-0.031049775,-0.053406052,0.018912103,0.13819246],[-0.50486624,-0.55928755,-0.53656745,0.48358017,0.5427902,0.50403154,0.46978712,-0.30256158,-0.14531422,-0.0904506,0.031830106,0.5406881,-0.063055396]],"activation":"identity","dense_3_b":[[-0.068349525],[-0.07652613],[-0.057301868]]},{"dense_4_W":[[-0.72008973,-0.7991561,-0.02538519]],"dense_4_b":[[0.07405978]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022 b'8965B41110x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022 b'8965B41110x00x00x00x00x00x00'.json deleted file mode 100755 index 95fdae0f2d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022 b'8965B41110x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.376161],[1.2838221],[0.5474099],[0.04934304],[1.2836047],[1.2821697],[1.2806356],[1.258706],[1.2369865],[1.2116693],[1.183833],[0.049019773],[0.04906449],[0.049113937],[0.049148172],[0.049036138],[0.048767343],[0.048263323]],"model_test_loss":0.008681067265570164,"input_size":18,"current_date_and_time":"2023-08-11_02-26-47","input_mean":[[23.067476],[-0.03387557],[0.0021314505],[-0.00026479672],[-0.0335918],[-0.03408871],[-0.034120698],[-0.033429306],[-0.03334599],[-0.035154633],[-0.03337258],[-0.0003344364],[-0.00031001537],[-0.0002858812],[-0.0002081701],[-0.00014168753],[-0.00010316148],[-0.0001947083]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.00035714143],[-0.44112498],[-2.0768487],[0.033623725],[2.3311365],[-0.2579414],[0.068420805]],"dense_1_W":[[-0.00509446,-0.23187363,-1.2282524,-0.8727873,-0.20932141,0.4933777,-0.6846191,0.32296148,0.60479945,-0.27046466,-0.14131822,-0.012867556,0.5326964,-0.12989101,0.29854774,0.2623998,-0.22680795,0.051163733],[-0.059410393,0.43026504,0.010004543,0.2136965,-0.26893613,0.8620313,-0.18596862,-0.13626388,-0.107266344,-0.1622253,0.22793797,0.35623074,-0.27369574,-0.48247203,0.1288161,-0.14182153,0.17263421,-0.15390971],[-0.64431036,0.55822396,-1.3443316,-0.12504154,0.01676618,-0.694321,0.6168717,-0.6036482,-0.25818932,-0.11348284,0.24836093,0.107356064,0.13224693,0.04477359,-0.029285533,-0.43488002,-0.15231457,0.32518724],[0.048481237,0.42892945,0.026479786,0.108767025,-0.73508763,1.1185008,-0.38002115,0.03620541,0.086171456,0.061443076,-0.08954377,0.7163156,-0.22313805,-0.4416368,-0.18677765,-0.29935995,-0.004914676,0.18798521],[0.6947259,0.22686858,-1.3395145,-0.026273083,-0.024484975,-0.63676757,1.010914,-0.69115335,-0.47127905,0.24076219,0.13991874,0.05702926,-0.38383457,0.4660129,-0.15360665,-0.10321115,-0.20715226,0.20123789],[0.015787806,0.48204544,-0.021891365,0.12252965,0.067283645,1.2190595,-0.67878187,-0.18536092,-0.18721336,0.10465234,0.14439303,0.15279837,0.07980276,0.09336658,-0.8014295,-0.043885637,-0.058773834,0.113214575],[0.0014229139,-1.1489844,-3.6802135,0.37640184,1.4294708,-0.076660365,0.3178863,-0.64991164,-0.70733184,-0.21969552,0.770838,-0.26442793,-0.2161789,0.15546018,-0.12903892,0.17621045,-0.28502613,0.11893793]],"activation":"σ"},{"dense_2_W":[[-0.54397076,-0.540163,-0.5861562,-0.557604,-0.49618587,0.10378188,-0.11437754],[-0.41089043,-0.41863373,-0.26381302,0.06044076,0.28395495,-1.129064,-0.59406483],[-0.7494169,-0.08572868,0.52618885,-0.5607684,0.39462608,-1.169383,-0.1503176],[0.4045638,0.70051044,-0.5056532,0.6174259,-0.5292022,0.26922572,-0.424674],[-0.27162388,-0.9250028,0.26857534,-0.01561676,0.5560947,-0.33507198,-0.16067682],[-0.5384087,-0.64021826,-0.31936148,-0.2864999,0.42469084,-0.5843407,0.030071743],[-0.80377173,-0.5939738,1.089976,-0.60083944,-0.96987534,-1.6227651,0.9416666],[0.40233278,0.16919671,-0.42055172,0.41217375,-0.26429188,0.31943977,0.2621414],[0.0319197,-0.45274907,-0.0022422147,-0.6616981,0.45422152,-0.74961704,0.64761114],[0.298545,-0.08646255,0.16982067,0.49902782,0.06976334,0.75716037,-0.17437762],[0.12613215,0.7822465,0.19383484,-0.011980963,-0.5947784,0.040464688,-0.67411786],[-0.27101958,0.011575684,-0.007966585,-0.32394916,-0.23960575,-0.05978105,0.3404521],[-0.07279379,0.53345263,-0.46249855,0.589232,0.4325604,0.32934994,0.050769333]],"activation":"σ","dense_2_b":[[-0.27212226],[-0.03061088],[0.223251],[-0.1398213],[0.024589097],[-0.05151826],[0.1156625],[-0.07707154],[0.17189187],[-0.07979791],[-0.0551535],[-0.04675364],[-0.061966155]]},{"dense_3_W":[[-0.12258424,-0.67310715,-0.6216291,0.70087993,-0.5456542,-0.08261071,-0.794985,0.378915,-0.7075973,0.33079588,0.28384545,-0.3226729,0.3842719],[-0.53314304,-0.3283625,-0.027936831,-0.30382243,0.5143159,-0.11898092,0.06643987,-0.22891304,0.20859952,-0.62020797,-0.6542792,0.21820208,0.08545237],[0.4545815,-0.4721545,-0.28263086,-0.19456169,-0.294614,0.42408562,-0.28720883,0.50096816,0.17924507,0.2068184,-0.38797694,0.21201205,0.27561057]],"activation":"identity","dense_3_b":[[0.020500826],[-0.0064320345],[-0.03172262]]},{"dense_4_W":[[1.3453387,-0.38940504,-0.36594775]],"dense_4_b":[[0.020062331]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019 b'8965B41090x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019 b'8965B41090x00x00x00x00x00x00'.json deleted file mode 100755 index eb5ba30c31..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019 b'8965B41090x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6056595],[1.1011987],[0.45016465],[0.036513034],[1.0954262],[1.096654],[1.0972972],[1.0781622],[1.0577228],[1.0278832],[0.99876994],[0.03632588],[0.03636222],[0.03639234],[0.036382567],[0.03631101],[0.036141142],[0.035890657]],"model_test_loss":0.009378368966281414,"input_size":18,"current_date_and_time":"2023-08-11_03-42-04","input_mean":[[25.669659],[-0.047895048],[0.011095525],[-0.0010007567],[-0.050389417],[-0.04983048],[-0.04955661],[-0.044621523],[-0.04115602],[-0.035016187],[-0.028634345],[-0.0010792029],[-0.0010608791],[-0.0010422019],[-0.00097256503],[-0.0010143764],[-0.0010519858],[-0.0011353532]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16146694],[-1.5599775],[-0.17506365],[-0.19151914],[0.33073556],[-0.0044728843],[-1.8738011]],"dense_1_W":[[-0.022587843,-1.696307,-5.400682,0.3648149,0.67200285,-0.078337416,0.5580287,-0.7384839,-0.4336378,-0.06844309,1.2609831,-0.46469173,-0.3023337,0.33104905,0.30154014,0.21899197,0.04919983,-0.20795655],[-0.47104296,0.73747975,0.17403716,0.23270167,-0.1037867,0.8239424,0.09184954,0.16263483,-0.037750896,0.15098697,-0.0754606,0.34493265,-0.082084626,-0.33557257,-0.18489552,0.33800292,-0.16610008,-0.057679377],[-0.0027718232,1.5370984,0.024881154,-0.5346706,0.23415335,1.4315361,-0.14873216,0.105326936,0.066477254,0.8128371,-0.3328177,-0.32810703,0.40303403,0.28103107,0.07711046,0.079642035,0.076980725,-0.08185225],[-1.133281,-0.037655216,-0.20665579,0.09188236,-0.7868618,-0.026023107,-0.8787548,-0.6428669,0.033134256,0.11970976,-0.10050087,0.059997767,-0.022198018,-0.16140892,-0.35953227,0.29168937,0.034544915,0.05378626],[1.1066848,0.27753586,-0.22365077,0.16971135,-1.1832408,0.44884738,-0.96368015,-0.91032207,-0.23031113,0.08507745,0.05559425,-0.31901634,0.28722385,-0.31672338,0.21700029,-0.091585815,-0.15736222,0.17971504],[-0.004321371,-0.06275011,-0.048157416,0.24579182,0.47604734,-1.3198181,0.6782722,-0.10995617,-0.20460491,0.042091597,0.05913588,-0.5444536,0.061146915,0.30363235,0.18061714,0.2797491,-0.014113867,-0.18732737],[-0.5763257,-0.9677455,-0.1951802,0.11323726,-0.312983,-0.53621775,0.1185856,-0.21250775,0.04489358,-0.15929341,0.064324245,-0.2883423,-0.13198704,0.2777305,-0.03675221,-0.22492863,0.11493704,0.080734536]],"activation":"σ"},{"dense_2_W":[[-0.61590296,-0.5195715,-0.108829506,0.4103641,-0.15294282,0.4410914,1.4810303],[0.4780821,-0.8781517,-0.4252669,-0.59855515,0.4804704,0.7194652,0.3171456],[-0.0060195136,0.31312257,0.64193386,0.2910982,0.84490585,-0.9846345,-1.0567933],[0.1459189,-0.50605303,-0.69084024,-0.14800137,-0.88331693,0.6852774,0.2694695],[-0.3053409,0.35913458,0.7041157,-0.23017813,-0.017635284,0.06075772,-0.2936795],[-0.1356475,-0.78858066,-0.8566893,0.1977979,-0.3749218,0.33831593,0.691472],[0.5872542,0.44983965,0.22061676,-0.116593465,-0.36591926,-0.96924776,-0.14946656],[0.13530682,0.6748068,-0.19304672,0.5032931,0.8270327,-0.7906366,-1.0424157],[0.30044878,-1.209003,-0.07319125,-0.34063867,-1.1481062,0.9603452,1.1442114],[-0.20257956,0.61473626,0.5823472,0.24531272,-0.22855185,-0.6818321,-0.42225984],[-0.7394789,0.7810616,-0.058806174,0.8324751,-0.3867912,-0.97824925,0.15068337],[0.5175145,-0.9351888,-0.3562028,-0.7593984,-0.32492992,1.3009138,0.008064033],[-0.7596698,-0.08702234,-0.5448599,-0.6187972,0.3668954,-0.02732415,0.09881363]],"activation":"σ","dense_2_b":[[0.12397174],[0.33330676],[-0.0799793],[0.04158973],[-0.09782006],[0.037273075],[-0.23756596],[-0.14609045],[-0.24821158],[-0.159363],[-0.2940094],[0.17432326],[-0.22460997]]},{"dense_3_W":[[0.44469282,0.50233734,-0.66101295,0.3700973,-0.07787853,-0.08806539,0.41965428,-0.43115306,-0.022663087,-0.6569443,-0.39882353,-0.02137261,0.15087838],[0.16178976,0.09075096,-0.7934335,0.5412506,-0.092891194,0.6815236,-0.3410796,-0.31042063,0.55821943,-0.65534914,-0.56217957,0.64118695,-0.00170126],[0.49080417,-0.35064137,0.1350645,-0.5279935,0.09069881,0.516484,0.42135808,-0.110838115,-0.23615395,-0.30600968,0.33043766,-0.74036384,0.1663846]],"activation":"identity","dense_3_b":[[0.07007987],[0.05591756],[0.010658105]]},{"dense_4_W":[[-0.39591685,-0.9289211,0.07738602]],"dense_4_b":[[-0.050904196]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019.json deleted file mode 100755 index b1b51e3228..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6041064],[1.1035304],[0.4484023],[0.03683061],[1.0957737],[1.0976914],[1.0990177],[1.0801798],[1.0598575],[1.0331676],[1.0052766],[0.036654923],[0.036684364],[0.03671293],[0.036709417],[0.036651965],[0.036492568],[0.036210157]],"model_test_loss":0.009458640590310097,"input_size":18,"current_date_and_time":"2023-08-11_02-52-02","input_mean":[[25.630205],[-0.05623775],[0.010955678],[-0.0011824107],[-0.058129467],[-0.058100134],[-0.05753972],[-0.052215047],[-0.05002431],[-0.042788718],[-0.035654448],[-0.0013065297],[-0.001283106],[-0.0012580294],[-0.0011568652],[-0.0012149647],[-0.0012245286],[-0.0013113298]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.6020029],[-0.014326092],[2.131077],[0.9675631],[-0.19065784],[0.022073187],[-0.17599037]],"dense_1_W":[[-1.3987874,-1.1022329,-0.34505498,0.7636868,-0.20586683,-0.9504459,-0.049020052,-0.3938162,-0.123028636,-0.32886922,0.15735438,-0.4781323,-0.48132908,0.23977482,0.10422825,-0.12448882,0.05244729,-0.11038789],[-0.018301038,-0.6299352,0.00622713,0.13428006,0.5419454,-0.8375825,0.56663495,-0.19548799,-0.23334435,-0.2798497,0.34237435,-0.3636734,0.1918039,0.26086813,0.23164305,0.07724925,0.36682686,-0.23426089],[0.9700282,-1.2141867,-0.24132554,0.7250985,-0.054316934,-0.82846856,0.20743893,-0.07541251,-0.0029775759,-0.2764805,0.07297132,-0.55774605,-0.61494875,0.7186673,-0.20925622,-0.012554848,-0.007072312,-0.06780203],[1.2655128,0.6922755,-0.24722645,-0.26949418,-1.186765,0.52344996,-1.3021243,-1.0206279,-0.081423774,0.2734177,-0.22090656,-0.008360833,0.42805007,-0.6104315,0.10659541,0.59180355,-0.07409862,-0.16140598],[0.0016111843,2.3020566,-0.09538863,0.4775302,0.19104634,0.7581803,1.2245975,0.3259312,0.13016133,0.71805245,0.37977412,0.2731153,-0.35271376,-0.75976604,0.3985421,0.36015168,-0.24252148,-0.09097576],[-0.1696741,0.7506803,0.118888825,-0.3327318,-0.5104699,1.7509611,-0.8092226,-0.102412894,0.21171542,-0.41029605,0.29316515,0.289645,0.3842453,-0.32381833,-0.080485,-0.27451643,0.2969006,-0.0033906084],[0.016534764,-2.0133348,-5.4863,-0.03373743,1.1940682,-0.20837387,0.4025841,-0.2529515,-1.1387988,-0.38183406,1.9944586,-0.12616248,-0.8426146,-0.22513841,1.2779588,0.51199806,0.32435155,-0.69949305]],"activation":"σ"},{"dense_2_W":[[-0.7638269,0.031352714,0.10360953,0.5546481,0.30863878,0.82808226,-0.33563384],[0.51879066,-0.44226646,-0.5796693,-0.40858063,0.1578528,0.15035929,-0.84812665],[-0.15702121,-0.67073447,-0.4197038,0.3220818,-0.05991348,0.38041055,0.06092204],[0.806767,0.06304986,0.8075057,-0.20168602,-0.33820373,-0.87435573,-0.28601554],[0.20003784,-0.08937316,0.25184897,-0.5255257,-0.5728098,-0.43476734,-0.010894257],[-0.01787694,0.27795494,0.11630318,-0.06266501,0.060686372,-0.63279563,0.44636598],[-0.4958114,0.43005335,0.7080226,-0.12047338,-0.48428482,-0.2889726,0.44259036],[-0.39932543,-0.51808834,-0.7372899,-0.29793862,0.48923936,0.58836514,0.25622228],[0.25029996,0.08891042,-0.81593496,0.46271,0.15725288,-0.2126664,-0.08401766],[0.6195721,0.5448667,0.041502103,-0.8573642,-0.5645224,-0.87836134,0.20946307],[-0.14115311,-0.90280044,-0.5433088,0.7701665,-0.6260164,-0.13906801,0.23042479],[0.07473069,0.28087774,-0.9681486,-0.009864042,-0.6672649,0.45934054,-0.64873284],[0.13347791,-0.02133041,0.0807407,-0.2441324,-0.5546702,-0.2578623,-0.16019678]],"activation":"σ","dense_2_b":[[-0.020695023],[-0.118575685],[-0.045242883],[0.028083786],[-0.27159098],[-0.023374764],[0.012269623],[-0.12869656],[-0.1787051],[0.0306908],[-0.07568033],[-0.10759439],[-0.27744076]]},{"dense_3_W":[[-0.49162164,-0.4191868,0.0067901798,0.102787994,0.10602838,0.67330825,-0.04103629,-0.5477224,0.37683812,0.7409758,-0.15619572,-0.5923507,-0.07951754],[-0.039288122,0.28114173,-0.59904766,0.6645154,-0.44911647,-0.06922432,0.215001,-0.27168792,-0.19525866,0.49492684,-0.23237818,-0.6230769,-0.50621545],[-0.22085246,-0.51831955,-0.27986276,-0.38381657,0.54892325,0.44768026,0.31407866,-0.5329104,-0.16832387,0.34908122,-0.08704006,0.5308806,0.64026624]],"activation":"identity","dense_3_b":[[0.0607661],[0.06281816],[0.04532571]]},{"dense_4_W":[[-0.5887859,-0.83423084,-0.84973454]],"dense_4_b":[[-0.054816216]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022 b'8965B41110x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022 b'8965B41110x00x00x00x00x00x00'.json deleted file mode 100755 index c4dd358d7f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022 b'8965B41110x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.621417],[0.60216844],[0.33766446],[0.031071559],[0.6074495],[0.6063964],[0.60408527],[0.592746],[0.5848162],[0.57773405],[0.57088673],[0.031094117],[0.031086348],[0.031075306],[0.03092497],[0.030987453],[0.030950982],[0.03085089]],"model_test_loss":0.0035974758211523294,"input_size":18,"current_date_and_time":"2023-08-11_04-33-01","input_mean":[[23.851212],[-0.011735492],[0.014822557],[0.0015981287],[-0.017860906],[-0.016335273],[-0.014861164],[-0.008908558],[-0.00019100294],[0.008320288],[0.015085844],[0.0013476122],[0.0014353959],[0.001521554],[0.0016404905],[0.0017713357],[0.001890435],[0.0018140652]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.29046783],[-0.7386649],[0.8099128],[-0.0830979],[-0.066769995],[-0.58767533],[-0.5783042]],"dense_1_W":[[-0.06973173,-1.1593121,-3.7385426,0.17812389,1.2648335,0.17882043,0.11353305,-1.1128533,-1.1402131,0.49317023,1.1549392,0.22488351,-0.039551347,0.54545957,-0.9453328,-0.30246973,0.48812893,-0.003690356],[-2.088028,0.03569328,0.06524252,0.3073911,-0.0669223,1.0475743,-0.9218425,0.20211175,-0.4463,-0.18910088,0.9684125,0.13405068,-0.1174013,0.081153475,-0.36694288,-0.18311328,0.19375218,-0.05552698],[2.1723948,-0.104979195,0.06845127,0.13558877,0.12955302,0.54661036,-0.71585613,0.37260148,-0.47275162,0.1936406,0.69998413,-0.17018797,-0.29841486,0.19461034,0.11221291,0.08999232,0.40883166,-0.48241648],[-0.0035949238,0.5195585,0.056816265,-0.21500319,0.13682762,0.6210256,-0.26336774,0.2708143,-0.3960605,-0.09337605,0.18600617,0.40625247,-0.03272976,-0.39815915,-0.4334662,0.03242743,0.106475964,0.18782848],[0.00026254903,-0.43522957,-0.29160616,1.2150093,0.561134,0.13226019,-0.3680962,0.4117709,-0.523177,0.21208563,0.37644473,1.2890456,0.35225967,0.95191664,-0.18308976,-1.3802807,-0.5709553,-2.2156804],[0.53350025,0.035052005,0.008865246,-0.04431933,-0.3176884,0.83934355,-0.37516874,0.00706265,0.0775229,0.030765524,-0.040516727,0.006187998,0.5950189,0.14796092,-0.52394676,0.060235158,-0.5274258,0.1178207],[0.5637231,0.13862197,-0.008244962,-0.3938652,0.48107556,-0.6489267,-0.07129171,-0.071288355,-0.050481576,-0.2556226,0.21773542,-0.3818978,0.122946635,-0.0005463466,0.5423771,0.15439962,-0.14910692,0.2768216]],"activation":"σ"},{"dense_2_W":[[0.33422744,0.5476326,-0.40897554,0.03363565,0.42117637,0.1993684,0.11700197],[0.016211191,-0.42357254,-0.013600616,0.58073217,-0.10585923,0.4968173,-0.06083235],[0.2560805,0.23497431,-0.4423548,-0.6719212,0.33036447,-0.65422225,0.11651074],[-1.0021728,0.6715551,-0.28054923,0.066978924,-0.047049686,-0.23047742,-0.7727124],[-0.8329245,-0.06253365,-0.8275449,-0.19949576,-0.49645177,-0.3025703,-0.39923748],[-0.0965028,-0.28401488,-0.29893482,-0.5392418,0.516837,-0.38260764,0.7805964],[-0.13280529,-0.06303277,-0.27558568,-0.47452193,-0.09497839,-0.026708731,-0.06549511],[0.33222172,0.09532853,0.094424486,0.41390723,-0.59934753,1.2102501,-1.4455571],[-0.18434185,-0.40622485,0.019825913,-0.44427174,-0.063956864,-0.15254037,-0.16048898],[0.4783499,-0.016979024,-0.38030294,0.03715881,-0.38931444,-0.73212904,-0.18792534],[-0.66844565,0.34431502,-0.1439725,0.48682266,0.041338764,0.32482722,-0.9202753],[0.10901106,0.37365302,0.25427094,-0.22439355,0.1677833,0.32048756,-0.757699],[-0.03728728,0.22946912,-0.5708871,-0.12548028,0.13651444,-0.3683857,0.40373203]],"activation":"σ","dense_2_b":[[0.03504426],[-0.021830266],[0.014506293],[-0.15004124],[-0.1996024],[0.08620867],[-0.22626895],[-0.2200163],[0.027354911],[-0.0187473],[-0.26950043],[-0.080006495],[-0.00023749561]]},{"dense_3_W":[[0.003805781,0.57647467,-0.3215517,0.6421878,0.36746186,-0.44294173,0.24244395,0.5338086,-0.60588413,-0.45965254,0.3151681,0.50712276,-0.30720553],[0.4721997,0.13897571,-0.66421515,0.36394912,-0.12090668,-0.54066294,-0.06981957,0.42225152,-0.1879612,-0.44998485,0.2981854,0.4459964,-0.1991944],[-0.46331075,-0.33276492,0.31424695,-0.0069436645,-0.17305002,0.6113178,0.48357555,0.2451846,0.33225268,0.5144922,0.4602627,0.007510923,0.5021902]],"activation":"identity","dense_3_b":[[-0.014281405],[-0.011103369],[0.0054283007]]},{"dense_4_W":[[0.86027306,0.53091425,-0.4524987]],"dense_4_b":[[-0.011388131]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022.json deleted file mode 100755 index e308b6f7fd..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.6210785],[0.6022118],[0.33968922],[0.03099292],[0.60531795],[0.60364884],[0.60261005],[0.5927404],[0.5860802],[0.5780433],[0.57123464],[0.03102364],[0.03101872],[0.031000676],[0.030836336],[0.030818319],[0.03077106],[0.03060258]],"model_test_loss":0.0035856943577528,"input_size":18,"current_date_and_time":"2023-08-11_04-08-26","input_mean":[[23.850887],[-0.011798306],[0.008752907],[0.001631103],[-0.017083079],[-0.015211123],[-0.013052424],[-0.009723851],[-0.0010425432],[0.00763124],[0.012975372],[0.0013719393],[0.0014717524],[0.0015690022],[0.0016464603],[0.0017470267],[0.0018605703],[0.0018421216]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.64532423],[0.2870542],[-0.58806527],[0.26318058],[0.6671186],[0.6541222],[-0.22572796]],"dense_1_W":[[1.5230434,-0.007496155,1.0794041,-0.4841308,-0.6977591,0.51557744,-0.09899542,-0.23689902,0.18946739,-0.113655314,0.44560134,-0.532302,0.034997255,-0.1360111,0.17597911,0.59236944,0.050468095,-0.20623948],[1.0181296,-0.059453703,0.009536515,-0.01483209,0.38743848,-1.6092814,0.42287022,-0.26000166,0.51355636,-0.09300312,-0.20316118,0.07417511,-0.78482175,0.31442174,0.45461628,-0.05262415,-0.16865608,0.13292025],[-1.3765476,0.27935305,0.9930571,-0.51475865,-0.93571097,0.3701744,-0.72828853,0.1573733,0.84987473,0.26969302,-0.27910694,-0.17882767,0.23388991,-0.56191975,-0.17135333,0.69586045,0.3468155,-0.3236991],[1.0663162,0.11496424,-0.010609953,-0.34656164,-0.31095302,1.2454789,-0.104264125,0.16323781,-0.511932,0.1954236,0.14337912,0.27471086,0.2458354,0.09317978,-0.29965654,0.074385874,0.1680878,-0.15244573],[-0.5496053,0.30009452,0.019474812,-0.15155403,-0.42104033,0.804735,-0.24418715,0.12206082,0.01419753,-0.0772803,0.0075358734,0.31184286,0.119791746,0.02318575,-0.7550021,0.101326704,-0.19755691,0.20817216],[-0.4716649,-0.39404374,-0.017001849,0.30398825,0.37287918,-1.0172095,0.57842916,0.051887393,-0.14316402,0.08946873,-0.013960456,-0.18220635,-0.4013893,-0.019781204,0.40079808,0.3981192,0.09988082,-0.2901716],[-0.0910912,-1.8955553,-5.6552796,0.74153733,1.5436069,0.09860224,-0.26889333,-0.8300267,-0.9122361,0.28157806,1.6353471,-0.3455456,-0.19665305,0.20067552,-0.12310253,0.0478631,-0.24051762,0.018789763]],"activation":"σ"},{"dense_2_W":[[0.19653954,-0.5258311,0.14326829,0.16017042,0.2240187,-0.14981109,-0.23470822],[-0.20858146,0.37757653,-0.22290857,-0.24139176,-0.58756834,0.94805384,-0.3055405],[0.3827672,0.8731881,-0.5274364,0.5947985,-0.12186718,-0.22117402,0.97557515],[0.22888982,0.034816697,-0.4402026,-0.1263617,-0.2391757,0.375515,-0.45880428],[-0.50858766,-0.009293968,0.20779714,-0.06797905,-0.15627685,0.8566428,-0.16560455],[0.33234873,-1.0452052,0.3114699,-0.49879384,0.37760928,-0.10235413,-0.7995544],[-0.21585348,-0.7473184,0.45133677,0.48506138,0.35556215,-0.6276531,-0.18618119],[-0.3087059,-0.757823,0.30346602,0.1112487,0.23632218,-0.32476935,-0.23821081],[-0.33813116,-0.067351766,-0.084407635,-0.7633368,-0.33403933,0.5852588,0.04424095],[-0.13047165,-0.57245564,-0.10349484,0.44043526,0.8112992,-0.22286835,0.1134046],[-0.81824476,-0.48836493,0.24637613,-0.97839844,-0.44806626,0.014597846,0.6120905],[-0.011660478,0.27182546,-0.27260295,0.021457694,-0.15093423,0.103856236,-0.289786],[0.08348892,-0.27305228,-0.033261165,0.8160634,0.7069094,-0.68072647,-0.18045369]],"activation":"σ","dense_2_b":[[-0.028337892],[0.16126229],[-0.024233993],[-0.15039966],[0.010798022],[-0.2899587],[-0.050011154],[-0.23201685],[0.014608492],[0.003838476],[-0.08799288],[-0.049894854],[0.027036132]]},{"dense_3_W":[[-0.27019745,0.66014105,0.44614148,0.13896823,0.4704919,-0.17726699,-0.7050766,-0.099338174,0.18850864,-0.27997562,0.48057485,0.0069672302,-0.6804747],[0.4988687,-0.31667402,0.47645807,-0.12850301,-0.14989346,0.22235468,-0.09084276,0.10203466,0.19078694,-0.2741972,0.11726287,-0.24347067,-0.14281158],[0.11220936,-0.20938803,0.22899435,-0.17603627,-0.23535244,0.4323248,-0.064221285,-0.06924562,-0.5364228,-0.29542312,0.031429153,0.48623005,0.53304803]],"activation":"identity","dense_3_b":[[-0.056309115],[-0.10035845],[-0.002584182]]},{"dense_4_W":[[-0.93852043,-0.002831195,0.0376801]],"dense_4_b":[[0.05399409]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018 b'8965B10040x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018 b'8965B10040x00x00x00x00x00x00'.json deleted file mode 100755 index 1a89e9aa72..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018 b'8965B10040x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.7313623],[0.9888169],[0.4152069],[0.033757195],[0.97801226],[0.9809649],[0.98316544],[0.97654957],[0.96262586],[0.9422399],[0.9169314],[0.033564508],[0.033611197],[0.03365405],[0.03371377],[0.03366836],[0.033512793],[0.03326571]],"model_test_loss":0.010666782036423683,"input_size":18,"current_date_and_time":"2023-08-11_05-49-47","input_mean":[[24.96519],[-0.033782624],[0.009671044],[0.0077961436],[-0.038051996],[-0.037176047],[-0.037127484],[-0.032916453],[-0.028262928],[-0.021224912],[-0.019132588],[0.0075910226],[0.007635079],[0.0076770876],[0.0077970643],[0.007867494],[0.007903498],[0.007878507]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0528064],[0.08900857],[0.75784385],[-0.8937406],[-0.51171505],[-0.10186542],[-1.3997765]],"dense_1_W":[[-0.08676465,2.0455117,-0.102706365,-0.6707259,3.1681015,4.2520304,2.8067908,2.0205982,2.160316,1.8089273,0.55365646,0.3163457,0.4537371,-0.29166102,0.61781347,0.54595727,-0.13856713,-0.8539102],[-0.00016419945,-0.56122553,0.006468475,0.058191027,0.3205225,-1.7764372,1.0253428,-0.22990642,-0.023242323,0.14960705,-0.11546516,-0.47926554,0.13979027,0.25853786,0.35933894,0.231268,-0.163933,-0.011948538],[0.8706783,0.5629842,-1.0976667,0.6597201,0.074501075,-1.1088905,0.073258646,-0.08372772,-0.027485643,0.40303627,-0.085082166,-0.15307684,0.13970284,0.4372201,-1.0356691,-0.46190366,0.08466662,0.31719726],[0.00088525575,0.28771025,-0.00041574074,-0.12136347,-0.45848206,0.7646498,-0.7480068,0.08633297,0.2238723,0.22185136,-0.27731135,0.24002591,0.5882265,-0.46785995,-0.36120954,-0.06715729,-0.019443577,0.20275888],[-0.06155146,-0.9296325,-6.176115,0.32850727,1.9988121,0.056870196,-0.7210163,-0.90295607,-0.6347279,-1.0500165,1.7257686,-0.63104945,-0.20577207,0.52953875,-0.038163472,0.21641904,0.24872929,-0.38487554],[0.0006827544,0.06588264,0.019023217,0.33368507,-0.50753003,1.274059,-0.41946143,-0.4562805,0.1713312,0.022509854,0.060954157,-0.0036319275,-0.14435211,-0.17530417,0.13293767,-0.04580827,-0.16321899,0.061178423],[-0.97508353,0.3754842,-1.2725447,0.30404013,0.06964748,-0.63675576,-0.116767436,-0.46295738,0.2441482,-0.061135307,0.2693983,0.19074592,0.19255072,-0.050766017,-0.34838012,-0.5683125,-0.16777495,0.4320534]],"activation":"σ"},{"dense_2_W":[[-1.7291162,0.18712735,-0.784268,-0.5211682,0.23055974,-1.0369477,1.2522866],[-1.4083703,-1.245634,1.5253365,-0.38234624,1.1451472,0.3420805,-1.3369085],[0.4079928,0.09092335,0.3915673,-0.6955576,-0.99043214,-0.37307084,-1.0267273],[0.36806342,0.86456835,0.014784731,-0.9323144,0.08767326,-0.98557246,-0.49028188],[-0.2841241,-0.47625312,-0.21175718,0.43561095,-0.36729914,0.8540727,-0.43895096],[0.16099487,0.7311489,0.19461572,-0.69285166,0.41518864,-1.1639454,-0.08508787],[-0.3261969,0.4563855,0.48312464,-0.14733022,0.76256764,-0.44852886,-0.35733178],[-0.8633155,-0.17938924,-0.4462165,-0.48804846,-0.8097996,-0.4533271,-0.46252802],[0.12385623,0.009189586,-1.1579738,0.71919787,-1.7606289,-0.31546488,0.448854],[0.07684563,1.1983187,0.08234343,-1.091461,-0.19976689,-0.54287857,-0.37857434],[0.560663,-1.4880527,-0.28693125,0.17221202,-0.36113575,0.19427057,0.44083765],[-0.059977785,-0.58561826,-0.57772005,0.7993362,-0.8236306,1.0891352,0.02070652],[0.57416856,-1.5304499,-0.030536273,0.6002819,0.3496771,0.52368426,-0.5069396]],"activation":"σ","dense_2_b":[[-0.2280989],[-0.6234252],[-0.692007],[-0.121901624],[-0.3153857],[-0.17784967],[0.07650244],[-0.45358527],[-0.4148523],[-0.08295175],[-0.3685902],[-0.006143885],[-0.21816583]]},{"dense_3_W":[[-0.6464554,0.59161955,-0.08040031,-0.38394913,-0.2547638,-0.66541696,0.10209947,0.22952524,0.51443064,-0.6007329,0.16476616,0.8392625,0.86081135],[0.29400313,-0.47131515,-0.07440717,0.4786253,-0.22355409,-0.141201,0.57343155,0.42071205,0.08289365,0.49173295,-0.2876836,-0.6514307,-0.34931198],[-0.41638458,-0.038208514,-0.21903223,-0.25014666,0.40054414,-0.80169666,-0.35611898,0.19608808,0.50653106,-0.22687514,0.33846655,0.9839725,0.9331715]],"activation":"identity","dense_3_b":[[-0.1338492],[0.02347098],[-0.14936106]]},{"dense_4_W":[[0.63154566,-0.2949555,0.46449748]],"dense_4_b":[[-0.07701077]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10091x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10091x00x00x00x00x00x00'.json deleted file mode 100755 index 3f9d6a7e29..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10091x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8614244],[0.75124866],[0.55659616],[0.019078998],[0.73906744],[0.7388618],[0.7372679],[0.7206659],[0.7110691],[0.699438],[0.68114865],[0.01886521],[0.018885473],[0.01889542],[0.01875568],[0.01862864],[0.018454202],[0.018320806]],"model_test_loss":0.01200881041586399,"input_size":18,"current_date_and_time":"2023-08-11_07-04-43","input_mean":[[19.02321],[-0.009182516],[-0.017429296],[-0.011283472],[-0.0053655286],[-0.007232309],[-0.0092455],[-0.01603544],[-0.01682772],[-0.019174336],[-0.027758926],[-0.011568266],[-0.011541738],[-0.011520918],[-0.01157352],[-0.011571877],[-0.011668593],[-0.011788717]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.03519353],[-0.15095843],[-0.7353578],[0.13929218],[-3.4776504],[0.041195296],[0.1761386]],"dense_1_W":[[0.046379987,-0.13878189,-0.036664445,0.38224146,-0.0646248,-1.0924313,0.8775562,-0.053549852,-0.15888737,0.1178062,-0.06738964,-0.47581938,0.02085043,0.04761963,0.19045879,-0.015851231,0.15402271,-0.23869996],[0.047233846,-0.37163836,-6.5784287,-1.1358076,0.5292454,-0.7138368,-0.020171849,0.20063849,0.18085273,-0.92067474,0.81135595,-0.51245284,-0.1656133,0.42384866,0.7504459,0.84762216,0.13103229,-0.24118356],[-1.1028277,-0.49579862,-0.098353446,0.35713926,-0.16605736,-0.5360656,-0.20586732,0.2877909,0.058039125,0.21760072,-0.28679097,0.055256702,-0.39677158,0.21102457,-0.21540093,0.018043555,0.26613265,-0.19123672],[-0.08534582,-0.9939401,-0.4242228,-2.8671207,0.6624762,-2.9042678,-4.992002,-3.7515533,-5.1040688,-1.9935926,1.7598441,1.1262454,1.8797381,1.1090043,-1.6218112,-0.863951,-0.5581413,1.6114283],[-1.1540707,0.43415037,-3.6339066,-0.47187626,-0.7554667,-1.4905885,0.6125929,-0.101766944,0.6937759,0.20132032,-0.47469506,0.018180996,0.51194876,0.07081824,-0.20423755,-0.27204958,-0.23085469,0.6143729],[0.005116348,0.3945791,0.10539601,0.331683,-0.8352237,0.98771363,-0.21386153,0.10292913,0.044619523,0.08716431,0.101707004,0.073796205,-0.09338911,-0.22695537,-0.19353603,0.3005215,0.19999096,-0.5015498],[0.018626228,-1.0940357,0.17377485,1.577099,0.87160116,-1.4516218,1.9833297,0.18896727,0.31323293,0.32171655,0.22981676,-0.048349075,-0.14686754,-0.003915933,-0.9725042,-0.13146995,-0.36996123,-0.098727204]],"activation":"σ"},{"dense_2_W":[[0.97411454,-0.51938444,0.8659755,-0.46950406,0.11822711,-0.8958734,0.6047596],[-0.14340101,0.1965236,-0.48290092,0.25887898,0.037219662,-0.33671203,-0.47383884],[0.883092,-0.04182707,0.39375,-0.28783375,-0.27379218,-0.5107806,0.12861542],[-0.3499007,-0.075701565,-0.16065952,0.028407833,-0.21673161,0.32120997,-0.24848087],[-1.0644221,-1.5145135,1.0423622,0.057657007,-0.8929386,0.38188818,-0.29111302],[0.6651675,-0.10167774,0.34609315,-0.41527653,0.24346839,-1.3106738,0.04831263],[-0.33749178,0.13250409,-0.17898846,-0.07075638,-0.325455,0.4888969,-0.32574978],[-0.13392222,0.005456629,0.32891217,0.2271199,0.03492276,-0.6633292,0.12100792],[-0.87907666,-0.5363504,0.67260146,-0.8091148,0.42400393,0.35343498,-0.5102727],[0.73019344,-0.2813332,0.32472983,0.5224319,-0.19995011,-0.8258774,0.12310978],[-0.9651855,-0.19100729,-0.40759322,0.079893395,0.14696078,0.21351884,0.17654544],[-0.38321492,-0.5142046,0.69242734,-0.7369066,-0.16813168,0.6556536,-0.5864559],[-0.87097305,-0.40665868,0.033173006,-0.36359137,0.2589845,0.35792008,0.16423905]],"activation":"σ","dense_2_b":[[-0.022246333],[-0.20147786],[0.01618344],[-0.018682426],[-0.39971286],[-0.37426376],[-0.05391573],[-0.14660585],[-0.12656218],[-0.13277695],[-0.1482318],[-0.31037378],[-0.18615629]]},{"dense_3_W":[[-0.44387364,-0.21935597,-0.264997,0.5069316,0.5022933,-0.08028709,0.39096925,-0.6225095,0.68565357,0.42978552,0.34397504,0.35004535,0.5203644],[0.7957216,-0.052110795,0.6300835,-0.47696984,-0.1722768,0.6797043,0.3657801,0.37323546,-0.4012943,0.56815857,0.08386955,0.013114558,0.5138369],[-0.0116800405,-0.3395463,0.52625775,-0.33296672,-0.6938831,-0.008207481,-0.47937372,-0.119277634,-0.20143117,0.46600667,-0.013720797,-0.29413077,-0.17268106]],"activation":"identity","dense_3_b":[[-0.060016062],[0.030613739],[0.060220987]]},{"dense_4_W":[[1.0726175,-0.54023695,-0.9860894]],"dense_4_b":[[-0.053101283]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10092x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10092x00x00x00x00x00x00'.json deleted file mode 100755 index 3846c4ff8a..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10092x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6808248],[1.0210598],[0.5966659],[0.042756997],[1.0107573],[1.012554],[1.0153259],[0.9912984],[0.9735415],[0.9533497],[0.9332258],[0.042687085],[0.042698804],[0.042709883],[0.042716887],[0.04270658],[0.042552505],[0.04235409]],"model_test_loss":0.008525088429450989,"input_size":18,"current_date_and_time":"2023-08-11_07-30-00","input_mean":[[22.609735],[0.021366691],[0.0036772767],[-0.0055039055],[0.018654037],[0.020882115],[0.02251627],[0.021924747],[0.02177209],[0.018817721],[0.015407738],[-0.005619203],[-0.0055884435],[-0.005562743],[-0.005521372],[-0.0055254106],[-0.005608956],[-0.005731615]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10787289],[2.7295141],[-0.014846635],[-2.52249],[-0.41797954],[0.009203023],[-0.03822759]],"dense_1_W":[[0.006059761,-0.2780369,0.019265022,0.3020706,0.034155324,-1.3772042,0.47423708,0.35504794,0.36091778,-0.19814305,-0.16233607,0.22252728,0.31619906,-0.26939157,0.13296632,0.16370413,0.24879563,-0.44122157],[1.2936878,0.5217924,0.16455218,0.27345595,-0.03019537,1.0137162,-1.5315937,0.121129505,0.2535813,0.051281486,-0.114028275,0.08941389,-0.16636313,-0.046149377,-0.58158803,0.44673163,0.3362695,-0.30439505],[0.010025998,-1.1366434,0.06847304,0.05892584,0.7231386,-0.90292823,0.3060419,-0.17182396,0.06936535,0.13302577,-0.08824037,-0.6510271,0.25069413,0.5232841,-0.39950168,-0.1576116,0.20445362,0.044638686],[-1.2454971,0.6038898,0.16080211,0.12973976,0.13429877,0.7463809,-1.2848366,-0.16410895,0.124600835,0.30732483,-0.16996159,0.18161087,0.29306152,-0.6729109,0.00044485295,0.22021376,-0.11470402,0.0064366944],[-0.057729445,-1.6840429,-6.5337806,0.5755675,1.9029108,0.3108279,-0.045327578,-0.4666652,-0.8846539,-0.7133611,1.3928591,-0.7003825,-0.16232297,-0.3231918,0.5879237,0.5351214,-0.0139183095,-0.46289876],[0.012766599,-0.6894872,0.24702038,-0.23795167,0.051006347,0.81989294,-0.44921973,0.5467078,0.1596552,-0.13800426,-0.14706412,0.2545808,0.15971354,0.31360984,-0.8261207,-0.0990083,-0.2607686,0.524966],[0.011152478,-0.2827323,-0.0088778855,0.10415767,0.04776933,-1.0724484,0.85188013,0.12321841,-0.17070293,0.04727044,-0.03278087,-0.34906387,-0.070353836,0.4458464,-0.016616534,0.07696789,-0.16656372,0.2188996]],"activation":"σ"},{"dense_2_W":[[0.013153307,0.72258556,-0.9607895,0.5651246,0.30607197,-0.020686822,-1.0686581],[0.250104,-0.78947,0.47588462,-0.6149001,-0.032745462,-0.4966682,0.88839453],[0.22150557,-0.76598793,-0.3002023,1.2499317,-1.6504543,0.030420702,0.15898795],[-0.083388545,-0.689518,0.05265897,1.5231378,-1.540956,0.26537773,-0.5574814],[0.24958974,-0.37062392,-0.14619073,-0.13918088,0.43284532,0.04136838,0.07143529],[0.15065649,-0.109692805,0.093387246,0.30221173,-0.024876209,-0.09227776,0.63619983],[0.56862855,-0.17278619,-0.33281788,-0.10547164,-0.00034883298,-0.56013817,-0.22195897],[0.42458898,-0.77232456,0.6531793,-0.07446621,-0.1938117,-0.45410666,0.6741056],[-0.16886851,-0.47917107,0.49286413,-0.034239717,-0.108527124,-0.08425037,0.07619126],[-0.26427963,-0.02655328,-0.7206567,0.46840718,-0.6032674,0.5223421,0.075842224],[0.0049433056,0.95529455,-0.5440883,0.41637206,-0.45465398,0.8077066,-0.71393406],[-0.063968115,-0.108970076,0.109497316,-0.3942332,-0.68592453,-0.0995049,-0.4702665],[-0.70982593,0.37136346,-0.37781605,0.35262644,0.4457534,0.16508546,-0.5957397]],"activation":"σ","dense_2_b":[[-0.116926156],[0.0042479504],[-0.46176797],[-0.23112983],[0.011751201],[-0.011064423],[-0.038083997],[-0.029864028],[-0.008636633],[-0.040441785],[0.016329648],[-0.3489733],[-0.0816719]]},{"dense_3_W":[[-0.022905884,-0.09678962,-0.42239848,0.013462638,0.31903088,-0.51887375,-0.33630884,0.26145482,-0.1154883,0.33833036,0.11669115,0.06747294,0.11933737],[0.050040435,-0.5856353,0.14493953,0.6705113,-0.3872963,0.361062,-0.5757033,-0.16463317,0.09669611,-0.44681597,0.35252583,0.50204754,0.63696355],[-0.45258597,0.3210578,-0.28552428,-0.19756064,0.47599337,0.4500213,-0.24421427,0.72807336,0.25044173,-0.62012583,-0.6892487,0.28510118,-0.39239216]],"activation":"identity","dense_3_b":[[-0.032324813],[-0.058080077],[0.051499244]]},{"dense_4_W":[[0.19064297,0.63367367,-1.2247652]],"dense_4_b":[[-0.051857576]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33540x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33540x00x00x00x00x00x00'.json deleted file mode 100755 index 185558301f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33540x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9780097],[1.4051862],[0.48408332],[0.04853162],[1.3928818],[1.3977288],[1.4018258],[1.375475],[1.3433505],[1.2949077],[1.2478521],[0.048412163],[0.048431084],[0.048459467],[0.048518475],[0.048504874],[0.04839253],[0.0481143]],"model_test_loss":0.00801712553948164,"input_size":18,"current_date_and_time":"2023-08-11_08-30-17","input_mean":[[25.642933],[-0.0019835518],[0.0040060235],[-0.009254944],[-0.0033266023],[-0.0029646403],[-0.0019904082],[-0.0020933496],[-0.0038487294],[-0.005581948],[-0.0044637513],[-0.009216257],[-0.009224849],[-0.009232599],[-0.00923392],[-0.00923287],[-0.009259574],[-0.009315466]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.04618915],[-3.334577],[-0.022748481],[-0.07218225],[3.7755296],[-0.122582935],[-0.0052783587]],"dense_1_W":[[-0.0012499753,0.33883905,0.042702407,-0.2214031,-0.36033404,1.2806584,-1.0731505,0.25989679,0.14866988,-0.10340344,-0.015702773,0.5870672,-0.09173469,-0.32383582,-0.35129866,0.27342206,0.0042890036,0.025042968],[-1.6428236,-0.63481885,-0.111530595,0.3713098,0.092823684,-0.6249234,0.54686266,0.41442233,0.03279755,-0.1797473,-0.09668681,-0.3626609,0.28806838,-0.031328026,-0.23864591,-0.1097307,-0.016905924,0.0765963],[-0.0009610195,1.2744341,-0.11151947,0.054716695,-0.73242664,0.90427834,0.16628876,-0.017297843,-0.053887896,0.30539826,-0.19929217,-0.22211027,0.10559502,-0.13222888,0.23039715,0.42640105,-0.40309757,0.036333088],[-0.023137279,1.8224742,4.434084,-0.51519555,-1.1649675,-0.28008473,0.09062625,0.14845455,0.49387005,0.02369536,-0.5737739,0.32818693,0.34118465,0.1457762,-0.5785472,0.1424408,0.16707024,0.08814323],[1.7683705,-0.1194262,-0.13175204,-0.23340832,0.29679087,-0.8300054,0.16098455,0.44727117,-0.1962079,-0.44604713,0.14344603,-0.46670324,0.37683523,0.5052653,-0.11880916,-0.39280412,0.36395994,-0.05599607],[0.00085408555,-0.3749454,-0.00757018,0.07293645,0.47284073,-1.08383,0.43937385,-0.3126087,-0.2110254,0.091425285,0.019250873,0.18259677,-0.20196928,0.24545331,0.41908297,0.12497451,-0.04950806,-0.27745348],[-0.002797162,0.45220622,0.0928887,0.14079146,-0.038952228,1.2299527,-0.77015364,-0.33163518,-0.19668595,0.18426204,-0.054098736,0.3948651,0.4821092,-0.12373006,-0.4104894,-0.3608244,-0.050283466,-0.054687865]],"activation":"σ"},{"dense_2_W":[[-0.9274079,3.2624276,-0.5414991,-1.8350966,-0.8542368,0.35031518,-0.34859648],[0.9660724,-0.7803512,0.48230568,0.0805093,0.19358476,-0.52365863,0.4405566],[0.7851582,-0.6059611,0.086790875,-0.26486087,-0.7225202,0.06725921,0.7280278],[0.62741816,0.033202164,-0.2685909,-0.15281594,-0.8427713,0.13733315,0.01932823],[0.8164209,-0.41978616,0.2836711,0.26222813,-0.87872094,-0.8590503,0.68521476],[-0.043918654,0.16022983,-0.2956201,-0.4721823,0.8772654,1.004911,-0.83114386],[0.07872535,-0.29399154,-1.0099515,-1.1905336,0.052381076,-0.71205014,-0.7501543],[-0.4239558,0.48020416,-0.45598856,0.09060652,0.64608604,0.5741175,-1.1443394],[-0.09043453,-0.1659236,-0.6169011,-0.7262809,1.2436397,1.0421194,-0.40427843],[0.4041751,-0.14081301,0.57343036,0.18853396,0.12455946,-0.9625049,-0.17269157],[-0.8457818,0.12824811,-0.046741482,-0.18018991,0.9064454,0.3723606,-0.51164293],[-1.1185607,1.6248577,-0.42184004,-0.4399729,-0.2472109,0.8469407,-0.9312666],[0.49973565,-0.3323982,-0.3472047,-0.593044,-0.38130876,-0.39827725,0.49389073]],"activation":"σ","dense_2_b":[[-0.18386438],[-0.05718434],[-0.06549015],[-0.07134607],[-0.10577739],[0.005866841],[-0.2776331],[-0.04393405],[0.1977544],[-0.06883987],[0.05352327],[-0.20584084],[-0.11540173]]},{"dense_3_W":[[-0.06877563,-0.7143566,-0.03641639,0.39388388,-0.18843412,-0.014399047,-0.45135775,0.8130004,0.5402372,-0.22440514,-0.026450275,-0.359043,-0.019707523],[0.18318374,-0.5381017,-0.6231416,-0.5614665,-0.5481862,0.61288226,-0.22442989,0.39143884,0.5283164,-0.4216234,0.38933647,0.2545475,-0.002126224],[-0.88305146,0.18006742,-0.40557522,-0.16114128,0.08966503,0.26192102,-0.4644843,0.3903803,0.02153314,0.22797619,-0.26264903,-0.33558837,0.53328735]],"activation":"identity","dense_3_b":[[-0.0750595],[0.053941935],[-0.05915371]]},{"dense_4_W":[[-0.07031837,-1.2113694,0.261664]],"dense_4_b":[[-0.05185825]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33542x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33542x00x00x00x00x00x00'.json deleted file mode 100755 index 541c69ebe1..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33542x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.253551],[1.2301955],[0.4433781],[0.048036292],[1.2180563],[1.2215648],[1.2244625],[1.2078366],[1.1872348],[1.1560153],[1.1222544],[0.047749482],[0.047788024],[0.04782943],[0.047852717],[0.047783505],[0.04746524],[0.046932556]],"model_test_loss":0.008610215969383717,"input_size":18,"current_date_and_time":"2023-08-11_08-57-34","input_mean":[[26.187445],[-0.0071422574],[0.001980914],[0.001046037],[-0.007964942],[-0.007880573],[-0.007988253],[-0.009467786],[-0.008615659],[-0.008149362],[-0.009630898],[0.00084624556],[0.00086762797],[0.00088921416],[0.0008551317],[0.00078379776],[0.00071628735],[0.0006797733]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.02733056],[0.9519103],[1.179534],[-5.256048],[-0.068846025],[-0.001023872],[0.047838554]],"dense_1_W":[[-0.007770572,-1.2564598,0.036638457,0.21713501,0.23338117,-0.7073799,0.33575004,-0.19753128,0.24105607,-0.25897455,0.00047999376,-0.40289143,-0.1727166,0.26855484,0.15926753,-0.11272167,0.14361864,-0.027891645],[1.4905782,-0.47127068,0.26584575,0.3194812,1.1585804,-0.49999246,0.8128295,-0.06897485,0.27223653,0.27935958,0.6564722,-0.1511041,0.08323231,0.105417795,-0.19195606,-0.5771197,0.2512899,-0.16904134],[0.9752811,0.3798001,0.17150617,0.078614265,-0.4016901,1.0311221,-0.43946624,-0.046153106,0.45251793,0.23658508,0.19738759,0.27465844,0.24110676,-0.52507246,-0.1172636,-0.13135712,0.0018473302,-0.044648286],[-1.9979073,0.469533,0.38075405,0.38248965,0.03199995,0.8767418,-0.3808672,0.13193713,0.9768667,0.6579403,0.27945238,0.12676767,0.05653972,-0.5021998,-0.005707313,-0.5350684,0.50075513,-0.48098195],[0.09501199,-0.43849072,-0.02388532,-0.19896263,0.5059142,-0.7151482,0.5014636,0.14320679,-0.26502132,-0.10398254,0.097926326,-0.31807315,-0.017643483,0.26102692,0.11085488,0.44673,0.070843324,-0.24798131],[0.01869301,1.0456816,4.226997,-0.0017353684,-0.24813181,-0.09464798,0.19211425,0.2305938,0.75171006,0.0668822,-1.5460484,0.17806499,-0.3484644,-0.10388819,0.11723415,-0.087600686,0.043417487,0.026686585],[0.026612299,0.18889695,0.025076069,-0.31810546,-0.24766445,1.1192691,-0.5334893,0.19868112,-0.17242211,-0.24407543,0.15552837,0.44391513,0.22742282,-0.40553492,-0.3606672,0.12259318,0.1473879,-0.045519803]],"activation":"σ"},{"dense_2_W":[[0.60255677,0.16861977,-0.09762268,-0.2837764,-0.07567895,-0.37070033,-0.79792696],[0.49195844,0.17409827,-0.4679116,-0.20569389,0.6392559,-0.2820173,-0.7966848],[-0.053543754,-0.04045658,0.061384078,-0.27339914,0.29516026,0.09619451,-0.5365491],[0.19862464,0.40960187,-0.5885574,0.19464053,0.31404445,-0.14482382,-0.71336615],[0.050688785,-0.2452892,-0.71070766,-0.0914633,-0.36177072,-0.4671836,-0.55903697],[0.4795129,-0.131694,0.1492489,0.15489131,-0.007348985,-0.22303534,-0.31186175],[0.5021524,0.2245533,-0.6239134,-0.6030447,0.4679717,0.1760995,-0.099333],[-0.49081337,0.24919184,0.8373565,-0.41256565,0.28563014,0.67823786,0.38134417],[-0.8883889,-0.43416515,0.52214336,0.38264576,-0.64902043,-0.3316096,1.2996199],[0.13214777,-0.09506896,-0.7131637,0.5065029,-0.10351111,-0.593896,-0.7980942],[0.10000199,0.33303285,-0.18169716,0.19090554,-0.36384225,0.3556522,-0.67900723],[-1.5198281,-1.2734241,0.3973511,1.1452348,-1.8075484,0.96129864,1.0681554],[-0.81462014,-1.5782593,1.6699271,-0.5293936,-1.0444264,0.0026833075,1.7008731]],"activation":"σ","dense_2_b":[[-0.07236402],[0.028845945],[-0.1323438],[-0.1738864],[-0.09381208],[-0.1300469],[-0.11935734],[0.07721876],[0.14992687],[-0.06720915],[-0.19223419],[-0.33762133],[-0.1208263]]},{"dense_3_W":[[0.16432953,0.5942093,0.24944223,0.07672291,0.17414363,0.19451983,0.59266853,-0.668625,-0.64897245,0.6133092,0.21917813,-0.2546305,-0.6117167],[0.58310723,0.54848456,0.44340667,0.1732376,0.31500515,0.234152,0.39546844,0.19260909,-0.2684148,0.04366559,-0.37576258,-0.3523593,0.018720862],[0.2536531,-0.7660225,0.56532425,0.067297734,0.030229906,-0.009724075,0.45067325,-0.23095876,0.112479135,0.20881021,0.014405874,0.8360824,-0.10908318]],"activation":"identity","dense_3_b":[[-0.09141844],[-0.10133247],[0.05868698]]},{"dense_4_W":[[-0.96234053,-0.4108186,0.2421145]],"dense_4_b":[[0.09122495]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33581x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33581x00x00x00x00x00x00'.json deleted file mode 100755 index 03a5364272..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33581x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.861338],[1.27499],[0.57348746],[0.046157062],[1.2795943],[1.2781751],[1.2762386],[1.24604],[1.2176551],[1.1878494],[1.1657255],[0.046013683],[0.046028],[0.04604425],[0.045964256],[0.045818],[0.045440868],[0.044904295]],"model_test_loss":0.0066848318092525005,"input_size":18,"current_date_and_time":"2023-08-11_10-12-24","input_mean":[[25.302942],[-0.08986686],[0.006437036],[-0.000770344],[-0.09078672],[-0.09131106],[-0.09105468],[-0.087818414],[-0.08535958],[-0.08077309],[-0.07629666],[-0.0008042366],[-0.00080282136],[-0.00080204045],[-0.0008154784],[-0.0008211331],[-0.0008975459],[-0.0010069694]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0742805],[0.92973286],[-1.2597991],[-0.015863936],[0.076297365],[0.039942347],[-0.09862842]],"dense_1_W":[[-0.89714944,-0.5694732,0.2553829,0.08549169,-0.3029584,0.8248408,-0.34906214,-0.0043470534,0.29719195,-0.2585757,0.16454367,0.2295475,0.1065112,-0.042710267,-0.63867694,0.22198902,0.1815665,-0.019736245],[0.043996632,-0.5165713,-0.01470944,-0.01490538,0.0015828871,-0.37951434,0.41633916,-0.43565232,0.0105871195,-0.09095717,0.14132233,-0.23960045,-0.23504797,0.4974917,0.23090471,-0.0010534904,0.14477685,-0.15111166],[-0.8907693,0.102393575,-0.26280454,-0.2428607,0.0006221315,-0.75598705,0.89070266,0.24951544,-0.1677102,-0.22674787,0.041006655,-0.6199366,0.055024263,0.34216496,0.2160915,0.37361667,0.13422973,-0.37392148],[-0.041263368,0.22979482,0.02687934,0.23515709,-0.058687184,1.2512988,-0.31698132,-0.20909786,-0.24276179,0.0524146,0.18924035,0.05974352,0.018966423,-0.30618235,-0.39119706,0.09769458,0.1381972,-0.09514759],[0.046502795,0.6602059,-0.037667993,-0.25442934,-0.11708759,0.86960804,-0.49021152,-0.07804353,-0.11474104,0.1469114,0.04552821,0.3126329,0.2082432,-0.5143092,0.114365466,0.15073813,-0.16331002,0.05541271],[0.05034215,0.14753957,0.032934844,0.028605228,-0.5262837,0.40912592,-0.21305162,0.5888757,0.5798016,-0.2346427,-0.29419842,0.1249654,0.34906247,-0.4432667,-0.36166826,-0.043212466,-0.00637034,0.10826623],[0.002508507,-0.9045623,-6.878152,-0.029319404,1.0181056,-0.451885,0.033875328,-0.75717235,0.07011871,-0.14485015,0.786407,-0.3947812,-0.098444514,0.39931172,0.10100173,-0.07530515,0.36536965,-0.30755058]],"activation":"σ"},{"dense_2_W":[[0.22400917,-0.30598494,0.25054607,0.37136942,-0.24538715,0.034769878,0.4539929],[0.037326954,-0.41299608,0.16081683,0.24574164,0.056523614,-0.027640207,-0.1309322],[-0.39091694,0.5082205,0.93584853,-0.63075423,-0.15180112,-1.0432836,-0.22495167],[-0.15306623,-0.45128495,0.41558233,0.48239455,0.6017532,0.7212807,-0.30316913],[-0.08770284,0.46613476,0.47092214,-0.53098565,0.050529372,-0.8164752,-0.0025518546],[-0.33539963,-0.48491186,-0.34354278,0.012208527,0.4700861,0.36545125,-0.041543964],[0.17866884,-0.19735998,-0.67110294,-0.3110027,-0.5290932,-0.68236077,-0.111222625],[-0.7327989,0.93089855,0.07169331,-0.49829224,0.19631308,-0.13825691,0.5089517],[0.36573797,-0.3776811,1.7510772,-1.9604117,-2.1450837,-1.4785987,1.3181192],[-0.21792145,0.016347371,0.10254979,0.51089144,-0.06845565,0.3958906,0.20665437],[-2.080944,3.407494,-0.39748654,-0.95476985,-0.6695305,0.49773726,1.6649209],[-0.3173275,-0.17373022,0.098646894,-0.46179616,-0.40287703,-0.20223522,-0.4789483],[0.030579967,-0.23474593,-0.26780617,0.6667259,0.5838826,0.37227827,-0.38209188]],"activation":"σ","dense_2_b":[[0.031172732],[-0.046594083],[0.04188912],[-0.009133611],[-0.020946773],[-0.008495372],[-0.2704271],[0.094023824],[-0.40898916],[-0.048260532],[0.6355896],[-0.01349315],[0.003674332]]},{"dense_3_W":[[-0.31565678,0.29919386,0.12521249,-0.51271564,0.4427603,0.122981675,0.48869878,-0.06551224,0.7051895,0.21552129,0.39309025,0.5903403,-0.5543942],[-0.2777765,-0.6289323,0.28298908,0.31119838,0.6172389,-0.27801976,-0.23232892,0.41942078,-0.05232441,-0.3835318,0.032355104,0.40797642,-0.5436199],[0.30726758,-0.13741928,-0.16658607,0.55618703,0.04306974,0.5606126,0.19286956,-0.5398464,-0.2852267,0.1816551,-0.6652878,0.26612532,0.55205345]],"activation":"identity","dense_3_b":[[-0.03041773],[-0.017930472],[0.016982466]]},{"dense_4_W":[[-0.9280437,-0.7111026,0.5093497]],"dense_4_b":[[0.021796599]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021 b'8965B33630x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021 b'8965B33630x00x00x00x00x00x00'.json deleted file mode 100755 index 5e651c0507..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021 b'8965B33630x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.546224],[1.4038109],[0.5651468],[0.043467518],[1.3987619],[1.4010857],[1.4028497],[1.3774658],[1.3484732],[1.3066528],[1.2626185],[0.043321155],[0.043366555],[0.043409824],[0.043420527],[0.043341193],[0.043100573],[0.04268996]],"model_test_loss":0.008768445812165737,"input_size":18,"current_date_and_time":"2023-08-11_11-30-42","input_mean":[[23.653286],[-0.08564946],[0.00538869],[-0.0041225236],[-0.08325304],[-0.08371971],[-0.08399296],[-0.078614086],[-0.07081872],[-0.05996409],[-0.049967643],[-0.00410234],[-0.0040951944],[-0.0040958365],[-0.0041202484],[-0.00410688],[-0.0041029328],[-0.00419054]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.03874873],[-0.784227],[3.223217],[0.5529675],[0.30194795],[-1.4031215],[0.056803867]],"dense_1_W":[[0.034401055,-0.34275624,0.030142846,0.1802324,-0.107920006,-1.022601,0.54692894,0.13827248,-0.059076726,0.30037975,-0.31303012,-0.06996616,-0.12360416,0.28437266,-0.15365309,4.6970963e-6,-0.26872233,0.2647263],[-0.16882746,-0.5824008,-0.020696588,0.14142953,0.2510791,-0.82992935,0.7110236,-0.29950327,-0.11735881,-0.14580877,0.19486403,-0.225828,-0.2887637,0.32220486,0.15587561,0.14097172,0.05713667,-0.11179676],[1.2839215,0.69310856,0.25602317,-0.010940563,0.09358904,0.9869969,-1.9319696,-0.5257503,-0.3271229,0.07050555,1.0539954,0.37352842,-0.48068744,-0.5090061,0.5122622,0.41323286,0.19394471,-0.44235808],[1.1244255,0.013561664,-0.29108623,-0.36359474,-0.19730152,0.99993306,-0.5672578,0.35510588,0.0071264915,-0.11894784,-0.73594254,0.24889143,0.22513571,0.13149923,-0.34713557,-0.09747717,-0.21321945,0.36720133],[0.15369973,-0.45637712,-0.03247139,-0.1660746,-0.09586008,-0.50975263,0.6658816,-0.49961114,0.11238557,0.07679043,-0.0053253584,-0.15730502,-0.12147023,-0.2606572,1.0126175,0.005088513,0.28010598,-0.38153377],[-0.79352224,0.26021218,0.16691022,-0.21337944,-0.48989457,0.5108416,-0.9224001,0.012780019,0.02489179,0.38960975,0.22246063,-0.043535743,0.18737064,-0.2547757,0.2212282,0.41946402,-0.13940004,-0.1286837],[0.010760579,1.3616978,5.955588,-0.23460385,-1.2176392,0.08488249,-0.47026646,0.4500766,1.1898807,-0.050334588,-1.1531816,0.45957503,0.277536,0.27783328,-0.79819953,-0.6636131,0.3210711,0.3499502]],"activation":"σ"},{"dense_2_W":[[0.3657454,0.81196916,0.34115106,-0.05315271,0.418085,0.20080918,0.51165557],[0.24918951,0.758012,-0.7564233,-0.48264846,0.14990342,-0.45200977,-0.5562867],[-0.80529535,-0.9293644,-0.17528604,0.41654125,-0.21587072,0.21727388,-0.27255547],[0.5453549,-0.083353505,-0.49446028,0.53072816,0.4999342,-0.032543693,-0.27890655],[-1.0843325,-0.7817543,-0.7844736,-0.08889147,-1.439987,1.2749369,0.77239406],[0.14125653,0.5189451,-0.45035714,0.023866806,-0.18329848,0.025697729,-0.67258346],[-0.10291709,0.37623602,0.3589048,0.48825127,-0.16012862,0.22953656,-0.57453346],[-0.14062448,-0.6055541,-0.83215773,-0.40746033,-0.924489,-0.010786422,0.17521149],[0.30822852,-0.12148049,-0.40332836,-0.48652056,0.08054319,0.13378952,-0.7915521],[-0.7257491,-0.7932184,0.10272839,-0.25080377,0.0010266063,0.74610263,-0.049907055],[0.42381865,-0.0553793,-0.38158083,-0.265551,0.85806245,0.1474835,0.14327356],[-0.67127514,-1.3377081,1.2235403,0.68773735,-0.28817493,0.81384164,0.74030864],[-0.71422875,-0.88451463,0.27248266,0.44150946,-0.58906794,0.77334875,-0.2741372]],"activation":"σ","dense_2_b":[[-0.038974255],[-0.060381696],[-0.11952605],[-0.073940076],[-0.046222135],[-0.047778048],[-0.04543839],[-0.24633041],[-0.30813476],[0.036111247],[0.013441597],[0.1894709],[0.040286675]]},{"dense_3_W":[[-0.07313357,-0.59815574,0.26091176,-0.66873443,0.35969868,-0.25591415,0.0072562387,-0.098555766,-0.4751247,0.21601625,-0.14175397,0.41238782,0.47897983],[0.09714538,0.3654853,-0.2926264,-0.28464285,-0.61904335,0.3250731,0.15649477,-0.22976924,-0.41835013,-0.24120942,0.41197148,-0.17491877,-0.5697462],[0.55913174,-0.20682354,0.04047605,-0.075866535,-0.51092017,-0.47107786,-0.1388181,-0.17455935,0.5574489,-0.6044243,-0.13675697,0.4066009,-0.3129467]],"activation":"identity","dense_3_b":[[-0.054309756],[0.06553867],[0.04563365]]},{"dense_4_W":[[1.1299008,-1.1184049,-0.16297631]],"dense_4_b":[[-0.059165344]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33540x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33540x00x00x00x00x00x00'.json deleted file mode 100755 index ef4b109aee..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33540x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8744264],[0.95179135],[0.41017145],[0.033567343],[0.9481631],[0.94890034],[0.9500518],[0.9391581],[0.92971367],[0.91555744],[0.9017156],[0.03344094],[0.03347542],[0.033526078],[0.033655073],[0.033587176],[0.033420175],[0.033133168]],"model_test_loss":0.006604278460144997,"input_size":18,"current_date_and_time":"2023-08-11_12-47-30","input_mean":[[24.228636],[-0.006917462],[0.012768614],[-0.01302538],[-0.007990223],[-0.007133511],[-0.006058136],[-0.000751731],[0.0036597915],[0.011357695],[0.014827531],[-0.012985793],[-0.012987019],[-0.012994645],[-0.013017216],[-0.013077659],[-0.013120363],[-0.013297155]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.304586],[0.857909],[-0.13514984],[0.041853286],[2.706798],[-0.056241833],[0.21371262]],"dense_1_W":[[-0.3753853,-0.9076579,0.0028183204,0.4173851,0.21572869,-1.0650074,0.73067254,-0.042485468,0.09713275,-0.03332723,-0.06025824,0.031956095,-0.41729087,0.31993416,-0.17310858,-0.047939993,-0.17648701,0.17462116],[0.33882773,-0.6728253,0.008314714,-0.09627012,0.36394936,-1.1073593,0.40562075,0.025473012,0.14220724,-0.22702415,0.032973353,-0.19210276,-0.099463224,0.3244121,0.4324219,-0.2788309,0.019109316,0.013932906],[-0.0022891897,0.031610064,-1.2756119,-0.41923544,0.012356326,-0.58470213,0.4747707,-0.59731174,-0.27581474,0.25697255,0.45881832,-0.34830928,0.25764722,0.26794606,0.1684697,0.28286308,0.054468513,-0.20199662],[-0.07542859,0.49655056,0.009735591,-0.29418063,-0.39386368,1.3242066,-1.0746825,-0.027953196,0.4030883,0.05812593,-0.17800117,0.14682488,0.52946347,-0.23444709,-0.2074028,-0.1704285,-0.1765637,0.28617206],[2.4904616,-0.26425233,-0.0018980796,-0.21572022,-0.50891054,0.17968056,0.5879445,0.25236315,0.11600188,-0.48917735,0.18833756,-0.108221054,0.18672714,0.2742739,-0.25533918,-0.044307824,0.22729309,-0.061135843],[-1.5304627,-0.06861046,-0.0068868627,-0.14318405,0.5373798,-0.4130537,1.0160918,0.28602827,0.1930912,0.6789012,-0.4611178,-0.4333957,-0.061391115,0.2945637,0.18769418,0.11001372,0.012913331,-0.2238074],[-0.041391328,1.6325934,8.690423,-0.05333061,-1.1986765,-0.6498667,-0.09251747,0.8950851,0.6041451,0.18318479,-1.2228688,0.04124331,0.48312688,-0.46965152,-0.5156128,0.43232778,-0.04794754,-0.017222332]],"activation":"σ"},{"dense_2_W":[[0.37433198,0.6652587,0.08239935,-0.8569689,-0.8685764,-0.3847302,0.0137114385],[-0.35057282,-1.2175003,-0.42322615,0.38215703,-1.0018536,-0.15562555,0.6304607],[0.86870515,0.79735583,-0.4298693,-0.554179,0.43315074,0.091884896,0.17298584],[0.9098309,0.52323526,0.12250424,-0.6117293,0.70999146,0.24827984,0.08124493],[0.57016754,-0.119958416,0.007385769,-0.20906192,0.028813249,-0.092872046,0.018928468],[-0.20748374,-0.31650364,-0.22984746,-0.6644821,-0.058953296,0.064504504,-0.48933387],[-0.22011767,0.2896796,-0.48634374,-0.12751068,-0.70889044,-0.26188907,0.11740775],[0.015611131,-0.3213432,-0.6176512,-0.23218389,0.2165557,-0.08857583,-0.32597545],[0.97897273,0.065667436,-0.2384423,-0.51702297,-1.5663196,-0.2764533,-0.7045769],[0.11058509,-0.9896542,-0.6524602,0.28573242,-0.63486636,-0.24109863,0.24683195],[-0.66108924,0.24438925,-0.27961603,0.6331003,0.7140061,-0.40370527,0.74801046],[-0.15248063,-0.86366767,-0.5378505,0.54860836,-0.28483847,0.048412364,0.030324109],[-0.5823096,0.039869063,-0.044110443,0.24722692,-0.14052401,-0.2127331,-0.4708845]],"activation":"σ","dense_2_b":[[-0.23049933],[-0.005141671],[-0.006018821],[-0.09049717],[0.07267921],[-0.2727181],[-0.37398845],[-0.007982683],[-0.31346324],[-0.006329838],[0.18627632],[0.060891155],[-0.025011454]]},{"dense_3_W":[[-0.6244113,-0.0693489,-0.64380056,0.02070149,-0.2835836,0.17476825,-0.30840033,-0.18814965,0.20354885,0.48808318,0.12971187,0.6179497,-0.062635556],[-0.03557403,-0.6171725,0.38030297,-0.011414498,0.7638232,0.5485419,0.069103144,-0.53698826,0.41040367,-0.646017,-0.50121707,-0.34758377,0.05735551],[-0.2116303,0.35683113,-0.32435957,-0.6160469,0.15839952,0.04338889,0.16674682,0.29060665,-0.39650652,-0.32134357,0.6334751,0.45032698,0.4106783]],"activation":"identity","dense_3_b":[[0.035586465],[-0.021380048],[0.02714556]]},{"dense_4_W":[[0.96291214,-0.41048172,1.2709689]],"dense_4_b":[[0.03164057]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33542x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33542x00x00x00x00x00x00'.json deleted file mode 100755 index cae93624e0..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33542x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.103622],[1.1064674],[0.4549032],[0.04746862],[1.0982857],[1.0995609],[1.1011963],[1.0907159],[1.0762013],[1.0530915],[1.0245787],[0.04732885],[0.047370408],[0.047405586],[0.047371153],[0.047191557],[0.04685842],[0.046427477]],"model_test_loss":0.0077569992281496525,"input_size":18,"current_date_and_time":"2023-08-11_13-13-15","input_mean":[[24.77323],[-0.008526437],[0.012011691],[0.006570668],[-0.006429047],[-0.0059693544],[-0.005243256],[-0.0018391812],[-0.0014637707],[-0.0009910533],[-0.0016574132],[0.0064960546],[0.0065228636],[0.006551923],[0.006488435],[0.0064425557],[0.0063805063],[0.0062670223]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[3.3205738],[0.14958848],[-0.037750356],[2.9136846],[0.37804675],[0.029861098],[-0.23139778]],"dense_1_W":[[1.9326701,-0.5547836,-0.10067679,0.88928187,0.3556339,-0.44636774,0.371038,-0.16718003,-0.1884807,-0.48036063,-0.07517039,-0.37563908,0.008011507,-0.122201584,0.38154516,-0.52539575,0.3565951,-0.21173865],[-0.05472125,0.71019995,-0.011301738,-0.24624866,-0.20143683,0.6633662,-0.528109,-0.039701864,0.11818609,0.072079115,-0.06178089,0.09657236,0.26577142,-0.09257749,-0.33768046,0.16679412,0.043577697,-0.00800075],[0.08681189,0.67218554,0.016864384,-0.17151606,-0.7993779,1.7853086,-1.0030217,-0.03944043,0.4116835,-0.25059646,-0.008190873,0.24095483,-0.04000996,0.015966445,-0.048546206,-0.30038705,0.0048840884,0.13509746],[1.8621184,0.9286514,0.09670759,-0.8034425,-0.62457097,0.7103663,-0.60736674,0.08118307,0.21853067,0.34846613,0.11744647,0.5011902,-0.26050925,0.06353079,-0.00013581893,0.13610855,-0.20387033,0.17545028],[0.017074391,-0.6718979,-0.0025658803,0.1153182,0.39260125,-0.89202017,0.73113865,-0.48909268,0.13709295,-0.059374757,0.08379893,-0.21752448,-0.17059386,-0.12913309,0.55954635,0.06616547,0.2593372,-0.35252413],[-0.0015273993,1.122298,4.36107,-0.7284269,-0.52017367,-0.053717256,0.22980922,0.29242814,0.73537266,-0.28037038,-0.91037434,0.6036067,-0.20762318,-0.43595174,0.30240452,0.042510543,-0.03717491,0.16869526],[-0.057129644,2.118584,-0.030197065,-0.98787266,1.289168,1.9827989,1.6250021,1.1510297,1.2282369,1.2243376,0.013641883,0.543552,0.53434277,0.10262394,-0.19424945,0.7177195,0.3077161,-0.2747159]],"activation":"σ"},{"dense_2_W":[[0.13961074,-0.8202845,-0.7884319,0.05487456,0.4678429,0.49467292,-0.1308989],[-0.22201177,-0.32698002,-0.7149156,-0.29914114,0.031437565,0.047704495,-0.28477243],[-1.1148013,0.34092113,-0.18912317,-0.48008075,-0.8709616,0.59132445,0.40171188],[0.71819705,-0.2069683,0.51701564,0.9862385,-0.6635331,0.7514818,0.56039315],[-0.4868372,0.7213388,0.18281417,-0.06934696,-0.74189734,0.28737235,-0.11886813],[0.20839769,-0.28190994,0.67423296,-0.53066903,-0.09744761,0.4307269,-0.19752182],[0.26911464,-0.7672294,-0.62952495,0.1261736,-0.1012706,-0.5423726,0.6709568],[0.6176686,-0.08770763,-0.54375565,-0.10256734,0.7390516,-0.21484475,0.11860012],[-0.19913496,-0.7181119,-0.45452398,0.15518615,0.6978777,0.025296569,0.3637034],[-0.25252303,-0.53283435,-0.1554272,-1.2265081,-0.42687193,-0.36367923,-0.5279896],[0.32439613,-0.07298584,0.1197523,0.3783207,-0.7045304,0.37183088,0.21917883],[-0.09075075,-0.62557536,-0.3368084,-0.887969,-0.4871516,-0.23721167,-0.37883517],[-0.22336866,-0.7741714,-0.6305694,-0.4416341,0.7521898,0.00021530618,0.12290076]],"activation":"σ","dense_2_b":[[-0.121355705],[-0.09121598],[-0.24085803],[-0.083796315],[-0.094084196],[-0.058419645],[-0.14530613],[-0.037983466],[-0.080644384],[-0.025107358],[-0.004766168],[-0.08153612],[-0.044914465]]},{"dense_3_W":[[0.24312028,-0.01319292,-0.6061371,-0.6909818,-0.51359975,0.2992521,-0.39097613,0.31651005,0.2757285,0.4441153,0.31348884,-0.27545422,-0.3225179],[-0.39810908,-0.36194545,0.7269056,0.4569008,0.46710286,0.04934306,-0.3813575,-0.5831742,-0.3599856,-0.41585222,0.4099908,-0.41335598,-0.39183122],[0.306892,0.25172576,-0.07124628,-0.122216314,-0.41072568,-0.32011005,-0.027263654,-0.29434043,0.36800984,-0.007864523,0.36681712,0.40220886,0.41821438]],"activation":"identity","dense_3_b":[[-0.017188622],[0.047469802],[-0.052530196]]},{"dense_4_W":[[-0.30256894,1.1517153,-0.40644947]],"dense_4_b":[[0.042950604]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33580x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33580x00x00x00x00x00x00'.json deleted file mode 100755 index 5b1459e29b..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33580x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.2698],[1.0929606],[0.43473774],[0.041922506],[1.081593],[1.0849229],[1.0877095],[1.0787771],[1.0640684],[1.0383222],[1.0108876],[0.04182125],[0.041832544],[0.041841984],[0.041791342],[0.041712664],[0.041520424],[0.041276637]],"model_test_loss":0.00780085613951087,"input_size":18,"current_date_and_time":"2023-08-11_13-38-19","input_mean":[[25.180971],[0.067363806],[0.0050942847],[-0.0016889262],[0.0692244],[0.068829365],[0.06866644],[0.070981584],[0.07282052],[0.07147961],[0.07122264],[-0.0016967524],[-0.0016941526],[-0.0016961577],[-0.0017855666],[-0.0018609619],[-0.0020476414],[-0.0022919406]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.078407],[-0.085797824],[-0.60504895],[1.2304441],[1.2940428],[-0.2765851],[-0.1730718]],"dense_1_W":[[0.03620994,0.5334588,-0.008751684,-0.30718732,-0.24120554,1.1354307,-0.8072042,-0.32701683,0.3591096,0.08543978,-0.093012184,0.035917368,0.05168646,0.01635545,0.0006926348,0.21674627,-0.1275013,0.018545493],[0.003296379,0.27156684,-0.0114976885,0.24166274,0.21411923,0.8352162,-0.8050061,-0.0060145953,0.31223345,-0.34529817,0.22191735,0.27288175,-0.13967498,-0.44568652,0.24579433,0.1121055,0.23223591,-0.2451417],[-0.28206483,0.5281006,0.004273511,-0.058251712,-0.66737545,1.2072822,-0.48789716,0.09432811,-0.43518975,0.28679478,-0.041617993,0.34799293,0.14502835,-0.048017643,-0.4097651,-0.3127551,-0.21574068,0.43956098],[1.2072837,-0.23662613,-0.3173964,0.3888246,0.13292286,-0.1938199,0.6423224,-0.16508526,-0.24950479,-0.32070765,0.33587667,-0.31030202,-0.07912521,0.1687367,0.30611345,-0.17966121,-0.5359515,0.3222771],[1.2397379,0.4381082,0.3287358,-0.23143762,0.23506987,0.24820729,-0.96802294,-0.019559357,0.15710932,-0.0708022,0.043548137,0.082909495,0.052344177,-0.057601973,-0.30085152,0.35778126,0.2825749,-0.26779613],[-0.1566607,-0.26598597,-0.0057827565,-0.0664115,0.7773096,-1.0950903,0.25486425,-0.30872136,0.16972275,0.088417634,-0.04042932,-0.63080585,0.16424803,0.31180224,0.17867585,0.27970847,0.35946506,-0.47439978],[-0.021681845,-1.7487134,-6.625535,0.1751056,1.331768,-0.03913034,-0.052204903,-0.722452,-0.59748906,0.19350941,1.3864747,-0.45786792,0.005014887,0.4978294,0.06386993,-0.059275076,-0.19035634,0.068175]],"activation":"σ"},{"dense_2_W":[[-0.27746135,-0.11133147,-0.7466579,0.32316014,-0.82424444,0.8190084,-0.07618176],[-0.98910165,-0.29924926,-0.121483654,-0.06462649,-0.77615696,-0.052050546,-0.2068846],[-0.81079465,0.21189949,-0.7650154,0.16670461,-0.24258237,0.6706145,0.41312888],[-0.04046249,-0.2564188,0.13485432,0.19543083,0.4125496,-0.28913745,-0.47865254],[-1.2282639,-0.5878796,-0.13990462,-0.68876964,-0.4017427,0.6788837,0.5318957],[-0.5227068,-0.48116323,-0.5057654,-0.09864695,-0.32342318,0.5650167,-0.13734272],[0.6354482,-0.15141888,0.64957154,-0.046926428,-0.21597984,-0.24500787,0.3873409],[0.10921166,0.40626168,0.77957875,-0.94732684,-0.37726498,0.010828876,-0.6373631],[-0.6380874,-0.68041843,-0.50705653,0.40137365,0.13087752,0.8324961,-0.20889166],[0.7565542,0.08734602,0.53366995,-0.75452554,0.105391264,-1.0089295,-0.034701627],[-1.1198757,-0.2618769,-0.59588647,-0.706865,-0.21783987,0.86488605,0.3997857],[-0.8328754,-0.35271266,0.12354107,0.1924855,-0.78571886,0.2952341,0.24212927],[0.7423821,0.44760862,0.035012443,-0.8567946,-0.23191078,-0.5886413,-0.664454]],"activation":"σ","dense_2_b":[[-0.010436229],[-0.066020235],[0.0060121845],[0.031020565],[-0.15874258],[-0.07110535],[0.020249015],[-0.13936971],[0.08172514],[-0.19487327],[-0.16985166],[-0.07488271],[-0.1648508]]},{"dense_3_W":[[0.2368204,-0.38186413,0.16379678,-0.093882345,0.18792015,0.30424705,-0.2652192,-0.0128758745,0.4871652,-0.82823867,0.3168634,0.36287144,-0.05755385],[0.08671304,0.26755866,-0.44672224,0.3511056,-0.07436179,-0.029944455,0.51201284,0.011309003,-0.009461364,0.03749171,-0.14320603,-0.5220241,0.5982596],[-0.6713392,-0.4692543,-0.18836813,0.16650435,-0.38397953,-0.09753196,0.4263721,0.3648231,-0.48916298,0.63411295,-0.26365083,-0.5657471,0.31661007]],"activation":"identity","dense_3_b":[[-0.043500695],[0.043294493],[0.070429035]]},{"dense_4_W":[[-0.13705656,0.4213639,1.0240872]],"dense_4_b":[[0.0634434]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33581x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33581x00x00x00x00x00x00'.json deleted file mode 100755 index 1e7cb72b13..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33581x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.970947],[1.0384973],[0.5339848],[0.0439044],[1.0386008],[1.0383806],[1.0382704],[1.0300301],[1.0274649],[1.0244931],[1.0205593],[0.043891665],[0.043891575],[0.04389554],[0.043873448],[0.04374348],[0.043487765],[0.042901814]],"model_test_loss":0.005093628540635109,"input_size":18,"current_date_and_time":"2023-08-11_14-02-50","input_mean":[[24.332022],[0.060984537],[-0.010774325],[-0.010102695],[0.06669931],[0.066552386],[0.06558183],[0.064041205],[0.059805464],[0.057570588],[0.052696057],[-0.010093866],[-0.010066769],[-0.010040301],[-0.01002835],[-0.010157424],[-0.0103778625],[-0.01061843]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0042867805],[-0.08686578],[-0.037254773],[0.03485279],[1.0671247],[-0.047314014],[-0.993783]],"dense_1_W":[[-0.021375071,-0.14122938,-0.35861322,-0.08880356,-0.82792205,0.7598527,-0.4383258,0.5881781,0.65400213,-0.08076669,-0.47284502,0.6587817,0.42645591,-0.71615744,-0.19810899,-0.26471764,0.089353725,0.25006968],[-0.0043314192,1.954295,6.3405747,0.22489387,-1.1874827,0.14704707,-0.07096752,0.41535223,0.5072961,0.09738453,-1.6553766,0.052053954,0.10042309,0.32028568,-0.6243986,-0.57866776,-0.2910692,0.6025305],[-0.004210423,-1.1789036,0.043389764,-0.17041136,0.018858045,-1.028696,0.60524696,0.12432735,0.1403251,0.6718426,-0.58897483,-0.49425384,0.26766488,0.021670086,0.47191808,-0.2670336,0.17180552,-0.076177396],[-0.0014423821,0.40574962,0.09375788,-0.030430922,-0.28834507,0.96773094,-0.4115615,-0.25777864,-0.122904286,0.16757521,-0.093617134,0.086109094,-0.19272889,0.12177329,-0.16501935,-0.3261848,0.109229244,0.048125066],[0.7480793,-0.44217807,0.47803837,0.12700126,-0.30083793,1.1000353,-0.34668228,-0.22410758,0.59894305,-0.2912633,0.106452525,0.12899296,0.16302301,-0.58852977,-0.4219825,0.3098118,0.30627355,-0.26459885],[-0.0010856693,-0.073189795,-0.010420755,0.510726,0.48776355,-1.3092571,0.5646315,0.09301288,-0.04550693,-0.18133546,0.030909019,-0.22555129,-0.37417185,0.066544555,0.21544787,-0.19924314,0.04824762,-0.037603877],[-0.7319411,-0.53309584,0.47002098,0.51350844,-0.15382649,0.8515273,-0.2119853,0.10290207,0.060688037,-0.017283736,0.07458493,0.12407178,-0.3054991,-0.5866961,0.32772487,-0.36159655,0.15252681,-0.10539709]],"activation":"σ"},{"dense_2_W":[[-0.8456761,0.29112202,0.5538746,-0.27183205,-0.66401464,0.9681805,-0.45490798],[-0.29222146,-0.19562286,0.64160013,-0.29229674,-0.22581333,0.8861653,-0.4574926],[0.20166388,0.07838155,-0.07201707,0.28346765,0.5453596,-0.2245247,0.5990845],[-0.7644849,-0.2661926,0.28970414,-0.36327568,-0.696993,0.51633406,-0.0007974338],[-0.58643913,-0.088404864,0.8255952,-0.36814624,-0.7079003,0.37753046,-0.022236357],[-0.06973816,0.19982524,-0.83173025,0.71500087,-0.3413635,-1.0756832,0.73801243],[-0.13959065,0.19020522,0.24497935,0.56480676,-0.2445819,-0.8559911,0.45792028],[-0.02966249,-0.7037074,0.8162655,0.044394657,-0.36493388,1.2052823,-0.84985954],[-0.42486554,0.19081669,-0.012745155,-0.80222046,-0.5517139,0.23807476,-0.1403817],[-0.5011139,-0.3268968,-0.6706034,-0.15131825,-0.3535179,-0.07793423,-0.2949964],[-0.108988635,-0.38238916,0.66745275,-0.89970803,-0.22937314,0.28115448,-0.01224377],[0.23614992,-0.08788459,-0.09533522,0.3415471,0.20813029,-0.80524844,0.5243813],[-0.7208867,-0.55935323,0.19054662,-0.89190704,-0.95664173,0.9696772,0.28062636]],"activation":"σ","dense_2_b":[[-0.052245323],[-0.22305784],[-0.09663632],[-0.20786262],[-0.014743078],[-0.08700816],[-0.10860553],[0.080216914],[-0.2522886],[-0.39075246],[-0.11641336],[-0.07052046],[0.5928834]]},{"dense_3_W":[[-0.7149941,-0.47273389,0.41016644,-0.104267396,-0.31817394,0.9295361,0.055846684,0.010776243,-0.5708312,-0.022532204,-0.6505357,0.15083706,-0.34012407],[-0.021996325,-0.48407006,0.39829472,-0.41447127,-0.45983404,0.2265217,0.64464855,-0.14684099,-0.13853866,0.1992617,0.023521371,0.6656039,-0.001323564],[0.11754858,-0.5532173,-0.6610757,-0.14822331,0.48995,-0.5581861,0.22167473,0.5960896,-0.36395517,0.18789944,-0.047904395,0.038645275,0.7867522]],"activation":"identity","dense_3_b":[[0.12575556],[0.038765904],[-0.04705467]]},{"dense_4_W":[[0.68855655,0.4865954,-0.44680688]],"dense_4_b":[[0.05231935]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018.json deleted file mode 100755 index d70742e35d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.113561],[1.288432],[0.44980875],[0.049022406],[1.276642],[1.2789117],[1.281596],[1.2659067],[1.2421862],[1.2042812],[1.1628327],[0.04884337],[0.048885074],[0.04892067],[0.048904777],[0.04874475],[0.048363086],[0.047754645]],"model_test_loss":0.008815777488052845,"input_size":18,"current_date_and_time":"2023-08-11_12-22-51","input_mean":[[24.583223],[0.035939325],[-0.0035848166],[-0.00051022915],[0.040922612],[0.04026527],[0.039454605],[0.038882907],[0.03908899],[0.037455987],[0.037543096],[-0.0004972871],[-0.00047999652],[-0.00047416435],[-0.000555545],[-0.00067389105],[-0.0009116623],[-0.0012008604]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.6907706],[0.020205228],[1.9151607],[2.0762143],[-0.070254005],[1.656243],[0.040563114]],"dense_1_W":[[1.9184645,0.12281177,-0.05548771,0.3325733,0.049481086,-0.93242055,1.1692095,0.029121507,0.09385143,-0.09659533,-0.11398056,-0.42710423,0.0013246255,0.5561167,-0.1495541,-0.21716745,0.1501572,-0.089972384],[0.0095424475,0.5977504,0.01609186,0.008589333,-0.6946006,1.0936681,-0.6658466,0.21197227,-0.06230653,0.17695144,-0.13071376,0.49202713,0.38372365,-0.6296875,-0.6752815,-0.07816118,-0.20058149,0.47544223],[0.7138527,0.88336164,0.10898959,0.07776455,-0.11466185,0.85354257,-0.44323412,0.28020075,0.1735972,-0.30542865,0.0051241503,0.41995117,0.010464949,0.16623583,-0.4241442,-0.028010447,-0.026523042,-0.14295045],[0.802182,-1.1617771,-0.1162637,-0.0067429696,0.18329306,-1.2598122,0.9663145,-0.18042558,-0.41879544,0.5239016,-0.06684812,-0.45527652,-0.28534758,0.2599457,0.2397677,-0.0516189,0.007355238,0.23112406],[-0.0030232992,-1.1722454,0.051927917,0.095425725,0.19179568,-0.96292347,0.33426154,-0.015786754,-0.26612803,-0.41344067,0.36896846,0.25567958,0.21475382,-0.40880233,-0.21282537,-0.22598088,0.27500418,0.0051436215],[1.9630992,-0.32222328,0.058737174,-0.5038972,-0.16381685,1.1271104,-0.9266026,-0.31080577,-0.05270356,0.24345441,0.07495984,0.039676085,-0.27428615,0.117246784,0.3644701,-0.038675178,0.4529369,-0.3158286],[-0.006583586,-1.90042,-5.086346,1.178374,0.9872427,-0.08279943,-0.11563482,-0.085821435,-0.30849832,-0.483396,1.235762,-0.6782165,-0.1051005,0.049771134,-0.08851904,0.47486317,-0.18179584,-0.33851555]],"activation":"σ"},{"dense_2_W":[[-0.98456967,-0.08674989,0.050625086,-0.7365153,-0.20228219,0.14482267,-0.011665877],[-0.5769628,-0.497833,-0.57603395,-0.27131066,-0.43619764,-0.41154072,-0.44292274],[-0.030439235,0.4782569,0.09370738,-1.0248427,-0.75271314,0.27682835,0.100586735],[0.7785517,-0.8945198,-0.24256033,0.12664571,0.73264015,-0.72209287,0.32675773],[-0.79072905,0.5852975,0.8183082,0.11523399,0.013696286,0.8965856,-0.12477829],[0.99764585,-0.9510505,0.026474258,0.8939435,0.6465811,-0.30319425,0.5071415],[0.4976951,-0.7593475,-0.8069521,0.42173788,0.46559027,-0.18526554,-0.5820664],[0.07649806,-0.0935198,-0.07850874,-0.52957004,-0.6727888,-0.7231066,0.25522104],[-0.27911595,-0.9477233,-1.153818,-0.15193523,0.7870086,-1.0027183,0.7966875],[-0.9716597,0.89015436,0.32853165,-1.0613221,-0.12263486,0.3528593,-0.5928117],[0.2827416,-0.32474115,-0.9680884,0.022911986,0.27188945,-0.98760265,0.3656817],[0.7160093,-1.0138652,-0.50953317,0.46416208,0.06371475,-0.028066937,0.23573612],[-0.77464837,0.44803238,0.14630596,-0.8826064,-0.56392753,0.6949805,0.12345892]],"activation":"σ","dense_2_b":[[-0.25699404],[-0.26730993],[-0.015171051],[-0.09039672],[-0.061481774],[-0.07387397],[-0.047998182],[-0.30401027],[-0.02116504],[-0.07505101],[-0.15518288],[-0.117099114],[-0.09308846]]},{"dense_3_W":[[-0.004456457,-0.17817564,-0.5636806,0.58977455,-0.6984907,0.37438712,0.4960488,0.08712738,0.672033,-0.39785558,0.5507936,0.3100092,-0.41587812],[0.36591443,-0.53552973,0.346754,0.4773916,-0.07704387,-0.27689734,-0.5725575,-0.2300009,0.38975373,0.5509545,-0.06661364,-0.16530657,-0.32090378],[0.5468248,-0.2983021,-0.18621923,-0.1862858,0.6007365,-0.7406874,0.013266623,0.53915715,0.18158531,0.8944796,-0.62438655,0.092128076,0.3605866]],"activation":"identity","dense_3_b":[[-0.09266206],[0.104886286],[0.028007649]]},{"dense_4_W":[[-1.0827008,0.1191742,0.25597933]],"dense_4_b":[[0.081487015]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33630x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33630x00x00x00x00x00x00'.json deleted file mode 100755 index 263e742b40..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33630x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.527258],[1.58837],[0.5055459],[0.046407],[1.5704566],[1.5757883],[1.5804579],[1.5656428],[1.5384976],[1.4943614],[1.4440472],[0.046127472],[0.046209764],[0.04628142],[0.04638724],[0.046373256],[0.046248272],[0.045979995]],"model_test_loss":0.013032137416303158,"input_size":18,"current_date_and_time":"2023-08-11_15-08-28","input_mean":[[23.675987],[-0.061649498],[-0.0037433535],[-0.00974628],[-0.0592297],[-0.059604164],[-0.060115922],[-0.06090137],[-0.05811594],[-0.054634698],[-0.050830174],[-0.009785485],[-0.00977242],[-0.009764823],[-0.009743659],[-0.009729754],[-0.009756633],[-0.009844285]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.2454443],[-3.9935453],[0.028671095],[0.5960012],[-0.03880155],[0.05596765],[-0.034470085]],"dense_1_W":[[-1.64422,0.68550414,0.54501456,0.53847647,0.27692503,0.063880496,-0.7023363,0.5811879,0.4607719,0.32430968,0.33705142,-0.15086013,0.25737584,-0.14769863,-0.5269933,0.09086217,-0.039941527,0.056566585],[-1.6872351,-0.8609276,-0.5547092,-0.32451072,-0.42200893,-0.61688584,1.3860269,-0.36377195,-0.3244275,-0.36894146,-0.46561348,0.135956,-0.314409,0.33939078,0.11052305,-0.4511116,0.6767753,-0.25145525],[-0.0011624083,-0.46549657,-0.029367186,0.0338469,0.10036589,-1.3792645,1.3517435,-0.087907985,-0.17922819,0.27989322,-0.1508471,-0.30754912,0.12222471,0.27249634,-0.11857876,0.2081331,-0.20149365,0.092303105],[-0.019411901,-2.743489,0.2092647,0.03613767,-1.4975988,-2.199135,-1.4105736,-1.1626186,-1.1813308,-1.2874912,-1.0614506,0.12311394,-0.35716504,-0.39015725,-0.19417982,0.030657688,-0.10556074,0.30376726],[-0.0013404661,0.811287,-0.011727227,-0.184332,-0.50731385,1.0558553,-1.0108443,0.3428108,0.06010551,0.10949871,-0.1949178,0.31412193,0.35021275,0.1347588,-0.3269873,0.002721337,-0.3956695,0.107962616],[0.0018287555,0.9383599,-0.020639788,-0.10069178,0.012285102,0.8423632,-0.76416844,0.2949073,0.02011132,0.32481852,-0.20832625,0.09446031,0.05286432,-0.25073406,-1.0954369,0.19070928,0.29430318,0.21283779],[-0.0031318972,1.86199,3.7149577,-0.45614806,-0.9853326,0.0031807204,-0.36801562,-0.017010337,0.8629713,0.27299413,-0.93133396,-0.040520113,0.20344736,0.16688503,0.18763259,-0.3295253,-0.44451007,0.54270303]],"activation":"σ"},{"dense_2_W":[[-0.10703138,0.26329565,0.372871,0.62210536,-0.91045755,-0.5059908,0.082728624],[-0.8455082,0.60686517,0.77131647,0.18505652,-0.83584833,-0.061201718,0.06414944],[0.9602546,-0.33188254,-0.6254281,0.28107804,0.4938986,0.19022591,-0.021539062],[0.6665293,-0.88368744,-0.4690383,0.09154278,0.07947504,0.50024533,0.59482914],[-0.38501546,-1.222405,0.2893011,-0.6509259,-0.70557487,-0.66354203,-0.10562698],[0.49674258,-0.5769124,-0.49069,-0.41817957,0.67324835,0.4933393,-0.10286841],[-0.2216885,0.47380883,0.56191033,-0.28784683,-0.4096605,-0.490356,-0.031157235],[-0.0936251,-0.45093265,-0.76677954,-0.3329675,0.8052054,0.061642174,0.5920758],[-0.6441064,0.4133462,-0.15337071,-0.0061294995,-0.73091877,-0.11528061,-0.37335342],[0.18037143,0.040658288,0.91772383,0.17238702,-0.43315202,-0.4585807,-0.4309972],[0.2177669,-0.30795693,0.17052971,-0.16855669,-0.13677986,-0.69589096,-0.19900195],[-0.65990835,-0.1468485,-0.12448653,0.4080429,-0.14782807,-0.4780015,0.24199547],[0.34541848,0.07740233,-0.46892044,-0.18850818,0.12455788,0.3817125,0.20588997]],"activation":"σ","dense_2_b":[[0.004909596],[-0.1015675],[-0.026956508],[-0.14565209],[-0.068403244],[-0.17654194],[0.011075499],[-0.07494447],[-0.17450505],[0.081554756],[-0.067178436],[-0.08978031],[-0.16875927]]},{"dense_3_W":[[0.3513672,-0.21975671,-0.040741704,-0.6609442,0.47521582,-0.1486722,0.40466824,-0.651978,-0.1652465,0.65699995,0.5369138,-0.07486931,-0.4354842],[0.15970285,0.41789836,-0.22640069,-0.57340044,0.4493888,0.14716445,0.4456815,-0.39007702,0.5953172,0.079848245,0.08602837,0.51125026,0.2055881],[-0.44146788,-0.50463027,0.28063488,0.044468172,0.21196483,0.7198564,-0.37790608,0.103921935,0.4282467,-0.56497794,-0.14485644,0.31268966,0.57528377]],"activation":"identity","dense_3_b":[[-0.051718097],[-0.07012978],[0.038476463]]},{"dense_4_W":[[-0.54659784,-0.6573955,0.52299213]],"dense_4_b":[[0.05747961]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33650x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33650x00x00x00x00x00x00'.json deleted file mode 100755 index 4cee46ce78..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33650x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.4544187],[1.1398869],[0.59536827],[0.03667061],[1.1367389],[1.1371896],[1.1369772],[1.1125838],[1.0882599],[1.0540591],[1.015276],[0.0365254],[0.03656361],[0.03660487],[0.03671011],[0.036751248],[0.036655042],[0.036459148]],"model_test_loss":0.00820766668766737,"input_size":18,"current_date_and_time":"2023-08-11_15-33-20","input_mean":[[16.952526],[-0.052201446],[-0.0025111593],[0.008815221],[-0.04683998],[-0.048375413],[-0.049727276],[-0.04895246],[-0.046067394],[-0.042347096],[-0.043832958],[0.008778602],[0.008794993],[0.008793817],[0.008708494],[0.008642194],[0.008570167],[0.008426222]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.6888532],[-0.14074084],[-4.6503873],[-0.0526546],[-0.16162582],[-4.8515434],[0.0059119985]],"dense_1_W":[[-0.1887723,1.7019817,-0.0113050295,-0.84645253,0.5320028,1.9590821,0.32137358,0.4540078,0.31248295,0.3334322,0.94135123,0.46212864,0.41069177,-0.008444669,0.44834596,-0.1659424,0.075368986,-0.14096133],[0.09387379,-0.24212502,0.004232037,0.1580718,0.5345186,-1.7837541,0.8140116,0.35570875,-0.09320282,-0.33667397,0.1162101,-0.07693762,-0.4861762,0.39767268,0.37297454,-0.23607363,-0.07967667,0.044579674],[-2.367052,-0.45616403,-0.06572045,-0.2425425,-0.008704978,-0.20262632,1.2449195,0.03634092,-0.26020807,-0.18703146,-0.27698797,0.04616871,0.3345856,0.27772164,-0.38416603,-0.26807493,-0.179506,0.45063913],[0.0060991277,1.3728696,6.3618674,-0.1529537,-1.0295473,-0.36459753,-0.5428813,-0.1351585,1.359785,0.59491414,-0.95546675,0.47300407,-0.07679976,-0.4389862,-0.09457229,0.09079313,-0.3535876,0.35535023],[0.10419659,0.6981407,0.0010684849,0.50049585,-0.6847731,1.2972739,-0.845766,0.4630602,0.014233105,-0.22511983,0.036824916,0.03641603,0.14271958,0.017790886,-0.62306106,-0.45059016,-0.12857214,0.3850661],[-2.4553664,0.7025891,0.07218532,0.3614062,-0.18104361,0.14960986,-1.4881148,0.47337767,0.12397967,0.15814431,0.22360176,-0.14111422,0.026148688,-0.4370157,0.06734503,0.2592729,0.23636505,-0.40628332],[0.011856804,0.28269672,-0.8995745,0.5396218,-0.41245276,-1.3505635,1.202017,0.23253399,-0.109473534,-0.1018154,0.30684808,0.012973135,0.26841184,0.26688126,-0.936263,-0.32659927,-0.01672119,0.30120432]],"activation":"σ"},{"dense_2_W":[[0.3640571,-0.6617311,-0.0747308,-0.37031746,0.6537133,0.37298128,-0.53218305],[-0.11639251,0.61945325,0.0017198602,0.1977158,-0.8382063,-0.58378947,0.45054537],[-1.5765465,-0.4710046,-1.2433935,-1.1040761,0.11871377,-1.103308,-0.08877445],[-0.35699993,0.6091763,0.03869232,-0.27107364,-0.480981,-0.37596822,0.63457584],[0.3026075,0.5471183,0.5758416,-0.22221741,-0.8760496,0.02318747,-0.014120267],[2.2380452,-0.91835636,-4.180824,0.85650325,2.4713848,-1.189591,-0.59328234],[0.4808254,0.5034869,-0.06683023,-0.2557325,-0.46868747,-0.563796,0.3365589],[0.17383875,0.052510574,-0.2056088,0.06328794,-0.0013120257,-0.39633247,-0.124248356],[0.32954514,0.45643237,0.41245767,-0.6036774,-0.11574388,-0.3204366,-0.17148384],[0.32425106,0.045497462,0.35014722,0.43193093,-0.43063545,0.021148223,0.30852592],[-0.25192562,-0.5058624,-0.8747967,0.552287,0.750765,0.5214585,0.05243548],[1.162155,-3.353464,0.5340603,0.659619,0.7062718,3.5616868,-0.5632878],[0.3252148,-0.06799463,0.5038412,0.12492446,0.07536071,-0.7216808,0.56761354]],"activation":"σ","dense_2_b":[[-0.058470216],[0.013836472],[-0.11013916],[0.024257516],[-0.047517203],[1.0202676],[-0.028003285],[-0.07813839],[-0.020832257],[-0.024440002],[-0.021560166],[-1.8247504],[-0.041251946]]},{"dense_3_W":[[0.40882266,-0.55162454,0.19300854,-0.7047124,0.18826057,-0.024725482,0.26570073,-0.54785085,-0.47576043,-0.58123916,0.60901785,-0.034762446,0.30913785],[-0.4319101,-0.61121434,-0.3207124,0.45264772,0.043344818,0.176912,0.48326144,0.14974174,-0.4031163,-0.005480138,0.21610041,0.40871677,-0.3560042],[0.43242753,-0.27668396,0.2542409,-0.29328224,-0.467545,0.8394127,-0.62540203,0.22238283,-0.031581767,0.07810114,0.41339856,0.8512083,-0.37855253]],"activation":"identity","dense_3_b":[[-0.03324967],[0.0075375573],[-0.052993078]]},{"dense_4_W":[[0.5854674,0.016769838,1.1952219]],"dense_4_b":[[-0.04352723]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021.json deleted file mode 100755 index c221878177..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.740597],[1.6114016],[0.5348656],[0.046610184],[1.595203],[1.6010917],[1.6055775],[1.5847278],[1.5526379],[1.5036105],[1.4504586],[0.04635463],[0.046429936],[0.046500154],[0.046611696],[0.046591446],[0.046455257],[0.046220616]],"model_test_loss":0.01294305082410574,"input_size":18,"current_date_and_time":"2023-08-11_14-35-46","input_mean":[[23.0379],[-0.053410813],[-0.0019288365],[-0.0063912515],[-0.050324135],[-0.05122038],[-0.051873837],[-0.051581234],[-0.048981857],[-0.047338136],[-0.045371193],[-0.0064203762],[-0.006407644],[-0.006401244],[-0.006397862],[-0.0063910685],[-0.00646659],[-0.0066046687]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.5836827],[-0.00027897302],[-0.18345492],[1.9316171],[2.4109695],[-0.35735247],[-0.00752829]],"dense_1_W":[[-0.19923586,-0.8446253,-0.049223807,0.062187098,0.034134634,-0.5164691,0.5356359,0.02361736,-0.094354145,-0.13402478,0.03197027,0.025565224,-0.34767163,0.44327018,-0.2331072,0.08544469,0.13220021,-0.042109292],[0.19774629,0.7956804,0.048354603,-0.03464038,-0.5552806,1.4616147,-1.1069727,0.25491667,0.24574293,-0.032276858,-0.074901365,0.32208532,-0.005093918,0.04149316,-0.38724327,-0.3423741,0.038095005,0.20536087],[-0.01277339,-1.1209253,-3.2829685,0.2908269,0.7730306,-0.26604077,0.15447722,0.3180269,-0.39517486,-0.7156121,0.5851515,-0.157586,0.20472787,-0.10676806,0.103783496,0.38098288,-0.20058244,-0.17163335],[1.0040841,0.5252502,0.022688726,0.2826037,0.21658197,0.34697813,-0.94360363,0.24253304,-0.18907677,0.3291399,-0.11032786,-0.018658556,0.083128914,-0.6952669,0.32141057,0.35096252,-0.33404535,-0.04190496],[1.8762695,0.36984375,0.050812285,-0.69581956,-0.06582166,0.15085408,0.7331872,-0.22675583,-0.21822771,-0.05756491,0.2606855,0.33968002,0.33952188,0.08715113,0.047839224,-0.36322674,-0.25783,0.3792682],[1.4820158,0.1705126,0.0016943603,0.4127989,-0.0974151,-0.9748564,0.8694424,-0.44104308,-0.11535523,0.46097124,-0.24303544,-0.6474734,0.12288866,0.059170075,0.5683426,-0.27918825,-0.1918551,0.038009226],[-0.036992043,-3.7975738,0.13517864,0.27046844,-2.310979,-1.828817,-1.5850654,-1.539081,-1.5010515,-0.6565915,-0.9062962,-0.20627469,-0.67237496,0.12094677,-0.4404271,-0.19511403,0.5184492,0.33670986]],"activation":"σ"},{"dense_2_W":[[-0.42162207,0.37654948,0.20128639,-0.063237175,-0.48145297,0.4043876,-0.3341159],[0.44190538,-1.1244025,-0.09626844,-1.0280551,0.18970345,0.26944143,-0.009037805],[-0.49628687,-1.2132783,0.52467674,-0.7936528,-0.9315534,0.56592065,0.73007417],[-1.1409178,0.2814847,-0.25048304,-0.12513222,-2.585411,-0.61156756,-1.9930322],[-0.22451939,1.0647622,-1.433535,0.027757127,-2.0988069,-1.5258986,-1.1993341],[-0.39952537,0.90642506,-0.15748514,0.093761675,-0.14429392,-0.34393898,0.54427654],[-0.97083896,0.3346563,-0.51369995,0.31469372,-0.33595,-0.14703576,-0.02035328],[0.040784314,1.0367972,-0.2969124,0.8747469,-0.17848283,-0.3237289,-0.09698425],[0.1814441,-0.9662698,0.13469651,-0.82734567,-0.0686567,0.20662351,0.010672753],[0.7433569,-1.089515,-0.5163916,0.07499303,-0.0010849822,-0.03413402,0.3965658],[-0.070186645,-0.9964952,0.03863335,-0.39458206,0.121162325,0.0053036516,-0.23557144],[0.34303343,-0.22630331,0.42313117,-0.40690577,-0.72221476,-0.43852168,-0.6039356],[-0.45295054,-0.11365345,-1.2165514,-0.090053685,-0.5146623,-0.9904289,0.33478776]],"activation":"σ","dense_2_b":[[-0.46519402],[0.015997758],[-0.15750933],[0.36400142],[-0.0012292],[-0.056723733],[-0.11375456],[-0.05405809],[-0.015591645],[-0.0058899955],[-0.04078644],[0.00196873],[-0.16756381]]},{"dense_3_W":[[0.047287945,-0.6736067,-0.46639067,0.9129947,0.33239195,0.62215215,0.4689233,0.10021073,-0.6075113,-0.49370164,-0.27906764,-0.047028817,0.12527764],[0.09248094,0.1314878,-0.33640304,-0.49161217,-0.21528612,-0.5316355,-0.095554546,-0.5099446,0.39594427,-0.4868655,0.2566146,0.19383566,-0.56233704],[0.17183253,-0.6922636,-0.7815626,1.7245736,0.26443008,0.34830126,0.18106776,0.4897128,-0.5520722,-0.3594627,0.04037111,-0.46142736,0.64785737]],"activation":"identity","dense_3_b":[[-0.0055949884],[0.06270205],[0.041998606]]},{"dense_4_W":[[0.9982169,-0.30214822,0.8375058]],"dense_4_b":[[-0.011819658]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02181x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02181x00x00x00x00x00x00'.json deleted file mode 100755 index 986005262e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02181x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.939101],[1.5599267],[0.57329994],[0.051986337],[1.5397805],[1.5469866],[1.5538288],[1.5324374],[1.5024316],[1.4477412],[1.390682],[0.051756933],[0.051815208],[0.051863786],[0.05182103],[0.051682103],[0.05124605],[0.050552182]],"model_test_loss":0.0067290966399014,"input_size":18,"current_date_and_time":"2023-08-11_16-34-05","input_mean":[[24.415758],[-0.0708019],[6.1642786e-5],[-2.1343174e-5],[-0.06627885],[-0.06775841],[-0.06956871],[-0.06583787],[-0.064153455],[-0.06203538],[-0.058261454],[-1.822088e-5],[-1.6343323e-5],[-2.2065358e-5],[-6.640849e-5],[-0.00010978214],[-0.00016678876],[-0.00023529833]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.090955906],[0.04917988],[-0.1741757],[-0.10349463],[0.073517144],[-0.14433604],[-0.21417597]],"dense_1_W":[[0.031386774,-0.0064099,0.008045171,0.2867708,-0.08236162,-0.84199697,0.10240696,0.13015348,0.21739843,0.13009188,-0.336333,0.18302079,-0.4356695,0.20127627,-0.14926645,-0.18274651,0.20071413,-0.009890185],[0.01055423,-0.9589615,-4.888261,-0.4326293,0.9792688,0.06254708,0.81589156,-0.22105382,-0.72918415,-0.47384414,0.57448494,-0.89492524,-0.42377415,0.28702468,0.94103277,0.3108972,0.22522354,-0.06581927],[0.00889319,0.5760613,-0.011418503,-0.2077564,-0.20235416,1.1582084,-0.71085477,-0.22053532,0.048205245,-0.0015826726,0.071042135,0.5661853,-0.19431645,-0.14515138,-0.23947677,-0.06749122,0.15579678,0.042601693],[0.021154417,0.73471886,-0.20633163,-0.092965506,-0.11627686,0.78098047,-0.3053794,-0.10012283,0.19263598,0.108361736,-0.21976234,0.1443252,-0.27093878,-0.088000044,0.14388824,0.12235138,0.7552596,-0.30535087],[0.7607973,0.059191745,-0.17095767,-0.18675576,0.4779047,-0.8605541,1.0540863,0.077983476,-0.35377684,0.34912428,-0.23799801,-0.61662775,0.19051781,0.324648,0.20347545,0.34229413,0.3465081,-0.20990801],[0.016754853,0.13105184,0.060855266,0.19800498,-0.25625008,0.93284976,-0.99328595,0.43371382,0.1287163,0.3198935,-0.34120345,0.36319074,-0.17294398,-0.40115258,0.018337402,-0.10593194,-0.09644049,0.093416676],[-0.80104244,0.5966007,-0.17412119,0.0745668,0.26523033,-0.12644067,0.37905166,-0.47610426,-0.19432892,0.23034103,-0.11601362,-0.0361885,-0.44668338,0.47873983,0.13158317,-0.19112219,0.28012928,0.10046652]],"activation":"σ"},{"dense_2_W":[[0.12751395,-0.579469,-0.42941913,-0.82789993,0.118697666,-0.030509774,-0.4625477],[0.43198177,0.34745836,-0.7453266,-0.28072536,0.3007269,-0.5361298,0.21595009],[-0.64348674,-0.43256557,0.5034301,0.23926352,-0.71879435,0.54971355,-0.32021347],[0.021957472,0.5988634,-0.9111236,-0.8090046,-0.04196959,-1.0256908,0.7584421],[-0.04072775,-0.5223909,0.8810148,0.102556,-0.08203382,0.8192045,-0.31275043],[0.52576905,-0.11147491,-1.0164086,-0.46802506,0.69514006,-0.9750496,0.25202104],[0.5843185,-0.43077394,-0.5290841,-0.8182589,0.56711,-0.2554457,0.27834472],[-0.9143706,0.14909329,0.7489671,0.21731603,0.094174676,0.5228992,-0.63162416],[0.5781319,0.077873595,-0.7260175,0.053800765,0.22003157,-1.1925383,0.4699523],[-0.8478256,0.27122667,0.574439,0.3034642,0.18656549,0.30236706,-0.74189764],[-0.89728916,-0.540247,0.42537263,-0.26421598,-0.71848625,0.5283021,0.27896],[-0.6038582,-0.6634362,0.35248938,0.39700025,-0.96313494,0.1258266,0.27540943],[-0.702523,0.28951612,-0.34453344,0.061114356,-0.6473836,-0.3301445,-0.5951263]],"activation":"σ","dense_2_b":[[-0.044364497],[-0.21510312],[0.11091102],[-0.13621476],[-0.06183172],[0.102863066],[-0.036004663],[-0.07521248],[-0.19428256],[-0.050729755],[-0.16412741],[-0.1322501],[-0.13190113]]},{"dense_3_W":[[0.21880057,0.17238903,-0.59318775,0.54590964,0.328959,-0.08423074,-0.021402186,-0.30087715,0.105242334,-0.07735786,-0.64967847,-0.60325295,-0.019917456],[-0.5737253,0.054932736,0.6915356,-0.5588708,-0.3497235,-0.66048837,-0.55370605,0.6054378,-0.6448654,0.5938389,0.70369726,0.15654652,0.4921153],[0.22326133,0.38247967,-0.68284494,0.74056363,-0.46936858,0.6398252,0.30618396,-0.1293351,0.72910917,-0.47571996,0.19982132,-0.50786984,0.120341815]],"activation":"identity","dense_3_b":[[0.0075428453],[0.03185654],[-0.06226225]]},{"dense_4_W":[[-0.20277399,0.36300623,-0.80966884]],"dense_4_b":[[0.048043206]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02191x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02191x00x00x00x00x00x00'.json deleted file mode 100755 index cda75eb28b..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02191x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.0005245],[1.1223631],[0.56650954],[0.040156633],[1.1045293],[1.1096628],[1.1155437],[1.1086388],[1.1007575],[1.0822154],[1.0583125],[0.040068675],[0.040072493],[0.04007388],[0.039984047],[0.039851412],[0.039609052],[0.039315373]],"model_test_loss":0.005991812329739332,"input_size":18,"current_date_and_time":"2023-08-11_16-59-30","input_mean":[[25.675858],[-0.14288636],[-0.014269486],[-0.0032686314],[-0.13565269],[-0.1382612],[-0.14184494],[-0.14358865],[-0.14512834],[-0.14613849],[-0.14589326],[-0.0033924344],[-0.0033741088],[-0.003360874],[-0.0033476953],[-0.0033650529],[-0.003380635],[-0.0034961724]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.17480564],[0.18210134],[-0.56885064],[-0.19985428],[-0.045291904],[-0.57443535],[-0.11631125]],"dense_1_W":[[-0.007863749,-0.28470495,0.04231277,-0.66548604,-0.12848611,-0.91329616,0.30217457,0.16402288,0.19537158,-0.256202,-0.14585154,0.09115254,0.1150835,0.30422798,0.017745864,-0.29077125,0.5362173,-0.1107794],[-0.005497062,-1.2494678,-5.5986447,-0.093020305,0.934668,0.26794314,1.5251178,-0.6939207,-0.6933608,-0.6269682,0.42408594,-1.5087744,-0.582999,0.43095827,1.0934985,1.0581348,0.19804095,-0.61133814],[1.2855586,-0.045317598,-0.041259,0.6257151,-0.5867755,1.315738,-0.619025,-0.031879213,0.08639269,0.38603297,-0.21348597,0.4264018,-0.23836033,-0.62063384,-0.10609298,-0.61321807,0.107925534,-0.0714755],[-0.0047950665,-0.43550637,-0.028580034,-0.3060538,0.5702284,-1.100899,0.34844038,0.10669702,-0.11319558,0.3034445,-0.20166925,-0.30887967,0.33024544,0.51993126,-0.30957666,-0.01086123,-0.11150792,0.20599872],[-0.0060232766,-1.0670959,0.34271115,-0.76167846,0.07718474,0.8662963,-0.26442152,0.36251798,0.23742421,-0.071805924,-0.110565305,0.08984451,0.35723057,-0.25795203,0.08405907,0.2909975,0.04691789,-0.046068314],[1.243962,-0.06773367,0.041754216,-0.49038526,0.67357427,-1.419546,0.61591196,0.15995342,-0.3010706,0.116759814,-0.05290848,-0.58484674,-0.2919908,0.76646173,0.79990584,0.6095101,-0.2919323,-0.040067844],[0.0063426853,0.29359382,0.029911779,-0.11636771,-0.17950699,1.065461,-0.6709385,0.09389695,0.14424817,-0.031868383,-0.076493725,0.89900523,-0.100873575,-0.6742322,-0.11008049,-0.102969535,0.15808189,0.059139792]],"activation":"σ"},{"dense_2_W":[[0.1780774,-0.23879893,0.40886527,-0.03837895,0.6731009,0.37912157,0.024035169],[0.26459897,0.39045632,0.21518803,0.15523876,0.49753502,-0.24493335,0.25550902],[0.6711707,-0.43927252,-0.036247067,0.64019126,-0.31602848,0.52645594,-0.8239448],[-0.022878619,0.057614833,-0.1544598,0.04378831,-0.058183365,-0.0948237,-0.84012353],[-0.39999592,-0.30837488,-0.5094495,-0.45057485,0.04420731,-0.39995825,-0.0781143],[0.16760944,0.20678467,-0.40867665,0.471323,0.24410716,0.32461926,-0.22563171],[0.5557148,0.41185716,0.24847849,0.31282943,-0.41320753,0.50370765,-0.21249676],[-0.19418764,-0.012745005,0.19675006,0.15134968,-0.32846612,0.16126548,-0.086756974],[0.17462167,0.13238178,-0.31408685,0.038765885,-0.017508972,0.25259814,-0.58019114],[-0.017934231,0.26039112,-0.34202117,0.43214414,0.24746032,-0.30627286,0.5151575],[0.4940814,0.15724,0.06147876,0.2419263,-0.5808532,-0.0146812,-0.6242227],[-0.44739762,-0.51928467,0.49245462,0.08635158,0.5575218,-0.35451686,0.4488533],[1.2522198,-0.2360379,-0.6547458,0.8267273,-0.88394165,0.70522034,-1.0572921]],"activation":"σ","dense_2_b":[[0.026364576],[-0.025734073],[-0.04295231],[-0.25066647],[-0.013064962],[-0.08499931],[-0.036362205],[-0.004759432],[-0.061301507],[0.005311887],[-0.039976895],[0.04567746],[0.013406974]]},{"dense_3_W":[[-0.5968739,-0.439085,0.48412055,0.3187139,-0.29512522,0.5073818,0.20465378,0.045948084,0.013481034,-0.1332729,0.60977477,-0.6310519,0.23163827],[-0.27164835,-0.4812297,-0.6265655,-0.023346987,0.25599414,-0.12162734,0.13101235,0.41443184,-0.2227736,-0.2773484,0.3685923,0.030362112,-0.634783],[0.57348764,0.19016632,0.25121495,0.27343124,-0.2428453,-0.26571003,-0.6007244,0.4791869,-0.5334977,0.46657896,-0.4515347,0.35774907,0.027132725]],"activation":"identity","dense_3_b":[[-0.011396689],[0.0397831],[0.009339748]]},{"dense_4_W":[[-0.9927989,0.34151393,0.70749515]],"dense_4_b":[[0.012457315]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json deleted file mode 100755 index d7aedb019d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.1069937],[1.377736],[0.55493695],[0.05719556],[1.3765576],[1.3775383],[1.3772336],[1.3490695],[1.3153961],[1.2702683],[1.223111],[0.056874666],[0.056979246],[0.05707212],[0.05725215],[0.057166327],[0.056820378],[0.056312907]],"model_test_loss":0.01224404014647007,"input_size":18,"current_date_and_time":"2023-08-11_18-01-17","input_mean":[[21.029448],[0.062122844],[0.011586429],[-0.013362663],[0.058448926],[0.059218813],[0.06003164],[0.060906783],[0.05690931],[0.05107428],[0.04589755],[-0.013371633],[-0.013350069],[-0.013321604],[-0.013194786],[-0.013209626],[-0.013246084],[-0.013091505]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.029981],[0.6557142],[0.025477692],[-0.07285545],[0.14103301],[-0.75449616],[-0.37838358]],"dense_1_W":[[0.45469517,-0.13852943,-0.20428768,-0.4649964,-0.16689883,-0.46213424,0.58211297,-0.2600774,0.011318633,-0.31072444,0.24087484,-0.30786481,0.22569135,0.4312357,0.095120884,-0.040498447,0.016559452,-0.006246631],[0.48909014,0.19140528,0.21468148,0.38366044,-0.2924136,0.90077084,-0.57901615,0.49554396,-0.109812155,0.13619985,-0.1644991,0.0029267913,0.39931184,-0.6447186,-0.28419474,0.011865851,0.32336563,-0.16406368],[0.08335772,0.46219787,-0.006281903,-0.4606084,-0.5252204,1.4688734,-0.81243116,0.23485558,-0.0043862914,-0.1055535,0.017743455,0.25692242,0.48580706,-0.406194,-0.3941023,-0.015782943,0.26534048,-0.03168482],[-0.025222164,1.0567143,7.659574,0.08088202,-1.9668833,-0.6673831,-0.35986438,0.8868536,1.874591,1.4548881,-1.8890685,1.428609,0.31265762,-0.31063205,-0.92161745,-0.96598464,-0.21013777,0.3951245],[-0.24860296,-0.03803796,-0.00405875,0.21248466,0.11106674,0.40961975,0.09255897,0.019209573,0.07700923,0.15433341,-0.100313425,0.10832265,-0.058324855,-0.31074783,-0.18075982,0.055103302,-0.20808068,0.12037389],[-1.7423648,0.82126313,2.705039,0.22467682,-0.003623281,0.25392738,-0.4748977,0.06635853,0.54281545,-0.13825028,-0.21510579,0.61694807,0.04500307,-0.4738145,0.15694156,-0.5615226,-0.28929874,0.30215448],[-0.029229201,-0.24708195,-0.06705875,-0.06484636,0.6352556,-1.6881858,1.0670066,-0.18514188,0.14397305,0.029184626,-0.022868067,-0.11220785,-0.41982648,0.24265464,0.5274242,-0.26783192,0.44759402,-0.3523202]],"activation":"σ"},{"dense_2_W":[[-0.14019006,0.8517118,0.23271823,0.36868808,0.61500895,-0.34682518,-0.7155873],[-0.347382,-1.0464604,-0.77282,-1.3966386,0.86157274,-0.15990283,0.32113728],[1.0913037,0.396265,-0.46790498,-0.52455956,-0.4228992,-0.13811836,0.6824839],[-0.19100685,-0.16689822,-0.38699043,0.19396296,-0.6368938,0.4325597,0.23740473],[0.86992455,0.2691951,-0.31172332,-0.21921356,-0.34238544,-0.21491715,0.80763847],[0.9475764,-0.02158802,-0.87059724,0.014679482,-0.324306,-0.33987498,1.1471028],[-0.2071371,-1.4411374,-0.26056397,-1.5143462,0.40373328,0.42800063,0.34931841],[-0.70536876,0.0997919,0.41194123,-0.036822613,-0.2394713,0.23169665,-0.33681363],[-0.2928761,-0.9999774,-0.19667697,-1.0640647,-0.17863739,0.35508665,-0.24925552],[-0.20061804,0.5150541,0.9944113,-0.39703074,0.5471109,0.24731952,-0.8795763],[-0.09993521,-0.21843813,0.9697644,-0.29330543,0.5018627,-0.17633167,-0.9433106],[-0.61491317,-1.1780969,-0.6712012,-1.6405643,0.7202017,0.3414344,0.14721029],[-0.83430654,-0.30646098,0.7540531,0.1640073,-0.07167989,-0.15225653,-0.6632847]],"activation":"σ","dense_2_b":[[0.008414734],[0.02586258],[0.26360497],[-0.17161213],[0.021794198],[0.11237369],[-0.19526652],[-0.21869946],[-0.15780614],[0.0076409117],[0.08034951],[-0.052167464],[0.008192686]]},{"dense_3_W":[[0.37548563,0.6901746,-0.017093312,0.05906239,-0.17285745,0.7850599,0.16857842,0.2924379,-0.45666716,-0.71577275,-0.20736414,-0.22495872,-0.7006286],[-0.63446444,0.3959629,0.6600817,-0.36419266,0.5282527,0.44988224,0.3944795,-0.48388985,0.33301595,-0.7800839,-0.2381008,0.04726727,0.008106329],[0.4815408,-0.39100966,-0.570321,-0.52544576,-0.5211865,-0.2355475,-0.13347512,-0.45825776,-0.1850824,0.6669436,0.73957324,-0.7607831,0.583408]],"activation":"identity","dense_3_b":[[-0.022654189],[-0.047549613],[0.081376344]]},{"dense_4_W":[[-0.07399648,-0.7841488,0.65943784]],"dense_4_b":[[0.049836714]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12451x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12451x00x00x00x00x00x00'.json deleted file mode 100755 index 44f484b674..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12451x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.487649],[0.9452884],[0.49897322],[0.036168467],[0.9375047],[0.939802],[0.94176334],[0.9312508],[0.9176832],[0.8981818],[0.8754837],[0.036056127],[0.03607669],[0.0361009],[0.03615947],[0.03622122],[0.036174823],[0.03611307]],"model_test_loss":0.013644726015627384,"input_size":18,"current_date_and_time":"2023-08-11_18-28-16","input_mean":[[22.188808],[-0.0016201948],[0.0067229858],[-0.006841018],[-0.0040381285],[-0.0036605345],[-0.0031642113],[0.0007389491],[0.00048997015],[0.0011243575],[-0.0031244024],[-0.006816045],[-0.0068408772],[-0.006861466],[-0.006930233],[-0.006957305],[-0.0070455903],[-0.0070900545]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0673442],[2.7745846e-5],[-0.99905986],[0.58756214],[0.7617952],[0.04276479],[-0.08482717]],"dense_1_W":[[-1.376805,0.15786377,-3.812531,-0.245421,0.6155368,0.2635061,-0.1198247,-0.3752861,-0.55684185,-0.21776916,0.61006033,-0.44973776,-0.16761783,0.8354563,0.5233352,0.40619633,-0.25151846,-0.48748687],[0.028500041,0.8878804,-0.9752583,0.5530488,-0.47703752,-1.1190318,1.1573414,-0.41567516,-0.6945042,0.08366254,0.6784389,-0.9251646,-0.16067813,0.39871418,0.010591839,0.43614033,-0.1241933,-0.22110312],[0.0055779507,0.20711112,0.043922327,0.5815181,0.79546875,-0.3745229,1.0692942,0.5421788,0.51711035,0.08371175,-0.7767221,0.14060917,0.86184376,1.282557,0.5231202,0.48133206,0.85133666,0.6251881],[0.23285055,-0.4198758,0.0023081363,0.034350406,0.36339942,-0.8756732,0.4318861,0.068672374,0.1868084,-0.105609834,-0.082326055,-0.21219045,-0.052394826,0.38342378,-0.08516862,-0.073896684,0.20564918,-0.09030272],[0.20625626,0.69163126,0.0040207044,-0.2540704,-0.796767,1.4653561,-0.7764364,-0.3945441,0.16091216,0.07360298,-0.009463289,0.33463284,0.12811317,-0.33023477,-0.15273824,0.20237693,-0.057417326,0.027028535],[0.0009643716,-0.4622335,0.008336065,-0.14127259,-0.03327446,-1.2106333,0.1591597,0.17660871,0.1737159,0.04918479,-0.35066015,0.061325263,-0.32096663,0.065511234,0.07052332,-0.009597162,-0.12007005,0.08947649],[0.16628331,-0.74743044,-7.732924,0.14102307,3.3183703,0.25258428,0.033113215,-2.4762802,-1.7066356,-1.0341645,2.3158412,-1.1193362,-0.6722529,0.23111704,1.0017239,1.267337,-0.41339538,-0.4809045]],"activation":"σ"},{"dense_2_W":[[0.21290007,0.64724165,0.49358806,0.056110725,-0.70513237,-0.11181515,-0.11487207],[0.109797336,-0.40518957,-0.22855765,-0.87453985,0.69947445,-0.3448592,0.36246267],[-0.10385788,0.05007824,-0.43522125,-0.24411759,0.6849432,-0.72941595,0.11045129],[-0.366294,0.48336378,-0.026342975,0.38450494,-0.8003826,0.39405254,0.20164785],[0.09994913,0.15614097,0.03521924,-0.31754568,-0.87542045,-0.0036878414,0.6618589],[-0.4278517,0.13070711,0.22683983,-0.50581944,1.1253206,-0.574315,-0.33853972],[0.3912402,-0.057859033,-0.26818904,-0.07417243,-0.53089696,-0.037230473,0.35937098],[-0.007780401,-0.062603526,0.24958208,-1.1340399,-0.118980326,0.0787109,-0.6355662],[0.045311734,0.31174505,0.3089076,0.12579472,-0.5789172,-0.35370818,-0.276329],[0.002701942,-0.17374736,0.26680645,0.52160555,-0.4519264,0.38481277,0.07479425],[-0.16118486,-0.3074708,0.36325666,-1.1860276,-0.21609893,-0.49962327,0.43130475],[-0.18138263,-0.51702213,-0.07574924,-0.36417502,0.49235836,0.32681176,-0.4689479],[-0.39053667,0.11265152,0.20087351,0.767612,-0.99513376,0.61860406,0.3170469]],"activation":"σ","dense_2_b":[[-0.053010453],[0.073241115],[-0.090730816],[-0.14704],[-0.14625446],[0.19712886],[-0.35103756],[0.021736875],[-0.067158625],[0.013618938],[-0.021116722],[0.05918233],[-0.15891494]]},{"dense_3_W":[[-0.32645482,0.5014898,-0.22124335,-0.56819195,0.37468666,0.36114338,-0.35449836,0.31993988,0.2904279,-0.18361193,-0.49852094,0.5350739,0.17842627],[-0.33429646,0.2762441,-0.45675096,-0.17342906,-0.52969354,0.72830856,0.4542556,0.52436656,-0.14327197,0.19658618,0.5030742,0.086073324,-0.4896408],[-0.40658107,0.72393274,0.58974785,-0.31303748,-0.34105098,0.5463775,-0.105001554,0.5828467,-0.25973922,-0.49174955,0.43771726,0.20469081,-0.62791723]],"activation":"identity","dense_3_b":[[-0.042050008],[-0.04370406],[-0.031461757]]},{"dense_4_W":[[0.52837956,0.37841925,1.2096573]],"dense_4_b":[[-0.031662747]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B76012x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B76012x00x00x00x00x00x00'.json deleted file mode 100755 index 3379069f0a..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B76012x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.375572],[1.0479666],[0.5336316],[0.034517776],[1.0380636],[1.0415741],[1.0435171],[1.0233974],[1.0003295],[0.96495837],[0.9329012],[0.034553193],[0.03455014],[0.034553725],[0.0345314],[0.034555648],[0.03454],[0.034541115]],"model_test_loss":0.01448360551148653,"input_size":18,"current_date_and_time":"2023-08-11_19-45-05","input_mean":[[21.282667],[-0.0041169003],[0.0054940344],[0.0054295054],[-0.0039702826],[-0.0047535836],[-0.0049827257],[-0.00041957427],[0.0036263561],[0.010159709],[0.010208528],[0.0053120484],[0.0053210543],[0.005327886],[0.0053719524],[0.005379417],[0.0054208445],[0.0054328674]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.08694271],[2.3874013],[-1.1189023],[-0.20053284],[-0.82135457],[-1.9767927],[-0.24129376]],"dense_1_W":[[0.04281066,-1.1349988,0.0029240015,0.51000357,1.2487551,-1.6569496,0.1126817,0.46920308,-0.18618616,-0.03293716,0.05162156,-0.70887804,-0.03422212,0.34768334,0.17257658,0.11435088,-0.062131677,-0.117349416],[0.78725845,0.5511427,-0.009158071,-0.0879293,-0.29217157,-1.1015882,0.22204675,-0.32402563,-0.31345448,-0.19125423,0.058251724,-0.37509483,0.445088,1.1528792,-1.2366151,-0.30880412,-0.08606776,0.5468172],[-0.53494954,0.8182066,-1.0288574,0.10421147,-0.57160145,-1.2457802,1.087224,-0.11592528,0.16457517,0.12212297,-0.29925084,-0.17019296,-0.27164263,0.33206818,0.03422637,0.16099158,-0.22837052,0.07222221],[-0.018647902,-1.2851863,-5.806965,-0.5820859,1.6532221,-0.15292299,0.3868868,-0.07472222,-1.1960039,-0.9730067,1.3412269,-0.4317284,-0.40662217,0.49923965,0.4225129,0.9066051,0.0015882424,-0.37326196],[-0.57139546,0.46502775,0.99184674,0.396859,0.2340786,0.7237931,-1.2583938,-0.08029648,-0.35627592,0.3597747,-0.040746044,-0.38713092,0.3865338,-0.10270777,-0.41028908,0.27863222,-0.26602527,0.07882698],[-0.5458326,-0.9584286,-0.009850046,0.20454025,0.32909134,-0.98597926,0.7100352,0.04268226,-0.2823607,-0.2440534,0.19341996,-0.3187937,-0.113805935,0.9269717,-0.62920344,-0.21646176,-0.054388206,0.28129458],[-0.020640513,0.1749185,-0.8748891,-0.08894304,-0.6374144,1.5462204,-1.4470797,0.53431803,0.16430534,-0.38660437,0.054579385,0.42408434,0.29847622,-0.53912234,-0.19198798,0.042103697,-0.15677306,0.2510289]],"activation":"σ"},{"dense_2_W":[[0.576956,0.58485156,0.46824354,0.23629351,-0.7127077,0.24054548,-0.801404],[-0.7679824,-0.82911664,-0.1316323,-0.649113,0.5064222,0.32822382,0.5846307],[-0.45726764,-0.2200032,-0.106780164,0.50859475,-0.6885187,-0.9536588,-0.1520038],[-0.6101801,0.0043161334,-0.52828544,-0.6778497,0.20272149,0.17903528,0.6156166],[0.00020568681,-0.8475529,-0.028076276,-0.40698978,0.09670474,-0.032005046,0.34535372],[0.65462285,-0.18649338,0.6973468,-0.1406565,-0.26298824,-0.05047055,-0.112580955],[0.82534224,-0.35191694,0.39351723,-0.1623142,0.109611444,0.19251318,0.25714624],[-1.0138118,-0.30412364,0.05206559,-0.20494476,-0.13674605,-0.24461035,0.34458944],[0.39735422,-0.3080049,0.184732,0.34991446,-0.19378886,0.5201685,0.10663582],[0.051989906,-0.43616736,-0.2765625,-0.6018549,0.35423297,-0.06406093,0.04343631],[-0.46184382,0.2845056,-0.6880694,-0.15087406,0.42838258,-0.8445976,0.78881943],[0.25200763,0.06935976,-0.23696655,-0.39565444,-0.20061536,-0.43781048,-0.48936784],[-1.0732412,0.27758133,-0.028595658,-0.5918897,0.66757387,-0.51985353,0.9180244]],"activation":"σ","dense_2_b":[[-0.13084444],[0.04154609],[-0.1692621],[-0.060585238],[-0.11847037],[-0.0038540647],[-0.009530867],[-0.199515],[-0.15339535],[-0.11540088],[0.031653397],[-0.31335723],[0.043830592]]},{"dense_3_W":[[0.6439716,-0.51321656,-0.29869318,-0.5795511,0.075971514,0.4085636,0.67255604,-0.52776796,-0.080016606,-0.49534002,-0.5485497,0.5257951,-0.51068026],[-0.229645,-0.125913,0.20544381,0.029917588,0.15909044,0.30286267,-0.5067371,-0.31015295,-0.34193483,0.35274273,-0.018820988,-0.10453944,-0.18352267],[-0.71315366,0.5508435,0.56744355,-0.11833193,0.4223396,-0.4779712,0.47948912,0.08573708,-0.28134808,-0.15602563,0.65661746,0.3988988,0.29393244]],"activation":"identity","dense_3_b":[[0.069226205],[-0.050530106],[-0.07095789]]},{"dense_4_W":[[-0.8900288,0.84156877,0.9698375]],"dense_4_b":[[-0.062096175]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json deleted file mode 100755 index a161aec775..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.993547],[1.3824608],[0.5442085],[0.04466587],[1.3670224],[1.373887],[1.3785548],[1.3483428],[1.3078706],[1.2547767],[1.2047329],[0.044602543],[0.044602063],[0.044597205],[0.044438787],[0.044370554],[0.044226427],[0.043893978]],"model_test_loss":0.01754230633378029,"input_size":18,"current_date_and_time":"2023-08-11_20-42-27","input_mean":[[21.669216],[-0.019106807],[-0.00071183714],[-0.004523422],[-0.015881915],[-0.016015995],[-0.01599993],[-0.013354679],[-0.009738685],[-0.0054146647],[0.0011390813],[-0.0044711116],[-0.0044688736],[-0.0044746096],[-0.004526157],[-0.004584231],[-0.0047590407],[-0.004947274]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.3237112],[-0.2403381],[-0.014628102],[-0.022476863],[-2.7615786],[0.007984176],[-0.28538132]],"dense_1_W":[[1.0919807,-0.045324247,-0.75395745,0.08453984,-0.1758099,-0.7810576,0.60001886,0.1895486,0.022043524,-0.13008374,-0.6345032,-0.04466129,-0.10564512,0.4632076,-0.66976476,0.13218683,-0.12667759,0.23693071],[-0.14425355,-0.1333905,0.61592144,0.16705051,-0.4906342,0.47542897,-0.5073153,0.8226191,0.5239043,-0.020427523,0.118154675,0.042043276,0.05852372,-0.22402734,-0.002725648,-0.021388907,0.09187215,-0.10525817],[-0.002070986,-1.0142688,0.0024986335,0.29121137,0.23187101,-1.4923184,1.0455217,0.3253877,-0.026153605,-0.18092944,-0.022284921,-0.7775931,0.17352305,0.4154996,0.0007446691,-0.3231251,0.016695077,0.092076115],[0.003556123,-0.6074834,-5.16307,0.10229213,1.5040752,-0.24918728,-0.31775448,-0.24619824,-1.1433711,-0.9349265,1.3716418,-0.8144274,-0.26113123,0.12032675,0.4644665,0.6542465,0.8436341,-0.81249446],[-1.2800871,0.5802051,-0.8313711,-0.36175877,-0.6173688,-1.0907602,1.1683012,-0.12169285,-0.04679629,-0.31703347,-0.56498647,0.027285641,-0.13184144,0.46147045,0.08659124,-0.20840271,-0.24434797,0.31504855],[-0.0037023455,0.6878883,0.011835528,-0.14244853,-0.7035841,1.4227525,-0.67105776,-0.052963886,0.040167555,-0.06747049,0.03174579,0.07668224,0.270919,-0.25877607,-0.19650425,-0.39022088,0.16024818,0.07297123],[-0.15980847,-0.26276147,0.51323986,0.2717203,0.06203693,-0.92020065,1.1863018,0.17152844,-0.12639117,0.3401608,0.21352135,-0.5127686,-0.17613575,0.42713523,0.15159386,-0.028390504,0.116660304,-0.2374384]],"activation":"σ"},{"dense_2_W":[[-0.31951153,-0.60305333,0.94934136,0.5176455,0.42330498,-0.9991227,0.42707992],[-0.5175407,0.04058364,-0.5662553,0.3280252,-0.46270046,1.0823125,-0.36556607],[0.3591221,0.21218485,0.48469293,0.5919236,-0.39960954,0.10840565,0.34785143],[-0.6868013,0.5927585,-0.2725992,-0.43643984,0.09060123,0.12481008,-0.63349223],[-0.25257543,-0.8518924,0.085459694,0.6604647,0.55866843,-0.17756383,-0.24361156],[-0.3636745,0.036077805,-0.8358255,-0.19005351,0.23775734,-0.3111283,-0.3870686],[-0.5255931,0.4393281,-1.1511757,-0.071744345,0.46959507,0.40960646,-0.40884846],[0.12857412,0.560429,-0.8185417,-0.40506232,-0.06547155,1.1404641,-0.6429645],[0.629162,0.03809335,0.936505,0.342929,-0.6054116,-0.7688969,-0.062184736],[-0.2467538,0.0011489796,-0.6328479,-0.40097603,0.05688727,0.2515537,-0.40826854],[0.32569283,-0.26726797,-0.05968891,0.6881055,0.7094254,-0.566512,0.22227532],[-0.49612823,0.09098714,0.034291003,-0.28518376,-0.1303378,0.3737506,0.21425006],[-0.21644352,-0.40147,0.2609396,0.09716901,0.75330514,-1.2959148,0.58928996]],"activation":"σ","dense_2_b":[[-0.64226997],[0.07075255],[0.029240176],[-0.1350133],[-0.10543014],[-0.14136776],[-0.08885219],[0.04394021],[-0.06569347],[-0.014445162],[-0.30804452],[-0.14045092],[-0.09604305]]},{"dense_3_W":[[0.5584446,-0.49258238,-0.06831941,-0.33898526,-0.010516451,-0.243958,0.3254376,-0.6381771,-0.43171817,0.32533497,0.3000785,0.47373283,0.1616467],[0.62135106,-0.6357912,-0.03967677,-0.3655531,0.13359948,-0.010117412,-0.26593152,-0.2779743,0.7421054,-0.64709723,0.5776921,0.35391986,0.85788155],[-0.24483721,0.4855099,-0.3095385,0.46626845,-0.117039315,0.27388623,0.39779752,0.61265177,-0.034959346,0.2967797,-0.008864683,0.36063853,-0.479764]],"activation":"identity","dense_3_b":[[-0.031353332],[0.04507456],[-0.07856169]]},{"dense_4_W":[[-0.065495215,-0.60703295,1.0466374]],"dense_4_b":[[-0.0710821]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12520x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12520x00x00x00x00x00x00'.json deleted file mode 100755 index 9a58eb918c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12520x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.850587],[1.2006214],[0.60150135],[0.038597997],[1.1924275],[1.195236],[1.1976618],[1.1804594],[1.160997],[1.129005],[1.0974691],[0.03850275],[0.03851834],[0.038536113],[0.038553298],[0.038495034],[0.038382825],[0.03821236]],"model_test_loss":0.013673663139343262,"input_size":18,"current_date_and_time":"2023-08-11_22-22-26","input_mean":[[21.53012],[-0.045687865],[0.0011462382],[0.0033840926],[-0.041380186],[-0.042962875],[-0.044409957],[-0.04001238],[-0.035696205],[-0.031632073],[-0.029335052],[0.0033047958],[0.003320643],[0.003342723],[0.003354216],[0.0033464204],[0.003304185],[0.0032328872]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.108350344],[-0.20693034],[-0.14522482],[-0.5163846],[-0.37156594],[-0.119947374],[-0.31804028]],"dense_1_W":[[1.0910766,-0.43300736,0.0030034583,0.38913414,0.18278283,-0.31925726,0.64668375,-0.13552432,-0.41154033,0.24433674,0.048472222,-0.030966012,-0.18421704,0.302578,0.05368483,-0.10369585,0.45285794,-0.2643156],[0.021740088,-0.6065864,-0.0005514439,0.08483938,0.5714144,-1.2917976,0.6474515,0.1432958,-0.08682793,-0.0937718,0.09686305,-0.27733508,-0.2996467,0.07307305,0.4865785,-0.08587177,0.48999208,-0.4380169],[-0.0045009824,-0.5964933,0.00063102716,-0.16957587,0.42155236,-1.5124145,0.9020258,0.30124182,0.2940203,-0.19893585,-0.14327702,0.028712958,-0.3790416,0.5805242,-0.25458577,0.27593663,-0.32479686,0.18945682],[-0.031941526,-0.36289775,-6.4586377,0.5251884,1.2119403,0.19459614,0.027046863,0.15272467,-2.0958602,-0.6124005,1.2700095,-0.52332336,-0.1753136,0.04349013,0.5094644,-0.12745608,-0.3554143,0.17660716],[-0.0045775212,0.8235139,-0.9080976,0.8690431,-0.18817183,-1.0143514,0.68702215,-0.302185,-0.3445395,0.32111478,-0.021534106,-0.13426313,-0.1298182,0.04873703,-0.40560097,-0.0978507,-0.36964232,0.38757965],[-0.10878436,-1.5791492,0.060036104,-0.75532895,-1.7842572,-0.77946854,-1.2905889,-1.401123,-1.1079345,-2.0109158,-1.0800682,0.1277004,-0.047745556,-0.14514564,-0.4930343,0.4303121,0.40624237,0.38801444],[-1.047575,-0.3641548,-0.011621664,0.1802768,0.36029488,-0.5678573,0.87215257,-0.32095528,-0.48281944,0.18143207,0.16359733,-0.06739126,0.043152835,-0.06856613,0.3683477,0.08366781,0.41270572,-0.37719706]],"activation":"σ"},{"dense_2_W":[[0.08896879,-1.0618838,-1.236928,1.1085147,0.45503667,-0.29649493,-0.5560603],[0.05802153,0.8222231,0.79636604,-0.7962488,-0.14412767,0.14525741,0.6180748],[-0.15825768,-0.96576464,-0.20819964,-0.59680426,-0.15439917,0.22671004,-0.2357116],[-1.111581,0.27544013,-0.17377003,-1.2714287,-1.0232576,-0.6894107,0.9488163],[-0.5458172,-0.42459664,-1.6347574,-1.4187841,-0.964695,-0.5459487,-1.4589431],[-0.15094759,0.6969223,0.84540576,0.45799604,-0.31126192,0.48867247,-0.46977514],[-0.34919992,0.7479091,0.7190768,0.549971,0.5500571,-0.5448207,0.15025789],[-0.68081254,-0.38789412,-0.048226748,0.4368647,-0.8189457,0.021749284,-0.77771515],[-0.60718095,-0.26552448,-0.28099757,-0.15710582,0.29094604,-0.24080555,-0.7808776],[0.0033568847,-0.71768373,-0.9406896,-0.042297453,-0.36388123,-0.108075835,0.5197345],[-0.4915351,0.9041844,0.25389567,-0.013445068,0.18897061,0.2837717,0.3741654],[-0.3757065,0.23760095,-0.66970426,-0.36544222,-0.8507982,0.4782464,-0.5303433],[-0.29663894,-0.37195724,-0.8442924,0.29635245,-0.19174902,0.070796795,-0.4390862]],"activation":"σ","dense_2_b":[[-0.39513272],[-0.159368],[0.2868388],[-0.23528467],[-0.26247987],[-0.15212747],[-0.22264543],[-0.36984366],[0.033016775],[0.06725842],[-0.3415627],[0.22711973],[0.17381573]]},{"dense_3_W":[[0.69550085,-0.2602267,0.6511873,0.80323565,-0.5139177,-0.6302756,-0.41592857,0.5141956,0.6740762,0.7060216,-0.8168942,0.68222535,0.3284389],[0.089398846,0.46339324,-0.97560817,-0.80172545,0.19869575,0.5268298,0.6723404,-0.00843294,-0.75555086,-0.7210899,0.55462325,-0.8117566,-0.73714113],[0.48829198,-0.5059535,-0.08616368,-0.16644941,0.48320302,-0.48428047,-0.30819136,-0.35214564,-0.15856753,0.5061082,0.11269471,0.5998318,0.5135987]],"activation":"identity","dense_3_b":[[-0.117111795],[-0.062588595],[-0.0089505]]},{"dense_4_W":[[0.7856232,-0.70317644,0.19791394]],"dense_4_b":[[-0.08677392]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json deleted file mode 100755 index 8d7481346f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.7166467],[0.9360951],[0.54996157],[0.039336555],[0.9278234],[0.92963946],[0.9314855],[0.92150825],[0.91230273],[0.8934071],[0.86945397],[0.039176],[0.03919577],[0.039226335],[0.03920194],[0.03908752],[0.0389208],[0.038630653]],"model_test_loss":0.01772945560514927,"input_size":18,"current_date_and_time":"2023-08-11_22-47-50","input_mean":[[17.004646],[0.045599815],[0.0011152645],[-0.001088986],[0.042060442],[0.043612026],[0.044696216],[0.043072034],[0.044451833],[0.042805985],[0.038478125],[-0.0010230377],[-0.0010265883],[-0.0010224311],[-0.0010469804],[-0.000976282],[-0.0009040997],[-0.0007548164]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09819362],[-0.04249229],[-0.3479007],[0.03214666],[0.922219],[0.94473046],[-0.2771768]],"dense_1_W":[[0.07611097,-0.64347965,-5.7489953,-0.057701204,1.9627318,0.71188766,0.62335354,-1.5248296,-1.8103973,-1.1273834,1.2180927,-0.7481957,-0.65215784,0.3646581,0.76954377,0.93266475,0.5737459,-0.9375362],[0.082355805,0.0792861,-1.4165217,0.2831444,-0.8286206,-1.796174,0.7789983,-0.7667562,0.39938906,0.6860971,0.7154728,-0.3473279,0.46564227,0.70484024,0.18656117,-0.024444446,-0.13199502,-0.24193652],[-0.24016297,1.706992,-0.00090066914,-0.071590096,-0.7422648,0.8374083,-0.44082543,0.04738862,-0.22899044,-0.4460011,0.39585826,0.47956917,-0.17853828,-0.10812888,-0.08165929,-0.0425193,0.17251264,-0.29201412],[-0.35274625,-1.3477879,-0.0075425776,0.08863907,-0.77081376,0.9018588,-1.3318201,-0.44829947,2.0795786,0.8122879,0.6548207,0.44521397,-0.31335637,-0.17517531,-1.1029497,0.9331358,0.026675547,-0.06601325],[0.8279214,1.8557522,-0.0014833922,0.0585293,-1.1659931,0.9336915,-0.07515252,0.5152648,-0.62365764,-0.30737656,0.34178838,0.14973152,0.07111421,0.014621839,-0.22071289,0.16666935,-0.16080067,-0.23379543],[1.1760968,0.5412744,-0.0017593631,-0.22849438,-0.632045,0.6746573,-1.3172346,-0.8634406,-0.424611,0.5899645,-0.31364056,-0.32016203,0.25754422,0.1650363,-0.7505603,0.7215971,0.19650249,0.1422042],[0.852189,0.065097235,0.0061805155,-0.22967027,1.4924825,1.5642314,-0.60489327,-0.863056,-0.22668254,-1.0052434,-1.1320058,0.42393053,0.071807854,0.3276753,-0.47956294,0.08070331,-0.29770264,0.29226956]],"activation":"σ"},{"dense_2_W":[[-0.18211515,0.44951305,-0.9500942,0.21868896,-0.23856848,-0.2160815,-0.0797832],[-0.69846493,-0.4206712,0.31242144,0.24509996,-0.49114344,0.39693424,0.40193912],[0.17850624,0.19152331,-0.9087939,-0.44867268,0.23942706,-0.20083866,-0.22976424],[1.3243266,-0.25121248,-0.8598626,-1.3246324,-2.2754881,-1.6574712,-0.9889931],[-0.06998735,-0.6535759,0.1664615,0.1401335,-0.5745483,-0.5484165,0.52828187],[-1.0033789,-0.5766727,1.4222881,0.46975863,0.93773127,-0.7977733,0.08462863],[-1.6989592,0.24379954,1.0563916,0.8624438,-2.5557318,-3.1306412,-0.0018583427],[0.7160944,-0.045115337,-0.7554288,-1.3468298,-1.6522032,-1.3480777,-0.55742955],[0.8170345,-0.4355595,-0.24635607,-0.40475637,1.2702687,0.6482177,0.07428298],[-0.041201867,-0.83161634,0.6151208,0.63096315,0.09922941,0.5946334,0.097100645],[-0.8438058,0.4685656,0.83145976,1.2900296,1.6341914,1.3352168,0.91666037],[-0.22399388,0.07508866,-1.2330295,0.0674378,-0.18247488,-0.29714978,-0.35030952],[0.46261635,-0.33211225,-0.3962421,-1.7023565,-1.4344509,-1.1435779,-0.6136494]],"activation":"σ","dense_2_b":[[0.08529015],[-0.19910426],[0.1709426],[-0.27077383],[-0.40408188],[-0.21291175],[-0.6464522],[-0.30908433],[0.2922855],[-0.15335728],[0.09016753],[0.22037135],[-0.12172044]]},{"dense_3_W":[[0.17863923,-0.6011715,0.1722149,0.44289172,0.34816673,-0.49830723,-0.43645224,0.85543525,0.6923212,-0.49683204,-0.44174555,0.7450105,0.2767857],[-0.23232669,-0.05226724,-0.3187981,-0.7006331,0.26881424,0.5859572,0.7913836,-0.5530767,-0.0619629,0.5197311,0.06590323,-0.13048458,-0.727642],[-0.25087458,-0.4260785,-0.5679577,-0.8808904,0.3215431,0.3545877,1.4937782,-0.5066919,0.17787237,0.24629535,0.33879703,-0.77151966,-1.04119]],"activation":"identity","dense_3_b":[[0.11716675],[-0.15205665],[-0.09666118]]},{"dense_4_W":[[-0.6054611,0.6616036,0.5710006]],"dense_4_b":[[-0.113945]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B1254000x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B1254000x00x00x00x00'.json deleted file mode 100755 index 8c62679e2e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B1254000x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5586987],[1.0668136],[0.65108716],[0.034576062],[1.0662991],[1.0668288],[1.065283],[1.0460236],[1.0356027],[1.0212996],[1.004612],[0.034393594],[0.034448482],[0.03450532],[0.03473761],[0.03497435],[0.03507344],[0.034994226]],"model_test_loss":0.00870500411838293,"input_size":18,"current_date_and_time":"2023-08-11_23-14-06","input_mean":[[15.162458],[-0.030393902],[-0.032802418],[-0.0010593864],[-0.023624144],[-0.026816128],[-0.030528499],[-0.045015506],[-0.055663712],[-0.07392666],[-0.08540629],[-0.00092076114],[-0.0009717724],[-0.0010414494],[-0.0015066566],[-0.001796707],[-0.002044406],[-0.002223362]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.021506997],[0.21911767],[1.484493],[-1.3083466],[-0.06510764],[0.9399787],[1.458603]],"dense_1_W":[[0.0022624284,-0.3323741,-0.35996,0.30342358,0.4944291,-1.2646209,0.9047208,-0.47583306,-0.23761328,0.18038853,0.38000605,-0.25240594,0.101771735,0.3689774,-0.5897502,-0.13633685,0.18846181,0.053237073],[0.017284913,-1.2738092,-4.2060423,0.73188466,1.3437643,-0.18045263,0.56554645,-0.26942906,-0.49767345,-0.5426496,0.51763725,-0.43579608,-0.3971797,0.086990125,0.05311058,-0.03055538,0.37126696,-0.39750952],[2.0191145,0.49570322,0.031393226,0.54196084,-0.59665686,0.66882825,-1.0989279,-0.18807355,-0.45894685,0.2759851,0.336422,-0.037411854,0.19308677,-0.46080658,-0.4973297,0.5372746,-0.37408796,0.10846941],[-0.46998337,0.3490007,-0.00438622,0.34095845,0.8166364,0.60549915,-0.8988132,0.5476835,-0.37996238,0.3388258,-0.03860557,-0.036083266,0.1092255,0.052381583,-0.5599509,0.24364339,-0.28141674,0.18529813],[0.009164018,0.433447,-0.042506576,-0.17593549,-0.38864172,1.2539347,-0.59288657,-0.13135396,0.29104137,0.023563422,-0.009315888,-0.07067319,0.2342533,0.10161306,-0.5636307,-0.23514093,0.25040185,0.046599127],[0.4312695,0.36135638,-0.0074610105,0.26067948,0.4758904,1.401296,-1.3515489,0.20557608,-0.082261525,0.21485652,-0.0033740771,0.6790412,-0.13174984,-0.46494,-0.69377804,0.41025424,-0.14858818,0.13721205],[1.986749,-0.49324146,-0.02681901,-0.4256105,0.3361303,-0.35204482,0.9926823,0.12374698,0.5503816,-0.09924912,-0.4841911,0.24159499,-0.40405098,0.31244668,0.36439434,-0.044306964,-0.08293645,0.027888171]],"activation":"σ"},{"dense_2_W":[[-0.6324022,-0.2001331,-0.3526252,0.092529655,-0.27300277,-0.43241245,-0.014045538],[0.32039317,-0.116377145,0.3309547,0.63877505,0.5530988,0.50968677,0.24939647],[-0.30597773,-0.40312517,-0.38242427,-0.37124476,0.45356536,0.24014069,0.028166713],[0.96208113,0.43337837,0.14673242,-0.47370073,-0.9436095,-0.7661267,1.4071115],[1.0540173,1.2540439,0.6600092,-1.6646789,-0.54332626,-0.32733205,1.6595306],[0.62378746,-0.023177164,-0.34522477,-0.18102872,-0.551694,-0.5655608,0.6431443],[-0.736956,-0.87690467,1.1770567,0.6597062,0.27471146,1.0888082,0.692091],[-0.62574077,-0.12893064,-0.022563975,0.029874153,0.9045192,-0.17541885,-0.34263155],[0.48334014,-0.41208985,0.18305346,-0.20077266,-1.1162131,-0.2358352,0.34831035],[-0.56035835,-0.06362593,-0.5727027,-0.9132281,-0.30174935,-1.0307825,-0.63969034],[0.14403231,-0.3598213,0.4601045,0.4040111,0.7650697,-0.24749416,-0.4396638],[0.42583916,0.43303528,-0.8717473,0.12096721,-0.70570135,-0.4342938,-0.106751114],[0.84214103,0.1612862,-0.44598746,-0.30170873,-0.734939,-0.39400816,0.33292803]],"activation":"σ","dense_2_b":[[-0.010498221],[0.033183154],[-0.07346041],[0.31818846],[0.4988308],[-0.06161561],[0.13534743],[0.04956322],[0.013285028],[-0.24566568],[-0.054392837],[-0.07685737],[-0.0044829077]]},{"dense_3_W":[[0.320467,-0.094095595,0.29182792,0.19275357,-0.2693895,-0.03124413,0.70573056,0.13810281,-0.14187036,0.4353431,0.59297323,-0.35034177,-0.3786733],[-0.49737677,-0.03697066,-0.4474356,0.4436638,0.22232622,0.077376895,-0.2219271,-0.41994625,0.35827994,0.6140234,-0.30546016,0.06829079,0.09227224],[0.16473123,0.5829968,-0.19248042,-0.60918665,-0.43222797,-0.5060332,0.6062956,0.26105765,-0.52482605,-0.3128516,0.19090605,-0.5577064,-0.6766231]],"activation":"identity","dense_3_b":[[0.03811113],[-0.038507566],[0.07794119]]},{"dense_4_W":[[0.5730286,-0.2928305,0.97310096]],"dense_4_b":[[0.052272193]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019.json deleted file mode 100755 index 98b503aa71..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.718988],[1.5299566],[0.588685],[0.04587614],[1.5157732],[1.5220679],[1.5256046],[1.4840062],[1.4323099],[1.3597063],[1.2913275],[0.04572448],[0.045758896],[0.045787074],[0.045749795],[0.045636524],[0.045395125],[0.044941075]],"model_test_loss":0.01872895285487175,"input_size":18,"current_date_and_time":"2023-08-11_17-36-03","input_mean":[[20.897451],[0.06658304],[-0.006871385],[-0.0023558615],[0.06727495],[0.0672389],[0.06719857],[0.062312864],[0.059572313],[0.053668246],[0.050075833],[-0.0023719259],[-0.002378079],[-0.002380981],[-0.0024748852],[-0.0026206481],[-0.0028906488],[-0.0031310404]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.4188718],[3.7088637],[-0.4249776],[3.6651204],[0.046135984],[-1.4088162],[-0.10634205]],"dense_1_W":[[1.1106812,1.1545246,-4.947238e-5,-0.19786799,-0.18502258,0.5724563,-0.49629408,-0.04241503,-0.0403527,-0.15461488,0.11042651,0.53509825,0.37794867,-0.5013257,-0.36293125,-0.21677697,0.12571956,0.033723105],[1.8875406,-0.87548965,-0.001720046,0.009296322,0.26706383,-0.78977394,1.0030317,0.049685888,-0.81093186,-0.06850548,-0.606039,-0.72494996,0.5103131,0.33077994,0.15339775,-0.43638188,0.059071552,0.17510937],[0.00311601,-3.0533133,0.024360646,-0.6194892,-1.5417911,-1.5249615,-1.0547282,-0.9433036,-1.1036747,-1.0223001,-1.3264794,-0.25942302,0.510594,0.7205571,-0.4561305,-0.24234876,-0.38653123,0.5385542],[1.8394231,0.871029,0.00046375685,0.25113386,-0.26997137,0.6880674,-0.80075204,0.00029531567,0.5298615,0.050234746,0.67435867,0.2723314,-0.19964069,-0.3188195,-0.33458334,0.57019603,-0.115791656,-0.19562978],[-0.0028326493,0.5804407,1.410442,-0.28499115,0.28093004,1.6346636,-0.7038905,0.51737905,0.25173852,0.06668676,-1.1657398,0.79343003,-0.13164437,-1.4595138,-0.089708395,0.2537593,-0.105980076,0.3329512],[1.071272,-0.9638096,0.00031746196,0.07963901,0.52283543,-1.1346815,0.57982945,0.20819707,-0.23751144,0.14297311,-0.030557238,-0.51577616,-0.55872697,0.6908526,0.52733356,0.0744941,0.027328867,-0.12216176],[0.004417767,1.1576066,6.299144,-0.32635224,-1.7558908,-0.30372036,-0.066983394,0.6580024,1.0876615,1.1211929,-1.1704223,1.6710458,0.75445145,-0.87139034,-0.7181289,-1.1046274,-0.4240588,0.63390136]],"activation":"σ"},{"dense_2_W":[[0.2679174,-1.0445848,-0.8299557,-0.25635472,0.4422085,-1.1647375,0.6085093],[-0.6689395,0.39463186,0.23278524,-1.1111928,-0.74221855,0.76892823,0.35332564],[0.31055808,0.3647656,-0.02499961,-0.1409631,0.31955567,0.12277927,-0.15797752],[0.9008812,0.60631984,-0.813905,0.92170995,0.6534263,0.22818235,0.71731585],[0.230484,-0.26698533,0.08754667,0.03489466,-0.3151056,-0.47791874,0.3342572],[0.34251255,-0.7261644,-0.20441282,-0.034852047,0.36376244,-0.89967006,0.219338],[-1.1227978,-0.12817267,0.21945642,-0.8032351,0.09376713,-0.84758645,-1.0390291],[-0.15338765,-0.037509676,-1.0683689,0.50024486,-0.7426109,0.53765345,-0.37471557],[-0.17778587,-1.1523334,-0.80799854,-0.28195953,0.50175095,-1.0760622,0.46772632],[-0.86102694,0.2053753,0.3926311,-1.0105791,-0.2120155,0.7215332,-0.23412094],[-1.2708869,0.66490364,0.25874946,-0.5689588,-0.022179203,0.580645,0.002767838],[0.5473067,-0.6157128,-0.6704757,-0.57233113,-0.29838595,-0.34488145,-0.13409242],[-0.33881795,-0.022099096,-0.55139774,0.18853591,0.050985426,0.8735969,-0.35496432]],"activation":"σ","dense_2_b":[[-0.25471497],[-0.05747227],[-0.061555464],[-0.13456716],[-0.013720933],[-0.07922762],[-0.113175996],[-0.04504478],[-0.35800874],[-0.0046020667],[-0.11548371],[-0.028764911],[-0.05550412]]},{"dense_3_W":[[-0.51718456,-0.015113678,-0.5522247,-0.12137883,-0.18037502,-0.4991924,-0.188951,0.6336781,0.09542685,0.5714098,-0.14561579,0.44534728,-0.09133837],[-0.03161159,0.34381616,0.26201352,-0.41056356,-0.25490084,-0.5049834,0.5320046,-0.12673296,-0.33940148,0.4677796,0.67244035,-0.43483102,0.58558035],[0.22973408,0.5728116,-0.17393303,-0.28269792,0.5416507,0.23091814,-0.074842304,0.019422745,-0.469903,-0.22602552,-0.34416038,-0.09474743,-0.07237691]],"activation":"identity","dense_3_b":[[-0.011782462],[-0.022098923],[0.040575616]]},{"dense_4_W":[[-0.7849743,-1.266133,0.028305434]],"dense_4_b":[[0.018039817]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json deleted file mode 100755 index a981acff9e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.9360695],[1.1630229],[0.49147838],[0.04477571],[1.156402],[1.1589196],[1.1612774],[1.1484874],[1.127694],[1.0978333],[1.0665215],[0.0445643],[0.04463128],[0.044691123],[0.044780783],[0.04475211],[0.044584557],[0.044264473]],"model_test_loss":0.014142030850052834,"input_size":18,"current_date_and_time":"2023-08-12_00-18-25","input_mean":[[22.546267],[0.026984693],[0.0015847267],[-0.009265251],[0.02708977],[0.02745922],[0.027661897],[0.027764216],[0.02783128],[0.027259488],[0.02614681],[-0.009333842],[-0.009295044],[-0.009257047],[-0.009214106],[-0.009245656],[-0.009297244],[-0.009411856]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.29641],[-0.092996016],[-0.07247574],[0.01721833],[2.1956046],[-0.15631124],[-0.058797363]],"dense_1_W":[[-0.22285046,-0.1114835,-0.18068203,0.16602449,0.59281373,-1.1307124,0.4008994,-0.16000947,0.085925706,-0.29159763,-0.3772878,-0.6881549,-0.13406135,0.5206962,0.36629307,-0.19463618,0.31983083,-0.1474239],[0.016796593,-0.98549455,-1.7525299,0.3078688,0.5721632,-0.3304454,-0.06705133,-0.11118571,-0.32195482,0.3919248,0.27401718,-0.46777967,-0.48869264,0.28487942,0.6982902,-0.074734256,-0.24820116,0.16100961],[0.31042123,0.19122998,-0.12722188,-0.27483284,-0.4547291,0.8013624,-1.0190685,0.21308842,0.33060518,-0.29281816,-0.40331224,0.17957272,0.39285606,-0.25553757,-0.24935547,0.1355044,-0.06329214,0.22954762],[-0.006421214,0.37099814,0.0027769755,0.010240031,-0.80907327,1.8348622,-0.38069573,-0.056077406,-0.14080317,0.13694486,0.03138031,0.16390382,0.21113038,-0.5778241,0.0057960977,-0.032158796,0.07527852,-0.04575749],[0.3227168,-0.17621782,-0.18886027,-0.37221447,0.32229832,-0.6248933,0.40250614,-0.18772343,-0.19750184,-0.27255252,-0.2845168,-0.30223995,0.15848213,0.16786462,0.3700133,-0.02713416,0.35638666,-0.14070766],[-0.029193275,-0.95258975,-6.3443847,-0.16789156,2.1661074,-0.15078546,0.3174049,-0.41737202,-1.9191536,-0.7163877,1.5734226,-1.7942194,-0.99211544,0.3988617,1.8096817,0.71005505,0.3803724,-0.517763],[1.4648159,-0.23948996,0.29068846,0.25918722,0.6120923,-0.8601464,0.5889934,0.34411243,0.020458814,0.28458166,0.45318642,-0.5825167,0.29618037,-0.066410765,0.42480034,-0.16173336,-0.10525159,-0.2598628]],"activation":"σ"},{"dense_2_W":[[-0.37377402,0.46476626,0.5534617,-0.26033473,0.45733005,1.1248896,0.9239269],[0.80217236,-0.20218013,-0.28995574,-0.92397535,0.33133814,0.21111849,-0.052037425],[-0.39823613,-0.4600786,-0.12479944,0.7203347,-0.6923874,-0.07840685,-0.11677317],[0.13027504,-0.37647787,-0.83754325,-0.6329695,0.6788497,0.2377329,-0.10071739],[-0.4414727,-0.18732905,0.5177299,0.7144774,-0.7800902,-0.009347282,0.04816524],[1.4953467,-0.1516854,-0.7720803,-1.5129604,0.547889,-0.11141382,0.4703957],[-0.082963005,-0.12600237,0.16579789,0.060129933,0.14053828,-0.4156861,-0.032326207],[0.10354526,0.39380085,-1.0558978,-1.1450167,-0.09905039,0.7310668,-0.8474744],[0.97818476,-0.174693,-0.38756898,-0.69246876,-0.029256595,-0.36487702,0.25810534],[0.36486697,-0.3805968,-0.32210922,-0.29974073,-0.2457904,-0.078286484,0.14194314],[-0.4540887,-0.23490758,0.45732084,0.8397524,-0.59814954,0.32775092,-0.22665621],[-0.6326152,0.1386963,-0.054368168,0.29623267,0.26214838,-0.5508051,0.03455977],[0.13512251,0.15923476,0.29472926,-0.41340572,0.10075192,-0.89706355,0.01360474]],"activation":"σ","dense_2_b":[[-0.12671065],[-0.051599756],[0.053335667],[-0.119286604],[0.026706826],[-0.1761932],[-0.024956206],[-0.17874902],[-0.109204695],[-0.030811843],[0.033664174],[0.027278738],[-0.33637452]]},{"dense_3_W":[[-0.41551515,-0.6342881,-0.021494662,-0.006901076,0.6140606,-0.03595642,0.2998105,-0.035869166,0.26118553,0.42404452,0.26687363,-0.34257045,-0.006692998],[0.41666955,0.63193476,-0.5990722,0.22787261,-0.69550204,0.6494638,-0.2658041,0.2686287,0.4277496,-0.08251372,-0.6163266,-0.23402017,-0.2279805],[0.57232213,-0.0648472,-0.58796054,0.13980845,-0.745974,-0.3898328,0.4852061,0.6894071,0.31734547,0.32177705,-0.009921448,-0.5850407,0.5147919]],"activation":"identity","dense_3_b":[[0.046797086],[-0.049840048],[-0.06342088]]},{"dense_4_W":[[0.605299,-1.1554636,-0.685096]],"dense_4_b":[[0.053069614]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json deleted file mode 100755 index cde14c836c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.373858],[1.429052],[0.5426649],[0.052008856],[1.4160408],[1.4200201],[1.4230659],[1.3935287],[1.3574492],[1.3125392],[1.2667787],[0.051808108],[0.051840812],[0.051871687],[0.051805917],[0.051645547],[0.05135777],[0.050868414]],"model_test_loss":0.01654689572751522,"input_size":18,"current_date_and_time":"2023-08-12_01-38-11","input_mean":[[22.57365],[-0.10559917],[-0.0033210916],[-0.012123505],[-0.10526322],[-0.105793074],[-0.106214054],[-0.10535747],[-0.101396576],[-0.097008556],[-0.09058301],[-0.0121329045],[-0.012128961],[-0.012128141],[-0.012230474],[-0.012350836],[-0.012518174],[-0.012592093]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0777179],[0.97938883],[1.5086899],[-0.04293025],[-0.1820288],[-0.6305807],[-0.120503895]],"dense_1_W":[[-0.8936668,-0.9089122,-0.0107665425,-0.33187804,0.63021916,-1.7183859,0.12800273,-0.0100968545,0.024045149,-0.029676547,-0.34905303,-1.0929383,-0.18899661,1.343712,-0.007488287,-0.3871314,0.25819728,0.1568673],[1.5129911,0.79717666,0.022131754,0.5209565,0.4205534,-0.332852,0.6810523,0.8714592,-0.50664216,0.08871834,0.32013246,0.2844342,-0.46781865,0.17079753,0.39502883,-0.36544546,-0.25921047,-0.09649327],[0.35998663,-0.9628087,-0.0062323916,-0.17270656,0.22350977,-0.6925143,-0.13750921,-0.17138264,-0.18750982,-0.013588476,-0.21163066,-0.5151457,-0.16456504,0.12154584,0.47781697,-0.20399685,0.11707962,0.10914235],[0.004396283,0.51554716,-0.9786613,0.69308823,-0.46901524,-1.0285038,0.84607154,-1.1921532,-0.63446474,-0.06949246,1.0443338,-0.42222655,-0.1182501,0.6120174,0.3311507,0.049771998,-0.29231647,-0.24979034],[0.20238344,1.1074004,0.0024114763,-0.0062439544,-0.62287986,1.6389,-1.4840738,-0.053691912,0.08705532,0.07321774,-0.042032983,0.74493074,-0.13798285,-0.52930796,-0.29137415,0.040948115,-0.19026838,0.14882064],[0.5280113,0.27212307,0.007787733,0.15363543,0.35135317,-1.3474009,0.05997354,0.101474024,0.081706434,-0.0908575,-0.10102894,-0.45173493,-0.1977021,0.4278154,0.318782,0.060933735,0.11480374,-0.13501142],[0.0057853195,0.6303344,6.09931,0.026223302,-1.2619864,-0.51326764,-0.03881918,0.49512786,1.4146665,0.79070103,-1.2047328,0.75863904,0.08617853,0.31710652,-0.20454784,-1.32909,-0.210705,0.46263775]],"activation":"σ"},{"dense_2_W":[[0.90623915,-0.19034801,-0.108130135,0.5278633,-1.2545385,-0.12592614,-0.52437365],[0.47535196,0.016532913,0.035282977,0.13013715,-0.870746,0.85260004,0.12751696],[0.5615727,0.46776855,0.09889727,-0.10724942,-1.3574804,0.77887696,0.22862391],[-0.5160793,-1.205545,-1.2478756,-0.8897315,-0.06685275,-0.8264719,0.81887203],[0.48447967,0.9875634,0.8365766,0.21329804,-0.49966353,0.4703453,-0.593851],[0.29606903,0.6514512,0.19704497,0.6196983,-1.1678208,0.060366396,-0.45280713],[0.88284767,0.07871202,0.028610494,-0.24149852,-0.63900256,0.6064404,0.11543124],[0.25333208,0.48942828,-0.12563716,0.051205732,-0.93026,0.80623984,-0.004143445],[-0.2687049,-0.44401962,-1.024401,-0.53700495,0.5412046,-0.6765064,0.29961354],[-0.8286411,-0.43201685,-0.61702985,0.2633626,0.8428664,-0.22970653,-0.1767021],[0.28991467,0.8902969,0.07605267,-0.15893519,-0.76903087,0.4981137,-0.3236638],[0.6096544,-0.21495588,-0.91238225,0.77867436,-1.8102629,-1.2908732,-1.2738218],[-0.5399221,0.2869458,-0.20122242,-0.5448208,1.5114583,0.0075225746,0.47214413]],"activation":"σ","dense_2_b":[[-0.6210039],[-0.7338756],[-0.49544066],[-0.016957626],[0.14940451],[-0.2620403],[-0.33229533],[-0.6031841],[-0.004913182],[0.07355716],[-0.09776186],[-0.21512811],[0.17054316]]},{"dense_3_W":[[0.48983884,0.36363626,0.21502955,-0.9243558,-0.16985188,0.4922954,0.3588781,0.27590808,-0.25560167,-0.46252558,0.39927235,0.69911397,-0.67142934],[0.37070408,-0.123413324,0.18464014,-0.37953055,0.77963734,0.129906,-0.29632708,0.44859973,-0.49503464,-0.2910844,0.2119971,-0.12548667,-0.6616464],[-0.4211456,-0.061192263,0.51209587,-0.8209177,0.81541854,-0.26879197,0.40843183,-0.38219845,-0.50384146,-0.26437145,0.048634317,0.21556903,-0.61757386]],"activation":"identity","dense_3_b":[[-0.14383568],[-0.119675145],[-0.059801787]]},{"dense_4_W":[[-0.9198642,-0.18013722,-0.18726753]],"dense_4_b":[[0.12321251]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json deleted file mode 100755 index c889cb8d88..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.948574],[1.1548593],[0.53562486],[0.04142332],[1.1479245],[1.1507511],[1.1525209],[1.1366456],[1.1163762],[1.0853585],[1.0512753],[0.041254494],[0.04129291],[0.04133092],[0.041417275],[0.041405268],[0.041273605],[0.040966455]],"model_test_loss":0.01583303138613701,"input_size":18,"current_date_and_time":"2023-08-12_03-21-02","input_mean":[[22.332148],[-0.0104918955],[0.005065536],[-0.0070506595],[-0.013160345],[-0.013143605],[-0.01291947],[-0.008646495],[-0.0035904623],[0.003121308],[0.0078104283],[-0.0070844237],[-0.0070869317],[-0.007085635],[-0.007076808],[-0.0070724767],[-0.0071802554],[-0.007291667]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.8984663],[-2.0064306],[-0.15834741],[-0.15535103],[-2.6078513],[-0.8259225],[-0.36931977]],"dense_1_W":[[1.9998074,-0.5228987,-0.007837696,-0.37922895,0.2013876,0.9096955,-0.59748536,-0.48922086,-0.22898138,-0.16860367,0.4016587,0.026524307,0.41660535,0.061682027,0.01675915,-0.30379614,-0.22650504,0.31388414],[-0.70133764,-0.31426615,-0.30248472,0.44402006,0.048648655,-0.895414,0.40575865,-0.45831415,-0.31590462,-0.45891097,0.41624534,-0.114576444,-0.32526416,0.48809057,0.09747309,-0.5963326,0.14772642,0.024402922],[-1.3297249,0.20129964,-0.00036146026,0.038497657,-0.5804307,1.210312,-0.79524547,-0.021346122,-0.33560273,-0.2652577,0.30101648,-0.05918743,0.33916757,-0.09221603,-0.38487548,-0.048523333,0.1305082,0.026008023],[0.021477336,0.79985726,-0.0015464973,-0.024727628,-1.1476581,2.130608,-0.8638772,0.0654132,0.11198076,0.11908945,-0.14789096,0.3044069,-0.10925098,-0.37106133,0.018268378,0.16547772,-0.19248393,0.07397156],[-0.7169261,0.5082077,0.33950427,-0.2827534,-0.02629989,0.6695642,-0.17877822,0.435526,0.4602184,0.07237377,-0.22672322,0.29523724,0.30271506,-0.6622034,-0.18534695,0.18379785,0.17853066,-0.034246102],[1.5692992,0.20060617,-0.0087794345,0.22292043,-0.47884136,0.30518147,-0.12451496,0.5754826,-0.21691562,0.2744736,-0.279054,0.5970735,0.4481981,-0.34849948,-0.95557034,-0.4386284,-0.10558777,0.5969739],[-0.09477646,0.0028076046,6.1231327,0.08033729,-1.3894303,-0.101474024,-0.39416897,0.8766576,2.336158,0.5908453,-1.6577489,1.201268,0.18122643,-0.22435206,-0.83741874,-1.0561486,-0.29097697,0.85901344]],"activation":"σ"},{"dense_2_W":[[-0.43103984,0.57259583,-0.45353982,-0.8405737,0.23949991,-0.4028692,0.014858877],[0.73426634,0.05207242,-0.08326654,-0.18289784,0.02668798,0.6674364,1.2636756],[0.5063167,-0.07997967,-0.38297585,-0.54653513,-0.890911,-0.28915372,-0.25040558],[-0.45767108,-0.7947474,-0.98106426,-0.27605048,-0.223204,-0.26669544,0.32884514],[-0.6062595,1.2573644,-0.3091175,-0.5193278,-0.098620065,-0.22738218,-0.6608672],[0.3030579,-0.26088515,-1.2724319,-0.97036225,-0.35874432,-0.74326634,0.53469926],[-0.27986455,0.17539752,-0.7900952,-0.78699905,-0.33842587,0.22881772,0.07359398],[0.3623993,-0.53849274,0.28685072,0.22223133,0.34689447,-0.2684479,0.43466133],[0.46523356,-0.73971575,-1.0159626,-1.149454,-0.27072653,-0.8258129,0.5557078],[-0.53017086,0.72048044,-0.09883555,-0.2829141,0.04501004,0.0050941044,-0.960148],[0.04228475,-0.753709,0.51548535,0.9503595,0.9151871,0.1863079,-0.38379395],[0.20732456,0.4841701,-0.30309632,-0.6324904,-0.32458326,0.030910695,-0.62432814],[-0.414588,-0.5427142,0.07252307,0.13270381,1.1135048,0.40259692,0.40499088]],"activation":"σ","dense_2_b":[[-0.008773873],[0.053248625],[0.012098179],[-0.15198793],[0.031805143],[-0.1111416],[-0.028365295],[-0.14010914],[-0.15508862],[-0.11093824],[-0.08748234],[0.00033527156],[-0.4448109]]},{"dense_3_W":[[0.52092105,-0.5030081,0.3844592,-0.27487588,0.4706045,0.5264942,0.5090887,-0.51060134,0.5129347,0.56152797,-0.28395477,0.3204959,0.02406914],[0.01593203,0.39330208,-0.1664461,-0.33330208,-0.60746926,-0.9253926,-0.235876,0.08486243,-0.59641266,-0.583729,0.34775153,0.23688537,0.26984528],[-0.13828522,0.47288388,-0.14799266,-0.5270513,-0.20191401,-0.25410458,-0.33126354,-0.007962782,-0.09041336,-0.43510935,0.5427055,-0.25327948,0.24559122]],"activation":"identity","dense_3_b":[[-0.07803073],[-0.039414078],[0.06702688]]},{"dense_4_W":[[-0.8098712,0.37011686,0.88090986]],"dense_4_b":[[0.069430865]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B1255000x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B1255000x00x00x00x00'.json deleted file mode 100755 index 0217d51cd4..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B1255000x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.182226],[1.318108],[0.55038416],[0.04239555],[1.299573],[1.3053768],[1.310721],[1.3021369],[1.2816164],[1.2473235],[1.21014],[0.042187754],[0.042233933],[0.042278603],[0.042346247],[0.042341743],[0.042186968],[0.04189735]],"model_test_loss":0.014659138396382332,"input_size":18,"current_date_and_time":"2023-08-12_03-48-36","input_mean":[[23.368876],[-0.068378255],[0.006725546],[-0.008719376],[-0.06981951],[-0.06967088],[-0.069361694],[-0.063916035],[-0.05700445],[-0.05206913],[-0.047056135],[-0.008766596],[-0.008747308],[-0.008727638],[-0.008741792],[-0.008740139],[-0.008743794],[-0.008700719]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.07148768],[-1.2549438],[-0.12059412],[0.28853613],[0.5968914],[1.0667353],[0.060763594]],"dense_1_W":[[-0.024016947,0.84826535,7.0236993,-0.11074515,-1.0140074,-0.3385152,0.3869476,0.19172075,1.175179,0.6838961,-1.670459,1.526374,0.40274563,-0.15733598,-1.1089683,-0.61065984,-0.49152604,0.4318153],[-0.33222798,-0.9686618,0.001050462,-0.010235882,0.6520806,-2.10211,0.87924844,0.10038173,0.29654494,-0.24353155,-0.38334486,-0.46616292,-0.048904274,1.0027238,-0.324415,-0.18696539,-0.13033646,0.2411943],[-0.0034917125,0.52613735,-0.6482348,-0.2613602,-0.31058145,-0.95539135,0.74526536,-0.2220608,-0.07110724,-0.04182627,0.3254652,-0.77304727,-0.20731975,0.41823757,0.6348863,0.7838213,-0.011969447,-0.49731982],[-0.0023636539,-0.9352469,0.010787807,-0.34020036,1.1659639,-0.64832354,0.7099896,0.5089206,-0.4254998,0.33206016,0.01926688,-0.7223199,-0.3694965,0.43782136,-0.4339172,-0.22489113,-0.02471112,0.028520793],[1.4516557,-0.19518882,-0.0029764688,0.12874876,-0.98909014,0.5284616,-1.16062,0.22776824,0.089895435,-0.19509007,-0.56990606,0.7084235,-0.36520556,-0.498448,-0.059548475,0.3090115,-0.28404635,0.19958587],[0.6468036,-0.7351077,0.008596004,0.35622707,0.15142143,-0.7299676,-0.3414438,0.2833802,0.37200418,-0.32622182,-0.38793376,-0.0299215,-0.09024869,0.012755521,-0.27303815,0.07300682,-0.0782633,0.107511714],[0.0020368258,0.40920547,0.003771097,-0.2989948,-0.5958545,1.302363,-0.5710859,-0.12573288,0.14467251,0.008276177,-0.02948484,0.14001983,0.20254755,-0.68072915,-0.024878774,0.015510983,-0.0020638234,0.009023179]],"activation":"σ"},{"dense_2_W":[[0.041601215,0.24447797,0.4216046,-0.016745664,0.15380263,0.64953125,-1.5191501],[-0.39923093,-0.7630646,-0.076158375,-0.11835629,0.07851075,-0.68705547,0.38427234],[-0.8636165,-0.9983891,-0.19798958,-0.7385011,0.45974955,-0.3868112,0.79535973],[0.37583378,0.031611152,-0.033107635,-0.28120467,0.55615216,-0.03311618,-1.2747175],[0.47308478,0.6686049,0.3348913,0.04881856,-0.61745036,0.7808802,-0.66125715],[-0.3698526,0.166168,0.34443247,0.78737146,-0.22270668,0.6219827,-1.3671186],[-0.84190524,0.0076339054,-0.022591086,-0.6236704,-0.709543,-0.1443693,-0.075285174],[0.19466163,-0.26411548,-0.31579143,-0.1977254,0.022438988,-0.9939421,1.1909277],[0.25067687,0.65360653,-0.74067396,-0.17100555,0.19362506,-1.1775283,0.14330721],[-1.1357728,0.79514545,-1.0022937,-0.09116658,-1.3095479,-0.6293098,-0.13681495],[0.09452845,-0.37880635,-0.5292872,-0.386041,0.3486835,-0.056757417,0.43682256],[-1.2684631,1.433187,-0.12050286,0.46401381,-0.9219034,-0.38595304,-0.7805995],[0.54370886,-0.26546618,-0.40414193,-0.34449917,-0.46030614,-0.5862646,0.8578885]],"activation":"σ","dense_2_b":[[-0.21447611],[-0.2793929],[0.028746858],[-0.3559357],[-0.0974488],[-0.031200977],[-0.41441417],[0.04470072],[0.034972806],[-0.17655064],[0.049306504],[-0.20983955],[0.070270784]]},{"dense_3_W":[[0.28620473,0.49553362,-0.29979274,0.49239248,-0.3187128,-0.8089054,0.5728521,0.19156021,0.5760315,-0.15520339,0.63937896,-0.5519342,0.42006114],[-0.73719287,-0.10893459,0.69925296,-0.6052518,-0.18487976,-0.7727218,-0.39659286,0.65072507,0.53865,-0.36898273,0.17422022,-0.61456436,0.58988386],[-0.05938441,0.28018096,-0.3131366,-0.10477532,-0.56004566,0.48185638,-0.11083797,0.3429314,-0.25739473,0.5281356,0.32803684,-0.5822138,-0.26118425]],"activation":"identity","dense_3_b":[[0.008872742],[0.05966272],[0.06136013]]},{"dense_4_W":[[0.4281875,1.0318612,0.050216466]],"dense_4_b":[[0.027177498]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48140x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48140x00x00x00x00x00x00'.json deleted file mode 100755 index 21de46199b..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48140x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.231288],[1.2236207],[0.48384562],[0.042621814],[1.2090349],[1.213721],[1.2177045],[1.1926111],[1.1658418],[1.1279925],[1.0919241],[0.042506836],[0.04252686],[0.04254458],[0.04244013],[0.042343955],[0.042099677],[0.04176238]],"model_test_loss":0.01185668259859085,"input_size":18,"current_date_and_time":"2023-08-12_04-42-56","input_mean":[[23.357746],[0.02301448],[0.0030845709],[-0.0019251241],[0.024697196],[0.024336],[0.024798963],[0.027229987],[0.029705063],[0.028953856],[0.027455976],[-0.0019747023],[-0.0019767939],[-0.0019740309],[-0.0018473448],[-0.0018153174],[-0.0018839837],[-0.0020214282]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.007139518],[-0.36417663],[-0.22151361],[-2.2752786],[-1.842185],[-0.052370787],[0.52810186]],"dense_1_W":[[0.06463208,-0.14614256,-0.004301284,0.17093673,0.10111846,1.3639654,-0.8234353,0.039920002,-0.11260984,-0.035453953,0.19663298,0.6151078,0.32875365,-0.8119263,-0.287689,-0.23053078,-0.42119426,0.4950128],[-0.07006446,-1.9708806,-6.5331817,0.1236159,1.8130503,0.5166503,0.68799275,-0.060281184,-1.673682,-1.1404577,1.1906871,-1.2054949,-0.46952084,0.06406035,0.34139132,1.0217533,0.42528445,-0.20924324],[-0.0120092,-0.55868286,-0.43635416,0.46025708,0.59761775,-1.3045688,1.4550803,-0.6410079,-0.46044356,-0.22099674,0.6732854,-0.4678468,0.03187814,0.92614293,-0.61934835,-0.05177542,-0.28630045,0.33652946],[-0.83317536,-0.80627066,-0.10179178,0.10999726,0.019785184,-0.956369,1.0176833,0.3697496,-0.028362121,-0.059128877,-0.12437713,-0.30265445,0.27188116,0.79045576,-0.71790576,-0.34110048,-0.04529891,0.3435819],[-0.7444216,0.63491786,0.08715752,-0.054840762,-0.049226776,0.716783,-0.7838131,-0.0045873374,-0.09835043,0.1465429,0.020588161,-0.035376523,-0.03541739,-0.4995638,0.5265647,0.15362841,0.17507628,-0.338172],[-0.102648556,-0.7882426,0.038460653,0.22105083,0.10494431,-1.0060503,0.5764925,0.11352376,-0.25469536,-0.10095615,0.09101166,-0.32238397,-0.4038888,0.48288944,0.24523751,0.06623701,-0.19029224,0.039122805],[0.7842295,0.004104562,-0.034050412,-0.038287047,0.6813913,-0.9235343,1.0443885,0.6999839,-0.30497897,0.19115898,-0.084208526,-0.488823,0.45840722,0.118487336,-0.117081836,0.0810515,-0.21686175,0.02809039]],"activation":"σ"},{"dense_2_W":[[0.31191123,0.012578262,-0.073103,0.4197174,-0.39167115,-0.5860375,-0.0401353],[0.49508798,-0.73552,0.32163823,-0.13604626,-0.20699552,-0.12848318,-0.3038487],[-0.57450694,0.18396352,0.11384991,0.2159519,-0.34654605,0.02929712,-0.44482008],[0.5138877,-0.17677623,-0.5761437,-0.4093428,0.5905016,-0.5129224,-0.05200225],[-1.1020558,-0.31896916,0.23366053,1.0878744,-0.3915952,0.83413684,0.30904847],[0.6287403,-0.45615014,0.28765643,-0.43303448,0.63161,-0.87807333,-0.6236202],[-0.18465663,1.3596067,0.5464439,-0.521901,-1.4459647,0.6942117,1.1208469],[0.72724205,0.047573425,-0.7336553,0.050098203,-0.30979815,-0.030565912,-0.1010699],[0.13069697,-0.7504235,-0.31712496,-0.25702086,-0.4903785,-0.38608697,-0.8202706],[0.25118548,0.26678544,-0.015086808,-0.7808886,0.49729776,-0.9659693,-0.10936706],[-0.8416602,-0.3856989,0.39649925,0.22174147,-0.27461663,0.97619355,-0.26972875],[-1.3890435,0.42025894,-0.07396389,0.83693534,-0.43904755,0.41258448,-0.7992472],[0.36811528,-0.80290574,-0.041142356,-0.1994228,0.36623415,-0.5200105,-0.76657784]],"activation":"σ","dense_2_b":[[-0.22534604],[-0.105216384],[-0.19398747],[-0.016557224],[-0.13661896],[-0.15216051],[-0.08812248],[-0.09663603],[-0.34491262],[-0.09128825],[0.04268533],[-0.39448884],[-0.061641783]]},{"dense_3_W":[[-0.049214575,0.06255724,-0.70038843,0.6088635,0.1090371,0.6303497,-0.5964707,0.47305194,-0.16417064,0.52888405,-0.53463614,0.09932232,0.2497237],[0.08096788,-0.39710945,-0.15236828,-0.64790344,0.3642383,-0.101971485,-0.020350397,-0.35562035,-0.19162105,-0.5233594,0.49097145,0.43193904,-0.1615822],[0.3178663,0.4239579,0.2581351,0.104468025,-0.5409481,-0.05274523,-0.60230494,0.025281865,-0.17851482,0.14904647,-0.5448667,-0.57374054,0.6508731]],"activation":"identity","dense_3_b":[[-0.062227387],[0.06364925],[-0.03869293]]},{"dense_4_W":[[0.5423993,-0.964113,0.53714585]],"dense_4_b":[[-0.056707334]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48150x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48150x00x00x00x00x00x00'.json deleted file mode 100755 index f1afd48621..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48150x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.754703],[0.99583066],[0.52195853],[0.03364074],[0.9999458],[0.9983864],[0.9967491],[0.9690758],[0.9489988],[0.9172365],[0.89279425],[0.033480037],[0.03352747],[0.033564996],[0.033597305],[0.033555403],[0.03339308],[0.033234917]],"model_test_loss":0.011961689218878746,"input_size":18,"current_date_and_time":"2023-08-12_05-09-42","input_mean":[[20.5533],[0.06072723],[-0.0130017605],[0.00067336776],[0.06433451],[0.06329887],[0.062110342],[0.059719138],[0.055979628],[0.0545425],[0.050233126],[0.0008544997],[0.0008328172],[0.0008131706],[0.0008174784],[0.00082928565],[0.0009185176],[0.0011421707]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.90862113],[-0.7998115],[0.29500127],[3.5970535],[-0.12021488],[-0.008523585],[4.1502047]],"dense_1_W":[[0.16046667,-0.18488905,-0.08116255,-0.18750922,-0.16433491,-1.1152148,0.9359541,0.09028606,-0.37050682,0.02058137,0.08767959,0.07042472,-0.10593792,-0.24539731,0.65890104,0.033354606,0.08174793,-0.13008156],[5.6240082e-5,-2.0457633,0.65334374,1.5251502,-1.3088462,-2.043833,-0.04112441,-1.5476086,-1.6310064,-1.5787094,-2.5516076,-0.15880251,0.8098546,0.84737986,-0.29775852,-0.58279693,-0.109593175,0.9306553],[-0.09240735,-0.23691395,-0.08596292,-0.021863438,0.19790214,-1.3464229,0.85313654,0.04628712,-0.3389506,-0.043647792,0.18819022,-0.37191772,-0.0034588557,0.14444594,0.39095238,0.1306712,0.023204941,-0.12470221],[1.6062875,-0.14168718,0.29216757,-0.29068917,-0.10627767,0.88737196,-0.22878392,0.2706971,0.52616674,-0.1836785,0.015717065,-0.40486693,-0.34726334,0.50040615,0.47368926,0.36900276,-0.0014073849,-0.43910235],[-0.007260963,2.2485175,4.940441,-0.5364479,-1.326066,-0.22738455,-1.5765278,0.108092494,0.6156207,0.84355676,-0.3730777,0.8112125,0.3988551,-0.008641389,-0.27626094,-0.28699768,0.046848673,-0.34230638],[-0.037478976,-0.1001093,-0.0863427,-0.07570549,0.36714154,-1.8569329,0.9551398,-0.16772039,0.1527077,0.12593286,-0.19880708,-0.16723952,0.27533242,-0.15500604,0.52059233,-0.3220368,0.048995454,0.06608929],[1.8863575,-0.09598721,-0.34971088,0.59141415,0.033216525,-1.0910133,0.68912745,-0.5307834,-0.4284811,0.18438782,-0.024860496,0.19869357,0.26999107,-0.24860352,-0.6470507,-0.508486,0.0019406695,0.51603043]],"activation":"σ"},{"dense_2_W":[[-0.48650655,0.2588981,0.0312486,0.43491283,0.16748133,-0.71130973,-0.053482138],[0.27239284,0.07384157,0.1776044,-0.33170608,-0.002457442,0.7151791,0.21523637],[-0.18006818,-0.4765831,-0.6325456,-0.70129013,0.122486345,-0.1399289,-0.26494774],[-0.7057871,-0.47439024,-0.52092475,-0.1475755,0.45321676,-0.11419975,-1.1540185],[0.29741463,-0.47053236,0.84870386,-0.09420109,0.3550361,0.53206086,-0.0045715007],[-0.72433555,-0.6616255,-1.5622116,2.4680088,1.291401,-0.54468,0.7206563],[0.6961331,0.44749773,0.36611405,-0.38041288,0.3445849,-0.18433261,-0.27811208],[-0.69021624,-0.017037576,-0.67009085,-0.09356929,-0.10503188,-0.34458145,-0.02231519],[-1.0635598,-0.33353114,-0.5266894,-0.137938,0.7490435,-0.35423642,-0.99171734],[-0.21807487,0.18801044,-0.68545204,0.12370873,0.9005878,-1.0286127,-0.8563234],[0.5423448,-0.29096147,-0.018749518,-0.09780457,-0.5506883,0.46788862,-0.16100915],[0.03551326,0.2860867,0.6957025,0.21722172,-0.1966169,0.5215825,0.07507346],[-0.5746759,-0.22346315,-0.44673678,0.15813608,0.3015097,-0.40882587,-0.51104206]],"activation":"σ","dense_2_b":[[-0.024497896],[-0.07063643],[-0.19928667],[0.42064607],[-0.005411175],[0.6328674],[-0.049392886],[0.02871734],[0.3210596],[0.26861688],[-0.026878959],[-0.060387224],[-0.10667805]]},{"dense_3_W":[[0.36677212,0.55660695,-0.55313206,-0.4082663,-0.27326408,0.10608849,0.021528898,0.36427072,0.35612637,-0.26106265,-0.580114,-0.5729309,-0.44237646],[0.4771073,-0.6284979,0.4865573,0.72787654,-0.19068882,0.63529533,-0.54094064,0.422667,0.3027027,0.3450987,-0.013951826,-0.53568786,0.41296872],[-0.48427796,0.43434283,0.07578888,-0.43649468,0.40260956,0.3030044,0.14234343,-0.16904311,0.2427833,-0.6615657,0.047491975,-0.2096294,-0.08129209]],"activation":"identity","dense_3_b":[[-0.014429971],[-0.026662724],[0.013837804]]},{"dense_4_W":[[0.45206308,1.1123025,-0.31965008]],"dense_4_b":[[-0.023298338]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48241x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48241x00x00x00x00x00x00'.json deleted file mode 100755 index 07a3ab8f04..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48241x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.209049],[1.1246747],[0.46813142],[0.038223516],[1.1218573],[1.1228344],[1.1237725],[1.099323],[1.0759022],[1.0401212],[1.0056554],[0.0380946],[0.03811699],[0.038133033],[0.038103707],[0.038023833],[0.037828285],[0.037552092]],"model_test_loss":0.011310987174510956,"input_size":18,"current_date_and_time":"2023-08-12_06-10-19","input_mean":[[22.88909],[-0.028824013],[-0.013613169],[-0.010625672],[-0.024585929],[-0.025837906],[-0.02695633],[-0.033290874],[-0.035039704],[-0.03637915],[-0.034272987],[-0.010562119],[-0.0105818845],[-0.010603017],[-0.010749645],[-0.010851333],[-0.011034958],[-0.0111641]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.22523445],[-0.26343995],[-0.16324636],[-0.118881956],[-1.753483],[-0.07577936],[-1.102491]],"dense_1_W":[[0.002532067,-0.03390916,-0.003535666,-0.04854094,-0.08614675,-0.69101536,0.10960003,-0.03146945,0.24333058,0.14761123,-0.2722869,0.27474254,-0.043608457,-0.11733092,0.24542642,-0.10411576,-0.14360683,0.1711039],[-0.002566696,-0.61363703,-0.012943635,0.026450964,0.29015598,-0.71414703,0.554264,-0.037178878,0.03740144,-0.30521652,0.21204664,-0.38488153,-0.21638761,0.41673842,0.33263344,-0.15415925,0.3494084,-0.28160352],[-0.16471842,-0.31117657,0.8566729,0.29125565,0.4319235,-0.75162256,0.95838267,-0.20883378,-0.32447112,0.082446456,0.10276111,-0.49870324,-0.023855265,0.21451043,-0.006508097,0.3004852,-0.32773772,0.011747492],[-0.019952636,-1.5153528,-5.0031734,-0.09435296,1.048899,0.43409705,-0.069626406,0.32380673,-0.8917055,-0.23266096,0.83130217,-0.20197223,-0.07251639,0.20138681,0.1400577,-0.017955068,0.055563636,-0.10964311],[-0.88960624,0.66261613,-0.9217085,-0.023391634,-0.13783228,-0.78201807,0.58500487,-0.34910184,-0.41719157,0.30604267,0.020150643,0.0013851137,0.14963569,-0.0014568489,-0.15652372,0.05179874,0.043643035,0.0022867518],[-0.05010886,-1.9120406,0.16408531,-0.29981497,-0.61399275,-2.088809,-0.7970844,0.03929672,-0.0981413,-0.88908887,-0.7213265,-0.37824726,-0.072238155,0.22233075,-0.5327377,-0.12634961,-0.14507468,0.4685959],[-0.692649,0.076070726,0.835587,-0.07369687,-0.31847525,1.0514476,-0.7529806,-0.02802738,0.112416394,-0.007971444,-0.073445976,0.027493669,-0.023394028,-0.14953516,0.3462396,-0.20032988,0.013378577,-0.006742064]],"activation":"σ"},{"dense_2_W":[[0.14651315,0.65690446,-0.04113687,0.041510507,0.09703274,0.42973572,-0.19722632],[-0.16582173,-0.02892236,0.21182849,-0.07145227,0.7815606,0.6976398,-0.4521055],[-0.09238782,-0.79659176,-0.010888447,-0.64854467,-0.3640353,-0.32341737,0.94107974],[-0.31743294,-1.079859,-0.48714882,-0.31109604,-0.7076601,0.6800173,-0.3782569],[-0.029170444,-0.949289,-0.2557742,0.26696756,-0.6634111,-0.020845836,-0.13919494],[0.39409286,0.7231917,0.6616238,0.6863315,0.45207512,-0.65741384,-0.27147612],[0.9265955,0.55270416,-0.15335171,-0.21362257,0.839455,-0.20367129,-0.54616636],[1.1020366,0.52923506,0.0077937646,-0.6614574,0.1045729,0.40647596,-0.01551381],[0.8354852,0.60446924,0.24171901,0.80390596,0.08422289,-0.5756955,-0.47378206],[-0.86737347,-1.0375736,-0.7943101,0.19968024,0.34953976,-0.27134398,0.38634428],[-0.23586744,-0.90408766,-0.9303652,-0.9001962,0.604345,-0.8173552,1.2277185],[-0.0666105,-1.2101858,-0.17242567,0.21582662,-0.5084395,0.30618143,-0.61344314],[-0.7643587,-0.44565865,-0.5358139,-0.789047,0.60576195,-0.40198153,0.7971051]],"activation":"σ","dense_2_b":[[-0.30520138],[-0.2789117],[0.26295054],[0.20992225],[0.09671134],[-0.23525962],[-0.28452772],[-0.15586977],[-0.24889536],[0.2383187],[0.031573173],[-0.06746427],[-0.18409434]]},{"dense_3_W":[[0.6026086,0.52552027,0.2761912,-0.8430829,-0.66491354,0.069576606,0.08970149,0.5401842,0.24471678,-0.89263755,-0.32295918,0.13739742,-0.5061482],[-0.3305499,-0.5845312,0.7317596,0.93317604,0.087755084,0.2923734,-0.8093447,-0.6683554,-0.6317001,0.99416625,0.7963545,0.5912554,0.59245497],[0.0005086235,0.27584663,0.7916986,0.4292943,0.63182247,-0.6468668,-0.2727807,-0.35912475,-0.3197199,0.82221115,0.32133383,0.2867808,-0.08736428]],"activation":"identity","dense_3_b":[[-0.034214295],[-0.032624304],[-0.05482243]]},{"dense_4_W":[[-0.24479973,0.74612886,0.73167807]],"dense_4_b":[[-0.026686598]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48310x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48310x00x00x00x00x00x00'.json deleted file mode 100755 index 191731833f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48310x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.603247],[1.3767333],[0.4454295],[0.045631606],[1.3678387],[1.370781],[1.3725109],[1.3436831],[1.311338],[1.2674466],[1.2208972],[0.045455445],[0.045487784],[0.045517508],[0.045482583],[0.045399908],[0.045213446],[0.04482382]],"model_test_loss":0.013772002421319485,"input_size":18,"current_date_and_time":"2023-08-12_06-42-21","input_mean":[[23.356035],[0.011589931],[-0.015715389],[-0.0022615397],[0.015798328],[0.014719816],[0.013118888],[0.009267011],[0.008420342],[0.008507399],[0.009309166],[-0.0022847306],[-0.0022728958],[-0.002267876],[-0.0022721845],[-0.00230573],[-0.0023624457],[-0.0024641412]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.88219327],[-0.05723061],[-0.059791878],[1.4932584],[-0.0350319],[-0.84323514],[0.2996949]],"dense_1_W":[[0.15552013,0.68498236,-0.004401782,0.06613787,-0.3138051,0.9909178,-0.4801728,0.27251762,-3.9911305e-5,0.14424084,0.029309403,0.041476194,0.5599982,-0.5216308,-0.12916003,-0.17854483,0.036074255,0.11677919],[-0.0082084965,-0.53576446,0.0034336871,0.36242324,0.07065764,-1.0044807,0.7644967,0.048346102,-0.28757718,0.05818398,0.0812672,-0.42089686,0.18758625,0.326259,0.5879358,-0.09024579,0.026588196,-0.027274309],[-0.030504204,0.94661164,1.4692297,-0.14969598,0.0024379326,0.62712175,-0.19334361,0.30215573,0.34021494,-0.14773123,-0.9896913,0.8398936,0.06587321,-0.62592477,-0.17010672,-0.34911457,0.26831692,0.1246808],[0.53607357,-0.8794676,0.0014746991,0.35912958,0.35449198,-1.2205513,0.5645118,-0.12328942,0.09299552,-0.07820418,-0.16524789,-0.18727893,-0.30706224,0.03244261,0.17126645,0.03033496,0.062598415,-0.15945143],[-0.29806733,0.62810147,0.016662166,0.04787856,-0.2178898,1.0717077,-0.58408093,0.038249463,0.055414878,-0.16181065,0.2520098,0.14243068,0.2880338,-0.34465408,0.011317232,-0.11930281,-0.32691225,0.30142125],[-0.09203294,1.0721633,5.374889,-0.26402676,-0.21183757,-0.18999156,-0.1049094,-0.13156429,0.3925089,0.41511986,-0.6934615,0.86322796,0.7660964,-0.3449572,-0.41987318,-0.61497223,-0.21786183,-0.13827488],[1.0558003,-0.15531835,-0.014700998,-0.15400389,-0.17445247,0.19957963,-0.7788509,-0.66680443,0.4196881,0.10506768,-0.30046782,-0.113978475,0.022458427,-0.07436751,-0.24094073,0.5980271,0.49674785,-0.5393424]],"activation":"σ"},{"dense_2_W":[[-0.5135834,-0.25661662,-0.026235756,0.030436503,-0.17369603,-1.7777263,-2.4461317],[-0.7826742,0.5919605,-0.203896,1.0301571,-0.49202737,0.30388182,-0.3286326],[-1.4934103,0.1125834,-0.784764,0.10120618,-0.73634833,-0.33474493,-0.51051533],[-0.08085624,-0.5157619,-0.61287373,-0.03598703,-0.13013026,-0.73116446,-0.6332094],[-0.15480644,-0.52027535,-0.43745804,-0.22571458,-0.59228283,0.22646776,-0.22388498],[-0.17604452,-0.18500611,0.50142026,-0.56830126,0.6879626,-0.08546103,0.09753222],[0.45385736,-0.1853672,0.5049051,-0.46082744,0.15115426,-0.3264805,0.27134734],[0.62699825,-0.23365812,-0.12801227,-0.66903687,0.5545601,0.15332852,0.32462138],[-0.107537225,-0.56420654,-0.6508188,0.30347762,0.0477495,-0.41004136,-0.012734894],[-0.19092843,0.54952693,-0.26207697,1.156082,-0.55869824,-0.2928665,0.26659483],[-0.55371886,0.43837482,0.24519897,0.20218645,-1.3142209,-0.4187609,-0.051204197],[-0.9921039,0.17509715,-0.047123123,0.009096356,-0.22319628,-1.7375966,-1.591449],[-2.3417017,-0.10801021,-0.026163574,0.3812512,-1.0870538,-0.819271,-0.7919683]],"activation":"σ","dense_2_b":[[0.3518073],[0.1122314],[-0.0118162315],[-0.2725371],[-0.24143407],[-0.04301829],[-0.037871398],[-0.043535873],[-0.077412814],[-0.016384799],[-0.030182287],[0.060030468],[0.27441582]]},{"dense_3_W":[[0.36764717,0.59455025,-0.26633954,0.55135894,-0.080566764,-0.058451932,0.34915563,0.37275517,0.4936895,0.0741616,0.30454972,0.37950292,0.40615684],[-0.6196921,-0.63125026,-0.48607326,0.026073568,-0.23994817,0.6612403,0.665946,0.624512,0.58777785,-0.47118247,-0.4825106,-0.5355161,-0.5683991],[0.32227254,0.10172928,0.0020228538,0.5071577,0.21635775,0.53688926,0.2714474,0.60069305,-0.26110378,-0.20226555,0.41789976,0.5308405,0.3238944]],"activation":"identity","dense_3_b":[[-0.04775693],[0.03200255],[0.023321353]]},{"dense_4_W":[[-0.6651373,1.1393598,0.5636013]],"dense_4_b":[[0.03244566]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48320x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48320x00x00x00x00x00x00'.json deleted file mode 100755 index 214f8be518..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48320x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.5644407],[0.8395695],[0.34483072],[0.038255572],[0.8326137],[0.8354024],[0.8375865],[0.8230707],[0.8024709],[0.77293986],[0.74346644],[0.03822754],[0.03823464],[0.038251538],[0.038143624],[0.03792401],[0.037752647],[0.03757457]],"model_test_loss":0.012391784228384495,"input_size":18,"current_date_and_time":"2023-08-12_07-07-38","input_mean":[[22.189064],[0.013319887],[0.004920282],[-0.013327403],[0.01110264],[0.011794839],[0.012627523],[0.014629398],[0.0158066],[0.0182441],[0.021402285],[-0.013237113],[-0.013275518],[-0.013312367],[-0.013382163],[-0.013264392],[-0.012985241],[-0.012600721]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.26434997],[-0.79208225],[-0.20664789],[0.013472025],[-0.39775062],[-0.83568007],[0.18677552]],"dense_1_W":[[0.34441796,-0.52539915,0.011351737,-0.0031063606,0.538754,-0.41478962,0.5309099,-0.49093226,-0.122121654,0.17211112,0.031722955,-0.049942363,-0.45295808,0.44230676,0.2298436,0.07178071,-0.19289836,0.0064287023],[1.1373345,0.30843458,0.06299667,0.29950574,-0.0838057,0.4998327,-0.2954441,0.07530557,-0.09903502,-0.3212128,0.0950906,-0.30354694,0.05237616,0.38115606,-0.29169688,-0.02946208,-0.23857956,0.18285783],[0.08874039,-0.36663172,-0.0022011884,0.042667914,0.25671524,-0.9374695,0.76006675,-0.13235554,0.3273898,-0.3046668,0.061351378,-0.16451104,-0.04971849,0.28689685,-0.10612716,0.091517314,-0.094520494,0.022685707],[0.060418982,-0.1157775,0.0033044387,-0.53267866,-0.3576781,1.0214648,-0.7689731,-0.088864565,0.5304823,0.36398104,-0.32102284,0.25985885,0.12955877,0.118082896,-0.41932943,0.5984563,-0.34898463,0.16819601],[-0.35258323,-0.2083451,0.0007432207,-0.19166562,0.53556216,-0.7179964,0.17767152,-0.19613978,0.014983063,0.1352932,-0.07252017,-0.049061526,-0.22725205,0.5097105,0.092519365,-0.052805327,-0.086677946,0.050957207],[1.1484965,-0.36967862,-0.059478328,-0.46070608,0.3855522,-0.77252835,0.12642105,0.28179643,0.06333251,0.08696457,0.012441664,-0.17870833,0.13207336,-0.3562681,0.39463803,0.7484561,0.21307406,-0.5399646],[-0.005871693,1.2971369,4.596029,-0.7689503,-0.85900676,0.2098196,-0.21946974,0.10207684,0.7080346,0.19166191,-1.1770563,0.31363365,0.35723364,0.23915814,0.012657947,-0.18623129,-0.03445843,-0.17965348]],"activation":"σ"},{"dense_2_W":[[-0.3623736,-0.41845292,0.15554701,0.52873987,-0.33623168,-0.109475665,0.1650474],[0.20129873,-0.17509207,0.6367557,-0.022217795,0.6520106,-0.06378363,0.37632793],[-0.02613163,0.6422942,-0.08672158,-0.018176718,-0.5885163,-0.41947407,-0.44015065],[0.06876831,0.2672296,-0.10011656,0.8271233,-0.14820686,-0.08494413,0.034133013],[0.5603243,-0.41052374,0.6464844,-0.7759632,0.13104425,0.6245838,-0.25918558],[0.24931118,-0.72889996,0.60138255,-0.7174911,0.44678172,-0.37861496,-0.6592254],[-0.2587339,0.14566004,-0.7437367,0.41833475,0.11803848,-0.119959645,0.13896635],[0.030275445,0.44386005,0.03581493,0.3722496,-0.7559753,-0.24718514,-0.5880272],[-0.16906022,0.14654645,-0.18917269,-0.5889206,0.30467245,-0.17858168,-0.2796732],[-0.7495855,-0.4666009,-0.668737,0.4311893,-0.3495553,-0.7319314,0.51790726],[-0.89682776,-0.011368982,-0.13440222,-0.12547427,-0.5925041,-0.63063765,0.40521654],[0.90010816,-0.44593993,0.4698638,-0.30274037,0.24248902,0.9315232,-0.4489031],[0.11560195,-0.4628338,-0.63196105,-0.2325408,0.10829967,0.08619985,-0.3691465]],"activation":"σ","dense_2_b":[[-0.09398416],[-0.16811661],[0.0034526016],[0.02302207],[-0.02017339],[-0.18555853],[0.007355943],[-0.012509794],[-0.15630287],[-0.059829053],[-0.22280535],[-0.104731545],[-0.05920679]]},{"dense_3_W":[[0.27258593,0.23565869,-0.3472996,-0.4951552,0.5607892,0.62477237,-0.26927564,-0.54649544,0.28152058,-0.48925486,-0.0038740942,0.41033503,0.5219135],[-0.044915594,-0.13625428,0.14908999,0.50632745,-0.36696005,0.5478251,-0.1786471,-0.3696246,-0.67396617,-0.04566228,-0.30607444,0.009878186,-0.5257712],[-0.45755082,0.5034456,-0.3199554,-0.06326751,0.6669257,0.49097896,-0.5270685,-0.15877146,0.44582334,-0.7103173,-0.2027269,0.0686523,-0.49046502]],"activation":"identity","dense_3_b":[[-0.062416617],[-0.03785598],[-0.053617734]]},{"dense_4_W":[[-1.1007901,-0.35901657,-0.90650785]],"dense_4_b":[[0.058452934]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48400x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48400x00x00x00x00x00x00'.json deleted file mode 100755 index b84d1cc4f8..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48400x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.76261],[0.93215835],[0.425047],[0.03367151],[0.93245465],[0.93255615],[0.9317443],[0.9169954],[0.90578634],[0.890775],[0.87333876],[0.033522148],[0.033568572],[0.03361294],[0.03370465],[0.03366217],[0.033505887],[0.033300173]],"model_test_loss":0.009005936793982983,"input_size":18,"current_date_and_time":"2023-08-12_07-32-45","input_mean":[[23.330957],[0.031854257],[-0.016394153],[-0.010512169],[0.038015034],[0.037232615],[0.035574514],[0.029611548],[0.02562595],[0.019023875],[0.017404461],[-0.0105256],[-0.010525036],[-0.0105359815],[-0.010630796],[-0.010722013],[-0.010881347],[-0.011070561]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-5.0810957],[0.1603531],[-0.049640577],[5.2707887],[0.67574877],[0.1516555],[0.15765585]],"dense_1_W":[[-2.0682428,0.13633108,0.13491328,-0.36039838,0.43495807,0.68475527,-1.6714412,0.47828165,0.109744266,-0.026151523,0.72647053,-0.47452134,0.06982296,0.3297403,0.17760237,0.58767045,-0.21541646,-0.16653578],[-0.008568287,0.12206914,0.23071772,-0.102156624,-0.500583,1.8274449,-1.554223,0.340697,0.109655045,-0.18670748,-0.23404415,0.2656916,0.5948071,-0.46532926,-0.4009976,-0.39237484,-0.07123574,-0.010524451],[-0.0031924327,-0.62425506,-0.046601616,0.2168617,0.50812894,-1.6562872,0.9460569,0.13316472,-0.15056206,-0.15252529,0.14638653,-0.41414198,0.07276244,0.22266257,-0.15308774,-0.034698598,0.16347538,-0.050810855],[2.125994,0.39522022,0.1382072,-0.10945463,0.44430417,0.8159377,-2.1067505,0.37659898,0.11375099,0.35729685,0.5010697,-0.08696807,-0.36882088,0.1198089,0.24507992,0.24288763,0.26632097,-0.35650986],[-0.029398045,-0.75224733,0.8366512,-0.48501256,0.4163101,0.41848388,1.2642128,-0.53183347,-0.69976854,-0.6898771,-0.12976366,0.07133254,-0.26144692,0.38537222,-0.32685757,-0.23447362,-0.6981122,-1.0000134],[0.00065578264,0.609174,0.0046034064,-0.31727758,-0.15922506,0.9975659,-0.3816561,0.1362802,-0.30854115,0.085538454,0.09641526,0.15830934,0.38728058,-0.4841558,-0.4591731,-0.06406144,0.047263924,0.30575022],[0.0008388964,-1.4820985,-3.707669,0.069603644,3.1635418,-0.36718917,-0.4799769,-0.13187854,-2.1920686,0.1677239,0.9062365,-1.1247116,-0.34561667,0.36416775,0.48867264,0.6879564,0.30840775,-0.39429164]],"activation":"σ"},{"dense_2_W":[[0.2973958,0.08332646,-0.3467805,0.23699734,-0.5854178,-0.129308,-0.43418685],[-0.36580157,-0.3235827,-0.016993066,0.10935744,-0.049958985,-0.5979773,0.03689173],[-0.28405172,-0.45268708,0.4789435,-0.29643363,-0.24837038,0.3182004,0.115557075],[0.15464418,0.46542335,-1.0709205,1.0785366,-0.14720912,0.6205811,-0.8320102],[-0.10603755,-0.22647086,0.28111154,-0.55486935,0.17641152,-0.49721366,-0.09488447],[0.62766623,-0.20216012,-1.2113202,0.7469767,0.067126594,0.47500092,-0.15576144],[-0.49403727,-0.49650237,0.6379596,-0.0013690102,0.39851728,-0.38198105,0.34440374],[-0.35230166,-0.22415853,0.4071291,-0.5434958,0.010856588,-0.33139396,-0.07433657],[0.5740357,-0.03681304,-0.8333273,-0.15300135,-0.014365716,-0.36107722,-0.29574242],[1.0023674,0.22067322,-1.0635573,0.4620926,-0.38083276,0.2977076,-0.30534083],[1.5357183,0.21400538,-1.2476741,-0.5011329,0.20616063,0.50831836,-0.44240168],[-0.22830233,-0.047964964,0.6109007,-0.2337184,-0.4955921,0.11622925,-0.103081025],[0.22968316,0.37905967,-0.1994602,0.5001487,-0.16496213,-0.06584811,-0.18063226]],"activation":"σ","dense_2_b":[[-0.009041046],[-0.2510398],[-0.019130033],[-0.015723245],[0.114224665],[-0.25378084],[0.049713876],[0.14150867],[-0.29484767],[-0.20610979],[-0.49759024],[0.01332179],[-0.057279114]]},{"dense_3_W":[[-0.4027402,-0.60708517,-0.5284704,0.5859432,-0.6416008,0.10952159,-0.1184989,0.03421147,-0.29945162,-0.020218438,0.061756372,-0.5574928,0.31008488],[0.033894606,-0.41223776,0.17423983,0.18949471,0.5258869,-0.33833903,0.17779568,0.4694829,-0.47503108,-0.70289963,-0.48349223,0.21150771,-0.30218485],[0.10131618,0.10130477,-0.11519296,-0.5324584,0.28956762,-0.24111281,0.6044179,0.20313828,0.15558045,-0.2360581,0.09277952,-0.17545496,-0.5429789]],"activation":"identity","dense_3_b":[[-0.033029158],[0.045226328],[0.04225117]]},{"dense_4_W":[[0.6470691,-0.9522123,-0.9472077]],"dense_4_b":[[-0.041427232]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018 b'8965B48160x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018 b'8965B48160x00x00x00x00x00x00'.json deleted file mode 100755 index e8006d9259..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018 b'8965B48160x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.447082],[1.3057796],[0.54874927],[0.045618646],[1.3064655],[1.3057723],[1.3055998],[1.2616607],[1.2238507],[1.1785189],[1.1370367],[0.045534577],[0.04553703],[0.04553903],[0.045388177],[0.045190737],[0.044918988],[0.04458369]],"model_test_loss":0.01316243689507246,"input_size":18,"current_date_and_time":"2023-08-12_08-27-45","input_mean":[[23.570164],[0.036853246],[-0.016496139],[-0.0010369287],[0.042531505],[0.041598342],[0.04004992],[0.035041444],[0.029833477],[0.026067143],[0.021290474],[-0.0010061035],[-0.0009948352],[-0.0009900935],[-0.0009686471],[-0.0009951665],[-0.001064114],[-0.0012318792]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-5.0845885],[0.1004176],[0.00013673597],[5.0672097],[0.16392848],[-0.0016507725],[0.03163203]],"dense_1_W":[[-2.194229,-0.9903979,-0.08080573,0.6365177,-0.016596766,-0.57292145,0.71629894,-0.13917753,0.10558334,0.048379973,-0.37905106,-0.37705103,0.008995534,0.26333934,-0.5870924,-0.014787129,-0.07076682,0.115287304],[-0.017660985,-1.7817364,-7.0660744,0.32349348,0.58495885,0.08818791,0.327425,-0.26258895,-1.0716436,-0.24204725,1.3435555,-0.4196861,-0.3284182,-0.5121312,0.5085909,0.29486054,0.47518936,-0.09737066],[-0.0020460926,0.5839157,-0.4102708,0.33361316,-0.19995423,-1.8766894,1.8676817,-0.6156362,-0.20390484,0.05773844,0.5775369,-0.69629824,-0.48964554,0.76413906,0.17794818,0.013914604,0.26574284,-0.35397956],[2.238539,-1.285662,-0.077533774,0.45735472,-0.15934312,-0.3347021,0.7057036,0.13443239,0.046269502,0.031148197,-0.40138546,-0.3106728,-0.22145422,0.705411,-0.5908254,-0.1697941,-0.099797,0.21151316],[0.0072099357,-1.0319359,-5.8044977,-0.012008662,2.721464,0.9949136,2.1362736,0.755109,-2.9483802,-2.687557,-0.21047898,-0.6913134,-0.46375927,-0.08410903,1.2371743,0.34849486,0.1389388,-0.11194528],[-0.001468309,0.71179956,-0.016407752,0.2380162,-0.59478456,1.7276148,-0.7567721,-0.15031393,-0.0544795,0.07924978,0.074758366,0.3384667,0.1260156,-0.73387,-0.12542778,0.035354953,-0.08498558,0.11839043],[-0.0067242286,0.7752038,-0.015802715,-0.2522099,0.18704206,1.0989213,-0.8221326,-0.1619869,0.36667046,-0.08953081,0.07729341,0.3080005,0.32241634,-0.6751567,-0.08914714,-0.25339732,0.11973354,-0.11458613]],"activation":"σ"},{"dense_2_W":[[0.48777774,0.16780007,0.506049,0.06149719,0.02641481,-0.15557353,-0.47309208],[-0.033767972,-0.22800188,0.3801882,-0.4038235,-0.018416025,0.48671988,-0.1726016],[1.3997426,-0.2836853,0.50399095,0.7228087,0.17250279,-1.1006094,-1.036102],[1.5827407,-0.52164584,0.44014573,1.500202,0.24160044,-1.3031888,-1.155962],[0.9090004,-0.22377129,-0.16544203,0.5805136,0.10938864,-1.071583,-0.36718455],[0.20949104,-0.15260668,-0.35395786,0.16198182,-0.26443386,0.1544654,0.30052176],[0.35954893,0.04215935,0.6288832,0.16029716,0.19912098,-1.1470475,-0.41342846],[-0.27078894,-0.22278617,0.28234375,0.17605774,0.060802832,0.1927992,-0.18586269],[-0.4729232,0.128256,-0.29198325,-0.63878536,0.11258722,0.7476101,0.41813225],[-0.38154852,-0.3791316,-0.5129751,0.013876141,0.11724782,0.6680124,0.40538806],[-0.31103176,-0.5047606,0.33748698,0.095529206,0.18596448,0.45894697,0.30854413],[0.11049385,0.3211236,0.30543202,0.6428709,0.14853697,-0.68060184,-0.22545667],[0.3577858,-0.05270775,-0.24674627,-0.62481797,-0.5663065,0.27451596,-0.25037414]],"activation":"σ","dense_2_b":[[-0.13820776],[-0.044455525],[-0.25503334],[-0.22968425],[-0.19087854],[-0.011678218],[-0.18331416],[0.006042763],[-0.007903232],[-0.012231933],[-0.008202675],[-0.1534127],[0.04731731]]},{"dense_3_W":[[-0.10723448,-0.34210286,-0.03438066,0.37535432,-0.0108004445,-0.6269137,-0.068967775,0.31058553,-0.65623224,-0.31572104,-0.39706936,0.3712482,-0.41853353],[-0.5804139,-0.04486996,-0.049920645,0.46066716,0.3930726,-0.25964186,-0.04363731,0.49404967,-0.013849256,0.4068667,0.38286507,-0.24872099,0.65286624],[0.57707745,0.17859071,0.51623523,0.37261355,0.4789657,-0.0021774643,0.6602461,-0.38525575,-0.35309088,-0.00086821883,-0.062653214,0.57291704,0.00911787]],"activation":"identity","dense_3_b":[[-0.029123915],[0.023471655],[-0.04527022]]},{"dense_4_W":[[-1.0457256,0.43828797,-1.1001852]],"dense_4_b":[[0.033784293]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018.json deleted file mode 100755 index 52a019b0b1..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.446532],[1.305604],[0.54480565],[0.045578297],[1.3061355],[1.3057326],[1.3058693],[1.2597163],[1.2224401],[1.1767526],[1.1361469],[0.045510642],[0.04551679],[0.04551409],[0.045335952],[0.04515042],[0.04486992],[0.044565506]],"model_test_loss":0.013752324506640434,"input_size":18,"current_date_and_time":"2023-08-12_08-00-18","input_mean":[[23.569853],[0.03672725],[-0.020106794],[-0.0010078558],[0.04061277],[0.039911255],[0.03890138],[0.03328521],[0.027936308],[0.023301033],[0.021146066],[-0.0010234776],[-0.0010079038],[-0.000997834],[-0.0009388888],[-0.001006094],[-0.00110449],[-0.0012551269]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.775717],[-1.5074123],[0.03396842],[-0.21671481],[0.0462703],[0.8037427],[-0.052228786]],"dense_1_W":[[0.9219134,-0.5559626,-0.21603523,0.24129556,0.10209199,-1.0011351,0.5424733,-0.5449639,0.050155614,0.22614123,-0.004761036,-0.55282843,0.41325715,0.0022247569,0.044411074,-0.09423209,-0.10117545,0.04368109],[-0.7283206,-0.35355893,-0.16045861,0.25857133,-0.24542835,-0.62773067,0.48699424,-0.3978315,0.16402064,0.11644162,-0.05423804,-0.15727901,-0.1769678,0.16871296,-0.017148495,-0.1356121,0.12889557,-0.06923812],[0.031175813,1.3461481,-0.05207552,-0.13424256,0.15673165,1.1298523,-0.54824036,-0.16689743,0.049443748,-0.016901892,0.20333812,0.5619182,0.006826116,-0.6597064,-0.026180983,0.22729635,0.2584868,-0.2113748],[0.5795566,0.67358404,-6.977969,0.058563557,-0.29574206,0.5823302,-0.24030899,-0.2995381,-0.26924467,-0.081547186,-0.5541594,0.16588,0.15840445,-0.7864141,0.40154028,-0.2373318,-0.24145977,0.61007404],[-0.009848546,0.30045143,0.029503373,-0.27351668,0.11376449,1.6821749,-1.2038943,-0.049892105,0.37281117,0.18173723,-0.16429949,0.35660785,0.22832245,-0.4506436,-0.23757456,-0.32164904,-0.053110283,0.12267799],[1.3934647,0.36499634,0.26312694,-0.432766,0.75987923,-0.74437225,0.8091179,0.6067964,-0.2472178,0.10360785,-0.13620545,-0.34767386,-0.16454501,0.5357987,0.62150854,-0.05545808,0.010435748,-0.17039369],[0.20956095,-1.419724,-6.043722,0.29923502,0.8952572,0.09468286,1.1705585,0.08298218,-0.94001234,-0.7296266,0.37193263,-0.7382738,-0.4084395,0.52171934,0.029654104,0.22694133,0.35117772,-0.11566992]],"activation":"σ"},{"dense_2_W":[[0.93649673,0.50793236,-0.6459632,0.14732611,-0.31413737,0.24595617,0.5410845],[-0.147114,-0.36361343,-0.09407195,0.02937175,0.22865185,0.1751995,-0.9527202],[-0.7733485,0.011140345,0.23013693,-0.34375155,-0.19983934,-1.170109,-0.9463034],[-0.27665538,-0.39627838,0.51849717,-0.1559539,0.023949604,-0.90093136,-0.9847508],[0.10923114,1.0428375,0.10153842,-0.20655255,-0.99642473,0.0155226635,0.39040205],[-0.7608344,-0.741681,0.61714303,0.29961175,0.40194076,-0.6485538,-0.37572783],[0.06267869,1.0860785,-0.8247702,-0.24703546,-0.5712135,0.2198229,0.5468893],[0.9322532,0.8754985,-0.3895632,-0.72363174,-1.1679527,0.24966148,0.2579374],[0.1763633,-0.5714968,0.6868805,-0.06384768,0.5371141,0.2615531,-0.46435195],[-0.02702668,1.2335556,-0.27594045,-0.05924885,-0.87853885,0.3753951,-0.05063993],[-0.6255276,-0.8581678,0.021257112,0.43066528,0.77454144,-0.020291625,-0.6967373],[0.83754885,0.4857429,-0.050797034,-0.6029118,-1.0627534,0.080022566,0.92563975],[-0.09895578,-1.0526363,0.6905131,0.26684704,0.83103323,-0.55075085,-0.45172825]],"activation":"σ","dense_2_b":[[-0.19245008],[-0.3300925],[-0.017551435],[0.0553758],[-0.2694437],[-0.05464509],[-0.6291996],[-0.030519193],[0.07915488],[-0.22345226],[0.13039747],[-0.10993277],[0.18852183]]},{"dense_3_W":[[0.11073112,-0.533201,0.62755555,0.30198997,0.19470435,-0.51550233,0.43695763,-0.607277,0.5566251,-0.6911583,-0.36105812,0.12090485,0.41196087],[-0.35777438,0.18036212,0.36846223,0.24149348,-0.47303873,0.40955707,-0.50227696,-0.6546859,0.24461997,-0.3516048,0.58416516,-0.115509026,0.5594079],[-0.31891224,0.0019296159,0.70591456,0.27569255,-0.6370788,0.18638003,-0.031307057,-0.28519005,0.49748984,-0.3436976,0.7751193,-0.62876755,0.75629675]],"activation":"identity","dense_3_b":[[0.00038296377],[0.055723432],[0.018070834]]},{"dense_4_W":[[0.011774748,0.8155508,0.383835]],"dense_4_b":[[0.05629205]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48241x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48241x00x00x00x00x00x00'.json deleted file mode 100755 index 35099b6ea8..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48241x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.00827],[1.1619883],[0.4412975],[0.04544336],[1.1478776],[1.1518719],[1.1561376],[1.1453321],[1.1250126],[1.0930616],[1.0567293],[0.045202393],[0.04525232],[0.045298003],[0.045285065],[0.045152135],[0.044884894],[0.044592474]],"model_test_loss":0.009325500577688217,"input_size":18,"current_date_and_time":"2023-08-12_09-31-17","input_mean":[[22.791122],[-0.042878833],[-0.011877181],[-0.014597569],[-0.035545684],[-0.03717921],[-0.03862496],[-0.038736913],[-0.03762687],[-0.03448324],[-0.028882926],[-0.014555443],[-0.014538738],[-0.014526647],[-0.014420466],[-0.014331951],[-0.014239206],[-0.014240208]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.11822516],[0.0008828471],[-1.0862342],[-0.18366772],[0.385106],[0.7609392],[-1.4512328]],"dense_1_W":[[1.1565036,-0.47999045,-0.64334595,-0.046866857,-0.2571887,0.5431218,-0.90600425,-0.015227577,0.6074154,0.2966983,-0.3288622,0.35351965,-0.105130196,0.014889756,-0.2885607,0.062367395,-0.0416696,0.19297217],[0.00013613896,1.1544919,5.8863997,-0.063363396,-0.9809145,0.28564644,0.35597575,0.155261,0.3324481,0.33633226,-1.2474326,0.6385195,-0.11791013,-0.054307703,-0.67459035,-0.1379244,0.102973334,0.19569656],[-0.06969047,0.12243385,-0.0019499671,0.39603442,0.30784214,0.31830847,-0.15033488,0.33314312,0.054290332,-0.028862095,0.027961347,0.2477672,-0.12936744,-0.09928604,-0.74599934,0.26326394,-0.22953305,0.12559183],[-0.02875901,-0.66695607,-0.005256191,-0.06915698,0.43517417,-1.1354989,0.80874676,0.1404699,-0.16011457,-0.005997933,0.033535052,-0.2592826,-0.2594959,0.2704396,0.34614062,0.2440052,0.0562286,-0.21780711],[0.9463859,0.18438934,-0.5292463,0.14852741,0.32597074,-1.031986,0.22700587,-0.24131732,0.20941843,-0.1038609,0.082350604,0.020917263,-0.022982072,-0.06515789,0.07043909,-0.07168746,-0.05299607,0.10198203],[0.0038015677,0.46421862,-0.011183879,-0.101370975,-0.031247087,0.8092469,-0.35475132,0.18806289,-0.1415783,-0.07569947,0.14818926,0.6507605,-0.0435432,-0.57430553,-0.28939062,0.19110921,0.07659029,-0.08136513],[-0.77969193,0.41833523,-0.5825853,0.06571391,-0.036265094,-0.7098911,0.27432096,-0.21149854,-0.14941117,-0.10727135,0.20307949,0.2624021,-0.30541962,0.34553188,-0.38883,-0.16372426,0.28227317,0.046450898]],"activation":"σ"},{"dense_2_W":[[-0.1928296,0.32115498,0.20930864,0.5611469,0.19011536,-0.26645315,-0.17603545],[0.166902,-0.16892958,-0.6638914,0.15825053,0.21120141,-0.748163,0.474334],[-0.1116566,-0.043712437,-0.25810665,0.7776559,0.30960482,0.045773234,0.3270671],[-0.10762828,-0.5864748,-0.28898096,0.15144639,-0.4097048,-0.24713844,0.018743742],[0.6269138,0.2670387,0.51526284,-0.38287458,-0.12963958,0.5141082,-0.16934894],[0.60643613,0.5065733,0.51206255,-0.8444096,-0.23755147,0.9865407,-0.66474754],[0.39914343,-0.31481522,-0.15519524,0.9308352,0.08094447,-0.563002,-0.39392495],[-0.62913185,0.13864003,-0.4409571,1.048762,0.6268857,-0.20228775,-0.062061056],[0.5582918,-0.37558815,0.8273307,-1.1066164,-0.3901795,0.70115936,-0.42085156],[-0.7219747,1.0324795,0.5925977,-0.7950196,-1.1894366,-0.35266805,-0.08333824],[0.17714527,0.035280515,-0.5560802,0.25969428,0.37214068,-0.70087725,-0.007387615],[0.45798004,-0.23500519,0.7236357,-0.7572892,-0.77434045,0.5295288,0.0067519485],[0.12378485,-0.26742935,-0.19959643,0.79587483,0.08676472,0.19069159,0.17077966]],"activation":"σ","dense_2_b":[[-0.023296025],[-0.062371153],[-0.08753547],[-0.012299448],[-0.12436653],[0.12464757],[0.051917683],[-0.044311624],[-0.08723197],[-0.22925796],[-0.037951283],[-0.031904783],[-0.029043172]]},{"dense_3_W":[[0.266644,-0.09708873,0.36481127,-0.3777422,0.34096837,-0.02927695,-0.01537932,-0.24403723,0.71203685,0.10868033,0.3864008,0.357262,-0.061952867],[0.21862133,0.09851822,0.21582417,0.22255906,-0.43100807,-0.68686426,0.00410916,0.4358678,-0.2271849,-0.73627913,0.66998297,0.072033614,0.08977202],[0.44470266,0.32145885,0.62044615,0.21872145,-0.17952862,-0.5809358,0.5550113,0.033751376,-0.20690925,0.011282066,0.040129244,-0.62126046,0.37573385]],"activation":"identity","dense_3_b":[[-0.061297435],[0.035920873],[0.030181145]]},{"dense_4_W":[[0.4694328,-0.89785147,-0.7038385]],"dense_4_b":[[-0.036924034]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48310x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48310x00x00x00x00x00x00'.json deleted file mode 100755 index e15c8a24d9..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48310x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.133618],[1.4129014],[0.44969133],[0.045696877],[1.4049444],[1.4081829],[1.4101628],[1.3818637],[1.3492402],[1.2996615],[1.2511544],[0.04564733],[0.04565076],[0.045647893],[0.04553961],[0.04542456],[0.045219943],[0.0448686]],"model_test_loss":0.014148019254207611,"input_size":18,"current_date_and_time":"2023-08-12_10-02-27","input_mean":[[22.846207],[-0.028825762],[0.0069386563],[-0.011931484],[-0.029900458],[-0.030026564],[-0.029956907],[-0.025415199],[-0.02073705],[-0.016202599],[-0.012826078],[-0.012012862],[-0.011981135],[-0.011950831],[-0.011894881],[-0.011909395],[-0.011980199],[-0.012003033]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.045462497],[0.14482749],[-3.1937203],[0.41232848],[-0.036116436],[-0.10669243],[3.1771445]],"dense_1_W":[[0.04209759,-0.123200886,-0.001966771,-0.27350724,-0.07637217,-0.69638944,0.49670324,-0.10970925,0.17391703,-0.020320209,-0.11798665,-0.32608816,-0.15994923,0.74159515,0.16622286,-0.16900371,-0.11755795,0.12067652],[0.12397108,-0.8622103,0.002287507,0.5233263,0.29362643,-0.90254813,0.6244419,0.09886855,-0.20115684,-0.068305194,0.09150868,-0.040079072,-0.5887415,0.03467633,0.37852713,0.04821548,0.33913377,-0.32878298],[-1.5204463,-0.30083042,0.54742867,-0.22839276,-0.2593333,0.5200578,-0.22732674,0.35200244,0.0005918363,-0.14585528,0.47478247,0.34271586,0.18018198,-0.5389027,0.31345156,0.32557848,-0.10517697,-0.24773833],[0.16338956,0.7465661,0.00091303553,-0.30629274,-0.83907,1.2726458,-0.46392232,0.28630704,0.009157783,-0.092671104,-0.027732085,0.6079292,0.34104618,-0.639812,-0.3557384,-0.16809613,0.056947865,0.15010986],[0.0016282196,-0.808354,-3.8552349,-0.28365737,0.5438757,0.06829288,-0.19340357,0.0031712118,-1.2518381,-0.3716958,1.4632245,-0.3830043,-0.08256899,0.41362843,0.4654074,0.24454728,-0.060357146,-0.29063493],[0.00881861,1.5529372,-0.004645296,0.101736404,-0.44716865,1.1123074,-0.11059584,-0.23869607,-0.19627295,-0.16191976,0.27920842,0.5280347,0.07986667,-0.2998149,-0.13689749,-0.061755475,0.26918095,-0.17861305],[1.5262027,-0.7209147,0.54510105,-0.41295,0.24966663,1.5925447,-1.7505642,0.4582838,0.21614361,-0.11827627,0.48279446,0.7191378,-0.5658482,-0.5843556,1.2161899,0.0055931257,0.16656737,-0.5068038]],"activation":"σ"},{"dense_2_W":[[-0.93619925,-1.0465239,0.51262397,0.74086666,0.21353468,0.3476233,0.32381067],[-0.51265305,-0.87474597,0.46417361,-0.24346405,-0.3276334,0.5293372,0.051842663],[0.53608036,0.56876564,-0.22863568,-0.38303185,0.27319765,0.33705932,-0.7360473],[-0.7518486,-0.65000415,0.35375157,0.28509223,-0.56357265,0.478604,0.03561653],[0.029013865,0.25404042,0.57304466,-1.2749768,0.95642287,-0.6889415,-1.2362365],[0.39669678,0.4147544,-0.33926824,-0.935757,0.07840821,0.26636747,-0.3079712],[0.596397,0.20710751,0.1445996,0.047088236,-0.58025897,0.08174204,-0.08478866],[0.6787158,0.85764533,-0.28679985,-0.9344713,0.11183712,-0.4111803,-0.7435469],[-0.032755844,-0.41277444,0.3462792,0.65885925,-0.33081263,0.115080066,-0.17707695],[-0.5118069,-1.2389166,0.28025037,0.68769765,0.15658064,0.116785616,0.18789898],[-0.1941865,-0.9085792,-0.015243897,-0.11461906,-0.61263376,-0.6787525,0.1516513],[-0.8660754,-1.2627017,1.1963525,0.4615613,-0.7016441,0.5529118,-0.5558919],[-0.25683263,0.2894195,0.38483003,-0.59003097,0.4263322,-0.7981855,-0.42868915]],"activation":"σ","dense_2_b":[[-0.26972106],[-0.23031023],[-0.12965338],[-0.041467585],[-0.15502211],[-0.23721904],[-0.07618676],[0.024510087],[-0.09441283],[-0.18249302],[-0.22564216],[-0.23934019],[-0.07737953]]},{"dense_3_W":[[0.3971231,0.28900996,0.1904874,-0.00935186,-0.193967,-0.02954578,0.06900154,-0.5145334,0.12633824,0.21880715,0.21613063,0.60171586,-0.64756685],[0.0129291145,-0.32070932,0.5608509,0.21185556,-0.22626269,-0.27636886,0.08561043,-0.31846905,-0.5734745,-0.21031462,0.1820749,0.28639615,0.4885934],[-0.12727283,0.26172706,0.64191544,-0.46281716,0.83532584,0.4892697,0.27129266,0.8000755,-0.53944695,-0.16300395,0.15426172,-0.75119865,-0.1486517]],"activation":"identity","dense_3_b":[[-0.022976112],[0.023158783],[0.0038195048]]},{"dense_4_W":[[1.077695,-0.06574526,-0.53436226]],"dense_4_b":[[-0.017774973]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48400x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48400x00x00x00x00x00x00'.json deleted file mode 100755 index c7cff36455..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48400x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.644386],[1.1440065],[0.4692075],[0.044103775],[1.1367902],[1.1393884],[1.1417042],[1.1268477],[1.1062402],[1.0774581],[1.0459682],[0.04386147],[0.04393631],[0.044005807],[0.044103783],[0.04404187],[0.04392301],[0.04367208]],"model_test_loss":0.01073704194277525,"input_size":18,"current_date_and_time":"2023-08-12_10-27-46","input_mean":[[23.381014],[0.005975481],[-0.009992327],[-0.021032402],[0.008117326],[0.006850381],[0.0054110563],[0.0023832242],[0.002186634],[0.0035959708],[0.0033810092],[-0.021105358],[-0.02110145],[-0.021099575],[-0.021097427],[-0.021086434],[-0.02115564],[-0.02128101]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.834708],[-0.045707446],[-2.563987],[-0.117759325],[-0.91913813],[-0.03334596],[2.6613603]],"dense_1_W":[[0.16599746,0.7096867,-0.0038545108,-0.13340561,0.2588123,0.29712543,-0.2594707,-0.071150005,-0.07657077,-0.013201976,0.10662274,0.04428099,-0.1436738,0.16864574,-0.22712697,0.12658992,0.0954199,-0.12004688],[0.0042369105,0.18097177,-0.22014329,-0.30500078,-0.06370518,0.46832517,-0.90946174,0.6372478,0.25378084,-0.1069116,-0.37374678,0.3893671,0.45563832,-0.4595813,-0.2876199,0.33593014,-0.33627144,0.25168842],[-1.2126169,-0.16930301,-0.21450809,0.20024887,0.03201565,-1.0296049,1.4060705,-0.4294684,-0.0039082374,-0.42241377,0.012848083,0.123701885,0.14541772,-0.08624216,-0.18380383,-0.27203885,-0.19501837,0.2907863],[0.00063447293,1.2981268,4.2820415,-0.2594015,-1.2206693,-0.08402264,-0.313254,0.2832975,1.461314,0.50451976,-1.6309339,0.5598124,-0.14541756,0.23579545,-0.2860597,-0.611733,0.34472165,0.16626717],[0.14616013,-0.495636,0.0058109863,-0.01570958,0.58130336,-1.5504689,0.2670856,0.13132574,0.40939844,-0.057407007,-0.20243555,-0.2075857,-0.18856382,0.72101206,-0.06758915,-0.24377194,0.1419332,0.047459047],[-0.013590818,0.34024894,0.18479231,-0.019695252,-0.86625415,0.9378449,-0.7798978,0.22300671,0.40178698,-0.04151977,-0.13329166,0.45217785,0.09624605,0.084031366,-0.47827828,-0.55867606,-0.046922974,0.4538892],[1.2487265,-0.5044096,-0.22156143,0.51267344,-0.10274288,-0.51327384,1.1344092,-0.17422712,-0.058846287,-0.40755874,-0.003082627,-0.34271088,-0.2929998,0.434721,-0.30842355,-0.021555493,0.21910873,-0.1752489]],"activation":"σ"},{"dense_2_W":[[0.62964183,0.3170662,-0.7668863,0.4648944,-0.35633978,0.323501,0.36004624],[0.9853487,-0.27411574,0.34153345,0.1801431,-0.94035196,0.07904266,-1.1844826],[-0.16382942,-0.5559022,0.39087328,-0.6283743,0.41070727,0.020665707,0.8685],[0.34209964,0.5759347,-0.31890684,-0.2798852,0.13835523,0.6231073,-0.26864585],[-0.6228901,-0.4353858,0.24678996,-0.14232816,0.6366259,-0.22533265,0.60833997],[0.51754946,0.08759814,-0.1679395,0.5345081,-0.6778435,0.03203068,-0.94014156],[0.49474886,0.21732587,0.407077,-0.32371607,-0.2704814,-0.0010814304,0.13743709],[-0.0838043,-0.49292943,0.032049768,-0.05150428,1.0013574,-0.96868503,0.41634974],[-0.63949,-0.648591,1.0157802,-0.31856138,0.9662109,-1.015555,-0.22861005],[0.15993874,-0.013838849,-0.4022037,-0.28916073,-0.47161445,-0.6956427,-0.7160354],[-0.24090491,-0.26874304,0.749612,-0.4140518,0.6883246,-0.89394754,0.041574933],[-0.9463262,-0.55637103,1.0741757,-0.1182538,0.047610544,-1.0402383,-0.16455126],[-0.6265001,-0.59906393,0.09580579,0.026793769,0.63057166,-0.6412282,-0.3706451]],"activation":"σ","dense_2_b":[[0.07676112],[-0.111001514],[-0.008189968],[0.03080702],[-0.023322558],[-0.12537855],[0.041264],[-0.068600364],[-0.17696345],[-0.34724367],[-0.13291265],[-0.119294606],[-0.06824207]]},{"dense_3_W":[[0.30592474,0.65184015,-0.18676876,0.5202834,-0.47716483,0.49206358,0.1335472,-0.46779883,-0.45796365,-0.27737036,-0.61875904,-0.21409914,-0.4281805],[-0.22402486,0.36820185,0.5984844,-0.32377946,0.51082987,-0.5228782,-0.4425499,-0.22049034,-0.28360286,-0.63904005,0.57028985,0.27956602,0.54471344],[0.015972696,0.56076694,-0.4424602,0.50380963,0.1369866,-0.10628985,-0.03996058,0.51810396,-0.27963144,0.5446682,0.091093265,-0.067806154,0.017807629]],"activation":"identity","dense_3_b":[[0.08166017],[-0.07228911],[0.020593217]]},{"dense_4_W":[[1.2059438,-0.34201673,0.15371227]],"dense_4_b":[[0.075159274]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020.json deleted file mode 100755 index 8df2f4bb1d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.164538],[1.4558752],[0.45833412],[0.04711418],[1.4456551],[1.4501203],[1.4533974],[1.4229606],[1.3864104],[1.3335255],[1.2820569],[0.047046598],[0.047047578],[0.047046028],[0.046939764],[0.046797764],[0.046596467],[0.04624541]],"model_test_loss":0.014431758783757687,"input_size":18,"current_date_and_time":"2023-08-12_09-04-44","input_mean":[[22.724527],[-0.0073930244],[0.0021499225],[-0.013335735],[-0.0060209357],[-0.0065084104],[-0.0070741335],[-0.004122651],[-0.0006198622],[0.002992856],[0.0050453614],[-0.013361201],[-0.013339233],[-0.013309726],[-0.013208915],[-0.013188212],[-0.0131769525],[-0.013236434]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.4987317],[-0.21502848],[-0.023930108],[-0.08293208],[-0.18136914],[-2.6931612],[1.9903412]],"dense_1_W":[[0.6072704,0.018546268,1.0117872,-0.02655404,0.12334371,0.9183143,-1.0057606,0.33296764,0.0034425545,0.30709305,-0.1837191,0.43864262,0.1951786,-1.0183357,0.08373593,0.46079198,0.069924854,-0.20370835],[0.018644223,1.3867873,3.9551542,0.15828222,-1.7119819,-0.06886215,0.15835802,0.104763426,1.5361047,0.7793233,-1.5410533,0.57826525,0.2791371,-0.091204755,-0.9631753,-0.25537375,-0.40537784,0.6930675],[0.05840197,0.83388406,-0.0011560204,-0.3091371,-0.24360721,1.7607956,-1.0322315,-0.24692948,-0.22033525,0.058811415,0.1848893,0.50187564,0.024970453,-0.10388528,-0.35247543,-0.33053055,-0.036511794,0.19697922],[0.041596312,1.2468644,0.00062399096,0.08458749,-0.64712596,0.8903513,-0.17702456,0.29386955,-0.32305542,-0.060308453,0.11958216,0.5488134,0.25830337,-0.8367097,-0.20763892,0.1274579,0.2367986,-0.21593204],[-0.16188623,-0.123164184,-0.9382007,0.13822892,-0.38314018,0.43343663,-0.5543238,0.26458925,0.39078033,-0.18539841,-0.12467638,0.29254597,0.14244753,-0.47446775,-0.09593193,0.09456061,-0.35750958,0.26552486],[-0.88318425,1.1153313,0.0017999654,0.19061683,-0.30666143,0.75104123,0.11356683,0.48195174,0.02523524,0.010765657,-0.04291398,-0.03229076,0.4961786,-0.31880328,-0.67625135,-0.14397632,0.15807933,-0.0985196],[0.5923598,0.6756624,-1.0463923,0.37445185,0.11736687,-1.0798235,0.55913264,-0.47123235,-0.54284656,0.055854443,0.17690535,-0.7807285,0.3889109,0.4822052,-0.42190412,-0.21585964,0.19765395,-0.03469817]],"activation":"σ"},{"dense_2_W":[[-0.7025875,-1.01547,-0.43722752,-0.09516741,-0.24370766,0.28927654,0.014542646],[0.2749662,-0.29885203,0.30274695,-0.10304987,-0.3782751,-0.26847735,0.025089832],[-0.54648656,0.24413349,-1.0082586,-0.23474653,-1.1860299,-1.0889997,-0.08883737],[-0.4322979,-0.7916055,0.08303449,-0.5981394,-0.08842554,-0.4015095,-0.44426244],[0.25884318,-0.48712513,-0.4562449,-0.765338,-0.3228274,-0.009145744,0.7458293],[-0.61903703,0.009864125,-0.7634911,-0.21205765,-0.7243218,-0.29422146,0.7232771],[-0.30022988,0.15801793,-0.4750129,-0.39146864,0.43409535,-0.20482707,0.21319191],[-0.09161583,0.29012272,-1.1244291,-0.7968736,-0.52818763,-0.31070143,-0.7589764],[0.41631448,-0.041808337,0.45858353,0.5034346,0.25543645,0.5356051,-0.6972568],[-0.779109,-0.23796116,-0.9607459,-0.6135155,-0.25498068,0.41323018,0.25573388],[-0.5596749,-0.21328482,-0.9854063,-0.5111223,-0.7307937,-0.06609184,-0.16158096],[0.26007235,0.24132085,0.5798595,0.6841223,0.65867245,0.061028752,0.36075428],[-0.3321862,0.12987743,0.56252885,0.2816003,-0.16890442,-0.22842854,-0.9761609]],"activation":"σ","dense_2_b":[[0.020393617],[-0.1259718],[0.15805069],[-0.23997118],[0.1390272],[0.08802155],[-0.11869106],[-0.24654494],[-0.11373044],[0.11735831],[0.30582067],[-0.15132986],[-0.27947864]]},{"dense_3_W":[[-0.41748047,-0.5452961,-0.5681742,-0.31478232,-0.43341246,-0.50046074,-0.1333813,-0.5239057,0.18791445,-0.6105861,-0.53726876,0.11316518,0.5290968],[-0.08242217,0.49892414,-0.4914419,0.32127154,-0.5822968,-0.6094572,0.18559168,0.31101432,0.7411366,0.31846002,-0.39128235,0.6802514,0.6365301],[0.6492468,0.02211246,-0.12046828,0.28079885,0.2860496,-0.10623663,0.10433247,0.3697982,-0.68328637,0.6391152,0.44678408,-0.028312663,0.45253885]],"activation":"identity","dense_3_b":[[0.078321405],[0.037635524],[-0.057794243]]},{"dense_4_W":[[0.5587847,0.7765039,-1.1255592]],"dense_4_b":[[0.048529897]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47022x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47022x00x00x00x00x00x00'.json deleted file mode 100755 index 967dcf8d1f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47022x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.000243],[1.0529355],[0.44031963],[0.04554594],[1.0481081],[1.0505339],[1.0517689],[1.0306543],[1.0114516],[0.9864613],[0.96286005],[0.045486752],[0.04548187],[0.04546514],[0.045314565],[0.045162555],[0.04484083],[0.044451322]],"model_test_loss":0.016144780442118645,"input_size":18,"current_date_and_time":"2023-08-12_12-48-27","input_mean":[[23.703514],[0.034525022],[0.0037587206],[-0.0066846693],[0.036115173],[0.035502695],[0.035573922],[0.038456824],[0.03878846],[0.037492014],[0.035617996],[-0.0066404915],[-0.0066419644],[-0.0066401316],[-0.006694763],[-0.0067848936],[-0.006970607],[-0.0071066907]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.018687818],[0.016889395],[-2.2628572],[-2.078596],[0.22971022],[-0.1767829],[-0.5167562]],"dense_1_W":[[0.011015955,1.0643084,-0.08839964,0.61551523,0.802623,1.5406702,-1.6393329,-0.07330995,0.22098303,0.5496796,-0.07165077,0.57465875,-0.49430174,-0.72913355,-0.028702782,0.2533353,-0.15451618,-0.014682099],[-0.0044485596,0.68300956,2.34839,-0.49447054,-2.7115552,-2.5957623,-3.4036458,1.1568989,5.159137,2.5940776,-0.9615852,1.2597148,0.4663126,-0.4115597,-0.54910094,-0.018557174,-0.6093785,0.19555537],[-0.38033494,0.6095696,0.27524653,-0.24040353,0.23970546,0.72473454,-0.19985196,0.05170179,0.37927815,0.008114709,-0.30030593,0.5968865,0.072596125,-0.31858274,-0.41960534,0.26154235,-0.09866176,0.15294196],[-0.3583878,-0.7227564,-0.2559942,-0.047408156,-0.23193003,-0.7996542,0.557878,-0.10742698,-0.4394683,0.09005993,0.26495668,-0.7439191,-0.013596186,0.88895196,0.092311434,-0.022404915,-0.17483388,0.011742477],[-1.1386592,0.20961168,-0.0043176794,-0.14611427,-0.13120638,1.3944597,-1.0419998,-0.39789963,-0.08476762,-0.36311617,0.42571318,1.3092103,-0.26345864,-0.98487866,-0.0447565,-0.3767902,-0.10429795,0.14397188],[1.1815095,0.06911906,-0.0023387522,0.08115236,-0.12113374,1.487969,-1.2359906,0.11289565,-0.58799416,0.07841065,0.22937942,1.0972705,-0.07823999,-0.92822057,-0.4054966,-0.18756558,-0.33272704,0.2668549],[-0.19750582,1.2739553,7.0663867,-0.5248582,-0.4676437,-0.08646342,-0.91660845,1.0469422,1.1008883,0.3525522,-1.6761202,0.9796133,0.77493626,-0.44570097,-0.3790537,-0.24817844,-0.04224263,-0.08521787]],"activation":"σ"},{"dense_2_W":[[0.56187254,-0.42941013,0.01137766,-0.5091996,-0.021960784,-1.0853531,-0.55602425],[-0.7135164,-0.39620182,-0.35796282,-0.24564448,-0.08940037,0.018869234,0.21817489],[0.5262834,0.37286675,0.54738665,-1.4483702,0.74003285,0.36226225,-0.4840184],[0.66549075,-0.45087525,0.5316808,-0.80598843,0.5375895,0.44839606,0.19927433],[-0.05242752,-0.47517085,-0.07394551,0.23638195,0.76435024,-0.7201021,-1.2908622],[0.20445137,0.27786765,0.6353812,-1.2159988,0.7916566,-0.03361323,0.14942108],[-0.29910564,-0.13706577,-0.66971123,0.5954099,-0.5241532,0.08504403,0.31102544],[0.2186948,0.13250604,0.14607616,-0.009396174,-0.4860835,-0.08648418,-0.5939958],[-0.18379676,0.37188196,-0.5983929,0.008835486,-0.5554737,-0.39572975,-0.17633566],[0.40148303,-0.3301877,-0.32109272,0.8163982,-0.18761033,-0.55294204,-0.4394005],[-0.18555163,-0.30746877,-0.8649402,0.3212118,0.37567982,-0.35336125,-0.40009186],[0.42191646,0.2480143,0.5938211,-0.47291356,0.24606346,0.3526983,-0.31585172],[0.30375394,-0.4357636,-0.67720544,0.18926817,-0.2186749,0.19559121,-0.15258849]],"activation":"σ","dense_2_b":[[0.0456926],[0.1021674],[-0.525961],[-0.2781079],[-0.179685],[-0.9191505],[0.018642724],[0.07845247],[0.06336037],[0.21135324],[-0.09867381],[-0.25866526],[0.27727693]]},{"dense_3_W":[[0.005986166,0.5403741,-0.5950544,-0.668431,0.3410047,-0.4509835,0.41055346,0.56165504,0.47017696,0.04962426,0.30859372,-0.4631947,0.19735102],[-0.548777,-0.34207267,0.29769439,-0.07678766,-0.18337654,0.3864849,0.09935212,0.41492525,0.2651904,-0.4132142,-0.055492,0.6352499,-0.0036086126],[-0.1508172,0.13540027,-0.39238226,-0.6953886,0.57532775,0.2929234,0.51378953,0.33914775,0.5232986,-0.16648121,0.079042025,-0.44329265,0.72198534]],"activation":"identity","dense_3_b":[[0.04064909],[-0.056400906],[0.02708405]]},{"dense_4_W":[[-0.9928628,0.7695461,-0.40275335]],"dense_4_b":[[-0.04485986]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47023x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47023x00x00x00x00x00x00'.json deleted file mode 100755 index 4d3ae8cfe8..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47023x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.189096],[1.2119626],[0.49706239],[0.047317218],[1.2048372],[1.20692],[1.2089139],[1.1869353],[1.1617409],[1.127547],[1.0964477],[0.04720443],[0.04723218],[0.047246177],[0.047100883],[0.046939258],[0.046583816],[0.046134617]],"model_test_loss":0.0164700448513031,"input_size":18,"current_date_and_time":"2023-08-12_13-15-10","input_mean":[[23.779161],[-0.013822137],[-0.002065226],[-0.0027149373],[-0.010493581],[-0.012193051],[-0.012818504],[-0.012930413],[-0.010893465],[-0.005386844],[-0.0016019325],[-0.0026636221],[-0.0026759957],[-0.0026916054],[-0.0028163292],[-0.0029443589],[-0.0030217492],[-0.003099767]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.6248422],[0.4383351],[0.0049929065],[-2.9431283],[0.008178566],[-0.051198818],[-0.33704558]],"dense_1_W":[[-0.8000218,-1.0995749,-0.2871293,0.5462917,0.24798232,-1.2576014,0.1120573,0.078140825,0.078286864,0.15174086,-0.01840363,-0.52815986,-0.05432176,0.34631014,-0.20628281,-0.14995483,0.07829511,-0.042495955],[1.6193608,-0.46763715,0.28946337,-0.2223544,0.35163045,-0.606444,0.984452,0.34925696,-0.08003834,-0.30489528,-0.18959466,-0.6525449,-0.3045237,0.5406548,-0.090693735,0.6568375,0.7551066,0.56893355],[0.020400103,0.33052164,3.5161345,-0.21798564,-0.87898314,-1.127264,-1.9201058,0.13413894,2.837898,1.4812523,-0.66593146,0.45540428,-0.012385356,0.13430928,0.21109414,-0.14471997,-0.4844812,0.03366415],[-0.86977047,1.0564649,0.306292,-0.13933228,-0.31024972,1.1149535,0.1641149,-0.005766936,-0.050841313,-0.06560041,-0.086284995,0.20279922,-0.04585891,-0.20554592,0.114430346,0.14967376,-0.021810979,-0.045283116],[0.00061570096,0.45353583,-0.009236617,0.26197684,-0.15322922,0.83636606,-0.8349571,-0.17852367,0.14262004,-0.05964174,0.04870579,0.69924206,0.4330304,-0.9156969,-0.4326727,-0.65043074,0.14345872,0.07251757],[0.0015624848,0.9121691,-0.02306211,-0.17766467,0.3675618,1.406637,-0.91108245,-0.26483488,0.007428613,0.17409417,0.12758283,0.22435105,0.11867643,-0.47856376,-0.003195762,0.21000656,0.26077518,-0.29852307],[-1.1143638,0.32679862,-0.2348363,0.5724334,-0.15143955,-1.033644,0.93523884,-0.40604407,0.0011522722,0.12635851,0.2240593,-0.24549077,-0.1502993,1.0182712,-1.1520041,-0.10360738,-0.0657126,-0.8226056]],"activation":"σ"},{"dense_2_W":[[-0.35284433,-0.2574711,-0.029361492,-0.49557316,-0.11526183,-0.2827134,-0.4111898],[0.03056212,-0.4830144,0.14822236,0.27505293,0.709112,0.4124182,-0.6306692],[-0.9140814,0.17214836,0.2355942,0.6127966,0.4447363,0.56893396,-0.3780424],[-0.72159797,-0.1386788,0.28826654,0.39564595,0.7098589,0.07965858,-0.09599504],[0.7131255,0.4191417,-0.11335002,-0.81645864,-0.16484027,-0.24157974,-0.1626869],[0.11402234,0.13955061,0.12694025,-0.046629976,0.011027189,0.7676317,-0.09719566],[-0.12212158,-0.15184937,-0.10101525,0.07340927,-0.24177536,-0.5750619,-0.3229692],[0.31239644,0.5398298,-0.12011592,-0.64138055,-0.556097,-0.6323519,0.41405684],[0.42244118,0.752209,-0.5100762,-0.5812268,-0.19271265,-0.061693292,0.4749355],[0.35658112,0.4356272,-0.6723626,0.1700935,-0.6141872,-0.49651685,0.69559157],[-0.00028722011,-0.30635557,-0.19579825,-0.09017295,0.15330125,-0.39068377,0.0518424],[0.30908525,0.26968578,-0.9460024,-0.6721539,-0.05254155,-0.96726763,-0.8004719],[0.5386026,0.24466284,-0.3876961,-0.35310513,-0.5629104,-0.62708277,0.7053968]],"activation":"σ","dense_2_b":[[-0.1009566],[-0.052083995],[-0.17170173],[-0.11832341],[-0.040780384],[-0.0032875277],[-0.06165029],[0.11283898],[-0.04587376],[0.04051942],[-0.27606243],[-0.3136743],[0.00120357]]},{"dense_3_W":[[-0.12000948,-0.07712079,-0.13579264,-0.5477244,0.12987608,-0.27466065,0.18847848,0.36536223,0.095779814,0.6490736,-0.54498273,-0.25738448,0.18985388],[0.2613838,-0.74475616,-0.71508867,-0.029044528,0.45442525,-0.2592899,0.40360647,-0.08311714,0.49941358,0.5649388,0.073403694,-0.15956575,0.47439378],[-0.3364592,0.5295699,-0.4562176,0.5927123,0.025007816,0.28039455,-0.4734172,-0.50012225,-0.26987627,-0.25010377,-0.22944938,-0.15876396,0.4559477]],"activation":"identity","dense_3_b":[[-0.04299677],[-0.057208654],[0.05739145]]},{"dense_4_W":[[-0.5825432,-1.227139,0.78172004]],"dense_4_b":[[0.05413455]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47050x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47050x00x00x00x00x00x00'.json deleted file mode 100755 index 73b1d0618c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47050x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.311736],[1.1833621],[0.46748862],[0.043473817],[1.1803772],[1.1810178],[1.1803039],[1.1448357],[1.1118515],[1.0669984],[1.0288521],[0.043289315],[0.043316387],[0.043338254],[0.043359537],[0.04335068],[0.043099],[0.04268195]],"model_test_loss":0.02130388654768467,"input_size":18,"current_date_and_time":"2023-08-12_13-42-52","input_mean":[[23.338652],[0.0079169525],[0.011965741],[-0.0043622814],[0.0054793637],[0.0060081836],[0.0057728244],[0.010234134],[0.015633008],[0.018571485],[0.021591475],[-0.004419671],[-0.0044097584],[-0.0044071046],[-0.0044820793],[-0.004507606],[-0.004685093],[-0.0047487807]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.3424917],[-0.22007197],[2.7653508],[-0.08879859],[-0.51477855],[-0.545124],[2.8031893]],"dense_1_W":[[-0.0609116,0.24219239,-3.0795984,-0.10600801,1.926117,1.9883113,2.695181,-2.2749603,-4.703912,-1.4620117,1.3659627,-0.61915976,-0.5933105,0.5631315,0.53107154,0.16850716,0.5389666,-0.24403873],[-0.13675421,-0.28692976,-0.047750086,-0.07963782,-0.15478788,-1.52701,0.76644737,0.36206856,0.08041735,-0.07322048,-0.13415782,-0.81037486,-0.11634636,1.0861106,-0.058293134,0.28003043,0.11846962,-0.11565344],[0.95614064,1.0019612,0.53723675,0.06426713,0.024449164,1.2951865,-0.014162737,0.17224762,-0.29896966,0.004003529,-0.033126593,0.5333686,-0.043380257,-0.34817392,-0.0940334,-0.070693925,-0.056659807,-0.040717468],[-0.3698795,-2.043652,-0.001344297,0.2573092,-1.8309736,-1.4463769,-0.7664984,-0.48727417,-0.77685726,-0.765619,-0.8620695,-0.12925234,0.19212537,0.22146735,-0.42407393,-0.28144377,-0.39236894,0.47548348],[0.8419204,-0.5650975,0.036041167,0.65058583,1.710107,1.0682759,2.30751,4.404108,1.5041014,-0.48164627,0.92178214,-0.6536394,0.088804975,0.48443964,-0.22410193,-0.3742232,0.056062154,0.047145177],[-1.2325656,-0.30824685,-0.09048496,0.18950711,-0.4825,0.048707586,-0.18827212,-0.6238843,-0.15898828,-0.0016847495,0.20470282,0.78116095,-0.21980284,-0.42645526,-0.20192316,-0.20980175,0.06175255,0.42999753],[1.1973844,-0.61121106,-0.65272874,0.11695344,-0.415401,-0.8369048,-0.51655334,-0.46804002,0.1774671,0.034465495,0.11842057,-0.19437845,-0.21636976,0.14230467,-0.1306049,0.22070019,-0.014487319,0.1370136]],"activation":"σ"},{"dense_2_W":[[-0.09687541,0.41265634,-0.28903764,0.088248394,0.08749764,0.40536332,-0.40259215],[0.09616042,0.53485495,-0.52763003,-0.3675957,-0.4812057,0.5304369,-0.35900635],[0.47528854,0.027117088,-0.79976135,-2.041139,0.12766449,0.6291589,-1.348053],[0.007089686,0.65491384,-0.28227356,0.14037174,-0.116616175,0.4254773,0.25753963],[0.30368233,0.830298,-0.5528413,-0.41899738,0.5059065,0.70742816,-0.5321653],[-0.106924206,-0.9505898,-0.1433678,-0.7451343,0.26985407,0.19505453,-0.37276903],[-0.6210788,-0.9982259,0.2111701,0.25647947,-0.2557463,-0.050668027,0.27773225],[-0.29684657,0.39087462,-0.6303919,0.45115256,-0.24149868,-0.099998295,-0.36485362],[-0.96378434,-0.67800295,0.101591,-0.4826239,-0.7637202,0.9594377,-0.27190077],[0.8295861,-0.09165251,0.27433112,0.76305205,-0.17441471,-0.2059716,0.47888404],[0.5831719,-1.3856399,0.16508237,-0.44017437,-0.1796982,-0.51486045,-0.26369834],[-0.70064485,-1.0656925,0.99505454,-0.13768534,-1.1000327,0.32685453,0.07229443],[-0.3610345,-0.9261802,0.8907604,-1.1000993,-1.0780302,0.43730703,-0.8698188]],"activation":"σ","dense_2_b":[[0.0029676734],[-0.045690004],[0.052396797],[-0.11907807],[-0.03244056],[-0.010383539],[0.14556181],[-0.06368351],[0.117490895],[0.0279692],[0.0063737636],[0.1982034],[0.36711437]]},{"dense_3_W":[[-0.4897033,-0.08666579,0.6885498,-0.029216405,-0.5607586,0.6646527,0.6371779,-0.49990708,0.80433536,-0.6012616,0.66267055,0.3536834,0.7406547],[-0.21406044,0.1894386,-0.059286572,-0.25800148,0.36541036,-0.023487262,0.08215483,0.2643849,0.7693755,-0.3409327,-0.3719815,0.62649447,-0.1366564],[-0.54868925,-0.38931724,-0.37813,-0.21437772,0.025669921,0.5354064,-0.53577673,0.43504256,-0.14300491,-0.6100815,0.2980951,-0.44299504,-0.3803292]],"activation":"identity","dense_3_b":[[-0.0040670936],[-0.008865108],[0.0073812064]]},{"dense_4_W":[[1.2559222,0.3952422,0.23678719]],"dense_4_b":[[-0.005785818]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47060x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47060x00x00x00x00x00x00'.json deleted file mode 100755 index 066956c53e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47060x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.720254],[1.4248189],[0.6346064],[0.043413434],[1.4171089],[1.4204099],[1.4220495],[1.3829275],[1.3424436],[1.2829355],[1.2256352],[0.043280665],[0.043307457],[0.043318037],[0.043207273],[0.043084644],[0.042780377],[0.04235212]],"model_test_loss":0.017869291827082634,"input_size":18,"current_date_and_time":"2023-08-12_14-12-09","input_mean":[[21.814978],[-0.044544768],[-0.0024178808],[-0.009240181],[-0.045137636],[-0.04497973],[-0.04478877],[-0.04410983],[-0.045231145],[-0.043119643],[-0.043177184],[-0.009214069],[-0.0092027215],[-0.0092002945],[-0.0092338],[-0.009313492],[-0.009387383],[-0.00947316]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.389111],[0.4858375],[-0.13127421],[-0.38854295],[-3.1610048],[-0.33462796],[-1.149649]],"dense_1_W":[[-1.602772,-0.53400826,0.37718666,0.3633788,0.33693865,0.68845004,-0.8066354,-0.59084105,0.07060837,0.27426994,0.15494016,-0.07353975,-0.25826493,-0.32263887,0.28983268,0.3546069,0.18318044,-0.42745438],[0.25555605,-0.46022877,0.010211284,0.3684016,0.29642805,-0.20792986,0.9199042,-0.0009176482,0.15137427,0.30636084,-0.16015714,-0.052834738,-0.27825084,-0.27992555,0.24953611,0.13372909,-0.36744606,0.06524456],[-0.014943542,0.0033767207,-0.01663711,-0.16835603,0.11114337,1.0834363,-0.5150133,-0.07263835,0.054830827,-0.16517083,0.22029305,0.49329266,-0.17962627,-0.29688638,0.09192479,-0.06749909,-0.072753765,0.10270321],[-0.0008402716,-1.1286653,-5.7245965,-0.021644374,1.5435878,-0.1730232,0.21411745,-0.47486955,-0.97386926,-0.5715368,0.8451933,-0.455989,-0.4467363,-0.082325645,0.7459095,0.6310687,0.36110288,-0.34151703],[-1.7693851,0.12620595,-0.3989256,-0.2882022,-0.45917684,-0.51895636,0.84001356,0.61877567,0.27147272,-0.19530535,-0.35681,-0.45012978,0.7122562,0.3551444,-0.45587432,-0.4327567,0.33414394,0.11296678],[-0.08414736,-1.0083802,-0.015756436,0.013720882,1.0453994,-1.1957791,0.71627206,-0.21035555,-0.19702181,-0.27536744,0.35988438,-0.14539826,0.1924023,-0.14444451,0.25051752,-0.033313595,0.12550475,-0.12158435],[-0.30154642,-5.557496,-0.14708285,-0.061846647,2.3995101,-0.1547433,-1.5738837,-4.107894,-5.171764,-1.1092714,-0.02171138,0.11659548,0.45198613,0.6176347,-0.48459208,-1.2427675,-0.49318025,1.0491029]],"activation":"σ"},{"dense_2_W":[[0.03774502,-0.16235852,-0.84784216,0.24940088,0.00461042,0.65833217,-0.11222489],[1.1341851,-0.064238384,1.1198534,-0.95495975,-1.2911308,-1.0256866,0.6400749],[1.062979,-1.3534148,0.47456717,-1.5896825,-0.21420188,-1.0324565,0.31096524],[0.078438394,-0.271086,0.58087903,-0.26364973,0.10504239,-0.92563856,-0.25989658],[0.24416082,-0.7104936,0.24994028,-1.219746,0.37427732,-0.9982437,-0.0085131265],[-0.09752925,0.21119414,-1.1002113,-0.13776001,0.37355924,0.17910865,0.53129876],[0.2012527,-0.11168886,-0.8083448,0.059142426,0.2023561,0.5704213,0.12255705],[0.64825,-0.12111593,-0.76845324,-0.24870408,0.4248867,1.1680412,-0.2043484],[1.7244234,-1.3934715,-0.04146303,-0.17682545,1.7285235,-1.6673733,-3.813261],[-0.48733664,-0.6287612,1.05426,0.05775865,-0.87263334,-1.0111203,0.60572374],[-0.28019178,0.5071182,-0.466659,0.078289345,0.31104136,0.71050084,-0.16471304],[0.30341744,0.039579187,1.2398592,0.29671758,-0.5292248,-1.2144855,-0.31690553],[-0.040978797,-0.28604105,0.5629664,-0.15134554,-0.59253997,-0.5422128,0.19325934]],"activation":"σ","dense_2_b":[[-0.07329691],[-0.0073756496],[0.11507728],[-0.0200944],[-0.35160002],[-0.13647649],[-0.11702968],[0.07018993],[-0.4881218],[-0.11002543],[-0.046954576],[0.07282092],[-0.06980713]]},{"dense_3_W":[[0.3841397,0.43480623,0.3392544,0.11891049,0.19847225,0.45567343,0.56124204,0.73655707,-0.103296585,-0.12169428,0.0068540676,-0.71867234,-0.40767854],[-0.45614606,0.21017289,0.55516654,0.61873233,0.33714756,-0.4300137,-0.45999125,-0.08619196,0.9222072,0.008902227,-0.15612483,0.7118131,-0.082317345],[-0.042307917,0.6266083,0.664274,0.6469083,0.16917458,-0.51057035,-0.20145637,-0.67773443,0.61834735,0.5064825,-0.2500228,-0.056062642,0.3220822]],"activation":"identity","dense_3_b":[[0.016107948],[-0.113635235],[-0.055587772]]},{"dense_4_W":[[-0.3492811,0.56186444,1.1551155]],"dense_4_b":[[-0.04331681]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42082x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42082x00x00x00x00x00x00'.json deleted file mode 100755 index fa23d9871e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42082x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.019431],[0.9383312],[0.43760064],[0.04085473],[0.92240274],[0.9266218],[0.9308925],[0.9144991],[0.8993299],[0.87902194],[0.856193],[0.04076221],[0.04078495],[0.04079549],[0.040720142],[0.040604606],[0.040340398],[0.04001449]],"model_test_loss":0.015206318348646164,"input_size":18,"current_date_and_time":"2023-08-12_16-07-29","input_mean":[[25.50595],[-0.011863799],[-0.0006739514],[-0.01594329],[-0.012065965],[-0.012642977],[-0.012979119],[-0.01383788],[-0.012668227],[-0.014262671],[-0.016552003],[-0.015838692],[-0.015853724],[-0.015880592],[-0.015935425],[-0.015941922],[-0.015968155],[-0.016021552]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.036452126],[0.08559556],[0.2897148],[0.075330995],[-0.38187677],[1.4539754],[-1.2161264]],"dense_1_W":[[-0.0060098697,-0.39788464,-0.0083788065,0.18333316,0.278688,-0.92364454,0.88050914,-0.16357976,-0.083575465,-0.16548778,0.17388147,-0.64590514,-0.2367544,0.16991502,0.39137343,0.3947005,-0.15660408,-0.03307207],[2.8630645,-1.2588997,-0.0027301412,0.24774393,-0.2915709,0.7063696,-0.41898602,0.093648784,0.3480123,0.08518327,-0.19690122,0.02904587,0.4258792,-0.48439965,-0.58783513,-0.51380473,-0.11631057,0.456209],[-0.017119301,-0.7335742,0.0014175244,0.5969601,0.050444994,-0.6665325,0.5107775,0.111380346,-0.09259335,-0.026180675,-0.011466796,-0.4973461,0.1700098,0.035120707,-0.12647136,-0.0991956,0.044152405,-0.060947783],[0.004678411,1.2740623,3.7182605,0.107325286,-1.2989601,-0.3152337,-1.0639912,-0.13160844,2.1075041,1.0793704,-1.4939084,1.1409113,0.07448943,-0.5013081,-0.29907212,-0.39650646,-0.21130306,-0.116951525],[2.8458567,0.54284513,0.0016173293,-0.17757091,0.05277462,-0.094486594,0.62712353,-0.31395078,0.1025354,-0.12772946,0.13789791,-0.20587224,0.3055044,-0.119795896,0.5939448,0.4397611,0.06556392,-0.37161782],[0.4724819,0.80122966,-0.00018380646,-0.039874755,-0.3928932,1.8747684,-1.233508,0.09610313,-0.13470712,-0.06360237,0.15746103,0.67920583,-0.096370995,-0.8378776,0.014750212,0.28160796,-0.1478646,0.080034226],[-0.47802755,0.48921135,-0.0002520188,-0.037732497,0.10487879,0.92998505,-0.55178314,0.10634122,-0.18135986,-0.10310874,0.21691601,0.4927082,-0.095634714,-0.4269393,-0.3520725,0.43727353,-0.1824048,0.10521066]],"activation":"σ"},{"dense_2_W":[[-0.7678551,-0.044020087,-0.9463613,0.1381405,-0.4766844,0.17481054,0.865753],[0.36592254,-0.46206722,0.4263325,-0.5770286,-0.38127115,-0.35710543,-0.46009374],[-0.77888083,0.19055568,-0.7574013,-0.24226372,0.006470128,0.7841768,0.6951729],[0.4839658,0.49723354,-0.119507566,-0.37833682,-0.2862369,0.13223429,-0.08261849],[0.1550176,-0.13229156,0.23890848,0.28497326,-0.06232947,-0.5918447,-0.87441015],[0.38908252,-0.46098205,0.042430878,0.0006829582,0.25034666,-1.0715038,-0.5407985],[-0.62666726,0.47684154,-0.19868156,0.43383852,-0.49297318,0.9425333,0.27851704],[-0.18181121,0.5257746,-0.7636084,0.6897081,-0.76064235,0.20353147,0.13215753],[0.76410335,0.19123517,0.21125565,-0.22053698,0.16143271,-0.004425321,-0.2898052],[0.6294419,0.17306042,0.1091528,-0.00499673,-0.28395087,-0.97709465,-0.25536087],[-0.28397334,-0.055312153,0.44325092,-0.39098385,-0.20454785,-0.043942228,-0.51369905],[-0.4919128,-0.10269968,-0.6502031,0.4973944,-0.42260522,0.057200216,0.23966748],[-0.5128312,0.38837132,-0.107127376,0.24325761,0.16999815,0.28076303,0.35485357]],"activation":"σ","dense_2_b":[[-0.02832953],[0.045545593],[0.037394777],[-0.047663357],[0.037933607],[0.098250054],[-0.06336312],[-0.08578499],[-0.00794813],[-0.05136867],[-0.0020242317],[-0.09399862],[-0.1000513]]},{"dense_3_W":[[-0.48297986,0.3544177,-0.45382679,-0.06326301,0.5731008,0.033288028,-0.3915376,-0.42120582,0.25898603,-0.29080692,-0.17612633,0.12559004,-0.19767617],[-0.6037485,0.5368198,-0.3116054,0.16574962,0.33300138,0.70383537,-0.4044081,-0.5238778,0.40293556,0.65038425,0.26341242,-0.5921214,0.081331424],[-0.3002974,-0.47011936,0.46762595,0.45630494,-0.06353013,-0.33025408,-0.35250518,0.18968482,-0.20597102,-0.1440317,0.03978579,0.48477307,0.10114584]],"activation":"identity","dense_3_b":[[0.06856954],[0.03152135],[-0.011259861]]},{"dense_4_W":[[-0.6018683,-1.0063373,0.005766461]],"dense_4_b":[[-0.035384744]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42083x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42083x00x00x00x00x00x00'.json deleted file mode 100755 index c04c4bf7ba..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42083x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.785183],[1.3424761],[0.5159871],[0.047890432],[1.3260951],[1.331146],[1.3365234],[1.3069957],[1.2819953],[1.2447248],[1.2092956],[0.04772719],[0.04774223],[0.047755223],[0.047561523],[0.04740499],[0.047128234],[0.04665515]],"model_test_loss":0.01631096750497818,"input_size":18,"current_date_and_time":"2023-08-12_16-36-05","input_mean":[[24.84536],[-0.048694376],[0.0017105383],[-0.0076607447],[-0.043704547],[-0.044807203],[-0.046089165],[-0.04298986],[-0.042797346],[-0.040657774],[-0.038248837],[-0.007561775],[-0.0075660897],[-0.0075722965],[-0.0076475735],[-0.007697426],[-0.0077724564],[-0.0077436664]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.280903],[-1.7886032],[-4.637047],[-0.08578383],[0.010013872],[4.6856623],[-0.22121063]],"dense_1_W":[[-0.09450893,-0.6459062,0.060911775,-0.3847882,0.7519606,-1.8593575,0.8616294,0.053076338,-0.209784,-0.07385902,0.00047539294,-0.4523988,0.2974266,0.38510123,0.259752,0.08684495,-0.02447588,-0.0733537],[-0.6774607,1.2661867,-0.10200818,0.65671134,-0.047138035,0.6458983,-0.24165322,0.062084105,0.14131553,0.28091753,-0.06481851,0.2215787,-0.13829407,-0.5720354,-0.24476062,-0.09048865,0.05114956,0.00428825],[-1.9029608,0.34790626,0.2843667,-0.37467235,0.09965191,0.57280195,-0.17685397,-0.11966289,0.2557388,0.055247348,-0.2157288,-0.08949254,0.4247985,-0.16542377,0.18466538,0.19807269,-0.23189463,0.09547625],[-0.00062151457,0.1738365,0.17885163,-0.57136464,0.012507409,0.7827646,-0.87514424,0.27497044,0.32263565,-0.13115652,-0.28708053,0.9652118,0.20607184,-0.5144796,-0.47407618,-0.042873062,0.12893395,0.18263417],[0.025652306,-2.0052488,-6.667998,0.4208965,1.2458491,0.3907362,1.0876682,-0.3848656,-1.4246505,-0.61824685,1.1011258,-1.3024,-0.37421313,0.12721808,0.6561884,0.37722364,0.08510617,0.3396205],[1.99233,0.6377857,0.28082734,-0.385711,-0.23865217,0.99780643,-0.48828554,0.08000757,0.029273741,-0.082829274,-0.1007471,0.2732823,0.0831288,-0.6843401,0.6745747,0.19553038,0.15868916,-0.2637087],[-0.035898842,-0.044465996,0.013378123,0.08511469,0.28486708,1.4638215,-1.2811527,-0.0017351665,-0.13274787,0.10752207,0.10370681,0.5822642,-0.12452679,-0.58151734,0.121833816,-0.2511263,-0.25619733,0.2831056]],"activation":"σ"},{"dense_2_W":[[-0.8841406,0.4347669,0.84688157,-0.0004789553,-0.5473451,-0.39614245,0.6071275],[-0.59437585,0.033965513,0.24382767,0.5086613,-0.5668177,0.4027159,0.6990393],[0.27216327,0.11812625,-0.6145046,-0.052390628,-0.39457545,-0.293586,-0.3356249],[-0.66689086,-0.19540851,-0.3679948,-0.36721542,-0.4817769,-0.4075158,-0.67281103],[-2.0079339,-0.15370838,0.8236128,0.6912437,0.29243928,0.94582,0.35805795],[0.6160914,-0.4700829,-0.29550225,-0.45972148,-0.2371927,-0.22895168,-0.22462685],[0.21214539,-0.38577923,-0.15344645,-0.3005762,0.33333546,-0.36551368,-0.67323405],[0.26780415,-0.6526573,-0.26887926,-0.39421728,-0.63939315,-0.06335249,-0.06702983],[-0.64520854,-0.13833176,0.710947,0.49081513,-0.67323875,0.88580966,0.07329091],[0.70333093,0.27374974,-0.185739,-0.64055556,0.6837862,-0.8216412,-0.7543152],[-0.08852291,-0.24456227,0.64587975,-0.25254932,-0.8361469,-0.0998585,0.41330463],[0.76102114,-0.52449924,-0.39964664,-0.28608727,-0.010932956,0.20352012,-0.34879187],[-0.5587552,-0.061310817,0.3489882,0.6867392,-0.19598259,0.6264299,0.19196412]],"activation":"σ","dense_2_b":[[-0.3371589],[-0.34260237],[0.0060174274],[-0.14280829],[-0.79392904],[0.1485932],[0.10975139],[-0.21955685],[-0.25368217],[0.059160925],[-0.105888784],[0.061584476],[-0.27724692]]},{"dense_3_W":[[0.599121,-0.09533889,0.046242982,-0.34005862,0.9232934,-0.63216597,-0.14118026,-0.520665,0.07688401,-0.7621056,0.41081268,-0.507315,0.26893604],[-0.13292964,-0.5938322,-0.14970674,-0.35914317,-0.34032637,0.4124289,0.4949658,-0.009953369,-0.6471148,0.6008697,0.5047356,0.4261539,-0.49192414],[-0.40530923,-0.49001616,0.48234347,0.23525164,0.13179244,0.6979752,0.19944161,-0.3692451,-0.49022684,0.55492526,0.17020899,-0.2596992,-0.27337795]],"activation":"identity","dense_3_b":[[-0.018591681],[0.05460255],[0.024361271]]},{"dense_4_W":[[0.7731739,-0.2942781,-0.54992497]],"dense_4_b":[[-0.021991715]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42170x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42170x00x00x00x00x00x00'.json deleted file mode 100755 index c44df15868..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42170x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.6815405],[1.3625606],[0.58612674],[0.04494688],[1.3312421],[1.3441323],[1.3557953],[1.3301966],[1.3021425],[1.2688354],[1.2291747],[0.044845853],[0.044869147],[0.044881903],[0.044806324],[0.04471491],[0.044416413],[0.04393822]],"model_test_loss":0.010017327032983303,"input_size":18,"current_date_and_time":"2023-08-12_17-39-46","input_mean":[[22.628992],[-0.11303276],[0.007194183],[-0.0077724075],[-0.11107788],[-0.112366706],[-0.11259246],[-0.11006202],[-0.10841513],[-0.104063615],[-0.09847846],[-0.0077845864],[-0.0077784657],[-0.0077716475],[-0.007819506],[-0.007886005],[-0.0080318935],[-0.0081485715]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.21272992],[-0.40113866],[-0.046252824],[-1.1976674],[-1.8280349],[0.43455112],[0.41996923]],"dense_1_W":[[-0.014234041,-0.78265864,-0.13875955,0.18335098,0.23734437,-0.50521135,0.36379108,-0.4259525,0.4898528,0.0040126243,0.019784093,-0.032719463,-0.4327173,-0.12524551,0.7217114,0.05992928,0.002012295,-0.20088603],[-0.036329545,-0.9737573,-5.137863,0.083788216,-0.005417048,-0.17019805,-0.02595917,0.034362078,-0.2063752,0.23753147,0.70431274,-0.3613305,0.05551018,0.15823703,0.08872215,0.075007804,0.04234053,-0.056786302],[0.00834581,-0.96139866,0.014483826,0.055574536,0.22303146,-1.4104741,0.92028916,0.087765716,-0.16381508,0.3775856,-0.3001809,0.12152302,-0.42909965,0.40768436,0.0117414165,-0.14114279,-0.15148588,0.26370925],[-0.52212185,-0.03799507,0.24594627,-0.28721508,-0.13069189,0.75029343,-0.48417374,0.043601163,0.30521616,0.23167257,0.03514275,0.32121775,0.11313678,-0.6157623,0.16969404,0.1570377,-0.20692776,0.15328379],[-0.72681564,-0.06951357,-0.28516898,-0.08874456,0.046744134,-1.0358999,1.0505315,0.013021108,-0.5818019,-0.11940496,-0.08663402,-0.30453667,0.6163768,0.28448704,-0.41274244,0.1396545,0.027995694,-0.04543083],[1.1373413,-0.22728406,0.34642276,-0.19258007,0.7746351,-0.67045534,0.95286924,-0.21672118,0.0045977663,-0.18956426,0.669332,0.022881322,-0.15852845,-0.11712322,0.21890385,-0.047339663,-0.076035015,0.09771824],[1.158495,0.4386377,-0.3719728,-0.2144668,-0.28061992,0.37479827,-1.125051,0.20529382,-0.20885709,-0.18522696,-0.35365984,0.9139095,0.5455004,-0.16538139,-0.90117735,-0.37809762,0.024544928,0.43491235]],"activation":"σ"},{"dense_2_W":[[0.9442889,0.06396063,0.1758221,-0.9002739,0.51660156,0.6283171,-0.15372173],[-0.21146928,-0.46287906,-0.3174703,0.52997434,-0.60623443,0.4278871,0.5900774],[0.36982772,-0.58558965,1.3331947,-0.12588388,0.73645073,0.71320856,-0.82657343],[0.9362422,0.39615652,0.15127127,-0.60997945,0.20599456,0.57852656,-0.34932035],[-0.051511385,-1.3649589,-0.30547243,0.5103264,0.15643549,-0.6987231,-0.78192246],[-1.0683442,0.5136093,-0.5176573,0.054374628,-0.79540557,0.30752757,-0.2061963],[-0.09987685,-0.041346654,-0.9594419,0.56500435,-0.41152915,-0.21413708,0.30724752],[0.24056341,0.9189844,1.2736111,-0.57043445,-0.6264625,1.476869,-0.63796276],[-0.39368296,-0.5534738,-0.6872756,-0.3378118,0.019038709,-0.16970441,-0.6788282],[-0.43239704,0.4175175,-1.1101261,0.14615986,-0.51680034,-0.4460474,0.18916978],[0.34036997,-1.2931368,0.24365155,0.36805943,-0.8831002,-0.78154045,-0.9917771],[-0.32418334,-0.21353374,-0.8684678,0.71919113,-0.3519593,0.29612234,-0.24847104],[-0.6143994,0.334264,-0.738587,0.38311487,-0.8502191,0.24822249,0.52923447]],"activation":"σ","dense_2_b":[[-0.046749797],[0.15821725],[-0.14121938],[-0.00466868],[-0.21171582],[-0.12640443],[-0.01650508],[0.043904293],[-0.39722887],[-0.041803863],[-0.17979127],[0.04611048],[-0.08694865]]},{"dense_3_W":[[0.47707623,-0.55884546,0.3642584,0.61173815,-0.45111135,-0.58238584,-0.6464996,0.51249677,0.17997093,-0.21995978,-0.25227636,-0.19393432,-0.58519727],[0.41195044,-0.34169996,0.24929023,0.4966983,0.04403884,0.22156799,-0.3648181,-0.08629075,-0.32962176,-0.35790387,-0.23305754,-0.5900693,-0.55587316],[0.16219983,-0.60253245,-0.13929227,0.70285386,-0.39211234,0.26089627,-0.09964737,0.33340716,0.12721112,0.27053747,-0.23665811,-0.37967107,-0.61005354]],"activation":"identity","dense_3_b":[[0.047260348],[0.057699345],[0.0503478]]},{"dense_4_W":[[-1.0821502,-0.70280385,-0.16161306]],"dense_4_b":[[-0.045549482]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42171x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42171x00x00x00x00x00x00'.json deleted file mode 100755 index e36c7414c1..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42171x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.850636],[1.0534494],[0.559162],[0.039194528],[1.0216674],[1.0324214],[1.0434673],[1.0372584],[1.0196428],[1.0042849],[0.98527515],[0.039155982],[0.039141923],[0.03912828],[0.03902883],[0.03896556],[0.03880961],[0.03858737]],"model_test_loss":0.007366378325968981,"input_size":18,"current_date_and_time":"2023-08-12_18-05-25","input_mean":[[22.558586],[0.012600959],[-0.0025238749],[-0.0026826798],[0.012323804],[0.012055752],[0.012161658],[0.01208182],[0.013478406],[0.012696328],[0.0117868],[-0.0026575418],[-0.0026759468],[-0.0026921802],[-0.0026960133],[-0.0027045996],[-0.0027334057],[-0.0027859134]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[4.3723984],[-0.15515873],[0.11519163],[0.06005554],[3.4827287],[0.42637882],[-0.33662567]],"dense_1_W":[[1.635911,-0.8581116,0.60294753,0.22644173,0.56974345,0.537524,-0.28151554,0.49941906,0.39198443,-0.07235275,0.006073699,0.14474358,-0.32794192,0.13542445,-0.119024836,-0.14169936,0.3387417,-0.20942728],[-0.346328,-0.5516171,0.080080934,0.10132348,0.4069819,-1.2606146,0.53356946,-0.32096785,0.14152372,-0.19885544,-0.006135965,-0.4611887,0.13272883,0.46906894,0.044298,-0.22844265,-0.070147365,0.20264639],[-0.0017895487,0.4250715,3.6650927,0.09883716,-0.20037115,-0.10519589,-0.31081927,0.33351684,0.6235205,-0.24577214,-0.35088176,0.16477962,0.08359709,-0.12857589,-0.35176766,0.08673794,0.0882971,-0.0059149545],[-0.11156434,-0.07133895,-0.11842378,-0.2705628,0.3160349,-1.201357,0.64614654,-0.29452515,-0.03474319,0.040595938,0.13474983,-0.34016025,0.29270774,0.2156598,0.2662016,-0.095750175,0.18576562,-0.1266449],[1.566436,0.40248048,-0.5471031,-0.2949783,-0.33196628,-0.70656186,0.41840243,-0.17929772,-0.5059166,0.11792245,-0.014220853,0.08556844,-0.29646376,0.3219811,0.003027516,0.2374258,-0.16363016,0.069542915],[1.1214007,0.76452684,-0.106327794,0.3591528,0.45266876,-1.0236844,0.8478621,0.6426136,-0.08401936,0.3613498,-0.2025572,0.16258357,-0.3565566,-0.0661512,-0.29554963,0.25371164,-0.3117673,-0.017764365],[0.15459706,-0.6427235,-0.107100666,0.15153684,0.6515941,-1.4472166,0.28652865,0.64169884,-0.013493055,0.084728494,-0.08627843,-0.32101175,-0.511683,0.23642686,0.5705781,0.32341844,0.04121637,-0.35112992]],"activation":"σ"},{"dense_2_W":[[-0.7762452,-0.849805,-0.46875656,-0.74493283,0.18020831,-0.4340312,0.25214154],[-0.29184672,-0.7365605,-0.595678,-0.13487294,-0.027134769,-0.20032321,-0.112272106],[0.58472466,-0.82953453,-0.005004089,-0.5499627,0.17766191,-0.20011434,-0.5746712],[0.18799576,-0.08261969,-0.26112568,-0.27001104,-0.38785893,0.10126745,-0.7606747],[0.44626936,0.12008678,0.2681783,-0.8564858,0.13984889,0.1533924,-0.8285644],[0.034566738,0.8191327,-0.3085401,0.77344036,-0.120254815,0.10792034,0.12895963],[-0.74384415,0.62587434,-0.0201533,0.43589312,-0.37061056,0.17112038,0.5242522],[0.2502627,-1.4431168,0.52936316,0.5863533,-1.8113189,-0.40397888,-0.21871096],[-0.6663258,0.44417387,-0.7050019,0.6507446,-0.296155,-0.55173874,-0.3932162],[-0.3191022,-0.4508303,-0.6623701,-1.0217099,-0.26747382,-0.14080943,0.05274293],[0.7867121,-0.5575085,0.38432392,0.3111023,-2.326249,-1.2271587,-0.10263035],[-0.01625549,0.5269726,-0.6120971,0.53062654,0.41914165,0.58355737,0.03725023],[-0.14983092,-0.43453297,0.32586545,0.15301059,-0.298674,-0.38269258,-0.12950632]],"activation":"σ","dense_2_b":[[-0.2599826],[-0.23439017],[0.092643164],[0.010998941],[0.09755141],[-0.10229962],[-0.06416034],[0.17825136],[-0.17380705],[-0.22213228],[-0.01849935],[-0.037762668],[-0.034081236]]},{"dense_3_W":[[0.24201153,0.27176222,0.48346063,0.45460057,0.5518781,0.11765685,-0.45951,0.040261418,-0.32136354,0.42783323,0.2824862,-0.4817042,-0.3478935],[0.25385153,0.13409254,-0.61687577,-0.41602758,-0.31623435,0.6585921,0.4292418,-0.48805797,0.1712523,0.39033636,-0.45903277,0.52522135,-0.5536476],[-0.42142174,0.49712908,0.0066777696,0.19092213,-0.19024393,-0.51191115,-0.51730525,-0.145093,-0.37869886,-0.6067165,0.27452636,0.5235049,0.5219291]],"activation":"identity","dense_3_b":[[-0.0019366292],[-0.004374928],[0.023441652]]},{"dense_4_W":[[1.1235595,-1.012536,-0.048990816]],"dense_4_b":[[0.00054319843]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42180x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42180x00x00x00x00x00x00'.json deleted file mode 100755 index f6e6875fb6..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42180x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.5956964],[0.71566606],[0.40817738],[0.030724205],[0.697758],[0.7050867],[0.7110168],[0.7090755],[0.704616],[0.7050678],[0.7017272],[0.03057917],[0.030627273],[0.030674666],[0.030662438],[0.030695168],[0.030730452],[0.030547515]],"model_test_loss":0.005593742243945599,"input_size":18,"current_date_and_time":"2023-08-12_18-31-36","input_mean":[[18.236588],[0.10607195],[-0.03237979],[0.01414653],[0.10869373],[0.10751717],[0.10631519],[0.095033936],[0.09223452],[0.08335266],[0.075875334],[0.014149798],[0.014185712],[0.014213116],[0.014326014],[0.014364046],[0.014352649],[0.014447873]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.21198542],[-2.6553576],[0.20141259],[0.95158356],[-0.5720143],[0.39397573],[-0.4670486]],"dense_1_W":[[-0.00029343241,-0.49663246,0.017366314,-0.12524623,0.020472532,-0.89937484,0.38001934,0.084407,0.0400682,-0.055563126,-0.091518156,-0.057863355,0.076088704,-0.047266904,0.11677408,-0.11511501,0.08395411,0.07032127],[-1.1604841,0.50435513,0.10866094,-0.38009703,-0.067992724,0.8220403,-1.8998632,0.6885379,0.45261034,0.09571614,-0.39597392,-0.3781081,0.03911253,0.39478612,0.39906728,0.059939872,0.06685323,-0.2039767],[0.86580884,-0.6447551,0.06702498,0.3656542,0.49015638,-1.1621298,0.70610285,0.38969237,0.4859566,0.36371088,-0.5152764,-0.43576756,-0.3097063,0.059733965,0.5456647,0.20413095,-0.28141046,-0.13499509],[0.9506561,0.33130687,0.055115584,-0.35157964,0.1601246,0.5376464,-0.7747868,-0.28408384,0.09547507,-0.23935354,0.24678634,0.25146312,0.43105263,0.010345131,-0.64360464,-0.1637928,0.4655862,-0.011340331],[0.011468432,1.1100329,6.454579,-0.09630004,-0.09938363,-0.035011847,-0.51070076,0.32011735,0.28890565,-0.0070284377,-0.8069142,0.36875013,-0.10292811,0.04136438,-0.4851647,0.10500297,0.22695696,-0.022597108],[0.55722225,0.2913517,0.06907888,-0.1502978,-0.5804214,1.1116054,-0.7745691,0.1985203,-0.11460045,0.14750798,-0.1172053,-0.00924517,0.25824112,-0.13810264,0.19143151,-0.018714879,-0.36252472,0.21987407],[7.108331e-5,-0.16992536,0.5472812,-0.37839067,0.18227997,1.005237,-0.9246754,0.05019804,0.19119476,0.20836721,-0.09654861,0.2401787,-0.40744683,-0.31037423,0.24721394,0.035022534,-0.0010219115,-0.37515312]],"activation":"σ"},{"dense_2_W":[[0.031580374,0.32096317,0.08259337,0.48913407,-0.24779709,0.47663438,-0.27535772],[-0.7346924,-0.08216103,0.05271296,-0.2585462,-0.16613883,0.035694335,0.6171577],[0.37460434,0.7498522,-1.41457,-1.657875,-1.2513721,-1.2112695,0.19442175],[-0.43960452,0.89257705,-0.25445974,0.07596238,-0.4224754,0.4412636,0.714036],[-0.21586035,-1.074201,0.49453756,-0.54887825,0.26405144,-0.68578094,-0.7791566],[-0.38307914,0.5247953,-0.21214375,0.52114254,0.33317557,0.21650434,-0.05312382],[0.46901834,-0.32129788,0.8633818,-0.29700297,-0.2139187,-0.39682165,-0.5993696],[1.3140488,-0.8290484,1.0804474,0.47383633,-0.5198381,-0.58393943,0.035804532],[-0.22552004,0.030722179,-0.70003814,0.339238,-0.08206504,-0.425623,-0.1990634],[0.71316224,-0.49133265,0.12954167,-0.7012649,-0.14375544,-0.21532835,-0.18687665],[0.99007577,-1.001546,0.5625099,-0.7423299,0.2236182,-0.14007774,-0.33882037],[-0.5948786,0.55410933,-0.36279666,0.11258444,0.5546571,-0.18480037,-0.37986085],[-0.9709514,-0.048795592,-0.0681278,0.24821533,0.3230478,0.041420642,0.60907954]],"activation":"σ","dense_2_b":[[-0.08150623],[-0.09351969],[0.036499698],[-0.12114925],[0.1371385],[-0.17559104],[0.16320653],[0.39418298],[-0.25063452],[0.045626037],[0.14293382],[-0.19067796],[-0.14629959]]},{"dense_3_W":[[0.1686224,0.077352226,-0.7372458,0.54665744,-0.39950836,0.30807123,-0.34158686,-0.50262797,0.31327793,-0.1562205,-0.21310961,0.46808118,0.6072344],[-0.38100314,-0.32793987,-0.36607596,0.250266,-0.46443465,-0.37167656,0.50372356,0.51983595,-0.038650624,0.008295879,0.07703269,0.04023035,-0.12850939],[0.27967122,0.4289127,-0.5830814,0.40497577,-0.31304854,0.30774248,-0.46728247,-0.48856315,-0.5128953,-0.46290538,-0.5038767,0.021850327,0.48637435]],"activation":"identity","dense_3_b":[[-0.030914357],[0.019430986],[0.018790174]]},{"dense_4_W":[[1.097547,-0.026450653,0.49955416]],"dense_4_b":[[-0.025014628]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42181x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42181x00x00x00x00x00x00'.json deleted file mode 100755 index 2570b49139..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42181x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.209153],[0.56191576],[0.30280617],[0.029290121],[0.56198466],[0.5629255],[0.5632454],[0.5529423],[0.5457737],[0.5399884],[0.5333994],[0.029308232],[0.029312193],[0.029313201],[0.029210748],[0.029177375],[0.02916549],[0.029083245]],"model_test_loss":0.0059767006896436214,"input_size":18,"current_date_and_time":"2023-08-12_18-56-01","input_mean":[[21.154913],[0.010469119],[0.00451821],[0.020266687],[0.009149304],[0.0099420305],[0.010431521],[0.011106589],[0.013026866],[0.015419768],[0.018629367],[0.020197067],[0.020221224],[0.020262599],[0.020369908],[0.020377211],[0.02038677],[0.020427668]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.032562368],[0.2667309],[-3.3975918],[-0.16405424],[3.4655445],[-7.2675724],[-1.1106223]],"dense_1_W":[[0.2530883,0.53237253,0.022144921,-0.20935972,-0.5053756,1.1278487,-0.7458744,-0.03808766,-0.08444307,0.12516658,-0.025194744,0.5732315,-0.14615831,-0.35127425,-0.15609278,-0.081573084,0.2889299,-0.056264035],[0.34920308,0.17837015,-0.018961329,0.22636858,0.41322023,-1.1747947,0.8681209,-0.53292376,-0.44061154,0.23169354,0.09196306,-0.4216225,-0.040040225,-0.028847596,0.5770588,-0.04013367,0.15739974,-0.29588875],[-1.2440773,2.9741986,-0.015545401,0.6699104,0.10026246,2.3330846,2.2823873,-0.6999431,-3.0649312,0.6264743,1.9608381,0.023817599,-0.6748272,0.24278682,-0.4272999,0.48700577,-0.053938422,-0.14937739],[0.12704581,-0.74948984,-5.975789,-0.3972795,0.97803533,-0.7561826,0.34060618,-1.0813448,-0.4782963,0.5196659,0.56873465,-0.14966846,-0.20922862,0.39868122,-0.17166515,-0.09302081,0.5862183,0.30957884],[1.4973711,-1.017241,0.020719383,-0.7863886,0.08703435,0.023158638,0.9363649,0.34963033,0.030911481,0.08855366,-0.034877688,0.09213344,-0.2908485,0.6495234,0.08364163,0.039586175,0.41629386,-0.2841797],[-2.6902182,-1.454271,0.010997178,-0.28280547,0.757442,-0.34354633,1.3582447,-0.3404384,-0.058033567,0.22861616,0.13654716,-0.35976127,0.3847413,0.6788782,-0.13538547,-0.715732,0.10295989,0.2687211],[0.7631619,-3.5063555,-0.0073654596,-0.5252896,-2.02067,-3.7005508,-1.8967742,-0.3488098,-0.4290062,-1.0894184,-0.8274565,0.20361504,-0.06869336,-0.00241295,0.15396996,0.13525395,0.19794835,-0.16415168]],"activation":"σ"},{"dense_2_W":[[-0.48136654,-0.9834331,0.32757175,-1.0854254,-1.5122548,0.03486615,-0.36054364],[-0.54480904,0.4169905,-0.61831635,0.10131936,0.5399218,0.059965108,0.30036604],[-1.655585,0.38479826,1.2823216,0.40274566,-0.2841753,2.3214834,-0.7712572],[0.61412394,-0.25269333,0.42487213,0.27490515,-0.10738923,-0.2351683,-0.027205668],[0.016566647,-0.8527608,-1.2557126,-0.6651972,-0.2184166,-1.6755227,0.7370958],[0.87999916,-0.8127039,0.2320283,0.12997639,-0.026233492,-0.923599,0.28825673],[1.0059335,3.5542972,-2.7622373,0.606758,2.7553868,-3.272648,3.1044261],[1.2445208,-0.57529145,-0.018139282,0.16910729,-0.47984317,-0.32202503,-0.40446222],[0.59024185,-0.15905726,-0.0014694524,-0.13362607,0.05351007,-0.23868667,-0.34731996],[1.6630312,0.10935514,2.5811799,-0.5959014,1.0950274,-2.4247248,-0.32879606],[0.42110145,-0.5520846,-0.30354732,0.4258476,0.12350095,-0.42948973,-0.33731243],[-0.10480609,1.0622531,-0.70043504,0.7745802,1.81419,-0.5862416,0.9866968],[0.892946,-0.8087333,0.85307103,0.16791096,-0.089219026,-0.49379104,-0.23497693]],"activation":"σ","dense_2_b":[[-0.15048273],[-0.005168303],[-0.033159684],[-0.1512387],[-0.26582178],[-0.069072716],[0.8422594],[0.08777569],[-0.010337959],[0.4020618],[-0.13930158],[0.27973402],[0.022490095]]},{"dense_3_W":[[0.023880383,-0.64809823,-0.04122315,0.5025599,-0.37605396,0.44815058,0.2004994,0.12245838,0.060301386,-0.092283376,0.20429155,-0.4129402,0.1394047],[0.13174233,0.12339004,-0.77201855,0.41352215,0.20950833,0.6537427,-0.7955242,0.025324047,0.0014908814,0.63648015,-0.014125444,-0.052981257,-0.31764406],[0.73352814,-0.40766987,-0.43053687,0.12957405,0.37287924,0.381178,-0.84177256,0.78270406,0.44731426,0.5089168,0.26753783,-0.45765585,0.35287583]],"activation":"identity","dense_3_b":[[-0.03262107],[-0.05573517],[-0.069711655]]},{"dense_4_W":[[0.03428719,0.48351324,1.3998046]],"dense_4_b":[[-0.06378867]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json deleted file mode 100755 index e7ee2b96ae..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.59677],[1.2723572],[0.5889571],[0.044212513],[1.2523131],[1.2586851],[1.2638719],[1.2450465],[1.227399],[1.2008731],[1.1704836],[0.044007845],[0.044053588],[0.04408408],[0.044052377],[0.043957964],[0.043728314],[0.043399837]],"model_test_loss":0.007355204783380032,"input_size":18,"current_date_and_time":"2023-08-12_19-23-58","input_mean":[[22.276354],[-0.037774753],[-0.007627978],[-0.011369784],[-0.037570585],[-0.038871903],[-0.040346414],[-0.040468186],[-0.040564455],[-0.03907898],[-0.037528113],[-0.011408063],[-0.011410129],[-0.011406415],[-0.0112786535],[-0.011247568],[-0.011202381],[-0.011247169]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.5261913],[-3.268581],[-0.029488502],[0.19144095],[-0.13675566],[0.12416384],[3.4747343]],"dense_1_W":[[-0.05226453,-0.24290532,-0.006649759,-0.2001671,0.09439727,-0.8264187,0.89495164,0.10392995,-0.09171039,-0.025333034,-0.018208345,-0.0045733196,0.07264264,0.17861007,0.2659576,-0.2747786,-0.35005352,0.31092092],[-1.4148408,-0.5394024,-0.25498414,-0.19303249,-0.2991067,-0.4224668,1.5064957,-0.47802028,-0.10831802,-0.091429316,-0.19356096,-0.3577177,0.48197216,0.13847184,0.45745626,-0.6015107,-0.19103733,0.25586933],[-0.015936209,-0.49370927,0.019225124,0.28393698,0.3275402,-1.0504159,0.8342227,-0.47017115,0.261455,0.11170544,-0.2031133,-0.6536298,-0.1680887,0.4808763,-0.014751369,0.033018075,0.37287006,-0.33709157],[-0.058008436,0.2024408,0.010655787,0.08164171,0.07408095,0.9617647,-1.2104056,0.081101894,0.20298839,0.08843122,-0.038386825,0.12976207,0.15168756,0.2055462,-0.6481027,-0.41196758,0.44144708,0.039478734],[0.006327593,1.225342,5.0604053,-0.32776642,-0.7639897,0.25207078,-0.25701052,0.27489042,0.7114278,-0.030908214,-1.028742,0.5304315,0.58392227,-0.3043921,-0.20152508,-0.217611,-0.5092573,0.44345003],[-0.005554315,0.6300724,-0.008829019,0.120132565,-0.0025714925,0.65304613,-0.54008144,0.36489114,0.60639745,-0.013963489,-0.41547593,-0.08670717,-0.31030667,0.011262129,0.0887775,-0.084896035,-0.3349578,-0.08532151],[1.4905181,-0.054565854,-0.26902393,0.3803058,-0.16003686,-0.19756374,0.59131384,-0.33023885,-0.21001525,-0.16574259,-0.14300068,-0.40850276,0.3227794,-0.06551579,-0.043412447,-0.26335156,0.075089745,0.0049520573]],"activation":"σ"},{"dense_2_W":[[0.6818973,0.09662785,0.85118216,-0.5597033,-0.51376563,-0.54998875,1.1681647],[0.11423674,1.5319918,0.5061838,-0.93979394,-0.83879524,-0.30968133,-0.8372116],[0.10013085,0.99290025,0.58343273,-1.0841141,-0.051542744,-0.5877158,-0.34524262],[0.30525035,2.2245643,0.78550303,-1.3862584,-0.86583656,-1.0520891,-0.75581723],[0.42648727,0.535297,0.8396946,-1.0172952,0.33770114,-1.0176997,-0.2623012],[-0.8693874,-0.047947355,-0.5417374,0.7271871,0.28763005,0.6387064,-1.211415],[0.24115744,1.5529282,0.49222645,-1.2373098,-0.4833875,-0.2019102,-0.48312268],[0.067739554,1.5064629,0.62205225,-0.7509757,-1.1738783,-0.25657117,-0.88183194],[-0.8212304,-0.18271463,-0.057214897,-0.032312606,0.24952747,-0.11964027,-1.2044641],[-0.93778396,0.48313844,-0.7947098,0.005431058,0.4053761,0.51689285,-1.1750771],[-0.97015196,0.19310886,-0.8617701,0.16075231,0.02563181,0.19641571,-0.2102881],[-1.4093407,1.1116021,-1.282566,0.67514616,0.7852251,0.6313887,-1.5295231],[-0.7758126,-0.17416649,-0.65078825,0.99865323,-0.19658208,0.2925777,-0.52684647]],"activation":"σ","dense_2_b":[[-0.007298762],[-0.5215708],[-0.26419812],[-0.39559385],[-0.1565479],[-0.04413851],[-0.48452112],[-0.63588786],[-0.060304374],[-0.08904473],[0.00323588],[0.005885602],[0.16125442]]},{"dense_3_W":[[0.6738338,0.24916402,0.48290968,0.9055114,0.4307571,-0.6490499,0.77687776,0.041201606,-0.46112925,-0.6019568,-0.7511755,-0.5311844,-0.9066927],[0.55784255,-0.05097351,0.6607086,0.01611087,0.48693258,-0.5370103,-0.2871033,0.40592095,-0.09984769,-0.1430968,-0.6162407,-0.5603644,-0.298156],[0.056438137,-0.6330188,-0.16844268,0.7197222,0.15123138,0.111305945,0.41622633,0.04650888,0.45203698,-0.6876475,0.39633313,-0.6461186,-0.060092986]],"activation":"identity","dense_3_b":[[-0.07432213],[-0.06564714],[-0.075471886]]},{"dense_4_W":[[-0.7008827,-0.1666988,-0.049054958]],"dense_4_b":[[0.071705334]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json deleted file mode 100755 index b61e726f55..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.78665],[1.1481314],[0.5406096],[0.039362922],[1.122932],[1.1308159],[1.1390376],[1.132657],[1.116679],[1.0969441],[1.0693002],[0.03927925],[0.039297566],[0.03930563],[0.0391093],[0.038840305],[0.03844836],[0.03801854]],"model_test_loss":0.006799423601478338,"input_size":18,"current_date_and_time":"2023-08-12_19-50-55","input_mean":[[22.356323],[-0.06985197],[0.00034995607],[-0.006157977],[-0.06978653],[-0.070587754],[-0.07151841],[-0.06944062],[-0.0665041],[-0.06379645],[-0.056661922],[-0.006219425],[-0.0062195924],[-0.0062180334],[-0.0062626824],[-0.006254376],[-0.0062909345],[-0.0063469317]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.26157844],[-3.8585093],[-0.056915253],[0.4083386],[0.12701957],[3.294551],[-0.011678797]],"dense_1_W":[[-0.017985545,-0.8749716,-0.05120776,0.67056817,0.1291728,-0.97086567,0.46367484,-0.20084848,0.33947694,0.118452,-0.07002966,-0.34398422,-0.027073678,0.5324926,0.094694346,0.5049914,0.31055605,-0.0054265293],[-1.4531353,0.09739576,-0.27593565,-0.3858397,0.09826383,-1.2416679,1.3741181,-0.5542574,-0.5062809,0.07726387,0.020567052,-0.49037158,0.21178146,0.7057941,0.033919472,0.1661194,-0.23747294,0.034861527],[-0.0022317865,1.2110817,5.054823,-0.3174173,-0.5742262,-0.15558177,-1.1665634,0.4472988,0.7720721,0.88218236,-1.1828778,0.6001719,-0.02098756,-0.3855406,-0.040552955,0.013535376,-0.0024735162,0.12027036],[-0.11180433,0.16049975,0.03677955,0.12961647,-0.2533068,1.1377895,-0.8505473,0.22427894,-0.13692026,-0.008696595,0.07835157,0.09832897,-0.14512521,-0.122960515,-0.024571015,0.11796106,-0.04595939,-0.025691045],[-0.3685039,-0.23575602,0.066452056,-0.07549508,0.41795194,-0.64417434,0.42375267,0.11620539,-0.27086356,-0.21933734,0.3035312,-0.105002984,-0.06251225,-0.01299668,0.26163852,-0.068665646,0.29290092,-0.22712018],[1.2734846,0.058355737,-0.24286984,0.37113938,-0.109489724,-0.5431782,0.74100715,-0.44564164,-0.23814303,0.03617263,-0.045741204,-0.4850852,0.37123144,-0.04264438,-0.179189,0.18089756,-0.20485662,0.024584953],[-0.008104353,-0.44774678,0.017182589,0.25728852,-0.18980739,-1.1090665,1.0207343,0.018984688,-0.23286112,0.07714398,-0.066708885,-0.42167252,0.033037923,-0.10394543,0.2788337,0.29151297,-0.11658049,-0.12395523]],"activation":"σ"},{"dense_2_W":[[-0.006371241,0.07629968,0.4152738,0.45680737,-0.399096,-1.0571772,-0.77203304],[-0.114975244,-0.78080434,0.33340687,0.5302852,-0.30048347,-0.95070535,-0.059019156],[0.0917907,-0.6346803,-0.03395308,0.27547774,-0.5208018,-0.56345195,-0.42710516],[-0.53994197,-0.08138468,-0.10966242,1.0073916,-0.22134155,-0.4202999,-0.558325],[-0.0911323,0.1374469,-0.05927406,-0.18155636,0.46053857,0.037110776,0.6041021],[0.044924278,1.207312,-0.80209786,-1.0643513,-0.19404407,-0.4108685,0.552001],[-0.20629992,0.87369746,0.38171571,-0.8638534,0.297487,0.10098056,0.809521],[-0.112105414,0.162961,-0.2513493,-0.67849934,0.5619054,0.33094102,0.75464505],[0.27615786,0.43389356,-0.113371626,-1.0247736,0.27918342,-0.2875816,0.69900244],[0.09716652,-0.2904934,0.36968207,0.40281,-0.42739582,-1.1725587,-0.46363854],[0.013255812,-0.4462732,0.1877262,0.54117006,0.09497548,-0.9675889,-0.5686861],[0.2776247,-0.28995666,0.21805735,-0.6418641,-0.6156117,0.044422686,2.309031e-5],[0.26508242,0.77385896,0.0650336,-0.37672806,0.4043684,0.22012536,0.032721337]],"activation":"σ","dense_2_b":[[-0.10330615],[-0.033679716],[0.045983385],[0.11898316],[-0.08782593],[-0.23800431],[-0.1865168],[-0.00038356465],[-0.15165646],[-0.14285177],[-0.032520227],[-0.14164776],[-0.17053805]]},{"dense_3_W":[[-0.45539868,-0.3461434,-0.62710863,-0.75514674,0.14802113,0.7396569,0.13793553,0.5599326,0.21306054,-0.16648014,-0.70004004,-0.02903243,0.519504],[-0.3650457,-0.3078859,0.5707353,0.12494614,-0.4517208,0.6094919,-0.27713495,-0.5677946,0.530929,0.026477134,0.34963655,0.25523546,0.07211842],[0.40082094,0.29107258,0.15391554,0.028763723,-0.07464035,-0.20093055,-0.6449461,-0.21919955,-0.18354571,0.67392844,0.4189149,-0.19322155,0.3498275]],"activation":"identity","dense_3_b":[[-0.002849253],[0.04010156],[-0.008000429]]},{"dense_4_W":[[-1.1442624,-0.018074226,0.46292245]],"dense_4_b":[[0.00046221056]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json deleted file mode 100755 index cbba3e3e97..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.339975],[1.3256136],[0.593127],[0.04754541],[1.3010378],[1.3100988],[1.3191553],[1.2989383],[1.2751849],[1.242973],[1.2088765],[0.047443245],[0.04748061],[0.04751091],[0.047400266],[0.047291804],[0.0470829],[0.04672949]],"model_test_loss":0.007941454648971558,"input_size":18,"current_date_and_time":"2023-08-12_20-18-02","input_mean":[[22.804787],[-0.0012492489],[0.0049283556],[-0.0027200934],[-0.0009171635],[-0.0005450689],[-0.00045307644],[0.0014277239],[0.0042266008],[0.004571549],[0.007173938],[-0.002649595],[-0.0026737156],[-0.002687819],[-0.0027264915],[-0.0028076714],[-0.0028791525],[-0.0030240817]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.05866234],[4.095448],[0.05124582],[-4.5607123],[-0.5631151],[0.019527452],[-0.044129238]],"dense_1_W":[[-0.030550428,-0.08043591,0.08307903,0.24843186,0.23929211,0.71641713,-0.8338393,0.16555603,0.2527681,-0.11340044,-0.034163836,0.21635275,0.48766017,-0.4958458,-0.12009069,-0.45047837,-0.40487534,0.5188204],[1.3933464,0.39291653,0.20624635,0.28392497,-0.20537527,0.33041698,-0.82583904,0.5374484,0.5927526,0.05136005,0.06089886,0.0043515163,-0.0073857335,-0.6039868,0.1363052,0.13789289,-0.076400414,-0.2556218],[0.00040147355,-1.2506115,-4.6456604,0.022542994,0.6865295,0.030435719,0.6394426,0.289509,-1.2726502,-0.48925576,1.074512,-1.0973631,-0.17780465,0.30962852,1.0192771,0.8037391,-0.07365006,-0.7483875],[-1.4990337,0.4968039,0.22349183,0.32746932,0.12910442,0.20665137,-1.306896,0.6917486,0.79503983,-0.16803351,0.15006495,0.06984487,-0.42613754,-0.23034474,0.035791446,0.18769096,-0.095758244,-0.27291724],[0.17470996,0.32795563,0.034444466,0.06723942,-0.6096647,0.8110515,-0.2520832,0.11456141,-0.15719128,0.21490517,-0.105078675,0.40423924,-0.10924174,-0.4147324,0.01310793,0.060144518,-0.13492018,0.059378713],[0.006133638,-0.3088513,0.04955513,0.17181134,-0.07184565,-1.4350437,1.1074777,-0.13354936,0.06834596,0.08551515,-0.19919638,-0.08143802,-0.55520076,0.52157044,0.25806877,-0.13898116,-0.09956009,0.13659504],[-0.508209,0.31000626,-0.037681013,-0.057895504,-0.75460684,1.1465745,-0.8317998,0.35057747,0.09632918,-0.20959972,-0.16074719,0.056147385,0.076875456,0.13462108,-0.33426112,-0.027258357,0.3241483,-0.0732327]],"activation":"σ"},{"dense_2_W":[[0.25001925,-0.5711229,-0.88617605,-0.18417396,0.33657238,-0.07999938,0.10933263],[-0.015448602,-0.8196552,-0.31138465,-0.77860475,-0.6738751,-0.08348504,-0.19269453],[-0.41236618,-0.9773098,0.30927274,-0.60864997,-0.016705617,0.75516015,-0.3620944],[0.51392204,-0.35382575,-0.71654284,0.69806784,0.35409018,-0.7125174,-0.3585419],[-0.34544718,-0.212541,-0.46838158,-0.348286,-0.4673545,0.73423237,-0.7466479],[-0.2571807,-0.87686163,-1.0323783,-0.3470508,-0.44749308,-0.8353898,-0.72766614],[-0.8385732,-0.82968605,0.104628935,0.20757905,-0.32339612,0.497941,-0.26445195],[-0.80247515,-0.6636023,-0.5110591,0.2453179,0.20732372,-0.01901174,-0.82556474],[-0.76035863,0.0074476735,0.33188587,-0.31674412,-0.50591946,0.853444,-0.20236208],[0.0013595351,1.0197767,-0.6925592,0.45688447,0.60580957,-0.26385808,-0.050980914],[0.06841057,0.7079414,-0.087536745,0.8707849,0.67308784,-1.2102008,-0.31384364],[-0.089014076,0.22765215,-0.22885361,1.1801783,0.64802265,-0.72977227,0.076044604],[-0.2654659,-0.74361503,0.40524837,-0.32977498,-0.7657364,0.167108,-0.52621794]],"activation":"σ","dense_2_b":[[-0.4408888],[0.090220116],[0.09630298],[-0.30440426],[0.0277946],[-0.4173861],[-0.08740925],[-0.4363536],[0.07060309],[0.0055395924],[-0.32225478],[-0.42043456],[0.027541628]]},{"dense_3_W":[[0.009158828,-0.64987886,-0.32672417,0.33792084,-0.6813809,-0.12942642,0.0065088505,0.36009103,-0.46551788,0.650782,0.3398156,0.33237734,-0.29790145],[0.17885834,0.018317161,-0.103069186,0.0333603,-0.009732622,0.43167624,-0.27477983,-0.29342014,-0.64711416,0.37721634,0.38430053,0.1257458,-0.2783452],[-0.06386373,-0.34565896,-0.5648887,-0.14779678,-0.1418012,-0.085997246,-0.26618838,-0.57671523,-0.24667156,-0.3074685,0.5998481,0.28325394,-0.39654872]],"activation":"identity","dense_3_b":[[0.06877291],[0.064048566],[0.089000046]]},{"dense_4_W":[[1.4214735,0.3623055,0.6621128]],"dense_4_b":[[0.07191435]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json deleted file mode 100755 index 0380b8728e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.323066],[1.4018469],[0.567659],[0.04745886],[1.371474],[1.3818233],[1.3930135],[1.3780496],[1.353553],[1.3199772],[1.2810564],[0.047208063],[0.047284752],[0.047346227],[0.047340184],[0.04724789],[0.04699337],[0.046616953]],"model_test_loss":0.009241282939910889,"input_size":18,"current_date_and_time":"2023-08-12_21-15-20","input_mean":[[22.710884],[-0.02667767],[-1.9947951e-5],[-0.0022435884],[-0.024858162],[-0.025795942],[-0.027008465],[-0.025401326],[-0.024992129],[-0.02418946],[-0.022016376],[-0.0023103587],[-0.0022975747],[-0.0022888356],[-0.0022831862],[-0.002328815],[-0.0024200957],[-0.0025149914]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.02660969],[1.042771],[-0.033824593],[1.3177401],[1.2243396],[-1.3144829],[-0.029618222]],"dense_1_W":[[-0.042961396,0.8769499,-0.0041193925,-0.28560525,-0.20101343,1.1051995,-1.3274776,0.1784311,0.15195456,-0.25092003,0.06740475,0.2186879,0.265752,-0.15826978,-0.30693996,-0.28658256,-0.040432233,0.227988],[1.1160629,-0.5995385,0.025996689,-0.15590227,0.013243591,0.6837929,-1.4657838,0.23292334,0.066290066,0.086385906,-0.117085874,0.44104484,0.1790555,-0.29690143,0.2645984,-0.15013884,-0.1352086,0.2450129],[-0.02550995,0.11425251,-0.048323117,-0.21157871,0.07942085,1.3628405,-0.7377691,0.13772115,0.07743978,0.10179341,0.021651335,0.009930128,0.03140351,0.24963082,-0.17956105,-0.049760547,-0.19708844,0.121905],[0.50287706,-0.59522426,-0.072128914,-0.17238382,0.056527812,-0.6922978,0.4801964,-0.17814112,0.054864608,-0.046747845,-0.015958516,0.41250488,0.111997865,-0.242329,0.1574411,-0.18989699,-0.24354196,0.31047294],[1.2728062,0.9029083,-0.02995525,-0.11530327,0.19549532,-0.72583985,0.97019637,-0.023350935,-0.13342142,-0.09830459,0.11504367,0.004033683,-0.5631423,0.33631292,0.20850284,-0.13248868,-0.19359264,0.02700284],[-0.5022331,-0.4029477,-0.07267978,-0.032978907,0.123317115,-0.6608719,0.2172116,-0.2220228,0.036327496,0.036248263,-0.05348906,0.4633486,-0.45709947,0.35074022,-0.29431617,-0.015300724,-0.047331363,0.17334145],[-0.005675072,-1.177238,-4.175773,-0.33227032,0.593491,0.33732134,1.1989933,-0.018660717,-1.6915731,-0.8134577,1.1082839,-0.6968372,0.13508995,0.6501428,0.17571086,0.43262443,0.23011513,-0.2609291]],"activation":"σ"},{"dense_2_W":[[0.51582694,0.3121973,-0.20595367,-0.63976544,-0.6190774,-0.11476523,-0.161778],[0.45226112,-0.5900978,0.6664454,-0.98015857,-0.76075673,0.20415324,-1.0172082],[-0.049352575,0.030535527,0.5126004,0.26862317,-0.54523516,-0.68212223,-0.4634505],[-0.83752614,-1.6723628,-0.9174441,0.15394925,-1.029886,0.93452585,1.3628161],[0.738823,0.61842084,0.71415186,-0.6888037,0.3717006,-0.7639032,-0.1672679],[-0.1399503,-0.10095283,-0.25007892,0.39840633,-0.08607292,-0.25998384,0.64788043],[-0.40224734,-0.39391443,-1.0630914,0.5171268,0.2898641,0.81633,0.23264134],[0.609244,0.6181232,-0.078675106,-0.6184327,-0.21231276,-0.59661895,0.102545284],[-0.1669277,-0.58635,-1.1015649,0.32143387,0.4936339,0.83028847,-0.030035142],[-0.77541274,0.023090886,-0.23716073,-0.05367684,0.49773395,0.6787877,-0.16148227],[0.47024024,0.56257,0.45200762,-0.5773873,-0.18297487,0.20356469,-0.52002436],[-0.8596537,-0.06697396,-0.8024254,1.0830293,0.670211,0.6720701,-0.12708642],[-0.9127519,-0.6879708,-1.4161041,0.90650314,0.4792091,0.8929421,-0.01189748]],"activation":"σ","dense_2_b":[[-0.0045747017],[-0.077190444],[-0.013206014],[-0.31438816],[-0.02210615],[-0.08498061],[-0.032835722],[0.025921185],[-0.028608063],[-0.055094685],[-0.04353595],[-0.02340338],[0.2846957]]},{"dense_3_W":[[-0.2833135,0.49971643,0.15789203,-0.111222304,0.68173003,-0.12306065,-0.61054754,0.4364152,-0.17824891,-0.3612262,-0.08212228,0.32567462,-0.21418424],[0.30719173,0.6395363,0.45663902,-0.17605212,-0.032707606,0.09329482,-0.21607205,0.60278416,-0.2559459,-0.30606645,0.6160812,-0.65490466,-0.6537213],[-0.6911255,-0.28356558,0.35187447,0.69251335,-0.65796524,0.4204575,0.1600814,-0.36455095,0.5097029,0.23778544,0.05235907,0.61762905,-0.26800236]],"activation":"identity","dense_3_b":[[0.018074159],[0.02200104],[-0.036768977]]},{"dense_4_W":[[0.5857301,0.756474,-0.43159783]],"dense_4_b":[[0.022468269]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022.json deleted file mode 100755 index 7faefe92f7..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.322998],[1.4015561],[0.56837523],[0.047588255],[1.3709389],[1.3817663],[1.392611],[1.3754411],[1.3496559],[1.3185683],[1.2769405],[0.047354497],[0.047422595],[0.04747648],[0.047421742],[0.04731572],[0.04706673],[0.046611268]],"model_test_loss":0.009539897553622723,"input_size":18,"current_date_and_time":"2023-08-12_20-46-44","input_mean":[[22.711828],[-0.026689535],[0.0019039834],[-0.0023329535],[-0.024924988],[-0.026026027],[-0.027174095],[-0.025406003],[-0.025057424],[-0.02285188],[-0.021524802],[-0.002410757],[-0.0023985708],[-0.0023895558],[-0.0023493334],[-0.0024011184],[-0.0025043534],[-0.0025892218]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.5169857],[-0.019987362],[-3.749348],[0.010026661],[-0.07288319],[0.014374224],[0.010394186]],"dense_1_W":[[-1.2820761,0.20072974,0.28769934,-0.07435872,-0.10807912,0.6839909,-1.0163846,0.37361157,0.5963772,-0.31447622,0.15329885,-0.29130152,-0.0077871936,-0.13540648,0.14956757,0.20259517,0.4827459,-0.44082355],[-0.008706593,-0.7106983,0.03615078,0.13008897,0.39616287,-1.198108,0.67986196,0.049107697,-0.19745559,0.070653826,-0.037179824,-0.00992897,0.018150264,-0.28345117,0.20144904,0.027271744,-0.083591945,-0.0077789472],[-1.3841774,-0.2729697,-0.30312338,0.5021227,0.23227558,-0.45030138,0.8180279,-0.7582951,-0.41165656,0.3703149,-0.16755953,0.225867,0.30567566,-0.33227664,-0.07867405,-0.69357836,-0.29660326,0.48716295],[-0.0034431356,1.3253504,4.6872225,0.084131904,-0.59782314,-0.17502293,-0.47418714,-0.65568554,1.4080468,0.6040854,-0.9347265,0.4309358,0.28160667,0.031666335,-0.7668144,-0.26228446,-0.5334342,0.37789625],[-0.0055039516,-0.13755332,-0.12223849,-0.0004576334,0.25474504,-0.90248924,0.681393,0.083114035,-0.14821497,0.05615389,-0.06942857,0.052075684,-0.45403334,0.34004426,-0.10621758,0.33911383,0.07355,-0.19579107],[0.0022961085,0.30488324,-0.012825079,0.15088055,0.25583294,0.82652,-0.5459587,0.006714368,-0.06636212,-0.011478057,0.13315733,-0.13348693,0.26344913,-0.5412785,0.04283553,-0.078943126,-0.052557122,-0.14758898],[0.007984359,-0.050624616,-0.18312733,-0.16847509,0.16566466,0.73899466,-1.2472594,0.7888025,-0.095765956,0.24871819,-0.35101566,0.25908372,0.4248216,-0.13882114,-0.539588,0.09347688,0.009110203,0.12744854]],"activation":"σ"},{"dense_2_W":[[0.047095604,-0.786255,-0.43614712,-0.1504697,-0.13834186,-0.024430595,0.0504824],[0.2510971,0.02496833,-0.60852563,-0.27171785,-0.44349307,-0.37497228,0.2656754],[0.28042302,-0.2812965,-0.31852126,0.30789006,-0.85707706,0.3475367,0.22547512],[-0.6652303,0.2685998,0.56206954,-0.054037236,1.0446018,-0.94967777,-0.26615182],[0.23373616,0.18673655,-0.45725107,0.29477727,-0.89968127,0.6454618,-0.22106493],[0.054909028,0.77692455,0.18391721,-0.56115776,0.6095855,-1.0184323,-0.054039475],[-0.84752804,0.4618774,0.51274276,-0.06157674,0.38322848,-0.5445789,-0.17847438],[-0.8735806,0.71639836,0.74420905,0.16857065,0.51909196,-0.18970433,-0.87218684],[-0.09599941,-0.16308807,-0.72261167,0.5550224,-0.5297689,0.14774127,0.56100655],[0.30483237,0.093027264,0.029969638,0.47540987,-0.028077623,0.3474491,0.4557833],[0.60824394,-0.52072644,-0.110552855,0.2341221,-0.5425136,-0.15664087,0.18335746],[0.008110846,-0.3940828,-0.4749819,0.22577456,-0.6206534,0.53349996,0.64064765],[-0.74949837,1.0148553,0.08895356,-0.13594577,1.1833395,-0.5525545,-0.9272946]],"activation":"σ","dense_2_b":[[-0.1841836],[-0.052291494],[0.004210325],[0.03117083],[-0.052975487],[-0.009141316],[0.013354279],[-0.12768534],[0.007850721],[-0.096758544],[-0.02351333],[0.018209793],[0.07525378]]},{"dense_3_W":[[-0.0678166,0.21374278,0.4509247,-0.2507948,0.084760554,-0.25701937,-0.32002988,-0.6438867,0.6636694,-0.3464606,0.4619562,0.6215613,-0.7515956],[0.33497885,-0.19614214,0.75088036,-0.6965934,0.5644902,-0.62339765,-0.6473526,-0.04877687,-0.393787,0.60633105,0.18677856,0.23221537,-0.17749654],[0.24782819,0.56990445,0.7100961,-0.45507297,-0.18671395,-0.074338615,0.12664238,-0.111063465,-0.045501217,0.53268576,-0.52613497,0.3934995,-0.4127442]],"activation":"identity","dense_3_b":[[0.042554773],[0.03558463],[0.009918687]]},{"dense_4_W":[[0.7852306,0.58427215,0.16980867]],"dense_4_b":[[0.036531795]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42103x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42103x00x00x00x00x00x00'.json deleted file mode 100755 index 1b9584e460..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42103x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.390216],[0.84026754],[0.39660537],[0.037251078],[0.83123314],[0.8328986],[0.8354399],[0.822756],[0.8147103],[0.80181575],[0.78955364],[0.037153445],[0.037165854],[0.037180226],[0.03709188],[0.03697379],[0.036808748],[0.03657089]],"model_test_loss":0.007443552371114492,"input_size":18,"current_date_and_time":"2023-08-12_22-11-54","input_mean":[[24.564423],[-0.06033352],[0.0029696382],[-0.0023700444],[-0.06267781],[-0.062956646],[-0.063214496],[-0.06121789],[-0.061873104],[-0.061438877],[-0.056952965],[-0.0024559235],[-0.002469215],[-0.0024863363],[-0.0025515505],[-0.0025991164],[-0.002534291],[-0.0024238043]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.4287386],[0.019522702],[1.9977351],[-0.22490804],[-0.00035819423],[-1.3152059],[-2.3214567]],"dense_1_W":[[2.235888,-0.26963252,-0.03326692,-0.9078663,-0.48077253,0.22492908,-0.74574095,0.02163033,0.6287117,-0.25593862,0.09319266,0.390934,0.1455112,-0.0051882155,-0.2294125,0.2772641,0.3833548,-0.17655341],[0.004162867,-1.5029143,-5.1802254,1.005789,1.1220849,-0.0038114812,1.1423911,0.71593577,-1.1323463,-0.51543945,0.057678428,-1.4371938,-0.40754506,0.74080026,-0.4787524,-0.1676612,0.6316797,0.10258097],[0.61579907,1.0638666,0.04497473,0.09790652,-0.4580042,0.9214267,-0.55226237,0.22255155,-0.25152695,-0.018994743,-0.007784131,0.26833034,-0.3185435,-0.3745735,0.38645062,0.03690509,0.07226961,-0.15759337],[-0.0004868086,0.7452519,-0.03411571,-0.44577497,0.2982549,0.91406643,0.0184842,-0.18046862,-0.3266196,0.34877545,0.17070878,-0.03970848,-0.042621415,-0.27128893,0.15533158,0.07834085,0.19639981,-0.056854397],[-0.012567584,0.03624396,-0.022384563,-0.15523447,0.24661978,-1.2377284,1.1350765,-0.25249532,-0.41498,-0.020347659,0.095791966,-0.7473384,-0.26062834,0.5146696,0.54036754,0.4569565,0.22637187,-0.22997549],[-2.1634111,-0.916687,-0.03673605,-0.120667666,-0.4033444,0.7786477,-0.820325,-0.012360253,0.54780203,0.06107094,-0.004244052,0.3578701,0.32064012,-0.44154793,-0.6163029,0.25897467,-0.08404478,0.20366065],[-0.6153432,0.9540124,0.04409643,0.20857342,-0.50645894,1.0762684,-0.49672195,0.107468456,-0.2148415,0.042631213,-0.024798885,0.28167915,0.2179913,-1.0020694,0.40323436,-0.11873269,0.08794277,-0.07572256]],"activation":"σ"},{"dense_2_W":[[-0.20823282,0.30093265,-0.029201774,-0.5920709,0.8807932,0.014832234,-0.7206485],[-0.2707333,-0.5349684,0.03885923,0.4568763,-1.0975108,0.52590406,0.56699604],[-0.1763585,-0.044517048,-0.7223775,0.46382907,1.3813398,-0.90656126,-0.46228075],[0.4402428,-0.08579828,0.62238526,-0.026679713,-0.23692939,0.5986996,-0.044020038],[-0.11785757,0.55059844,0.21553627,-0.38685504,0.37269825,-0.05641884,-1.0433837],[-0.073115595,-0.13483381,-0.57452166,-0.34301227,1.1377032,0.18396655,-0.65384805],[-0.06759611,0.40847486,-0.54294467,-0.6230027,0.5551045,0.12885416,-0.6015846],[-0.1075689,-0.82133925,-0.4100264,-0.5740279,0.077124596,-0.84148127,-0.35156497],[0.43155265,-0.44616547,0.5199837,-0.24253757,-0.28942013,0.07995831,0.80747086],[0.5655305,-0.6049346,0.7769178,0.6401317,-0.036156356,0.12338241,-0.09606122],[-0.11682955,0.37032342,0.6814937,0.08761088,-1.1991022,0.3395861,0.4455738],[-0.061593946,-0.10245612,-1.1362522,-0.90115947,-0.10694025,0.27360564,-0.38288185],[-0.85389346,0.7123888,-0.9063807,-0.5282727,0.84775126,0.14558455,0.10813089]],"activation":"σ","dense_2_b":[[0.09443781],[-0.22529183],[0.0031277924],[-0.038756464],[0.06911136],[0.16423716],[0.047135442],[-0.06203192],[-0.09895892],[-0.08908262],[-0.30888662],[-0.045908593],[-0.13323098]]},{"dense_3_W":[[-0.28149396,-0.09962505,0.47546953,-0.31420928,0.2905342,0.266794,0.43754667,0.3859919,0.06822508,0.23275743,-0.6660929,0.19498697,0.3011593],[-0.13796176,0.40359095,0.29825932,0.018519647,-0.59591174,-0.73205596,-0.19215392,0.27951568,0.3280459,0.19260992,0.36450627,-0.50515145,-0.546314],[0.399765,-0.5717706,0.59745455,-0.24058248,0.049411856,-0.11578697,0.25948843,0.5037258,-0.33800462,-0.35749623,-0.026326528,0.09737147,-0.09119536]],"activation":"identity","dense_3_b":[[-0.10628814],[0.07634368],[-0.05583109]]},{"dense_4_W":[[-0.31794876,0.80048394,-0.76268446]],"dense_4_b":[[0.06573924]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42162x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42162x00x00x00x00x00x00'.json deleted file mode 100755 index 4c63096684..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42162x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.153396],[1.1424059],[0.5273411],[0.0418866],[1.1337891],[1.1363932],[1.139454],[1.1177284],[1.1015002],[1.0786083],[1.0526011],[0.04153589],[0.041622877],[0.04170686],[0.041838918],[0.04179161],[0.04151654],[0.041096594]],"model_test_loss":0.009716987609863281,"input_size":18,"current_date_and_time":"2023-08-12_22-38-30","input_mean":[[24.196396],[-0.016029745],[0.028096095],[-0.0038994509],[-0.022461733],[-0.0211682],[-0.018945228],[-0.009469113],[-0.006013518],[-0.0003690735],[0.00038850226],[-0.003962722],[-0.003939994],[-0.003924277],[-0.0039717006],[-0.004034121],[-0.004135311],[-0.0043619256]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.06441673],[2.26378],[-0.10552989],[0.33980003],[-0.04298246],[-0.098494254],[2.4262064]],"dense_1_W":[[-0.020790633,0.451921,-0.13652684,0.12763585,-0.031029783,1.2042981,-0.5776046,-0.1012677,0.17831358,-0.05581121,-0.06692354,0.54666835,0.40911138,-0.8721234,-0.39267784,-0.08157101,-0.4079901,-0.2989372],[0.5509748,0.9363097,0.059841122,-0.4140256,-0.41639903,0.33078,-0.40445128,0.36929476,0.018607832,0.00700337,-0.0038795248,0.7061042,-0.23580593,-0.48158726,0.12674259,-0.06382707,0.43820915,-0.17950895],[0.018348062,0.6468131,0.0042748065,0.16133198,-0.015959706,0.9301354,-0.20905271,-0.29754588,-0.28253144,-0.119799875,0.3632876,0.3290482,-0.18916254,-0.41337168,0.0010071574,-0.15450883,0.20074505,-0.026081141],[0.006989476,0.27034685,6.5836134,0.55647486,-1.4171077,-1.1925769,-1.0201753,0.29032436,1.358197,1.2209818,0.37050742,0.6416425,0.6711937,-0.31485364,-0.34857285,0.17685159,-0.7824757,-0.4657348],[-0.004080293,0.029588899,1.3128351,-0.36318135,-0.11356612,0.5806577,-0.36066183,0.4649574,0.5240905,-0.05959767,-0.91840315,0.62454647,0.050267532,-0.14082994,-0.2595877,-0.31785563,-0.02562985,0.34429887],[0.034001444,-1.9677832,0.15466869,-1.0032327,-0.30988127,0.71767926,-0.89187795,0.6676458,0.9369056,0.2786462,-0.53612363,0.7342473,0.12932669,-0.29018465,0.3984834,0.23467675,-0.1234937,0.84723073],[0.47908032,-0.5793737,-0.05230327,-0.0138418805,0.2010647,-0.5434213,0.59695786,-0.19498722,-0.2230812,-0.15169947,0.102158435,-0.18281807,-0.1266235,0.3866273,-0.04928129,0.37241444,-0.2728808,-0.01607883]],"activation":"σ"},{"dense_2_W":[[0.12734035,0.5242563,0.6692459,0.2905278,0.0014169036,0.29576495,-0.61192167],[-0.12615293,-1.2116686,-1.2169276,-0.08875717,0.3729457,-0.5249831,0.34974018],[-0.9393932,-0.38383678,-0.8133937,0.24458236,-0.24640957,0.16986968,0.9259673],[-0.28856096,-0.31797957,-0.9315826,0.04405637,-0.012435744,-0.11371028,0.5239803],[-0.17659293,0.15572147,0.07663236,0.62253284,0.64720607,0.19781266,-1.2869947],[-0.7894623,-0.90204525,-1.0353638,-0.03617179,0.39140046,-0.0017340467,1.1151788],[-0.32219446,-0.49881086,-0.56797916,-0.5200566,0.049211055,-0.27014527,-0.47646534],[0.3827617,0.09625169,0.6359473,0.20220737,0.0765475,0.69139665,-0.014074824],[-0.8888096,-0.9244012,-0.20213692,0.16941886,-0.42035094,-1.047354,0.65089625],[-0.073977485,-0.9904051,0.21814822,-0.85800076,-0.380841,-0.41185415,-0.34316978],[0.50580156,-0.14019777,0.41091344,0.45879292,0.5243499,0.04470857,-0.118686885],[-0.91301054,-0.10051312,-0.76313204,-0.36933228,0.123890385,-0.41707304,1.4737208],[0.48200563,0.30155873,0.6166662,-0.19214527,0.3604119,0.848134,-0.66118497]],"activation":"σ","dense_2_b":[[-0.06378894],[-0.063377954],[0.21705978],[-0.124884605],[-0.31138632],[0.15949029],[-0.06504713],[-0.06639504],[0.29782426],[-0.05916866],[-0.19573724],[0.39589995],[-0.13240384]]},{"dense_3_W":[[-0.4349006,0.30896667,-0.45529953,0.1588749,0.6099583,-0.048744787,0.14831127,-0.09553297,-0.5638598,0.47571346,0.3784129,-0.65802926,0.6003008],[-0.2129697,0.480156,-0.606263,0.4075848,-0.41933286,0.38288692,0.22861128,-0.4790269,0.32494992,0.45159003,0.52394915,-0.10827983,0.009361509],[0.5089469,-0.5202948,-0.5322368,-0.31337965,0.3283847,-0.80532163,-0.12003918,0.3517128,-0.7536064,-0.36008325,0.43078935,-0.49509677,0.43837455]],"activation":"identity","dense_3_b":[[-0.009116715],[0.03737127],[0.07403617]]},{"dense_4_W":[[0.08990676,0.013356972,1.3498625]],"dense_4_b":[[0.06698501]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42163x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42163x00x00x00x00x00x00'.json deleted file mode 100755 index 98c89380a7..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42163x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.507092],[1.2815679],[0.4975071],[0.04506459],[1.2720965],[1.2750745],[1.2772884],[1.2503124],[1.2223599],[1.1884838],[1.1560506],[0.045019273],[0.045028828],[0.045024503],[0.04477106],[0.04448406],[0.044080965],[0.04363627]],"model_test_loss":0.013042495585978031,"input_size":18,"current_date_and_time":"2023-08-12_23-07-05","input_mean":[[21.98877],[-0.12335238],[-0.016078657],[-0.0077544143],[-0.121013075],[-0.122396156],[-0.12400471],[-0.12926798],[-0.13365853],[-0.13634436],[-0.13445592],[-0.0078579085],[-0.007848383],[-0.007836665],[-0.007821644],[-0.007856283],[-0.00794595],[-0.00799864]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.41238108],[-0.15647191],[-3.19432],[1.3473346],[0.72033656],[0.011768298],[3.205428]],"dense_1_W":[[-0.027973145,1.7576972,4.767511,-0.4176633,-0.96818715,0.33926827,-1.0864245,-0.23734152,0.9877473,0.7952857,-0.8853347,0.93019867,0.32556108,-0.028436413,-0.0046930364,-0.50567764,-0.89116305,0.34441304],[-0.3286742,0.7296152,0.15975942,-0.23465723,0.054107532,1.2600936,-1.2999637,0.3027219,0.21823524,-0.3015546,0.21093197,0.35624585,0.20739715,-0.53436106,-0.06674817,0.018904384,0.45141223,-0.23347045],[-1.2369081,0.5949384,0.27328587,0.05338651,0.4156267,0.92539907,-0.40590262,0.5744456,0.15448196,0.049225725,0.112136096,0.061936796,0.36455524,-0.20739433,-0.5574245,0.020741934,0.3043354,-0.060525723],[1.3975302,-0.2660883,-0.2528151,0.12209471,-0.45779967,0.37982872,-1.2621626,-0.12645462,-0.08675239,-0.024192654,-0.16114336,0.3574039,0.14576891,-0.5411478,-0.4881046,0.29857686,0.3050295,-0.16263439],[0.0261585,-2.65415,0.1102068,-0.6355408,-0.6825635,-1.95765,-0.7815007,-0.8075244,-0.2593319,-0.6009522,-0.52111167,-0.20022257,0.03889839,0.62920535,0.33383593,-0.2175719,-0.4684548,0.3459961],[-0.0150678735,-0.58271044,0.0061610206,0.074883945,0.10804738,-1.421328,0.79250294,0.15533687,-0.24172942,-0.074691884,0.00076515594,-0.6798396,0.08621879,0.7514697,0.10140082,0.41893494,0.28425518,-0.33354664],[1.1115061,0.61985224,0.30767944,-0.09303943,-0.12909113,1.6447747,-0.4437529,0.77997494,0.2406031,0.19338164,-0.04269769,0.74130315,0.023670241,-0.60373497,-0.42885965,0.09291059,0.30503675,-0.0505794]],"activation":"σ"},{"dense_2_W":[[-0.03447381,0.61961925,0.46783054,0.008025974,0.034218326,-0.785008,-0.2436927],[-0.34576592,0.38208163,0.9075677,0.4188659,-0.6523994,-0.6328571,0.014269962],[-0.028170645,0.8463806,0.044915676,-0.021030001,-0.27790257,-0.61671126,-0.099155694],[-0.8248011,-0.376545,0.11962283,-0.8207945,-0.021737516,-0.06406078,-0.106754884],[0.424725,0.6510974,0.31296447,-0.26330495,0.11321596,-0.8308737,0.19026594],[0.16454563,-0.45808515,-0.61525315,-0.2313238,0.42379624,0.49528188,-0.15805322],[-0.74735767,0.06545445,0.26230517,-1.1391616,0.6482181,-0.25901437,-1.0564803],[-0.17673826,0.0071658455,-0.8479469,-0.26447105,0.51856095,0.9599089,-0.22698504],[0.07695655,-0.6020192,-1.0648273,0.57120943,-0.60580045,0.48599684,-0.74983746],[-0.18215203,-0.03673277,-0.69181716,-0.50174606,-0.3967317,1.0757489,0.10837832],[-0.2219305,0.5985485,0.3430551,0.27103543,-0.28647742,-1.2267803,0.3110115],[0.23252928,0.35021362,0.506134,0.11031795,0.09378154,-0.5229496,-0.49675792],[-0.894196,-0.11130605,-0.021763802,-0.79576594,0.048987858,-0.18540877,-0.7740312]],"activation":"σ","dense_2_b":[[0.059486043],[-0.29280654],[0.011379277],[-0.07390214],[-0.06469096],[-0.07824884],[-0.121937186],[-0.020077355],[-0.14607991],[0.071507566],[-0.04043437],[-0.32625166],[0.005049509]]},{"dense_3_W":[[-0.21808244,-0.08183334,-0.6193853,0.14346945,-0.64549166,0.034775525,0.62263674,0.60656494,0.05402613,0.4803536,-0.057502307,-0.57187694,0.48039675],[0.20010938,0.29857892,0.29031074,-0.4493723,-0.27534932,-0.4271697,-0.3127123,-0.31985202,-0.5051126,-0.20012727,0.63287383,-0.42268178,-0.5962557],[0.7221426,-0.17602918,-0.24287237,-0.1045422,0.59664446,-0.3091623,-0.07306638,-0.6027462,-0.04207753,0.22870076,0.12455155,-0.058088508,-0.5303505]],"activation":"identity","dense_3_b":[[-0.026025277],[0.054520532],[0.04151487]]},{"dense_4_W":[[-0.88442326,0.62185794,0.34921297]],"dense_4_b":[[0.04022765]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42170x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42170x00x00x00x00x00x00'.json deleted file mode 100755 index 3009213f5c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42170x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.505826],[1.3050952],[0.6105025],[0.049911283],[1.2774526],[1.2882336],[1.2985959],[1.2796075],[1.2540187],[1.2308307],[1.2028455],[0.049641605],[0.049726453],[0.049802125],[0.049885124],[0.049843974],[0.049564064],[0.048945032]],"model_test_loss":0.008349043317139149,"input_size":18,"current_date_and_time":"2023-08-13_00-13-34","input_mean":[[23.119398],[-0.014665721],[0.002875712],[0.0022761677],[-0.016781015],[-0.015601292],[-0.015216634],[-0.012974441],[-0.008985644],[-0.0026411372],[-0.0011595195],[0.0021324658],[0.002156456],[0.0021819477],[0.0022379826],[0.0022811887],[0.0022112585],[0.0020355321]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.04593338],[-0.40499118],[-1.7993592],[-0.11991043],[2.4969063],[-0.08359504],[0.15138367]],"dense_1_W":[[-0.0020456694,-0.15232417,-0.05632091,-0.37705573,0.022051271,-0.8565281,0.39108163,0.056849197,0.05130677,-0.05407012,0.001970357,-0.22110374,-0.05739019,-0.06787392,0.8160874,0.24165699,0.05984952,-0.26877397],[-0.059527796,-1.783515,-5.029247,0.35492274,0.46516266,-0.4962219,0.74547374,-0.1391693,-0.44948098,0.77305996,0.5585137,0.21553893,-0.4055475,-0.05447692,0.26631886,0.058942422,-0.016789235,-0.27207494],[-0.76922256,0.6301251,0.22935481,-0.025813706,-0.33578226,0.67003363,-0.88640255,0.46430328,0.027061734,-0.1746217,-0.0022712015,0.16300617,0.0046104635,-0.4206955,0.33701143,0.087930895,0.08343968,-0.18054911],[0.0011171654,-0.58213556,-0.021455938,0.26902542,0.37316513,-1.3450648,1.1398438,0.1091337,-0.28341073,-0.118193135,0.124231465,0.05864356,-0.6355348,0.1833971,0.3096016,0.34548208,-0.011865895,-0.18107612],[0.87095094,0.6937185,0.29325077,0.020749068,-0.025415676,0.699841,-1.3742945,0.7242314,-0.06749853,-0.070331104,-0.0636034,0.06533873,-0.16280279,0.042507485,-0.029019153,0.26980522,-0.09153442,-0.093001485],[-0.31021908,-1.142416,0.11011055,0.43387893,0.5260836,-1.5303199,0.5066911,-0.27706015,0.39043495,0.15309733,-0.28572637,-0.22430675,0.061929535,-0.06383185,0.13644171,-0.50511664,0.041031726,0.31161213],[1.0897267,1.1825744,-0.14236324,0.063672036,0.06294053,-0.3706379,1.0601782,0.5527051,-0.27595088,-0.113671936,0.13686246,0.17960225,0.20145352,-0.13296105,-0.40037417,-0.01056886,-0.13461137,-0.055430967]],"activation":"σ"},{"dense_2_W":[[-0.19825721,-1.1104169,0.98295814,-0.30515158,-0.34692875,-0.6190782,-1.297581],[0.24416888,0.3588734,0.103677236,0.240873,-0.813537,0.07612628,-0.08107244],[-0.5474003,-0.28213567,0.1666674,-0.42624155,0.64944845,-0.26346406,-0.14706588],[0.1518272,-0.21466658,-0.17855105,0.013723676,-0.58607084,0.6483515,0.43216375],[-0.6230994,-0.08837661,0.33257806,-0.85847354,0.36574784,0.04634162,0.05514991],[-0.8296199,0.77100873,-0.939359,-0.8922866,0.084815726,-0.6143975,-0.10045844],[0.4623184,0.1270895,-0.16754854,0.15027253,-0.4147221,0.39358157,0.57891953],[-0.08295878,0.5129586,0.06648533,0.40620163,0.24548061,0.40838754,0.21267301],[-0.23169038,0.43309572,-0.070394635,0.019800762,-0.65996474,0.6055871,-0.12044358],[-1.0342672,-1.0465121,3.6257296,-0.50793505,0.29782388,-1.7741984,-1.0927168],[-0.19204512,-0.32931063,0.18198438,0.8573456,0.06693234,0.6510411,-0.32572392],[-0.4673864,0.10762463,0.07421527,-0.38329086,0.7058981,-0.927119,0.115484424],[-0.42056227,-0.11796782,0.49156794,-0.7097843,0.6934195,-0.5626611,-0.34439513]],"activation":"σ","dense_2_b":[[0.11909162],[-0.07600877],[0.10223283],[-0.031305008],[0.09945486],[-0.17963581],[-0.061995212],[-0.07555241],[-0.102682784],[-0.05191523],[0.024158236],[0.076784156],[0.23109515]]},{"dense_3_W":[[-0.14342636,-0.72422844,0.40396285,0.1636829,0.18247479,0.0045734644,0.057036284,0.36054525,0.31516632,0.5773821,-0.34730205,0.015506951,0.8143722],[-0.22141175,0.0249754,0.18519108,-0.5960891,0.10534475,-0.34004185,0.30922064,-0.64269876,-0.39353377,0.61196244,-0.6038087,-0.2218613,0.8060632],[-0.8372558,0.52254903,-0.14625306,0.0066804006,-0.65099746,-0.46298012,0.46928817,0.3031862,0.21476059,-0.113657326,0.57816565,-0.66892457,-0.68522847]],"activation":"identity","dense_3_b":[[-0.08646373],[-0.0014501116],[0.010766292]]},{"dense_4_W":[[0.20907876,0.4356881,-1.1967267]],"dense_4_b":[[-0.009264721]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42171x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42171x00x00x00x00x00x00'.json deleted file mode 100755 index ba9f61741d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42171x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.125968],[1.2157676],[0.56877077],[0.046634678],[1.1819986],[1.1939226],[1.2050095],[1.1772536],[1.1490384],[1.1173652],[1.0877764],[0.046458516],[0.0464915],[0.046519432],[0.046424575],[0.04630696],[0.045947377],[0.045457695]],"model_test_loss":0.012017198838293552,"input_size":18,"current_date_and_time":"2023-08-13_00-43-28","input_mean":[[23.038973],[-0.011042334],[0.015974972],[-0.0052252584],[-0.012621144],[-0.012206042],[-0.011473829],[-0.00436382],[0.0011708968],[0.011603617],[0.018078573],[-0.0053275926],[-0.0052903076],[-0.0052520954],[-0.00510947],[-0.005104932],[-0.005200319],[-0.0053668055]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16457097],[-0.11783356],[-0.16341795],[3.2603662],[-0.11788801],[1.6720974],[-1.0769079]],"dense_1_W":[[-0.008061046,-0.295763,-0.04102052,-0.44582197,0.39850467,-1.5092795,0.88803405,-0.14117628,0.17673199,0.06661456,-0.08764483,-0.07910116,0.064918116,-0.28363875,0.80435836,-0.029273244,0.083623365,-0.0926666],[0.011789304,-0.77010036,0.030322142,0.47716776,0.3228661,-0.5643698,-0.085420124,-0.41520515,0.04144654,0.18603072,-0.072190225,-0.2096561,0.25008512,0.047287993,0.78376484,-0.09255421,-0.073869705,-0.38755554],[0.006866006,-0.39707738,0.047982275,-0.09235436,0.2033491,-1.5095443,0.76461095,0.12706165,0.05459054,-0.31473687,0.017124869,-0.15846905,0.28620297,-0.29356283,0.010996088,-0.26782978,0.30223924,0.19818383],[1.3136203,0.7605802,0.22921574,0.06950313,-0.27827767,0.22789046,-1.1831415,0.2888181,0.45472026,0.30679116,-0.029124122,0.3591454,-0.12775579,-0.19236758,0.06478377,-0.32875076,0.39650252,-0.22568668],[0.021136647,-0.8797861,-3.4817855,0.9336127,-0.29945964,-0.40648848,1.0025306,-0.4041235,-0.4894749,0.32140172,0.98608655,-0.13395874,-0.5486662,0.09900147,0.16774903,-0.088785864,-0.46660814,0.12422624],[0.9725118,-0.5041138,-0.16343966,0.08840967,0.2979326,-0.2553426,0.70889497,-0.26950783,-0.24307638,-0.10193795,-0.11072658,0.07021681,-0.61530876,0.015428448,0.33534184,0.2460765,-0.04016938,-0.10249991],[-1.8274829,-0.48919293,0.2956331,0.39662004,0.3197019,-0.5691079,0.461544,0.13920702,0.03986025,0.75838494,0.20281333,-0.204162,0.19350567,-0.25525728,0.18195486,0.062684454,-0.19634059,-0.13966343]],"activation":"σ"},{"dense_2_W":[[-0.46026543,-0.608524,0.043432627,0.47561055,0.066570684,-0.41968626,-0.6702784],[-0.25002444,0.014399548,-0.84623957,0.022399414,-0.2874369,-0.7324391,0.20420226],[0.36980322,0.15331481,-0.09735177,-0.85721236,0.24727485,0.24951531,0.50254786],[-0.8673788,-0.17667994,-0.68422544,-0.1418402,0.18743204,-0.44421887,-0.13782015],[0.04130671,0.52854437,0.24590105,-0.88267916,0.22531076,0.38659257,-0.17606324],[0.47478884,0.31884965,0.3388871,-0.9468022,0.5066021,0.0700175,-0.5095112],[-0.113112666,0.25730982,-0.9881957,-0.13247137,-0.033958793,-0.93955487,-0.48982602],[-0.04127802,0.087856285,0.5223571,0.24392658,0.39105633,0.49048007,-0.34004813],[-0.31157398,-0.13790639,0.34548154,0.029981874,-0.55449915,-1.4152876,0.07108483],[0.53556556,-0.18784468,0.8590173,0.0057014013,-0.19763845,-0.011888355,0.5876402],[-0.48912835,-0.36501917,0.115229115,0.32207936,-0.6014716,-0.7109084,0.3919979],[0.55365634,0.6837242,0.3347094,0.0687382,-0.3462548,-0.11737208,0.63489527],[-0.256118,0.059573215,-0.7375444,0.06857301,-0.15573148,-0.7817235,-0.32100102]],"activation":"σ","dense_2_b":[[0.14656128],[0.087247714],[-0.28482375],[0.10210237],[-0.26355878],[-0.3669566],[0.15538138],[-0.17240496],[0.09014895],[-0.113779716],[0.14317818],[-0.071496926],[0.0718679]]},{"dense_3_W":[[0.6229111,0.31968972,-0.28705767,0.11074303,-0.087110974,-0.48348424,0.6785927,-0.21872982,0.61053604,-0.4666131,0.5098173,-0.06363553,0.3394026],[0.084205516,-0.3369105,0.17392462,0.37095436,-0.38174987,0.6008199,-0.80774736,0.06431271,-0.50171995,-0.010040611,-0.4184066,-0.22164747,-0.5402119],[0.7551455,0.14914666,-0.12843245,0.7057249,-0.5243644,-0.43565202,-0.35526338,-0.08234922,-0.33515534,-0.21625134,-0.07045235,-0.556805,-0.119567014]],"activation":"identity","dense_3_b":[[0.0821533],[-0.058999702],[0.09296355]]},{"dense_4_W":[[1.1875242,-0.45130086,0.9210134]],"dense_4_b":[[0.08483955]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42181x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42181x00x00x00x00x00x00'.json deleted file mode 100755 index c5393c2cfd..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42181x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.851226],[1.0239326],[0.42911518],[0.03646196],[1.0106101],[1.0142277],[1.0175295],[1.0065211],[0.9916179],[0.9649314],[0.936436],[0.036384404],[0.036382284],[0.0363779],[0.03632052],[0.036259472],[0.036110133],[0.035911527]],"model_test_loss":0.014339322224259377,"input_size":18,"current_date_and_time":"2023-08-13_01-37-39","input_mean":[[18.550402],[0.06708315],[-0.003807479],[-0.0036194513],[0.068546236],[0.06752569],[0.067004055],[0.06809232],[0.0652104],[0.06113437],[0.0540162],[-0.0034877174],[-0.00351821],[-0.0035523246],[-0.0035503684],[-0.00347457],[-0.0034314597],[-0.003328863]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.058229167],[0.03463576],[0.4540118],[1.0585605],[0.82972604],[0.01061339],[-0.5384203]],"dense_1_W":[[-0.0014019154,0.37237298,6.008196,0.10171012,-1.7093086,0.036843814,-0.20425557,0.1546206,1.5322132,0.7762833,-0.7004276,0.312089,0.124471225,-0.10561013,-0.39252156,-0.061603494,0.14343801,0.048062187],[0.0053725736,0.83909684,-0.0058439635,-0.038102146,-0.6833011,1.3762548,-0.708113,-0.18666978,0.28403822,0.08537209,-0.20133755,-0.044063088,-0.053310566,0.03235708,0.1398986,-0.097352564,0.09996585,-0.05572039],[-0.009760258,1.0888057,-0.07141774,-0.47450888,-0.5601016,-0.01604505,-0.34092116,-1.0678765,-0.96493465,-0.7642926,0.8836851,0.19161814,0.06547918,-0.6535186,0.62695867,-1.0349063,-2.439145,-2.184206],[0.38358867,0.6065362,0.0034230966,-0.3828624,-0.75266975,0.75344396,0.07208741,-0.2282329,0.0915009,-0.26476312,0.2233056,0.0923892,0.22786996,-0.26453176,0.20961368,-0.105665825,0.098848045,-0.0052204602],[0.381848,-0.5390429,-0.00251121,0.20975311,0.26914105,-0.78149796,0.5001158,-0.06125975,0.40894818,-0.08970213,-0.18330403,-0.053460885,-0.57413,0.7126597,0.09718345,-0.40182889,0.18284002,-0.04926136],[0.0041610664,1.9413497,-0.9496216,-0.33759737,-0.95122117,-1.5848461,1.3404186,-0.7097838,-0.8721945,-0.06395329,0.80500317,-0.93806756,-0.47362727,0.22262034,1.3678228,0.64397407,-0.2728229,-0.33648926],[0.07239537,-2.7810628,-0.00035733246,-0.39048576,-1.7811499,-1.8262695,-1.4524763,-1.5749454,-1.0985239,-0.97433126,-0.9762156,0.10516947,0.041831885,0.557803,-0.3139855,-0.11231197,-0.24730888,0.28285852]],"activation":"σ"},{"dense_2_W":[[0.88501614,0.7960339,-0.0854282,1.473172,0.73403573,-0.030489994,-1.0748231],[-0.012086651,-0.61050624,0.18473598,-0.7041298,0.37165922,0.31777894,0.18531682],[0.3662147,-0.029098487,0.76151365,-0.13395014,-0.36695877,-0.49297136,0.38819385],[-0.35389823,-0.3027185,0.12915866,-0.13196456,-0.059434127,0.3337308,-0.5366898],[-0.68380296,0.7094547,0.3467085,0.62269133,-0.8350407,-0.20502584,0.26055062],[-0.34221599,0.09894911,-0.22930774,-0.48179337,0.20150964,-0.77290064,0.09458423],[-0.36280394,-0.65553576,0.14078282,-0.3023727,0.36085516,0.2819732,-0.43386218],[-0.19083975,-0.34192124,-0.43045238,-0.62081045,0.30931103,0.030700095,0.38528338],[-0.12913164,-0.05824346,-0.19918932,-0.6585686,0.64329416,-0.39228633,0.38834023],[-0.06803785,-0.71117616,-0.09132568,-0.98075783,0.06334288,0.49681652,0.34164643],[0.2180745,0.36604738,0.06154819,0.24362233,-0.8302129,-0.26283228,-0.009614421],[0.90993303,0.8324408,-0.153028,-0.3565887,-2.4188988,-0.39102378,-0.83334637],[0.49228296,1.0891999,0.14682251,0.06525131,-2.3566296,-0.27929735,-0.59872884]],"activation":"σ","dense_2_b":[[0.026272422],[-0.027382316],[-0.06374873],[-0.0018913196],[-0.10611498],[-0.28934753],[0.048449446],[-0.029426448],[0.03910206],[-0.061729193],[-0.17011756],[-0.19914334],[-0.35818344]]},{"dense_3_W":[[0.24681666,-0.43185285,0.43248656,0.446498,0.33516178,0.33663905,-0.33765137,0.12410014,-0.0055404617,-0.5735319,0.17945813,0.35185724,-0.14598772],[0.53883415,-0.66247576,0.09985266,-0.6038839,0.5757858,-0.11846804,-0.5524721,-0.14494437,-0.50289154,-0.5902578,0.45613047,0.08691653,0.45961568],[-0.016912147,-0.4347032,-0.2132421,0.42222002,0.053901196,0.26849094,-0.52274466,0.45093128,0.11547074,0.5519499,0.23178731,-0.7015563,-0.14213508]],"activation":"identity","dense_3_b":[[-0.047897134],[-0.038441896],[0.028599853]]},{"dense_4_W":[[0.7028314,1.0645722,-0.27114505]],"dense_4_b":[[-0.04197308]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json deleted file mode 100755 index d92c39429b..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6717544],[1.0947602],[0.46523303],[0.04071385],[1.0781838],[1.0831677],[1.0886382],[1.0836236],[1.0735654],[1.0567871],[1.0353881],[0.040535703],[0.04058452],[0.04062954],[0.040666204],[0.040554516],[0.040246446],[0.03986381]],"model_test_loss":0.006968128960579634,"input_size":18,"current_date_and_time":"2023-08-13_02-03-42","input_mean":[[25.24135],[0.03279265],[-0.008847487],[0.006320684],[0.035298277],[0.03512001],[0.033641964],[0.029695673],[0.029064743],[0.02506108],[0.02039471],[0.00622451],[0.0062250104],[0.0062315515],[0.006241794],[0.006244377],[0.00616693],[0.0059778835]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.4494311],[-0.19496632],[-0.26350814],[-0.56510746],[-0.21877296],[-1.3355609],[-0.29426798]],"dense_1_W":[[0.5206159,0.10576821,-0.11247911,0.20491163,0.33990794,-1.2525518,1.0583574,-0.34753868,-0.06646643,-0.14601575,-0.14929412,-0.29487255,-0.06879391,0.50932205,0.11869424,-0.58628404,-0.042017702,0.17407125],[-0.031322703,0.5768025,-0.0025023601,-0.21647467,-0.082024425,0.88715947,-0.71050763,-0.072764166,-0.051216543,0.09057434,0.05977775,0.19192873,0.29378706,-0.26843268,0.13159594,-0.41493884,-0.08635731,0.19498013],[-0.035252336,-0.9459374,-4.970837,-0.084247485,0.27099663,-0.059329633,0.52409726,0.007877367,-1.1663415,-0.26411596,1.3571975,-0.31273174,-0.3185127,0.23015912,0.062651314,-0.25624627,0.57898873,-0.027787916],[-0.0215698,-0.50061035,-0.0036015501,0.046023894,0.2602722,-0.871437,0.46986884,0.06857351,0.1074371,0.086234815,-0.19308428,-0.04312489,0.029021757,-0.003684175,0.14100845,0.042754482,-0.21663295,0.14043325],[-0.9751645,-0.12289358,-0.1406582,0.13687797,-0.35888916,0.6194974,-0.6489919,0.38132963,-0.07326873,0.23100159,-0.6815848,-0.007814461,0.26971263,-0.07363272,-0.1855483,-0.18125555,-0.049100105,0.115237534],[-0.50956905,0.48556384,-0.10785587,-0.2540192,-0.032906525,-0.49255675,0.41026026,-0.14745457,-0.5306201,-0.008835799,-0.08571492,-0.25413102,-0.05079176,0.53850764,0.27346227,-0.18674931,-0.07856052,0.025163196],[-1.0250858,-0.32162967,0.13932756,0.28023055,0.23404084,-0.4745412,0.6844042,0.0050328784,-0.06439692,0.17258103,0.4165711,-0.16924205,-0.4714274,0.1771986,0.08547189,-0.1035464,0.5452405,-0.35472986]],"activation":"σ"},{"dense_2_W":[[1.1859789,-0.51215285,0.9208667,0.011160324,-0.26782367,0.1654521,-0.27158707],[-0.12362681,-1.2787738,0.076242216,0.5843017,-0.26689935,1.0748321,-0.3880148],[-0.40252876,1.0881231,0.25295937,-0.93297756,0.32773137,-0.5535702,-0.67666596],[-0.7580509,0.71760464,-1.0216886,-0.1978493,0.4836637,-0.17133161,0.036033805],[-0.75000304,0.63558036,0.32057714,-1.0511792,-0.3177557,-0.044755217,-0.11034487],[-0.5645773,0.27898332,0.47402716,-0.738025,0.3021792,-0.9873278,-0.7891343],[0.11762674,0.73939085,-0.3103913,-0.98226845,0.64397097,-0.80232793,-0.652079],[-0.9045628,0.8587723,0.80991477,-0.8700875,-0.65929556,-0.4393104,-0.4573712],[-0.8187899,0.97374254,-0.38434175,-0.96596724,0.19627793,0.10464935,-0.12969106],[-0.04873503,0.14666314,-0.10507614,-0.78823173,-0.57198745,-0.65050966,-0.39800155],[-1.3525742,0.27251542,-0.61843866,0.19277906,0.55250853,-0.57587695,-0.25846016],[0.09460951,-1.0067326,0.18680768,0.6701155,-0.7826965,1.0157732,0.62720263],[-0.056878928,-0.9902501,0.07337474,0.5947333,-0.14998591,0.9698875,-0.47638628]],"activation":"σ","dense_2_b":[[-0.08574547],[-0.25192508],[-0.1600956],[-0.2021993],[-0.12500837],[-0.014394304],[0.12166485],[-0.097488604],[-0.09498941],[-0.23732203],[-0.0033244065],[-0.18101275],[-0.42470968]]},{"dense_3_W":[[0.70182776,0.90544015,-0.27932724,-0.49617624,-0.51897824,-0.6904145,-0.59277976,-0.5324393,-0.26049465,0.16030513,-0.42422092,0.3099378,0.20038018],[0.46004465,0.14226505,-0.016798219,0.26416388,-0.23000899,-0.043261927,-0.18217951,-0.56936485,0.18854964,-0.40769655,-0.5120887,0.026711667,0.48702645],[-0.44730246,0.035538714,0.6696084,0.078126684,-0.28074992,0.32122174,0.87967885,0.15473741,0.48827088,0.37981582,0.6514756,-0.90970725,-0.3196454]],"activation":"identity","dense_3_b":[[0.14994316],[-0.13599911],[-0.09733387]]},{"dense_4_W":[[-0.89249825,-0.056084827,0.3851996]],"dense_4_b":[[-0.14319709]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json deleted file mode 100755 index 23317a11ef..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.1625595],[1.2922298],[0.62139535],[0.04567073],[1.2632741],[1.2715808],[1.280602],[1.2693822],[1.2542087],[1.2247165],[1.1909277],[0.045397192],[0.045449946],[0.04549305],[0.04545042],[0.045387167],[0.045147583],[0.044744927]],"model_test_loss":0.007525489199906588,"input_size":18,"current_date_and_time":"2023-08-13_02-31-54","input_mean":[[23.119978],[-0.008106127],[-0.0062186965],[-0.0048029637],[-0.007028825],[-0.0070267622],[-0.007759125],[-0.008229643],[-0.0065412563],[-0.0032345948],[-0.0015808723],[-0.0049269847],[-0.004904426],[-0.004871379],[-0.0047452976],[-0.0047200844],[-0.0047071795],[-0.004768657]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.01577489],[-0.036651418],[-0.53623146],[-0.43403396],[4.226777],[0.031024184],[-4.773621]],"dense_1_W":[[0.005327244,-0.8355596,-5.362093,-0.048572045,0.7178633,0.06106064,0.8468096,-0.2571259,-1.327196,-0.44217587,1.058469,0.056455363,0.14608839,-0.098923415,-0.23918279,0.04020538,0.23786233,-0.12770446],[-0.010223876,-0.72655255,0.016186269,-0.11808472,0.2876596,-1.2712218,0.5667468,-0.06084051,0.22512656,0.3755652,-0.40249628,-0.25125036,-0.21778338,0.5746524,0.078327455,-0.24237496,0.3175813,-0.17065156],[-0.6298655,-0.17408815,0.042584803,-0.12974305,-0.13674054,-0.59153414,1.1252804,-0.2748757,-0.054158274,-0.23418744,0.4553317,-0.65346336,0.012844898,0.62550545,0.32781297,0.10481739,-0.13386554,-0.13798119],[0.114467114,0.24316245,-0.021615224,0.023694778,-0.035225637,-0.8642168,0.8294254,-0.25606933,-0.040379446,-0.3500701,0.15988775,-0.56249446,-0.18230355,0.151895,0.51403975,0.42919087,0.06891423,-0.40883803],[1.7820107,-0.8729092,-0.18928063,0.09309557,0.3607095,-0.41220948,1.5652144,-0.46717206,-0.41226682,0.0013491283,-0.41942984,-0.089314334,0.004005952,-0.0747852,0.009556638,-0.010365505,-0.1098569,0.17348874],[0.0044284705,0.6163098,0.00083640264,-0.094127156,-0.18054871,0.9881279,-1.0137135,0.20937717,0.24207658,-0.08428015,-0.07552825,0.14980052,0.254931,-0.3509042,-0.14109994,-0.101399794,0.15016933,-0.14891316],[-1.9707493,-1.1365594,-0.2105259,0.37518528,0.6739353,-0.65524983,1.7848158,-0.51781315,-0.5952709,0.22437507,-0.5128836,-0.91568863,0.3721105,0.59358186,-0.64745224,0.10847048,-0.029750574,0.1424494]],"activation":"σ"},{"dense_2_W":[[0.1586283,0.49743327,-0.28523076,0.49164057,0.5328539,-0.36973375,0.12624636],[-0.48587608,-0.2487463,-0.402463,-0.3060397,0.36550063,0.62413186,-0.34166646],[-0.061889086,0.13580354,-0.05768418,0.19577123,0.74825233,-1.5275799,0.7398382],[-0.065775804,-0.68621314,0.34632745,-0.27306333,0.108429216,0.30584174,0.09895851],[0.062699154,-0.16094007,0.20373204,0.34869027,-0.24647439,-0.14964825,0.15067333],[-0.52050513,-0.28144282,-0.36549205,0.21830845,0.17705248,0.3885603,-0.4208156],[0.65049803,-0.7067532,-1.0366768,-0.71617734,-0.26613158,0.028896019,-0.6025038],[0.040614616,-0.5860749,0.0055378075,0.17320454,-0.3445164,-0.19920291,-0.76159173],[0.022094827,0.30371666,0.29163453,0.4747085,0.30273658,-0.80259377,0.18885104],[-0.5191858,-0.3626201,0.04160303,-0.24516961,0.25270674,0.3344741,-0.085464925],[-0.51586235,0.04108749,0.4809453,-0.68286794,0.22329661,0.64296246,-0.6787596],[0.71542096,0.24909717,0.18110462,-0.456406,1.59483,-0.40047887,-0.29970673],[0.09926485,-0.012050363,-0.00902432,-0.5706574,-0.62320197,0.99470526,-0.5348278]],"activation":"σ","dense_2_b":[[-0.28907308],[0.14058612],[-0.22265932],[-0.031506367],[0.011181118],[0.09338642],[-0.19179444],[0.025182663],[-0.16790742],[0.019717962],[0.025871284],[-0.48104918],[0.13777581]]},{"dense_3_W":[[0.39214996,-0.45933616,0.5931434,-0.14438477,0.025445614,-0.21986714,-0.4073649,-0.526483,0.32142904,-0.43845606,-0.5522683,-0.45861238,-0.23599972],[0.3541214,-0.12390408,0.65992594,-0.17913954,0.17470582,0.14348052,-0.46156922,0.09727183,0.47791806,-0.44638395,-0.35680237,0.28284937,-0.6322599],[-0.53958935,0.40429562,-0.25718197,-0.016856665,0.27269888,0.5572323,-0.11033956,0.29808432,-0.63412243,-0.18738142,-0.13287298,-0.55771834,0.74253505]],"activation":"identity","dense_3_b":[[-0.011752912],[-0.028205017],[0.029930305]]},{"dense_4_W":[[-0.4310748,-0.71519667,0.99503374]],"dense_4_b":[[0.028201103]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json deleted file mode 100755 index 854e30f3d9..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.595562],[1.3557196],[0.6436131],[0.045093063],[1.3374771],[1.3439865],[1.3497798],[1.3293898],[1.3081594],[1.2773685],[1.2442381],[0.044867057],[0.044940565],[0.04499815],[0.04493182],[0.04476657],[0.044359777],[0.043740414]],"model_test_loss":0.00823762733489275,"input_size":18,"current_date_and_time":"2023-08-13_02-59-30","input_mean":[[22.373413],[-0.041675597],[0.0139935],[-0.0017189209],[-0.04186074],[-0.041701995],[-0.04159802],[-0.031264056],[-0.02419872],[-0.014140531],[-0.0053126486],[-0.0018288051],[-0.0017968336],[-0.0017687711],[-0.0016978089],[-0.0016784823],[-0.0017457763],[-0.0018253779]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.2825171],[0.29270795],[-0.14191557],[4.8880744],[4.643753],[-0.022068096],[0.0074948124]],"dense_1_W":[[0.0032524515,-1.6502666,-5.143319,-0.08653302,0.74940306,0.079409406,1.0887363,0.55024517,-1.8755168,-0.37473255,1.0061337,-0.0072490247,-0.48503035,0.05145903,0.46511993,0.12256152,0.18945718,-0.26970908],[-0.5688282,0.3378242,-0.0820345,-0.35314164,-0.569916,-0.80707407,0.8573667,-0.4934631,-0.2502392,-0.106414326,0.23248182,-0.14921708,-0.1386045,0.47708175,0.50700176,0.44248942,0.027855754,-0.38461936],[0.21959259,-0.71326935,-0.07979012,0.34530672,0.636172,-1.2988864,0.6678013,-0.25917116,0.09184474,-0.032171894,0.1220121,-0.3971508,-0.46033743,0.8975076,0.10354636,0.072543696,-0.05976872,-0.14628923],[1.9510422,0.3866497,0.3618337,-0.12621135,0.20156476,0.15090744,-0.80365545,0.43618965,0.8912262,-0.21278769,0.53434885,0.22536062,0.21662591,-0.8340567,0.9400496,-0.24009539,-0.18682937,0.011327647],[1.9101932,-0.09988753,-0.35090855,-0.0016594501,-0.08788997,-0.25584847,0.5387623,-0.55900645,-0.7354033,0.11941465,-0.518064,-0.06519748,-0.0017339309,0.3745017,-0.6524051,0.06342098,0.34091005,-0.067744955],[-0.006107121,-0.09839651,-0.012231088,0.30222625,0.07460135,1.6269959,-1.7014208,0.03040909,0.22550346,0.044197246,0.0017101751,0.50942785,-0.16438055,-0.020442167,-0.1508841,-0.29599234,0.049566567,-0.19760182],[-0.020232651,-1.0527381,0.08056227,0.20597994,0.33630684,-1.5990256,0.97233945,-0.28341347,0.16153534,0.3039094,-0.3701453,-0.06703333,-0.18289685,0.3205004,0.21156645,-0.1997296,0.00204575,-0.10895797]],"activation":"σ"},{"dense_2_W":[[-0.57049316,-0.47958663,0.20998815,0.5900954,0.1954957,1.0093216,-0.37459356],[0.0711123,-0.05547968,0.24755229,-0.36353877,0.09672807,-0.2401484,0.6095298],[0.51119304,0.41856906,0.05460875,-0.19852686,0.20700233,-0.63960356,-0.03614955],[-0.44700778,0.22197174,-0.80856746,0.64109397,-0.5748055,0.7630393,-0.5093563],[-0.119287774,0.29882818,0.78802735,-0.5391423,-0.01341688,-0.67587036,0.41711807],[0.18750283,-0.7311276,-0.3832002,0.37338614,-0.50132436,0.13879292,-0.27468982],[0.2099454,0.06710706,0.49674693,-0.27869275,-0.057731844,-0.3134266,0.05398349],[-0.34767157,0.12649035,-0.82919586,0.03299373,-0.30653405,0.2602203,0.034945954],[-0.19299687,0.18560947,0.3825491,-0.08262691,-0.022920206,-0.03981069,0.5391385],[0.06231773,-0.6864966,-0.21304713,0.72882277,-0.8002371,0.68702626,-0.5636007],[-1.1283545,0.66055053,-0.60280657,-0.44466072,-1.1954936,-0.02034466,0.1492789],[0.054777786,0.22702163,-0.23401575,0.25109196,-0.7091251,-0.12651615,-0.074743904],[-0.23125705,-0.038868073,-0.0094622,-0.45092142,-0.56356156,0.11221505,-0.08776925]],"activation":"σ","dense_2_b":[[0.1788275],[-0.029162887],[-0.05410552],[0.14040445],[-0.05081904],[0.03014496],[-0.0008108878],[-0.2395291],[-0.0013514905],[0.25322255],[0.14901285],[-0.2634512],[-0.23830526]]},{"dense_3_W":[[-0.5489028,0.18956307,0.20569573,-0.6213917,0.7467413,-0.54990596,0.4036336,-0.026636245,0.5315489,-0.5165829,-0.7388474,-0.1318045,-0.034361653],[0.380212,0.4771973,-0.44244605,-0.54885596,-0.39711758,0.59357476,0.23979527,0.008609023,0.44370395,0.27729112,0.04513358,0.52764195,-0.15440719],[-0.27805048,0.48927543,0.31558773,-0.2270046,0.21011017,0.098380476,0.47707695,-0.25754115,0.26487526,0.0036550455,-0.24167007,0.37545148,0.19212462]],"activation":"identity","dense_3_b":[[0.028461946],[0.00041110683],[0.007205736]]},{"dense_4_W":[[-1.1770037,-0.121750355,-0.17705767]],"dense_4_b":[[-0.025750196]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019.json deleted file mode 100755 index 771d0d0b45..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.56172],[1.5150591],[0.61463565],[0.048025005],[1.4822352],[1.4941419],[1.505296],[1.4785786],[1.4448495],[1.4001503],[1.3552352],[0.047890753],[0.047929697],[0.047957852],[0.0478742],[0.047784578],[0.047500774],[0.04700782]],"model_test_loss":0.013011353090405464,"input_size":18,"current_date_and_time":"2023-08-12_23-45-39","input_mean":[[22.329546],[-0.045605175],[0.01592502],[-0.0018784865],[-0.045549437],[-0.045191955],[-0.044704963],[-0.035537414],[-0.026267633],[-0.0157286],[-0.00838497],[-0.001896298],[-0.0018774128],[-0.0018634307],[-0.0018498951],[-0.0018851961],[-0.0019609453],[-0.0019896321]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.30314],[-0.14142546],[-0.013767572],[1.194878],[-1.2208039],[-4.3557434],[0.08794612]],"dense_1_W":[[-1.8972677,0.9672059,0.25824386,0.0828847,0.3341447,0.69297504,-1.9695483,0.038245548,1.0612612,0.13501422,0.27874982,-0.09969699,0.0374315,0.48933214,-0.011004679,0.017130712,-0.2716565,-0.23346075],[-0.007528385,2.1774812,-0.114808366,-0.39051452,0.7741447,1.1673083,0.13397868,0.44196582,0.9315971,0.6791667,0.5054393,0.15570343,0.23017462,-0.031832017,-0.076586366,0.25111264,0.24159965,-0.33496174],[0.0030608005,1.4381056,0.11511048,-0.7743296,-0.7203884,1.597554,-0.99584186,0.5960368,-0.19229466,-0.2975349,-0.011686272,0.49059817,0.1897865,-0.60492635,-0.6754905,0.101577304,0.31291947,0.25055414],[-1.0824282,-0.3043732,0.008584764,-0.018848956,-0.2089088,-1.0749328,1.0982482,-0.045640092,0.044488285,-0.11731847,-0.026736904,-0.57326096,-0.046581715,0.0950547,0.23073886,0.3822833,-0.2204155,0.1618918],[1.0632011,0.031152897,0.009230802,-0.39440817,0.18390684,-1.6168276,0.77715576,-0.050903037,0.16450162,0.124611534,-0.24373147,0.17009573,-0.5080612,-0.038760606,0.6419307,-0.1795093,0.24181002,0.07538436],[-1.9245406,-1.2917063,-0.26165596,0.39217517,-0.32974318,-0.9253293,2.608757,0.04103854,-1.2233304,-0.3679585,-0.086496115,-0.66351557,0.284825,-0.11610917,-0.6876215,0.44495583,0.12274311,0.21472873],[-0.0011509256,1.924439,4.888321,-0.34858927,-1.0936936,-0.2615667,-0.22090028,0.51795596,1.1996402,-0.060851824,-1.5311006,0.81339735,-0.17505,-0.25228173,-0.29199755,-0.48492575,0.2323905,0.3359508]],"activation":"σ"},{"dense_2_W":[[-0.04723237,-0.5713439,-0.44814402,-0.3774354,0.23023804,-0.20165691,-0.4617632],[0.81059057,-0.33529666,0.6886719,-0.47035518,-0.55307055,-0.28818864,0.12439424],[-0.11119899,0.1494808,-0.64621824,-0.3822803,-0.10293467,-0.13095938,-0.5011403],[-0.7855487,-0.074596755,-0.277924,0.6098594,0.39072365,0.54389304,-0.04757158],[-1.0348403,-0.13555157,-0.79879016,0.699813,0.8297562,0.72075176,-0.1580287],[-0.12593223,-0.5242968,0.0027506559,-0.9838703,-0.14292116,-0.21127757,-0.4181084],[0.6277679,-0.06471201,0.2519138,-0.44575757,0.0035869328,-0.8165587,-0.14451581],[0.60958606,0.1644053,0.5917127,-0.34198347,-0.19222917,-0.6290825,0.20473154],[-0.29616356,-0.008838329,-0.56584114,-0.01621055,0.6894716,0.5036691,-0.23140316],[0.3176332,0.55119896,0.49262676,-0.6794437,-0.6079304,-0.71099347,0.47087783],[-0.001160002,0.21010941,0.29942355,-0.37181187,0.101982266,-0.29694918,0.7613698],[-0.57210505,-0.40474287,0.14816071,0.5515802,0.71525896,0.29420164,-0.41057208],[-0.031878855,0.1834812,-0.557275,-0.16315645,0.73640525,0.5667018,-0.106642045]],"activation":"σ","dense_2_b":[[-0.28198278],[-0.031724684],[-0.2700433],[-0.14344712],[-0.0712461],[-0.207197],[-0.1985745],[-0.07992782],[-0.09112537],[0.012330677],[0.035785448],[0.029941175],[-0.07723248]]},{"dense_3_W":[[-0.41012377,-0.0750153,-0.51992136,-0.575433,-0.15829727,0.14711393,-0.2113123,0.6098498,0.2744829,-0.19297485,0.11055155,0.11664247,-0.42073438],[-0.42603567,-0.2637008,-0.4624474,0.37126887,0.3297134,-0.24870478,-0.71104676,-0.42295957,0.09491146,-0.68906903,-0.06497983,0.4588389,0.36360323],[0.0015361789,-0.27568248,0.044544894,-0.35505277,0.5103815,0.18121512,0.29294804,0.0725655,0.60120976,-0.026808323,-0.29816794,0.5696804,-0.28550223]],"activation":"identity","dense_3_b":[[0.050192077],[-0.035694942],[-0.053834025]]},{"dense_4_W":[[0.8585161,-1.0563794,-0.6090095]],"dense_4_b":[[0.04216754]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42172x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42172x00x00x00x00x00x00'.json deleted file mode 100755 index f40d2fa792..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42172x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.412672],[1.1979997],[0.6317731],[0.044134922],[1.1613084],[1.1757178],[1.1884606],[1.1675756],[1.1450535],[1.1208285],[1.0900035],[0.043903794],[0.043967567],[0.04402576],[0.044101108],[0.044096585],[0.043959502],[0.04365427]],"model_test_loss":0.009366453625261784,"input_size":18,"current_date_and_time":"2023-08-13_04-00-19","input_mean":[[22.805677],[0.042888522],[-0.002057468],[-0.017817942],[0.045564543],[0.04457066],[0.04343476],[0.04418247],[0.042020433],[0.034090705],[0.033118203],[-0.017768152],[-0.017786173],[-0.017803175],[-0.01795426],[-0.017958898],[-0.018003935],[-0.018080201]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.110753275],[-3.7608747],[0.0069373823],[-0.4614981],[-3.301801],[-0.014949581],[0.13146858]],"dense_1_W":[[-0.0036052228,-0.9134565,0.011775863,-0.104338825,0.50702333,-1.3347127,0.43979335,0.32727206,-0.3549518,0.1707619,-0.06355575,-0.42169005,0.11168042,0.32078785,0.16003191,0.22976972,-0.3087875,0.02821579],[-1.5740833,-0.5183325,-0.25200287,-0.1016893,0.21293215,-0.26341066,0.8987055,-0.7441156,-0.34343657,0.10333513,0.015100161,-0.025416875,-0.34263033,0.3139959,0.31424755,-0.0986391,-0.1432429,0.2556411],[0.012172019,0.7366857,4.0765634,0.5199466,0.5682854,0.4320513,-1.0643913,-0.4115053,0.25080773,0.15999946,-0.6883774,0.4775558,-0.14264597,0.25075626,-0.79590684,-0.5458843,0.14667971,0.2089872],[-0.006554994,-0.65382326,-0.0152408695,0.45012295,0.43787235,-1.2492634,0.96254647,-0.0071797133,0.20040128,0.052020404,-0.12437481,-0.55438083,-0.17110933,0.1521984,0.3463892,-0.29791614,0.38824236,-0.24384183],[-1.5182815,0.36061874,0.24495271,-0.28876624,-0.054025646,0.09653467,-0.6130963,0.58099127,0.13013393,0.15593274,-0.05823013,0.42072526,0.30042237,-0.8197303,0.4167901,0.12898338,-0.19402294,-0.1354475],[-0.0022215121,-0.35342693,0.05437431,0.07748616,0.15085074,-0.74330544,0.8852311,-0.09556112,0.18634337,-0.15945065,-0.00033352937,-0.1618802,-0.19378874,0.112232834,-0.2201298,0.32024163,-0.07431912,0.20214744],[-0.012104868,0.06879351,0.20518698,-0.3500171,-0.54368746,0.8862013,-0.4934571,0.2377762,0.40319738,-0.15937808,-0.36041725,0.014896415,-0.16455528,-0.76308006,0.1687108,0.33528942,0.39151073,0.23726699]],"activation":"σ"},{"dense_2_W":[[0.40863213,1.09518,-0.25529328,0.31099716,-0.23821151,-0.1252298,-0.5552002],[-0.42047146,-0.4827329,0.2864231,-0.765981,0.47332808,-0.15582423,0.40268713],[0.63550895,-0.029280502,0.17191784,1.1201406,0.10288998,0.7509795,-0.70378363],[0.15874045,0.1510755,-0.3895043,0.6858349,0.16745095,0.3997049,-0.4700419],[-0.29952693,0.22967328,0.2863864,-0.810409,0.6171967,-0.8057256,0.08393511],[-0.6486345,-0.023099914,0.4675164,-0.6659177,0.25236258,-0.71584076,0.3096002],[0.71282494,0.33055237,-0.11847034,0.60865057,-0.772154,0.49154654,-0.5714387],[-0.78605217,-0.00037871118,-0.3303249,-0.6224991,-0.14092278,-0.09522645,-0.30699593],[0.8150833,-0.19859204,-0.2607902,0.5500899,-0.53263944,-0.09620078,-0.07882722],[-0.6767907,0.010670528,0.32155117,-0.08829821,0.5477537,-0.07313992,-0.5654307],[-0.09579456,-0.42669368,0.27080974,-0.6856269,0.4908146,-0.70633966,0.13399492],[0.45092934,-1.0722996,-0.5651186,-0.8076614,-0.44906232,-0.43937942,-0.30797964],[0.330296,-0.6318943,0.30196452,0.08447742,0.35562196,-0.72430176,-0.7196764]],"activation":"σ","dense_2_b":[[-0.10103021],[-0.07237988],[-0.10848336],[-0.036251254],[-0.06057428],[0.2591175],[-0.13453443],[0.038662404],[-0.03901396],[-0.10080519],[0.21275711],[-0.16303454],[-0.122491874]]},{"dense_3_W":[[-0.438746,-0.2728812,0.045525227,-0.3864609,0.36935923,0.21368839,-0.5939579,0.16156128,0.114174105,0.013049866,-0.008147875,-0.4032706,0.18928905],[-0.54620934,0.5383141,-0.4279512,-0.4393462,0.6210919,0.52767473,-0.47722214,0.66437435,-0.2349947,0.24046247,0.7181641,0.4821915,0.1510222],[0.63923234,0.064001255,0.62742436,0.21747853,-0.37516952,-0.08939772,-0.07508889,-0.52245426,-0.36398694,0.08213987,-0.6971847,-0.47528505,0.28324062]],"activation":"identity","dense_3_b":[[-0.016175348],[-0.045647956],[-0.029259264]]},{"dense_4_W":[[0.4314022,1.2294345,-0.15208964]],"dense_4_b":[[-0.03797295]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42182x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42182x00x00x00x00x00x00'.json deleted file mode 100755 index 7e99b3ee34..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42182x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.038209],[1.09115],[0.58841705],[0.04120297],[1.0650965],[1.0757538],[1.0846869],[1.0705407],[1.0502529],[1.0200819],[0.9942558],[0.041278385],[0.041227303],[0.041172404],[0.04093896],[0.04077007],[0.040474173],[0.04011864]],"model_test_loss":0.008322028443217278,"input_size":18,"current_date_and_time":"2023-08-13_04-26-29","input_mean":[[19.35511],[0.030055698],[-0.016438086],[0.010118738],[0.034582045],[0.03268271],[0.030520633],[0.024380086],[0.01949945],[0.009070484],[0.0008187817],[0.010378993],[0.0103315525],[0.010291569],[0.0102992],[0.010390825],[0.010437563],[0.010471735]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.71080106],[-0.39767665],[-1.0195663],[-2.4454567],[2.2261577],[-0.09989114],[0.12794948]],"dense_1_W":[[-0.6734729,-0.28932476,0.0138231935,0.6177876,-0.15232189,-1.1696538,0.730194,0.022715418,0.6191517,-0.14222449,-0.26050287,-0.4294454,-0.33338618,0.43053976,0.0796189,-0.26277167,0.2849497,-0.15557633],[-0.05414103,-2.266047,0.00613671,0.03952902,-1.5264792,-1.9569396,-0.6220431,-1.4173054,-0.75115013,-0.51321524,0.081751466,-0.010653298,-0.18178755,0.30361202,0.1966698,0.10920531,-0.1763718,0.46204364],[0.59744245,-0.45304865,0.01262204,0.17445521,-0.24134386,-1.0839043,0.67658186,0.4959112,0.036302716,0.21944934,-0.37493265,0.031681668,-0.380639,-0.016364183,0.47792554,0.2549743,-0.2674703,-0.011161444],[-0.6851998,-0.400606,-0.49484125,-0.214028,-0.1954561,-0.20455971,0.19458835,-0.62406296,-0.24194877,-0.17115325,0.3458003,-0.38039616,-0.19315414,0.7750066,0.27001703,-0.032702632,0.17871174,-0.09447013],[0.68511105,-0.46930492,-0.49280137,0.10116556,-0.2338568,-0.67072135,0.66908896,-0.36548007,-0.45608816,-0.055914342,0.27099574,-0.15043867,-0.3710818,0.33710575,0.39674795,-0.10886804,0.23883794,-0.13643274],[0.029596586,-1.8378116,-4.835868,-0.117306955,0.68529356,-0.2723494,0.8876275,-0.08609639,-0.17212754,-0.0016869277,0.6372433,-0.34045476,-0.32072458,0.5590455,0.019711575,0.08534893,0.22889003,-0.008147916],[0.12550998,-0.5612814,-0.015401064,-0.12878568,1.311814,-1.4296403,1.0471376,-0.05140145,-0.37987107,0.057461046,0.23428072,0.10266636,-0.17472467,0.22596104,-0.0015113074,-0.029831069,-0.23511468,0.16630976]],"activation":"σ"},{"dense_2_W":[[-0.16429533,-0.37868544,-0.86968327,0.038888782,-0.6123927,0.0023984741,-0.057672873],[-0.8476257,-0.29583248,-0.67205304,-0.36270946,0.27317914,0.37164906,-0.2357329],[0.4565083,-0.055655904,0.442506,0.36896625,0.50816137,-0.031650446,-0.08521712],[0.9475783,-0.42539543,0.16942857,0.6493747,-0.1678662,0.084014334,0.41585678],[0.19024913,-0.35226712,-0.28252858,0.41698533,-0.87595725,-0.58208317,-1.0035533],[0.7211048,0.63076013,0.3922959,1.2696142,-0.70998734,-0.14198317,0.2581067],[-0.83778936,-0.04513129,-0.14693034,-0.14507426,-0.40756947,0.13452101,-0.7361817],[-0.29602185,0.040760204,-0.41493273,-0.40465754,-0.08350711,-0.33569443,0.19498646],[-0.15095061,0.33132613,0.5001891,-0.11200301,0.5794387,0.57178,0.43034536],[-0.67328364,-0.6793664,-0.3576356,0.018860316,-0.34526905,0.2174788,-0.77950203],[0.3714874,0.3679473,-0.5132016,-0.37143388,-0.82780284,-0.5017991,-0.6383511],[-0.10127275,0.23966174,-0.2606357,-0.6428221,-0.50568867,-0.20557041,-0.23762174],[0.020065116,-0.2712377,0.249374,-0.14273904,-0.64751804,-0.7200119,-0.34964135]],"activation":"σ","dense_2_b":[[0.012003523],[0.0066150334],[-0.19111954],[-0.22128096],[-0.17908531],[-0.7933061],[-0.027471995],[0.122777395],[-0.33527485],[0.06287324],[0.14836572],[0.06252556],[0.09372547]]},{"dense_3_W":[[-0.23665334,0.723523,-0.63925576,-0.6986978,-0.17180254,0.12065741,0.11170402,0.09213536,-0.72547287,-0.060505576,-0.07866674,0.598629,0.61649084],[-0.5524962,-0.6655416,0.49857664,0.40452972,-0.23933083,0.37202802,-0.18277252,-0.3782749,0.18721648,-0.7559194,-0.61349714,-0.63339907,-0.47192994],[-0.59970725,-0.032464698,0.5048768,0.3264773,-0.12589443,0.22296196,-0.11026481,-0.4933927,0.17230077,0.19409345,-0.5158414,-0.41455555,-0.16241634]],"activation":"identity","dense_3_b":[[-0.030606706],[0.07558715],[-0.078843266]]},{"dense_4_W":[[0.48447892,-1.2192938,-0.18857154]],"dense_4_b":[[-0.0684882]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json deleted file mode 100755 index e44065aaf6..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.7215185],[1.5296972],[0.6329213],[0.048140034],[1.5023713],[1.5115433],[1.5213315],[1.4992337],[1.4733845],[1.4334533],[1.382772],[0.047901835],[0.047970153],[0.04804064],[0.048103515],[0.048074424],[0.04788978],[0.047572568]],"model_test_loss":0.007313914597034454,"input_size":18,"current_date_and_time":"2023-08-13_04-58-50","input_mean":[[24.426073],[0.0035376903],[0.010450098],[-0.0058580884],[-0.0003155768],[0.0006170886],[0.000841817],[0.008119883],[0.013678599],[0.016964255],[0.018914642],[-0.005899203],[-0.0058827517],[-0.0058742235],[-0.00586261],[-0.005887352],[-0.006023831],[-0.006199134]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.9262018],[0.6111764],[-0.21979779],[-0.08344832],[0.022952111],[2.2652647],[-0.055222925]],"dense_1_W":[[0.9477257,-0.010930782,0.2693092,-0.45176712,0.17638065,1.0103005,-1.1566194,0.1956058,0.48887056,-0.27086145,0.17099643,0.25299495,0.017165674,0.022744065,-0.2071281,0.51604414,-0.05360476,-0.08305532],[1.0653174,-0.19370075,-0.025619261,-0.07976432,0.21888945,-0.01620505,1.3145335,0.19960856,-0.16116017,-0.078303546,0.18846263,-0.4369984,0.07841701,0.5242291,0.21971513,-0.06500557,-0.6251961,0.35055155],[-0.010343126,-1.5992315,-5.575023,0.1296738,0.96921855,0.65707296,0.41981772,-0.39755943,-0.6237099,-0.5377202,0.82652205,-0.46393546,-0.0025167326,0.041792773,0.53836185,-0.20812295,0.23478688,-0.22422998],[-0.06835915,-0.6826863,-0.015550686,-0.1606268,0.49856377,-1.4255869,0.9663564,-0.13549313,0.11399871,-0.09810915,0.016424825,-0.27376917,0.32651708,-0.062065434,0.25883147,0.07828936,-0.12748928,-0.020732597],[0.1960928,0.63389885,-0.03986251,-0.14436735,0.3994569,1.0923187,-1.275591,-0.005756016,-0.022560176,0.09950554,0.08471099,0.21786727,0.053738844,0.26008365,-0.37622976,-0.28200307,-0.0041179312,0.25905907],[0.88009626,-0.059545647,-0.22990677,0.07681021,-0.3075392,-0.30781925,0.5865939,-0.20266494,-0.2824905,0.08512942,-0.08384962,-0.23466583,0.10275819,0.017015647,0.14026842,-0.11592076,0.022960545,-0.014085652],[-0.0016292254,-0.029161997,0.011123573,0.08816466,0.2067326,-1.0287801,0.82265383,-0.50439996,-0.41555846,0.018268801,0.21765414,-0.426295,0.08660844,0.20978588,0.32856998,-0.16593574,0.3182436,0.065723486]],"activation":"σ"},{"dense_2_W":[[-0.661899,0.42421028,0.1291513,0.5268525,0.27374566,0.14350797,0.048248857],[-0.11925823,0.11275892,-0.41860747,0.54141617,-0.53575426,0.08692167,0.5685374],[-0.47604066,0.40048516,-0.20540014,0.2697244,-0.59070647,0.4921443,0.2070969],[-0.32401973,-0.38705194,0.27830896,0.67634106,-0.7964134,-0.31952748,0.38753203],[0.24913147,-0.6288573,-0.30587563,-0.6941863,0.49562398,-1.0631434,0.14025775],[0.38366526,0.10850745,-0.16820778,-0.61344117,0.7374608,-0.6747489,-0.4225247],[-0.92967755,-0.35374784,0.19986466,-0.42288387,0.06183304,0.25832188,-0.25597203],[0.37240422,-0.8985459,-0.7266072,-0.50966,0.232016,-1.608445,-0.05613529],[-0.48152244,-0.6014514,0.05382254,-0.49254656,-0.49155635,-0.2361675,-0.46588454],[0.1545446,-0.4907671,0.5083054,-0.2939329,-0.4241678,-0.30181906,0.023612102],[0.5494282,-0.58802557,0.2443711,-0.25153464,1.2320807,-0.1922564,-1.3002108],[1.0176622,-0.21668118,-0.57886964,0.23822442,0.5329754,-0.22148608,-0.86639875],[-0.64741355,-0.27867457,-0.3316186,0.47602695,-0.22179708,0.23058596,-0.22336796]],"activation":"σ","dense_2_b":[[-0.014282428],[-0.015652178],[-0.049183264],[-0.036203776],[-0.056914896],[0.044381518],[-0.24765426],[0.18313628],[-0.24192591],[-0.027628785],[0.10131799],[0.16464141],[-0.029622875]]},{"dense_3_W":[[-0.30585924,-0.29776183,0.017245587,-0.13364966,-0.03414496,-0.038568087,-0.4033021,0.49503553,-0.28328845,0.058581755,-0.52184415,-0.048386358,0.3499786],[-0.4463572,-0.28294104,-0.3023481,-0.6776053,0.3948947,0.5377114,-0.4929832,0.6458604,-0.41316226,-0.25560462,-0.017290222,0.52392954,-0.13529858],[-0.31588498,-0.4325672,0.013085138,-0.35966408,0.3466711,0.64089996,0.41701752,0.48426676,0.4087031,-0.117455825,0.54724884,0.014698518,0.3365335]],"activation":"identity","dense_3_b":[[0.03199178],[-0.015016341],[-0.030428993]]},{"dense_4_W":[[-0.47214445,1.2712222,0.7399426]],"dense_4_b":[[-0.017716983]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45070x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45070x00x00x00x00x00x00'.json deleted file mode 100755 index 1d00c216e5..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45070x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.280848],[1.1441286],[0.49247316],[0.043405242],[1.1318773],[1.1372043],[1.1416951],[1.1172512],[1.0926574],[1.0570114],[1.0212463],[0.043282885],[0.0433304],[0.04336672],[0.043335043],[0.043221824],[0.042944487],[0.042431764]],"model_test_loss":0.016205428168177605,"input_size":18,"current_date_and_time":"2023-08-13_05-56-46","input_mean":[[22.453661],[-0.009690426],[0.0065032323],[-0.011651958],[-0.011165308],[-0.010400566],[-0.010001306],[-0.006500233],[-0.0026201021],[-0.00101425],[0.0021699886],[-0.011677432],[-0.011668723],[-0.011660133],[-0.011728811],[-0.011773433],[-0.011841056],[-0.011894497]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.45916697],[0.17990263],[2.2869246],[-0.1486742],[2.143754],[-0.3825331],[0.16539572]],"dense_1_W":[[0.10585518,-0.46735394,-0.009863335,-0.021381542,-0.4244482,-1.2823756,1.3433533,-0.017593514,0.100421146,0.03068365,-0.19143356,-0.8520446,0.08467846,0.82457775,0.26455942,-0.011366051,0.06678089,-0.16026749],[-0.06685822,-1.7700669,0.11150118,-0.28181335,-1.0776445,-2.2213879,0.06633769,-0.15360656,-0.8972572,-0.9021122,0.29181656,-0.7535559,0.32498777,0.30637822,-0.28905466,-0.0010783104,-0.22794016,0.15364477],[1.2818815,0.109987624,0.2811549,-0.068773136,0.79602146,1.4748589,-1.2838098,0.6895842,0.17164242,-0.20557097,-0.15411322,0.64261883,-0.10280259,-1.076077,0.26151523,-0.14356074,0.22765741,-0.1712026],[0.00041574636,-0.8197861,-7.5684586,-0.20047867,1.8402718,1.5231626,1.8098993,-0.22563997,-3.465762,-1.2912288,0.45179537,-1.9075481,-0.4387407,0.33126295,0.9639218,0.17788078,0.9106507,0.21989372],[1.3135848,-0.7858198,-0.29094377,0.46257696,-0.6470547,-1.1060529,0.93220985,-0.29039016,-0.13737987,0.22807792,0.091788515,-0.4748053,0.29867622,0.10891013,0.1858073,-0.2401894,0.0743765,0.03681374],[0.17066078,0.8237773,0.015143466,-0.29137167,0.4125562,0.54849124,-1.2481003,0.22669321,0.16218764,0.29865333,-0.25207785,0.55817974,0.21856284,-0.39747208,-0.28270063,-0.124221325,-0.20349917,0.31628203],[0.009792184,1.0716915,2.69444,-0.35925958,-0.23096997,0.36079913,-0.89602,0.5258335,0.7044103,0.23169777,-1.0493258,1.1821613,0.088788554,-0.035593744,-0.9683611,-0.04424868,-0.010434928,-0.043576322]],"activation":"σ"},{"dense_2_W":[[0.88951546,-0.42895758,0.10749227,-0.3381338,0.09804924,-0.3220585,-0.34573475],[-0.17474814,-0.7170482,-0.4465272,-0.64623255,-0.80796534,0.3396964,0.07690326],[-0.5762065,-0.6574665,-0.29811725,-0.5354601,-0.6161121,-0.66814727,-0.2610467],[-1.3073108,0.15640761,-0.30923235,-0.17911297,-0.16084199,0.69541067,-0.20413654],[0.90569836,0.4278247,-0.25071362,-0.5082455,0.06064604,-0.63132465,0.46831772],[-0.094200686,-0.14353256,-0.27645656,-0.27311286,-0.14429812,0.091689125,-0.28688306],[-1.1108559,-2.1028638,2.165349,-0.4345446,1.483305,1.620506,0.45829046],[0.09066979,0.10443071,-0.6832421,0.356451,-0.74987555,-0.29007706,-0.6587826],[-1.3760568,0.9482072,-0.18900378,-1.0709974,0.0681376,1.1254492,0.5331122],[-0.07830287,-0.39997748,-0.14344335,0.5135632,-0.47504225,0.22800393,0.12365315],[0.63020027,0.13533631,-0.3766346,0.527763,-0.6002866,-0.6792991,-0.053642306],[-1.2443005,-0.5468849,-0.62122345,0.013166506,-0.86239994,0.025351316,0.6255306],[-0.8236448,-0.8727682,-0.48299453,-0.04941957,-0.7763088,0.8878766,-0.12215169]],"activation":"σ","dense_2_b":[[0.0247172],[-0.06766249],[-0.24181516],[0.13942689],[-0.0052647507],[-0.0077950996],[0.6178939],[-0.27566597],[0.032193415],[0.014206651],[-0.071907036],[-0.05319885],[-0.047229856]]},{"dense_3_W":[[0.47991514,-0.21854271,-0.1804915,-0.48911753,-0.10791347,0.23705998,-0.4666875,-0.48106343,0.2307863,-0.26415148,0.40653455,-0.6642067,0.26701903],[-0.28657764,0.53769946,-0.40891734,-0.02096517,0.2780794,0.44527766,-0.24414495,0.3990269,0.20819953,-0.3683124,-0.29138583,-0.5663968,0.52042514],[-0.3011377,0.5968053,-0.0044070026,0.30039677,-0.6778224,-0.44649825,0.21434684,-0.3961862,0.7583285,-0.32607108,-0.66463107,0.40846905,0.67910755]],"activation":"identity","dense_3_b":[[0.035978876],[-0.011928141],[-0.029860198]]},{"dense_4_W":[[-0.5814999,0.06673667,1.1037177]],"dense_4_b":[[-0.030712485]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45080x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45080x00x00x00x00x00x00'.json deleted file mode 100755 index fcae3d72da..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45080x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.146588],[0.95418143],[0.43340117],[0.03905011],[0.9479113],[0.9499558],[0.9510725],[0.94235235],[0.9326399],[0.91747427],[0.90183586],[0.039001305],[0.03900259],[0.03900094],[0.03879979],[0.0386242],[0.038319785],[0.037957985]],"model_test_loss":0.011259999126195908,"input_size":18,"current_date_and_time":"2023-08-13_06-22-55","input_mean":[[24.366568],[0.0021789675],[0.0025915417],[-0.0051793563],[0.00033371797],[0.000241019],[0.00014475512],[0.0025261848],[0.007706368],[0.008204942],[0.0068165124],[-0.0052624918],[-0.0052542],[-0.0052515985],[-0.0052647493],[-0.0052907555],[-0.005419828],[-0.0056095705]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.7336471],[0.02469658],[0.35684168],[-0.3532868],[-1.130788],[-0.080318995],[-1.5789121]],"dense_1_W":[[-0.64860713,-0.5713194,-0.0010171949,-0.8196765,0.5477699,0.7899214,0.23730105,0.33738092,0.032365516,0.044066656,0.112801746,0.04844126,0.52755666,-0.16293125,0.2042048,0.385338,-0.20983423,0.022781417],[0.01108318,0.46447736,0.031032741,-0.6179811,0.24768326,0.91782635,-1.3839803,0.19786762,0.18436638,0.3508326,-0.30270633,0.1014005,0.5165744,0.25080827,-0.654024,-0.83023304,-0.030366233,0.38658044],[1.1167343,-0.5371559,8.987758e-6,-0.21433865,-0.07572796,0.5795516,-1.3121548,-0.58627963,0.30778974,-0.009247612,-0.023929322,0.62669486,-0.02801999,-0.54888064,-0.2571279,0.40885362,0.01660022,-0.031134106],[-0.07193165,1.1033614,4.970244,-0.30471626,-1.0119324,-0.46201298,-0.7883615,-0.069143996,1.3630129,0.77040046,-0.84834325,1.7408925,-0.05897951,-0.097375624,-0.20112686,-1.0965652,-0.44313067,0.49282008],[-1.170487,-0.874422,-0.00026626769,-0.28228784,-0.088807434,0.43260026,-1.0325773,-0.096812546,0.17837521,0.109854095,-0.14968073,0.12017141,0.53054005,-0.51490897,0.024915364,0.15639779,-0.2467258,0.1595003],[0.022389904,1.0608602,-0.00092857826,0.28875074,0.21020184,0.5167493,-0.5882544,0.021157121,0.032180592,-0.2136807,0.19360738,0.55395454,-0.30576155,-0.51958877,-0.11451182,0.04725566,0.11142395,-0.04842062],[-0.7362178,-1.3755006,0.00096091843,-0.22289632,-0.1438102,-0.9025203,1.0324214,-0.18327402,0.08280124,0.023658695,-0.08867019,0.047302973,0.25789154,0.040970705,0.12989049,-0.39808056,-0.12234827,0.25104594]],"activation":"σ"},{"dense_2_W":[[0.78154695,0.21511142,-0.43714777,-0.030767908,-0.009173835,0.7183903,-0.14342828],[-0.54066896,-0.20156115,-0.35385814,-0.26441637,-0.02107599,-0.84845865,0.29214594],[0.3124417,0.21180186,0.063465446,-0.20406622,0.40963924,0.59125894,-0.7869325],[-0.7548771,-0.43420765,-0.02560193,0.41974467,-0.51081544,-0.7608768,0.20380737],[0.1265696,-0.17943808,-0.43707883,-0.28236973,-0.8968599,-0.34403643,-0.035097532],[-0.101388685,0.3316813,-1.1519573,-1.6520184,0.3636926,-0.7423692,1.2117586],[0.15023874,0.345581,-0.46650666,0.11859452,-0.2518907,0.79158175,0.23256831],[-0.10569177,0.5604173,0.68333226,0.8951173,0.042214226,0.38135228,-0.8231335],[-0.8847682,-0.68416154,0.4569707,0.47695133,-0.38582966,-0.57144934,0.7719593],[0.27912247,0.13382833,-0.7093698,-0.68917704,-0.6986833,-0.71800274,0.44724673],[-0.24284345,-0.20109548,-1.1195686,-0.67754227,-0.48026723,-0.24137561,-0.04529532],[-0.038835,-0.9078514,0.17316182,0.119565316,-0.9398113,-0.016460646,-0.50889707],[-0.50108016,-0.11253731,0.23106413,0.06696553,-0.15908737,-1.1488036,0.34958452]],"activation":"σ","dense_2_b":[[-0.1418599],[-0.19710542],[-0.110050105],[0.1076101],[-0.12195556],[-0.021285616],[-0.07804289],[-0.14162357],[0.061964434],[-0.079768986],[0.12962815],[-0.0064196354],[-0.016493268]]},{"dense_3_W":[[-0.72732776,0.14124086,-0.20111452,0.42510116,0.15858391,0.57676667,-0.5278801,-0.6789197,0.5398626,0.54049456,0.6322282,0.3313076,-0.17548639],[-0.21989414,-0.5007377,0.73611426,-0.5268293,-0.031320885,-0.20501229,0.061116677,0.49025694,-0.24863736,0.5271555,-0.5499532,-0.14880382,-0.44022956],[-0.7556335,-0.42262074,0.31918573,-0.032287117,0.20668483,0.54373014,0.04109339,-0.082154974,0.545164,0.57818425,0.51500225,0.51791734,0.3929478]],"activation":"identity","dense_3_b":[[-0.06250194],[0.06764598],[-0.09165578]]},{"dense_4_W":[[-0.7602953,0.7817076,-0.72182196]],"dense_4_b":[[0.06962905]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45082x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45082x00x00x00x00x00x00'.json deleted file mode 100755 index d639277c31..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45082x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.3108945],[0.9977488],[0.42284822],[0.037617117],[1.0103788],[1.0064898],[1.0015848],[0.96092135],[0.9357677],[0.9055774],[0.8795561],[0.037663084],[0.037589002],[0.037515257],[0.037092976],[0.03673727],[0.03622884],[0.03562327]],"model_test_loss":0.015439342707395554,"input_size":18,"current_date_and_time":"2023-08-13_06-49-13","input_mean":[[29.371658],[0.12545165],[-0.0012615778],[0.0063813236],[0.12261632],[0.12388965],[0.12581488],[0.12562975],[0.12590235],[0.12706079],[0.12586853],[0.0063036233],[0.0063308002],[0.006360097],[0.00641069],[0.0063860607],[0.006380691],[0.0061025573]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.0672929],[-0.002385034],[0.046296448],[0.73421615],[-0.6588893],[-1.5203205],[1.178525]],"dense_1_W":[[0.0065662013,-0.6906884,-8.1669035,-0.22963533,1.287303,0.5623414,0.97596943,0.16876543,-1.4308753,-1.2607023,0.13512084,-2.2520604,-1.0734065,-0.38555807,1.2478017,1.5954043,1.0332317,0.11683866],[-0.0008281875,-0.12043914,0.46533456,-0.1880658,0.27793694,0.32328263,-0.9494933,0.4474304,0.47546932,0.075196765,-0.5856884,0.67132443,-0.33427218,-0.5053345,0.52054983,-0.190718,-0.0054882555,0.030913128],[0.004268137,0.87534344,-0.0032283473,-0.4999181,0.051706053,1.3251885,-1.0996927,-0.11573633,0.022052824,0.030778117,0.095333256,1.2366601,0.09371897,-0.86040866,-0.4691007,0.45319134,-0.14319059,0.20172225],[-1.4501123,-0.6050599,0.0043176105,0.12684159,0.17847362,-0.49170303,0.61515486,0.041966554,-0.15754142,-0.12259134,-0.02399008,-0.122417435,-0.5506387,-0.10183553,0.4896619,0.68033147,0.18162476,-0.11971624],[1.4376184,-0.5808021,0.004164574,0.04148571,0.017012099,-0.06272477,0.43186155,-0.13221015,-0.15635422,-0.038162798,-0.035955418,-0.5861744,-0.56593215,0.43877664,0.59369725,0.7450232,0.041334633,-0.12955528],[-0.1895313,0.7552585,-0.0040314286,-0.048676625,0.5563838,1.239188,-0.71320075,0.004504845,0.09257285,0.088156074,0.09986293,0.47695497,-0.39355606,-0.7343243,-0.06684374,0.1638444,-0.09659141,0.051680643],[0.14741042,0.5720669,-0.0017892478,0.07270701,0.6063258,0.8279095,-0.346793,-0.025372941,0.23078395,-0.065968886,0.13636668,0.4493458,-0.5984418,-0.52184445,-0.11649629,0.032802615,0.11504312,-0.050546043]],"activation":"σ"},{"dense_2_W":[[-0.8641727,0.50495005,0.40094075,-0.34386104,-0.5465309,1.390671,-0.37600058],[0.11031162,-0.6909326,-0.5312116,0.61976224,0.24802525,-0.16967447,-0.14283815],[-0.8193451,-0.1972297,-0.214771,-0.73892933,-0.30986032,0.15499435,-0.501575],[0.5308305,-0.24228737,-0.016963648,-0.43746594,0.35429764,0.046517015,-0.042451978],[-0.22441098,-0.120023474,-0.49286667,-0.018089095,0.29138842,-0.5673456,-0.48546997],[0.13753492,-0.1153832,-0.55610204,0.15406573,0.006365648,0.17939411,-0.6658586],[-0.65625983,0.09770354,0.78839475,-0.38033855,-0.27879944,0.659594,-0.27876693],[-0.3875123,0.5326739,0.75927013,-0.44852605,-0.32855642,-0.25641,0.7448988],[0.5429655,-0.13947411,-0.4124438,0.27981234,0.3692258,-0.5504224,-0.14990781],[0.106620625,-0.45364022,-0.6481817,0.6618234,-0.06181281,-0.22667481,-0.30472475],[-0.5421591,-0.2735785,0.92352885,-0.058677003,0.48104942,0.3428449,2.177085],[-0.1457072,-0.10735246,0.016251013,0.42414185,0.43490586,-0.6780911,-0.6813793],[0.06390021,0.47467482,0.009300271,-0.14595152,-1.045413,0.53024256,0.597365]],"activation":"σ","dense_2_b":[[-0.6563135],[0.040393732],[-0.24838637],[-0.0036740543],[0.15817301],[-0.25935638],[-0.4186771],[-0.058852207],[0.024473231],[0.120795585],[0.114583485],[0.12427014],[-0.21818934]]},{"dense_3_W":[[0.46204138,0.5743686,0.6254067,0.2262725,0.5390763,0.086523645,0.22651961,-0.07199567,0.16185366,0.031094545,-0.34022743,-0.4233551,-0.067053996],[-0.2599459,0.352036,-0.20220354,0.19399881,0.23690616,-0.14081447,-0.55412626,-0.6064963,0.34574237,0.33883986,-0.18335809,0.6122457,-0.54077035],[0.77093464,-0.4317505,-0.47253096,0.28200352,-0.36024985,-0.5413245,-0.50765145,0.5250093,-0.31016317,-0.49643394,0.35564622,0.0021692468,0.07358482]],"activation":"identity","dense_3_b":[[0.007873758],[0.034414034],[-0.0254829]]},{"dense_4_W":[[-0.17727825,-1.1712774,0.5170622]],"dense_4_b":[[-0.03209859]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016.json b/selfdrive/car/torque_data/lat_models/TOYOTA_AVALON.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_AVALON.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA_AVALON_2019.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_AVALON_2019.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA_AVALON_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_AVALON_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA_CAMRY.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_CAMRY.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021.json b/selfdrive/car/torque_data/lat_models/TOYOTA_CAMRY_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_CAMRY_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA_CHR.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_CHR.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA_CHR_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_CHR_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_COROLLA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_COROLLA.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA_COROLLA_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_COROLLA_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_HIGHLANDER.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_HIGHLANDER.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020.json b/selfdrive/car/torque_data/lat_models/TOYOTA_HIGHLANDER_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_HIGHLANDER_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA MIRAI 2021.json b/selfdrive/car/torque_data/lat_models/TOYOTA_MIRAI.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA MIRAI 2021.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_MIRAI.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS TSS2 2021.json b/selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA PRIUS TSS2 2021.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS v 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS_V.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA PRIUS v 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS_V.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_RAV4.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_RAV4.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_RAV4H.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_RAV4H.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA_RAV4_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_RAV4_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA_RAV4_TSS2_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_RAV4_TSS2_2022.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA_SIENNA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_SIENNA.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020800'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020800'.json deleted file mode 100755 index aee9fbdaff..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020800'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.774439],[0.68836546],[0.39663407],[0.035043336],[0.67726237],[0.6812185],[0.6851642],[0.67571765],[0.6658719],[0.65097946],[0.6362429],[0.034919888],[0.034944225],[0.034970142],[0.034958802],[0.035017386],[0.035055906],[0.03502549]],"model_test_loss":0.007673596031963825,"input_size":18,"current_date_and_time":"2023-08-13_08-08-06","input_mean":[[26.031902],[-0.060294222],[0.00040313246],[-0.011659955],[-0.05902993],[-0.060128476],[-0.06107497],[-0.059999887],[-0.05612731],[-0.05281684],[-0.044799715],[-0.011695448],[-0.011712971],[-0.011732531],[-0.011664448],[-0.011644356],[-0.01155927],[-0.011499585]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.049030554],[-0.10284916],[2.1669703],[-0.7598165],[-1.5671357],[-1.0467316],[-0.21518126]],"dense_1_W":[[0.0015833939,0.3628037,-1.1379211,0.41206348,-0.3174675,-1.0719817,0.55315006,0.16118664,-0.72761345,0.085280344,0.51755583,-0.20497443,-0.31990555,0.07199009,-0.022201924,0.29279125,0.027291393,-0.22479561],[-0.22103259,-2.2058318,0.0018786002,-0.12338179,0.040423285,-0.77381456,-0.7999449,-0.89398247,-0.15317886,-0.14315447,0.18191607,-0.29653367,0.16505532,0.51925987,-0.23665445,0.14255223,-0.024358846,-0.018557316],[0.71575314,0.8240314,0.008927517,-0.42483628,-0.3114511,1.1394252,-0.5804155,0.11425652,0.18163292,0.13206053,-0.13476585,-0.11367035,0.26001,-0.5135676,0.54607356,0.48701724,0.28660864,-0.51631993],[0.66036284,0.59087783,-0.00230013,-0.2067205,-0.6735332,1.4597267,-0.45294723,-0.19073394,-0.2648436,-0.03875138,0.19050239,0.4679514,0.035935957,-0.15239997,-0.27455324,-0.70898926,-0.09578253,0.44405428],[-0.45520136,1.0866009,-0.0010808597,-0.14738974,0.096503034,0.46348053,-0.5462861,-0.075428344,-0.10546405,0.13248663,0.0108337905,0.44465065,-0.50142854,-0.17432131,0.08642302,0.38780424,0.2626273,-0.33542085],[0.7531839,-0.15485106,-0.00046390522,0.49195373,0.10571833,-0.8325452,0.35377154,-0.08773462,0.0057901233,-0.033657778,-0.024466574,-4.581234e-7,-0.05356497,-0.40087822,0.60264814,-0.18609272,0.31572378,-0.23848133],[0.06056683,-0.64557314,-8.907912,0.30529982,-0.09389138,-0.5915903,0.25837407,-0.05178803,0.11875724,0.40244415,1.1496543,-0.26229003,-0.46595177,-0.2651267,0.81698227,0.4063907,0.031472377,-0.27899668]],"activation":"σ"},{"dense_2_W":[[0.3929737,0.3355438,-0.24939334,-0.8681119,-0.47513258,0.7011935,-0.2938572],[-0.19074927,0.28745645,0.5773505,0.73283035,0.6470788,-0.24172986,-0.268829],[0.29614463,-0.3138745,-0.28980806,-0.0015691076,-0.111617155,0.232167,-0.67932785],[-0.7735293,0.051889855,1.011741,1.6678485,0.8912051,0.70964855,-1.0375358],[-0.5269584,-1.0374653,-0.4922506,-0.34657186,1.5273697,-1.3772768,-0.5722175],[0.615394,-0.06539898,-0.45568255,-0.20143689,-0.47749588,0.86022294,-0.21714544],[0.38749975,-0.022513922,-0.14868331,-0.25780904,-0.23281977,0.06569774,-0.25363374],[0.5056675,-0.32965812,0.019247672,-0.17208679,0.2147651,-0.095847994,0.45504293],[-0.16795017,0.27483287,-0.67279655,-0.41054696,-0.32219192,-0.067795895,-0.111805394],[-0.6812337,-1.2262623,0.059217807,0.2936333,0.25215864,-0.6689207,0.5118572],[-0.7462057,0.03548215,-0.48534322,-0.59371406,0.69966376,-1.1789167,-1.1984698],[0.066431336,0.2048392,-0.46290568,-0.10662247,-0.66402173,-0.15764749,-0.41801584],[-0.4591004,0.023616942,-0.31438425,-0.7513188,-0.28229564,-0.5397509,-0.2550711]],"activation":"σ","dense_2_b":[[0.14723389],[-0.13598567],[-0.113603],[0.3382584],[-0.26982328],[0.071502306],[-0.027666062],[-0.09013021],[0.0439448],[-0.4045584],[-0.16309273],[0.021524023],[-0.31809625]]},{"dense_3_W":[[-0.37160635,0.6519445,-0.2852499,0.3879301,0.13172154,-0.12497152,-0.57542557,-0.17398404,-0.6902231,-0.038447704,0.6596773,-0.16343056,-0.37051415],[-0.29400083,-0.2377071,0.08535129,0.26676917,-0.5493988,-0.351432,0.47058952,0.5485086,0.056337833,0.5403655,0.17921905,-0.11200504,0.41892666],[0.69202274,-0.34028688,-0.19272918,-0.38122672,-0.43775746,0.66532624,-0.38657436,-0.32455662,0.3592691,-0.45225328,-0.18025218,0.19789042,-0.41285962]],"activation":"identity","dense_3_b":[[-0.019216945],[-0.0018677257],[0.040205568]]},{"dense_4_W":[[0.8999063,-0.10676796,-0.8298675]],"dense_4_b":[[-0.022871539]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002MB4092M7N'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002MB4092M7N'.json deleted file mode 100755 index d0890c1ab4..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002MB4092M7N'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.2229753],[0.7611405],[0.44096765],[0.032897122],[0.7546119],[0.75747573],[0.7597603],[0.74507344],[0.73157114],[0.7157408],[0.70553976],[0.03276775],[0.032820396],[0.032851215],[0.0328969],[0.032961197],[0.03302519],[0.03315028]],"model_test_loss":0.014566068537533283,"input_size":18,"current_date_and_time":"2023-08-13_08-33-26","input_mean":[[24.0553],[0.05153281],[0.015448316],[-0.014650657],[0.04650553],[0.04824544],[0.049862176],[0.0546265],[0.053556256],[0.05162971],[0.04806687],[-0.014739772],[-0.014722749],[-0.014703085],[-0.014610224],[-0.014595721],[-0.014765067],[-0.014981542]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16389364],[-0.09017541],[-1.1647506],[-0.6587049],[-0.060985837],[-0.21915653],[-0.11024977]],"dense_1_W":[[0.001650034,-0.92548645,0.0649104,0.028528351,0.5250701,-0.5574239,0.38432446,0.10459642,-0.35498068,-1.078298,0.8481259,-0.27305496,0.002911391,0.3782357,-0.14095218,0.0827578,0.32712424,-0.23005211],[0.0902557,0.32735464,-2.28293,-0.66071206,1.7252614,-0.43295604,0.38447145,-1.2641565,-1.1254754,0.601649,-0.22029242,-0.06569076,0.2504662,-0.36702126,0.3171216,0.8626499,0.028089207,-0.43380517],[0.5821453,0.15223487,2.6885037,-0.17222582,0.15152413,-0.9019428,0.38670883,-0.23797712,0.06278605,0.09316208,0.33182064,-0.1686998,-0.39460248,0.06328239,0.59990156,0.52030545,-0.05340852,-0.37717444],[0.38206068,-0.0565225,-2.2878838,0.27850866,-0.07075595,0.79982686,-0.42363936,0.40338862,-0.26033697,-0.11626149,-0.30429554,0.26288483,-0.033476517,-0.5080968,-0.3249822,0.20929106,0.270843,-0.18540776],[0.023973651,-1.1213268,2.1238108,-0.024581453,1.0142306,0.6209359,-1.075154,0.48566073,0.18506725,0.013205165,-0.1463418,0.35358152,-0.15770157,-0.08743086,-0.30606773,-0.042505883,0.46283403,-0.18692932],[-0.0021915815,-1.1354867,-0.06360406,0.447425,0.4746199,-0.28277287,-0.023870196,0.34384865,0.21172099,0.1064795,-0.13672785,-0.19995657,0.14958183,-0.23914275,0.06216524,-0.12911916,-0.055552065,0.043550123],[0.0017299546,0.8092503,0.05173706,-0.16951394,-0.479756,1.210766,-0.70967305,-0.10443872,-0.42421815,-0.4633462,0.4819916,0.41747493,-0.20445484,-0.2810944,0.10567981,0.15402447,-0.109205164,0.025440434]],"activation":"σ"},{"dense_2_W":[[-0.39135623,0.27202022,-0.6013986,-0.64582634,-0.6761625,-0.034833696,-0.47770235],[-0.6643015,-0.07582451,0.28175977,-0.17720482,-0.13394056,-0.57026803,-0.20838319],[-0.76068735,-0.03635872,-0.32094952,0.3875149,0.0033950128,-0.11746398,0.11166597],[0.09897547,0.34849387,0.34470668,0.32905695,-0.39746615,0.6536501,-0.73582923],[0.3257729,0.8186221,0.462827,0.206003,-0.791141,0.5543548,-0.55780596],[-0.59339374,-0.5604979,-0.37463582,0.15022774,0.08227588,-0.12084131,-0.72836936],[-0.10631841,0.64733845,-0.19081868,-0.8196671,-0.5185302,0.57588714,-0.8418388],[-0.28855416,-0.40788642,-0.22638142,0.039785244,0.42720664,0.08895065,-0.114857286],[0.7554024,0.09335394,-0.038691644,-0.51206696,-0.6964066,0.79751784,-0.5822203],[-0.36288157,-0.37563536,0.41425094,0.264427,0.41743213,-0.2764543,0.64417255],[-0.8176743,-0.010832012,-0.41458604,0.18923777,0.2012841,0.009667026,0.6762643],[0.11934642,-0.5864817,0.16600628,0.28051364,-0.13105674,0.22044942,-0.019528905],[0.5533989,0.66445804,0.31221595,-0.68456656,-0.24079095,0.7768225,-1.3347878]],"activation":"σ","dense_2_b":[[-0.31197193],[-0.031413633],[0.03965752],[-0.061369944],[-0.108691074],[-0.34241664],[-0.31260058],[0.0052420176],[-0.0034803348],[-0.009040426],[0.032145865],[-0.013744207],[-0.12510912]]},{"dense_3_W":[[0.2274993,0.5665878,0.22904979,-0.31244048,-0.177466,0.39304316,0.46666682,0.5655463,-0.40834668,0.123042084,0.28890088,0.24861963,-0.33083183],[0.5515104,0.4236585,-0.41383946,0.38279107,0.3648294,0.033724736,0.594795,-0.03362508,0.5668787,-0.33538687,-0.6832093,0.13241947,0.26189715],[-0.57273656,-0.6574504,-0.62127274,0.5114571,-0.2834754,0.5221384,0.058243714,-0.15925437,0.34103858,0.34175843,-0.36275822,-0.4356808,0.04839572]],"activation":"identity","dense_3_b":[[0.039760787],[-0.06425814],[-0.035501104]]},{"dense_4_W":[[0.95254374,-1.5316479,-0.5766585]],"dense_4_b":[[0.0464274]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002NB4202N7N'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002NB4202N7N'.json deleted file mode 100755 index f93202e113..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002NB4202N7N'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[11.96429],[0.48755237],[0.3202853],[0.016136056],[0.47789466],[0.4800027],[0.4825725],[0.4900211],[0.4979344],[0.50082195],[0.509806],[0.015823891],[0.015903281],[0.015982913],[0.016349215],[0.016593793],[0.016913936],[0.017299606]],"model_test_loss":0.006491394247859716,"input_size":18,"current_date_and_time":"2023-08-13_08-58-34","input_mean":[[23.908133],[-0.009390707],[-0.004253836],[-0.025968479],[-0.00612068],[-0.007160293],[-0.007376146],[-0.009109003],[-0.0076243],[-0.0026939402],[0.0045118434],[-0.026125945],[-0.026092473],[-0.026057927],[-0.025872864],[-0.02570859],[-0.025540205],[-0.025320645]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.41294238],[-2.7690372],[-0.18349741],[-0.10760971],[-2.6992774],[0.32752463],[-0.67742026]],"dense_1_W":[[-1.3586515,-0.43871593,-0.060125872,0.14131355,0.91296524,-0.27596986,0.2190367,0.41157725,0.029709097,-0.2607309,-0.050010905,-0.11755934,-0.22254317,0.17312372,-0.3761272,-0.45554724,-0.2239468,-0.2360416],[-1.5048568,-0.7412387,-0.104529426,0.18972115,-0.04966916,-0.31632864,1.5387456,-0.68554825,-0.047455277,-0.09145563,0.011231757,0.1552257,0.14442553,-0.19027676,-0.3082216,-0.048122175,-0.08658755,0.17344293],[-0.06806865,-0.28421763,-0.061045542,0.29776254,0.017410226,-0.6256607,0.3693766,0.09203255,-0.20777148,0.16598798,-0.031423636,-0.14880905,-0.050573036,-0.18030158,0.34338558,-0.010559312,-0.1716994,0.0015558694],[-0.021257099,0.4201582,0.10567662,0.098136276,-0.5245343,1.1510786,-0.21176715,0.25107303,-0.10454084,0.2301715,-0.24894434,0.3596001,-0.34517595,0.058510073,0.0818201,-0.26276216,-0.14658763,0.21273282],[-1.5012898,0.6668104,0.10121657,-0.25168574,-0.0037740553,-0.2010022,-0.75998825,0.4218689,0.24208617,0.044093963,-0.037556846,0.1966981,-0.110668525,-0.14782344,0.35860345,-0.21139877,0.30253902,-0.16673942],[-1.2461659,-0.7911809,0.035795726,0.73150784,0.696571,0.49404347,0.11756719,0.5757391,0.09980145,0.16326262,-0.19388047,-0.6046584,0.21638776,-0.4022077,-0.12755662,-0.10812808,-0.34516883,0.16070507],[-0.19035971,-1.7321862,-5.0254865,0.22558816,0.1942134,-0.44183806,0.40744686,0.513804,-0.21384099,0.681004,0.10350117,0.047648296,-0.14447348,-0.0847752,0.09760403,-0.26012734,0.45971102,0.06473803]],"activation":"σ"},{"dense_2_W":[[-0.34405056,0.87975556,-0.11178791,-0.9415903,-0.22488657,0.38250393,-0.22682497],[0.6375331,-0.9361189,-1.0352612,0.23702581,-1.3226422,-0.70677704,0.60978687],[0.59013045,0.67570806,0.65553236,-0.24382202,-1.3824764,-0.136895,-0.021328399],[-0.91779196,-0.4002371,0.15189488,-0.1415177,-0.14752227,0.1649123,-0.6430806],[-0.25153294,0.27459243,-0.054157175,-0.5623544,-0.3548548,0.07935024,0.17336936],[-0.2654553,-0.39781526,-0.39670828,0.5024505,0.8163613,0.09423658,-0.06174219],[-0.439626,-0.122389056,-0.4051925,0.7102208,0.21351016,-0.21359682,-0.043064147],[-0.24681723,-0.75991267,-0.5213269,0.61109763,0.6579795,0.31300342,-0.19012727],[-0.32835272,0.27643317,0.80610013,-0.48940447,-0.6658583,-0.08905346,0.40121162],[0.014117802,1.0277611,0.9433537,-0.52780867,0.21137868,0.18057697,-0.51537097],[0.4187044,-0.18805541,-0.8279012,-0.13557853,0.1907715,0.12131266,-0.30106992],[0.16725653,0.75205564,0.8238714,-0.19580607,-1.0709527,-0.43005282,-0.1344186],[0.4120912,-0.67633796,-0.3733059,0.31897324,0.7961127,-0.1235923,-0.5691213]],"activation":"σ","dense_2_b":[[0.0015434292],[-0.42678097],[-0.12843466],[-0.2722911],[-0.17105557],[-0.11514613],[-0.06279293],[-0.019363822],[-0.009035881],[0.106273174],[-0.05945216],[-0.123012476],[-0.058660183]]},{"dense_3_W":[[0.6179223,0.6908968,0.23002878,0.16771492,-0.38249567,0.44911724,0.23442027,-0.46552494,-0.45699558,-0.35989794,-0.40735313,-0.31366763,-0.05994278],[0.32953018,-0.25569904,0.31176892,-0.058506478,0.055031825,-0.5803407,-0.41470534,-0.7076998,0.7423508,0.2604255,-0.3739903,0.5488002,-0.43356815],[-0.05421326,-0.34172624,0.28983295,-0.522155,0.034952227,0.36832595,0.34097177,0.4830782,-0.7160004,-0.70392597,0.16239382,0.029896518,0.6162823]],"activation":"identity","dense_3_b":[[0.12146979],[0.06732302],[-0.06318822]]},{"dense_4_W":[[0.04596985,-1.108794,0.22253986]],"dense_4_b":[[-0.060146004]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B60924A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B60924A1'.json deleted file mode 100755 index aed7db5c78..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B60924A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.683442],[0.98865986],[0.47218922],[0.03871906],[0.9749567],[0.97964174],[0.9846377],[0.96558553],[0.9452397],[0.9233499],[0.8986563],[0.038632676],[0.038636968],[0.038635172],[0.038416203],[0.03809765],[0.03765577],[0.03724798]],"model_test_loss":0.012059486471116543,"input_size":18,"current_date_and_time":"2023-08-13_09-53-13","input_mean":[[24.93752],[-0.045939222],[-0.016389137],[-0.004302249],[-0.041963723],[-0.043094873],[-0.044972997],[-0.049667895],[-0.05290968],[-0.058309894],[-0.05893371],[-0.004446903],[-0.0044335183],[-0.004419059],[-0.0043945634],[-0.0043718517],[-0.004439213],[-0.0045372355]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.1140616],[0.025871063],[0.2243207],[-0.46016932],[-1.4698206],[-0.71150887],[0.21343042]],"dense_1_W":[[0.50331783,0.11694233,-1.5816242,-0.32721916,-0.41283622,-1.0465689,0.7585539,-0.07061255,0.17088029,0.16865654,0.27171412,-0.29783547,0.005930493,0.8796375,-0.18076001,-0.22494902,0.14086941,0.02350371],[0.39964604,-0.06841097,1.284112,0.081528254,0.715496,0.9111793,-1.1611114,0.26898384,-0.17206313,-0.35275218,-0.06688733,0.2690601,0.17759158,-0.6246783,0.03650214,0.11638598,-0.18206348,0.107519194],[0.24504289,0.89508206,0.016166057,-0.112143464,-0.7020446,1.0947877,-0.17686859,-0.15869354,0.05293,0.12103868,-0.0552494,0.031484745,0.34501955,-0.08349311,-0.5022218,-0.09982318,0.2693678,-0.010383809],[0.007931579,3.6076553,0.031299092,-0.0632944,-0.36807698,0.44875357,0.65344036,1.8584886,2.0649836,0.52160025,-1.4293678,0.3685855,-0.015850615,-0.6611801,-0.09302336,0.15269071,-0.34181482,0.22311872],[0.27789986,0.4345057,1.7105428,0.3809664,0.23606543,-0.53605545,0.77079517,-0.18572022,0.029536983,-0.08425826,-0.53436494,-0.47137046,-0.49002567,0.6303357,-0.05725936,0.14865646,-0.024520583,-0.13768268],[-0.24115954,1.279325,0.006372729,0.082450144,-0.51617074,0.56547415,-0.2152657,-0.20878896,0.27892676,0.005575542,-0.08203108,0.26797956,-0.1609261,-0.31879193,0.0687177,-0.12210038,-0.02824459,0.04868769],[0.5532259,-0.31703275,-1.3693326,-0.39785337,-0.45586273,0.51413405,-0.8438991,0.35914817,0.0845233,0.27229154,0.1630712,0.5866208,0.14001441,-0.53064567,0.0022326964,0.3564542,-0.22063065,0.098910645]],"activation":"σ"},{"dense_2_W":[[0.07933149,0.24055447,0.4976298,0.04625589,0.39628196,-0.31187287,0.10486112],[0.16486526,-0.4745025,-0.41495293,-0.58882856,0.45950136,-1.0270692,-0.14418496],[-0.2165068,-0.40877748,0.31806844,-0.43342555,-0.16252048,-0.20286933,-0.24733812],[0.6930096,-0.32642758,-0.89015126,0.17958382,0.9937355,-1.6690918,-0.038145885],[-0.7482682,0.5658933,0.9042878,0.021569345,-0.48649457,0.5340851,-0.027348604],[0.67918,-1.904818,-0.8380397,-0.051741455,-0.28229547,-0.7634411,-1.8948066],[0.3247175,0.31701854,-0.2781933,0.43401104,0.49560198,-0.2726791,0.032593645],[-0.37467694,-0.03656642,-0.33198854,-0.31007978,-0.43297952,-0.59289163,-0.22284593],[1.024911,-0.6805027,-0.19422202,-0.32719725,0.83347833,-1.039209,0.82521194],[0.36815783,-0.5916512,-0.83911014,0.0574501,0.110373095,-0.5765434,-0.51522857],[-0.62331885,-0.17632262,0.8677081,-0.0120098395,-0.27507105,0.591978,0.29510972],[-0.2604249,0.23846155,0.89924765,0.49570164,-0.570918,0.73513013,0.07734572],[-0.08252068,-0.20023943,-0.6037063,-0.68478596,-0.30307132,-0.5236618,-0.34129605]],"activation":"σ","dense_2_b":[[-0.037471402],[0.020133492],[-0.030062372],[0.18862785],[-0.16345033],[0.6310636],[-0.04814403],[-0.13305083],[0.30672064],[0.09021095],[-0.015109793],[-0.09782],[-0.08616344]]},{"dense_3_W":[[0.00968849,-0.4974434,0.057221804,-0.05612671,0.44181606,-0.7102969,-0.08313611,-0.41528141,-0.5589184,-0.6598731,0.27019504,0.59793496,-0.1394197],[-0.18780659,0.013776527,0.097994566,0.082103886,-0.21989425,-0.19045697,0.17197673,-0.5449254,0.16991271,-0.09662889,-0.60549957,-0.5836056,0.31347692],[0.12937143,0.41864458,0.19149177,-0.6325805,-0.38940874,0.26463097,0.3983454,0.44313705,-0.57387125,-0.6276399,0.22248751,0.2585914,-0.04698139]],"activation":"identity","dense_3_b":[[0.031332195],[-0.011427722],[0.02366233]]},{"dense_4_W":[[1.1474994,-0.26583225,0.42394185]],"dense_4_b":[[0.028095849]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B6G920A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B6G920A1'.json deleted file mode 100755 index 8635448275..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B6G920A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9049487],[0.8561191],[0.4504596],[0.038353253],[0.84595364],[0.8492535],[0.8529379],[0.8561067],[0.85435045],[0.85641384],[0.85120344],[0.038395345],[0.038383085],[0.038364075],[0.038244415],[0.038174238],[0.038057357],[0.037874334]],"model_test_loss":0.007408166769891977,"input_size":18,"current_date_and_time":"2023-08-13_10-20-32","input_mean":[[22.704159],[-0.05434947],[-0.028899634],[-0.014197077],[-0.047043595],[-0.04961061],[-0.051511772],[-0.064129874],[-0.073261425],[-0.082883425],[-0.0892596],[-0.013961674],[-0.014019979],[-0.014073931],[-0.014204705],[-0.014272569],[-0.014375915],[-0.014562678]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.120744884],[-2.1077828],[-0.06055612],[0.39443776],[-0.22368135],[-0.65588754],[-2.6387818]],"dense_1_W":[[-0.88690495,-0.25811425,0.008988815,0.13833122,-0.08116928,-0.4481129,0.35815176,0.26801386,0.28154677,-0.40463963,0.053177662,-0.24901138,0.1963489,-0.17850944,0.4205931,-0.2479545,-0.09116836,0.04012526],[-1.2232169,0.21496952,-0.34511173,0.2337797,0.55760974,-1.4960742,0.57970977,0.05764135,0.00652666,-0.002710308,-0.022491196,-0.34730065,0.12834378,0.3231942,-0.5951289,-0.18041079,0.5969328,-0.17919765],[-0.013577242,0.72050744,0.043851886,0.08763659,-0.10938563,0.81028354,-0.49421427,-0.055606507,0.39534506,-0.21660888,-0.0038955023,0.6321912,-0.21082307,-0.73846775,-0.11770506,-0.23157798,0.33104023,0.0045754346],[-0.10664416,-3.9566016,-0.095965914,-0.019330999,-0.4638217,-1.5822362,-1.4879117,-1.5428027,-2.3343623,-0.8989189,0.15379162,-0.52634346,0.4945621,0.47638455,0.3022711,-0.2961842,-0.044219077,-0.15859331],[-0.8310568,-0.15923229,0.006822003,-0.018409794,-0.23237298,1.0993366,-0.29199913,-0.24162076,-0.079320475,-0.057994813,0.19191225,0.16130863,0.2252312,-0.2553471,-0.032364585,-0.12529343,-0.24044278,0.2582998],[-0.109629534,0.32457277,3.9654276,0.21012852,0.3246289,0.68227553,-0.13658419,0.3768019,-0.07727444,-0.74666935,-0.5759585,0.04406303,0.19795617,0.018164791,-0.26933455,0.050561618,-0.20878446,-0.047754884],[-1.363271,0.06545215,0.3758413,0.06491672,0.084676765,0.35959658,-0.32623026,-0.20922486,0.069487125,0.08547648,-0.04262586,0.3544595,-0.12652668,-0.37254444,0.21089934,0.008135089,-0.105872564,-0.008318545]],"activation":"σ"},{"dense_2_W":[[-0.72054654,-0.6050417,-0.7220704,-0.44005063,-1.0284771,0.8106998,0.014414875],[-0.058226008,-1.1631503,-1.027209,-0.75974965,-1.2817178,1.113419,-0.65957123],[0.50055337,0.83895123,-0.6208208,-0.57039124,0.28612334,-1.0834124,-0.38909918],[-0.99643636,-0.39019206,0.3543918,-1.5282012,1.0121741,0.5773511,1.208323],[0.12123124,-0.62592685,-1.1137303,-0.14054954,-1.0746346,0.25387576,0.21012427],[-0.028134568,-0.41023138,1.1109024,-0.29490876,-0.104959935,-0.028684778,-0.014831031],[0.3203809,0.69519943,-0.8536804,0.34720927,-0.41844305,-0.70005876,0.2783357],[0.65279526,0.26307833,-0.09818812,-0.14922686,0.0068492573,-0.6803769,-0.6562028],[-0.9916566,-0.746977,1.2095876,-0.28206152,0.77202094,0.09917717,0.53519136],[0.5871799,0.5488787,-0.85902935,0.29927683,-0.41470188,-0.034725975,-0.4221715],[0.8082283,0.6814313,-0.9875302,0.07708959,-0.33729747,-0.6126396,-0.3882399],[0.10397777,-0.37797046,0.6114876,0.4482404,0.23890285,-0.09893929,0.30193642],[0.65473473,0.6695784,-1.1461365,-0.09873656,-0.4201835,-0.4659413,-0.021572102]],"activation":"σ","dense_2_b":[[-0.22703657],[0.015636627],[-0.28062612],[-0.46867597],[-0.42662266],[0.10531475],[-0.27268052],[-0.117583275],[-0.03751292],[-0.21399282],[-0.15614581],[0.0078853285],[-0.041914072]]},{"dense_3_W":[[0.39234796,0.62153774,0.51387525,-0.25627816,-0.22709092,-0.7633196,0.4101854,0.35565174,-0.8346539,0.39193448,0.17382623,-0.03400133,0.12321009],[-0.29410705,-0.38960123,-0.062432252,0.44320828,-0.18776551,0.4824824,-0.18968157,-0.42845276,-0.26182756,-0.26892537,-0.3521713,0.6616498,-0.546959],[0.16058823,-0.86594164,-0.13168101,1.0188407,-0.5159865,0.19459534,-0.15246914,0.059648626,0.26894704,-0.32199717,-1.2184755,0.24150649,-1.0980307]],"activation":"identity","dense_3_b":[[-0.115189165],[0.12497786],[0.049071394]]},{"dense_4_W":[[-0.6646698,0.30865747,0.50033504]],"dense_4_b":[[0.12551612]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6080105'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6080105'.json deleted file mode 100755 index 48341be495..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6080105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.46098],[0.5805504],[0.4286228],[0.027327532],[0.5625607],[0.5664083],[0.572346],[0.55758566],[0.55044997],[0.53875524],[0.5324083],[0.027238432],[0.027249781],[0.027267734],[0.027059836],[0.026759954],[0.02641711],[0.026055066]],"model_test_loss":0.00871726218611002,"input_size":18,"current_date_and_time":"2023-08-13_10-46-07","input_mean":[[22.35009],[0.03588671],[0.030875545],[-0.009168813],[0.023282468],[0.025879717],[0.030697377],[0.036618296],[0.039199185],[0.036285438],[0.027312003],[-0.009021863],[-0.009056173],[-0.009087383],[-0.00929402],[-0.009451607],[-0.009612639],[-0.009819853]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.034004],[-0.89401245],[0.9897701],[-0.3193278],[1.1259059],[-0.15454224],[3.3354394]],"dense_1_W":[[0.44570363,-0.7825432,-0.061906625,-0.026865548,0.2508251,-0.017034708,0.3547928,-0.310705,-0.09453543,0.070832364,0.09877715,0.2973578,-0.35449862,-0.18486549,0.30955637,0.21419896,-0.4893967,0.23366004],[0.69126964,-0.25657803,-0.030580372,-0.6565601,0.2661697,0.9771365,-0.048998043,-0.5814566,-0.13185975,0.25074315,0.15406479,-0.01448358,0.6794868,0.028108925,-0.545066,0.20658419,0.050444037,-0.016133675],[-0.6743554,-0.028887114,-0.032645535,0.25018308,0.006226353,1.0695997,-0.18894264,-0.24792102,-0.1595514,-0.059550885,0.26033223,-0.07776964,-0.13275231,-0.08301031,-0.06557147,0.015360838,-0.14179525,-0.02958493],[-0.00023020334,-2.5403516,0.103054345,-0.036754318,-0.37462926,-1.2828135,-0.78215855,-0.5872427,-0.23358877,0.8133214,-1.7763032,-0.11175946,-0.5391298,0.14259054,0.08525794,0.6968644,1.1772321,-1.3956367],[0.4643646,1.0727947,0.06773056,-0.1627986,-0.44790077,0.43600535,-0.83087605,0.3373429,0.035555895,-0.039930362,-0.11480868,0.34158143,0.086424485,-0.3963858,0.077727064,0.026601842,0.16779198,-0.14299323],[-0.01659432,0.18239553,-2.4434328,0.4596415,-1.3727697,-0.45394266,1.580408,-0.23654598,-0.03745976,0.0920622,0.5134545,-0.4865392,0.24464038,0.4678696,-0.32076362,-0.84693116,0.43715867,0.037381206],[-0.011063157,-0.9861401,-0.049675927,-0.730512,-0.29446808,0.047909494,-1.549821,1.0472431,0.20591155,-1.2257841,0.35139507,-0.9356053,-0.8952574,-1.3479776,-0.92216295,-0.5816112,-2.177031,-2.7402952]],"activation":"σ"},{"dense_2_W":[[-0.9175717,0.7838937,0.18961704,-0.21025512,0.049619257,0.1847999,-0.13175379],[-1.3712368,-0.22107592,0.8426797,-0.54940265,0.37827617,-0.7331404,0.3816527],[0.879834,-0.07275896,-0.15078747,-0.084817156,-0.5905503,-0.0077536167,-0.026412051],[-0.16437627,0.7776934,0.16704066,-0.81203943,0.714978,-0.38184956,0.5668494],[0.36693972,-0.71004605,-0.4970682,0.41367897,-0.26275557,0.04859335,0.0019217964],[-1.1874106,0.44417366,0.4221658,-0.459451,0.9441592,0.028537316,0.44670618],[0.06823978,0.053194616,-0.32906988,-0.040382143,-0.74561256,-0.3759315,0.52331495],[-0.16486976,-0.63236946,0.17065576,0.6424932,-1.2657642,0.19909996,-0.30308995],[0.44445,-0.5825901,-0.4318686,-0.37460575,-1.2127082,0.11012628,0.7677005],[-0.46705374,0.7579557,0.43045595,-0.14844555,0.81806993,-0.3961867,0.082349285],[0.9047916,-0.027479485,-0.21539336,-0.26026043,-0.56305844,0.23231633,0.24555749],[-0.13455963,-0.793142,0.16952343,0.31437233,-1.4577682,0.7650801,-0.17605627],[0.78401864,-0.40363696,-0.7288144,-0.4528122,0.13153328,-0.089454,-0.4570649]],"activation":"σ","dense_2_b":[[-0.03731149],[-0.25853628],[-0.22449726],[0.050002333],[-0.07679642],[-0.27620718],[-0.040895026],[-0.17041162],[-0.12874831],[-0.1850663],[-0.06403408],[-0.31963417],[0.010012412]]},{"dense_3_W":[[0.43035418,0.62377286,-0.04799687,0.37535116,-0.2510285,0.435108,-0.4777117,-0.42720693,-0.16901441,0.34647202,-0.5691831,-0.47436827,-0.56257755],[0.50507265,0.812848,-0.0652019,-0.037624083,-0.2630056,-0.063649006,-0.17664024,0.6002492,0.23068571,0.061552785,-0.5704422,-0.3373628,-0.5592467],[0.020316904,0.6937366,-0.266464,0.46094483,-0.045586474,0.38334998,0.41075394,-0.3045877,-0.63142675,-0.3368865,0.11822097,-0.1788716,-0.461762]],"activation":"identity","dense_3_b":[[0.058974706],[0.07503411],[-0.08209236]]},{"dense_4_W":[[1.1198002,0.17802396,0.12900992]],"dense_4_b":[[0.055657092]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6090105'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6090105'.json deleted file mode 100755 index ed370ac904..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6090105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.303951],[1.1061448],[0.45519033],[0.03890334],[1.081259],[1.0887367],[1.0969497],[1.092481],[1.0865434],[1.0689224],[1.0470375],[0.038625997],[0.038678918],[0.038709994],[0.038684364],[0.03853108],[0.03823509],[0.037891388]],"model_test_loss":0.0091054392978549,"input_size":18,"current_date_and_time":"2023-08-13_11-14-36","input_mean":[[24.991106],[-0.052309062],[0.0040966566],[-0.011176246],[-0.052617952],[-0.052739866],[-0.053076603],[-0.053221803],[-0.052702937],[-0.052821293],[-0.04823078],[-0.01125922],[-0.0112718595],[-0.011276353],[-0.011362061],[-0.011423353],[-0.011574674],[-0.011701717]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.2000623],[-1.0601752],[0.02134417],[0.34618574],[-0.41577217],[-0.1728919],[-0.61339724]],"dense_1_W":[[0.6945757,-0.32359305,1.5179125,0.061160147,0.2037475,0.6379559,-0.12414423,0.0059865746,0.13593642,0.34044787,-0.6639205,0.08353744,-0.077323966,-0.28454944,0.04639403,0.20414786,0.3709197,-0.3463716],[0.05652898,4.1764426,-0.006069666,-0.7129519,1.8937668,1.5178504,0.3519152,1.7854784,0.39515916,0.91557574,0.47060627,0.37094897,0.3413073,0.2681898,-0.31728673,0.20122348,-0.028086334,0.15455683],[0.14809841,-0.17917761,-0.00034424284,-0.124425046,-0.1850857,-0.74427736,0.15511078,-0.120926015,-0.012820842,-0.117898285,-0.016289195,0.27818105,-0.09533491,-0.03304152,-0.04132924,0.0033757824,0.35598698,-0.11256063],[1.1169398,0.49344513,-1.6779064,0.31510845,-0.165833,-0.52853584,-1.2107238,0.38685435,0.2492109,0.36423388,-0.026242055,-0.092144534,0.22960894,-0.3682959,-0.17427671,-0.15931715,0.31591633,-0.12631632],[-0.09261426,-0.44354674,0.0025963027,0.11725519,0.5170039,-1.6007098,0.409791,-0.18131912,0.0033203233,0.25904283,-0.21513839,-0.4170825,-0.15698108,0.47902456,0.53502494,-0.31782442,-0.03569762,0.051992897],[0.0042456975,-0.47560015,-0.0026210295,0.031245418,-0.012764861,-0.92874646,0.6509197,0.33344513,-0.012610092,0.18168646,-0.2557554,-0.44327387,-0.13764408,0.42211333,0.23698005,0.37390047,-0.073409125,-0.17985323],[-0.8177616,0.6893316,1.3907503,-0.0023526286,-0.5415417,0.801563,-0.40723026,0.18662976,0.07481949,0.11865076,-0.6322875,0.23950732,-0.17827813,-0.16382805,-0.084146835,0.39538124,-0.09231756,-0.06298284]],"activation":"σ"},{"dense_2_W":[[0.30893767,-0.21597238,0.34375098,-0.25055024,0.3330617,0.38276237,-0.71425796],[-0.31416908,0.19624454,0.84980524,-0.6247502,1.137116,0.7904554,-0.74953896],[0.10519312,0.14832982,-0.26275882,0.2762413,-0.35890564,-1.246903,0.25022545],[-0.3228544,-0.06965771,0.24511589,-0.09088025,0.87480575,0.8223658,-1.0762371],[-0.6225081,-0.79335475,-0.77840954,-0.5098249,0.62632555,0.2364035,-0.94132584],[-0.26544946,0.19669403,0.33992356,-0.021165801,0.5467231,0.35932502,-0.86759907],[-1.9278108,-3.4194539,-1.5747315,-1.8566562,1.757728,0.4785611,0.38245028],[0.00854604,0.22411391,-0.98446316,0.5888375,-1.1318563,-0.63558984,0.21114045],[-0.042795878,-0.25286025,0.9120754,-0.47074848,0.21183152,0.8286851,-0.5500911],[-0.048500616,-0.39560843,0.108169064,0.030019483,-0.2797118,-0.8024904,1.1825333],[0.24435245,0.30188617,-0.8876096,0.32955825,-1.0187839,-0.70859,0.41195366],[0.2961078,0.036369283,-0.173866,0.25641084,-0.7356608,-0.51908946,0.9349239],[-0.8808378,-0.3808547,-0.36999512,-0.77035606,0.5030658,0.36325094,0.39363125]],"activation":"σ","dense_2_b":[[-0.07842559],[-0.09987076],[0.010018767],[-0.2822568],[-0.35917684],[-0.44091773],[0.33568865],[0.07248511],[0.07309797],[0.10989416],[-0.003620754],[0.0024933761],[-0.2047217]]},{"dense_3_W":[[0.26641047,0.5025841,-0.5746309,0.72528905,0.4545447,0.14570309,0.58782375,-0.8174622,0.7011326,-0.37532592,-0.8499182,-0.5160384,-0.10076714],[0.42193347,-0.2640134,-0.09260018,-0.47143674,-0.31873474,-0.070022374,0.0072793798,0.21706063,0.47843012,-0.12351305,0.057239983,-0.37678227,0.3790527],[0.31047106,0.072491184,-0.26496214,0.28195223,0.43037447,-0.17418887,0.37405774,0.15594256,-0.030484399,-0.10081656,-0.36806333,0.17099544,-0.57947606]],"activation":"identity","dense_3_b":[[-0.035134505],[0.035389643],[-0.0024598911]]},{"dense_4_W":[[-0.88231134,0.03782195,-0.036473993]],"dense_4_b":[[0.026110955]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144F xf1x895043xf1x82x0561A01612A0'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144F xf1x895043xf1x82x0561A01612A0'.json deleted file mode 100755 index 4d03bacbb7..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144F xf1x895043xf1x82x0561A01612A0'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.393678],[0.9507211],[0.515524],[0.03579411],[0.92671007],[0.9349327],[0.94223416],[0.93390805],[0.91419286],[0.9005691],[0.8817757],[0.035967667],[0.035894528],[0.03581829],[0.035463523],[0.035266362],[0.034894552],[0.034437038]],"model_test_loss":0.007279031444340944,"input_size":18,"current_date_and_time":"2023-08-13_12-09-05","input_mean":[[18.321695],[0.026961222],[-0.0035306585],[0.0042126137],[0.026481297],[0.025289914],[0.02407461],[0.022458786],[0.02010773],[0.01840629],[0.010958715],[0.004338949],[0.004328805],[0.004322178],[0.004482345],[0.0045845066],[0.0045210808],[0.0044681383]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.23433709],[-0.18828739],[-0.18552896],[-0.5719115],[-0.22013229],[-1.4444673],[-1.5718764]],"dense_1_W":[[-1.2401875,0.3811429,0.22920376,0.17823632,0.38709855,-0.66355306,0.8482343,0.49103037,0.5053358,-0.24420182,-0.092417374,-0.23246154,-0.050690368,-0.08148075,0.24395947,0.33181128,-0.24565633,-0.08007848],[-0.033186838,-0.018208645,5.2053638,0.40082926,0.12013276,1.3642305,-0.066606104,-0.2109344,0.056820087,-0.49343818,-0.73463804,0.0054429434,0.30579343,0.2644848,-1.104032,-0.3646586,0.40208718,0.09694821],[0.013673816,1.5230023,0.03033682,-0.35785833,-0.47244158,1.1692531,-1.2142229,0.21123275,0.20759322,-0.12557651,-0.024190914,0.18843181,0.42164597,-0.41802365,-0.1273723,0.11422493,-0.3571295,0.24296899],[-1.2805165,-0.03634216,-0.2315571,-0.33567777,-0.15831298,0.46170834,-1.3284832,-0.35208622,-0.3114747,-0.14607859,0.23413593,0.42039818,0.100040615,-0.11651754,-0.25472957,-0.18363725,0.25635332,0.046210147],[-0.1223163,0.39836767,2.1085758,-0.83522975,0.93836105,1.1645079,0.5623019,0.803997,1.619908,0.69255054,0.006743934,-0.027720656,0.22808708,-0.50816184,1.2988809,0.82322896,-0.54477817,-0.36819857],[-0.7315945,0.4780022,0.1772432,0.4104992,0.08421316,0.9401301,-0.49227592,-0.009742048,0.11372556,0.104266785,-0.019224092,0.4900326,-0.47639382,-0.6323555,0.24357527,-0.0516575,0.23969004,-0.19771135],[-0.76657575,-0.4302957,-0.18278445,-0.14294477,0.019147635,-0.83321804,0.18196133,0.0027990995,-0.101887345,-0.09481852,0.02363611,-0.10652451,0.29024073,0.12037951,-0.19053681,-0.002771024,-0.18999992,0.19319752]],"activation":"σ"},{"dense_2_W":[[1.1674703,-1.0795661,-0.83592135,-1.2450091,0.39534637,-0.23755772,0.6893884],[-0.8306515,0.5932858,-2.246159,-0.60801744,0.89207256,-1.3776426,-0.87655],[0.06655564,-0.3241597,0.68319845,0.5761408,0.07908217,0.17945948,0.24506673],[0.68613476,0.19972438,-1.3021669,-0.6668362,-0.6518976,-0.24746297,1.2003715],[-0.8004638,0.5167141,1.1191069,0.013375394,-0.2572823,0.93613464,-1.1853722],[-0.21710496,-0.35993806,-0.07203962,-0.6938927,0.18984064,-0.09594037,-0.2881428],[-0.6179966,0.46525648,0.5319194,-0.16893135,0.60552096,1.0496196,-0.51345116],[0.37096095,-0.56000143,-1.0920874,-0.23331793,0.05436759,-1.0298152,1.2464622],[-0.75719625,0.636631,0.13826808,0.05155059,0.22594887,0.8592017,-0.037603486],[0.20930098,-0.55796367,-1.2967436,0.6157302,-0.9854021,-1.511364,1.3654305],[-0.7381424,0.45607466,0.6661581,0.7688956,-0.33832595,1.0015503,-0.6602416],[0.2261951,-0.15274303,-1.3926961,-0.2749363,-0.19298306,-0.8495188,0.6840784],[-0.06774882,0.43374217,-0.59146774,-0.98507404,-0.005510673,-0.63316214,0.44423348]],"activation":"σ","dense_2_b":[[0.25605625],[-0.27236927],[-0.026778517],[0.31539285],[-0.36685586],[-0.16439182],[-0.1343443],[0.3629454],[-0.13780022],[0.39224806],[-0.23516674],[0.24514045],[0.062903486]]},{"dense_3_W":[[0.5346557,0.3789998,-0.2614574,0.4879767,-0.46347272,0.18811665,-0.5559382,0.5217684,-0.6780195,0.568179,-0.20284745,0.40725482,0.25554204],[-0.30582777,-0.6364137,-0.2515572,-0.53830695,0.23051241,0.7431814,0.15372244,-0.14764914,-0.21156888,0.0260592,0.5506795,-0.36910096,-0.12995946],[0.1502716,-0.7994257,0.5153921,-0.6199781,0.056621913,0.29504618,0.005925515,0.060055684,-0.36957523,-0.3707947,0.71017915,-0.45440555,-0.37977552]],"activation":"identity","dense_3_b":[[-0.04320616],[0.24266042],[0.06822999]]},{"dense_4_W":[[-0.8555905,0.09768048,0.3667474]],"dense_4_b":[[0.03568016]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566A01613A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566A01613A1'.json deleted file mode 100755 index d71ba156c3..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566A01613A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.674182],[0.8655689],[0.57967585],[0.040321745],[0.84932566],[0.85650927],[0.86215264],[0.87139815],[0.87453574],[0.874555],[0.8716648],[0.03994974],[0.040019948],[0.040080216],[0.04002835],[0.03998725],[0.03991318],[0.039837524]],"model_test_loss":0.007650585845112801,"input_size":18,"current_date_and_time":"2023-08-13_12-35-04","input_mean":[[23.87158],[-0.1436498],[-0.028368313],[0.009035347],[-0.13046499],[-0.13379243],[-0.13699822],[-0.1480593],[-0.15190914],[-0.15157087],[-0.14864737],[0.009231746],[0.009238965],[0.00924779],[0.00920954],[0.009201414],[0.009255218],[0.00909153]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09592608],[0.9918901],[-1.2113507],[0.8661807],[0.05155025],[0.3214984],[-1.153684]],"dense_1_W":[[-0.017169934,1.1931341,-1.1062534,-0.19596136,-0.81572723,-1.2010746,1.5714276,-0.57053953,-0.8263804,0.052935984,0.73478985,-0.2280826,-0.21767642,0.2753641,0.1326998,0.45369527,0.07199933,-0.30603126],[2.1590579,-1.4124492,0.009337138,-0.21821123,0.84495044,-0.61482656,1.1536438,0.7080137,-0.04427048,0.10480956,-0.022087824,0.2886762,-0.07587974,0.070064016,0.14185634,-0.0007030371,-0.38303795,0.27994344],[-0.40794194,1.153379,-0.0024999902,-0.6986611,-0.20693888,0.6483961,-0.701288,0.039575372,-0.047968443,-0.08190851,0.07021685,0.14132965,0.2368701,0.14922713,-0.22505046,0.28357986,-0.06247636,0.056652017],[0.52197176,1.2478426,0.0009211915,-0.4745136,-0.1614392,0.40458196,-0.48290923,0.053574517,-0.095450394,-0.017885987,0.032721847,-0.090606876,0.14145781,0.2679699,-0.1473115,0.18667473,-0.008584987,-0.005414795],[-0.022690998,0.6585079,-0.005586868,-0.6780271,0.19687867,-1.1014344,-0.2943398,0.36450255,0.03506954,-0.08123903,-0.15920855,0.0505067,0.058525577,0.36120212,-0.21424536,0.46626067,-0.017863052,-0.085303724],[0.00013837297,-0.25373533,-6.435928,1.58516,0.6184224,-0.2115976,0.2892219,-0.71608067,-0.6071019,-0.20726296,0.9175523,-0.47211647,-0.2097295,0.15351994,-0.7116983,-0.63811296,0.23258395,0.08622454],[-2.0628932,-0.7452186,0.008288695,-0.31313533,0.67136544,-0.5808361,0.9877969,0.1444861,0.15634331,0.030246384,0.014997267,0.043635026,0.062175572,0.28663024,-0.13891469,0.3720139,-0.38673353,0.17359486]],"activation":"σ"},{"dense_2_W":[[-0.16763338,-0.47461554,0.10763972,-0.2838411,-0.52468586,0.44780418,-0.66006994],[0.5267072,0.10084127,-0.0030579919,-0.43386367,-0.58511466,-0.099385306,-0.19599876],[-0.0906234,-0.83193815,-0.66303736,-0.8964175,-0.2003442,0.35760805,-0.058140375],[-0.190499,0.07829508,-0.08322553,0.012610012,-0.15027554,0.07325327,-0.22076952],[-0.65134853,-0.6751714,0.38901326,-0.20597398,-0.49264622,-0.6020643,0.38099632],[0.3904269,0.8117801,-4.0269456,-2.344315,0.987539,1.1614928,1.1175928],[0.26499394,0.7727802,-0.99474823,-0.9302356,0.3447509,-0.4111184,0.08102163],[0.35695434,0.33521402,-1.2582849,-1.6280061,0.4927368,-0.14476238,0.5757368],[-0.37491873,0.25197625,0.22271682,-0.491189,-0.52316636,0.4666745,-0.10067969],[-0.34871188,0.033361014,0.14734446,0.31006506,-0.27586716,0.06688171,-0.3405154],[0.5929227,0.8162524,-0.9812328,-0.5239229,0.5872333,0.020790983,0.31533986],[0.24348359,0.39312568,-0.0214521,0.6143711,0.016012145,-0.42566973,-0.118630745],[0.1463825,0.07799967,-0.6324735,0.25962767,-0.5155253,0.076581135,-0.6227099]],"activation":"σ","dense_2_b":[[-0.27831843],[-0.0112905],[-0.27060327],[0.007902096],[-0.05577947],[0.6268199],[-0.053876836],[-0.049551494],[-0.029292142],[0.031467807],[-0.027137926],[0.055927135],[-0.26256073]]},{"dense_3_W":[[0.060232863,-0.5037746,0.018263955,-0.5830695,-0.23065938,0.7206465,0.25052637,0.66073346,-0.34804803,-0.2457851,0.56354797,0.1584851,0.14229323],[-0.017081043,-0.36273557,-0.21656403,-0.05546782,-0.48246115,0.02398911,0.24811241,-0.15399784,-0.1066594,-0.53166276,0.27734274,-0.5389266,-0.5232047],[-0.21170785,0.5739519,0.58981717,0.07041403,0.24331552,0.2217054,0.16948755,0.14839208,0.30543324,0.059965707,0.58376944,-0.4667308,0.47962144]],"activation":"identity","dense_3_b":[[-0.034093823],[-0.02758039],[-0.049317274]]},{"dense_4_W":[[-1.1292782,-1.1194721,-0.71209276]],"dense_4_b":[[0.03250581]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571A0J714A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571A0J714A1'.json deleted file mode 100755 index ea8bf79c9c..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571A0J714A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.261855],[1.0054495],[0.44603008],[0.04906136],[0.9972159],[0.9997243],[1.0025296],[0.99329203],[0.98267734],[0.9657255],[0.9471463],[0.04888154],[0.048943646],[0.04899115],[0.04890786],[0.04878479],[0.04839674],[0.047833208]],"model_test_loss":0.007453115191310644,"input_size":18,"current_date_and_time":"2023-08-13_13-00-57","input_mean":[[25.69152],[0.10401062],[-0.019496834],[0.008966865],[0.10911976],[0.10757787],[0.10587171],[0.097837746],[0.09283788],[0.085548356],[0.07863567],[0.008932414],[0.008952776],[0.0089605255],[0.008813915],[0.008735177],[0.00846132],[0.00794868]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.13713238],[0.20321627],[0.7490122],[-0.38984767],[-0.015705755],[-0.5183053],[-1.6598694]],"dense_1_W":[[-0.016463742,-0.80616003,0.0065253316,0.830898,0.64298636,-0.5656381,-0.06751878,-0.63732654,-0.96067095,-0.42503732,-0.027717927,0.40051052,0.05184687,0.17363398,-0.085222274,-0.19231836,-0.08309723,-0.16269061],[-0.009811768,-0.65155673,-5.564333,0.506703,0.65423405,-0.3767845,-0.07368195,-0.62674314,-0.17415152,0.25860035,1.2521535,-0.79924744,-0.017620802,0.29095054,0.30994758,-0.4196323,-0.16702113,0.057845533],[-0.96295756,-0.31182382,0.00043095846,-0.058392283,-0.584871,-0.98906785,0.44015396,1.2223701,0.6097256,-0.030337319,-0.65342844,0.082843415,-0.2627854,0.36388263,0.5306976,0.18281356,0.38318297,-0.35831112],[-0.045849763,1.0797496,-0.00030220754,-0.07059503,-0.75782734,1.1085478,-0.84971356,0.5044923,0.2171235,-0.035467442,-0.21155863,0.10211848,0.19065809,0.15918909,-0.3584042,0.042742535,-0.10781619,0.071901545],[0.0019713347,-0.10772645,-1.2357202,0.10401833,-0.59948766,-0.6267504,0.51822174,-0.38673958,-0.18886894,0.34199828,0.7218928,-0.07034036,0.009723587,0.39160627,-0.32980394,-0.08204679,-0.2102608,0.20249581],[0.9227928,-0.69833463,0.001716081,0.3443532,-0.20834416,-1.1405655,0.5173991,1.1539986,0.6729235,0.12514886,-0.70969516,0.14161992,-0.40097812,-0.17782708,1.0813764,0.10388947,-0.08262546,-0.17301287],[-0.16219285,-1.3139731,-0.005380759,-0.11242274,0.21998426,0.14689903,0.20139551,-0.46337608,-0.41527465,0.06917474,0.2767211,0.0030106166,-0.27788752,0.102582745,0.1434504,0.07394607,-0.071815714,0.09023541]],"activation":"σ"},{"dense_2_W":[[-0.09534758,-0.20494337,-0.3384321,0.50142735,-0.2070578,-0.17975266,-0.47026268],[-0.080807835,-0.7693725,-0.33129126,-0.6481296,0.2961305,0.59115857,0.29982796],[-0.67640305,0.10868651,-0.40651622,1.251038,-0.35252488,0.069079645,-0.4344765],[-0.405377,0.46910697,-0.648163,0.5376939,-0.4130663,-0.20368347,0.10605837],[0.07806083,0.13273892,0.59590846,-1.2799983,-0.14798646,0.5163046,0.71807456],[0.2771363,0.0771471,-0.88079923,0.19846076,0.33752158,-0.63239664,-0.73708975],[0.384604,0.10437411,0.23125851,-1.506182,-0.06421899,0.8640644,0.4960929],[0.008516661,-0.14540984,-0.039332498,0.3648482,-0.4843125,-0.26544338,-0.19283234],[0.5896814,0.479453,0.07903197,-1.3779969,0.44292685,0.57847136,-0.047437504],[-0.109293275,-0.42078793,-0.39426482,1.4202753,-0.35743013,0.16971365,-0.7200603],[-0.5129918,-0.20219454,0.102802396,0.71803844,-0.24758278,-0.5028839,-0.4083767],[-0.5097355,-0.21850984,-0.28750372,0.014024571,0.07086597,-0.24340022,0.23649839],[-0.72368366,0.15557946,-0.2388718,-0.084316276,0.37256187,-0.16913413,-0.93164635]],"activation":"σ","dense_2_b":[[-0.16169836],[-0.42624626],[0.103336595],[0.09075817],[-0.34198973],[-0.17581685],[-0.73661387],[-0.029041702],[-0.36334386],[0.27201274],[0.079298005],[-0.038892936],[-0.31755415]]},{"dense_3_W":[[-0.32185918,0.23010239,-0.29461142,-0.20029086,0.09440893,0.6768535,-0.5149668,0.37832007,-0.40137282,-0.01920188,0.09111374,0.13883176,0.5203541],[0.4970465,-0.45029837,0.5610221,0.36681646,-0.7023499,0.60753286,-0.027918534,-0.16638023,-0.62392753,0.674149,-0.17300312,-0.16632567,0.13502161],[0.22802192,-0.10680726,0.023894504,-0.37220314,0.5496468,0.25617206,0.49781597,-0.38562778,0.7652926,-0.52234906,-0.40956378,-0.2859582,-0.0064916024]],"activation":"identity","dense_3_b":[[-0.017725911],[-0.009221329],[-0.0017763044]]},{"dense_4_W":[[0.06679463,0.77652645,-0.89682037]],"dense_4_b":[[0.003297589]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144L xf1x895081xf1x82x0571A0JA15A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144L xf1x895081xf1x82x0571A0JA15A1'.json deleted file mode 100755 index d28c64acc3..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144L xf1x895081xf1x82x0571A0JA15A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.9609013],[0.68010557],[0.3328183],[0.030046908],[0.67651325],[0.6776699],[0.67907083],[0.6744121],[0.6666261],[0.6520554],[0.6380237],[0.030044695],[0.03003401],[0.030022014],[0.030028066],[0.03002876],[0.03002293],[0.030003896]],"model_test_loss":0.008286223746836185,"input_size":18,"current_date_and_time":"2023-08-13_13-27-29","input_mean":[[27.427336],[-0.053844143],[-0.0010561344],[-0.0085596135],[-0.05380778],[-0.05453289],[-0.054989513],[-0.055681985],[-0.059845272],[-0.063087784],[-0.068856664],[-0.008624959],[-0.008624049],[-0.008617082],[-0.0086126095],[-0.008567826],[-0.008474123],[-0.008392853]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.5761452],[0.04077484],[-0.10482081],[-0.6708523],[0.021307532],[-0.9310431],[-0.00019539302]],"dense_1_W":[[0.72231996,0.18390898,2.4203904,-0.0030663384,0.18403961,-0.82045245,0.51870364,0.1788108,-0.06536024,-0.075233705,-0.018536722,-0.026407123,-0.017022373,-0.1641255,0.08881735,0.3791095,0.15368912,-0.30361718],[0.00531365,-0.94260526,0.019553717,0.16079119,0.6135709,-1.1629479,0.25475162,0.16275546,0.23717655,-0.7684713,0.269077,0.4080043,-0.31144062,0.070601925,0.010450419,-0.22756179,-0.16736664,0.18631667],[-0.03383979,0.58095545,1.7085242,0.07134275,-0.48016626,0.043425214,-0.5469088,0.44866776,0.65664923,-0.30118445,-0.3005833,0.13361159,-0.11855819,-0.35175917,0.46242264,0.1385892,-0.29124546,0.018451372],[2.3314073,-0.7370475,-0.1599346,-0.112356625,-0.1908801,0.16796266,-0.05533258,-0.10605465,0.0662108,0.10284821,-0.3036309,0.17438193,0.003727518,-0.38027525,-0.23749365,-0.8124727,-1.1274155,-1.5589621],[-0.0006869782,-0.042528924,0.05025561,-0.031743184,-0.22178772,1.016933,-0.50708455,-0.30513486,0.16629063,-0.23337619,0.21578076,0.41531077,0.26406106,-0.24498649,-0.53471065,-0.36644122,0.11139245,0.2798891],[0.5800486,0.17213458,-2.2770967,0.13273536,-0.15001313,0.24997446,-0.7256148,0.33752334,0.053435106,0.18205637,-0.21749948,0.3237458,-0.31033078,0.13797231,-0.37041757,-0.13781188,-0.038840763,0.20394051],[0.0049984013,-0.35607442,-0.30905604,0.40517208,-0.19288664,-1.2281868,0.16647166,0.44088066,0.40701556,0.12298187,-0.08295799,-0.07647913,-0.38256118,-0.048575446,0.47953144,-0.019423949,-0.0798172,-0.15896548]],"activation":"σ"},{"dense_2_W":[[0.17072913,0.5787543,0.16908416,-0.15344563,0.21352929,0.1036233,-0.16814779],[-0.04280792,-0.8720339,0.5860262,0.17910767,0.05812723,0.43166825,-0.40927374],[-0.25224444,-0.32741183,0.5557173,0.2577443,0.27441007,0.024975402,-0.18134333],[-0.17902452,0.7218189,-0.24128178,0.08938652,-0.5499739,-0.2853039,0.6032645],[-0.012645399,-0.10678161,-0.2497543,0.12273038,-0.2995278,-0.5155403,-0.12064403],[-0.05483617,-0.61829835,-0.024198718,0.29385313,-0.05762493,-0.13852271,-1.0283959],[-0.17513163,0.5525871,-0.34557396,0.40270397,-0.4239708,-0.36327696,0.22318624],[-0.3050681,-0.5609769,0.6848509,-0.14485584,0.41891348,0.23840618,-0.42206725],[0.3968867,-0.00579093,-0.7550544,0.1985394,-0.41320163,-0.6388418,0.68250275],[0.13954934,0.31490627,-0.79896843,0.12518695,-0.46648943,-0.10224329,0.8570033],[0.40961888,0.4413134,-0.67998093,0.32758147,-0.30693418,-0.39162624,0.6029714],[-0.39057493,0.04696759,0.76041484,0.46441597,0.06613202,0.19455153,-0.84763706],[-0.1115568,-0.48450366,0.6582964,0.43812597,0.7578292,-0.45037985,-0.6380507]],"activation":"σ","dense_2_b":[[0.022194395],[-0.03836468],[-0.058703274],[-0.013638688],[-0.012889619],[-0.117961474],[0.015166406],[-0.040138457],[-0.011272022],[-0.012204604],[-0.062101785],[-0.09131032],[-0.06450806]]},{"dense_3_W":[[0.29413998,-0.24403282,-0.21639973,0.017811967,0.28033993,0.18735097,0.23800737,-0.61772835,0.47691423,0.2947574,0.39353845,-0.30080277,-0.573409],[-0.59557885,0.16263157,-0.33032954,0.27123576,0.30058095,0.14316729,-0.57262224,-0.010264795,0.5258702,0.31621447,-0.29535997,0.38230023,0.18332578],[0.54958236,-0.64796954,-0.5860492,0.4647252,0.25805357,-0.39067873,0.6433446,-0.62534493,0.2620962,0.22722915,0.31812868,-0.29690334,-0.6393193]],"activation":"identity","dense_3_b":[[0.02814165],[-0.050614122],[0.03127771]]},{"dense_4_W":[[-0.7580981,-0.00726576,-0.8432115]],"dense_4_b":[[-0.029448459]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144M xf1x895082xf1x82x0571A0JA16A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144M xf1x895082xf1x82x0571A0JA16A1'.json deleted file mode 100755 index 9f716a09ec..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144M xf1x895082xf1x82x0571A0JA16A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.415863],[0.8583176],[0.3856797],[0.031867158],[0.84238064],[0.8479653],[0.85318357],[0.8488065],[0.84401506],[0.83682716],[0.8221359],[0.03176191],[0.031782564],[0.03180224],[0.031836487],[0.03187497],[0.03179108],[0.031642724]],"model_test_loss":0.006253075320273638,"input_size":18,"current_date_and_time":"2023-08-13_13-54-43","input_mean":[[27.552174],[-0.011369959],[0.0032041054],[-0.005240609],[-0.0099758925],[-0.009811709],[-0.010034873],[-0.008717237],[-0.008171778],[-0.009641522],[-0.009617026],[-0.005033958],[-0.005085749],[-0.00514212],[-0.0053138044],[-0.005393524],[-0.005487565],[-0.0055648554]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.9255316],[-1.3106222],[-0.28385758],[-0.005533128],[0.8718399],[0.13129508],[0.65529805]],"dense_1_W":[[-1.3177696,0.19991967,-2.7236588,0.47501546,-0.20533472,-1.0557586,0.17047773,0.009924321,0.06776284,0.115778096,-0.17705421,0.32459033,-0.0209746,0.12562141,-1.2017485,-0.427539,0.047930263,0.45157415],[0.14440672,-0.63587517,0.04897055,-0.22241928,0.012585529,-0.9856927,0.060655825,0.10771243,-0.11834612,-0.2647466,0.041776862,-0.005160143,0.4143384,-0.08409255,0.38516775,-0.06466858,0.4800853,0.116947636],[-0.048163578,-0.15507038,0.10709546,0.05433569,-0.78400093,-0.10471941,-0.687971,0.24902299,-0.28871644,-0.15858674,-0.15051886,-0.07557398,-0.21722956,0.19256075,0.9204932,-0.025876911,0.377379,0.11786139],[-0.0023113806,-1.1656983,-0.016276661,0.3712625,0.26083446,-0.8202079,0.7635671,0.12174111,-0.3810017,-0.4706684,0.476022,-0.1495595,-0.17617117,-0.0334313,0.34056324,-0.12129183,-0.18112142,0.0017632246],[0.36963087,-0.08762645,-1.6472614,0.58248544,0.099876635,-0.68770367,0.1060096,0.01555146,0.21880303,-0.07295039,-0.04888322,0.11901441,-0.3384761,0.6579154,-1.1264246,-0.25798565,-0.2051824,0.49036825],[-0.001395127,0.31909215,0.038826507,-0.16812363,-0.41808403,0.78146785,-0.12594081,-0.050199978,-0.0973126,-0.31068856,0.23852174,0.42455164,-0.08920052,0.24407244,-0.54622006,-0.2538641,0.038934287,0.26070222],[-0.1450647,-0.5672448,0.046273015,-0.3383503,-0.18226248,-0.75000846,0.22487456,-0.1403406,-0.19991998,0.040012,-0.07465593,-0.30669475,0.20688607,0.35658067,0.7150998,-0.056518137,0.2800083,0.09291142]],"activation":"σ"},{"dense_2_W":[[-0.26085964,0.3516763,-0.17330408,0.661693,0.17870913,-0.16493158,0.19355819],[-0.13368994,0.024639409,-0.57033145,0.5646507,0.3874018,-0.6424429,0.5143024],[0.36197537,-0.4894154,0.86991316,-1.0450212,-0.8808762,1.005693,-0.50344414],[0.037066706,-0.30221042,0.07532641,0.059567153,0.41288042,-0.6703966,0.5937009],[-0.3279511,-0.5896927,0.04172026,-0.25627023,0.311046,0.46807423,-0.7380045],[-0.17663476,-0.15280105,0.25481316,0.22980238,0.32853058,0.026288528,0.4474023],[-0.6216895,-0.43472454,0.16474614,0.24401735,-0.009333907,-0.55698293,-0.4658436],[0.64419144,-0.21330142,0.9627268,-1.1507334,-1.3168378,0.21035595,-0.22476402],[-0.22558647,-0.076528445,0.7357744,-0.89835054,-0.7661023,0.90134853,-0.07517657],[0.35094383,0.18648076,0.03390864,0.4248296,0.04366893,-0.26929817,-0.26258168],[-0.62187046,-0.59535176,0.72753495,-0.94289756,0.049893454,1.2905704,-0.16296726],[-0.39337137,-0.90796244,0.8290803,-0.22699821,0.17312697,0.98712176,-0.73924625],[-0.27244756,-0.37847507,0.122294754,-0.34000623,-0.034100182,0.08922609,-0.2426594]],"activation":"σ","dense_2_b":[[0.101125225],[0.10885535],[0.20420383],[0.009535166],[0.31587136],[0.07603302],[-0.357305],[-0.0620017],[0.11676147],[-0.21882989],[0.2917003],[0.07597336],[0.053113062]]},{"dense_3_W":[[0.6511969,0.195776,-0.49096948,0.4126447,-0.74414754,0.26202098,0.05113331,0.17945053,-0.2824012,0.28811157,-0.43237004,-0.7557984,-0.2802274],[-0.087479815,-0.5842241,-0.22641535,0.16699481,0.14202616,-0.02455116,0.32574484,0.81653625,0.4594011,0.2965805,0.22684464,-0.10494171,-0.37137553],[0.40364054,-0.2642197,-0.114815384,-0.49680176,0.411435,-0.15565751,-0.42915186,0.5777007,-0.27192292,0.27795404,-0.49125576,-0.23119576,0.09542205]],"activation":"identity","dense_3_b":[[0.16922124],[-0.16786872],[-0.1235053]]},{"dense_4_W":[[-1.0848238,0.43780962,0.121263236]],"dense_4_b":[[-0.16589022]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873QM909144 xf1x895072xf1x82x0571A01714A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873QM909144 xf1x895072xf1x82x0571A01714A1'.json deleted file mode 100755 index c60cfc778d..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873QM909144 xf1x895072xf1x82x0571A01714A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.499129],[0.6601068],[0.37126893],[0.035993777],[0.64755857],[0.650401],[0.6537066],[0.64798653],[0.6443389],[0.6342998],[0.62037724],[0.035718568],[0.035768334],[0.0358108],[0.03556472],[0.035507064],[0.035144154],[0.034718994]],"model_test_loss":0.008825271390378475,"input_size":18,"current_date_and_time":"2023-08-13_14-51-36","input_mean":[[28.12371],[0.0065643145],[-0.012259348],[-0.0308991],[0.0035661163],[0.0040573454],[0.0040573636],[-0.0018063665],[-0.0031446684],[-0.006249773],[-0.007770399],[-0.03104693],[-0.031047331],[-0.03104868],[-0.03136646],[-0.03136208],[-0.03151733],[-0.031626265]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.6165265],[0.067915596],[-0.45316094],[-0.16899234],[-0.14808252],[-0.8624182],[0.7455331]],"dense_1_W":[[1.7688528,0.032614052,-0.04258705,-0.40471157,0.0026211264,0.14383507,-0.76273596,0.055630405,0.21549416,-0.10156934,-0.018276177,0.42286775,0.06321405,-0.048351847,-0.3251357,-0.13999832,0.014422678,0.20865417],[0.018235689,0.8150084,-0.011439717,-0.017960383,-1.0395502,0.4898895,-0.04454969,0.46327382,0.7437933,0.06830239,-0.4826564,0.1393547,0.14606072,-0.28793386,0.07896613,-0.26915878,0.061934475,0.10996908],[-1.7670835,-0.14292058,-0.04067935,-0.13737008,-0.11408217,0.34066078,-0.65927386,0.3707693,-0.08453015,-0.277993,0.15899399,0.19312033,0.12644269,0.0016063079,-0.3582613,-0.41488636,0.22687747,0.14989714],[0.009283532,0.21346128,3.842557,-0.18832086,-0.32320932,0.6712642,-0.56471795,1.146071,0.9314705,-0.6850848,-1.6761949,0.767423,0.09417577,-0.23689681,-0.81722146,0.2585955,-0.04035137,0.21729858],[-0.0062285685,-0.5146245,-0.082685284,0.0031572075,-0.20794849,-0.6622915,0.6452885,0.32985207,0.40914443,-0.13983616,-0.12780568,-0.17184584,-0.1486529,-0.25821346,0.536185,0.2092422,0.23474011,-0.40814623],[-0.2992245,-0.43034312,0.014492514,0.6396918,0.20689917,-1.0586469,0.6380456,0.111478046,-0.013004605,0.027720524,-0.11885847,-0.17448127,-0.22942995,0.3940829,-0.28098577,-0.49394473,0.062754326,0.16152045],[0.3649246,-0.45967793,0.026177378,0.034597564,0.104035355,-0.4483116,0.45026922,-0.26696894,-0.030676577,-0.16899553,0.11374246,-0.42508754,0.41004568,0.118722625,0.1094624,-0.045650996,-0.21261446,0.10205266]],"activation":"σ"},{"dense_2_W":[[0.29746833,-0.9805263,-0.20373926,-0.5810894,0.822015,0.78565085,0.774397],[-0.28532717,0.23769815,0.060819168,-0.18559076,-0.5988815,-0.6324048,-0.13228494],[-0.05379423,-0.6090431,-0.6882858,-0.38678372,1.2622792,0.5061005,0.806397],[0.016906988,0.8676961,0.13297725,0.07773776,-0.9471627,-0.23707166,-0.12722206],[-0.9656899,-0.52974796,-0.8884889,-0.18769741,0.20580004,0.088316336,-0.3275884],[-0.83929497,-1.3246149,0.20151234,-0.20800409,0.644204,0.73422116,0.37904078],[0.17644885,-0.17937113,0.7630181,0.23492537,-0.9941054,-0.087052345,-0.80296385],[0.5275903,0.15053748,0.26323977,-0.45628256,-0.904721,-0.13627163,-0.72142714],[-0.36794254,-0.36518982,-0.72322273,0.15947448,-0.5001212,0.09817367,0.2520628],[0.65508115,0.14115669,0.63049525,0.093293644,-0.15200832,0.26687813,-0.0647521],[-1.2376599,-1.0406941,0.35769528,-0.58431584,0.07535975,1.1416343,0.19291566],[-0.22289965,0.40572295,0.72577405,0.16881567,-1.15984,-0.6175091,-0.18357803],[-0.5811096,-0.95013314,-0.33011654,-0.15803374,0.7887948,0.29292244,-0.002783515]],"activation":"σ","dense_2_b":[[-0.049079053],[-0.08643912],[0.10503918],[0.04620607],[-0.24959993],[-0.29486987],[-0.07451853],[-0.15858883],[-0.246627],[0.022139506],[-0.26383835],[-0.27304852],[-0.11335464]]},{"dense_3_W":[[0.27437788,-0.13480587,0.4028967,0.26457673,-0.049248666,0.3107791,0.40147588,0.68062055,-0.32741368,-0.33465502,-0.38290545,0.34771603,-0.4449348],[-0.5136515,0.16504014,-0.69426614,0.69784516,-0.10840683,-0.53815,0.55030924,0.049842075,-0.043087877,0.37305754,-0.47518057,0.18190123,-0.0713615],[-0.09406427,-0.12237694,-0.71659255,0.42452714,-0.2178768,-0.44793212,0.5866718,0.52974296,0.42568213,-0.0633519,-0.74072903,0.77244145,-0.24008119]],"activation":"identity","dense_3_b":[[0.0077823168],[0.07439971],[0.038980033]]},{"dense_4_W":[[0.13538235,0.9460461,0.2892883]],"dense_4_b":[[0.06883352]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144AAxf1x891081xf1x82x0521A00608A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144AAxf1x891081xf1x82x0521A00608A1'.json deleted file mode 100755 index e04086d5e3..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144AAxf1x891081xf1x82x0521A00608A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.057558],[0.9240797],[0.39042372],[0.04054577],[0.91198736],[0.91717815],[0.92098093],[0.91237575],[0.899855],[0.8780954],[0.86047786],[0.04041413],[0.04044436],[0.040472586],[0.040513117],[0.04048389],[0.04041956],[0.040282376]],"model_test_loss":0.009325800463557243,"input_size":18,"current_date_and_time":"2023-08-13_15-19-49","input_mean":[[22.28529],[-0.031808108],[0.0006169089],[0.0020743944],[-0.028572567],[-0.028636014],[-0.028830813],[-0.028213872],[-0.02719701],[-0.023936827],[-0.021230578],[0.0021741558],[0.0021642826],[0.0021512513],[0.002037396],[0.001988419],[0.0019436596],[0.0019510677]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.030092482],[-0.08966159],[0.7434682],[0.052508995],[-0.037241258],[-0.6811802],[0.08887462]],"dense_1_W":[[-0.016281815,-0.21513529,-0.5826629,-0.040725954,0.1220137,-0.74154484,0.22448872,-0.69602275,-0.044675313,-0.050951652,0.55438906,-0.14687209,0.10323754,0.10435016,0.28258827,-0.46545756,0.20151669,-0.041637793],[-0.038013637,0.4798638,0.035863526,-0.047271762,-0.3552868,0.736299,-0.44315857,0.093434595,0.026829336,0.022546915,-0.014716782,-0.2137455,0.72353894,0.13167273,-0.5572506,-0.17848228,-0.19980797,0.34290475],[-1.3190829,-0.16427143,0.03076943,0.18381341,-0.35874882,-0.6953364,0.63559276,0.56573445,0.12491954,0.34269994,-0.46494725,-0.57930934,-0.0077773347,0.29941487,0.49355614,0.52276766,0.039447572,-0.36896285],[0.0075827236,-1.8779591,0.07066059,0.09625603,0.42762265,-0.8998018,0.28209868,-0.30655807,-0.17634554,0.38442346,-0.3097632,0.15156893,-0.13291042,0.1254108,-0.11183744,0.33543125,-0.41085628,0.09713285],[0.02231647,0.4558223,0.04829613,-0.5974221,0.12706976,0.5712898,-1.1618217,0.004924739,0.25602806,0.34039888,-0.26809433,-0.13969776,0.005608404,-0.04935092,0.6085609,0.56621975,0.054403227,-0.41240177],[1.3177918,0.34837294,0.03489512,-0.1798878,0.07544648,-0.7564881,-0.25446817,0.41348827,0.38496748,0.18170023,-0.4120484,-0.012971901,-0.14837568,-0.11443646,0.6549086,0.7655774,0.095144756,-0.46527424],[0.003085306,-1.8520818,-5.775147,0.9801003,1.6440481,-0.41763654,0.0023244382,-0.368523,-0.5199194,0.19324827,1.0014604,-0.7281056,-0.59879243,0.4747877,0.2891212,0.09482188,0.009162863,-0.40084323]],"activation":"σ"},{"dense_2_W":[[0.7327416,-1.021178,0.6615702,-0.20163396,-0.3478265,0.22332166,-0.27881405],[-0.35193413,0.366607,-0.31837893,0.05043401,-0.12893029,-0.15935789,0.3549393],[0.21511331,-0.18085788,-0.40121323,0.32115334,-0.13333887,-0.5539215,-0.2487469],[0.0033335267,1.0552391,-0.62137043,-0.40063322,0.99995136,0.5781669,-0.58789635],[0.61077094,-0.3306075,-0.31027898,0.7346135,-0.8391994,0.847853,0.48013672],[-0.14262784,-0.741944,0.6622348,0.48902386,-1.3086324,0.098962665,0.45717558],[0.2415809,-0.84083027,0.5231141,0.65175545,-0.554833,-0.008785207,-0.17766568],[0.055044893,0.52781713,-0.5939338,-0.7540269,0.15011188,-0.420139,0.2981709],[-0.14237478,-0.29901835,-0.7485882,-0.21372531,-0.34447756,0.40902004,-1.1021607],[-0.54304063,0.012865376,0.31854355,0.17462453,0.26030272,-0.7394602,-0.7608907],[-0.44612113,0.36114553,-0.25402042,-0.0076143444,0.8201758,0.47841248,-0.45955038],[-0.004852833,0.57263273,-0.019337526,-0.75631505,0.4485348,-0.3326961,-0.3167996],[-0.15952389,0.4143726,-0.01947486,0.2718969,0.47909242,0.089936785,-0.45480072]],"activation":"σ","dense_2_b":[[-0.15473405],[-0.03545587],[0.011608688],[0.24255751],[0.028790355],[-0.44917503],[-0.07094555],[-0.062117405],[-0.16924906],[-0.10952014],[0.1554779],[-0.20075743],[-0.113302805]]},{"dense_3_W":[[0.3808469,-0.551099,-0.22391781,0.15603887,0.23546505,0.029905649,0.44500378,-0.19618921,0.22027779,-0.40315858,-0.14389955,-0.33602792,-0.12122436],[-0.59489226,0.2445008,0.11975124,0.48564222,-0.39224073,-0.272205,-0.54375273,0.009905357,-0.23434179,0.52072835,0.34248853,0.16348307,0.20279588],[-0.014571961,0.5323131,-0.5192708,-0.37823296,0.66229814,0.112855725,0.64537394,-0.30970648,0.31949428,0.11771956,-0.23411283,0.30479413,0.3693334]],"activation":"identity","dense_3_b":[[-0.037845407],[0.04069344],[-0.059178203]]},{"dense_4_W":[[-0.99151933,1.1575272,-0.65392774]],"dense_4_b":[[0.04349]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A07B05A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A07B05A1'.json deleted file mode 100755 index ce3c207e0e..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A07B05A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.563397],[0.8385782],[0.38159406],[0.0343706],[0.82969534],[0.8327079],[0.8353158],[0.8362094],[0.8282918],[0.8180939],[0.80514234],[0.0341284],[0.03419915],[0.034257572],[0.034370307],[0.034313396],[0.034115147],[0.03375072]],"model_test_loss":0.011564328335225582,"input_size":18,"current_date_and_time":"2023-08-13_15-45-22","input_mean":[[21.38968],[-0.041864436],[0.016576989],[-0.021341346],[-0.045225102],[-0.044813316],[-0.04361269],[-0.034834445],[-0.031572755],[-0.024205465],[-0.018740682],[-0.021514442],[-0.021450149],[-0.021384653],[-0.021149829],[-0.021141373],[-0.020979993],[-0.020896269]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.5755177],[0.03428629],[-0.71415836],[0.22175552],[-0.09201754],[-2.8689044],[-0.1045704]],"dense_1_W":[[0.9483997,0.9610236,0.20808627,-0.30212918,0.053525597,0.5834779,-0.93940276,0.65561306,0.36549884,0.3216295,-0.21082531,0.44739217,-0.29857454,-0.11884895,-0.15256537,0.60311323,0.081600666,-0.23139988],[-0.005265079,1.3001031,3.8029873,-0.32444727,-2.6160483,0.2214184,0.058062643,1.1854216,1.1538562,0.15885483,-1.0735705,0.3265351,0.5016962,-0.4941123,0.016058635,-0.25360242,0.15720944,0.08846265],[0.0012037685,-0.65408915,-1.5829769,0.33530995,0.7700829,0.047827095,0.5908282,-0.17494035,-0.26473024,0.51929754,1.1789833,0.0807209,-0.24442843,0.60358465,0.003373896,0.6164561,0.045661986,-0.14974658],[-0.0006085811,-0.6465432,0.0034944871,-0.15468381,0.67403156,-0.93398803,-0.13589555,-0.35583574,-0.57860667,-0.21501748,0.385936,-0.3407401,0.20494653,0.20552959,0.12731454,0.0399628,-0.2351022,0.091997944],[-0.0065293787,0.7746981,0.51969033,-0.5453975,-0.051220566,0.95546484,-0.24264541,-0.19263709,0.3042942,-0.4307904,-0.4401109,0.31372312,0.5982625,-0.32563445,-0.3293053,-0.076774836,0.30764472,0.03080843],[-0.9222714,0.65885305,0.20200571,0.0613283,-0.12522168,0.3155805,-0.17339218,0.62215847,0.3577474,0.3287558,-0.23576994,0.2977285,0.15171073,-0.54179823,-0.20839736,0.14107114,0.29692984,-0.17770605],[0.0037967945,0.9581507,-0.0014370086,-0.49775982,-0.13051113,1.0137179,-1.1507403,0.24028304,-0.79054755,0.17817192,0.17676984,0.99630857,-0.077027574,-0.20737489,-0.5133581,0.0631313,-0.34999797,0.48768488]],"activation":"σ"},{"dense_2_W":[[-0.48959735,-0.59383065,0.068969965,0.4048074,-0.09356656,-0.22178447,-0.008503189],[-0.47465578,0.046973683,-0.30203333,0.7319351,0.37943313,-0.7515599,-0.7609684],[-0.7812694,-0.1668936,0.34998512,0.6032413,0.2552332,-0.07198844,-0.9453271],[-0.1400433,0.56433755,-0.28285316,-0.5249183,-0.061916184,0.5938611,0.43950254],[-0.19838578,-0.120480634,-0.2613999,0.040656477,-0.57329947,0.035204634,-0.23756325],[-0.31026715,-0.91703445,0.5292604,-0.6104651,-0.35656053,0.19026318,-0.33533737],[0.362478,-0.6857054,-0.061543047,0.14211811,0.38036314,-0.5977386,-0.6514936],[0.28820255,0.014584735,-0.5350505,-0.664403,0.6750804,0.35808724,0.39167216],[-0.82168514,-1.1079371,-0.18080051,-0.79870147,0.12686022,0.18076727,0.08958418],[0.2513723,0.17902936,-0.30011544,-0.714674,0.51919776,-0.23153323,0.7435418],[0.30748522,0.12669975,0.081522584,-0.5034588,0.030012246,-0.017879713,0.6410725],[0.26371044,0.34655178,-0.59103256,-0.43619967,-0.687298,-0.7533559,-0.3246515],[-0.38202673,-0.58601105,-0.24320982,0.69089496,-0.5146493,0.17502482,0.060758125]],"activation":"σ","dense_2_b":[[-0.03921857],[0.20950015],[0.05701196],[-0.24196394],[-0.043847077],[-0.09972506],[0.084566765],[-0.11199834],[-0.23634689],[-0.19677764],[-0.08626865],[-0.08511737],[0.08237302]]},{"dense_3_W":[[0.2521058,0.05273895,0.14777374,0.2316707,-0.03372719,0.37708887,-0.22231328,-0.14752237,0.024881583,0.14600374,-0.36284056,-0.053377006,0.15762502],[0.17785782,0.65084356,0.653211,-0.65019035,0.20140639,0.38871175,0.24968603,-0.6089574,0.30058384,-0.08686883,-0.49139014,0.17155631,0.48726168],[-0.11656486,0.2625412,-0.3139385,0.10613407,0.4817832,0.19348018,0.08415106,-0.6385824,-0.2113412,-0.5868329,0.1681216,0.33424532,0.14378552]],"activation":"identity","dense_3_b":[[0.046604935],[-0.0675065],[-0.049730938]]},{"dense_4_W":[[0.40339613,-1.2102003,-0.3411253]],"dense_4_b":[[0.061254077]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A00442A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A00442A1'.json deleted file mode 100755 index b3b8b8db24..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A00442A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8480306],[0.96037143],[0.56644064],[0.031923212],[0.9592892],[0.9607283],[0.9606423],[0.9418574],[0.9194964],[0.8982176],[0.87986463],[0.03180112],[0.0318301],[0.031843536],[0.031923328],[0.0321031],[0.032251816],[0.032379184]],"model_test_loss":0.007998951710760593,"input_size":18,"current_date_and_time":"2023-08-13_18-46-40","input_mean":[[17.83718],[-0.021548323],[0.008896963],[-0.020022377],[-0.027599646],[-0.026774092],[-0.025805676],[-0.021180406],[-0.0172894],[-0.014156764],[-0.015430601],[-0.020131098],[-0.020135172],[-0.020142682],[-0.02023454],[-0.020377133],[-0.020592311],[-0.020893447]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.234378],[-1.0114365],[3.3278525],[-0.043438543],[0.09898487],[-1.1228223],[-0.09896681]],"dense_1_W":[[-1.4481235,1.14371,-0.18619996,-0.014011254,0.5418801,-0.8123825,0.04581224,-0.31140676,-0.219098,0.009256715,-0.20572591,-0.24179928,0.121151835,0.17432994,0.046270356,-0.42792895,0.08374407,0.2014057],[-0.35328487,0.87328243,0.23025416,0.041772332,-0.19766848,0.65253824,0.007881493,0.10688904,0.25050953,-0.28640047,0.124380134,0.41151407,-0.20547412,-0.38162622,0.022347001,0.017873542,0.005152273,0.04886075],[1.4722439,0.974171,-0.19161922,0.20244934,0.61558235,-0.8968513,0.16112171,-0.25674978,-0.22722203,0.058710273,-0.23509592,0.16444913,-0.2827588,-0.03489349,-0.18735917,0.00018917536,-0.18949887,0.27490872],[0.012972494,1.2556565,5.9566135,-0.15130961,-0.4523947,-0.37081477,-0.91552794,1.1574521,0.47152543,-0.47953206,-0.55489933,0.099222064,0.38702163,-0.29589957,0.041597135,-0.03547445,0.022571348,0.027354982],[-0.003863914,0.22050343,0.0120630115,-0.25257105,-0.10205844,0.9146121,-0.7968388,-0.29547405,-0.17439528,0.46752262,-0.08055068,0.17053045,0.18076906,-0.1516316,0.055936866,-0.17291713,-0.10852507,0.16824071],[-0.4190413,-0.857921,-0.25096828,-0.28255612,0.19289751,-0.8734456,0.28353396,-0.37122184,-0.11925379,0.19329911,-0.06972643,0.25552443,-0.35699388,0.26851597,0.43666807,-0.24304788,-0.09045897,0.055230238],[0.0012014257,-0.54465014,-0.4546114,0.0631211,-0.18529981,-0.94013214,0.40706542,-0.23528938,0.075760044,0.8153893,0.17362785,-0.39601672,0.18890578,0.48059973,0.10882803,-0.22344732,0.16269675,-0.24009374]],"activation":"σ"},{"dense_2_W":[[-0.8621162,0.6375523,-0.121657215,-0.34696895,0.51134723,-0.642076,-0.43340936],[-0.39562237,-0.241824,-0.12310841,-1.2114509,-0.89629316,-0.012759714,-0.58896196],[-0.69110984,-0.09870509,-0.3375854,-0.09505871,0.97829163,-0.6490481,0.1399663],[-0.010694462,0.022776525,0.82732725,-0.15266539,-0.25287274,0.39495268,-0.39242798],[-0.120031275,-0.71853244,0.37485296,0.45275152,-0.9226145,0.1723915,0.045272652],[-0.5235272,-0.4945377,-0.18775977,-0.8348921,-0.25558534,-0.26095316,0.2460929],[-0.2680453,0.7991849,-1.2544307,0.6096642,0.8758116,-0.66279304,-0.44246507],[0.24853848,-0.009198416,-0.3490367,-0.27431184,-1.1257328,0.35145393,-0.30193186],[1.1962029,-1.1290612,0.23949686,-0.20245065,-1.1434972,0.53818357,0.60230476],[0.6036199,-0.45529002,0.9213078,0.03841346,-0.73413646,0.1718995,-0.2821352],[0.864308,-0.6686404,0.9973249,-0.19549038,-0.8948997,-0.10574349,0.5035874],[1.9524418,-0.022500906,-0.4884547,-1.4554193,-1.1326776,1.0094995,0.33511108],[0.35033834,-0.5318131,-0.72255147,0.07995676,-0.35800278,-0.5116459,0.3332227]],"activation":"σ","dense_2_b":[[0.108086385],[-0.31281564],[0.13146636],[-0.17104536],[-0.24870978],[-0.31226832],[0.08884647],[-0.3376938],[-0.33002087],[-0.14730828],[-0.17783853],[-0.38552558],[-0.093307]]},{"dense_3_W":[[0.18446985,0.21522333,-0.28989294,0.35959074,-0.16474617,-0.16107476,-0.9634279,0.63884085,0.33368322,-0.14383645,0.6392969,0.88589066,-0.57898635],[0.26163533,0.40219304,-0.5289297,0.11495239,0.29818106,0.17250255,-0.12519145,0.31459266,-0.38456517,-0.12500696,0.17287982,0.0887632,0.10183194],[-0.71430176,-0.40297222,-0.52635926,-0.07720518,0.369048,-0.03566161,-0.9068424,-0.46042228,0.2392488,0.73106444,0.27735183,-0.16808154,0.38387048]],"activation":"identity","dense_3_b":[[0.009075719],[-0.0069753183],[0.029595045]]},{"dense_4_W":[[-0.8512863,-0.071502104,-1.0336823]],"dense_4_b":[[-0.021940688]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QN909144B xf1x895082xf1x82x0571A01A18A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QN909144B xf1x895082xf1x82x0571A01A18A1'.json deleted file mode 100755 index e5182951ae..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QN909144B xf1x895082xf1x82x0571A01A18A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.188053],[1.1657922],[0.53592527],[0.040702485],[1.1630709],[1.1658245],[1.165898],[1.1360451],[1.1134317],[1.0845132],[1.0600443],[0.04062425],[0.0406608],[0.040687334],[0.04069575],[0.040612057],[0.040392578],[0.040035486]],"model_test_loss":0.014063029550015926,"input_size":18,"current_date_and_time":"2023-08-13_20-26-43","input_mean":[[21.149807],[-0.10974744],[-0.0031464333],[9.495444e-5],[-0.108882815],[-0.11035729],[-0.11167806],[-0.11192071],[-0.10970605],[-0.1038049],[-0.09687886],[-8.529318e-5],[-5.421513e-5],[-1.24803355e-5],[0.00014361751],[0.00017423068],[0.0003317356],[0.0004546588]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.27552018],[0.90119773],[-1.3030006],[-2.1216948],[0.18355446],[-2.4107463],[0.16562456]],"dense_1_W":[[0.12652385,2.4475446,-0.022650752,-0.69291824,-1.0016218,0.91486317,0.6336902,0.14477217,0.2598121,-0.20517316,0.36350495,0.39227563,0.0074457154,0.07074344,-0.19992946,0.0991527,0.04138881,0.06528243],[1.3323559,-0.7597325,-0.043890204,0.09516193,0.5088217,-0.21222521,0.38730863,-0.10672117,0.12993167,-0.12611133,0.17683442,-0.29292497,0.28472096,0.31997505,-0.07029694,-0.24922556,-0.0124233235,0.112814486],[-0.36201748,1.4186722,0.0062952894,-0.037926484,-0.5666642,0.72316504,-0.46085364,0.035363074,0.118354574,-0.11634284,0.10892351,0.28690028,-0.25633323,0.11827332,-0.110319726,-0.052415002,-0.08695773,0.13403927],[-0.57906187,-2.1076198,0.00707048,0.124392234,0.9577161,-0.652618,0.11178688,0.08233431,-0.10934392,0.15851316,-0.16079995,-0.200316,0.02980312,0.16383933,-0.19201891,0.07208879,0.0134847,-0.026035026],[1.6250517,-0.2035624,0.050559063,-0.27959144,0.02131727,1.4500656,-1.1230069,-0.13204305,-0.20134674,0.109666,0.105381586,0.33672488,-0.054919533,0.1381979,-0.37668028,-0.44266343,0.40978658,0.055366118],[-0.48616406,-0.09577948,0.030225683,-0.054680806,-0.4930565,-0.22118689,1.1458802,0.32909223,-0.3652297,-0.28851825,0.21014541,0.24283552,-0.11504994,0.41478232,-0.77871186,-0.2583162,0.44575816,0.024779651],[-0.06703918,0.022096574,-3.0616148,0.19644247,-0.7936287,-1.3313962,1.0172884,-0.14775673,-0.6005079,0.41182107,0.7640057,-0.037669305,-0.43755364,0.21248876,0.25767666,0.08838868,-0.38727447,0.116036914]],"activation":"σ"},{"dense_2_W":[[-0.5774166,0.3788837,-1.1512787,0.6045041,-0.30563933,0.1520524,0.4747448],[0.026152905,-0.40509266,0.71000934,-0.4843991,-0.20758377,0.18950084,0.37816125],[-0.13815251,-0.8893696,0.23316386,-0.113908656,-0.4585042,-0.46166483,-0.22798917],[-0.542509,1.2547107,-1.8032401,0.2135292,0.4327131,0.6078487,1.2712867],[-0.041001927,0.16597806,0.39927384,-0.54332757,0.23889625,-0.45043373,0.19426684],[0.16223486,-0.64652383,0.4093884,-0.6869164,0.015826961,0.18224072,0.40522045],[0.5264121,-0.81645095,1.0303737,-0.7750668,0.53066015,-0.18214639,-0.09689465],[0.47082463,-0.62583274,0.64610606,-0.17833126,0.48148805,0.086845286,0.11682811],[-0.7040258,1.2640396,-2.4362037,1.873551,-1.8753885,1.3339359,1.0496316],[0.14156407,0.5989012,-0.23044766,-0.097144015,0.12927,-0.010738458,0.6056361],[0.26921788,-0.1284144,0.007066244,-0.04917847,0.5776498,-0.47206506,-0.36211184],[-0.2055914,-0.48159376,-0.024098463,0.103931576,0.50089693,-0.06848274,-0.09180179],[-1.3385345,-1.9117901,-0.0011972345,-0.7033701,-4.2961745,2.4796546,2.848627]],"activation":"σ","dense_2_b":[[0.19726445],[-0.06158395],[-0.14339806],[0.12678884],[-0.14894912],[-0.04651775],[-0.14024791],[-0.15321352],[0.08253985],[0.18063237],[-0.049321633],[-0.08920167],[-1.457004]]},{"dense_3_W":[[0.7081014,-0.30889422,-0.49976626,0.32896045,-0.40754297,-0.45574123,-0.6064694,-0.4691866,0.5265183,0.6408709,-0.32701582,-0.34626913,0.5192711],[-0.32945433,-0.2021828,-0.43582925,0.21351081,0.51058686,-0.33781144,0.7423047,0.3941001,-0.71700716,-0.26396632,-0.5284645,0.20918335,-0.71266997],[-0.623438,0.35574603,-0.042172,-0.2322551,-0.21975967,0.4599549,-0.24270838,0.4056575,0.46420303,-0.31508285,0.5513475,-0.24558863,-0.28036433]],"activation":"identity","dense_3_b":[[0.10075232],[0.1357436],[-0.02601655]]},{"dense_4_W":[[-1.0338233,0.175015,-0.0050515365]],"dense_4_b":[[-0.102083005]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A10A01A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A10A01A1'.json deleted file mode 100755 index 23d7c217e4..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A10A01A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.369346],[1.0345815],[0.48595738],[0.038879942],[1.0224149],[1.0270526],[1.0309867],[1.0154411],[0.9946685],[0.9673825],[0.9462645],[0.038886003],[0.03886903],[0.038842827],[0.038692325],[0.038516246],[0.03829045],[0.038023546]],"model_test_loss":0.011551334522664547,"input_size":18,"current_date_and_time":"2023-08-13_21-17-35","input_mean":[[24.614252],[-0.027011419],[0.0014726992],[0.008945528],[-0.02214811],[-0.023875551],[-0.025268542],[-0.021144817],[-0.020492183],[-0.01736523],[-0.01178769],[0.009003565],[0.009013808],[0.009026339],[0.009184481],[0.009248184],[0.009236562],[0.00922171]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.3147287],[-1.6872499],[-0.42541492],[-2.6292078],[0.028035024],[0.03459358],[0.07949542]],"dense_1_W":[[0.047803342,-1.4541457,-7.672288,1.0376374,0.90106887,-0.5459878,0.30515322,-0.08935539,-1.0962652,0.29930526,0.7711765,-0.47839776,-0.067261726,-0.31026986,0.096002005,-0.19196555,0.049338873,0.037196536],[-0.9811775,-0.78911555,-2.1510236,0.50958246,-0.4388312,-0.96856743,0.28030896,0.1779042,0.0768994,-0.13534106,0.16211012,-0.5117382,-0.4880125,0.4930607,0.42255047,-0.427145,-0.016792877,0.04354907],[0.24651746,1.9175419,-0.001038614,0.4657561,-0.7955447,0.28141394,-0.21989036,0.7032182,0.021002548,0.054642107,-0.25775212,-0.18840952,-0.19194557,-0.11614515,-0.2208172,-0.18785909,-0.100455984,0.11671375],[-1.110365,1.4617373,2.5632505,-0.6936042,0.18904822,1.2634845,-0.7143399,0.43131736,-0.6782005,-0.11955076,0.014935311,-0.053061865,0.60653067,0.2520773,-0.5539984,0.37587786,0.38024148,-0.29947954],[-0.049056992,3.2711048,-0.0012738818,-0.9280159,0.06959995,1.3438661,2.1296465,1.5839107,1.2994887,0.2974056,-0.4331058,0.5643816,0.17077604,0.46159738,0.13453983,0.32876533,0.29972157,-0.19157079],[-0.002617311,-0.26627848,0.00035574558,0.15850249,-0.51069593,-0.9413688,1.3242084,0.36154234,-0.037687466,-0.12007863,-0.103309914,-0.08942667,-0.49348807,0.24432492,0.19013445,0.090723045,0.09632228,-0.19452243],[-0.3788624,1.6411204,0.0010042163,-0.7426254,-0.9095712,0.5644892,0.10306167,0.37586528,0.35857487,-0.26580176,-0.07742835,0.38095754,0.35132152,-0.26794037,-0.5125942,0.26599923,-0.07368752,0.14955874]],"activation":"σ"},{"dense_2_W":[[-1.1191249,-0.44653374,0.3957576,0.20264097,0.8131554,-0.8871739,0.76233166],[0.24396768,-0.11242304,0.11703958,0.23683518,0.26508585,-0.8381617,-0.010156824],[0.95748633,-0.8170791,0.91270953,-2.2128932,-1.7108568,-0.3102869,-0.51243025],[-1.0560807,-0.18680175,1.0978043,-0.1330585,0.50391763,-0.61881065,0.40257195],[0.13224883,0.33161446,-1.2939858,-0.86368215,0.25465244,0.41896132,-0.4954958],[-0.9718114,-1.1362193,0.12704434,-0.7889261,0.67179495,-0.025664078,-1.2435114],[-1.0912126,-1.4135875,0.87950945,-0.07909115,0.74423045,0.08346314,-1.4557395],[-0.47076926,-0.09556143,-0.26575336,0.30210772,-0.032517277,-0.6874358,-0.28881064],[0.91966176,0.10665701,-0.91860026,-0.33751714,-0.06834981,0.93626994,-0.6571628],[0.5642148,0.49901268,-1.3865877,-0.5038256,-0.77347946,0.10353698,0.12781042],[-0.13634703,-0.63548046,-0.12139281,-0.35569352,-0.15445279,-0.60711306,0.38474676],[0.45710889,0.071052924,-0.6941922,-0.40552536,-0.2624531,0.30862984,-0.21026665],[-0.17136033,0.13013878,-0.56358737,0.017554766,-0.8674639,0.5193747,0.404817]],"activation":"σ","dense_2_b":[[-0.24010156],[-0.03701659],[-0.11688351],[0.0057563568],[-0.2258239],[-0.12888032],[-0.04495887],[-0.19279772],[-0.024947112],[-0.24512185],[-0.06996539],[0.002301173],[-0.18535274]]},{"dense_3_W":[[-0.3262236,0.2867189,-0.46465525,-0.12294561,-0.09975732,0.6389669,-0.06613567,-0.6155315,0.5748487,0.5216139,-0.4668207,0.35530105,0.2609643],[-0.63311577,-0.7085013,-0.31479278,-0.63713,0.32777005,0.2345535,0.7747577,0.2789224,0.3357283,0.53898865,-0.15058397,0.20608704,0.49955884],[-0.72667474,-0.25321692,-0.17046283,-0.11438071,0.5548703,-0.008387027,0.6999693,0.052387122,-0.2282906,-0.32617927,0.025806168,0.50178117,0.5016455]],"activation":"identity","dense_3_b":[[-0.09833234],[-0.08791367],[0.020298293]]},{"dense_4_W":[[-0.5844458,-0.98398805,-0.08582402]],"dense_4_b":[[0.08352287]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521B00404A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521B00404A1'.json deleted file mode 100755 index d52b43b372..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521B00404A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.938926],[0.62772423],[0.29867607],[0.03094836],[0.6110426],[0.6159467],[0.62132204],[0.6395374],[0.64702064],[0.65667325],[0.65815526],[0.030817023],[0.030845646],[0.030863807],[0.030900748],[0.030872138],[0.030954026],[0.031025298]],"model_test_loss":0.02285374514758587,"input_size":18,"current_date_and_time":"2023-08-13_21-42-28","input_mean":[[23.255941],[-0.0039265477],[-0.0056222063],[-0.016524963],[-0.00218176],[-0.0024286949],[-0.0033278896],[-0.0040004114],[-0.0063022724],[-0.00994652],[-0.014132979],[-0.016437652],[-0.016452443],[-0.016481234],[-0.016730793],[-0.016982961],[-0.017188018],[-0.017422361]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.29317],[1.5267397],[0.08217149],[1.2452852],[-0.9688157],[-0.096829034],[0.39433828]],"dense_1_W":[[0.005915041,0.5450623,-0.0069149085,-0.46442664,-0.22601163,1.3387343,-0.7786973,-0.4650629,-0.40435264,-0.14188097,0.67670316,0.45593762,-0.2410964,-0.04123494,0.1702602,-0.18933693,-0.3188177,0.04489354],[0.47714752,0.6054337,0.13158876,-0.30294856,0.061013125,0.5564793,-1.1751397,0.35795754,0.6406297,0.2721367,-0.5613271,0.36031482,-0.25085223,-0.10549718,0.14662914,0.18818983,-0.24555802,0.12492779],[0.0003755121,-1.5311179,-4.3272233,-0.46309865,1.436148,-0.45119837,-0.93964314,0.4118978,-0.7870894,-0.7511141,2.7374241,-0.07799791,0.010225301,0.17858656,0.025200186,0.37682062,0.24588887,-0.32082075],[0.021538865,0.2234551,-0.05087945,-0.16210763,0.052253578,-0.5015178,0.86417854,0.56207055,0.14652875,-0.037124693,0.7986706,-0.625708,0.142645,0.052587703,-0.237036,-0.23684868,-0.4017891,-0.7608035],[-0.3722909,0.54145604,0.11193832,-0.41615248,-0.20452525,0.41731396,-0.56850874,0.445437,0.20962103,0.2034371,-0.38485476,0.40009347,0.0909534,-0.073908776,-0.31467494,0.08797947,0.012187805,0.13753214],[-0.07315742,-0.843601,-0.13284892,-0.21064427,0.813711,-0.6778223,0.09393603,-0.31476387,-0.33809435,0.31934786,0.11784876,-0.11346231,-0.50661373,0.81929815,0.41997102,-0.19574907,-0.10820584,-0.0013016728],[-0.0045597386,-1.876721,-0.6161992,0.29715562,-0.83337486,-2.280439,-2.1169722,-1.5114844,-1.9489485,-2.430094,-0.9096425,-0.92954713,-0.4385408,0.19880356,0.64660573,-0.46100757,0.17253575,-0.076600425]],"activation":"σ"},{"dense_2_W":[[1.009494,0.042049244,-0.7750519,-0.57728094,1.3917161,-0.9949108,-0.27987498],[-0.4912434,-0.22204591,-0.5417998,0.4574385,0.21495223,0.2710998,0.62334305],[-0.15153155,0.01599128,-0.45292535,0.012102149,0.23569047,0.4165612,-0.3426787],[-0.56857765,-0.48303458,0.17770454,-0.026586715,0.04770979,0.6940287,-0.04585979],[-0.6126955,0.12536684,0.023409514,-0.6668342,-0.094184265,0.01863304,-0.036869247],[0.37028855,-0.29489964,-0.3782998,0.44059175,0.4545478,-0.9325122,-0.28946736],[-0.5399863,-0.52101445,0.24559934,0.5746218,-1.1413286,0.71955156,0.4434971],[0.8772197,0.5362956,0.19421022,-1.0224069,0.7089293,-1.0749434,0.04264178],[-0.5255222,-0.03324677,-0.7210142,-0.38647947,0.19431087,-1.3739054,0.3249313],[1.1000354,1.0278201,-0.69191587,-0.50786847,0.5078231,-1.0587357,-0.24861221],[-0.2748495,-0.54516625,0.24361324,-0.37419957,-0.12278863,-0.0628238,0.17636348],[-1.0216668,0.054562744,-0.36077505,0.403067,-0.5215005,0.47245187,-0.31446433],[0.20261914,-0.18020427,-1.0289909,-0.08297991,-0.673349,-0.2813431,-0.43772835]],"activation":"σ","dense_2_b":[[-0.0071199946],[0.11808283],[0.012594512],[0.010172507],[-0.26932594],[-0.059178684],[-0.109771855],[-0.21241476],[-0.26554722],[0.051559977],[0.019238671],[0.06243583],[-0.2946492]]},{"dense_3_W":[[-0.09602511,-0.048682462,-0.18955606,0.4171001,0.066497065,-0.59586984,0.21584617,-0.37557873,0.27344728,-0.33525473,0.6279888,-0.39435863,0.46858945],[0.6317756,0.0002881869,0.19008896,-0.59359,0.3863359,-0.2528118,-0.1984929,0.5970809,0.3629511,0.3559985,-0.637736,-0.84007025,0.04686958],[0.750255,-0.24061574,-0.58244413,-0.24981315,-0.25377622,0.5355694,-0.30574042,0.5434507,-0.060648266,0.6019894,-0.6170493,-0.50975835,0.08353199]],"activation":"identity","dense_3_b":[[0.033729278],[-0.054734595],[-0.028816417]]},{"dense_4_W":[[-0.44288176,0.2882923,0.91610426]],"dense_4_b":[[-0.03074748]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A00642A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A00642A1'.json deleted file mode 100755 index 1d20a774f4..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A00642A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.884762],[0.81607556],[0.46235383],[0.04137435],[0.8147813],[0.8158872],[0.8164004],[0.80351764],[0.78805685],[0.7781327],[0.7716266],[0.041138463],[0.041208826],[0.041283675],[0.041592937],[0.04169671],[0.041762512],[0.04168417]],"model_test_loss":0.007246986962854862,"input_size":18,"current_date_and_time":"2023-08-13_22-07-07","input_mean":[[20.607279],[0.1291296],[-0.0037803883],[-0.0014043924],[0.13077764],[0.13015877],[0.12909429],[0.12892099],[0.12536412],[0.123454005],[0.11908713],[-0.0013121094],[-0.0013442688],[-0.0013850179],[-0.0015709468],[-0.0017340528],[-0.0019103661],[-0.0019895914]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.3721764],[0.084215105],[-0.055472832],[0.077813394],[-0.96163833],[1.1660722],[-1.6546477]],"dense_1_W":[[-0.58524305,0.029181788,-1.0521368,0.35033363,-0.39801714,-0.87713426,0.85987127,0.047615178,0.40549085,0.14911534,-0.2479689,-0.28950268,-0.14985971,0.07570249,-0.10249687,0.043796625,-0.07579884,0.10728671],[-0.001887957,1.4247402,0.0036300311,0.12278278,-0.2253377,0.36661762,-0.31705707,-0.45933437,-0.46282038,-0.053074382,0.29370224,-0.19806243,0.082440175,-0.45482296,-0.32952204,-0.011400758,0.10100219,0.10240154],[-0.059823256,-0.5745303,-4.452575,0.22918445,0.5550891,-0.79828143,0.61945033,-0.6684762,-0.09642584,0.21603544,0.6628456,-0.7397862,-0.2869019,0.0020030462,0.28633127,0.55959415,-0.33312178,0.28244367],[0.04614508,-0.11604671,-0.79724836,-0.491676,-0.14662114,0.52269655,-1.2130527,0.5618968,0.51555824,0.3292312,-0.45453092,0.42635924,-0.15188393,0.34045127,-0.57950723,0.22944026,-0.16212673,0.319651],[-0.2394283,1.0045947,-0.0012783561,-0.10012283,-0.3071191,0.7955691,-0.36835575,-0.008639509,0.3636069,-0.01755343,-0.10722917,0.19506188,-0.35370708,0.17400146,0.086988635,0.22335935,-0.32956237,0.11304717],[0.5236153,-0.15631859,-0.98424,-0.111111596,-0.60968053,-0.20851852,0.7218569,0.048679378,0.3039536,0.021387655,-0.09857831,-0.37517497,0.06802272,0.3579023,-0.045115247,0.09317572,-0.24613723,0.21383843],[-0.30168456,-1.2367435,-0.00061271444,-0.1381754,0.32092336,-0.6533606,0.5152246,-0.2438313,-0.31787005,-0.052657858,0.21278745,0.29981515,-0.35046533,0.14706951,0.1782125,-0.3582475,0.2180452,-0.01023163]],"activation":"σ"},{"dense_2_W":[[-0.4264956,-0.30409577,0.036205757,0.28041327,-0.17547563,0.22233264,-0.5563757],[-0.39062256,-0.8167799,0.66903347,-0.24326237,-0.939436,0.7294541,1.202365],[0.032040264,-0.06555011,-0.37881997,0.54659986,0.3044162,-0.0027152027,-0.30760282],[0.2730313,-0.7371839,-0.6369608,-0.0032412624,-0.6352998,-0.25697374,-0.6930982],[0.5224691,-0.3149151,-0.053694103,0.0010917719,-0.69223607,0.6271929,0.095157035],[0.3687945,-0.22422504,0.093919925,-0.06523741,-0.22843531,-0.14060488,0.26878905],[-0.04975786,0.3340523,-0.2715762,0.4248088,0.35888636,-0.35311514,-0.36247927],[-0.04869314,-0.50731874,-0.6262194,-0.68582696,-0.38477626,-0.62149537,-0.09445867],[0.50780857,-0.35911572,-0.28358296,-0.45811683,0.19999982,-0.47677487,0.1871591],[0.46753326,-0.48402148,-0.019163152,-0.4120921,-0.12853143,0.6621117,0.54874456],[1.0123298,-0.9825988,0.12905803,-0.8407654,-0.7416709,0.4597624,0.45862544],[-0.45890373,0.55880725,0.19543312,0.56986344,0.34912577,-0.1812731,-0.69188166],[-0.13247645,2.9199218e-5,-0.6082515,0.18595329,0.043651372,-0.49888754,0.29356086]],"activation":"σ","dense_2_b":[[0.0050273063],[0.13748644],[0.01580143],[-0.26208422],[-0.035189588],[-0.13114949],[-0.012246006],[-0.28205365],[-0.053524993],[-0.20919354],[-0.032046903],[-0.061223272],[-0.013682854]]},{"dense_3_W":[[-0.02703186,0.6016364,-0.45162404,0.15611896,0.50627923,0.51877177,-0.7800174,-0.054255366,0.33341834,-0.2897292,0.6872302,-0.0026089211,0.3239283],[-0.24794696,0.4848827,0.09518162,0.5067153,0.423029,-0.5145099,-0.12581715,-0.32483757,-0.06947478,0.23648755,0.5299817,-0.3650013,-0.47067726],[-0.06398943,0.0541899,-0.60453045,-0.51784617,0.38545498,0.32902572,-0.11962995,0.36440012,-0.1133295,0.17170249,0.073485106,-0.4394425,-0.34638456]],"activation":"identity","dense_3_b":[[-0.09188924],[-0.02956994],[-0.026732257]]},{"dense_4_W":[[-0.5402822,-0.8496468,-0.8664632]],"dense_4_b":[[0.03144883]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566B00611A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566B00611A1'.json deleted file mode 100755 index 1a1f451ac9..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566B00611A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.962804],[0.7562036],[0.38428113],[0.033356115],[0.74190426],[0.7469579],[0.75150245],[0.7410608],[0.72982436],[0.7126891],[0.6949334],[0.033194255],[0.033214666],[0.03323774],[0.03321157],[0.033148184],[0.033052694],[0.0329442]],"model_test_loss":0.008441523648798466,"input_size":18,"current_date_and_time":"2023-08-13_23-24-03","input_mean":[[22.17462],[0.03106641],[-0.005453808],[-0.0050417427],[0.033787917],[0.03330055],[0.03320549],[0.03181684],[0.03000325],[0.026441913],[0.024252506],[-0.004972066],[-0.004947025],[-0.00493625],[-0.005049273],[-0.005097442],[-0.0051535596],[-0.0052144374]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.060010195],[-4.127207],[-0.025756951],[1.1371067],[-0.18480848],[-1.5460433],[-4.385164]],"dense_1_W":[[-0.012603463,1.2675081,0.26481828,-0.6390102,-1.312759,1.511266,-0.69735384,-0.42666143,1.017449,-0.5036708,-0.4066075,0.06250349,0.32637885,-0.21702744,0.29735997,0.16498649,0.032733943,-0.09865579],[-1.7240236,1.2846862,0.4235646,0.16218854,-0.0021448887,0.98084474,-0.9292698,0.3639735,-0.1823644,0.07235068,0.17636193,0.29514208,-0.5203855,-0.26677978,0.38333958,0.119583756,0.12173379,-0.24175833],[-0.009374525,1.6042166,4.722405,0.055045582,-0.5204036,0.028873047,-0.90108126,-0.09144464,0.5713409,-0.25763115,-0.5311292,0.15709037,0.37013984,-0.00975939,-0.2143132,-0.6385762,-0.13333312,0.44007307],[-0.9055522,-0.8628247,-0.040643092,0.3484062,-0.18693899,-1.1056893,1.3160697,0.010075687,0.14756401,-0.11564695,-0.025115244,-0.27166274,-0.19431637,0.1267001,0.09704567,0.5197097,0.03209645,-0.27001658],[-0.018839281,-1.290398,0.058688518,0.33156508,0.68419033,-2.4491622,1.7043401,-0.3630223,0.18457794,-0.2868806,0.049333274,-0.61860454,-0.14083372,0.66726494,0.33173916,-0.13214351,0.034108125,-0.08901106],[0.8751846,-0.28634623,-0.030397577,0.12990081,-0.330972,-0.9653466,0.7668182,0.37737978,-0.11113706,-0.35438588,0.10701755,-0.48095903,-0.12939374,0.6977727,0.16942686,0.02181331,0.10608403,-0.13171671],[-1.7585233,-1.5873438,-0.43496054,-0.2323169,-0.069673285,-0.9673478,1.2224542,-0.4760693,0.23799634,0.09720081,-0.27788097,0.12954445,-0.24112089,0.615078,-0.25901628,-0.25295392,0.00043022525,0.19755143]],"activation":"σ"},{"dense_2_W":[[-0.48768643,-0.13457146,-0.94332385,-0.015858617,0.3480726,0.09448187,0.10320337],[-0.20015644,0.5809371,0.22025663,-0.29464918,-0.39863232,-0.7891601,-0.33703023],[-0.14985067,-0.83543855,-0.5071646,-0.90759295,-0.3330416,-0.2905544,-0.27152473],[0.0032478045,-0.75732607,-0.82309675,-0.77273506,-0.13305809,0.10644364,-0.68221307],[-1.4204942,-2.3662848,-1.1431475,0.7174042,2.1057255,0.785913,2.2557228],[0.3001741,0.57693744,0.57035863,0.95958936,0.32337785,-0.09218264,0.13867925],[-0.5285859,0.3610803,-0.020290779,-0.2668336,-0.64541036,-0.09989579,-0.05994527],[-0.27520058,-0.7017016,-0.6802332,0.2792723,1.0755413,0.65584993,0.88514155],[0.05950802,0.12636684,-0.035091616,-0.32777858,0.28212768,-0.76370627,-0.5573967],[0.58700997,0.78871405,-0.10341003,-0.6230865,0.077733986,-0.7194054,-0.18458478],[-0.18768333,-0.49252254,0.027535807,-0.53566045,0.15138532,0.16044581,0.14787057],[0.6626681,0.8601064,0.60114187,-0.3327629,-0.58684623,-0.95519954,-0.5899526],[-1.0263729,-0.41759077,-1.0262698,0.040096123,0.08806692,-0.0133949425,0.72428477]],"activation":"σ","dense_2_b":[[-0.25272742],[0.14023453],[-0.014608332],[-0.33230057],[-0.40752354],[-0.041421413],[0.01844217],[-0.28299713],[0.06559437],[0.109856494],[-0.04810613],[-0.021127785],[-0.44977495]]},{"dense_3_W":[[-0.029548874,0.5103658,0.17107706,-0.29514194,-0.947415,-0.511465,0.32390937,-0.6248399,0.045778725,0.6936353,0.30394363,-0.10813219,0.36093238],[-0.02098016,0.3392484,-0.66028225,0.15492892,-0.023099247,0.008027363,-0.43149045,0.133276,-0.12618168,-0.120471604,-0.07336129,-0.116436034,0.08667111],[0.07088678,-0.26997882,-0.24363138,-0.67593896,0.42628843,0.19159117,0.115236744,0.18871395,-0.56831765,-0.28568426,0.27478302,-0.7448726,0.49073538]],"activation":"identity","dense_3_b":[[0.07825424],[-0.012723917],[-0.053086866]]},{"dense_4_W":[[0.73551875,-0.06301601,-0.56700844]],"dense_4_b":[[0.06256496]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143K xf1x892033xf1x820514B0060703'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143K xf1x892033xf1x820514B0060703'.json deleted file mode 100755 index 14415e081e..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143K xf1x892033xf1x820514B0060703'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.666501],[0.8200595],[0.4267363],[0.029060148],[0.8098353],[0.81299865],[0.8158713],[0.80811334],[0.80471945],[0.79804546],[0.78982925],[0.02891173],[0.028966159],[0.029011153],[0.02911869],[0.029185541],[0.02921757],[0.029190162]],"model_test_loss":0.006315805949270725,"input_size":18,"current_date_and_time":"2023-08-13_23-50-23","input_mean":[[25.293772],[0.004106909],[-0.013306409],[-0.005250305],[0.005468495],[0.004553356],[0.0038011023],[-0.0017266939],[-0.003917628],[-0.010417055],[-0.014121405],[-0.0053853025],[-0.0053633936],[-0.0053434907],[-0.0053283866],[-0.0053414376],[-0.005541431],[-0.005723747]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.28580254],[-0.23432341],[1.1156756],[-0.86002725],[0.11221744],[-0.26342744],[-1.8761094]],"dense_1_W":[[-0.25975057,1.0925561,1.0103881,0.036238585,-0.3607785,0.08896782,-0.5181012,0.20072389,-0.038183834,0.09980021,-0.4068494,-0.17393062,0.330586,-0.23314619,0.034675427,0.07329598,-0.15636317,0.05865833],[0.017393583,0.3741976,0.0030892517,0.18871218,-0.42910495,-1.2822627,-0.05155862,0.53394276,0.22852045,0.12027069,-0.5230852,-0.115542546,0.23333092,-0.042271625,0.047717366,0.050503843,-0.0035985464,0.032520477],[0.35676572,-1.1685232,-0.011553547,-0.24975727,0.24694973,-0.6117383,0.4092684,-0.27288175,-0.33223516,0.16621913,0.025712943,0.42010584,-0.31489658,-0.052690785,0.054999806,0.18088785,0.006976741,0.021856777],[-0.44594803,-0.8409663,-1.1404896,0.41818568,0.058727153,-0.21626356,0.7575016,-0.19471127,-0.09616215,0.1518164,0.25844562,-0.8136779,0.20843573,0.6002283,-0.23000686,-0.19357574,-0.022530245,0.04392898],[0.8572372,0.025385775,1.2609717,0.042114303,0.399061,-0.19249442,0.51250815,-0.12575161,-0.28613088,-0.19633885,0.07607506,-0.4094928,0.11277618,0.2009149,0.4207984,-0.18763435,-0.3462443,0.16364828],[0.7268745,-0.18285611,-1.3299872,-0.09213111,-0.217109,0.36897022,-0.8693468,0.41960382,0.019098964,0.28840658,-0.03882476,0.4372806,0.08356159,-0.23352197,-0.20746002,-0.2340454,0.11242141,0.14783],[-0.5003176,-1.7298814,-0.025057396,-0.051110655,0.17657964,-0.8302932,1.1969275,-0.42902136,-0.28651416,0.049032684,0.12503019,-0.073111385,-0.11944735,0.09518251,0.1635864,0.0545354,0.05875944,-0.038880356]],"activation":"σ"},{"dense_2_W":[[-0.12937793,0.76093704,0.20176205,-0.08243198,0.4225252,-0.68954825,0.8347276],[0.6415931,-0.049831085,-0.36734578,-0.71415675,-0.57440925,-0.53335655,0.15256901],[-1.1228914,-0.120415226,-0.59729034,0.8767655,-0.12896578,0.18779756,0.8045126],[-0.30790147,0.6392956,0.040560763,-0.12412736,0.22901759,-0.6460633,0.89982486],[0.42736927,-0.94990593,-0.5395771,0.13554287,-0.49102458,0.94958186,-0.6974517],[0.5491617,-0.18928741,-0.50987816,-0.6287503,0.08691802,0.33302802,-0.36628336],[0.27155477,-0.27820358,-0.9777661,-1.1842451,-0.30412066,-0.6699264,0.41161236],[-0.59314966,0.4599474,-0.19772863,0.52712804,0.32302898,0.19360131,-0.09676147],[0.58557266,-0.6139606,-0.558897,-0.14769661,0.050115813,0.5432267,-0.5170338],[-0.17028296,-1.033602,-0.076122455,-0.40448987,0.052614305,0.1912033,-0.07015176],[-0.68916506,0.3962156,-0.1657399,0.687493,0.060366802,-0.10516932,0.01300196],[0.276943,-0.9250079,-0.7488696,0.13571858,-0.036271952,0.5265197,-0.15073454],[0.14400741,-0.11341286,-0.3804518,-0.8804317,-0.071586706,-0.43452612,-0.3208466]],"activation":"σ","dense_2_b":[[-0.040302996],[-0.11010342],[-0.20677158],[-0.048647635],[0.120229416],[-0.0054608714],[0.058483347],[-0.03004292],[0.05187668],[-0.076424606],[0.0038315326],[-0.022529595],[-0.2090887]]},{"dense_3_W":[[0.008394337,-0.30972952,0.39671507,0.6184598,0.12630114,0.32693958,-0.76353675,0.2980328,-0.48589507,-0.59280705,-0.35038635,0.3186341,0.26545805],[-0.7789929,0.55391824,-0.2314275,-0.1026219,0.7185184,0.6306864,0.6643669,-0.32594445,0.37869594,0.12729132,-0.6604259,0.43580285,0.17978954],[0.5019366,0.08632822,-0.5505618,0.14464153,-0.49149013,0.3130208,-0.37043464,0.14965,-0.7112207,-0.35579038,0.56159174,-0.23439313,0.24922566]],"activation":"identity","dense_3_b":[[0.027808271],[-0.068755515],[-0.07428425]]},{"dense_4_W":[[-0.25726643,1.2216649,-0.05311492]],"dense_4_b":[[-0.06435458]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143M xf1x892041xf1x820522B0080803'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143M xf1x892041xf1x820522B0080803'.json deleted file mode 100755 index c24501ec58..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143M xf1x892041xf1x820522B0080803'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.117151],[0.8780721],[0.47055784],[0.03373205],[0.87878203],[0.87837523],[0.87788916],[0.8586185],[0.8462304],[0.8342321],[0.82547796],[0.033661477],[0.03367423],[0.03368023],[0.03354494],[0.033401415],[0.033237793],[0.033019036]],"model_test_loss":0.007191894110292196,"input_size":18,"current_date_and_time":"2023-08-14_00-15-11","input_mean":[[20.899157],[-0.01104718],[0.036451686],[-0.0037773221],[-0.015367436],[-0.014161936],[-0.012414819],[0.0024655054],[0.011132189],[0.024372566],[0.03227307],[-0.0040591834],[-0.003941466],[-0.003825588],[-0.0034224978],[-0.0032681874],[-0.0031958742],[-0.0031637321]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.030808564],[-0.7881302],[-0.31871074],[-0.7077137],[-0.6866325],[-1.4053191],[1.028521]],"dense_1_W":[[-0.004262297,0.26770896,-0.0056766947,0.30141094,-0.48577562,1.0045375,-0.2323648,0.115538254,0.115895815,-0.4666756,0.25802436,-0.31511456,-0.0127651235,-0.14158984,-0.2904196,-0.052200418,0.22780252,-0.14276873],[-0.78517354,0.22283344,1.9814899,-0.060622748,0.44862846,0.5629776,-0.95423114,-0.2534107,0.113122925,-0.19669883,-0.22316283,0.3763087,-0.52413887,0.08829021,0.5618185,-0.4974062,-0.003229953,0.104768366],[-0.0031356695,-0.3358509,-0.013187175,0.09005276,-0.33111897,-1.0076365,1.2956011,0.25053537,0.032162637,-0.24333534,-0.0034071796,-0.5057202,0.24314785,0.1808326,0.05994126,0.053177986,0.29184142,-0.2806042],[-0.7272065,0.2573282,1.7617868,0.29571036,0.37528726,-1.083522,1.3229558,-0.4182797,-0.345258,-0.5115551,0.17309518,-0.24578947,0.10943833,0.08469504,0.049101092,-0.08576649,-0.5060829,0.3355709],[-0.349624,-1.6453601,-3.26807,0.43909118,0.51051325,-0.17063986,0.21545473,0.34421232,0.03763902,-0.2049723,0.92357033,-0.18443908,-0.18679084,0.3117935,-0.44758165,-0.18143773,0.29891232,-0.08629131],[-0.39733958,-1.0273623,0.003442246,0.45654815,0.120703034,-0.7350454,0.44965222,-0.049190737,-0.05031882,-0.1817813,0.107058324,-0.41069368,0.04839138,-0.09612549,-0.040410392,0.035452463,-0.102408044,-0.01588105],[0.30539432,-1.042117,0.00010271933,0.334786,0.39255652,-0.9954019,0.59428906,-0.041689884,-0.055279892,-0.32039487,0.22644287,-0.5457353,0.09216463,0.07863109,0.07457668,-0.16325666,0.12002374,-0.11692654]],"activation":"σ"},{"dense_2_W":[[-0.4462192,0.006479972,0.16022606,0.08788203,0.4124234,0.20229541,-0.15212922],[-0.8229072,-0.6896271,0.41974926,-0.5126825,-0.5892288,0.36048502,0.08571766],[0.8743697,0.11519312,-0.8927151,-0.20659262,-0.03500918,-0.2431935,-0.21345907],[-0.7572373,-0.41277024,0.5602531,0.23260891,0.57976633,0.21060136,0.49044013],[0.10042878,0.032445718,-0.3576043,0.20940162,-0.27814117,-0.42059135,-0.65223837],[0.5351519,0.41956633,-0.3044747,-0.45954588,0.16867766,-0.4634547,-0.5968737],[-0.23816408,-0.48021644,0.838582,-0.21538194,0.18876094,0.5458715,0.61050403],[-0.924066,-0.3433875,0.57219464,-0.16153193,0.042738453,0.52251714,0.3991525],[0.48040503,0.1870807,-0.52080226,0.21046016,-0.45690414,-0.73420763,0.22072145],[-0.12941065,-0.44941613,0.5425607,0.59573215,-0.22534776,0.5405078,0.39194173],[0.36701992,0.34995168,-0.62530506,-0.6363552,-0.103005536,0.22475937,-0.7253444],[0.9647937,-0.056563377,-0.46448824,-0.22327216,-0.14012502,-0.011079587,-0.6820786],[-0.45136547,-0.14740916,-0.6345192,-0.46869496,0.26515964,-0.8063111,-0.36604276]],"activation":"σ","dense_2_b":[[-0.0016022231],[-0.27396354],[0.09004652],[-0.22539683],[-0.038415063],[0.06759769],[-0.14015342],[-0.26507622],[0.056926068],[-0.13300559],[0.012339802],[0.1285967],[-0.09678008]]},{"dense_3_W":[[-0.52442557,-0.68827885,0.539679,-0.5438538,0.61366826,0.63880235,0.08888519,-0.3074122,0.09701449,-0.6003877,0.45083877,0.22909275,-0.18219474],[-0.5755899,0.09211835,0.20371199,-0.5715788,0.15341173,0.6038049,-0.41338116,-0.23703997,0.5769859,-0.0016438926,0.50527227,0.20451528,0.42446515],[-0.5199198,0.16957249,0.45533246,0.34319803,0.32190958,0.35860723,-0.09089439,0.09584038,-0.17535931,-0.4608781,0.32986072,0.28507563,-0.44377762]],"activation":"identity","dense_3_b":[[-0.00831913],[-0.03343917],[-0.05860182]]},{"dense_4_W":[[0.48563462,1.1415706,0.1720984]],"dense_4_b":[[-0.028836345]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143P xf1x892051xf1x820526B0060905'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143P xf1x892051xf1x820526B0060905'.json deleted file mode 100755 index 7182b5b664..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143P xf1x892051xf1x820526B0060905'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.181382],[0.86813647],[0.5492334],[0.036760613],[0.8545429],[0.85885984],[0.86159694],[0.86050034],[0.85472816],[0.8523642],[0.8434543],[0.036624078],[0.036657],[0.03669113],[0.036766365],[0.03678054],[0.036892213],[0.036896084]],"model_test_loss":0.005091955419629812,"input_size":18,"current_date_and_time":"2023-08-14_00-41-09","input_mean":[[19.510765],[0.022819782],[-0.0037222924],[0.0013656311],[0.034109943],[0.033269133],[0.03193874],[0.030672757],[0.03303289],[0.039188243],[0.047165018],[0.0015104475],[0.0014863856],[0.001448786],[0.0013402464],[0.0011793213],[0.00095052656],[0.00085381255]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.24343],[0.036478233],[1.1406748],[-4.0893216],[0.010201278],[3.8922794],[-0.02359314]],"dense_1_W":[[0.5112725,1.2539926,0.08067997,0.40639907,-0.17453805,1.0416505,-0.12549862,0.027588852,-0.33463654,-0.05859373,0.17721942,0.25630853,0.1335248,-0.2872575,-0.39503282,-0.34860995,-0.06432243,0.31120285],[-0.0021122668,0.70218897,0.010622942,0.5508349,-0.090317965,1.2903326,-0.7231601,-0.18765782,0.09797428,0.046807405,0.059654005,-0.41199416,0.18483795,-0.29445493,-0.6740794,-0.12480136,-0.0430672,0.19277844],[0.5476078,-1.2119801,-0.08559349,0.19138788,0.28913566,-1.1168361,0.035099618,-0.35251448,0.7215318,-0.03543186,-0.19039832,-0.5274913,-0.07222603,-0.26130104,0.6166925,0.4533689,0.050027058,-0.4696203],[-2.058259,-1.0750265,-1.169345,-0.30267146,-0.20469314,-0.8867201,1.2159588,-0.41085604,-0.5082783,0.2776987,-0.050553918,-0.22321407,-0.0077316845,0.29300007,0.65865314,-0.85335296,0.25066155,0.18064624],[-0.035402827,-0.5353682,1.8089458,0.028881337,0.20666885,-1.1033194,1.6017944,0.9444415,-0.2323832,-0.15898483,-0.30815956,-0.26466683,-0.00038011433,0.79185253,0.45667037,-0.5028157,-0.73411787,0.21777979],[2.0663276,-0.9846567,-1.1721373,1.0919439,0.08992667,-1.567887,1.5389193,-0.3230045,-0.679468,0.26205733,0.0035511316,-0.049015433,-0.52897847,-0.1632392,0.10244833,-0.9965355,0.26675847,0.27428353],[0.022025522,-0.41033313,-2.2404602,1.1125531,0.046705477,-1.1841795,1.162694,-0.42915577,-0.19991426,0.050461024,0.4656523,-0.6310463,-0.12011685,-0.0015236506,-0.6044337,-0.5173836,0.33471113,0.43550345]],"activation":"σ"},{"dense_2_W":[[-0.04584096,-0.99214095,0.31622618,0.5777341,-0.045811962,-0.043618474,0.5721162],[0.38406098,0.47349882,-0.40502512,-0.3970886,-0.38640773,-0.19816592,-0.053756084],[0.6450702,0.7932687,-0.710186,-0.3985887,-0.034641393,-0.0185165,-0.69896996],[-0.7009559,-0.022874104,-0.08941493,0.64746475,0.15585321,-0.29219258,0.58332366],[-0.0010929473,0.33329758,-0.3808528,-0.153307,0.02534006,-0.62115765,-0.605843],[0.16988595,0.9742904,-0.6698165,-0.09701397,-0.5044086,-0.29125994,-0.4428076],[0.055143006,-0.80990934,-0.37862834,0.17991501,-0.71648,-0.9390392,-0.42016158],[-0.25731847,-0.42503363,0.3942715,-0.7323096,-0.22550054,-0.2743843,-0.7322862],[0.004696864,-0.25343058,-0.3075049,0.35224637,0.5207669,0.41676813,0.7068549],[-0.5403459,-0.7852185,0.27016988,0.13775401,0.28410533,0.067339934,0.6903914],[-0.3101071,-0.8646119,-0.2535561,0.53973216,0.16905892,0.40238792,0.2142207],[-0.29162455,0.53124887,0.004796835,-0.19279581,0.3287921,-0.025846375,0.0793902],[-0.6812329,-0.22995314,0.5113913,-0.24881253,0.21576783,0.48485595,0.28645903]],"activation":"σ","dense_2_b":[[-0.21589507],[0.10397086],[0.15712452],[-0.16989635],[0.26295224],[0.24404621],[-0.10845146],[-0.18922116],[-0.15020797],[-0.16395593],[-0.36227095],[0.0059039695],[-0.05891273]]},{"dense_3_W":[[-0.164952,0.5829566,0.5295758,-0.23809046,0.72228867,0.44742477,0.123699404,0.044092085,-0.6295931,-0.5918753,-0.40078494,-0.055157468,-0.23842782],[0.07521707,0.15951206,-0.03775708,0.3879158,-0.34177628,-0.2327042,-0.41371173,-0.009885026,-0.44009754,0.10016008,-0.43510032,0.24980222,0.13962166],[0.32187572,-0.6400992,-0.17281993,0.07402123,0.4694254,-0.2456943,-0.31591687,-0.15127994,0.4486657,-0.2195093,-0.47274616,-0.24562888,0.5684488]],"activation":"identity","dense_3_b":[[0.05258817],[0.07220977],[-0.044359814]]},{"dense_4_W":[[1.0103351,0.06551428,-0.5411557]],"dense_4_b":[[0.046632294]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143B xf1x892201xf1x82x0563B0000600'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143B xf1x892201xf1x82x0563B0000600'.json deleted file mode 100755 index 58f060b313..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143B xf1x892201xf1x82x0563B0000600'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.662233],[0.8113375],[0.4172554],[0.033643167],[0.79888594],[0.8028403],[0.80670947],[0.7995481],[0.7934126],[0.7891131],[0.782117],[0.033658788],[0.03365928],[0.03366303],[0.033584062],[0.033565614],[0.033572596],[0.03341478]],"model_test_loss":0.011067546904087067,"input_size":18,"current_date_and_time":"2023-08-14_01-06-44","input_mean":[[20.030537],[0.060196385],[-0.007738257],[-0.012284204],[0.062764056],[0.06089445],[0.05955253],[0.059412487],[0.059961364],[0.05963631],[0.05755611],[-0.012353351],[-0.012392538],[-0.012430977],[-0.012426002],[-0.012402114],[-0.012500397],[-0.012698062]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.011189804],[-1.8674326],[2.1096756],[0.26339114],[0.5535559],[-1.3430045],[0.54640424]],"dense_1_W":[[0.0008347146,-1.6734533,0.004123626,0.53035754,0.7637235,-0.9993929,-0.0076265903,-1.1400509,-0.25552282,0.5817568,0.0021680437,0.026432207,-0.22946344,-0.39117494,0.1184229,-0.031067535,-0.23829687,0.12487833],[-1.1671325,-1.5989091,2.0931304,-0.6706487,1.7253804,1.9009653,-1.0202484,0.31748152,-0.9233542,-0.087770805,0.3862745,0.24705102,0.082410954,0.15667558,0.30451232,-0.2267331,0.08866649,0.035475973],[1.4456624,-1.5619239,2.466439,-0.93418974,2.2984,1.5268502,-0.90133584,0.3620802,-1.2135332,-0.049564496,0.45319128,0.3234485,0.24712734,0.10689693,0.32506576,-0.07574348,-0.032787975,0.083121665],[0.03307216,-0.6489449,-0.0005701389,-0.13173494,0.8676245,1.2602453,-1.2616234,-0.95231324,0.2632026,0.24062945,0.18689358,0.09292445,-0.24533354,0.3599325,-0.7487064,0.46976736,0.56557786,-0.39855072],[0.05449837,1.5482326,0.0052019306,-0.15240818,-1.3306834,0.37130266,-0.34324887,0.44472352,0.7343325,0.0939915,-0.46491262,0.17091997,0.18282665,-0.13365027,-0.27148074,-0.36316878,-0.074748464,0.39142248],[-1.0103469,1.7473103,0.0042393715,-0.3335703,-1.3267844,1.0646676,-0.57885313,0.06908706,0.5133798,-0.09079333,-0.049777858,-0.17497323,-0.036685776,0.32865825,-0.20434003,-0.10280022,0.05871905,0.14388838],[1.725505,0.67823017,-0.015625048,0.80355895,-0.37574232,1.3815744,-1.3868164,-1.0791757,-1.0506003,-0.19924724,0.47507092,-0.6711824,-0.69669557,0.6993373,0.5932092,0.33117467,-0.40151066,-0.29909366]],"activation":"σ"},{"dense_2_W":[[0.4855691,0.9684355,-0.98692816,-0.31508428,-1.228063,-1.6463718,0.15983118],[-1.1735238,-0.09113564,1.2186227,1.0091687,1.0687741,0.07123165,1.6712769],[0.28951633,0.022773247,-0.3386379,-0.5069151,-0.77005637,-0.30232868,-0.56512755],[0.32825664,0.27628714,-0.42091107,-0.31968302,-0.5112418,-0.47919804,-0.43602708],[-1.2471062,0.785496,0.10179997,-0.31093064,0.5988123,0.70579207,-0.58402646],[-0.6930572,0.83520454,-0.7187977,0.08945707,-0.17269047,0.16038384,-0.48173437],[-1.0064458,-1.0428234,0.6521663,-0.39936963,-0.4934068,-0.6583212,-0.6813975],[-0.7038946,-0.691905,0.10873986,0.033401936,-0.05016936,-0.5048962,-0.7372117],[0.26728374,-0.6021571,-0.82455206,-1.0239568,-0.63041604,0.25164172,-1.5996319],[-0.306726,-0.64836156,-0.18564051,-0.24620682,-1.0371934,0.08292383,-0.1839289],[0.5721492,-0.16167684,-0.14333242,-0.23550391,-0.71259844,-0.46686116,0.045510437],[0.012533767,0.22610848,-0.13282865,0.48579726,0.46268955,0.31126258,0.3202859],[-0.31318545,-0.009125532,0.3056208,-0.08678949,-0.37333733,-0.55968124,-0.2400406]],"activation":"σ","dense_2_b":[[-0.048040356],[0.010551669],[-0.034002457],[-0.09350583],[-0.43931866],[-0.25840852],[0.30683145],[-0.17581052],[-0.207552],[-0.136824],[0.15877321],[-0.2822651],[-0.14438301]]},{"dense_3_W":[[0.1878037,0.7795191,-0.40910757,-0.39871213,0.119621195,-0.41886806,-0.7300552,0.4663937,-0.23213437,-0.34520158,-0.62860143,0.7035117,-0.17154448],[0.2195641,-0.6607046,0.3519602,0.567264,0.17038877,-0.36625072,-0.12122062,0.51718,-0.09198265,0.22301078,0.39600024,-0.23041521,0.023985038],[-0.6850335,0.000747365,-0.18778192,-0.05563331,0.5623896,0.27665734,-0.4172306,-0.26284721,-0.30182174,0.06609348,-0.59820837,-0.047604926,-0.10808185]],"activation":"identity","dense_3_b":[[0.010739073],[-0.028906258],[0.040689796]]},{"dense_4_W":[[0.66164374,-0.6622832,1.1909763]],"dense_4_b":[[0.033283826]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020600'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020600'.json deleted file mode 100755 index d61947e4ee..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020600'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.53693],[0.8837301],[0.504074],[0.03892978],[0.8755903],[0.8769705],[0.8770567],[0.85198003],[0.83604085],[0.80722994],[0.7793083],[0.038844477],[0.038851265],[0.03885575],[0.038714577],[0.03858303],[0.03835089],[0.038112696]],"model_test_loss":0.008165956474840641,"input_size":18,"current_date_and_time":"2023-08-14_01-33-05","input_mean":[[18.900034],[-0.040913012],[-0.014206974],[-0.0010526397],[-0.042061422],[-0.043862846],[-0.045665625],[-0.049387835],[-0.04846715],[-0.049707115],[-0.049154304],[-0.0011701209],[-0.0012063662],[-0.0012323125],[-0.0014004245],[-0.0015620717],[-0.0018737207],[-0.0021513186]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.05034311],[-0.16049339],[-0.8387054],[0.026724432],[5.6924577],[-6.2590356],[0.09195408]],"dense_1_W":[[0.0013737448,-1.3723408,0.001342769,0.41604844,0.079518534,-1.0992196,0.69320405,-0.20007867,-0.242486,0.10413749,-0.012725727,-0.24533777,0.18676357,0.103152275,0.08449463,0.29623845,0.18195744,-0.28134367],[-0.016047297,-2.1172945,3.6351044,-0.9225221,2.4778526,1.9237944,-1.6851976,1.552848,0.48124325,-0.4579708,-0.9661728,0.5705856,0.2986973,-0.12730876,0.25481766,-0.104712516,-0.47604793,0.4647864],[-0.031255946,4.4344115,0.0115045,-2.06056,2.2306361,3.17809,2.2399688,1.7444073,2.2162871,0.0605305,-1.2824659,0.5707839,0.55752015,-0.3394804,1.3753946,0.6923126,-0.69295144,0.06596876],[0.014996965,-1.4983084,0.0074849236,-0.43667704,1.5386254,-0.71714413,0.8680148,0.0403995,0.1127605,-0.18272513,-0.65287465,0.038639955,0.18207908,-0.26570496,0.6805489,-0.008021424,-0.20940506,0.026279788],[3.619847,0.79453075,1.2752336,0.5329089,0.06674295,0.23762697,-1.6461107,1.7750511,0.34661958,-0.23756266,0.0066114087,-0.15820406,-0.015352938,-0.72475356,0.6494297,-0.19538523,0.06557879,-0.16827972],[-3.801798,1.7125183,1.3432858,0.7638726,-0.91818637,-0.41282243,-0.35768026,1.5054896,0.29776478,-0.27578938,-0.055791046,-0.032674264,-0.68724346,-0.17769502,0.05515912,0.1238052,0.30904874,-0.3660749],[0.040583555,-0.16267918,-0.0029201144,-0.076724455,0.8662686,1.1377587,-0.7607313,-0.54665464,-0.0014566372,-0.29003936,-0.69195867,-0.37417176,0.40961555,0.08589823,-0.49127874,0.55313677,0.120903105,-0.21122085]],"activation":"σ"},{"dense_2_W":[[-0.10612687,0.00028133072,0.10279292,-0.32244202,0.56135786,-0.3038803,0.6117771],[-0.8537405,1.0868497,1.517143,-1.7185221,-1.2330467,1.7012283,-0.35707718],[-0.34067577,-0.13233681,-0.6401421,-0.45288932,0.30520055,0.10491509,0.42614308],[0.21184444,-0.3464179,0.029474478,-0.17789295,0.34473762,0.20484819,-0.21357347],[0.5183205,-0.6048094,0.11201475,0.88285375,-0.5477966,-0.28368485,-0.37010878],[0.7407778,0.0031467904,0.564206,0.3737212,-0.42286292,-0.52992564,-0.5154023],[1.1209921,-0.3645087,0.04481938,0.35292685,0.29335323,-0.14295474,-0.7726177],[0.5309003,0.2573966,0.30485377,0.08541345,-0.1786945,-0.4923706,-0.433013],[0.492245,-0.085702844,-0.55991167,0.99195623,-0.7306447,0.15703674,-0.58475363],[0.1410831,0.33561346,-0.4702111,-0.042534262,-0.34679964,0.0015535586,-0.15639044],[1.221257,-0.62122816,-0.54385215,0.5745175,0.43091094,-0.73388636,-0.3718265],[-0.5161705,-0.109079786,-0.071408875,-0.38007596,-0.44005582,0.045142595,0.05468212],[-0.9730059,1.4277359,2.029946,-3.2277482,2.1687982,-1.6582972,0.904579]],"activation":"σ","dense_2_b":[[-0.0014250523],[-0.5932475],[0.021336202],[-0.016517289],[-0.062387757],[-0.072613515],[0.06306965],[0.019332306],[-0.09633628],[-0.05684373],[0.2125887],[-0.01661518],[0.17361407]]},{"dense_3_W":[[0.5674474,0.546337,0.3743424,-0.273058,-0.5405256,-0.2000324,-0.46903795,-0.5156394,-0.44108075,-0.060869083,-0.40524966,0.19688256,0.70918274],[0.3262551,0.58425474,0.5729054,-0.031375743,-0.041701257,-0.5766777,-0.16657038,-0.31636402,0.15437165,-0.24735309,0.12849659,0.55700594,0.046101455],[-0.097841896,-0.511152,-0.39260116,-0.28767872,0.15554437,-0.16604982,0.43458262,0.05001186,-0.11995932,-0.2560319,0.58787644,-0.45917046,-0.3966601]],"activation":"identity","dense_3_b":[[0.023453068],[0.012939301],[0.18564974]]},{"dense_4_W":[[0.8108035,0.47054186,-0.09254697]],"dense_4_b":[[0.02033851]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A60604A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A60604A1'.json deleted file mode 100755 index 7fb76b4823..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A60604A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3289046],[0.53865254],[0.34363064],[0.03131177],[0.5423575],[0.5418235],[0.5407688],[0.52266824],[0.5094745],[0.48748496],[0.4674636],[0.03126794],[0.03127153],[0.03128563],[0.031270076],[0.03110797],[0.03086513],[0.030758223]],"model_test_loss":0.0065342518500983715,"input_size":18,"current_date_and_time":"2023-08-14_02-51-07","input_mean":[[19.854994],[0.02852481],[-0.008394549],[0.003052669],[0.02878524],[0.02829884],[0.027643727],[0.02405635],[0.020893725],[0.016066605],[0.01561026],[0.0030796202],[0.003104916],[0.0031055945],[0.0029775568],[0.002796068],[0.0024804338],[0.002308984]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.6401606],[-0.041325524],[2.5215666],[-0.041392956],[-0.07687011],[-0.052842032],[0.6748459]],"dense_1_W":[[1.5242575,0.35627735,0.5635576,0.35448948,-0.3953701,0.3265091,-0.577471,0.6584769,0.71018475,0.10515297,-0.2427247,0.35898077,-0.40721607,0.08450537,-0.267958,0.29337814,0.22232342,-0.60763425],[-0.007026347,0.4657935,0.03749239,-0.34094924,-0.075710565,1.4064182,-0.8528577,-0.318615,-0.31381673,-0.27045733,0.42012632,0.26428086,0.100735106,0.08037723,-0.32698122,-0.06074372,0.10325446,0.084082514],[1.5156735,-0.47489092,-0.55053735,-0.40526438,0.23048405,-0.529619,1.1181229,-0.79596174,-0.5320006,-0.09871097,0.1812741,0.49836755,-0.17353886,-0.3646145,-0.006225405,0.0969328,-0.3082221,0.6313902],[0.0070438217,0.7177413,0.070641816,-0.64644647,-0.12578073,0.66291285,-0.6603725,0.18909127,0.08034264,-0.34289366,0.10820179,0.43800563,0.67992795,-0.8538587,0.0030815017,-0.07758179,-0.0855604,0.29938003],[-0.0004627711,-1.4414465,0.07495133,-0.05092367,1.1927464,-0.67879677,0.27852902,-0.583847,-0.81228834,-1.3539568,1.3550432,0.112276375,-0.4907178,0.40841964,0.12346382,-0.22612214,0.6329694,-0.4437507],[0.032261487,0.8911769,6.108131,-0.61734253,0.65491176,1.4899205,-0.34530422,-0.21132824,-1.4898846,-0.43324688,0.5005588,0.4327097,-0.017908085,-0.6668785,0.5833861,0.35305926,0.3997379,-0.51656204],[-0.0018498964,-2.6991417,0.16747902,2.187501,0.53372544,-0.109926574,0.43455476,0.45718986,1.8602107,0.25133002,-0.8681649,1.2997736,1.6204847,2.1496859,0.14778936,-0.49531916,-0.78723556,0.98850256]],"activation":"σ"},{"dense_2_W":[[0.24454884,0.35007536,0.2867137,0.09012383,-0.38733336,-0.49449205,-0.13559741],[0.23089275,-0.5370107,0.09162375,-0.51357645,-0.23495477,-0.06315045,0.11455118],[-0.0063527166,-0.053212985,-0.27540293,0.70994335,0.10962871,-0.14789675,-0.27231297],[-0.50261515,-0.46583286,0.3427541,-0.3748585,0.4016677,0.23851554,0.2952814],[0.06376815,0.26943728,-1.2382541,0.044812873,-0.28141838,0.35423744,0.5646739],[0.56663376,0.6105675,-0.81973964,0.83144623,-0.34869766,0.23554252,-0.2855648],[-0.06491405,0.21282296,-0.25241178,-0.5098676,0.40169764,-0.33915997,-0.37829182],[-0.058915704,-0.52073437,-0.3808913,-0.58914316,0.48207447,-0.14773318,-0.15192641],[-0.0054449504,-0.52427745,-0.17092238,-0.5706592,-0.35192126,0.19167943,0.4108363],[0.26346433,0.5781188,-0.20278165,0.68046784,-0.7055976,0.06091033,-0.2715019],[0.46802843,0.29305348,-0.48767036,0.76116073,-0.5743784,0.018987808,-0.2706612],[-0.35490564,-0.39351743,-0.22781888,-0.273698,-0.4345575,-0.21557479,-0.41541457],[0.8614721,0.42754713,-1.2491077,1.2331724,-1.1045619,0.7123346,-0.33662388]],"activation":"σ","dense_2_b":[[-0.01874273],[0.009371876],[-0.036509376],[0.0034165683],[-0.30991253],[-0.35229847],[0.10235407],[0.14266653],[0.034850482],[-0.112194695],[-0.09342103],[0.0710196],[-0.2241445]]},{"dense_3_W":[[-0.17080562,0.32143503,-0.17581414,0.56947404,-0.055805363,-0.20806669,0.13803789,0.5370566,0.37103105,-0.48028666,-0.10460543,0.6821912,-0.0842912],[0.30726758,0.058517847,-0.33661544,0.21711047,-0.37768382,-0.26146904,0.51983565,-0.07036411,-0.032129124,-0.37549922,-0.3525898,-0.053472064,-0.68903774],[0.16374777,0.41130075,0.054798886,-0.5551823,-0.10899548,-0.13250633,-0.39466566,-0.3571533,-0.1534892,0.39225924,0.6325772,-0.3902483,-0.3982242]],"activation":"identity","dense_3_b":[[0.05099233],[0.06483823],[-0.004630559]]},{"dense_4_W":[[-1.2006958,-0.80405784,0.03314714]],"dense_4_b":[[-0.055501234]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A60634A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A60634A1'.json deleted file mode 100755 index dea8295e8d..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A60634A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.0083737],[0.42046377],[0.20520201],[0.02763439],[0.42246833],[0.4221625],[0.4216298],[0.41341385],[0.40692678],[0.4022001],[0.40219635],[0.02748101],[0.027535422],[0.027579376],[0.027645623],[0.027637415],[0.027440004],[0.027380727]],"model_test_loss":0.004143005236983299,"input_size":18,"current_date_and_time":"2023-08-14_03-41-29","input_mean":[[25.47412],[0.19958466],[-0.017220736],[0.0033158686],[0.2047261],[0.20301075],[0.20060319],[0.19406201],[0.19408248],[0.19245343],[0.19168448],[0.0033969714],[0.0033646896],[0.003344533],[0.0033792283],[0.0033883466],[0.003463568],[0.003644856]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.1657069],[-1.9022597],[0.3573439],[-0.44420108],[-0.100230284],[-1.7269558],[1.1205612]],"dense_1_W":[[-0.00092326954,-0.422309,-0.17512406,0.5054023,0.14710678,-0.25678113,-0.20028122,0.06749457,-0.2863628,0.3886345,0.05361403,-0.08413107,-0.43366045,0.06432067,0.48437363,0.014648756,-0.0020482785,-0.14993115],[-1.1023697,0.34174618,-0.28158325,0.4212608,0.5830523,-1.0980513,-0.25991014,0.3546678,0.20719239,-0.46449193,-0.019278029,0.010792962,-0.7601846,0.5799624,-0.13653645,-0.17269216,0.084417485,-0.021036232],[0.00030671473,-0.39266655,0.29377759,-0.48246792,-0.38019815,1.1431502,0.58916605,-0.018903274,0.3098398,-0.035918158,-0.3678466,0.37013093,0.29870456,-0.03076149,-0.14486301,-0.084633216,-0.0988374,0.20422511],[-0.36138636,0.81817955,1.8987099,-1.1200192,-0.11336604,0.17895934,0.043662008,-0.21876605,0.45478925,-0.03689186,1.0078938,-0.30329502,-0.35860255,-0.62149346,0.022846708,0.12703322,0.18421635,0.35560572],[-0.5364841,0.1453418,-3.6584685,0.6151252,0.5582709,-0.2691487,0.023903158,0.5754364,-0.116071,0.37825516,-0.19200331,-0.2248982,-0.3850075,0.30770153,-0.17167693,-0.45830363,-0.046138637,0.21326888],[-1.162092,0.10568817,0.29473102,-0.27880898,-0.36157534,0.5742935,-0.0031682379,-0.08621305,-0.23101984,0.35677135,0.0148600945,-0.27795824,0.62892383,-0.46830806,0.3602908,0.03294911,0.27180216,-0.26759154],[-0.0180816,0.7662361,-0.22583437,-0.8438566,0.50242615,0.43400842,0.30508512,0.012276164,0.968684,0.8544783,0.46200368,-1.9207745,-1.1937202,-1.0721608,-0.21986486,-0.48469168,0.2959894,-0.856707]],"activation":"σ"},{"dense_2_W":[[-0.5470442,1.7217759,-0.1470755,-2.4646258,0.0037959144,1.3074782,-0.05712827],[-0.3711513,0.41745117,0.4496939,-0.20902565,-0.2925513,-0.26379028,0.41135114],[0.6467387,0.12482949,-0.6287757,0.12178349,0.19214922,-0.32433525,-0.4479245],[-0.23320459,-0.29114887,0.06960925,0.40295774,-0.38662457,0.1818995,0.5802863],[-0.66332686,-0.09888686,0.31044513,0.16627274,0.09730392,0.56536597,-0.31096095],[0.6163865,0.44544005,-0.5907308,0.33815238,-0.42669207,-0.7298953,0.19980703],[-0.5976602,-0.6812888,0.024319809,0.10030743,-0.078346655,0.2787135,0.20778744],[0.32584617,0.49106023,-1.2814318,-0.50078326,0.2115034,0.40731817,0.0049111852],[0.739966,-0.18427776,-0.57610196,0.009918123,0.18318374,-0.27952188,-0.073271],[-0.26890662,0.32813534,0.45242321,0.28769568,-0.1091229,0.36858273,-0.5646969],[0.065649405,-0.595555,0.6637816,-0.50877273,-0.025255747,0.29801172,-0.089912675],[-0.6580612,-0.53460723,0.64502347,-0.037672743,-0.38733548,0.35739285,0.37566775],[-0.26895392,-0.2532778,0.6466152,-0.32872054,0.4610569,0.42680815,-0.289281]],"activation":"σ","dense_2_b":[[-0.57801545],[-0.02487967],[0.046223283],[-0.011919688],[-0.023250999],[-0.0042634523],[-0.27497166],[-0.09866434],[0.012610335],[-0.08247934],[-0.036527302],[-0.05259078],[-0.031590052]]},{"dense_3_W":[[-0.16326903,0.5243444,-0.63081026,0.28322223,0.2934153,-0.31467402,-0.329545,-0.36580902,-0.37401882,0.12621103,0.3331115,0.6052953,0.48938477],[-0.09900888,-0.06063517,-0.17130663,0.1667584,0.16381904,-0.6082081,0.013274949,0.15247221,-0.03997433,0.18612197,0.2806802,-0.11156396,-0.3359548],[-0.2837178,-0.44840294,-0.004694435,0.29237515,0.55196846,-0.6161363,0.57095647,-0.11839446,-0.61730903,0.038825605,-0.19622047,-0.21944387,0.1243949]],"activation":"identity","dense_3_b":[[-0.00747683],[0.002752381],[0.0026605453]]},{"dense_4_W":[[0.95164365,0.30194584,0.58023304]],"dense_4_b":[[-0.005728339]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A62A32A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A62A32A1'.json deleted file mode 100755 index 616751a758..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A62A32A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.626944],[1.0619773],[0.5539984],[0.03671154],[1.0561126],[1.0578535],[1.0594684],[1.0446345],[1.0212003],[0.9992795],[0.97770816],[0.036627006],[0.036641616],[0.036646295],[0.036549233],[0.036383647],[0.036169644],[0.035927355]],"model_test_loss":0.0056040422059595585,"input_size":18,"current_date_and_time":"2023-08-14_04-08-06","input_mean":[[18.489305],[0.07716587],[0.008159927],[0.014758759],[0.07426559],[0.07554208],[0.07664342],[0.07870349],[0.07942318],[0.08122073],[0.081623584],[0.01484478],[0.014833818],[0.014823983],[0.014814751],[0.014938193],[0.015166377],[0.015501372]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.036457997],[0.19156031],[-0.01508866],[-0.052175455],[-1.0038084],[-0.2074287],[0.15170857]],"dense_1_W":[[-0.004964838,-1.1980921,-0.029613819,0.28823835,0.7013706,-1.2906415,1.0065259,0.23381212,-0.046492662,0.120659865,-0.098360516,0.0062270476,-0.46386242,0.12284296,0.059551295,0.09112548,-0.055498406,0.0027111673],[-0.005198727,-0.6752965,-0.6080775,0.20275135,-0.29710057,-0.85021347,1.3533522,-0.21732911,-0.22854595,0.19577463,0.321285,0.06076337,-0.03275157,0.36474285,0.042674348,0.2598862,-0.103289686,-0.21956365],[0.0043494096,1.2409916,-0.01650288,-0.41806248,-0.08088325,0.98173875,-1.6316887,0.25142598,-0.23021263,0.13534379,-0.04843492,0.2575174,-0.08009086,0.22280405,-0.25962964,0.00019480381,0.12492345,-0.028998379],[-0.022095788,-1.111526,-1.9763997,0.3185457,0.14024144,-0.6664468,-0.16739945,0.08738434,-0.60685486,-0.28227818,-0.7769675,0.566913,-0.007644112,0.31493762,-0.40619445,-0.13403314,-0.16620153,0.035001427],[2.3655212,-0.5150374,0.31141245,0.065676264,0.18930423,-0.98876,0.43160492,-0.045166675,0.059209798,0.23501736,-0.13611424,-0.24918106,0.25709474,0.4468884,-0.01140312,-0.14684597,0.13040915,0.03804596],[-0.0047277273,-1.1999024,0.022677707,0.06893214,0.0034417252,-0.7617319,0.74206394,-0.28641677,0.043607976,-0.16808808,-0.11143388,-0.27479768,0.041559022,-0.29644537,0.16951554,0.16085929,-0.14372928,0.19972724],[0.0015725193,1.8013598,6.0048485,-0.31310147,-1.4716569,-0.32186383,-0.67218703,0.2699829,0.8223929,-0.39775306,-0.27570257,0.1735122,0.34330562,-0.11839002,0.112108946,0.0284751,-0.42073828,0.32494405]],"activation":"σ"},{"dense_2_W":[[-0.8274989,-0.26683718,1.1221086,-0.4967123,-0.15982957,-0.5157279,0.5409362],[-0.4282439,-0.28969744,-0.15959398,-0.31986535,0.06426711,0.045167804,-0.12751547],[0.75156754,0.5139446,-1.6046362,0.22225763,-0.17358594,0.4643068,-0.56141883],[-0.64656496,-0.31969824,-0.3383586,-0.24736834,-0.115212455,-0.28582263,-0.29819226],[0.02432829,0.59469664,-0.15138043,-0.5656801,-0.5094818,0.7270511,0.70142233],[0.8166905,0.17791738,-0.7938446,-0.41242573,0.15946935,0.010435327,-0.07871756],[-0.50170904,-0.70214444,-0.09667413,0.06173317,-0.34481144,-0.05702854,0.28547388],[-0.4316806,-0.69494605,0.35303894,-0.32337648,-0.11162086,0.16142549,0.046552487],[-0.47061762,-0.033296604,0.48481578,-0.1644464,-0.35995185,-0.9828825,0.48374155],[-1.1422112,-0.30554995,1.0520233,0.11161053,-0.34157068,-0.3464864,0.44715127],[0.32906184,0.24655321,-1.2441839,0.40368524,-0.26899955,0.26253235,-0.47163612],[0.89605176,0.21842143,-0.18375918,0.25550878,-0.17637666,0.18975225,-0.01678542],[0.015940731,-0.25979605,0.025350504,0.27074146,0.4475809,-0.68709433,-0.6171181]],"activation":"σ","dense_2_b":[[0.1036446],[-0.24618293],[-0.3107517],[-0.14251111],[-0.00010030766],[-0.22231226],[0.03811995],[-0.24698843],[-0.056234393],[-0.024014654],[-0.121909596],[-0.21749336],[-0.3809104]]},{"dense_3_W":[[-0.38996089,0.41667554,0.31174377,0.48924834,0.5464652,0.17986193,-0.29639804,-0.6972503,-0.61368924,-0.2425055,-0.19786963,0.30278218,-0.1469855],[0.6355902,0.08049979,0.111204624,0.19977798,-0.1947918,-0.59491324,0.29035076,-0.23108244,-0.28247926,0.31540954,-0.2722785,-0.37643728,0.39918077],[0.39822328,0.36373773,-0.40062055,0.33348098,0.038394526,0.16810612,0.16263756,-0.26843348,0.23122968,0.11646639,-0.6678012,-0.30025852,-0.23330888]],"activation":"identity","dense_3_b":[[-0.03313786],[0.042609334],[0.039157733]]},{"dense_4_W":[[-0.6706609,0.49312,0.83626646]],"dense_4_b":[[0.032975886]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM907144D xf1x891063xf1x82x002SA6092SOM'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM907144D xf1x891063xf1x82x002SA6092SOM'.json deleted file mode 100755 index 9c07f0aa4c..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM907144D xf1x891063xf1x82x002SA6092SOM'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.846948],[0.81105536],[0.41403648],[0.035652053],[0.8037867],[0.8062848],[0.8087894],[0.80610657],[0.8037343],[0.80183107],[0.7975248],[0.035562087],[0.035535168],[0.035516404],[0.03546272],[0.03543645],[0.035458043],[0.03562561]],"model_test_loss":0.007874921895563602,"input_size":18,"current_date_and_time":"2023-08-14_04-32-42","input_mean":[[25.956413],[0.047174964],[0.009190482],[0.0044681234],[0.04175229],[0.04260476],[0.04351004],[0.047875065],[0.04891037],[0.052666083],[0.061359685],[0.0043021124],[0.0042939777],[0.004301477],[0.0043947003],[0.0044108145],[0.004389884],[0.0046027442]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.059979655],[0.069013156],[-0.8281847],[-0.11142841],[0.03955072],[0.12549742],[0.783418]],"dense_1_W":[[0.0030481117,-1.0549505,-0.006972525,-0.15595584,0.7840362,-0.69210386,0.17925914,0.04507908,-0.14131218,0.34102848,-0.09225534,0.20323838,0.0819431,0.9120782,0.1297282,-0.11015781,-0.3067628,0.021845477],[-0.00080558297,0.73653907,-0.001798047,0.1313806,0.068776235,0.49522364,-0.2105799,-0.21456197,0.21042615,0.21957193,-0.11765698,0.51994056,-0.4339728,-0.023908615,-0.16695696,-0.176756,0.12341636,0.058519702],[0.7222947,-0.17934859,-0.003890196,0.09484328,-0.38000545,-0.3075813,0.13792701,0.11271669,-0.0005278281,0.12689501,-0.20993122,-0.44905135,0.33738986,0.07277459,0.38528377,0.106667824,-0.18891095,-0.019514121],[0.06560848,0.40144962,-0.12956662,-0.055643696,-0.049663123,0.86327803,0.34819037,-1.1415983,-0.24294508,0.45161903,0.5174569,-0.9724499,-1.1054265,-0.59140885,-0.121702924,0.53453803,0.77787405,-0.24458599],[-0.0030644669,0.26243958,2.1391315,0.06857931,0.5363525,0.25445628,-1.2047125,0.7697752,0.24485303,-0.06228338,-0.7510021,0.23437755,-0.09784092,-0.7235852,0.8837979,-0.17948864,-0.2157018,0.034686614],[-0.012706729,0.3920872,-0.010908032,0.7358326,-0.03599182,1.3597629,-0.43022266,0.15597473,-0.40719056,0.706777,-0.19327079,1.2462306,0.75319684,0.3395795,-0.40832612,-0.33334768,-0.996102,-0.89866537],[-0.7431401,-0.29369017,-0.000105630024,0.29781067,0.013087427,-0.94798666,0.5259348,0.116058856,-0.11235733,0.16232441,-0.17218283,-0.32375956,-0.22164673,0.4142412,0.20824604,0.059222106,0.097304516,-0.18275806]],"activation":"σ"},{"dense_2_W":[[0.97417414,-1.1549966,0.8853947,-0.26468486,-0.8227154,-0.09399993,0.6159557],[0.10204023,0.86626434,-0.28335205,-0.5750978,-0.302103,-0.27426735,0.01522395],[-0.6768031,0.79712826,-0.79459053,0.26956165,-0.17597227,0.324712,0.077839725],[-0.38779014,0.96340615,-0.12227216,0.28462237,0.7044941,0.4787453,-1.0882279],[-0.39657563,0.5794276,-0.7634172,0.18103188,0.61563504,0.50122654,-0.9383998],[-0.5073624,0.12485382,-1.1825857,-0.4041146,0.5108791,0.44801873,-0.51704717],[-0.6595412,0.6669609,-0.5334947,0.17545679,0.407928,0.019941911,-0.7399486],[0.09550178,0.2438875,-0.04877144,-0.0019337976,-0.019350123,0.43442073,-0.3072027],[0.80995226,-0.28730962,1.149432,-0.2670333,-0.55623615,-0.36270526,0.27021706],[0.09230979,-1.2384902,0.96683645,0.50837046,-0.8388565,-0.06853885,0.9245854],[1.0689826,-0.6658299,0.6486111,-0.6554747,-0.64078957,-0.24539684,0.73077625],[0.08056471,-0.6417475,0.4964616,-0.12449939,0.18329845,-0.2311192,0.6783663],[0.45767495,-0.28652194,0.19447622,-0.08870219,-0.18199718,0.025115477,0.29550073]],"activation":"σ","dense_2_b":[[-0.028785199],[0.06734204],[0.0311671],[0.090430334],[0.0499396],[-0.06613649],[0.1572726],[-0.0020371592],[0.04266869],[-0.13803189],[-0.3047031],[-0.07539335],[-0.12442536]]},{"dense_3_W":[[0.66223514,-0.1747075,-0.50954103,0.29728493,-0.46075493,0.13727571,-0.18393758,0.39366758,-0.47327036,-0.01879659,0.23903094,-0.32678747,0.30671299],[-0.28180516,0.2469839,0.22324938,-0.2998403,0.6316917,0.14390591,0.63533956,-0.254778,0.22968335,-0.3778501,-0.41270712,0.3120054,-0.44822124],[0.27459204,-0.42109582,-0.24014448,-0.592849,-0.33828726,-0.17524625,-0.42107752,-0.20445393,0.48335218,0.67310184,0.1951032,0.5667199,0.19647887]],"activation":"identity","dense_3_b":[[0.020020232],[-0.07193015],[-0.029508086]]},{"dense_4_W":[[-0.022750493,0.059219737,-1.015219]],"dense_4_b":[[0.02894119]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60604A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60604A1'.json deleted file mode 100755 index 6ef36a3b0e..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60604A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.254052],[0.9806163],[0.4231999],[0.04356696],[0.97200865],[0.97504586],[0.97775066],[0.9591673],[0.93643886],[0.9057191],[0.87526655],[0.043427564],[0.043460514],[0.04348194],[0.043345723],[0.04318236],[0.042914458],[0.042423796]],"model_test_loss":0.01540292613208294,"input_size":18,"current_date_and_time":"2023-08-14_04-58-24","input_mean":[[22.365421],[0.0019552947],[-0.026129048],[-0.010464547],[0.010480075],[0.008010973],[0.0055930708],[-0.003615944],[-0.008296312],[-0.0115947],[-0.015986588],[-0.010414467],[-0.010435414],[-0.010465159],[-0.0105609745],[-0.010642022],[-0.010804179],[-0.01103055]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.3185732],[-2.5867317],[-2.4119403],[0.28416687],[-0.02702185],[-0.16531649],[-1.1527723]],"dense_1_W":[[-0.022257918,0.8040401,1.287335,-0.23689313,0.4893548,0.8433865,-1.0691862,0.36647147,-0.24386124,-0.13633506,0.07477291,0.35244244,-0.43019938,-0.6580194,1.0880467,0.6347402,-0.6914378,-0.037980463],[-0.56894374,-1.8446071,-0.21028358,-0.47825742,0.16942668,-0.94593054,0.7141977,-0.758547,-0.13884988,0.05721294,0.30957872,-0.33949006,0.0921146,0.3615484,0.45655683,0.082172595,-0.034271725,-0.09097419],[-0.57559276,1.5042158,0.20520714,0.51569813,-0.5431699,1.0341207,-0.09032631,0.61960757,0.2701506,-0.12109735,-0.30678055,0.3720596,-0.1883834,-0.13189395,-0.6962025,-0.23011449,0.23485538,0.07106131],[1.9175196,-0.06870724,-0.009685604,-0.58994263,-0.77743906,3.5469222,-1.9311298,-1.4536422,0.6789666,0.19781737,0.060366552,0.70214975,0.28552058,-0.94600236,-0.61913157,-0.25661743,0.2521842,0.38764063],[0.015907988,-1.8861995,-0.12928374,-0.5463564,0.70329434,-0.4612843,-0.5395861,-0.92044824,-0.56931007,0.18662772,0.5002842,-0.6624107,0.047241144,0.21043116,0.9085904,0.34524617,0.17921534,-0.5345244],[-1.9607425,-0.17032151,-0.002710183,-0.49269548,0.46140772,1.5506655,-1.4574836,-0.75262254,0.28762928,0.4009911,-0.041949093,0.4422491,0.080314584,-0.4521053,-0.95743835,0.08831782,0.12635101,0.36157072],[-0.17528914,0.014480862,9.194567,-0.027118178,0.21340506,0.25479296,-0.08499456,-0.3819038,-0.08245096,0.14458492,0.012424778,0.1363471,-0.2180041,0.12804921,-0.06768428,-0.14581227,0.28676355,-0.40200242]],"activation":"σ"},{"dense_2_W":[[-0.13735515,-0.36693308,0.31717214,-0.16753168,-0.5315297,0.06383681,0.16398782],[0.5107664,-0.41147742,0.23399776,0.12284709,0.52509624,0.26873505,-0.84280556],[-0.5975781,-0.13184041,-0.43245456,-0.19741607,0.24153347,0.23864448,0.06348907],[0.44337207,-0.14361665,0.30699468,0.24923041,-0.5986253,0.55096453,-0.21386127],[-1.0883859,0.18649225,-0.14793696,-1.1706864,-0.18842566,0.8806919,-1.1581444],[-0.5192367,0.63482714,-0.30454943,-0.74983114,0.76898384,-0.29513043,-0.23884358],[-0.16692421,0.085194685,-0.57313204,-0.52969104,-0.35271636,-1.3866607,1.0940571],[-0.36982897,0.1070417,-0.7242904,-0.21129967,0.85419685,-0.09256855,-0.12815432],[0.37570813,-0.4983966,0.25351462,-0.5352563,-0.885784,0.38207167,0.55912787],[-0.17706849,-1.1736196,0.78014624,0.64170426,-1.0116245,0.13409959,0.2723705],[0.03780842,0.36266404,-0.056093358,0.700982,0.25742763,-0.730712,-0.10212599],[-0.043599892,-0.896462,0.67346543,0.49555147,-1.0908926,0.36215103,0.34307495],[-0.17067212,-0.19787733,0.29983255,-0.04538142,-0.62211144,0.052005216,-0.114241906]],"activation":"σ","dense_2_b":[[-0.17325053],[0.06832358],[-0.13694412],[-0.0011346783],[-0.34375873],[0.09270055],[-0.21357837],[0.020085877],[-0.38013837],[-0.26146224],[0.28615406],[-0.21359953],[-0.09619647]]},{"dense_3_W":[[-0.038358208,-0.31359997,0.20052825,-0.560843,0.7097384,0.6719386,0.36616954,0.36791024,-0.2366012,-0.4499782,0.6078685,-0.6232705,-0.3668057],[0.16431291,0.039036777,-0.11336356,-0.427402,0.681554,0.11661078,0.24273938,0.17969954,-0.42864278,-0.5946742,-0.076663315,-0.23562627,0.17208236],[-0.4079696,0.60386187,-0.0019695666,-0.55016863,-0.15872847,-0.4558569,-0.19035904,-0.2832483,-0.5238773,0.42874604,0.13831717,0.07666673,0.6144315]],"activation":"identity","dense_3_b":[[0.05688099],[0.09056785],[0.068805546]]},{"dense_4_W":[[-0.9861829,-0.23317513,-0.07935023]],"dense_4_b":[[-0.055984028]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60804A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60804A1'.json deleted file mode 100755 index 0b94ed5748..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60804A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.714143],[0.9927753],[0.42477676],[0.03973602],[0.9727292],[0.9798503],[0.98615247],[0.97174776],[0.9597771],[0.9394966],[0.9168747],[0.03964375],[0.039681226],[0.039701194],[0.039581764],[0.03947426],[0.039269768],[0.039058764]],"model_test_loss":0.013159733265638351,"input_size":18,"current_date_and_time":"2023-08-14_05-25-10","input_mean":[[23.218801],[-0.033690505],[0.0024943613],[-0.0032879899],[-0.03312757],[-0.033911895],[-0.034462307],[-0.03274429],[-0.03286793],[-0.032002535],[-0.030374872],[-0.0032268409],[-0.0032460035],[-0.0032604784],[-0.0032413462],[-0.0033537117],[-0.003547709],[-0.0038500645]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.7959027],[0.55505973],[-2.3768406],[-0.16383298],[-1.7668463],[-0.4719505],[0.8295408]],"dense_1_W":[[1.0514657,0.4917108,6.960775,0.040523,-0.8114545,-0.42457384,-1.5367419,0.18918777,0.37774196,-0.3243656,-0.40481222,0.39827186,0.41831338,-0.6198045,0.4753863,0.48323017,-0.06107707,-0.16029453],[0.15152642,-2.5568774,-0.001119578,0.028153164,0.5115196,-0.57825077,0.49559352,-0.05674371,-0.0267328,-0.046980154,0.10357833,-0.18090251,-0.26617435,0.29677737,0.7249489,-0.03468213,-0.005596551,-0.18188117],[-1.5674329,-0.4283582,1.070279,-1.1344318,1.4361267,1.2410127,-1.8508538,0.25674936,0.4047672,-0.51887536,0.45543274,0.3743945,0.40804172,-0.96260333,1.0525509,0.5583048,0.18581861,-0.49588192],[-0.4904594,0.052873794,-0.54584765,-0.6538562,0.33124956,0.3054544,-1.2273709,-0.04424467,0.07750318,-0.052387144,0.023881147,0.7269529,0.48401436,-0.44175398,-0.3785952,-0.19174287,-0.05213665,0.36695448],[-1.3100109,0.08232854,-0.8303036,0.92385757,-0.83452135,-0.93788815,1.2850705,0.0645516,-0.5059019,0.36357152,-0.27048874,-0.8359992,0.10816168,0.91588885,-0.93813425,-0.54902464,0.11485201,0.2426489],[-0.27612093,0.5894454,6.7886415,-0.42007807,0.8136479,0.48477572,-0.015306809,0.33938614,0.8966847,0.118165955,-2.203581,0.19513792,0.51539826,-0.080586016,0.2052024,-0.5273732,-0.1945807,0.35707137],[0.25792342,1.6364664,-0.001792033,0.22856699,-0.13199906,0.77897304,-0.0359948,-0.20382008,0.035235707,0.025847819,0.08331019,0.11043304,-0.07570084,-0.11650494,-0.47634286,-0.33599797,0.118242994,0.15796357]],"activation":"σ"},{"dense_2_W":[[0.5116447,-0.092584796,-0.10705274,-0.17041756,-0.14934607,-0.12380058,-0.057289656],[-0.22088462,1.2812711,-0.46391612,-0.3160566,0.76806194,-0.5649681,-0.7918618],[0.045260437,-1.6188258,0.68774945,0.020580687,0.1319073,0.50655997,0.10069625],[-0.028886491,-0.22777122,-0.09551939,-0.4077626,-0.44366226,0.27823326,-0.3208229],[-0.7618065,-0.5159872,-0.7606131,0.15979978,-0.03456325,0.005977178,-0.45774835],[0.6098429,-0.79085386,-0.18997884,-0.008630259,-0.81565344,0.6787126,1.1412653],[-0.06353774,-0.79416084,0.293484,-0.120535955,-0.25111738,-0.113088645,-0.19914077],[0.2501803,-1.7164524,0.696637,-0.5307749,0.5375581,0.4207089,0.35805798],[-0.071142145,-0.6921994,0.23711675,0.17744231,0.16084164,-0.30682364,0.16035682],[0.9792056,-0.37842458,0.935338,-0.038432624,0.91073805,0.69246453,0.37750706],[0.396947,0.3347981,-0.5091141,-0.5149633,0.1858322,0.29677188,-0.43474185],[0.3491485,0.29401642,-0.36790296,0.42044657,-0.53512317,0.058706686,-0.50015694],[-0.4911135,0.646846,0.18155076,-0.2229118,0.31506446,0.36774144,-0.82843393]],"activation":"σ","dense_2_b":[[-0.03162165],[0.04077409],[-0.30135295],[-0.023840334],[-0.25210667],[0.012809456],[-0.23830907],[-0.36270756],[-0.10388676],[0.07296503],[-0.051522776],[-0.041601982],[-0.09325582]]},{"dense_3_W":[[-0.5250345,-0.22525242,0.2523494,0.3467854,0.015721213,-0.52880615,-0.24200426,0.5264877,-0.34023857,0.417793,0.018722747,-0.5499491,-0.30318102],[-0.19100182,0.2990618,-0.1496899,0.34770057,-0.08324218,0.5929635,0.57089233,0.1725288,0.56539565,-0.1898713,-0.5954888,-0.25292823,-0.49786177],[-0.0627163,0.61702037,-0.6596768,0.461395,-0.20111923,-0.6267803,0.3331113,-0.25044763,0.055209983,0.20798822,0.056768,-0.055646416,0.08195084]],"activation":"identity","dense_3_b":[[-0.007629902],[-0.0233827],[0.022168329]]},{"dense_4_W":[[0.20391291,1.0325449,-1.0948162]],"dense_4_b":[[-0.023781778]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_ARTEON_MK1.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_ARTEON_MK1.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_ATLAS_MK1.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_ATLAS_MK1.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_GOLF_MK7.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_GOLF_MK7.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_JETTA_MK7.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_JETTA_MK7.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_PASSAT_MK8.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_PASSAT_MK8.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT NMS.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_PASSAT_NMS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT NMS.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_PASSAT_NMS.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_TIGUAN_MK2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_TIGUAN_MK2.json From 1c0bf1808416cef566089a1a06f28325d3cf0f33 Mon Sep 17 00:00:00 2001 From: DevTekVE Date: Mon, 13 May 2024 12:32:17 +0000 Subject: [PATCH 596/599] Refactor manage_athenad to make it more generic --- selfdrive/athena/manage_athenad.py | 17 ++++++----- selfdrive/athena/manage_sunnylinkd.py | 41 ++------------------------- 2 files changed, 12 insertions(+), 46 deletions(-) diff --git a/selfdrive/athena/manage_athenad.py b/selfdrive/athena/manage_athenad.py index 2ec92cc3e0..cda1c95cf7 100755 --- a/selfdrive/athena/manage_athenad.py +++ b/selfdrive/athena/manage_athenad.py @@ -13,8 +13,12 @@ ATHENA_MGR_PID_PARAM = "AthenadPid" def main(): + manage_athenad("DongleId", ATHENA_MGR_PID_PARAM, 'athenad', 'selfdrive.athena.athenad') + + +def manage_athenad(dongle_id_param, pid_param, process_name, target): params = Params() - dongle_id = params.get("DongleId").decode('utf-8') + dongle_id = params.get(dongle_id_param).decode('utf-8') build_metadata = get_build_metadata() cloudlog.bind_global(dongle_id=dongle_id, @@ -27,17 +31,16 @@ def main(): try: while 1: - cloudlog.info("starting athena daemon") - proc = Process(name='athenad', target=launcher, args=('selfdrive.athena.athenad', 'athenad')) + cloudlog.info(f"starting {process_name} daemon") + proc = Process(name=process_name, target=launcher, args=(target, process_name)) proc.start() proc.join() - cloudlog.event("athenad exited", exitcode=proc.exitcode) + cloudlog.event(f"{process_name} exited", exitcode=proc.exitcode) time.sleep(5) except Exception: - cloudlog.exception("manage_athenad.exception") + cloudlog.exception(f"manage_{process_name}.exception") finally: - params.remove(ATHENA_MGR_PID_PARAM) - + params.remove(pid_param) if __name__ == '__main__': main() diff --git a/selfdrive/athena/manage_sunnylinkd.py b/selfdrive/athena/manage_sunnylinkd.py index 788d9fdf5e..b778bb1497 100755 --- a/selfdrive/athena/manage_sunnylinkd.py +++ b/selfdrive/athena/manage_sunnylinkd.py @@ -1,42 +1,5 @@ #!/usr/bin/env python3 -#TODO: Add this to files_common to allow release to public - -import time -from multiprocessing import Process - -from openpilot.common.params import Params -from openpilot.selfdrive.manager.process import launcher -from openpilot.common.swaglog import cloudlog -from openpilot.system.hardware import HARDWARE -from openpilot.system.version import get_version, get_normalized_origin, get_short_branch, get_commit, is_dirty - -SUNNYLINK_MGR_PID_PARAM = "SunnylinkdPid" - - -def main(): - params = Params() - dongle_id = params.get("SunnylinkDongleId").decode('utf-8') - cloudlog.bind_global(dongle_id=dongle_id, - version=get_version(), - origin=get_normalized_origin(), - branch=get_short_branch(), - commit=get_commit(), - dirty=is_dirty(), - device=HARDWARE.get_device_type()) - - try: - while 1: - cloudlog.info("starting athena daemon") - proc = Process(name='sunnylinkd', target=launcher, args=('selfdrive.athena.sunnylinkd', 'sunnylinkd')) - proc.start() - proc.join() - cloudlog.event("sunnylinkd exited", exitcode=proc.exitcode) - time.sleep(5) - except Exception: - cloudlog.exception("manage_sunnylinkd.exception") - finally: - params.remove(SUNNYLINK_MGR_PID_PARAM) - +from selfdrive.athena.manage_athenad import manage_athenad if __name__ == '__main__': - main() + manage_athenad("SunnylinkDongleId", "SunnylinkdPid", 'sunnylinkd', 'selfdrive.athena.sunnylinkd') From 755c39b2fdea9cccae3e7da45bff0b45d8a8b443 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 15 May 2024 22:25:53 -0400 Subject: [PATCH 597/599] Revert "[$100 bounty] mapsd: switch to static render mode (#32118)" This reverts commit 3c69fcddc80327919b097c26a25017f8e11f28b0. --- selfdrive/navd/map_renderer.cc | 42 ++++++++++------------- selfdrive/navd/map_renderer.h | 2 -- selfdrive/navd/tests/test_map_renderer.py | 2 +- 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/selfdrive/navd/map_renderer.cc b/selfdrive/navd/map_renderer.cc index 1e57ad3e7c..d52ee162bd 100644 --- a/selfdrive/navd/map_renderer.cc +++ b/selfdrive/navd/map_renderer.cc @@ -41,8 +41,6 @@ MapRenderer::MapRenderer(const QMapLibre::Settings &settings, bool online) : m_s QSurfaceFormat fmt; fmt.setRenderableType(QSurfaceFormat::OpenGLES); - m_settings.setMapMode(QMapLibre::Settings::MapMode::Static); - ctx = std::make_unique(); ctx->setFormat(fmt); ctx->create(); @@ -89,18 +87,6 @@ MapRenderer::MapRenderer(const QMapLibre::Settings &settings, bool online) : m_s LOGE("Map loading failed with %d: '%s'\n", err_code, reason.toStdString().c_str()); }); - QObject::connect(m_map.data(), &QMapLibre::Map::staticRenderFinished, [=](const QString &error) { - rendering = false; - - if (!error.isEmpty()) { - LOGE("Static map rendering failed with error: '%s'\n", error.toStdString().c_str()); - } else if (vipc_server != nullptr) { - double end_render_t = millis_since_boot(); - publish((end_render_t - start_render_t) / 1000.0, true); - last_llk_rendered = (*sm)["liveLocationKalman"].getLogMonoTime(); - } - }); - if (online) { vipc_server.reset(new VisionIpcServer("navd")); vipc_server->create_buffers(VisionStreamType::VISION_STREAM_MAP, NUM_VIPC_BUFFERS, false, WIDTH, HEIGHT); @@ -128,16 +114,22 @@ void MapRenderer::msgUpdate() { float bearing = RAD2DEG(orientation.getValue()[2]); updatePosition(get_point_along_line(pos.getValue()[0], pos.getValue()[1], bearing, MAP_OFFSET), bearing); - if (!rendering) { + // TODO: use the static rendering mode instead + // retry render a few times + for (int i = 0; i < 5 && !rendered(); i++) { + QApplication::processEvents(QEventLoop::AllEvents, 100); update(); + if (rendered()) { + LOGW("rendered after %d retries", i+1); + break; + } } + // fallback to sending a blank frame if (!rendered()) { publish(0, false); } } - - } if (sm->updated("navRoute")) { @@ -165,9 +157,7 @@ void MapRenderer::updatePosition(QMapLibre::Coordinate position, float bearing) m_map->setCoordinate(position); m_map->setBearing(bearing); m_map->setZoom(zoom); - if (!rendering) { - update(); - } + update(); } bool MapRenderer::loaded() { @@ -175,10 +165,16 @@ bool MapRenderer::loaded() { } void MapRenderer::update() { - rendering = true; + double start_t = millis_since_boot(); gl_functions->glClear(GL_COLOR_BUFFER_BIT); - start_render_t = millis_since_boot(); - m_map->startStaticRender(); + m_map->render(); + gl_functions->glFlush(); + double end_t = millis_since_boot(); + + if ((vipc_server != nullptr) && loaded()) { + publish((end_t - start_t) / 1000.0, true); + last_llk_rendered = (*sm)["liveLocationKalman"].getLogMonoTime(); + } } void MapRenderer::sendThumbnail(const uint64_t ts, const kj::Array &buf) { diff --git a/selfdrive/navd/map_renderer.h b/selfdrive/navd/map_renderer.h index 7a3d2c316b..fd5922b668 100644 --- a/selfdrive/navd/map_renderer.h +++ b/selfdrive/navd/map_renderer.h @@ -43,10 +43,8 @@ private: void initLayers(); - double start_render_t; uint32_t frame_id = 0; uint64_t last_llk_rendered = 0; - bool rendering = false; bool rendered() { return last_llk_rendered == (*sm)["liveLocationKalman"].getLogMonoTime(); } diff --git a/selfdrive/navd/tests/test_map_renderer.py b/selfdrive/navd/tests/test_map_renderer.py index 832e0d1eab..7d5a4c297f 100755 --- a/selfdrive/navd/tests/test_map_renderer.py +++ b/selfdrive/navd/tests/test_map_renderer.py @@ -136,7 +136,7 @@ class TestMapRenderer(unittest.TestCase): invalid_and_not_previously_valid = (expect_valid and not self.sm.valid['mapRenderState'] and not prev_valid) valid_and_not_previously_invalid = (not expect_valid and self.sm.valid['mapRenderState'] and prev_valid) - if (invalid_and_not_previously_valid or valid_and_not_previously_invalid) and frames_since_test_start < 20: + if (invalid_and_not_previously_valid or valid_and_not_previously_invalid) and frames_since_test_start < 5: continue # check output From d959c43284eb31a68616afbf4c4e8d5844963bfc Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 16 May 2024 00:12:17 -0400 Subject: [PATCH 598/599] Longitudinal: Use upstream button timer to toggle between Chill & Experimental Mode --- selfdrive/car/chrysler/interface.py | 2 +- selfdrive/car/ford/interface.py | 2 +- selfdrive/car/gm/interface.py | 2 +- selfdrive/car/hyundai/interface.py | 2 +- selfdrive/car/interfaces.py | 18 +----------------- selfdrive/car/mazda/interface.py | 2 +- selfdrive/car/nissan/interface.py | 2 +- selfdrive/car/toyota/interface.py | 2 +- selfdrive/controls/controlsd.py | 5 ++++- selfdrive/controls/lib/drive_helpers.py | 19 ++++++++++++++++++- 10 files changed, 30 insertions(+), 26 deletions(-) diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 7b221595c9..8ca6668b30 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -141,7 +141,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index ed35d1ba43..5d6fa7dde4 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -104,7 +104,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) if self.CS.out.madsEnabled != self.CS.madsEnabled: if self.mads_event_lock: diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 465109eb4c..7787fabb02 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -251,7 +251,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(distance_button)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index c5a83fcbed..d06cdbd209 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -239,7 +239,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) ret.cruiseState.enabled = False if self.CP.pcmCruise else self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=(self.CS.cruise_buttons[-1] == 3)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index fc9715cb82..036e7ba2d5 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -593,7 +593,7 @@ class CarInterfaceBase(ABC): else: return CS.madsEnabled - def get_sp_common_state(self, cs_out, CS, min_enable_speed_pcm=False, gear_allowed=True, gap_button=False): + def get_sp_common_state(self, cs_out, CS, min_enable_speed_pcm=False, gear_allowed=True): cs_out.cruiseState.enabled = CS.accEnabled if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed or min_enable_speed_pcm else \ cs_out.cruiseState.enabled @@ -603,9 +603,6 @@ class CarInterfaceBase(ABC): elif not cs_out.cruiseState.enabled and CS.out.cruiseState.enabled: CS.madsEnabled = False - if self.CP.openpilotLongitudinalControl: - self.toggle_exp_mode(gap_button) - cs_out.belowLaneChangeSpeed = cs_out.vEgo < LANE_CHANGE_SPEED_MIN and self.below_speed_pause if cs_out.gearShifter in [GearShifter.park, GearShifter.reverse] or cs_out.doorOpen or \ @@ -631,19 +628,6 @@ class CarInterfaceBase(ABC): return cs_out, CS - # TODO: SP: use upstream's buttonEvents counter checks from controlsd - def toggle_exp_mode(self, gap_pressed): - if gap_pressed: - if not self.experimental_mode_hold: - self.gap_button_counter += 1 - if self.gap_button_counter > 50: - self.gap_button_counter = 0 - self.experimental_mode_hold = True - self.param_s.put_bool_nonblocking("ExperimentalMode", not self.experimental_mode) - else: - self.gap_button_counter = 0 - self.experimental_mode_hold = False - def create_sp_events(self, CS, cs_out, events, main_enabled=False, allow_enable=True, enable_pressed=False, enable_from_brake=False, enable_pressed_long=False, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise)): diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 8d49218b02..2d6b68f9e1 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -77,7 +77,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 878d8f14c0..4416299230 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -51,7 +51,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) ret.cruiseState.enabled = False if self.CP.pcmCruise else self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.distance_button)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # CANCEL if self.CS.out.cruiseState.enabled and not ret.cruiseState.enabled: diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index 38f4753c47..51d76dece0 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -224,7 +224,7 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise: ret.cruiseState.enabled = self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(distance_button)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # CANCEL if self.CS.out.cruiseState.enabled and not ret.cruiseState.enabled: diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 32407f97a0..ff927f563c 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -760,9 +760,12 @@ class Controls: # decrement personality on distance button press if self.CP.openpilotLongitudinalControl: - if any(not be.pressed and be.type == ButtonType.gapAdjustCruise for be in CS.buttonEvents): + if self.v_cruise_helper.update_personality: self.personality = (self.personality - 1) % 3 self.params.put_nonblocking('LongitudinalPersonality', str(self.personality)) + if self.v_cruise_helper.update_experimental_mode: + self.experimental_mode = not self.experimental_mode + self.params.put_bool_nonblocking('ExperimentalMode', self.experimental_mode) return CC, lac_log diff --git a/selfdrive/controls/lib/drive_helpers.py b/selfdrive/controls/lib/drive_helpers.py index 61edf7aade..0c80d186e5 100644 --- a/selfdrive/controls/lib/drive_helpers.py +++ b/selfdrive/controls/lib/drive_helpers.py @@ -75,7 +75,7 @@ class VCruiseHelper: self.v_cruise_kph = V_CRUISE_UNSET self.v_cruise_cluster_kph = V_CRUISE_UNSET self.v_cruise_kph_last = 0 - self.button_timers = {ButtonType.decelCruise: 0, ButtonType.accelCruise: 0} + self.button_timers = {ButtonType.decelCruise: 0, ButtonType.accelCruise: 0, ButtonType.gapAdjustCruise: 0} self.button_change_states = {btn: {"standstill": False, "enabled": False} for btn in self.button_timers} self.is_metric_prev = None @@ -84,6 +84,9 @@ class VCruiseHelper: self.slc_state_prev = SpeedLimitControlState.inactive self.slc_speed_limit_offsetted = 0 + self.update_personality = False + self.update_experimental_mode = False + @property def v_cruise_initialized(self): return self.v_cruise_kph != V_CRUISE_UNSET @@ -120,6 +123,8 @@ class VCruiseHelper: long_press = False button_type = None + update_personality = False + update_experimental_mode = False v_cruise_delta = 1. if is_metric else IMPERIAL_INCREMENT v_cruise_delta_mltplr = 10 if is_metric else 5 @@ -140,6 +145,15 @@ class VCruiseHelper: if button_type is None: return + if button_type == ButtonType.gapAdjustCruise and self.button_timers[ButtonType.gapAdjustCruise]: + if self.button_timers[ButtonType.gapAdjustCruise] < 50: + update_personality = True + elif self.button_timers[ButtonType.gapAdjustCruise] == 50: + update_experimental_mode = True + + self.update_personality = update_personality + self.update_experimental_mode = update_experimental_mode + resume_button = ButtonType.accelCruise if not self.CP.pcmCruiseSpeed: if self.CP.carName == "chrysler": @@ -154,6 +168,9 @@ class VCruiseHelper: if not self.button_change_states[button_type]["enabled"]: return + if button_type == ButtonType.gapAdjustCruise: + return + pressed_value = (1 if long_press else v_cruise_delta_mltplr) if reverse_acc else (v_cruise_delta_mltplr if long_press else 1) long_press_state = not long_press if reverse_acc else long_press v_cruise_delta = v_cruise_delta * pressed_value From 2efdba4daf2aac31547073ba616b390bd69c409e Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 16 May 2024 00:37:40 -0400 Subject: [PATCH 599/599] Update CHANGELOGS.md --- CHANGELOGS.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 7c1746f90e..6b0b3bf2bf 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -1,10 +1,13 @@ -sunnypilot - 0.9.7.0 (2024-xx-xx) +sunnypilot - 0.9.7.0 (2024-05-xx) ======================== * New driving model -* Support for many hybrid Ford models +* Adjust driving personality with the follow distance button +* Support for hybrid variants of supported Ford models +* Added toggle to enable driver monitoring even when openpilot is not engaged +* Fingerprinting without the OBD-II port on all cars ************************ * UPDATED: Synced with commaai's openpilot - * master commit 56e343b (February 27, 2024) + * master commit 2e6b2ef (May 9, 2024) * NEW❗: sunnylink (Alpha early access) * NEW❗: Config Backup * Remotely back up and restore sunnypilot settings easily @@ -24,8 +27,20 @@ sunnypilot - 0.9.7.0 (2024-xx-xx) * RE-ENABLED: Map-based Turn Speed Control (M-TSC) for supported platforms * openpilot Longitudianl Control available cars * Custom Stock Longitudinal Control available cars +* UPDATED: Driving Model Selector v4 + * NEW❗: Driving Model additions + * North Dakota (April 29, 2024) - NDv2 + * WD40 (April 09, 2024) - WD40 + * Duck Amigo (March 18, 2024) - DA + * Recertified Herbalist (March 01, 2024) - CHLR + * Legacy Driving Models with Navigate on openpilot (NoO) support + * Includes Duck Amigo and all preceding models * UPDATED: Reset Mapbox Access Token -> Reset Access Tokens for Map Services * Reset self-service access tokens for Mapbox, Amap, and Google Maps +* UPDATED: Upstream native support for Gap Adjust Cruise +* UPDATED: Neural Network Lateral Control (NNLC) + * Due to upstream changes with platform simplifications, most platforms will match and fallback to combined platform model + * This will be updated when the new mapping of platforms are restructured (thanks @twilsconso 😉) * UI Updates * Display Metrics Below Chevron * NEW❗: Metrics is now being displayed below the chevron instead of above