Inhaltsverzeichnis:

Hawking-Bot - Gunook
Hawking-Bot - Gunook

Video: Hawking-Bot - Gunook

Video: Hawking-Bot - Gunook
Video: Hawking's Bot - Tutorial 2024, November
Anonim
Image
Image
Baue deinen Hawking Bot
Baue deinen Hawking Bot

Der Hawking Bot ist ein Lego MINDSTORMS EV3-Projekt, das vom verstorbenen Stephen Hawking inspiriert wurde. Stephen Hawking hatte einen guten Sinn für Humor, daher bin ich mir sicher, dass er dieses Projekt gutgeheißen hätte. Der Hawking Bot kann sich um Hindernisse herum navigieren und auf Bewegungen reagieren und dann einen von Stephen Hawkings berühmten Soundbites von sich geben und sich in Richtung des sich bewegenden Objekts bewegen. Es nutzt den Ultraschallsensor, der mit einer schwungvollen Kopfbewegung seine Umgebung abtastet.

Schritt 1: Bauen Sie Ihren Hawking Bot

Alle benötigten Teile sind im Basisset von EV3 Lego MINDSTORMS enthalten, mit Ausnahme des Ultraschallsensors (seine Augen), der separat erworben werden muss.

Schritt 2:

Bild
Bild

Der Code für den Hawking Bot ist vollständig in Python 3 geschrieben. Eine bootfähige Image-Datei zum Ausführen von Python in einer Debian-Linux-Umgebung auf dem Hawking Bot kann von der ev3dev-Website heruntergeladen werden. Der Code zum Ausführen des Hawking Bot kann hier heruntergeladen werden. Der gesamte Code ist in einer Klassendatei enthalten, sodass Sie die vorhandenen Methoden verwenden oder sogar ändern können, wenn Sie möchten.

Bitte sehen Sie sich dieses Video mit detaillierten Anweisungen zum Einrichten von Debian Linux und Python3 auf Ihrem Roboter an. Obwohl dies speziell für ein Mac-Setup gedacht ist, ist es dennoch nützlich, ein allgemeines Verständnis des Prozesses zu erhalten. Dies ist in Arbeit. Der Ultraschallsensor ist manchmal unzuverlässig und dies erfordert einen intelligenteren Code, um "Ausreißer" zu erkennen. Ich würde gerne Beiträge von anderen sehen, um den Code effizienter und weniger fehleranfällig zu machen.

Schritt 3: Machen Sie Ihre eigenen Hawking Soundbites

OK, jetzt möchten Sie einige berühmte Zitate oder nur einige einfache Äußerungen von Prof. Hawking haben. Es gibt jede Menge Videos, in denen man ihn reden hören kann und dann gibt es seine Vorträge, die eine Fundgrube an Weisheit und nützlichen Soundbits sind.

Sie benötigen ein Programm wie Audacity, das auf vielen Plattformen funktioniert, um Ihre Lieblings-Soundbites auszuwählen und auszuschneiden.

Speichern Sie Ihren Soundbite als WAV-Mono-Datei als SH6, SH7, …SH11, SH12 und so weiter.

Nachfolgend finden Sie einige Beispiele, die ich nach obiger Methode erstellt habe.

Schritt 4: Tipps und Tricks

Tipps und Tricks
Tipps und Tricks
Tipps und Tricks
Tipps und Tricks

Der Hawking Bot wird mit einem Selbsttestmodul geliefert, um sicherzustellen, dass alle Kabel angeschlossen sind und der Akku ausreichend ist. Lose, fehlende oder sogar beschädigte Verbindungen können leicht auftreten. Daher ist dieses Modul sehr nützlich. Die Methode 'checkConnection' prüft nur, ob eine elektrische Verbindung besteht. Sie müssen dennoch sicherstellen, dass die Motoren an den richtigen Port angeschlossen sind.

Die Wischbewegung des Kopfes ist für den Hawking Bot unerlässlich, um sein Gelände zu scannen und den längsten ungehinderten Weg vor Ihnen zu finden. Die Kabel brauchen genug Platz, um Kopfbewegungen aufzunehmen; Es ist daher ratsam, sie wie auf dem Foto gezeigt zusammenzubinden.

Der Hawking Bot funktioniert am besten bei großen Hindernissen und auf einer ebenen und glatten Oberfläche. Teppiche stellen eine größere Herausforderung für die Motoren dar und Sie müssen möglicherweise die Einstellungen anpassen, um das Verhalten für verschiedene Oberflächen anzupassen.

Der Hawking Bot ist keineswegs perfekt und dies ist ein Prototyp, der von weiteren Verbesserungen profitieren wird. Der Code ist vollständig kommentiert und es sollte für Sie einfach sein, herauszufinden, was die verschiedenen Methoden tun. Verschiedene Bits wurden mit # auskommentiert, wenn Sie das # vor 'print' entfernen, zeigt Ihnen das laufende Programm die verschiedenen Sensorwerte und Berechnungen an.

Schritt 5: Verbesserungsvorschläge, Updates und zukünftige Ideen

Nachdem Sie Ihren Roboter nun erfolgreich gebaut haben, möchten Sie ihn auf die nächste Stufe bringen. Sie könnten die MotionDetector-Methode verbessern. Im Moment wird es immer wieder falsch gelesen. Sie können die tatsächlichen Messwerte sehen, indem Sie disA und disB (am unteren Rand des Methodenblocks) auskommentieren. Der falsche Messwert hebt sich normalerweise von anderen Messwerten ab, sodass Sie einen Algorithmus schreiben können, der verhindert, dass der Roboter auf einen falschen Messwert reagiert.

Vielleicht möchten Sie die volle Kontrolle über den Roboter übernehmen und seine verschiedenen Funktionen einfach fernsteuern. Sie könnten dies über Bluetooth tun und ein Android-Programm schreiben, um mit dem Roboter zu kommunizieren. Ein viel einfacherer Ansatz wäre jedoch, einen Platz für den Infrarotsensor zu finden, um die Kontrolle über Hawking Bot zu übernehmen.

Wie wäre es, wenn der Roboter etwas über seine Umgebung lernt? Dies könnte mit einem k-nächsten Nachbarn-Ansatz oder möglicherweise einem neuronalen Netzwerk erreicht werden. Der EV3-Stein hat eine begrenzte Rechenleistung, obwohl er Numpy unterstützt. Eine Alternative wäre ein BrickPi, mit dem Sie eine KI-Bibliothek wie Tensorflow ausführen können, aber die Absicht dieses Handbuchs war es, das Lego EV3 MINDSTORMS-Kit zu verwenden, ohne dass viele teure zusätzliche Teile außer dem Ultraschallsensor gekauft werden müssen.

Der Ansatz zur Verstärkung des k-nächsten Nachbarn sollte jedoch mit dem EV3-Stein funktionieren, und dies ist der vorgeschlagene Algorithmus. Ich überlasse es Ihnen, eine funktionierende Implementierung zu finden oder Probleme zu erkennen:

Verstärkungslernen für Hawkings Bot

Die Idee ist, dass die 7 USS-Messwerte in einen Vektor kodiert werden und die letzten 10 Kopfbewegungen verwendet werden, um einen sequentiellen Vektor von 70 Einträgen zu erstellen. Die ersten Messwerte sind unvollständig und werden daher mit Nullen aufgefüllt. Jeder Eintrag enthält den Distanzwert vom USS. Dies ist der Zustandsvektor s. Das System erlaubt 1000 Einträge. Danach wird der älteste Eintrag ersetzt und die Alterseinträge für jedes s-r-Paar werden um eins reduziert.

Der Bot darf einem Objekt nicht näher als 10 cm kommen. Dadurch entsteht eine negative Belohnung. Der Einfachheit halber; gute Aktionen werden mit einer 1 und schlechte mit 0 belohnt. Dies erzeugt effektiv eine Wahrscheinlichkeit für die Belohnung für jede Aktions-Zustands-Kombination. Wir werden ermäßigte Belohnungen und die gierige Politik von Epsilon verwenden.

Dadurch werden 3 große Statustabellen erstellt – Belohnungstabelle (s-r) für alle drei Aktionen rechts, geradeaus und links – es kann möglich sein, für jede Aktion schnelle und langsame Geschwindigkeiten zu haben. Wir hätten dann 6 Aktionen und 6 Nachschlage-s-r-Tabellen.

Jedes Mal, wenn ein neuer Zustand s aufgezeichnet wird, wird dieser mit den Tabellen verglichen. Der euklidische Abstand (oder ein ähnliches Maß) wird verwendet, um den nächsten Nachbarn zu finden. Dieser wird nicht gerankt, sondern es wird ein Schwellenwert t gesetzt, um den Zustand als sehr ähnlich zu akzeptieren, den bestehenden Zustand zu überschreiben und für die höchste Belohnung zu aktualisieren und die zugehörige Aktion a auszuführen. Wenn es nicht ähnlich ist (d>t), geben Sie für jede Aktion a ein neues s-r-Paar ein. Wenn es einen Gleichstand zwischen den Aktionen für s-r gibt (sie haben alle die gleiche Belohnung), wählen Sie zufällig, aber dies ist nicht üblich und könnte weggelassen werden.

t muss experimentell bestimmt werden, wenn t zu klein ist, werden ähnliche Zustände ignoriert und jeder Zustand als einzigartig angesehen. Zu groß bedeutet, dass auch eher unterschiedliche Zustände in einen Topf geworfen werden, was die Fähigkeit, gute Handlungen zu wählen, beeinträchtigen könnte. Es kann möglich sein, statistische Methoden zu verwenden, um das beste t zu bestimmen.

Die Tabelle sieht ungefähr so aus: Eintrag Nr. – Zustandsvektor – Belohnung für Aktion 1 – Belohnung für Aktion 2 – Belohnung für Aktion 3.

Ich denke, die tatsächliche Implementierung wird schwierig sein, aber der Aufwand sollte sich lohnen. Viel Glück!