Compare commits

..

94 Commits

Author SHA1 Message Date
firestar5683 0d22009343 User adjustable offsets 2026-02-07 23:34:35 -06:00
firestar5683 efa430bf4d Integrator Smooth On Handoff 2026-02-06 15:47:39 -06:00
firestar5683 d90b2a6342 Revert "merry christmas"
This reverts commit 833bea5bcd.
2026-02-05 22:50:43 -06:00
firestar5683 d7839b2d08 Lights 2026-02-05 22:39:58 -06:00
firestar5683 f590e27735 totallytune panda 2026-02-05 17:26:25 -06:00
firestar5683 66d56cae79 New Models 2026-02-05 15:09:21 -06:00
firestar5683 ac91a5762d Increase Fault Resilience 2026-02-05 13:30:20 -06:00
firestarsdog 4138d33a14 Stats 2026-02-02 01:14:08 -05:00
firestarsdog fd8ff076b7 Stats 2026-02-01 22:46:22 -06:00
firestar5683 fe3aaa017a More relaxed tuning params 2026-02-01 22:24:39 -06:00
firestar5683 7021e377a2 Revert "Torque Controller Update"
This reverts commit 27803113e9.
2026-01-21 10:03:29 -06:00
firestar5683 0c5a7b58f8 Revert "Split Tune"
This reverts commit 3ed579f39e.
2026-01-21 10:03:21 -06:00
firestar5683 ecaf1e278a Update override.toml 2026-01-19 21:19:21 -06:00
firestar5683 0364574b0a Revert "Mac Update"
This reverts commit 93af0e0450.
2026-01-19 11:41:57 -06:00
firestarsdog 0ecfebfcdb Add SASCM to vehicle settings detection/stats 2026-01-19 10:38:53 -06:00
firestar5683 93af0e0450 Mac Update 2026-01-18 22:23:18 -06:00
firestarsdog 0e7b41f5ac Stats 2026-01-18 22:17:06 -06:00
firestar5683 3ed579f39e Split Tune 2026-01-18 22:05:47 -06:00
firestar5683 27803113e9 Torque Controller Update 2026-01-18 22:01:01 -06:00
firestar5683 7c3a5599ee Update redneck 2026-01-15 22:52:46 -06:00
firestar5683 ba7df481de fix redneck v2 2026-01-14 13:59:01 -06:00
firestar5683 23b415ca73 Remove lat smooth seconds 2026-01-14 13:49:48 -06:00
firestar5683 7616edc8e2 frogpilot migration 2026-01-12 22:10:45 -06:00
firestar5683 745673879c More defaults 2026-01-12 22:05:43 -06:00
firestar5683 7198e296b4 Update defaults 2026-01-12 22:00:31 -06:00
firestar5683 2583f7e014 Big Mac 2026-01-11 16:59:36 -06:00
firestar5683 e8e2bf5580 Try Higher Friction 2026-01-10 14:05:13 -06:00
firestar5683 9cfbfacf34 Autotune Off 2026-01-09 22:42:20 -06:00
firestar5683 9164e75bf8 Revert "Pedal Braking Limits"
This reverts commit 4c125d40d5.
2025-12-31 20:56:10 -06:00
firestar5683 4c125d40d5 Pedal Braking Limits 2025-12-30 20:18:24 -06:00
firestar5683 833bea5bcd merry christmas 2025-12-24 22:22:55 -06:00
firestar5683 2c76c2ff6e ds2 2025-12-24 21:31:01 -06:00
firestar5683 652c7e9cf7 Try friction adjustment 2025-12-16 14:39:03 -06:00
firestar5683 27dfba30d6 Update frogpilot_tracking.py 2025-12-15 00:56:47 -06:00
firestar5683 060cc825cb minsteer speed 2025-12-14 14:47:56 -06:00
firestar5683 37e26c57da Update Percentages 2025-12-13 19:15:13 -06:00
firestar5683 e74c0dfe46 Trailer Load Gas Tuning 2025-12-12 10:53:22 -06:00
firestar5683 8efc228063 Live Friction 2025-12-11 16:56:25 -06:00
firestar5683 11774e1961 Zero error 2025-12-11 15:12:46 -06:00
firestar5683 c1ccb837c1 Update latcontrol_torque.py 2025-12-09 17:04:07 -06:00
firestar5683 28f9c6c917 interp friction threshold 2025-12-09 16:51:22 -06:00
firestar5683 3d7ce5237b smoother unwind
Revert "smoother unwind"

This reverts commit 10f9bcc9a8c00ebd1734d4e88359e2c1e4d5e0e2.

Reapply "smoother unwind"

This reverts commit fed67ae4e86695e505563717e59d3d18843a550b.
2025-12-08 20:49:58 -06:00
firestar5683 750638ac6a Nobody try this til I say so 2025-12-08 14:47:42 -06:00
firestar5683 125746589a Fix 2025-12-07 16:52:46 -06:00
firestar5683 4b65a4dd4d Updates
Reverse Fix
New Lateral Torque Tuning
Advanced Lateral Panel Fix
2025-12-07 16:16:32 -06:00
firestar5683 d08cdc7cfe Change NoEntryAlert message to 'Reverse Gear' 2025-12-06 16:45:09 -06:00
firestar5683 ee4d07fd61 Update events.py 2025-12-05 20:14:41 -06:00
firestar5683 29e7fb3cef LattyBoi2.0 2025-12-03 23:31:46 -06:00
firestar5683 31e50774a5 Latty Boi
Revert "Latty Boi"

This reverts commit af687e501cc4bdcda7840453d06595d7ea674148.

Reapply "Latty Boi"

This reverts commit ff5566d4439f5e4997fe83f4f21d0be62b75d75d.
2025-12-02 20:30:13 -06:00
firestar5683 aef9f61240 Recovery Power 2025-12-02 17:21:27 -06:00
firestar5683 50a3d544d4 New planplus 2025-12-02 12:10:30 -06:00
Woohyun Rho b07d455a77 Update 2025-11-28 17:12:44 -06:00
firestar5683 faa01306ce Update interface.py 2025-11-18 20:50:17 -06:00
firestar5683 a4ab9d7d59 New Lateral Changes 2025-11-18 20:50:17 -06:00
firestar5683 c862021fbb Update 2025-11-15 14:46:39 -06:00
firestar5683 1d65b32500 Accel Tests 2025-11-14 20:32:52 -06:00
firestar5683 0f3b1c4ed1 Paddle Planner 2025-11-14 01:26:51 -06:00
firestar5683 0642960c0c Revert "Upstream Lateral"
This reverts commit da473770b1.
2025-11-10 23:09:45 -06:00
firestar5683 da473770b1 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:15:25 -06:00
firestar5683 4a2379714c Update 2025-10-25 15:41:55 -05:00
firestar5683 390717786a follow filter update 2025-10-22 23:26:40 -05:00
firestar5683 4c8e81470c Medium Fanta 2025-10-22 22:23:48 -05:00
firestar5683 70aaa9a1b8 Revert "Update longitudinal_planner.py"
This reverts commit f81ebc40ef.
2025-10-22 16:34:26 -05:00
firestar5683 434c283eb3 New Following 2025-10-22 14:51:33 -05:00
firestar5683 be37e0443b Update interfaces.py 2025-10-20 13:49:43 -05:00
firestar5683 92183fc007 no nnff 2025-10-19 18:01:25 -05:00
firestar5683 bff349c9d0 Scene Complexity 2025-10-18 14:26:15 -05:00
firestar5683 051029ee93 Update carcontroller.py 2025-10-17 19:10:47 -05:00
firestar5683 c921013474 Update interface.py 2025-10-17 18:14:40 -05:00
firestar5683 901d0c7fa9 CEM 2025-10-17 17:39:53 -05:00
firestar5683 7956d4f702 lite 2025-10-17 17:13:50 -05:00
firestar5683 e5b32259d8 Redneck 2.0 2025-10-17 17:02:32 -05:00
firestar5683 be0a836307 Modify torque tuning parameters in interfaces.py
Adjusted torque tuning parameters for improved performance.
2025-10-17 16:55:13 -05:00
firestar5683 fa8b5c3656 Hurts Donut 2025-10-16 23:58:17 -05:00
firestar5683 32d021bef3 Smoothy Boi 2025-10-16 23:38:35 -05:00
firestar5683 eb902a609f lat3 2025-10-15 23:17:31 -05:00
firestar5683 717d94048b New Logo 2025-10-15 23:17:31 -05:00
firestar5683 e0b78a9b64 Fix Standard 2025-10-10 20:58:03 -05:00
firestar5683 9292b81de0 New Lateral Changes 2025-10-10 20:58:03 -05:00
firestar5683 bf67329ae0 Update interface.py 2025-10-08 23:25:32 -05:00
firestar5683 790daa8505 error? 2025-10-08 23:14:05 -05:00
firestar5683 0d352b3e36 Fix New Devices 2025-10-08 22:20:44 -05:00
firestar5683 4f817a555e No positive P-response for long control if user-selected parameter set 2025-10-08 07:45:09 -05:00
firestar5683 0fd2c9441b Automatic updates 2025-10-04 16:01:42 -05:00
firestar5683 9951cbf587 Steer Alerts 2025-10-04 01:48:35 -05:00
firestar5683 40084af0c1 Update frogpilot_acceleration.py 2025-10-03 22:42:57 -05:00
firestar5683 5e568fffb4 SteerAlerts
Revert "SteerAlerts"

