From 87de29ee4712aa3b99fc9c11fe26403e732fc717 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Thu, 4 Jul 2019 15:02:27 +1000 Subject: [PATCH 1/4] lkmod from honda --- selfdrive/car/honda/carcontroller.py | 2 +- selfdrive/car/honda/carstate.py | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 3fc2915b7..0c04c7e4b 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -146,7 +146,7 @@ class CarController(object): apply_brake = int(clip(self.brake_last * BRAKE_MAX, 0, BRAKE_MAX - 1)) apply_steer = int(clip(-actuators.steer * STEER_MAX, -STEER_MAX, STEER_MAX)) - lkas_active = enabled and not CS.steer_not_allowed + lkas_active = enabled and not CS.steer_not_allowed and CS.lkMode # Send CAN commands. can_sends = [] diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index 6c0aec52a..a87441da2 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -198,6 +198,8 @@ class CarState(object): K=[[0.12287673], [0.29666309]]) self.v_ego = 0.0 + self.lkMode = True + def update(self, cp, cp_cam): # car params @@ -206,7 +208,6 @@ class CarState(object): # update prevs, update must run once per loop self.prev_cruise_buttons = self.cruise_buttons - self.prev_cruise_setting = self.cruise_setting self.prev_blinker_on = self.blinker_on self.prev_left_blinker_on = self.left_blinker_on @@ -268,6 +269,14 @@ class CarState(object): self.angle_steers = cp.vl["STEERING_SENSORS"]['STEER_ANGLE'] self.angle_steers_rate = cp.vl["STEERING_SENSORS"]['STEER_ANGLE_RATE'] + # when user presses LKAS button on steering wheel + if self.cruise_setting == 1: + if cp.vl["SCM_BUTTONS"]["CRUISE_SETTING"] == 0: + if self.lkMode: + self.lkMode = False + else: + self.lkMode = True + self.prev_cruise_setting = self.cruise_setting self.cruise_setting = cp.vl["SCM_BUTTONS"]['CRUISE_SETTING'] self.cruise_buttons = cp.vl["SCM_BUTTONS"]['CRUISE_BUTTONS'] From e355fde8bf78671842b28c7c84e562efc2a84fec Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Thu, 11 Jul 2019 09:46:04 +1000 Subject: [PATCH 2/4] add alerts for lkmode --- cereal/car.capnp | 2 ++ selfdrive/car/honda/interface.py | 6 +++++- selfdrive/controls/lib/alerts.py | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/cereal/car.capnp b/cereal/car.capnp index f30b20f97..e1c292618 100644 --- a/cereal/car.capnp +++ b/cereal/car.capnp @@ -76,6 +76,8 @@ struct CarEvent @0x9b1657f34caf3ad3 { controlsFailed @51; sensorDataInvalid @52; commIssue @53; + manualSteeringRequired @54; + manualSteeringRequiredBlinkersOn @55; } } diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index 72c85c862..0fc63b2c6 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -489,7 +489,11 @@ class CarInterface(object): # wait 1.0s before throwing the alert to avoid it popping when you turn off the car if self.cp_cam.can_invalid_cnt >= 100 and self.CS.CP.carFingerprint not in HONDA_BOSCH and self.CP.enableCamera: events.append(create_event('invalidGiraffeHonda', [ET.NO_ENTRY, ET.IMMEDIATE_DISABLE, ET.PERMANENT])) - if self.CS.steer_error: + if not self.CS.lkMode: + events.append(create_event('manualSteeringRequired', [ET.WARNING])) + elif self.CS.lkMode and (self.CS.left_blinker_on or self.CS.right_blinker_on): + events.append(create_event('manualSteeringRequiredBlinkersOn', [ET.WARNING])) + elif self.CS.steer_error: events.append(create_event('steerUnavailable', [ET.NO_ENTRY, ET.IMMEDIATE_DISABLE, ET.PERMANENT])) elif self.CS.steer_warning: events.append(create_event('steerTempUnavailable', [ET.WARNING])) diff --git a/selfdrive/controls/lib/alerts.py b/selfdrive/controls/lib/alerts.py index 4c48288d5..bf36dc915 100644 --- a/selfdrive/controls/lib/alerts.py +++ b/selfdrive/controls/lib/alerts.py @@ -661,4 +661,18 @@ ALERTS = [ "", AlertStatus.normal, AlertSize.small, Priority.LOWEST, VisualAlert.steerRequired, AudibleAlert.none, .0, .0, .1), + + Alert( + "manualSteeringRequired", + "STEERING REQUIRED: Lane Keeping OFF", + "", + AlertStatus.normal, AlertSize.small, + Priority.LOW, VisualAlert.none, AudibleAlert.none, .0, .1, .1, alert_rate=0.25), + + Alert( + "manualSteeringRequiredBlinkersOn", + "STEERING REQUIRED: Blinkers ON", + "", + AlertStatus.normal, AlertSize.small, + Priority.LOW, VisualAlert.none, AudibleAlert.none, .0, .1, .1, alert_rate=0.25), ] From b35e861262d17fc60528438cccd3103288f03c60 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Thu, 11 Jul 2019 10:16:46 +1000 Subject: [PATCH 3/4] add alerts for lkmode --- selfdrive/car/honda/carcontroller.py | 5 ++--- selfdrive/car/honda/hondacan.py | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 0c04c7e4b..4ef3f5088 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -72,7 +72,7 @@ def process_hud_alert(hud_alert): HUDData = namedtuple("HUDData", ["pcm_accel", "v_cruise", "mini_car", "car", "X4", - "lanes", "beep", "chime", "fcw", "acc_alert", "steer_required"]) + "lanes", "beep", "chime", "fcw", "acc_alert", "steer_required", "dashed_lanes"]) class CarController(object): @@ -126,8 +126,7 @@ class CarController(object): fcw_display, steer_required, acc_alert = process_hud_alert(hud_alert) hud = HUDData(int(pcm_accel), int(round(hud_v_cruise)), 1, hud_car, - 0xc1, hud_lanes, int(snd_beep), snd_chime, fcw_display, acc_alert, steer_required) - + 0xc1, hud_lanes, int(snd_beep), snd_chime, fcw_display, acc_alert, steer_required, CS.lkMode) # **** process the car messages **** # *** compute control surfaces *** diff --git a/selfdrive/car/honda/hondacan.py b/selfdrive/car/honda/hondacan.py index 3955bfdcd..d323afc8b 100644 --- a/selfdrive/car/honda/hondacan.py +++ b/selfdrive/car/honda/hondacan.py @@ -77,6 +77,7 @@ def create_ui_commands(packer, pcm_speed, hud, car_fingerprint, is_metric, idx): 'SET_ME_X48': 0x48, 'STEERING_REQUIRED': hud.steer_required, 'SOLID_LANES': hud.lanes, + 'DASHED_LANES': hud.dashed_lanes, 'BEEP': hud.beep, } commands.append(packer.make_can_msg('LKAS_HUD', bus, lkas_hud_values, idx)) From 5ab145d968d256f3c8ecbc81fa029c90d13d2de4 Mon Sep 17 00:00:00 2001 From: Rick Lan Date: Thu, 11 Jul 2019 11:21:46 +1000 Subject: [PATCH 4/4] remove unnecessary changes --- selfdrive/car/honda/carcontroller.py | 1 + selfdrive/car/honda/carstate.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 4ef3f5088..9fe6ebc99 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -127,6 +127,7 @@ class CarController(object): hud = HUDData(int(pcm_accel), int(round(hud_v_cruise)), 1, hud_car, 0xc1, hud_lanes, int(snd_beep), snd_chime, fcw_display, acc_alert, steer_required, CS.lkMode) + # **** process the car messages **** # *** compute control surfaces *** diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index a87441da2..5cfe8fae7 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -208,6 +208,7 @@ class CarState(object): # update prevs, update must run once per loop self.prev_cruise_buttons = self.cruise_buttons + self.prev_cruise_setting = self.cruise_setting self.prev_blinker_on = self.blinker_on self.prev_left_blinker_on = self.left_blinker_on @@ -276,7 +277,6 @@ class CarState(object): self.lkMode = False else: self.lkMode = True - self.prev_cruise_setting = self.cruise_setting self.cruise_setting = cp.vl["SCM_BUTTONS"]['CRUISE_SETTING'] self.cruise_buttons = cp.vl["SCM_BUTTONS"]['CRUISE_BUTTONS']