Kazalo:

Localino sledi Roomba IRobot, preslika okolje in omogoča nadzor .: 4 koraki
Localino sledi Roomba IRobot, preslika okolje in omogoča nadzor .: 4 koraki

Video: Localino sledi Roomba IRobot, preslika okolje in omogoča nadzor .: 4 koraki

Video: Localino sledi Roomba IRobot, preslika okolje in omogoča nadzor .: 4 koraki
Video: Стоит ли покупать робот-пылесос? Mi Robot Vacuum-Mop - обзор и опыт эксплуатации 2024, Julij
Anonim
Image
Image

Če želite zgraditi most WiFi-UART, si lahko ogledate ta github repo:

Za začetek ima lepo podlago. Dobro preberite smernice, saj se Roomba VCC med polnjenjem poveča do 20 voltov! Če dodate ESP8266 brez ustreznega pretvornika dolarjev, ki deluje tudi do 20 V in se navzdol pretvori v 3,3 V, boste poškodovali svoj ESP.

Prav tako uporabite menjalnik nivoja (na primer z delilnikom napetosti) za prestavljanje 5V logičnih ravni UART iz Roombe na 3.3V, ki jih uporablja ESP.

Druga pomembna podrobnost je, da bi moral pretvornik dolarjev imeti 300 mA, vendar veliko manj ali veliko več (odvisno od samega pretvornika). Obstaja nekaj, ki lahko naredijo veliko več toka, vendar povzročijo, da se Roomba zruši, ker med zagonom črpajo preveč toka. Ugotovili smo, da regulator Pololu 3.3V, 300mA Step-Down Voltage Regulator (D24V3F3) deluje popolnoma odlično. Alternativne različice s 500mA / 600mA so povzročile zrušitev vmesnika Roomba UART. Roomba je v bistvu reagirala na pritisk gumba, ne pa na ukaze prek vmesnika UART. Ko se je to zgodilo, smo morali odstraniti baterijo Roombe in znova hladilno znova zagnati Roombo s priključenim mostom WiFi-UART. Vendar je dobro deloval le D24V3F3.

Poleg teh tehničnih podrobnosti morate kodi dodati še dodatne ukaze, ki jih najdete v specifikacijah odprtega vmesnika Roomba. Dodati boste morali vse ukaze, na katere želite, da se vaša roomba odzove (na primer nazaj, naprej, hitrost itd.).

primeri v 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); }

če napišete lua, je videti nekoliko drugače, bi bil primer za zavoj v levo videti takole:

if (_GET.pin == "LEFT") potem natisni ('\ 137'); --VOR

tmr.lay (100);

print ('\ 00'); -Hitrost = 200 = 0x00C8 -> 0 in 200

tmr.lay (100);

print ('\ 200'); - Hitrost

tmr.lay (100);

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

tmr.lay (100);

print ('\ 12'); -- Obrat

konec

Poskrbite, da morate popraviti opis odprtega vmesnika za vašo Roombo. Na voljo sta vsaj dve specifikaciji odprtega vmesnika.

za serijo Roomba 5xx:

za serijo Roomba 6xx:

Ko ste zgradili most WiFi-UART in preizkusili ukaze, ste naredili velik korak naprej. Ta video prikazuje, da aplikacija in pristop delujeta. Bili smo nekoliko leni, na spletnem vmesniku manjkajo vsi drugi nadzorni ukazi, na primer naprej, nazaj, hitrost, desno, levo itd., Ukaze pa lahko izdate prek http. Kakorkoli že, to je le dokaz, da daljinski upravljalnik Roombe deluje z enostavnim delom strojne in programske opreme z uporabo ESP8266.

Ker lahko Roombo upravljate na daljavo iz računalniške aplikacije, manjka le še notranja lokalizacija. To potrebujemo, da zapremo povratno zanko, ker je bil naš cilj usmeriti robota v določeno smer. Naredimo to.

3. korak: Nastavite svoj notranji lokalizacijski sistem

Za zapiranje povratne zanke uporabljamo notranji lokalizacijski sistem. Za to uporabljamo Localino. Sistem Localino je sestavljen iz "sidrov" in "oznak". Sidra so nameščena na fiksnih lokacijah v prostoru in locirajo položaj premične oznake (ki je nameščena na Roombi). Obdelava lokacije se izvaja v računalniški aplikaciji. To je velika prednost, saj lahko Roombo upravljate tudi iz istega računalnika! Na spletni strani Localino je na voljo brezplačna izvorna koda, napisana je v pythonu, na voljo pa je tudi tok v realnem času, ki ponuja koordinate oznake XYZ. Podatkovni tok je na voljo prek omrežja UDP, lahko pa dodate tudi MQTT ali katero koli drugo domišljijo, ki vam je všeč. Če poznate Python, vam je v veliko kup knjižnic.

V tem videu je prikazana lokalizacija Roombe. Zato imamo v prostoru nameščena 4 sidra na fiksnih lokacijah, ki omogočajo 3D pozicioniranje Roombe. Na splošno bi potrebovali le 3 sidra, ker se Roomba verjetno ne bo premaknila po osi Z, zato bi zadostoval 2D. Ker pa se sidra nahajajo na višini glavnih vtičev AC (približno 30 cm nad tlemi), bi 2D nastavitev povzročila majhne napake pri oceni položaja. Zato smo se odločili za 4 sidra in lokalizacijo v 3D.

Zdaj, ko imamo položaj Roombe, je naslednji korak nadzor Roombe iz iste aplikacije. Ideja je uporabiti zemeljsko resnico in oceniti popolno pot čiščenja robota. Z uporabo programa Localino lahko zapremo povratno zanko in nadzorujemo robota iz računalniške aplikacije.

Opombe glede nastavitve

Sidra Localino postavite v prostor na različne položaje x, y in tri od njih na isti položaj z. Postavite eno od štirih sidrov na različno višino z na sobo. Prepričajte se, da je oznaka Localino dobra, da se bo premikala z Roombo.

Vsa sidra imajo edinstven ID sidra, ki je prikazan na črtni kodi Localino in ga je mogoče prebrati z orodjem »localino configuration«.

Upoštevajte položaje v X, Y, Z in ID -je sidra. To je potrebno za programsko opremo Localino Processor in jo je treba prilagoditi v datoteki »localino.ini« v mapi »LocalinoProcessor«

Sidra morajo biti usmerjena navzgor ali navzdol v Z (ko je območje XY pokrito), vendar ne v smeri pokritega območja. Sidra prav tako ne smejo biti pokrita s kovino ali katerim koli drugim materialom, ki moti brezžični signal. Če to ni mogoče, mora obstajati tudi določena zračna reža med katerim koli materialom in sidrom.

…še več prihaja.

4. korak: Prilagodite programsko opremo Python

ostani na vezi. še več prihaja.

Priporočena: