Índice:

Roomba Explorer: 4 etapas
Roomba Explorer: 4 etapas

Vídeo: Roomba Explorer: 4 etapas

Vídeo: Roomba Explorer: 4 etapas
Vídeo: Робот-пылесос: как правильно пользоваться 2024, Julho
Anonim
Roomba Explorer
Roomba Explorer

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

Inicialização e Sensores
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

Conclusão
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: