mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-06-30 19:12:07 +08:00
improve get_torque_params (#32586)
* Loading torque data only once and reusing it across function calls. * apply review * still check only one entry * fix that --------- Co-authored-by: Shane Smiskol <shane@smiskol.com> old-commit-hash: 045b9f20b717e7c5d68f84df4715bb596530b046
This commit is contained in:
+20
-16
@@ -57,29 +57,33 @@ TorqueFromLateralAccelCallbackType = Callable[[LatControlInputs, car.CarParams.L
|
||||
|
||||
|
||||
@cache
|
||||
def get_torque_params(candidate):
|
||||
def get_torque_params():
|
||||
with open(TORQUE_SUBSTITUTE_PATH, 'rb') as f:
|
||||
sub = tomllib.load(f)
|
||||
if candidate in sub:
|
||||
candidate = sub[candidate]
|
||||
|
||||
with open(TORQUE_PARAMS_PATH, 'rb') as f:
|
||||
params = tomllib.load(f)
|
||||
with open(TORQUE_OVERRIDE_PATH, 'rb') as f:
|
||||
override = tomllib.load(f)
|
||||
|
||||
# Ensure no overlap
|
||||
if sum([candidate in x for x in [sub, params, override]]) > 1:
|
||||
raise RuntimeError(f'{candidate} is defined twice in torque config')
|
||||
torque_params = {}
|
||||
for candidate in (sub.keys() | params.keys() | override.keys()) - {'legend'}:
|
||||
if sum([candidate in x for x in [sub, params, override]]) > 1:
|
||||
raise RuntimeError(f'{candidate} is defined twice in torque config')
|
||||
|
||||
if candidate in override:
|
||||
out = override[candidate]
|
||||
elif candidate in params:
|
||||
out = params[candidate]
|
||||
else:
|
||||
raise NotImplementedError(f"Did not find torque params for {candidate}")
|
||||
return {key: out[i] for i, key in enumerate(params['legend'])}
|
||||
sub_candidate = sub.get(candidate, candidate)
|
||||
|
||||
if sub_candidate in override:
|
||||
out = override[sub_candidate]
|
||||
elif sub_candidate in params:
|
||||
out = params[sub_candidate]
|
||||
else:
|
||||
raise NotImplementedError(f"Did not find torque params for {sub_candidate}")
|
||||
|
||||
torque_params[sub_candidate] = {key: out[i] for i, key in enumerate(params['legend'])}
|
||||
if candidate in sub:
|
||||
torque_params[candidate] = torque_params[sub_candidate]
|
||||
|
||||
return torque_params
|
||||
|
||||
# generic car and radar interfaces
|
||||
|
||||
@@ -180,7 +184,7 @@ class CarInterfaceBase(ABC):
|
||||
ret.carFingerprint = candidate
|
||||
|
||||
# Car docs fields
|
||||
ret.maxLateralAccel = get_torque_params(candidate)['MAX_LAT_ACCEL_MEASURED']
|
||||
ret.maxLateralAccel = get_torque_params()[candidate]['MAX_LAT_ACCEL_MEASURED']
|
||||
ret.autoResumeSng = True # describes whether car can resume from a stop automatically
|
||||
|
||||
# standard ALC params
|
||||
@@ -213,7 +217,7 @@ class CarInterfaceBase(ABC):
|
||||
|
||||
@staticmethod
|
||||
def configure_torque_tune(candidate, tune, steering_angle_deadzone_deg=0.0, use_steering_angle=True):
|
||||
params = get_torque_params(candidate)
|
||||
params = get_torque_params()[candidate]
|
||||
|
||||
tune.init('torque')
|
||||
tune.torque.useSteeringAngle = use_steering_angle
|
||||
|
||||
@@ -43,7 +43,7 @@ class TestLateralLimits:
|
||||
|
||||
CarControllerParams = importlib.import_module(f'selfdrive.car.{CP.carName}.values').CarControllerParams
|
||||
cls.control_params = CarControllerParams(CP)
|
||||
cls.torque_params = get_torque_params(cls.car_model)
|
||||
cls.torque_params = get_torque_params()[cls.car_model]
|
||||
|
||||
@staticmethod
|
||||
def calculate_0_5s_jerk(control_params, torque_params):
|
||||
|
||||
Reference in New Issue
Block a user