Inhoudsopgave:

Hawking Bot: 5 stappen
Hawking Bot: 5 stappen

Video: Hawking Bot: 5 stappen

Video: Hawking Bot: 5 stappen
Video: Stephen Hawking Warns Against AI 2024, November
Anonim
Image
Image
Bouw je Hawking-bot
Bouw je Hawking-bot

De Hawking Bot is een Lego MINDSTORMS EV3-project geïnspireerd door wijlen Stephen Hawking. Stephen Hawking had een goed gevoel voor humor, dus ik weet zeker dat hij dit project zou hebben goedgekeurd. De Hawking Bot kan om obstakels heen navigeren en reageert op bewegingen, laat een van Stephen Hawkings beroemde soundbites horen en beweegt zich in de richting van het bewegende object. Het maakt gebruik van de ultrasone sensor die zijn omgeving scant met een vegende hoofdbeweging.

Stap 1: Bouw je Hawking Bot

Alle benodigde onderdelen zitten in de basisset EV3 Lego MINDSTORMS, met uitzondering van de ultrasone sensor (zijn ogen) die apart moet worden aangeschaft.

Stap 2:

Afbeelding
Afbeelding

De code voor de Hawking Bot is allemaal geschreven in python 3. Een opstartbaar afbeeldingsbestand om python uit te voeren in een Debian Linux-omgeving op de Hawking Bot kan worden gedownload van de ev3dev-website. De code om de Hawking Bot uit te voeren kan hier worden gedownload. Alle code bevindt zich in een klassenbestand, zodat u de bestaande methoden kunt gebruiken of zelfs kunt wijzigen als u dat wilt.

Bekijk deze video met gedetailleerde instructies over het instellen van Debian Linux en Python3 op uw robot. Hoewel dit specifiek voor een Mac-configuratie is, is het toch nuttig om een algemeen begrip van het proces te krijgen. Dit is werk in uitvoering. De ultrasone sensor is soms onbetrouwbaar en vereist slimmere code om 'uitbijters' te detecteren. Ik zou graag bijdragen van anderen zien om de code efficiënter en minder foutgevoelig te maken.

Stap 3: Maak je eigen Hawking-soundbites

Oké, nu wil je een paar beroemde citaten of een paar simpele uitspraken van Prof Hawking. Er zijn talloze video's waar je hem kunt horen praten en dan zijn er zijn lezingen die een schat aan wijsheid en nuttige soundbites zijn.

Je hebt een programma als Audacity nodig dat op veel platforms werkt om je favoriete soundbites te selecteren en uit te schakelen.

Sla je soundbite op als een wav mono-bestand als SH6, SH7, …SH11, SH12 enzovoort.

Hieronder vindt u een aantal voorbeelden die ik heb gemaakt volgens bovenstaande methode.

Stap 4: Tips en trucs

Tips en trucs
Tips en trucs
Tips en trucs
Tips en trucs

De Hawking Bot wordt geleverd met een zelfcontrolemodule om ervoor te zorgen dat alle kabels zijn aangesloten en de batterij voldoende is. Losse, ontbrekende of zelfs beschadigde verbindingen kunnen gemakkelijk ontstaan. Deze module is dus erg handig. De 'checkConnection'-methode controleert alleen of er een elektrische aansluiting is. U moet er nog steeds voor zorgen dat de motoren op de juiste poort zijn aangesloten.

De swipende hoofdbeweging is essentieel voor de Hawking Bot om het terrein af te tasten en het langste onbelemmerde pad voor je te vinden. De kabels hebben voldoende ruimte nodig om hoofdbewegingen op te vangen; het is daarom aan te raden om ze samen te binden zoals op de foto te zien is.

De Hawking Bot werkt het beste met grote obstakels en op een vlakke en gladde ondergrond. Tapijten vormen een grotere uitdaging voor de motoren en het kan zijn dat u de instellingen moet aanpassen om het gedrag voor verschillende oppervlakken aan te passen.

De Hawking Bot is zeker niet perfect en dit is een prototype dat zal profiteren van verdere verbeteringen. De code is volledig becommentarieerd en het zou voor u gemakkelijk moeten zijn om uit te zoeken wat de verschillende methoden doen. Verschillende bits zijn becommentarieerd met #, als je de # voor 'print' verwijdert, zal het lopende programma je de verschillende sensormetingen en berekeningen laten zien.

Stap 5: Voorgestelde verbeteringen, updates en toekomstige ideeën

Nu je je robot met succes hebt gebouwd, wil je hem naar een hoger niveau tillen. Je zou de MotionDetector-methode kunnen verbeteren. Op dit moment krijgt het zo vaak een verkeerde lezing. U kunt de werkelijke meetwaarden zien door disA en disB te verwijderen (onder aan het methodeblok). De verkeerde meting onderscheidt zich meestal van andere metingen, dus u kunt een algoritme schrijven om te voorkomen dat de robot reageert op een verkeerde meting.

Misschien wilt u de robot volledig onder controle krijgen en de verschillende functies op afstand bedienen. Je zou dit via Bluetooth kunnen doen en een Android-programma schrijven om met de robot te communiceren. Een veel eenvoudigere benadering zou echter zijn om een plaats te vinden voor de infraroodsensor om de controle over de Hawking Bot over te nemen.

Hoe zit het met het krijgen van de robot om te leren over zijn omgeving? Dit kan worden bereikt met een k-nearest-buurbenadering of mogelijk een neuraal netwerk. De EV3-steen heeft een beperkte verwerkingskracht, hoewel deze Numpy wel ondersteunt. Een alternatief zou een BrickPi zijn waarmee je een AI-bibliotheek zoals Tensorflow kunt gebruiken, maar de bedoeling van deze gids was om de Lego EV3 MINDSTORMS-kit te gebruiken zonder dat je veel dure extra onderdelen anders dan de ultrasone sensor hoeft te kopen.

De re-infocement-leerbenadering van k-nearest buren zou echter moeten werken op de EV3-steen en dit is het voorgestelde algoritme. Ik laat het aan jou over om een werkende implementatie te vinden of eventuele problemen op te sporen:

Versterking leren voor Hawkings Bot

Het idee is dat de 7 USS-metingen worden gecodeerd in een vector en de laatste 10 head-swoops worden gebruikt om een sequentiële vector van 70 items te creëren. De eerste aflezingen zijn onvolledig en worden dus gevuld met nullen. Elke invoer bevat de afstandswaarde van de USS. Dit is de toestandsvector s. Het systeem laat 1000 inzendingen toe. Daarna wordt de oudste inzending vervangen en worden de leeftijdsinschrijvingen voor elk s-r-paar met één verminderd.

De bot mag niet dichter dan 10 cm bij een object komen. Dit zorgt voor een negatieve beloning. Voor de eenvoud; goede acties worden beloond met een 1 en slechte met een 0. Dit creëert in feite een waarschijnlijkheid voor de beloning voor elke actie-toestandcombinatie. We zullen kortingsbeloningen en epsilon hebzuchtig beleid gebruiken.

Dit creëert 3 grote status-beloningstabel (s-r) voor alle drie de acties rechts, rechtdoor en links - het kan mogelijk zijn om voor elke actie hoge en lage snelheden te hebben. We zouden dan 6 acties en 6 opzoektabellen hebben.

Elke keer dat een nieuwe toestand s wordt geregistreerd, wordt deze vergeleken met de tabellen, de Euclidische afstand (of vergelijkbare maat) wordt gebruikt om de dichtstbijzijnde buur te vinden. Dit wordt niet gerangschikt, maar er wordt eerder een drempel t ingesteld om de status als zeer vergelijkbaar te accepteren, de bestaande status te overschrijven en bij te werken voor de hoogste beloning en de bijbehorende actie a uit te voeren. Als het niet vergelijkbaar is (d>t), voer dan een nieuw s-r-paar in voor elke actie a. Als er een verband is tussen acties voor voor s-r (ze hebben allemaal dezelfde beloning), kies dan willekeurig, maar dit is niet gebruikelijk en kan worden weggelaten.

t zal experimenteel moeten worden bepaald, als t te klein is, worden vergelijkbare toestanden genegeerd en wordt elke toestand als uniek beschouwd. Een te grote t betekent dat zelfs nogal ongelijksoortige toestanden op één hoop worden gegooid, wat van invloed kan zijn op het vermogen om goede acties te kiezen. Het kan mogelijk zijn om statistische methoden te gebruiken om de beste t te bepalen.

De tabel ziet er ongeveer zo uit: Invoer nr. Toestandsvector beloning voor actie 1 beloning voor actie 2 beloning voor actie 3.

Ik denk dat de daadwerkelijke implementatie lastig zal zijn, maar het zou de moeite waard moeten zijn. Veel geluk!

Aanbevolen: