Compare commits

..

79 Commits

Author SHA1 Message Date
firestar5683 4676f5040e User adjustable offsets 2026-02-07 23:34:19 -06:00
firestar5683 157f2e87bb Integrator Smooth On Handoff 2026-02-06 15:47:52 -06:00
firestar5683 30292fc0c6 Lights 2026-02-05 22:39:50 -06:00
firestar5683 6e1a7c31b3 totallytune panda 2026-02-05 17:26:33 -06:00
firestar5683 8442ffe591 New Models 2026-02-05 15:07:24 -06:00
firestar5683 447b0bb45e Revert "merry christmas"
This reverts commit 8a9d0e5e6a.
2026-02-05 13:33:49 -06:00
firestar5683 79134158d9 Increase Fault Resilience 2026-02-05 13:29:59 -06:00
firestarsdog 99474cee8e Stats 2026-02-02 01:08:29 -05:00
firestarsdog 8dd6090ef3 Stats 2026-02-01 22:46:57 -06:00
firestar5683 d95713f4d1 Revert "Mac Update"
This reverts commit ea45cbe017.
2026-01-19 11:42:50 -06:00
firestarsdog 83cb43b89b Add SASCM to vehicle settings detection/stats 2026-01-19 10:35:13 -06:00
firestar5683 ea45cbe017 Mac Update 2026-01-18 22:22:14 -06:00
firestarsdog 63d383b25d Stats 2026-01-18 22:17:33 -06:00
firestar5683 b4062aee1e Update redneck 2026-01-15 22:50:59 -06:00
firestar5683 d5370e728e fix redneck v2 2026-01-14 13:59:08 -06:00
firestar5683 8a250d2858 Remove lat smooth seconds 2026-01-14 13:49:54 -06:00
firestar5683 c3e1e7288d frogpilot migration 2026-01-12 22:10:50 -06:00
firestar5683 0b9580bef9 More defaults 2026-01-12 22:05:38 -06:00
firestar5683 5bad879e55 Update defaults 2026-01-12 22:00:37 -06:00
firestar5683 a074f21a22 Big Mac 2026-01-11 16:59:31 -06:00
firestar5683 e48ba846f2 Try Higher Friction 2026-01-10 14:05:08 -06:00
firestar5683 fb925bed9e Autotune Off 2026-01-09 22:42:28 -06:00
firestar5683 f5defdaf2b Revert "Pedal Braking Limits"
This reverts commit 99bbbdecc7.
2025-12-31 20:55:46 -06:00
firestar5683 99bbbdecc7 Pedal Braking Limits 2025-12-30 20:18:05 -06:00
firestar5683 234d0fd839 merry christmas 2025-12-24 22:05:43 -06:00
firestar5683 53f07efbea ds2 2025-12-24 21:30:02 -06:00
firestar5683 326d151c22 Try friction adjustment 2025-12-16 14:39:31 -06:00
firestar5683 0e804a744d Update frogpilot_tracking.py 2025-12-15 00:56:19 -06:00
firestar5683 4198a0b5b3 minsteer speed 2025-12-14 14:47:33 -06:00
firestar5683 7a9cad491e Update Percentages 2025-12-13 19:14:39 -06:00
firestar5683 5b2a526187 Trailer Load Gas Tuning 2025-12-12 10:52:25 -06:00
firestar5683 f6a713430f Live Friction 2025-12-11 16:55:02 -06:00
firestar5683 57df9bcb8f Zero error 2025-12-11 15:13:34 -06:00
firestar5683 0ad3c7d2ad Updates
Update latcontrol_torque.py

interp friction threshold
2025-12-09 19:59:03 -06:00
firestar5683 8730738d75 Change NoEntryAlert message to 'Reverse Gear' 2025-12-06 16:46:37 -06:00
firestar5683 5add756e0b Update events.py 2025-12-05 20:13:56 -06:00
firestar5683 0561c28111 LattyBoi2.0 2025-12-03 23:30:51 -06:00
firestar5683 7d0ad593f8 Latty Boi
Revert "Latty Boi"

This reverts commit af687e501cc4bdcda7840453d06595d7ea674148.

Reapply "Latty Boi"

This reverts commit ff5566d4439f5e4997fe83f4f21d0be62b75d75d.
2025-12-02 20:30:55 -06:00
firestar5683 8630c5d515 Recovery Power 2025-12-02 17:19:53 -06:00
firestar5683 9f24290bfd New planplus 2025-12-02 12:09:30 -06:00
Woohyun Rho 35b2647d5f Update 2025-11-28 17:12:28 -06:00
firestar5683 0cc453e26b Update interface.py 2025-11-18 20:50:08 -06:00
firestar5683 a49352e93d New Lateral Changes 2025-11-18 20:49:48 -06:00
firestar5683 e45f9f0c71 Update 2025-11-15 14:46:26 -06:00
firestar5683 7fa7f1e9f7 Accel Tests 2025-11-14 20:32:57 -06:00
firestar5683 60bd28ff13 Paddle Planner 2025-11-14 01:26:45 -06:00
firestar5683 c71f77ad83 Revert "Upstream Lateral"
This reverts commit 2db997763b.
2025-11-10 23:09:05 -06:00
firestar5683 2db997763b Upstream Lateral
Revert "Upstream Lateral"

This reverts commit 20f7d6631bb152860781b46533bb0e96223be132.

Reapply "Upstream Lateral"

This reverts commit 2a7a563e219a1b688529d341919fc377fed5038e.

Update latcontrol_torque.py

more lateral

Update ui
2025-11-07 00:14:49 -06:00
firestar5683 a22f6f8a9f Update 2025-10-25 15:38:29 -05:00
firestar5683 a248ab5af4 Medium Fanta 2025-10-22 22:27:04 -05:00
firestar5683 a7b04eb17a Update interfaces.py 2025-10-20 13:49:50 -05:00
firestar5683 0566438f2b no nnff 2025-10-19 18:00:03 -05:00
firestar5683 07deeea206 Scene Complexity 2025-10-18 14:25:25 -05:00
firestar5683 2379303a47 Update carcontroller.py 2025-10-17 19:11:02 -05:00
firestar5683 52881ebf63 Update interface.py 2025-10-17 18:14:07 -05:00
firestar5683 3b744c4a1b CEM 2025-10-17 17:39:47 -05:00
firestar5683 5ed463c519 lite 2025-10-17 17:13:44 -05:00
firestar5683 d5eff476f8 Redneck 2.0 2025-10-17 16:56:02 -05:00
firestar5683 c7ca8a893e Modify torque tuning parameters in interfaces.py
Adjusted torque tuning parameters for improved performance.
2025-10-17 16:55:19 -05:00
firestar5683 06bf8e1f68 Hurts Donut 2025-10-16 23:58:10 -05:00
firestar5683 56514aecf4 Smoothy Boi 2025-10-16 23:38:25 -05:00
firestar5683 7664f0286e lat3 2025-10-15 22:20:57 -05:00
firestar5683 a8ab890526 New Lateral Changes 2025-10-10 20:59:36 -05:00
firestar5683 6a9beeffab Fix Standard 2025-10-10 19:25:18 -05:00
firestar5683 377e358a2d Update interface.py 2025-10-08 23:25:25 -05:00
firestar5683 334cb46f6a error? 2025-10-08 23:14:17 -05:00
firestar5683 123989746d Fix New Devices 2025-10-08 22:20:23 -05:00
firestar5683 376aeb5abd No positive P-response for long control if user-selected parameter set 2025-10-08 07:44:27 -05:00
firestar5683 bb15212f7a Automatic updates 2025-10-04 16:03:11 -05:00
firestar5683 9cc903bd0f Steer Alerts 2025-10-04 01:49:44 -05:00
firestar5683 7bbc404d7a Update frogpilot_acceleration.py 2025-10-03 22:42:30 -05:00
firestar5683 d10305b1df SteerAlerts
Revert "SteerAlerts"

This reverts commit cbaba399c5b9caac5a8faf3917f0929d747a0acc.

Update controlsd.py
2025-10-03 22:14:43 -05:00
firestar5683 8399fbf4d5 Donut DM 2025-10-03 20:50:58 -05:00
firestar5683 e87c44079c Update gm_global_a_powertrain_generated.dbc 2025-10-03 16:41:39 -05:00
firestar5683 499330da52 Update 2025-10-03 00:44:11 -05:00
firestar5683 6bc3bf50d8 firehose 2025-09-30 20:47:31 -05:00
firestar5683 2fa7f4e625 Update 2025-09-30 14:30:27 -05:00
firestar5683 c67fe623e8 2017 2025-09-30 09:11:52 -05:00
firestar5683 87cc231c90 Dom 2025-09-30 08:59:17 -05:00
11 changed files with 24 additions and 98 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+7 -7
View File
@@ -1,11 +1,11 @@
const SteeringLimits GM_STEERING_LIMITS = {
.max_steer = 300,
.max_rate_up = 10,
.max_rate_down = 15,
.driver_torque_allowance = 65,
.driver_torque_factor = 4,
.max_rt_delta = 128,
.max_rt_interval = 250000,
.max_steer = 450,
.max_rate_up = 15,
.max_rate_down = 34,
.driver_torque_allowance = 78,
.driver_torque_factor = 6,
.max_rt_delta = 345,
.max_rt_interval = 200000,
.type = TorqueDriverLimited,
};
+5 -25
View File
@@ -27,22 +27,10 @@ CAM_MSG = 0x320 # AEBCmd
ACCELERATOR_POS_MSG = 0xbe
NON_LINEAR_TORQUE_PARAMS = {
CAR.CHEVROLET_BOLT_EUV: {
"left": [1.8, 1.1, 0.27, 0.0],
"right": [2.0, 1.0, 0.205, 0.0],
},
CAR.CHEVROLET_BOLT_CC: {
"left": [1.8, 1.1, 0.27, 0.0],
"right": [2.0, 1.0, 0.205, 0.0],
},
CAR.GMC_ACADIA: {
"left": [4.78003305, 1.0, 0.3122, 0.05591772],
"right": [4.78003305, 1.0, 0.3122, 0.05591772],
},
CAR.CHEVROLET_SILVERADO: {
"left": [3.29974374, 1.0, 0.25571356, 0.0465122],
"right": [3.29974374, 1.0, 0.25571356, 0.0465122],
},
CAR.CHEVROLET_BOLT_EUV: [2.15, 1.0, 0.21, 0.0],
CAR.CHEVROLET_BOLT_CC: [2.15, 1.0, 0.21, 0.0],
CAR.GMC_ACADIA: [4.78003305, 1.0, 0.3122, 0.05591772],
CAR.CHEVROLET_SILVERADO: [3.29974374, 1.0, 0.25571356, 0.0465122]
}
@@ -76,9 +64,7 @@ class CarInterface(CarInterfaceBase):
# This has big effect on the stability about 0 (noise when going straight)
non_linear_torque_params = NON_LINEAR_TORQUE_PARAMS.get(self.CP.carFingerprint)
assert non_linear_torque_params, "The params are not defined"
# Left is positive
side_key = "left" if lateral_acceleration >= 0 else "right"
a, b, c, d = non_linear_torque_params[side_key]
a, b, c, d = non_linear_torque_params
sig_input = a * lateral_acceleration
sig = np.sign(sig_input) * (1 / (1 + exp(-fabs(sig_input))) - 0.5)
steer_torque = (sig * b) + (lateral_acceleration * c) + d
@@ -239,12 +225,6 @@ class CarInterface(CarInterfaceBase):
ret.steerActuatorDelay = 0.2
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
# Bolt-only lateral tuning overrides
ret.lateralTuning.torque.kp = 1.03
ret.lateralTuning.torque.ki = 1.07
ret.lateralTuning.torque.kd = 0.93
ret.lateralTuning.torque.kfDEPRECATED = 0.02
if ret.enableGasInterceptor:
# ACC Bolts use pedal for full longitudinal control, not just sng
ret.flags |= GMFlags.PEDAL_LONG.value
+5 -5
View File
@@ -11,13 +11,13 @@ Ecu = car.CarParams.Ecu
class CarControllerParams:
STEER_MAX = 300 # GM limit is 3Nm. Used by carcontroller to generate LKA output
STEER_MAX = 450 # GM limit is 3Nm. Used by carcontroller to generate LKA output
STEER_STEP = 3 # Active control frames per command (~33hz)
INACTIVE_STEER_STEP = 10 # Inactive control frames per command (10hz)
STEER_DELTA_UP = 10 # Delta rates require review due to observed EPS weakness
STEER_DELTA_DOWN = 15
STEER_DRIVER_ALLOWANCE = 65
STEER_DRIVER_MULTIPLIER = 4
STEER_DELTA_UP = 15 # Delta rates require review due to observed EPS weakness
STEER_DELTA_DOWN = 34
STEER_DRIVER_ALLOWANCE = 78
STEER_DRIVER_MULTIPLIER = 6
STEER_DRIVER_FACTOR = 100
NEAR_STOP_BRAKE_PHASE = 0.25 # m/s
SNG_INTERCEPTOR_GAS = 18. / 255.
+3 -3
View File
@@ -37,12 +37,12 @@ EventName = car.CarEvent.EventName
MAX_CTRL_SPEED = (V_CRUISE_MAX + 4) * CV.KPH_TO_MS
ACCEL_MAX = 2.0
ACCEL_MIN = -3.5
FRICTION_THRESHOLD = 0.12
FRICTION_THRESHOLD = 0.09
def get_friction_threshold(v_ego):
# Interpolate friction threshold
# Interpolate friction threshold from 0.09 at 50 mph to 0.15 at 75 mph
from openpilot.common.numpy_fast import interp
return interp(v_ego, [1 * CV.MPH_TO_MS, 75 * CV.MPH_TO_MS], [0.12, 0.3])
return interp(v_ego, [1 * CV.MPH_TO_MS, 75 * CV.MPH_TO_MS], [0.12, 0.25])
TORQUE_PARAMS_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/params.toml')
TORQUE_OVERRIDE_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/override.toml')
+1 -1
View File
@@ -43,7 +43,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
"CADILLAC_ESCALADE" = [1.899999976158142, 1.842270016670227, 0.1120000034570694]
"CADILLAC_ESCALADE_ESV_2019" = [1.15, 1.3, 0.2]
"CADILLAC_XT4" = [1.45, 1.6, 0.2]
"CHEVROLET_BOLT_EUV" = [2.0, 2.0, 0.09]
"CHEVROLET_BOLT_EUV" = [2.0, 2.0, 0.05]
"CHEVROLET_MALIBU_CC" = [1.85, 1.85, 0.075]
"CHEVROLET_SILVERADO" = [1.9, 1.9, 0.112]
"CHEVROLET_TRAILBLAZER" = [1.33, 1.9, 0.16]
+3 -49
View File
@@ -7,7 +7,6 @@ from openpilot.selfdrive.car.interfaces import FRICTION_THRESHOLD, get_friction_
from openpilot.selfdrive.controls.lib.drive_helpers import MIN_SPEED, get_friction
from openpilot.common.filter_simple import FirstOrderFilter
from openpilot.selfdrive.controls.lib.latcontrol import LatControl, MIN_LATERAL_CONTROL_SPEED
from openpilot.selfdrive.car.gm.values import CAR as GM_CAR
from openpilot.selfdrive.controls.lib.pid import PIDController
from openpilot.selfdrive.controls.lib.vehicle_model import ACCELERATION_DUE_TO_GRAVITY
@@ -22,8 +21,8 @@ from openpilot.selfdrive.controls.lib.vehicle_model import ACCELERATION_DUE_TO_G
# Additionally, there is friction in the steering wheel that needs
# to be overcome to move it at all, this is compensated for too.
KP = 0.7
KI = 0.35
KP = 0.6
KI = 0.3
INTERP_SPEEDS = [1, 1.5, 2.0, 3.0, 5, 7.5, 10, 15, 30]
KP_INTERP = [250, 120, 65, 30, 11.5, 5.5, 3.5, 2.0, KP]
@@ -37,13 +36,6 @@ JERK_LOOKAHEAD_SECONDS = 0.19
JERK_GAIN = 0.22
LAT_ACCEL_REQUEST_BUFFER_SECONDS = 1.0
VERSION = 2
DEBUG_TORQUE_TUNE = False
FF_SCALE_BLEND_LAT_ACCEL = 0.05
DEADZONE_BOOST_LAT_ACCEL = 0.08
UNWIND_D_DES_THRESHOLD = -1.0
UNWIND_LAT_ACCEL_NEAR_ZERO = 0.3
BOLT_CARS = (GM_CAR.CHEVROLET_BOLT_EUV, GM_CAR.CHEVROLET_BOLT_CC)
class LatControlTorque(LatControl):
def __init__(self, CP, CI, dt):
@@ -63,21 +55,6 @@ class LatControlTorque(LatControl):
self.previous_measurement = 0.0
self.measurement_rate_filter = FirstOrderFilter(0.0, 1 / (2 * np.pi * (MAX_LAT_JERK_UP - 0.5)), self.dt)
self.low_speed_reset_threshold = max(CP.minSteerSpeed, MIN_LATERAL_CONTROL_SPEED)
self.debug_counter = 0
self.prev_desired_lateral_accel = 0.0
self.is_bolt = CP.carFingerprint in BOLT_CARS
self.torque_ff_scale_pos = 1.0
self.torque_ff_scale_neg = 1.0
self.torque_deadzone_boost_neg = 0.0
self.torque_ki_mult = 1.0
if self.is_bolt:
self.torque_ff_scale_pos = float(self.torque_params.kp)
self.torque_ff_scale_neg = float(self.torque_params.ki)
self.torque_ki_mult = float(self.torque_params.kd)
self.torque_deadzone_boost_neg = float(getattr(self.torque_params, "kfDEPRECATED", 0.0))
if self.torque_ki_mult > 0.0 and self.torque_ki_mult != 1.0:
self.pid._k_i = [self.pid._k_i[0], [k * self.torque_ki_mult for k in self.pid._k_i[1]]]
def update_live_torque_params(self, latAccelFactor, latAccelOffset, friction):
self.torque_params.latAccelFactor = latAccelFactor
@@ -99,7 +76,6 @@ class LatControlTorque(LatControl):
self.previous_measurement = 0.0
self.measurement_rate_filter.x = 0.0
self.lat_accel_request_buffer = deque([0.] * self.lat_accel_request_buffer_len , maxlen=self.lat_accel_request_buffer_len)
self.prev_desired_lateral_accel = 0.0
else:
if self.prev_steering_pressed and not CS.steeringPressed:
self.pid.i *= self.steer_release_i_decay
@@ -118,10 +94,6 @@ class LatControlTorque(LatControl):
desired_lateral_jerk = np.clip(self.jerk_filter.update(raw_lateral_jerk), -MAX_LAT_JERK_UP, MAX_LAT_JERK_UP)
gravity_adjusted_future_lateral_accel = future_desired_lateral_accel - roll_compensation
setpoint = expected_lateral_accel + desired_lateral_jerk * lat_delay
desired_lateral_accel_rate = (setpoint - self.prev_desired_lateral_accel) / self.dt
unwind_detected = (desired_lateral_accel_rate < UNWIND_D_DES_THRESHOLD and
abs(setpoint) < UNWIND_LAT_ACCEL_NEAR_ZERO)
self.prev_desired_lateral_accel = setpoint
measurement = measured_curvature * CS.vEgo ** 2
measurement_rate = self.measurement_rate_filter.update((measurement - self.previous_measurement) / self.dt)
@@ -138,23 +110,11 @@ class LatControlTorque(LatControl):
ff = gravity_adjusted_future_lateral_accel
# latAccelOffset corrects roll compensation bias from device roll misalignment relative to car roll
ff -= self.torque_params.latAccelOffset
ff_scale = 1.0
if self.is_bolt:
ff_scale = np.interp(ff, [-FF_SCALE_BLEND_LAT_ACCEL, 0.0, FF_SCALE_BLEND_LAT_ACCEL],
[self.torque_ff_scale_neg, 1.0, self.torque_ff_scale_pos])
ff *= ff_scale
ff += get_friction(error_with_lsf + JERK_GAIN * desired_lateral_jerk, lateral_accel_deadzone, get_friction_threshold(CS.vEgo), self.torque_params)
deadzone_boost_active = False
if self.is_bolt and self.torque_deadzone_boost_neg > 0.0 and gravity_adjusted_future_lateral_accel < 0.0:
if abs(gravity_adjusted_future_lateral_accel) < DEADZONE_BOOST_LAT_ACCEL:
boost_scale = np.interp(abs(gravity_adjusted_future_lateral_accel), [0.0, DEADZONE_BOOST_LAT_ACCEL], [1.0, 0.0])
ff -= self.torque_deadzone_boost_neg * boost_scale
deadzone_boost_active = True
if CS.vEgo < self.low_speed_reset_threshold:
self.pid.reset()
freeze_integrator = (steer_limited_by_safety or CS.steeringPressed or
CS.vEgo < self.low_speed_reset_threshold or unwind_detected)
freeze_integrator = steer_limited_by_safety or CS.steeringPressed or CS.vEgo < self.low_speed_reset_threshold
output_lataccel = self.pid.update(pid_log.error, error_rate=-measurement_rate, speed=CS.vEgo, feedforward=ff, freeze_integrator=freeze_integrator)
output_torque = self.torque_from_lateral_accel(output_lataccel, self.torque_params)
@@ -169,12 +129,6 @@ class LatControlTorque(LatControl):
pid_log.desiredLateralJerk = float(desired_lateral_jerk)
pid_log.saturated = bool(self._check_saturation(self.steer_max - abs(output_torque) < 1e-3, CS, steer_limited_by_safety, curvature_limited))
if DEBUG_TORQUE_TUNE and self.is_bolt:
self.debug_counter += 1
if self.debug_counter % 50 == 0:
print(f"bolt_torque ff_scale={ff_scale:.3f} pos={self.torque_ff_scale_pos:.3f} "
f"neg={self.torque_ff_scale_neg:.3f} deadzone_boost_active={deadzone_boost_active}")
self.prev_steering_pressed = CS.steeringPressed
# TODO left is positive in this convention
-8
View File
@@ -180,14 +180,6 @@ def manager_init() -> None:
with open(lateral_tuning_migration_flag_file, "w") as f:
f.write("migrated")
# One-time migration for MaxDesiredAcceleration to 4
max_desired_acceleration_migration_flag_file = "/data/media/0/frogpilot_max_desired_acceleration_migrated.flag"
if not os.path.exists(max_desired_acceleration_migration_flag_file):
if params.get_float("MaxDesiredAcceleration") != 4.0:
params.put_float("MaxDesiredAcceleration", 4.0)
with open(max_desired_acceleration_migration_flag_file, "w") as f:
f.write("migrated")
# set dongle id
reg_res = register(show_spinner=True)
if reg_res: