Kazalo:

Roomba z MATLAB: 4 koraki (s slikami)
Roomba z MATLAB: 4 koraki (s slikami)

Video: Roomba z MATLAB: 4 koraki (s slikami)

Video: Roomba z MATLAB: 4 koraki (s slikami)
Video: Among Us in HD (Part 89) SHRINK LOOP #Shorts 2024, November
Anonim
Roomba z MATLAB -om
Roomba z MATLAB -om

Ta projekt uporablja MATLAB in programabilnega robota iRobot Create2. S preizkušanjem znanja o MATLAB -u lahko programiramo Create2 za razlago slik in zaznavanje signalov. Funkcionalnost robota je odvisna predvsem od mobilne aplikacije MATLAB in modula kamere Raspberry Pi.

1. korak: Deli in materiali

Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali
Deli in materiali

1. iRobot Create, različica 2

- To je programabilni robot, ki je videti kot Roomba. Zavedajte se, da ta izdelek podjetja iRobot ni vakuum. Namenjen je programiranju po meri s strani uporabnika.

2. MATLAB 2017a

- Večina starejših različic bo združljiva s spodnjo kodo. MATLAB bo identificiral ukaz, ki ni združljiv z različico, ki jo imate, in predlagal najprimernejši ukaz.

3. Raspberry Pi 3 Model B, različica 1.2

- Preverite, kateri Raspberry Pi je združljiv z vašim iRobotom. Za dodatno pomoč si oglejte to povezavo: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Ta navodilo predvideva, da delate s vnaprej programiranim Raspberry Pi. Upoštevajte, da boste morali delati s vnaprej programiranim Pi, da bodo naslednji koraki delovali. Uporaba vnaprej programiranega Pi vam bo omogočila, da celotno kodiranje izvedete samo v MATLAB -u.

4. Modul kamere V2 (za Raspberry Pi)

- Morda boste presenečeni; kljub svoji velikosti je modul kamere Raspberry Pi zelo dobre kakovosti. To je najcenejša in najbolj združljiva možnost za ta projekt.

Izbirno: stojalo s 3D-tiskanjem. To se uporablja za stabilizacijo kamere. To ne vpliva na funkcionalnost robota, vendar vam bo pomagalo pri kodiranju, če želite uporabiti slikovne podatke za prepoznavanje barv in/ali predmetov.

2. korak: Konfiguracija

Konfiguracija
Konfiguracija
Konfiguracija
Konfiguracija

1. Priključitev Raspberry Pi in modula kamere (strojna oprema)

- Če želite napajati Raspberry Pi, boste morali priključiti moški mikro USB na vrata za napajanje na mikrokrmilniku. Neobvezno: Za zagotovitev, da napetost ne preseže 5V, lahko uporabite regulator napetosti. Ko napajate Raspberry Pi, ga lahko povežete z robotom tako, da z matične plošče zaženete moški konec USB a na vrata USB A na mikrokrmilniku.

- Po priključitvi Pi na Roombo je kamera pripravljena za namestitev. Modul kamere bo veliko manjši, kot ste pričakovali. Upoštevajte, da je leča pritrjena na senzor, od fotoaparata pa se razteza bel trak. NE odstranjujte in ne trgajte traku! To je kabel, ki ga potrebujete za povezavo z Raspberry Pi. Najprej držite konec traku in poiščite srebrne priključke in modri kabel. Te so na nasprotnih straneh. Nato poiščite režo med vrati Ethernet in HDMI na vašem Raspberry Pi. Upoštevajte, da ga pokriva majhna bela ključavnica. Počasi dvignite ključavnico, vendar je ne odstranjujte iz reže, saj se bo zaskočila in se trajno poškodovala. Ko dvignete ključavnico, primite trak in se obrnite proti srebrnim priključkom v vrata HDMI. Modra stran bo obrnjena proti vratom Ethernet. Počasi potisnite trak v režo, ko je še odklenjen. V režo vam ga ni treba vsiliti. Po vstavitvi potisnite ključavnico nazaj navzdol. Če je fotoaparat pravilno pritrjen, bi morali (nežno) potegniti trak in občutiti napetost. Trak ne sme biti ohlapen. Ko fotoaparat priključite na Pi, boste morda opazili, kako ohlapen je. Zato smo za njegovo pritrditev uporabili nosilec s 3D-tiskanjem. Odločite se, katere materiale bi radi uporabili za ohranitev fotoaparata pri visoki kakovosti slikanja.

