Cuprins:

Roomba Scout Explorer: 8 pași
Roomba Scout Explorer: 8 pași

Video: Roomba Scout Explorer: 8 pași

Video: Roomba Scout Explorer: 8 pași
Video: Little Big Shots Philippines: Steven | 11-year-old Boy Scout 2024, Iulie
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Fiind unul dintre cele mai așteptate și mai cercetate proiecte americane, proiectele Mars rover au devenit realizări umane în producția continuă de sisteme autonome de înaltă tehnologie, cu singurul scop de a investiga și interpreta masele terestre și suprafețele planetei roșii din spatele lor. pământul. Ca parte a unui proiect mai personal în omagierea misiunilor de pe Marte, obiectivul nostru a fost să creăm un robot roomba care să poată acționa autonom într-un anumit interval de timp și să reacționeze în consecință la anumite criterii din vecinătatea sa.

În ceea ce privește unicitatea, ne-am concentrat pe crearea unei diagrame care să arate fiecare cale pe care robotul o ia de la origini. În plus, robotul va putea să numere numărul de obiecte din vecinătatea sa într-un stil panoramic.

Pasul 1: Echipament

-Roomba cu cameră atașabilă (cu numele specific cunoscut)

-Server conectat

-Windows 10 / Mac cu conectivitate la internet

-Plataforma strălucitoare

- Podea întunecată

-Orice obiecte rătăcite de design monocromatic

Pasul 2: Configurarea MATLAB

Configurare MATLAB
Configurare MATLAB

Pentru a crea sarcini și funcții pentru roomba dvs., trebuie să aveți codurile și seturile de instrumente specifice care conțin comenzile roomba.

Cu MATLAB 2016a și ulterior descărcat, creați un folder pentru a conține aceste fișiere robot și introduceți următorul fișier MATLAB de mai jos în folder și rulați-l pentru a instala fișierele roomba necesare rămase.

După aceea, faceți clic dreapta în fereastra Folder curent, plasați mouse-ul peste „Adăugați o cale” și faceți clic pe „Folder curent”. Acum, ar trebui configurat un traseu astfel încât fiecare dintre aceste fișiere să fie utilizat pentru a activa roomba.

Acum, utilizați comanda de mai jos în fereastra de comandă pentru a configura roomba:

r = roomba (#).

Simbolul # este „numărul” camerei specificate; totuși, dacă doriți doar un simulator al roomba, pur și simplu tastați următoarea comandă:

r = roomba (0).

Simularea ar fi recomandată pentru testarea modelelor de mișcare.

Dacă sunteți curios cu privire la ce comenzi poate urma roomba, tastați următoarele în fereastra de comandă:

doc roomba.

Pentru mai multe detalii, vizitați următorul site web:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Pasul 3: Funcție: Mișcare

Funcție: mișcare
Funcție: mișcare
Funcție: mișcare
Funcție: mișcare

În ceea ce privește mișcarea, roomba ar trebui să se deplaseze automat pentru o perioadă de timp stabilită în intrări. Scopul mișcării robotului este de a reacționa corect atunci când senzorii săi (bare de protecție, bare de protecție a luminii și senzori de stâncă) se schimbă în prezența diferitelor obstacole. Această parte ar acționa ca bază pentru toate comenzile roomba, deoarece mai multe caracteristici la cod sunt adăugate mai târziu. Au fost necesare câteva specificații:

-Pentru a reduce daunele, robotul trebuie să reducă viteza la o viteză mai mică.

-Când se apropie de o stâncă sau de un perete, robotul se va deplasa invers și își va modifica unghiul în funcție de punctul de impact

-După ceva timp conducând, roomba se va opri în cele din urmă și va face imagini cu zona înconjurătoare

Rețineți că valorile utilizate au fost în raport cu simulatorul; valori cum ar fi unghiurile de rotație vitezele de rotație și presetările senzorului robotului ar trebui modificate atunci când se utilizează robotul real pentru a asigura stabilitatea și contabilitatea pentru erorile echipamentului.

Pasul 4: Funcție: Prelucrarea imaginilor

Funcție: Prelucrarea imaginilor
Funcție: Prelucrarea imaginilor

Conform cererii, am primit sarcina de a modifica datele unei imagini (sau a mai multor imagini) primite de camera robotului, la care am decis să facem roomba să „numere” numărul de obiecte pe care le vede în imagine.

Am urmat tehnica de a face ca MATLAB să traseze limite în jurul obiectelor înnegrite care contrastează cu un fundal alb. Cu toate acestea, această funcție este predispusă să aibă dificultăți într-o zonă deschisă, deoarece diferitele forme și culori percepute de cameră, rezultând în număruri neobișnuit de mari.

Rețineți că această funcție nu poate funcționa în simulator deoarece nu este furnizată o cameră; dacă se încearcă, va apărea o eroare declarând că se poate folosi doar o matrice (:,:, 3).

Pasul 5: Funcție: Cartografiere

Funcție: Cartografiere
Funcție: Cartografiere
Funcție: Cartografiere
Funcție: Cartografiere
Funcție: Cartografiere
Funcție: Cartografiere
Funcție: Cartografiere
Funcție: Cartografiere

O caracteristică suplimentară pe care am vrut-o să aibă robotul a fost cartarea locațiilor sale, deoarece interacționează direct cu mediul. Astfel, codul de mai jos urmărește deschiderea unei hărți și configurarea unui sistem de coordonate care detaliază fiecare locație în care sunt presați senzorii barei de protecție a robotului. Aceasta s-a dovedit a fi cea mai lungă porțiune din cele trei părți de testat individual, dar s-a dovedit mult mai simplă atunci când a fost aplicată scenariului final.

Pentru a adăuga o limită la durata de funcționare a funcției, limita n <20 pe bucla while a fost utilizată în scopuri de testare.

Rețineți că, din cauza complexității codului, apar mai multe erori pe măsură ce segmentul de cod rulează mult timp; din testele anterioare, zece lovituri par a fi numărul de puncte înainte de apariția erorilor semnificative.

Pasul 6: Juxtapunere

Juxtapunere
Juxtapunere
Juxtapunere
Juxtapunere
Juxtapunere
Juxtapunere
Juxtapunere
Juxtapunere

Deoarece toate acestea vor fi plasate într-un singur fișier, am creat o funcție folosind fiecare dintre pașii anteriori ca subfuncții. A fost făcută o schiță finală cu următoarea modificare a funcției de redux numită „recon”. Pentru a evita confuzia pentru MATLAB, scripturile „counter” și „rombplot3” au fost redenumite ca funcții încorporate „CountR” și respectiv „plotr”.

Mai multe modificări trebuiau făcute în versiunea finală, spre deosebire de scripturile anterioare:

-Originea va fi întotdeauna marcată cu un cerc roșu

-De fiecare dată când roomba se oprește din bare de protecție, locația este marcată cu un cerc negru

-De fiecare dată când roomba se oprește de la senzorii de stâncă, locația este marcată cu un cerc albastru

-De fiecare dată când roomba se oprește din investigarea zonei, locația este marcată cu un cerc verde

-Imaginile sunt modificate pentru ca partea superioară să fie eliminată din cauza ștampilei de timp care ar putea interfera cu rezultatele

-Bordierele nu vor fi numărate ca obiect din cauza numărului destul de mare dobândit

-S-au schimbat mai multe variabile, deci pentru a evita confuzia folosiți versiunile de mai sus ca referință.

Pasul 7: Testare

Testarea
Testarea

Testele pentru fiecare componentă individuală s-au dovedit uneori destul de amestecate, motiv pentru care au fost necesare modificări la anumite valori prestabilite. Fundalul tematic pe care am vrut să testăm capacitățile robotului într-o zonă închisă a constat pur și simplu dintr-o tablă albă așezată pe o podea mult mai întunecată. Puteți împrăștia obiectele în jurul zonei; faceți-i să acționeze ca obiecte care trebuie lovite sau obiecte îndepărtate de zona de mișcare a robotului.

După stabilirea timpului regulat și a vitezei de bază, roomba a demonstrat un comportament de mișcare adecvat, oprindu-se și retrăgându-se de la fiecare „stâncă” sau obiect în care se ridică, precum și încetinind în timp ce detecta ceva aproape. La atingerea distanței de deplasare dorite de trei metri, robotul va continua să oprească și să evalueze zona, realizând imagini ale fiecărei regiuni de 45 de grade și va continua înainte dacă timpul ne permite. Cu toate acestea, rândurile sale au apărut mai mari decât cele solicitate, ceea ce înseamnă că datele coordonatelor vor fi ascunse.

De fiecare dată când se oprește, un nou punct a fost plasat în regiunea aproximativă a poziției sale pe sistemul de coordonate; cu toate acestea, se observă că direcția inițială de la care începe roomba joacă un rol esențial în proiectarea hărții. Dacă o caracteristică a busolei ar putea fi implementată, aceasta ar fi fost utilizată ca o parte crucială a proiectării hărții.

Timpul real pe care funcția îl execută complet depășește întotdeauna timpul solicitat, ceea ce are sens având în vedere că nu se poate opri în mijlocul uneia dintre recuperările sale. Din păcate, această versiune de numărare a imaginilor are problemele sale, în special în zonele care sunt în mare parte monocromatice sau cu luminozitate diferită; pentru că încearcă să facă distincția între două nuanțe, tinde să perceapă obiecte care nu sunt dorite, prin urmare întotdeauna se numără până la numere extrem de mari.

Pasul 8: Concluzie

Concluzie
Concluzie

În timp ce această sarcină a fost o lucrare foarte aventuroasă și creativă care a adus bucurie de ușurare, eu, din observațiile mele personale, am putut vedea un număr mare de erori care ar putea fi problematice, atât în cod cât și în comportamentul robotului.

Limitarea utilizării specificației timpului în bucla while face ca durata totală a timpului să fie mai lungă decât dorită; procesul tehnicii panoramice și procesarea imaginilor ar putea dura, de fapt, mai mult dacă este rulat de un computer lent sau nu a fost utilizat în prealabil. În plus, roomba care a fost utilizată în prezentarea noastră a acționat cu un număr mare de erori, în special în mișcare, în comparație cu simulatorul. Din păcate, robotul folosit a avut tendința de a se înclina ușor spre stânga, în timp ce conducea drept și făcea viraje mai mari decât dorea. Din acest motiv și multe altele, este foarte recomandat ca, pentru a compensa aceste erori, să se facă modificări pentru unghiurile sale de viraj.

Cu toate acestea, acesta este un proiect lung, dar stimulant intelectual, care a acționat ca o experiență de învățare interesantă pentru aplicarea codurilor și comenzilor pentru a afecta direct comportamentul unui robot real.

Recomandat: