Aller au contenu


Photo
- - - - -

Les robots "labyrinthe"


  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1 PZaf

PZaf

    Habitué

  • Membres
  • PipPip
  • 249 messages
  • Location:Toulon

Posté 07 mars 2006 - 03:48

Pour continuer notre série sur les concours de robotique existants dans le monde, nous pouvons parler des Robots Labyrinthe.

Image IPB

Voici en quelques mots le principe d'un de ces tournois :

Le concours du labyrinthe consiste tout simplement à en sortir le plus rapidement possible.

Le robot connait à l'avance le plan du labyrinthe. Mais il ne sais pas d'où il commence !

Plusieurs subtilitées existent : Tout d'abord le robot a un mallus de 30s s'il prend la mauvaise sortie (il y en a deux). De plus, il a un bonus de 30s s'il tire une balle de ping pong au centre du labyrinthe ! Voila qui va corser un peu la chose ...


Cet extrait a été récupéré sur le site des Fribottes. Il a été rédigé suite à leur participation à Hispabot 2004.

Sur le lien d'Hispabot, nous pouvons trouver les règles du concours et le plan du labyrinthe.

Sur le site des Fribottes, il y a de très bonnes informations concernant la réalisation de leurs robots "solveurs de labyrinthe".
Il me semble que le plus compliqué dans l'histoire est de savoir où on est situé dans le labyrinthe (bien que connu à l'avance). Ils utilisent des sharps pour mesurer la distance qui les sépare des cloisons des 4 directions. En fonction de ces mesures ils comparent par rapport à des valeurs qu'ils ont pré-programées. Et en quelques mouvements, ils savent où ils se situent.

Ca me parait assez lourd à réaliser car il faut que le robot soit bien parallèle au mur et bien centré sur la case pour pouvoir prendre de bonnes mesures.

Voyez-vous d'autres solutions pour résoudre le labyrinthe et/ou d'autres difficultés dans cette catégorie ?

#2 jean-francois

jean-francois

    Membre passionné

  • Membres
  • PipPipPip
  • 382 messages
  • Location:Marseille

Posté 07 mars 2006 - 07:48

il faudrait faire un radar pour permettre au robot de ce reperé par rapport au contour du Labyrinthe. ça lui permettrait de ce placer ensuite a un point connu, comme le centre, et enfin, de le résoudre. par contre ça necaissite un radar qui voit a travers les murs.

#3 PZaf

PZaf

    Habitué

  • Membres
  • PipPip
  • 249 messages
  • Location:Toulon

Posté 08 mars 2006 - 10:29

Je viens de trouver un article sur Vie Artificielle traitant de la résolution d'un labyrinthe.

Cet article est assez intéressant, il nous parle de l'algorithme de Dijkstra et l'algorithme A* comme étant les meilleurs pour ce type de problème.

Par contre, en ce qui concerne le concours de Hispabot, le travail prélimianaire concernant la résolution du chemin le plus court a déjà été réalisé :

post-1-0-47543500-1411420658.jpg

Nous pouvons vor qu'il suffit de suivre les nombres de façon décroissante pour sortir du labyrinthe.

Donc le travail consiste en premier lieu à mémoriser le labyrinthe et ses coefficients dans le robot.
Ensuite, il faudra réfléchir à une méthode pour savoir précisement où l'on se situe dans le labyrinthe.

Je serais intéressé pour coder le labyrinthe, si certaines personnes ont des idées, des liens, etc., n'hésitez pas à intervenir sur ce topic.
Surtout, je ne vois pas comment pouvoir tester le programme autrement qu'en réalisant le robot et le labyrinthe. Si vous avez des idées.

Image(s) jointe(s)

  • labyrinthe.JPG


#4 uran

uran

    Membre

  • Membres
  • 48 messages

Posté 25 juillet 2006 - 07:58

Salut,
Ce n'est pas tout à fait ca PZaf, la 1ère chose pour appliquer cet algo c'est qu'il faut connaitre le plan du laby d'avance et le stoquer en mémoire, la 2ème phase consiste à se repérer par rapport à l'environnement direct dans ce plan, ensuite on pondère chaques cases en partant de la dernière case avant la sortie ayant pour poid 1 et plus on s'en éloigne (en nombre de case) plus on incrémente le poid de chaque case (on part de l'arrivée vers le départ).
Il ne reste plus ensuite au robot de regarder le poids de la case sur laquelle il est, de le comparer aux cases adjacentes et de se diriger vers la case ayant un poids inférieur(forcément une seule dans ce plan).
En résumé ca donne à peu près çà, pour une explication plus complète et comment l'implémenter dans un robot, il faut aller voir la page de description de Cnossos des Fribotte qui l'utilise.
Si le plan n'est pas connu à l'avance, cette méthode ne fonctionne évidement pas :)
Une méthode qui marche à tout les coups (sauf execptions qui confirme etc etc) c'est de toujours prendre le chemin à droite, ce n'est pas forcément le plus rapide mais celà fini par mener à la sortie.
Yann

