Inhoudsopgave:

Astronaut-Assisting Roomba: 4 stappen
Astronaut-Assisting Roomba: 4 stappen

Video: Astronaut-Assisting Roomba: 4 stappen

Video: Astronaut-Assisting Roomba: 4 stappen
Video: Купили РОБОТА А4 ! *ВЛАД А4 вернулся* 2024, November
Anonim
Astronaut-Assisterende Roomba
Astronaut-Assisterende Roomba

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

Benodigde onderdelen
Benodigde onderdelen
Benodigde onderdelen
Benodigde onderdelen
Benodigde onderdelen
Benodigde onderdelen
Benodigde onderdelen
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

Bestanden en cameraconfiguratie
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

Voorbeeld MATLAB-code
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: