Taula de continguts:

Hawking Bot: 5 passos
Hawking Bot: 5 passos

Vídeo: Hawking Bot: 5 passos

Vídeo: Hawking Bot: 5 passos
Vídeo: Hawking's Bot - Tutorial 2024, Juliol
Anonim
Image
Image
Construeix el teu bot Hawking
Construeix el teu bot Hawking

The Hawking Bot és un projecte Lego MINDSTORMS EV3 inspirat en el difunt Stephen Hawking. Stephen Hawking tenia un bon sentit de l’humor, així que estic segur que hauria aprovat aquest projecte. El bot Hawking pot navegar pels obstacles i respondre als moviments i després pronuncia una de les famoses mossegades de so de Stephen Hawking i es mou en la direcció de l'objecte en moviment. Utilitza el sensor d'ultrasons que escaneja el seu entorn amb un moviment de cap ampli.

Pas 1: creeu el vostre bot Hawking

Totes les peces necessàries es troben al conjunt bàsic EV3 Lego MINDSTORMS, a excepció del sensor ultrasònic (els seus ulls) que s’ha de comprar per separat.

Pas 2:

Imatge
Imatge

El codi del Hawking Bot està escrit en python 3. Es pot descarregar un fitxer d'imatge d'arrencada per executar python en un entorn Debian Linux al Hawking Bot des del lloc web ev3dev. El codi per executar el bot Hawking es pot descarregar des d’aquí. Tot el codi es troba dins d’un fitxer de classe, de manera que podeu utilitzar els mètodes existents o fins i tot modificar-los si voleu.

Mireu aquest vídeo amb instruccions detallades sobre com configurar Debian Linux i Python3 al vostre robot. Tot i que és específicament per a una configuració de Mac, encara serà útil per obtenir una comprensió general del procés. Això és un treball en curs. De vegades, el sensor d'ultrasons no és fiable i això requereix un codi més intel·ligent per detectar "valors atípics". M'agradaria veure contribucions d'altres persones per fer el codi més eficient i menys propens a errors.

Pas 3: Feu els vostres propis Hawking Soundbites

D'acord, ara voleu tenir algunes cites famoses o simplement algunes frases senzilles del professor Hawking. Hi ha un munt de vídeos on es pot escoltar parlar i després hi ha les seves conferències, que són un tresor de saviesa i útils mossegades de so.

Necessiteu un programa com Audacity que funcioni en moltes plataformes per seleccionar i retallar els vostres sons preferits.

Deseu el vostre soundbite com a fitxer wav mono com SH6, SH7, … SH11, SH12, etc.

A continuació trobareu algunes mostres que he creat segons el mètode anterior.

Pas 4: consells i trucs

Consells i trucs
Consells i trucs
Consells i trucs
Consells i trucs

El bot Hawking ve amb un mòdul d’autocomprovació per assegurar-se que tots els cables estan connectats i que la bateria és suficient. Es poden produir connexions soltes, que falten o fins i tot danyades. Per tant, aquest mòdul és molt útil. El mètode "checkConnection" només comprova si hi ha una connexió elèctrica. Cal assegurar-se que els motors estan connectats al port correcte.

El moviment del cap de lliscament és essencial perquè el Hawking Bot analitzi el terreny i trobi el camí sense obstacles més llarg que hi ha al davant. Els cables necessiten prou espai per acomodar els moviments del cap; per tant, és aconsellable lligar-los com es mostra a la fotografia.

El bot Hawking funciona millor amb grans obstacles i sobre una superfície plana i llisa. Les catifes són més difícils per als motors i és possible que hagueu d’ajustar la configuració per ajustar el comportament de les diferents superfícies.

El Hawking Bot no és en absolut perfecte i es tracta d’un prototip que es beneficiarà de noves millores. El codi està completament comentat i us ha de ser fàcil esbrinar què fan els diversos mètodes. S'han comentat diversos bits amb #, si elimineu el # davant de "imprimir", el programa en execució us mostrarà les diverses lectures i càlculs del sensor.

