Inhoudsopgave:
- Stap 1: Initialisatie en sensoren
- Stap 2: Gegevens ophalen
- Stap 3: Missie voltooien
- Stap 4: Conclusie
Video: Roomba Explorer: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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 videobeelden te krijgen van een aangesloten Raspberry Pi, konden we de obstakels bepalen waarmee de robot te maken zal krijgen, en deze zullen worden geclassificeerd.
Onderdelen en materialen
Voor dit project heb je nodig:
-een computer
-nieuwste versie van MATLAB (MATLAB R2018b werd gebruikt voor dit project)
- roombaInstalleer toolbox
-iRobot's Create2-robot
-Raspberry Pi met camera
Stap 1: Initialisatie en sensoren
Voordat we met programmeren begonnen, hebben we de roombaInstall-toolbox gedownload, die toegang gaf tot verschillende componenten van de robot.
In eerste instantie hebben we een GUI gemaakt om elke robot te initialiseren. Om dit te doen, moet u het nummer van de Robot als invoer invoeren. Dit geeft toegang tot ons programma om de robot uit te voeren. We hebben eraan gewerkt om de robot door de vele terreinen te laten manoeuvreren die hij zou tegenkomen. We hebben de Cliff Sensors, Light Bump Sensors en Physical Bump Sensors geïmplementeerd door hun output te gebruiken om de robot te laten trippen om zijn snelheid en/of richting te veranderen. Wanneer een van de zes Light Bump Sensors een object detecteert, zal de waarde die ze produceren afnemen, waardoor de snelheid van de robot afneemt om een botsing op volle snelheid te voorkomen. Wanneer de robot uiteindelijk tegen een obstakel botst, rapporteren de fysieke stootsensoren een waarde groter dan nul; hierdoor zal de Robot stoppen, zodat er geen botsingen meer zijn en meer functies in werking kunnen worden gesteld. Voor de Cliff Sensors lezen ze de helderheid van het gebied om hen heen. Als de waarde groter is dan 2800, hebben we vastgesteld dat de robot zich op een stabiele en veilige ondergrond zou bevinden. Maar als de waarde lager is dan 800, detecteren de klifsensoren een klif en stoppen ze onmiddellijk om er niet af te vallen. Elke waarde daartussen werd bepaald om water te vertegenwoordigen en zal ervoor zorgen dat de robot zijn actie stopt. Door gebruik te maken van bovenstaande sensoren wordt de snelheid van de Robot gewijzigd waardoor we beter kunnen bepalen of er gevaar dreigt.
Hieronder staat de code (van MATLAB R2018b)
%% initialisatie
dlgPrompts = {'Roomba-nummer'};
dlgTitle = 'Selecteer uw Roomba';
dlgDefaults = {''};
opts. Resize = 'aan';
dlgout = inputdlg(dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Creëer een venster waarin de gebruiker wordt gevraagd zijn roomba-nummer in te voeren
n=str2double(dlgout{1});
r=roomba(n); % Initialiseert door de gebruiker gespecificeerde Roomba %% Snelheidsbepaling van Light Bump Sensors terwijl true s=r.getLightBumpers; % ontvang lichtstootsensoren
lbumpout_1=extractveld(en, 'links'); % neemt de numerieke waarden van de sensoren en maakt ze bruikbaarder lbumpout_2=extractfield(s, 'leftFront');
lbumpout_3=extractfield(s, 'leftCenter');
lbumpout_4=extractfield(s, 'rightCenter');
lbumpout_5=extractfield(s, 'rightFront');
lbumpout_6=extractfield(s, 'rechts');
lbout=[lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % zet waarden om in matrix
sLbump=sort(lbout); %sorteert matrix naar laagste waarde kan worden geëxtraheerd
lowLbump=sLbump(1); snelheid=.05+(lowLbump)*.005 %gebruikt de laagste waarde, die obstakels in de buurt voorstelt, om de snelheid te bepalen, hogere snelheid als er niets wordt gedetecteerd
r.setDriveVelocity(snelheid, snelheid)
einde
% fysieke bumpers
b=r.getBumpers; %Uitvoer waar, onwaar
bsen_1=extractveld(b, 'links')
bsen_2=extractveld(b, 'rechts')
bsen_3=extractfield(b, 'voorkant')
bsen_4=extractfield(b, 'leftWheelDrop')
bsen_5=extractfield(b, 'rightWheelDrop')
hobbels=[bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump=som(bums)
als tbump>0 r.setDriveVelocity(0, 0)
einde
% Afgrondsensoren
c=r.getCliffSensors %% 2800 veilig, anders water
csen_1=extractveld(c, 'links')
csen_2=extractfield(c, 'rechts')
csen_3=extractfield(c, 'leftFront')
csen_4=extractfield(c, 'rightFront')
kliffen=[csen_1, csen_2, csen_3, csen_4]
ordcliff=sorteer(kliffen)
als ordcliff(1) < 2750
r.setDriveVelocity(0, 0)
als klif<800
disp 'klip'
anders
disp 'water'
einde
r. Draaihoek(45)
einde
Stap 2: Gegevens ophalen
Nadat de fysieke stootsensoren zijn geactiveerd, zal de robot zijn ingebouwde Raspberry Pi implementeren om een foto van het obstakel te maken. Na het maken van een foto, met behulp van tekstherkenning als er tekst in de afbeelding staat, zal de Robot bepalen wat het obstakel is en wat het obstakel zegt.
img = r.getImage; imshow(img);
imwrite(img, 'imgfromcamera.jpg')
foto = imread('imgfromcamera.jpg')
ocrResultaten = ocr(foto)
herkendeText = ocrResultaten. Tekst;
figuur;
imshow (foto) tekst (220, 0, herkende tekst, 'BackgroundColor', [1 1 1]);
Stap 3: Missie voltooien
Wanneer de robot bepaalt dat het obstakel THUIS is, voltooit hij zijn missie en blijft hij thuis. Na voltooiing van de missie stuurt de robot een e-mailwaarschuwing dat hij naar huis is teruggekeerd en stuurt hij de foto's die hij tijdens zijn reis heeft gemaakt.
% Email verzenden
setpref('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref('Internet', 'E_mail', '[email protected]'); % e-mailaccount om te verzenden vanaf setpref('Internet', 'SMTP_Username', 'voer de e-mail van de afzender in'); % afzender gebruikersnaam setpref('Internet', 'SMTP_Password', 'voer het wachtwoord van de afzender in'); % Afzenders wachtwoord
props = java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');
sendmail('Voer ontvangende e-mail in', 'Roomba', 'Roomba is thuisgekomen!!', 'imgfromcamera.jpg') % e-mailaccount om naar te verzenden
De Robot is dan klaar.
Stap 4: Conclusie
Het meegeleverde MATLAB-programma is gescheiden van het hele script dat met de Robot werd gebruikt. Zorg ervoor dat u in het definitieve ontwerp alle code, behalve de initialisatiestap, in een while-lus plaatst om ervoor te zorgen dat de bumpers constant actief zijn. Dit programma kan worden aangepast aan de behoeften van de gebruiker. De configuratie van onze Robot wordt getoond.
*Herinnering: vergeet niet dat de roombaInstall-toolbox nodig is om MATLAB te laten communiceren met de robot en de ingebouwde Raspberry Pi.
Aanbevolen:
Uw Roomba in een Mars Rover veranderen: 5 stappen
Uw Roomba in een Mars Rover veranderen:
Sneltoetsen voor Internet Explorer!!: 4 stappen
Sneltoetsen voor Internet Explorer !!: Deze Instructable toont u enkele handige sneltoetsen voor Internet Explorer Abonneer u op mijn kanaal Bedankt
Roomba Scout Explorer: 8 stappen
Roomba Scout Explorer: als een van de meest langverwachte en veel onderzochte Amerikaanse projecten, zijn de Marsrover-projecten menselijke prestaties geworden in de steeds voortschrijdende productie van hightech autonome systemen met als enig doel het onderzoeken en inte
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
Bus Pirate 3EEPROM Explorer Board - Ajarnpa
Bus Pirate 3EEPROM Explorer Board: Als je een van Hack a Day's Bus Pirates hebt, wat doe je er dan mee? Leer meer over 1-draads, I2C en SPI EEPROM's met het 3EEPROM-verkennerbord (we noemen het de THR-EE-PROM). EEPROM is een type geheugenchip die gegevens opslaat zonder een continue stroomvoorziening