Inhoudsopgave:

Roomba Parking Pal: 6 stappen
Roomba Parking Pal: 6 stappen

Video: Roomba Parking Pal: 6 stappen

Video: Roomba Parking Pal: 6 stappen
Video: Roomba I3 freaking rocks 2024, November
Anonim
Roomba Parking Pal
Roomba Parking Pal

Dit project maakt gebruik van een iRobot Create programmeerbare roomba, MATLAB r2018a en MATLAB mobiel. Door deze drie media en onze kennis van codering te gebruiken, hebben we de iRobot Create geprogrammeerd om kleuren te interpreteren en ingebouwde sensoren te gebruiken om taken uit te voeren. Dit project is afhankelijk van de Raspberry Pi- en MATLAB-communicatie om deze taken uit te voeren.

Stap 1: Materialen

Materialen
Materialen
Materialen
Materialen

1. iRobot Robot maken

2. MATLAB r2018a

3. Raspberry Pi

4. Cameramodule

5. 3D-geprinte camerastabilisatorstandaard

6. Smartphone waarop MATLAB mobiel is geïnstalleerd

7. Laptop/computer waarop MATLAB is geïnstalleerd

Stap 2: Verbinding

Deze stap gaat over het aansluiten van de Raspberry Pi op de robot, ten tweede het aansluiten van de robot op uw computer en het aansluiten van de smartphone op de computer.

Het gemakkelijkste deel van dit proces is het aansluiten van de Raspberry Pi op uw robot, aangezien de Raspberry Pi aan de bovenkant van de robot is gemonteerd. Er is een snoer van de robot dat je alleen maar in de zijkant van de Raspberry Pi hoeft te steken.

De volgende stap is het aansluiten van de robot op uw computer, zodat u opdrachten kunt uitvoeren die de robot moet uitvoeren. Het eerste dat u moet doen, is uw computer verbinden met het draadloze netwerk dat uw roomba aan het maken is. Nu wordt aanbevolen dat u het pictogram Pad instellen in MATLAB gebruikt om het pad in te stellen, zodat u de functies in de Roomba-toolbox van MATLAB kunt gebruiken. Elke keer dat u het gebruik van de robot begint en beëindigt, moet u een "Two-Finger Salute" hard uitvoeren om de robot te resetten, wat betekent dat u de dock- en spot-knoppen tien seconden ingedrukt houdt totdat het lampje dimt om aan te geven dat u de robot moet loslaten. Je was succesvol met deze harde reset als je de robot een korte schaal hoort spelen. Vervolgens moet je verbinding maken met de roomba met behulp van een regel code zoals deze "r=roomba(x)" waarbij 'x' het nummer is dat is toegewezen aan de robot die je hebt.

Ten slotte moet je MATLAB mobiel downloaden op elk mobiel apparaat dat je voor dit project gaat gebruiken, en deze applicatie is beschikbaar op zowel Android- als Apple-apparaten. Nadat de applicatie is geïnstalleerd, moet u inloggen met uw inloggegevens. Vervolgens moet u dit apparaat op uw computer aansluiten via het tabblad met het label "Meer" -> klik vervolgens op "instellingen" -> klik vervolgens op "Een computer toevoegen". Dit zou het scherm moeten openen dat wordt weergegeven in de bovenstaande afbeeldingen. Nadat u dit ziet, de volgende stap die u moet doorlopen, is gewoon de informatie die het vraagt, aansluiten en doorslikken. Zodra u succesvol bent verbonden, kunt u functies die u op uw computer op uw telefoon definieert, oproepen om uw robot te besturen.

Stap 3: Logisch een MATLAB-code maken om sensoren te gebruiken

Logisch een MATLAB-code maken om sensoren te gebruiken
Logisch een MATLAB-code maken om sensoren te gebruiken

De code is het gemakkelijkst te maken wanneer een meerderheid ervan zich in de while-lus bevindt, zodat de roomba constant geldige waarden kan bijwerken waar hij naar kijkt. Als er een fout is, geeft MATLAB een fout weer en waar deze in de code voorkomt, waardoor het oplossen van problemen relatief eenvoudig is.

Ontworpen in r2018a MATLAB, maakt deze code gebruik van de standaard toolboxen, de iRobot Create toolbox, evenals de MATLAB mobiele toolbox. De roomba die in dit voorbeeld wordt gebruikt, wordt aangeduid als 26, en de r=roomba(26) hoeft maar één keer te worden uitgevoerd om volledig met de roomba te communiceren.

Code:

functie parkeerhulp(x)if x==1

r=roomba(26) % maakt verbinding met roomba

terwijl het waar is

r.setDriveVelocity(.05,.05) % stelt roomba in op een lagere rijsnelheid

bump=r.getBumpers % haalt de gegevens van de bump-sensoren

cliff=r.getCliffSensors % haalt de gegevens van de cliff-sensoren

light=r.getLightBumpers % haalt de gegevens van de lichtstootsensoren

img=r.getImage;% leest de camera van de robot af

red_mean = mean(mean(img(:,:, 1))) % leest het gemiddelde aantal rode pixels

green_mean = mean(mean(img(:,:, 2))) % leest het gemiddelde aantal groene pixels

blue_mean = mean(mean(img(:,:, 3))) % leest het gemiddelde aantal blauwe pixels

if bump.front == 1 %leest de voorste bumpersensoren

r.stop %stopt roomba

msgbox('Path Obscured!', 'Parking Assistant Message') %geeft bericht weer dat het pad niet zichtbaar is pauze % beëindigt de lus

elseif green_mean >150

r.stop %stopt roomba

cont = questdlg('Continue?', 'Path Completed') %geeft een vraagvenster weer met de vraag om door te gaan

if cont == 'Ja'

parkassist(1) %start de code opnieuw

anders

einde

break % beëindigt de lus

elseif red_mean > 140

r.turnAngle(45) %draait de roomba 45 graden

r.timeStart %start een tijdteller

terwijl het waar is

r.setDriveVelocity(.05,.05) %set snelheid van de roomba

time=r.timeGet %wijst de tijd toe aan een variabele

bump=r.getBumpers % haalt de gegevens van de bump-sensoren

cliff=r.getCliffSensors % haalt de gegevens van de cliff-sensoren

light=r.getLightBumpers % haalt de gegevens van de lichtstootsensoren

img=r.getImage;% leest de camera van de robot af

red_mean = mean(mean(img(:,:, 1))) % leest het gemiddelde aantal rode pixels

green_mean = mean(mean(img(:,:, 2))) % leest het gemiddelde aantal groene pixels

blue_mean = mean(mean(img(:,:, 3))) % leest het gemiddelde aantal blauwe pixels

als blue_mean > 120

r.moveDistance(-0.01) %verplaatst de roomba een bepaalde afstand achteruit songPlay(r, 'T400, C, D, E, F, G, A, B, C^', 'true') % speelt een stijgende toonladder af

msgbox('Water Found!', 'Parking Assistant Message') % geeft een bericht weer dat er water is gevonden r.turnAngle(-80) %draait roomba 80 graden

break % beëindigt huidige lus

elseif light.rightFront > 25 || light.leftFront > 25 %leest lichtstootsensoren

r.moveDistance(-0.01) % verplaatst de roomba een ingestelde afstand achteruit

r.turnAngle(-35) % draait de roomba 35 graden

verbreek %beëindigt huidige lus

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 %leest beide cliff-sensoren

r.moveDistance(-0.1) % verplaatst roomba een ingestelde afstand achteruit

r.turnAngle(-80) %draait roomba 80 graden

break % beëindigt huidige lus

anders als tijd >= 3

r.stop %stopt roomba

contin=questdlg('Station Free, Continue?', 'Parking Assistant Message') %vraagt of de roomba moet doorgaan if contin == 'Yes'

r.turnAngle(-90) % draait de roomba 90 graden

parkassist(1) %start de functie opnieuw

anders

r.stop % stopt de roomba

einde

anders

einde

einde

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 %leest beide cliff-sensoren

r.moveDistance(-0.1) %verplaatst roomba een ingestelde afstand achteruit

r.turnAngle(-90) %draait roomba 90 graden

elseif cliff.rightFront < 2500 %leest de rechter cliff-sensor

r.turnAngle(-5) %draait de roomba lichtjes in de tegenovergestelde richting van de afgrondsensor

elseif cliff.leftFront < 2500 %leest de linker cliff-sensor

r.turnAngle(5) %draait de roomba lichtjes in de tegenovergestelde richting van de afgrondsensor

anders

einde

einde

einde

Stap 4: De code en robot testen

De code en robot testen
De code en robot testen
De code en robot testen
De code en robot testen
De code en robot testen
De code en robot testen

Nadat de code was ontwikkeld, was de volgende stap het testen van de code en de robot. Aangezien er veel verschillende aanpassingen in de code kunnen worden gemaakt, zoals de hoek waarin de robot draait, de snelheid waarmee hij beweegt en de drempels voor elke kleur, is de beste manier om deze waarden voor uw robot te bepalen, te testen ze en verander gaandeweg. Voor elke werkdag die we hadden, veranderden we deze waarden voortdurend, omdat sommige afhankelijk zijn van de omgeving waarin uw robot werkt. De beste manier die we hebben gevonden, was om de roomba op het pad te plaatsen dat u wilt dat hij volgt, en een barrière die hoog genoeg is zodat de camera geen kleuren kan detecteren die u niet wilt. De volgende stap is om het te laten lopen en het de kleuren te laten zien die je wilt, wanneer je wilt dat het die taak voltooit. Als u onderweg een probleem ziet, kunt u het beste de voorbumper naar binnen duwen, zodat deze stopt, en vervolgens de parameter wijzigen waarmee u problemen had.

Stap 5: Herkenning van fout

Bij elk voltooid project zijn er altijd bronnen van fouten. Voor ons hebben we een fout ervaren met het simpele feit dat de robot niet precies is met de hoek waaronder hij draait, dus als je hem vertelt om 45 graden te draaien, zal het niet exact zijn. Een andere bron van fouten voor ons was dat de robot soms niet goed werkt en dat je hem hard moet resetten voordat hij weer werkt. De belangrijkste laatste bron van fouten voor ons was dat dezelfde code niet hetzelfde effect zal hebben op verschillende robots, dus het kan zijn dat je er geduld mee moet hebben en dienovereenkomstig moet aanpassen.

Stap 6: Conclusie

Nu heb je alle tools om met je roomba te spelen, wat betekent dat je de code kunt manipuleren zoals je wilt om de doelen te bereiken die je wilt. Dit zou het beste deel van je dag moeten zijn, dus veel plezier en rijd veilig!

Aanbevolen: