$ErrorActionPreference = "Stop" $root = Split-Path -Parent $MyInvocation.MyCommand.Path Get-CimInstance Win32_Process | Where-Object { $_.Name -like "python*" -and ($_.CommandLine -match "main\.py" -or $_.CommandLine -match "ui_server\.py") } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force } 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_DATA_DIR = "$root\runtime-data" $env:FPV_UI_PORT = "8080" $env:FPV_UI_LOG_PATH = "$root\runtime-data\logs\main.log" $env:FPV_UI_FRAME_PATH = "$root\runtime-data\ui\latest.jpg" $env:FPV_UI_GUIDANCE_PATH = "$root\runtime-data\guidance\guidance_state.json" $env:FPV_UI_OUT_DIR = "$root\runtime-data\out" $ui = Start-Process ` -FilePath "$root\.venv\Scripts\python.exe" ` -ArgumentList "ui_server.py" ` -WorkingDirectory $root ` -RedirectStandardOutput "$root\runtime-data\logs\ui.log" ` -RedirectStandardError "$root\runtime-data\logs\ui.err.log" ` -WindowStyle Hidden ` -PassThru $env:FPV_MODEL_PATH = "$root\best.pt" $env:FPV_SOURCE = "$root\runtime-data\input\source.mp4" $env:FPV_SHOW_OUTPUT = "0" $env:FPV_VIDEO_REALTIME = "1" $env:FPV_SAVE_INFER_VIDEO = "1" $env:FPV_OUT_VIDEO_PATH = "$root\runtime-data\out\out_infer.mp4" $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_JPEG_QUALITY = "80" $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" $main = 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 "ui_pid=$($ui.Id) main_pid=$($main.Id) url=http://localhost:8080"