Inhaltsverzeichnis:

Roomba Scout Explorer - Gunook
Roomba Scout Explorer - Gunook

Video: Roomba Scout Explorer - Gunook

Video: Roomba Scout Explorer - Gunook
Video: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, Juli
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Als eines der am meisten erwarteten und am intensivsten erforschten amerikanischen Projekte sind die Mars-Rover-Projekte zu menschlichen Errungenschaften in der ständig fortschreitenden Produktion von autonomen High-Tech-Systemen geworden, die ausschließlich der Erforschung und Interpretation der Landmassen und Oberflächen des dahinter liegenden roten Planeten dienen die Erde. Im Rahmen eines persönlicheren Projekts als Hommage an die Mars-Missionen war es unser Ziel, einen Roomba-Roboter zu schaffen, der über einen bestimmten Zeitraum autonom agieren und entsprechend auf bestimmte Kriterien in seiner Umgebung reagieren kann.

Was die Einzigartigkeit angeht, haben wir uns darauf konzentriert, ein Diagramm zu erstellen, das jeden Weg zeigt, den der Roboter von seinen Ursprüngen aus nimmt. Darüber hinaus wird der Roboter in der Lage sein, die Anzahl der Objekte in seiner Umgebung im Panoramastil zu zählen.

Schritt 1: Ausrüstung

-Roomba mit ansteckbarer Kamera (mit bekanntem Namen)

-Verbundener Server

-Windows 10 / Mac mit Internetverbindung

-Helle Plattform

-Dunkler Boden

-Alle streunenden Objekte mit monochromatischem Design

Schritt 2: MATLAB-Setup

MATLAB-Setup
MATLAB-Setup

Um Aufgaben und Funktionen für Ihren roomba zu erstellen, benötigen Sie die spezifischen Codes und Toolkits, die die roomba-Befehle enthalten.

Erstellen Sie mit MATLAB 2016a und höher heruntergeladen einen Ordner, der diese Roboterdateien enthält, und fügen Sie die folgende MATLAB-Datei unten in den Ordner ein und führen Sie sie aus, um die verbleibenden erforderlichen roomba-Dateien zu installieren.

Klicken Sie anschließend mit der rechten Maustaste in das Fenster "Aktueller Ordner", fahren Sie mit der Maus über "Pfad hinzufügen" und klicken Sie auf "Aktueller Ordner". Nun sollte ein Pfad eingerichtet werden, so dass jede dieser Dateien verwendet wird, um den roomba zu aktivieren.

Verwenden Sie nun den folgenden Befehl im Befehlsfenster, um den roomba einzurichten:

r=roomba(#).

Das Symbol # ist die 'Nummer' des angegebenen Roomba; Wenn Sie jedoch nur einen Simulator des Roomba wünschen, geben Sie einfach den folgenden Befehl ein:

r=roomba(0).

Die Simulation empfiehlt sich zum Testen von Bewegungsmustern.

Wenn Sie neugierig sind, welche Befehle der Roomba ausführen kann, geben Sie Folgendes in das Befehlsfenster ein:

doc roomba.

Weitere Informationen finden Sie auf der folgenden Website:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Schritt 3: Funktion: Bewegung

Funktion: Bewegung
Funktion: Bewegung
Funktion: Bewegung
Funktion: Bewegung

In Bezug auf Bewegung sollte sich der roomba für eine in den Eingaben angegebene Zeit automatisch bewegen. Das Ziel der Bewegung des Roboters ist es, richtig zu reagieren, wenn sich seine Sensoren (Stoßfänger, leichte Stoßfänger und Klippensensoren) bei Vorhandensein verschiedener Hindernisse ändern. Dieser Teil würde als Basis für alle Befehle des roomba dienen, da dem Code später weitere Funktionen hinzugefügt werden. Einige Angaben waren erforderlich:

-Um Schaden zu reduzieren, muss der Roboter die Geschwindigkeit auf eine niedrigere Geschwindigkeit reduzieren.

-Bei Annäherung an eine Klippe oder Wand bewegt sich der Roboter rückwärts und ändert seinen Winkel je nach Auftreffpunkt

-Nach einiger Zeit der Fahrt wird der Roomba irgendwann anhalten und Bilder von der Umgebung aufnehmen

Beachten Sie, dass die verwendeten Werte sich auf den Simulator bezogen; Werte wie die Drehwinkel, Drehgeschwindigkeiten und Voreinstellungen des Robotersensors sollten geändert werden, wenn der tatsächliche Roboter verwendet wird, um Stabilität und Berücksichtigung von Gerätefehlern zu gewährleisten.

Schritt 4: Funktion: Bildverarbeitung

Funktion: Bildverarbeitung
Funktion: Bildverarbeitung

Auf Wunsch wurden wir beauftragt, die Daten eines Bildes (oder mehrerer Bilder), das von der Kamera des Roboters empfangen wurde, zu ändern, und wir beschlossen, den roomba die Anzahl der Objekte, die er im Bild sieht, "zählen" zu lassen.

Wir folgten der Technik, mit MATLAB Grenzen um geschwärzte Objekte ziehen zu lassen, die sich von einem weißen Hintergrund abheben. Diese Funktion ist jedoch in einem offenen Bereich anfällig für Schwierigkeiten, da die verschiedenen Formen und Farben von der Kamera wahrgenommen werden, was zu ungewöhnlich hohen Zählungen führt.

Beachten Sie, dass diese Funktion im Simulator nicht funktionieren kann, da keine Kamera bereitgestellt wird; wenn es versucht wird, tritt ein Fehler auf, der erklärt, dass nur eine (:,:, 3)-Matrix verwendet werden kann.

Schritt 5: Funktion: Zuordnung

Funktion: Zuordnung
Funktion: Zuordnung
Funktion: Zuordnung
Funktion: Zuordnung
Funktion: Zuordnung
Funktion: Zuordnung
Funktion: Zuordnung
Funktion: Zuordnung

Eine zusätzliche Funktion, die der Roboter haben sollte, war die Kartierung seiner Standorte, während er direkt mit der Umgebung interagiert. Daher versucht der folgende Code, eine Karte zu öffnen und ein Koordinatensystem einzurichten, das jeden Ort detailliert beschreibt, an dem die Stoßfängersensoren des Roboters gedrückt werden. Dies erwies sich als der längste Teil der drei Teile, die einzeln getestet wurden, aber es erwies sich als viel einfacher, wenn er auf das endgültige Skript angewendet wurde.

Um die Laufzeit der Funktion zu begrenzen, wurde zu Testzwecken die Grenze n<20 in der while-Schleife verwendet.

Beachten Sie jedoch, dass aufgrund der Komplexität des Codes mehr Fehler auftreten, wenn das Codesegment über einen längeren Zeitraum ausgeführt wird. aus früheren Tests scheinen zehn Unebenheiten die Anzahl der Punkte zu sein, bevor signifikante Fehler auftreten.

Schritt 6: Nebeneinanderstellung

Nebeneinander
Nebeneinander
Nebeneinander
Nebeneinander
Nebeneinander
Nebeneinander
Nebeneinander
Nebeneinander

Da all dies in einer einzigen Datei abgelegt wird, haben wir eine Funktion erstellt, die jeden der beiden vorherigen Schritte als Unterfunktionen verwendet. Ein endgültiger Entwurf wurde mit der folgenden Modifikation der Redux-Funktion namens "recon" erstellt. Um Verwirrung für MATLAB zu vermeiden, wurden die Skripte "counter" und "rombplot3" in eingebettete Funktionen "CountR" bzw. "plotr" umbenannt.

In der finalen Version mussten im Gegensatz zu den vorherigen Skripten einige Änderungen vorgenommen werden:

-Der Ursprung wird immer mit einem roten Kreis markiert

-Jedes Mal, wenn der Roomba von seinen Stoßstangen stoppt, wird die Position mit einem schwarzen Kreis markiert

- Jedes Mal, wenn der Roomba von seinen Klippensensoren stoppt, wird die Position mit einem blauen Kreis markiert

-Jedes Mal, wenn der Roomba die Untersuchung der Umgebung beendet, wird der Standort mit einem grünen Kreis markiert

-Bilder werden so geändert, dass der obere Teil entfernt wird, da der Zeitstempel möglicherweise die Ergebnisse beeinträchtigt

-Grenzen werden aufgrund der relativ hohen Erwerbszahlen nicht als Objekt gezählt

- Mehrere Variablen wurden geändert, um Verwirrung zu vermeiden, verwenden Sie die obigen Versionen als Referenz.

Schritt 7: Testen

Testen
Testen

Tests für jede einzelne Komponente erwiesen sich zeitweise als recht gemischt, weshalb Anpassungen an bestimmten voreingestellten Werten notwendig waren. Der thematische Hintergrund, auf dem wir die Fähigkeiten des Roboters in einem geschlossenen Bereich testen wollten, war einfach ein Whiteboard, das auf einem viel dunkleren Boden verlegt wurde. Sie können die Objekte in der Umgebung verstreuen; lassen sie als Objekte fungieren, an die man stoßen kann, oder als entfernte Objekte aus dem Bewegungsbereich des Roboters.

Nachdem er seine regulierte Zeit und Basisgeschwindigkeit eingestellt hatte, zeigte der Roomba ein angemessenes Bewegungsverhalten, stoppte und entfernte sich von jeder "Klippe" oder jedem Objekt, auf das er rammt, sowie verlangsamte es, wenn es etwas in der Nähe entdeckte. Nach Erreichen der gewünschten Verfahrstrecke von drei Metern würde der Roboter damit fortfahren, den Bereich zu stoppen und zu bewerten, wobei er Bilder von jedem 45-Grad-Bereich aufnahm, und weiterfahren, wenn es die Zeit erlaubt. Seine Windungen erschienen jedoch größer als angefordert, was bedeutete, dass die Koordinatendaten unkenntlich gemacht würden.

Bei jedem Anhalten wurde ein neuer Punkt im ungefähren Bereich seiner Position im Koordinatensystem platziert; Es sei jedoch darauf hingewiesen, dass die Anfangsrichtung, in der der Roomba startet, eine entscheidende Rolle bei der Gestaltung der Karte spielt. Wenn eine Kompassfunktion implementiert werden könnte, wäre sie ein wichtiger Bestandteil des Kartendesigns gewesen.

Die tatsächliche Zeit, die die Funktion benötigt, um vollständig ausgeführt zu werden, überschreitet immer die angeforderte Zeit, was sinnvoll ist, wenn man bedenkt, dass sie nicht mitten in einer ihrer Wiederherstellungen anhalten kann. Leider hat diese Version der Bildzählung ihre Probleme, insbesondere in Bereichen, die entweder überwiegend monochromatisch sind oder in der Helligkeit variieren; weil es versucht, zwischen zwei Schattierungen zu unterscheiden, neigt es dazu, Objekte wahrzunehmen, die nicht erwünscht sind, und zählt daher immer zu wahnsinnig hohen Zahlen.

Schritt 8: Fazit

Abschluss
Abschluss

Während diese Aufgabe eine sehr abenteuerliche und kreative Arbeit war, die Erleichterung brachte, konnte ich aus meiner persönlichen Beobachtung eine Vielzahl von Fehlern erkennen, die sowohl im Code als auch im Verhalten des Roboters problematisch sein könnten.

Die Beschränkung der Verwendung der Zeitangabe in der while-Schleife führt dazu, dass die Gesamtzeit länger als gewünscht ist; der prozess der panoramatechnik und der bildbearbeitung könnte tatsächlich länger dauern, wenn sie auf einem langsamen computer ausgeführt oder vorher nicht verwendet wurde. Zudem verhielt sich der in unserer Präsentation verwendete Roomba im Vergleich zum Simulator mit einer Vielzahl von Fehlern, insbesondere in der Bewegung. Der verwendete Roboter neigte leider dazu, sich beim Geradeausfahren leicht nach links zu neigen und größere Kurven als gewünscht zu machen. Aus diesem und vielen anderen Gründen wird dringend empfohlen, zum Ausgleich dieser Fehler Änderungen der Drehwinkel vorzunehmen.

Nichtsdestotrotz ist dies ein langes, aber intellektuell anregendes Projekt, das als interessante Lernerfahrung für die Anwendung von Codes und Befehlen diente, um das Verhalten eines echten Roboters direkt zu beeinflussen.

Empfohlen: