From f92f51d2b5c90918150a8862ec078583e46fbe53 Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Thu, 19 Aug 2021 19:00:03 +0200 Subject: [PATCH] controlsd: ensure actuators packet is finite (#21958) * controlsd: ensure actuators packet is finite * do not hardcode fields * cleaner way to get fields * move line up old-commit-hash: 4fcd51e0215d5f81a343d2f12108ad1528ab496e --- selfdrive/controls/controlsd.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index dd91d4aecc..595cb47b37 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -37,6 +37,8 @@ IGNORE_PROCESSES = {"rtshield", "uploader", "deleter", "loggerd", "logmessaged", "logcatd", "proclogd", "clocksd", "updated", "timezoned", "manage_athenad"} | \ {k for k, v in managed_processes.items() if not v.enabled} +ACTUATOR_FIELDS = set(car.CarControl.Actuators.schema.fields.keys()) + ThermalStatus = log.DeviceState.ThermalStatus State = log.ControlsState.OpenpilotState PandaType = log.PandaState.PandaType @@ -500,6 +502,12 @@ class Controls: if left_deviation or right_deviation: self.events.add(EventName.steerSaturated) + # Ensure no NaNs/Infs + for p in ACTUATOR_FIELDS: + if not math.isfinite(getattr(actuators, p)): + cloudlog.error(f"actuators.{p} not finite {actuators.to_dict()}") + setattr(actuators, p, 0.0) + return actuators, lac_log def publish_logs(self, CS, start_time, actuators, lac_log):