Innholdsfortegnelse:
Video: Roomba With MATLAB: 4 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Dette prosjektet bruker MATLAB og en iRobot Create2 programmerbar robot. Ved å sette vår kunnskap om MATLAB på prøve, kan vi programmere Create2 til å tolke bilder og oppdage signaler. Robotens funksjonalitet avhenger hovedsakelig av MATLAB -mobilappen og en Raspberry Pi -kameramodul.
Trinn 1: Deler og materialer
1. iRobot Create, versjon 2
- Dette er en programmerbar robot som ser ut som en Roomba. Vær oppmerksom på at dette produktet fra iRobot ikke er et vakuum. Den er beregnet på tilpasset programmering av brukeren.
2. MATLAB 2017a
- De fleste eldre versjoner vil være kompatible med koden vi brukte nedenfor. MATLAB vil identifisere en kommando som ikke er kompatibel med versjonen du har, og vil foreslå en kommando som passer best.
3. Raspberry Pi 3 Model B, versjon 1.2
- Sjekk for å se hvilken Raspberry Pi som er kompatibel med iRobot. Se denne lenken for ytterligere hjelp: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Denne instruksen forutsetter at du jobber med en forhåndsprogrammert Raspberry Pi. Vær oppmerksom på at du må jobbe med en forhåndsprogrammert Pi for at følgende trinn skal fungere. Ved å bruke en forhåndsprogrammert Pi kan du utføre all kodingen din i MATLAB alene.
4. Kameramodul V2 (for Raspberry Pi)
- Du kan bli overrasket; til tross for størrelsen, er Raspberry Pi kameramodul veldig god kvalitet. Det er det billigste og mest kompatible alternativet for dette prosjektet.
Valgfritt: 3D-trykt stativ. Dette brukes til å stabilisere kameraet. Det påvirker ikke robotens funksjonalitet, men det vil hjelpe deg med kodingen hvis du ønsker å bruke bildedata for farge- og/eller gjenkjenning av objekter.
Trinn 2: Konfigurasjon
1. Koble til Raspberry Pi og kameramodul (maskinvare)
- For å drive Raspberry Pi må du kjøre en mikro -USB -hann til den kvinnelige strømporten på mikrokontrolleren. Valgfritt: En spenningsregulator kan brukes for å sikre at spenningen ikke overstiger 5V. Etter at Raspberry Pi er slått på, kan du koble den til roboten din ved å kjøre USB -en a fra hovedkortet til USB -port A på mikrokontrolleren.
- Etter å ha koblet Pi til Roomba, er kameraet klart til å installeres. Kameramodulen vil være mye mindre enn du forventer. Vær oppmerksom på at objektivet er montert på en sensor, og et hvitt bånd strekker seg fra kameraet. IKKE fjern eller riv båndet! Dette er kabelen du trenger for å koble den til Raspberry Pi. Hold først enden av båndet og finn sølvkontaktene og den blå kabelen. Disse er på motsatte sider. Deretter finner du sporet mellom ethernet- og HDMI -portene på Raspberry Pi. Legg merke til at det er en liten, hvit lås som dekker den. Løft låsen sakte, men ikke fjern den fra sporet, da den klikker og blir permanent skadet. Når du har løftet låsen, ta tak i båndet og sett sølvkontaktene mot HDMI -porten. Den blå siden vender mot Ethernet -porten. Skyv båndet sakte inn i sporet mens det fremdeles er ulåst. Du trenger ikke tvinge den inn i sporet. Etter innsetting, skyv låsen ned igjen. Hvis kameraet er ordentlig festet, bør du (forsiktig) kunne trekke i båndet og føle spenning. Båndet skal ikke være løst. Etter at du har koblet kameraet til Pi, kan du legge merke til hvor løst det er. Dette er grunnen til at vi brukte et 3D-trykt feste for å stabilisere det. Det er ditt valg å bestemme hvilke materialer du vil bruke for å holde kameraet stille for høy kvalitet.
2. Installere riktige filer og koble Roomba til datamaskinen Etter at all maskinvare er konfigurert, kan du nå gå videre til å installere MATLAB sammen med de tilhørende m-filene som lar deg kommunisere med roboten. For å gjøre dette, åpne MATLAB og opprett en ny mappe for å beholde alle relaterte filer sammen. Bruk dette skriptet til å installere/oppdatere de nødvendige filene:
- Alle filene skal nå vises i den opprettede mappen din. Høyreklikk i vinduet Gjeldende mappe og velg ‘Legg til i banen’ for å legge den banen til listen over kataloger der MATLAB ser etter filer. Sørg for at alle filene dine er i riktig bane.
3. Når filene er installert, kan du nå begynne å koble til roboten din. Begynn med å slå på roboten og deretter tilbakestille den umiddelbart etter oppstart (ikke glem å tilbakestille roboten hver gang før og etter bruk). For det andre, koble både roboten og den bærbare datamaskinen til det samme wifi -nettverket. Etter dette vil vi snakke med den forhåndsprogrammerte Raspberry Pi via MATLAB ved å ringe Roomba ved å bruke sitt fornavn og funksjonen roomba. For eksempel vil jeg koble til robot 28 ved å bruke følgende linje: R = roomba (28).
- Legg merke til hvordan jeg tildelte objektet til en variabel R. Jeg kan nå få tilgang til de tilknyttede Roomba -funksjonene fra installasjonsfilen ved å behandle variabelen R som en struktur.
- R.turnAngle (90) Hvis alt gikk bra, skulle en musikalsk tone spille som bekrefter forbindelsen.
Trinn 3: MATLAB Logic
PDF -dokumentet nederst i dette trinnet er et detaljert logikkflytdiagram for vår kodingsprosess i MATLAB. Vi aktiverte klippe-, lys- og lysstøtsensorene for å la roboten kommunisere med oss når den oppdager et objekt i umiddelbar nærhet. Når roboten for eksempel beveger seg fremover, søker lyssensorene etter objekter i banen i henhold til vektoren den beveger seg ved. Vi valgte en avstandsterskel for roboten slik at når den nærmer seg et objekt, vil den reversere i stedet for å kollidere med den. Vår robot er også konfigurert med Twitter, som vi spesifiserte i vår kodingsprosess (dette vil bli vist nedenfor).
For å forbedre opplevelsen brukte vi MATLAB -applikasjonen på våre mobile enheter, slik at vi kan kontrollere robotens bevegelser bare ved å vippe telefonene våre. Dette er en valgfri aktivitet, ettersom du sikkert kan få roboten til å flytte ved å bruke kommandoen moveDistance i MATLAB -kodesegmentet i stedet. Husk at bruk av MATLAB -kommandoer for å kontrollere roboten din er å foretrekke hvis målet ditt skal være presist. Hvis du ønsker å rette roboten slik at kameraet tar et bilde på et bestemt sted, kan det være bedre å kode robotens bevegelser i MATLAB. Mens det er underholdende, er det ikke ønskelig å bruke MATLAB -applikasjonen til å kontrollere roboten din for nøyaktighet.
Koden beordrer Roomba til å utføre et grunnleggende oppsett og deretter fortsette gjennom en kontinuerlig sløyfe. I utgangspunktet vil den bærbare datamaskinen opprette en kobling til Roomba ved hjelp av Roomba () -kommandoen. Den konfigurerer også twitter -tilkoblingen ved hjelp av webwrite () -kommandoen i MATLAB. Sløyfen inneholder fem hovedlogiske strømmer avhengig av miljøet rundt Roomba. Først sjekker Roomba om det er hindringer, og justerer bakover hvis den finner at den er hindret. Innebygd i den sløyfen er den andre banen som varsler brukere om Roomba blir ført bort. Et viktig verktøy i den harde Mars -krigszonen. Etter at Roomba har bestemt at posisjonen er trygg, ser den til den mobile enheten for å bestemme den neste bevegelsen. Hvis den mobile enheten vippes fremover, vil den beregne en basehastighet avhengig av alvorlighetsgraden av rullemålet enn å justere de enkelte hjulhastighetene for å snu basert på stigningsgraden. Telefonen kan også flytte Roomba i revers. En nøytral tilstand for mobilenheter porter de to siste veiene. En hvilende Roomba vil søke etter et Alien -flagg og varsle brukeren om dette.
Nedenfor er koden vår (fullført i MATLAB 2017a)
%innganger: Orienteringsdata fra en wifi -tilkoblet enhet, kamera
%informasjon, sensordata
%utganger: bevegelse styres av den wifi -tilkoblede enheten og bevegelsen
% er sikkerhetskontrollert ved å lese sensordata. Hvis kameraet oppdager
% et fremmed flagg, så reagerer roomba ved å tweeting fiendens flagg
% er oppdaget.
%formål: enheten vår lever uten noe annet formål enn å beskytte de som
% opprettet det, det tjener skaperen og gjør det
% nøyaktig hva det ble fortalt.
%Bruk: i hovedsak vil programmet kjøre alene.
tøm alt, lukk alle, clc
%Initialiserer objekter og variabler
r = roomba (28);
m = mobiledev;
%use response = webwrite (vertsnavn, data)
hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';
API = 'SGZCTNQXCWAHRCT5';
tweet = 'RoboCop er operativ … Venter på kommando';
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (vertsnavn, data);
%løp hele tiden
mens 1 == 1
%Strukturer som inneholder relavent data
o = m.orientering; %orientering av mobilenhet
light = r.getLightBumpers (); %Lys støtfangerverdier
a = r.getCliffSensors (); %CLiff -sensorverdier
støt = r.getBumpers (); %Støtfanger sensorer
%sjekk støtfangere
hvis bump.right == 1 || bump.left == 1 || bump.front == 1
r.moveDistance (-. 2,.2);
%sjekk lyssensorer
elseif light. venstre> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightFront> 60 || light.rightCenter> 60
r.moveDistance (-. 2,.2);
%sjekk Cliff Sensors
%Tyverisikringssignal og varsling
elseif a. venstre <300 && a.right <300 && a.leftFront <300 && a.rightFront <300
r.stop ();
r.beep ();
tweet = 'RoboCop er opphevet!'
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (vertsnavn, data);
%Normal bruk av klipper
annet hvis a. venstre <300 || a.right <300 || a. venstreFront <300 || a.rightFront <300
r.moveDistance (-. 2,.2);
%Roomba besto sjekkene og vil nå kjøre med normal drift.
%Opprinnelig måles rullingen av enheten og blir en base
%hastighet som deretter brukes til å beregne hjulets hastighet
%Fremoverbevegelse
elseif o (3)> = 0 && o (3) <= 60
baseVel = (-. 5/60)*(o (3) -60);
hvis o (2)> =-70 && o (2) <0
r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));
ellers if (2) = 0
r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));
ellers r. stopp
slutt
%Bakover bevegelse
elseif o (3)> 100 && o (3) <150
r.setDriveVelocity (-. 2, -.2)
r.beep ();
r.beep ();
%hvile roomba vil søke etter Alien Flagget merket som en blomstrende blomst
%grønt stykke papir
ellers
r. stopp
img = r.getImage (); %ta bilde
terskel = gråthresh (img (200: 383,:, 2))+. 1; %kalk grønt nivå
hvis terskel>.42
tweet = 'Enemy Spotted !!'
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (vertsnavn, data);
ellers
r. stopp
slutt
slutt
slutt
Trinn 4: Konklusjon
Husk at du kan bruke skriptet vi skrev ovenfor, men du kan alltid endre det for å passe dine behov. Det trenger ikke å styres av telefonen din! (Det gjør det imidlertid morsommere.) Velg hvilken metode du foretrekker å bruke for å kontrollere roboten din. Kjør rundt med roboten din og nyt!
Anbefalt:
Roomba Bot the Bulider: 5 trinn (med bilder)
Roomba Bot Bulider: Bot the Builder er en roomba, som med " grabbers " festet til fronten vil kunne flytte objekter rundt. Koden med den er satt til å registrere den første satsen med en GUI -boks som du kan kontrollere med bare museklikk. Etter
MATLAB -kontrollert Roomba: 5 trinn
MATLAB -kontrollert Roomba: Målet med dette prosjektet er å bruke MATLAB så vel som en modifisert iRobot programmerbar robot. Gruppen vår kombinerte kodingskunnskapene våre for å lage et MATLAB -skript som bruker mange funksjoner i iRobot, inkludert klippesensorene, støtfangersensoren
Nettleserkontrollert Roomba -robot med Raspberry Pi Model 3 A+: 6 trinn (med bilder)
Nettleserkontrollert Roomba -robot med Raspberry Pi Model 3 A+: Oversikt Denne instruksjonen vil fokusere på hvordan du gir en død Roomba en ny hjerne (Raspberry Pi), øyne (webkamera) og en måte å kontrollere alt fra en nettleser. Det er mange Roomba -hacks som tillater kontroll via det serielle grensesnittet. Jeg har ikke
Roomba MATLAB -prosjekt: 5 trinn
Roomba MATLAB -prosjekt: Den nåværende planen som NASA har for Mars -roveren er at den skal være en datainnsamler og vandre rundt på Mars og samle prøver av jorda for å bringe tilbake til jorden slik at forskere kan se om det var noen tidligere livsformer på planeten. Ytterligere
Roomblock: en plattform for læring av ROS -navigasjon med Roomba, Raspberry Pi og RPLIDAR: 9 trinn (med bilder)
Roomblock: en plattform for læring av ROS -navigasjon med Roomba, Raspberry Pi og RPLIDAR: Hva er dette? &Quot; Roomblock " er en robotplattform som består av en Roomba, en Raspberry Pi 2, en lasersensor (RPLIDAR) og et mobilbatteri. Monteringsrammen kan lages av 3D -skrivere. ROS navigasjonssystem gjør det mulig å lage et kart over rom og bruke