mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-06-30 02:52:04 +08:00
honda I6
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user