Revert "latcontrol_torque: retune torque controller (#36392)"

This reverts commit 76c5cb6d87.
pull/36574/head
felsager 5 days ago
parent 9bf904e8a6
commit 177c7f1cf3
  1. 17
      selfdrive/controls/lib/latcontrol_torque.py
  2. 2
      selfdrive/test/process_replay/ref_commit

@ -21,8 +21,8 @@ from openpilot.common.pid import PIDController
# to be overcome to move it at all, this is compensated for too. # to be overcome to move it at all, this is compensated for too.
KP = 1.0 KP = 1.0
KI = 0.1 KI = 0.3
KD = 0.3 KD = 0.0
INTERP_SPEEDS = [1, 1.5, 2.0, 3.0, 5, 7.5, 10, 15, 30] 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] KP_INTERP = [250, 120, 65, 30, 11.5, 5.5, 3.5, 2.0, KP]
@ -30,7 +30,7 @@ LP_FILTER_CUTOFF_HZ = 1.2
JERK_LOOKAHEAD_SECONDS = 0.19 JERK_LOOKAHEAD_SECONDS = 0.19
JERK_GAIN = 0.3 JERK_GAIN = 0.3
LAT_ACCEL_REQUEST_BUFFER_SECONDS = 1.0 LAT_ACCEL_REQUEST_BUFFER_SECONDS = 1.0
VERSION = 1 # bump this when changing controller VERSION = 0 # bump this when changing controller
class LatControlTorque(LatControl): class LatControlTorque(LatControl):
def __init__(self, CP, CI, dt): def __init__(self, CP, CI, dt):
@ -84,17 +84,22 @@ class LatControlTorque(LatControl):
measurement_rate = self.measurement_rate_filter.update((measurement - self.previous_measurement) / self.dt) measurement_rate = self.measurement_rate_filter.update((measurement - self.previous_measurement) / self.dt)
self.previous_measurement = measurement self.previous_measurement = measurement
error = setpoint - measurement error = setpoint - measurement + JERK_GAIN * desired_lateral_jerk
# do error correction in lateral acceleration space, convert at end to handle non-linear torque responses correctly # do error correction in lateral acceleration space, convert at end to handle non-linear torque responses correctly
pid_log.error = float(error) pid_log.error = float(error)
ff = gravity_adjusted_future_lateral_accel ff = gravity_adjusted_future_lateral_accel
# latAccelOffset corrects roll compensation bias from device roll misalignment relative to car roll # latAccelOffset corrects roll compensation bias from device roll misalignment relative to car roll
ff -= self.torque_params.latAccelOffset ff -= self.torque_params.latAccelOffset
ff += get_friction(error + JERK_GAIN * desired_lateral_jerk, lateral_accel_deadzone, FRICTION_THRESHOLD, self.torque_params) # TODO remove lateral jerk from feed forward - moving it from error means jerk is not scaled by low speed factor
ff += get_friction(error, lateral_accel_deadzone, FRICTION_THRESHOLD, self.torque_params)
freeze_integrator = steer_limited_by_safety or CS.steeringPressed or CS.vEgo < 5 freeze_integrator = steer_limited_by_safety or CS.steeringPressed or CS.vEgo < 5
output_lataccel = self.pid.update(pid_log.error, -measurement_rate, CS.vEgo, ff, freeze_integrator) output_lataccel = self.pid.update(pid_log.error,
-measurement_rate,
feedforward=ff,
speed=CS.vEgo,
freeze_integrator=freeze_integrator)
output_torque = self.torque_from_lateral_accel(output_lataccel, self.torque_params) output_torque = self.torque_from_lateral_accel(output_lataccel, self.torque_params)
pid_log.active = True pid_log.active = True

@ -1 +1 @@
d74c33b02938cafb3422f3500cfd083bd965e637 9a7d8dd0660ba6a344ac61be89b2e832e6756184
Loading…
Cancel
Save