paramsd: check NaN in inputs and outputs (#20804)

old-commit-hash: 0b4d28b9d697ad7b55495993bd4a7d2800c4e79b
This commit is contained in:
Willem Melching
2021-05-03 14:13:31 +02:00
committed by GitHub
parent 523c00acdc
commit 8bd3b9a7b8
+8 -2
View File
@@ -38,6 +38,8 @@ class ParamsLearner:
yaw_rate = msg.angularVelocityCalibrated.value[2]
yaw_rate_std = msg.angularVelocityCalibrated.std[2]
yaw_rate_valid = msg.angularVelocityCalibrated.valid
yaw_rate_valid = yaw_rate_valid and (not math.isnan(yaw_rate))
yaw_rate_valid = yaw_rate_valid and (not math.isnan(yaw_rate_std))
if self.active:
if msg.inputsOK and msg.posenetOK and yaw_rate_valid:
@@ -126,13 +128,17 @@ def main(sm=None, pm=None):
learner.handle_log(t, which, sm[which])
if sm.updated['liveLocationKalman']:
x = learner.kf.x
if any(map(math.isnan, x)):
cloudlog.error("NaN in liveParameters estimate. Resetting to default values")
learner = ParamsLearner(CP, CP.steerRatio, 1.0, 0.0)
continue
msg = messaging.new_message('liveParameters')
msg.logMonoTime = sm.logMonoTime['carState']
msg.liveParameters.posenetValid = True
msg.liveParameters.sensorValid = True
x = learner.kf.x
msg.liveParameters.steerRatio = float(x[States.STEER_RATIO])
msg.liveParameters.stiffnessFactor = float(x[States.STIFFNESS])
msg.liveParameters.angleOffsetAverageDeg = math.degrees(x[States.ANGLE_OFFSET])