Taula de continguts:
- Pas 1: materials necessaris
- Pas 2: Configuració / baixada
- Pas 3: Codi Part 1: Funció de seguiment
- Pas 4: Codi de la part 2: Mentre bucle
- Pas 5: Codi Part 3: Secció de correu electrònic
Vídeo: Projecte UTK EF 230 MarsRoomba tardor 2018: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Actualment, els rovers de Mart s’utilitzen per recopilar dades sobre la superfície de Mart mitjançant diversos mètodes, fins al final màxim d’aprendre més sobre el potencial del planeta per a la vida microbiana. Els rovers utilitzen principalment eines d’anàlisi de sòls i fotografia per a la recopilació de dades, però també inclouen instruments de navegació, detectors de radiació, sensors atmosfèrics i un làser per a la vaporització de mostres de roca. L'objectiu de la missió de rover 2020 previst és majoritàriament el mateix, però amb la tasca especial de "recollir mostres de terra i roca i guardar-les a la superfície per a un possible retorn a la Terra per una futura missió", segons la NASA.
Tanmateix, sota la premissa que els futurs rovers s’utilitzaran per a l’assistència humana, el nostre equip va considerar quins aspectes dels humans el rover podria controlar. Vam arribar a la conclusió que, en cas que una emergència fes inconscient a un astronauta amb un equipament i un equip de suport vital defectuosos, el nostre motor podria servir de far mòbil observant que l’astronauta que va seguir era immòbil i transmetia un missatge d’angoixa. Per seguir l’humà i determinar la immobilitat, el rover prendria aportacions com el color de les sabates de l’ésser humà i el seu moviment. Una altra entrada a tenir en compte és que hauria de recordar el seu camí per retransmetre un senyal de socors en cas d’emergència. El nostre rover compleix una necessitat a Mart, ja que intentar una missió tan costosa en un terreny tan estrany necessita múltiples capes de caixes fortes i, si un astronauta no pot obtenir la seva pròpia ajuda a causa d’un mal funcionament o inconsciència, el rover pot alertar els altres.
Aquest instructiu està dissenyat per ajudar el lector a programar el seu Roomba per seguir amb èxit un "astronauta" i enviar un senyal de socors si escau.
Pas 1: materials necessaris
1) Ordinador / portàtil accessible a Internet
2) MATLAB_R2018a
3) Descarregar Roomba i Roomba
Pas 2: Configuració / baixada
Executeu aquest script a MATLAB per descarregar el programari necessari per accedir al Roomba (desat al seu propi fitxer a la carpeta del projecte)
Ajuda addicional:
% Programa d'instal·lació del projecte EF 230 Roomba Darrera actualització: 13 de setembre de 2017 (S'han corregit els problemes de seguretat associats amb el servidor https i s'ha eliminat l'avís de supressió de fitxers en cas d'errors) function roombaInstall clc; % llista de fitxers per instal·lar fitxers = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % ubicació per instal·lar des d'opcions = opcions web ('CertificateFilename', ''); % digueu-li que ignori els requisits del certificat servidor = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Instal·lació / actualització de Roomba'; % display purpose and get confirmation prompt = {'Aquest programa descarregarà aquests fitxers EF 230 Roomba:' '' strjoin (files, '') '' 'a aquesta carpeta:' '' cd '' 'Voleu continuar? '}; bip; yn = questdlg (indicador, … dlgTitle, … "Sí", "No", "Sí");
si ~ strcmp (yn, 'Sí'), torna; final
% obtenir la llista de fitxers que existeixen existing_files = fitxers (cellfun (@exist, fitxers)> 0); if ~ isempty (existing_files)% assegureu-vos que està realment bé substituir-los prompt = {'Esteu substituint aquests fitxers:' '' strjoin (existing_files, '') '' 'Voleu substituir?' }; bip; yn = questdlg (indicador, … dlgTitle, … "Sí", "No", "Sí"); si ~ strcmp (yn, 'Sí'), torna; fi final
% descarrega els fitxers cnt = 0; per a i = 1: longitud (fitxers) f = fitxers {i}; disp (['Descarregant' f]); proveu url = [servidor f]; websave (f, url, opcions); % d'opcions afegides per evitar errors de seguretat cnt = cnt + 1; catch disp (['Error en descarregar' f]); maniquí = [f '.html']; si existeix (fictici, 'fitxer') == 2 esborra (fictici) extrem extrem extrem
if cnt == length (files) msg = 'Instal·lació correcta'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Error d'instal·lació: vegeu la finestra d'ordres per obtenir més detalls'; waitfor (errordlg (msg, dlgTitle)); final
end% roombaInstall
Pas 3: Codi Part 1: Funció de seguiment
Aquesta funció pren la variable Roomba i la imatge de la càmera del Roomba i troba les coordenades centrals xy de l'objecte rastrejat
Deseu aquest codi en un altre fitxer de la mateixa carpeta.
function [xm, ym] = trackingblue (r)% Entrades: variable roomba% Sortides: valor x i y del centre de l'objecte següent% Finalitat: troba el centre d'un objecte blau amb una imatge% Ús [valor x, y valor] = trackingblue (variable roomba) img = r.getImage; % llegeix la càmera de la subimatge (img) de la subtrama del robot (1, 2, 2); % mostra la imatge a la mateixa finestra que el títol del camí ('Imatge de seguiment') red = img (:,:, 1); verd = img (:,:, 2); blau = img (:,:, 3); blau just = blau - verd / 2 - vermell / 2; bw = justBlue> 40; mantenir la subimatge (1, 2, 2) subimatge (bw); [x, y] = trobar (bw); si ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = rodó (mitjana (y)); xx = màx (1, xm-5): min (xm + 5, mida (bw, 1)); yy = màx (1, ym-5): min (ym + 5, mida (bw, 2)); bwbw = zeros (mida (bw), 'uint8'); bwbw (xx, yy) = 255; mantingueu la subimatge (1, 2, 2) subimatge (justBlue + bwbw); final
Pas 4: Codi de la part 2: Mentre bucle
Aquest codi condueix Roomba basant-se en la ubicació xey de l'objecte des de la funció de seguiment. Això farà que Roomba tingui cura de les parets i els penya-segats mentre busca el blau. Això també prendrà les coordenades xy del camí de Roomba i crearà un diagrama corresponent amb la imatge de seguiment. Si el sensor de cops està activat, passarà a la secció de correu electrònic
Projecte% Rover
% Jonah Zahn, Wade Price, Noah Sloan% jzahn2, wprice15, nsloan1% Entrades: valor roomba, dades de la càmera, sensors de bump, llum i paret% Finalitat: Segueix l'astronauta i evita obstacles. Si s’avisa, roomba envia un% de correu electrònic detallant un mapa i on es troba segons la seva posició inicial. % Ús: només cal executar el programa amb haver declarat una variable roomba, també% té un objecte verd en moviment% Sortides: mostra la imatge de seguiment d'imatges, el mapa de correus electrònics i el text a l'usuari %% Seguint la secció b = 0; % Inicialització de variables c = 0; x = 0; y = 0; theta = 0; mentre que c == 0% bucle per fer-lo detectar l'objecte blau i els obstacles t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); penya-segat = getCliffSensors (r); % inicialitzant les estructures per als valors del sensor light = getLightBumpers (r); bump = getBumpers (r); si light.leftCenter> = 10 || light.rightCenter> = 10% Sentits si hi ha una paret a prop de r.stop r.setLEDDigits ('help') c = 1% mentre que b == 0% si bump.right == 1 || bump.left == 1 || bump.front == 1% Sentit si ha tocat alguna cosa després de detectar una paret% c = 1% b = 1% disp ('bump')% end% end elseif bump.right == 1 || bump.left == 1 || bump.front == 1% Sentirà si ha topat amb alguna cosa, si és així, enviarà un correu electrònic r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || penya-segat <= 100 || cliff.right <= 100% Sentits si hi ha un penya-segat a prop de r.stop c = 1 r.setLEDDigits ('ajuda') else% Estableix les velocitats de la unitat per seguir el blau si yval = 100 r.setDriveVelocity (0.1) elseif yval 400 r.turnAngle (-5) end end theta = theta + r.getAngle; x = d. * cosd (theta) + x; coordenada% x del roomba y = d. * sind (theta). * d + y; coordenada% y de la trama de la subtrama roomba (1, 2, 1) (x, y, 'bd')% dibuixa el camí i afegeix un títol del títol ('Camí de Roomba'); final
Pas 5: Codi Part 3: Secció de correu electrònic
Això prendrà el camí i la imatge representats i els enviarà a una adreça de correu electrònic especificada
(Es mostra aquí amb un exemple de correu electrònic)
Secció de correu electrònic %%
si b == 1 saveas (gcf, 'rovermap.png')% desa la figura setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % compte de correu per enviar des de setpref ('Internet', 'SMTP_Username', '[email protected]'); % senders username setpref ('Internet', 'SMTP_Password', 'gssegsse'); Propietats de contrasenya de% Senders = 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 ("exemple de correu electrònic", "RoverBeacon", "L'astronauta ha deixat de moure's. Per recuperar-lo, seguiu les instruccions del fitxer adjunt.", "rovermap.png") disp ("correu electrònic enviat") final
Recomanat:
Venus Flytrap - ITM tardor 2019: 5 passos
Venus Flytrap - ITM tardor 2019: Què falta a l'escriptori de tothom? Una Venus Flytrap mecànica que sosté llapis, bolígrafs i altres objectes
Projecte Mars Roomba UTK: 4 passos
Projecte Mars Roomba UTK: EXCLUSIÓ DE RESPONSABILITATS: AQUEST FUNCIONAMENT NO SERÀ SI LA ROOMBA ESTÀ CONFIGURADA DE MANERA ESPECÍFICA AVERY, AQUEST INSTRUCTABLE VA SER CREAT I INTENCIONAT PER A L’ÚS I LA FACULTAT DE LA UNIVERSITAT DE TENNESSEE Aquest codi s’utilitza per configurar un Roomba per funcionar localment. escrit i s
Gravador USB Aquest projecte es pot cremar a través de plàstics / fusta / paper (el divertit projecte també ha de ser fusta molt fina): 3 passos
Gravador alimentat per USB. Aquest projecte pot cremar-se a través de plàstics / fusta / paper (el divertit projecte també ha de ser fusta molt fina): NO FEREU AIX US mitjançant USB !!!! He descobert que pot fer malbé el vostre ordinador per tots els comentaris. el meu ordinador està bé. Utilitzeu un carregador de telèfon de 600 ma 5 v. He utilitzat això i funciona bé i res es pot danyar si utilitzeu un endoll de seguretat per aturar l'alimentació
Com posar una imatge personalitzada al tauler de Xbox 360 (actualització prèvia a la tardor del 08): 8 passos
Com posar una imatge personalitzada al tauler de Xbox 360. (Actualització prèvia a la tardor del 08): en aquesta instrucció us mostraré com posar una imatge personalitzada com a fons al vostre Xbox 360. hi ha els mateixos passos per fer-ho amb el nou i el vell tauler. quan tingui l'oportunitat, actualitzaré tot amb imatges noves
Com fer una garlanda d'Apple per a la tardor o per tornar a l'escola: 13 passos (amb imatges)
Com fer una guirlanda d’Apple per a la tardor o per tornar a l’escola: Anjeanette, de RootsAndWingsCo, va fer aquesta adorable garlanda de poma amb feltre i material. Va ser un projecte senzill que fins i tot aquells que diuen que no poden cosir poden fer-ho! (Sempre que pugueu enfilar l’agulla)