1
+ import importlib
1
2
import math
2
3
4
+ from common .filter_simple import FirstOrderFilter
5
+ from common .realtime import DT_CTRL
3
6
from selfdrive .controls .lib .pid import LatPIDController
4
7
from selfdrive .controls .lib .drive_helpers import get_steer_max
5
8
from cereal import log
@@ -11,7 +14,12 @@ def __init__(self, CP):
11
14
(CP .lateralTuning .pid .kiBP , CP .lateralTuning .pid .kiV ),
12
15
(CP .lateralTuning .pid .kdBP , CP .lateralTuning .pid .kdV ),
13
16
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'
15
23
16
24
def reset (self ):
17
25
self .pid .reset ()
@@ -28,11 +36,19 @@ def update(self, active, CS, CP, VM, params, desired_curvature, desired_curvatur
28
36
output_steer = 0.0
29
37
pid_log .active = False
30
38
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 ))
31
45
else :
32
46
steers_max = get_steer_max (CP , CS .vEgo )
33
47
self .pid .pos_limit = steers_max
34
48
self .pid .neg_limit = - steers_max
35
49
50
+ self .pid .k_f = self .kf_filter .x
51
+
36
52
# TODO: feedforward something based on lat_plan.rateSteers
37
53
steer_feedforward = angle_steers_des_no_offset # offset does not contribute to resistive torque
38
54
if self .new_kf_tuned :
0 commit comments