Turinys:

„Roomba“su MATLAB: 4 žingsniai (su nuotraukomis)
„Roomba“su MATLAB: 4 žingsniai (su nuotraukomis)

Video: „Roomba“su MATLAB: 4 žingsniai (su nuotraukomis)

Video: „Roomba“su MATLAB: 4 žingsniai (su nuotraukomis)
Video: iRobot Roomba i3+/i4+ — больше хлопот, чем пользы?! 2024, Lapkritis
Anonim
Roomba su MATLAB
Roomba su MATLAB

Šiame projekte naudojamas MATLAB ir programuojamas robotas „iRobot Create2“. Išbandę savo žinias apie MATLAB, mes galime užprogramuoti „Create2“, kad jis interpretuotų vaizdus ir aptiktų signalus. Roboto funkcionalumas daugiausia priklauso nuo mobiliosios programos MATLAB ir „Raspberry Pi“kameros modulio.

1 žingsnis: dalys ir medžiagos

Dalys ir medžiagos
Dalys ir medžiagos
Dalys ir medžiagos
Dalys ir medžiagos
Dalys ir medžiagos
Dalys ir medžiagos
Dalys ir medžiagos
Dalys ir medžiagos

1. „iRobot Create“, 2 versija

- Tai programuojamas robotas, kuris atrodo kaip „Roomba“. Atminkite, kad šis „iRobot“produktas nėra vakuumas. Jis skirtas vartotojo individualiam programavimui.

2. MATLAB 2017a

- Dauguma senesnių versijų bus suderinamos su kodu, kurį naudojome toliau. MATLAB nustatys komandą, kuri nesuderinama su jūsų turima versija, ir pasiūlys geriausiai tinkančią komandą.

3. Raspberry Pi 3 B modelis, 1.2 versija

- Patikrinkite, kuris „Raspberry Pi“yra suderinamas su jūsų „iRobot“. Norėdami gauti daugiau pagalbos, žiūrėkite šią nuorodą: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Ši instrukcija daro prielaidą, kad dirbate su iš anksto užprogramuotu „Raspberry Pi“. Atminkite, kad jums reikės dirbti su iš anksto užprogramuotu Pi, kad šie veiksmai veiktų. Naudodami iš anksto užprogramuotą Pi galėsite visą kodavimą atlikti tik MATLAB.

4. Fotoaparato modulis V2 (skirtas „Raspberry Pi“)

- Galite nustebti; nepaisant savo dydžio, „Raspberry Pi“fotoaparato modulis yra labai geros kokybės. Tai pigiausias ir labiausiai suderinamas šio projekto variantas.

Neprivaloma: 3D atspausdintas stovas. Jis naudojamas fotoaparatui stabilizuoti. Tai neturi įtakos roboto funkcionalumui, tačiau padės koduoti, jei norite naudoti vaizdo duomenis spalvų ir (arba) objektų atpažinimui.

2 žingsnis: konfigūravimas

Konfigūracija
Konfigūracija
Konfigūracija
Konfigūracija

1. Raspberry Pi ir fotoaparato modulio prijungimas (aparatinė įranga)

- Norėdami įjungti „Raspberry Pi“, turėsite paleisti mikro USB jungtį prie mikrovaldiklio moteriško maitinimo prievado. Neprivaloma: įtampos reguliatorius gali būti naudojamas siekiant užtikrinti, kad įtampa neviršytų 5 V. Įjungę „Raspberry Pi“, galite prijungti jį prie savo roboto, paleisdami USB galą iš pagrindinės plokštės į mikrovaldiklio USB prievadą A.

- Prijungus „Pi“prie „Roomba“, fotoaparatas paruoštas montuoti. Kameros modulis bus daug mažesnis nei tikitės. Atminkite, kad objektyvas yra pritvirtintas prie jutiklio, o nuo fotoaparato tęsiasi balta juostelė. NEGALIMA juostelės nuimti ar suplėšyti! Tai yra kabelis, kurį reikia prijungti prie „Raspberry Pi“. Pirmiausia laikykite juostelės galą ir raskite sidabrines jungtis bei mėlyną kabelį. Jie yra priešingose pusėse. Tada raskite lizdą tarp „Raspberry Pi“eterneto ir HDMI prievadų. Atkreipkite dėmesį, kad jį dengia maža, balta spyna. Lėtai pakelkite užraktą, bet neišimkite iš lizdo, nes jis užsifiksuos ir bus visam laikui pažeistas. Pakėlę užraktą, patraukite juostelę ir nukreipkite sidabrines jungtis prie HDMI prievado. Mėlyna pusė bus nukreipta į Ethernet prievadą. Lėtai įstumkite juostelę į angą, kol ji vis dar yra atrakinta. Jūs neprivalote jo įstumti į lizdą. Įdėję, paspauskite užraktą atgal žemyn. Jei jūsų fotoaparatas yra tinkamai pritvirtintas, turėtumėte (švelniai) patraukti juostelę ir jausti įtampą. Juostelė neturėtų būti laisva. Prijungę fotoaparatą prie „Pi“, galite pastebėti, koks jis laisvas. Štai kodėl mes naudojome 3D spausdintą laikiklį, kad jį stabilizuotume. Jūs galite nuspręsti, kokias medžiagas norite naudoti, kad fotoaparatas nejudėtų, kad būtų užtikrintas aukštos kokybės vaizdas.

2. Tinkamų failų diegimas ir „Roomba“prijungimas prie kompiuterio Kai visa jūsų aparatinė įranga yra sukonfigūruota, dabar galite pereiti prie MATLAB diegimo kartu su susijusiais m-failais, leidžiančiais bendrauti su robotu. Norėdami tai padaryti, atidarykite MATLAB ir sukurkite naują aplanką, kad visi susiję failai būtų kartu. Naudokite šį scenarijų norimiems failams įdiegti/atnaujinti:

- Dabar visi failai turėtų būti rodomi jūsų sukurtame aplanke. Dešiniuoju pelės mygtuku spustelėkite langą Dabartinis aplankas ir pasirinkite „Pridėti prie kelio“, kad įtrauktumėte tą kelią į katalogų, kuriuose MATLAB ieško failų, sąrašą. Įsitikinkite, kad visi failai yra teisingame kelyje.

3. Įdiegę failus, dabar galite pradėti prisijungti prie savo roboto. Pradėkite įjungdami robotą ir iš naujo jį iš naujo nustatę iškart po paleidimo (nepamirškite iš naujo nustatyti roboto kiekvieną kartą prieš ir po naudojimo). Antra, prijunkite savo robotą ir nešiojamąjį kompiuterį prie to paties „Wi -Fi“tinklo. Po to mes kalbėsime su iš anksto užprogramuotu „Raspberry Pi“per MATLAB, paskambindami „Roomba“naudodami jos pavadinimą ir funkciją „roomba“. Pavyzdžiui, prisijungčiau prie roboto 28 naudodamas šią eilutę: R = roomba (28).

- Atkreipkite dėmesį, kaip aš priskyriau objektą kintamajam R. Dabar galiu pasiekti susijusias „Roomba“funkcijas iš diegimo failo, kintamąjį R laikydamas struktūra.

- R.turnAngle (90) Jei viskas klostėsi gerai, turėtų skambėti muzikinis tonas, patvirtinantis ryšį.

3 žingsnis: „MATLAB Logic“

Šio dokumento apačioje esantis PDF dokumentas yra išsami mūsų kodavimo proceso loginė schema MATLAB. Mes suaktyvinome skardžio, šviesos ir šviesos smūgio jutiklius, kad robotas galėtų su mumis bendrauti, kai jis aptinka arti esantį objektą. Pavyzdžiui, kai robotas juda į priekį, jo šviesos jutikliai nuskaito jo kelyje esančius objektus pagal vektorių, kuriuo jis keliauja. Mes pasirinkome roboto atstumo slenkstį, kad priartėjus prie objekto jis apsisuktų, o ne susidurtų su juo. Mūsų robotas taip pat sukonfigūruotas naudojant „Twitter“, kurį nurodėme kodavimo procese (tai bus parodyta žemiau).

Siekdami pagerinti patirtį, mobiliuosiuose įrenginiuose panaudojome programą MATLAB, kad galėtume valdyti roboto judesius tiesiog pakreipę telefonus. Tai neprivaloma veikla, nes tikrai galite priversti robotą judėti naudodami MATLAB kodo segmento komandą „moveDistance“. Atminkite, kad norint valdyti robotą, geriausia naudoti MATLAB komandas. Jei norite nukreipti robotą taip, kad fotoaparatas fotografuotų tam tikroje vietoje, gali būti geriau koduoti roboto judesius MATLAB. Nors pramogauti, norint valdyti robotą MATLAB programa nėra pageidautina.

Kodas nurodo „Roomba“atlikti pagrindinę sąranką, o tada tęsti nepertraukiamą ciklą. Iš pradžių nešiojamasis kompiuteris nustatys ryšį su „Roomba“naudodami komandą „Roomba“(). Taip pat nustatomas „Twitter“ryšys naudojant „WebWrite“() komandą MATLAB. Ciklas apima penkis pagrindinius loginius srautus, priklausomai nuo „Roomba“supančios aplinkos. Pirmiausia „Roomba“patikrina, ar nėra kliūčių, ir nustato, kad tai trukdo atgal. Į tą ciklą įterptas yra antrasis kelias, įspėjantis vartotojus, jei „Roomba“yra išvežamas. Svarbi priemonė atšiaurioje Marso karo zonoje. „Roomba“nustatęs, kad jo padėtis yra saugi, jis žiūri į mobilųjį įrenginį, kad nustatytų kitą jo judesį. Jei mobilusis prietaisas yra pakreiptas į priekį, jis apskaičiuoja bazinį greitį, atsižvelgdamas į ritinio matavimo sunkumą, nei sureguliuoja atskirų ratų greitį, kad apsisuktų pagal žingsnio laipsnį. Telefonas taip pat gali perkelti „Roomba“atvirkščiai. Neutrali mobiliojo prietaiso būsena atveria paskutinius du kelius. Poilsio metu „Roomba“ieškos ateivių vėliavos ir atitinkamai įspės vartotoją.

Žemiau yra mūsų kodas (užpildytas MATLAB 2017a)

%įėjimų: orientaciniai duomenys iš „Wi -Fi“prijungto įrenginio, fotoaparato

%informacijos, jutiklių duomenys

%išėjimų: judesį valdo „Wi -Fi“prijungtas įrenginys ir judesys

% saugumas tikrinamas skaitant jutiklių duomenis. Jei fotoaparatas aptinka

% svetima vėliava, tada „roomba“atsako tviteryje priešo vėliavą

% pastebėta.

tikslas: mūsų prietaisas gyvena be jokio tikslo, išskyrus apsaugoti tuos, kurie

% ją sukūrė, ji tarnauja jos kūrėjui ir daro

% tiksliai tai, kas pasakyta.

Naudojimas: iš esmės programa veiks savaime.

išvalyti viską, uždaryti viską, clc

%Objektų ir kintamųjų inicijavimas

r = roomba (28);

m = mobiledev;

%use response = webwrite (pagrindinio kompiuterio pavadinimas, duomenys)

pagrindinio kompiuterio pavadinimas = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop veikia … laukia komandos';

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

reponse = webwrite (pagrindinio kompiuterio pavadinimas, duomenys);

%nuolat veikianti kilpa

o 1 == 1

%Struktūrų, kuriose yra svarbių duomenų

o = m.orientacija; %mobiliojo įrenginio orientacijos

šviesa = r.getLightBumpers (); %Lengvos buferio vertės

a = r.getCliffSensors (); %CLiff jutiklio vertės

guzas = r.getBumpers (); Buferio jutikliai %

%patikrintų buferių

jei guzas. dešinė == 1 || bump.left == 1 || bump.front == 1

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

%patikrinti lemputės jutikliai

elseif light. kairė> 60 || light.leftFront> 60 || light.leftCenter> 60 || šviesa.dešinė> 60 || šviesa.priekyje> 60 || šviesa. dešinysis centras> 60

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

%patikrinkite uolų jutiklius

Apsaugos nuo vagystės signalas ir pranešimas

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

r.stop ();

r. pypsėjimas ();

tweet = 'RoboCop buvo pašalintas!'

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

reponse = webwrite (pagrindinio kompiuterio pavadinimas, duomenys);

%Įprasta uolų vengimo operacija

elseif a.kairė <300 || a. teisingai <300 || a.leftFront <300 || a.priekyje <300

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

%Roomba išlaikė patikrinimus ir dabar veiks normaliai.

%Iš pradžių matuojamas prietaiso ritinys ir jis tampa pagrindu

greičio %, kuris naudojamas rato greičiui apskaičiuoti

%Judėjimas pirmyn

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

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

jei 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)));

kitaip r.stop

galas

%Judėjimas atgal

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

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

r. pypsėjimas ();

r. pypsėjimas ();

%resting roomba ieškos svetimos vėliavos, pažymėtos kaip fluorescencinė

%žalias popieriaus gabalas

Kitas

r.stop

img = r.getImage (); %fotografuoja

slenkstis = graythresh (img (200: 383,:, 2))+. 1; %apskaičiuotas žalias lygis

jei slenkstis>.42

tweet = 'Pastebėtas priešas !!'

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

reponse = webwrite (pagrindinio kompiuterio pavadinimas, duomenys);

Kitas

r.stop

galas

galas

galas

4 žingsnis: Išvada

Atminkite, kad galite naudoti aukščiau parašytą scenarijų, tačiau visada galite jį pakeisti, kad atitiktų jūsų poreikius. Jis neturi būti valdomas jūsų telefonu! (Tačiau tai daro jį linksmesnį.) Pasirinkite, kurį metodą norite naudoti savo robotui valdyti. Važiuokite su savo robotu ir mėgaukitės!

Rekomenduojamas: