Satura rādītājs:

Roomba autostāvvieta Pal: 6 soļi
Roomba autostāvvieta Pal: 6 soļi

Video: Roomba autostāvvieta Pal: 6 soļi

Video: Roomba autostāvvieta Pal: 6 soļi
Video: Бат, Англия - город Бат в георгианском стиле - история прогулок и путеводитель по Бату 2024, Novembris
Anonim
Roomba autostāvvieta Pal
Roomba autostāvvieta Pal

Šis projekts izmanto iRobot Create programmējamo roomba, MATLAB r2018a un MATLAB mobile. Izmantojot šos trīs nesējus un savas zināšanas par kodēšanu, mēs ieprogrammējām iRobot Create, lai interpretētu krāsas un izmantotu iebūvētos sensorus uzdevumu izpildei. Šo projektu veikšanai ir nepieciešami Raspberry Pi un MATLAB sakari.

1. solis: materiāli

Materiāli
Materiāli
Materiāli
Materiāli

1. iRobot Izveidot robotu

2. MATLAB r2018a

3. Aveņu Pi

4. Kameras modulis

5. 3-D drukāts kameras stabilizatora statīvs

6. Viedtālrunis ar instalētu MATLAB mobilo

7. Klēpjdators/dators ar instalētu MATLAB

2. darbība. Savienojums

Šis solis ir saistīts ar Raspberry Pi pievienošanu robotam, otrkārt, robota pievienošanu datoram un viedtālruņa pievienošanu datoram.

Vienkāršākā šī procesa daļa ir Raspberry Pi savienošana ar robotu, jo Raspberry Pi ir uzstādīts robota augšpusē. No robota ir vads, kas jums tikai jāpievieno Raspberry Pi sāniem.

Nākamais solis ir robota savienošana ar datoru, lai jūs varētu izpildīt komandas, lai robots to varētu izpildīt. Pirmā lieta, kas jums jādara, ir savienot datoru ar bezvadu tīklu, ko izveido jūsu Roomba. Tagad ir ieteicams izmantot MATLAB ikonu Iestatīt ceļu, lai iestatītu ceļu, lai varētu izmantot MATLAB Roomba rīkjoslas funkcijas. Katru reizi, kad sākat un beidzat lietot robotu, jums ir jāveic smaga "divu pirkstu sveiciena" atiestatīšana, kas nozīmē, ka desmit sekundes turiet nospiestu dokstacijas un vietas pogas, līdz gaisma kļūst blāva. Jums bija veiksmīga šī cietā atiestatīšana, ja dzirdat, ka robots spēlē īsu skalu. Tālāk jums ir jāizveido savienojums ar roomba, izmantojot šādu koda rindu kā "r = roomba (x)", kur 'x' ir jūsu rīcībā esošajam robotam piešķirtais numurs.

Visbeidzot, jums ir jālejupielādē MATLAB mobile jebkurā mobilajā ierīcē, kuru izmantosit šim projektam, un šī lietojumprogramma ir pieejama gan Android, gan Apple ierīcēs. Kad lietojumprogramma ir instalēta, jums būs jāpiesakās, izmantojot jūsu akreditācijas datus. Pēc tam šī ierīce ir jāpievieno datoram, izmantojot cilni "Vairāk" -> pēc tam noklikšķiniet uz "Iestatījumi" -> pēc tam noklikšķiniet uz "Pievienot datoru", lai tiktu parādīts ekrāns, kas parādīts iepriekš attēlos. Nākamais solis, kas jums jāiziet, ir tikai tās pieprasītās informācijas pievienošana un pārsūtīšana. Kad esat veiksmīgi izveidojis savienojumu, varēsit izsaukt funkcijas, kuras tālrunī definējat savā datorā, lai vadītu savu robotu.

3. darbība: loģiski izveidojiet MATLAB kodu sensoru izmantošanai

Loģiski MATLAB koda izveide sensoru izmantošanai
Loģiski MATLAB koda izveide sensoru izmantošanai

Kodu būs visvieglāk izveidot, ja lielākā daļa no tā atrodas ieslēgšanas cikla laikā, lai roomba varētu pastāvīgi atjaunināt apskatītās derīgās vērtības. Ja ir kļūda, MATLAB parādīs kļūdu un to, kur tā parādās kodā, padarot problēmu novēršanu salīdzinoši vienkāršu.

Šis kods, kas izstrādāts r2018a MATLAB, izmanto standarta instrumentu kastes, iRobot Create rīku komplektu, kā arī MATLAB mobilo instrumentu kopumu. Šajā piemērā izmantotā roomba ir apzīmēta kā 26, un r = roomba (26) jāpalaiž tikai vienu reizi, lai pilnībā sazinātos ar roomba.

Kods:

funkcija parkassist (x), ja x == 1

r = roomba (26) % savienojas ar roomba

kamēr taisnība

r.setDriveVelocity (.05,.05) % nosaka Roomba lēnāku braukšanas ātrumu

bump = r.getBumpers % iegūst datus no trieciena sensoriem

cliff = r.getCliffSensors % iegūst datus no klints sensoriem

light = r.getLightBumpers % iegūst datus no gaismas trieciena sensoriem

img = r.getImage;% nolasa kameru no robota

red_mean = vidējais (vidējais (img (:,:, 1))) % nolasa sarkano pikseļu vidējo daudzumu

green_mean = vidējais (vidējais (img (:,:, 2))) % nolasa zaļo pikseļu vidējo daudzumu

blue_mean = vidējais (vidējais (img (:,:, 3))) % nolasa vidējo zilo pikseļu daudzumu

ja bump.front == 1 %nolasa priekšējos trieciena sensorus

r.stop %aptur roomba

msgbox ('Ceļš aizklāts!', 'Parkošanās palīga ziņojums') % parāda ziņojumu, kurā teikts, ka ceļš ir aizsegts pārtraukums % beidz cilpu

elseif green_mean> 150

r.stop %aptur roomba

cont = questdlg ('Turpināt?', 'Ceļš pabeigts') %parāda jautājumu lodziņu ar lūgumu turpināt

ja turpinājums == 'Jā'

parkassist (1) %restartē kodu

citādi

beigas

pārtraukums % beidz cilpu

140

r.turnAngle (45) %pagriež istabu par 45 grādiem

r.timeStart %sāk laika skaitītāju

kamēr taisnība

r.setDriveVelocity (.05,.05) %nosaka roomba ātrumu

time = r.timeGet %piešķir laiku mainīgajam

bump = r.getBumpers % iegūst datus no trieciena sensoriem

cliff = r.getCliffSensors % iegūst datus no klints sensoriem

light = r.getLightBumpers % iegūst datus no gaismas trieciena sensoriem

img = r.getImage;% nolasa kameru no robota

red_mean = vidējais (vidējais (img (:,:, 1))) % nolasa sarkano pikseļu vidējo daudzumu

green_mean = vidējais (vidējais (img (:,:, 2))) % nolasa zaļo pikseļu vidējo daudzumu

blue_mean = vidējais (vidējais (img (:,:, 3))) % nolasa vidējo zilo pikseļu daudzumu

ja blue_mean> 120

