Skip to content

MatteoFabbioni/Primary-Flight-Display

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Primary-Flight-Display

Soluzione software Primary Flight Display


La schermata è stata acquisita dal progetto realizzato.

Icona

Indice

  1. Prodotto
  2. Riepilogo Tecnico
  3. Crediti
  4. Sviluppi Futuri

Prodotto

Funzionalità

Le schermata sono state acquisite dal progetto realizzato.

Icona Icona Icona Icona
1 2 3 4
  1. Mirino Viewfinder.py (link)
  2. Orizzonte Horizon.py(link)
  3. Scala del Pitch PitchLadder.py (link)
  4. PFD Display Aereo display.py (link)

Copyright

Tip

Il software è open-source

Riepilogo Tecnico

Obbiettivo

Ricezione con una frequenza di 100 ms i dati in formato json dal server python.

Elaborazione dei dati di pitch e roll per la visualizzazione dei componenti grafici.

Soluzione

Orizzonte

Icona Icona Icona Icona
1 2 3 4

Dati due punti qualsiasi agli estremi della larghezza del display crea l'orizzonte come:

  1. Display di dimensione variabile
  2. Orizzonte come segmento tra i punti degli estremi del display
  3. Terra come quadrilatero compreso tra la base e l'orizzonte del display
  4. Componente Realizzato

Scala del Pitch

Icona Icona Icona Icona
1 2 3 4
  1. Data la retta dell'orizzonte ed il centro del display si calcola la retta passante per il centro e perpendicolare all'orizzonte
  2. Data la retta dell'orizzonte e la retta ad esso perpendicolare si determina il punto di intersezione tra le parallele dell'orizzonte e la perpendicolare all'orizzonte
  3. Date le rette parallele ed i punti di intersezione con la perpendicolare si calcolano per ciascuno 2 punti equidistanti dal punto di intersezione
  4. Componente Realizzato

Tecnologie

Librerie, linguaggi e codice

  • Python 3.12 (link)
  • TKinter 8.6 (link)
  • Separazione dei compiti per i componenti grafici in classi autonome garendo la scalabilità e la manutentibilità del codice.

Comunicazione con server Python:

  • Connessione alla porta dell'ip del server
  • Comunicazione tramite socket
  • Architettura Client-Server

Note sul Codice

  1. Il codice è stato sviluppato in modo compartimentato e modulare.
  2. È stata garantita una corretta separazione dei compiti
  3. Sono stati sviluppati i componenti grafici in classi autonome
  4. Il codice ha quindi la qualità di essere scalabile e manutentibile

Testing

Note

È stato creato uno script di test per ogni componente grafico o di logica da testare garantendo la scalabilità e la manutentibilità del codice.

Icona Icona Icona Icona
1 2 3 4
  1. Mirino Test_Viewfinder.py (link)
  2. Orizzonte Test_Horizon.py (link)
  3. Scala del Pitch Test_PitchLadder.py (link)
  4. Calcoli Test_Calc.py (link)

Warning

MacOS (video) Tutti i test hanno dato esito positivo garantendo la stabiità del software solo se il coefficiente angolare valido

Warning

Rivedere ed ottimizzare la logica dei componenti grafici per visualizzare il PitchLadder.py

Caution

Fatal Error se il valore del coefficiente angolare non valido in quanto non è stato implementato nessun controllo per gestire questo caso

Distribuzione Locale

  1. Configura Python v.3.12 (link)

  2. Configura ambiente virtuale:

    2.1. Crea ambiente virtuale

       -m venv myenv
    

    2.2. attiva ambiente virtuale Max:

       source myenv/bin/activate
    

    2.3. attiva ambiente virtuale Windows:

       .\myenv\Scripts\Activate
    
  3. scarica tkinter v.8.6 (link) in ambiente virtuale:

       pip install tk
    
  4. Caricare i file sorgenti eventualmente sostituendo quelli già presenti

Albero di Path

$ tree
.
├── src
│   ├── Calc.py
│   ├── Horizon.py
│   ├── PitchLadder.py
│   └── Viewfinder.py
├── test
│   ├── Test_Calc.py
│   ├── Test_Horizon.py
│   ├── Test_PitchLadder.py
│   └── Test_Viewfinder.py
├── client.py
├── server.py
└── display.py

Crediti

Sviluppi Futuri

Scala dello Yaw

Icona

Scala del Roll

Icona

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages