@ -1,5 +1,5 @@
from dataclasses import dataclass
from dataclasses import dataclass
from typing import Dict , List , Union
from typing import Dict , List , Optional , Union
from cereal import car
from cereal import car
from common . conversions import Conversions as CV
from common . conversions import Conversions as CV
@ -7,7 +7,7 @@ from selfdrive.car import dbc_dict
from selfdrive . car . docs_definitions import CarInfo , Harness
from selfdrive . car . docs_definitions import CarInfo , Harness
Ecu = car . CarParams . Ecu
Ecu = car . CarParams . Ecu
# Steer torque limits
class CarControllerParams :
class CarControllerParams :
ACCEL_MIN = - 3.5 # m/s
ACCEL_MIN = - 3.5 # m/s
ACCEL_MAX = 2.0 # m/s
ACCEL_MAX = 2.0 # m/s
@ -15,7 +15,9 @@ class CarControllerParams:
def __init__ ( self , CP ) :
def __init__ ( self , CP ) :
# To determine the limit for your car, find the maximum value that the stock LKAS will request.
# To determine the limit for your car, find the maximum value that the stock LKAS will request.
# If the max stock LKAS request is <384, add your car to this list.
# If the max stock LKAS request is <384, add your car to this list.
if CP . carFingerprint in ( CAR . GENESIS_G80 , CAR . GENESIS_G90 , CAR . ELANTRA , CAR . HYUNDAI_GENESIS , CAR . ELANTRA_GT_I30 , CAR . IONIQ ,
if CP . carFingerprint in HDA2_CAR :
self . STEER_MAX = 150
elif CP . carFingerprint in ( CAR . GENESIS_G80 , CAR . GENESIS_G90 , CAR . ELANTRA , CAR . HYUNDAI_GENESIS , CAR . ELANTRA_GT_I30 , CAR . IONIQ ,
CAR . IONIQ_EV_LTD , CAR . SANTA_FE_PHEV_2022 , CAR . SONATA_LF , CAR . KIA_FORTE , CAR . KIA_NIRO_HEV ,
CAR . IONIQ_EV_LTD , CAR . SANTA_FE_PHEV_2022 , CAR . SONATA_LF , CAR . KIA_FORTE , CAR . KIA_NIRO_HEV ,
CAR . KIA_OPTIMA_H , CAR . KIA_SORENTO , CAR . KIA_STINGER ) :
CAR . KIA_OPTIMA_H , CAR . KIA_SORENTO , CAR . KIA_STINGER ) :
self . STEER_MAX = 255
self . STEER_MAX = 255
@ -67,6 +69,7 @@ class CAR:
KIA_SORENTO = " KIA SORENTO GT LINE 2018 "
KIA_SORENTO = " KIA SORENTO GT LINE 2018 "
KIA_STINGER = " KIA STINGER GT2 2018 "
KIA_STINGER = " KIA STINGER GT2 2018 "
KIA_CEED = " KIA CEED INTRO ED 2019 "
KIA_CEED = " KIA CEED INTRO ED 2019 "
KIA_EV6 = " KIA EV6 2022 "
# Genesis
# Genesis
GENESIS_G70 = " GENESIS G70 2018 "
GENESIS_G70 = " GENESIS G70 2018 "
@ -81,10 +84,11 @@ class HyundaiCarInfo(CarInfo):
good_torque : bool = True
good_torque : bool = True
CAR_INFO : Dict [ str , Union [ HyundaiCarInfo , List [ HyundaiCarInfo ] ] ] = {
CAR_INFO : Dict [ str , Optional [ Union [ HyundaiCarInfo , List [ HyundaiCarInfo ] ] ] ] = {
CAR . ELANTRA : HyundaiCarInfo ( " Hyundai Elantra 2017-19 " , min_enable_speed = 19 * CV . MPH_TO_MS , harness = Harness . hyundai_b ) ,
CAR . ELANTRA : HyundaiCarInfo ( " Hyundai Elantra 2017-19 " , min_enable_speed = 19 * CV . MPH_TO_MS , harness = Harness . hyundai_b ) ,
CAR . ELANTRA_2021 : HyundaiCarInfo ( " Hyundai Elantra 2021-22 " , video_link = " https://youtu.be/_EdYQtV52-c " , harness = Harness . hyundai_k ) ,
CAR . ELANTRA_2021 : HyundaiCarInfo ( " Hyundai Elantra 2021-22 " , video_link = " https://youtu.be/_EdYQtV52-c " , harness = Harness . hyundai_k ) ,
CAR . ELANTRA_HEV_2021 : HyundaiCarInfo ( " Hyundai Elantra Hybrid 2021-22 " , video_link = " https://youtu.be/_EdYQtV52-c " , harness = Harness . hyundai_k ) ,
CAR . ELANTRA_HEV_2021 : HyundaiCarInfo ( " Hyundai Elantra Hybrid 2021-22 " , video_link = " https://youtu.be/_EdYQtV52-c " , harness = Harness . hyundai_k ) ,
CAR . ELANTRA_GT_I30 : None , # dashcamOnly and same platform as CAR.ELANTRA
CAR . HYUNDAI_GENESIS : HyundaiCarInfo ( " Hyundai Genesis 2015-16 " , min_enable_speed = 19 * CV . MPH_TO_MS , harness = Harness . hyundai_j ) ,
CAR . HYUNDAI_GENESIS : HyundaiCarInfo ( " Hyundai Genesis 2015-16 " , min_enable_speed = 19 * CV . MPH_TO_MS , harness = Harness . hyundai_j ) ,
CAR . IONIQ : HyundaiCarInfo ( " Hyundai Ioniq Hybrid 2017-19 " , harness = Harness . hyundai_c ) ,
CAR . IONIQ : HyundaiCarInfo ( " Hyundai Ioniq Hybrid 2017-19 " , harness = Harness . hyundai_c ) ,
CAR . IONIQ_HEV_2022 : HyundaiCarInfo ( " Hyundai Ioniq Hybrid 2020-22 " , " SCC + LFA " , harness = Harness . hyundai_h ) ,
CAR . IONIQ_HEV_2022 : HyundaiCarInfo ( " Hyundai Ioniq Hybrid 2020-22 " , " SCC + LFA " , harness = Harness . hyundai_h ) ,
@ -129,6 +133,7 @@ CAR_INFO: Dict[str, Union[HyundaiCarInfo, List[HyundaiCarInfo]]] = {
HyundaiCarInfo ( " Kia Optima 2017 " , min_steer_speed = 32. * CV . MPH_TO_MS , harness = Harness . hyundai_b ) ,
HyundaiCarInfo ( " Kia Optima 2017 " , min_steer_speed = 32. * CV . MPH_TO_MS , harness = Harness . hyundai_b ) ,
HyundaiCarInfo ( " Kia Optima 2019 " , harness = Harness . hyundai_g ) ,
HyundaiCarInfo ( " Kia Optima 2019 " , harness = Harness . hyundai_g ) ,
] ,
] ,
CAR . KIA_OPTIMA_H : HyundaiCarInfo ( " Kia Optima 2017, 2019 " ) , # TODO: info may be incorrect
CAR . KIA_SELTOS : HyundaiCarInfo ( " Kia Seltos 2021 " , harness = Harness . hyundai_a ) ,
CAR . KIA_SELTOS : HyundaiCarInfo ( " Kia Seltos 2021 " , harness = Harness . hyundai_a ) ,
CAR . KIA_SORENTO : [
CAR . KIA_SORENTO : [
HyundaiCarInfo ( " Kia Sorento 2018 " , video_link = " https://www.youtube.com/watch?v=Fkh3s6WHJz8 " , harness = Harness . hyundai_c ) ,
HyundaiCarInfo ( " Kia Sorento 2018 " , video_link = " https://www.youtube.com/watch?v=Fkh3s6WHJz8 " , harness = Harness . hyundai_c ) ,
@ -136,6 +141,7 @@ CAR_INFO: Dict[str, Union[HyundaiCarInfo, List[HyundaiCarInfo]]] = {
] ,
] ,
CAR . KIA_STINGER : HyundaiCarInfo ( " Kia Stinger 2018 " , video_link = " https://www.youtube.com/watch?v=MJ94qoofYw0 " , harness = Harness . hyundai_c ) ,
CAR . KIA_STINGER : HyundaiCarInfo ( " Kia Stinger 2018 " , video_link = " https://www.youtube.com/watch?v=MJ94qoofYw0 " , harness = Harness . hyundai_c ) ,
CAR . KIA_CEED : HyundaiCarInfo ( " Kia Ceed 2019 " , harness = Harness . hyundai_e ) ,
CAR . KIA_CEED : HyundaiCarInfo ( " Kia Ceed 2019 " , harness = Harness . hyundai_e ) ,
CAR . KIA_EV6 : HyundaiCarInfo ( " Kia EV6 2022 " , " All " , harness = Harness . none ) ,
# Genesis
# Genesis
CAR . GENESIS_G70 : HyundaiCarInfo ( " Genesis G70 2018 " , " All " , harness = Harness . hyundai_f ) ,
CAR . GENESIS_G70 : HyundaiCarInfo ( " Genesis G70 2018 " , " All " , harness = Harness . hyundai_f ) ,
@ -1164,6 +1170,21 @@ FW_VERSIONS = {
b ' \xf1 \x81 640F0051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 '
b ' \xf1 \x81 640F0051 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 '
] ,
] ,
} ,
} ,
CAR . KIA_EV6 : {
( Ecu . esp , 0x7d1 , None ) : [
b ' \xf1 \x87 58520CV100 \xf1 \x00 CV IEB \x02 101! \x10 \x18 58520-CV100 ' ,
] ,
( Ecu . eps , 0x7d4 , None ) : [
b ' \xf1 \x00 CV1 MDPS R 1.00 1.04 57700-CV000 1B30 ' ,
] ,
( Ecu . fwdRadar , 0x7d0 , None ) : [
b ' \xf1 \x00 CV1_ RDR ----- 1.00 1.01 99110-CV000 ' ,
b ' \xf1 \x87 99110CV000 \xf1 \x00 CV1_ RDR ----- 1.00 1.01 99110-CV000 ' ,
] ,
( Ecu . fwdCamera , 0x7c4 , None ) : [
b ' \xf1 \x00 CV1 MFC AT USA LHD 1.00 1.05 99210-CV000 211027 ' ,
] ,
} ,
}
}
CHECKSUM = {
CHECKSUM = {
@ -1181,6 +1202,8 @@ FEATURES = {
" use_fca " : { CAR . SONATA , CAR . SONATA_HYBRID , CAR . ELANTRA , CAR . ELANTRA_2021 , CAR . ELANTRA_HEV_2021 , CAR . ELANTRA_GT_I30 , CAR . KIA_STINGER , CAR . IONIQ_EV_2020 , CAR . IONIQ_PHEV , CAR . KONA_EV , CAR . KIA_FORTE , CAR . KIA_NIRO_EV , CAR . PALISADE , CAR . GENESIS_G70 , CAR . GENESIS_G70_2020 , CAR . KONA , CAR . SANTA_FE , CAR . KIA_SELTOS , CAR . KONA_HEV , CAR . SANTA_FE_2022 , CAR . KIA_K5_2021 , CAR . IONIQ_HEV_2022 , CAR . SANTA_FE_HEV_2022 , CAR . SANTA_FE_PHEV_2022 , CAR . TUCSON_DIESEL_2019 } ,
" use_fca " : { CAR . SONATA , CAR . SONATA_HYBRID , CAR . ELANTRA , CAR . ELANTRA_2021 , CAR . ELANTRA_HEV_2021 , CAR . ELANTRA_GT_I30 , CAR . KIA_STINGER , CAR . IONIQ_EV_2020 , CAR . IONIQ_PHEV , CAR . KONA_EV , CAR . KIA_FORTE , CAR . KIA_NIRO_EV , CAR . PALISADE , CAR . GENESIS_G70 , CAR . GENESIS_G70_2020 , CAR . KONA , CAR . SANTA_FE , CAR . KIA_SELTOS , CAR . KONA_HEV , CAR . SANTA_FE_2022 , CAR . KIA_K5_2021 , CAR . IONIQ_HEV_2022 , CAR . SANTA_FE_HEV_2022 , CAR . SANTA_FE_PHEV_2022 , CAR . TUCSON_DIESEL_2019 } ,
}
}
HDA2_CAR = { CAR . KIA_EV6 , }
HYBRID_CAR = { CAR . IONIQ_PHEV , CAR . ELANTRA_HEV_2021 , CAR . KIA_NIRO_HEV , CAR . KIA_NIRO_HEV_2021 , CAR . SONATA_HYBRID , CAR . KONA_HEV , CAR . IONIQ , CAR . IONIQ_HEV_2022 , CAR . SANTA_FE_HEV_2022 , CAR . SANTA_FE_PHEV_2022 , CAR . IONIQ_PHEV_2019 } # these cars use a different gas signal
HYBRID_CAR = { CAR . IONIQ_PHEV , CAR . ELANTRA_HEV_2021 , CAR . KIA_NIRO_HEV , CAR . KIA_NIRO_HEV_2021 , CAR . SONATA_HYBRID , CAR . KONA_HEV , CAR . IONIQ , CAR . IONIQ_HEV_2022 , CAR . SANTA_FE_HEV_2022 , CAR . SANTA_FE_PHEV_2022 , CAR . IONIQ_PHEV_2019 } # these cars use a different gas signal
EV_CAR = { CAR . IONIQ_EV_2020 , CAR . IONIQ_EV_LTD , CAR . KONA_EV , CAR . KIA_NIRO_EV }
EV_CAR = { CAR . IONIQ_EV_2020 , CAR . IONIQ_EV_LTD , CAR . KONA_EV , CAR . KIA_NIRO_EV }
@ -1228,6 +1251,7 @@ DBC = {
CAR . PALISADE : dbc_dict ( ' hyundai_kia_generic ' , ' hyundai_kia_mando_front_radar ' ) ,
CAR . PALISADE : dbc_dict ( ' hyundai_kia_generic ' , ' hyundai_kia_mando_front_radar ' ) ,
CAR . VELOSTER : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . VELOSTER : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_CEED : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_CEED : dbc_dict ( ' hyundai_kia_generic ' , None ) ,
CAR . KIA_EV6 : dbc_dict ( ' kia_ev6 ' , None ) ,
CAR . SONATA_HYBRID : dbc_dict ( ' hyundai_kia_generic ' , ' hyundai_kia_mando_front_radar ' ) ,
CAR . SONATA_HYBRID : dbc_dict ( ' hyundai_kia_generic ' , ' hyundai_kia_mando_front_radar ' ) ,
}
}