diff --git a/README.md b/README.md index 45fdfc5106..1aef3664a0 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,7 @@ Community Maintained Cars and Features | Nissan | Leaf 2018-192 | Propilot | Stock | 0mph | 0mph | | Nissan | Rogue 20192 | Propilot | Stock | 0mph | 0mph | | Nissan | X-Trail 20172 | Propilot | Stock | 0mph | 0mph | +| Subaru | Ascent 2019 | EyeSight | Stock | 0mph | 0mph | | Subaru | Crosstrek 2018-19 | EyeSight | Stock | 0mph | 0mph | | Subaru | Forester 2019 | EyeSight | Stock | 0mph | 0mph | | Subaru | Impreza 2017-19 | EyeSight | Stock | 0mph | 0mph | diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 3bc13c76e1..4a0438f620 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -28,6 +28,16 @@ class CarInterface(CarInterfaceBase): ret.steerRateCost = 0.7 ret.steerLimitTimer = 0.4 + if candidate == CAR.ASCENT: + ret.mass = 2031. + STD_CARGO_KG + ret.wheelbase = 2.89 + ret.centerToFront = ret.wheelbase * 0.5 + ret.steerRatio = 13.5 + ret.steerActuatorDelay = 0.3 # end-to-end angle controller + 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]] + if candidate == CAR.IMPREZA: ret.mass = 1568. + STD_CARGO_KG ret.wheelbase = 2.67 diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 791edcf6db..d31c5cfb08 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -5,10 +5,16 @@ from cereal import car Ecu = car.CarParams.Ecu class CAR: + ASCENT = "SUBARU ASCENT LIMITED 2019" IMPREZA = "SUBARU IMPREZA LIMITED 2019" FORESTER = "SUBARU FORESTER 2019" FINGERPRINTS = { + CAR.ASCENT: [ + # SUBARU ASCENT LIMITED 2019 + { + 2: 8, 64: 8, 65: 8, 72: 8, 73: 8, 280: 8, 281: 8, 290: 8, 312: 8, 313: 8, 314: 8, 315: 8, 316: 8, 326: 8, 544: 8, 545: 8, 546: 8, 552: 8, 554: 8, 557: 8, 576: 8, 577: 8, 722: 8, 801: 8, 802: 8, 805: 8, 808: 8, 811: 8, 816: 8, 826: 8, 837: 8, 838: 8, 839: 8, 842: 8, 912: 8, 915: 8, 940: 8, 1614: 8, 1617: 8, 1632: 8, 1650: 8, 1657: 8, 1658: 8, 1677: 8, 1722: 8, 1743: 8, 1759: 8, 1785: 5, 1786: 5, 1787: 5, 1788: 8 + }], CAR.IMPREZA: [{ 2: 8, 64: 8, 65: 8, 72: 8, 73: 8, 280: 8, 281: 8, 290: 8, 312: 8, 313: 8, 314: 8, 315: 8, 316: 8, 326: 8, 544: 8, 545: 8, 546: 8, 552: 8, 554: 8, 557: 8, 576: 8, 577: 8, 722: 8, 801: 8, 802: 8, 805: 8, 808: 8, 816: 8, 826: 8, 837: 8, 838: 8, 839: 8, 842: 8, 912: 8, 915: 8, 940: 8, 1614: 8, 1617: 8, 1632: 8, 1650: 8, 1657: 8, 1658: 8, 1677: 8, 1697: 8, 1722: 8, 1743: 8, 1759: 8, 1786: 5, 1787: 5, 1788: 8, 1809: 8, 1813: 8, 1817: 8, 1821: 8, 1840: 8, 1848: 8, 1924: 8, 1932: 8, 1952: 8, 1960: 8 }, @@ -27,6 +33,7 @@ FINGERPRINTS = { } STEER_THRESHOLD = { + CAR.ASCENT: 80, CAR.IMPREZA: 80, CAR.FORESTER: 80, } @@ -36,6 +43,7 @@ ECU_FINGERPRINT = { } DBC = { + CAR.ASCENT: dbc_dict('subaru_global_2017', None), CAR.IMPREZA: dbc_dict('subaru_global_2017', None), CAR.FORESTER: dbc_dict('subaru_global_2017', None), } diff --git a/selfdrive/test/test_car_models.py b/selfdrive/test/test_car_models.py index 40ff5d0352..f8e4e37454 100755 --- a/selfdrive/test/test_car_models.py +++ b/selfdrive/test/test_car_models.py @@ -360,6 +360,10 @@ routes = { 'carFingerprint': VOLKSWAGEN.GOLF, 'enableCamera': True, }, + "3c8f0c502e119c1c|2020-06-30--12-58-02": { + 'carFingerprint': SUBARU.ASCENT, + 'enableCamera': True, + }, "c321c6b697c5a5ff|2020-06-23--11-04-33": { 'carFingerprint': SUBARU.FORESTER, 'enableCamera': True,