Inhaltsverzeichnis:
- Schritt 1: Materialien
- Schritt 2: Verbindung
- Schritt 3: Logisches Erstellen eines MATLAB-Codes zur Verwendung von Sensoren
- Schritt 4: Testen des Codes und des Roboters
- Schritt 5: Fehlererkennung
- Schritt 6: Fazit
Video: Roomba Parking Pal - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
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
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
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
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:
Roomba-Projekt: 5 Schritte (mit Bildern)
Roomba-Projekt: Dieses instructable wurde in Erfüllung der Projektanforderung des Makecourse an der University of South Florida (www.makecourse.com) erstellt. Dieses instructable deckt alle notwendigen Schritte und Komponenten ab, die zum Zusammenbau meines Roomba-Projekts erforderlich sind
Von Roomba zu Rover in nur 5 Schritten!: 5 Schritte
In nur 5 Schritten von Roomba zum Rover!: Roomba-Roboter sind eine unterhaltsame und einfache Möglichkeit, Ihre Zehen in die Welt der Robotik einzutauchen. In diesem Instructable werden wir detailliert beschreiben, wie man einen einfachen Roomba in einen steuerbaren Rover umwandelt, der gleichzeitig seine Umgebung analysiert. Teileliste1.) MATLAB2.) Roomb