Inhaltsverzeichnis:
- Schritt 1: Zubehör
- Schritt 2: Die Problemstellung
- Schritt 3: Bluetooth-Fernbedienung
- Schritt 4: Auswirkungserkennung
- Schritt 5: Lebenserkennung
- Schritt 6: Führen Sie es aus
Video: Mars Roomba - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Dieses Instructable führt Sie in die Richtungen zum Betrieb eines Raspberry Pi-gesteuerten Roomba-Vakuum-Bots. Als Betriebssystem verwenden wir MATLAB.
Schritt 1: Zubehör
Was Sie sammeln müssen, um dieses Projekt durchzuführen:
- Der Create2 Roomba Staubsauger-Bot von iRobot
- Himbeer-Pi
- Raspberry Pi Kamera
- Die neueste Version von MATLAB
- Die Roomba-Installations-Toolbox für MATLAB
- MATLAB-Anwendung für ein Mobilfunkgerät
Schritt 2: Die Problemstellung
Wir wurden beauftragt, mit MATLAB einen Rover zu entwickeln, der auf dem Mars eingesetzt werden könnte, um Wissenschaftler beim Sammeln von Planetendaten zu unterstützen. Die Funktionen, die wir in unserem Projekt adressierten, waren Fernbedienung, Objektaufprallerkennung, Wassererkennung, Lebenserkennung und Bildverarbeitung. Um diese Leistungen zu erreichen, haben wir mit den Roomba-Toolbox-Befehlen programmiert, um die vielen Funktionen von iRobots Create2 Roomba zu manipulieren.
Schritt 3: Bluetooth-Fernbedienung
Diese Folie führt den Code durch, um die Bewegung des Roomba mithilfe der Bluetooth-Funktionen Ihres Smartphones zu steuern. Laden Sie zunächst die MATLAB-Anwendung auf Ihr Smartphone herunter und melden Sie sich bei Ihrem Mathworks-Konto an. Gehen Sie nach der Anmeldung zu "Mehr", "Einstellungen" und stellen Sie eine Verbindung zu Ihrem Computer über die IP-Adresse her. Gehen Sie nach der Verbindung zurück zu "Mehr" und wählen Sie "Sensoren". Tippen Sie auf den dritten Sensor in der oberen Symbolleiste des Bildschirms und tippen Sie auf Start. Jetzt ist Ihr Smartphone eine Fernbedienung!
Der Code lautet wie folgt:
während 0 == 0
Pause(.5)
PhoneData = M. Orientation;
Azi = Telefondaten(1);
Tonhöhe = PhoneData(2);
Seite = PhoneData(3);
Stöße = r.getBumpers;
wenn Seite>80 || Seite<-80
r.stop
r.beep('C, E, G, C^, G, E, C')
brechen
elseif Seite>20 && Seite<40
r. Drehwinkel(-5);
sonst Seite>40
r. Drehwinkel (-25);
sonst Seite-40
r. Drehwinkel(5);
sonst Seite <-40
r. Drehwinkel (25);
Ende
wenn Tonhöhe >10 && Tonhöhe<35
r.moveDistance(.03)
elseif Tonhöhe>-35 && Tonhöhe<-10
r.moveDistance(-.03)
Ende
Ende
Schritt 4: Auswirkungserkennung
Eine weitere Funktion, die wir implementiert haben, bestand darin, den Aufprall des Roomba auf ein Objekt zu erkennen und dann seinen aktuellen Weg zu korrigieren. Dazu mussten wir Bedingungen mit den Messwerten der Stoßfängersensoren verwenden, um festzustellen, ob ein Objekt getroffen wurde. Wenn der Roboter auf ein Objekt trifft, fährt er 0,2 Meter zurück und dreht sich in einem Winkel, der von der Stoßstange bestimmt wird. Sobald ein Element getroffen wurde, erscheint ein Menü mit dem Wort "oof".
Der Code wird unten angezeigt:
während 0 == 0
Stöße = r.getBumpers;
r.setDriveVelocity(.1)
wenn Unebenheiten.links == 1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r. Drehwinkel(-35)
r.setDriveVelocity(.2)
elseif Beulen.vorne == 1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r. Drehwinkel(90)
r.setDriveVelocity(.2)
elseif Beulen.rechts == 1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r. Drehwinkel(35)
r.setDriveVelocity(.2)
elseif Bumps.leftWheelDrop ==1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r. Drehwinkel(-35)
r.setDriveVelocity(.2)
elseif Stöße.rightWheelDrop ==1
msgbox('Uff!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r. Drehwinkel(35)
r.setDriveVelocity(.2)
Ende
Ende
Schritt 5: Lebenserkennung
Wir haben ein Lebenserkennungssystem codiert, um die Farben von Objekten davor zu lesen. Die drei Arten von Leben, für die wir kodiert haben, sind Pflanzen, Wasser und Außerirdische. Dazu haben wir die Sensoren codiert, um die Durchschnittswerte von Rot, Blau, Grün oder Weiß zu berechnen. Diese Werte wurden mit den manuell eingestellten Schwellenwerten verglichen, um die Farbe zu bestimmen, die die Kamera betrachtet. Der Code würde auch den Pfad zum Objekt darstellen und eine Karte erstellen.
Der Code lautet wie folgt:
t = 10;
ich = 0;
während t == 10
img = r.getImage; imshow(img)
Pause(0.167)
i = i + 1;
red_mean = mean(mean(img(:,:, 1)));
blue_mean = mean(mean(img(:,:, 3)));
green_mean = mean(mean(img(:,:, 2)));
white_mean = (blue_mean + green_mean + red_mean) / 3; % wollen dieses Wert ca. 100
neun_plus_ten = 21;
green_threshold = 125;
blue_threshold = 130;
white_threshold = 124;
red_threshold = 115;
während nine_plus_ten == 21 %grün - Leben
if green_mean > green_threshold && blue_mean < blue_threshold && red_mean < red_threshold
r.moveDistance(-.1)
a = msgbox('mögliche Lebensquelle gefunden, Standort eingezeichnet');
Pause(2)
löschen(a)
[y2, Fs2] = Audioread('z_speak2.wav');
Ton(y2, Fs2)
Pause(2)
%plant = r.getImage; %imshow(Pflanze);
%save('plant_img.mat', Pflanze');
%Plot-Standort in Grün
ich = 5;
brechen
anders
neun_plus_ten = 19;
Ende
Ende
neun_plus_ten = 21;
während nine_plus_ten == 21 %blau - woder
if blue_mean > blue_threshold && green_mean < green_threshold && white_mean < white_threshold && red_mean < red_threshold
r.moveDistance(-.1)
a = msgbox('eine Wasserquelle wurde gefunden, Ort eingezeichnet');
Pause(2)
löschen(a)
[y3, Fs3] = Audioread('z_speak3.wav');
Ton(y3, Fs3);
%woder = r.getImage; %imshow(woder)
%save('water_img.mat', woder)
%Plot-Standort in Blau
ich = 5;
brechen
anders
neun_plus_ten = 19;
Ende
Ende
neun_plus_ten = 21;
while nine_plus_ten == 21 %white - Aliens MonkaS
if white_mean > white_threshold && blue_mean < blue_threshold && green_mean < green_threshold
[y5, Fs5] =audioread('z_speak5.wav');
Ton(y5, Fs5);
Pause(3)
r.setDriveVelocity(0,.5)
[ys, Fss] =audioread('z_scream.mp3');
Ton(ys, Fss);
Pause(3)
r.stop
% alien = r.getImage; %imshow(fremd);
% save('alien_img.mat', fremd);
ich = 5;
brechen
anders
neun_plus_ten = 19;
Ende
Ende
wenn ich == 5
a = 1; %Winkel
t = 9; %beende große Schleife
ich = 0;
Ende
Ende
Schritt 6: Führen Sie es aus
Nachdem der gesamte Code geschrieben wurde, kombinieren Sie ihn in einer Datei und voila! Ihr Roomba-Bot ist jetzt voll funktionsfähig und funktioniert wie angekündigt! Das Bluetooth-Steuerelement sollte sich jedoch entweder in einer separaten Datei befinden oder mit %% vom Rest des Codes getrennt werden.
Viel Spaß mit Ihrem Roboter !!
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