Inhaltsverzeichnis:
Video: Localino verfolgt Roomba IRobot, bildet die Umgebung ab und ermöglicht die Kontrolle. - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Um die WiFi-UART-Bridge zu bauen, können Sie sich dieses Github-Repo ansehen:
Es hat eine schöne Basis für den Anfang. Stellen Sie sicher, dass Sie die Richtlinie gut lesen, denn der Roomba VCC erhöht sich während des Ladevorgangs auf bis zu 20 Volt! Wenn Sie einen ESP8266 ohne einen richtigen Abwärtswandler hinzufügen, der sogar bis zu 20 V funktioniert und auf 3,3 V herunterkonvertiert, beschädigen Sie Ihren ESP.
Stellen Sie außerdem sicher, dass Sie einen Pegelumsetzer (z. B. mit einem Spannungsteiler) verwenden, um die 5 V UART-Logikpegel vom Roomba auf 3,3 V zu verschieben, die vom ESP verwendet werden.
Ein weiteres wichtiges Detail ist, dass der Abwärtswandler 300mA haben sollte, aber nicht viel weniger oder viel mehr (je nach Abwärtswandler selbst). Es gibt einige da draußen, die viel mehr Strom produzieren können, aber den Roomba zum Absturz bringen, weil sie beim Start zu viel Strom ziehen. Wir haben herausgefunden, dass der Pololu 3.3V, 300mA Step-Down-Spannungsregler (D24V3F3) perfekt funktioniert. Die alternativen Versionen mit 500mA / 600mA führten zum Absturz der Roomba UART-Schnittstelle. Grundsätzlich reagierte der Roomba auf Tastendruck, aber nicht auf Befehle über die UART-Schnittstelle. Sobald dies passierte, mussten wir den Roomba-Akku entfernen und den Roomba mit angeschlossener WiFi-UART-Bridge kalt neu starten. Allerdings funktionierte nur der D24V3F3 gut.
Abgesehen von diesem technischen Detail müssen Sie dem Code zusätzliche Befehle hinzufügen, die Sie in den Spezifikationen für die offene Schnittstelle von Roomba finden. Sie müssen alle Befehle hinzufügen, auf die Ihr Roomba reagieren soll (z. B. rückwärts, vorwärts, Geschwindigkeit usw.).
Beispiele innerhalb der Arduino-IDE:
void goForward() { char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (c); }
void goBackward() { char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (c); }
void spinLeft() { char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (c); }
void spinRight() { char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (c); }
Wenn Sie in lua schreiben, sieht es etwas anders aus, ein Beispiel für eine LINKE Kurve würde so aussehen:
if(_GET.pin == "LEFT")then print ('\137'); --VOR
tmr.delay(100);
drucken ('\00'); -- Geschwindigkeit = 200 = 0x00C8 -> 0 und 200
tmr.delay(100);
drucken ('\200'); -- Geschwindigkeit
tmr.delay(100);
drucken ('\254'); -- Radius = 500 = 0x01F4 = 0x01 0xF4 = 1 244
tmr.delay(100);
drucken ('\12'); -- Dreh dich
Ende
Stellen Sie sicher, dass Sie die offene Schnittstellenbeschreibung für Ihren Roomba korrigieren müssen. Es stehen mindestens zwei offene Schnittstellenspezifikationen zur Verfügung.
für Roomba 5xx-Serie:
für Roomba 6xx-Serie:
Sobald Sie Ihre WiFi-UART-Bridge aufgebaut und die Befehle getestet haben, sind Sie einen großen Schritt weitergekommen. Dieses Video zeigt, dass die Anwendung und der Ansatz funktionieren. Wir waren etwas faul, dem Webinterface fehlen alle anderen Steuerbefehle, wie vorwärts, rückwärts, Geschwindigkeit, rechts, links usw., aber Sie können die Befehle über http ausgeben. Wie auch immer, es ist nur eine Demonstration, dass die Fernbedienung des Roomba mit einer einfachen Hardware und Software mit einem ESP8266 funktioniert.
Da Sie Ihren Roomba jetzt von einer PC-Anwendung aus fernsteuern können, fehlt nur noch die Indoor-Lokalisierung. Das brauchen wir, um die Feedbackschleife zu schließen, denn unser Ziel war es, den Roboter in eine bestimmte Richtung zu lenken. Lass uns das machen.
Schritt 3: Richten Sie Ihr Indoor-Lokalisierungssystem ein
Um die Rückkopplungsschleife zu schließen, verwenden wir ein Indoor-Lokalisierungssystem. Dafür verwenden wir Localino. Das Localino-System besteht aus "Ankern" und "Tags". Die Anker werden an festen Stellen im Raum positioniert und lokalisieren die Position des sich bewegenden Tags (der auf dem Roomba platziert wird). Die Standortverarbeitung erfolgt in einer PC-Anwendung. Das ist von großem Vorteil, denn Sie können den Roomba auch vom selben PC aus steuern! Es gibt kostenlosen Quellcode von der Localino-Website, er ist in Python geschrieben und es gibt auch einen Echtzeit-Stream, der die XYZ-Koordinaten des Tags anbietet. Der Datenstrom ist über das UDP-Netzwerk verfügbar, aber Sie können auch MQTT oder andere ausgefallene Dinge hinzufügen, die Sie mögen. Wenn Sie Python kennen, gibt es jede Menge Bibliotheken, die Ihnen helfen.
In diesem Video wird die Lokalisierung des Roomba demonstriert. Daher haben wir 4 Anker im Raum an festen Orten aufgestellt, die eine 3D-Positionierung des Roomba ermöglichen. Generell würden wir nur 3 Anker benötigen, da sich der Roomba wahrscheinlich nicht in der Z-Achse bewegen wird, daher wäre 2D ausreichend. Da sich die Anker jedoch auf der Höhe des AC-Hauptsteckers befinden (etwa 30 cm über dem Boden), würde ein 2D-Setup nur geringe Positionsschätzungsfehler verursachen. Also haben wir uns entschieden, 4 Anker zu haben und in 3D zu lokalisieren.
Da wir nun die Position des Roomba haben, besteht unser nächster Schritt darin, den Roomba über dieselbe Anwendung zu steuern. Die Idee ist, die Ground Truth zu nutzen und einen perfekten Reinigungspfad für den Roboter abzuschätzen. Mit dem Localino können wir die Feedbackschleife schließen und den Roboter von der PC-Anwendung aus steuern.
Hinweise zur Einrichtung
Positionieren Sie die Localino-Anker im Raum an verschiedenen x-, y-Positionen und drei davon an derselben z-Position. Positionieren Sie einen von vier Ankern in einer anderen Höhe z pro Raum. Stellen Sie sicher, dass das Localino-Tag, das mit dem Roomba bewegt wird, eine gute Abdeckung hat.
Alle Anker haben eine eindeutige Anker-ID, die auf dem Barcode des Localino angezeigt wird und mit dem Tool „localino Konfiguration“ausgelesen werden kann.
Beachten Sie die Positionen in X, Y, Z und die Anker-IDs. Dieser wird für die Localino Processor Software benötigt und muss in der Datei „localino.ini“im Ordner „LocalinoProcessor“angepasst werden
Die Anker sollten in Z nach oben oder unten zeigen (bei abgedecktem XY-Bereich), jedoch nicht in Richtung des abgedeckten Bereichs. Die Anker sollten auch nicht durch Metall oder andere das Funksignal störende Material verdeckt werden. Wenn dies nicht möglich ist, sollte auch zwischen dem Material und dem Dübel ein gewisser Luftspalt vorhanden sein.
…da kommt noch mehr.
Schritt 4: Anpassen der Python-Software
bleiben Sie dran. da kommt noch mehr.
Empfohlen:
So verbinden Sie die Android-Anwendung mit AWS IOT und verstehen die Spracherkennungs-API: 3 Schritte
So verbinden Sie die Android-Anwendung mit AWS IOT und verstehen die Spracherkennungs-API: In diesem Tutorial erfahren Sie, wie Sie die Android-Anwendung mit dem AWS IOT-Server verbinden und die Spracherkennungs-API verstehen, die eine Kaffeemaschine steuert. Die Anwendung steuert die Kaffeemaschine über Alexa Sprachdienst, die c
Adaptive Umgebung (Wohnheimautomatisierung): 5 Schritte
Adaptive Environment (Dorm Automation): Dieses Projekt ist der Beginn meiner Vertiefung in die Automatisierung. Als "Gehirn" wählte ich den Raspberry Pi. dieser Operation, weil der GPIO so viele verschiedene Anwendungen und das integrierte WIFI/Bluetooth hat. Meine Einführung in die Prototyping-Klasse herausgefordert
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
Wie man einen autonomen Basketball-Spielroboter mit einem IRobot als Basis erstellt – wikiHow
So bauen Sie einen autonomen Basketball-Spielroboter mit einem IRobot Create als Basis: Dies ist mein Beitrag für die iRobot Create-Herausforderung. Der schwierigste Teil dieses ganzen Prozesses war für mich zu entscheiden, was der Roboter tun würde. Ich wollte die coolen Funktionen des Create demonstrieren und gleichzeitig etwas Robo-Flair hinzufügen. Alle meine
So bauen Sie eine Uhr, die die Zeit an die Wand projiziert – wikiHow
So bauen Sie eine Uhr, die Zeit an die Wand projiziert: Dieses Instructable zeigt Ihnen, wie Sie eine Projektoruhr bauen. Mit diesem Gerät können Sie die Zeit an die Wand projizieren. Basierend auf einem kleinen LCD-Wecker (nicht zu klein, sondern kann nicht projiziert und bearbeitet werden) ist dies eine gute Möglichkeit