Innehållsförteckning:

Roomba Parking Pal: 6 steg
Roomba Parking Pal: 6 steg

Video: Roomba Parking Pal: 6 steg

Video: Roomba Parking Pal: 6 steg
Video: Roomba I3 freaking rocks 2024, Juli
Anonim
Roomba Parking Pal
Roomba Parking Pal

Detta projekt använder en iRobot Create programmerbar roomba, MATLAB r2018a och MATLAB mobile. Genom att använda dessa tre medier och vår kunskap om kodning programmerade vi iRobot Create för att tolka färger och använda inbyggda sensorer för att slutföra uppgifter. Dessa projekt beror på Raspberry Pi och MATLAB -kommunikation för att utföra dessa uppgifter.

Steg 1: Material

Material
Material
Material
Material

1. iRobot Skapa robot

2. MATLAB r2018a

3. Hallon Pi

4. Kameramodul

5. 3D-tryckt kamerastabilisatorstativ

6. Smartphone med MATLAB -mobil installerad

7. Bärbar dator/dator med MATLAB installerat

Steg 2: Anslutning

Detta steg handlar om att ansluta Raspberry Pi till roboten, för det andra ansluta roboten till din dator och ansluta smarttelefonen till datorn.

Den enklaste delen av denna process är att ansluta Raspberry Pi till din robot, eftersom Raspberry Pi är monterad på toppen av roboten. Det finns en sladd från roboten som allt du behöver göra är att ansluta till sidan av Raspberry Pi.

Nästa steg är att ansluta roboten till din dator så att du kan köra kommandon för roboten att utföra. Det första du måste göra är att ansluta din dator till det trådlösa nätverk som din roomba skapar. Nu rekommenderas att du använder ikonen Ange sökväg i MATLAB för att ställa in sökvägen så att du kan använda funktionerna i Roomba verktygslåda från MATLAB. Varje gång du börjar och slutar använda med roboten måste du göra en "Two-Finger Salute" hård återställning av roboten, vilket innebär att du håller ner docknings- och spotknapparna i tio sekunder tills lampan dämpas och indikerar att den ska släppas. Du lyckades med denna hårda återställning om du hör roboten spela en kort skala. Därefter måste du ansluta till roomba med en kodrad som denna "r = roomba (x)" där 'x' är det nummer som är avsett för roboten som du har.

Slutligen måste du ladda ner MATLAB -mobil på vilken mobil enhet du än ska använda för detta projekt, och den här appen är tillgänglig på både Android- och Apple -enheter. När programmet är installerat måste du logga in med dina uppgifter. Sedan måste du ansluta den här enheten till din dator, med fliken märkt "Mer" -> klicka sedan på "inställningar" -> klicka sedan på "Lägg till en dator". Detta ska visa skärmen som visas på bilderna ovan. nästa steg som du måste gå igenom är bara att koppla in och chugga informationen som den begär. När du väl har anslutit kommer du att kunna ringa funktioner som du definierar på din dator på din telefon för att styra din robot.

Steg 3: Skapa logiskt en MATLAB -kod för att använda sensorer

Logiskt att skapa en MATLAB -kod för att använda sensorer
Logiskt att skapa en MATLAB -kod för att använda sensorer

Koden blir lättast att skapa när en majoritet av den är inom on -loop, så att roomba ständigt kan uppdatera giltiga värden den tittar på. Om det finns ett fel kommer MATLAB att visa ett fel och där det visas i koden, vilket gör felsökning relativt enkel.

Denna kod är utformad i r2018a MATLAB och använder standardverktygslådor, iRobot Create -verktygslådan samt MATLABs mobila verktygslåda. Roomba som används i detta exempel är 26, och r = roomba (26) behöver bara köras en gång för att helt kommunicera med roomba.

Koda:

funktionsparkassist (x) om x == 1

r = roomba (26) % ansluter till roomba

medan det är sant

r.setDriveVelocity (.05,.05) % sätter roomba till en lägre körhastighet

bump = r.getBumpers % hämtar data från bump -sensorerna

cliff = r.getCliffSensors % hämtar data från klippsensorerna

light = r.getLightBumpers % hämtar data från ljussensorerna

img = r.getImage;% läser av kameran från roboten

red_mean = medelvärde (medelvärde (img (:,:, 1))) % läser den genomsnittliga mängden röda pixlar

green_mean = medelvärde (medelvärde (img (:,:, 2))) % läser den genomsnittliga mängden gröna pixlar

blue_mean = medelvärde (medelvärde (img (:,:, 3))) % läser den genomsnittliga mängden blå pixlar

if bump.front == 1 %läser framstötssensorer

r.stop %stoppar roomba

msgbox ('Path Obscured!', 'Parking Assistant Message') % visar meddelande som säger att sökvägen är skymd bryt % avslutar slingan

annarsif green_mean> 150

r.stop %stoppar roomba

cont = questdlg ('Fortsätt?', 'Sökväg slutförd') %visar frågefält som ber om att fortsätta

om forts == 'Ja'

parkassist (1) %startar om koden

annan

slutet

break % avslutar slingan

annarsif red_mean> 140

r.turnAngle (45) %vrider roomba 45 grader

r.timeStart %startar en tidräknare

medan det är sant

r.setDriveVelocity (.05,.05) %ställer in rumets hastighet

time = r.timeGet %tilldelar tiden till en variabel

bump = r.getBumpers % hämtar data från bump -sensorerna

cliff = r.getCliffSensors % hämtar data från klippsensorerna

light = r.getLightBumpers % hämtar data från ljussensorerna

img = r.getImage;% läser av kameran från roboten

red_mean = medelvärde (medelvärde (img (:,:, 1))) % läser den genomsnittliga mängden röda pixlar

green_mean = medelvärde (medelvärde (img (:,:, 2))) % läser den genomsnittliga mängden gröna pixlar

blue_mean = medelvärde (medelvärde (img (:,:, 3))) % läser den genomsnittliga mängden blå pixlar

om blue_mean> 120

r.moveDistance (-0.01) % flyttar roomba bakåt en inställd distanssång Play (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % spelar en stigande musikalisk skala

msgbox ('Water Found!', 'Parking Assistant Message') % visar ett meddelande som säger att vatten har hittats r.turnAngle (-80) % roterar roomba 80 grader

bryt % avslutar aktuell slinga

elseif light.rightFront> 25 || light.leftFront> 25 %avläser ljusstötssensorer

r.moveDistance (-0.01) % flyttar rumsbasen bakåt ett bestämt avstånd

r.turnAngle (-35) % roterar roomba 35 grader

bryt %avslutar aktuell slinga

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %läser båda klippsensorerna

r.moveDistance (-0,1) % flyttar roomba bakåt ett bestämt avstånd

r.turnAngle (-80) %roterar roomba 80 grader

bryt % avslutar aktuell slinga

annars tid> = 3

r.stop %stoppar roomba

contin = questdlg ('Station Free, Continue?', 'Parking Assistant Message') %frågar om roomba ska fortsätta om contin == 'Yes'

r.turnAngle (-90) % roterar roomba 90 grader

parkassist (1) %startar om funktionen

annan

r.stop % stoppar roomba

slutet

annan

slutet

slutet

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %läser båda klippsensorerna

r.moveDistance (-0,1) %flyttar roomba bakåt ett bestämt avstånd

r.turnAngle (-90) %roterar roomba 90 grader

elseif cliff.rightFront <2500 %läser rätt klippsensor

r.turnAngle (-5) %vrider roomba något i motsatt riktning mot klippsensorn

elseif cliff.leftFront <2500 %läser den vänstra klippsensorn

r.turnAngle (5) %vrider roomba något i motsatt riktning mot klippsensorn

annan

slutet

slutet

slutet

Steg 4: Testa koden och roboten

Testar koden och roboten
Testar koden och roboten
Testar koden och roboten
Testar koden och roboten
Testar koden och roboten
Testar koden och roboten

Efter att koden utvecklats var nästa steg att testa koden och roboten. Eftersom det finns många olika justeringar som kan göras i koden, till exempel vinkeln som roboten vrider, hastigheten den rör sig och trösklarna för varje färg, är det bästa sättet att räkna ut dessa värden för din robot att testa dem och ändra när du går. För varje arbetsdag vi hade ändrade vi ständigt dessa värden eftersom några av dem är beroende av miljön som din robot arbetar i. Det bästa sättet vi hittade var att placera roomba på den väg du vill att den ska följa och ha en barriär som är tillräckligt hög så att kameran inte kan upptäcka färger som du inte vill att den ska. Nästa steg är att låta den köra och visa den de färger du vill ha när du vill att den ska slutföra uppgiften. Under tiden, om du ser ett problem är det bästa du kan göra att trycka in den främre stötfångaren och få den att stanna och sedan ändra parametern som du hade problem med.

Steg 5: Erkännande av fel

Med varje avslutat projekt finns det alltid felkällor. För oss upplevde vi fel med det enkla faktumet att roboten inte är exakt med vinkeln i vilken den vänder, så om du säger att den ska vända 45 grader kommer det inte att vara exakt. En annan felkälla för oss var att roboten ibland fungerar och du har svårt att återställa den innan den fungerar igen. Den främsta felkällan för oss var att samma kod inte kommer att ha samma effekt på olika robotar, så du kan behöva ha tålamod med den och justera därefter.

Steg 6: Slutsats

Nu har du alla verktyg för att leka med din roomba, vilket innebär att du kan manipulera koden i alla fall du vill uppnå de mål du önskar. Detta borde vara den bästa delen av din dag, så ha kul och kör säkert!

Rekommenderad: