Cuprins:
Video: Localino Tracks Roomba IRobot, mapează mediul și permite controlul .: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
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:
Controlul Ledului prin intermediul aplicației Blynk folosind Nodemcu prin internet: 5 pași
Controlul Ledului prin intermediul aplicației Blynk folosind Nodemcu prin Internet: Bună ziua tuturor Astăzi vă vom arăta cum puteți controla un LED folosind un smartphone pe internet
Permite remedierea unei taxe Fitbit 2 împreună. Linii în ecran .: 3 pași
Permite remedierea unei taxe Fitbit 2 împreună. Linii în ecran .: Deci, la aproximativ 13 monturi după ce am cumpărat primul meu Fitbit, am început să primesc linii care treceau pe ecran. În fiecare zi, altul ar apărea uneori mai mult decât unul pe zi. M-am gândit foarte bine și nu știam de ce a început. o singura data
Cum se configurează mediul de programare AVR pe Linux: 5 pași
Cum se configurează mediul de programare AVR pe Linux: Dacă doriți să programați microcontrolere AVR pe Windows, aveți un Studio, dar pe Linux tot ce avem este un tip. AVRDUDE este interfața liniei de comandă pentru a programa cipuri AVR, poate fi puțin dificil pentru a configura la început. În acest instructabil, voi fi s
Mediul ostil Caz Mp3: 9 pași
Carcasă Mp3 pentru mediu ostil: Am creat o carcasă de protecție pentru a păstra noul meu Creative Zen V Plus în siguranță de elementele ostile într-un mediu de sudură. Cele trei elemente cu care m-am preocupat cel mai mult sunt: scânteile de sudură, șrapnelele de măcinat și praful metalic. Scânteile de sudură pot fi fierbinți
Mediul de dezvoltare a ghetoului: 5 pași
Ghetto Development Environment: Cu ceva timp în urmă, am publicat un „el cheapo” rapid și murdar metodă de pornire a programării jetoanelor din seria AVR Atmel: Ghetto Programmer (versiunea 1.0) De atunci, am modificat, am refăcut și altfel am îmbunătățit configurarea. Am crezut că va fi