Primary-Flight-Display
Primary-Flight-Display copied to clipboard
Soluzione software Primary Flight Display
Primary-Flight-Display
Soluzione software Primary Flight Display
[!NOTE] Progetto scolastico 🎓 · Ⅴ
La schermata è stata acquisita dal progetto realizzato.
Indice
- Prodotto
- Riepilogo Tecnico
- Crediti
- Sviluppi Futuri
- Licenze
Prodotto
Funzionalità
Le schermata sono state acquisite dal progetto realizzato.
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
| 1 | 2 | 3 | 4 |
- Mirino
Viewfinder.py(link) - Orizzonte
Horizon.py(link) - Scala del Pitch
PitchLadder.py(link) - 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.
Indice
- Soluzione
- Tecnologie
- Note sul Codice
- Riferimenti Matematici
- Testing
- Distribuzione Locale
- Albero di Path
Soluzione
Orizzonte
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
| 1 | 2 | 3 | 4 |
Dati due punti qualsiasi agli estremi della larghezza del display crea l'orizzonte come:
- Display quadrilatero di dimensione variabile
- Orizzonte come segmento tra i punti degli estremi del display
- Terra come quadrilatero compreso tra la base e l'orizzonte del display
- Componente Realizzato
Scala del Pitch
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
| 1 | 2 | 3 | 4 |
- Data la retta dell'orizzonte ed il centro del display si calcola la retta passante per il centro e perpendicolare all'orizzonte
- 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
- Date le rette parallele ed i punti di intersezione con la perpendicolare si calcolano per ciascuno 2 punti equidistanti dal punto di intersezione
- Componente Realizzato
Tecnologie
Librerie, linguaggi e codice
- Python v.3.12 (link)
- TKinter v.8.6 (link)
- Separazione dei compiti per i componenti grafici in classi autonome garendo la scalabilità e la facile manutenzione del codice.
Comunicazione con server Python:
- Connessione alla porta dell'ip del server
- Comunicazione tramite socket
- Architettura Client-Server
Note sul Codice
- Il codice è stato sviluppato in modo compartimentato e modulare.
- È stata garantita una corretta separazione dei compiti
- Sono stati sviluppati i componenti grafici in classi autonome
- Il codice ha quindi la qualità di essere scalabile e facile da mantenere
Riferimenti Matematici
| Formula | Nome | Descrizione |
|---|---|---|
| $\frac{y - y_1}{y_2 - y_1} = \frac{x - x_1}{x_2 - x_1}$ | Equazione parametrica della retta | Calcola l’equazione delle rette dei segmenti |
| $\sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}$ | Distanza euclidea tra due punti in un piano cartesiano | Calcola la lunghezza del segmento che collega due punti |
| $y = y_0 + m(x - x_0)$ | Equazione del fascio di rette passante per un punto | Calcola l’equazione della retta dell’orizzonte |
Testing
[!NOTE] Sono stati effettuati Test Unitari e Test di Itergrazione che hanno dato esito positivo
1 2 3 4
[!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 Errorse il valore del coefficiente angolare non valido in quanto non è stato implementato nessun controllo per gestire questo caso
Distribuzione Locale
-
Configura
Python v.3.12(link) -
Configura ambiente virtuale:
2.1. Crea ambiente virtuale
-m venv myenv2.2. attiva ambiente virtuale Mac:
source myenv/bin/activate2.3. attiva ambiente virtuale Windows:
.\myenv\Scripts\Activate -
scarica
tkinter v.8.6(link) in ambiente virtuale:pip install tk -
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
Scala del Roll
Licenze
Primary Flight Display
Copyright 2024 Vittorio Piotti, Diego Ciucaloni, Matteo Fabbioni, Luca Niccià
Version v1.0.0
License GPL-3.0
TKinter
Copyright Python Software Foundation
Version v.8.6
License PSF v2









