Skip to content

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.
Os widgets individuais são importados de arquivos especializados

plots.py → DetectionPlot, AmplitudePlot, PhasePlot pulse_modulation.py → PulseWidget mti.py → MTIWidget integrator.py → IntegratorWidget cfar.py → CfarWidget ppi.py → PPIViewer, PPIEstimatedViewer, PPIEstimatedTracker

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
  1. MTI : cancela ecos de alvos fixos.
  2. Integrador : acumula SNR em N_INT PRIs.
  3. CA-CFAR : define threshold adaptativo e detecta picos.
  4. 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 PulseWidget.update_pulse(): 'comp_disp' : np.ndarray — saída real do MF. 'comp_complex' : np.ndarray — saída complexa IQ do MF. 'azimuth_deg' : float — azimute atual do radar.

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.