Turinys:

„Localino“seka „Roomba IRobot“, suplanuoja aplinką ir leidžia valdyti .: 4 žingsniai
„Localino“seka „Roomba IRobot“, suplanuoja aplinką ir leidžia valdyti .: 4 žingsniai

Video: „Localino“seka „Roomba IRobot“, suplanuoja aplinką ir leidžia valdyti .: 4 žingsniai

Video: „Localino“seka „Roomba IRobot“, suplanuoja aplinką ir leidžia valdyti .: 4 žingsniai
Video: Справка: Запуск автономных дронов для проверки на складе 2024, Liepa
Anonim
Image
Image

Norėdami sukurti „WiFi-UART“tiltą, galite patikrinti šią „Github“repą:

Tai turi gražų pagrindą pradėti. Būtinai gerai perskaitykite gaires, nes įkrovimo metu „Roomba VCC“padidėja iki 20 voltų! Jei pridėsite ESP8266 be tinkamo „Buck“keitiklio, kuris veikia net iki 20 V, o žemyn-iki 3,3 V, sugadinsite savo ESP.

Taip pat būtinai naudokite lygio perjungiklį (pvz., Naudodami įtampos skirstytuvą), kad perkeltumėte 5 V UART logikos lygius iš „Roomba“į 3,3 V, kuriuos naudoja ESP.

Kita svarbi detalė yra ta, kad kainų keitiklis turėtų turėti 300 mA, bet daug mažiau arba daug daugiau (priklausomai nuo paties keitiklio). Kai kurie iš jų gali padaryti daug didesnę srovę, tačiau gali sukelti „Roomba“gedimą, nes jie paleidžia per daug srovės paleidimo metu. Mes sužinojome, kad „Pololu 3.3V, 300mA Step-Down Voltage Regulator“(D24V3F3) veikia puikiai. Alternatyvios versijos, turinčios 500 mA / 600 mA, sukėlė „Roomba UART“sąsajos gedimą. Iš esmės „Roomba“reagavo paspaudus mygtuką, bet ne į komandas per UART sąsają. Kai tai atsitiko, turėjome išimti „Roomba“bateriją ir šaltai iš naujo paleisti „Roomba“su prijungtu „WiFi-UART“tiltu. Tačiau gerai veikė tik D24V3F3.

Be šios techninės detalės, prie kodo turite pridėti papildomų komandų, kurias rasite „Roomba“atvirosios sąsajos specifikacijose. Turėsite pridėti visas komandas, į kurias norite, kad jūsų „roomba“reaguotų (pvz., Atgal, pirmyn, greitį ir pan.).

„arduino IDE“pavyzdžiai:

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}; Serijinis atspaudas (c); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serijinis atspaudas (c); }

jei rašote lua, tai atrodo šiek tiek kitaip, posūkio į kairę pavyzdys atrodytų taip:

jei (_GET.pin == "LEFT"), tada spausdinkite ('\ 137'); -VOR

tmr.delsimas (100);

spausdinti ('\ 00'); -Greitis = 200 = 0x00C8 -> 0 ir 200

tmr.delsimas (100);

spausdinti ('\ 200'); - Greitis

tmr.delsimas (100);

spausdinti ('\ 254'); - Spindulys = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delsimas (100);

spausdinti ('\ 12'); - Pasukite

galas

Įsitikinkite, kad turite ištaisyti „Roomba“atviros sąsajos aprašą. Yra bent dvi atviros sąsajos specifikacijos.

„Roomba 5xx“serijai:

„Roomba 6xx“serijai:

Sukūrę „WiFi-UART“tiltą ir išbandę komandas, padarytas didelis žingsnis toliau. Šis vaizdo įrašas parodo, kad programa ir metodas veikia. Mes buvome šiek tiek tingūs, žiniatinklio sąsajoje trūksta visų kitų valdymo komandų, tokių kaip pirmyn, atgal, greičio, dešinės, kairės ir pan., Tačiau komandas galite išduoti per http. Bet kokiu atveju, tai tik parodymas, kad „Roomba“nuotolinio valdymo pultas veikia su paprasta aparatine ir programine įranga, naudojant ESP8266.

Dabar, kai galite valdyti „Roomba“nuotoliniu būdu iš kompiuterio programos, trūksta tik patalpų lokalizacijos. Mums to reikia norint uždaryti grįžtamojo ryšio ciklą, nes mūsų tikslas buvo nukreipti robotą tam tikra kryptimi. Padarykime tai.

3 veiksmas: nustatykite patalpų lokalizavimo sistemą

Norėdami uždaryti grįžtamojo ryšio ciklą, naudojame patalpų lokalizavimo sistemą. Tam naudojame „Localino“. „Localino“sistemą sudaro „inkarai“ir „žymos“. Inkarai yra fiksuotose vietose kambario viduje ir nustato judančios žymės padėtį (kuri yra ant „Roomba“). Vietos apdorojimas atliekamas kompiuterio programoje. Tai labai naudinga, nes jūs taip pat galite valdyti „Roomba“iš to paties kompiuterio! „Localino“svetainėje yra nemokamas šaltinio kodas, jis parašytas „python“, taip pat yra srautas realiuoju laiku, siūlantis žymos XYZ koordinates. Duomenų srautą galima pasiekti per UDP tinklą, tačiau taip pat galite pridėti MQTT ar bet kurį kitą mėgstamą dalyką. Jei pažįstate „Python“, yra daugybė bibliotekų, kurios jums padeda.

Šiame vaizdo įraše parodyta „Roomba“lokalizacija. Todėl mes turime 4 inkarus, esančius patalpoje fiksuotose vietose, leidžiančias 3D išdėstyti „Roomba“. Apskritai mums prireiktų tik 3 inkarų, nes „Roomba“greičiausiai nejudės Z ašyje, todėl pakaktų 2D. Bet kadangi inkarai yra kintamosios srovės kištukų aukštyje (maždaug 30 cm virš žemės), 2D sąranka sukeltų mažai padėties įvertinimo klaidų. Taigi mes nusprendėme turėti 4 inkarus ir lokalizuoti 3D.

Dabar, kai turime „Roomba“poziciją, kitas žingsnis yra valdyti „Roomba“iš tos pačios programos. Idėja yra pasinaudoti pagrindine tiesa ir įvertinti tobulą roboto valymo kelią. Naudodami „Localino“galime uždaryti grįžtamojo ryšio ciklą ir valdyti robotą iš kompiuterio programos.

Sąrankos pastabos

Padėkite „Localino“inkarus kambario viduje skirtingose x, y padėtyse ir tris iš jų toje pačioje z padėtyje. Padėkite vieną iš keturių inkarų skirtingame aukštyje z kiekviename kambaryje. Įsitikinkite, kad „Localino“žyma, kuri bus perkelta kartu su „Roomba“, yra gerai padengta.

Visi inkarai turi unikalų inkaro ID, kuris rodomas „Localino“brūkšniniame kode ir kurį galima nuskaityti naudojant „localino configuration“įrankį.

Atkreipkite dėmesį į X, Y, Z pozicijas ir inkaro ID. Tai reikalinga „Localino“procesoriaus programinei įrangai ir turi būti pritaikyta aplanke „LocalinoProcessor“esančiame faile „localino.ini“.

Inkarai turi būti nukreipti aukštyn arba žemyn Z (kai XY zona yra padengta), bet ne dengtos zonos kryptimi. Inkarai taip pat neturėtų būti uždengti metalu ar bet kokia kita belaidį signalą trikdančia medžiaga. Jei tai neįmanoma, tarp bet kokios medžiagos ir inkaro taip pat turėtų būti tam tikras oro tarpas.

… dar ateis.

4 žingsnis: pritaikykite „Python“programinę įrangą

sekite naujienas. daugiau ateis.

Rekomenduojamas: