Índice:
Vídeo: Roomba com MATLAB: 4 etapas (com fotos)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
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
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
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:
Roomba controlado por MATLAB: 5 etapas
Roomba controlado por MATLAB: O objetivo deste projeto é utilizar o MATLAB, bem como um robô programável iRobot modificado. Nosso grupo combinou nossas habilidades de codificação para criar um script MATLAB que usa muitas funções do iRobot, incluindo os sensores de penhasco, sensores de pára-choques
Projeto Roomba MATLAB: 5 etapas
Projeto Roomba MATLAB: O plano atual que a NASA tem para o Mars rover é que ele seja um coletor de dados e vagueie ao redor de Marte, coletando amostras do solo para trazer de volta à Terra para que os cientistas possam ver se houve alguma forma de vida anterior em o planeta. Adicional
Inspetor Roomba: 6 etapas (com fotos)
Inspetor Roomba: A maioria de nós usa robôs iRobot Roomba apenas para aspirar, mas poucos sabem que é uma ótima base para novos projetos de robótica. Todos os fabricantes devem experimentar o Roomba Open Interface (OI) para descobrir como é fácil controlar este robô. Nesta instrução você w
ROOMBA conduzido por ARDUINO YUN Via Wifi App de STEFANO DALL'OLIO: 4 etapas (com fotos)
ROOMBA conduzido por ARDUINO YUN via Wifi App por STEFANO DALL'OLIO: Com este guia, compartilho o código para conectar ARDUINO YUN ao Roomba para conduzir o Roomba via Wifi. O código e o aplicativo foram totalmente criados e desenvolvidos por mim Stefano Dall ' Olio.My Roomba é Roomba 620, mas você pode usar o mesmo código para outro Roomb
Projeto Roomba: 5 etapas (com fotos)
Projeto Roomba: este instrutível foi criado em cumprimento ao requisito do projeto do Makecourse na University of South Florida (www.makecourse.com). Este instrutível cobrirá todas as etapas e componentes necessários para montar meu projeto Roomba