Inhoudsopgave:
- Stap 1: Benodigde materialen
- Stap 2: Instellen/downloaden
- Stap 3: Code Deel 1: Volgfunctie
- Stap 4: Codeer deel 2: While Loop
- Stap 5: Code Deel 3: E-mailsectie
Video: UTK EF 230 MarsRoomba-project herfst 2018: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Momenteel worden Marsrovers gebruikt om op verschillende manieren gegevens over het oppervlak van Mars te verzamelen, om uiteindelijk meer te weten te komen over het potentieel van de planeet voor microbieel leven. Rovers gebruiken voornamelijk fotografie- en bodemanalysetools voor het verzamelen van gegevens, maar rovers bevatten ook navigatie-instrumenten, stralingsdetectoren, atmosferische sensoren en een laser voor de verdamping van rotsmonsters. Het doel van de geplande rover-missie voor 2020 is grotendeels hetzelfde, maar met de speciale taak om "monsters van grond en gesteente te verzamelen en deze op het oppervlak op te slaan voor mogelijke terugkeer naar de aarde door een toekomstige missie", aldus NASA.
Onder de veronderstelling dat toekomstige rovers zullen worden gebruikt voor menselijke hulp, heeft ons team echter overwogen welke aspecten van de mens de rover zou kunnen volgen. We kwamen tot de conclusie dat als een astronaut een astronaut bewusteloos zou maken met falende levensondersteuning en uitrusting, onze rover zou kunnen dienen als een mobiel noodbaken door te observeren dat de astronaut die hij volgde onbeweeglijk is en een noodbericht uitzendt. Om de mens te volgen en immobiliteit te bepalen, zou de rover inputs nemen zoals de kleur van de schoenen van de mens en hun beweging. Een andere input om te overwegen is dat het zijn pad moet onthouden om in geval van nood een noodsignaal door te geven. Onze rover voorziet in een behoefte op Mars doordat het proberen van zo'n kostbare missie op dergelijk vreemd terrein meerdere lagen fail-safes vereist, en als een astronaut niet in staat is om zijn eigen hulp te krijgen vanwege een defect of bewusteloosheid, kan de rover anderen waarschuwen.
Deze Instructable is ontworpen om de lezer te helpen bij het programmeren van zijn of haar Roomba om met succes een "astronaut" te volgen en om indien van toepassing een noodsignaal te sturen.
Stap 1: Benodigde materialen
1) Internet toegankelijke computer/laptop
2) MATLAB_R2018a
3) Roomba en Roomba downloaden
Stap 2: Instellen/downloaden
Voer dit script uit in MATLAB om de software te downloaden die nodig is om toegang te krijgen tot Roomba (opgeslagen in een eigen bestand in de projectmap)
Extra hulp:
% Installatieprogramma voor EF 230 Roomba Project% Laatste update: 13 september 2017 (Opgeloste beveiligingsproblemen geassocieerd met https-server en verwijderde waarschuwing voor het verwijderen van bestanden als er fouten zijn opgetreden) functie roombaInstall clc; % lijst met te installeren bestanden bestanden = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % locatie om te installeren vanuit options = weboptions('CertificateFilename', ''); % vertel het de certificaatvereisten te negeren server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba installeren/bijwerken'; % weergavedoel en krijg bevestigingsprompt = { 'Dit programma zal deze EF 230 Roomba-bestanden downloaden:' '' strjoin(files, ' ') '' 'naar deze map:' '' cd '' 'Wilt u doorgaan? ' }; piep; yn = questdlg(prompt, … dlgTitle, … 'Ja', 'Nee', 'Ja');
if ~strcmp(yn, 'Ja'), return; einde
% haal een lijst op met bestanden die bestaan bestaande_bestanden = bestanden(cellfun(@exist, bestanden) > 0); if ~isempty(existing_files) % zorg ervoor dat het echt ok is om ze te vervangen prompt = {'U vervangt deze bestanden): ' '' strjoin(existing_files, ' ') '' 'OK om te vervangen?' }; piep; yn = questdlg(prompt, … dlgTitle, … 'Ja', 'Nee', 'Ja'); if ~strcmp(yn, 'Ja'), return; einde einde
% download de bestanden cnt = 0; voor i=1:lengte(bestanden) f=bestanden{i}; disp(['Bezig met downloaden' f]); probeer url = [server f]; websave (f, url, opties); % toegevoegde opties om beveiligingsfouten te voorkomen cnt = cnt + 1; catch disp(['Fout bij downloaden' f]); dummy = [f '.html']; if exist(dummy, 'file')==2 delete(dummy) end end end
if cnt == lengte(bestanden) msg = 'Installatie geslaagd'; waitfor(msgbox(msg, dlgTitle)); else msg = 'Installatiefout - zie opdrachtvenster voor details'; waitfor(errordlg(bericht, dlgTitel)); einde
einde %roombaInstall
Stap 3: Code Deel 1: Volgfunctie
Deze functie neemt de Roomba-variabele en het beeld van de camera op de Roomba en vindt de middelste xy-coördinaten van het gevolgde object
Bewaar deze code in een ander bestand in dezelfde map.
functie [xm, ym] = trackingblue(r)%Inputs: roomba variabele %Outputs: x en y waarde van het midden van het volgende object %Doel: vindt het midden van een blauw object gegeven een afbeelding %Usage [x waarde, y waarde] = trackingblue (variabele roomba) img=r.getImage; % leest de camera af van de robot subplot(1, 2, 2) subimage(img); %toont afbeelding in hetzelfde venster als de padtitel ('Tracking Image') red = img(:,:, 1); groen = img(:,:, 2); blauw = img(:,:, 3); justBlue = blauw - groen/2 - rood/2; bw = gewoon blauw > 40; houd op subplot (1, 2, 2) subimage (bw); [x, y] = vind(bw); if ~isempty(x) && ~isempty(y) xm = round(mean(x)); ym = rond (gemiddelde (y)); xx = max(1, xm-5):min(xm+5, grootte(bw, 1)); yy = max(1, ym-5):min(ym+5, grootte(bw, 2)); bwbw = nullen (grootte (bw), 'uint8'); bwbw(xx, yy) = 255; houd op subplot (1, 2, 2) subimage (justBlue + bwbw); einde
Stap 4: Codeer deel 2: While Loop
Deze code stuurt de Roomba aan op basis van de x- en y-locatie van het object vanuit de volgfunctie. Hierdoor zal de Roomba oppassen voor muren en kliffen, terwijl hij op zoek gaat naar blauw. Dit neemt ook de x- en y-coördinaten van het Roomba-pad en creëert een overeenkomstige plot met de volgafbeelding. Als de stootsensor is geactiveerd, gaat deze naar het e-mailgedeelte
%Rover-project
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Ingangen: roomba-waarde, cameragegevens, stoot-, licht- en muursensoren Doel: Volgt astronaut en vermijdt obstakels. Indien gewaarschuwd, stuurt de roomba een e-mail % met gedetailleerde informatie over een kaart en waar deze zich bevindt volgens zijn startpositie. %Gebruik: voer het programma uit met een roomba-variabele gedeclareerd, ook %heeft een bewegend groen object %Outputs: toont afbeeldingsvolgbeeld, e-mailkaart en tekst aan gebruiker %% Volgende sectie b=0; %Initialiseren variabelen c=0; x=0; y=0; theta=0; while c==0 %Loop om het blauwe object en obstakels te laten detecteren t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue(r); cliff=getCliffSensors(r); %initialisatie van de structuren voor sensorwaarden light=getLightBumpers(r); hobbel = getBumpers(r); if light.leftCenter >= 10 || light.rightCenter >= 10 % Voelt of er een muur in de buurt is r.stop r.setLEDDigits('help') c=1 % while b==0 % if bump.right == 1 || bump.left == 1 || bump.front == 1 %Stelt vast of het iets heeft gestoten nadat het een muur heeft gedetecteerd % c=1 % b=1 % disp('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 % Voelt of het ergens tegenaan is gestoten, zo ja, dan zal het een e-mail sturen r.stop c=1 b=1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100 %Detecteert of er een klif is in de buurt van r.stop c=1 r.setLEDDigits('help') else %Stelt de rijsnelheden in om de blauwe kleur te volgen als yval = 100 r.setDriveVelocity(0.1) elseif yval 400 r.turnAngle(-5) end end theta = theta + r.getAngle; x = d.*cosd(theta) + x; % x coördinaat van de roomba y = d.*sind(theta).*d + y; % y-coördinaat van de roomba-subplot(1, 2, 1) plot(x, y, 'bd') % plot het pad en voegt een titel toe title ('Roomba Path') wacht even; einde
Stap 5: Code Deel 3: E-mailsectie
Hiermee worden het geplotte pad en de afbeelding naar een opgegeven e-mailadres verzonden
(Hier weergegeven met voorbeeld e-mail)
%% E-mailsectie
if b==1 saveas(gcf, 'rovermap.png') %saves the figure setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref('Internet', 'E_mail', '[email protected]'); % e-mailaccount om te verzenden vanaf setpref('Internet', 'SMTP_Username', '[email protected]'); % afzender gebruikersnaam setpref('Internet', 'SMTP_Password', 'gssegsse'); % Afzenders wachtwoord rekwisieten = 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('example email', 'RoverBeacon', 'The astronaut is gestopt met bewegen. Volg voor herstel de aanwijzingen in het bijgevoegde bestand.', 'rovermap.png') disp('email sent') end
Aanbevolen:
Robotproject UTK 2017: 3 stappen
Robot Project UTK 2017: Missie: Ons team van ingenieurs is ingehuurd door Froogle, een non-profit stichting voor open-source technologieontwikkeling, om een innovatieve Human Assisting Mars Rover te ontwikkelen.-Out teams "rover" is een roomba die we hebben gecodeerd om een reeks uit te voeren van
EF 230: Home System 3000 Instrueerbaar: 4 stappen
EF 230: Home System 3000 Instructie: Het Home System 3000 is een apparaat dat een Arduino, een temperatuursensor, een piëzo-zoemer, een optische detector/fototransistor en een servo gebruikt om manieren weer te geven om de energie-efficiëntie van het huis te verbeteren
Venus Flytrap - ITM Herfst 2019: 5 stappen
Venus Flytrap - ITG Herfst 2019: Wat ontbreekt er op ieders bureau? Een mechanische Venus Flytrap die potloden, pennen en andere voorwerpen vasthoudt
Een aangepaste afbeelding op uw Xbox 360-dashboard plaatsen (update vóór herfst 08): 8 stappen
Hoe u een aangepaste afbeelding op uw Xbox 360-dashboard kunt plaatsen (update vóór herfst 08): In deze instructable laat ik u zien hoe u een aangepaste afbeelding als achtergrond op uw xbox 360 plaatst. Er zijn dezelfde stappen om dit te doen met het nieuwe en oude dashboard. als ik de kans krijg zal ik het hele ding updaten met nieuwe foto's
Hoe maak je een appelslinger voor herfst of terug naar school 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe maak je een appelslinger voor herfst of terug naar school: Anjeanette, van RootsAndWingsCo maakte deze schattige appelslinger van vilt en materiaal. Het was een eenvoudig project dat zelfs degenen die zeggen dat ze niet kunnen naaien, kunnen doen! (Zolang u uw naald kunt inrijgen.)