Índice:
- Etapa 1: Materiais necessários
- Etapa 2: configuração / download
- Etapa 3: Código Parte 1: Função de rastreamento
- Etapa 4: Código Parte 2: While Loop
- Etapa 5: Código Parte 3: Seção de e-mail
Vídeo: UTK EF 230 MarsRoomba Projeto Outono 2018: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Atualmente, os rovers de Marte são usados para coletar dados na superfície de Marte por meio de vários métodos, até o fim de aprender mais sobre o potencial do planeta para a vida microbiana. Os rovers usam principalmente ferramentas de fotografia e análise de solo para coleta de dados, mas os rovers também incluem instrumentos de navegação, detectores de radiação, sensores atmosféricos e um laser para vaporização de amostras de rocha. O objetivo da missão do rover planejado para 2020 é basicamente o mesmo, mas com a tarefa especial de "coletar amostras de solo e rocha e armazená-las na superfície para possível retorno à Terra em uma missão futura", de acordo com a NASA.
No entanto, sob a premissa de que futuros rovers serão usados para assistência humana, nossa equipe considerou quais aspectos dos humanos o rover poderia monitorar. Chegamos à conclusão de que, caso alguma emergência deixasse um astronauta inconsciente devido a falhas no suporte de vida e no equipamento, nosso rover poderia servir como um sinalizador móvel ao observar que o astronauta que ele seguia está imóvel e transmitindo uma mensagem de angústia. Para seguir o humano e determinar a imobilidade, o rover pegaria informações como a cor dos sapatos do humano e seus movimentos. Outro dado a ser considerado é que ele teria que lembrar seu caminho para retransmitir um sinal de socorro em caso de emergência. Nosso rover atende a uma necessidade em Marte, pois a tentativa de uma missão tão cara em tal terreno estranho exige várias camadas de segurança contra falhas e, caso um astronauta não consiga obter ajuda devido a mau funcionamento ou inconsciência, o rover pode alertar outros.
Este Instructable foi projetado para ajudar o leitor a programar seu Roomba para seguir um "astronauta" com sucesso e enviar um sinal de socorro, se aplicável.
Etapa 1: Materiais necessários
1) Computador / laptop com acesso à Internet
2) MATLAB_R2018a
3) Download do Roomba e do Roomba
Etapa 2: configuração / download
Execute este script no MATLAB para baixar o software necessário para acessar o Roomba (salvo em arquivo próprio na pasta do projeto)
Ajuda adicional:
% Programa de instalação para EF 230 Roomba Project% Última atualização: 13 de setembro de 2017 (problemas de segurança corrigidos associados ao servidor https e aviso de exclusão de arquivo removido se ocorrerem erros) function roombaInstall clc; % lista de arquivos para instalar arquivos = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % local para instalação de options = weboptions ('CertificateFilename', ''); % diga a ele para ignorar os requisitos de certificado server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Instalação / atualização do Roomba'; % display purpose and get confirmation prompt = {'Este programa irá baixar estes arquivos EF 230 Roomba:' '' strjoin (arquivos, '') '' 'para esta pasta:' '' cd '' 'Deseja continuar? '}; bip; yn = questdlg (prompt, … dlgTitle, … 'Sim', 'Não', 'Sim');
if ~ strcmp (yn, 'Sim'), retorna; fim
% obtém a lista de arquivos existentes existing_files = files (cellfun (@exist, files)> 0); if ~ isempty (existing_files)% certifique-se de que está realmente ok para substituí-los prompt = {'Você está substituindo este (s) arquivo (s):' '' strjoin (existing_files, '') '' 'OK para substituir?' }; bip; yn = questdlg (prompt, … dlgTitle, … 'Sim', 'Não', 'Sim'); if ~ strcmp (yn, 'Sim'), retorna; fim fim
% baixe os arquivos cnt = 0; para i = 1: comprimento (arquivos) f = arquivos {i}; disp (['Baixando' f]); tente url = [servidor f]; websave (f, url, opções); % opções adicionadas para evitar erros de segurança cnt = cnt + 1; catch disp (['Erro ao baixar' f]); dummy = [f '.html']; se existe (dummy, 'arquivo') == 2 delete (dummy) end end end
if cnt == comprimento (arquivos) msg = 'Instalação bem-sucedida'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Erro de instalação - veja a janela de comando para detalhes'; waitfor (errordlg (msg, dlgTitle)); fim
fim% roombaInstall
Etapa 3: Código Parte 1: Função de rastreamento
Esta função pega a variável Roomba e a imagem da câmera no Roomba e encontra as coordenadas xy centrais do objeto rastreado
Salve este código em outro arquivo na mesma pasta.
função [xm, ym] = trackingblue (r)% Entradas: variável roomba% Saídas: valor xey do centro do seguinte objeto% Objetivo: encontra o centro de um objeto azul dado uma imagem% Uso [valor x, y valor] = trackingblue (variável roomba) img = r.getImage; % lê a câmera da subtrama do robô (1, 2, 2) subimagem (img); % mostra a imagem na mesma janela que o título do caminho ('Tracking Image') red = img (:,:, 1); verde = img (:,:, 2); azul = img (:,:, 3); justBlue = azul - verde / 2 - vermelho / 2; bw = justBlue> 40; segure na subtrama (1, 2, 2) subimagem (bw); [x, y] = encontrar (bw); se ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = redondo (média (y)); xx = max (1, xm-5): min (xm + 5, tamanho (bw, 1)); yy = max (1, ym-5): min (ym + 5, tamanho (bw, 2)); bwbw = zeros (tamanho (bw), 'uint8'); bwbw (xx, yy) = 255; segure na subtrama (1, 2, 2) subimagem (justBlue + bwbw); fim
Etapa 4: Código Parte 2: While Loop
Este código direciona o Roomba com base na localização xey do objeto da função de rastreamento. Isso fará com que o Roomba fique atento a paredes e penhascos, enquanto busca o azul. Isso também pegará as coordenadas xey do caminho do Roomba e criará um gráfico correspondente com a imagem de rastreamento. Se o sensor de resposta estiver ativado, ele passará para a seção de e-mail
% Projeto Rover
% Jonah Zahn, Wade Price, Noah Sloan% jzahn2, wprice15, nsloan1% Entradas: valor roomba, dados da câmera, bump, sensores de luz e parede% Objetivo: Segue o astronauta e evita obstáculos. Se alertado, o roomba envia um e-mail% detalhando um mapa e onde está de acordo com sua posição inicial. % Uso: apenas execute o programa após ter declarado uma variável roomba, também% tem um objeto verde em movimento% Saídas: mostra a imagem de rastreamento de imagem, o mapa de e-mails e o texto para o usuário %% Seguindo a Seção b = 0; % Inicializando variáveis c = 0; x = 0; y = 0; teta = 0; enquanto c == 0% Loop para fazê-lo detectar o objeto azul e os obstáculos t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); precipício = getCliffSensors (r); % inicializando as estruturas para os valores do sensor light = getLightBumpers (r); bump = getBumpers (r); se light.leftCenter> = 10 || light.rightCenter> = 10% Detecta se há uma parede perto de r.stop r.setLEDDigits ('help') c = 1% enquanto b == 0% se bump.right == 1 || bump.left == 1 || bump.front == 1% Detecta se bateu em algo depois de detectar uma parede% c = 1% b = 1% disp ('bump')% end% end elseif bump.right == 1 || bump.left == 1 || bump.front == 1% Detecta se bateu em algo, em caso afirmativo, ele enviará um e-mail r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100% Detecta se há um penhasco próximo a r.stop c = 1 r.setLEDDigits ('help') else% Define as velocidades de direção para seguir o azul 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 coordenada do roomba y = d. * sind (theta). * d + y; % y coordenada do subplot de roomba (1, 2, 1) plot (x, y, 'bd')% plota o caminho e adiciona um título de título ('Roomba Path') hold on; fim
Etapa 5: Código Parte 3: Seção de e-mail
Isso pegará o caminho traçado e a imagem e os enviará para um endereço de e-mail especificado
(Mostrado aqui com e-mail de exemplo)
%% Seção de Email
if b == 1 saveas (gcf, 'rovermap.png')% salva a figura setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % conta de email para enviar de setpref ('Internet', 'SMTP_Username', '[email protected]'); % senders username setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Senders password 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 ('exemplo de e-mail', 'RoverBeacon', 'O astronauta parou de se mover. Para recuperação, siga as instruções no arquivo anexado.', 'rovermap.png') disp ('e-mail enviado') end
Recomendado:
Projeto Robô UTK 2017: 3 etapas
Robot Project UTK 2017: Missão: Nossa equipe de engenheiros foi contratada pela Froogle, uma fundação sem fins lucrativos para o desenvolvimento de tecnologia de código aberto, para desenvolver uma equipe inovadora Human Assisting Mars Rover.-Out " rover " é um roomba que codificamos para executar uma série de
Venus Flytrap - ITM Outono 2019: 5 etapas
Venus Flytrap - ITM Outono 2019: O que está faltando na mesa de todos? Uma Vênus Flytrap mecânica que contém lápis, canetas e outros objetos
Projeto ITTT 2018 - Terra: 5 etapas
Projeto ITTT 2018 | Terra: Olá! Minha escola me deu um projeto em que tive que criar um sistema interativo usando o Arduino e construí-lo na vida real. Decidi fazer um globo mundial onde sua interação com sensores e botões iluminaria países e faria o globo girar
Como colocar uma imagem personalizada no painel do Xbox 360. (Atualização anterior ao outono de 08): 8 etapas
Como colocar uma imagem personalizada no painel do seu Xbox 360. (Atualização anterior ao outono de 08): Neste instrutível, vou mostrar a você como colocar uma imagem personalizada como plano de fundo no seu xbox 360. Existem as mesmas etapas para fazer isso com o painel novo e o antigo. quando eu tiver a chance, irei atualizar tudo com novas fotos
Como fazer uma guirlanda de maçã para o outono ou volta às aulas: 13 etapas (com fotos)
Como fazer uma guirlanda de maçã para o outono ou volta às aulas: Anjeanette, da RootsAndWingsCo, fez esta guirlanda de maçã adorável de feltro e material. Foi um projeto simples que até quem diz que não sabe costurar pode fazer! (Contanto que você possa enfiar a linha na agulha.)