#5 PZaf

PZaf

    Habitué

  • Membres
  • PipPip
  • 249 messages
  • Location:Toulon

Posté 25 juillet 2006 - 08:29

Salut Uran,

Tout à fait d'accord avec toi.


Je pense que le plus dur dans cette catégorie c'est d'arriver à se repérer dans le labyrinthe. Car même s'il est connu par avance, que la "valeur" des cases est aussi connue, le positionnement du robot est très délicat.

Le robot doit arriver à se déplacer bien parallèlement par rapport aux murs et il faut bien qu'il soit centré sur la case afin de pouvoir faire des relevés de mesures des murs l'entourant qui soient le plus fiable possible.

Pour cela, en ce qui me concerne, j'équiperais le robot de :
- 4 sharps (1 devant, 1 derrière, 1 à droite et 1 à gauche) pour réaliser les mesures entre le robot et les murs
- 4 LEDs IR pulsés (1 à droite sur l'avant, 1 à droite sur l'arrière, 1 à gauche sur l'avant, 1 à gauche sur l'arrière) afin de pouvoir bien aligner le robot par rapport aux murs

Par contre, je pense que pour cette catégorie, il serait intéressant de simuler le plan et les déplacements du robot. Quelqu'un a une idée de comment procéder pour faire des simulations de déplacements de robots ?

#6 Fabarbuck

Fabarbuck

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 685 messages

Posté 26 juillet 2006 - 12:32

Ca dépend des langages que tu connais. J'ai fait à l'école de la programmation en java... c'est assez simple, tu as tout sous la main, bref, ca peut etre plutot sympa (avec Eclipse, c'est tip top). Par contre, tu ne testera que tes algos... parce qu'il faudra réécrire ton truc pour l'implanter sur le robot (a priori).

J'aime bien le coup des labyrynthes, parce que 'l'intelligence' est quand meme plutot mise en avant. En se prenant par la main et si ca intéresse des gens, on doit pouvoir se faire un micro simulateur en mode texte au départ... (mode texte voulant dire que les résultats s'affichent par des lignes de texte... faire du graphique n'est pas supra dur en java, mais ca rallonge la prog ; autant faire le truc en texte je peux le faire seul pendant mes vacances prochaines, autant avec l'aspect graphique, a priori, c'est plus difficile - si je veux aussi finir mon sumo :D ).


Pour revenir sur la résolution des problemes de labyrynthe, tout dépend des infos dont dispose le robot... et il y a aussi des heuristiques (des 'recettes de cuisine' pour parler francais ;) ) dans le cas ou le robot ne connait pas le labyrynthe, ou risque de se planter.

En bref, j'aime bien, et s'il y a des intéressés, je veux bien me lancer dans un truc comme ca. Mais il faut que des gens s'intéressent pour de vrai :P

#7 PZaf

PZaf

    Habitué

  • Membres
  • PipPip
  • 249 messages
  • Location:Toulon

Posté 26 juillet 2006 - 07:15

Ca dépend des langages que tu connais


Le C dont je me sers pour programmer mes robots mais aussi de l'assembleur et un peu de VB.

En ce qui concerne le Java, je ne maitrise pas mais on est là aussi pour apprendre. ;)


Par contre, tu ne testera que tes algos... parce qu'il faudra réécrire ton truc pour l'implanter sur le robot (a priori).


Ca c'est dommage. :o On ne peut rien faire avec le C ?? :unsure:

En se prenant par la main et si ca intéresse des gens, on doit pouvoir se faire un micro simulateur en mode texte au départ...


Je suis intéressé mais par contre je ne maitrise pas, il faudra que tu m'explique. Par contre, je pense qu'il serait intéressant de développer ce travail sur ce topic car ça peut intéresser pas mal de monde.

Pour revenir sur la résolution des problemes de labyrynthe, tout dépend des infos dont dispose le robot... et il y a aussi des heuristiques (des 'recettes de cuisine' pour parler francais  ) dans le cas ou le robot ne connait pas le labyrynthe, ou risque de se planter


Peut-être devrions-nous commencer "simple" (enfin si on peut dire ça comme ça :P ), en prenant le principe d'Hispabot où le labyrinthe est connu d'avance (d'ailleurs, on peut se baser sur le labyrinthe présenté ci-dessus :rolleyes: ).

En bref, j'aime bien, et s'il y a des intéressés, je veux bien me lancer dans un truc comme ca. Mais il faut que des gens s'intéressent pour de vrai


Tu l'auras compris, je suis intéressé mais comme tu l'as signalé, il y a en parallèle les sumos et les suiveurs de ligne a réalisé... Ca prendra un peu plus de temps !

#8 Fabarbuck

Fabarbuck

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 685 messages

Posté 26 juillet 2006 - 08:18

Le C, de l'assembleur et un peu de VB. En ce qui concerne le Java, je ne maitrise pas mais on est là aussi pour apprendre.

C'est vrai, et si tu sais déja un peu programmer, le java n'est pas supra dur... Est ce que la notion d'objet t'es familiere? Si non, ce n'est pas super compliqué, et si tu as un minimum d'envie d'apprendre le java, connaissant le C c'est quand meme accessible.



Par contre, tu ne testera que tes algos... parce qu'il faudra réécrire ton truc pour l'implanter sur le robot (a priori).

Ca c'est dommage. :o On ne peut rien faire avec le C ?? :unsure:

Ben... si, mais c'est tout de suite un peu plus lourd, et je ne maitrise pas vraiment. De plus, ce n'est pas aussi facilement portable. En fait, je préfere faire quelque chose en java parce que c'est plus adapté, quitte à tout réécrire plus tard... parce que de toute facon, je doute que le C écrit pour faire le simulateur puisse etre cash intégré dans un robot... et il faudra réécrire dans tous les cas je pense (ou alors, c'est d'un simulateur bien plus évolué qu'on parle !!!)


Cool que tu sois intéressé ! il faut chopper d'autres gens, s'il y en a. :unsure:

Pour ce qui est des principes, je pense qu'il faut surtout prévoir un truc fiable et qui soit améliorable par la suite. Biensur que pour commencer, on aura un seul petit lab avec presque rien dedans... mais il faut faire en sorte que tout ce qu'on voudra y ajouter par la suite ne nous oblige pas à tout refaire.

Bon, en tout cas, ce qu'il faut faire maintenant, c'est réfléchir aux fonctionnalités, établir une sorte de cahier des charges et définir les besoins, afin de prendre les bonnes décisions d'implémentation.
Je te conseille d'aller chopper le SDK java actuel pour ta machine, et de télécharger eclipse aussi. Tu devrais pouvoir faire les petits tutoriaux, trouver des bouts de cours, et je pourrai aussi te filer des ressources pour que tu puisses démarrer en java... mais il nous faut surtout une liste de features ;)

Edit: j'ai commencé à regarder ca, je pense que pondre une version tres basique ne devrait pas prendre trop de temps... si j'arrive à survivre à la chaleur et à ma journée de travail, j'attaque directement ce soir ! :)

#9 jochemla

jochemla

    Nouveau membre

  • Membres
  • 3 messages

Posté 31 octobre 2009 - 03:39

Bonjour,

Je suis carrément en retard si je poste là, j'espère que ça pourra toujours servir.
Je suis nouveau sur le forum, nouveau dans la robotique et la programmation, ça fait peut-être un an que je me débrouille, pour le moment, j'en suis à ma première année après le lycée.
Et sachant que c'est une vraie passion, je trouve vraiment le forum magnifique, donc merci à tout le monde. Ca c'est une chose.

Et puis ce sujet m'intéresse, j'ai essayé déjà de simuler le comportement d'un robot sur ordinateur. Du coup, ce n'est pas quelquechose de très élaboré mais c'est une base, pour une fois où j'aurais le temps de faire plus, ça me permet de me rendre compte que y'a bien quelquechose à faire de ce côté là, ce n'est pas impossible. Et ca c'est bien.
Le petit programme que j'ai rédigé, je l'ai fait sous Processing, c'est un langage facile à prendre en main et qui permet surtout d'écrire de petites applications graphiques simplement, il est (je crois) basé sur Java. Donc, je peux vous montrer le code que j'ai écrit, et ensuite vous n'avez plus qu'à le copier-coller sous Processing pour l'éxécuter. Après vous pouvez voir de quoi il s'agit, le comprendre, l'analyser.
Donc voilà le lien ou j'ai mis le code : http://sites.google.com/site/croyezaufutur/processing/mes-apps-1/robot . Pour le moment, les seuls comportements simulés sont la recherche de lumière et l'évitement d'obstacles, avec des codes couleurs déterminés, il est possible d'agir sur l'environnement, et de choisir le mode de fonctionnement par programme, cette petite appli est à améliorer, graphiquement parlant (gestion des paramètres), mais surtout au niveau de l'algorithme simulé. N'hésitez pas à proposer.
Si vous voulez, vous pouvez lire le code, me poser des questions dessus, j'aimerai beaucoup savoir comment vous aider et participer à ce que vous faites. Parce que depuis le temps, le sujet date un peu, est ce que vous êtes toujours dedans (ah oui, ça fait 3 ans quand même ^^)? Vous êtes peut-être passés à autre chose (je comprends), donc si vous voulez bien me dire où vous en êtes, je serais ravi.

Voilà, j'espère pouvoir vous aider, la robotique est vraiment passionnante

Jonathan Chemla




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users