Screen
screen.py — Orquestração da interface gráfica do simulador de radar.
Responsabilidades deste módulo
prepare_output_file(): cria diretório e retorna caminho do vídeo MP4.ProcessingWidget: QSplitter vertical que agrupa os widgets de processamento (MTI → Integrador → CFAR → PPI Estimado).MainWindow: janela principal Qt com layout de 3 colunas e timer de atualização em 30 ms.
ProcessingWidget
Bases: QSplitter
Pipeline de processamento de sinal radar — coluna direita da UI.
Layout (QSplitter vertical): ┌──────────────────────────────────────────────────────────┐ │ MTI Plot (amarelo) — cancela ecos fixos │ │ Integrator Plot (cinza) — acumula SNR em N_INT PRIs │ │ CA-CFAR Plot (ciano) — threshold adaptativo │ ├──────────────────────────────────────────────────────────┤ │ PPI Estimado (azul) — rastro de detecções CFAR │ └──────────────────────────────────────────────────────────┘
O método update(pulse_data) encadeia os quatro estágios e
atualiza o PPI Estimado com as detecções do CFAR.
Parâmetros de processamento (de constants.py):
N_GUARD, N_TRAIN → janelas do CA-CFAR
K_CFAR → fator multiplicativo do threshold
N_INT → número de PRIs integrados
MAX_MATCH_DIST → raio (m) para associar detecção a alvo real
__init__(ppi, pulse_widget, coherent_integration=False, normalize_plots=True)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ppi
|
PPI
|
Instância de PPI com radar e targets. |
required |
pulse_widget
|
PulseWidget
|
PulseWidget da coluna do meio (fornece t_us, T_PRI, etc.). |
required |
coherent_integration
|
bool
|
Se True, usa integração coerente no IntegratorWidget. |
False
|
normalize_plots
|
bool
|
Se True, normaliza eixos Y de todos os plots para [0, 1]. |
True
|
update(pulse_data)
Executa o pipeline completo de processamento para um PRI.
Sequência
- MTI : cancela ecos de alvos fixos.
- Integrador : acumula SNR em N_INT PRIs.
- CA-CFAR : define threshold adaptativo e detecta picos.
- PPI Estimado: converte picos em coordenadas cartesianas, classifica (verdadeiro vs. FA) e atualiza display.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pulse_data
|
dict
|
dict retornado por |
required |
MainWindow
Bases: QMainWindow
Janela principal da interface gráfica do simulador de radar.
Layout de 3 colunas
Coluna 1 (esq.): PPIViewer real + DetectionPlot + AmplitudePlot + PhasePlot Coluna 2 (mid.): PulseWidget (TX / RX / Matched Filter + cabeçalho) Coluna 3 (dir.): ProcessingWidget (MTI / Integrador / CFAR / PPI Estimado)
A simulação avança a cada 30 ms via QTimer. Quando elapsed_time
atinge t, o timer para e a janela fecha automaticamente.
Se output_file for fornecido, cada frame é capturado e gravado num
vídeo MP4 (H.264 / yuv420p) compatível com WhatsApp. A gravação para
automaticamente quando max_video_mb é atingido (se definido).
__init__(ppi, show_vectors=True, output_file=None, coherent_integration=False, clutter_type='None', normalize_plots=True, max_video_mb=None, video_quality=8)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ppi
|
PPI
|
Instância de PPI já configurada com radar e targets. |
required |
show_vectors
|
bool
|
Se True, exibe vetores de velocidade no PPIViewer. |
True
|
output_file
|
str
|
Caminho do arquivo MP4 de saída. None = sem gravação. |
None
|
coherent_integration
|
bool
|
Passa para ProcessingWidget (modo de integração). |
False
|
clutter_type
|
str
|
Tipo de clutter ('None' ou 'Rayleigh'). |
'None'
|
normalize_plots
|
bool
|
Se True, normaliza eixos Y dos plots de processamento. |
True
|
max_video_mb
|
float
|
Tamanho máximo do vídeo em MB. Encerra ao atingir. |
None
|
video_quality
|
int
|
Qualidade de compressão do vídeo (0–10). Padrão: 8. |
8
|
closeEvent(event)
Finaliza o gravador de vídeo ao fechar a janela.
prepare_output_file(file_name='simulation.mp4')
Garante que o diretório data/ existe e retorna o caminho completo
do arquivo de vídeo, removendo qualquer versão anterior.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
file_name
|
str
|
Nome do arquivo MP4 (somente o nome, sem diretório). |
'simulation.mp4'
|
Returns:
| Name | Type | Description |
|---|---|---|
output_path |
str
|
Caminho absoluto resolvido do arquivo de saída. |