VW MQB: Misc bugfixes and cleanup (#20540)

* Add LDW->SWA signal pass-through

* GC currently unused ACC_06 and LDW_02 signal data

* Split out Jetta GLI

* Pass in camera CAN parser now that we use it

* GC unused CarController param, camelCase->PEP8

* CAN valid should pass for VW now

* update refs

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
pull/20489/head
Jason Young 4 years ago committed by GitHub
parent 0adfc931b9
commit e181fd7f0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      README.md
  2. 8
      selfdrive/car/volkswagen/carcontroller.py
  3. 19
      selfdrive/car/volkswagen/carstate.py
  4. 3
      selfdrive/car/volkswagen/interface.py
  5. 23
      selfdrive/car/volkswagen/volkswagencan.py
  6. 2
      selfdrive/test/process_replay/ref_commit
  7. 1
      selfdrive/test/test_models.py

@ -183,7 +183,8 @@ Community Maintained Cars and Features
| Volkswagen| Golf GTI 2018-19 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf R 2016-19 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Golf SportsVan 2016 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Jetta 2018-21 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Jetta 2018-20 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Jetta GLI 2021 | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Passat 2016-17<sup>2</sup> | Driver Assistance | Stock | 0mph | 0mph |
| Volkswagen| Tiguan 2020 | Driver Assistance | Stock | 0mph | 0mph |

@ -20,7 +20,7 @@ class CarController():
self.steer_rate_limited = False
def update(self, enabled, CS, frame, actuators, visual_alert, audible_alert, leftLaneVisible, rightLaneVisible):
def update(self, enabled, CS, frame, actuators, visual_alert, left_lane_visible, right_lane_visible):
""" Controls thread """
P = CarControllerParams
@ -118,8 +118,10 @@ class CarController():
hud_alert = MQB_LDW_MESSAGES["none"]
can_sends.append(volkswagencan.create_mqb_hud_control(self.packer_pt, CANBUS.pt, hcaEnabled,
CS.out.steeringPressed, hud_alert, leftLaneVisible,
rightLaneVisible))
CS.out.steeringPressed, hud_alert, left_lane_visible,
right_lane_visible, CS.ldw_lane_warning_left,
CS.ldw_lane_warning_right, CS.ldw_side_dlc_tlc,
CS.ldw_dlc, CS.ldw_tlc))
#--------------------------------------------------------------------------
# #

@ -16,7 +16,7 @@ class CarState(CarStateBase):
self.shifter_values = can_define.dv["EV_Gearshift"]['GearPosition']
self.buttonStates = BUTTON_STATES.copy()
def update(self, pt_cp, trans_type):
def update(self, pt_cp, cam_cp, trans_type):
ret = car.CarState.new_message()
# Update vehicle speed and acceleration from ABS wheel speeds.
ret.wheelSpeeds.fl = pt_cp.vl["ESP_19"]['ESP_VL_Radgeschw_02'] * CV.KPH_TO_MS
@ -83,6 +83,14 @@ class CarState(CarStateBase):
ret.leftBlindspot = bool(pt_cp.vl["SWA_01"]["SWA_Infostufe_SWA_li"]) or bool(pt_cp.vl["SWA_01"]["SWA_Warnung_SWA_li"])
ret.rightBlindspot = bool(pt_cp.vl["SWA_01"]["SWA_Infostufe_SWA_re"]) or bool(pt_cp.vl["SWA_01"]["SWA_Warnung_SWA_re"])
# Consume factory LDW data relevant for factory SWA (Lane Change Assist)
# and capture it for forwarding to the blind spot radar controller
self.ldw_lane_warning_left = bool(cam_cp.vl["LDW_02"]["LDW_SW_Warnung_links"])
self.ldw_lane_warning_right = bool(cam_cp.vl["LDW_02"]["LDW_SW_Warnung_rechts"])
self.ldw_side_dlc_tlc = bool(cam_cp.vl["LDW_02"]["LDW_Seite_DLCTLC"])
self.ldw_dlc = cam_cp.vl["LDW_02"]["LDW_DLC"]
self.ldw_tlc = cam_cp.vl["LDW_02"]["LDW_TLC"]
# Stock FCW is considered active if the release bit for brake-jerk warning
# is set. Stock AEB considered active if the partial braking or target
# braking release bits are set.
@ -180,8 +188,6 @@ class CarState(CarStateBase):
("KBI_Handbremse", "Kombi_01", 0), # Manual handbrake applied
("TSK_Status", "TSK_06", 0), # ACC engagement status from drivetrain coordinator
("TSK_Fahrzeugmasse_02", "Motor_16", 0), # Estimated vehicle mass from drivetrain coordinator
("ACC_Status_ACC", "ACC_06", 0), # ACC engagement status
("ACC_Typ", "ACC_06", 0), # ACC type (follow to stop, stop&go)
("ACC_Wunschgeschw", "ACC_02", 0), # ACC set speed
("AWV2_Freigabe", "ACC_10", 0), # FCW brake jerk release
("ANB_Teilbremsung_Freigabe", "ACC_10", 0), # AEB partial braking release
@ -210,7 +216,6 @@ class CarState(CarStateBase):
("ESP_19", 100), # From J104 ABS/ESP controller
("ESP_05", 50), # From J104 ABS/ESP controller
("ESP_21", 50), # From J104 ABS/ESP controller
("ACC_06", 50), # From J428 ACC radar control module
("ACC_10", 50), # From J428 ACC radar control module
("Motor_20", 50), # From J623 Engine control module
("TSK_06", 50), # From J623 Engine control module
@ -245,7 +250,11 @@ class CarState(CarStateBase):
signals = [
# sig_name, sig_address, default
("LDW_Status_LED_gruen", "LDW_02", 0), # Lane Assist status LED
("LDW_SW_Warnung_links", "LDW_02", 0), # Blind spot in warning mode on left side due to lane departure
("LDW_SW_Warnung_rechts", "LDW_02", 0), # Blind spot in warning mode on right side due to lane departure
("LDW_Seite_DLCTLC", "LDW_02", 0), # Direction of most likely lane departure (left or right)
("LDW_DLC", "LDW_02", 0), # Lane departure, distance to line crossing
("LDW_TLC", "LDW_02", 0), # Lane departure, time to line crossing
]
checks = [

@ -127,7 +127,7 @@ class CarInterface(CarInterfaceBase):
self.cp.update_strings(can_strings)
self.cp_cam.update_strings(can_strings)
ret = self.CS.update(self.cp, self.CP.transmissionType)
ret = self.CS.update(self.cp, self.cp_cam, self.CP.transmissionType)
ret.canValid = self.cp.can_valid and self.cp_cam.can_valid
ret.steeringRateLimited = self.CC.steer_rate_limited if self.CC is not None else False
@ -167,7 +167,6 @@ class CarInterface(CarInterfaceBase):
def apply(self, c):
can_sends = self.CC.update(c.enabled, self.CS, self.frame, c.actuators,
c.hudControl.visualAlert,
c.hudControl.audibleAlert,
c.hudControl.leftLaneVisible,
c.hudControl.rightLaneVisible)
self.frame += 1

@ -15,23 +15,26 @@ def create_mqb_steering_control(packer, bus, apply_steer, idx, lkas_enabled):
}
return packer.make_can_msg("HCA_01", bus, values, idx)
def create_mqb_hud_control(packer, bus, hca_enabled, steering_pressed, hud_alert, leftLaneVisible, rightLaneVisible):
def create_mqb_hud_control(packer, bus, hca_enabled, steering_pressed, hud_alert, left_lane_visible, right_lane_visible,
ldw_lane_warning_left, ldw_lane_warning_right, ldw_side_dlc_tlc, ldw_dlc, ldw_tlc):
if hca_enabled:
leftlanehud = 3 if leftLaneVisible else 1
rightlanehud = 3 if rightLaneVisible else 1
left_lane_hud = 3 if left_lane_visible else 1
right_lane_hud = 3 if right_lane_visible else 1
else:
leftlanehud = 2 if leftLaneVisible else 1
rightlanehud = 2 if rightLaneVisible else 1
left_lane_hud = 2 if left_lane_visible else 1
right_lane_hud = 2 if right_lane_visible else 1
values = {
"LDW_SW_Warnung_links": 0, # FIXME: to be store-and-forwarded from the stock camera
"LDW_SW_Warnung_rechts": 1, # FIXME: to be store-and-forwarded from the stock camera
"LDW_Status_LED_gelb": 1 if hca_enabled and steering_pressed else 0,
"LDW_Status_LED_gruen": 1 if hca_enabled and not steering_pressed else 0,
"LDW_Lernmodus_links": leftlanehud,
"LDW_Lernmodus_rechts": rightlanehud,
"LDW_Lernmodus_links": left_lane_hud,
"LDW_Lernmodus_rechts": right_lane_hud,
"LDW_Texte": hud_alert,
"LDW_SW_Warnung_links": ldw_lane_warning_left,
"LDW_SW_Warnung_rechts": ldw_lane_warning_right,
"LDW_Seite_DLCTLC": ldw_side_dlc_tlc,
"LDW_DLC": ldw_dlc,
"LDW_TLC": ldw_tlc
}
return packer.make_can_msg("LDW_02", bus, values)

@ -1 +1 @@
796df70c9c83a693f81e4a35d97f90dc5378ef06
28d5abf03e0e0cae5af0f3dfb78f597253046a8b

@ -22,7 +22,6 @@ ROUTES = {v['carFingerprint']: k for k, v in routes.items() if v['enableCamera']
# TODO: get updated routes for these cars
ignore_can_valid = [
"VOLKSWAGEN GOLF",
"ACURA ILX 2016 ACURAWATCH PLUS",
"TOYOTA PRIUS 2017",
"TOYOTA COROLLA 2017",

Loading…
Cancel
Save