mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-21 16:23:46 +08:00
honda
This commit is contained in:
@@ -167,18 +167,19 @@ def create_acc_hud(packer, bus, CP, enabled, pcm_speed, pcm_accel, hud_control,
|
||||
|
||||
def create_lkas_hud(packer, bus, CP, hud_control, lat_active, steering_available, reduced_steering, alert_steer_required, lkas_hud):
|
||||
commands = []
|
||||
lanes_visible = bool(hud_control.lanesVisible or lat_active)
|
||||
|
||||
lkas_hud_values = {
|
||||
'LKAS_READY': 1,
|
||||
'LKAS_STATE_CHANGE': 1,
|
||||
'STEERING_REQUIRED': alert_steer_required,
|
||||
'SOLID_LANES': hud_control.lanesVisible,
|
||||
'SOLID_LANES': lanes_visible,
|
||||
'BEEP': 0,
|
||||
}
|
||||
|
||||
if CP.carFingerprint in (HONDA_BOSCH_RADARLESS | HONDA_BOSCH_CANFD):
|
||||
lkas_hud_values['LANE_LINES'] = 3
|
||||
lkas_hud_values['DASHED_LANES'] = hud_control.lanesVisible
|
||||
lkas_hud_values['DASHED_LANES'] = lanes_visible
|
||||
|
||||
# car likely needs to see LKAS_PROBLEM fall within a specific time frame, so forward from camera
|
||||
# TODO: needed for Bosch CAN FD?
|
||||
@@ -192,8 +193,8 @@ def create_lkas_hud(packer, bus, CP, hud_control, lat_active, steering_available
|
||||
# New HUD concept for selected Bosch cars, overwrites some of the above
|
||||
# TODO: make global across all Honda if feedback is favorable
|
||||
if CP.carFingerprint in HONDA_BOSCH_ALT_RADAR:
|
||||
lkas_hud_values['DASHED_LANES'] = steering_available
|
||||
lkas_hud_values['SOLID_LANES'] = lat_active
|
||||
lkas_hud_values['DASHED_LANES'] = bool(steering_available or lanes_visible)
|
||||
lkas_hud_values['SOLID_LANES'] = lanes_visible
|
||||
lkas_hud_values['LKAS_PROBLEM'] = lat_active and reduced_steering
|
||||
|
||||
if CP.flags & HondaFlags.BOSCH_EXT_HUD and not CP.openpilotLongitudinalControl:
|
||||
|
||||
@@ -11,6 +11,7 @@ from opendbc.car.honda.carcontroller import (
|
||||
get_honda_bosch_wind_brake_mps2,
|
||||
update_honda_bosch_live_learning,
|
||||
)
|
||||
from opendbc.car.honda.hondacan import create_lkas_hud
|
||||
from opendbc.car.honda.fingerprints import FW_VERSIONS
|
||||
from opendbc.car.honda.values import CAR, HONDA_BOSCH, HONDA_BOSCH_TJA_CONTROL, HondaFlags
|
||||
|
||||
@@ -18,6 +19,19 @@ HONDA_FW_VERSION_RE = rb"[A-Z0-9]{5}-[A-Z0-9]{3}(-|,)[A-Z0-9]{4}(\x00){2}$"
|
||||
|
||||
|
||||
class TestHondaFingerprint:
|
||||
def test_honda_lkas_hud_shows_lane_lines_when_lateral_only_is_active(self):
|
||||
class FakePacker:
|
||||
@staticmethod
|
||||
def make_can_msg(name, bus, values):
|
||||
return name, bus, values
|
||||
|
||||
CP = CarInterface.get_non_essential_params(CAR.HONDA_CIVIC_BOSCH)
|
||||
hud_control = SimpleNamespace(lanesVisible=False)
|
||||
|
||||
cmds = create_lkas_hud(FakePacker(), 0, CP, hud_control, True, True, False, False, {})
|
||||
|
||||
assert cmds[0][2]["SOLID_LANES"] is True
|
||||
|
||||
def test_fw_version_format(self):
|
||||
# Asserts all FW versions follow an expected format
|
||||
for fw_by_ecu in FW_VERSIONS.values():
|
||||
|
||||
@@ -47,23 +47,23 @@ UNWIND_D_DES_THRESHOLD = -1.0
|
||||
UNWIND_LAT_ACCEL_NEAR_ZERO = 0.3
|
||||
MIN_LATERAL_CONTROL_SPEED = 0.3
|
||||
CIVIC_BOSCH_MODIFIED_B_FIXED_FRICTION_THRESHOLD = 0.30
|
||||
CIVIC_BOSCH_MODIFIED_B_LAT_ACCEL_FACTOR_MULT = 1.10
|
||||
CIVIC_BOSCH_MODIFIED_B_LAT_ACCEL_FACTOR_MULT = 1.20
|
||||
CIVIC_BOSCH_MODIFIED_B_TRANSITION_SPEED = 12.0
|
||||
CIVIC_BOSCH_MODIFIED_B_PHASE_SCALE = 0.10
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_ONSET = 0.18
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_ONSET_WIDTH = 0.07
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_CUTOFF = 1.00
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_CUTOFF_WIDTH = 0.30
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_REDUCTION_LEFT = 0.10
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_REDUCTION_RIGHT = 0.16
|
||||
CIVIC_BOSCH_MODIFIED_B_TURN_IN_BOOST_LEFT = 0.02
|
||||
CIVIC_BOSCH_MODIFIED_B_TURN_IN_BOOST_RIGHT = 0.04
|
||||
CIVIC_BOSCH_MODIFIED_B_UNWIND_TAPER_LEFT = 0.28
|
||||
CIVIC_BOSCH_MODIFIED_B_UNWIND_TAPER_RIGHT = 0.34
|
||||
CIVIC_BOSCH_MODIFIED_B_TURN_IN_FRICTION_BOOST_LEFT = 0.01
|
||||
CIVIC_BOSCH_MODIFIED_B_TURN_IN_FRICTION_BOOST_RIGHT = 0.02
|
||||
CIVIC_BOSCH_MODIFIED_B_UNWIND_FRICTION_REDUCTION_LEFT = 0.18
|
||||
CIVIC_BOSCH_MODIFIED_B_UNWIND_FRICTION_REDUCTION_RIGHT = 0.24
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_REDUCTION_LEFT = 0.14
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_REDUCTION_RIGHT = 0.24
|
||||
CIVIC_BOSCH_MODIFIED_B_TURN_IN_BOOST_LEFT = 0.04
|
||||
CIVIC_BOSCH_MODIFIED_B_TURN_IN_BOOST_RIGHT = 0.00
|
||||
CIVIC_BOSCH_MODIFIED_B_UNWIND_TAPER_LEFT = 0.40
|
||||
CIVIC_BOSCH_MODIFIED_B_UNWIND_TAPER_RIGHT = 0.60
|
||||
CIVIC_BOSCH_MODIFIED_B_TURN_IN_FRICTION_BOOST_LEFT = 0.02
|
||||
CIVIC_BOSCH_MODIFIED_B_TURN_IN_FRICTION_BOOST_RIGHT = 0.00
|
||||
CIVIC_BOSCH_MODIFIED_B_UNWIND_FRICTION_REDUCTION_LEFT = 0.26
|
||||
CIVIC_BOSCH_MODIFIED_B_UNWIND_FRICTION_REDUCTION_RIGHT = 0.40
|
||||
|
||||
BOLT_2022_2023_CARS = (
|
||||
GM_CAR.CHEVROLET_BOLT_ACC_2022_2023,
|
||||
|
||||
@@ -429,7 +429,7 @@ class TestLatControl:
|
||||
CI = CarInterface(CP, custom.StarPilotCarParams.new_message())
|
||||
controller = LatControlTorque(CP.as_reader(), CI, DT_CTRL)
|
||||
|
||||
assert controller.torque_params.latAccelFactor == pytest.approx(3.0 * 1.10)
|
||||
assert controller.torque_params.latAccelFactor == pytest.approx(3.0 * 1.20)
|
||||
|
||||
def test_modified_civic_b_torque_ff_scale_curve(self):
|
||||
steady_left = get_civic_bosch_modified_b_ff_scale(0.5, 0.0, 12.0)
|
||||
|
||||
@@ -86,6 +86,8 @@ class StarPilotCard:
|
||||
for be in carState.buttonEvents:
|
||||
if be.type == ButtonType.lkas and be.pressed and starpilot_toggles.always_on_lateral_lkas:
|
||||
self.always_on_lateral_allowed = not self.always_on_lateral_allowed
|
||||
if carState.cruiseState.enabled or self.pause_lateral:
|
||||
self.pause_lateral = not self.always_on_lateral_allowed
|
||||
elif be.type == ButtonType.mainCruise and be.pressed:
|
||||
if starpilot_toggles.always_on_lateral_main:
|
||||
self.always_on_lateral_allowed = not self.always_on_lateral_allowed
|
||||
|
||||
@@ -88,6 +88,35 @@ def test_honda_lkas_button_can_toggle_always_on_lateral(monkeypatch, tmp_path):
|
||||
ret = card.update(car_state, starpilot_car_state, sm, toggles)
|
||||
|
||||
assert ret.alwaysOnLateralAllowed is True
|
||||
assert ret.pauseLateral is False
|
||||
|
||||
|
||||
def test_honda_lkas_button_pauses_lateral_when_cruise_is_active(monkeypatch, tmp_path):
|
||||
monkeypatch.setattr(spc, "Params", FakeParams)
|
||||
monkeypatch.setattr(spc, "is_FrogsGoMoo", lambda: False)
|
||||
monkeypatch.setattr(spc, "ERROR_LOGS_PATH", tmp_path)
|
||||
|
||||
card = spc.StarPilotCard(
|
||||
SimpleNamespace(brand="honda"),
|
||||
SimpleNamespace(alternativeExperience=spc.ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL),
|
||||
)
|
||||
card.always_on_lateral_allowed = True
|
||||
|
||||
car_state = make_car_state(available=True, enabled=True, button_events=[SimpleNamespace(type=spc.ButtonType.lkas, pressed=True)])
|
||||
starpilot_car_state = SimpleNamespace(distancePressed=False)
|
||||
sm = make_sm()
|
||||
sm["selfdriveState"].active = True
|
||||
toggles = make_toggles(always_on_lateral_lkas=True, lkas_allowed_for_aol=True)
|
||||
|
||||
ret = card.update(car_state, starpilot_car_state, sm, toggles)
|
||||
|
||||
assert ret.alwaysOnLateralAllowed is False
|
||||
assert ret.pauseLateral is True
|
||||
|
||||
ret = card.update(car_state, starpilot_car_state, sm, toggles)
|
||||
|
||||
assert ret.alwaysOnLateralAllowed is True
|
||||
assert ret.pauseLateral is False
|
||||
|
||||
|
||||
def test_main_aol_still_follows_cruise_main_for_other_platforms(monkeypatch, tmp_path):
|
||||
|
||||
Reference in New Issue
Block a user