2. Namestitev ustreznih datotek in povezovanje Roombe z računalnikom Ko je vsa vaša strojna oprema konfigurirana, lahko zdaj preidete na namestitev MATLAB skupaj s pripadajočimi datotekami m, ki vam omogočajo komunikacijo z robotom. Če želite to narediti, odprite MATLAB in ustvarite novo mapo, v kateri bodo vse povezane datoteke skupaj. S tem skriptom namestite/posodobite zahtevane datoteke:

- Vse datoteke bi se morale zdaj prikazati v ustvarjeni mapi. Z desno miškino tipko kliknite okno Trenutna mapa in izberite »Dodaj na pot«, da to pot dodate na seznam imenikov, kjer MATLAB išče datoteke. Prepričajte se, da so vse vaše datoteke na pravi poti.

3. Ko so datoteke nameščene, se lahko zdaj začnete povezovati z robotom. Začnite tako, da vklopite robota in ga nato takoj po zagonu trdo ponastavite (ne pozabite ga vsakič pred in po uporabi trdo ponastaviti). Drugič, povežite robota in prenosni računalnik z istim omrežjem WiFi. Po tem se bomo z vnaprej programiranim Raspberry Pi pogovarjali prek MATLAB -a tako, da pokličemo Roombo z njenim imenom in funkcijo roomba. Na primer, povezal bi se z robotom 28 z naslednjo vrstico: R = roomba (28).

- Upoštevajte, kako sem objekt dodelil spremenljivki R. Zdaj lahko dostopam do povezanih funkcij Roomba iz namestitvene datoteke tako, da spremenljivko R obravnavam kot strukturo.

- R.turnAngle (90) Če je šlo vse dobro, bi moral zaigrati glasbeni ton, ki potrjuje povezavo.

3. korak: MATLAB Logika

Dokument PDF na dnu tega koraka je podroben logični diagram poteka našega procesa kodiranja v MATLAB -u. Aktivirali smo senzorje pečine, svetlobe in svetlobnih udarcev, da bi robotu omogočili komunikacijo z nami, ko zazna predmet v njegovi neposredni bližini. Na primer, ko se robot premakne naprej, njegovi svetlobni senzorji iščejo predmete na njegovi poti glede na vektor, po katerem potuje. Za robota smo izbrali prag razdalje, tako da se bo, ko se približa objektu, obrnil, namesto da bi trčil z njim. Naš robot je konfiguriran tudi s Twitterjem, ki smo ga določili v procesu kodiranja (to bo prikazano spodaj).

Da bi izboljšali izkušnjo, smo na mobilnih napravah uporabili aplikacijo MATLAB, tako da lahko nadzorujemo gibanje robota samo tako, da nagnemo telefone. To je neobvezna dejavnost, saj lahko robot zagotovo premaknete z uporabo ukaza moveDistance v kodnem segmentu MATLAB. Upoštevajte, da je uporaba ukazov MATLAB za nadzor vašega robota prednostna, če je vaš cilj natančen. Če želite robota usmeriti tako, da fotoaparat posname fotografijo na določeni lokaciji, je morda bolje kodirati gibanje robota v MATLAB -u. Medtem ko se zabavate, uporaba aplikacije MATLAB za nadzor vašega robota ni zaželena zaradi natančnosti.

Koda ukaže Roombi, da izvede osnovno nastavitev in nadaljuje skozi neprekinjeno zanko. Sprva bo prenosni računalnik z ukazom Roomba () vzpostavil povezavo z Roombo. Prav tako vzpostavi povezavo twitter z ukazom webwrite () v MATLAB -u. Zanka vsebuje pet glavnih logičnih tokov, odvisno od okolja, ki obdaja Roombo. Roomba najprej preveri ovire in se prilagodi nazaj, če ugotovi, da so ovirane. V to zanko je vdelana druga pot, ki uporabnike opozori, če Roombo odnesejo. Pomemben pripomoček v ostrem vojnem območju Marsa. Ko Roomba ugotovi, da je njen položaj varen, pogleda na mobilno napravo, da določi njen naslednji premik. Če je mobilna naprava nagnjena naprej, bo izračunala osnovno hitrost glede na resnost merjenja valja in nato prilagodila posamezne hitrosti koles glede na stopnjo nagiba. Telefon lahko premika Roombo tudi vzvratno. Nevtralno stanje mobilne naprave zapira zadnji dve poti. Roomba v mirovanju bo poiskal zastavo tujca in uporabnika ustrezno opozoril.

Spodaj je naša koda (izpolnjena v MATLAB 2017a)

%vhodov: orientacijski podatki iz naprave, povezane z wifi, kamere

%informacij, podatki senzorjev

%izhodov: gibanje nadzira naprava, povezana z wifi, in gibanje

% se varnostno preveri z branjem podatkov senzorja. Če kamera zazna

% tuje zastave, nato se roomba odzove tako, da tvitne sovražnikovo zastavo

% je bilo opaženo.

%namen: naša naprava živi samo z namenom, razen da zaščiti tiste, ki

% ga je ustvaril, služi svojemu ustvarjalcu in dela

% točno to, kar je povedano.

%Uporaba: program bo v bistvu deloval sam.

počisti vse, zaprite vse, clc

%Inicializiranje objektov in spremenljivk

r = roomba (28);

m = mobiledev;

%odziv uporabe = webwrite (ime gostitelja, podatki)

ime gostitelja = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop deluje … čaka na ukaz';

data = strcat ('api_key =', API, '& status =', tweet);

odgovor = spletno pisanje (ime gostitelja, podatki);

%stalno delujoča zanka

medtem ko je 1 == 1

%Strukture, ki vsebujejo podatke o ohlapnih snoveh

o = m. orientacija; %orientacije mobilne naprave

light = r.getLightBumpers (); %Vrednosti lahkih odbijačev

a = r.getCliffSensors (); %CLiff Sensor Vrednosti

bump = r.getBumpers (); %Senzorji odbijača

%odbijačev za preverjanje

če bump.right == 1 || bump.left == 1 || bump.front == 1

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

%Senzorji kontrolne luči

drugače če je svetloba.levo> 60 || light.leftFront> 60 || light.leftCenter> 60 || svetloba.desno> 60 || svetloba.desno spredaj> 60 || light.rightCenter> 60

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

%preverite senzorje Cliff

%Signal in obvestilo proti kraji

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

r.stop ();

r.beep ();

tweet = 'RoboCop je odpravljen!'

data = strcat ('api_key =', API, '& status =', tweet);

odgovor = spletno pisanje (ime gostitelja, podatki);

%Običajna operacija izogibanja pečinam

sicer če levo <300 || a.desno <300 || a.leftFront <300 || a.rightFront <300

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

%Roomba je opravil preverjanja in bo zdaj deloval z običajnim delovanjem.

%Sprva se meri zvitek naprave in postane osnova

%hitrosti, ki se nato uporabi za izračun hitrosti kolesa

%Premik naprej

drugače, če je o (3)> = 0 && o (3) <= 60

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

če je o (2)> =-70 && o (2) <0

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

drugače, če je o (2) = 0

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

drugače r.stop

konec

%Gibanje nazaj

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

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

%počivajoča roomba bo iskala zastavo tujcev, označeno kot flourescent

%zelene kos papirja

drugače

r.stop

img = r.getImage (); %posname sliko

prag = siva moč (img (200: 383,:, 2))+. 1; %kalc. zelene ravni

če je prag>.42

tweet = 'Sovražnik opažen !!'

data = strcat ('api_key =', API, '& status =', tvit);

odgovor = spletno pisanje (ime gostitelja, podatki);

drugače

r.stop

konec

konec

konec

4. korak: Zaključek

Ne pozabite, da lahko uporabite skript, ki smo ga napisali zgoraj, vendar ga lahko vedno spremenite tako, da ustreza vašim potrebam. Ni nujno, da ga nadzoruje vaš telefon! (Vendar je zaradi tega bolj zabavno.) Izberite, katero metodo najraje uporabite za nadzor svojega robota. Vozite se s svojim robotom in uživajte!

Priporočena: