Innehållsförteckning:

Localino spårar Roomba IRobot, kartlägger miljön och tillåter kontroll: 4 steg
Localino spårar Roomba IRobot, kartlägger miljön och tillåter kontroll: 4 steg

Video: Localino spårar Roomba IRobot, kartlägger miljön och tillåter kontroll: 4 steg

Video: Localino spårar Roomba IRobot, kartlägger miljön och tillåter kontroll: 4 steg
Video: Отзыв и обзор iRobot Roomba 780. Робот-пылесос от iRobot. 2024, Juli
Anonim
Image
Image

För att bygga WiFi-UART-bron kan du kolla in denna github-repo:

Det har en bra grund att börja med. Se till att du läser riktlinjerna väl, eftersom Roomba VCC under laddning ökar upp till 20 volt! Om du lägger till en ESP8266 utan en ordentlig buck-converter som fungerar även upp till 20V och ned-konverterar till 3.3V, kommer du att skada din ESP.

Se också till att använda en nivåväxel (t.ex. med hjälp av en spänningsdelare) för att flytta 5V UART -logiknivåerna från Roomba till 3,3V, som används av ESP.

En annan viktig detalj är att buck -omvandlaren ska ha 300mA, men ännu mycket mindre eller mycket mer (beroende på buck -omvandlaren själv). Det finns några där ute som kan göra mycket mer ström, men får Roomba att krascha eftersom de drar för mycket ström under uppstart. Vi fick reda på att Pololu 3.3V, 300mA Step-Down Voltage Regulator (D24V3F3) fungerar helt perfekt. De alternativa versionerna som har 500mA / 600mA fick Roomba UART -gränssnittet att krascha. I grund och botten reagerade Roomba vid knapptryckning, men inte på kommandon via UART -gränssnittet. När detta hände var vi tvungna att ta bort Roomba-batteriet och kallstarta om Roomba med WiFi-UART-bron ansluten. Men bara D24V3F3 fungerade bra.

Bortsett från den tekniska detaljen måste du lägga till ytterligare kommandon i koden som du hittar i Roomba -specifikationerna för öppet gränssnitt. Du måste lägga till alla kommandon som du vill att din roomba ska reagera på (till exempel bakåt, framåt, hastighet, etc.).

exempel inom 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); }

om du skriver i lua ser det lite annorlunda ut, ett exempel för en VÄNSTER -sväng skulle se ut så här:

if (_GET.pin == "VÄNSTER") skriv sedan ut ('\ 137'); --VOR

tmr.fördröjning (100);

print ('\ 00'); -Hastighet = 200 = 0x00C8 -> 0 och 200

tmr.fördröjning (100);

print ('\ 200'); -- Hastighet

tmr.fördröjning (100);

print ('\ 254'); - Radie = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.fördröjning (100);

print ('\ 12'); -- Sväng

slutet

Se till att du måste korrigera det öppna gränssnittets beskrivning för din Roomba. Det finns minst två öppna gränssnittsspecifikationer tillgängliga.

för Roomba 5xx -serien:

för Roomba 6xx -serien:

När du har byggt din WiFi-UART-bro och testat kommandona tog du ett stort steg längre. Denna video visar att applikationen och tillvägagångssättet fungerar. Vi var lite lata, webbgränssnittet saknar alla andra kontrollkommandon, som framåt, bakåt, hastighet, höger, vänster och så vidare, men du kan utfärda kommandona via http. Hur som helst är det bara en demonstration av att fjärrkontrollen på Roomba fungerar med en enkel maskinvara och mjukvara med hjälp av en ESP8266.

Nu när du kan fjärrstyra din Roomba från en PC -applikation saknas det bara inomhuslokaliseringen. Vi behöver detta för att stänga återkopplingsslingan, eftersom vårt mål var att styra roboten till en viss riktning. Nu kör vi.

Steg 3: Konfigurera ditt inomhuslokaliseringssystem

För att stänga återkopplingsslingan använder vi ett inomhuslokaliseringssystem. Vi använder Localino för detta. Localino -systemet består av "ankare" och "taggar". Ankarna placeras på fasta platser inuti rummet och lokaliserar positionen för den rörliga taggen (som är placerad på Roomba). Platsbearbetningen görs i en PC -applikation. Det är en stor fördel, eftersom du också kan styra Roomba från samma dator! Det finns gratis källkod tillgänglig från Localino-webbplatsen, den är skriven i python och det finns också en realtidsström tillgänglig som erbjuder taggen XYZ-koordinater. Dataströmmen är tillgänglig via UDP -nätverk, men du kan också lägga till MQTT eller andra snygga saker som du gillar. Om du känner till Python finns det massor av bibliotek som hjälper dig.

I den här videon demonstreras lokaliseringen av Roomba. Därför har vi fyra ankare installerade i rummet på fasta platser, vilket möjliggör 3D -positionering av Roomba. I allmänhet skulle vi bara behöva 3 ankare, eftersom Roomba förmodligen inte kommer att röra sig i Z-axeln, därför skulle 2D vara tillräckligt. Men eftersom ankarna är placerade på AC -kontaktdonets höjd (som är cirka 30 cm över marken) skulle en 2D -inställning orsaka små positionsuppskattningsfel. Så vi bestämde oss för att ha 4 ankare och lokalisera i 3D.

Nu när vi har Roombas position är vårt nästa steg att styra Roomba från samma applikation. Tanken är att använda markens sanning och uppskatta en perfekt rengöringsväg för roboten. Med hjälp av Localino kan vi stänga återkopplingsslingan och styra roboten från PC -applikationen.

Inställningsanmärkningar

Placera Localino ankare inuti rummet i olika x, y positioner och tre av dem på samma z position. Placera ett av fyra ankare på en annan höjd z per rum. Se till att det finns bra täckning från Localino -taggen, som kommer att flytta med Roomba.

Alla ankare har ett unikt ankare -ID, som visas på streckkoden för Localino och kan läsas av med verktyget "localino -konfiguration".

Notera positionerna i X, Y, Z och ankar -ID: n. Detta krävs för Localino -processorprogramvaran och måste anpassas i filen "localino.ini" i mappen "LocalinoProcessor"

Förankringarna ska peka uppåt eller nedåt i Z (när XY -området är täckt), men inte i riktning mot det täckta området. Förankringarna ska inte heller täckas av metall eller annat trådlöst signalstörande material. Om detta inte är möjligt bör det också finnas ett visst luftgap mellan material och ankare.

…det kommer mera.

Steg 4: Anpassa Python -programvaran

håll utkik. det kommer mera.

Rekommenderad: