From 61a562c717ab5e1c1b679ad716d80e3317b6b1e3 Mon Sep 17 00:00:00 2001 From: Jason Young <46612682+jyoung8607@users.noreply.github.com> Date: Tue, 30 Mar 2021 16:59:17 -0400 Subject: [PATCH] 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 old-commit-hash: e181fd7f0a9654d5d94f148d0378c5ac8be134ca --- README.md | 3 ++- selfdrive/car/volkswagen/carcontroller.py | 8 +++++--- selfdrive/car/volkswagen/carstate.py | 19 ++++++++++++++----- selfdrive/car/volkswagen/interface.py | 3 +-- selfdrive/car/volkswagen/volkswagencan.py | 23 +++++++++++++---------- selfdrive/test/process_replay/ref_commit | 2 +- selfdrive/test/test_models.py | 1 - 7 files changed, 36 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 82bf14fba3..9fb6c3836f 100644 --- a/README.md +++ b/README.md @@ -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-172 | Driver Assistance | Stock | 0mph | 0mph | | Volkswagen| Tiguan 2020 | Driver Assistance | Stock | 0mph | 0mph | diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index 5bb5dcc109..bbc2bf104b 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -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)) #-------------------------------------------------------------------------- # # diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index 0010c11e6a..c6b17865ab 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -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 = [ diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index 21721a0c02..11c8fae491 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -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 diff --git a/selfdrive/car/volkswagen/volkswagencan.py b/selfdrive/car/volkswagen/volkswagencan.py index 4d0eaec627..5fc9040f17 100644 --- a/selfdrive/car/volkswagen/volkswagencan.py +++ b/selfdrive/car/volkswagen/volkswagencan.py @@ -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) diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 8acd96e4ea..6b6c6f646d 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -796df70c9c83a693f81e4a35d97f90dc5378ef06 \ No newline at end of file +28d5abf03e0e0cae5af0f3dfb78f597253046a8b \ No newline at end of file diff --git a/selfdrive/test/test_models.py b/selfdrive/test/test_models.py index dc22edfc0e..038cb02480 100755 --- a/selfdrive/test/test_models.py +++ b/selfdrive/test/test_models.py @@ -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",