Satura rādītājs:
- 1. darbība: detaļas un materiāli
- 2. darbība: Roomba datu bāzes fails
- 3. darbība. Savienojuma izveide ar Roomba
- 4. solis: kods
- 5. darbība. Secinājums
Video: MATLAB kontrolējamā Roomba: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šī projekta mērķis ir izmantot MATLAB, kā arī modificētu programmējamu robotu iRobot. Mūsu grupa apvienoja mūsu kodēšanas prasmes, lai izveidotu MATLAB skriptu, kurā izmantotas daudzas iRobot funkcijas, tostarp klints sensori, bufera sensori, gaismas sensori un kamera. Mēs izmantojām šos sensoru un kameru rādījumus kā ieejas, ļaujot mums izveidot noteiktus rezultātus, kurus vēlamies, izmantojot MATLAB koda funkcijas un cilpas. Mēs arī izmantojam mobilo ierīci MATLAB un žiroskopu, lai izveidotu savienojumu ar iRobot un to kontrolētu.
1. darbība: detaļas un materiāli
MATLAB 2018a
-MATLAB 2018. gada versija ir vispiemērotākā versija, galvenokārt tāpēc, ka tā vislabāk darbojas ar kodu, kas savieno ar mobilo ierīci. Tomēr lielāko daļu mūsu koda var interpretēt lielākajā daļā MATLAB versiju.
iRobot izveides ierīce
-Šī ierīce ir speciāli izgatavota ierīce, kuras vienīgais mērķis ir programmēšana un kodēšana. (Tas nav īsts vakuums)
Raspberry Pi (ar kameru)
- Šī ir dārga datora plate, kas darbojas kā iRobot smadzenes. Tas var būt mazs, bet spēj uz daudzām lietām. Kamera ir papildu papildinājums. Tas arī izmanto aveņu pi, lai iegūtu visas savas funkcijas un komandas. Iepriekš redzamā kamera ir uzstādīta uz 3D drukāta statīva, ko izveidojuši Tenesī Universitātes Inženierzinātņu pamati.
2. darbība: Roomba datu bāzes fails
Ir galvenais fails, kas jums būs nepieciešams, lai izmantotu roomba pareizās funkcijas un komandas. Šajā failā jūs rakstījāt kodu, lai iegūtu funkcijas, lai padarītu jūsu roomba vadāmāku.
Jūs varat lejupielādēt failu šajā saitē vai lejupielādējamo failu zemāk
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
3. darbība. Savienojuma izveide ar Roomba
Pirmkārt, jums ir jāpārliecinās, ka jūsu robots ir savienots ar jūsu aveņu pi plati, izmantojot mikro USB spraudni. Tad jums ir pareizi jāpievieno dators un robots tam pašam WiFi. Kad tas ir izdarīts, varat ieslēgt robotu un izveidot savienojumu ar to, izmantojot robota datu bāzes failā norādīto komandu. (Vienmēr stingri atiestatiet robotu pirms un pēc tā lietošanas). Piemēram, mēs izmantojam komandu "r.roomba (19)", lai izveidotu savienojumu ar mūsu robotu, piešķirot mūsu ierīcei mainīgo r. Tas attiecas uz datubāzes failu, kas mūsu mainīgo nosaka kā struktūru, uz kuru varam atsaukties jebkurā brīdī.
4. solis: kods
Tālāk ir pievienots pilns kods, taču šeit ir īss pārskats, kas izceļ mūsu skripta svarīgos elementus. Mēs izmantojām visus sensorus, kā arī kameru, lai pilnībā palielinātu mūsu robota potenciālu. Mēs iekļāvām arī kodu, kas ļāva mums savienot mobilo ierīci ar mūsu robotu un izmantot tā gryoskopu, lai to manuāli kontrolētu.
Mēs sākām ar vienkāršu komandu "r.setDriveVelocity (.06)", kas nosaka robota kustības ātrumu uz.06 m/s. Tas ir tikai tāpēc, lai robotu iepriekš kustinātu
Pēc tam mūsu galvenais skripts tiek sākts ar cikla ciklu, kas izgūst konkrētā robota datus, izveidojot struktūras, uz kurām mēs varam atsaukties un izmantot nosacījuma paziņojumos zemāk, tādējādi ļaujot mums pateikt robotam izpildīt noteiktu komandu, pamatojoties uz struktūras datiem robots lasa ar saviem sensoriem. Mēs to uzstādījām tā, lai robots nolasītu savus klints sensorus un dotos pa melnu ceļu
kamēr true % while cilpa iet, līdz notiek kaut kas "nepatiess" (šajā gadījumā tas turpinās bezgalīgi) data = r.getCliffSensors; data2 = r.getBumpers; % nepārtraukti izgūst datus par klints sensora vērtībām un piešķir tos mainīgajam % img = r.getImage; % Uzņem attēlu no uzstādītās kameras % image (img); % Parāda uzņemto attēlu % red_mean = vidējais (vidējais (img (:,:, 1))); % Tiek ņemta zaļās krāsas vidējā vērtība, ja data.rightFront <2000 r.turnAngle (-2); % pagriež Roomba par aptuveni, 2 grādiem CW, kad priekšējo kraujas sensoru vērtība nokrītas zem 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % liek Roomba turpināt virzīties uz priekšu ar aptuveni 0,2 m/s, ja abas labās un kreisās puses priekšējo sensoru vērtības nokrītas zem 2000 % r.turnAngle (0); % liek Roomba negriezties, ja iepriekš minētie nosacījumi ir patiesi
elseif dati2.pareizi == 1 r.moveDistance (-. 12); r.pagrieziena leņķis (160); r.setDriveVelocity (.05); elseif data2.pa kreisi == 1 r.moveDistance (-. 2); r.pagrieziena leņķis (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.pagrieziena leņķis (160); r.setDriveVelocity (.05);
Pēc šīs cikla cilpas mēs ievadām citu cikla cilpu, kas aktivizē ar kameru iegūtos datus. Mēs izmantojam if paziņojumu šajā cilpā, kas atpazīst attēlu, izmantojot īpašu programmu (alexnet), un, kad tas identificē attēlu, tas nekavējoties iedarbina mobilās ierīces tālvadības pulti
anet = alexnet; % Piešķir alexnet dziļo mācīšanos mainīgajam, kamēr patiess % Bezgalīgs, kamēr cilpa img = r.getImage; img = neizmērojams (img, [227, 227]); etiķete = klasificēt (anet, img); ja etiķete == "papīra dvielis" || etiķete == "ledusskapis" etiķete = "ūdens"; beigu attēls (img); nosaukums (char (etiķete)); izvilkts;
Kaut arī cilpa, kas ļauj mums kontrolēt ierīci ar tālruni, izgūst šos datus no tālruņa žiroskopa, un mēs pievienojam tos matricai, kas nepārtraukti straumē datus atpakaļ datora MATLAB. Mēs izmantojam paziņojumu if, kas nolasa matricas datus un dod izvadi, kas pārvieto ierīci, pamatojoties uz noteiktām tālruņa žiroskopa vērtībām. Ir svarīgi zināt, ka mēs izmantojām mobilās ierīces orientācijas sensorus. Iepriekš minēto matricu pa trim klasificē pēc katra tālruņa orientācijas sensoru elementa, kas ir azimuts, piķis un sāns. Ja paziņojumi radīja apstākļus, kas norādīja, kad puse pārsniedz vērtības 50 vai nokrītas zem -50, tad robots pārvieto noteiktu attālumu uz priekšu (pozitīvs 50) vai atpakaļ (negatīvs 50). Un tas pats attiecas uz piķa vērtību. Ja piķa vērtība pārsniedz 25 kritumu vērtību zem -25, robots griežas 1 grādu leņķī (pozitīvs 25) vai negatīvā 1 grādā (negatīvs 25)
kamēr patiesa pauze (.1) % Pauze.5 sekundes pirms katras vērtības iegūšanas Kontrolieris = iphone. Orientation; % Piešķir matricu iPhone orientācijas vērtībām mainīgajam Azimuthal = Controller (1); % Piešķir matricas pirmo vērtību mainīgajam Pitch = Controller (2); % Piešķir matricas otro vērtību mainīgajam (noliekt uz priekšu un atpakaļ, kad iPhone tiek turēts uz sāniem) Side = Controller (3); % Piešķir trešajai matricas vērtībai mainīgo (noliekt pa kreisi un pa labi, kad iPhone tiek turēts uz sāniem) % Izraisa izvadi, pamatojoties uz tālruņa orientāciju, ja sāns> 130 || Sānu 25 r.moveDistance (-. 1) % Pārvieto Roomba atpakaļ aptuveni.1 metru, ja iPhone ir pagriezts atpakaļ vismaz par 25 grādiem, ja sāns 25 r.turnAngle (-1) % Pagriež Roomba aptuveni par 1 grādu CCW, ja iPhone ir sasvērts pa kreisi vismaz par 25 grādiem, ja cits solis <-25 apgriezieni. leņķis (1) % Pagriež Roomba aptuveni par 1 grādu CW, ja iPhone ir noliekts vismaz par 25 grādiem
Šie ir tikai galvenie mūsu koda elementi, kurus mēs iekļāvām, ja jums ir nepieciešams ātri nokopēt un ielīmēt sadaļu jūsu labā. Tomēr viss mūsu kods ir pievienots zemāk, ja nepieciešams
5. darbība. Secinājums
Šis mūsu uzrakstītais kods ir īpaši izstrādāts mūsu robotam, kā arī mūsu vispārējam projekta redzējumam. Mūsu mērķis bija izmantot visas mūsu MATLAB kodēšanas prasmes, lai izveidotu labi izstrādātu skriptu, kas izmantotu lielāko daļu robota funkciju. Tālruņa kontroliera lietošana nav tik grūta, kā jūs domājat, un mēs ceram, ka mūsu kods var palīdzēt jums labāk izprast iRobot kodēšanas jēdzienu.
Ieteicams:
Arduino vienkārša zemu izmaksu kontrolējama roka: 5 soļi
Arduino vienkārša zemu izmaksu kontrolējama roka: plašajā internetā ir daudz dārgu 3D drukātu un elastīgu sensoru balstītu robotu. Tomēr, būdams students, man nav daudz piekļuves tādām lietām kā CNC, 3D printeri un elektriskie instrumenti. Man ir risinājums, mēs izveidosim l
Maiņu reģistru kaskāde 74HC595 Kontrolējama, izmantojot Arduino un Ethernet: 3 soļi
Maiņu reģistru kaskāde 74HC595, kas kontrolēta caur Arduino un Ethernet: Šodien es vēlētos iepazīstināt ar projektu, kuru esmu īstenojis divās versijās. Projektā tiek izmantoti 12 maiņu reģistri 74HC595 un 96 gaismas diodes, Arduino Uno plate ar Ethernet vairogu Wiznet W5100. Katram maiņu reģistram ir pievienotas 8 gaismas diodes. Skaitļi 0
Ar tālvadību kontrolējama ūdens pistole: 6 soļi
Ar tālvadību kontrolējams ūdens lielgabals: šī pamācība tika izveidota, izpildot Dienvidfloridas universitātes Makecourse projekta prasības (www.makecourse.com). Pēc šīm darbībām varēsiet izgatavot savu tālvadības augstspiediena ūdens pistoli
Ar tālvadību kontrolējama LED istabas lampa: 5 soļi (ar attēliem)
Tālvadības pults Animējoša LED istabas lampa: tiem, kas vēlas relaksējošu vai aizraujošu krāsainu gaismas šovu bērnu istabai, Ziemassvētku dekorēšanai vai vienkārši izklaidei, šeit ir mans gaisotnes pastiprinātājs. Es saņemu patiesi entuziastiskas atbildes no 6 mēnešus veciem zīdaiņiem līdz vecākiem bērniem vispār
Attālināti kontrolējama Arduino pašsabalansējošā robota izveide: B-robots EVO: 8 soļi
Attālināti kontrolējama Arduino pašbalansējošā robota izveide: B-robots EVO: ------------------------------------ -------------- UPDATE: šeit ir jauna un uzlabota šī robota versija: B-robots EVO ar jaunām funkcijām! ------------ -------------------------------------- Kā tas darbojas? B-ROBOT EVO ir attālināti kontrole