mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-21 00:03:45 +08:00
ipedal2
This commit is contained in:
@@ -397,7 +397,8 @@ class CarState(CarStateBase):
|
||||
ret.cruiseState.nonAdaptive = cp.vl["MANUAL_SPEED_LIMIT_ASSIST"]["MSLA_ENABLED"] == 1
|
||||
if self.CP.carFingerprint == CAR.HYUNDAI_IONIQ_6:
|
||||
msla = cp.vl["MANUAL_SPEED_LIMIT_ASSIST"]
|
||||
self.ipedal_active = decode_ioniq_6_ipedal_state(msla["EV_REGEN_STATE"], msla["EV_REGEN_STATE_2"])
|
||||
# Tolerate older/stale DBCs that do not yet expose the inferred regen state signals.
|
||||
self.ipedal_active = decode_ioniq_6_ipedal_state(msla.get("EV_REGEN_STATE", 0), msla.get("EV_REGEN_STATE_2", 0))
|
||||
|
||||
prev_cruise_buttons = self.cruise_buttons[-1]
|
||||
prev_main_buttons = self.main_buttons[-1]
|
||||
@@ -473,6 +474,7 @@ class CarState(CarStateBase):
|
||||
]
|
||||
if CP.flags & HyundaiFlags.EV:
|
||||
msgs.append(("DRIVE_MODE_EV", 0)) # optional: not all CAN-FD EV variants publish drive mode
|
||||
msgs.append(("MANUAL_SPEED_LIMIT_ASSIST", 0)) # optional: used for non-adaptive cruise state and Ioniq 6 i-Pedal latch detection
|
||||
msgs.append(("STEERING_WHEEL_MEDIA_BUTTONS", 0)) # optional: absent or slower on some CAN-FD variants
|
||||
cam_msgs.append(("ADAS_0x380", 0)) # optional: dashboard stop-sign signal, only on ADAS-equipped HKG CANFD
|
||||
return {
|
||||
|
||||
@@ -113,6 +113,7 @@ class HyundaiSafetyFlags(IntFlag):
|
||||
class HyundaiStarPilotSafetyFlags(IntFlag):
|
||||
HAS_LDA_BUTTON = 1024
|
||||
AOL_LKAS_ON_ENGAGE = 2048
|
||||
ALLOW_IPEDAL_PADDLE = 32768
|
||||
|
||||
|
||||
class HyundaiStarPilotFlags(IntFlag):
|
||||
|
||||
@@ -232,6 +232,8 @@ class CarInterfaceBase(ABC):
|
||||
fp_ret.safetyConfigs[-1].safetyParam |= HyundaiStarPilotSafetyFlags.HAS_LDA_BUTTON.value
|
||||
if starpilot_toggles.always_on_lateral_lkas:
|
||||
fp_ret.safetyConfigs[-1].safetyParam |= HyundaiStarPilotSafetyFlags.AOL_LKAS_ON_ENGAGE.value
|
||||
if candidate == HYUNDAI.HYUNDAI_IONIQ_6 and getattr(starpilot_toggles, "always_ipedal", False):
|
||||
fp_ret.safetyConfigs[-1].safetyParam |= HyundaiStarPilotSafetyFlags.ALLOW_IPEDAL_PADDLE.value
|
||||
|
||||
elif platform in TOYOTA:
|
||||
fp_ret.canUsePedal = not CP.autoResumeSng
|
||||
|
||||
@@ -64,6 +64,7 @@ class DummyCarInterface(CarInterfaceBase):
|
||||
|
||||
def get_test_starpilot_toggles() -> SimpleNamespace:
|
||||
return SimpleNamespace(
|
||||
always_ipedal=False,
|
||||
always_on_lateral_lkas=False,
|
||||
car_model="",
|
||||
cluster_offset=1.0,
|
||||
@@ -214,6 +215,31 @@ class TestCarInterfaces:
|
||||
)
|
||||
assert fp_car_params.safetyConfigs[-1].safetyParam & HyundaiStarPilotSafetyFlags.AOL_LKAS_ON_ENGAGE.value
|
||||
|
||||
def test_hyundai_always_ipedal_flag_is_set_for_ioniq_6(self):
|
||||
toggles = get_test_starpilot_toggles()
|
||||
toggles.always_ipedal = True
|
||||
fingerprint = {bus: {} for bus in range(8)}
|
||||
fingerprint[2][0x50] = 16
|
||||
|
||||
car_params = HyundaiCarInterface.get_params(
|
||||
HYUNDAI_CAR.HYUNDAI_IONIQ_6,
|
||||
fingerprint,
|
||||
[],
|
||||
alpha_long=False,
|
||||
is_release=False,
|
||||
docs=False,
|
||||
starpilot_toggles=toggles,
|
||||
)
|
||||
|
||||
fp_car_params = HyundaiCarInterface.get_starpilot_params(
|
||||
HYUNDAI_CAR.HYUNDAI_IONIQ_6,
|
||||
fingerprint,
|
||||
[],
|
||||
car_params,
|
||||
toggles,
|
||||
)
|
||||
assert fp_car_params.safetyConfigs[-1].safetyParam & HyundaiStarPilotSafetyFlags.ALLOW_IPEDAL_PADDLE.value
|
||||
|
||||
def test_toyota_disable_openpilot_long_sets_stock_long_safety_flag(self):
|
||||
CarInterface = interfaces[TOYOTA_CAR.TOYOTA_PRIUS_TSS2]
|
||||
fingerprint = {bus: {} for bus in range(8)}
|
||||
|
||||
@@ -824,6 +824,8 @@ BO_ 736 MANUAL_SPEED_LIMIT_ASSIST: 32 XXX
|
||||
SG_ MSLA_ENABLED : 38|1@1+ (1,0) [0|1] "" XXX
|
||||
SG_ MAX_SPEED : 55|8@0+ (1,0) [0|255] "" XXX
|
||||
SG_ MAX_SPEED_COPY : 144|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ EV_REGEN_STATE : 104|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ EV_REGEN_STATE_2 : 184|8@1+ (1,0) [0|255] "" XXX
|
||||
|
||||
BO_ 837 ADRV_0x345: 8 ADRV
|
||||
SG_ CHECKSUM : 0|16@1+ (1,0) [0|65535] "" XXX
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
static bool hyundai_canfd_alt_buttons = false;
|
||||
static bool hyundai_canfd_lka_steering_alt = false;
|
||||
static bool hyundai_canfd_angle_steering = false;
|
||||
static bool hyundai_canfd_allow_ipedal_paddle = false;
|
||||
|
||||
static unsigned int hyundai_canfd_get_lka_addr(void) {
|
||||
return hyundai_canfd_lka_steering_alt ? 0x110U : 0x50U;
|
||||
@@ -228,10 +229,21 @@ static bool hyundai_canfd_tx_hook(const CANPacket_t *msg) {
|
||||
// cruise buttons check
|
||||
if (msg->addr == 0x1cfU) {
|
||||
int button = msg->data[2] & 0x7U;
|
||||
bool main_button = GET_BIT(msg, 19U) || GET_BIT(msg, 21U);
|
||||
bool lkas_button = GET_BIT(msg, 23U);
|
||||
bool right_paddle = GET_BIT(msg, 25U);
|
||||
bool left_paddle = GET_BIT(msg, 27U);
|
||||
bool is_cancel = (button == HYUNDAI_BTN_CANCEL);
|
||||
bool is_resume = (button == HYUNDAI_BTN_RESUME);
|
||||
bool is_left_paddle_only = hyundai_canfd_allow_ipedal_paddle &&
|
||||
!controls_allowed &&
|
||||
(button == HYUNDAI_BTN_NONE) &&
|
||||
!main_button &&
|
||||
!lkas_button &&
|
||||
!right_paddle &&
|
||||
left_paddle;
|
||||
|
||||
bool allowed = (is_cancel && cruise_engaged_prev) || (is_resume && controls_allowed);
|
||||
bool allowed = (is_cancel && cruise_engaged_prev) || (is_resume && controls_allowed) || is_left_paddle_only;
|
||||
if (!allowed) {
|
||||
tx = false;
|
||||
}
|
||||
@@ -278,6 +290,7 @@ static safety_config hyundai_canfd_init(uint16_t param) {
|
||||
const uint16_t HYUNDAI_PARAM_CANFD_LKA_STEERING_ALT = 128;
|
||||
const uint16_t HYUNDAI_PARAM_CANFD_ALT_BUTTONS = 32;
|
||||
const uint16_t HYUNDAI_PARAM_CANFD_ANGLE_STEERING = 1024;
|
||||
const uint16_t HYUNDAI_PARAM_ALLOW_IPEDAL_PADDLE = 32768;
|
||||
|
||||
static const CanMsg HYUNDAI_CANFD_LKA_STEERING_TX_MSGS[] = {
|
||||
HYUNDAI_CANFD_LKA_STEERING_COMMON_TX_MSGS(0, 1)
|
||||
@@ -330,6 +343,7 @@ static safety_config hyundai_canfd_init(uint16_t param) {
|
||||
hyundai_canfd_alt_buttons = GET_FLAG(param, HYUNDAI_PARAM_CANFD_ALT_BUTTONS);
|
||||
hyundai_canfd_lka_steering_alt = GET_FLAG(param, HYUNDAI_PARAM_CANFD_LKA_STEERING_ALT);
|
||||
hyundai_canfd_angle_steering = GET_FLAG(param, HYUNDAI_PARAM_CANFD_ANGLE_STEERING);
|
||||
hyundai_canfd_allow_ipedal_paddle = GET_FLAG(param, HYUNDAI_PARAM_ALLOW_IPEDAL_PADDLE);
|
||||
|
||||
safety_config ret;
|
||||
if (hyundai_longitudinal) {
|
||||
|
||||
@@ -427,6 +427,47 @@ class TestHyundaiCanfdLKASteeringEV(TestHyundaiCanfdBase):
|
||||
self.safety.set_safety_hooks(CarParams.SafetyModel.hyundaiCanfd, HyundaiSafetyFlags.CANFD_LKA_STEERING | HyundaiSafetyFlags.EV_GAS)
|
||||
self.safety.init_tests()
|
||||
|
||||
def _paddle_msg(self, left_paddle=0, right_paddle=0, buttons=0, main_button=0, lka_button=0, bus=None):
|
||||
if bus is None:
|
||||
bus = self.BUTTONS_TX_BUS
|
||||
values = {
|
||||
"CRUISE_BUTTONS": buttons,
|
||||
"ADAPTIVE_CRUISE_MAIN_BTN": main_button,
|
||||
"LDA_BTN": lka_button,
|
||||
"RIGHT_PADDLE": right_paddle,
|
||||
"LEFT_PADDLE": left_paddle,
|
||||
"SET_ME_1": 1,
|
||||
}
|
||||
return self.packer.make_can_msg_safety("CRUISE_BUTTONS", bus, values)
|
||||
|
||||
def test_left_paddle_send(self):
|
||||
for controls_allowed in (True, False):
|
||||
self.safety.set_controls_allowed(controls_allowed)
|
||||
self.assertFalse(self._tx(self._paddle_msg(left_paddle=1)))
|
||||
|
||||
|
||||
class TestHyundaiCanfdLKASteeringEVAlwaysIPedal(TestHyundaiCanfdLKASteeringEV):
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerSafety("hyundai_canfd_generated")
|
||||
self.safety = libsafety_py.libsafety
|
||||
self.safety.set_safety_hooks(CarParams.SafetyModel.hyundaiCanfd,
|
||||
HyundaiSafetyFlags.CANFD_LKA_STEERING |
|
||||
HyundaiSafetyFlags.EV_GAS |
|
||||
HyundaiStarPilotSafetyFlags.ALLOW_IPEDAL_PADDLE)
|
||||
self.safety.init_tests()
|
||||
|
||||
def test_left_paddle_send(self):
|
||||
self.safety.set_controls_allowed(False)
|
||||
self.assertTrue(self._tx(self._paddle_msg(left_paddle=1)))
|
||||
self.assertFalse(self._tx(self._paddle_msg(right_paddle=1)))
|
||||
self.assertFalse(self._tx(self._paddle_msg(left_paddle=1, buttons=1)))
|
||||
self.assertFalse(self._tx(self._paddle_msg(left_paddle=1, main_button=1)))
|
||||
self.assertFalse(self._tx(self._paddle_msg(left_paddle=1, lka_button=1)))
|
||||
|
||||
self.safety.set_controls_allowed(True)
|
||||
self.assertFalse(self._tx(self._paddle_msg(left_paddle=1)))
|
||||
|
||||
|
||||
# TODO: Handle ICE and HEV configurations once we see cars that use the new messages
|
||||
class TestHyundaiCanfdLKASteeringAltEV(TestHyundaiCanfdBase):
|
||||
|
||||
@@ -48,6 +48,7 @@ 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.20
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_LAT_ACCEL_FACTOR_MULT = 1.10
|
||||
CIVIC_BOSCH_MODIFIED_B_TRANSITION_SPEED = 12.0
|
||||
CIVIC_BOSCH_MODIFIED_B_PHASE_SCALE = 0.10
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_ONSET = 0.18
|
||||
@@ -64,16 +65,16 @@ 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
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_FF_REDUCTION_LEFT = 0.04
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_FF_REDUCTION_RIGHT = 0.10
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_BOOST_LEFT = 0.02
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_BOOST_RIGHT = 0.08
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_TAPER_LEFT = 0.16
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_TAPER_RIGHT = 0.26
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_FRICTION_BOOST_LEFT = 0.01
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_FRICTION_BOOST_RIGHT = 0.03
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_FRICTION_REDUCTION_LEFT = 0.08
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_FRICTION_REDUCTION_RIGHT = 0.16
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_FF_REDUCTION_LEFT = 0.10
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_FF_REDUCTION_RIGHT = 0.20
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_BOOST_LEFT = 0.04
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_BOOST_RIGHT = 0.00
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_TAPER_LEFT = 0.28
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_TAPER_RIGHT = 0.42
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_FRICTION_BOOST_LEFT = 0.02
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_FRICTION_BOOST_RIGHT = 0.00
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_FRICTION_REDUCTION_LEFT = 0.16
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_FRICTION_REDUCTION_RIGHT = 0.28
|
||||
|
||||
BOLT_2022_2023_CARS = (
|
||||
GM_CAR.CHEVROLET_BOLT_ACC_2022_2023,
|
||||
@@ -230,8 +231,8 @@ GENESIS_G90_TURN_IN_FRICTION_BOOST_RIGHT = 0.12
|
||||
GENESIS_G90_UNWIND_FRICTION_REDUCTION_LEFT = 0.14
|
||||
GENESIS_G90_UNWIND_FRICTION_REDUCTION_RIGHT = 0.22
|
||||
|
||||
IONIQ_6_FF_GAIN_LEFT = 0.040
|
||||
IONIQ_6_FF_GAIN_RIGHT = 0.000
|
||||
IONIQ_6_FF_GAIN_LEFT = 0.045
|
||||
IONIQ_6_FF_GAIN_RIGHT = 0.015
|
||||
IONIQ_6_BASE_LAT_ACCEL_FACTOR_MULT = 1.23
|
||||
IONIQ_6_BASE_FRICTION_THRESHOLD = 0.36
|
||||
IONIQ_6_FF_ONSET = 0.10
|
||||
@@ -247,14 +248,14 @@ IONIQ_6_UNWIND_TAPER_RIGHT = 5.05
|
||||
IONIQ_6_FRICTION_MULT = 0.965
|
||||
IONIQ_6_FRICTION_LAT_RISE = 0.20
|
||||
IONIQ_6_FRICTION_JERK_RISE = 0.24
|
||||
IONIQ_6_TURN_IN_THRESHOLD_REDUCTION_LEFT = 0.46
|
||||
IONIQ_6_TURN_IN_THRESHOLD_REDUCTION_RIGHT = 0.64
|
||||
IONIQ_6_UNWIND_THRESHOLD_INCREASE_LEFT = 2.40
|
||||
IONIQ_6_UNWIND_THRESHOLD_INCREASE_RIGHT = 5.80
|
||||
IONIQ_6_TURN_IN_FRICTION_BOOST_LEFT = 0.24
|
||||
IONIQ_6_TURN_IN_FRICTION_BOOST_RIGHT = 0.40
|
||||
IONIQ_6_UNWIND_FRICTION_REDUCTION_LEFT = 2.15
|
||||
IONIQ_6_UNWIND_FRICTION_REDUCTION_RIGHT = 5.30
|
||||
IONIQ_6_TURN_IN_THRESHOLD_REDUCTION_LEFT = 0.50
|
||||
IONIQ_6_TURN_IN_THRESHOLD_REDUCTION_RIGHT = 0.72
|
||||
IONIQ_6_UNWIND_THRESHOLD_INCREASE_LEFT = 2.55
|
||||
IONIQ_6_UNWIND_THRESHOLD_INCREASE_RIGHT = 6.20
|
||||
IONIQ_6_TURN_IN_FRICTION_BOOST_LEFT = 0.26
|
||||
IONIQ_6_TURN_IN_FRICTION_BOOST_RIGHT = 0.44
|
||||
IONIQ_6_UNWIND_FRICTION_REDUCTION_LEFT = 2.30
|
||||
IONIQ_6_UNWIND_FRICTION_REDUCTION_RIGHT = 5.70
|
||||
IONIQ_6_CENTER_TAPER_MAX = 0.056
|
||||
IONIQ_6_CENTER_TAPER_LAT = 0.22
|
||||
IONIQ_6_CENTER_TAPER_LAT_WIDTH = 0.02
|
||||
@@ -269,20 +270,20 @@ IONIQ_6_LOW_MID_CENTER_TAPER_SPEED_WIDTH = 1.5
|
||||
IONIQ_6_DIRECTIONAL_TAPER_LAT_START = 0.19
|
||||
IONIQ_6_DIRECTIONAL_TAPER_LAT_END = 0.90
|
||||
IONIQ_6_DIRECTIONAL_TAPER_LAT_WIDTH = 0.06
|
||||
IONIQ_6_DIRECTIONAL_TAPER_BASE_LEFT = 0.16
|
||||
IONIQ_6_DIRECTIONAL_TAPER_BASE_RIGHT = 0.54
|
||||
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_LEFT = 1.52
|
||||
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_RIGHT = 3.05
|
||||
IONIQ_6_DIRECTIONAL_TAPER_BASE_LEFT = 0.14
|
||||
IONIQ_6_DIRECTIONAL_TAPER_BASE_RIGHT = 0.48
|
||||
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_LEFT = 1.64
|
||||
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_RIGHT = 3.28
|
||||
IONIQ_6_DIRECTIONAL_TAPER_FLOOR_LEFT = 0.48
|
||||
IONIQ_6_DIRECTIONAL_TAPER_FLOOR_RIGHT = 0.52
|
||||
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_FLOOR_LEFT = 0.10
|
||||
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_FLOOR_RIGHT = 0.04
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_LAT_START = 0.82
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_LAT_WIDTH = 0.12
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_BASE_LEFT = 0.15
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_BASE_RIGHT = 0.26
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_UNWIND_LEFT = 0.50
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_UNWIND_RIGHT = 0.82
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_BASE_LEFT = 0.13
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_BASE_RIGHT = 0.22
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_UNWIND_LEFT = 0.56
|
||||
IONIQ_6_HEAVY_DIRECTIONAL_TAPER_UNWIND_RIGHT = 0.94
|
||||
IONIQ_6_OUTPUT_TAPER_SPEED = 8.5
|
||||
IONIQ_6_OUTPUT_TAPER_SPEED_WIDTH = 2.5
|
||||
IONIQ_6_OUTPUT_CENTER_TAPER_BLEND = 0.90
|
||||
@@ -1112,6 +1113,8 @@ class LatControlTorque(LatControl):
|
||||
self.torque_params.latAccelFactor *= IONIQ_6_BASE_LAT_ACCEL_FACTOR_MULT
|
||||
if self.is_civic_bosch_modified:
|
||||
self.torque_params.latAccelFactor *= CIVIC_BOSCH_MODIFIED_B_LAT_ACCEL_FACTOR_MULT
|
||||
if civic_bosch_modified_lateral_testing_ground_active():
|
||||
self.torque_params.latAccelFactor *= CIVIC_BOSCH_MODIFIED_B_VARIANT_LAT_ACCEL_FACTOR_MULT
|
||||
if self.is_bolt:
|
||||
kp_scale = getattr(self.torque_params, "kp", getattr(self.torque_params, "kpDEPRECATED", 1.0))
|
||||
ki_scale = getattr(self.torque_params, "ki", getattr(self.torque_params, "kiDEPRECATED", 1.0))
|
||||
@@ -1127,6 +1130,8 @@ class LatControlTorque(LatControl):
|
||||
latAccelFactor *= IONIQ_6_BASE_LAT_ACCEL_FACTOR_MULT
|
||||
if self.is_civic_bosch_modified:
|
||||
latAccelFactor *= CIVIC_BOSCH_MODIFIED_B_LAT_ACCEL_FACTOR_MULT
|
||||
if civic_bosch_modified_lateral_testing_ground_active():
|
||||
latAccelFactor *= CIVIC_BOSCH_MODIFIED_B_VARIANT_LAT_ACCEL_FACTOR_MULT
|
||||
self.torque_params.latAccelFactor = latAccelFactor
|
||||
self.torque_params.latAccelOffset = latAccelOffset
|
||||
self.torque_params.friction = friction
|
||||
|
||||
@@ -429,6 +429,11 @@ class TestLatControl:
|
||||
|
||||
assert controller.torque_params.latAccelFactor == pytest.approx(3.0 * 1.20)
|
||||
|
||||
monkeypatch.setattr(latcontrol_torque, "civic_bosch_modified_lateral_testing_ground_active", lambda: True)
|
||||
variant_controller = LatControlTorque(CP.as_reader(), CI, DT_CTRL)
|
||||
|
||||
assert variant_controller.torque_params.latAccelFactor == pytest.approx(3.0 * 1.20 * 1.10)
|
||||
|
||||
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)
|
||||
steady_right = get_civic_bosch_modified_b_ff_scale(-0.5, 0.0, 12.0)
|
||||
@@ -470,7 +475,7 @@ class TestLatControl:
|
||||
variant_unwind_right_friction = get_civic_bosch_modified_b_friction_scale(12.0, -0.5, 0.8)
|
||||
|
||||
assert variant_steady_right < base_steady_right
|
||||
assert variant_turn_in_right >= base_turn_in_right
|
||||
assert variant_turn_in_right < base_turn_in_right
|
||||
assert variant_unwind_right < base_unwind_right
|
||||
assert variant_unwind_right_friction < base_unwind_right_friction
|
||||
|
||||
|
||||
Reference in New Issue
Block a user