Skip to content

Commit c357ef6

Browse files
committed
online kf updating test
1 parent e622529 commit c357ef6

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

selfdrive/controls/lib/latcontrol_pid.py

+17-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import importlib
12
import math
23

4+
from common.filter_simple import FirstOrderFilter
5+
from common.realtime import DT_CTRL
36
from selfdrive.controls.lib.pid import LatPIDController
47
from selfdrive.controls.lib.drive_helpers import get_steer_max
58
from cereal import log
@@ -11,7 +14,12 @@ def __init__(self, CP):
1114
(CP.lateralTuning.pid.kiBP, CP.lateralTuning.pid.kiV),
1215
(CP.lateralTuning.pid.kdBP, CP.lateralTuning.pid.kdV),
1316
k_f=CP.lateralTuning.pid.kf, pos_limit=1.0, sat_limit=CP.steerLimitTimer)
14-
self.new_kf_tuned = CP.lateralTuning.pid.newKfTuned
17+
self.new_kf_tuned = True # CP.lateralTuning.pid.newKfTuned
18+
self.kf_filter = FirstOrderFilter(CP.lateralTuning.pid.kf, 10, DT_CTRL)
19+
20+
self.CarControllerParams = importlib.import_module('selfdrive.car.{}.values'.format(CP.carName)).CarControllerParams
21+
assert self.CarControllerParams, 'Missing CarControllerParams!'
22+
assert self.CarControllerParams.STEER_MAX != 0, 'Can\'t be 0'
1523

1624
def reset(self):
1725
self.pid.reset()
@@ -28,11 +36,19 @@ def update(self, active, CS, CP, VM, params, desired_curvature, desired_curvatur
2836
output_steer = 0.0
2937
pid_log.active = False
3038
self.pid.reset()
39+
40+
if abs(CS.steeringRateDeg) < 20 and 5 < abs(CS.steeringAngleDeg) < 90 and CS.vEgo > 5:
41+
torque = CS.steeringTorqueEps / self.CarControllerParams.STEER_MAX
42+
predicted_kf = torque / (CS.steeringAngleDeg * CS.vEgo ** 2)
43+
self.kf_filter.update(predicted_kf)
44+
print('PREDICTED KF: {}'.format(self.kf_filter.x))
3145
else:
3246
steers_max = get_steer_max(CP, CS.vEgo)
3347
self.pid.pos_limit = steers_max
3448
self.pid.neg_limit = -steers_max
3549

50+
self.pid.k_f = self.kf_filter.x
51+
3652
# TODO: feedforward something based on lat_plan.rateSteers
3753
steer_feedforward = angle_steers_des_no_offset # offset does not contribute to resistive torque
3854
if self.new_kf_tuned:

selfdrive/manager/manager.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def manager_thread():
150150

151151
running_list = ["%s%s\u001b[0m" % ("\u001b[32m" if p.proc.is_alive() else "\u001b[31m", p.name)
152152
for p in managed_processes.values() if p.proc]
153-
cloudlog.debug(' '.join(running_list))
153+
# cloudlog.debug(' '.join(running_list))
154154

155155
# send managerState
156156
msg = messaging.new_message('managerState')

0 commit comments

Comments
 (0)