Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » mer. 28 nov. 2018 11:01 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous ,

Je bidouille actuellement sur les GPS . j'ai donc un module GPS branché sur ma carte EasyPIC.
La DS du GPS embarqué L80 est en haut du post.

Savez-vous si il possible de travailler directement sur les Dégré Décimaux ( DD) , plutôt que de convertir la trame en Dégré Minutes Secondes ( DMS ).
Car la conversion est plutôt complexe pour nos petits PICs.

Le but étant de calculé la distance ( à vol d'oiseau) entre deux coordonnées.

Pour le moment je récupère ma trame entiére et je la stocke dans un buffer !

ensuite je calcul par exemple la LOngitude comme ca :

Code : Tout sélectionner

      Lon_degre =  (Buffer[13]-48) * 10 ;
      
Lon_degre += (Buffer[14]-48) ;

      
Lon_minute =  (Buffer[15]-48) * 10 ;
      
Lon_minute += (Buffer[16]-48) ;

      
Lon_seconde = (Buffer[18]-48) * 1000 ;
      
Lon_seconde += (Buffer[19]-48) * 100 ;
      
Lon_seconde += (Buffer[20]-48) * 10;
      
Lon_seconde += (Buffer[21]-48)  ;
      
Lon_seconde = (Lon_seconde/100)*60 ;
      
Lon_seconde /= 100


je trouve que ce n'est pas très élégant comme façon de faire!

Merci à vous
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2586
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#2 Message par paulfjujo » mer. 28 nov. 2018 16:31 lien vers la Data-Sheet : Cliquez ici

bonjour Jeremy,

C'est OK si tu veux simplement afficher DD MM SS

mais pour des degrés décimaux, à utiliser par la suite pour des calculs de distance


( issus de Survivor_18F87J50_48MHz_GPS_UBLOX_7N_seul_LCD_EEprom1MB_BT_161128.c )


Code : Tout sélectionner

//avec 
float lo,f1,f1 ;



            lon= atof(Longitude);
              f1=lon/100.0;
              f1=floor(lon/100.0);
              f2=(lon/100)-f1;
              lon=f1+f2*100/60;
   //' pour affichage    
              fltToa (lon,txt,6);
              UART1_Write_Text(txt);
 



connecté au programme U-Center ( de UBlox) via un cordon profilic issu à mon GP7 Ublox 7N
15:02:41 $GPGGA,150241.00,4549.46726,N,00511.82735,E,1,06,1.92,218.0,M,47.3,M,,*5B
=====================================
Index Lat Lon
104 45.82443967 5.19713767

cette appli U-Center est TRES INTERESSANTE , je ne sais pas si compatible L80 ,
mais QUECTEL a peut etre aussi un programme equivalent
(comme celui qui sert au GSM2-Click!)

UBlox_Center_lie_a_GPS_UBX7N_181128.jpg


à noter que je reçois quand meme 6 satellites, à l'intérieur de la maison, à 2M de la fenetre
et temps clair (pas ou peu de nuages)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par paulfjujo le mer. 28 nov. 2018 16:41, modifié 1 fois.
Aide toi, le ciel ou FantasPic t'aidera

récupération d'une Trames GPS
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#3 Message par PieM » mer. 28 nov. 2018 16:41 lien vers la Data-Sheet : Cliquez ici

Bonjour Jérémy,
Si tu dois calculer une distance, il faut passer par de la trigo, donc être compatible avec les librairies trigo de MikroC! donc les radians.
L'angle en radians entre les deux points, multiplié par le rayon de la terre te donne la distance.
Mais ton robot tu vas le suivre sur combien de kms ? car ce n'est peut être pas la peine de faire des calculs complexes !
Les trames GPS donnent la latitude sous la forme DDMM.MMM donc des minutes décimales et non des secondes.
Pour la longitude c'est DDDMM.MMM
Modifié en dernier par PieM le mer. 28 nov. 2018 17:21, modifié 2 fois.

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#4 Message par Jérémy » mer. 28 nov. 2018 16:42 lien vers la Data-Sheet : Cliquez ici

Hello,

Cool ta nouvelle signature !

Tu fais les calculs en DD ou en DMS ?

Car ton bout de code fait l'inverse du mien en fait ? non ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par Jérémy » mer. 28 nov. 2018 16:45 lien vers la Data-Sheet : Cliquez ici

Post croisé .... Bonjour PieM

PieM a écrit :Source du message Mais ton robot tu vas le suivre sur combien de kms ? car ce n'est peut être pas la peine de faire des calculs complexes !

Je pense 500 mètres aux maximum car je suis un grand optimiste !
Oui je pensais me passer des calculs avec rotondité de la terre pour simplement faire un Pythagore ! sur 500 metre je doute que la courbure de la terre est un grand effet par rapport à la précision des GPS .
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#6 Message par Jérémy » mer. 28 nov. 2018 17:09 lien vers la Data-Sheet : Cliquez ici

En fait ma question principale serait comment effectuer les calculs !

Je pensais à ceci :

Le robot s'initialise. On attends de recevoir une position GPS . On enregistre cette position comme étant le point "HOME" .

Au vue des faibles distances! je dois pouvoir me passer des plus grandes valeurs pour économiser de la ressoource de calculs .

Par exemple si je prends les données de la tour Eiffel !:
en DD :
Lat : 48.85837288276533
Lon : 2.2944796085357666

En DMS :
Lat : N 48°51' 30.142"
Lon : E 2° 17' 40.126"

est il possible de ne travailler qu'avec les secondes ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#7 Message par PieM » mer. 28 nov. 2018 17:23 lien vers la Data-Sheet : Cliquez ici

Je n'avais pas vu ton mail. Pas là ce matin.

Donc si faible distance tu restes sur des degrés ou tu passes tout en 1/1000 de minutes
tu calcules l'écart des latitudes latA - latB sachant qu'un dégrés c'est 111111 m donc 1/1000 de minutes c'est 1.851m (1/1000 de mile , normal!)
donc (latA - latB)* 1.851 te donne la distance selon le cercle de longitude
Par contre pour les longitudes tu n'es plus sur un grand cercle, donc le rayon est plus petit car * cos de la latitude.
donc calculer cos((lat A - lat B)/2) = coef

Puis (longA - longB) * coef * 1.851 te donne la distance selon le cercle de latitude
Un p'tit coup de pythagore et c'est fini

Pourquoi passer en secondes! le gps te donne des 1/1000 de minutes, pas des secondes.

récupération d'une Trames GPS
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2586
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#8 Message par paulfjujo » mer. 28 nov. 2018 17:33 lien vers la Data-Sheet : Cliquez ici

bonsoir à tous,


:sifflotte: Je pense que tu n 'es pas encore rendu avec ce projet de calcul de distance !

j'ai eu l'ocasion de faire des tests la-dessus en 2017 ,
suite à une discussion ICI

Help with GPS Coordinates - Haversine Algorithm

testé avec un 18F26K22, en mettant directement des coordonnees GPS valides
_18F26K22_16Mhz_Uart1_Test_calculs_float_171120.zip


La problematique est que les calculs flottants avec mikroC n'est que sur des flottants 32 bits ...
meme si on declare utiliser des Double ( 64 bits)
:furieux: ON NOUS AURAIT MENTI !

plus le fait qu'il faut un certain nombre de satellites visible pour etre dans la precision maxi donnéees par le GPS.
EN exterieur c'est le cas, sauf par temps pluvieux et couvert.

Peut etre trouveras-tu un algorythme plus precis !

C'est vrai que pour un calcul sur 500M, pas la peine de s'embeter avec la rotondité de la terre..

A voir quel delta Long et LAt tu peux avoir aux 2 extremités max du parcours.
sachant que Mikroc ne sait pas gerer les nombres flottant au dela de la 7em decimale .
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#9 Message par Jérémy » mer. 28 nov. 2018 17:58 lien vers la Data-Sheet : Cliquez ici

paulfjujo a écrit :Source du message Je pense que tu n 'es pas encore rendu avec ce projet de calcul de distance !


Avec Paul pour MikroC et PieM pour les maths , rien n'est impossible !

PieM a écrit :Source du message Pourquoi passer en secondes! le gps te donne des 1/1000 de minutes, pas des secondes.

Tous ce que j'ai lus les personnes passe en DMS, donc nous avons pas besoin de convertir, on peut directement utilisé les coordonnes brutes de la trame GPS !

PieM a écrit :Source du message Par contre pour les longitudes tu n'es plus sur un grand cercle, donc le rayon est plus petit car * cos de la latitude.

Ça j'ai pas compris ! pourquoi les longitudes ne sont pas sur un grand cercle ?

On doit pouvoir ce passer des nombres flottants ! on pourrait parler de millimètre par exemple au lieu de 1.851 mètres prendre 1851 millimètre ! Moi je dis ca c'est juste une idée, je débute avec les gps ! :sifflotte: et si on veut afficher en mètre à la fion on divise par mille !

Je vais essayer de faire quelques croquis pour me représenter tout ça

PS : car en plus de tout cas, ne perdre de vue , que les coordonnées GPS du robot, seront envoyées par voie radio à la télécommande pour affichage sur l’écran tactile.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#10 Message par Jérémy » mer. 28 nov. 2018 18:25 lien vers la Data-Sheet : Cliquez ici

Bon afin qu'on ne parle pas dans le vide . Je propose ceci .
D’après ce site : https://www.coordonnees-gps.fr/

Je sors les coordonnées de notre Tour Eiffel :
-----Tour Eiffel
Lat : 48.85837288276533
Lon : 2.2944796085357666
En DMS :
Lat : N 48°51' 30.142"
Lon : E 2° 17' 40.126"

Maintenant un point dans la rue adjacente :

------Rue de la tour eiffel
Lat : 48.86030413121802
Lon : 2.295973041789125
En DMS :
Lat : N 48°51' 37.095"
Lon : E 2° 17' 45.502"


La distance entre ces points est de 241m !!!!!!

Maintenant d’après les indications de PieM je dois trouver les bonnes formules !

Je reviens quand j'ai finis :sifflotte: pas avant une semaine je pense
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités