Índice:
- Etapa 1: Inicialização e Sensores
- Etapa 2: obtendo dados
- Etapa 3: Concluindo a missão
- Etapa 4: Conclusão
Vídeo: Roomba Explorer: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Ao utilizar o MATLAB e o robô Create2 da iRobot, este projeto irá explorar várias áreas de um local desconhecido. Empregamos os sensores do robô para ajudar a manobrar em um terreno perigoso. Ao obter fotografias e vídeo de um Raspberry Pi anexado, pudemos determinar os obstáculos que o robô enfrentará e eles serão classificados.
Peças e Materiais
Para este projeto, você precisará
- um computador
-versão mais recente do MATLAB (MATLAB R2018b foi usado para este projeto)
- caixa de ferramentas roombaInstall
- Robô Create2 do iRobot
-Raspberry Pi com câmera
Etapa 1: Inicialização e Sensores
Antes de iniciar qualquer programação, baixamos a caixa de ferramentas roombaInstall, que permitia o acesso a diferentes componentes do Robot.
Inicialmente, criamos uma GUI para inicializar qualquer robô. Para fazer isso, você precisa digitar o número do robô como entrada. Isso permitirá o acesso ao robô para executar nosso programa. Trabalhamos para fazer o robô manobrar pelos muitos terrenos que encontraria. Implementamos os Sensores Cliff, Sensores Light Bump e Sensores Physical Bump, usando suas saídas para desarmar o Robô para mudar sua velocidade e / ou direção. Quando qualquer um dos seis sensores Light Bump estão detectando um objeto, o valor de saída deles diminuirá, fazendo com que a velocidade do robô diminua para evitar uma colisão de velocidade total. Quando o robô finalmente colide com um obstáculo, os sensores de colisão física reportarão um valor maior que zero; por causa disso, o Robot irá parar, então não haverá mais colisões e mais funções podem ser colocadas em ação. Para os sensores de penhasco, eles lerão o brilho da área ao seu redor. Se o valor for maior que 2800, determinamos que o robô estaria em solo estável e seguro. Porém, se o valor for inferior a 800, os Sensores de Penhasco estarão detectando um penhasco, parando imediatamente para não cair. Qualquer valor intermediário foi determinado para representar água e fará com que o robô interrompa sua ação. Ao usar os sensores acima, a velocidade do robô é alterada, permitindo-nos determinar melhor se existe algum perigo.
Abaixo está o código (de MATLAB R2018b)
%% de inicialização
dlgPrompts = {'Número do Roomba'};
dlgTitle = 'Selecione seu Roomba';
dlgDefaults = {''};
opts. Resize = 'ligado';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Criar janela que solicita que o usuário insira seu número de roomba
n = str2double (dlgout {1});
r = roomba (n); % Inicializa o Roomba especificado pelo usuário %% determinação de velocidade dos sensores Light Bump enquanto true s = r.getLightBumpers; % obtém sensores de colisão leve
lbumpout_1 = campo de extração (s, 'esquerdo'); % pega os valores numéricos dos sensores e os torna mais utilizáveis lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = campo de extração (s, 'leftCenter');
lbumpout_4 = campo de extração (s, 'rightCenter');
lbumpout_5 = campo de extração (s, 'rightFront');
lbumpout_6 = campo de extração (s, 'direita');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% converte valores em matriz
sLbump = classificar (lbout); % classifica a matriz para o valor mais baixo pode ser extraída
lowLbump = sLbump (1); velocidade =.05 + (lowLbump) *. 005% usando o valor mais baixo, que representa os obstáculos próximos, para determinar a velocidade, velocidade mais alta quando nada for detectado
r.setDriveVelocity (velocidade, velocidade)
fim
% Pára-choques físicos
b = r.getBumpers; % De saída verdadeiro, falso
bsen_1 = campo de extração (b, 'esquerda')
bsen_2 = campo de extração (b, 'direita')
bsen_3 = campo de extração (b, 'frente')
bsen_4 = extractfield (b, 'leftWheelDrop')
bsen_5 = extractfield (b, 'rightWheelDrop')
bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)
se tbump> 0 r.setDriveVelocity (0, 0)
fim
% Sensores de Penhasco
c = r.getCliffSensors %% 2800 seguro, senão água
csen_1 = campo de extração (c, 'esquerda')
csen_2 = campo de extração (c, 'direita')
csen_3 = campo de extração (c, 'leftFront')
csen_4 = campo de extração (c, 'rightFront')
penhascos = [csen_1, csen_2, csen_3, csen_4]
ordcliff = sort (penhascos)
se ordcliff (1) <2750
r.setDriveVelocity (0, 0)
se precipício <800
disp 'precipício'
outro
disp 'água'
fim
r. TurnAngle (45)
fim
Etapa 2: obtendo dados
Depois que os sensores de impacto físico forem acionados, o robô implementará seu Raspberry Pi a bordo para tirar uma foto do obstáculo. Depois de tirar uma fotografia, usando o reconhecimento de texto se houver texto na imagem, o Robô determinará qual é o obstáculo e o que o obstáculo diz.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
photo = imread ('imgfromcamera.jpg')
ocrResults = ocr (foto)
knownText = ocrResults. Text;
figura;
texto imshow (foto) (220, 0, knownText, 'BackgroundColor', [1 1 1]);
Etapa 3: Concluindo a missão
Quando o Robô determinar que o obstáculo está em CASA, ele completará sua missão e ficará em casa. Após o término da missão, o Robô enviará um e-mail avisando que voltou para casa, e enviará as imagens que levou ao longo de sua viagem.
% Enviando email
setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internet', 'E_mail', '[email protected]'); % conta de e-mail para enviar de setpref ('Internet', 'SMTP_Username', 'insira o e-mail do remetente'); % senders username setpref ('Internet', 'SMTP_Password', 'insira a senha do remetente'); % Senha do remetente
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 ('Digite o e-mail de recebimento', 'Roomba', 'O Roomba voltou para casa !!', 'imgfromcamera.jpg')% conta de correio para enviar para
O robô é então concluído.
Etapa 4: Conclusão
O programa MATLAB incluído é separado de todo o script que foi utilizado com o Robot. No rascunho final, certifique-se de colocar todo o código, exceto a etapa de inicialização, em um loop while para garantir que os bumpers estejam em execução constante. Este programa pode ser editado para atender às necessidades do usuário. A configuração do nosso robô é mostrada.
* Lembrete: não se esqueça de que a caixa de ferramentas roombaInstall é necessária para que o MATLAB interaja com o robô e o Raspberry Pi a bordo.
Recomendado:
Transformando seu Roomba em um Mars Rover: 5 etapas
Transformando seu Roomba em um Mars Rover:
Atalhos de teclado para Internet Explorer !!: 4 etapas
Atalhos de teclado para o Internet Explorer !!: Este Instructable mostrará alguns atalhos de teclado úteis para o Internet Explorer. Inscreva-se no meu canal. Obrigado
Roomba Scout Explorer: 8 etapas
Roomba Scout Explorer: Como um dos projetos americanos mais esperados e pesquisados, os projetos do Mars rover se tornaram realizações humanas na produção cada vez mais avançada de sistemas autônomos de alta tecnologia com o único propósito de investigar e inte
Do Roomba ao Rover em apenas 5 etapas !: 5 etapas
De Roomba a Rover em apenas 5 passos!: Os robôs Roomba são uma forma divertida e fácil de mergulhar no mundo da robótica. Neste Instructable, iremos detalhar como converter um Roomba simples em um rover controlável que analisa simultaneamente seus arredores.Lista de peças1.) MATLAB2.) Roomb
Bus Pirate 3EEPROM Explorer Board: 5 etapas
Bus Pirate 3EEPROM Explorer Board: Se você tem um dos Piratas do Ônibus do Hack a Day, o que você faz com ele? Aprenda mais sobre EEPROMs de 1 fio, I2C e SPI com a placa explorer 3EEPROM (nós a chamamos de THR-EE-PROM) .EEPROM é um tipo de chip de memória que armazena dados sem uma alimentação contínua