Innehållsförteckning:
- Steg 1: Material
- Steg 2: Anslutning
- Steg 3: Skapa logiskt en MATLAB -kod för att använda sensorer
- Steg 4: Testa koden och roboten
- Steg 5: Erkännande av fel
- Steg 6: Slutsats
Video: Roomba Parking Pal: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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
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
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
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:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Arduino Parking Assistant - Parkera din bil på rätt plats varje gång: 5 steg (med bilder)
Arduino Parking Assistant - Parkera din bil på rätt plats varje gång: I det här projektet visar jag dig hur du bygger din egen parkeringsassistent med hjälp av en Arudino. Denna parkeringsassistent mäter avståndet till din bil och guidar dig att parkera den på rätt plats med hjälp av en LCD -skärmavläsning och en lysdiod, som fortskrider
Solar Powered LED Parking Sensor: 8 Steg (med bilder)
Solcellsdriven LED -parkeringssensor: Vårt garage har inte mycket djup och har skåp i slutet för att ytterligare minska djupet. Min frus bil är precis tillräckligt kort för att passa, men den är nära. Jag gjorde den här sensorn för att förenkla parkeringsprocessen och för att säkerställa att bilen var full
University Campus Student Parking Map: 7 steg (med bilder)
University Campus Student Parking Map: Många studenter undrar var de kan parkera på ett universitetscampus. För att lösa detta problem skapade jag en upplyst parkeringskarta över huvudområdet på Utah State Universitys campus. Kartan är för studenter att snabbt ta en titt på vilka parkeringsalternativ som är
MIDI Pod-Pal: 4 steg
MIDI Pod-Pal: *** UPDATE 4/22/'21 ****** Jag har lagt till en fullständig schematisk bild som visar alla ledningar för att hjälpa till med konstruktion. *** Jag kommer inte att gå in på en löjlig mängd djupet här på byggdelen, min avsikt var att visa ett annat exempel på att bygga ett Arduino -baserat MI