Forum des NXTiens

RssNXT-G » S'arreter avant un obstacle. Comment faire pour eviter les collisions ?  1  2  »
   Le 05/10/13 à 14h02 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 05/10/13
Messages: 9
Bonjour à tous,
Je voudrais savoir ce que vous conseillés pour faire s’arrêter un robot avant qu'il ne percute un obstacle pendant son déplacement.
J'ai bien le tuto du bloc attendre mais j'y vois deux soucis, le premier est que il faut attendre la fin du mouvement pour que le teste soit fait, mais encore je pourrais enchainer des petite rotation de 1/4 de rotions par exemple ça irait mais le robot s'arrete quelque temps entre chaque boucle du coup ça n'avance pas.
Donc si vous avez une idées hésité pas merci d'avance.

pm    
   Le 06/10/13 à 00h53 Citer      

Administrateur

Groupe: Administrateur

Sexe:
Inscrit le: 24/04/10
Messages: 129
Lieu: France
Bonjour et bienvenue azfboom,

Si tu utilise un bloc "Déplacer" configuré en durée "Infinie", il n'y a pas besoin d'attendre la fin d'un mouvement et tu peut donc placer juste après un bloc "Attendre" configuré pour tester le capteur d'ultrasons.

Ainsi tu pourra faire déplacer ton robot et le stopper avant qu'il ne touche un obstacle.
____________________

pm http://www.sitedunxt.fr    
   Le 06/10/13 à 11h34 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 05/10/13
Messages: 9
Tout d'abords merci pour ta réponse.
J'aurais du coup une autre question comme je fais pour qu'il arrête d'avancer droit au bout d'une certaine distance ?
Car je peux faire une boucle avec du temps mais si il est à l'arret est ce que ça compte dans le temps de la boucle ? Du coup il s'areterais trop tôt.

EDIT: Je viens d'essayer et il ne s'arret pas du tout j'ai l'impression qu'il avance non stop et que apres il veux faire le teste de l'ultra son.
C'est bien ça le programme ?


EDIT2: En faite j'ai l'impression que mon sonar est mort, comment faire pour le tester ?



Edité par azfboom Le 06/10/13 à 14h04

pm    
   Le 06/10/13 à 17h21 Citer      

Booster Bazooka

Groupe: Membre

