Inhaltsverzeichnis:

Roomba mit Astronautenunterstützung - Gunook
Roomba mit Astronautenunterstützung - Gunook

Video: Roomba mit Astronautenunterstützung - Gunook

Video: Roomba mit Astronautenunterstützung - Gunook
Video: WALTER&ME 😳 LULU LUSTIG SEIN #djsunflower #comedy #toilet #song #lu #lu 2024, Juli
Anonim
Raumba mit Astronautenunterstützung
Raumba mit Astronautenunterstützung

Dieses Projekt wird unter Verwendung des Raspberry Pi 3 an Bord des iRobot Create Version 2 erstellt. MATLAB wird verwendet, um den Roboter so zu programmieren, dass er bestimmten Anweisungen mit seinen Sensoren und seiner Kamera folgt. Die Sensoren und Kameras werden verwendet, um bestimmte Aufgaben auszuführen, die einem Astronauten folgen und ihm die Möglichkeit geben, mit seiner Heimatbasis zu kommunizieren, wenn etwas schief geht.

Schritt 1: Benötigte Teile

Benötigte Teile
Benötigte Teile
Benötigte Teile
Benötigte Teile
Benötigte Teile
Benötigte Teile
Benötigte Teile
Benötigte Teile

1. iRobot Version 2 erstellen

Der iRobot Create ist der wichtigste Teil dieses Projekts, da er programmierbar ist und eine großartige Darstellung für einen echten Rover sein kann, der Astronauten folgt und sie in Zukunft unterstützt

2. Raspberry Pi 3

Der Raspberry Pi war das programmierbare, das für dieses Projekt verwendet wurde. Der Code ist für den Pi konzipiert und die angehängte Version des Pi ist die 3 (Modell B). Andere programmierbare Boards wie Arduino sind verwendbar, jedoch erfordern Arduino und die meisten anderen Boards eine andere Codierung als in einem anderen Schritt beschrieben

3. Raspberry Pi Kameramodul

Die einzige externe Verbindung zum Raspberry Pi, die für dieses Projekt benötigt wird, ist das Kameramodul. Das Kameramodul ist der integrale Bestandteil dieses Projekts, da der roomba nur Aufgaben ausführt, die auf dem basieren, was er in der Kamera sieht

4. MATLAB 2018a

Für die Codierung dieses Setups wurde die zweitaktuellste Version von MATLAB, 2018a, verwendet. Es ist wahrscheinlich, dass viele andere Versionen von MATLAB damit funktionieren, da es die Roomba-Programmierung schon eine Weile gibt

Schritt 2: Dateien und Kamerakonfiguration

Dateien und Kamerakonfiguration
Dateien und Kamerakonfiguration

1. Raspberry Pi- und Kameraverbindungen zum Roomba

  • Der Pi kann über einen Micro-USB direkt mit dem iRobot verbunden werden. Das ist alles, was es braucht, um einsatzbereit zu sein. Es wird jedoch empfohlen, es sicher auf dem Roomba zu platzieren, wie es in den Bildern während der bisherigen Präsentation gezeigt wird.
  • Die Kamera hat eine direkte Verbindung zum Raspberry Pi und es wird dringend empfohlen, etwas zu kaufen oder anzufertigen, um die Kamera direkt oben zu halten. Die Kamera hat keinen wirklichen Sinn, wenn sie nicht an Ort und Stelle gehalten werden kann, um zu zeigen, was der Roomba sieht.

2. Dateien

  • Nachdem Sie alles eingerichtet und angeschlossen haben, stellen Sie sicher, dass der Roboter zurückgesetzt und einsatzbereit ist, indem Sie die Tasten "Spot" und "Dock" 10 Sekunden lang gleichzeitig gedrückt halten.
  • Hier wird zuerst MATLAB benötigt. Die Dateien für den roomba müssen zuerst installiert werden und alles, was für die Ausführung dieser Dateien benötigt wird, ist der unter diesem Link bereitgestellte Code:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Schritt 3: Erste Roomba-Tests

Es müssen viele anfängliche Prüfungen am Roomba durchgeführt werden, um sicherzustellen, dass er funktioniert.

1. Stellen Sie sicher, dass Sie mit demselben WLAN-Netzwerk wie der roomba verbunden sind. Ohne dies werden Sie nie eine Verbindung über MATLAB herstellen.

2. Finden Sie heraus, welcher Nummer Ihr Roomba zugewiesen ist, damit Sie sich gezielt mit dem von Ihnen gewählten Roomba verbinden können. Wenn die Nummer Ihres Roomba beispielsweise 30 ist, würden Sie sich mit ihm verbinden, indem Sie roomba(30) in das Befehlsfenster in MATLAB eingeben.

3. Der Roomba kann über Structs in MATLAB gesteuert werden. Wenn Sie beispielsweise Ihren Code für roomba(30) auf die Variable 'r' setzen, kann der Roboter mit dem Befehl r.moveDistance(0.2, 0.1) vorwärts bewegt werden.

4. Es gibt viele verschiedene Befehle, die dem roomba mitgeteilt werden können und diese können durch Eingabe von 'doc roomba' in das Befehlsfenster angezeigt werden.

5. Die Sensoren für Licht-, Stoß- und Klippenmessungen können alle mit den Befehlen in 'doc roomba' gelesen werden, aber eine Möglichkeit, ein konstantes, übersichtliches Menü zum Anzeigen der Sensordaten zu haben, kann mit 'r.testSensors. angezeigt werden '.

6. Nachdem dies alles getestet wurde, kann die Bilderfassungssoftware des Roboters verwendet werden, um aufgenommene Bilder zu lesen und anzuzeigen. Der grundlegende Code dafür wäre img = r.getImage und imshow(img);.

7. RGB-Werte des Bildes können mit den Codes red_mean = mean(mean(img(:,:, 1)));

green_mean = mean(mean(img(:,:, 2))); und blue_mean=mean(mean(img(:,:, 3)));.

Schritt 4: Beispiel-MATLAB-Code

Beispiel-MATLAB-Code
Beispiel-MATLAB-Code

An diesem Punkt sind Sie jetzt bereit, die Sensoren und die Bildaufnahmesoftware zu verwenden, um Ihren eigenen Dreh auf einem menschlich unterstützenden Prototypen des Mars Rover zu erstellen. Unser Beispiel ist, dem Astronauten zu folgen, indem wir die Farbe Weiß verfolgen und sich darauf zubewegen. Der Roboter gibt einen Piepton ab, wenn seine Sensoren hohe Werte anzeigen, sodass der Astronaut den Roboter zurücksetzen kann, wenn er feststeckt, oder ihn aufheben und zurücksetzen kann, wenn er auf einer Klippe feststeckt. Es liest diese Fehler jedoch nur, solange es weiß sieht. Ohne die Farbe Weiß sehen zu können, wechselt der Roboter in den Fehlermodus. Es ist so programmiert, dass es zwei verschiedene Arten von E-Mails an die Heimatbasis zurücksendet, je nachdem, was es sieht. Wenn es die Hautfarbe des Astronauten sieht, ist das offensichtlich nicht gut, daher wird die Heimatbasis benachrichtigt, wenn der Astronaut Haut mit einer Anzugsfehlfunktion aufweist. Die andere Nachricht ist vorbereitet, wenn der Astronaut einfach aus dem Blickfeld verschwindet. Wenn für die Kameras kein Weiß oder keine Hautfarbe angezeigt wird, dreht sich der Roboter herum und sendet eine andere, aber andere E-Mail. Die Bilder, bei denen der Roomba den Astronauten nicht sehen kann, werden zusammen mit der Nachricht in den E-Mails gesendet. Der Code für unser Projekt ist unten dargestellt:

für i=1:.1:3 img=r.getImage; image(img) red_mean = mean(mean(img(:,:, 1))); green_mean = mean(mean(img(:,:, 2))); blue_mean = mean(mean(img(:,:, 3))); if red_mean > 110 && red_mean 110 && blue_mean 110 && green_mean0 || stoß.links>0 || Bump.front>0 r.beep() r.beep() r.beep() r.stop elseif cliff.left<10 || cliff.leftFront<10 || cliff.rightFront<10 || cliff.right700 || Licht.linksVorn>700 || Licht.linksMitte>700 || Licht.rechtsMitte>700 || Licht.rechtsVorne>700 || light.right>700 r.beep() r.beep() r.beep() r.beep() r.beep() r.stop else für i=1:2 r.moveDistance(0.2, 0.1) r. setDriveVelocity(.3,.2) r.stop end end end if green_mean <35 && blue_mean<35 %Hautfarbe wird angezeigt (muss an die Hautfarbe des Astronauten angepasst werden) r.beep(); r.beep(); r.beep(); mail = '[email protected]'; %sendet eine E-Mail, die zeigt, dass der Anzug aus ist psswd = 'ja'; host = 'smtp.gmail.com'; Port = '465'; emailto = '[email protected]'; m_Betreff = 'Betreff'; m_text = 'test'; setpref('Internet', 'E_Mail', Mail); setpref('Internet', 'SMTP_Server', Host); setpref('Internet', 'SMTP_Benutzername', mail); setpref('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', host); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail(emailto, 'Hilfe!', 'Die Astronautenuniform ist aus!', img); end if red_mean 135 || green_mean 135 || blue_mean 135 for j = 1:2 %wenn Weiß vom Roboter nicht gefunden werden kann r.turnAngle(360) mail = '[email protected]'; psswd = 'ja'; host = 'smtp.gmail.com'; Port = '465'; emailto = '[email protected]'; m_Betreff = 'Betreff'; m_text = 'test'; setpref('Internet', 'E_Mail', Mail); setpref('Internet', 'SMTP_Server', Host); setpref('Internet', 'SMTP_Benutzername', mail); setpref('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', host); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail(emailto, 'Hilfe!', 'Der Astronaut kann nicht gefunden werden!', img); r.stop ende ende ende

Offensichtlich ist es hier chaotisch, aber es sollte nach dem Kopieren poliert werden. Passwörter und E-Mails dafür sind selbstverständlich von den Projektbeteiligten mitzubringen.

Unser Beispiel ist jedoch nur eine von vielen Möglichkeiten, mit diesem Roboter herumzuspielen, damit er für alle geeignet ist. Es gibt viele verschiedene Dinge zu tun, die Sie sich selbst anpassen können.

Empfohlen: