mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-09-30 19:33:45 +08:00
33 lines
812 B
Python
33 lines
812 B
Python
import math
|
|
|
|
|
|
class SpeedLimitPulse:
|
|
def __init__(self):
|
|
self.last_limit = 0.0
|
|
self.start_time = -math.inf
|
|
self._started_frame: int | None = None
|
|
|
|
def clear(self) -> None:
|
|
self.start_time = -math.inf
|
|
|
|
def reset(self) -> None:
|
|
self.last_limit = 0.0
|
|
self._started_frame = None
|
|
self.clear()
|
|
|
|
def update(self, source: str, limit: float, speed_conversion: float, now: float, started_frame: int) -> None:
|
|
if started_frame != self._started_frame:
|
|
self.reset()
|
|
self._started_frame = started_frame
|
|
|
|
if not math.isfinite(limit) or limit <= 0:
|
|
self.clear()
|
|
return
|
|
|
|
if source != "Vision":
|
|
self.clear()
|
|
elif round(limit * speed_conversion) != round(self.last_limit * speed_conversion):
|
|
self.start_time = now
|
|
|
|
self.last_limit = limit
|