Sexe:
Inscrit le: 03/06/13
Messages: 125
Pour commencer, tu peux tester ton capteur à ultrasons dans le menu "view", puis dans la partie pour ce capteur et tu sélectionnes le port :d (au fait, vu que je vois que tu débutes: es-tu sûr que le port que tu as sélectionné dans le programme est le bon ? :s

Ensuite, je n'ai pas très bien compris: tu veux qu'il s'arrête après une certaine distance, lorsqu'il détecte un obstacle ou qu'il fasse les deux ?

-dans le 1er cas: il faut sélectionner dans le bloc déplacer "rotation" et puis mettre l'action que ça doit faire après.

-dans le 2nd cas: Il faut faire ce que tu as fait sur l'image, mais mettre une boucle infini plutôt que limité dans le temps et mettre l'action qu'il fait lorsqu'il détecte l'obstacle après le bloc attendre (sinon, lorsqu'il détecte l'obstacle, ça revient au début de la boucle sans même que tu le remarques).

-dans le 3ème cas: c'est plus compliqué: il faut faire ça:

(mettre l'action que tu veux que ça fasse si une des deux conditions est respecté à la place du bloc son)

voilà voilà...

fou_de_lego ;)
____________________
Bienvenue dans le monde du lego ! :d______Vous pouvez aller voir mon propre site pour voir mes constructions: https://sites.google.com/site/legonxttutorielsetcreations/home

pm    
   Le 06/10/13 à 23h53 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 05/10/13
Messages: 9
Merci pour ta réponse.
En gros je veux qu'il s’arrête quand il voit un obstacle et qu'il avance de nouveau s'il y en a plus et je ne comprend pas ce que tu veux dire par rajouter un bloc après attendre, ce bloc n'est pas justement sensé le faire s’arrêter lorsqu'il y a qqc à moins de X cm ? Je n'ai jamais programmer avec cette interface j'ai seulement fait du C avec ROBOTC.
Ensuite que il n'avance pas à l'infini mais que sur une distance X et qu’après il fasse autre chose.
Peut tu explicité tes bloc si ça te dérange pas pcq j'aimerai essayé de comprendre ton programme pour l'adapter.
Je suis sur que le capteur est bien branché j'ai fait le teste du bruit avec la brique.



Edité par azfboom Le 07/10/13 à 00h20

pm    
   Le 07/10/13 à 00h55 Citer      

Administrateur

Groupe: Administrateur

Sexe:
Inscrit le: 24/04/10
Messages: 129
Lieu: France
Pense alors à utiliser un bloc "Commutation" configuré en mode de contrôle capteur d'ultrasons ( voir ce tutoriel ).

Avec ça tu pourra faire prendre une décision au robot selon la distance mesurée à l'obstacle. Par exemple, une distance de 20 cm.

Si la distance mesurée est supérieur à 20 cm, alors on exécute un bloc "Déplacer" en mode infinie ou d'une distance quelconque.

Si la distance mesurée est inférieur à 20 cm, alors on arrête le robot en plaçant un bloc "Déplacer" configuré en STOP.
____________________

pm http://www.sitedunxt.fr    
   Le 07/10/13 à 10h18 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 05/10/13
Messages: 9
Lorsque je mets un bloc commutation configuré sur le sonnar il fait même pas 10cm et le programme s’arrête.

C'est bien ça qu'il faut faire ?

pm    
   Le 07/10/13 à 18h18 Citer      

Booster Bazooka

Groupe: Membre

Sexe:
Inscrit le: 03/06/13
Messages: 125
Ce n'est pas ça: une fois que tu lui as ordonné d'avancer il regarde la suite du programme, il voit qu'il n'y a rien et l'arrête donc. Du coup, si tu veux qu'il continue, place un bloc "boucle" infini pour qu'il ne sorte pas. :d

Aussi, vu que tu as testé ton programme, ça veux dire que ton capteur fonctionne finalement ? Tu as fait le test... mais il fonctionnait ? :heink

Pour mon image, elle montre un programme qui fait avancer le moteur à l'infini (je me suis trompé sur l'image car tu peux voir que j'ai mis le bloc limité par les rotations), puis qui regarde si les conditions des blocs jaunes (capteurs) sont respectées (ils renvoient alors "vrai"). Le bloc rouge ("logique") renvoie vrai si une des 2 conditions est respectée et, si c'est vrai, le programme sort de la boucle qui est placée en mode logique. Le programme exécute alors l'action que tu demandes (ici faire un son) et revient au début de la boucle, alors il continue d'avancer et reprend tout. Une utilisation plus courante de cette technique est de le faire pivoter plutôt que d'émettre un son. voilà :)

Fou_de_lego, toujours à ton service :lol
____________________
Bienvenue dans le monde du lego ! :d______Vous pouvez aller voir mon propre site pour voir mes constructions: https://sites.google.com/site/legonxttutorielsetcreations/home

pm    
   Le 07/10/13 à 19h08 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 05/10/13
Messages: 9
Bonjour,
Tout d'abords merci de ta réponse je commence à comprendre (je crois).
Alors oui mon capteur marche j'ai tester directement avec la brique.
Pour ton programme si j'ai bien suivi il fait ça :
Avance->vérifie si il a tourné ou s'il il perçoit qqc devant lui -> si vrais il fait de la musique ->recommence la boucle.
J'ai deux soucis avec ça , le premier comment faire qu'il n'avance au total que d'une distance X ?
Et comment n'avoir qu'une seul condition ? (Seulement un test sur le sonar)
Moi je voudrais un truc du genre Avance->Si obstacle s’arrête ->reste à l’arrêt tant qu'il y obstacle-> si plus obstacle repart
Mais pas à l'infini je voudrais le faire avancer droit puis qu'il fasse une action ré avance et ainsi de suite.

pm    
   Le 07/10/13 à 20h17 Citer      

Booster Bazooka

Groupe: Membre

Sexe:
Inscrit le: 03/06/13
Messages: 125
Tu as bien compris.
Pour faire un truc du genre Avance->Si obstacle s’arrête ->reste à l’arrêt tant qu'il y obstacle-> si plus obstacle repart:
dans une boucle infini: bloc avancer sur avancer illimité; bloc attendre ultrason inférieur à 50; bloc déplacer sur stop; (action si nécessaire); bloc attendre ultrason supérieur à 50.

Mais pour la suite je n'ai pas bien compris.
____________________
Bienvenue dans le monde du lego ! :d______Vous pouvez aller voir mon propre site pour voir mes constructions: https://sites.google.com/site/legonxttutorielsetcreations/home

pm    
   Le 07/10/13 à 20h23 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 05/10/13
Messages: 9
Ah voila c'est ça que je voulais mais en plus ça je voudrais que apres Xcm il fasse une action.
Exemple : Mon robot doit avancer de 50cm puis faire un 360° puis faire de la musique.
Et sur mes 50cm d'avancement il faut que si il y a un obstacle il s’arrête et qu'il reparte quand y en a plus mais au final il faut qu'il est fait c'est 50cm (pas plu pas moins) je sais pas si c'est possible mais j'epsere

pm    
   Le 07/10/13 à 21h11 Citer      

Booster Bazooka

Groupe: Membre

Sexe:
Inscrit le: 03/06/13
Messages: 125
C'est possible, tout est possible en programmation :lol
Ca donne ça:

Voici le programme en téléchargement:
aide.rbt

J'espère que je ne me suis pas tromper... :d

PS: les distances parcourues et les pivotements ne seront pas exactes car on peut noter seulement les rotations de roues pas les distances parcourues. :s
____________________
Bienvenue dans le monde du lego ! :d______Vous pouvez aller voir mon propre site pour voir mes constructions: https://sites.google.com/site/legonxttutorielsetcreations/home

pm    
   Le 07/10/13 à 23h44 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 05/10/13
Messages: 9
Je comprend toujours pas les boucles dans ce programme mais ce que tu as fait ressemble déjà à ce que je veux faire.
Je voudrais arriver à le modifier pour qu'il n'aille pas tout droit nn stop mais seulement sur une distance X et qu'il ne tourne pas automatiquement juste qu'il s'arrete.
Mon but finale et de faire comme sur cette image :

C'est à dire avancer sur 50cm (zone de détection d'obstacle) tourner avancer sur 10cm (sans détection) faire tomber un truc (j'ai un bélier sur mon dernier moteur) puis tourner avancer de 10cm tourner avancer de 50cm puis tourner etc comme sur le dessin.
Voila si vous avez des idées je suis preneur et une explication pcq les boucles m'ont l'air pas tout à fait comme en C.

pm    
   Le 08/10/13 à 17h51 Citer      

Booster Bazooka

Groupe: Membre

Sexe:
Inscrit le: 03/06/13
Messages: 125
Je ne comprend pas quand est-ce qu'il faut s'arrêter après une certaine distance et quand est-ce qu'il faut s'arrêter après avoir détecter un obstacle...
Pour les boucles, tu as un tutoriel sur ce site créé par FRED_80 qui en parle: ici
Dans la rubrique "Tutoriels" en haut de la page, tu en as aussi d'autres qui pourraient t'intéresser.



Edité par fou_de_lego Le 08/10/13 à 17h53
____________________
Bienvenue dans le monde du lego ! :d______Vous pouvez aller voir mon propre site pour voir mes constructions: https://sites.google.com/site/legonxttutorielsetcreations/home

pm    
   Le 08/10/13 à 20h48 Citer      

Booster Fronde

Groupe: Membre

Inscrit le: 05/10/13
Messages: 9
Je sais pas trop comment dire ça.
Faut qu'il avance d'une distance de 50cm tout droit mais que s'il détecte il s’arrête et reparte quand il y en a plus mais je veux pas qu'il avance sur une distance infini ce qui est le cas avec des boucles infinis non ?
Je veux pas tout mon programme de fait mets juste si possible un bout de programme qui permet de faire ce que je dis juste au dessus.

Je viens de lire le tuto qui m'a pas appris grand chose au final c'est des boucle comme en C du coup je vais me replonger dans ton programme pour essayer de l'adapter.

EDIT: MERCI !!!!! BOn je sais pas ce que j'avais traficoté mais ton progamme aide ça marche comme je veux pour la ligne droite.
question : c'est quoi la boucle rotation ? Comment tu fais pour gérer la distance ?

EDIT 2: Ok dit moi si je me suis trompé mais en gros dans la boucle il avance tant qu'il rencontre rien et dans la boucle on copte le nombre de tour du moteur B et quand il en a fait 5 on sort de la boucle ?



Edité par azfboom Le 08/10/13 à 21h58

pm    
RssNXT-G » S'arreter avant un obstacle. Comment faire pour eviter les collisions ?  1  2  »  
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie