This commit is contained in:
firestar5683
2026-05-01 14:19:28 -05:00
parent 86f5102158
commit 617aa0a5db
4 changed files with 44 additions and 21 deletions
@@ -50,19 +50,19 @@ def get_civic_bosch_modified_steering_pressed(raw_pressed: bool, steering_torque
if raw_pressed:
if was_pressed:
trigger_s = 0.05
trigger_s = 0.08
elif torque_cmd_abs < 0.10:
trigger_s = 0.12
trigger_s = 0.18
elif torque_product < 0.0:
trigger_s = 0.12
trigger_s = 0.10
else:
trigger_s = 0.32
trigger_s = 0.60
filter_s = min(1.0, filter_s + DT_CTRL)
steering_pressed = filter_s >= trigger_s
else:
filter_s = max(0.0, filter_s - 4.0 * DT_CTRL)
steering_pressed = filter_s > 0.08 and was_pressed
filter_s = max(0.0, filter_s - 6.0 * DT_CTRL)
steering_pressed = filter_s > 0.06 and was_pressed
return filter_s, steering_pressed
@@ -49,7 +49,11 @@ class TestHondaFingerprint:
assert not pressed
assert filter_s > 0.01
filter_s = 0.31
filter_s = 0.58
filter_s, pressed = get_civic_bosch_modified_steering_pressed(True, 1500.0, 0.8, filter_s, False)
assert not pressed
filter_s = 0.59
filter_s, pressed = get_civic_bosch_modified_steering_pressed(True, 1500.0, 0.8, filter_s, False)
assert pressed
+20 -1
View File
@@ -1,6 +1,7 @@
import math
from cereal import log
from opendbc.car.honda.carcontroller import get_civic_bosch_modified_steering_pressed
from opendbc.car.honda.values import CAR as HONDA, HondaFlags
from openpilot.starpilot.common.testing_grounds import testing_ground
from openpilot.selfdrive.controls.lib.latcontrol import LatControl
@@ -44,6 +45,9 @@ class LatControlPID(LatControl):
self.get_steer_feedforward = CI.get_steer_feedforward_function()
self.is_civic_bosch_modified = CP.carFingerprint == HONDA.HONDA_CIVIC_BOSCH and bool(CP.flags & HondaFlags.EPS_MODIFIED)
self.prev_angle_steers_des_no_offset = 0.0
self.modified_civic_steering_pressed_filter_s = 0.0
self.modified_civic_steering_pressed_prev = False
self.prev_output_torque = 0.0
def update(self, active, CS, VM, params, steer_limited_by_safety, desired_curvature, curvature_limited, lat_delay, calibrated_pose, model_data, starpilot_toggles):
pid_log = log.ControlsState.LateralPIDState.new_message()
@@ -60,11 +64,25 @@ class LatControlPID(LatControl):
output_torque = 0.0
pid_log.active = False
self.prev_angle_steers_des_no_offset = angle_steers_des_no_offset
self.modified_civic_steering_pressed_filter_s = 0.0
self.modified_civic_steering_pressed_prev = False
self.prev_output_torque = 0.0
else:
# offset does not contribute to resistive torque
ff = self.ff_factor * self.get_steer_feedforward(angle_steers_des_no_offset, CS.vEgo)
freeze_integrator = steer_limited_by_safety or CS.steeringPressed or CS.vEgo < 5
steering_pressed = CS.steeringPressed
if self.is_civic_bosch_modified:
self.modified_civic_steering_pressed_filter_s, steering_pressed = get_civic_bosch_modified_steering_pressed(
bool(CS.steeringPressed),
float(getattr(CS, "steeringTorque", 0.0)),
float(self.prev_output_torque),
self.modified_civic_steering_pressed_filter_s,
self.modified_civic_steering_pressed_prev,
)
self.modified_civic_steering_pressed_prev = steering_pressed
freeze_integrator = steer_limited_by_safety or steering_pressed or CS.vEgo < 5
output_torque = self.pid.update(error,
feedforward=ff,
@@ -83,5 +101,6 @@ class LatControlPID(LatControl):
pid_log.output = float(output_torque)
pid_log.saturated = bool(self._check_saturation(self.steer_max - abs(output_torque) < 1e-3, CS, steer_limited_by_safety, curvature_limited))
self.prev_angle_steers_des_no_offset = angle_steers_des_no_offset
self.prev_output_torque = float(output_torque)
return output_torque, angle_steers_des, pid_log
+13 -13
View File
@@ -211,21 +211,21 @@ IONIQ_6_FF_CUTOFF = 0.48
IONIQ_6_FF_CUTOFF_WIDTH = 0.12
IONIQ_6_TRANSITION_SPEED = 10.0
IONIQ_6_PHASE_SCALE = 0.10
IONIQ_6_TURN_IN_BOOST_LEFT = 0.94
IONIQ_6_TURN_IN_BOOST_RIGHT = 1.00
IONIQ_6_UNWIND_TAPER_LEFT = 1.60
IONIQ_6_UNWIND_TAPER_RIGHT = 3.08
IONIQ_6_TURN_IN_BOOST_LEFT = 0.88
IONIQ_6_TURN_IN_BOOST_RIGHT = 0.92
IONIQ_6_UNWIND_TAPER_LEFT = 1.52
IONIQ_6_UNWIND_TAPER_RIGHT = 2.92
IONIQ_6_FRICTION_MULT = 0.995
IONIQ_6_FRICTION_LAT_RISE = 0.20
IONIQ_6_FRICTION_JERK_RISE = 0.24
IONIQ_6_TURN_IN_THRESHOLD_REDUCTION_LEFT = 0.26
IONIQ_6_TURN_IN_THRESHOLD_REDUCTION_RIGHT = 0.38
IONIQ_6_UNWIND_THRESHOLD_INCREASE_LEFT = 1.48
IONIQ_6_UNWIND_THRESHOLD_INCREASE_RIGHT = 3.30
IONIQ_6_TURN_IN_THRESHOLD_REDUCTION_LEFT = 0.25
IONIQ_6_TURN_IN_THRESHOLD_REDUCTION_RIGHT = 0.36
IONIQ_6_UNWIND_THRESHOLD_INCREASE_LEFT = 1.40
IONIQ_6_UNWIND_THRESHOLD_INCREASE_RIGHT = 3.22
IONIQ_6_TURN_IN_FRICTION_BOOST_LEFT = 0.12
IONIQ_6_TURN_IN_FRICTION_BOOST_RIGHT = 0.20
IONIQ_6_UNWIND_FRICTION_REDUCTION_LEFT = 1.32
IONIQ_6_UNWIND_FRICTION_REDUCTION_RIGHT = 2.82
IONIQ_6_TURN_IN_FRICTION_BOOST_RIGHT = 0.19
IONIQ_6_UNWIND_FRICTION_REDUCTION_LEFT = 1.22
IONIQ_6_UNWIND_FRICTION_REDUCTION_RIGHT = 2.70
IONIQ_6_CENTER_TAPER_MAX = 0.042
IONIQ_6_CENTER_TAPER_LAT = 0.18
IONIQ_6_CENTER_TAPER_LAT_WIDTH = 0.02
@@ -242,8 +242,8 @@ IONIQ_6_DIRECTIONAL_TAPER_LAT_END = 0.90
IONIQ_6_DIRECTIONAL_TAPER_LAT_WIDTH = 0.08
IONIQ_6_DIRECTIONAL_TAPER_BASE_LEFT = 0.05
IONIQ_6_DIRECTIONAL_TAPER_BASE_RIGHT = 0.44
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_LEFT = 0.78
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_RIGHT = 1.70
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_LEFT = 0.72
IONIQ_6_DIRECTIONAL_TAPER_UNWIND_RIGHT = 1.64
IONIQ_6_OUTPUT_TAPER_SPEED = 8.5
IONIQ_6_OUTPUT_TAPER_SPEED_WIDTH = 2.5
IONIQ_6_OUTPUT_CENTER_TAPER_BLEND = 0.90