You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.7 KiB
PowerShell

$ErrorActionPreference = "Stop"
$root = Split-Path -Parent $MyInvocation.MyCommand.Path
$running = Get-CimInstance Win32_Process |
Where-Object { $_.Name -like "python*" -and $_.CommandLine -match "main\.py" }
if ($running) {
$running | Select-Object ProcessId, Name, CommandLine
throw "main.py already running; stop it before starting another copy."
}
New-Item -ItemType Directory -Force -Path `
"$root\runtime-data\logs", `
"$root\runtime-data\ui", `
"$root\runtime-data\guidance", `
"$root\runtime-data\autopilot", `
"$root\runtime-data\out" | Out-Null
$env:PYTHONUNBUFFERED = "1"
$env:FPV_MODEL_PATH = "$root\best.pt"
$env:FPV_MODEL_FUSE = "0"
$env:FPV_TORCH_CUDNN_BENCHMARK = "1"
$env:FPV_TORCH_MATMUL_PRECISION = "high"
$env:FPV_SOURCE = "0"
$env:FPV_CAP_BACKEND = "dshow"
$env:FPV_CAP_AUTO_RES = "0"
$env:FPV_CAP_WIDTH = "1920"
$env:FPV_CAP_HEIGHT = "1080"
$env:FPV_CAP_FPS = "30"
$env:FPV_CAP_FOURCC = "MJPG"
$env:FPV_CAMERA_READ_FAIL_RETRIES = "120"
$env:FPV_FORCE_EFFECTIVE_PAL = "1"
$env:FPV_EFFECTIVE_W = "640"
$env:FPV_EFFECTIVE_H = "360"
$env:FPV_IMG_SIZE_ROI = "320"
$env:FPV_IMG_SIZE_FULL = "320"
$env:FPV_MAX_DET = "5"
$env:FPV_RECOVER_FORCED_DET_EVERY = "3"
$env:FPV_RECOVER_FULLSCAN_EVERY = "45"
$env:FPV_CLOSE_PERIODIC_FULLSCAN_EVERY = "24"
$env:FPV_YOLO_FORCE_DET_WHEN_WEAK = "1"
$env:FPV_ANALOG_FPV_MODE = "0"
$env:FPV_APPLY_YOLO_PREPROC = "0"
$env:FPV_PRE_BLUR_K = "0"
$env:FPV_PRE_UNSHARP = "0.0"
$env:FPV_DEBUG = "0"
$env:FPV_TARGET_OUT_FPS = "30"
$env:FPV_VIDEO_REALTIME = "1"
$env:FPV_SHOW_OUTPUT = "0"
$env:FPV_SAVE_INFER_VIDEO = "1"
$env:FPV_OUT_VIDEO_PATH = "$root\runtime-data\out\out_infer.mp4"
$env:FPV_DETECTION_CLIP_MAX_GAP_SEC = "15"
$env:FPV_INFER_VIDEO_MAX_W = "960"
$env:FPV_INFER_VIDEO_MAX_H = "540"
$env:FPV_UI_FRAME_EXPORT_ENABLE = "1"
$env:FPV_UI_FRAME_EXPORT_PATH = "$root\runtime-data\ui\latest.jpg"
$env:FPV_UI_FRAME_EXPORT_EVERY = "1"
$env:FPV_UI_FRAME_EXPORT_MAX_W = "960"
$env:FPV_UI_FRAME_EXPORT_MAX_H = "540"
$env:FPV_UI_FRAME_EXPORT_JPEG_QUALITY = "65"
$env:FPV_UI_FRAME_EXPORT_ASYNC = "1"
$env:FPV_GUIDANCE_EXPORT_ENABLE = "1"
$env:FPV_GUIDANCE_EXPORT_PATH = "$root\runtime-data\guidance\guidance_state.json"
$env:FPV_AUTOPILOT_ENABLE = "1"
$env:FPV_AUTOPILOT_BACKEND = "json"
$env:FPV_AUTOPILOT_JSON_PATH = "$root\runtime-data\autopilot\autopilot_cmd.json"
$process = Start-Process `
-FilePath "$root\.venv\Scripts\python.exe" `
-ArgumentList "-u", "main.py" `
-WorkingDirectory $root `
-RedirectStandardOutput "$root\runtime-data\logs\main.log" `
-RedirectStandardError "$root\runtime-data\logs\main.err.log" `
-WindowStyle Hidden `
-PassThru
"started pid=$($process.Id) ui=http://localhost:8080"