Piloter un robot dans un labyrinthe sans capteur distance ultrason.
Fermé
Bamba63
Messages postés
6
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
24 juin 2021
-
29 mai 2021 à 15:22
georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 25 avril 2024 - 5 juin 2021 à 18:23
georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 25 avril 2024 - 5 juin 2021 à 18:23
A voir également:
- Piloter un robot dans un labyrinthe sans capteur distance ultrason.
- Allumer un pc à distance - Guide
- Comment detruire un telephone a distance - Forum Mobile
- Je ne suis pas un robot recaptcha confidentialité - conditions - Forum Facebook
- Prendre le controle d'un pc a distance sans autorisation - Forum Réseau
- Partage de connexion à distance - Forum Réseaux sociaux
4 réponses
Bamba63
Messages postés
6
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
24 juin 2021
29 mai 2021 à 15:24
29 mai 2021 à 15:24
georges97
Messages postés
11842
Date d'inscription
lundi 31 janvier 2011
Statut
Contributeur
Dernière intervention
25 avril 2024
2 251
Modifié le 29 mai 2021 à 19:11
Modifié le 29 mai 2021 à 19:11
Bonjour,
Pour avoir testé et amélioré des scripts sur mbot, je me hasarde à avancer que vous ne pourrez pas obtenir un comportement adéquat en dehors de l'odométrie ou de méthodes de type reconnaissance de formes.
En effet, les procédés à base capteur ultra-son sont hautement imprécis, notamment à courte distance. Non pas que la détection ne se fasse pas, mais en fonction de la position de la forme et de l'angle de l'obstacle par rapport au capteur, la distance mesurée varie dans un intervalle qui ne permet que des mouvements à corriger au fur et à mesure de l'exploration du site.
L'utilisation de capteurs laser permettrait d'améliorer la précision, mais pour un coût sans doute rédhibitoire.
La méthode de comptage des clignotements de le LED 13 n'est pas plus adaptée car elle clignote à la fréquence fixe choisie alors que les actions sur les moteurs varient selon la charge des piles tandis que la vitesse dépend de l'adhérence par rapport à la surface du "sol" et le parcours du robot en virage varie en fonction de l'angle de la direction choisie.
De plus, il faudrait sans doute utiliser des interruptions car l'usage de delay() et le fait que les programmes doivent attendre l'exécution (la fin) d'une fonction en cours ne peuvent que ralentir le temps de réaction du robot.
Je peux comprendre qu'on vous impose l'utilisation de capteurs tout ou rien, mais cela ne me semble pas approprié à l'obtention des performances requises pour la commande d'un robot, sauf à se limiter à des actionneurs secondaires (lumière, son, etc.).
Vous pourriez néanmoins regarde les exemples et discussions du forum sur locoduino.fr (ils se limitent au ferroviaire
ou:
https://eskimon.fr
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ReferenceMaxi
https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/
https://www.didel.com/c-arduino/arduinoc-avances/
Cordialement
Pour avoir testé et amélioré des scripts sur mbot, je me hasarde à avancer que vous ne pourrez pas obtenir un comportement adéquat en dehors de l'odométrie ou de méthodes de type reconnaissance de formes.
En effet, les procédés à base capteur ultra-son sont hautement imprécis, notamment à courte distance. Non pas que la détection ne se fasse pas, mais en fonction de la position de la forme et de l'angle de l'obstacle par rapport au capteur, la distance mesurée varie dans un intervalle qui ne permet que des mouvements à corriger au fur et à mesure de l'exploration du site.
L'utilisation de capteurs laser permettrait d'améliorer la précision, mais pour un coût sans doute rédhibitoire.
La méthode de comptage des clignotements de le LED 13 n'est pas plus adaptée car elle clignote à la fréquence fixe choisie alors que les actions sur les moteurs varient selon la charge des piles tandis que la vitesse dépend de l'adhérence par rapport à la surface du "sol" et le parcours du robot en virage varie en fonction de l'angle de la direction choisie.
De plus, il faudrait sans doute utiliser des interruptions car l'usage de delay() et le fait que les programmes doivent attendre l'exécution (la fin) d'une fonction en cours ne peuvent que ralentir le temps de réaction du robot.
Je peux comprendre qu'on vous impose l'utilisation de capteurs tout ou rien, mais cela ne me semble pas approprié à l'obtention des performances requises pour la commande d'un robot, sauf à se limiter à des actionneurs secondaires (lumière, son, etc.).
Vous pourriez néanmoins regarde les exemples et discussions du forum sur locoduino.fr (ils se limitent au ferroviaire
ou:
https://eskimon.fr
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ReferenceMaxi
https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/
https://www.didel.com/c-arduino/arduinoc-avances/
Cordialement
Bamba63
Messages postés
6
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
24 juin 2021
5 juin 2021 à 14:39
5 juin 2021 à 14:39
Bonjour,
J'ai essayé de chercher tout la semaine mais malheureusement j'ai toujours pas de solution.
J'ai posé la question à notre prof sur comment utilisé l'odométrie sans capteur odométrique sur les roue et voici sa réponse:
<< Vous n'avez pas d'odomètre, mais vous pouvez compter le temps.
Et comme vous pouvez, par une expérimentation préalable, évaluer la vitesse de votre robot, vous pouvez en combinant vitesse et temps avoir une petite idée sur la distance qu'il parcourt.
Bien sûr, vous n'aurez pas une mesure très précise, mais ce devrait être suffisant pour lui faire franchir le premier mur de l'arène avec une basique commande boucle ouverte.
Son positionnement précis pour se mettre face à la cible se fera dans un second temps en boucle fermée en utilisant les informations renvoyées par la caméra. >>
En fait, j'ai procéder à des séries de mesure de la vitesse de rotation des roues et le temps que le robot met pour parcourir une distance de 125cm avant de tourner à droite pour poursuivre sa navigation.
Mais mon problème est que je n'ai aucune idée de comment l'implémenté sur Arduino?
voici mes expériences:
J'avais essayé de mettre des instruction if (distance >=125) on tourne vers la droite et ainsi de suite mais le robot réalisait autrement :) . Car notre objectif est de l'amener en position de tire et il sera guider par la suite grâce à une carte Raspberry pi3 et une caméra pi.
Merci d'avance
J'ai essayé de chercher tout la semaine mais malheureusement j'ai toujours pas de solution.
J'ai posé la question à notre prof sur comment utilisé l'odométrie sans capteur odométrique sur les roue et voici sa réponse:
<< Vous n'avez pas d'odomètre, mais vous pouvez compter le temps.
Et comme vous pouvez, par une expérimentation préalable, évaluer la vitesse de votre robot, vous pouvez en combinant vitesse et temps avoir une petite idée sur la distance qu'il parcourt.
Bien sûr, vous n'aurez pas une mesure très précise, mais ce devrait être suffisant pour lui faire franchir le premier mur de l'arène avec une basique commande boucle ouverte.
Son positionnement précis pour se mettre face à la cible se fera dans un second temps en boucle fermée en utilisant les informations renvoyées par la caméra. >>
En fait, j'ai procéder à des séries de mesure de la vitesse de rotation des roues et le temps que le robot met pour parcourir une distance de 125cm avant de tourner à droite pour poursuivre sa navigation.
Mais mon problème est que je n'ai aucune idée de comment l'implémenté sur Arduino?
voici mes expériences:
J'avais essayé de mettre des instruction if (distance >=125) on tourne vers la droite et ainsi de suite mais le robot réalisait autrement :) . Car notre objectif est de l'amener en position de tire et il sera guider par la suite grâce à une carte Raspberry pi3 et une caméra pi.
Merci d'avance
Bamba63
Messages postés
6
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
24 juin 2021
30 mai 2021 à 10:28
30 mai 2021 à 10:28
Bonjour,
Merci pour votre réponse. Je vais creuser sr les liens que vous m'avez envoyer pour voir si je pourrai avoir une solution adéquate.
Merci pour votre réponse. Je vais creuser sr les liens que vous m'avez envoyer pour voir si je pourrai avoir une solution adéquate.
georges97
Messages postés
11842
Date d'inscription
lundi 31 janvier 2011
Statut
Contributeur
Dernière intervention
25 avril 2024
2 251
5 juin 2021 à 15:26
5 juin 2021 à 15:26
Bonjour,
Je ne sais pourquoi, j'a raté votre réponse n°4.
Je m'inscris en faux contre l'assertion de votre prof:
Et comme vous pouvez, par une expérimentation préalable, évaluer la vitesse de votre robot, vous pouvez en combinant vitesse et temps avoir une petite idée sur la distance qu'il parcourt
C'et impossible pour les raisons que j'ai évoquées: d'une part parce que cela varie en fonction de l'état des piles et d'un mouvement en cours, d'autre part , un virage à gauche ou à droite ne se font pas obligatoirement à la même vitesse, donc le a distance parcourue ne sera pas la même.
Sans compter que les inévitables corrections en pseudo temps réel, dépendront de la succession des actions comme résultat des détections des capteurs, qui en fonctionnement normal (hors usage des interruptions) ont une certaine inertie pour ne pas dire une inertie certaine, si elles se déroulent à intervalle de moins d'une seconde.
Si j'interprète bien vos résultats, il y a une seconde de différence, en ligne droite sur12,5 cm. Cela me parait énorme et ingérable dès qu'interviennent des changements de direction, qui von prendre au minimum une demi-seconde entre chaque action.
Je n'en veux pour preuve que votre constatation J'avais essayé de mettre des instruction if (distance >=125) on tourne vers la droite et ainsi de suite mais le robot réalisait autrement
Et pour cause, si le robot rencontre un obstacle avant les 125 cm, il repart sur un nouveau parcours de 125 cm, avec ou sans obstacles, mais s'il va moins vite que prévu (piles, nature du sol) il va fair bien plus que 125 cm et donc se retrouver dans une position on prévue (à frotter contre un mur ou à se retrouver coincé dans un coin).
Par ailleurs, je découvre l'existence d'une caméra et d'un ordinateur de type raspberry pi par exemple. Et cela change la donne.
je n'ai aucune idée de comment l'implémenté sur Arduino?
comme indiqué par ailleurs, seul l'usage des interruptions permet de gérer des mouvements rapide et des actions "imbriquées qui correspondent aux obstacles détectés.
D'autre part, dans un labyrinthe, on ne tourne pas toujours à droite, sous peine de refaire en permanence le même parcours. On tourne à droite ou à gauche, en fonction de la moustache activée, ce qui permet de détecter le ouvertures et de relever le tracé du labyrinthe en actionnant des "drapeaux" logiques..
Bon courage pour la suite.
Je ne sais pourquoi, j'a raté votre réponse n°4.
Je m'inscris en faux contre l'assertion de votre prof:
Et comme vous pouvez, par une expérimentation préalable, évaluer la vitesse de votre robot, vous pouvez en combinant vitesse et temps avoir une petite idée sur la distance qu'il parcourt
C'et impossible pour les raisons que j'ai évoquées: d'une part parce que cela varie en fonction de l'état des piles et d'un mouvement en cours, d'autre part , un virage à gauche ou à droite ne se font pas obligatoirement à la même vitesse, donc le a distance parcourue ne sera pas la même.
Sans compter que les inévitables corrections en pseudo temps réel, dépendront de la succession des actions comme résultat des détections des capteurs, qui en fonctionnement normal (hors usage des interruptions) ont une certaine inertie pour ne pas dire une inertie certaine, si elles se déroulent à intervalle de moins d'une seconde.
Si j'interprète bien vos résultats, il y a une seconde de différence, en ligne droite sur12,5 cm. Cela me parait énorme et ingérable dès qu'interviennent des changements de direction, qui von prendre au minimum une demi-seconde entre chaque action.
Je n'en veux pour preuve que votre constatation J'avais essayé de mettre des instruction if (distance >=125) on tourne vers la droite et ainsi de suite mais le robot réalisait autrement
Et pour cause, si le robot rencontre un obstacle avant les 125 cm, il repart sur un nouveau parcours de 125 cm, avec ou sans obstacles, mais s'il va moins vite que prévu (piles, nature du sol) il va fair bien plus que 125 cm et donc se retrouver dans une position on prévue (à frotter contre un mur ou à se retrouver coincé dans un coin).
Par ailleurs, je découvre l'existence d'une caméra et d'un ordinateur de type raspberry pi par exemple. Et cela change la donne.
je n'ai aucune idée de comment l'implémenté sur Arduino?
comme indiqué par ailleurs, seul l'usage des interruptions permet de gérer des mouvements rapide et des actions "imbriquées qui correspondent aux obstacles détectés.
D'autre part, dans un labyrinthe, on ne tourne pas toujours à droite, sous peine de refaire en permanence le même parcours. On tourne à droite ou à gauche, en fonction de la moustache activée, ce qui permet de détecter le ouvertures et de relever le tracé du labyrinthe en actionnant des "drapeaux" logiques..
Bon courage pour la suite.
Bamba63
Messages postés
6
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
24 juin 2021
5 juin 2021 à 16:22
5 juin 2021 à 16:22
Merci pour votre réponse.
je vous l'accord ayant essayé, le branche dans le secteur et son fonctionnement avec une pile (la vitesse est totalement différente).
En fait, lorsque j'utilise que les moustache il me faudra par la suite s'arrêter ou aller sur la premier cible à abattre, pour nous la reconnaissance se fera avec Raspberry pi qui s'aura piloter les roue aussi pour balayer un certain angle de recherche de la cible à l'aide de openCV (par reconnaissance d'objet) . Du coup si je ne tiens plus compte de la distance parcourue, le robot risque d'aller ailleurs au lieu de ce mettre en position de tire :) . Pour l'interrupteur vous proposer quel genre s'il vous plait?
Encore merci.
je vous l'accord ayant essayé, le branche dans le secteur et son fonctionnement avec une pile (la vitesse est totalement différente).
En fait, lorsque j'utilise que les moustache il me faudra par la suite s'arrêter ou aller sur la premier cible à abattre, pour nous la reconnaissance se fera avec Raspberry pi qui s'aura piloter les roue aussi pour balayer un certain angle de recherche de la cible à l'aide de openCV (par reconnaissance d'objet) . Du coup si je ne tiens plus compte de la distance parcourue, le robot risque d'aller ailleurs au lieu de ce mettre en position de tire :) . Pour l'interrupteur vous proposer quel genre s'il vous plait?
Encore merci.
georges97
Messages postés
11842
Date d'inscription
lundi 31 janvier 2011
Statut
Contributeur
Dernière intervention
25 avril 2024
2 251
>
Bamba63
Messages postés
6
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
24 juin 2021
5 juin 2021 à 18:23
5 juin 2021 à 18:23
D'accord avec vos explications. Pour l'interrupteur, si vous en avez le droit, l'ultra-son remplacera très bien le moustaches, avec l'avantage de pouvoir choisir la distance de déclenchement de l'action au centimètre près (en tenant compte du fait cependant que cette distance mesurée varie en fonction de l'angle par rapport à la surface détectée).
Sinon, vous avez les détecteurs de mouvement de type PIR:
https://www.v-labs.fr/tuto-capteur-de-mouvements-photos-sur-arduino-raspberry-b/
A un de ces jours, sans doute.
Sinon, vous avez les détecteurs de mouvement de type PIR:
https://www.v-labs.fr/tuto-capteur-de-mouvements-photos-sur-arduino-raspberry-b/
A un de ces jours, sans doute.