Inhoudsopgave:
- Stap 1: Benodigde onderdelen
- Stap 2: Bestanden en cameraconfiguratie
- Stap 3: Eerste Roomba-test
- Stap 4: Voorbeeld MATLAB-code
Video: Astronaut-Assisting Roomba: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Dit project is gemaakt door gebruik te maken van de Raspberry Pi 3 aan boord van de iRobot Create Version 2. MATLAB wordt gebruikt om de robot te programmeren om specifieke instructies te volgen met behulp van zijn sensoren en camera. De sensoren en camera's worden gebruikt om specifieke taken uit te voeren die een astronaut zouden volgen en geven hem/haar de mogelijkheid om met zijn/haar thuisbasis te communiceren als er iets misgaat.
Stap 1: Benodigde onderdelen
1. iRobot Create-versie 2
De iRobot Create is het meest essentiële onderdeel van dit project, omdat het programmeerbaar is en een geweldige weergave kan zijn voor een echte rover die astronauten volgt en hen in de toekomst helpt
2. Framboos Pi 3
De Raspberry Pi was de programmeerbare die voor dit project werd gebruikt. De code is ontworpen voor de Pi en de bijgevoegde versie van de Pi is de 3 (model B). Andere programmeerbare borden zoals arduino zijn bruikbaar, maar arduino en de meeste andere borden hebben een andere codering nodig dan beschreven in een andere stap
3. Raspberry Pi-cameramodule
De enige externe verbinding met de Raspberry Pi die voor dit project nodig is, is de cameramodule. De cameramodule is het integrale onderdeel van dit project, aangezien de roomba alleen taken zal uitvoeren op basis van wat hij in de camera ziet
4. MATLAB 2018a
De op één na meest recente versie van MATLAB, 2018a, werd gebruikt voor de codering die bij deze opstelling betrokken was. Het is waarschijnlijk dat veel andere versies van MATLAB hiermee zullen werken, aangezien de roomba-programmering al een tijdje bestaat
Stap 2: Bestanden en cameraconfiguratie
1. Raspberry Pi en camera-aansluitingen op de roomba
- De Pi kan rechtstreeks verbinding maken met de iRobot via een micro-USB. Dat is alles wat het nodig heeft om gebruiksklaar te zijn. Het wordt echter aanbevolen om het stevig op de roomba te plaatsen, zoals tot nu toe in de afbeeldingen te zien is tijdens de presentatie.
- De camera heeft een directe verbinding met de Raspberry Pi en het is sterk aan te raden om iets aan te schaffen of te maken om de camera recht omhoog te houden. De camera heeft geen zin als hij niet op zijn plaats kan worden gehouden om te laten zien wat de roomba ziet.
2. Bestanden
- Nadat je alles hebt ingesteld en aangesloten, zorg je ervoor dat de robot is gereset en klaar voor gebruik door de knoppen "Spot" en "Dock" 10 seconden samen ingedrukt te houden.
- Dit is waar MATLAB eerst nodig is. De bestanden voor de roomba moeten eerst worden geïnstalleerd en het enige dat nodig is om deze bestanden uit te voeren, is de code op deze link:
- https://ef.engr.utk.edu/ef230-2017-08//projects/ro…
Stap 3: Eerste Roomba-test
Er moeten veel eerste controles worden uitgevoerd op de roomba om te controleren of deze werkt.
1. Zorg ervoor dat je bent verbonden met hetzelfde wifi-netwerk als de roomba. Zonder dit zul je nooit verbinding maken via MATLAB.
2. Zoek uit aan welk nummer uw roomba is toegewezen, zodat u specifiek verbinding kunt maken met de roomba die u hebt gekozen. Als het nummer van uw roomba bijvoorbeeld 30 is, kunt u er verbinding mee maken door roomba(30) in het opdrachtvenster in MATLAB te typen.
3. De roomba kan worden bestuurd via structs in MATLAB. Als u bijvoorbeeld uw code voor roomba(30) instelt op de variabele 'r', kan de robot naar voren worden bewogen met het commando r.moveDistance(0.2, 0.1).
4. Er zijn veel verschillende opdrachten die aan de roomba kunnen worden doorgegeven en deze kunnen worden bekeken door 'doc roomba' in het opdrachtvenster te typen.
5. De sensoren voor licht-, hobbel- en klifmetingen kunnen allemaal worden gelezen met behulp van de opdrachten in 'doc roomba', maar een manier om een constant, overzichtelijk menu te hebben om de sensorgegevens te zien, kan worden bekeken door 'r.testSensors te gebruiken '.
6. Nadat dit alles is getest, kan de beeldverzamelsoftware van de robot worden gebruikt om de gemaakte foto's te lezen en te bekijken. De basiscode hiervoor is img = r.getImage en imshow(img);.
7. RGB-waarden van de afbeelding kunnen worden gevonden met de codes red_mean = mean(mean(img(:,:, 1)));
green_mean = gemiddelde(gemiddelde(img(:,:, 2))); en blue_mean=mean(mean(img(:,:, 3)));.
Stap 4: Voorbeeld MATLAB-code
Op dit punt ben je nu klaar om de sensoren en software voor het maken van afbeeldingen te gebruiken om je eigen draai aan een mens-ondersteunende prototype Mars Rover te maken. Ons voorbeeld is om de astronaut te volgen door de kleur wit te volgen en ernaartoe te bewegen. De robot piept als de sensoren hoge waarden meten, zodat de astronaut de robot kan resetten als hij vastzit of hem kan oppakken en resetten als hij vastzit op een klif. Het leest deze fouten echter alleen zolang het wit ziet. Zonder de kleur wit te kunnen zien, gaat de robot naar de foutmodus. Het is geprogrammeerd om twee verschillende soorten e-mails terug te sturen naar de thuisbasis, afhankelijk van wat het ziet. Als het de huidskleur van de astronaut ziet, is dat natuurlijk niet goed, dus het zal de thuisbasis waarschuwen als de astronaut een huid heeft met een defect in het pak. Het andere bericht wordt voorbereid als de astronaut gewoon uit het zicht verdwijnt. Als er geen wit of huidskleur te zien is voor de camera's, draait de robot rond en stuurt een andere, maar andere e-mail. De afbeeldingen waar de roomba de astronaut niet kan zien, worden samen met het bericht in de e-mails verzonden. De code voor ons project wordt hieronder weergegeven:
voor i=1:.1:3 img=r.getImage; image(img) red_mean = mean(mean(img(:,:, 1))); green_mean = gemiddelde(gemiddelde(img(:,:, 2))); blue_mean = gemiddelde(gemiddelde(img(:,:, 3))); if red_mean > 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left>0 || bump.front>0 r.beep() r.beep() r.beep() r.stop elseif cliff.left<10 || cliff.leftFront<10 || cliff.rightFront<10 || cliff.right700 || licht.leftFront>700 || light.leftCenter>700 || light.rightCenter>700 || licht.rechtsVoor>700 || light.right>700 r.beep() r.beep() r.beep() r.beep() r.beep() r.stop else for i=1:2 r.moveDistance(0.2, 0.1) r. setDriveVelocity(.3,.2) r.stop end end end if green_mean <35 && blue_mean<35 %huidskleur weergegeven (moet worden aangepast op basis van de huidskleur van astronaut) r.beep(); r.piep(); r.piep(); mail = '[email protected]'; %stuurt e-mail waaruit blijkt dat de kleur niet klopt psswd = 'yeah'; host = 'smtp.gmail.com'; poort = '465'; emailto = '[email protected]'; m_onderwerp = 'onderwerp'; m_text = 'test'; setpref('Internet', 'E-mail', mail); setpref('Internet', 'SMTP_Server', host); setpref('Internet', 'SMTP_Gebruikersnaam', mail); setpref('Internet', 'SMTP_Password', psswd); 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(emailto, 'Help!', 'Het astronautenuniform is uit!', img); einde als red_mean 135 || green_mean 135 || blue_mean 135 for j = 1:2 %als wit niet kan worden gevonden door de robot r.turnAngle(360) mail = '[email protected]'; psswd = 'ja'; host = 'smtp.gmail.com'; poort = '465'; emailto = '[email protected]'; m_onderwerp = 'onderwerp'; m_text = 'test'; setpref('Internet', 'E-mail', mail); setpref('Internet', 'SMTP_Server', host); setpref('Internet', 'SMTP_Gebruikersnaam', mail); setpref('Internet', 'SMTP_Password', psswd); 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(emailto, 'Help!', 'De astronaut kan niet worden gevonden!', img); r.stop einde einde einde
Het is duidelijk rommelig hier, maar het zou moeten worden uitgepoetst zodra het is gekopieerd. Wachtwoorden en e-mails hiervoor moeten uiteraard worden verstrekt door degenen die dit project uitvoeren.
Ons voorbeeld is echter slechts een van de vele manieren om met deze robot te rommelen om hem voor iedereen geschikt te maken. Er zijn veel verschillende dingen die u kunt doen, die u zelf kunt aanpassen.
Aanbevolen:
Uw Roomba in een Mars Rover veranderen: 5 stappen
Uw Roomba in een Mars Rover veranderen:
Cosmo Clock - Verandert van kleur telkens wanneer een astronaut de ruimte betreedt - Ajarnpa
Cosmo Clock - Verandert van kleur telkens wanneer een astronaut de ruimte betreedt: Hallo! Ben je een ruimteliefhebber? Zo ja, dan hifi! Ik hou van ruimte en astronomie. Het is duidelijk dat ik geen astronaut ben om daarheen te gaan en het universum van dichterbij te bekijken. Maar elke keer als ik erachter kom dat een persoon van de aarde naar de hemel is gereisd, krijg ik inspiratie
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
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