diff --git a/CHANGELOGS-DEV.md b/CHANGELOGS-DEV.md index e36b11db5..f4717e08c 100644 --- a/CHANGELOGS-DEV.md +++ b/CHANGELOGS-DEV.md @@ -3,7 +3,9 @@ dragonpilot 0.7.10.1 * HYUNDAI_GENESIS 使用 INDI 控制器。(感謝 @donfyffe 提供) * HYUNDAI_GENESIS uses INDI controller. (Thanks to @donfyffe) * HYUNDAI_GENESIS 加入 Cruise 按紐 和 lkMode 支援。(感謝 @donfyffe 建議) -* HYUNDAI_GENESIS added Cruise button event and lkMode feature. (Thanks to @donfyffe) +* HYUNDAI_GENESIS added Cruise button event and lkMode feature. (Thanks to @donfyffe) +* 支援台灣版 2018 Huyndai IONIQ + smart MDPS (dp_hkg_smart_mdps) (感謝 @andy741217 提供) +* Support 2018 Taiwan Hyundai IONIQ + smart MDPS (dp_hkg_smart_mdps) (Thanks to @andy741217) dragonpilot 0.7.10.0 ======================== diff --git a/CHANGELOGS-REL.md b/CHANGELOGS-REL.md index 4e2519791..3accef9a3 100644 --- a/CHANGELOGS-REL.md +++ b/CHANGELOGS-REL.md @@ -21,6 +21,8 @@ dragonpilot 0.7.10.0 * HYUNDAI_GENESIS uses INDI controller. (Thanks to @donfyffe) * HYUNDAI_GENESIS 加入 Cruise 按紐 和 lkMode 支援。(感謝 @donfyffe 建議) * HYUNDAI_GENESIS added Cruise button event and lkMode feature. (Thanks to @donfyffe) +* 支援台灣版 2018 Huyndai IONIQ + smart MDPS (dp_hkg_smart_mdps) (感謝 @andy741217 提供) +* Support 2018 Taiwan Hyundai IONIQ + smart MDPS (dp_hkg_smart_mdps) (Thanks to @andy741217) dragonpilot 0.7.8 ======================== diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 8dbf45140..7ae18c060 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -1,3 +1,8 @@ +2020-11-12 (0.7.10.0) +======================== +* 支援台灣版 2018 Huyndai IONIQ + smart MDPS (dp_hkg_smart_mdps) (感謝 @andy741217 提供) +* Support 2018 Taiwan Hyundai IONIQ + smart MDPS (dp_hkg_smart_mdps) (Thanks to @andy741217) + 2020-11-05 (0.7.10.0) ======================== * HYUNDAI_GENESIS 加入 Cruise 按紐 和 lkMode 支援。(感謝 @donfyffe 建議) diff --git a/common/dp_conf.py b/common/dp_conf.py index 7d3c15d34..48f74f210 100644 --- a/common/dp_conf.py +++ b/common/dp_conf.py @@ -106,6 +106,8 @@ confs = [ {'name': 'dp_toyota_lowest_cruise_override', 'default': False, 'type': 'Bool', 'depends': [{'name': 'dp_car_detected', 'vals': ['toyota']}, {'name': 'dp_atl', 'vals': [False]}], 'conf_type': ['param', 'struct']}, {'name': 'dp_toyota_lowest_cruise_override_at', 'default': 44, 'type': 'Float32', 'depends': [{'name': 'dp_car_detected', 'vals': ['toyota']}, {'name': 'dp_toyota_lowest_cruise_override', 'vals': [True]}], 'min': 0, 'max': 255., 'conf_type': ['param', 'struct']}, {'name': 'dp_toyota_lowest_cruise_override_speed', 'default': 32, 'type': 'Float32', 'depends': [{'name': 'dp_car_detected', 'vals': ['toyota']}, {'name': 'dp_toyota_lowest_cruise_override_speed', 'vals': [True]}], 'min': 0, 'max': 255., 'conf_type': ['param', 'struct']}, + # hyundai + {'name': 'dp_hkg_smart_mdps', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, #misc {'name': 'dp_ip_addr', 'default': '', 'type': 'Text', 'conf_type': ['struct']}, {'name': 'dp_full_speed_fan', 'default': False, 'type': 'Bool', 'conf_type': ['param']}, diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index 48681e80a..e807e3e6b 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -42,7 +42,7 @@ class CarState(CarStateBase): ret.steerWarning = cp.vl["MDPS12"]['CF_Mdps_ToiUnavail'] != 0 # cruise state - ret.cruiseState.available = cp.vl["SCC11"]["MainMode_ACC"] != 0 if self.CP.carFingerprint in [CAR.HYUNDAI_GENESIS] else True + ret.cruiseState.available = cp.vl["SCC11"]["MainMode_ACC"] != 0 if self.CP.carFingerprint in [CAR.HYUNDAI_GENESIS, CAR.IONIQ] else True ret.cruiseState.enabled = cp.vl["SCC12"]['ACCMode'] != 0 ret.cruiseState.standstill = cp.vl["SCC11"]['SCCInfoDisplay'] == 4. @@ -136,7 +136,9 @@ class CarState(CarStateBase): self.steer_state = cp.vl["MDPS12"]['CF_Mdps_ToiActive'] # 0 NOT ACTIVE, 1 ACTIVE self.lead_distance = cp.vl["SCC11"]['ACC_ObjDist'] - self.lkMode = bool(cp_cam.vl["LKAS11"]["CF_Lkas_LdwsSysState"]) + lkas_state = cp_cam.vl["LKAS11"]["CF_Lkas_LdwsSysState"] + if lkas_state != 7 and self.car_fingerprint not in [CAR.SONATA,CAR.PALISADE, CAR.SANTA_FE, CAR.KONA_EV, CAR.KONA]: + self.lkMode = bool(lkas_state) return ret @staticmethod diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index efe81ec23..120ac8b62 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -5,6 +5,7 @@ from selfdrive.car.hyundai.values import Ecu, ECU_FINGERPRINT, CAR, FINGERPRINTS from selfdrive.car import STD_CARGO_KG, scale_rot_inertia, scale_tire_stiffness, is_ecu_disconnected, gen_empty_fingerprint from selfdrive.car.interfaces import CarInterfaceBase from common.dp_common import common_interface_atl, common_interface_get_params_lqr +from common.params import Params class CarInterface(CarInterfaceBase): @@ -168,6 +169,8 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.25], [0.05]] + if Params().get('dp_hkg_smart_mdps') == b'1': + ret.minSteerSpeed = 0. # dp ret = common_interface_get_params_lqr(ret) diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 6b67e84fc..682f0b700 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -3,11 +3,14 @@ from cereal import car from selfdrive.car import dbc_dict Ecu = car.CarParams.Ecu +from common.params import Params # Steer torque limits class SteerLimitParams: def __init__(self, CP): - if CP.carFingerprint in [CAR.SONATA, CAR.PALISADE]: + if CP.carFingerprint in [CAR.SONATA, CAR.PALISADE, CAR.IONIQ]: + self.STEER_MAX = 384 + elif Params().get('dp_hkg_smart_mdps') == b'1': self.STEER_MAX = 384 else: self.STEER_MAX = 255 @@ -275,7 +278,7 @@ FEATURES = { "use_elect_gears": set([CAR.KIA_OPTIMA_H, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.IONIQ]), # these cars use the FCA11 message for the AEB and FCW signals, all others use SCC12 - "use_fca": set([CAR.SONATA, CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.KIA_STINGER, CAR.IONIQ, CAR.KONA_EV, CAR.KIA_FORTE, CAR.PALISADE, CAR.GENESIS_G70, CAR.KONA]), + "use_fca": set([CAR.SONATA, CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.KIA_STINGER, CAR.KONA_EV, CAR.KIA_FORTE, CAR.PALISADE, CAR.GENESIS_G70, CAR.KONA]), "use_bsm": set([CAR.SONATA, CAR.PALISADE, CAR.HYUNDAI_GENESIS, CAR.GENESIS_G70, CAR.GENESIS_G80, CAR.GENESIS_G90, CAR.KONA]), }