mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-21 08:14:00 +08:00
September 27th, 2025 Update
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
from pathlib import Path
|
||||
|
||||
import datetime
|
||||
import filecmp
|
||||
import glob
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
import shutil
|
||||
@@ -14,6 +13,8 @@ import threading
|
||||
import time
|
||||
import zstandard as zstd
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from openpilot.common.basedir import BASEDIR
|
||||
from openpilot.common.params import Params
|
||||
from openpilot.common.time import system_time_valid
|
||||
@@ -21,11 +22,11 @@ from openpilot.system.athena.registration import register
|
||||
from openpilot.system.hardware import HARDWARE
|
||||
|
||||
from openpilot.frogpilot.assets.model_manager import ModelManager
|
||||
from openpilot.frogpilot.assets.theme_manager import HOLIDAY_THEME_PATH, ThemeManager
|
||||
from openpilot.frogpilot.assets.theme_manager import ThemeManager
|
||||
from openpilot.frogpilot.common.frogpilot_utilities import delete_file, run_cmd, use_konik_server
|
||||
from openpilot.frogpilot.common.frogpilot_variables import (
|
||||
ERROR_LOGS_PATH, EXCLUDED_KEYS, HD_LOGS_PATH, KONIK_LOGS_PATH, MODELS_PATH, SCREEN_RECORDINGS_PATH,
|
||||
THEME_SAVE_PATH, FrogPilotVariables, frogpilot_default_params, get_frogpilot_toggles, params
|
||||
THEME_SAVE_PATH, VIDEO_CACHE_PATH, FrogPilotVariables, frogpilot_default_params, get_frogpilot_toggles, params
|
||||
)
|
||||
from openpilot.frogpilot.system.frogpilot_stats import send_stats
|
||||
|
||||
@@ -130,15 +131,31 @@ def backup_toggles(params_cache):
|
||||
def convert_params(params_cache):
|
||||
print("Starting to convert params")
|
||||
|
||||
if Path("/cache/tracking").exists():
|
||||
params_tracking = Params("/cache/tracking")
|
||||
|
||||
frogpilot_stats = json.loads(params.get("FrogPilotStats") or "{}")
|
||||
frogpilot_stats["FrogPilotDrives"] = params_tracking.get_int("FrogPilotDrives")
|
||||
frogpilot_stats["FrogPilotMeters"] = params_tracking.get_float("FrogPilotKilometers") * 1000
|
||||
frogpilot_stats["FrogPilotSeconds"] = params_tracking.get_float("FrogPilotMinutes") * 60
|
||||
|
||||
params.put("FrogPilotStats", json.dumps(frogpilot_stats))
|
||||
|
||||
delete_file("/cache/tracking")
|
||||
|
||||
print("Param conversion completed")
|
||||
|
||||
def frogpilot_boot_functions(build_metadata, params_cache):
|
||||
if params.get_bool("HasAcceptedTerms"):
|
||||
params_cache.clear_all()
|
||||
|
||||
FrogPilotVariables().update(holiday_theme="stock", started=False, boot_run=True)
|
||||
ModelManager().copy_default_model()
|
||||
ThemeManager().update_active_theme(time_validated=system_time_valid(), frogpilot_toggles=get_frogpilot_toggles(), boot_run=True)
|
||||
FrogPilotVariables().update(holiday_theme="stock", started=False)
|
||||
ModelManager(boot_run=True)
|
||||
ThemeManager(boot_run=True).update_active_theme(time_validated=system_time_valid(), frogpilot_toggles=get_frogpilot_toggles(), boot_run=True)
|
||||
|
||||
if VIDEO_CACHE_PATH.exists():
|
||||
for video in VIDEO_CACHE_PATH.glob("*.mp4"):
|
||||
delete_file(video)
|
||||
|
||||
if use_konik_server():
|
||||
if params.get("KonikDongleId", encoding="utf8") != None:
|
||||
@@ -172,26 +189,6 @@ def setup_frogpilot(build_metadata):
|
||||
SCREEN_RECORDINGS_PATH.mkdir(parents=True, exist_ok=True)
|
||||
THEME_SAVE_PATH.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
for source_suffix, destination_suffix in [
|
||||
("world_frog_day/colors", "theme_packs/frog/colors"),
|
||||
("world_frog_day/distance_icons", "theme_packs/frog-animated/distance_icons"),
|
||||
("world_frog_day/icons", "theme_packs/frog-animated/icons"),
|
||||
("world_frog_day/signals", "theme_packs/frog/signals"),
|
||||
("world_frog_day/sounds", "theme_packs/frog/sounds"),
|
||||
]:
|
||||
source = Path(HOLIDAY_THEME_PATH) / source_suffix
|
||||
destination = THEME_SAVE_PATH / destination_suffix
|
||||
destination.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copytree(source, destination, dirs_exist_ok=True)
|
||||
|
||||
for source_suffix, destination_suffix in [
|
||||
("world_frog_day/steering_wheel/wheel.png", "steering_wheels/frog.png"),
|
||||
]:
|
||||
source = Path(HOLIDAY_THEME_PATH) / source_suffix
|
||||
destination = THEME_SAVE_PATH / destination_suffix
|
||||
destination.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copy2(source, destination)
|
||||
|
||||
boot_logo_location = Path("/usr/comma/bg.jpg")
|
||||
frogpilot_boot_logo = Path(__file__).parents[1] / "assets/other_images/frogpilot_boot_logo.png"
|
||||
if not filecmp.cmp(frogpilot_boot_logo, boot_logo_location, shallow=False):
|
||||
|
||||
@@ -5,17 +5,18 @@ import numpy as np
|
||||
import requests
|
||||
import shutil
|
||||
import subprocess
|
||||
import tarfile
|
||||
import threading
|
||||
import time
|
||||
import urllib.error
|
||||
import urllib.request
|
||||
import zipfile
|
||||
|
||||
import openpilot.system.sentry as sentry
|
||||
|
||||
from functools import cache
|
||||
from pathlib import Path
|
||||
|
||||
import openpilot.system.sentry as sentry
|
||||
|
||||
from cereal import log, messaging
|
||||
from opendbc.can.parser import CANParser
|
||||
from openpilot.common.realtime import DT_DMON, DT_HW
|
||||
@@ -37,6 +38,7 @@ locks = {
|
||||
"update_checks": threading.Lock(),
|
||||
"update_maps": threading.Lock(),
|
||||
"update_openpilot": threading.Lock(),
|
||||
"update_tinygrad": threading.Lock()
|
||||
}
|
||||
|
||||
def run_thread_with_lock(name, target, args=(), report=True):
|
||||
@@ -99,20 +101,44 @@ def calculate_lane_width(lane, current_lane, road_edge=None):
|
||||
def calculate_road_curvature(modelData, v_ego):
|
||||
orientation_rate = np.array(modelData.orientationRate.z)
|
||||
velocity = np.array(modelData.velocity.x)
|
||||
timebase = np.array(modelData.orientationRate.t)
|
||||
|
||||
max_pred_lat_acc = max(np.max(orientation_rate * velocity), np.min(orientation_rate * velocity), key=abs)
|
||||
lateral_acceleration = orientation_rate * velocity
|
||||
index = np.argmax(np.abs(lateral_acceleration))
|
||||
predicted_lateral_acc = float(lateral_acceleration[index])
|
||||
time_to_curve = float(timebase[index])
|
||||
|
||||
return float(max_pred_lat_acc / max(v_ego, 1)**2)
|
||||
return predicted_lateral_acc / max(v_ego, 1)**2, max(time_to_curve, 1)
|
||||
|
||||
def delete_file(path, report=True):
|
||||
def clean_model_name(name):
|
||||
return (
|
||||
name.replace("🗺️", "")
|
||||
.replace("📡", "")
|
||||
.replace("👀", "")
|
||||
.replace("(Default)", "")
|
||||
.strip()
|
||||
)
|
||||
|
||||
def delete_file(path, print_error=True, report=True):
|
||||
path = Path(path)
|
||||
if path.is_file() or path.is_symlink():
|
||||
run_cmd(["sudo", "rm", "-f", str(path)], success_message=f"Deleted file: {path}", fail_message=f"Failed to delete file: {path}", report=report)
|
||||
run_cmd(["sudo", "rm", "-f", str(path)], f"Deleted file: {path}", f"Failed to delete file: {path}", report=report)
|
||||
elif path.is_dir():
|
||||
run_cmd(["sudo", "rm", "-rf", str(path)], success_message=f"Deleted directory: {path}", fail_message=f"Failed to delete directory: {path}", report=report)
|
||||
else:
|
||||
run_cmd(["sudo", "rm", "-rf", str(path)], f"Deleted directory: {path}", f"Failed to delete directory: {path}", report=report)
|
||||
elif print_error:
|
||||
print(f"File not found: {path}")
|
||||
|
||||
def extract_tar(tar_file, extract_path):
|
||||
tar_file = Path(tar_file)
|
||||
extract_path = Path(extract_path)
|
||||
print(f"Extracting {tar_file} to {extract_path}")
|
||||
|
||||
with tarfile.open(tar_file, "r:gz") as tar:
|
||||
tar.extractall(path=extract_path)
|
||||
|
||||
tar_file.unlink()
|
||||
print(f"Extraction completed: {tar_file} has been removed")
|
||||
|
||||
def extract_zip(zip_file, extract_path):
|
||||
zip_file = Path(zip_file)
|
||||
extract_path = Path(extract_path)
|
||||
@@ -146,16 +172,22 @@ def is_url_pingable(url):
|
||||
headers = {"User-Agent": "frogpilot-ping-test/1.0 (https://github.com/FrogAi/FrogPilot)"}
|
||||
try:
|
||||
response = requests.head(url, headers=headers, timeout=10, allow_redirects=True)
|
||||
response.raise_for_status()
|
||||
return True
|
||||
except requests.RequestException as exception:
|
||||
print(f"Network/HTTP error for {url}: {exception}")
|
||||
if response.status_code in (405, 501):
|
||||
response = requests.get(url, headers=headers, timeout=10, allow_redirects=True, stream=True)
|
||||
return response.ok
|
||||
except requests.exceptions.RequestException as error:
|
||||
print(f"{error.__class__.__name__} while pinging {url}: {error}")
|
||||
return False
|
||||
except Exception as exception:
|
||||
print(f"An unexpected error occurred while checking {url}: {exception}")
|
||||
sentry.capture_exception(exception)
|
||||
print(f"Unexpected error while pinging {url}: {exception}")
|
||||
return False
|
||||
|
||||
def load_json_file(path):
|
||||
if path.is_file():
|
||||
with open(path) as file:
|
||||
return json.load(file)
|
||||
return {}
|
||||
|
||||
def lock_doors(lock_doors_timer, sm):
|
||||
wait_for_no_driver(sm, door_checks=True, time_threshold=lock_doors_timer)
|
||||
|
||||
@@ -180,19 +212,26 @@ def lock_doors(lock_doors_timer, sm):
|
||||
|
||||
def run_cmd(cmd, success_message, fail_message, report=True, env=None):
|
||||
try:
|
||||
subprocess.run(cmd, capture_output=True, check=True, env=env, text=True)
|
||||
result = subprocess.run(cmd, capture_output=True, check=True, env=env, text=True)
|
||||
print(success_message)
|
||||
return result.stdout.strip()
|
||||
except subprocess.CalledProcessError as error:
|
||||
print(f"Command failed with return code {error.returncode}")
|
||||
if error.stderr:
|
||||
print(f"Error Output: {error.stderr.strip()}")
|
||||
if report:
|
||||
sentry.capture_exception(error)
|
||||
return None
|
||||
except Exception as exception:
|
||||
print(f"Unexpected error occurred: {exception}")
|
||||
print(fail_message)
|
||||
if report:
|
||||
sentry.capture_exception(exception)
|
||||
return None
|
||||
|
||||
def update_json_file(path, data):
|
||||
with open(path, "w") as file:
|
||||
json.dump(data, file, indent=2, sort_keys=True)
|
||||
|
||||
def update_maps(now):
|
||||
while not MAPD_PATH.exists():
|
||||
@@ -233,7 +272,7 @@ def update_maps(now):
|
||||
|
||||
def update_openpilot():
|
||||
def update_available():
|
||||
subprocess.run(["pkill", "-SIGUSR1", "-f", "system.updated.updated"], check=False)
|
||||
run_cmd(["pkill", "-SIGUSR1", "-f", "system.updated.updated"], "Updater check signal sent", "Failed to send updater check signal", report=False)
|
||||
|
||||
while params.get("UpdaterState", encoding="utf-8") != "checking...":
|
||||
time.sleep(1)
|
||||
@@ -247,25 +286,22 @@ def update_openpilot():
|
||||
while params.get("UpdaterState", encoding="utf-8") != "idle":
|
||||
time.sleep(60)
|
||||
|
||||
subprocess.run(["pkill", "-SIGHUP", "-f", "system.updated.updated"], check=False)
|
||||
run_cmd(["pkill", "-SIGHUP", "-f", "system.updated.updated"], "Updater refresh signal sent", "Failed to send updater refresh signal", report=False)
|
||||
|
||||
while not params.get_bool("UpdateAvailable"):
|
||||
time.sleep(60)
|
||||
|
||||
return True
|
||||
|
||||
while params_memory.get_bool("DownloadAllModels") or params_memory.get("ModelToDownload") or params_memory.get_bool("UpdateSpeedLimits"):
|
||||
time.sleep(60)
|
||||
|
||||
if params.get("UpdaterState", encoding="utf-8") != "idle":
|
||||
return
|
||||
|
||||
while params.get_bool("IsOnroad") or params_memory.get_bool("UpdateSpeedLimits") or running_threads.get("lock_doors", threading.Thread()).is_alive():
|
||||
time.sleep(60)
|
||||
|
||||
if not update_available():
|
||||
return
|
||||
|
||||
while running_threads.get("lock_doors", threading.Thread()).is_alive() or params_memory.get_bool("IsOnroad"):
|
||||
time.sleep(60)
|
||||
|
||||
while True:
|
||||
if not update_available():
|
||||
break
|
||||
|
||||
@@ -23,20 +23,21 @@ from openpilot.selfdrive.modeld.constants import ModelConstants
|
||||
from openpilot.system.hardware import HARDWARE
|
||||
from openpilot.system.hardware.power_monitoring import VBATT_PAUSE_CHARGING
|
||||
from openpilot.system.version import get_build_metadata
|
||||
from panda import ALTERNATIVE_EXPERIENCE, Panda
|
||||
from panda import ALTERNATIVE_EXPERIENCE
|
||||
|
||||
params = Params()
|
||||
params_cache = Params("/cache/params")
|
||||
params_default = Params("/dev/shm/params_default")
|
||||
params_memory = Params("/dev/shm/params")
|
||||
params_tracking = Params("/cache/tracking")
|
||||
|
||||
GearShifter = car.CarState.GearShifter
|
||||
SafetyModel = car.CarParams.SafetyModel
|
||||
|
||||
CITY_SPEED_LIMIT = 25 # 55mph is typically the minimum speed for highways
|
||||
CRUISING_SPEED = 5 # Roughly the speed cars go when not touching the gas while in drive
|
||||
DEFAULT_LATERAL_ACCELERATION = 2.0 # m/s^2, typical lateral acceleration when taking curves
|
||||
EARTH_RADIUS = 6378137 # Radius of the Earth in meters
|
||||
MAX_T_FOLLOW = 3.0 # Maximum allowed following duration. Larger values risk losing track of the lead but may be increased as models improve
|
||||
MINIMUM_LATERAL_ACCELERATION = 1.3 # m/s^2, typical minimum lateral acceleration when taking curves
|
||||
PLANNER_TIME = ModelConstants.T_IDXS[-1] # Length of time the model projects out for
|
||||
THRESHOLD = 0.63 # Requires the condition to be true for ~1 second
|
||||
@@ -53,6 +54,7 @@ THEME_SAVE_PATH = Path("/data/themes")
|
||||
|
||||
ERROR_LOGS_PATH = Path("/data/error_logs")
|
||||
SCREEN_RECORDINGS_PATH = Path("/data/media/screen_recordings")
|
||||
VIDEO_CACHE_PATH = Path("/data/video_cache")
|
||||
|
||||
BACKUP_PATH = Path("/cache/on_backup")
|
||||
|
||||
@@ -65,20 +67,11 @@ KONIK_PATH = Path("/cache/use_konik")
|
||||
MAPD_PATH = Path("/data/media/0/osm/mapd")
|
||||
MAPS_PATH = Path("/data/media/0/osm/offline")
|
||||
|
||||
NEURAL_PARAMS_PATH = Path(BASEDIR) / "selfdrive/car/torque_data/neural_ff_weights.json"
|
||||
TORQUE_NN_MODEL_PATH = Path(BASEDIR) / "frogpilot/assets/nnff_models"
|
||||
NNFF_MODELS_PATH = Path(BASEDIR) / "frogpilot/assets/nnff_models"
|
||||
|
||||
DEFAULT_CLASSIC_MODEL = "wd-40"
|
||||
DEFAULT_CLASSIC_MODEL_NAME = "WD-40 (Default) 👀📡"
|
||||
DEFAULT_CLASSIC_MODEL_VERSION = "v2"
|
||||
|
||||
DEFAULT_MODEL = "national-public-radio"
|
||||
DEFAULT_MODEL_NAME = "National Public Radio 👀📡"
|
||||
DEFAULT_MODEL_VERSION = "v6"
|
||||
|
||||
DEFAULT_TINYGRAD_MODEL = "space-lab"
|
||||
DEFAULT_TINYGRAD_MODEL_NAME = "Space Lab 👀📡"
|
||||
DEFAULT_TINYGRAD_MODEL_VERSION = "v7"
|
||||
DEFAULT_MODEL = "firehose"
|
||||
DEFAULT_MODEL_NAME = "Firehose (Default) 👀📡"
|
||||
DEFAULT_MODEL_VERSION = "v9"
|
||||
|
||||
BUTTON_FUNCTIONS = {
|
||||
"NOTHING": 0,
|
||||
@@ -91,9 +84,9 @@ BUTTON_FUNCTIONS = {
|
||||
}
|
||||
|
||||
EXCLUDED_KEYS = {
|
||||
"AvailableModels", "AvailableModelNames", "CarParamsPersistent",
|
||||
"ExperimentalLongitudinalEnabled", "KonikMinutes", "MapBoxRequests", "ModelDrivesAndScores",
|
||||
"ModelVersions", "openpilotMinutes", "OverpassRequests", "SpeedLimits", "SpeedLimitsFiltered", "UpdaterAvailableBranches"
|
||||
"AvailableModels", "AvailableModelNames", "CalibratedLateralAcceleration", "CalibrationProgress", "CarParamsPersistent",
|
||||
"CurvatureData", "ExperimentalLongitudinalEnabled", "KonikMinutes", "MapBoxRequests", "ModelDrivesAndScores", "ModelVersions",
|
||||
"openpilotMinutes", "OverpassRequests", "SpeedLimits", "SpeedLimitsFiltered", "UpdaterAvailableBranches"
|
||||
}
|
||||
|
||||
TINYGRAD_FILES = [
|
||||
@@ -103,17 +96,9 @@ TINYGRAD_FILES = [
|
||||
("driving_vision_tinygrad.pkl", "vision model"),
|
||||
]
|
||||
|
||||
@cache
|
||||
def get_comma_nnff_model_file():
|
||||
with open(NEURAL_PARAMS_PATH, "r") as file:
|
||||
return json.load(file)
|
||||
|
||||
def comma_nnff_supported(car):
|
||||
return car in get_comma_nnff_model_file()
|
||||
|
||||
@cache
|
||||
def get_nnff_model_files():
|
||||
model_dir = Path(TORQUE_NN_MODEL_PATH)
|
||||
model_dir = Path(NNFF_MODELS_PATH)
|
||||
return [file.stem for file in model_dir.iterdir() if file.is_file()]
|
||||
|
||||
def nnff_supported(car_fingerprint):
|
||||
@@ -123,8 +108,8 @@ def nnff_supported(car_fingerprint):
|
||||
|
||||
return False
|
||||
|
||||
def get_frogpilot_toggles(block=True):
|
||||
return SimpleNamespace(**json.loads(params_memory.get("FrogPilotToggles", block=block) or "{}"))
|
||||
def get_frogpilot_toggles():
|
||||
return SimpleNamespace(**json.loads(params_memory.get("FrogPilotToggles") or "{}"))
|
||||
|
||||
def update_frogpilot_toggles():
|
||||
params_memory.put_bool("FrogPilotTogglesUpdated", True)
|
||||
@@ -132,11 +117,11 @@ def update_frogpilot_toggles():
|
||||
frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("AccelerationPath", "1", 2, "0"),
|
||||
("AccelerationProfile", "2", 0, "0"),
|
||||
("AdjacentLeadsUI", "0", 3, "0"),
|
||||
("AdjacentLeadsUI", "1", 3, "0"),
|
||||
("AdjacentPath", "0", 3, "0"),
|
||||
("AdjacentPathMetrics", "0", 3, "0"),
|
||||
("AdvancedCustomUI", "0", 2, "0"),
|
||||
("AdvancedLateralTune", "0", 2, "0"),
|
||||
("AdvancedLateralTune", "0", 3, "0"),
|
||||
("AdvancedLongitudinalTune", "0", 3, "0"),
|
||||
("AggressiveFollow", "1.25", 2, "1.25"),
|
||||
("AggressiveJerkAcceleration", "50", 3, "50"),
|
||||
@@ -148,8 +133,8 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("AlertVolumeControl", "0", 2, "0"),
|
||||
("AlwaysOnDM", "0", 0, "0"),
|
||||
("AlwaysOnLateral", "1", 0, "0"),
|
||||
("AlwaysOnLateralLKAS", "1", 0, "0"),
|
||||
("AlwaysOnLateralMain", "1", 0, "0"),
|
||||
("AlwaysOnLateralLKAS", "1", 2, "0"),
|
||||
("AlwaysOnLateralMain", "1", 2, "0"),
|
||||
("AMapKey1", "", 0, ""),
|
||||
("AMapKey2", "", 0, ""),
|
||||
("AutomaticallyDownloadModels", "1", 1, "0"),
|
||||
@@ -161,6 +146,8 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("BlindSpotMetrics", "1", 3, "0"),
|
||||
("BlindSpotPath", "1", 1, "0"),
|
||||
("BorderMetrics", "0", 3, "0"),
|
||||
("CalibratedLateralAcceleration", str(DEFAULT_LATERAL_ACCELERATION), 2, str(DEFAULT_LATERAL_ACCELERATION)),
|
||||
("CalibrationProgress", "0", 3, "0"),
|
||||
("CameraView", "3", 2, "0"),
|
||||
("CarMake", "", 0, ""),
|
||||
("CarModel", "", 0, ""),
|
||||
@@ -171,7 +158,7 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("CELead", "0", 1, "0"),
|
||||
("CEModelStopTime", str(PLANNER_TIME - 2), 2, "0"),
|
||||
("CENavigation", "1", 2, "0"),
|
||||
("CENavigationIntersections", "1", 2, "0"),
|
||||
("CENavigationIntersections", "0", 2, "0"),
|
||||
("CENavigationLead", "1", 2, "0"),
|
||||
("CENavigationTurns", "1", 2, "0"),
|
||||
("CESignalSpeed", "55", 2, "0"),
|
||||
@@ -182,10 +169,10 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("CEStoppedLead", "0", 1, "0"),
|
||||
("ClusterOffset", "1.015", 2, "1.015"),
|
||||
("Compass", "0", 1, "0"),
|
||||
("ConditionalExperimental", "1", 0, "0"),
|
||||
("CurveSensitivity", "100", 2, "100"),
|
||||
("CurveSpeedControl", "1", 1, "0"),
|
||||
("CustomAlerts", "1", 0, "0"),
|
||||
("ConditionalExperimental", "1", 1, "0"),
|
||||
("CurvatureData", "", 2, ""),
|
||||
("CurveSpeedController", "1", 1, "0"),
|
||||
("CustomAlerts", "0", 0, "0"),
|
||||
("CustomColors", "frog", 0, "stock"),
|
||||
("CustomCruise", "1", 2, "1"),
|
||||
("CustomCruiseLong", "5", 2, "5"),
|
||||
@@ -216,19 +203,19 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("DistanceButtonControl", "1", 2, "0"),
|
||||
("DriverCamera", "0", 1, "0"),
|
||||
("DynamicPathWidth", "0", 2, "0"),
|
||||
("DynamicPedalsOnUI", "1", 2, "0"),
|
||||
("DynamicPedalsOnUI", "1", 1, "0"),
|
||||
("EngageVolume", "101", 2, "101"),
|
||||
("ExperimentalGMTune", "0", 2, "0"),
|
||||
("ExperimentalLongitudinalEnabled", "0", 0, "0"),
|
||||
("ExperimentalModeConfirmed", "0", 0, "0"),
|
||||
("Fahrenheit", "0", 3, "0"),
|
||||
("FavoriteDestinations", "", 0, ""),
|
||||
("ForceAutoTune", "0", 2, "0"),
|
||||
("ForceAutoTuneOff", "0", 2, "0"),
|
||||
("ForceAutoTune", "0", 3, "0"),
|
||||
("ForceAutoTuneOff", "0", 3, "0"),
|
||||
("ForceFingerprint", "0", 2, "0"),
|
||||
("ForceMPHDashboard", "0", 2, "0"),
|
||||
("ForceStandstill", "0", 2, "0"),
|
||||
("ForceMPHDashboard", "0", 3, "0"),
|
||||
("ForceStops", "0", 2, "0"),
|
||||
("ForceTorqueController", "0", 3, "0"),
|
||||
("FPSCounter", "1", 3, "0"),
|
||||
("FrogPilotDongleId", "", 0, ""),
|
||||
("FrogPilotStats", "", 0, ""),
|
||||
@@ -243,11 +230,12 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("GsmRoaming", "1", 0, "0"),
|
||||
("HideAlerts", "0", 2, "0"),
|
||||
("HideLeadMarker", "0", 2, "0"),
|
||||
("HideMap", "0", 2, "0"),
|
||||
("HideMapIcon", "0", 2, "0"),
|
||||
("HideMaxSpeed", "0", 2, "0"),
|
||||
("HideSpeed", "0", 2, "0"),
|
||||
("HideSpeedLimit", "0", 2, "0"),
|
||||
("HigherBitrate", "0", 3, "0"),
|
||||
("HigherBitrate", "0", 2, "0"),
|
||||
("HolidayThemes", "1", 0, "0"),
|
||||
("HumanAcceleration", "1", 2, "0"),
|
||||
("HumanFollowing", "1", 2, "0"),
|
||||
@@ -257,14 +245,14 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("IsMetric", "0", 0, "0"),
|
||||
("KonikDongleId", "", 0, ""),
|
||||
("KonikMinutes", "0", 0, "0"),
|
||||
("LaneChangeCustomizations", "1", 0, "1"),
|
||||
("LaneChangeTime", "2.0", 0, "0"),
|
||||
("LaneDetectionWidth", "0", 2, "0"),
|
||||
("LaneChanges", "1", 0, "1"),
|
||||
("LaneChangeTime", "1.0", 1, "0"),
|
||||
("LaneDetectionWidth", "0", 1, "0"),
|
||||
("LaneLinesWidth", "4", 2, "2"),
|
||||
("LateralTune", "1", 2, "0"),
|
||||
("LateralTune", "1", 1, "0"),
|
||||
("LeadDepartingAlert", "0", 0, "0"),
|
||||
("LeadDetectionThreshold", "35", 3, "50"),
|
||||
("LeadInfo", "1", 2, "0"),
|
||||
("LeadInfo", "1", 3, "0"),
|
||||
("LiveDelay", "", 0, ""),
|
||||
("LKASButtonControl", "5", 2, "0"),
|
||||
("LockDoors", "1", 0, "0"),
|
||||
@@ -275,33 +263,31 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("LongitudinalTune", "1", 0, "0"),
|
||||
("LongPitch", "1", 2, "0"),
|
||||
("LoudBlindspotAlert", "0", 0, "0"),
|
||||
("LowVoltageShutdown", str(VBATT_PAUSE_CHARGING), 2, str(VBATT_PAUSE_CHARGING)),
|
||||
("LowVoltageShutdown", str(VBATT_PAUSE_CHARGING), 3, str(VBATT_PAUSE_CHARGING)),
|
||||
("MapAcceleration", "0", 1, "0"),
|
||||
("MapboxPublicKey", "", 0, ""),
|
||||
("MapboxSecretKey", "", 0, ""),
|
||||
("MapDeceleration", "0", 1, "0"),
|
||||
("MapGears", "0", 1, "0"),
|
||||
("MapGears", "0", 2, "0"),
|
||||
("MapsSelected", "", 0, ""),
|
||||
("MapStyle", "1", 2, "0"),
|
||||
("MapTurnControl", "1", 1, "0"),
|
||||
("MaxDesiredAcceleration", "4.0", 3, "2.0"),
|
||||
("MaxDesiredAcceleration", "4.0", 2, "2.0"),
|
||||
("MinimumLaneChangeSpeed", str(LANE_CHANGE_SPEED_MIN / CV.MPH_TO_MS), 2, str(LANE_CHANGE_SPEED_MIN / CV.MPH_TO_MS)),
|
||||
("Model", DEFAULT_CLASSIC_MODEL, 1, DEFAULT_CLASSIC_MODEL),
|
||||
("Model", DEFAULT_MODEL + "_default", 1, DEFAULT_MODEL + "_default"),
|
||||
("ModelDrivesAndScores", "", 2, ""),
|
||||
("ModelRandomizer", "0", 2, "0"),
|
||||
("ModelUI", "1", 2, "0"),
|
||||
("ModelVersions", "", 2, ""),
|
||||
("MTSCCurvatureCheck", "1", 2, "1"),
|
||||
("NavigationUI", "1", 1, "0"),
|
||||
("NavSettingLeftSide", "0", 0, "0"),
|
||||
("NavSettingTime24h", "0", 0, "0"),
|
||||
("NewLongAPI", "1", 2, "1"),
|
||||
("NewLongAPI", "1", 3, "1"),
|
||||
("NNFF", "1", 2, "0"),
|
||||
("NNFFLite", "1", 2, "0"),
|
||||
("NoLogging", "0", 2, "0"),
|
||||
("NoUploads", "0", 2, "0"),
|
||||
("NudgelessLaneChange", "0", 0, "0"),
|
||||
("NumericalTemp", "1", 2, "0"),
|
||||
("NudgelessLaneChange", "1", 0, "0"),
|
||||
("NumericalTemp", "1", 3, "0"),
|
||||
("Offset1", "5", 0, "0"),
|
||||
("Offset2", "5", 0, "0"),
|
||||
("Offset3", "5", 0, "0"),
|
||||
@@ -314,15 +300,15 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("openpilotMinutes", "0", 0, "0"),
|
||||
("PathEdgeWidth", "20", 2, "0"),
|
||||
("PathWidth", "6.1", 2, "5.9"),
|
||||
("PauseAOLOnBrake", "0", 2, "0"),
|
||||
("PauseLateralOnSignal", "0", 2, "0"),
|
||||
("PauseLateralSpeed", "0", 2, "0"),
|
||||
("PedalsOnUI", "0", 2, "0"),
|
||||
("PauseAOLOnBrake", "0", 1, "0"),
|
||||
("PauseLateralOnSignal", "0", 1, "0"),
|
||||
("PauseLateralSpeed", "0", 1, "0"),
|
||||
("PedalsOnUI", "0", 1, "0"),
|
||||
("PersonalizeOpenpilot", "1", 0, "0"),
|
||||
("PreferredSchedule", "2", 0, "0"),
|
||||
("PromptDistractedVolume", "101", 2, "101"),
|
||||
("PromptVolume", "101", 2, "101"),
|
||||
("QOLLateral", "1", 2, "0"),
|
||||
("QOLLateral", "1", 1, "0"),
|
||||
("QOLLongitudinal", "1", 1, "0"),
|
||||
("QOLVisuals", "1", 0, "0"),
|
||||
("RadarTracksUI", "0", 3, "0"),
|
||||
@@ -340,11 +326,11 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("RelaxedPersonalityProfile", "1", 2, "0"),
|
||||
("ReverseCruise", "0", 1, "0"),
|
||||
("RoadEdgesWidth", "2", 2, "2"),
|
||||
("RoadNameUI", "1", 2, "0"),
|
||||
("RoadNameUI", "1", 1, "0"),
|
||||
("RotatingWheel", "1", 1, "0"),
|
||||
("ScreenBrightness", "101", 2, "101"),
|
||||
("ScreenBrightnessOnroad", "101", 2, "101"),
|
||||
("ScreenManagement", "1", 2, "0"),
|
||||
("ScreenManagement", "1", 1, "0"),
|
||||
("ScreenRecorder", "1", 2, "0"),
|
||||
("ScreenTimeout", "30", 2, "30"),
|
||||
("ScreenTimeoutOnroad", "30", 2, "10"),
|
||||
@@ -359,15 +345,16 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("ShowGPU", "0", 3, "0"),
|
||||
("ShowIP", "0", 3, "0"),
|
||||
("ShowMemoryUsage", "1", 3, "0"),
|
||||
("ShownToggleDescriptions", "", 0, ""),
|
||||
("ShowSLCOffset", "1", 0, "0"),
|
||||
("ShowSpeedLimits", "1", 1, "0"),
|
||||
("ShowSteering", "0", 3, "0"),
|
||||
("ShowStoppingPoint", "0", 2, "0"),
|
||||
("ShowStoppingPointMetrics", "0", 2, "0"),
|
||||
("ShowStoppingPoint", "1", 3, "0"),
|
||||
("ShowStoppingPointMetrics", "1", 3, "0"),
|
||||
("ShowStorageLeft", "0", 3, "0"),
|
||||
("ShowStorageUsed", "0", 3, "0"),
|
||||
("Sidebar", "0", 0, "0"),
|
||||
("SignalMetrics", "0", 2, "0"),
|
||||
("SignalMetrics", "0", 3, "0"),
|
||||
("SLCConfirmation", "0", 0, "0"),
|
||||
("SLCConfirmationHigher", "0", 0, "0"),
|
||||
("SLCConfirmationLower", "0", 0, "0"),
|
||||
@@ -380,10 +367,10 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("SLCPriority2", "Map Data", 2, "Map Data"),
|
||||
("SLCPriority3", "Dashboard", 2, "Dashboard"),
|
||||
("SNGHack", "1", 2, "0"),
|
||||
("SpeedLimitChangedAlert", "1", 0, "0"),
|
||||
("SpeedLimitChangedAlert", "0", 0, "0"),
|
||||
("SpeedLimitController", "1", 0, "0"),
|
||||
("SpeedLimitFiller", "0", 0, "0"),
|
||||
("SpeedLimitSources", "0", 2, "0"),
|
||||
("SpeedLimitSources", "0", 3, "0"),
|
||||
("SshEnabled", "0", 0, "0"),
|
||||
("StartupMessageBottom", "Human-tested, frog-approved 🐸", 0, "Always keep hands on wheel and eyes on road"),
|
||||
("StartupMessageTop", "Hop in and buckle up!", 0, "Be ready to take over at any time"),
|
||||
@@ -394,10 +381,10 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("StandardJerkSpeed", "100", 3, "100"),
|
||||
("StandardJerkSpeedDecrease", "100", 3, "100"),
|
||||
("StandardPersonalityProfile", "1", 2, "0"),
|
||||
("StandbyMode", "0", 2, "0"),
|
||||
("StandbyMode", "0", 1, "0"),
|
||||
("StartAccel", "", 3, ""),
|
||||
("StartAccelStock", "", 3, ""),
|
||||
("StaticPedalsOnUI", "0", 2, "0"),
|
||||
("StaticPedalsOnUI", "0", 1, "0"),
|
||||
("SteerDelay", "", 3, ""),
|
||||
("SteerDelayStock", "", 3, ""),
|
||||
("SteerFriction", "", 3, ""),
|
||||
@@ -416,6 +403,8 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("TacoTune", "0", 2, "0"),
|
||||
("TacoTuneHacks", "0", 2, "0"),
|
||||
("TetheringEnabled", "0", 0, "0"),
|
||||
("ThemesDownloaded", "", 0, ""),
|
||||
("TinygradUpdateAvailable", "0", 1, "0"),
|
||||
("ToyotaDoors", "1", 0, "0"),
|
||||
("TrafficFollow", "0.5", 2, "0.5"),
|
||||
("TrafficJerkAcceleration", "50", 3, "50"),
|
||||
@@ -426,7 +415,6 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("TrafficPersonalityProfile", "1", 2, "0"),
|
||||
("TuningLevel", "0", 0, "0"),
|
||||
("TuningLevelConfirmed", "0", 0, "0"),
|
||||
("TurnAggressiveness", "100", 2, "100"),
|
||||
("TurnDesires", "0", 2, "0"),
|
||||
("UnlimitedLength", "1", 2, "0"),
|
||||
("UnlockDoors", "1", 0, "0"),
|
||||
@@ -439,7 +427,6 @@ frogpilot_default_params: list[tuple[str, str | bytes, int, str]] = [
|
||||
("VEgoStopping", "", 3, ""),
|
||||
("VEgoStoppingStock", "", 3, ""),
|
||||
("VeryLongDistanceButtonControl", "6", 2, "0"),
|
||||
("VisionTurnControl", "1", 1, "0"),
|
||||
("VoltSNG", "0", 2, "0"),
|
||||
("WarningImmediateVolume", "101", 2, "101"),
|
||||
("WarningSoftVolume", "101", 2, "101"),
|
||||
@@ -455,7 +442,7 @@ misc_tuning_levels: list[tuple[str, str | bytes, int, str]] = [
|
||||
|
||||
class FrogPilotVariables:
|
||||
def __init__(self):
|
||||
self.frogpilot_toggles = get_frogpilot_toggles(block=False)
|
||||
self.frogpilot_toggles = get_frogpilot_toggles()
|
||||
self.tuning_levels = {key: lvl for key, _, lvl, _ in frogpilot_default_params + misc_tuning_levels}
|
||||
|
||||
short_branch = get_build_metadata().channel
|
||||
@@ -510,7 +497,7 @@ class FrogPilotVariables:
|
||||
|
||||
params_memory.put("FrogPilotTuningLevels", json.dumps(self.tuning_levels))
|
||||
|
||||
def update(self, holiday_theme, started, boot_run=False):
|
||||
def update(self, holiday_theme, started):
|
||||
default = params_default
|
||||
level = self.tuning_levels
|
||||
toggle = self.frogpilot_toggles
|
||||
@@ -532,7 +519,7 @@ class FrogPilotVariables:
|
||||
CP = cp_reader.as_builder()
|
||||
else:
|
||||
CarInterface, _, _ = interfaces[MOCK.MOCK]
|
||||
CP = CarInterface.get_params(MOCK.MOCK, gen_empty_fingerprint(), [], False, toggle, params, False)
|
||||
CP = CarInterface.get_params(MOCK.MOCK, gen_empty_fingerprint(), [], False, toggle, False)
|
||||
CarInterface.configure_torque_tune(MOCK.MOCK, CP.lateralTuning)
|
||||
|
||||
safety_config = car.CarParams.SafetyConfig.new_message()
|
||||
@@ -545,36 +532,35 @@ class FrogPilotVariables:
|
||||
FPCP = fpcp_reader.as_builder()
|
||||
else:
|
||||
CarInterface, _, _ = interfaces[MOCK.MOCK]
|
||||
FPCP = CarInterface.get_frogpilot_params(MOCK.MOCK, gen_empty_fingerprint(), [], toggle)
|
||||
FPCP = CarInterface.get_frogpilot_params(MOCK.MOCK, gen_empty_fingerprint(), [], CP, toggle)
|
||||
|
||||
is_torque_car = CP.lateralTuning.which() == "torque"
|
||||
is_torque_car = FPCP.lateralTuning.which() == "torque"
|
||||
if not is_torque_car:
|
||||
CarInterfaceBase.configure_torque_tune("MOCK", CP.lateralTuning)
|
||||
CarInterfaceBase.configure_torque_tune(MOCK.MOCK, FPCP.lateralTuning)
|
||||
|
||||
always_on_lateral_set = bool(CP.alternativeExperience & ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL)
|
||||
toggle.always_on_lateral_set = bool(CP.alternativeExperience & ALTERNATIVE_EXPERIENCE.ALWAYS_ON_LATERAL)
|
||||
toggle.car_make = CP.carName
|
||||
toggle.car_model = CP.carFingerprint
|
||||
toggle.disable_openpilot_long = params.get_bool("DisableOpenpilotLongitudinal") if tuning_level >= level["DisableOpenpilotLongitudinal"] else default.get_bool("DisableOpenpilotLongitudinal")
|
||||
friction = CP.lateralTuning.torque.friction
|
||||
has_auto_tune = toggle.car_make in {"hyundai", "toyota"} and CP.lateralTuning.which() == "torque"
|
||||
friction = FPCP.lateralTuning.torque.friction
|
||||
has_auto_tune = toggle.car_make in {"hyundai", "toyota"} and FPCP.lateralTuning.which() == "torque"
|
||||
has_bsm = CP.enableBsm
|
||||
toggle.has_cc_long = toggle.car_make == "gm" and bool(CP.flags & GMFlags.CC_LONG.value)
|
||||
has_nnff = not comma_nnff_supported(toggle.car_model) and nnff_supported(toggle.car_model)
|
||||
has_nnff = nnff_supported(toggle.car_model)
|
||||
toggle.has_pedal = CP.enableGasInterceptor
|
||||
has_radar = not CP.radarUnavailable
|
||||
toggle.has_sdsu = toggle.car_make == "toyota" and bool(CP.flags & ToyotaFlags.SMART_DSU.value)
|
||||
has_sng = CP.autoResumeSng
|
||||
toggle.has_zss = toggle.car_make == "toyota" and bool(FPCP.fpFlags & ToyotaFrogPilotFlags.ZSS.value)
|
||||
is_angle_car = CP.steerControlType == car.CarParams.SteerControlType.angle
|
||||
latAccelFactor = CP.lateralTuning.torque.latAccelFactor
|
||||
latAccelFactor = FPCP.lateralTuning.torque.latAccelFactor
|
||||
longitudinalActuatorDelay = CP.longitudinalActuatorDelay
|
||||
max_acceleration_enabled = bool(CP.alternativeExperience & ALTERNATIVE_EXPERIENCE.RAISE_LONGITUDINAL_LIMITS_TO_ISO_MAX)
|
||||
toggle.openpilot_longitudinal = CP.openpilotLongitudinalControl and not toggle.disable_openpilot_long
|
||||
pcm_cruise = CP.pcmCruise
|
||||
startAccel = CP.startAccel
|
||||
stopAccel = CP.stopAccel
|
||||
steerActuatorDelay = CP.steerActuatorDelay
|
||||
steerKp = CP.lateralTuning.torque.kp
|
||||
steerKp = FPCP.lateralTuning.torque.kp
|
||||
steerRatio = CP.steerRatio
|
||||
toggle.stoppingDecelRate = CP.stoppingDecelRate
|
||||
taco_hacks_allowed = CP.safetyConfigs[0].safetyModel == SafetyModel.hyundaiCanfd
|
||||
@@ -595,7 +581,8 @@ class FrogPilotVariables:
|
||||
advanced_custom_ui = params.get_bool("AdvancedCustomUI") if tuning_level >= level["AdvancedCustomUI"] else default.get_bool("AdvancedCustomUI")
|
||||
toggle.hide_alerts = advanced_custom_ui and (params.get_bool("HideAlerts") if tuning_level >= level["HideAlerts"] else default.get_bool("HideAlerts")) and not toggle.debug_mode
|
||||
toggle.hide_lead_marker = toggle.openpilot_longitudinal and (advanced_custom_ui and (params.get_bool("HideLeadMarker") if tuning_level >= level["HideLeadMarker"] else default.get_bool("HideLeadMarker")) and not toggle.debug_mode)
|
||||
toggle.hide_map_icon = advanced_custom_ui and (params.get_bool("HideMapIcon") if tuning_level >= level["HideMapIcon"] else default.get_bool("HideMapIcon")) and not toggle.debug_mode
|
||||
toggle.hide_map_icon = advanced_custom_ui and (params.get_bool("HideMapIcon") if tuning_level >= level["HideMapIcon"] else default.get_bool("HideMapIcon"))
|
||||
toggle.hide_map = toggle.hide_map_icon and (params.get_bool("HideMap") if tuning_level >= level["HideMap"] else default.get_bool("HideMap"))
|
||||
toggle.hide_max_speed = advanced_custom_ui and (params.get_bool("HideMaxSpeed") if tuning_level >= level["HideMaxSpeed"] else default.get_bool("HideMaxSpeed")) and not toggle.debug_mode
|
||||
toggle.hide_speed = advanced_custom_ui and (params.get_bool("HideSpeed") if tuning_level >= level["HideSpeed"] else default.get_bool("HideSpeed")) and not toggle.debug_mode
|
||||
toggle.hide_speed_limit = advanced_custom_ui and (params.get_bool("HideSpeedLimit") if tuning_level >= level["HideSpeedLimit"] else default.get_bool("HideSpeedLimit")) and not toggle.debug_mode
|
||||
@@ -605,14 +592,14 @@ class FrogPilotVariables:
|
||||
toggle.force_auto_tune = advanced_lateral_tuning and not has_auto_tune and is_torque_car and (params.get_bool("ForceAutoTune") if tuning_level >= level["ForceAutoTune"] else default.get_bool("ForceAutoTune"))
|
||||
toggle.force_auto_tune_off = advanced_lateral_tuning and has_auto_tune and is_torque_car and (params.get_bool("ForceAutoTuneOff") if tuning_level >= level["ForceAutoTuneOff"] else default.get_bool("ForceAutoTuneOff"))
|
||||
toggle.steerActuatorDelay = np.clip(params.get_float("SteerDelay"), 0.01, 1.0) if advanced_lateral_tuning and tuning_level >= level["SteerDelay"] else steerActuatorDelay
|
||||
toggle.use_custom_steerActuatorDelay = bool(toggle.steerActuatorDelay != steerActuatorDelay)
|
||||
toggle.use_custom_steerActuatorDelay = bool(round(toggle.steerActuatorDelay, 2) != round(steerActuatorDelay, 2))
|
||||
toggle.friction = np.clip(params.get_float("SteerFriction"), 0, 0.5) if advanced_lateral_tuning and tuning_level >= level["SteerFriction"] else friction
|
||||
toggle.use_custom_friction = toggle.friction != friction and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off
|
||||
toggle.use_custom_friction = bool(round(toggle.friction, 2) != round(friction, 2)) and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off
|
||||
toggle.steerKp = [[0], [np.clip(params.get_float("SteerKP"), steerKp * 0.5, steerKp * 1.5) if advanced_lateral_tuning and is_torque_car and tuning_level >= level["SteerKP"] else steerKp]]
|
||||
toggle.latAccelFactor = np.clip(params.get_float("SteerLatAccel"), latAccelFactor * 0.75, latAccelFactor * 1.25) if advanced_lateral_tuning and tuning_level >= level["SteerLatAccel"] else latAccelFactor
|
||||
toggle.use_custom_latAccelFactor = toggle.latAccelFactor != latAccelFactor and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off
|
||||
toggle.use_custom_latAccelFactor = bool(round(toggle.latAccelFactor, 2) != round(latAccelFactor, 2)) and is_torque_car and not toggle.force_auto_tune or toggle.force_auto_tune_off
|
||||
toggle.steerRatio = np.clip(params.get_float("SteerRatio"), steerRatio * 0.5, steerRatio * 1.5) if advanced_lateral_tuning and tuning_level >= level["SteerRatio"] else steerRatio
|
||||
toggle.use_custom_steerRatio = toggle.steerRatio != steerRatio and not toggle.force_auto_tune or toggle.force_auto_tune_off
|
||||
toggle.use_custom_steerRatio = bool(round(toggle.steerRatio, 2) != round(steerRatio, 2)) and not toggle.force_auto_tune or toggle.force_auto_tune_off
|
||||
|
||||
advanced_longitudinal_tuning = params.get_bool("AdvancedLongitudinalTune") if tuning_level >= level["AdvancedLongitudinalTune"] else default.get_bool("AdvancedLongitudinalTune")
|
||||
toggle.longitudinalActuatorDelay = np.clip(params.get_float("LongitudinalActuatorDelay"), 0, 1) if advanced_longitudinal_tuning and tuning_level >= level["LongitudinalActuatorDelay"] else longitudinalActuatorDelay
|
||||
@@ -632,7 +619,7 @@ class FrogPilotVariables:
|
||||
toggle.warningImmediate_volume = max(params.get_int("WarningImmediateVolume"), 25) if toggle.alert_volume_controller and tuning_level >= level["WarningImmediateVolume"] else default.get_int("WarningImmediateVolume")
|
||||
|
||||
toggle.always_on_lateral = params.get_bool("AlwaysOnLateral") if tuning_level >= level["AlwaysOnLateral"] else default.get_bool("AlwaysOnLateral")
|
||||
toggle.always_on_lateral_set = toggle.always_on_lateral and always_on_lateral_set
|
||||
toggle.always_on_lateral_set &= toggle.always_on_lateral
|
||||
toggle.always_on_lateral_lkas = toggle.always_on_lateral_set and toggle.use_lkas_for_aol and (params.get_bool("AlwaysOnLateralLKAS") if tuning_level >= level["AlwaysOnLateralLKAS"] else default.get_bool("AlwaysOnLateralLKAS"))
|
||||
toggle.always_on_lateral_main = toggle.always_on_lateral_set and not toggle.use_lkas_for_aol and (params.get_bool("AlwaysOnLateralMain") if tuning_level >= level["AlwaysOnLateralMain"] else default.get_bool("AlwaysOnLateralMain"))
|
||||
toggle.always_on_lateral_pause_speed = params.get_int("PauseAOLOnBrake") if toggle.always_on_lateral_set and tuning_level >= level["PauseAOLOnBrake"] else default.get_int("PauseAOLOnBrake")
|
||||
@@ -656,16 +643,11 @@ class FrogPilotVariables:
|
||||
toggle.conditional_navigation_lead = toggle.conditional_navigation and (params.get_bool("CENavigationLead") if tuning_level >= level["CENavigationLead"] else default.get_bool("CENavigationLead"))
|
||||
toggle.conditional_navigation_turns = toggle.conditional_navigation and (params.get_bool("CENavigationTurns") if tuning_level >= level["CENavigationTurns"] else default.get_bool("CENavigationTurns"))
|
||||
toggle.conditional_model_stop_time = params.get_int("CEModelStopTime") if toggle.conditional_experimental_mode and tuning_level >= level["CEModelStopTime"] else default.get_int("CEModelStopTime")
|
||||
toggle.conditional_signal = params.get_int("CESignalSpeed") if toggle.conditional_experimental_mode and tuning_level >= level["CESignalSpeed"] else default.get_int("CESignalSpeed")
|
||||
toggle.conditional_signal = params.get_int("CESignalSpeed") * speed_conversion if toggle.conditional_experimental_mode and tuning_level >= level["CESignalSpeed"] else default.get_int("CESignalSpeed") * CV.MPH_TO_MS
|
||||
toggle.conditional_signal_lane_detection = toggle.conditional_signal != 0 and (params.get_bool("CESignalLaneDetection") if tuning_level >= level["CESignalLaneDetection"] else default.get_bool("CESignalLaneDetection"))
|
||||
toggle.cem_status = toggle.conditional_experimental_mode and (params.get_bool("ShowCEMStatus") if tuning_level >= level["ShowCEMStatus"] else default.get_bool("ShowCEMStatus")) or toggle.debug_mode
|
||||
|
||||
toggle.curve_speed_controller = toggle.openpilot_longitudinal and (params.get_bool("CurveSpeedControl") if tuning_level >= level["CurveSpeedControl"] else default.get_bool("CurveSpeedControl"))
|
||||
toggle.curve_sensitivity = params.get_int("CurveSensitivity") / 100 if toggle.curve_speed_controller and tuning_level >= level["CurveSensitivity"] else default.get_int("CurveSensitivity") / 100
|
||||
toggle.turn_aggressiveness = params.get_int("TurnAggressiveness") / 100 if toggle.curve_speed_controller and tuning_level >= level["TurnAggressiveness"] else default.get_int("TurnAggressiveness") / 100
|
||||
toggle.map_turn_speed_controller = toggle.curve_speed_controller and (params.get_bool("MapTurnControl") if tuning_level >= level["MapTurnControl"] else default.get_bool("MapTurnControl"))
|
||||
toggle.mtsc_curvature_check = toggle.map_turn_speed_controller and (params.get_bool("MTSCCurvatureCheck") if tuning_level >= level["MTSCCurvatureCheck"] else default.get_bool("MTSCCurvatureCheck"))
|
||||
toggle.vision_turn_speed_controller = toggle.curve_speed_controller and (params.get_bool("VisionTurnControl") if tuning_level >= level["VisionTurnControl"] else default.get_bool("VisionTurnControl"))
|
||||
toggle.curve_speed_controller = toggle.openpilot_longitudinal and (params.get_bool("CurveSpeedController") if tuning_level >= level["CurveSpeedController"] else default.get_bool("CurveSpeedController"))
|
||||
toggle.csc_status = toggle.curve_speed_controller and (params.get_bool("ShowCSCStatus") if tuning_level >= level["ShowCSCStatus"] else default.get_bool("ShowCSCStatus")) or toggle.debug_mode
|
||||
|
||||
toggle.custom_alerts = params.get_bool("CustomAlerts") if tuning_level >= level["CustomAlerts"] else default.get_bool("CustomAlerts")
|
||||
@@ -682,28 +664,28 @@ class FrogPilotVariables:
|
||||
toggle.aggressive_jerk_danger = np.clip(params.get_int("AggressiveJerkDanger") / 100, 0.25, 2) if aggressive_profile and tuning_level >= level["AggressiveJerkDanger"] else default.get_int("AggressiveJerkDanger") / 100
|
||||
toggle.aggressive_jerk_speed = np.clip(params.get_int("AggressiveJerkSpeed") / 100, 0.25, 2) if aggressive_profile and tuning_level >= level["AggressiveJerkSpeed"] else default.get_int("AggressiveJerkSpeed") / 100
|
||||
toggle.aggressive_jerk_speed_decrease = np.clip(params.get_int("AggressiveJerkSpeedDecrease") / 100, 0.25, 2) if aggressive_profile and tuning_level >= level["AggressiveJerkSpeedDecrease"] else default.get_int("AggressiveJerkSpeedDecrease") / 100
|
||||
toggle.aggressive_follow = np.clip(params.get_float("AggressiveFollow"), 1, 5) if aggressive_profile and tuning_level >= level["AggressiveFollow"] else default.get_float("AggressiveFollow")
|
||||
toggle.aggressive_follow = np.clip(params.get_float("AggressiveFollow"), 1, MAX_T_FOLLOW) if aggressive_profile and tuning_level >= level["AggressiveFollow"] else default.get_float("AggressiveFollow")
|
||||
standard_profile = toggle.custom_personalities and (params.get_bool("StandardPersonalityProfile") if tuning_level >= level["StandardPersonalityProfile"] else default.get_bool("StandardPersonalityProfile"))
|
||||
toggle.standard_jerk_acceleration = np.clip(params.get_int("StandardJerkAcceleration") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkAcceleration"] else default.get_int("StandardJerkAcceleration") / 100
|
||||
toggle.standard_jerk_deceleration = np.clip(params.get_int("StandardJerkDeceleration") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkDeceleration"] else default.get_int("StandardJerkDeceleration") / 100
|
||||
toggle.standard_jerk_danger = np.clip(params.get_int("StandardJerkDanger") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkDanger"] else default.get_int("StandardJerkDanger") / 100
|
||||
toggle.standard_jerk_speed = np.clip(params.get_int("StandardJerkSpeed") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkSpeed"] else default.get_int("StandardJerkSpeed") / 100
|
||||
toggle.standard_jerk_speed_decrease = np.clip(params.get_int("StandardJerkSpeedDecrease") / 100, 0.25, 2) if standard_profile and tuning_level >= level["StandardJerkSpeedDecrease"] else default.get_int("StandardJerkSpeedDecrease") / 100
|
||||
toggle.standard_follow = np.clip(params.get_float("StandardFollow"), 1, 5) if standard_profile and tuning_level >= level["StandardFollow"] else default.get_float("StandardFollow")
|
||||
toggle.standard_follow = np.clip(params.get_float("StandardFollow"), 1, MAX_T_FOLLOW) if standard_profile and tuning_level >= level["StandardFollow"] else default.get_float("StandardFollow")
|
||||
relaxed_profile = toggle.custom_personalities and (params.get_bool("RelaxedPersonalityProfile") if tuning_level >= level["RelaxedPersonalityProfile"] else default.get_bool("RelaxedPersonalityProfile"))
|
||||
toggle.relaxed_jerk_acceleration = np.clip(params.get_int("RelaxedJerkAcceleration") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkAcceleration"] else default.get_int("RelaxedJerkAcceleration") / 100
|
||||
toggle.relaxed_jerk_deceleration = np.clip(params.get_int("RelaxedJerkDeceleration") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkDeceleration"] else default.get_int("RelaxedJerkDeceleration") / 100
|
||||
toggle.relaxed_jerk_danger = np.clip(params.get_int("RelaxedJerkDanger") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkDanger"] else default.get_int("RelaxedJerkDanger") / 100
|
||||
toggle.relaxed_jerk_speed = np.clip(params.get_int("RelaxedJerkSpeed") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkSpeed"] else default.get_int("RelaxedJerkSpeed") / 100
|
||||
toggle.relaxed_jerk_speed_decrease = np.clip(params.get_int("RelaxedJerkSpeedDecrease") / 100, 0.25, 2) if relaxed_profile and tuning_level >= level["RelaxedJerkSpeedDecrease"] else default.get_int("RelaxedJerkSpeedDecrease") / 100
|
||||
toggle.relaxed_follow = np.clip(params.get_float("RelaxedFollow"), 1, 5) if relaxed_profile and tuning_level >= level["RelaxedFollow"] else default.get_float("RelaxedFollow")
|
||||
toggle.relaxed_follow = np.clip(params.get_float("RelaxedFollow"), 1, MAX_T_FOLLOW) if relaxed_profile and tuning_level >= level["RelaxedFollow"] else default.get_float("RelaxedFollow")
|
||||
traffic_profile = toggle.custom_personalities and (params.get_bool("TrafficPersonalityProfile") if tuning_level >= level["TrafficPersonalityProfile"] else default.get_bool("TrafficPersonalityProfile"))
|
||||
toggle.traffic_mode_jerk_acceleration = [np.clip(params.get_int("TrafficJerkAcceleration") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkAcceleration"] else default.get_int("TrafficJerkAcceleration") / 100, toggle.aggressive_jerk_acceleration]
|
||||
toggle.traffic_mode_jerk_deceleration = [np.clip(params.get_int("TrafficJerkDeceleration") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkDeceleration"] else default.get_int("TrafficJerkDeceleration") / 100, toggle.aggressive_jerk_deceleration]
|
||||
toggle.traffic_mode_jerk_danger = [np.clip(params.get_int("TrafficJerkDanger") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkDanger"] else default.get_int("TrafficJerkDanger") / 100, toggle.aggressive_jerk_danger]
|
||||
toggle.traffic_mode_jerk_speed = [np.clip(params.get_int("TrafficJerkSpeed") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkSpeed"] else default.get_int("TrafficJerkSpeed") / 100, toggle.aggressive_jerk_speed]
|
||||
toggle.traffic_mode_jerk_speed_decrease = [np.clip(params.get_int("TrafficJerkSpeedDecrease") / 100, 0.25, 2) if traffic_profile and tuning_level >= level["TrafficJerkSpeedDecrease"] else default.get_int("TrafficJerkSpeedDecrease") / 100, toggle.aggressive_jerk_speed_decrease]
|
||||
toggle.traffic_mode_follow = [np.clip(params.get_float("TrafficFollow"), 0.5, 5) if traffic_profile and tuning_level >= level["TrafficFollow"] else default.get_float("TrafficFollow"), toggle.aggressive_follow]
|
||||
toggle.traffic_mode_follow = [np.clip(params.get_float("TrafficFollow"), 0.5, MAX_T_FOLLOW) if traffic_profile and tuning_level >= level["TrafficFollow"] else default.get_float("TrafficFollow"), toggle.aggressive_follow]
|
||||
|
||||
custom_ui = params.get_bool("CustomUI") if tuning_level >= level["CustomUI"] else default.get_bool("CustomUI")
|
||||
toggle.acceleration_path = toggle.openpilot_longitudinal and (custom_ui and (params.get_bool("AccelerationPath") if tuning_level >= level["AccelerationPath"] else default.get_bool("AccelerationPath")) or toggle.debug_mode)
|
||||
@@ -734,13 +716,13 @@ class FrogPilotVariables:
|
||||
toggle.storage_used_metrics = developer_metrics and (params.get_bool("ShowStorageUsed") if tuning_level >= level["ShowStorageUsed"] else default.get_bool("ShowStorageUsed")) and not toggle.debug_mode
|
||||
toggle.use_si_metrics = developer_metrics and (params.get_bool("UseSI") if tuning_level >= level["UseSI"] else default.get_bool("UseSI")) or toggle.debug_mode
|
||||
toggle.developer_sidebar = toggle.developer_ui and (params.get_bool("DeveloperSidebar") if tuning_level >= level["DeveloperSidebar"] else default.get_bool("DeveloperSidebar")) or toggle.debug_mode
|
||||
toggle.developer_sidebar_metric1 = params.get_int("DeveloperSidebarMetric1") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric1"] else 1 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric1")
|
||||
toggle.developer_sidebar_metric2 = params.get_int("DeveloperSidebarMetric2") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric2"] else 3 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric2")
|
||||
toggle.developer_sidebar_metric3 = params.get_int("DeveloperSidebarMetric3") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric3"] else 4 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric3")
|
||||
toggle.developer_sidebar_metric4 = params.get_int("DeveloperSidebarMetric4") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric4"] else 5 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric4")
|
||||
toggle.developer_sidebar_metric5 = params.get_int("DeveloperSidebarMetric5") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric5"] else 6 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric5")
|
||||
toggle.developer_sidebar_metric6 = params.get_int("DeveloperSidebarMetric6") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric6"] else 7 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric6")
|
||||
toggle.developer_sidebar_metric7 = params.get_int("DeveloperSidebarMetric7") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric7"] else 11 if toggle.debug_mode else default.get_float("DeveloperSidebarMetric7")
|
||||
toggle.developer_sidebar_metric1 = params.get_int("DeveloperSidebarMetric1") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric1"] else 1 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric1")
|
||||
toggle.developer_sidebar_metric2 = params.get_int("DeveloperSidebarMetric2") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric2"] else 3 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric2")
|
||||
toggle.developer_sidebar_metric3 = params.get_int("DeveloperSidebarMetric3") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric3"] else 4 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric3")
|
||||
toggle.developer_sidebar_metric4 = params.get_int("DeveloperSidebarMetric4") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric4"] else 5 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric4")
|
||||
toggle.developer_sidebar_metric5 = params.get_int("DeveloperSidebarMetric5") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric5"] else 6 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric5")
|
||||
toggle.developer_sidebar_metric6 = params.get_int("DeveloperSidebarMetric6") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric6"] else 7 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric6")
|
||||
toggle.developer_sidebar_metric7 = params.get_int("DeveloperSidebarMetric7") if toggle.developer_sidebar and tuning_level >= level["DeveloperSidebarMetric7"] else 11 if toggle.debug_mode else default.get_int("DeveloperSidebarMetric7")
|
||||
developer_widgets = toggle.developer_ui and params.get_bool("DeveloperWidgets") if tuning_level >= level["DeveloperWidgets"] else default.get_bool("DeveloperWidgets")
|
||||
toggle.adjacent_lead_tracking = has_radar and ((developer_widgets and params.get_bool("AdjacentLeadsUI") if tuning_level >= level["AdjacentLeadsUI"] else default.get_bool("AdjacentLeadsUI")) or toggle.debug_mode)
|
||||
toggle.radar_tracks = has_radar and ((developer_widgets and params.get_bool("RadarTracksUI") if tuning_level >= level["RadarTracksUI"] else default.get_bool("RadarTracksUI")) or toggle.debug_mode)
|
||||
@@ -798,7 +780,7 @@ class FrogPilotVariables:
|
||||
toggle.holiday_themes = params.get_bool("HolidayThemes") if tuning_level >= level["HolidayThemes"] else default.get_bool("HolidayThemes")
|
||||
toggle.current_holiday_theme = holiday_theme if toggle.holiday_themes else "stock"
|
||||
|
||||
toggle.lane_changes = params.get_bool("LaneChangeCustomizations") if tuning_level >= level["LaneChangeCustomizations"] else default.get_bool("LaneChangeCustomizations")
|
||||
toggle.lane_changes = params.get_bool("LaneChanges") if tuning_level >= level["LaneChanges"] else default.get_bool("LaneChanges")
|
||||
toggle.lane_change_delay = params.get_float("LaneChangeTime") if toggle.lane_changes and tuning_level >= level["LaneChangeTime"] else default.get_float("LaneChangeTime")
|
||||
toggle.lane_detection_width = params.get_float("LaneDetectionWidth") * distance_conversion if toggle.lane_changes and tuning_level >= level["LaneDetectionWidth"] else default.get_float("LaneDetectionWidth") * CV.FOOT_TO_METER
|
||||
toggle.lane_detection = toggle.lane_detection_width > 0
|
||||
@@ -807,6 +789,7 @@ class FrogPilotVariables:
|
||||
toggle.one_lane_change = toggle.lane_changes and (params.get_bool("OneLaneChange") if tuning_level >= level["OneLaneChange"] else default.get_bool("OneLaneChange"))
|
||||
|
||||
lateral_tuning = params.get_bool("LateralTune") if tuning_level >= level["LateralTune"] else default.get_bool("LateralTune")
|
||||
toggle.force_torque_controller = lateral_tuning and not is_torque_car and (params.get_bool("ForceTorqueController") if tuning_level >= level["ForceTorqueController"] else default.get_bool("ForceTorqueController"))
|
||||
toggle.nnff = lateral_tuning and has_nnff and not is_angle_car and (params.get_bool("NNFF") if tuning_level >= level["NNFF"] else default.get_bool("NNFF"))
|
||||
toggle.nnff_lite = not toggle.nnff and lateral_tuning and not is_angle_car and (params.get_bool("NNFFLite") if tuning_level >= level["NNFFLite"] else default.get_bool("NNFFLite"))
|
||||
toggle.use_turn_desires = lateral_tuning and (params.get_bool("TurnDesires") if tuning_level >= level["TurnDesires"] else default.get_bool("TurnDesires"))
|
||||
@@ -826,7 +809,6 @@ class FrogPilotVariables:
|
||||
|
||||
longitudinal_tuning = toggle.openpilot_longitudinal and (params.get_bool("LongitudinalTune") if tuning_level >= level["LongitudinalTune"] else default.get_bool("LongitudinalTune"))
|
||||
toggle.acceleration_profile = params.get_int("AccelerationProfile") if longitudinal_tuning and tuning_level >= level["AccelerationProfile"] else default.get_int("AccelerationProfile")
|
||||
toggle.sport_plus = max_acceleration_enabled and toggle.acceleration_profile == 3
|
||||
toggle.deceleration_profile = params.get_int("DecelerationProfile") if longitudinal_tuning and tuning_level >= level["DecelerationProfile"] else default.get_int("DecelerationProfile")
|
||||
toggle.human_acceleration = longitudinal_tuning and (params.get_bool("HumanAcceleration") if tuning_level >= level["HumanAcceleration"] else default.get_bool("HumanAcceleration"))
|
||||
toggle.human_following = longitudinal_tuning and (params.get_bool("HumanFollowing") if tuning_level >= level["HumanFollowing"] else default.get_bool("HumanFollowing"))
|
||||
@@ -834,39 +816,31 @@ class FrogPilotVariables:
|
||||
toggle.max_desired_acceleration = np.clip(params.get_float("MaxDesiredAcceleration"), 0.1, 4.0) if longitudinal_tuning and tuning_level >= level["MaxDesiredAcceleration"] else default.get_float("MaxDesiredAcceleration")
|
||||
toggle.taco_tune = longitudinal_tuning and (params.get_bool("TacoTune") if tuning_level >= level["TacoTune"] else default.get_bool("TacoTune"))
|
||||
|
||||
toggle.available_models = params.get("AvailableModels", encoding="utf-8") or ""
|
||||
toggle.available_model_names = params.get("AvailableModelNames", encoding="utf-8") or ""
|
||||
toggle.model_versions = params.get("ModelVersions", encoding="utf-8") or ""
|
||||
downloaded_models = [model for model in toggle.available_models.split(",") if any(MODELS_PATH.glob(f"{model}.*"))]
|
||||
toggle.model_randomizer = downloaded_models and (params.get_bool("ModelRandomizer") if tuning_level >= level["ModelRandomizer"] else default.get_bool("ModelRandomizer"))
|
||||
if toggle.available_models and toggle.available_model_names and downloaded_models and toggle.model_versions:
|
||||
toggle.available_models += f",{DEFAULT_TINYGRAD_MODEL}"
|
||||
toggle.available_model_names += f",{DEFAULT_TINYGRAD_MODEL_NAME}"
|
||||
toggle.model_versions += f",{DEFAULT_TINYGRAD_MODEL_VERSION}"
|
||||
downloaded_models += [DEFAULT_TINYGRAD_MODEL]
|
||||
if toggle.model_randomizer:
|
||||
if not started:
|
||||
blacklisted_models = (params.get("BlacklistedModels", encoding="utf-8") or "").split(",")
|
||||
selectable_models = [model for model in downloaded_models if model not in blacklisted_models]
|
||||
toggle.model = random.choice(selectable_models) if selectable_models else default.get("Model", encoding="utf-8")
|
||||
toggle.model_name = "Mystery Model 👻"
|
||||
toggle.model_version = toggle.model_versions.split(",")[toggle.available_models.split(",").index(toggle.model)]
|
||||
else:
|
||||
toggle.model = params.get("Model", encoding="utf-8") if tuning_level >= level["Model"] else default.get("Model", encoding="utf-8")
|
||||
if toggle.model in downloaded_models:
|
||||
toggle.model_name = toggle.available_model_names.split(",")[toggle.available_models.split(",").index(toggle.model)]
|
||||
toggle.model_version = toggle.model_versions.split(",")[toggle.available_models.split(",").index(toggle.model)]
|
||||
else:
|
||||
toggle.model = default.get("Model", encoding="utf-8")
|
||||
toggle.model_name = toggle.available_model_names.split(",")[toggle.available_models.split(",").index(toggle.model)]
|
||||
toggle.model_version = toggle.model_versions.split(",")[toggle.available_models.split(",").index(toggle.model)]
|
||||
toggle.available_models = (params.get("AvailableModels", encoding="utf-8") or "") + f",{DEFAULT_MODEL}"
|
||||
toggle.available_model_names = (params.get("AvailableModelNames", encoding="utf-8") or "") + f",{DEFAULT_MODEL_NAME}"
|
||||
downloaded_models = [model for model in toggle.available_models.split(",") if (MODELS_PATH / f"{model}.thneed").is_file() or all((MODELS_PATH / f"{model}_{filename}").is_file() for filename, _ in TINYGRAD_FILES)]
|
||||
model_versions = (params.get("ModelVersions", encoding="utf-8") or "") + f",{DEFAULT_MODEL_VERSION}"
|
||||
toggle.model_randomizer = params.get_bool("ModelRandomizer") if tuning_level >= level["ModelRandomizer"] else default.get_bool("ModelRandomizer")
|
||||
if toggle.model_randomizer:
|
||||
if not started:
|
||||
blacklisted_models = (params.get("BlacklistedModels", encoding="utf-8") or "").split(",")
|
||||
selectable_models = [model for model in downloaded_models if model not in blacklisted_models]
|
||||
toggle.model = random.choice(selectable_models) if selectable_models else DEFAULT_MODEL
|
||||
toggle.model_name = "Mystery Model 👻"
|
||||
toggle.model_version = model_versions.split(",")[toggle.available_models.split(",").index(toggle.model)]
|
||||
else:
|
||||
toggle.model = DEFAULT_CLASSIC_MODEL
|
||||
toggle.model_name = DEFAULT_CLASSIC_MODEL_NAME
|
||||
toggle.model_version = DEFAULT_CLASSIC_MODEL_VERSION
|
||||
model = ((params.get("Model", encoding="utf-8") if tuning_level >= level["Model"] else default.get("Model", encoding="utf-8")) or DEFAULT_MODEL).removesuffix("_default")
|
||||
if model in downloaded_models:
|
||||
toggle.model = model
|
||||
toggle.model_name = dict(zip(toggle.available_models.split(","), toggle.available_model_names.split(",")))[toggle.model]
|
||||
toggle.model_version = dict(zip(toggle.available_models.split(","), model_versions.split(",")))[toggle.model]
|
||||
else:
|
||||
toggle.model = DEFAULT_MODEL
|
||||
toggle.model_name = DEFAULT_MODEL_NAME
|
||||
toggle.model_version = DEFAULT_MODEL_VERSION
|
||||
toggle.classic_model = toggle.model_version in {"v1", "v2", "v3", "v4"}
|
||||
toggle.tinygrad_model = toggle.model_version in {"v7"}
|
||||
toggle.tomb_raider = toggle.model == "space-lab"
|
||||
toggle.classic_longitudinal = toggle.model_version in {"v1", "v2", "v3", "v4", "v5", "v6"}
|
||||
toggle.tinygrad_model = not toggle.classic_model and toggle.model_version not in {"v5", "v6"}
|
||||
|
||||
toggle.model_ui = params.get_bool("ModelUI") if tuning_level >= level["ModelUI"] else default.get_bool("ModelUI")
|
||||
toggle.dynamic_path_width = toggle.model_ui and (params.get_bool("DynamicPathWidth") if tuning_level >= level["DynamicPathWidth"] else default.get_bool("DynamicPathWidth"))
|
||||
@@ -884,8 +858,9 @@ class FrogPilotVariables:
|
||||
toggle.show_speed_limits = toggle.navigation_ui and (params.get_bool("ShowSpeedLimits") if tuning_level >= level["ShowSpeedLimits"] else default.get_bool("ShowSpeedLimits"))
|
||||
toggle.speed_limit_vienna = toggle.navigation_ui and (params.get_bool("UseVienna") if tuning_level >= level["UseVienna"] else default.get_bool("UseVienna"))
|
||||
|
||||
toggle.old_long_api = toggle.openpilot_longitudinal and toggle.car_make == "gm" and toggle.has_cc_long and not toggle.has_pedal
|
||||
toggle.old_long_api |= toggle.openpilot_longitudinal and toggle.car_make == "hyundai" and not (params.get_bool("NewLongAPI") if tuning_level >= level["NewLongAPI"] else default.get_bool("NewLongAPI"))
|
||||
if not started:
|
||||
toggle.old_long_api = toggle.openpilot_longitudinal and toggle.car_make == "gm" and toggle.has_cc_long and not toggle.has_pedal
|
||||
toggle.old_long_api |= toggle.openpilot_longitudinal and toggle.car_make == "hyundai" and not (params.get_bool("NewLongAPI") if tuning_level >= level["NewLongAPI"] else default.get_bool("NewLongAPI"))
|
||||
|
||||
personalize_openpilot = params.get_bool("PersonalizeOpenpilot") if tuning_level >= level["PersonalizeOpenpilot"] else default.get_bool("PersonalizeOpenpilot")
|
||||
toggle.color_scheme = toggle.current_holiday_theme if toggle.current_holiday_theme != "stock" else params.get("CustomColors", encoding="utf-8") if personalize_openpilot else "stock"
|
||||
@@ -894,10 +869,10 @@ class FrogPilotVariables:
|
||||
toggle.random_themes = personalize_openpilot and (params.get_bool("RandomThemes") if tuning_level >= level["RandomThemes"] else default.get_bool("RandomThemes"))
|
||||
toggle.signal_icons = toggle.current_holiday_theme if toggle.current_holiday_theme != "stock" else params.get("CustomSignals", encoding="utf-8") if personalize_openpilot else "stock"
|
||||
toggle.sound_pack = toggle.current_holiday_theme if toggle.current_holiday_theme != "stock" else params.get("CustomSounds", encoding="utf-8") if personalize_openpilot else "stock"
|
||||
if not toggle.random_themes or boot_run:
|
||||
if not toggle.random_themes:
|
||||
toggle.wheel_image = toggle.current_holiday_theme if toggle.current_holiday_theme != "stock" else params.get("WheelIcon", encoding="utf-8") if personalize_openpilot else "stock"
|
||||
else:
|
||||
toggle.wheel_image = next((file.resolve().stem for file in (ACTIVE_THEME_PATH / "steering_wheel").glob("wheel.*")), "none")
|
||||
toggle.wheel_image = next((file.resolve().stem for file in (ACTIVE_THEME_PATH / "steering_wheel").glob("wheel.*")), "stock")
|
||||
|
||||
quality_of_life_lateral = params.get_bool("QOLLateral") if tuning_level >= level["QOLLateral"] else default.get_bool("QOLLateral")
|
||||
toggle.pause_lateral_below_speed = params.get_int("PauseLateralSpeed") * speed_conversion if quality_of_life_lateral and tuning_level >= level["PauseLateralSpeed"] else default.get_int("PauseLateralSpeed") * CV.MPH_TO_MS
|
||||
@@ -906,9 +881,8 @@ class FrogPilotVariables:
|
||||
quality_of_life_longitudinal = params.get_bool("QOLLongitudinal") if tuning_level >= level["QOLLongitudinal"] else default.get_bool("QOLLongitudinal")
|
||||
toggle.cruise_increase = params.get_int("CustomCruise") if quality_of_life_longitudinal and not pcm_cruise and tuning_level >= level["CustomCruise"] else default.get_int("CustomCruise")
|
||||
toggle.cruise_increase_long = params.get_int("CustomCruiseLong") if quality_of_life_longitudinal and not pcm_cruise and tuning_level >= level["CustomCruiseLong"] else default.get_int("CustomCruiseLong")
|
||||
toggle.force_standstill = quality_of_life_longitudinal and (params.get_bool("ForceStandstill") if tuning_level >= level["ForceStandstill"] else default.get_bool("ForceStandstill"))
|
||||
toggle.force_stops = quality_of_life_longitudinal and (params.get_bool("ForceStops") if tuning_level >= level["ForceStops"] else default.get_bool("ForceStops"))
|
||||
toggle.increased_stopped_distance = params.get_int("IncreasedStoppedDistance") * distance_conversion if quality_of_life_longitudinal and tuning_level >= level["IncreasedStoppedDistance"] else default.get_int("IncreasedStoppedDistance") * CV.FOOT_TO_METER
|
||||
toggle.increase_stopped_distance = params.get_int("IncreasedStoppedDistance") * distance_conversion if quality_of_life_longitudinal and tuning_level >= level["IncreasedStoppedDistance"] else default.get_int("IncreasedStoppedDistance") * CV.FOOT_TO_METER
|
||||
map_gears = quality_of_life_longitudinal and (params.get_bool("MapGears") if tuning_level >= level["MapGears"] else default.get_bool("MapGears"))
|
||||
toggle.map_acceleration = map_gears and (params.get_bool("MapAcceleration") if tuning_level >= level["MapAcceleration"] else default.get_bool("MapAcceleration"))
|
||||
toggle.map_deceleration = map_gears and (params.get_bool("MapDeceleration") if tuning_level >= level["MapDeceleration"] else default.get_bool("MapDeceleration"))
|
||||
@@ -919,7 +893,6 @@ class FrogPilotVariables:
|
||||
toggle.camera_view = params.get_int("CameraView") if quality_of_life_visuals and tuning_level >= level["CameraView"] else default.get_int("CameraView")
|
||||
toggle.driver_camera_in_reverse = quality_of_life_visuals and (params.get_bool("DriverCamera") if tuning_level >= level["DriverCamera"] else default.get_bool("DriverCamera"))
|
||||
toggle.onroad_distance_button = toggle.openpilot_longitudinal and (quality_of_life_visuals and (params.get_bool("OnroadDistanceButton") if tuning_level >= level["OnroadDistanceButton"] else default.get_bool("OnroadDistanceButton")) or toggle.debug_mode)
|
||||
toggle.standby_mode = quality_of_life_visuals and (params.get_bool("StandbyMode") if tuning_level >= level["StandbyMode"] else default.get_bool("StandbyMode"))
|
||||
toggle.stopped_timer = quality_of_life_visuals and (params.get_bool("StoppedTimer") if tuning_level >= level["StoppedTimer"] else default.get_bool("StoppedTimer"))
|
||||
|
||||
toggle.rainbow_path = params.get_bool("RainbowPath") if tuning_level >= level["RainbowPath"] else default.get_bool("RainbowPath")
|
||||
@@ -932,6 +905,7 @@ class FrogPilotVariables:
|
||||
toggle.screen_recorder = screen_management and (params.get_bool("ScreenRecorder") if tuning_level >= level["ScreenRecorder"] else default.get_bool("ScreenRecorder")) or toggle.debug_mode
|
||||
toggle.screen_timeout = params.get_int("ScreenTimeout") if screen_management and tuning_level >= level["ScreenTimeout"] else default.get_int("ScreenTimeout")
|
||||
toggle.screen_timeout_onroad = params.get_int("ScreenTimeoutOnroad") if screen_management and tuning_level >= level["ScreenTimeoutOnroad"] else default.get_int("ScreenTimeoutOnroad")
|
||||
toggle.standby_mode = screen_management and (params.get_bool("StandbyMode") if tuning_level >= level["StandbyMode"] else default.get_bool("StandbyMode"))
|
||||
|
||||
toggle.sng_hack = toggle.openpilot_longitudinal and toggle.car_make == "toyota" and not toggle.has_pedal and not has_sng and (params.get_bool("SNGHack") if tuning_level >= level["SNGHack"] else default.get_bool("SNGHack"))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user