lesto:
per il gps esistono dei chip che fanno solo da FPU, tipo questa, non basterebbe? Floating Point Co-Processor uM-FPU v3.1 - COM-08129 - SparkFun Electronics
Questo in specifico non lo conoscevo, ho dato un'occhiata al data sheet e si tratta sicuramente di un dsPIC30F3012 programmato per fare da FPU, il pin out corrisponde perfettamente, solo i dsPIC30 funzionano anche a 5V e il set di calcoli è quello del set matematico del C30 con aggiunte le funzioni della libreria matematica estesa per i dsPIC, insomma niente di strano, per il GPS si limita a verificare la validità delle sentenze nmea.
Come ho già detto servono calcoli a 64 bit per tracciare un percorso partendo da coordinate gps, per rendersene conto basta pensare che mediamente un secondo d'arco sulla latitudine vale circa 300 metri, ed è una frazione pari a 1/(360*3600), per rendersi conto che con solo 32 bit non vai da nessuna parte, sulla longitudine è pure peggio perché la distanza varia in funzione della latitudine, sono identiche solo all'equatore.
tra l'altro se non erro buona parte dei GPS che ho visto usano l'NMEA e restituiscono già delle coordinate,
Tutti i gps commerciali forniscono le coordinate tramite sentenze NMEA, è uno standard de facto.
quindi basta trovare l'orientamento del vettore tra il punto attuale e quello di arrivo, e con uno o più PID (magari uno specifico per l'altezza, così il problema diviene 2D)
Il pid non serve a nulla in questo caso, devi tracciare una rotta tra due coordinate cartesiane trasformandole in polari, e fin qui sarebbe pure semplice da fare, però la terra non è piatta ed ecco perché diventa un problema di geometria sferica.
Anche se su distanze molto brevi, poche decine di metri, puoi approssimare il tutto in 2D rimane sempre il problema che i calcoli vanno fatti a 64 bit visto che il GPS ti ritorna una cosa del tipo 32* 18' 14,128" sia per la latitudine che per la longitudine ovvero un bel numero composto da +/- 2 cifre e 10 decimali e i way point vanno espressi con la stessa risoluzione
La terra è grossa e per poter specificare un punto con precisione, diciamo +/- 1 metro, serve molta risoluzione