This commit is contained in:
firestar5683
2026-03-22 15:09:31 -05:00
parent a35382505e
commit 0e57f230d7
54 changed files with 178 additions and 45 deletions
+5 -3
View File
@@ -37,13 +37,13 @@ class FrogPilotCard:
def handle_button_event(self, key, sm, frogpilot_toggles):
if sm["carControl"].longActive and getattr(frogpilot_toggles, f"experimental_mode_via_{key}"):
self.handle_experimental_mode(sm, frogpilot_toggles)
elif sm["carControl"].longActive and getattr(frogpilot_toggles, f"force_coast_via_{key}"):
elif getattr(frogpilot_toggles, f"force_coast_via_{key}"):
self.force_coast = not self.force_coast
elif getattr(frogpilot_toggles, f"pause_lateral_via_{key}"):
self.pause_lateral = not self.pause_lateral
elif sm["carControl"].longActive and getattr(frogpilot_toggles, f"pause_longitudinal_via_{key}"):
elif getattr(frogpilot_toggles, f"pause_longitudinal_via_{key}"):
self.pause_longitudinal = not self.pause_longitudinal
elif getattr(frogpilot_toggles, f"traffic_mode_via_{key}"):
elif sm["carControl"].longActive and getattr(frogpilot_toggles, f"traffic_mode_via_{key}"):
self.traffic_mode_enabled = not self.traffic_mode_enabled
def handle_experimental_mode(self, sm, frogpilot_toggles):
@@ -83,6 +83,8 @@ class FrogPilotCard:
if sm.updated["frogpilotPlan"] or any(be.type == ButtonType.decelCruise for be in carState.buttonEvents):
self.decel_pressed = any(be.type == ButtonType.decelCruise for be in carState.buttonEvents)
frogpilotCarState.distancePressed |= self.params_memory.get_bool("OnroadDistanceButtonPressed")
if frogpilotCarState.distancePressed:
self.gap_counter += 1
elif not self.distancePressed_previously:
@@ -1,4 +1,6 @@
#!/usr/bin/env python3
import json
import numpy as np
from openpilot.common.realtime import DT_MDL
@@ -21,7 +23,11 @@ class CurveSpeedController:
self.training_timer = 0
self.curvature_data = self.frogpilot_planner.params.get("CurvatureData")
curvature_data_raw = self.frogpilot_planner.params.get("CurvatureData", encoding="utf-8")
try:
self.curvature_data = json.loads(curvature_data_raw or "{}")
except (TypeError, ValueError):
self.curvature_data = {}
self.calculate_weights()
self.update_lateral_acceleration()
@@ -1,6 +1,7 @@
#!/usr/bin/env python3
# PFEIFER - SLC - Modified by FrogAi for FrogPilot
import calendar
import json
import numpy as np
import requests
@@ -36,6 +37,7 @@ OFFSET_MAP_METRIC = [
class SpeedLimitController:
def __init__(self, FrogPilotVCruise):
self.frogpilot_planner = FrogPilotVCruise.frogpilot_planner
self.frogpilot_toggles = None
self.calling_mapbox = False
self.override_slc = False
@@ -53,14 +55,18 @@ class SpeedLimitController:
self.previous_source = "None"
self.source = "None"
self.mapbox_requests = self.frogpilot_planner.params.get("MapBoxRequests")
mapbox_requests_raw = self.frogpilot_planner.params.get("MapBoxRequests", encoding="utf-8")
try:
self.mapbox_requests = json.loads(mapbox_requests_raw or "{}")
except (TypeError, ValueError):
self.mapbox_requests = {}
self.mapbox_requests.setdefault("total_requests", 0)
self.mapbox_requests.setdefault("max_requests", FREE_MAPBOX_REQUESTS - (28 * 100))
self.mapbox_host = "https://api.mapbox.com"
self.mapbox_token = self.frogpilot_planner.params.get("MapboxSecretKey")
self.mapbox_token = self.frogpilot_planner.params.get("MapboxSecretKey", encoding="utf-8")
self.previous_target = self.frogpilot_planner.params.get("PreviousSpeedLimit")
self.previous_target = self.frogpilot_planner.params.get_float("PreviousSpeedLimit")
self.executor = ThreadPoolExecutor(max_workers=1)
@@ -70,10 +76,12 @@ class SpeedLimitController:
@property
def experimental_mode(self):
return self.target == 0 and self.frogpilot_toggles.slc_fallback_experimental_mode
return self.target == 0 and bool(getattr(self.frogpilot_toggles, "slc_fallback_experimental_mode", False))
@property
def offset(self):
if self.frogpilot_toggles is None:
return 0
offset_map = OFFSET_MAP_METRIC if self.frogpilot_toggles.is_metric else OFFSET_MAP_IMPERIAL
return next((getattr(self.frogpilot_toggles, offset) for low, high, offset in offset_map if low < self.target < high), 0)
+1 -1
View File
@@ -56,7 +56,7 @@ class WeatherChecker:
self.last_updated = None
self.requesting = False
self.user_api_key = self.frogpilot_planner.params.get("WeatherToken")
self.user_api_key = self.frogpilot_planner.params.get("WeatherToken", encoding="utf-8")
if self.user_api_key:
self.check_interval = 60