Satura rādītājs:

Roomba ar MATLAB: 4 soļi (ar attēliem)
Roomba ar MATLAB: 4 soļi (ar attēliem)

Video: Roomba ar MATLAB: 4 soļi (ar attēliem)

Video: Roomba ar MATLAB: 4 soļi (ar attēliem)
Video: Diana and Roma Funny Swim Story Cartoon for Kids 2024, Novembris
Anonim
Roomba ar MATLAB
Roomba ar MATLAB

Šis projekts izmanto MATLAB un programmējamu robotu iRobot Create2. Pārbaudot savas zināšanas par MATLAB, mēs varam programmēt Create2, lai interpretētu attēlus un noteiktu signālus. Robota funkcionalitāte galvenokārt ir atkarīga no MATLAB mobilās lietotnes un Raspberry Pi kameras moduļa.

1. darbība: detaļas un materiāli

Daļas un materiāli
Daļas un materiāli
Daļas un materiāli
Daļas un materiāli
Daļas un materiāli
Daļas un materiāli
Daļas un materiāli
Daļas un materiāli

1. iRobot Create, 2. versija

- Šis ir programmējams robots, kas izskatās kā Roomba. Ņemiet vērā, ka šis iRobot produkts nav vakuums. Tas ir paredzēts lietotāja individuālai programmēšanai.

2. MATLAB 2017a

- Lielākā daļa vecāku versiju būs saderīgas ar kodu, ko izmantojām tālāk. MATLAB identificēs komandu, kas nav saderīga ar jūsu versiju, un ieteiks labāko komandu.

3. Raspberry Pi 3 B modelis, versija 1.2

- Pārbaudiet, kurš Raspberry Pi ir saderīgs ar jūsu iRobot. Lai saņemtu papildu palīdzību, skatiet šo saiti: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Šajā pamācībā tiek pieņemts, ka strādājat ar iepriekš ieprogrammētu Raspberry Pi. Lūdzu, ņemiet vērā, ka, lai darbotos šādas darbības, jums būs jāstrādā ar iepriekš ieprogrammētu Pi. Izmantojot iepriekš ieprogrammētu Pi, jūs varēsit veikt visu savu kodēšanu tikai MATLAB.

4. Kameras modulis V2 (Raspberry Pi)

- Jūs varētu būt pārsteigts; neskatoties uz izmēru, Raspberry Pi kameras modulis ir ļoti labas kvalitātes. Tas ir lētākais un saderīgākais variants šim projektam.

Pēc izvēles: statīvs ar 3D apdruku. To izmanto, lai stabilizētu kameru. Tas neietekmē robota funkcionalitāti, taču tas palīdzēs jums kodēt, ja vēlaties izmantot attēlveidošanas datus krāsu un/vai objektu atpazīšanai.

2. darbība: konfigurēšana

Konfigurācija
Konfigurācija
Konfigurācija
Konfigurācija

1. Raspberry Pi un kameras moduļa savienošana (aparatūra)

- Lai darbinātu Raspberry Pi, mikrokontrollera sieviešu barošanas portam būs jāpalaiž vīriešu gala mikro USB. Pēc izvēles: var izmantot sprieguma regulatoru, lai nodrošinātu, ka spriegums nepārsniedz 5 V. Pēc Raspberry Pi barošanas varat to savienot ar savu robotu, palaižot vīriešu galu USB a no mātesplates uz mikrokontrollera USB portu A.

- Pēc Pi savienošanas ar Roomba kamera ir gatava uzstādīšanai. Kameras modulis būs daudz mazāks, nekā jūs gaidījāt. Ņemiet vērā, ka objektīvs ir piestiprināts pie sensora un no kameras stiepjas balta lente. NELIETOJIET un neplēsiet lenti! Šis ir kabelis, kas nepieciešams, lai to savienotu ar Raspberry Pi. Vispirms turiet lentes galu un atrodiet sudraba savienotājus un zilo kabeli. Tie atrodas pretējās pusēs. Pēc tam atrodiet slotu starp Raspberry Pi Ethernet un HDMI portiem. Ievērojiet, ka to sedz maza, balta slēdzene. Lēnām paceliet slēdzeni, bet neizņemiet to no slota, jo tā sasprādzēsies un tiks neatgriezeniski bojāta. Kad esat pacēlis slēdzeni, satveriet lenti un pavērsiet sudraba savienotājus pret HDMI portu. Zilā puse būs vērsta pret Ethernet portu. Lēnām iebīdiet lenti slotā, kamēr tā vēl ir atbloķēta. Jums tas nav jāpiespiež slotā. Pēc ievietošanas nospiediet slēdzeni atpakaļ uz leju. Ja jūsu kamera ir pareizi nostiprināta, jums vajadzētu būt iespējai (maigi) vilkt lenti un sajust spriedzi. Lentei nevajadzētu būt vaļīgai. Pēc kameras pievienošanas Pi var pamanīt, cik tā ir vaļīga. Tāpēc, lai to noturētu, mēs izmantojām 3D drukātu stiprinājumu. Tā ir jūsu izvēle, lai noteiktu, kādus materiālus vēlaties izmantot, lai saglabātu savu kameru nekustīgu augstas kvalitātes attēlveidošanai.

2. Pareizu failu instalēšana un Roomba pievienošana datoram Kad visa aparatūra ir konfigurēta, tagad varat pāriet uz MATLAB instalēšanu kopā ar saistītajiem m-failiem, kas ļauj sazināties ar robotu. Lai to izdarītu, atveriet MATLAB un izveidojiet jaunu mapi, lai visi saistītie faili būtu kopā. Izmantojiet šo skriptu, lai instalētu/atjauninātu nepieciešamos failus:

- Tagad visiem failiem vajadzētu parādīties jūsu izveidotajā mapē. Logā Pašreizējā mape ar peles labo pogu noklikšķiniet un atlasiet “Pievienot ceļam”, lai pievienotu šo ceļu direktoriju sarakstam, kurā MATLAB meklē failus. Pārliecinieties, vai visi jūsu faili atrodas pareizajā ceļā.

3. Kad faili ir instalēti, tagad varat sākt izveidot savienojumu ar savu robotu. Sāciet, ieslēdzot robotu un pēc tam to grūti atiestatot uzreiz pēc palaišanas (neaizmirstiet katru reizi pirms un pēc lietošanas robotu atiestatīt). Otrkārt, pievienojiet savu robotu un klēpjdatoru vienam un tam pašam wifi tīklam. Pēc tam mēs runāsim ar iepriekš ieprogrammēto Raspberry Pi, izmantojot MATLAB, zvanot Roomba, izmantojot tās vārdu un funkciju roomba. Piemēram, es izveidotu savienojumu ar robotu 28, izmantojot šādu līniju: R = roomba (28).

- Ievērojiet, kā es piešķīru objektu mainīgajam R. Tagad es varu piekļūt saistītajām Roomba funkcijām no instalācijas faila, apstrādājot mainīgo R kā struktūru.

- R.turnAngle (90) Ja viss gāja labi, vajadzētu atskaņot muzikālu toni, kas apstiprina saikni.

3. darbība: MATLAB loģika

Šī dokumenta apakšā esošais PDF dokuments ir detalizēta loģiskā plūsmas diagramma mūsu kodēšanas procesam MATLAB. Mēs aktivizējām klints, gaismas un gaismas trieciena sensorus, lai ļautu robotam sazināties ar mums, kad tas atklāj objektu tā tiešā tuvumā. Piemēram, kad robots virzās uz priekšu, tā gaismas sensori meklē objektus savā ceļā atbilstoši vektoram, ar kuru tas pārvietojas. Mēs izvēlējāmies robota attāluma slieksni, lai, tuvojoties objektam, tas atgrieztos, nevis saduras ar to. Mūsu robots ir konfigurēts arī ar Twitter, ko mēs norādījām savā kodēšanas procesā (tas tiks parādīts zemāk).

Lai uzlabotu pieredzi, mēs mobilajās ierīcēs izmantojām lietojumprogrammu MATLAB, lai mēs varētu kontrolēt robota kustības, tikai noliecot tālruņus. Šī ir neobligāta darbība, jo jūs noteikti varat likt robotam kustēties, tā vietā izmantojot komandu moveDistance MATLAB koda segmentā. Paturiet prātā, ka, lai jūsu mērķis būtu precīzs, vēlams izmantot MATLAB komandas, lai kontrolētu robotu. Ja vēlaties mērķēt uz robotu tā, lai kamera uzņemtu attēlu noteiktā vietā, iespējams, labāk būtu kodēt robota kustības MATLAB. Lai gan izklaide, MATLAB lietojumprogrammas izmantošana robota vadīšanai nav vēlama, lai iegūtu precizitāti.

Kods komandē Roomba veikt pamata iestatīšanu un pēc tam turpināt nepārtrauktu cilpu. Sākotnēji klēpjdators izveidos saiti ar Roomba, izmantojot komandu Roomba (). Tas arī izveido twitter savienojumu, izmantojot MATLAB komandu webwrite (). Ciklā ir piecas galvenās loģiskās plūsmas atkarībā no Roomba apkārtējās vides. Vispirms Roomba pārbauda, vai nav šķēršļu, un pielāgojas atpakaļ, ja konstatē, ka tas ir traucēts. Šajā cilpā ir otrs ceļš, kas brīdina lietotājus, ja Roomba tiek aizvesta. Svarīga lietderība skarbajā Marsa kara zonā. Pēc tam, kad Roomba ir noteikusi, ka tā atrašanās vieta ir droša, tā meklē mobilo ierīci, lai noteiktu tās nākamo kustību. Ja mobilā ierīce ir noliekta uz priekšu, tā aprēķinās bāzes ātrumu atkarībā no rullīša mērījuma smaguma pakāpes, nevis noregulēs atsevišķus riteņu apgriezienus, lai tie pagrieztos, ņemot vērā slīpuma pakāpi. Tālrunis var pārvietot Roomba arī atpakaļgaitā. Neitrāls mobilās ierīces stāvoklis aizver pēdējos divus ceļus. Atpūšamā Roomba meklēs svešzemju karogu un attiecīgi brīdinās lietotāju.

Zemāk ir mūsu kods (aizpildīts MATLAB 2017a)

%ieejas: orientācijas dati no wifi pieslēgtas ierīces, kameras

%informācija, sensora dati

%izejas: kustību kontrolē ar wifi savienotā ierīce un kustība

% tiek pārbaudīta drošība, nolasot sensora datus. Ja kamera konstatē

% svešzemju karogs, tad roomba atbild, tweetot ienaidnieka karogu

% ir pamanīts.

%mērķis: mūsu ierīcei nav nekāda mērķa, izņemot, lai aizsargātu tos, kuri to dara

% to izveidoja, tas kalpo tā radītājam un dara

% tieši tas, ko tā teica.

Lietošana: būtībā programma darbosies pati.

notīrīt visu, aizvērt visu, clc

%Objektu un mainīgo inicializēšana

r = roomba (28);

m = mobiledev;

%izmantot atbildi = webwrite (resursdatora nosaukums, dati)

resursdatora nosaukums = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop darbojas … gaida komandu';

dati = strcat ('api_key =', API, '& status =', tvīts);

reponse = webwrite (resursdatora nosaukums, dati);

%pastāvīgi darbojas cilpa

kamēr 1 == 1

%Struktūras, kas satur relavent datus

o = m.orientācija; Mobilās ierīces orientācija %

gaisma = r.getLightBumpers (); Vieglas bufera vērtības

a = r.getCliffSensors (); %CLiff sensora vērtības

sasist = r.getBamperi (); Buferu sensori

%pārbaudes buferi

ja sasist.pareizi == 1 || sasist.pa kreisi == 1 || sasisties.front == 1

r.moveDistance (-. 2,.2);

%pārbaudiet gaismas sensorus

cits apgaismojums.pa kreisi> 60 || light.leftFront> 60 || light.leftCenter> 60 || viegls.pareizi> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

%pārbaudiet klints sensorus

Zādzību novēršanas signāls un paziņojums

elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.pīkstiens ();

tweet = 'RoboCop ir atcelts!'

dati = strcat ('api_key =', API, '& status =', tvīts);

reponse = webwrite (resursdatora nosaukums, dati);

%Parastā izvairīšanās no kraujas

elseif a.pa kreisi <300 || a. pareizi <300 || a.leftFront <300 || a. pa labi priekšā <300

r.moveDistance (-. 2,.2);

%Roomba izturēja pārbaudes un tagad darbosies ar normālu darbību.

%Sākotnēji tiek mērīts ierīces rullis un tas kļūst par pamatu

ātruma %, ko izmanto, lai aprēķinātu riteņa ātrumu

%Kustība uz priekšu

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

ja o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

citādi r.stop

beigas

%Atpakaļgaitas kustība

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -2)

r.pīkstiens ();

r.pīkstiens ();

%resting roomba meklēs svešzemju karogu, kas atzīmēts kā fluorescējošs

%zaļš Papīra gabals

citādi

r. apstāties

img = r.getImage (); %uzņem attēlu

slieksnis = graythresh (img (200: 383,:, 2))+. 1; %aprēķina zaļo līmeni

ja slieksnis>.42

tweet = 'Ienaidnieks pamanīts !!'

dati = strcat ('api_key =', API, '& status =', tvīts);

reponse = webwrite (resursdatora nosaukums, dati);

citādi

r. apstāties

beigas

beigas

beigas

4. solis. Secinājums

Atcerieties, ka varat izmantot iepriekš rakstīto skriptu, taču vienmēr varat to mainīt atbilstoši savām vajadzībām. Tas nav jākontrolē ar tālruni! (Tomēr tas padara to jautrāku.) Izvēlieties, kuru metodi vēlaties izmantot sava robota vadīšanai. Brauciet apkārt ar savu robotu un izbaudiet!

Ieteicams: