Sadržaj:

Localino prati Roomba IRobot, mapira okoliš i omogućuje kontrolu .: 4 koraka
Localino prati Roomba IRobot, mapira okoliš i omogućuje kontrolu .: 4 koraka

Video: Localino prati Roomba IRobot, mapira okoliš i omogućuje kontrolu .: 4 koraka

Video: Localino prati Roomba IRobot, mapira okoliš i omogućuje kontrolu .: 4 koraka
Video: Насыпьте Соду на Матрас и Посмотрите, Что Произойдет 2024, Novembar
Anonim
Image
Image

Da biste izgradili WiFi-UART most, možete pogledati ovaj github repo:

Ima lijepu osnovu za početak. Pažljivo pročitajte smjernice jer Roomba VCC tijekom punjenja povećava do 20 volti! Ako dodate ESP8266 bez odgovarajućeg pretvarača dolara koji radi čak i do 20 V i pretvara u dolje u 3,3 V, oštetit ćete svoj ESP.

Također se pobrinite da upotrijebite prekidač nivoa (npr. Pomoću razdjelnika napona) za prebacivanje 5V UART logičkih nivoa s Roombe na 3.3V, koje koristi ESP.

Još jedan važan detalj je da bi konverter dolara trebao imati 300mA, ali mnogo manje ili mnogo više (ovisno o samom konverteru dolara). Postoje neki koji mogu učiniti mnogo više struje, ali uzrokuju rušenje Roombe jer crpe previše struje tijekom pokretanja. Otkrili smo da Pololu 3.3V, 300mA Regulator napona (D24V3F3) radi savršeno. Alternativne verzije koje imaju 500mA / 600mA uzrokovale su pad Roomba UART sučelja. U osnovi, Roomba je reagirala na pritisak gumba, ali ne i na naredbe putem UART sučelja. Kad se to dogodilo, morali smo izvaditi Roombinu bateriju i hladno ponovno pokrenuti Roombu s priključenim WiFi-UART mostom. Međutim, samo je D24V3F3 radio dobro.

Osim tehničkih detalja, kodu morate dodati dodatne naredbe koje možete pronaći u specifikacijama otvorenog sučelja Roombe. Morat ćete dodati sve naredbe na koje želite da vaša roomba reagira (na primjer, unatrag, naprijed, brzinu itd.).

primjeri unutar arduino IDE -a:

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

ako napišete lua izgleda malo drugačije, primjer za skretanje LIJEVO bi izgledao ovako:

if (_GET.pin == "LEFT") then print ('\ 137'); --VOR

tmr.delay (100);

print ('\ 00'); -Brzina = 200 = 0x00C8 -> 0 i 200

tmr.delay (100);

print ('\ 200'); - Brzina

tmr.delay (100);

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

tmr.delay (100);

print ('\ 12'); - Skreni

kraj

Provjerite morate li ispraviti otvoreni opis sučelja za svoju Roombu. Dostupne su najmanje dvije specifikacije otvorenog sučelja.

za Roomba 5xx seriju:

za Roomba 6xx seriju:

Nakon što ste izgradili svoj WiFi-UART most i testirali naredbe, napravili ste veliki korak dalje. Ovaj video prikazuje da aplikacija i pristup funkcioniraju. Bili smo pomalo lijeni, web sučelju nedostaju sve ostale upravljačke naredbe, poput naprijed, nazad, brzina, desno, lijevo i tako dalje, ali naredbe možete izdati putem http -a. U svakom slučaju, to je samo demonstracija da daljinski upravljač Roombe radi s lakim komadom hardvera i softvera koristeći ESP8266.

Budući da Roombom možete daljinski upravljati iz računalne aplikacije, jedino što nedostaje je lokalizacija u zatvorenom prostoru. Ovo nam je potrebno da zatvorimo povratnu spregu, jer nam je cilj bio usmjeriti robota u određenom smjeru. Uradimo ovo.

Korak 3: Postavite svoj sistem lokalizacije u zatvorenom prostoru

Da bismo zatvorili petlju povratnih informacija, koristimo unutarnji sistem lokalizacije. Za to koristimo Localino. Localino sistem se sastoji od "sidra" i "oznaka". Sidra se postavljaju na fiksne lokacije u prostoriji i lociraju položaj pokretne oznake (koja se postavlja na Roombu). Obrada lokacije se vrši u PC aplikaciji. To je velika prednost, jer Roombom možete upravljati i s istog računara! Besplatni izvorni kod dostupan je na lokalnoj web stranici, napisan je na pythonu, a dostupan je i stream u stvarnom vremenu koji nudi XYZ koordinate oznake. Prijenos podataka dostupan je putem UDP mreže, ali možete dodati i MQTT ili bilo koju drugu otmjenu stvar koja vam se sviđa. Ako poznajete Python, postoje hrpe biblioteka koje vam mogu pomoći.

U ovom videu prikazana je lokalizacija Roombe. Stoga imamo 4 sidra postavljena u prostoriji na fiksnim lokacijama, koja omogućuju 3D pozicioniranje Roombe. Općenito, bila bi nam potrebna samo 3 sidra, jer se Roomba vjerojatno neće kretati po Z-osi, pa bi 2D bilo dovoljno. No, budući da se sidra nalaze na visini glavnih utikača naizmjenične struje (što je približno 30 cm iznad zemlje), 2D postavljanje uzrokovalo bi male greške u procjeni položaja. Stoga smo odlučili imati 4 sidra i lokalizirati ih u 3D -u.

Budući da imamo poziciju Roombe, naš sljedeći korak je kontrola Roombe iz iste aplikacije. Ideja je iskoristiti prizemnu istinu i procijeniti savršenu putanju čišćenja robota. Korištenjem Localina možemo zatvoriti povratnu spregu i upravljati robotom iz PC aplikacije.

Napomene o postavljanju

Postavite Localino sidra u prostoriju na različite položaje x, y, a tri od njih u isti položaj z. Postavite jedno od četiri sidra na različitim visinama z po prostoriji. Pobrinite se da postoji dobra pokrivenost od oznake Localino, koja će se kretati s Roombom.

Sva sidra imaju jedinstveni ID sidra, koji je prikazan na crtičnom kodu Localino -a i može se očitati pomoću alata „localino konfiguracija“.

Zabilježite pozicije u X, Y, Z i ID -ove sidra. To je potrebno za softver Localino procesora i mora se prilagoditi u datoteci “localino.ini” u mapi “LocalinoProcessor”

Sidra trebaju biti usmjerena prema gore ili prema dolje u Z (kada je pokriveno područje XY), ali ne u smjeru pokrivenog područja. Sidra također ne smiju biti prekrivena metalom ili bilo kojim drugim materijalom koji ometa bežični signal. Ako to nije moguće, trebao bi postojati i određeni zračni razmak između bilo kojeg materijala i sidra.

… slijedi još.

Korak 4: Prilagodite softver Python

budite u toku. slijedi još.

Preporučuje se: