Inhaltsverzeichnis:

Roomba Parking Pal - Gunook
Roomba Parking Pal - Gunook

Video: Roomba Parking Pal - Gunook

Video: Roomba Parking Pal - Gunook
Video: iRobot Roomba Returns Back To The Recharge Docking Station On Its Own. 560 ***64 2024, Juli
Anonim
Roomba Parking Pal
Roomba Parking Pal

Dieses Projekt verwendet einen programmierbaren iRobot Create Roomba, MATLAB r2018a und MATLAB Mobile. Unter Verwendung dieser drei Medien und unserer Kenntnisse der Codierung haben wir den iRobot Create so programmiert, dass er Farben interpretiert und integrierte Sensoren zur Ausführung von Aufgaben verwendet. Dieses Projekt hängt von der Raspberry Pi- und MATLAB-Kommunikation ab, um diese Aufgaben auszuführen.

Schritt 1: Materialien

Materialien
Materialien
Materialien
Materialien

1. iRobot Roboter erstellen

2. MATLAB r2018a

3. Himbeer-Pi

4. Kameramodul

5. 3D-gedruckter Kamerastabilisatorständer

6. Smartphone mit installiertem MATLAB Mobile

7. Laptop/Computer mit installiertem MATLAB

Schritt 2: Verbindung

In diesem Schritt geht es darum, den Raspberry Pi mit dem Roboter zu verbinden, zweitens den Roboter mit Ihrem Computer zu verbinden und das Smartphone mit dem Computer zu verbinden.

Der einfachste Teil dieses Prozesses ist das Anschließen des Raspberry Pi an Ihren Roboter, da der Raspberry Pi an der Oberseite des Roboters montiert ist. Es gibt ein Kabel vom Roboter, das Sie nur an der Seite des Raspberry Pi anschließen müssen.

Der nächste Schritt besteht darin, den Roboter mit Ihrem Computer zu verbinden, damit Sie Befehle ausführen können, die der Roboter ausführen soll. Als erstes müssen Sie Ihren Computer mit dem drahtlosen Netzwerk verbinden, das Ihr Roomba erstellt. Nun wird empfohlen, dass Sie das Set Path Icon in MATLAB verwenden, um den Pfad festzulegen, damit Sie die Funktionen in der Roomba-Toolbox von MATLAB verwenden können. Jedes Mal, wenn Sie mit dem Roboter beginnen und beenden, müssen Sie den Roboter mit einem "Zwei-Finger-Salute" hart zurücksetzen, was bedeutet, dass Sie die Dock- und Spot-Tasten zehn Sekunden lang gedrückt halten, bis das Licht erlischt und das Loslassen anzeigt. Sie waren mit diesem Hard-Reset erfolgreich, wenn Sie hören, wie der Roboter eine kurze Tonleiter spielt. Als nächstes müssen Sie eine Verbindung zum Roomba herstellen, indem Sie eine Codezeile wie diese "r=roomba(x)" verwenden, wobei 'x' die Nummer ist, die dem Roboter zugewiesen ist, den Sie haben.

Schließlich müssen Sie MATLAB mobile auf jedes mobile Gerät herunterladen, das Sie für dieses Projekt verwenden, und diese Anwendung ist sowohl auf Android- als auch auf Apple-Geräten verfügbar. Sobald die Anwendung installiert ist, müssen Sie sich mit Ihren Zugangsdaten anmelden. Dann müssen Sie dieses Gerät mit Ihrem Computer verbinden, indem Sie die Registerkarte "Mehr" verwenden -> klicken Sie dann auf "Einstellungen" -> klicken Sie dann auf "Computer hinzufügen" Dies sollte den in den Bildern oben gezeigten Bildschirm anzeigen Der nächste Schritt, den Sie ausführen müssen, besteht darin, die angeforderten Informationen einfach anzuschließen und zu tuckern. Sobald Sie erfolgreich verbunden sind, können Sie Funktionen aufrufen, die Sie auf Ihrem Computer auf Ihrem Telefon definieren, um Ihren Roboter zu steuern.

Schritt 3: Logisches Erstellen eines MATLAB-Codes zur Verwendung von Sensoren

Logisches Erstellen eines MATLAB-Codes zur Verwendung von Sensoren
Logisches Erstellen eines MATLAB-Codes zur Verwendung von Sensoren

Der Code ist am einfachsten zu erstellen, wenn sich ein Großteil davon in einer while-Schleife befindet, sodass der Roomba die gültigen Werte, die er betrachtet, ständig aktualisieren kann. Wenn ein Fehler auftritt, zeigt MATLAB einen Fehler an und wo er im Code vorkommt, was die Fehlerbehebung relativ einfach macht.

Dieser Code wurde in r2018a MATLAB entwickelt und verwendet die Standard-Toolboxen, die iRobot Create-Toolbox sowie die mobile MATLAB-Toolbox. Der in diesem Beispiel verwendete Roomba wird mit 26 bezeichnet, und r=roomba(26) muss nur einmal ausgeführt werden, um vollständig mit dem Roomba zu kommunizieren.

Code:

Funktion Parkassistent(x)wenn x==1

r=roomba(26) % verbindet sich mit roomba

während wahr

r.setDriveVelocity(.05,.05) % setzt roomba auf eine langsamere Fahrgeschwindigkeit

Bump=r.getBumpers % holt die Daten von den Bump-Sensoren

cliff=r.getCliffSensors % holt die Daten von den Cliff-Sensoren

light=r.getLightBumpers % ruft die Daten der Lichtstoßsensoren ab

img=r.getImage;% liest die Kamera vom Roboter aus

red_mean = mean(mean(img(:,:, 1))) % liest die durchschnittliche Anzahl roter Pixel

green_mean = mean(mean(img(:,:, 2))) % liest die durchschnittliche Anzahl grüner Pixel

blue_mean = mean(mean(img(:,:, 3))) % liest die durchschnittliche Anzahl blauer Pixel

if Bump.front == 1 % liest die vorderen Stoßsensoren

r.stop %stops roomba

msgbox('Path Obscured!', 'Parking Assistant Message') %zeigt eine Meldung an, dass der Pfad verdeckt ist break % beendet die Schleife

elseif grün_mean >150

r.stop %stops roomba

cont = questdlg('Continue?', 'Path Completed') %zeigt eine Fragebox mit der Bitte um fortzufahren

if Fortsetzung == 'Ja'

Parkassistent(1) %startet den Code neu

anders

Ende

break % beendet die Schleife

elseif red_mean > 140

r.turnAngle(45) %dreht den Roomba um 45 Grad

r.timeStart %startet einen Zeitzähler

während wahr

r.setDriveVelocity(.05,.05) % setzt Geschwindigkeit des Raumba

time=r.timeGet %weist die Zeit einer Variablen zu

Bump=r.getBumpers % holt die Daten von den Bump-Sensoren

cliff=r.getCliffSensors % holt die Daten von den Cliff-Sensoren

light=r.getLightBumpers % ruft die Daten der Lichtstoßsensoren ab

img=r.getImage;% liest die Kamera vom Roboter aus

red_mean = mean(mean(img(:,:, 1))) % liest die durchschnittliche Anzahl roter Pixel

green_mean = mean(mean(img(:,:, 2))) % liest die durchschnittliche Anzahl grüner Pixel

blue_mean = mean(mean(img(:,:, 3))) % liest die durchschnittliche Anzahl blauer Pixel

wenn blue_mean > 120

r.moveDistance(-0.01) %bewegt den Roomba um eine eingestellte Distanz rückwärts songPlay(r, 'T400, C, D, E, F, G, A, B, C^', 'true') % spielt eine ansteigende Tonleiter

msgbox('Water Found!', 'Parking Assistant Message') % zeigt eine Meldung an, dass Wasser gefunden wurde r.turnAngle(-80) %dreht den Raum um 80 Grad

break % beendet Stromschleife

elseif light.rightFront > 25 || light.leftFront > 25 % liest leichte Stoßsensoren

r.moveDistance(-0.01) % bewegt den roomba um eine eingestellte Distanz nach hinten

r.turnAngle(-35) % dreht den Roomba um 35 Grad

Break %endet die aktuelle Schleife

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 %liest beide Klippensensoren

r.moveDistance(-0.1) % verschiebt roomba um eine eingestellte Distanz nach hinten

r.turnAngle(-80) %dreht den Raum um 80 Grad

break % beendet Stromschleife

Sonst Zeit >= 3

r.stop %stops roomba

contin=questdlg('Station frei, weiter?', 'Parkassistent Nachricht') %fragt, ob der Roomba weiterfahren soll if contin == 'Ja'

r.turnAngle(-90) % dreht den Roomba um 90 Grad

Parkassistent(1) %startet die Funktion neu

anders

r.stop % stoppt den Roomba

Ende

anders

Ende

Ende

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 %liest beide Klippensensoren

r.moveDistance(-0.1) %bewegt roomba um eine eingestellte Distanz nach hinten

r.turnAngle(-90) %dreht den Raum um 90 Grad

elseif cliff.rightFront < 2500 %liest den rechten Klippensensor

r.turnAngle(-5) %dreht den Roomba leicht in die entgegengesetzte Richtung des Klippensensors

elseif cliff.leftFront < 2500 %liest den linken Klippensensor

r.turnAngle(5) %dreht den Roomba leicht in die entgegengesetzte Richtung des Klippensensors

anders

Ende

Ende

Ende

Schritt 4: Testen des Codes und des Roboters

Testen des Codes und des Roboters
Testen des Codes und des Roboters
Testen des Codes und des Roboters
Testen des Codes und des Roboters
Testen des Codes und des Roboters
Testen des Codes und des Roboters

Nachdem der Code entwickelt wurde, bestand der nächste Schritt darin, den Code und den Roboter zu testen. Da im Code viele verschiedene Anpassungen vorgenommen werden können, z. B. der Winkel, den der Roboter dreht, die Geschwindigkeit, mit der er sich bewegt, und die Schwellenwerte für jede Farbe, können Sie diese Werte für Ihren Roboter am besten testen sie und ändern Sie, während Sie gehen. An jedem Arbeitstag, den wir hatten, haben wir diese Werte ständig geändert, da einige von ihnen von der Umgebung abhängen, in der Ihr Roboter arbeitet. Der beste Weg, den wir gefunden haben, war, den roomba auf den gewünschten Weg zu stellen und zu haben eine Barriere, die hoch genug ist, damit die Kamera keine Farben erkennen kann, die Sie nicht möchten. Der nächste Schritt besteht darin, es laufen zu lassen und ihm die gewünschten Farben anzuzeigen, wenn es diese Aufgabe ausführen soll. Wenn Sie unterwegs ein Problem sehen, ist es am besten, die vordere Stoßstange hineinzudrücken, damit sie anhält, und dann den Parameter zu ändern, mit dem Sie Probleme hatten.

Schritt 5: Fehlererkennung

Bei jedem abgeschlossenen Projekt gibt es immer Fehlerquellen. Für uns haben wir einen Fehler mit der einfachen Tatsache erlebt, dass der Roboter den Winkel, in dem er sich dreht, nicht genau ist. Wenn Sie ihm also sagen, dass er sich um 45 Grad drehen soll, wird er nicht genau sein. Eine weitere Fehlerquelle für uns war, dass der Roboter manchmal nicht funktioniert und Sie ihn hart zurücksetzen müssen, bevor er wieder funktioniert. Die letzte Hauptfehlerquelle für uns war, dass derselbe Code auf verschiedenen Robotern nicht die gleiche Wirkung hat, sodass Sie möglicherweise Geduld damit haben und sich entsprechend anpassen müssen.

Schritt 6: Fazit

Jetzt haben Sie alle Werkzeuge, um mit Ihrem Roomba herumzuspielen, was bedeutet, dass Sie den Code beliebig manipulieren können, um die gewünschten Ziele zu erreichen. Dies sollte der beste Teil Ihres Tages sein, also haben Sie Spaß und fahren Sie sicher!

Empfohlen: