You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.9 KiB
104 lines
2.9 KiB
from dataclasses import dataclass, field
|
|
from enum import IntFlag
|
|
|
|
from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict
|
|
from openpilot.selfdrive.car.common.conversions import Conversions as CV
|
|
from openpilot.selfdrive.car.structs import CarParams
|
|
from openpilot.selfdrive.car.docs_definitions import CarHarness, CarDocs, CarParts
|
|
from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries
|
|
|
|
Ecu = CarParams.Ecu
|
|
|
|
|
|
# Steer torque limits
|
|
|
|
class CarControllerParams:
|
|
STEER_MAX = 800 # theoretical max_steer 2047
|
|
STEER_DELTA_UP = 10 # torque increase per refresh
|
|
STEER_DELTA_DOWN = 25 # torque decrease per refresh
|
|
STEER_DRIVER_ALLOWANCE = 15 # allowed driver torque before start limiting
|
|
STEER_DRIVER_MULTIPLIER = 1 # weight driver torque
|
|
STEER_DRIVER_FACTOR = 1 # from dbc
|
|
STEER_ERROR_MAX = 350 # max delta between torque cmd and torque motor
|
|
STEER_STEP = 1 # 100 Hz
|
|
|
|
def __init__(self, CP):
|
|
pass
|
|
|
|
|
|
@dataclass
|
|
class MazdaCarDocs(CarDocs):
|
|
package: str = "All"
|
|
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda]))
|
|
|
|
|
|
@dataclass(frozen=True, kw_only=True)
|
|
class MazdaCarSpecs(CarSpecs):
|
|
tireStiffnessFactor: float = 0.7 # not optimized yet
|
|
|
|
|
|
class MazdaFlags(IntFlag):
|
|
# Static flags
|
|
# Gen 1 hardware: same CAN messages and same camera
|
|
GEN1 = 1
|
|
|
|
|
|
@dataclass
|
|
class MazdaPlatformConfig(PlatformConfig):
|
|
dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('mazda_2017', None))
|
|
flags: int = MazdaFlags.GEN1
|
|
|
|
|
|
class CAR(Platforms):
|
|
MAZDA_CX5 = MazdaPlatformConfig(
|
|
[MazdaCarDocs("Mazda CX-5 2017-21")],
|
|
MazdaCarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5)
|
|
)
|
|
MAZDA_CX9 = MazdaPlatformConfig(
|
|
[MazdaCarDocs("Mazda CX-9 2016-20")],
|
|
MazdaCarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6)
|
|
)
|
|
MAZDA_3 = MazdaPlatformConfig(
|
|
[MazdaCarDocs("Mazda 3 2017-18")],
|
|
MazdaCarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0)
|
|
)
|
|
MAZDA_6 = MazdaPlatformConfig(
|
|
[MazdaCarDocs("Mazda 6 2017-20")],
|
|
MazdaCarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5)
|
|
)
|
|
MAZDA_CX9_2021 = MazdaPlatformConfig(
|
|
[MazdaCarDocs("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4")],
|
|
MAZDA_CX9.specs
|
|
)
|
|
MAZDA_CX5_2022 = MazdaPlatformConfig(
|
|
[MazdaCarDocs("Mazda CX-5 2022-24")],
|
|
MAZDA_CX5.specs,
|
|
)
|
|
|
|
|
|
class LKAS_LIMITS:
|
|
STEER_THRESHOLD = 15
|
|
DISABLE_SPEED = 45 # kph
|
|
ENABLE_SPEED = 52 # kph
|
|
|
|
|
|
class Buttons:
|
|
NONE = 0
|
|
SET_PLUS = 1
|
|
SET_MINUS = 2
|
|
RESUME = 3
|
|
CANCEL = 4
|
|
|
|
|
|
FW_QUERY_CONFIG = FwQueryConfig(
|
|
requests=[
|
|
# TODO: check data to ensure ABS does not skip ISO-TP frames on bus 0
|
|
Request(
|
|
[StdQueries.MANUFACTURER_SOFTWARE_VERSION_REQUEST],
|
|
[StdQueries.MANUFACTURER_SOFTWARE_VERSION_RESPONSE],
|
|
bus=0,
|
|
),
|
|
],
|
|
)
|
|
|
|
DBC = CAR.create_dbc_map()
|
|
|