Pas 5: millores suggerides, actualitzacions i idees futures

Ara que ja heu construït amb èxit el vostre robot, voleu que passi al següent nivell. Podeu millorar el mètode MotionDetector. Ara mateix, amb tanta freqüència, es fa una lectura equivocada. Podeu veure les lectures reals descomentant disA i disB (a la part inferior del bloc de mètodes). La lectura incorrecta sol destacar d’altres lectures, de manera que podeu escriure un algorisme per evitar que el robot respongui a una lectura incorrecta.

Potser voleu controlar completament el robot i controlar-ne les funcions. Podeu fer-ho mitjançant Bluetooth i escriure un programa Android per comunicar-vos amb el robot. Tanmateix, un enfocament molt més senzill seria trobar un lloc on el sensor d’infrarojos prengués el control de Hawking Bot.

Què passa amb aconseguir que el robot conegui el seu entorn? Això es podria aconseguir amb un enfocament de veí més proper a k o possiblement amb una xarxa neuronal. El maó EV3 té una potència de processament limitada, tot i que admet Numpy. Una alternativa seria un BrickPi que us permetés executar una biblioteca d’IA com Tensorflow, però la intenció d’aquesta guia era utilitzar el kit Lego EV3 MINDSTORMS sense la necessitat de comprar moltes peces addicionals cares que no fossin el sensor d’ultrasons.

Tanmateix, l'enfocament d'aprenentatge de re-infocement dels veïns més propers a k hauria de treballar al maó EV3 i aquest és l'algorisme suggerit. Deixo en mans vostre trobar una implementació que funcioni o detectar qualsevol problema:

Aprenentatge de reforç per a Hawkings Bot

La idea és que les 7 lectures USS es codifiquin en un vector i que els darrers 10 cops de cap s’utilitzin per crear un vector seqüencial de 70 entrades. Les primeres lectures estan incompletes, de manera que s’ompliran de zeros. Cada entrada conté el valor de la distància respecte a l'USS. Aquest és el vector d'estat s. El sistema permet 1000 entrades. A continuació, es substituirà l'entrada més antiga i es reduiran en una les edats per a cada parell s-r.

El robot no ha d’apropar-se a més de 10 cm d’un objecte. Això crea una recompensa negativa. Per simplicitat; les bones accions es premien amb un 1 i les males amb un 0. Efectivament, això crea una probabilitat de recompensa per a cada combinació d'acció-estat. Utilitzarem recompenses amb descompte i política d’avarícia d’epsilon.

Això crea tres grans taules d'estat (s-r) per a les tres accions a la dreta, cap endavant i esquerra - pot ser possible tenir velocitats ràpides i lentes per a cada acció. Aleshores tindríem 6 accions i 6 taules s-r de cerca.

Cada vegada que es registra un nou estat, es compara amb les taules, s'utilitza la distància euclidiana (o mesura similar) per trobar el veí més proper. Això no es classificarà, sinó que es defineix un llindar t per acceptar l'estat com a molt similar, sobreescriure l'estat existent i actualitzar-lo per obtenir la recompensa més alta i dur a terme l'acció associada a. Si no és similar (d> t) introduïu un nou parell s-r per a cada acció a. Si hi ha un empat entre accions per a s-r (totes tenen la mateixa recompensa), trieu a l'atzar, però això no és habitual i es pot ometre.

t haurà de determinar-se experimentalment, si t és massa petit, s’ignoraran estats similars i cada estat es considera únic. Una t massa gran significa que fins i tot estats força diferents es combinen, cosa que podria afectar la capacitat de triar bones accions. Pot ser possible utilitzar mètodes estadístics per determinar la millor t.

La taula té un aspecte semblant a això: entrada sense - vector d'estat - recompensa per l'acció 1 - recompensa per l'acció 2 - recompensa per l'acció 3.

Suposo que la implementació real serà complicada, però hauria de suposar un esforç més gran. Bona sort!

Recomanat: