Innehållsförteckning:

Roomba med MATLAB: 4 steg (med bilder)
Roomba med MATLAB: 4 steg (med bilder)

Video: Roomba med MATLAB: 4 steg (med bilder)

Video: Roomba med MATLAB: 4 steg (med bilder)
Video: Temple Run Blazing Sands- In Real Life 2024, November
Anonim
Roomba Med MATLAB
Roomba Med MATLAB

Detta projekt använder sig av MATLAB och en iRobot Create2 programmerbar robot. Genom att testa vår kunskap om MATLAB kan vi programmera Create2 för att tolka bilder och upptäcka signaler. Robotens funktionalitet beror främst på MATLAB -mobilappen och en Raspberry Pi -kameramodul.

Steg 1: Delar och material

Delar och material
Delar och material
Delar och material
Delar och material
Delar och material
Delar och material
Delar och material
Delar och material

1. iRobot Create, version 2

- Det här är en programmerbar robot som ser ut som en Roomba. Tänk på att denna produkt från iRobot inte är ett vakuum. Den är avsedd för anpassad programmering av användaren.

2. MATLAB 2017a

- De flesta äldre versioner kommer att vara kompatibla med koden som vi använde nedan. MATLAB identifierar ett kommando som inte är kompatibelt med den version du har och föreslår ett kommando som passar bäst.

3. Raspberry Pi 3 Model B, version 1.2

- Kontrollera vilken Raspberry Pi som är kompatibel med din iRobot. Se denna länk för ytterligare hjälp: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Denna instruerbara förutsätter att du arbetar med en förprogrammerad Raspberry Pi. Tänk på att du måste arbeta med en förprogrammerad Pi för att följande steg ska fungera. Med en förprogrammerad Pi kan du utföra all din kodning i MATLAB ensam.

4. Kameramodul V2 (för Raspberry Pi)

- Du kan bli förvånad; trots sin storlek är Raspberry Pi -kameramodulen mycket bra kvalitet. Det är det billigaste och mest kompatibla alternativet för detta projekt.

Valfritt: 3D-tryckt stativ. Detta används för att stabilisera kameran. Det påverkar inte robotens funktionalitet, men det hjälper dig att koda om du vill använda bilddata för färg- och/eller objektigenkänning.

Steg 2: Konfiguration

Konfiguration
Konfiguration
Konfiguration
Konfiguration

1. Ansluta Raspberry Pi och kameramodul (hårdvara)

- För att driva Raspberry Pi måste du köra en micro USB -hane till den kvinnliga strömporten på mikrokontrollen. Valfritt: En spänningsregulator kan användas för att säkerställa att spänningen inte överstiger 5V. Efter att ha startat Raspberry Pi kan du ansluta den till din robot genom att köra USB -hane från moderkortet till USB -port A på mikrokontrollen.

- Efter anslutning av Pi till Roomba är kameran redo att installeras. Kameramodulen blir mycket mindre än du förväntar dig. Observera att linsen är monterad på en sensor, och ett vitt band sträcker sig från kameran. Ta INTE bort eller riv bandet! Detta är kabeln du behöver för att ansluta den till Raspberry Pi. Håll först i bandets ände och hitta silverkontakterna och den blå kabeln. Dessa är på motsatta sidor. Hitta sedan platsen mellan ethernet- och HDMI -portarna på din Raspberry Pi. Lägg märke till att det finns ett litet, vitt lås som täcker det. Lyft långsamt låset, men ta inte bort det från spåret, eftersom det kommer att knäppas och skadas permanent. När du har lyft låset, ta tag i bandet och vänd silverkontakterna till HDMI -porten. Den blå sidan kommer att vända mot Ethernet -porten. Skjut långsamt bandet in i facket medan det fortfarande är olåst. Du behöver inte tvinga in den i facket. Efter insättning, skjut tillbaka låset. Om din kamera är ordentligt säkrad bör du (försiktigt) kunna dra i bandet och känna spänning. Bandet ska inte vara löst. När du har anslutit din kamera till Pi kan du märka hur lös den är. Det är därför vi använde ett 3D-tryckt fäste för att stabilisera det. Det är ditt val att bestämma vilka material du vill använda för att hålla kameran stilla för högkvalitativ bildbehandling.

2. Installera rätt filer och ansluta Roomba till din dator När all maskinvara har konfigurerats kan du nu gå vidare till att installera MATLAB tillsammans med tillhörande m-filer som gör att du kan kommunicera med roboten. För att göra detta, öppna MATLAB och skapa en ny mapp för att hålla alla relaterade filer tillsammans. Använd detta skript för att installera/uppdatera nödvändiga filer:

- Alla filer ska nu visas i din skapade mapp. Högerklicka i fönstret Aktuell mapp och välj "Lägg till sökväg" för att lägga till den sökvägen till listan över kataloger där MATLAB letar efter filer. Se till att alla dina filer är i rätt sökväg.

3. När filerna har installerats kan du nu börja ansluta till din robot. Börja med att slå på din robot och sedan återställa den direkt efter start (glöm inte att återställa din robot varje gång före och efter användning). För det andra, anslut både din robot och bärbara dator till samma wifi -nätverk. Efter detta kommer vi att prata med den förprogrammerade Raspberry Pi via MATLAB genom att ringa Roomba med dess förnamn och funktionen roomba. Till exempel skulle jag ansluta till robot 28 med hjälp av följande rad: R = roomba (28).

- Lägg märke till hur jag tilldelade objektet till en variabel R. Jag kan nu komma åt de tillhörande Roomba -funktionerna från installationsfilen genom att behandla variabeln R som en struktur.

- R.turnAngle (90) Om allt gick bra skulle en musikalisk ton spela, vilket bekräftar anslutningen.

Steg 3: MATLAB Logic

PDF -dokumentet längst ner i detta steg är ett detaljerat logikflödesschema för vår kodningsprocess i MATLAB. Vi aktiverade klipp-, ljus- och ljusstötssensorerna för att låta roboten kommunicera med oss när den upptäcker ett föremål i dess omedelbara närhet. Till exempel, när roboten rör sig framåt, söker dess ljussensorer efter objekt i sin väg enligt vektorn vid vilken den färdas. Vi valde en avståndströskel för roboten så att när den närmar sig ett objekt, kommer den att vända istället för att kollidera med den. Vår robot är också konfigurerad med Twitter, vilket vi specificerade i vår kodningsprocess (detta kommer att visas nedan).

För att förbättra upplevelsen använde vi MATLAB -applikationen på våra mobila enheter så att vi kan styra robotens rörelser bara genom att luta våra telefoner. Detta är en valfri aktivitet, eftersom du säkert kan få roboten att flytta genom att använda kommandot moveDistance i MATLAB -kodsegmentet istället. Kom ihåg att det är att föredra att använda MATLAB -kommandon för att styra din robot om ditt mål ska vara exakt. Om du vill rikta roboten så att kameran tar en bild på en specifik plats kan det vara bättre att koda robotens rörelser i MATLAB. Medan det är underhållande är det inte önskvärt att använda MATLAB -applikationen för att styra din robot för noggrannhet.

Koden beordrar Roomba att utföra en grundläggande inställning och sedan fortsätta genom en kontinuerlig slinga. Initialt kommer den bärbara datorn att skapa en länk med Roomba med hjälp av kommandot Roomba (). Det konfigurerar också twitter -anslutningen med kommandot webwrite () i MATLAB. Slingan innehåller fem huvudsakliga logiska flöden beroende på miljön kring Roomba. Först söker Roomba efter hinder och justerar bakåt om den upptäcker att den är hindrad. Inbäddad i den slingan är den andra vägen som varnar användare om Roomba förs bort. Ett viktigt verktyg i den hårda Mars -krigszonen. Efter att Roomba har fastställt att dess position är säker, ser den till den mobila enheten för att bestämma dess nästa rörelse. Om den mobila enheten lutas framåt beräknar den en bashastighet beroende på rullmätningens svårighetsgrad än att justera de enskilda hjulhastigheterna för att vrida baserat på stigningsgraden. Telefonen kan också flytta Roomba bakåt. En neutral mobil enhetstillstånd grindar de två sista vägarna. En vilande Roomba söker efter en främmande flagga och varnar användaren om detta.

Nedan är vår kod (slutförd i MATLAB 2017a)

%ingångar: Orienteringsdata från en wifi -ansluten enhet, kamera

%information, sensordata

%utgångar: rörelsen styrs av den wifi -anslutna enheten och rörelsen

% kontrolleras genom att läsa sensordata. Om kameran upptäcker

% en främmande flagga så svarar roomba genom att twittra fiendens flagga

% har upptäckts.

%syfte: vår enhet lever utan syfte förutom att skydda dem som

% skapade den, den tjänar sin skapare och gör

% exakt vad det berättas.

%Användning: i huvudsak kommer programmet att köra på egen hand.

rensa alla, stäng alla, clc

%Initiera objekt och variabler

r = roomba (28);

m = mobiledev;

%use response = webwrite (värdnamn, data)

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

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop är operativt … väntar på kommando';

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

reponse = webwrite (värdnamn, data);

%löpande loop

medan 1 == 1

%Strukturer som innehåller relavent data

o = m.orientering; %orientering av mobil enhet

light = r.getLightBumpers (); %Lätta stötfångarvärden

a = r.getCliffSensors (); %CLiff -sensorvärden

bump = r.getBumpers (); %Stötfångarsensorer

%kontrollera stötfångare

om bump.right == 1 || bump.vänster == 1 || bump.front == 1

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

%kontrollampor

elseif ljus.vänster> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightFront> 60 || light.rightCenter> 60

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

%kontrollera Cliff Sensors

%Stöldskyddssignal och avisering

elseif a.vänster <300 && a.rätt <300 && a.vänsterFront <300 && a.rättFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop har lyfts!'

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

reponse = webwrite (värdnamn, data);

%Normal drift för undvikande av klippor

elseif a.vänster <300 || a. rätt <300 || a. vänster fram <300 || a.rightFront <300

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

%Roomba klarade kontrollerna och körs nu med normal drift.

%Ursprungligen mäts enhetens rulle och blir en bas

%hastighet som sedan används för att beräkna hjulets hastighet

%Rörelse framåt

annars if (3)> = 0 && o (3) <= 60

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

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

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

annars if (2) = 0

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

annars r.stopp

slutet

%Bakåtgående rörelse

annars if (3)> 100 && o (3) <150

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

r.beep ();

r.beep ();

%vila roomba kommer att söka efter den främmande flaggan markerad som en blomstrande

%grönt papper

annan

r. stopp

img = r.getImage (); %ta bild

tröskel = gråthresh (img (200: 383,:, 2))+. 1; %calc grön nivå

om tröskel>.42

tweet = 'Enemy Spotted !!'

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

reponse = webwrite (värdnamn, data);

annan

r. stopp

slutet

slutet

slutet

Steg 4: Slutsats

Kom ihåg att du kan använda manuset vi skrev ovan, men du kan alltid ändra det för att passa dina behov. Det behöver inte styras av din telefon! (Det gör det dock roligare.) Välj vilken metod du föredrar att använda för att styra din robot. Kör runt med din robot och njut!

Rekommenderad: