feat: 10fps daytime / 4fps night modeld + 2Hz GPS
Reduced-rate modeld path now branches on IsDaylight: - daylight: skip 1/2 frames → 10fps (better model responsiveness when lighting gives the net more signal) - night: skip 4/5 frames → 4fps (unchanged, conservative for power) IsDaylight is already in /dev/shm (memory) via gpsd.py. Gated the IsDaylight write on change — it flips twice a day, no reason to rewrite every 30s. GPS polling bumped from 1Hz → 2Hz. ModelFps publishes "10" / "4" / "20" so longitudinal_planner's dt and FCW-threshold scaling (if re-enabled) still track actual rate. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -159,6 +159,7 @@ def main():
|
||||
params_memory = Params("/dev/shm/params")
|
||||
last_daylight_check = 0.0
|
||||
daylight_computed = False
|
||||
prev_daylight = None # CLEARPILOT: gate IsDaylight write on change
|
||||
print("gpsd: entering main loop", file=sys.stderr, flush=True)
|
||||
|
||||
while True:
|
||||
@@ -205,7 +206,10 @@ def main():
|
||||
last_daylight_check = now_mono
|
||||
utc_now = datetime.datetime.utcfromtimestamp(fix["timestamp_ms"] / 1000)
|
||||
daylight = is_daylight(fix["latitude"], fix["longitude"], utc_now)
|
||||
params_memory.put_bool("IsDaylight", daylight)
|
||||
# CLEARPILOT: gate on change — daylight flips twice a day, don't rewrite every 30s
|
||||
if daylight != prev_daylight:
|
||||
params_memory.put_bool("IsDaylight", daylight)
|
||||
prev_daylight = daylight
|
||||
|
||||
if not daylight_computed:
|
||||
daylight_computed = True
|
||||
@@ -221,7 +225,7 @@ def main():
|
||||
params_memory.put_int("ScreenDisplayMode", 0)
|
||||
cloudlog.warning("gpsd: auto-switch to normal (sunrise)")
|
||||
|
||||
time.sleep(1.0) # 1 Hz polling
|
||||
time.sleep(0.5) # 2 Hz polling
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user