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, Studeni
Anonim
Image
Image

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

Ima lijepu osnovu za početak. Dobro 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 upotrijebite prekidač razine (npr. Pomoću razdjelnika napona) za prebacivanje 5V UART logičkih razina s Roombe na 3.3V, koje koristi ESP.

Drugi važan detalj je da bi pretvarač dolara trebao imati 300mA, ali puno manje ili mnogo više (ovisno o samom pretvaraču dolara). Postoje neki koji mogu učiniti mnogo više struje, ali uzrokovati 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 sustava Roomba UART sučelja. U osnovi je Roomba reagirala na pritisak gumba, ali ne i na naredbe putem UART sučelja. Nakon što se to dogodilo, morali smo izvaditi Roombinu bateriju i hladno ponovno pokrenuti Roombu s priključenim WiFi-UART mostom. Međutim, samo je D24V3F3 dobro radio.

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}; Serijski.ispis (c); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serijski.ispis (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.odgoda (100);

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

tmr.odgoda (100);

print ('\ 200'); - Brzina

tmr.odgoda (100);

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

tmr.odgoda (100);

print ('\ 12'); -- Skretanje

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 pokazuje da primjena i pristup funkcioniraju. Bili smo pomalo lijeni, web sučelju nedostaju sve ostale naredbe za upravljanje, poput naprijed, natrag, brzina, desno, lijevo i tako dalje, ali naredbe možete izdati putem http. U svakom slučaju, to je samo demonstracija da daljinski upravljač Roombe radi s lakim komadom hardvera i softvera pomoću ESP8266.

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

Korak 3: Postavite svoj sustav lokalizacije u zatvorenom prostoru

Kako bismo zatvorili petlju povratnih informacija, koristimo unutarnji sustav lokalizacije. Za to koristimo Localino. Localino sustav sastoji se od "sidra" i "oznaka". Sidra su postavljena na fiksna mjesta u prostoriji i lociraju položaj pomične oznake (koja se postavlja na Roombu). Obrada lokacije vrši se u računalnoj aplikaciji. To je velika prednost jer i Roombom možete upravljati s istog računala! Besplatni izvorni kod dostupan je s web stranice Localino, 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 mjestima, koja omogućuju 3D pozicioniranje Roombe. Općenito, bila bi nam potrebna samo 3 sidra, jer se Roomba vjerojatno neće kretati po osi Z, stoga bi 2D bilo dovoljno. No, budući da se sidra nalaze na visini AC utikača (što je približno 30 cm iznad zemlje), 2D postavljanje uzrokovalo bi male pogreške u procjeni položaja. Stoga smo odlučili imati 4 sidra i lokalizirati ih u 3D.

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. Pomoću Localina možemo zatvoriti povratnu spregu i upravljati robotom iz računalne aplikacije.

Napomene o postavljanju

Lokalna sidra postavite unutar prostorije 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 Localina i može se očitati pomoću alata "localino konfiguracija".

Zabilježite položaje 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, također bi trebao postojati određeni zračni razmak između bilo kojeg materijala i sidra.

… slijedi još.

Korak 4: Prilagodite softver Python

ostanite s nama. još slijedi.

Preporučeni: