S1005403_RisCC/doc/user_guide/03_gestire_scenari.md
2025-11-24 08:24:07 +01:00

8.9 KiB

Capitolo 3: Creare e Gestire uno Scenario

Uno "scenario" è il file che contiene tutti i target e le loro traiettorie per una specifica sessione di test. Questa guida ti mostrerà come creare e modificare gli scenari.

3.1. Gestire i File di Scenario

Tutti i controlli per la gestione dei file si trovano nel Pannello di Controllo Scenari in alto a destra.

Nota importante: a partire dalle ultime versioni, gli scenari non sono più salvati come singoli file sparsi nella cartella del progetto. Tutti gli scenari sono conservati in un file centrale chiamato scenarios.json nella root del progetto. Le operazioni di salvataggio sono atomiche e il sistema mantiene più backup rotativi (es. scenarios.json.bak1, scenarios.json.bak2) per prevenire perdita di dati in caso di interruzioni.

Se necessario, l'interfaccia offre la possibilità di esportare un singolo scenario in un file JSON separato (funzione Export) e di importare scenari da file esterni (Import). Queste funzioni creano o leggono file JSON di scenario standalone ma non cambiano il comportamento predefinito di Save che aggiorna scenarios.json.

Pannello di Controllo Scenari (Nota: Qui puoi usare un crop dello screenshot principale che mostra solo il pannello "Scenario Controls")

  • Per caricare uno scenario esistente: Selezionalo dal menu a tendina.
  • Per creare un nuovo scenario:
    1. Clicca su New....
    2. Inserisci un nome per il tuo nuovo scenario e clicca OK.
  • Per salvare il tuo lavoro:
    • Clicca Save per salvare le modifiche allo scenario corrente.
    • Clicca Save As... per salvare lo scenario con un nuovo nome.
  • Per cancellare uno scenario:
    1. Carica lo scenario che vuoi cancellare usando il menu a tendina.
    2. Clicca Delete e conferma l'operazione.

3.4. Esportare / Importare scenari

Se devi condividere uno scenario con un collega o mantenerne una copia separata, usa i comandi Export e Import dal Pannello di Controllo Scenari:

  • Export: salva il singolo scenario selezionato in un file JSON indipendente.
  • Import: carica un file JSON di scenario esterno e lo aggiunge (o lo sovrascrive) all'elenco interno gestito in scenarios.json.

Questi file esportati seguono la stessa struttura JSON usata internamente (target list, traiettorie, parametri di profilazione per target quando presenti).

3.5. Profili Target (Target Profiles)

L'applicazione supporta profili target riutilizzabili che permettono di definire proprietà fisiche e di presentazione di un target (es. rcs, amplitude, description, profile_name) e di applicarli ai target nello scenario. Questo semplifica la gestione di insiemi di target con caratteristiche simili e garantisce coerenza nell'invio dei payload al server.

Dove si gestiscono

  • I profili possono essere creati e modificati dall'Editor di Traiettoria quando si crea o si modifica un target:
    • Nella scheda Profile dell'editor è possibile: creare un nuovo profilo, selezionarne uno esistente o applicare un profilo al target corrente.
    • I campi tipici sono: Profile Name, Description, RCS (m^2), Amplitude (unità interne), e campi opzionali per metadata.

In alternativa, le definizioni dei profili sono persistite centralmente nel file target_types.json (vedi target_simulator/utils/target_type_manager.py). Il gestore dei profili (TargetTypeManager) mantiene una libreria riutilizzabile di profili (es. F-16, B-747) che possono essere assegnati ai target per nome.

Come si usano nelle traiettorie e nei payload

  • Quando un target è associato a un profile (riferito per nome), il SimulationController usa i valori del profilo come predefiniti durante la generazione dei payload inviati al server. È comunque possibile sovrascrivere singoli campi (ad es. rcs o amplitude) a livello di target o di singolo waypoint; tali sovrascritture sono memorizzate nella definizione del target dentro scenarios.json.
  • Al momento dell'invio dello scenario (Start Live o Send Init), il SimulationController espande il riferimento al profilo applicando i valori ereditati e le eventuali sovrascritture, e include i campi di profilazione pertinenti nei payload JSON inviati al server (es. tgtinit/tgtset).

Esempio: profili in target_types.json e target che li referenzia

Esempio di estratto da target_types.json (file centralizzato dei profili):

{
    "F-16": { "rcs": 5.0, "amplitude": 100.0, "notes": "Fighter jet" },
    "B-747": { "rcs": 100.0, "amplitude": 500.0 }
}

Esempio di target nello scenario che fa riferimento a un profilo per nome (memorizzato in scenarios.json come parte della definizione del target):

{
    "id": 101,
    "label": "TGT-101",
    "profile": "F-16",
    "rcs": 0.9,            // valore sovrascritto a livello target (opzionale)
    "trajectory": [ /* waypoints... */ ]
}

Nel caso precedente il sistema applicherà i valori dal profilo F-16 al target TGT-101 ma userà rcs=0.9 perché il valore è stato sovrascritto per quel target.

Consigli pratici

  • Definire profili standard (es. small_plane, helicopter, drone, ship) e riutilizzarli per i target simili.
  • Usare la funzione Export per condividere profili con colleghi o per conservarne una copia di backup.
  • Quando si sospetta un problema di correlazione tra target simulati e tracciati, verificare che il rcs e l'amplitude applicati siano quelli attesi (controllare la scheda Profile nell'Editor di Traiettoria e il payload JSON inviato dal SfpDebugWindow).

3.2. Aggiungere e Modificare un Target

Una volta caricato o creato uno scenario, puoi popolarlo con i target nella scheda "Editing scenario".

  1. Aggiungere un Target:

    • Clicca sul pulsante Add sotto la tabella "Target List".
    • Si aprirà l'Editor di Traiettoria.
  2. Modificare un Target:

    • Seleziona un target dalla lista cliccandoci sopra.
    • Clicca sul pulsante Edit Trajectory... (oppure fai semplicemente doppio click sulla riga del target).
    • Si aprirà l'Editor di Traiettoria con i dati del target selezionato.
  3. Rimuovere un Target:

    • Seleziona un target dalla lista.
    • Clicca sul pulsante Remove.

3.3. Definire una Traiettoria (Waypoint e Manovre)

L'Editor di Traiettoria è la finestra dove costruisci il percorso di un target, un pezzo alla volta. Ogni "pezzo" è chiamato Waypoint o manovra.

Editor di Traiettoria (Nota: Usa lo screenshot editor_traiettoria.png definito nel manuale tecnico)

Flusso di Lavoro

  1. Punto di Partenza (Obbligatorio): Il primo waypoint di ogni target deve essere di tipo Fly to Point. Questo definisce dove il target appare all'inizio della simulazione. Quando aggiungi il primo waypoint, la finestra si aprirà già configurata per questo.

    • Imposta Range, Azimuth e Altitude per la posizione iniziale.
    • Imposta Initial Velocity e Initial Heading per definire la sua rotta e velocità di partenza.
  2. Aggiungere Manovre Successive:

    • Clicca sul pulsante Add all'interno dell'Editor di Traiettoria.
    • Si aprirà l'Editor dei Waypoint. Seleziona il Maneuver Type che desideri.

Tipi di Manovra Comuni

Editor dei Waypoint (Nota: Usa lo screenshot editor_waypoint_dynamic.png definito nel manuale tecnico)

  • Fly for Duration (Volo Rettilineo):

    • Usa questa manovra per far volare il target in linea retta.
    • Imposta:
      • Duration: Per quanti secondi deve mantenere la rotta.
      • Constant Velocity: La nuova velocità in nodi.
      • Constant Heading: La nuova direzione in gradi.
  • Dynamic Maneuver (Virata o Accelerazione):

    • Usa questa manovra per simulare virate o cambi di velocità.
    • Imposta:
      • Duration: La durata della manovra.
      • Turn Definition: Scegli come definire la virata:
        • By G-Force: Inserisci l'accelerazione laterale in 'g' (es. 2.0 per una virata a 2g). Questo è il metodo più comune.
        • By Turn Rate: Inserisci la velocità di virata in gradi al secondo.
      • Direction: Scegli se la virata è a destra (Right) o a sinistra (Left).
      • Longitudinal Accel: Inserisci un valore positivo per accelerare, negativo per decelerare.

Anteprima della Traiettoria

Mentre costruisci la traiettoria, il display PPI sulla destra ti mostrerà un'anteprima del percorso. Usa i pulsanti Play, Pause e Stop per vedere una simulazione animata del movimento del target e verificare che si comporti come previsto.

Una volta che sei soddisfatto della traiettoria, clicca OK nell'Editor di Traiettoria per salvare il target nello scenario. Ricorda di cliccare Save nella finestra principale per salvare le modifiche allo scenario su file.