Table des matières:
Vidéo: Robot chaotique autodidacte : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Êtes-vous intéressé par l'apprentissage automatique, l'IA et les robots ? Vous n'avez pas besoin de travailler dans une université chic. Ceci est une description de mon robot chaotique. C'est un robot très simple pour montrer comment utiliser le code d'auto-apprentissage et comment l'implémenter dans une plate-forme Arduino, dans ce cas un Arduino due. C'est une plateforme très bon marché !
Le code fait évoluer le robot pour que le robot apprenne à ramper. Il reçoit un retour de la souris qui est traînée derrière. Le code est "génétique". Cela signifie qu'un certain nombre d'individus sont testés et que les meilleurs sont conservés et auront des bébés. Cela signifie que le code évolue de manière évolutive.
Étape 1: Matériel AKA le Robot
Vous avez besoin:
- 1 Arduino dû
- 8 microservo
- 1 souris PS/2
- 1 levier de niveau
- une variante d'un bouclier de capteur ou similaire, je me suis fatigué du bouclier de capteur et j'ai soudé le mien.
-fils
-alimentation externe 5V pour les servos
- quelques morceaux de ferraille, de la colle et du fil d'acier. Et du ruban adhésif !
Alors mettez le Due sur le sol. Mettez les servos dans un anneau autour d'elle. Assemblez-les avec de la ferraille, de la colle et du fil. C'est la partie chaos ! Comme il est chaotique dans sa conception, il est imprévisible de déterminer comment se déplacer pour le faire ramper. C'est pourquoi le code d'auto-apprentissage est la voie à suivre !
Astuces: utilisez des pièces métalliques assez lourdes, cela facilite les déplacements du robot.
Connectez les servos au due, dans mon cas ils sont connectés à D39, 41, 43, 45, 47, 49, 51, 53.
Connectez les servos à l'alimentation externe 5V. Pour cela, construisez une sorte de bouclier, ou utilisez un bouclier de capteur ou similaire. N'alimentez PAS les servos à partir de la broche due 5V, cela ne suffit pas, Due brûlera. J'ai utilisé une petite carte prototype pour distribuer le 5 V à tous les servos. Cette carte contient également le décaleur de niveau pour l'horloge de la souris PS/2 et les lignes de données. La carte alimente également la souris en 5V. N'oubliez pas de connecter la terre de l'alimentation externe à la terre Arduino ! le schéma montre comment tout connecter.
Connectez le PS/2 à l'alimentation (5V) et à la terre. Connectez l'horloge et la ligne de données du PS/2 à la Due via un décaleur de niveau. (en raison de 3,3 V, PS/2 de 5 V). Connectez l'horloge sur D12 et les données sur D13.
Pour plus de détails sur le protocole PS/2, il s'agit d'un très bon instructable:
www.instructables.com/id/Optical-Mouse-Od…
La librairie PS/2 de jazzycamel que j'ai utilisée:
Étape 2: le code
Au début, permettez-moi de dire: je ne suis PAS un programmeur. Certaines parties sont très étendues, un programmeur expérimenté pourrait bien sûr les raccourcir et ainsi de suite.
Le code est autodidacte et c'est le cœur du projet. C'est la partie amusante de celui-ci! Cela signifie que le robot évolue et va de mieux en mieux, dans ce cas il s'améliore en rampant. Ce qui est étonnant à ce sujet, c'est que le robot évoluera selon ce que vous lui donnerez en retour. Dans ce cas, il fait glisser une souris PS/2 et plus la souris est traînée longtemps, plus elle obtient de points.
Cela signifie également que vous pouvez utiliser ce code pour entraîner votre robot à faire autre chose, à condition qu'il soit mesuré et renvoyé au robot !
Comme vous pouvez le voir sur les images, la souris est traînée sur un cordon fin. Au début, il a été traîné dans le câble de la souris. Cependant, le câble est assez rigide, le robot a donc appris à secouer la souris au lieu de la faire glisser. Le tremblement a produit des points forts…
Le code utilise 50 individus. Le cœur de ceci est un tableau de 50x50 octets.
Un individ est un tableau d'octets. Lorsque l'individu est utilisé pour exécuter le robot, cet individu est envoyé à une fonction dans le code appelée "tolken".
Au début d'une course, il y a 8 variables m1, m2, m3, m4, m5, m6, m7 et m8 (une pour chaque servo). Dans ce robot, ils ont tous des valeurs de départ constantes. Dans "tolken", les mś sont transformés en une boucle case/swich en fonction des valeurs de l'individu. par exemple une valeur de "1" exécute ce qui suit: m1 = m1 + m2.
Si un individu est: 1, 2, 3, 0, 0, 0, 0….. alors le mś sera transformé de la manière suivante:
m1 = m1 + m2;
m1 = m1 + m3;
m1 = m1 + m4;
Tolken est une liste de 256 opérations mathématiques différentes, donc chaque valeur possible du tableau individs représente un changement mathématique des m valeurs.
Le processus tolken est effectué 4 fois, avec une lecture entre chaque tour, générant quatre codes moteurs différents pour chaque "m". Les codes moteurs sont les valeurs qui sont ensuite envoyées aux servos.
A chaque étape de l'évolution, 4 individus s'affrontent en rampant. Les deux meilleurs individus seront les parents de deux bébés, les bébés remplaceront les deux pires individus. Lorsque les bébés sont créés, une épissure du « code génétique » d'un parent est échangée contre une tranche de l'autre parent, ce qui crée deux nouveaux individus.
Si aucun individu ne fonctionne du tout, la mutation des individus aura lieu pour en générer de nouveaux.
Vous pouvez trouver le code sur GitHub:
Étape 3: Comment l'entraîner ?
C'est la partie délicate. Afin de vous entraîner correctement, vous devez le "réinitialiser" après chaque course. Cela signifie que vous devez le mettre dans la même position à chaque fois.
J'ai mis quelques points de contrôle à l'intérieur du code pour m'assurer que le robot est dans sa position de départ.
Alignez donc le robot et laissez-le fonctionner.
Il teste 4 individus puis il choisit les 2 meilleurs pour être parents. Après avoir remplacé le pire par les bébés, il imprime des données sur les performances des individus. Il imprime également le tableau 50x50. Il est sage de copier cela dans une feuille Excel ou similaire. (ou écrivez du code de besoin dans le traitement) Si le Due se réinitialise (cela se produit pour diverses raisons), vous ne perdrez alors pas votre travail d'entraînement. Vous pouvez copier/coller le tableau dans le code et continuer à vous entraîner là où vous êtes parti.
Mon robot a appris à ramper après quelques heures. Téléchargez la vidéo pour la voir ramper. Il n'est pas allé dans la direction que je pensais !
Essayez également différents étages! Mon robot s'est mieux comporté sur un tapis en nylon.
Améliorations possibles:
1. Il serait préférable d'avoir un nano séparé pour lire la souris PS/2 et envoyer la distance traitée déplacée en série vers le nano. La lecture de ma souris PS/2 est un peu bancale. C'est la raison pour laquelle la souris lit/efface des parties du code.
2. une sorte de banc d'essai qui ramènerait le robot à sa position de départ accélérerait l'entraînement.
3. Je pense qu'il est sage de l'entraîner un peu plus lentement que moi. Un entraînement plus lent assure qu'il est entraîné "dans la bonne direction". La performance moyenne de plusieurs essais pourrait être une voie possible.
Conseillé:
Arduino - Robot de résolution de labyrinthe (MicroMouse) Robot de suivi de mur : 6 étapes (avec photos)
Arduino | Robot de résolution de labyrinthe (MicroMouse) Robot de suivi de mur : Bienvenue, je suis Isaac et voici mon premier robot "Striker v1.0". Ce robot a été conçu pour résoudre un labyrinthe simple. Dans la compétition, nous avions deux labyrinthes et le robot a été en mesure de les identifier. Tout autre changement dans le labyrinthe peut nécessiter un changement dans le
Comment construire un robot SMARS - Arduino Smart Robot Tank Bluetooth : 16 étapes (avec photos)
Comment construire un robot SMARS - Arduino Smart Robot Tank Bluetooth : Cet article est fièrement sponsorisé par PCBWAY.PCBWAY fabrique des PCB de prototypage de haute qualité pour les gens du monde entier. Essayez-le vous-même et obtenez 10 PCB pour seulement 5 $ chez PCBWAY avec une très grande qualité, merci PCBWAY. Le Blindage Moteur pour Arduino Uno
Robot labyrinthe crabe autodidacte PROTOTYPE 1 ÉTAT INCOMPLET : 11 étapes
Robot labyrinthe autodidacte PROTOTYPE 1 STATUT INCOMPLETE : AVERTISSEMENT !! : Bonjour, mes excuses pour les mauvaises images, j'ajouterai plus d'instructions et de diagrammes plus tard (et des détails plus spécifiques. Je n'ai pas documenté le processus (au lieu de cela, j'ai juste fait une vidéo en accéléré). De plus, cette instructable est incomplète, comme je l'ai fait
Robot d'équilibrage / Robot à 3 roues / Robot STEM : 8 étapes
Robot d'équilibrage / Robot à 3 roues / Robot STEM : Nous avons construit un robot d'équilibrage et à 3 roues combiné pour une utilisation éducative dans les écoles et les programmes éducatifs parascolaires. Le robot est basé sur un Arduino Uno, un bouclier personnalisé (tous les détails de construction fournis), une batterie Li Ion (tous constr
[Robot Arduino] Comment faire un robot de capture de mouvement - Pouces Robot - Servomoteur - Code source : 26 étapes (avec photos)
[Robot Arduino] Comment faire un robot de capture de mouvement | Pouces Robot | Servomoteur | Code source : Robot Thumbs. Utilisé un potentiomètre du servomoteur MG90S. C'est très amusant et facile! Le code est très simple. Il n'y a qu'une trentaine de lignes. Cela ressemble à une capture de mouvement. Veuillez laisser toute question ou commentaire! [Instruction] Code source https://github.c