From 617aa0a5dbee5612be3774cc8e47cc1efc028b84 Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Fri, 1 May 2026 14:19:28 -0500 Subject: [PATCH] honda I6 --- .../opendbc/car/honda/carcontroller.py | 12 ++++----- .../opendbc/car/honda/tests/test_honda.py | 6 ++++- selfdrive/controls/lib/latcontrol_pid.py | 21 ++++++++++++++- selfdrive/controls/lib/latcontrol_torque.py | 26 +++++++++---------- 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/opendbc_repo/opendbc/car/honda/carcontroller.py b/opendbc_repo/opendbc/car/honda/carcontroller.py index 1d16109b7..fb9c1d4bb 100644 --- a/opendbc_repo/opendbc/car/honda/carcontroller.py +++ b/opendbc_repo/opendbc/car/honda/carcontroller.py @@ -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 diff --git a/opendbc_repo/opendbc/car/honda/tests/test_honda.py b/opendbc_repo/opendbc/car/honda/tests/test_honda.py index 1b3700251..ac22d4061 100644 --- a/opendbc_repo/opendbc/car/honda/tests/test_honda.py +++ b/opendbc_repo/opendbc/car/honda/tests/test_honda.py @@ -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 diff --git a/selfdrive/controls/lib/latcontrol_pid.py b/selfdrive/controls/lib/latcontrol_pid.py index 159705a63..c9f92a351 100644 --- a/selfdrive/controls/lib/latcontrol_pid.py +++ b/selfdrive/controls/lib/latcontrol_pid.py @@ -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 diff --git a/selfdrive/controls/lib/latcontrol_torque.py b/selfdrive/controls/lib/latcontrol_torque.py index 1b4c8c438..adf2f4c80 100644 --- a/selfdrive/controls/lib/latcontrol_torque.py +++ b/selfdrive/controls/lib/latcontrol_torque.py @@ -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