Forum des NXTiens
• Index
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.
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.
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.
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.
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
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
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
(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 ?
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


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 !
______Vous pouvez aller voir mon propre site pour voir mes constructions: https://sites.google.com/site/legonxttutorielsetcreations/home
Bienvenue dans le monde du lego !


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
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
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.
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.
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 ?

C'est bien ça qu'il faut faire ?
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.
Aussi, vu que tu as testé ton programme, ça veux dire que ton capteur fonctionne finalement ? Tu as fait le test... mais il fonctionnait ?
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

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

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

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


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.
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.
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.
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 !
______Vous pouvez aller voir mon propre site pour voir mes constructions: https://sites.google.com/site/legonxttutorielsetcreations/home
Bienvenue dans le monde du lego !


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
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
C'est possible, tout est possible en programmation
Ca donne ça:

Voici le programme en téléchargement:
aide.rbt
J'espère que je ne me suis pas tromper...
PS: les distances parcourues et les pivotements ne seront pas exactes car on peut noter seulement les rotations de roues pas les distances parcourues.

Ca donne ça:

Voici le programme en téléchargement:
aide.rbt
J'espère que je ne me suis pas tromper...

PS: les distances parcourues et les pivotements ne seront pas exactes car on peut noter seulement les rotations de roues pas les distances parcourues.

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


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.
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.
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
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 !
______Vous pouvez aller voir mon propre site pour voir mes constructions: https://sites.google.com/site/legonxttutorielsetcreations/home
Bienvenue dans le monde du lego !


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
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
• Index
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie