73 lines
2.0 KiB
Python
73 lines
2.0 KiB
Python
from dataclasses import dataclass, field
|
|
from enum import IntFlag
|
|
from opendbc.car import Bus, CarSpecs, DbcDict, PlatformConfig, Platforms, AngleRateLimit
|
|
from opendbc.car.structs import CarParams, CarState
|
|
from opendbc.car.docs_definitions import CarDocs
|
|
from opendbc.car.fw_query_definitions import FwQueryConfig, Request, StdQueries
|
|
|
|
Ecu = CarParams.Ecu
|
|
|
|
|
|
@dataclass
|
|
class TeslaCarDocs(CarDocs):
|
|
package: str = "Traffic Aware Cruise Control"
|
|
|
|
|
|
@dataclass
|
|
class TeslaPlatformConfig(PlatformConfig):
|
|
dbc_dict: DbcDict = field(default_factory=lambda: {Bus.party: 'tesla_model3_party'})
|
|
|
|
|
|
class CAR(Platforms):
|
|
TESLA_MODEL_3 = TeslaPlatformConfig(
|
|
[TeslaCarDocs("Tesla Model 3 2019-24")],
|
|
CarSpecs(mass=1899., wheelbase=2.875, steerRatio=12.0),
|
|
)
|
|
TESLA_MODEL_Y = TeslaPlatformConfig(
|
|
[TeslaCarDocs("Tesla Model Y 2020-24")],
|
|
CarSpecs(mass=2072., wheelbase=2.890, steerRatio=12.0),
|
|
)
|
|
|
|
|
|
FW_QUERY_CONFIG = FwQueryConfig(
|
|
requests=[
|
|
Request(
|
|
[StdQueries.TESTER_PRESENT_REQUEST, StdQueries.SUPPLIER_SOFTWARE_VERSION_REQUEST],
|
|
[StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.SUPPLIER_SOFTWARE_VERSION_RESPONSE],
|
|
whitelist_ecus=[Ecu.eps],
|
|
rx_offset=0x08,
|
|
bus=0,
|
|
)
|
|
]
|
|
)
|
|
|
|
class CANBUS:
|
|
party = 0
|
|
vehicle = 1
|
|
autopilot_party = 2
|
|
|
|
|
|
GEAR_MAP = {
|
|
"DI_GEAR_INVALID": CarState.GearShifter.unknown,
|
|
"DI_GEAR_P": CarState.GearShifter.park,
|
|
"DI_GEAR_R": CarState.GearShifter.reverse,
|
|
"DI_GEAR_N": CarState.GearShifter.neutral,
|
|
"DI_GEAR_D": CarState.GearShifter.drive,
|
|
"DI_GEAR_SNA": CarState.GearShifter.unknown,
|
|
}
|
|
|
|
class CarControllerParams:
|
|
ANGLE_RATE_LIMIT_UP = AngleRateLimit(speed_bp=[0., 5., 15.], angle_v=[10., 1.6, .3])
|
|
ANGLE_RATE_LIMIT_DOWN = AngleRateLimit(speed_bp=[0., 5., 15.], angle_v=[10., 7.0, 0.8])
|
|
ACCEL_MIN = -3.48 # m/s^2
|
|
ACCEL_MAX = 2.0 # m/s^2
|
|
JERK_LIMIT_MAX = 4.9 # m/s^3, ACC faults at 5.0
|
|
JERK_LIMIT_MIN = -4.9 # m/s^3, ACC faults at 5.0
|
|
|
|
|
|
class TeslaFlags(IntFlag):
|
|
FLAG_TESLA_LONG_CONTROL = 1
|
|
|
|
|
|
DBC = CAR.create_dbc_map()
|