mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-21 08:14:00 +08:00
Merge pull request #50 from FLYINORION123/honda-speedlimit-dev
Honda Dashboard Speed Limit Controller (SLC) Support
This commit is contained in:
@@ -8,7 +8,7 @@ from opendbc.car.common.conversions import Conversions as CV
|
|||||||
from opendbc.car.honda.hondacan import CanBus
|
from opendbc.car.honda.hondacan import CanBus
|
||||||
from opendbc.car.honda.values import CAR, DBC, STEER_THRESHOLD, HONDA_BOSCH, HONDA_BOSCH_ALT_RADAR, HONDA_BOSCH_CANFD, \
|
from opendbc.car.honda.values import CAR, DBC, STEER_THRESHOLD, HONDA_BOSCH, HONDA_BOSCH_ALT_RADAR, HONDA_BOSCH_CANFD, \
|
||||||
HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_RADARLESS, \
|
HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_RADARLESS, \
|
||||||
HondaFlags, CruiseButtons, CruiseSettings, GearShifter, CarControllerParams
|
HondaFlags, CruiseButtons, CruiseSettings, GearShifter, CarControllerParams, HondaStarPilotFlags
|
||||||
from opendbc.car.interfaces import CarStateBase
|
from opendbc.car.interfaces import CarStateBase
|
||||||
|
|
||||||
TransmissionType = structs.CarParams.TransmissionType
|
TransmissionType = structs.CarParams.TransmissionType
|
||||||
@@ -19,6 +19,18 @@ BUTTONS_DICT = {CruiseButtons.RES_ACCEL: ButtonType.accelCruise, CruiseButtons.D
|
|||||||
SETTINGS_BUTTONS_DICT = {CruiseSettings.DISTANCE: ButtonType.gapAdjustCruise, CruiseSettings.LKAS: ButtonType.lkas}
|
SETTINGS_BUTTONS_DICT = {CruiseSettings.DISTANCE: ButtonType.gapAdjustCruise, CruiseSettings.LKAS: ButtonType.lkas}
|
||||||
|
|
||||||
|
|
||||||
|
# Dashboard Speed Limit / Traffic Sign Recognition (TSR) for Speed Limit Controller (SLC)
|
||||||
|
def calculate_speed_limit(CP, FPCP, cp, cp_cam):
|
||||||
|
if not (FPCP.flags & HondaStarPilotFlags.HAS_CAMERA_MESSAGES):
|
||||||
|
return 0.0
|
||||||
|
speed_bus = cp if (CP.carFingerprint in (HONDA_BOSCH - HONDA_BOSCH_RADARLESS - HONDA_BOSCH_CANFD)) else cp_cam
|
||||||
|
try:
|
||||||
|
speed_limit_raw = speed_bus.vl["CAMERA_MESSAGES"]["SPEED_LIMIT_SIGN"] % 32
|
||||||
|
return speed_limit_raw * 5.0 * CV.MPH_TO_MS if 1 <= speed_limit_raw <= 17 else 0.0
|
||||||
|
except (KeyError, ValueError):
|
||||||
|
return 0.0
|
||||||
|
|
||||||
|
|
||||||
class CarState(CarStateBase):
|
class CarState(CarStateBase):
|
||||||
def __init__(self, CP, FPCP):
|
def __init__(self, CP, FPCP):
|
||||||
super().__init__(CP, FPCP)
|
super().__init__(CP, FPCP)
|
||||||
@@ -222,6 +234,8 @@ class CarState(CarStateBase):
|
|||||||
|
|
||||||
fp_ret = custom.StarPilotCarState.new_message()
|
fp_ret = custom.StarPilotCarState.new_message()
|
||||||
|
|
||||||
|
fp_ret.dashboardSpeedLimit = calculate_speed_limit(self.CP, self.FPCP, cp, cp_cam)
|
||||||
|
|
||||||
return ret, fp_ret
|
return ret, fp_ret
|
||||||
|
|
||||||
def get_can_parsers(self, CP):
|
def get_can_parsers(self, CP):
|
||||||
|
|||||||
@@ -94,6 +94,10 @@ class CruiseSettings:
|
|||||||
LKAS = 1
|
LKAS = 1
|
||||||
|
|
||||||
|
|
||||||
|
class HondaStarPilotFlags(IntFlag):
|
||||||
|
HAS_CAMERA_MESSAGES = 8
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class HondaCarDocs(CarDocs):
|
class HondaCarDocs(CarDocs):
|
||||||
package: str = "Honda Sensing"
|
package: str = "Honda Sensing"
|
||||||
@@ -360,6 +364,15 @@ HONDA_BOSCH_RADARLESS = CAR.with_flags(HondaFlags.BOSCH_RADARLESS)
|
|||||||
HONDA_BOSCH_CANFD = CAR.with_flags(HondaFlags.BOSCH_CANFD)
|
HONDA_BOSCH_CANFD = CAR.with_flags(HondaFlags.BOSCH_CANFD)
|
||||||
HONDA_BOSCH_ALT_RADAR = CAR.with_flags(HondaFlags.BOSCH_ALT_RADAR)
|
HONDA_BOSCH_ALT_RADAR = CAR.with_flags(HondaFlags.BOSCH_ALT_RADAR)
|
||||||
HONDA_BOSCH_TJA_CONTROL = CAR.with_flags(HondaFlags.BOSCH_TJA_CONTROL)
|
HONDA_BOSCH_TJA_CONTROL = CAR.with_flags(HondaFlags.BOSCH_TJA_CONTROL)
|
||||||
|
HONDA_CAMERA_MESSAGE_CARS = {
|
||||||
|
CAR.HONDA_ACCORD,
|
||||||
|
CAR.HONDA_CIVIC_BOSCH,
|
||||||
|
CAR.HONDA_CIVIC_2022,
|
||||||
|
CAR.HONDA_CRV_5G,
|
||||||
|
CAR.HONDA_CRV_HYBRID,
|
||||||
|
CAR.HONDA_HRV_3G,
|
||||||
|
CAR.HONDA_INSIGHT,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
DBC = CAR.create_dbc_map()
|
DBC = CAR.create_dbc_map()
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ from opendbc.car.common.basedir import BASEDIR
|
|||||||
from opendbc.car.common.conversions import Conversions as CV
|
from opendbc.car.common.conversions import Conversions as CV
|
||||||
from opendbc.car.common.simple_kalman import KF1D, get_kalman_gain
|
from opendbc.car.common.simple_kalman import KF1D, get_kalman_gain
|
||||||
from opendbc.car.gm.values import CAR as GM
|
from opendbc.car.gm.values import CAR as GM
|
||||||
from opendbc.car.honda.values import CAR as HONDA, HONDA_BOSCH, HondaSafetyFlags
|
from opendbc.car.honda.values import CAR as HONDA, HONDA_BOSCH, HONDA_CAMERA_MESSAGE_CARS, HondaSafetyFlags, HondaStarPilotFlags
|
||||||
from opendbc.car.hyundai.hyundaicanfd import CanBus
|
from opendbc.car.hyundai.hyundaicanfd import CanBus
|
||||||
from opendbc.car.hyundai.values import CAR as HYUNDAI, CANFD_CAR, HyundaiFlags, HyundaiStarPilotSafetyFlags
|
from opendbc.car.hyundai.values import CAR as HYUNDAI, CANFD_CAR, HyundaiFlags, HyundaiStarPilotSafetyFlags
|
||||||
from opendbc.car.mock.values import CAR as MOCK
|
from opendbc.car.mock.values import CAR as MOCK
|
||||||
@@ -205,6 +205,9 @@ class CarInterfaceBase(ABC):
|
|||||||
|
|
||||||
elif platform in HONDA:
|
elif platform in HONDA:
|
||||||
fp_ret.canUsePedal = candidate not in HONDA_BOSCH
|
fp_ret.canUsePedal = candidate not in HONDA_BOSCH
|
||||||
|
# Only enable TSR parsing on Hondas confirmed to publish CAMERA_MESSAGES.
|
||||||
|
if candidate in HONDA_CAMERA_MESSAGE_CARS:
|
||||||
|
fp_ret.flags |= int(HondaStarPilotFlags.HAS_CAMERA_MESSAGES)
|
||||||
|
|
||||||
elif platform in HYUNDAI:
|
elif platform in HYUNDAI:
|
||||||
if candidate in CANFD_CAR:
|
if candidate in CANFD_CAR:
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ void StarPilotSettingsWindow::updateVariables() {
|
|||||||
friction = CP.getLateralTuning().getTorque().getFriction();
|
friction = CP.getLateralTuning().getTorque().getFriction();
|
||||||
hasAlphaLongitudinal = CP.getAlphaLongitudinalAvailable();
|
hasAlphaLongitudinal = CP.getAlphaLongitudinalAvailable();
|
||||||
hasBSM = CP.getEnableBsm();
|
hasBSM = CP.getEnableBsm();
|
||||||
hasDashSpeedLimits = carMake == "ford" || carMake == "hyundai" || carMake == "toyota";
|
hasDashSpeedLimits = carMake == "ford" || carMake == "hyundai" || carMake == "toyota" || carMake == "honda";
|
||||||
hasNNFFLog = nnffLogFileExists(QString::fromStdString(carFingerprint));
|
hasNNFFLog = nnffLogFileExists(QString::fromStdString(carFingerprint));
|
||||||
hasOpenpilotLongitudinal = hasLongitudinalControl(CP);
|
hasOpenpilotLongitudinal = hasLongitudinalControl(CP);
|
||||||
hasPCMCruise = CP.getPcmCruise();
|
hasPCMCruise = CP.getPcmCruise();
|
||||||
|
|||||||
Reference in New Issue
Block a user