Table des matières:

Bot Hawking : 5 étapes
Bot Hawking : 5 étapes

Vidéo: Bot Hawking : 5 étapes

Vidéo: Bot Hawking : 5 étapes
Vidéo: Einstein Platform: Prediction Builder 2024, Novembre
Anonim
Image
Image
Construisez votre robot Hawking
Construisez votre robot Hawking

Le Hawking Bot est un projet Lego MINDSTORMS EV3 inspiré par le regretté Stephen Hawking. Stephen Hawking avait un bon sens de l'humour donc je suis sûr qu'il aurait approuvé ce projet. Le Hawking Bot peut se frayer un chemin autour des obstacles et réagir aux mouvements, puis prononce l'un des célèbres extraits sonores de Stephen Hawking et se déplace dans la direction de l'objet en mouvement. Il utilise le capteur à ultrasons qui balaye son environnement avec un mouvement de tête de balayage.

Étape 1: Construisez votre robot Hawking

Toutes les pièces requises se trouvent dans l'ensemble de base EV3 Lego MINDSTORMS à l'exception du capteur à ultrasons (ses yeux) qui doit être acheté séparément.

Étape 2:

Image
Image

Le code du Hawking Bot est entièrement écrit en python 3. Un fichier image amorçable pour exécuter python dans un environnement Debian Linux sur le Hawking Bot peut être téléchargé à partir du site Web ev3dev. Le code pour exécuter le Hawking Bot peut être téléchargé à partir d'ici. Tout le code est contenu dans un fichier de classe, vous pouvez donc utiliser les méthodes existantes ou même les modifier si vous le souhaitez.

Veuillez regarder cette vidéo avec des instructions détaillées sur la façon de configurer Debian Linux et Python3 sur votre robot. Bien que cela soit spécifiquement pour une configuration Mac, il sera toujours utile d'avoir une compréhension générale du processus. Ce travail est en cours. Le capteur à ultrasons est parfois peu fiable et cela nécessite un code plus intelligent pour détecter les « valeurs aberrantes ». J'aimerais voir les contributions des autres pour rendre le code plus efficace et moins sujet aux erreurs.

Étape 3: Créez vos propres extraits sonores de Hawking

OK, maintenant, vous voulez avoir des citations célèbres ou juste quelques déclarations simples du professeur Hawking. Il y a des tonnes de vidéos où vous pouvez l'entendre parler et puis il y a ses conférences qui sont un trésor de sagesse et d'extraits sonores utiles.

Vous avez besoin d'un programme comme Audacity qui fonctionne sur de nombreuses plateformes pour sélectionner et découper vos extraits sonores préférés.

Enregistrez votre extrait sonore en tant que fichier mono wav au format SH6, SH7, …SH11, SH12 et ainsi de suite.

Vous trouverez ci-dessous quelques exemples que j'ai créés selon la méthode ci-dessus.

Étape 4: Trucs et astuces

Trucs et astuces
Trucs et astuces
Trucs et astuces
Trucs et astuces

Le Hawking Bot est livré avec un module d'auto-vérification pour s'assurer que tous les câbles sont connectés et que la puissance de la batterie est suffisante. Des connexions desserrées, manquantes ou même endommagées peuvent se produire facilement. Ce module est donc très utile. La méthode 'checkConnection' vérifie uniquement s'il existe une connexion électrique. Vous devez toujours vous assurer que les moteurs sont connectés au bon port.

Le mouvement de la tête de balayage est essentiel pour que le Hawking Bot puisse balayer son terrain et trouver le chemin le plus long et dégagé devant lui. Les câbles ont besoin de suffisamment d'espace pour s'adapter aux mouvements de la tête; il est donc conseillé de les attacher ensemble comme indiqué sur la photo.

Le Hawking Bot fonctionne mieux avec de gros obstacles et sur une surface plane et lisse. Les tapis sont plus difficiles pour les moteurs et vous devrez peut-être ajuster les paramètres pour ajuster le comportement pour différentes surfaces.

Le Hawking Bot n'est en aucun cas parfait et c'est un prototype qui bénéficiera de nouvelles améliorations. Le code est entièrement commenté et il devrait être facile pour vous de comprendre ce que font les différentes méthodes. Divers bits ont été commentés avec #, si vous supprimez le # devant 'print', le programme en cours vous montrera les différentes lectures et calculs du capteur.

Étape 5: Suggestions d'améliorations, de mises à jour et d'idées futures

Maintenant que vous avez réussi à construire votre robot, vous voulez le faire passer au niveau supérieur. Vous pourriez améliorer la méthode MotionDetector. En ce moment, très souvent, la lecture est erronée. Vous pouvez voir les lectures réelles en décommentant disA et disB (au bas du bloc de méthode). La mauvaise lecture se démarque généralement des autres lectures, vous pouvez donc écrire un algorithme pour empêcher le robot de répondre à une mauvaise lecture.

Peut-être souhaitez-vous prendre le contrôle total du robot et simplement contrôler à distance ses différentes fonctions. Vous pouvez le faire via Bluetooth et écrire un programme Android pour communiquer avec le robot. Cependant, une approche beaucoup plus simple serait de trouver un endroit pour que le capteur infrarouge prenne le contrôle de Hawking Bot.

Et si vous faisiez découvrir au robot son environnement ? Cela pourrait être accompli avec une approche k-plus proche voisin ou éventuellement un réseau de neurones. La brique EV3 a une puissance de traitement limitée bien qu'elle prenne en charge Numpy. Une alternative serait un BrickPi qui vous permettrait d'exécuter une bibliothèque d'IA comme Tensorflow, mais l'intention de ce guide était d'utiliser le kit Lego EV3 MINDSTORMS sans avoir besoin d'acheter de nombreuses pièces supplémentaires coûteuses autres que le capteur à ultrasons.

Cependant, l'approche d'apprentissage par renforcement des k-voisins les plus proches devrait fonctionner sur la brique EV3 et c'est l'algorithme suggéré. Je vous laisse le soin de trouver une implémentation fonctionnelle ou de repérer les problèmes:

Apprentissage par renforcement pour Hawkings Bot

L'idée est que les 7 lectures USS sont codées dans un vecteur et que les 10 derniers coups de tête sont utilisés pour créer un vecteur séquentiel de 70 entrées. Les premières lectures sont incomplètes et seront donc remplies de zéros. Chaque entrée contient la valeur de distance par rapport à l'USS. C'est le vecteur d'état s. Le système permet 1000 entrées. Par la suite, l'entrée la plus ancienne sera remplacée et les entrées d'âge pour chaque paire s-r seront réduites de un.

Le robot ne doit pas s'approcher à moins de 10 cm d'un objet. Cela crée une récompense négative. Pour la simplicité; les bonnes actions sont récompensées par un 1 et les mauvaises par un 0. En fait, cela crée une probabilité de récompense pour chaque combinaison action-état. Nous utiliserons des récompenses à prix réduit et la politique de cupidité epsilon.

Cela crée 3 grands états – table de récompense (s-r) pour les trois actions à droite, tout droit et à gauche – il peut être possible d'avoir des vitesses rapides et lentes pour chaque action. Nous aurions alors 6 actions et 6 tables de recherche s-r.

Chaque fois qu'un nouvel état s est enregistré, il est comparé aux tables, la distance euclidienne (ou une mesure similaire) est utilisée pour trouver le voisin le plus proche. Cela ne sera pas classé mais plutôt un seuil t est défini pour accepter l'état comme très similaire, écraser l'état existant et mettre à jour pour la récompense la plus élevée et effectuer l'action associée a. S'il n'est pas similaire (d>t), entrez une nouvelle paire s-r pour chaque action a. S'il y a une égalité entre les actions pour pour s-r (elles ont toutes la même récompense), choisissez au hasard mais ce n'est pas courant et pourrait être omis.

t devra être déterminé expérimentalement, si t est trop petit, des états similaires seront ignorés et chaque état sera considéré comme unique. Un t trop grand signifie que même des états assez dissemblables sont regroupés, ce qui pourrait affecter la capacité de choisir de bonnes actions. Il peut être possible d'utiliser des méthodes statistiques pour déterminer le meilleur t.

Le tableau ressemble à ceci: No d'entrée – vecteur d'état – récompense pour l'action 1 – récompense pour l'action 2 – récompense pour l'action 3.

Je suppose que la mise en œuvre réelle sera délicate, mais devrait en valoir la peine. Bonne chance!

Conseillé: