Inhoudsopgave:
- Stap 1: Onderdelen en materialen
- Stap 2: Roomba-databasebestand
- Stap 3: Verbinding maken met Roomba
- Stap 4: De code
- Stap 5: Conclusie
Video: MATLAB-gestuurde Roomba: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Het doel van dit project is om zowel MATLAB als een aangepaste iRobot programmeerbare robot te gebruiken. Onze groep combineerde onze codeervaardigheden om een MATLAB-script te maken dat veel functies van de iRobot gebruikt, waaronder de klifsensoren, bumpersensoren, lichtsensoren en de camera. We gebruikten deze sensor- en camera-uitlezingen als input, waardoor we bepaalde outputs kunnen creëren die we willen met behulp van MATLAB-codefuncties en loops. We gebruiken ook het MATLAB mobiele apparaat en de gyroscoop als een manier om verbinding te maken met de iRobot en deze te bedienen.
Stap 1: Onderdelen en materialen
MATLAB 2018a
-De 2018-versie van MATLAB heeft de meeste voorkeur, vooral omdat deze het beste werkt met de code die verbinding maakt met het mobiele apparaat. De meeste van onze code kan echter worden geïnterpreteerd in de meeste MATLAB-versies.
iRobot Apparaat maken
-Dit apparaat is een speciaal gemaakt apparaat dat uitsluitend bedoeld is voor programmeren en coderen. (Het is geen echt vacuüm)
Raspberry Pi (met camera)
- Dit is een niet-duur computerbord dat werkt als het brein van de iRobot. Het is misschien klein, maar is tot veel in staat. De camera is een extra toevoeging. Het gebruikt ook de raspberry pi om al zijn functies en commando's te verkrijgen. De hierboven afgebeelde camera is gemonteerd op een 3D-geprinte standaard, gemaakt door de Engineering Fundamentals-afdelingen van de Universiteit van Tennessee
Stap 2: Roomba-databasebestand
Er is een hoofdbestand dat u nodig hebt om de juiste functies en opdrachten voor uw roomba te gebruiken. Dit bestand is waar uw geschreven code functies uit put om de bediening van uw roomba beter beheersbaar te maken.
U kunt het bestand downloaden via deze link of het downloadbare bestand hieronder
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Stap 3: Verbinding maken met Roomba
Eerst moet u ervoor zorgen dat uw robot is aangesloten op uw Raspberry Pi-bord met behulp van een micro-USB-stekker. Dan moet je je computer en robot goed met dezelfde wifi verbinden. Zodra dit is gebeurd, kunt u uw robot inschakelen en verbinding maken met de gegeven opdracht in het robotdatabasebestand. (Reset uw robot altijd hard voor en nadat u hem gebruikt). We gebruiken bijvoorbeeld het commando "r.roomba(19)" om verbinding te maken met onze robot, waarbij we de variabele r toewijzen aan ons apparaat. Dit verwijst terug naar het databasebestand, dat onze variabele instelt als een structuur waarnaar we op elk moment kunnen verwijzen.
Stap 4: De code
We hebben de volledige code hieronder bijgevoegd, maar hier is een kort overzicht dat de belangrijke elementen in ons script benadrukt. We hebben alle sensoren en de camera gebruikt om het potentieel van onze robot volledig te benutten. We hebben ook een code toegevoegd waarmee we een mobiel apparaat met onze robot konden verbinden en de gryoscoop ervan konden gebruiken om hem handmatig te bedienen.
We begonnen met het eenvoudige commando "r.setDriveVelocity(.06)" dat de voorwaartse snelheid van de robot instelt op 0,06 m/s. Dit is alleen om de robot vooraf in beweging te krijgen
Vervolgens begint ons hoofdscript met een while-lus die de gegevens van de gegeven robot ophaalt door structuren te maken waarnaar we kunnen verwijzen en die we kunnen gebruiken in voorwaardelijke instructies hieronder, waardoor we de robot kunnen vertellen dat hij een bepaald commando uitvoert op basis van de structuurgegevens de robot leest met zijn sensoren. We hebben het zo ingesteld dat de robot zijn klifsensoren leest en een zwart pad volgt
terwijl true % while loop gaat totdat er iets "false" optreedt (in dit geval gaat het oneindig door) data = r.getCliffSensors; data2 = r.getBumpers;% haalt continu gegevens op over de waarden van de klifsensoren en wijst deze toe aan een variabele % img = r.getImage; % Neemt een foto van de gemonteerde camera % image(img); % Toont de genomen afbeelding % red_mean = mean(mean(img(:,:, 1)));% Neemt de gemiddelde waarde voor de groene kleur als data.rightFront < 2000 r.turnAngle(-2); % draait de Roomba ongeveer 0,2 graad CW zodra de waarde voor de klifsensoren rechtsvoor onder de 2000 r.setDriveVelocity(.05) komt; elseif data.leftFront data.leftFront && 2000 > data.rightFront r.moveDistance(.1); % vertelt de Roomba om vooruit te blijven gaan met ongeveer 0,2 m/s als beide waarden van de sensoren rechtsvoor en linksvoor onder 2000 % r.turnAngle(0) komen; % vertelt de Roomba om niet te draaien als de bovengenoemde voorwaarden waar zijn
elseif data2.right == 1 r.moveDistance(-.12); r.turnAngle(160); r.setDriveVelocity(.05); elseif data2.left == 1 r.moveDistance(-.2); r.turnAngle(5); r.setDriveVelocity(.05); elseif data2.front == 1 r.moveDistance(-.12); r.turnAngle(160); r.setDriveVelocity(.05);
Na deze while-lus komen we in een andere while-lus die de gegevens activeert die via de camera zijn verkregen. En we gebruiken een if-statement in deze while-lus die een afbeelding herkent met behulp van een specifiek programma (alexnet), en zodra deze de afbeelding identificeert, wordt de afstandsbediening van het mobiele apparaat onmiddellijk geactiveerd
anet = alexnet; % Wijst alexnet deep learning toe aan een variablewhile true % Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); label = classificeren (anet, img); if label == "papieren handdoek" || label == "koelkast" label = "water"; eind afbeelding (img); titel (char (label)); getekend;
De while-lus waarmee we het apparaat met onze telefoon kunnen bedienen, haalt die gegevens op uit de gyroscoop van de telefoon en we pluggen deze in een matrix die continu gegevens terugstroomt naar MATLAB op de computer. We gebruiken een if-statement dat de gegevens van de matrix leest en een uitvoer geeft die het apparaat beweegt op basis van bepaalde waarden van de gyroscoop van de telefoon. Het is belangrijk om te weten dat we de oriëntatiesensoren van het mobiele apparaat hebben gebruikt. De hierboven genoemde één bij drie matrix is gecategoriseerd door elk element van de oriëntatiesensoren van de telefoon, namelijk azimut, toonhoogte en zijkant. De if-statements creëerden voorwaarden die stelden dat wanneer de zijde de waarden 50 overschrijdt of onder de -50 komt, de robot een bepaalde afstand vooruit (positief 50) of achteruit (negatief 50) beweegt. En hetzelfde geldt voor de toonhoogte. Als de pitchwaarde de waarde van 25 overschrijdt of onder -25 komt, draait de robot in een hoek van 1 graad (positief 25) of min 1 graad (negatief 25)
while true pause(.1) % Pauze van 0,5 seconden voordat elke waarde wordt genomen Controller=iphone. Oriëntatie; % Wijst de matrix voor de waarden van de oriëntatie van de iPhone toe aan een variabele Azimuthal=Controller(1); % Wijst de eerste waarde van de matrix toe aan een variabele Pitch=Controller(2); % Wijst de tweede waarde van de matrix toe aan een variabele (naar voren en naar achteren kantelen wanneer de iPhone zijwaarts wordt gehouden) Side=Controller(3); % Wijst de derde waarde van de matrix toe aan een variabele (naar links en rechts kantelen wanneer de iPhone zijwaarts wordt gehouden) % Veroorzaakt een uitvoer op basis van de oriëntatie van de telefoon als Zijde > 130 || Zijde 25 r.moveDistance(-.1) % Beweegt de Roomba ongeveer 0,1 meter naar achteren als de iPhone minstens 25 graden naar achteren wordt gekanteld elseif Zijde 25 r.turnAngle(-1) % Draait de Roomba ongeveer 1 graad linksom als de iPhone is minimaal 25 graden naar links gekanteld, anders als Pitch < -25 r.turnAngle(1) % Draait de Roomba ongeveer 1 graad naar rechts als de iPhone minimaal 25 graden is gekanteld
Dit zijn slechts de hoogtepunten van de belangrijkste delen van onze code, die we hebben toegevoegd als u snel een gedeelte moet kopiëren en plakken voor uw voordeel. Onze volledige code is echter hieronder bijgevoegd indien nodig
Stap 5: Conclusie
Deze code die we hebben geschreven, is speciaal ontworpen voor onze robot en voor onze algemene visie op het project. Ons doel was om al onze MATLAB-coderingsvaardigheden te gebruiken om een goed ontwerpscript te maken dat de meeste functies van de robot gebruikt. Het gebruik van de telefooncontroller is niet zo moeilijk als je misschien denkt, en we hopen dat onze code je kan helpen het concept achter het coderen van een iRobot beter te begrijpen.
Aanbevolen:
Uw Roomba in een Mars Rover veranderen: 5 stappen
Uw Roomba in een Mars Rover veranderen:
Roomba Parking Pal: 6 stappen
Roomba Parking Pal: Dit project maakt gebruik van een iRobot Create programmeerbare roomba, MATLAB r2018a en MATLAB mobile. 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
Roomba MATLAB-project: 5 stappen
Roomba MATLAB-project: het huidige plan dat NASA heeft voor de Mars-rover is dat het een gegevensverzamelaar wordt en rond Mars gaat zwerven, waarbij monsters van de grond worden verzameld om terug naar de aarde te brengen, zodat wetenschappers kunnen zien of er eerdere levensvormen op aarde waren. de planeet. Aanvullend
Van Roomba naar Rover in slechts 5 stappen!: 5 stappen
Van Roomba naar Rover in slechts 5 stappen!: Roomba-robots zijn een leuke en gemakkelijke manier om je tenen onder te dompelen in de wereld van robotica. In deze Instructable zullen we in detail beschrijven hoe we een eenvoudige Roomba kunnen omzetten in een bestuurbare rover die tegelijkertijd zijn omgeving analyseert. Onderdelenlijst1.) MATLAB2.) Roomb
Roomba met MATLAB - Ajarnpa
Roomba Met MATLAB: Dit project maakt gebruik van MATLAB en een iRobot Create2 programmeerbare robot. Door onze kennis van MATLAB op de proef te stellen, zijn we in staat om de Create2 te programmeren om beelden te interpreteren en signalen te detecteren. De functionaliteit van de robot hangt vooral af van de