Inhoudsopgave:
- Stap 1: Materialen en benodigdheden:
- Stap 2:
- Stap 3: assembleren van uw "tuin"
- Stap 4: De code schrijven
- Stap 5: Kopieer de code
Video: Tuinhulp Roomba Bot - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Kiara Myers, Ahmad Alghadeer en Madison Tippet
Doel:
Deze instructable leert je hoe je een Roomba Bot programmeert, met behulp van MATLAB, om door een tuin te navigeren en cirkelvormige vruchten/groenten te detecteren die rijp genoeg zijn om te worden geplukt op basis van hun grootte. Deze robot stuurt je ook een e-mail om je te laten weten hoeveel fruit er klaar is om geplukt te worden en het pad dat het heeft afgelegd.
Functies:
- Gebruikt lichtsensoren om muren te detecteren en lichtjes te draaien om te voorkomen dat ze worden geraakt
- Gebruikt stootsensoren om het programma te onderbreken wanneer het de rots aan het einde van de tuin raakt
- Gebruikt beeldverwerking om een cirkel in de tuin te detecteren en vervolgens de straal ervan te bepalen
- Gebruikt klifsensoren om een gekleurde tape te detecteren die de aanwezigheid van een vrucht aangeeft
Stap 1: Materialen en benodigdheden:
- Eén laptop
- MATLAB 2017
- Roomba Stofzuiger
- Raspberry Pi
- Houtblokken
- Wit papier
- Zwart papier
- Gekleurde tape/dunne strook gekleurd papier
- Grote steen
Stap 2:
Stap 3: assembleren van uw "tuin"
- Pak je zwarte papier en knip cirkels van verschillende groottes
-
Plak deze zwarte cirkels op een groot wit papier
Dit contrast is nodig bij het detecteren van een vrucht
-
Gebruik je houtblokken om een doolhofachtig tuinpad te bouwen waar je robot doorheen kan navigeren
We kozen voor een U-vormig pad zoals hierboven afgebeeld
- Voeg aan het einde van je tuin een steen of deur of een ander voorwerp toe zodat je robot weet dat het klaar is
-
Plak je witte papier met de cirkel op de muren van de tuin
We gebruikten emmers om het aan vast te plakken omdat onze muren te kort waren voor de camera
- Leg gekleurd tape/dunne strook gekleurd papier op de grond voor het fruit
Stap 4: De code schrijven
Navigeren door de tuin
Bump-sensoren gebruiken: om het programma uit te voeren, plaatsen we de codering in een while-statement dat verschillende if-statements doorloopt totdat de code wordt verbroken. Als een van de bumpers wordt geraakt, resulteert dit in een waarde die gelijk is aan true (wat in Boolean een waarde van 1 is). Een if-statement wordt gebruikt om de code te breken wanneer een van hun waarden gelijk is aan 1.
Cliff Sensors gebruiken: binnen de while-statement gebruiken we een if-statement om de Roomba te laten weten wanneer hij op de locatie van een plant is aangekomen. De Roomba detecteert de gekleurde tape op de vloer door de rode drempel te onderzoeken die de klifsensoren oppikken. Als de linker of rechter klifsensor een kleur detecteert met een grotere drempel dan die van de grond, dan zal deze de robot gedurende 2 seconden stoppen (met behulp van een pauzecommando). Gedurende deze 2 seconden zal de Roomba een afbeelding van het fruit nemen en weergeven. Gebruik de ingebouwde imfindcircles om een bereik in te stellen voor de radii van uw cirkels, en uw Roomba zal uw zogenaamde fruit vinden.
Beeldverwerking gebruiken: in de if-instructie voegen we een andere if-instructie in die zegt: als de gedetecteerde straal, radii3, groter is dan of gelijk is aan onze minimumvereiste van een rijpe vrucht, r1 (u bepaalt dit), dan tellen en weergeven op de Roomba hoeveel fruit er klaar is en draai om door de tuin te gaan. Zo niet, dan de beurt om door de tuin verder te gaan. Let op: het kan zijn dat je de hoek die je draait moet aanpassen, omdat elke Roomba anders is
Lichtbumpers gebruiken: in een andere if-verklaring worden de lichte bumpers geanalyseerd om er zeker van te zijn dat geen van hen groter wordt dan onze vastgestelde drempel. Als de bumper links, rechts, links midden, rechts midden, linksvoor of rechtsvoor boven de drempel komt, draait de Roomba een beetje in de juiste hoek om te voorkomen dat hij een muur raakt. Vandaar het navigeren door het doolhof.
De rest van de code wordt gebruikt om het pad van de Roomba te plotten en vervolgens de resultaten naar uw e-mail te sturen
Stap 5: Kopieer de code
% Doel: op basis van hun afmetingen zal de roomba door een tuin gaan en groenten/fruit onderscheiden die klaar zijn om te worden opgehaald. % Ingangen: Lightbump-sensoren, Cliff-sensoren, Bump-sensoren, beeld van camera % Uitgangen: wanneer de lichtsensoren groter zijn dan de drempelwaarde, zal de roomba draaien en een beeld maken, piept als de straal van % groenten/fruit binnen een specifiek bereik ligt. De code breekt wanneer roomba tegen % een object botst, de astronaut een e-mail stuurt over hoeveel fruit er klaar is om te worden opgepakt en een kaart van de beweging van de roomba. % Gebruik: If en while-statements, plotcommando's, e-mailcode van MATLAB
k=0
tic
timerVal=tic
terwijl het waar is
v=.2; % snelheid r.setDriveVelocity(v, v);%roomba ga vooruit L=r.getLightBumpers; LC=L.linksmidden; Rr=L.rechts; Lf=L.links; RC=L.rechtsCentrum; LF=L.linksVoor; RF=L.rechtsVoor; Q= 75; % drempelwaarde. RTH=30; %Hoge rode drempel RTL=10; %Lage rode drempel B=r.getBumpers S=r.getCliffSensors; r1=24; r3=10; PL1=1800; if S.leftFront > PL1 || S.rightFront > PL1 %detecteert of de kleur op de grond boven de drempel is r.stop pause(2) elapsedTime=toc(timerVal-2) tic timerVal=tic % pauze gedurende 2 seconden img = r.getImage; %take image imshow(img)%display image [centers3, radii3] = imfindcircles(img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = viscirkels(centra3, stralen3); %zoek naar cirkels met radii binnen gespecificeerd bereik in afbeelding if radii3>=r1 T=1 k=k+1 dist1=0.2.*elapsedTime %Als gedetecteerde straal groter is dan of gelijk is aan het minimum %vereiste van een rijpe vrucht, dan telt Roomba deze vrucht elseif radii3<=r3 T=0 else T=0 dist2=0.2.*elapsedTime %Zo niet, dan telt hij het einde van de vrucht niet
if T==1 r.setLEDDigits(num2str(k)) r.beep r.beep r.beep r.turnAngle(78) %Als er een vrucht is gedetecteerd, geef dan het nummer weer op Roomba, %maak een geluid en draai elseif T==2 r.turnAngle(78) %Als er 2 vruchten worden gedetecteerd, draai dan om door de %garden te gaan else r.turnAngle(78) %Als er geen vruchten worden gedetecteerd, draai dan om verder te gaan door de %garden end als LC >Q r.stop r.turnAngle(-7) elseif RC >Q r.stop r.turnAngle(7) elseif LF >Q r.stop r.turnAngle(-7) elseif RF >Q r.stop r. turnAngle(7) elseif Lf > Q r.stop r.turnAngle(-7) elseif Rr >Q r.stop r.turnAngle(7) end %Als een van de waarden van de lichte bumpers boven de drempel komt, dan %de Roomba zal lichtjes in de juiste richting draaien om %tegen een muur te vermijden
als B.rechts ==1 || B.links==1 || B.front==1 dist3=0.2.*elapsedTime r.stop r.beep('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle(360) %Als een van de bumbers worden geraakt, dan speelt de roomba geluid, draait rond, %en breekt de code
pauze einde
einde scatter(0.533, 0, '^') houd op scatter(0.533, dist1, '<') houd op scatter(-dist2, dist1, 'v') houd op scatter(-dist2, 0, 'd') saveas (gcf, 'Beweging.png')
kmsg=num2str(k) mail= '[email protected]' wachtwoord='Srsora123#' host='smtp.gmail.com' port='465'
setpref('Internet', 'E-mail', mail); setpref('Internet', 'SMTP_Server', host) props = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', host); props.setProperty('mail.smtp.port', poort); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', poort); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail(mail, 'Hallo Astronaut! Er zijn zoveel vruchten in de tuin', kmsg, {'movement.png'})
Aanbevolen:
Uw Roomba in een Mars Rover veranderen: 5 stappen
Uw Roomba in een Mars Rover veranderen:
MATLAB-gestuurde Roomba: 5 stappen
MATLAB Controlled Roomba: 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, inclusief de klifsensoren, bumpersensoren
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
Mars Roomba: 6 stappen
Mars Roomba: deze Instructable zal u begeleiden in de richting van het bedienen van een Raspberry Pi-gestuurde Roomba-vacuümbot. Het besturingssysteem dat we zullen gebruiken is via MATLAB
Roomba Explorer: 4 stappen
Roomba Explorer: door gebruik te maken van MATLAB en de Create2 Robot van iRobot, zal dit project verschillende gebieden van een onbekende locatie verkennen. We hebben de sensoren op de robot gebruikt om te helpen bij het manoeuvreren op gevaarlijk terrein. Door foto's en videofeeds van een Raspberry Pi te krijgen die