This reverts commit cbaba399c5b9caac5a8faf3917f0929d747a0acc.

Update controlsd.py
2025-10-03 22:12:27 -05:00
firestar5683 754ff86b50 Donut DM 2025-10-03 20:47:15 -05:00
firestar5683 9ff058110e Update 2025-10-03 00:44:37 -05:00
firestar5683 91ec00b71e firehose 2025-09-30 20:46:04 -05:00
firestar5683 690e5c3a9d Update 2025-09-30 14:32:06 -05:00
firestar5683 1aee027d2f Dolphin 2025-09-30 09:15:07 -05:00
firestar5683 c67fe623e8 2017 2025-09-30 09:11:52 -05:00
firestar5683 87cc231c90 Dom 2025-09-30 08:59:17 -05:00
16 changed files with 31 additions and 105 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 503 KiB

After

Width:  |  Height:  |  Size: 858 KiB

+2 -2
View File
@@ -620,9 +620,9 @@ class FrogPilotVariables:
toggle.steer_offset = np.clip(params.get_float("SteerOffset"), -0.2, 0.2) if advanced_lateral_tuning and tuning_level >= level["SteerOffset"] and toggle.car_make == "gm" else 0.0
toggle.use_custom_friction = bool(round(toggle.friction, 2) != round(friction, 2)) and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off
toggle.steerKp = [[0], [np.clip(params.get_float("SteerKP"), steerKp * 0.5, steerKp * 1.5) if advanced_lateral_tuning and is_torque_car and tuning_level >= level["SteerKP"] else steerKp]]
toggle.latAccelFactor = np.clip(params.get_float("SteerLatAccel"), latAccelFactor * 0.75, latAccelFactor * 1.25) if advanced_lateral_tuning and tuning_level >= level["SteerLatAccel"] else latAccelFactor
toggle.latAccelFactor = np.clip(params.get_float("SteerLatAccel"), latAccelFactor * 0.5, latAccelFactor * 1.25) if advanced_lateral_tuning and tuning_level >= level["SteerLatAccel"] else latAccelFactor
toggle.use_custom_latAccelFactor = bool(round(toggle.latAccelFactor, 2) != round(latAccelFactor, 2)) and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off
toggle.steerRatio = np.clip(params.get_float("SteerRatio"), steerRatio * 0.5, steerRatio * 1.5) if advanced_lateral_tuning and tuning_level >= level["SteerRatio"] else steerRatio
toggle.steerRatio = np.clip(params.get_float("SteerRatio"), steerRatio * 0.25, steerRatio * 1.5) if advanced_lateral_tuning and tuning_level >= level["SteerRatio"] else steerRatio
toggle.use_custom_steerRatio = bool(round(toggle.steerRatio, 2) != round(steerRatio, 2)) and not toggle.force_auto_tune or toggle.force_auto_tune_off
advanced_longitudinal_tuning = params.get_bool("AdvancedLongitudinalTune") if tuning_level >= level["AdvancedLongitudinalTune"] else default.get_bool("AdvancedLongitudinalTune")
+4 -4
View File
@@ -96,10 +96,10 @@ FrogPilotLateralPanel::FrogPilotLateralPanel(FrogPilotSettingsWindow *parent) :
lateralToggle = new FrogPilotParamValueButtonControl(param, title, desc, icon, parent->steerKp * 0.5, parent->steerKp * 1.5, QString(), std::map<float, QString>(), 0.01, false, {}, steerKPButton, false, false);
} else if (param == "SteerLatAccel") {
std::vector<QString> steerLatAccelButton{"Reset"};
lateralToggle = new FrogPilotParamValueButtonControl(param, title, desc, icon, parent->latAccelFactor * 0.75, parent->latAccelFactor * 1.25, QString(), std::map<float, QString>(), 0.01, false, {}, steerLatAccelButton, false, false);
lateralToggle = new FrogPilotParamValueButtonControl(param, title, desc, icon, parent->latAccelFactor * 0.5, parent->latAccelFactor * 1.25, QString(), std::map<float, QString>(), 0.01, false, {}, steerLatAccelButton, false, false);
} else if (param == "SteerRatio") {
std::vector<QString> steerRatioButton{"Reset"};
lateralToggle = new FrogPilotParamValueButtonControl(param, title, desc, icon, parent->steerRatio * 0.5, parent->steerRatio * 1.5, QString(), std::map<float, QString>(), 0.01, false, {}, steerRatioButton, false, false);
lateralToggle = new FrogPilotParamValueButtonControl(param, title, desc, icon, parent->steerRatio * 0.25, parent->steerRatio * 1.5, QString(), std::map<float, QString>(), 0.01, false, {}, steerRatioButton, false, false);
} else if (param == "AlwaysOnLateral") {
FrogPilotManageControl *aolToggle = new FrogPilotManageControl(param, title, desc, icon);
@@ -271,9 +271,9 @@ void FrogPilotLateralPanel::showEvent(QShowEvent *event) {
steerKPToggle->setTitle(QString(tr("Kp Factor (Default: %1)")).arg(QString::number(parent->steerKp, 'f', 2)));
steerKPToggle->updateControl(parent->steerKp * 0.5, parent->steerKp * 1.5);
steerLatAccelToggle->setTitle(QString(tr("Lateral Accel (Default: %1)")).arg(QString::number(parent->latAccelFactor, 'f', 2)));
steerLatAccelToggle->updateControl(parent->latAccelFactor * 0.75, parent->latAccelFactor * 1.25);
steerLatAccelToggle->updateControl(parent->latAccelFactor * 0.5, parent->latAccelFactor * 1.25);
steerRatioToggle->setTitle(QString(tr("Steer Ratio (Default: %1)")).arg(QString::number(parent->steerRatio, 'f', 2)));
steerRatioToggle->updateControl(parent->steerRatio * 0.5, parent->steerRatio * 1.5);
steerRatioToggle->updateControl(parent->steerRatio * 0.25, parent->steerRatio * 1.5);
updateToggles();
}
+1 -1
View File
@@ -233,7 +233,7 @@ BO_ 715 ASCMGasRegenCmd: 8 K124_ASCM
SG_ GasRegenCmdActive : 0|1@0+ (1,0) [0|0] "" NEO
SG_ RollingCounter : 7|2@0+ (1,0) [0|0] "" NEO
SG_ GasRegenAlwaysOne3 : 23|1@0+ (1,0) [0|1] "" NEO
SG_ GasRegenCmd : 8|14@0+ (1,0) [0|0] "" NEO
SG_ GasRegenCmd : 22|12@0+ (1,0) [0|0] "" NEO
BO_ 717 ASCM_2CD: 5 K124_ASCM
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,
};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 KiB

After

Width:  |  Height:  |  Size: 671 KiB

+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')
+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
+1 -1
View File
@@ -135,7 +135,7 @@ def main():
CP = msg
cloudlog.info("paramsd got CarParams")
min_sr, max_sr = 0.5 * CP.steerRatio, 2.0 * CP.steerRatio
min_sr, max_sr = 0.25 * CP.steerRatio, 2.0 * CP.steerRatio
params = params_reader.get("LiveParameters")
-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: