version: sunnypilot v2025.003.000 (dev) date: 2026-02-09T02:04:38 master commit: 254f55ac15a40343d7255f2f098de3442e0c4a6f
64 lines
2.1 KiB
Python
Executable File
64 lines
2.1 KiB
Python
Executable File
import argparse
|
|
import os
|
|
import hashlib
|
|
|
|
from openpilot.common.basedir import BASEDIR
|
|
from openpilot.sunnypilot import get_file_hash
|
|
|
|
DEFAULT_MODEL_NAME_PATH = os.path.join(BASEDIR, "common", "model.h")
|
|
MODEL_HASH_PATH = os.path.join(BASEDIR, "sunnypilot", "models", "tests", "model_hash")
|
|
VISION_ONNX_PATH = os.path.join(BASEDIR, "selfdrive", "modeld", "models", "driving_vision.onnx")
|
|
POLICY_ONNX_PATH = os.path.join(BASEDIR, "selfdrive", "modeld", "models", "driving_policy.onnx")
|
|
|
|
|
|
def update_model_hash():
|
|
vision_hash = get_file_hash(VISION_ONNX_PATH)
|
|
policy_hash = get_file_hash(POLICY_ONNX_PATH)
|
|
|
|
combined_hash = hashlib.sha256((vision_hash + policy_hash).encode()).hexdigest()
|
|
|
|
with open(MODEL_HASH_PATH, "w") as f:
|
|
f.write(combined_hash)
|
|
|
|
print(f"Generated and updated new combined model hash to {MODEL_HASH_PATH}")
|
|
|
|
|
|
def get_current_default_model_name():
|
|
print("[GET DEFAULT MODEL NAME]")
|
|
with open(DEFAULT_MODEL_NAME_PATH) as f:
|
|
name = f.read().split('"')[1]
|
|
print(f'Current default model name: "{name}"')
|
|
|
|
return name
|
|
|
|
|
|
def update_default_model_name(name: str):
|
|
print("[CHANGE DEFAULT MODEL NAME]")
|
|
with open(DEFAULT_MODEL_NAME_PATH, "w") as f:
|
|
f.write(f'#define DEFAULT_MODEL "{name}"\n')
|
|
print(f'New default model name: "{name}"')
|
|
print("[DONE]")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Update default model name and hash")
|
|
parser.add_argument("--new_name", type=str, help="New default model name")
|
|
args = parser.parse_args()
|
|
|
|
if not args.new_name:
|
|
print("Warning: No new default model name provided. Use --new_name to specify")
|
|
print("Default model name and hash will not be updated! (aborted)")
|
|
exit(0)
|
|
|
|
current_name = get_current_default_model_name()
|
|
new_name = f"{args.new_name} (Default)"
|
|
if current_name == new_name:
|
|
print(f'Proposed default model name: "{new_name}"')
|
|
confirm = input("Proposed default model name is the same as the current default model name. Confirm? (y/n): ").upper().strip()
|
|
if confirm != "Y":
|
|
print("Default model name and hash will not be updated! (aborted)")
|
|
exit(0)
|
|
|
|
update_default_model_name(new_name)
|
|
update_model_hash()
|