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

Boussole Numérique !
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#21 Message par PieM » sam. 24 nov. 2018 10:54

M'en suis douté que tu avais donné les valeurs avant correction!

Du coup j'ai rajouter l'angle Z . L'angle Z définit une inclinaison ? Mais une seule ? Puis je utiliser cette valeur pour signaler que le robot est trop incliné pour donner un cap par exemple ? Cette inclinaison n'est valable apparemment que de l'avant a l’arrière.

Je voulais testé de modifier le registre de l'offset du X comme tu me l'a précisé, mais dans la DS ( lien) page 38 l'adresse 0x05 correspond a ACT_DUR et à la page 40 en voit bien OFFSET_X_REG_L_M ??? bizarre !!

Croyez vous qu'il soit possible de calculer la vitesse du robot qui roule avec l’accéléromètre ?


La valeur en Z va varier essentiellement si tu t'inclines dans le plan vertical Nord-Sud. donc avant arrière si tu vas vers le nord ou le sud!
Pour savoir si le robot est trop incliné, il faut utiliser les indications de l’accéléromètre, axe Z qui donne en statique la valeur de la gravité.
les données sur X et Y sont plus sensibles mais soumises aux variation de vitesse de ton engin. Tu peux essayer en évaluant X² + Y² .

page 38, c'est la page des registres des accéléromètres et des gyros !

Calcul de la vitesse avec les accéléromètres? Non, déjà discuté dans une vie antérieure... :wink:
Un accélérométrie te donne une valeur de variation de vitesse. à vitesse constante il ne te donne que l'accélération liée à la gravité.

Boussole Numérique !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2298
Âge : 40
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#22 Message par Jérémy » sam. 24 nov. 2018 14:26

PieM a écrit :Source du message La valeur en Z va varier essentiellement si tu t'inclines dans le plan vertical Nord-Sud. donc avant arrière si tu vas vers le nord ou le sud!


Tout à fait , c'est ce que j'ai remarqué !

PieM a écrit :Source du message page 38, c'est la page des registres des accéléromètres et des gyros !

Ah oui, je n'avais pas vu !

PieM a écrit :Source du message Calcul de la vitesse avec les accéléromètres? Non, déjà discuté dans une vie antérieure... :wink:

Oui c'est vrai, je laisse tomber cette idée

PieM a écrit :Source du message il faut utiliser les indications de l’accéléromètre, axe Z qui donne en statique la valeur de la gravité.
les données sur X et Y sont plus sensibles mais soumises aux variation de vitesse de ton engin. Tu peux essayer en évaluant X² + Y² .

Ca ne m'as pas l’air très prometteur . je trouve les variations sur Z vachement fluctuantes .

LE module est jsute posé à cote sans le touché je lis les valeurs de accélérométre;

Code : Tout sélectionner

   c9dof_readAccel( &accelX, &accelY, &accelZ );
   
Delay_10ms();
   

   
Gravite =  (accelX*accelX) + (accelY*accelY) ;


   
UART1_Write_Text" Accel X :");
   
IntToStraccelXT_Texte );
   
UART1_Write_TextT_Texte);
   
UART1_Write_Text"    Y :");
   
IntToStraccelYT_Texte );
   
UART1_Write_TextT_Texte );
   
UART1_Write_Text"    Z :" );
   
IntToStraccelZT_Texte );
   
UART1_Write_TextT_Texte );
   
UART1_Write_Text"    Gravité:" );
   
IntToStr(GraviteT_Texte);
   
UART1_Write_TextT_Texte );
   
UART1_Write13 );
   
UART1_Write10); 


Code : Tout sélectionner

 Accel X :  -320    Y :   105    Z 15880    Gravité:-17647
                  
 Accel X 
:  -321    Y :   167    Z 15879    Gravité:  -142                  
 Accel X 
:  -319    Y :   150    Z 15879    Gravité: -6811                  
 Accel X 
:  -312    Y :   190    Z 16125    Gravité:  2372                  
 Accel X 
:  -325    Y :   158    Z 15897    Gravité:  -483                  
 Accel X 
:  -321    Y :   140    Z 15886    Gravité: -8431                  
 Accel X 
:  -344    Y :   160    Z 15893    Gravité12864                  
 Accel X 
:  -333    Y :   148    Z 15900    Gravité:  1721                  
 Accel X 
:  -339    Y :   157    Z 16114    Gravité:  8498                  
 Accel X 
:  -315    Y :   166    Z 15876    Gravité: -4291                  
 Accel X 
:  -316    Y :   154    Z 15645    Gravité: -7500                  
 Accel X 
:  -324    Y :   153    Z 15643    Gravité: -2687                  
 Accel X 
:  -319    Y :   143    Z 15895    Gravité: -8862                  
 Accel X 
:  -336    Y :   169    Z 15879    Gravité10385                  
 Accel X 
:  -343    Y :   157    Z 15894    Gravité11226                  
 Accel X 
:  -301    Y :   155    Z 15890    Gravité:-16446                  
 Accel X 
:  -336    Y :   154    Z 15625    Gravité:  5540                  
 Accel X 
:  -325    Y :   167    Z 15896    Gravité:  2442                  
 Accel X 
:  -337    Y :   161    Z 15878    Gravité:  8418                  
 Accel X 
:  -368    Y :   146    Z 16124    Gravité25668                  
 Accel X 
:  -332    Y :  -217    Z 15891    Gravité26241                  
 Accel X 
:  -331    Y :   128    Z 15625    Gravité: -5127                  
 Accel X 
:  -310    Y :   148    Z 15628    Gravité:-13068                  
 Accel X 
:  -327    Y :   142    Z 15632    Gravité: -3979                  
 Accel X 
:  -344    Y :   139    Z 15886    Gravité:  6585                  
 Accel X 
:  -333    Y :   157    Z 16115    Gravité:  4466                  
 Accel X 
:  -350    Y :   148    Z 15878    Gravité13332                  
 Accel X 
:  -301    Y :   171    Z 15872    Gravité:-11230                  
 Accel X 
:  -318    Y :   138    Z 16125    Gravité:-10904                  
 Accel X 
:  -328    Y :   198    Z 15642    Gravité15716                  
 Accel X 
:  -310    Y :   172    Z 15915    Gravité: -5388                  
 Accel X 
:  -343    Y :   158    Z 15876    Gravité11541                  
 Accel X 
:  -316    Y :   173    Z 15886    Gravité: -1287                  
 Accel X 
:  -335    Y :   133    Z 15912    Gravité: -1158                  
 Accel X 
:  -293    Y :   158    Z 15901    Gravité:-20259                  
 Accel X 
:  -337    Y :   149    Z 15890    Gravité:  4698                  
 Accel X 
:  -327    Y :   155    Z 15895    Gravité:  -118                  
 Accel X 
:  -326    Y :   115    Z 15870    Gravité:-1157
 Accel X 
:  -340    Y :   163    Z 15891    Gravité11097
 Accel X 
:  -334    Y :   142    Z 15637    Gravité:   648                  
 Accel X 
:  -328    Y :   166    Z 15885    Gravité:  4068                  
 Accel X 
:  -341    Y :   160    Z 15884    Gravité10809                  
 Accel X 
:  -323    Y :   137    Z 16114    Gravité: -7974                  
 Accel X 
:  -329    Y :   166    Z 15638    Gravité:  4725                  
 Accel X 
:  -350    Y :   135    Z 15894    Gravité:  9653                  
 Accel X 
:  -309    Y :   151    Z 15881    Gravité:-12790                  
 Accel X 
:  -336    Y :   152    Z 15878    Gravité:  4928                  
 Accel X 
:  -325    Y :   155    Z 15889    Gravité: -1422                  
 Accel X 
:  -328    Y :   161    Z 15890    Gravité:  2433                  
 Accel X 
:  -344    Y :   142    Z 15890    Gravité:  7428                  
 Accel X 
:  -332    Y :   164    Z 15893    Gravité:  6048                  
 Accel X 
:  -333    Y :   169    Z 16125    Gravité:  8378                  
 Accel X 
:  -341    Y :   153    Z 15879    Gravité:  8618                  
 Accel X 
:  -333    Y :   180    Z 15905    Gravité12217                  
 Accel X 
:  -360    Y :   169    Z 15889    Gravité27089                  
 Accel X 
:  -335    Y :   139    Z 15878    Gravité:   474                  
 Accel X 
:  -336    Y :   158    Z 15892    Gravité:  6788                  
 Accel X 
:  -320    Y :   151    Z 15888    Gravité: -5871                  
 Accel X 
:  -319    Y :   150    Z 15908    Gravité: -6811                  
 Accel X 
:  -316    Y :   161    Z 15626    Gravité: -5295                  
 Accel X 
:  -321    Y :   157    Z 15890    Gravité: -3382                  
 Accel X 
:  -320    Y :   141    Z 15875    Gravité: -8791                  
 Accel X 
:  -326    Y :   206    Z 15899    Gravité17640
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boussole Numérique !
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#23 Message par PieM » sam. 24 nov. 2018 16:41

Ton calcul X² + Y² est faux! le résultat ne peut pas être négatif ...
Quant au Z il faut voir ce que tu as avec une inclinaison que tu estimes maxi pour ton robot.
Quand tu fais tes tableaux de valeurs, tu mets uniquement les chiffres sans les xxxx=. plus facile pour analyser après sur un tableur. :wink:

Boussole Numérique !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2298
Âge : 40
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#24 Message par Jérémy » sam. 24 nov. 2018 17:02

PieM a écrit :Source du message Ton calcul X² + Y² est faux! le résultat ne peut pas être négatif ...

Ok , je dois le faire avec un code en complément a deux ? c'est ca !

PieM a écrit :Source du message Quant au Z il faut voir ce que tu as avec une inclinaison que tu estimes maxi pour ton robot.

Ok donc d’après toi la valeur est bonne , j'incline ma platine et je regarde quand le résultats semble être mauvais en dépassant un certain seuil !

PieM a écrit :Source du message Quand tu fais tes tableaux de valeurs, tu mets uniquement les chiffres sans les xxxx=. plus facile pour analyser après sur un tableur.

C'est noté ! seulement les valeurs
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boussole Numérique !
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#25 Message par PieM » sam. 24 nov. 2018 18:21

Mais les valeurs de ton tableau sont des valeurs décodées puisque négatives!
tu calcules -320² + 105² et ça donne +102400 + 11025 soit 113425 et non 15880 !

Ok donc d’après toi la valeur est bonne , j'incline ma platine et je regarde quand le résultats semble être mauvais en dépassant un certain seuil !

Pour Z, oui.

Boussole Numérique !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2298
Âge : 40
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#26 Message par Jérémy » sam. 24 nov. 2018 18:36

PieM a écrit :Source du message tu calcules -320² + 105² et ça donne +102400 + 11025 soit 113425 et non 15880 !

T uas raison mais je ne comprends pas pourquoi il m'affiche ça.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boussole Numérique !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2298
Âge : 40
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#27 Message par Jérémy » dim. 25 nov. 2018 08:52

Bonjour ,

Il s’agissait d'une erreur de cast .
voici la correction : Gravite = ((long)accelX * (long) accelX) + ((long)accelY * (long) accelY) ;

J'ai donc fait un test sur les valeurs de l’accéléromètre.
On voit que les valeurs changent bien sur un axe et sur l'autre. Sur l'axe Y que je le penche d'avant en arrière(pitch) et sur l'axe X quand je le penche sur le cote ( roll)

Code : Tout sélectionner

 
    X         Y     Z           X²
+
  
-280    32 15872        79424        // A plat
  
-294    32 15620        87460
  
-273    30 15888        75429
  
-293   253 15885       149858
  
-281    30 16120        79861
  
-286    30 15905        82696
  
-302    43 15889        93053
  
-301    28 15875        91385
  
-315  -178 15893       130909        // Je le leve par devant à environ 45°
  
-286  -521 15739       353237
  
-272 -1543 16096      2454833
  
-483 -2064 15450      4493385
  
-232 -2890 15460      8405924
  
-302 -3594 15586     13008040
  
-270 -4878 14948     23867784
  
-324 -5877 14818     34644105
  
-301 -6694 14430     44900237
  
-304 -7875 14026     62108041
  
-303 -8338 13427     69614053
  
-283 -7779 14252     60592930
  
-294 -6500 14148     42336436
  
-270 -5393 15090     29157349
  
-270 -4425 15203     19653525
  
-284 -3390 15490     11572756
  
-290 -2571 15865      6694141
  
-285 -1186 15677      1487821
  
-299  -218 15597       136925
  
-316    77 15896       105785        // retour a plat je lève par l'arrière
  
-312   107 15895       108793
  
-282   328 15992       187108
  
-285  1277 15942      1711954
  
-335  1810 15785      3388325
  
-302  2986 15464      9007400
  
-291  4178 15226     17540365
  
-308  5233 14769     27479153
  
-356  6474 14571     42039412
  
-334  7641 13916     58496437
  
-362  8257 13337     68309093
  
-368  8887 13108     79114193
  
-342  9201 13278     84775365
  
-330  8577 13710     73673829
  
-329  7534 14070     56869397
  
-334  6660 14482     44467156
  
-331  5716 14895     32782217
  
-326  4885 15149     23969501
  
-306  3601 15536     13060837
  
-304  2788 15758      7865360
  
-281  1795 16120      3300986
  
-306   811 15853       751357
  
-300   347 15647       210409
  
-289    66 15903        87877        // retour a plat je le penche sur le cote droit
  
-305    84 15891       100081
  
-303    70 15905        96709
  
-468  -755 15870       789049
   628    57 15840       397633
  1361    70 15650      1857221
  2657    76 15381      7065425
  3276    63 15604     10736145
  3854    45 15155     14855341
  5128    74 14802     26301860
  5708    60 14552     32584864
  6958    69 14108     48418525
  7557   159 13407     57133530
  8897    39 13129     79158130
  9281    13 12757     86137130
  9620    20 12433     92544800
  9398   182 12726     88355528
  8690    28 13292     75516884
  7407    60 14048     54867249
  6220    64 14742     38692496
  4373    51 15337     19125730
  3062    66 15595      9380200
  1918    56 15735      3681860
   797    69 15861       639970
  
-122    72 15913        20068
  
-302    67 15659        95693        // retour a plat je le penche cote gauche
  
-389    52 15993       154025
 
-2188  -121 15656      4801985
 
-3361    52 15193     11299025
 
-4815    60 15118     23187825
 
-5830     5 14735     33988925
 
-7422     2 14114     55086088
 
-8095   252 13621     65592529
 
-8490    -4 13558     72080116
 
-9395   -14 13543     88266221
 
-9509   -20 12855     90421481
-10134   -30 12796    102698856
-10025    -5 12665    100500650
 
-9491    -7 13175     90079130
 
-9144    -4 13625     83612752
 
-7991    20 14220     63856481
 
-6775    12 14745     45900769
 
-4713    26 15247     22213045
 
-3485    47 15658     12147434
 
-2178    68 15783      4748308
  
-986    85 16112       979421
  
-341    87 16000       123850
  
-291    26 15903        85357        // retour a plat
  
-281    14 15639        79157
  
-285    24 15895        81801
  
-294    42 16115        88200
  
-277    13 15889        76898
  
-303    24 15898        92385
  
-277    38 15901        78173
  
-296    33 15908        88705
  
-272    17 15622        74273


Ces valeurs me parraissent assez parlantes et changeantes pour déterminé sur le robot est grosso-modo à plat . Sinon j'envoie un message pour signaler que la boussole est indisponible !

Voila je pense que je pour mon niveau je peux en tirer que ca de mon 9DOF . Si vous avez d'autres idées je suis preneur ! car c'est un sujet plutôt délicat et difficile !

PS : la boule d'horizon artificielle dans les avions peut être faite numériquement avec un accéléromètre du coup ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boussole Numérique !
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#28 Message par PieM » dim. 25 nov. 2018 10:09

Bonjour,
Oui les valeurs Xg² + Yg² donnent une indication utilisable. Par contre je suis étonné des non variations sur Zg. En principe, à 45° tu devrais avoir la valeur à 0° * 0.707. Tu es sûr de lire le bon registre ?
Pense que quand ton robot va changer de vitesse ou sera soumis à des chocs liés au roulage, les valeurs vont varier et accuser en plus les accélérations transversales. Donc à expérimenter en vraie grandeur, avec peut être du filtrage numérique sur X et sur Y.

Sur un avion, ce calcul serait inutilisable compte tenu des mouvements. Voir système AHRS...

Boussole Numérique !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2298
Âge : 40
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#29 Message par Jérémy » dim. 25 nov. 2018 10:28

PieM a écrit :Source du message En principe, à 45° tu devrais avoir la valeur à 0° * 0.707. Tu es sûr de lire le bon registre ?

J'obtiens 0° quand le module est complétement sur la tranche ( 90° ) .

Oui je lis les bons registres ( enfin d'aprés leurs libriairies opaques) avec :
c9dof_readAccel( &accelX, &accelY, &accelZ );

En fait tout est tellement lié que c'est très difficile. On ne peut pas considérer qu'une seul mesure , c'est ca qui rends les choses complexes. Je pense que je vais me cantonner à mon cap avec une moyenne ça devrait me donner une indication !

Je pense enchainer avec le GPS. Si tu as des notions Pierre tu es le bienvenu ! lol
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boussole Numérique !
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#30 Message par PieM » dim. 25 nov. 2018 14:18

J'obtiens 0° quand le module est complétement sur la tranche ( 90° ) .

ça c'est normal .
Je pense enchainer avec le GPS. Si tu as des notions Pierre tu es le bienvenu ! lol

J'ai utilisé le NEO6 U-Blocx et le connais assez bien...


Retourner vers « Langage C »

Qui est en ligne

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