Soluzione software Primary Flight Display
Tip
Corretto funzionamento garantito
La schermata è stata acquisita dal progetto realizzato.
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)
Tip
Il software è open-source
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
- Tecnologie
- Note sul Codice
- Riferimenti Matematici
- Testing
- Distribuzione Locale
- Albero di Path
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
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
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
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
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
- 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
Formula | Nome | Descrizione |
---|---|---|
Equazione parametrica della retta | Calcola l’equazione delle rette dei segmenti | |
Distanza euclidea tra due punti in un piano cartesiano | Calcola la lunghezza del segmento che collega due punti | |
Equazione del fascio di rette passante per un punto | Calcola l’equazione della retta dell’orizzonte |
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
-
Configura
Python v.3.12
(link) -
Configura ambiente virtuale:
2.1. Crea ambiente virtuale
-m venv myenv
2.2. attiva ambiente virtuale Mac:
source myenv/bin/activate
2.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
$ 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
Componente | Versione | Copyright | Licenza |
---|---|---|---|
Primary-Flight-Display | v1.0.0 | 2024 Vittorio Piotti, Diego Ciucaloni, Matteo Fabbioni, Luca Niccià | GPL-3.0 License |
TKinter | v.8.6 | Python Software Foundation | PSF License v2 |