Sommario:
- Passaggio 1: materiali necessari
- Passaggio 2: installazione/download
- Passaggio 3: codice parte 1: funzione di tracciamento
- Passaggio 4: Codice Parte 2: Mentre il ciclo
- Passaggio 5: codice parte 3: sezione e-mail
Video: Progetto UTK EF 230 MarsRoomba Autunno 2018: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Attualmente, i rover su Marte vengono utilizzati per raccogliere dati sulla superficie di Marte attraverso vari metodi, allo scopo ultimo di saperne di più sul potenziale del pianeta per la vita microbica. I rover utilizzano principalmente strumenti di fotografia e analisi del suolo per la raccolta dei dati, ma i rover includono anche strumenti di navigazione, rilevatori di radiazioni, sensori atmosferici e un laser per la vaporizzazione del campione di roccia. L'obiettivo della missione rover pianificata per il 2020 è per lo più lo stesso, ma con il compito speciale di "raccogliere campioni di suolo e roccia e conservarli sulla superficie per un potenziale ritorno sulla Terra da una missione futura", secondo la NASA.
Tuttavia, con la premessa che i futuri rover saranno utilizzati per l'assistenza umana, il nostro team ha considerato quali aspetti degli umani il rover potrebbe monitorare. Siamo giunti alla conclusione che se un'emergenza dovesse rendere incosciente un astronauta con il supporto vitale e l'equipaggiamento difettosi, il nostro rover potrebbe fungere da faro mobile osservando che l'astronauta seguito è immobile e trasmette un messaggio di angoscia. Per seguire l'essere umano e determinare l'immobilità, il rover avrebbe preso input come il colore delle scarpe dell'essere umano e il loro movimento. Un altro input da considerare è che dovrebbe ricordare il suo percorso per trasmettere un segnale di soccorso in caso di emergenza. Il nostro rover soddisfa un'esigenza su Marte in quanto il tentativo di una missione così costosa su un terreno così estraneo richiede più livelli di dispositivi di sicurezza e, se un astronauta non è in grado di ottenere il proprio aiuto a causa di un malfunzionamento o dell'incoscienza, il rover può avvisare gli altri.
Questo Instructable è progettato per aiutare il lettore a programmare il proprio Roomba per seguire con successo un "astronauta" e per inviare un segnale di soccorso, se applicabile.
Passaggio 1: materiali necessari
1) Computer/laptop accessibile da Internet
2) MATLAB_R2018a
3) Download di Roomba e Roomba
Passaggio 2: installazione/download
Esegui questo script in MATLAB per scaricare il software necessario per accedere a Roomba (salvato nel proprio file nella cartella del progetto)
Aiuto aggiuntivo:
% Programma di installazione per EF 230 Roomba Project% Ultimo aggiornamento: 13 settembre 2017 (Risolti problemi di sicurezza associati al server https e avviso di eliminazione file rimosso in caso di errori) function roombaInstall clc; % elenco di file da installare files = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % percorso di installazione da options = weboptions('CertificateFilename', ''); % digli di ignorare i requisiti del certificato server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Installazione/Aggiornamento Roomba'; % visualizza lo scopo e ottieni la richiesta di conferma = { 'Questo programma scaricherà questi file EF 230 Roomba:' '' strjoin(files, ' ') '' 'in questa cartella:' '' cd '' 'Vuoi continuare? ' }; bip; yn = questdlg(prompt, … dlgTitle, … 'Sì', 'No', 'Sì');
if ~strcmp(yn, 'Sì'), return; fine
% ottiene l'elenco dei file esistenti esistenti_file = files(cellfun(@exist, files) > 0); if ~isempty(existing_files) % assicurati che sia davvero ok sostituirli prompt = {'Stai sostituendo questi file: ' '' strjoin(existing_files, ' ') '' 'OK per sostituire?' }; bip; yn = questdlg(prompt, … dlgTitle, … 'Sì', 'No', 'Sì'); if ~strcmp(yn, 'Sì'), return; fine fine
% scarica i file cnt = 0; for i=1:lunghezza(file) f=file{i}; disp(['Scaricamento 'f]); prova url = [server f]; websave(f, url, opzioni); % di opzioni aggiunte per evitare errori di sicurezza cnt = cnt + 1; catch disp(['Errore durante il download 'f]); fittizio = [f '.html']; if exist(fittizio, 'file')==2 delete(fittizio) end end end
if cnt == length(files) msg = 'Installazione riuscita'; waitfor(msgbox(msg, dlgTitle)); else msg = 'Errore di installazione - vedere la finestra di comando per i dettagli'; waitfor(errordlg(msg, dlgTitle)); fine
end %roombaInstall
Passaggio 3: codice parte 1: funzione di tracciamento
Questa funzione prende la variabile Roomba e l'immagine dalla telecamera su Roomba e trova le coordinate xy centrali dell'oggetto tracciato
Salva questo codice in un altro file nella stessa cartella.
funzione [xm, ym] = trackingblue(r)%Ingressi: variabile roomba %Uscite: valore xey del centro del seguente oggetto %Scopo: trova il centro di un oggetto blu data un'immagine %Uso [valore x, y value] = trackingblue (variabile roomba) img=r.getImage; % legge la telecamera dalla sottotrama del robot(1, 2, 2) subimage(img); %mostra l'immagine nella stessa finestra del percorso title('Tracking Image') red = img(:,:, 1); verde = img(:,:, 2); blu = img(:,:, 3); justBlue = blu - verde/2 - rosso/2; bw = soloBlu > 40; tieni premuto subplot(1, 2, 2) subimage(bw); [x, y] = trova(bw); if ~isempty(x) && ~isempty(y) xm = round(mean(x)); ym = round(media(y)); xx = max(1, xm-5):min(xm+5, dimensione(bw, 1)); yy = max(1, ym-5):min(ym+5, size(bw, 2)); bwbw = zeros(size(bw), 'uint8'); bwbw(xx, aa) = 255; tieni premuto sottotrama (1, 2, 2) sottoimmagine (justBlue + bwbw); fine
Passaggio 4: Codice Parte 2: Mentre il ciclo
Questo codice guida il Roomba in base alla posizione xey dell'oggetto dalla funzione di tracciamento. In questo modo Roomba starà attento a muri e scogliere, mentre cerca il blu. Questo prenderà anche le coordinate x e y del percorso di Roomba e creerà un grafico corrispondente con l'immagine di tracciamento. Se il sensore di collisione è attivato, passerà alla sezione e-mail
%Progetto Rover
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Ingressi: valore roomba, dati della videocamera, sensori di urto, luce e parete %Scopo: segue l'astronauta ed evita gli ostacoli. Se avvisato, roomba invia un'e-mail %dettagliante una mappa e dove si trova in base alla sua posizione di partenza. %Uso: basta eseguire il programma dopo aver dichiarato una variabile roomba, %avere anche un oggetto verde in movimento %Uscite: mostra l'immagine di tracciamento dell'immagine, la mappa delle email e il testo all'utente %% Seguendo la sezione b=0; %Inizializzazione variabili c=0; x=0; y=0; theta=0; mentre c==0 %Loop per fargli rilevare l'oggetto blu e gli ostacoli t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue(r); scogliera=getCliffSensors(r); %inizializzazione delle strutture per i valori del sensore light=getLightBumpers(r); bump= getBumpers(r); if light.leftCenter >= 10 || light.rightCenter >= 10 %Sente se c'è un muro vicino a r.stop r.setLEDDigits('help') c=1 % mentre b==0 % se bump.right == 1 || bump.left == 1 || bump.front == 1 %Sense se ha urtato qualcosa dopo aver rilevato un muro % c=1 % b=1 % disp('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Sente se ha urtato qualcosa, in tal caso, invierà un'e-mail r.stop c=1 b=1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || scogliera.sinistra <= 100 || cliff.right <= 100 %Rileva se c'è una scogliera vicino a r.stop c=1 r.setLEDDigits('help') else %Imposta le velocità di guida per seguire il blu se yval = 100 r.setDriveVelocity(0.1) elseif yval 400 r.turnAngle(-5) end end theta = theta + r.getAngle; x = d.*cosd(teta) + x; % x coordinata della roomba y = d.*sind(theta).*d + y; % coordinata y della sottotrama roomba(1, 2, 1) plot(x, y, 'bd') % traccia il percorso e aggiunge un titolo title('Roomba Path') aspetta; fine
Passaggio 5: codice parte 3: sezione e-mail
Questo prenderà il percorso e l'immagine tracciati e li invierà a un indirizzo email specificato
(Mostrato qui con un'e-mail di esempio)
%% Sezione e-mail
if b==1 saveas(gcf, 'rovermap.png') %salva la cifra setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref('Internet', 'E_mail', '[email protected]'); % account di posta da inviare da setpref('Internet', 'SMTP_Username', '[email protected]'); % username del mittente setpref('Internet', 'SMTP_Password', 'gssegsse'); % password del mittente 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('esempio email', 'RoverBeacon', 'L'astronauta ha smesso di muoversi. Per il recupero, segui le indicazioni nel file allegato.', 'rovermap.png') disp('email inviata') end
Consigliato:
Venus Flytrap - ITM Autunno 2019: 5 passaggi
Venus Flytrap - ITM Autunno 2019: cosa manca sulla scrivania di tutti? Un Venus Flytrap meccanico che contiene matite, penne e altri oggetti
Progetto ITTT 2018 - Terra: 5 passi
Progetto ITTT 2018 | Earth: Ciao! La mia scuola mi ha dato un progetto in cui dovevo creare un sistema interattivo usando Arduino e costruirlo nella vita reale. Ho deciso di creare un mappamondo in cui la tua interazione con sensori e pulsanti illuminerebbe i paesi e farebbe girare il globo
Bruciatore alimentato tramite USB! Questo progetto può bruciare attraverso plastica/legno/carta (il progetto divertente deve anche essere un legno molto fine): 3 passaggi
Bruciatore alimentato tramite USB! Questo progetto può bruciare attraverso plastica/legno/carta (il progetto divertente deve anche essere un legno molto fine): NON FARLO UTILIZZANDO USB!!!! ho scoperto che può danneggiare il tuo computer da tutti i commenti. il mio computer va bene comunque Utilizzare un caricabatterie per telefono da 600 mA 5 V. ho usato questo e funziona bene e nulla può essere danneggiato se usi una spina di sicurezza per interrompere l'alimentazione
Come inserire un'immagine personalizzata sulla dashboard di Xbox 360. (Aggiornamento pre-autunno 08): 8 passaggi
Come inserire un'immagine personalizzata sulla dashboard di Xbox 360. (Aggiornamento pre-autunno 08): in questo tutorial ti mostrerò come inserire un'immagine personalizzata come sfondo sulla tua Xbox 360. Ci sono gli stessi passaggi per farlo con il nuovo e il vecchio cruscotto. quando avrò la possibilità aggiornerò il tutto con nuove foto
Come Fare una Ghirlanda di Mele per l'Autunno o il Ritorno a Scuola: 13 Passaggi (Illustrato)
Come realizzare una ghirlanda di mele per l'autunno o il ritorno a scuola: Anjeanette, di RootsAndWingsCo, ha realizzato questa adorabile ghirlanda di mele in feltro e materiale. Era un progetto semplice che anche chi dice di non saper cucire può fare! (Finché puoi infilare l'ago.)