Giter Club home page Giter Club logo

primary-flight-display's Introduction

Primary-Flight-Display

Soluzione software Primary Flight Display

Tip

Corretto funzionamento garantito


La schermata è stata acquisita dal progetto realizzato.

Icona

Indice

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

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.

Indice

  1. Soluzione
  2. Tecnologie
  3. Note sul Codice
  4. Riferimenti Matematici
  5. Testing
  6. Distribuzione Locale
  7. Albero di Path

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 quadrilatero 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 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

  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 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

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 Mac:

       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

Licenze

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

primary-flight-display's People

Contributors

vittoriopiotti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.