Sisukord:
Video: Roomba koos MATLABiga: 4 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
See projekt kasutab MATLAB -i ja iRobot Create2 programmeeritavat robotit. Pannes proovile oma teadmised MATLABist, suudame programmeerida Create2 piltide tõlgendamiseks ja signaalide tuvastamiseks. Roboti funktsionaalsus sõltub peamiselt MATLAB mobiilirakendusest ja Raspberry Pi kaameramoodulist.
Samm: osad ja materjalid
1. iRobot Create, versioon 2
- See on programmeeritav robot, mis näeb välja nagu Roomba. Pidage meeles, et see iRoboti toode ei ole vaakum. See on ette nähtud kasutaja kohandatud programmeerimiseks.
2. MATLAB 2017a
- Enamik vanemaid versioone ühildub allpool kasutatud koodiga. MATLAB tuvastab käsu, mis ei ühildu teie versiooniga, ja soovitab teile sobivaima käsu.
3. Raspberry Pi 3 mudel B, versioon 1.2
- Kontrollige, milline Raspberry Pi teie iRobotiga ühildub. Lisateabe saamiseks vaadake seda linki: https://www.irobotweb.com/~/media/MainSite/PDFs/A… See juhend annab eelduse, et töötate eelprogrammeeritud Raspberry Pi -ga. Pidage meeles, et järgmiste toimingute toimimiseks peate töötama eelprogrammeeritud Pi -ga. Eelprogrammeeritud Pi kasutamine võimaldab teil kodeerida ainult MATLABis.
4. Kaamera moodul V2 (Raspberry Pi jaoks)
- võite olla üllatunud; vaatamata oma suurusele on Raspberry Pi kaameramoodul väga hea kvaliteediga. See on selle projekti jaoks kõige odavam ja ühilduvam variant.
Valikuline: 3D-trükitud alus. Seda kasutatakse kaamera stabiliseerimiseks. See ei mõjuta roboti funktsionaalsust, kuid aitab teil kodeerida, kui soovite kasutada pildiandmeid värvide ja/või objektide tuvastamiseks.
2. samm: seadistamine
1. Raspberry Pi ja kaameramooduli ühendamine (riistvara)
- Raspberry Pi toiteallikaks peate mikrokontrolleri naissoost toiteporti juhtima meessoost mikro -USB. Valikuline: pinge regulaatorit võib kasutada, et tagada pinge mitte üle 5 V. Pärast Raspberry Pi toite sisselülitamist saate selle oma robotiga ühendada, käivitades emaplaadi isase otsa USB a mikrokontrolleri USB -porti A.
- Pärast Pi ühendamist Roombaga on kaamera paigaldamiseks valmis. Kaameramoodul on oodatust palju väiksem. Pange tähele, et objektiiv on paigaldatud andurile ja kaamerast ulatub valge lint. ÄRGE eemaldage ega rebige linti! See on kaabel, mille peate ühendama Raspberry Pi -ga. Kõigepealt hoidke lindi otsast kinni ja leidke hõbedased pistikud ja sinine kaabel. Need on vastaskülgedel. Seejärel leidke oma Raspberry Pi Etherneti ja HDMI -portide vaheline pesa. Pange tähele, et seda katab väike valge lukk. Tõstke lukku aeglaselt, kuid ärge eemaldage seda pesast, kuna see klõpsatab ja saab püsivalt kahjustada. Kui olete luku üles tõstnud, haarake lint ja pöörake hõbedased pistikud HDMI -porti. Sinine pool on suunatud Etherneti pordi poole. Libistage lint aeglaselt pesasse, kui see on veel lukustamata. Te ei pea seda pesasse sundima. Pärast sisestamist lükake lukk tagasi alla. Kui teie kaamera on korralikult kinnitatud, peaksite saama (õrnalt) linti tõmmata ja tunda pinget. Lint ei tohiks olla lahti. Pärast kaamera ühendamist Pi -ga võite märgata, kui lahti see on. Seetõttu kasutasime selle kinnitamiseks 3D-prinditud kinnitust. Teie valik on otsustada, milliseid materjale soovite kaamera kvaliteetse pildistamise jaoks paigal hoida.
2. Õigete failide installimine ja Roomba ühendamine arvutiga Pärast kogu riistvara konfigureerimist saate nüüd liikuda MATLABi installimise juurde koos sellega seotud m-failidega, mis võimaldavad teil robotiga suhelda. Selleks avage MATLAB ja looge uus kaust, et hoida kõiki seotud faile koos. Kasutage seda skripti vajalike failide installimiseks/värskendamiseks:
- Kõik failid peaksid nüüd ilmuma teie loodud kausta. Paremklõpsake aknas Praegune kaust ja valige „Lisa teele”, et lisada see tee kataloogide loendisse, kust MATLAB faile otsib. Veenduge, et kõik failid on õigel teel.
3. Kui failid on installitud, võite nüüd alustada oma robotiga ühenduse loomist. Alustage roboti sisselülitamisega ja seejärel selle kohese käivitamisega kõva lähtestamisega (ärge unustage oma robotit enne ja pärast kasutamist kõvasti lähtestada). Teiseks ühendage oma robot ja sülearvuti samasse wifi -võrku. Pärast seda räägime MATLAB -i kaudu eelprogrammeeritud Raspberry Pi -ga, helistades Roombale selle eesnime ja funktsiooni roomba abil. Näiteks ühendaksin robotiga 28, kasutades järgmist rida: R = roomba (28).
- Pange tähele, kuidas ma määrasin objekti muutujale R. Nüüd saan installifailist juurde pääseda seotud Roomba funktsioonidele, käsitledes muutujat R struktuurina.
- R.turnAngle (90) Kui kõik läks hästi, peaks mängima muusikaline toon, mis kinnitab seost.
3. samm: MATLABi loogika
Selle sammu allosas olev PDF -dokument on meie MATLAB -i kodeerimisprotsessi üksikasjalik loogiline vooskeem. Aktiveerisime kalju-, valguse- ja valguskoldeandurid, et robot saaks meiega suhelda, kui tuvastab selle läheduses asuva objekti. Näiteks kui robot liigub edasi, otsivad tema valgusandurid oma teel olevaid objekte vastavalt vektorile, millega ta liigub. Valisime robotile kauguse läve, et objektile lähenedes pööraks ta tagurpidi, selle asemel, et sellega kokku põrgata. Meie robot on konfigureeritud ka Twitteriga, mille me oma kodeerimisprotsessis täpsustasime (seda näidatakse allpool).
Kogemuse täiustamiseks kasutasime oma mobiilseadmetes MATLAB -i rakendust, et saaksime roboti liigutusi juhtida vaid telefoni kallutades. See on valikuline tegevus, kuna saate kindlasti lasta robotil liikuda, kasutades selle asemel käsku moveDistance MATLAB -koodi segmendis. Pidage meeles, et kui soovite, et teie eesmärk oleks täpne, on robotite juhtimiseks parem kasutada MATLAB käske. Kui soovite robotit sihtida nii, et kaamera pildistaks kindlas kohas, võib olla parem roboti liigutusi MATLABis kodeerida. Meelelahutuslikuna pole MATLAB -i rakenduse kasutamine oma roboti juhtimiseks täpsuse huvides soovitav.
Kood käsib Roombal teha põhiseadistuse ja seejärel jätkata pideva tsükliga. Esialgu loob sülearvuti Roomba () käsu abil Roombaga lingi. Samuti loob see Twitteri ühenduse, kasutades MATLAB -i käsku webwrite (). Tsükkel sisaldab viit peamist loogilist voogu sõltuvalt Roomba ümbritsevast keskkonnast. Esiteks kontrollib Roomba takistusi ja kohandub tagurpidi, kui leiab, et see on takistatud. Sellesse silmusse on sisse lülitatud teine tee, mis teavitab kasutajaid Roomba äraviimisest. Oluline utiliit karmis Marsi sõjatsoonis. Pärast seda, kui Roomba on kindlaks teinud, et tema asukoht on ohutu, otsib mobiilseade selle järgmise liikumise. Kui mobiilseade on ettepoole kallutatud, arvutab see baaskiiruse sõltuvalt rullimõõtmise tõsidusest, kui reguleerib üksikute rataste pöörlemiskiirusi pööramiseks vastavalt kaldenurgale. Telefon võib Roomba ka tagurpidi nihutada. Neutraalne mobiilseadme olek väravad kaks viimast teed. Puhkav Roomba otsib välismaalase lippu ja teavitab kasutajat sellest.
Allpool on meie kood (täidetud MATLAB 2017a)
%sisendeid: orientatsiooniandmed WiFi -ga ühendatud seadmest, kaamerast
%teavet, anduri andmed
%väljundeid: liikumist juhib WiFi -ga ühendatud seade ja liikumine
% on ohutuse kontrollitud, lugedes anduri andmeid. Kui kaamera tuvastab
Välismaalase lipp, siis vastab roomba vaenlase lipu säutsudes
% on märgatud.
eesmärk: meie seadmel pole muud eesmärki kui nende kaitsmine
% lõi selle, see teenib oma loojat ja teeb seda
% täpselt seda, mida ta ütles.
Kasutamine: programm töötab sisuliselt iseseisvalt.
kustuta kõik, sulge kõik, klõpsa
%Objektide ja muutujate initsialiseerimine
r = roomba (28);
m = mobiledev;
%use response = webwrite (hostinimi, andmed)
hostinimi = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';
API = 'SGZCTNQXCWAHRCT5';
tweet = 'RoboCop töötab … ootab käsku';
andmed = strcat ('api_key =', API, '& status =', säuts);
reponse = veebikirjutamine (hosti nimi, andmed);
%pidevalt töötav silmus
samas kui 1 == 1
%Relavent andmeid sisaldavad struktuurid
o = m.orientatsioon; Mobiilseadme orientatsioon %
valgus = r.getLightBumpers (); Kerged kaitseraua väärtused
a = r.getCliffSensors (); %CLiff -anduri väärtused
muhk = r.getBumpers (); %Kaitseraua andurid
%kontrolli kaitserauad
kui muhk.paks == 1 || bump.left == 1 || bump.front == 1
r.moveDistance (-. 2,.2);
%kontrolllampide andurid
muu kui valgus.vasak> 60 || light.leftFront> 60 || light.leftCenter> 60 || kerge.parem> 60 || light.rightFront> 60 || light.rightCenter> 60
r.moveDistance (-. 2,.2);
%kontrollige kaljuandureid
Vargusevastane signaal ja märguanne
elseif a.vasak <300 && a.õigus <300 && a.leftFront <300 && a.rightFront <300
r.stop ();
r.piiks ();
tweet = 'RoboCop on tühistatud!'
andmed = strcat ('api_key =', API, '& status =', säuts);
reponse = veebikirjutamine (hosti nimi, andmed);
%Tavaline kalju vältimise operatsioon
elseif a.vasak <300 || a. õigus <300 || a.vasakul ees <300 || a. paremal ees <300
r.moveDistance (-. 2,.2);
%Roomba läbis kontrolli ja hakkab nüüd normaalselt töötama.
%Algselt mõõdetakse seadme rull ja sellest saab alus
kiiruse %, mida kasutatakse seejärel ratta kiiruse arvutamiseks
%Edasi liikumine
elseif o (3)> = 0 && o (3) <= 60
baseVel = (-. 5/60)*(o (3) -60);
kui 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)));
muidu r.peatus
lõpp
%Tagurpidi liikumine
elseif o (3)> 100 && o (3) <150
r.setDriveVelocity (-. 2, -.2)
r.piiks ();
r.piiks ();
%puhkav roomba otsib fluorestsentsina märgitud tulnukalippu
%roheline paberitükk
muidu
r.peatus
img = r.getImage (); %pildista
lävi = halli värskendus (img (200: 383,:, 2))+. 1; %roheline tase
kui lävi>.42
tweet = "Vaenlane on täpiline !!"
andmed = strcat ('api_key =', API, '& status =', säuts);
reponse = veebikirjutamine (hosti nimi, andmed);
muidu
r.peatus
lõpp
lõpp
lõpp
4. samm: järeldus
Pidage meeles, et võite kasutada ülalkirjutatud skripti, kuid saate seda alati oma vajadustele vastavaks muuta. Seda ei pea juhtima telefon! (Kuid see teeb selle lõbusamaks.) Valige, millist meetodit eelistate oma roboti juhtimiseks kasutada. Sõitke oma robotiga ringi ja nautige!
Soovitan:
Castle Planter (koos Tinkercadi koodiplokkidega): 25 sammu (koos piltidega)
Castle Planter (koos Tinkercadi koodiplokkidega): selle disaini teostamine võttis mul üsna kaua aega ja kuna minu kodeerimisoskus on vähemalt öeldes piiratud, loodan, et see õnnestus hästi :) Kasutades juhiseid, peaksite saama taaslooge selle disaini kõik aspektid ilma
Diy makroobjektiiv koos teravustamisega (erinev kui kõik muud DIY makroobjektiivid): 4 sammu (koos piltidega)
Diy makroobjektiiv koos teravustamisega (erinev kui kõik muud DIY makroobjektiivid): olen näinud palju inimesi, kes teevad makroläätsi tavalise komplekti objektiiviga (tavaliselt 18–55 mm). Enamik neist on objektiiv, mis on lihtsalt tagurpidi kaamera külge kinnitatud või esielement eemaldatud. Mõlemal variandil on varjuküljed. Objektiivi kinnitamiseks
Roomba Bot the Bulider: 5 sammu (koos piltidega)
Roomba Bot the Bulider: Bot the Builder on roomba, mis koos " grabbers " esiosa külge kinnitatud saab objekte ringi liigutada. Sellega kood on seatud salvestama esimest liikumist graafilise kasutajaliidese kastiga, mida saate juhtida vaid hiireklõpsuga. Pärast
Brauseri juhitav Roomba robot Raspberry Pi mudeliga 3 A+: 6 sammu (koos piltidega)
Brauseri juhitav Roomba robot koos Raspberry Pi mudeliga 3 A+: Ülevaade Käesolevas juhendis keskendutakse surnud Roomba uue aju (Raspberry Pi), silmade (veebikaamera) andmisele ja sellele, kuidas veebibrauserist kõike juhtida. Seal on palju Roomba häkke, mis võimaldavad juhtida jadaliidese kaudu. Ma ei ole
Roomblock: platvorm ROS -i navigeerimise õppimiseks koos Roomba, Raspberry Pi ja RPLIDARiga: 9 sammu (koos piltidega)
Roomblock: platvorm ROS -i navigeerimise õppimiseks koos Roomba, Raspberry Pi ja RPLIDARiga: mis see on? &Quot; Roomblock " on robotplatvorm, mis koosneb Roombast, Raspberry Pi 2 -st, lasersensorist (RPLIDAR) ja mobiilpatareist. Paigaldusraami saab valmistada 3D -printeritega. ROS -navigatsioonisüsteem võimaldab teha ruumide kaarti ja kasutada i