r.moveDistance (-0,01) % pārceļ roomba atpakaļ noteiktu attāluma dziesmu Atskaņot (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % atskaņo augošu mūzikas skalu

msgbox ('Atrasts ūdens!', 'Parkošanās palīga ziņojums') % parāda ziņojumu, kurā teikts, ka ir atrasts ūdens r.turnAngle (-80) % pagriež istabu par 80 grādiem

pārtraukums % beidz pašreizējo cilpu

elseif light.rightFront> 25 || light.leftFront> 25 %nolasa gaismas trieciena sensorus

r.moveDistance (-0,01) % pārvieto istabu atpakaļ noteiktā attālumā

r.turnAngle (-35) % pagriež telpu par 35 grādiem

pārtraukums %beidz pašreizējo cilpu

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %nolasa abus klints sensorus

r.moveDistance (-0,1) % pārvieto istabu atpakaļ noteiktā attālumā

r.turnAngle (-80) %rotē istabu par 80 grādiem

pārtraukums % beidz pašreizējo cilpu

cits laiks> = 3

r.stop %aptur roomba

contin = questdlg ('Stacija bezmaksas, turpināt?', 'Parkošanās palīga ziņojums') %jautā, vai roomba ir jāturpina, ja Contin == 'Jā'

r.turnAngle (-90) % pagriež istabu par 90 grādiem

parkassist (1) %restartē funkciju

citādi

r.stop % aptur roomba

beigas

citādi

beigas

beigas

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %nolasa abus klints sensorus

r.moveDistance (-0,1) %pārvieto istabu atpakaļ noteiktā attālumā

r.turnAngle (-90) %rotē istabu par 90 grādiem

elseif cliff.rightFront <2500 %nolasa pareizo klints sensoru

r.turnAngle (-5) %nedaudz pagriež roomba pretējā virzienā no klints sensora

elseif cliff.leftFront <2500 %nolasa kreisās klints sensoru

r.turnAngle (5) %nedaudz pagriež roomba pretējā virzienā no klints sensora

citādi

beigas

beigas

beigas

4. darbība: koda un robota pārbaude

Koda un robota pārbaude
Koda un robota pārbaude
Koda un robota pārbaude
Koda un robota pārbaude
Koda un robota pārbaude
Koda un robota pārbaude

Pēc koda izstrādes nākamais solis bija pārbaudīt kodu un robotu. Tā kā kodā var veikt daudz dažādu pielāgojumu, piemēram, robota pagriešanās leņķi, kustības ātrumu un katras krāsas sliekšņus, labākais veids, kā noteikt šīs vērtības jūsu robotam, ir pārbaudīt tās un mainās, ejot. Katru darba dienu mēs pastāvīgi mainījām šīs vērtības, jo dažas no tām ir atkarīgas no vides, kurā darbojas jūsu robots. Labākais veids, ko mēs atradām, bija novietot roomba uz ceļa, kuru vēlaties, lai tas iet, un pietiekami augsta barjera, lai kamera nevarētu noteikt krāsas, kuras jūs nevēlaties. Nākamais solis ir ļaut tam darboties un parādīt vēlamās krāsas, kad vēlaties, lai tas pabeigtu šo uzdevumu. Ejot uz priekšu, ja redzat problēmu, labākais, kas jādara, ir iebīdīt priekšējo buferi, apturot tā darbību, un pēc tam mainīt parametru, ar kuru radās problēmas.

5. darbība. Kļūdas atpazīšana

Kad katrs projekts ir pabeigts, vienmēr ir kļūdu avoti. Mums radās kļūda ar vienkāršu faktu, ka robots nav precīzs ar leņķi, kādā tas pagriežas, tādēļ, ja jūs sakāt, lai tas pagriežas par 45 grādiem, tas nebūs precīzs. Vēl viens kļūdu avots mums bija tas, ka dažreiz robots darbojas nepareizi, un jums ir grūti to atiestatīt, pirms tas atkal darbojas. Galvenais pēdējais kļūdu avots mums bija tas, ka viens un tas pats kods neietekmēs dažādus robotus, tāpēc jums, iespējams, būs jābūt pacietīgam un attiecīgi jāpielāgojas.

6. darbība. Secinājums

Tagad jums ir visi rīki, lai spēlētu savu roomba, kas nozīmē, ka jūs varat manipulēt ar kodu jebkurā gadījumā, lai sasniegtu vēlamos mērķus. Tam vajadzētu būt jūsu dienas labākajai daļai, tāpēc izklaidējieties un brauciet droši!

Ieteicams: