Índice:
- Etapa 1: suprimentos
- Etapa 2: a declaração do problema
- Etapa 3: controle remoto Bluetooth
- Etapa 4: reconhecimento de impacto
- Etapa 5: reconhecimento de vida
- Etapa 6: Execute
Vídeo: Mars Roomba: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Este manual de instruções o orientará nas instruções de operação de um robô a vácuo Roomba controlado por Raspberry Pi. O sistema operacional que usaremos é através do MATLAB.
Etapa 1: suprimentos
O que você precisa reunir para realizar este projeto:
- Bot de aspirador de pó Create2 Roomba da iRobot
- Raspberry Pi
- Câmera Raspberry Pi
- A última versão do MATLAB
- A caixa de ferramentas de instalação do Roomba para MATLAB
- Aplicativo MATLAB para um aparelho celular
Etapa 2: a declaração do problema
Fomos encarregados de usar o MATLAB para desenvolver um rover que pudesse ser usado em Marte para auxiliar os cientistas na coleta de dados do planeta. As funções que abordamos em nosso projeto foram de controle remoto, reconhecimento de impacto de objeto, reconhecimento de água, reconhecimento de vida e processamento de imagem. Para conseguir esses talentos, codificamos usando os comandos da caixa de ferramentas do Roomba para manipular as várias funções do Roomba Create2 da iRobot.
Etapa 3: controle remoto Bluetooth
Este slide irá percorrer o código para controlar o movimento do Roomba usando os recursos Bluetooth do seu smartphone. Para começar, baixe o aplicativo MATLAB em seu smartphone e faça login em sua conta Mathworks. Uma vez logado, vá para "mais", "configurações" e conecte-se ao seu computador usando seu endereço IP. Uma vez conectado, volte para "mais" e selecione "sensores". Toque no terceiro sensor na barra de ferramentas superior da tela e toque em iniciar. Agora, seu smartphone é um controle remoto!
O código é o seguinte:
enquanto 0 == 0
pausa (.5)
PhoneData = M. Orientation;
Azi = PhoneData (1);
Pitch = PhoneData (2);
Lado = PhoneData (3);
bumps = r.getBumpers;
se lado> 80 || Lado <-80
r.stop
r.bipe ('C, E, G, C ^, G, E, C')
pausa
elseif Side> 20 && Side <40
r.turnAngle (-5);
elseif Side> 40
r.turnAngle (-25);
elseif Side-40
r.turnAngle (5);
elseif Side <-40
r.turnAngle (25);
fim
se Pitch> 10 && Pitch <35
r.moveDistance (.03)
elseif Pitch> -35 && Pitch <-10
r.moveDistance (-. 03)
fim
fim
Etapa 4: reconhecimento de impacto
Outra função que implementamos foi detectar o impacto do Roomba em um objeto e, em seguida, corrigir seu caminho atual. Para fazer isso, tivemos que usar condicionais com as leituras dos sensores do pára-choque para determinar se um objeto foi atingido. Se o robô atingir um objeto, ele recuará 0,2 metros e girará em um ângulo determinado pelo pára-choque que foi atingido. Depois que um item é atingido, um menu aparece exibindo a palavra "oof".
O código é mostrado abaixo:
enquanto 0 == 0
bumps = r.getBumpers;
r.setDriveVelocity (.1)
if bumps.left == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (-35)
r.setDriveVelocity (.2)
elseif bumps.front == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (90)
r.setDriveVelocity (.2)
elseif bumps.right == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (35)
r.setDriveVelocity (.2)
elseif bumps.leftWheelDrop == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (-35)
r.setDriveVelocity (.2)
elseif bumps.rightWheelDrop == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (35)
r.setDriveVelocity (.2)
fim
fim
Etapa 5: reconhecimento de vida
Codificamos um sistema de reconhecimento de vida para ler as cores dos objetos à sua frente. Os três tipos de vida para os quais codificamos são plantas, água e alienígenas. Para fazer isso, codificamos os sensores para calcular os valores médios de vermelho, azul, verde ou branco. Esses valores foram comparados aos limites definidos manualmente para determinar a cor para a qual a câmera está olhando. O código também traçaria o caminho para o objeto e criaria um mapa.
O código é o seguinte:
t = 10;
i = 0;
enquanto t == 10
img = r.getImage; imshow (img)
pausar (0,167)
i = i + 1;
média_ vermelha = média (média (img (:,:, 1)));
média_ azul = média (média (img (:,:, 3)));
média_verde = média (média (img (:,:, 2)));
média_branca = (média_ azul + média_verde + média_vermelha) / 3; % querem este valor de aproximadamente 100
nove_mais_ten = 21;
limiar_verde = 125;
limiar_ azul = 130;
limite_branco = 124;
limiar_ vermelho = 115;
enquanto nine_plus_ten == 21% verde - vida
if green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold
r.moveDistance (-. 1)
a = msgbox ('possível fonte de vida encontrada, localização plotada');
pausa (2)
deletar (a)
[y2, Fs2] = audioread ('z_speak2.wav');
som (y2, Fs2)
pausa (2)
% plant = r.getImage; % imshow (planta);
% save ('plant_img.mat', plant ');
% localização do gráfico em verde
i = 5;
pausa
outro
nine_mais_ten = 19;
fim
fim
nove_mais_ten = 21;
enquanto nine_plus_ten == 21% blue - woder
if blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold
r.moveDistance (-. 1)
a = msgbox ('uma fonte de água foi encontrada, localização plotada');
pausa (2)
deletar (a)
[y3, Fs3] = audioread ('z_speak3.wav');
som (y3, Fs3);
% woder = r.getImage; % imshow (woder)
% save ('water_img.mat', woder)
% localização do gráfico em azul
i = 5;
pausa
outro
nine_mais_ten = 19;
fim
fim
nove_mais_ten = 21;
enquanto nine_plus_ten == 21% branco - alienígenas monkaS
if white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold
[y5, Fs5] = audioread ('z_speak5.wav');
som (y5, Fs5);
pausa (3)
r.setDriveVelocity (0,.5)
[ys, Fss] = audioread ('z_scream.mp3');
som (sim, Fss);
pausa (3)
r.stop
% alien = r.getImage; % imshow (estrangeiro);
% save ('alien_img.mat', alien);
i = 5;
pausa
outro
nine_mais_ten = 19;
fim
fim
se i == 5
a = 1; % ângulo de giros
t = 9; % termina o grande loop
i = 0;
fim
fim
Etapa 6: Execute
Depois que todo o código foi escrito, combine tudo em um arquivo e voila! Seu bot do Roomba agora estará totalmente funcional e operará conforme anunciado! No entanto, o controle do Bluetooth deve estar em um arquivo separado ou separado do resto do código com %%.
Divirta-se usando seu robô !!
Recomendado:
Transformando seu Roomba em um Mars Rover: 5 etapas
Transformando seu Roomba em um Mars Rover:
Mars Rover usando Raspberry Pi: 5 etapas
Mars Rover usando Raspberry Pi: Caros todos, Grande Aprendiz, Estou sempre curioso para saber sobre o Marte Rover, que tem 6 rodas que podem percorrer toda a superfície de Marte e explorar coisas da Terra. Eu também quero explorar as coisas sentando no meu laptop. Então agora eu acho que é a hora certa de fazer isso e
Raspberry Pi - Mars Rover autônomo com rastreamento de objetos OpenCV: 7 etapas (com imagens)
Raspberry Pi - Mars Rover autônomo com rastreamento de objetos OpenCV: alimentado por um Raspberry Pi 3, reconhecimento de objetos Open CV, sensores ultrassônicos e motores DC com engrenagens. Este rover pode rastrear qualquer objeto para o qual foi treinado e se mover em qualquer terreno
Mars Roomba Project UTK: 4 etapas
Mars Roomba Project UTK: ISENÇÃO DE RESPONSABILIDADE: ISTO FUNCIONARÁ SOMENTE SE O ROOMBA FOR CONFIGURADO DE FORMA ESPECÍFICA, ESTE INSTRUÍVEL FOI CRIADO PARA E DESTINA-SE A SER USADO PELA UNIVERSIDADE DE ESTUDANTES TENNESSEE E FACULDADE; este código é usado para configurar um Roomba para ser executado localmente escrito e s
IRobot Create-Mars Expedition Rover Mark I: 4 etapas
IRobot Create-Mars Expedition Rover Mark I: Este instrutível irá ensiná-lo a configurar o iRobot Create usando a codificação MatLab. Seu robô terá a capacidade de pesquisar minerais distinguindo formas, manobrar em terrenos acidentados com o uso de sensores de penhasco e tem a habilidade