Cuprins:

Localino Tracks Roomba IRobot, mapează mediul și permite controlul .: 4 pași
Localino Tracks Roomba IRobot, mapează mediul și permite controlul .: 4 pași

Video: Localino Tracks Roomba IRobot, mapează mediul și permite controlul .: 4 pași

Video: Localino Tracks Roomba IRobot, mapează mediul și permite controlul .: 4 pași
Video: Отзыв и обзор iRobot Roomba 780. Робот-пылесос от iRobot. 2024, Iulie
Anonim
Image
Image

Pentru a construi podul WiFi-UART, puteți verifica acest repo github:

Are o bază drăguță pentru început. Asigurați-vă că ați citit bine ghidul, deoarece Roomba VCC în timpul încărcării crește până la 20 de volți! Dacă adăugați un ESP8266 fără un convertor adecvat care funcționează chiar și până la 20V și convertește în jos la 3,3V, vă veți deteriora ESP-ul.

De asemenea, asigurați-vă că utilizați un schimbător de nivel (de exemplu, folosind un divizor de tensiune) pentru a schimba nivelurile logice UART de 5V de la Roomba la 3,3V, care sunt utilizate de ESP.

Un alt detaliu important este că convertorul Buck ar trebui să aibă 300mA, dar nu mult sau mai puțin (în funcție de convertorul Buck în sine). Există unele care pot face mult mai mult curent, dar pot provoca blocarea Roomba, deoarece atrag prea mult curent în timpul pornirii. Am aflat că regulatorul Pololu 3.3V, 300mA Step-Down Voltage Regulator (D24V3F3) funcționează perfect. Versiunile alternative care au 500mA / 600mA au provocat blocarea interfeței Roomba UART. Practic, Roomba reacționa la apăsarea butonului, dar nu la comenzile prin interfața UART. Odată ce s-a întâmplat, a trebuit să scoatem bateria Roomba și să repornim la rece Roomba cu puntea WiFi-UART atașată. Cu toate acestea, doar D24V3F3 a funcționat bine.

În afară de acest detaliu tehnic, trebuie să adăugați comenzi suplimentare la cod, pe care le puteți găsi în specificațiile interfeței deschise Roomba. Va trebui să adăugați toate comenzile la care doriți să reacționeze camera dvs. (de exemplu, înapoi, înainte, viteză etc.).

exemple în IDE-ul arduino:

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

dacă scrii în lua, arată un pic diferit, un exemplu pentru un viraj STÂNGA ar arăta astfel:

if (_GET.pin == "STÂNGA") atunci print ('\ 137'); --VOR

tmr.delay (100);

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

tmr.delay (100);

print ('\ 200'); -- Viteză

tmr.delay (100);

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

tmr.delay (100);

print ('\ 12'); - Întoarce-te

Sfârșit

Asigurați-vă că trebuie să corectați descrierea interfeței deschise pentru Roomba. Sunt disponibile cel puțin două specificații ale interfeței deschise.

pentru seria Roomba 5xx:

pentru seria Roomba 6xx:

Odată ce ați construit podul WiFi-UART și ați testat comenzile, ați făcut un pas mare mai departe. Acest videoclip demonstrează că aplicația și abordarea funcționează. Eram puțin leneși, interfeței web lipsesc toate celelalte comenzi de control, cum ar fi înainte, înapoi, viteză, dreapta, stânga și așa mai departe, dar puteți emite comenzile prin http. Oricum, este doar o demonstrație că telecomanda Roomba funcționează cu o piesă ușoară de hardware și software folosind un ESP8266.

Acum, deoarece vă puteți controla Roomba de la distanță de la o aplicație pentru PC, singurul lucru care lipsește este localizarea interioară. Avem nevoie de acest lucru pentru a închide bucla de feedback, deoarece scopul nostru a fost să orientăm robotul către o anumită direcție. Să o facem.

Pasul 3: configurați sistemul de localizare interior

Pentru a închide bucla de feedback folosim un sistem de localizare în interior. Pentru aceasta folosim Localino. Sistemul Localino este format din „ancore” și „etichete”. Ancorele sunt poziționate în locuri fixe din interiorul camerei și localizează poziția etichetei în mișcare (care este plasată pe Roomba). Procesarea locației se face într-o aplicație pentru computer. Acesta este un mare avantaj, deoarece puteți controla și Roomba de pe același computer! Există un cod sursă gratuit disponibil de pe site-ul Localino, este scris în python și există, de asemenea, un flux în timp real care oferă coordonatele XYZ ale etichetei. Transmisia de date este disponibilă prin rețeaua UDP, dar puteți adăuga, de asemenea, MQTT sau orice alte lucruri fanteziste care vă plac. Dacă știți Python, există o grămadă de biblioteci care vă ajută.

În acest videoclip, este demonstrată localizarea Roomba. Prin urmare, avem 4 ancore configurate în cameră în locații fixe, care permit poziționarea 3D a Roomba. În general, am avea nevoie doar de 3 ancore, deoarece Roomba probabil nu se va mișca în axa Z, prin urmare 2D ar fi suficient. Dar, deoarece ancorele sunt situate la înălțimea prizelor principale de CA (care este la aproximativ 30 cm deasupra solului), o configurare 2D ar provoca mici erori de estimare a poziției. Așa că am decis să avem 4 ancore și să localizăm în 3D.

Acum, pe măsură ce avem poziția Roomba, următorul nostru pas este să controlăm Roomba din aceeași aplicație. Ideea este de a folosi adevărul terenului și de a estima o cale perfectă de curățare pentru robot. Cu ajutorul aplicației Localino putem închide bucla de feedback și putem controla robotul din aplicația pentru computer.

Observații de configurare

Poziționați ancorele Localino în interiorul camerei în diferite poziții x, y și trei dintre ele în aceeași poziție z. Poziționați una din patru ancore la o înălțime diferită z pe cameră. Asigurați-vă că există o acoperire bună din eticheta Localino, care se va deplasa cu Roomba.

Toate ancorele au un ID de ancorare uniqe, care este afișat pe codul de bare al Localino și poate fi citit cu instrumentul „configurație localino”.

Rețineți pozițiile în X, Y, Z și ID-urile ancorei. Acest lucru este necesar pentru software-ul Localino Processor și trebuie adaptat în fișierul „localino.ini” din folderul „LocalinoProcessor”

Ancorele trebuie să fie orientate în sus sau în jos în Z (când zona XY este acoperită), dar nu în direcția zonei acoperite. Ancorele nu ar trebui, de asemenea, să fie acoperite de metal sau de orice alt material fără fir care să perturbe semnalul. Dacă acest lucru nu este posibil, ar trebui să existe și un anumit spațiu de aer între orice material și ancoră.

…urmeaza.

Pasul 4: Adaptați software-ul Python

Rămâneți aproape. urmeaza.

Recomandat: