# JSBSim

JSBSim è una libreria software per i modelli dinamici di volo (FDM) che modellizza le dinamiche di volo di un veicolo aerospaziale. La libreria è stata inclusa nel simulatore di volo FlightGear e OpenEagles. Può anche venire richiamata da un piccolo programma a sé stante per creare uno strumento per una simulazione programmata. JSBSim è stato sviluppato fin dal 1996 ed è stato costruito su tutte le più famose piattaforme in uso ad oggi, tra cui i sistemi operativi Linux, Macintosh e Microsoft Windows. JSBSim è scritto in C++ e usa file di configurazioni XML.

## Storia e informazioni

JSBSim era considerato nel 1996 una applicazione per le simulazioni dotata di 6 gradi di libertà (6DoF), non lineare, modellizzata attraverso i dati e leggera con lo scopo di modellizzare le dinamiche di controllo degli aerei. Sin dalle prime versioni, JSBSim ha beneficiato dell'ambiente di sviluppo open source in cui è stato costruito e delle larga comunità di utenti che hanno contribuito con idee per il suo continuo sviluppo. È stato incorporato in applicazioni e architetture di simulazione di volo ricche di funzionalità e molto grandi (Per esempio flightgear e OpenEagles). È stato inoltre utilizzato come strumento di simulazione programmata sia nell'industria sia negli ambiti accademici.
Per un esempio sul suo utilizzo, il seguente codice illustra come JSBSim possa essere richiamato da un piccolo programma, con l'esecuzione pilotata da uno scipt:
La precedente applicazione funziona quando compilata la libreria JSBSim e ha solo bisogno di un file di configurazione che rappresenti un aeromobile, un file di configurazione iniziale e uno script che ne controlli l'esecuzione. Tutti questi file sono definiti utilizzando un XML. JSBSim è forse il primo modello dinamico di volo che impiega l'XML per descrivere una simulazione aerea. Un esempio di una definizione aerodinamica è mostrata qua sotto:

## Capacità di input e output

Quando si esegue JSBSim in modo "stand-alone" utilizzando un programma di base che lo piloti, bisogna solo fornire un nome per lo script. Gli input di controllo possono essere forniti a JSBSim dall'interno dello script.
Se il file di configurazione dell'aereo contiene una specifica per una porta di ingresso, l'utente può anche fare una telnet in JSBSim. Da dentro l'interfaccia della telnet molti parametri possono essere sia letti che impostati. La simulazione stessa può essere sia messa in pausa e riavviata. La potenzialità della telnet chiaramente è interessante per utilizzare JSBSim in tempo reale. L'applicazione di esempio inclusa con la distribuzione di JSBSim supporta anche l'esecuzione nel modo soft real-time.
JSBSim può essere istruito a fornire set di dati raggruppati logicamente sulla console (screen), su un file, o un socket. L'output può essere contemporaneamente diretto attraverso un qualsiasi numero di canali, in cui ogni canale può contenere un qualsiasi set di dati o un singolo parametro specifico, può essere diretto verso un qualsiasi file o socket (O addirittura la console), e può essere emesso a qualsiasi velocità.
Uno strumento incluso in JSBSim può prendere un intero insieme di dati emessi e creare un completo set di grafici in formato PDF, che fanno uso dello strumento open source Gnuplot.

## Capacità di controllo di volo

JSBSim permette di costruire un sistema di controllo o un autopilota da componenti individuali. Il programma ora include: filtri, salti condizionali, sommatori, sensori e amplificatori (variabili o statici). Inoltre c'è una funzione che permette di creare i componenti dagli utenti.
Un diagramma a blocchi semplice del sistema di controllo è mostrato qui sotto nel editor del sistema di controllo di volo per il progetto open source separato: JSBSim Commander (Tuttora in una fase iniziale di sviluppo, ma già funzionante).

## Modellizzazione aerodinamica

JSBSim usa un metodo a coefficienti per modellizzare le caratteristiche aerodinamiche di un aereo. Un qualsiasi numero di forze e momenti (O anche nessuno) possono essere definiti per ciascun asse. Ogni specifica di forza/momento include un commento della definizione e una specifica sulle funzioni che calcolano la forza od il momento. La definizione della funzione può essere un semplice valore o una complicata funzione che include funzioni trigonometriche, logaritmiche e una tabella di valori a una, due o tre dimensioni.

## Modellizzazione della propulsione

JSBSim include propulsori a pistoni generici, razzi, turbine e modelli turbopropulsivi. I modelli non sono modelli ingegneristici dettagliati, ma permettono di aggiungere i motori semplicemente. Un qualsiasi numero di motori possono essere aggiunti ad un modello d'aereo, ad una qualsiasi posizione e orientazione, variando anche il tipo di modelli di motore sullo stesso aereo.

## Equazioni di moto

JSBSim è un modello di volo dinamico a sei gradi di libertà completo. Fornisce la capacità di implementare condizioni iniziali e di impostare settaggi iniziali dell'aereo in diversi modi possibili. Integratori specifici possono essere scelti per propagare ognuna delle velocità di posizione e rotazione e posizione. Tuttora, l'Adams Bashforth di terzo grado è il default.

## Estensibilità

JSBSim è progettato per essere estendibile. Gli oggetti chiave (motori, componenti di controllo di volo) sono implementati come classi di base con semplici interfacce. Nello specifico, nuovi tipi di motore possono essere modellati creando nuove classi che derivano dalle classi di base. Nuovi componenti di controllo di volo possono essere creati nello stesso modo.

## Usi degni di nota

JSBSim è il modello di volo di default utilizzato del simulatore di volo open source FlightGear. Insieme a FlightGear, JSBSim è utilizzato per guidare le dinamiche di simulazione di base all'Università di Napoli in Italia. JSBSim è incluso come applicazione di guida per l'ambiente di simulazione OpenEagles. JSBSim è stato utilizzato per modellare il volo di razzi (dai semplici razzi ai grandi veicoli di lancio). È stato utilizzato per modellare il volo dell'UAV incluso il veicolo ARES per volare nell'atmosfera marziana. È stato usato come parte di uno studio per il controllo del traffico aereo. JSBSim è stato usato insieme a MATLAB e Simulink, è stato compilato come una DLL è stato portato come linguaggio C#. Il porting di C# è ormai datato e non più disponibile al pubblico.

## Piani futuri

Lo sviluppo di JSBSim continua. Strumenti aggiuntivi che lavorano con JSBSim stanno anche emergendo. Uno strumento gratuitamente disponibile chiamato DATCOM+ (Un derivato di Digital Datcom) fornisce una specifica aerodinamica direttamente nel formato JSBSim-ML (il formato XML per gli aerei). JSBSim Commander è sotto sviluppo come un editor per creare e medellizare i modelli per JSBSim.