mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-18 20:03:53 +08:00
Subaru: Legacy 2020-22 support (#25313)
* Subaru: Legacy 2020 support * clean that up * force for now * update years * test route
This commit is contained in:
@@ -6,6 +6,7 @@ Version 0.8.16 (2022-XX-XX)
|
||||
* Chevrolet Bolt EUV 2022-23 support thanks to JasonJShuler!
|
||||
* Hyundai Ioniq 5 2022 support thanks to sunnyhaibin!
|
||||
* Hyundai Kona Electric 2022 support thanks to sunnyhaibin!
|
||||
* Subaru Legacy 2020-22 support thanks to martinl!
|
||||
* Subaru Outback 2020-22 support
|
||||
|
||||
Version 0.8.15 (2022-07-20)
|
||||
|
||||
@@ -19,7 +19,7 @@ A supported vehicle is one that just works when you install a comma device. Ever
|
||||
- [](##) - Limited ability to make tighter turns.
|
||||
|
||||
|
||||
# 201 Supported Cars
|
||||
# 202 Supported Cars
|
||||
|
||||
|Make|Model|Supported Package|openpilot ACC|Stop and Go|Steer to 0|Steering Torque|
|
||||
|---|---|---|:---:|:---:|:---:|:---:|
|
||||
@@ -143,6 +143,7 @@ A supported vehicle is one that just works when you install a comma device. Ever
|
||||
|Subaru|Forester 2019-21|All|[](##)|[](##)|[](##)|[](##)|
|
||||
|Subaru|Impreza 2017-19|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
|
||||
|Subaru|Impreza 2020-22|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
|
||||
|Subaru|Legacy 2020-22|All|[](##)|[](##)|[](##)|[](##)|
|
||||
|Subaru|Outback 2020-22|All|[](##)|[](##)|[](##)|[](##)|
|
||||
|Subaru|XV 2018-19|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
|
||||
|Subaru|XV 2020-21|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
|
||||
|
||||
@@ -4,7 +4,7 @@ from opendbc.can.can_define import CANDefine
|
||||
from common.conversions import Conversions as CV
|
||||
from selfdrive.car.interfaces import CarStateBase
|
||||
from opendbc.can.parser import CANParser
|
||||
from selfdrive.car.subaru.values import DBC, STEER_THRESHOLD, CAR, GLOBAL_GEN2, PREGLOBAL_CARS
|
||||
from selfdrive.car.subaru.values import DBC, CAR, GLOBAL_GEN2, PREGLOBAL_CARS
|
||||
|
||||
|
||||
class CarState(CarStateBase):
|
||||
@@ -50,7 +50,9 @@ class CarState(CarStateBase):
|
||||
ret.steeringAngleDeg = cp.vl["Steering_Torque"]["Steering_Angle"]
|
||||
ret.steeringTorque = cp.vl["Steering_Torque"]["Steer_Torque_Sensor"]
|
||||
ret.steeringTorqueEps = cp.vl["Steering_Torque"]["Steer_Torque_Output"]
|
||||
ret.steeringPressed = abs(ret.steeringTorque) > STEER_THRESHOLD[self.car_fingerprint]
|
||||
|
||||
steer_threshold = 75 if self.CP.carFingerprint in PREGLOBAL_CARS else 80
|
||||
ret.steeringPressed = abs(ret.steeringTorque) > steer_threshold
|
||||
|
||||
cp_cruise = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp
|
||||
ret.cruiseState.enabled = cp_cruise.vl["CruiseControl"]["Cruise_Activated"] != 0
|
||||
|
||||
@@ -71,7 +71,7 @@ class CarInterface(CarInterfaceBase):
|
||||
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 == CAR.OUTBACK:
|
||||
elif candidate in (CAR.OUTBACK, CAR.LEGACY):
|
||||
ret.mass = 1568. + STD_CARGO_KG
|
||||
ret.wheelbase = 2.67
|
||||
ret.centerToFront = ret.wheelbase * 0.5
|
||||
|
||||
@@ -35,6 +35,7 @@ class CAR:
|
||||
IMPREZA_2020 = "SUBARU IMPREZA SPORT 2020"
|
||||
FORESTER = "SUBARU FORESTER 2019"
|
||||
OUTBACK = "SUBARU OUTBACK 6TH GEN"
|
||||
LEGACY = "SUBARU LEGACY 7TH GEN"
|
||||
|
||||
# Pre-global
|
||||
FORESTER_PREGLOBAL = "SUBARU FORESTER 2017 - 2018"
|
||||
@@ -52,6 +53,7 @@ class SubaruCarInfo(CarInfo):
|
||||
CAR_INFO: Dict[str, Union[SubaruCarInfo, List[SubaruCarInfo]]] = {
|
||||
CAR.ASCENT: SubaruCarInfo("Subaru Ascent 2019-21", "All"),
|
||||
CAR.OUTBACK: SubaruCarInfo("Subaru Outback 2020-22", "All", harness=Harness.subaru_b),
|
||||
CAR.LEGACY: SubaruCarInfo("Subaru Legacy 2020-22", "All", harness=Harness.subaru_b),
|
||||
CAR.IMPREZA: [
|
||||
SubaruCarInfo("Subaru Impreza 2017-19"),
|
||||
SubaruCarInfo("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"),
|
||||
@@ -101,6 +103,23 @@ FW_VERSIONS = {
|
||||
b'\x01\xfe\xf7\x00\x00',
|
||||
],
|
||||
},
|
||||
CAR.LEGACY: {
|
||||
(Ecu.esp, 0x7b0, None): [
|
||||
b'\xa1\\ x04\x01',
|
||||
],
|
||||
(Ecu.eps, 0x746, None): [
|
||||
b'\x9b\xc0\x11\x00',
|
||||
],
|
||||
(Ecu.fwdCamera, 0x787, None): [
|
||||
b'\x00\x00e\x80\x00\x1f@ \x19\x00',
|
||||
],
|
||||
(Ecu.engine, 0x7e0, None): [
|
||||
b'\xde\"a0\x07',
|
||||
],
|
||||
(Ecu.transmission, 0x7e1, None): [
|
||||
b'\xa5\xf6\x05@\x00',
|
||||
],
|
||||
},
|
||||
CAR.IMPREZA: {
|
||||
(Ecu.esp, 0x7b0, None): [
|
||||
b'\x7a\x94\x3f\x90\x00',
|
||||
@@ -448,29 +467,18 @@ FW_VERSIONS = {
|
||||
},
|
||||
}
|
||||
|
||||
STEER_THRESHOLD = {
|
||||
CAR.ASCENT: 80,
|
||||
CAR.IMPREZA: 80,
|
||||
CAR.IMPREZA_2020: 80,
|
||||
CAR.FORESTER: 80,
|
||||
CAR.OUTBACK: 80,
|
||||
CAR.FORESTER_PREGLOBAL: 75,
|
||||
CAR.LEGACY_PREGLOBAL: 75,
|
||||
CAR.OUTBACK_PREGLOBAL: 75,
|
||||
CAR.OUTBACK_PREGLOBAL_2018: 75,
|
||||
}
|
||||
|
||||
DBC = {
|
||||
CAR.ASCENT: dbc_dict('subaru_global_2017_generated', None),
|
||||
CAR.IMPREZA: dbc_dict('subaru_global_2017_generated', None),
|
||||
CAR.IMPREZA_2020: dbc_dict('subaru_global_2017_generated', None),
|
||||
CAR.FORESTER: dbc_dict('subaru_global_2017_generated', None),
|
||||
CAR.OUTBACK: dbc_dict('subaru_global_2017_generated', None),
|
||||
CAR.LEGACY: dbc_dict('subaru_global_2017_generated', None),
|
||||
CAR.FORESTER_PREGLOBAL: dbc_dict('subaru_forester_2017_generated', None),
|
||||
CAR.LEGACY_PREGLOBAL: dbc_dict('subaru_outback_2015_generated', None),
|
||||
CAR.OUTBACK_PREGLOBAL: dbc_dict('subaru_outback_2015_generated', None),
|
||||
CAR.OUTBACK_PREGLOBAL_2018: dbc_dict('subaru_outback_2019_generated', None),
|
||||
}
|
||||
|
||||
GLOBAL_GEN2 = (CAR.OUTBACK, )
|
||||
GLOBAL_GEN2 = (CAR.OUTBACK, CAR.LEGACY)
|
||||
PREGLOBAL_CARS = (CAR.FORESTER_PREGLOBAL, CAR.LEGACY_PREGLOBAL, CAR.OUTBACK_PREGLOBAL, CAR.OUTBACK_PREGLOBAL_2018)
|
||||
|
||||
@@ -193,6 +193,7 @@ routes = [
|
||||
TestRoute("791340bc01ed993d|2019-03-10--16-28-08", SUBARU.IMPREZA),
|
||||
TestRoute("8bf7e79a3ce64055|2021-05-24--09-36-27", SUBARU.IMPREZA_2020),
|
||||
TestRoute("1bbe6bf2d62f58a8|2022-07-14--17-11-43", SUBARU.OUTBACK, segment=3),
|
||||
TestRoute("c56e69bbc74b8fad|2022-08-18--09-43-51", SUBARU.LEGACY, segment=3),
|
||||
# Pre-global, dashcam
|
||||
TestRoute("95441c38ae8c130e|2020-06-08--12-10-17", SUBARU.FORESTER_PREGLOBAL),
|
||||
TestRoute("df5ca7660000fba8|2020-06-16--17-37-19", SUBARU.LEGACY_PREGLOBAL),
|
||||
|
||||
@@ -69,6 +69,8 @@ VOLKSWAGEN POLO 6TH GEN: VOLKSWAGEN GOLF 7TH GEN
|
||||
SEAT LEON 3RD GEN: VOLKSWAGEN GOLF 7TH GEN
|
||||
SEAT ATECA 1ST GEN: VOLKSWAGEN GOLF 7TH GEN
|
||||
|
||||
SUBARU LEGACY 7TH GEN: SUBARU OUTBACK 6TH GEN
|
||||
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user