Table des matières:
- Étape 1: Matériel nécessaire
- Étape 2: configuration/téléchargement
- Étape 3: Code Partie 1: Fonction de suivi
- Étape 4: Code Partie 2: Boucle While
- Étape 5: Code Partie 3: Section Courriel
Vidéo: Projet UTK EF 230 MarsRoomba Automne 2018 : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Actuellement, les rovers martiens sont utilisés pour collecter des données à la surface de Mars par diverses méthodes, dans le but ultime d'en savoir plus sur le potentiel de la planète pour la vie microbienne. Les rovers utilisent principalement des outils de photographie et d'analyse du sol pour la collecte de données, mais les rovers comprennent également des instruments de navigation, des détecteurs de rayonnement, des capteurs atmosphériques et un laser pour la vaporisation d'échantillons de roche. L'objectif de la mission du rover prévue pour 2020 est essentiellement le même, mais avec la tâche spéciale de "collecter des échantillons de sol et de roche et de les mettre en cache à la surface pour un retour potentiel sur Terre par une future mission", selon la NASA.
Cependant, en partant du principe que les futurs rovers seront utilisés pour l'assistance humaine, notre équipe a examiné quels aspects des humains le rover pourrait surveiller. Nous sommes arrivés à la conclusion que si une urgence rendait un astronaute inconscient avec un équipement de survie et un équipement défaillants, notre rover pourrait servir de balise mobile Mayday en observant que l'astronaute qu'il suivait est immobile et en transmettant un message de détresse. Pour suivre l'humain et déterminer l'immobilité, le rover prendrait des données telles que la couleur des chaussures de l'humain et leur mouvement. Une autre entrée à considérer est qu'il devrait se souvenir de son chemin afin de relayer un signal de détresse en cas d'urgence. Notre rover répond à un besoin sur Mars en ce sens que tenter une mission aussi coûteuse sur un tel terrain étranger nécessite plusieurs couches de sécurité intégrée, et si un astronaute ne peut pas obtenir sa propre aide en raison d'un dysfonctionnement ou d'une inconscience, le rover peut alerter les autres.
Ce Instructable est conçu pour aider le lecteur à programmer son Roomba pour suivre avec succès un « astronaute » et pour envoyer un signal de détresse le cas échéant.
Étape 1: Matériel nécessaire
1) Ordinateur/ordinateur portable accessible par Internet
2) MATLAB_R2018a
3) Roomba et Roomba Télécharger
Étape 2: configuration/téléchargement
Exécutez ce script dans MATLAB afin de télécharger le logiciel nécessaire pour accéder au Roomba (enregistré dans son propre fichier dans le dossier du projet)
Aide supplémentaire:
% Programme d'installation pour EF 230 Roomba Project% Dernière mise à jour: 13 septembre 2017 (Correction des problèmes de sécurité associés au serveur https et suppression de l'avertissement de suppression de fichier en cas d'erreur) fonction roombaInstall clc; % liste de fichiers à installer fichiers = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % emplacement à installer à partir d'options = weboptions('CertificateFilename', ''); % lui dire d'ignorer les exigences de certificat server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Installation/Mise à jour de Roomba'; % display purpose and get confirmation prompt = { 'Ce programme téléchargera ces fichiers EF 230 Roomba:' '' strjoin(files, ' ') '' 'dans ce dossier:' ''cd '' 'Voulez-vous continuer ? ' }; bip; yn = questdlg(invite, … dlgTitle, … 'Oui', 'Non', 'Oui');
if ~strcmp(yn, 'Oui'), return; finir
% obtenir la liste des fichiers existants existants_files = files(cellfun(@exist, files) > 0); if ~isempty(existing_files) % assurez-vous qu'il est vraiment possible de les remplacer prompt = {'Vous remplacez ce(s) fichier(s): ' '' strjoin(existing_files, ' ') '' 'OK pour remplacer ?' }; bip; yn = questdlg(invite, … dlgTitle, … 'Oui', 'Non', 'Oui'); if ~strcmp(yn, 'Oui'), return; fin fin
% télécharger les fichiers cnt = 0; pour i=1:longueur(fichiers) f=fichiers{i}; disp(['Téléchargement ' f]); essayez url = [serveur f]; websave(f, url, options); % d'options ajoutées pour éviter les erreurs de sécurité cnt = cnt + 1; catch disp(['Erreur de téléchargement 'f]); factice = [f '.html']; if exist(dummy, 'file')==2 delete(dummy) end end end
if cnt == longueur (fichiers) msg = 'Installation réussie'; waitfor(msgbox(msg, dlgTitle)); else msg = 'Erreur d'installation - voir la fenêtre de commande pour plus de détails'; waitfor(errordlg(msg, dlgTitle)); finir
fin %roombaInstall
Étape 3: Code Partie 1: Fonction de suivi
Cette fonction prend la variable Roomba et l'image de la caméra sur le Roomba et trouve les coordonnées centrales xy de l'objet suivi
Enregistrez ce code dans un autre fichier du même dossier.
fonction [xm, ym] = trackingblue(r)%Entrées: variable roomba %Sorties: valeur x et y du centre de l'objet suivant % Objectif: trouve le centre d'un objet bleu à partir d'une image %Utilisation [valeur x, y value] = trackingblue (variable roomba) img=r.getImage; % lit la caméra hors du robot subplot(1, 2, 2) subimage(img); % affiche l'image dans la même fenêtre que le chemin title('Tracking Image') red = img(:,:, 1); vert = img(:,:, 2); bleu = img(:,:, 3); justeBleu = bleu - vert/2 - rouge/2; pc = justeBleu > 40; maintenez sur subplot(1, 2, 2) subimage(bw); [x, y] = trouver(pc); if ~isempty(x) && ~isempty(y) xm = round(mean(x)); ym = rond(moyenne(y)); xx = max(1, xm-5):min(xm+5, taille(pc, 1)); yy = max(1, ym-5):min(ym+5, taille(bw, 2)); pc pc = zéros (taille (pc), 'uint8'); pc pc(xx, yy) = 255; maintenez sur subplot (1, 2, 2) subimage (justBlue + bwbw); finir
Étape 4: Code Partie 2: Boucle While
Ce code pilote le Roomba en fonction de l'emplacement x et y de l'objet à partir de la fonction de suivi. Cela obligera le Roomba à surveiller les murs et les falaises, tout en recherchant le bleu. Cela prendra également les coordonnées x et y du chemin Roomba et créera un tracé correspondant avec l'image de suivi. Si le capteur de choc est activé, il passera à la section e-mail
%Projet Rover
% Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 % Entrées: valeur roomba, données de la caméra, capteurs de bosse, de lumière et de mur % Objectif: suit l'astronaute et évite les obstacles. En cas d'alerte, le roomba envoie un e-mail % détaillant une carte et où il se trouve en fonction de sa position de départ. %Utilisation: exécutez simplement le programme après avoir déclaré une variable roomba, ainsi que %avoir un objet vert en mouvement %Résultats: affiche l'image de suivi de l'image, la carte des e-mails et le texte à l'utilisateur %% Suite à la section b=0; %Initialisation des variables c=0; x=0; y=0; thêta=0; tandis que c==0 %Loop pour lui faire détecter l'objet bleu et les obstacles t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue(r); cliff=getCliffSensors(r); %initialisation des structures pour les valeurs des capteurs light=getLightBumpers(r); bump= getBumpers(r); si light.leftCenter >= 10 || light.rightCenter >= 10 % Détecte s'il y a un mur près de r.stop r.setLEDDigits('help') c=1 % tandis que b==0 % si bump.right == 1 || bump.left == 1 || bump.front == 1 % Détecte s'il a heurté quelque chose après avoir détecté un mur % c=1 % b=1 % disp('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Sense s'il a heurté quelque chose, si c'est le cas, il enverra un e-mail r.stop c=1 b=1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || falaise.gauche <= 100 || cliff.right <= 100 %Détecte s'il y a une falaise près de r.stop c=1 r.setLEDDigits('help') else %Définit les vitesses d'entraînement pour suivre le bleu si yval = 100 r.setDriveVelocity(0.1) elseif yval 400 r.turnAngle(-5) end end theta = theta + r.getAngle; x = d.*cosd(thêta) + x; % x coordonnée du roomba y = d.*sind(theta).*d + y; % y coordonnée de la sous-intrigue roomba (1, 2, 1) plot(x, y, 'bd') % trace le chemin et ajoute un titre title('Roomba Path') tenez bon; finir
Étape 5: Code Partie 3: Section Courriel
Cela prendra le chemin tracé et l'image et l'enverra à une adresse e-mail spécifiée
(Montré ici avec un exemple d'e-mail)
%% Section de courrier électronique
if b==1 saveas(gcf, 'rovermap.png') %sauve le chiffre setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref('Internet', 'E_mail', '[email protected]'); % compte de messagerie à envoyer depuis setpref('Internet', 'SMTP_Username', '[email protected]'); % nom d'utilisateur de l'expéditeur setpref('Internet', 'SMTP_Password', 'gssegsse'); % Props du mot de passe des expéditeurs = 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 d'e-mail', 'RoverBeacon', 'L'astronaute s'est arrêté de bouger. Pour la récupération, suivez les instructions dans le fichier joint.', 'rovermap.png') disp('email envoyé') end
Conseillé:
Projet Robot UTK 2017 : 3 étapes
Robot Project UTK 2017 : Mission : Notre équipe d'ingénieurs a été embauchée par Froogle, une fondation à but non lucratif pour le développement de technologies open source, pour développer un innovant Human Assisting Mars Rover.-Out teams "rover" est un roomba que nous avons codé pour exécuter une série o
Venus Flytrap - ITM Automne 2019 : 5 étapes
Venus Flytrap - ITM Automne 2019 : Que manque-t-il sur le bureau de chacun ? Un Venus Flytrap mécanique qui contient des crayons, des stylos et d'autres objets
Graveur alimenté par USB ! Ce projet peut brûler à travers les plastiques/bois/papier (le projet amusant doit également être du bois très fin) : 3 étapes
Graveur alimenté par USB ! Ce projet peut brûler à travers du plastique/du bois/du papier (le projet amusant doit également être du bois très fin) : NE PAS FAIRE CELA EN UTILISANT UN USB !!!! J'ai découvert qu'il peut endommager votre ordinateur à partir de tous les commentaires. mon ordinateur va bien. Utilisez un chargeur de téléphone 600ma 5v. Je l'ai utilisé et cela fonctionne bien et rien ne peut être endommagé si vous utilisez une prise de sécurité pour arrêter l'alimentation
Comment mettre une image personnalisée sur votre tableau de bord Xbox 360. (Mise à jour avant l'automne 08) : 8 étapes
Comment mettre une image personnalisée sur votre tableau de bord Xbox 360. (Mise à jour avant l'automne 08): Dans cette instructable, je vais vous montrer comment mettre une image personnalisée comme arrière-plan sur votre Xbox 360. Il y a les mêmes étapes pour le faire avec le nouveau et l'ancien tableau de bord. quand j'en aurai l'occasion, je mettrai à jour le tout avec de nouvelles photos
Comment faire une guirlande de pommes pour l'automne ou la rentrée scolaire : 13 étapes (avec photos)
Comment faire une guirlande de pommes pour l'automne ou la rentrée scolaire : Anjeanette, de RootsAndWingsCo a fabriqué cette adorable guirlande de pommes en feutre et en tissu. C'était un projet simple que même ceux qui disent ne pas savoir coudre peuvent le faire ! (Tant que vous pouvez enfiler votre aiguille.)