Inhaltsverzeichnis:
- Schritt 1: Teile und Materialien
- Schritt 2: Roomba-Datenbankdatei
- Schritt 3: Verbinden mit Roomba
- Schritt 4: Der Code
- Schritt 5: Fazit
Video: MATLAB-gesteuerter Roomba - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Ziel dieses Projekts ist es, MATLAB sowie einen modifizierten programmierbaren iRobot-Roboter zu nutzen. Unsere Gruppe kombinierte unsere Programmierkenntnisse, um ein MATLAB-Skript zu erstellen, das viele Funktionen des iRobot verwendet, einschließlich der Klippensensoren, Stoßfängersensoren, Lichtsensoren und der Kamera. Wir haben diese Sensor- und Kameramesswerte als Eingaben verwendet, sodass wir mithilfe von MATLAB-Codefunktionen und -Schleifen bestimmte Ausgaben erstellen können, die wir möchten. Wir verwenden auch das MATLAB-Mobilgerät und das Gyroskop, um eine Verbindung zum iRobot herzustellen und ihn zu steuern.
Schritt 1: Teile und Materialien
MATLAB 2018a
-Die 2018er-Version von MATLAB ist die am meisten bevorzugte Version, vor allem, weil sie am besten mit dem Code funktioniert, der mit dem mobilen Gerät verbunden ist. Der Großteil unseres Codes kann jedoch in den meisten MATLAB-Versionen interpretiert werden.
iRobot Gerät erstellen
-Dieses Gerät ist ein speziell angefertigtes Gerät, das ausschließlich zum Programmieren und Codieren dient. (Es ist kein tatsächliches Vakuum)
Raspberry Pi (mit Kamera)
- Dies ist eine kostengünstige Computerplatine, die als das Gehirn des iRobot fungiert. Es mag klein sein, aber es ist zu vielem fähig. Die Kamera ist ein zusätzliches Add-On. Es verwendet auch den Himbeer-Pi, um alle seine Funktionen und Befehle zu erhalten. Die oben abgebildete Kamera ist auf einem 3D-gedruckten Ständer montiert, der von den Engineering Fundamentals Departments der University of Tennessee erstellt wurde
Schritt 2: Roomba-Datenbankdatei
Es gibt eine Hauptdatei, die Sie benötigen, um die richtigen Funktionen und Befehle für Ihren Roomba zu verwenden. Aus dieser Datei schöpft Ihr Code Funktionen, um die Bedienung Ihres Roomba überschaubarer zu machen.
Sie können die Datei unter diesem Link oder der herunterladbaren Datei unten herunterladen
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Schritt 3: Verbinden mit Roomba
Zuerst müssen Sie sicherstellen, dass Ihr Roboter über einen Micro-USB-Stecker mit Ihrem Raspberry Pi Board verbunden ist. Dann müssen Sie Ihren Computer und Roboter ordnungsgemäß mit demselben WLAN verbinden. Sobald dies geschehen ist, können Sie Ihren Roboter einschalten und mit dem angegebenen Befehl in der Roboterdatenbankdatei eine Verbindung zu ihm herstellen. (Setzen Sie Ihren Roboter immer hart zurück, bevor und nachdem Sie ihn verwenden). Zum Beispiel verwenden wir den Befehl "r.roomba(19)", um uns mit unserem Roboter zu verbinden und unserem Gerät die Variable r zuzuweisen. Dies bezieht sich auf die Datenbankdatei, die unsere Variable als Struktur einrichtet, auf die wir jederzeit verweisen können.
Schritt 4: Der Code
Wir haben den vollständigen Code unten angehängt, aber hier ist eine kurze Übersicht, die die wichtigen Elemente in unserem Skript hervorhebt. Wir haben alle Sensoren sowie die Kamera genutzt, um das Potenzial unseres Roboters voll auszuschöpfen. Wir haben auch Code eingefügt, der es uns ermöglichte, ein mobiles Gerät mit unserem Roboter zu verbinden und sein Gyroskop zur manuellen Steuerung zu verwenden.
Wir begannen mit dem einfachen Befehl "r.setDriveVelocity(.06)", der die Vorwärtsgeschwindigkeit des Roboters auf 0,06 m/s setzt. Dies dient nur dazu, den Roboter vorher in Bewegung zu setzen
Dann wird unser Hauptskript mit einer while-Schleife gestartet, die die Daten des gegebenen Roboters abruft, indem Strukturen erstellt werden, die wir in bedingten Anweisungen unten referenzieren und verwenden können der Roboter liest mit seinen Sensoren. Wir richten es so ein, dass der Roboter seine Klippensensoren liest und einem schwarzen Pfad folgt
while true % while Schleife geht, bis etwas "falsches" auftritt (in diesem Fall geht es unendlich weiter) data = r.getCliffSensors; data2 = r.getBumpers;% ruft kontinuierlich Daten über die Klippensensorwerte ab und weist sie einer Variablen zu % img = r.getImage; % Nimmt ein Bild von der montierten Kamera auf % image(img); % Zeigt das aufgenommene Bild % red_mean = mean(mean(img(:,:, 1)));% Nimmt den Durchschnittswert für die grüne Farbe, wenn data.rightFront < 2000 r.turnAngle(-2); % dreht den Roomba um ungefähr 0,2 Grad im Uhrzeigersinn, sobald der Wert für die rechten vorderen Klippensensoren unter 2000 r.setDriveVelocity(.05) fällt; elseif data.leftFront data.leftFront && 2000 > data.rightFront r.moveDistance(.1); % weist den Roomba an, mit ca. 0,2 m/s vorwärts zu fahren, wenn beide Werte von den rechten vorderen und linken vorderen Sensoren unter 2000 % r.turnAngle(0) fallen; % weist den Roomba an, sich nicht zu drehen, wenn die oben genannten Bedingungen zutreffen
elseif data2.right == 1 r.moveDistance(-.12); r. Drehwinkel(160); r.setDriveVelocity(.05); elseif data2.left == 1 r.moveDistance(-.2); r. Drehwinkel(5); r.setDriveVelocity(.05); elseif data2.front == 1 r.moveDistance(-.12); r. Drehwinkel(160); r.setDriveVelocity(.05);
Nach dieser while-Schleife geben wir eine weitere while-Schleife ein, die die durch die Kamera erhaltenen Daten auslöst. Und wir verwenden eine if-Anweisung innerhalb dieser while-Schleife, die ein Bild mit einem bestimmten Programm (alexnet) erkennt und sobald es das Bild identifiziert, sofort die Fernbedienung des Mobilgeräts auslöst
anet = alexnet; % Weist alexnet Deep Learning einer Variablen zu while true % Infinite while loop img = r.getImage; img = imresize(img, [227, 227]); label = klassifizieren(anet, img); if label == "Papiertuch" || label == "Kühlschrank" label = "Wasser"; Endbild(img); title(char(label)); gezeichnet;
Die while-Schleife, die es uns ermöglicht, das Gerät mit unserem Telefon zu steuern, ruft diese Daten vom Gyroskop des Telefons ab und wir stecken sie in eine Matrix, die kontinuierlich Daten zurück in MATLAB auf dem Computer überträgt. Wir verwenden eine if-Anweisung, die die Daten der Matrix liest und eine Ausgabe ausgibt, die das Gerät basierend auf bestimmten Werten des Gyroskops des Telefons bewegt. Es ist wichtig zu wissen, dass wir die Orientierungssensoren des Mobilgeräts verwendet haben. Die oben erwähnte Eins-zu-Drei-Matrix wird nach jedem Element der Ausrichtungssensoren des Telefons kategorisiert, das heißt Azimut, Neigung und Seite. Die if-Anweisungen haben Bedingungen geschaffen, die besagten, wenn die Seite die Werte 50 überschreitet oder unter -50 fällt, dann bewegt sich der Roboter eine bestimmte Strecke vorwärts (positiv 50) oder rückwärts (negative 50). Das gleiche gilt für den Tonhöhenwert. Wenn der Steigungswert den Wert von 25 überschreitet oder unter -25 fällt, dreht sich der Roboter in einem Winkel von 1 Grad (positive 25) oder minus 1 Grad (negative 25)
while true pause(.1) % Pause von 0,5 Sekunden, bevor jeder Wert übernommen wird Controller=iphone. Orientation; % Weist die Matrix für die Werte der Ausrichtung des iPhones einer Variablen zu Azimuthal=Controller(1); % Weist den ersten Wert der Matrix einer Variablen zu Pitch=Controller(2); % Weist den zweiten Wert der Matrix einer Variablen zu (nach vorne und hinten neigen, wenn das iPhone seitwärts gehalten wird) Side=Controller(3); % Weist den dritten Wert der Matrix einer Variablen zu (nach links und rechts neigen, wenn das iPhone seitwärts gehalten wird) % Verursacht eine Ausgabe basierend auf der Ausrichtung des Telefons, wenn Seite > 130 || Seite 25 r.moveDistance(-.1) % Bewegt den Roomba ca. 0,1 Meter nach hinten, wenn das iPhone um mindestens 25 Grad nach hinten geneigt ist elseif Seite 25 r.turnAngle(-1) % Dreht den Roomba um ca. 1 Grad gegen den Uhrzeigersinn, wenn das iPhone ist um mindestens 25 Grad nach links geneigt sonst wenn Pitch < -25 r.turnAngle(1) % Dreht den Roomba um ungefähr 1 Grad im Uhrzeigersinn, wenn das iPhone um mindestens 25 Grad geneigt ist
Dies sind nur die Highlights der wichtigsten Teile unseres Codes, die wir hinzugefügt haben, wenn Sie einen Abschnitt zu Ihrem Vorteil schnell kopieren und einfügen müssen. Unser gesamter Code ist jedoch bei Bedarf unten angehängt
Schritt 5: Fazit
Dieser Code, den wir geschrieben haben, wurde speziell für unseren Roboter sowie für unsere Gesamtvision des Projekts entwickelt. Unser Ziel war es, all unsere MATLAB-Codierungskenntnisse zu nutzen, um ein gut gestaltetes Skript zu erstellen, das die meisten Funktionen des Roboters nutzt. Die Verwendung des Telefoncontrollers ist nicht so schwierig, wie Sie vielleicht denken, und wir hoffen, dass unser Code Ihnen helfen kann, das Konzept hinter der Codierung eines iRobots besser zu verstehen.
Empfohlen:
So programmieren und veröffentlichen Sie Matlab 2016b in Word (Anleitung für Anfänger): 4 Schritte
So codieren und veröffentlichen Sie Matlab 2016b in Word (Einsteigerhandbuch): Matlab ist ein leistungsstarkes Sprachprogramm, das zum Berechnen technischer Ergebnisse verwendet wird. Es hat die Fähigkeit, Visualisierungen, Berechnungen und Programmierung auf benutzerfreundliche Weise zu integrieren. Mit diesem Programm kann der Benutzer Probleme und Lösungen veröffentlichen
Programmiererweiterungen in MATLAB trainieren: 6 Schritte
Verbesserungen bei der Zugprogrammierung in MATLAB: Ziel: Das Ziel dieses programmierten Systems besteht darin, einen kleinen Arduino zu betrachten und die Codierung in größerem Maßstab anzuwenden, um möglicherweise bestimmte Sicherheitsfunktionen von Amtrak-Eisenbahnsystemen zu verbessern. Dazu haben wir einen Bodenfeuchtesensor hinzugefügt
Tutorial zum Abtasten analoger Signale - MATLAB: 8 Schritte
Tutorial zum Abtasten analoger Signale | MATLAB: In diesem Tutorial zeigen wir, was Sampling ist. und Wie man ein analoges Signal mit der MATLAB-Software abtastet
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