INHOUDSOPGAWE:

Localino Tracks Roomba IRobot, kaart die omgewing en laat beheer toe .: 4 stappe
Localino Tracks Roomba IRobot, kaart die omgewing en laat beheer toe .: 4 stappe

Video: Localino Tracks Roomba IRobot, kaart die omgewing en laat beheer toe .: 4 stappe

Video: Localino Tracks Roomba IRobot, kaart die omgewing en laat beheer toe .: 4 stappe
Video: Робот пылесос iRobot Roomba 966 2024, Julie
Anonim
Image
Image

Om die WiFi-UART-brug te bou, kan u hierdie github-repo besoek:

Dit het 'n goeie basis om mee te begin. Lees die riglyn goed, want die Roomba VCC tydens laai neem tot 20 volt toe! As u 'n ESP8266 byvoeg sonder 'n behoorlike omskakelaar wat selfs tot 20V werk en omskakel na 3.3V, sal u ESP beskadig word.

Maak ook seker dat u 'n niveauskakelaar (bv. Met 'n spanningsverdeler) gebruik om die 5V UART logiese vlakke van die Roomba na 3.3V te verskuif, wat deur die ESP gebruik word.

'N Ander belangrike detail is dat die boksomskakelaar 300mA moet hê, maar nog baie minder of veel meer (afhangende van die omskakelaar self). Daar is 'n paar wat baie meer stroom kan lewer, maar die Roomba kan laat val omdat dit te veel stroom trek tydens die aanvang. Ons het uitgevind dat die Pololu 3.3V, 300mA Step-Down Voltage Regulator (D24V3F3) perfek werk. Die alternatiewe weergawes met 500mA / 600mA het veroorsaak dat die Roomba UART -koppelvlak ineenstort. Eintlik het die Roomba gereageer op druk op knoppies, maar nie op opdragte via die UART -koppelvlak nie. Sodra dit gebeur, moes ons die Roomba-battery verwyder en die Roomba koud herlaai met die WiFi-UART-brug daaraan. Slegs die D24V3F3 het egter goed gewerk.

Afgesien van die tegniese detail, moet u ekstra opdragte by die kode voeg, wat u in die spesifikasies van die Roomba -oop koppelvlak kan vind. U moet alle opdragte byvoeg waarop u wil reageer (byvoorbeeld agteruit, vorentoe, snelheid, ens.).

voorbeelde binne die 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}; Reeks.afdruk (c); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Reeks.afdruk (c); }

As u in lua skryf, lyk dit 'n bietjie anders, 'n voorbeeld vir 'n LINKER draai sou so lyk:

as (_GET.pin == "LEFT") dan druk ('\ 137'); --VOR

tmr.vertraging (100);

druk ('\ 00'); -Snelheid = 200 = 0x00C8 -> 0 en 200

tmr.vertraging (100);

druk ('\ 200'); - Snelheid

tmr.vertraging (100);

druk ('\ 254'); - Radius = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.vertraging (100);

druk ('\ 12'); - Draai om

einde

Maak seker dat u die oop koppelvlakbeskrywing vir u Roomba regstel. Daar is ten minste twee oop koppelvlak spesifikasies beskikbaar.

vir Roomba 5xx -reeks:

vir Roomba 6xx -reeks:

Sodra u u WiFi-UART-brug gebou het en die opdragte getoets het, het u 'n groot stap verder gemaak. Hierdie video demonstreer dat die toepassing en benadering werk. Ons was 'n bietjie lui; die webinterface ontbreek alle ander bedieningsopdragte, soos vorentoe, agteruit, spoed, regs, links, ensovoorts, maar u kan die opdragte via http uitgee. Dit is in elk geval net 'n bewys dat die afstandsbediening van die Roomba werk met 'n maklike stuk hardeware en sagteware met behulp van 'n ESP8266.

Aangesien u u Roomba op afstand vanaf 'n rekenaarprogram kan beheer, ontbreek die binnenshuise lokalisering net. Ons het dit nodig om die terugvoerlus te sluit, want ons doel was om die robot in 'n sekere rigting te stuur. Kom ons doen dit.

Stap 3: Stel u binnenshuise lokalisasiestelsel op

Om die terugvoerlus te sluit, maak ons gebruik van 'n binnenshuise lokalisasiestelsel. Ons gebruik Localino hiervoor. Die Localino -stelsel bestaan uit 'ankers' en 'etikette'. Die ankers word op vaste plekke in die kamer geplaas en vind die posisie van die bewegende etiket (wat op die Roomba geplaas word). Die plekverwerking word uitgevoer in 'n rekenaarprogram. Dit is van groot voordeel, want u kan ook die Roomba vanaf dieselfde rekenaar beheer! Daar is gratis bronkode beskikbaar vanaf die Localino-webwerf, dit is in python geskryf en daar is ook 'n intydse stroom beskikbaar wat die XYZ-koördinate van die etiket bied. Die datastroom is beskikbaar via die UDP -netwerk, maar u kan ook MQTT of ander wonderlike dinge byvoeg. As u Python ken, is daar baie biblioteke wat u kan help.

In hierdie video word die lokalisering van die Roomba gedemonstreer. Daarom het ons vier ankers in die kamer op vaste plekke, wat 3D -posisionering van die Roomba moontlik maak. Oor die algemeen benodig ons slegs 3 ankers, want die Roomba beweeg waarskynlik nie in die Z-as nie, daarom is 2D voldoende. Maar omdat die ankers op die hoogte van die netstekkers (ongeveer 30 cm bo die grond) geleë is, sou 'n 2D -opstelling min foute in die raming van die posisie veroorsaak. Daarom het ons besluit om 4 ankers te hê en in 3D te lokaliseer.

Aangesien ons die posisie van die Roomba het, is ons volgende stap om die Roomba vanuit dieselfde toepassing te beheer. Die idee is om die grondwaarheid te gebruik en 'n perfekte skoonmaakpad vir die robot te skat. Met die gebruik van die Localino kan ons die terugvoerlus sluit en die robot beheer vanaf die PC -toepassing.

Opstelopmerkings

Plaas die Localino -ankers in die kamer op verskillende x-, y -posisies en drie daarvan op dieselfde z -posisie. Plaas een uit vier ankers op 'n ander hoogte z per kamer. Maak seker dat daar 'n goeie dekking is van die Localino -tag, wat saam met die Roomba beweeg.

Alle ankers het 'n unieke anker -ID, wat op die strepieskode van die Localino vertoon word en met die instrument "localino -opset" gelees kan word.

Let op die posisies in X, Y, Z en die anker -ID's. Dit is nodig vir die Localino -verwerkersagteware en moet aangepas word in die 'localino.ini' -lêer in die gids' LocalinoProcessor '

Die ankers moet opwaarts of afwaarts wys in Z (wanneer XY -gebied bedek is), maar nie in die rigting van die bedekte gebied nie. Die ankers moet ook nie bedek wees met metaal of enige ander draadlose sein wat materiaal versteur nie. As dit nie moontlik is nie, moet daar ook 'n sekere lugspasie tussen materiaal en anker wees.

… meer kom.

Stap 4: Pas die Python -sagteware aan

bly ingeskakel. meer kom.

Aanbeveel: