Go Down

Topic: help code robot autonome (Read 2793 times) previous topic - next topic

mopi

Oui c'est vraiment bizarre.
J'ai un capteur infrarouge je vais essayé voir si çà marche mieux car il me renvoie directement une distance.

mopi

Ahah (nerveux) je viens de griller mon capteur sharp  :0

skywodd


Ahah (nerveux) je viens de griller mon capteur sharp  :0

Comment t'as fait ton compte :smiley-eek: les capteurs IR sharp c'est increvables, à moins de lui avoir coller du 12v à l'envers je vois pas comment ta fait ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

fdufnews


merci pour votre aide...

Voilà les résultats dans le serial monitor qui prouvent que tout va bien pourtant...(j'ai mis mes mains devant le capteur quand les mesures sont faibles...)

Dist D : 134
Dist G : 252
Go C
Dist D : 136
Dist G : 252
Go C
Dist D : 8
Dist G : 252
Go G
Dist D : 5
Dist G : 6
Go D
Dist D : 5
Dist G : 7
Go D
Dist D : 191
Dist G : 252
Go C



Si la logique de commande est bonne alors le problème est ailleurs.
Il faut investiguer la partie pilotage des moteurs. Ou comme je le proposais précédemment la partie mécanique. Une roue qui patine un peu, un moteur qui tourne un peu moins vite et assez rapidement la ligne droite devient une courbe.

Une autre question ne tourne-t-il pas trop vite? En regardant ton code on voit que tu mets un moteur dans un sens et l'autre en sens inverse donc le mobile tourne rapidement sur lui même. Cela ne perturbe pas les mesures?

mopi

Ben je sais pas non pourtant c'est bien en 5v mais je pense avoir inversé la masse et le +5v en tout cas le capteur était très chaud et odeur de cramé donc je pense qu'il est mort surtout qu'en mettant le capteur sur la patte analogique 5 quand je met ma main devant ou non j'obtiens tout le temps 900 avec ce code basique:

Code: [Select]
const int Voie_5=5;
int mesure_brute=0;


void setup()   { 

Serial.begin(115200);
}

void loop(){
 
mesure_brute=analogRead(Voie_5);

Serial.println(mesure_brute);

delay(100);

}


Sinon je vais essayé ce que tu me recommandes fdufnews mais comme je l'ai expliqué si j'enlève les capteurs et que je fait tout simplement avancer(130,130) ou droite(130,130) en ben çà marche !! :S vraiment bizarre


skywodd


Ben je sais pas non pourtant c'est bien en 5v mais je pense avoir inversé la masse et le +5v en tout cas le capteur était très chaud et odeur de cramé donc je pense qu'il est mort surtout qu'en mettant le capteur sur la patte analogique 5 quand je met ma main devant ou non j'obtiens tout le temps 900 avec ce code basique:

Défaut matériel peut être ... si y avait une odeur de cramé il est foutu.


Sinon je vais essayé ce que tu me recommandes fdufnews mais comme je l'ai expliqué si j'enlève les capteurs et que je fait tout simplement avancer(130,130) ou droite(130,130) en ben çà marche !! :S vraiment bizarre

Donc en gros la situation actuelle : WHAT THE F*CK ! :smiley-mr-green:
C'est pas la logique, c'est pas les moteurs, c'est pas les capteurs ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

mopi

#36
Jan 22, 2012, 01:29 pm Last Edit: Jan 22, 2012, 01:45 pm by mopi Reason: 1
Une première bonne nouvelle même si c'est pas encore çà.
J'ai essayé un nouveau code sur un autre robot (à servomoteur au lieu des moteurs CC) du coup j'ai utilisé mon arduino uno au lieu de ma carte romeo vu qu'il n'y avait plus de moteurs CC à piloter.

Donc le code marche seulement le robot tourne seulement 5 secondes après que j'ai mis ma main devant un des capteurs (même si je l'enlève tout de suite après l'avoir mise çà marche quand même comme si le robot après avoir vu un obstacle arrêtait de prendre des mesures attendait 5 secondes (mais il avance toujours du coup) et après il tourne. Et c'est exactement ce que j'observe dans le serial monitor...tant qu'il n'y a pas d'objet les mesures s'enchaînent puis si je met ma main là il prend la mesure (distance proche car obstacle) stop 5 secondes puis recommence à enchaîner les mesures vu que j'ai enlevé ma main.

Savez vous d'où peut provenir un tel retard?

Du coup pour mon premier robot le problème doit venir de moteurs CC car j'ai essayé la carte romeo avec les servomoteurs et çà marche comme pour l'arduino (retard de 6 secondes cette fois).
J'ai vu sur le forum que le problème pouvait venir de l'alimentation aussi s'il n'y a pas assez d'ampérage?
J'utilisais 5 piles standard AA 1,5V (donc 7,5V) qui alimentaient à la fois la romeo et les moteurs (6V)
Qu'en pensez vous?
Merci

mopi

Sa y est je pense savoir d'où vient le problème.
J'ai remarqué que le moteur droit avait un gros problème. Il n'arrive pas à tourner dans 1 sens. EN l'occurence il n'arrive pas à avancer dans mon exemple. Quand je lui demande de reculer il le fait parfaitement, mais quand je lui demande d'avance il recule aussi. Le programme est juste mais la fonction droite du coup est comme la fonction reculer (vu que le moteur droit recule au lieu d'avancer) et la fonction avancer est comme la fonction tourner à droite (pour la même raison).
Je suis vraiment soulager même si je ne sais pas comment je vais procéder.
J'avais acheter le chassis dfrobot et les roues s'emboitaient mal dans le moteur j'ai du forcer c'est peut être là qu'il y a eu un problème.
Quelqu'un sait d'où çà peut venir électroniquement (si il y a trop de frottement, pic d'intensité et le moteur tourne dans l'autre sens? (je dis peut être n'importe quoi ^^)
Merci pour votre aide en tout cas

mopi

bizarre je l'ai entièrement démonté et là je me suis dit que j'étais bête que j'avais qu'à appliquer 6v sur le moteur droite pour voir si il tournait bien dans les 2 sens (donc une fois la borne + sur la + et une fois sur la -) et oui tourne dans les 2 sens.
Je vais devoir tout recabler pour voir si çà marche comme par miracle ou sinon m'orienter vers un problème matériel de la carte pour le contrôle du moteur droit non?

mopi

Yeeeeeaaaaahhhhh!!!
J'ai trouvé mon erreur   :)
Bon je dois une explication à ceux qui m'ont aidé même si j'ai honte d'avoir perdu 4 semaines à cause d'une erreur d'1 chiffre...Hé oui!!!

Code: [Select]
const int capteurdroit = 7;

.........
.......

#define M2 7


J'avais déclaré 2 entiers sur la patte 7 de ma carte je pense que c'est ce qui fait qu'elle faisait un peu n'importe quoi non?
En tout cas j'ai mis le capteur droit sur la 8 et le gauche sur la 9 et çà marche !!!!!

Dernière question après je vous laisse tranquille:
Avec le serial monitor le robot marche à la perfection
SI je le lance dans "l'arène" et ben il répond bien quand je met ma main devant el capteur droit ou gauche mais il a tendance à tourner pour rien (pas d'obstacles). C'est assez récurrent du coup çà pose un problème pour la suite de mon projet. Et si j'ouvre le serial monitor en même temps que le robot se déplace, en effet, le robot a l'impression de détecter quelque chose alors que si je coupe l'alimentation des moteurs le serial monitor est parfait il détecte 1 obstacle que s'il y en a 1.
D'où çà peut provenir? Des erreurs du aux vibrations du sol? Çà influe sur les moteurs?

Merci beaucoup!!!!

zoroastre

#40
Jan 22, 2012, 08:24 pm Last Edit: Jan 22, 2012, 11:54 pm by zoroastre Reason: 1
Yep!

Ton problème commencait à devenir bizarre  XD

Encore un problème dû à la couche 9 = utilisateur  XD

Quote
D'où çà peut provenir? Des erreurs du aux vibrations du sol? Çà influe sur les moteurs?


Ce sera difficile à determiner depuis notre clavier. Il faudra que tu fasses un certain nombre de mesures et experimentations si tu veux déterminer les causes réelles. Une photo de la bête ???

Une option serait d'avoir deux confirmations avant de tourner soit à droite soit à gauche ou alors d'utiliser la logique floue pour indiquer un rapprochement, etc.
Peut être également en allongeant légerement les delaymicroseconds() qui m'ont l'air d'être au taqué.

EDIT1 : D'où çà peut provenir? --> Effet de rebond avec retard ??? --> environnement ? angle de dispertion des ondes ??

@+

Zoroastre.
Gné! ;)

skywodd

:smiley-yell: arg! l'erreur c*nne :smiley-mr-green:
Bon pas grave au moins maintenant c'est réglé :smiley-mr-green:

(note pour plus tard : vérifier systématique les define / const)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up