Inhaltsverzeichnis:

Localino verfolgt Roomba IRobot, bildet die Umgebung ab und ermöglicht die Kontrolle. - Gunook
Localino verfolgt Roomba IRobot, bildet die Umgebung ab und ermöglicht die Kontrolle. - Gunook

Video: Localino verfolgt Roomba IRobot, bildet die Umgebung ab und ermöglicht die Kontrolle. - Gunook

Video: Localino verfolgt Roomba IRobot, bildet die Umgebung ab und ermöglicht die Kontrolle. - Gunook
Video: Рассказываем о слабых местах BMW E39 и показываем "пятёрку" из проекта "И бит, и крашен" 2024, November
Anonim
Image
Image

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: