Índice:

Roomba com MATLAB: 4 etapas (com fotos)
Roomba com MATLAB: 4 etapas (com fotos)

Vídeo: Roomba com MATLAB: 4 etapas (com fotos)

Vídeo: Roomba com MATLAB: 4 etapas (com fotos)
Vídeo: Quality images & Pictures is MATLAB | Edit graphs in MATLAB | Picture Editing in SIMULINK 2024, Novembro
Anonim
Roomba com MATLAB
Roomba com MATLAB

Este projeto faz uso do MATLAB e de um robô programável iRobot Create2. Ao colocar nosso conhecimento do MATLAB à prova, somos capazes de programar o Create2 para interpretar imagens e detectar sinais. A funcionalidade do robô depende principalmente do aplicativo móvel MATLAB e de um módulo de câmera Raspberry Pi.

Etapa 1: peças e materiais

Peças e Materiais
Peças e Materiais
Peças e Materiais
Peças e Materiais
Peças e Materiais
Peças e Materiais
Peças e Materiais
Peças e Materiais

1. iRobot Create, Versão 2

- Este é um robô programável que se parece com um Roomba. Esteja ciente de que este produto da iRobot não é um vácuo. Destina-se à programação personalizada pelo usuário.

2. MATLAB 2017a

- A maioria das versões mais antigas será compatível com o código que usamos abaixo. O MATLAB identificará um comando que não é compatível com a versão que você possui e sugerirá um comando de melhor ajuste.

3. Raspberry Pi 3 Modelo B, Versão 1.2

- Verifique se Raspberry Pi é compatível com o seu iRobot. Veja este link para obter mais assistência: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Este instrutivo assume que você está trabalhando com um Raspberry Pi pré-programado. Esteja ciente de que você precisará trabalhar com um Pi pré-programado para que as etapas a seguir funcionem. Usar um Pi pré-programado permitirá que você execute toda a sua codificação somente no MATLAB.

4. Módulo de câmera V2 (para Raspberry Pi)

- Você pode se surpreender; apesar de seu tamanho, o Módulo de Câmera Raspberry Pi é de muito boa qualidade. É a opção mais barata e compatível para este projeto.

Opcional: suporte impresso em 3D. Isso é usado para estabilizar a câmera. Não afeta a funcionalidade do robô, mas ajudará na sua codificação se desejar usar dados de imagem para reconhecimento de cor e / ou objeto.

Etapa 2: Configuração

Configuração
Configuração
Configuração
Configuração

1. Conectando o Raspberry Pi e o módulo da câmera (Hardware)

- Para ligar o Raspberry Pi, você precisará conectar um micro USB terminal macho à porta de alimentação fêmea do microcontrolador. Opcional: Um regulador de tensão pode ser usado para garantir que a tensão não exceda 5V. Depois de ligar o Raspberry Pi, você pode conectá-lo ao seu robô executando um terminal USB a da placa-mãe para a porta USB A no microcontrolador.

- Depois de conectar o Pi ao Roomba, a câmera está pronta para ser instalada. O Módulo da Câmera será muito menor do que o esperado. Observe que a lente é montada em um sensor e uma fita branca se estende da câmera. NÃO remova ou rasgue a fita! Este é o cabo de que você precisa para conectá-lo ao Raspberry Pi. Primeiro, segure a ponta da fita e encontre os conectores prateados e o cabo azul. Eles estão em lados opostos. Em seguida, encontre o slot entre as portas Ethernet e HDMI em seu Raspberry Pi. Observe que há um pequeno cadeado branco cobrindo-o. Levante lentamente a trava, mas não a remova do slot, pois ela se soltará e ficará permanentemente danificada. Depois de levantar a trava, agarre a fita e vire os conectores prateados para a porta HDMI. O lado azul ficará de frente para a porta Ethernet. Deslize lentamente a fita no slot enquanto ela ainda está destravada. Você não precisa forçá-lo no slot. Após a inserção, empurre a trava de volta para baixo. Se sua câmera estiver devidamente presa, você poderá puxar (suavemente) a fita e sentir a tensão. A fita não deve estar solta. Depois de conectar sua câmera ao Pi, você pode notar como ela está solta. É por isso que usamos um suporte impresso em 3D para estabilizá-lo. É sua escolha determinar quais materiais você gostaria de usar para manter sua câmera imóvel para imagens de alta qualidade.

2. Instalação dos arquivos adequados e conexão do Roomba ao computador Depois que todo o hardware estiver configurado, você pode prosseguir com a instalação do MATLAB junto com os arquivos m associados que permitem a comunicação com o robô. Para fazer isso, abra o MATLAB e crie uma nova pasta para manter todos os arquivos relacionados juntos. Use este script para instalar / atualizar os arquivos necessários:

- Todos os arquivos agora devem aparecer na pasta criada. Clique com o botão direito na janela Pasta atual e selecione ‘Adicionar ao caminho’ para adicionar esse caminho à lista de diretórios onde o MATLAB procura por arquivos. Certifique-se de que todos os seus arquivos estejam no caminho correto.

3. Assim que os arquivos estiverem instalados, você pode começar a se conectar ao seu robô. Comece ligando o seu robô e, em seguida, reinicialize-o diretamente após a inicialização (não se esqueça de reinicializar o robô todas as vezes antes e depois do uso). Em segundo lugar, conecte seu robô e laptop à mesma rede wi-fi. Depois disso, falaremos com o Raspberry Pi pré-programado via MATLAB chamando o Roomba usando seu nome e a função roomba. Por exemplo, eu conectaria ao robô 28 usando a seguinte linha: R = roomba (28).

- Observe como atribuí o objeto a uma variável R. Agora posso acessar as funções associadas do Roomba a partir do arquivo de instalação, tratando a variável R como uma estrutura.

- R.turnAngle (90) Se tudo correr bem, deve tocar um tom musical, confirmando a conexão.

Etapa 3: Lógica MATLAB

O documento PDF na parte inferior desta etapa é um fluxograma lógico detalhado para nosso processo de codificação no MATLAB. Ativamos os sensores de penhasco, luz e colisão de luz para permitir que o robô se comunique conosco ao detectar um objeto em sua vizinhança imediata. Por exemplo, quando o robô se move para frente, seus sensores de luz procuram objetos em seu caminho de acordo com o vetor no qual está viajando. Escolhemos um limite de distância para o robô de forma que, quando ele se aproximar de um objeto, ele reverta em vez de colidir com ele. Nosso robô também é configurado com Twitter, que especificamos em nosso processo de codificação (isso será mostrado abaixo).

Para aprimorar a experiência, utilizamos o aplicativo MATLAB em nossos dispositivos móveis para que possamos controlar os movimentos do robô apenas inclinando nossos telefones. Esta é uma atividade opcional, já que você certamente pode fazer o robô se mover usando o comando moveDistance no segmento de código MATLAB. Lembre-se de que usar comandos do MATLAB para controlar seu robô é preferível se seu objetivo for ser preciso. Se você deseja apontar seu robô para que a câmera tire uma foto em um local específico, pode ser melhor codificar os movimentos do robô no MATLAB. Embora seja divertido, usar o aplicativo MATLAB para controlar seu robô não é desejável para precisão.

O código comanda o Roomba a realizar uma configuração básica e, em seguida, continuar em um loop contínuo. Inicialmente, o laptop estabelecerá um link com o Roomba usando o comando Roomba (). Ele também configura a conexão do Twitter usando o comando webwrite () no MATLAB. O loop contém cinco fluxos lógicos principais, dependendo do ambiente ao redor do Roomba. Primeiro, o Roomba verifica se há obstáculos e se ajusta para trás se descobrir que há obstáculos. Embutido nesse loop está o segundo caminho que alerta os usuários se o Roomba estiver sendo carregado. Um utilitário importante na dura zona de guerra marciana. Depois que o Roomba determina que sua posição é segura, ele olha para o dispositivo móvel para determinar seu próximo movimento. Se o dispositivo móvel estiver inclinado para a frente, ele calculará uma velocidade base dependendo da gravidade da medição do rolo e, em seguida, ajustará as velocidades das rodas individuais para girar com base no grau de inclinação. O telefone também pode mover o Roomba ao contrário. Um estado de dispositivo móvel neutro bloqueia os dois caminhos finais. Um Roomba em repouso procurará uma bandeira Alien e alertará o usuário de acordo.

Abaixo está nosso código (concluído em MATLAB 2017a)

% de entradas: dados de orientação de um dispositivo conectado por wi-fi, câmera

% informações, dados do sensor

% de saídas: o movimento é controlado pelo dispositivo wi-fi conectado e o movimento

% é verificada a segurança pela leitura dos dados do sensor. Se a câmera detectar

% uma bandeira estrangeira, em seguida, o roomba responde tweetando a bandeira inimiga

% foi localizado.

% propósito: nosso dispositivo vive sem nenhum propósito, exceto para proteger aqueles que

% o criou, serve ao seu criador e faz

% exatamente o que é dito.

% Uso: essencialmente, o programa será executado por conta própria.

limpar tudo, fechar tudo, clc

% Inicializando objetos e variáveis

r = roomba (28);

m = mobiledev;

% use resposta = webwrite (nome do host, dados)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop está operacional… Aguardando comando';

data = strcat ('api_key =', API, '& status =', tweet);

resposta = webwrite (nome do host, dados);

% constantemente executando o loop

enquanto 1 == 1

% Estruturas contendo dados relevantes

o = m.orientação; % orientação do dispositivo móvel

luz = r.getLightBumpers (); % Valores de pára-choques leves

a = r.getCliffSensors (); % CLiff Valores do Sensor

bump = r.getBumpers (); % Sensores de pára-choques

% verificar bumpers

if bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

% verificar sensores de luz

elseif luz.esquerda> 60 || light.leftFront> 60 || light.leftCenter> 60 || luz.direita> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

% verificar sensores de penhasco

% Sinal Anti-Roubo e notificação

elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop foi levantado!'

data = strcat ('api_key =', API, '& status =', tweet);

resposta = webwrite (nome do host, dados);

% Operação normal de prevenção de penhascos

elseif a.left <300 || a.right <300 || a.leftFront <300 || a.rightFront <300

r.moveDistance (-. 2,.2);

% Roomba passou nas verificações e agora funcionará normalmente.

% Inicialmente, a rotação do dispositivo é medida e se torna uma base

% de velocidade que é então usada para calcular a velocidade da roda

%Movimento para a frente

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60) * (o (3) -60);

se o (2)> = - 70 && o (2) <0

r.setDriveVelocity (baseVel + (. 3/50) * abs (o (2)), baseVel - (. 3/50) * abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel - (. 3/50) * abs (o (2)), baseVel + (. 3/50) * abs (o (2)));

else r.stop

fim

% Movimento para trás

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

% resting roomba irá procurar a bandeira alienígena marcada como fluorescente

% pedaço de papel verde

outro

r.stop

img = r.getImage (); % tirar imagem

limiar = graythresh (img (200: 383,:, 2)) +. 1; % calc green level

se limite> 0,42

tweet = 'Inimigo avistado !!'

data = strcat ('api_key =', API, '& status =', tweet);

resposta = webwrite (nome do host, dados);

outro

r.stop

fim

fim

fim

Etapa 4: Conclusão

Lembre-se de que você pode usar o script que escrevemos acima, mas pode sempre alterá-lo para atender às suas necessidades. Não precisa ser controlado pelo seu telefone! (No entanto, torna-o mais divertido.) Escolha qual método você prefere usar para controlar seu robô. Dirija com seu robô e divirta-se!

Recomendado: