Acquisition de données

Pour expliquer certains fonctionnements, principes et fondements.
IstSider
Level 1
Level 1
 
Messages: 8

Messagepar IstSider » Lun Mai 23, 2011 7:30 pm

Bonsoir,
Je n'ai pas eu le temps de poster la semaine dernière étant donné que je passais mon dernier concours.
J'ai pris le temps ce week-end de reprendre au calme toutes les données du problème et après avoir refait plusieurs essais dans des configurations différentes j'en suis venu à la conclusion suivante : lorsque l'array bloc est situé en dehors de la boucle principale le robot est parfaitement stable. J'ai placé également en fin de programme une boucle (dont la valeur compteur était liée à l'index de l'array) permettant, grâce la fonction "Get" de l'array bloc, de récupérer les valeurs de celui-ci et de les placer dans un fichier txt (en prenant soin de fermer ET supprimer le fichier en début de programme comme me l'avait conseillé Roboléo). Mais malheureusement comme je m'y attendais le fichier txt n'affiche qu'une seule valeur (entière, celle d'un angle en degrés, de ce point de vue là aucun souci), sans doute la mesure de l'angle juste avant que le robot ne tombe puisque la fonction "Add" de l'array n'est réalisée qu'une fois la boucle principale terminée...
Deuxième cas de figure, comme je l'avais évoqué dans un post antérieur, lorsque l'array est placé dans la boucle principale (la boucle permettant de relever les valeurs de l'array étant placée en dehors de la boucle comme dans le 1er cas), le robot perd en stabilité et tombe au bout d'une dizaine de secondes. Les valeurs obtenues dans le fichier txt sont parfaitement cohérentes (elles oscillent entre +30° et -30°) ce qui me rend encore plus amer parce que je sens la solution n'est pas très loin mais en même temps j'ai l'impression que mon problème est insolvable...
Voilà à peu près le compte rendu de mes dernières tentatives; je ne baisse pas les bras mais je commence à croire que je devrais faire sans pour mon projet d'étude.

PS: en désespoir de cause j'ai envoyé un message à Hitechnic mais je suis toujours dans l'attente de la réponse.
Dernière édition par IstSider le Lun Mai 23, 2011 9:26 pm, édité 1 fois au total.

IstSider
Level 1
Level 1
 
Messages: 8

Messagepar IstSider » Lun Mai 23, 2011 8:22 pm

Pour illustrer un peu mes propos, voilà à quoi ressemble le 1er cas de figure que j'évoquais précédemment...

Image

Uploaded with ImageShack.us


EDIT: Une idée me vient à l'esprit...
Pensez vous qu'il serait possible de connecter le capteur gyroscopique à deux briques NXT de manière à pouvoir obtenir les données du capteur en simultané grâce à la deuxième brique sans toucher au programme? Pour cela il me faudrait une sorte de HUB ou de Y pour câbles RJ12 mais j'ignore si ceci pourrait être gérer au niveau du capteur, de la deuxième brique etc.

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Mar Mai 24, 2011 12:40 am

Salut,

Si je ne me trompe, le bloc Simple Array est en dehors de la première boucle, non?
dans ce cas tu n'as qu'une seule valeur relevée.
Autre remarque, dans la dernière boucle, celle de l'écriture dans le bloc fichier, le compteur de la boucle est à combien? Dans le panneau de configuration, le champ de saisie de "compter" contient qu'elle valeur? N'est-ce pas 1 par hasard?
A mon avis, il manque 2 choses:
Simple Array en mode Add doit se trouver dans une boucle pour enregistrer plusieurs valeurs.
La boucle d'écriture de fin de programme doit s'exécuter autant de fois que la valeur du dernier index de Simple Array. Il faut donc trouver une astuce pour sortir de cette boucle (en mode logique) une fois le dernier index lu.

Réfléchis à ceci: pour relever plusieurs valeurs, il faut intrégrer la notion de temps. Pour chaque unité de temps, une valeur, d'où l'idée de 2 blocs Simple Array différents. Voir le programme de Skanzo.
Il faut connaître la fréquence des oscillations du robot. L'idée consiste à relever une valeur à intervalle régulier, toutes les 0,2 seconde par exemple.
Reste à trouver l'emplacement de cette boucle de relevé, contenant une valeur de temps (un minuteur) et une valeur d'angle associée.

Si tu tiens à faire communiquer 2 NXT en plus du problème à résoudre, tu n'y arriveras pas. Tu n'as pas encore acquis suffisamment d'expérience pour programmer le passage de données d'un NXT vers l'autre.
Je ne te conseille pas de poursuivre dans cette direction. Garde cette idée pour plus tard. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Avatar de l’utilisateur
Skanzo
Level 5
Level 5
 
Messages: 188
Localisation: France, Champagne-Ardenne
Âge: 45 ans

Messagepar Skanzo » Mar Mai 24, 2011 1:54 pm

IstSider a écrit:EDIT: Une idée me vient à l'esprit...
Pensez vous qu'il serait possible de connecter le capteur gyroscopique à deux briques NXT de manière à pouvoir obtenir les données du capteur en simultané grâce à la deuxième brique sans toucher au programme? Pour cela il me faudrait une sorte de HUB ou de Y pour câbles RJ12 mais j'ignore si ceci pourrait être gérer au niveau du capteur, de la deuxième brique etc.

Je pense pas que ça fonctionnera.
Le NXT et les capteurs utilisent des méthodes de contrôle entre eux, des pull-ups (et plein d'autres trucs que je connais pas). Si on change rien qu'un petit truc dans la façon dont communique un bus on va faire foirer le capteur et/ou détériorer les données reçus. Pas impossible mais sacrément difficile à mettre en oeuvre. Il faudrait un circuit imprimé complet servant de passerelle. À nous trois je crains qu'on n'ait pas les connaissances suffisantes...
Trop dur les legos, je me mets aux clipos!! :tare:

IstSider
Level 1
Level 1
 
Messages: 8

Messagepar IstSider » Mer Mai 25, 2011 12:48 am

Merci encore à tous les deux pour toutes ces précisions. Même si je n'ai pas abouti exactement à ce que je voulais, je tenais à vous remercier d'avoir pris le temps de m'expliquer les choses car grâce à vous j'ai mieux compris le programme que je souhaitais modifier (j'ai aussi appris qu'il ne faut pas se jeter à corps perdu dans la programmation sans en connaître quelques bases élémentaires ! :pamafote: ). Néanmoins par manque de temps je vais sans doute devoir abandonner mon idée de départ, les complications faisant que mes pauvres connaissances du logiciel ne me permettent pas d'appréhender une solution à mon niveau...
Je vous remercie encore d'avoir répondu présent quand j'ai eu besoin de votre aide, quoiqu'il arrive je repasserai sans doute ici faire un tour quand j'aurais un peu plus de temps, pour le moment il me faut achever mon projet d'étude en vue d'une présentation devant un jury, auquel il faudra que je rende un compte rendu précis de mon travail et des causes de mon échecs (j'aurais au moins compris pourquoi ça ne marchait pas :P).

Avatar de l’utilisateur
Skanzo
Level 5
Level 5
 
Messages: 188
Localisation: France, Champagne-Ardenne
Âge: 45 ans

Messagepar Skanzo » Jeu Mai 26, 2011 2:38 pm

C'est bien dommage. Si Roboleo et moi avaient chacun un capteur gyroscopique comme le tien, on aurait certainement pu partager plus d'indices et ainsi trouver une solution viable. On était vraiment pas loin!

En tout cas je te souhaite bon courage pour ta présentation. Si tu as encore besoin de nous, n'hésite pas. Et merde pour tes concours ;)
Trop dur les legos, je me mets aux clipos!! :tare:

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Jeu Mai 26, 2011 5:27 pm

:+1: et on fera mieux la prochaine fois…! ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso


Retourner vers De la théorie à la pratique

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 15 invités