Índice:
- Etapa 1: peças e materiais
- Etapa 2: arquivo de banco de dados do Roomba
- Etapa 3: Conectando ao Roomba
- Etapa 4: O Código
- Etapa 5: Conclusão
Vídeo: Roomba controlado por MATLAB: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
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, sensores de luz e a câmera. Usamos essas leituras de sensor e câmera como entradas, o que nos permite criar certas saídas que queremos usando funções de código MATLAB e loops. Também usamos o dispositivo móvel MATLAB e o giroscópio como uma forma de conectar-se ao iRobot e controlá-lo.
Etapa 1: peças e materiais
MATLAB 2018a
-A versão 2018 do MATLAB é a versão preferida, principalmente porque funciona melhor com o código que se conecta ao dispositivo móvel. No entanto, a maior parte do nosso código pode ser interpretado na maioria das versões do MATLAB.
iRobot Criar Dispositivo
-Este dispositivo é um dispositivo especial feito exclusivamente para programação e codificação. (Não é um vácuo real)
Raspberry Pi (com câmera)
- Esta é uma placa de computador barata que funciona como o cérebro do iRobot. Pode ser pequeno, mas é capaz de muitas coisas. A câmera é um complemento adicional. Ele também usa o framboesa pi para obter todas as suas funções e comandos. A câmera da foto acima está montada em um suporte impresso em 3D, criado pelos departamentos de Fundamentos de Engenharia da Universidade do Tennessee
Etapa 2: arquivo de banco de dados do Roomba
Há um arquivo principal de que você precisará para usar as funções e comandos adequados para seu roomba. Este arquivo é de onde você escreve o código e extrai funções para tornar a operação do seu roomba mais gerenciável.
Você pode baixar o arquivo neste link ou o arquivo para download abaixo
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Etapa 3: Conectando ao Roomba
Primeiro, você deve se certificar de que o seu robô está conectado à placa do raspberry pi usando um plugue micro USB. Então você precisa conectar corretamente seu computador e robô ao mesmo WiFi. Depois de fazer isso, você pode ligar o robô e conectar-se a ele usando o comando fornecido no arquivo de banco de dados do robô. (Sempre reinicie o robô antes e depois de usá-lo). Por exemplo, usamos o comando "r.roomba (19)" para conectar ao nosso robô, atribuindo a variável r ao nosso dispositivo. Isso se refere ao arquivo de banco de dados, que configura nossa variável como uma estrutura que podemos referenciar a qualquer momento.
Etapa 4: O Código
Anexamos o código completo abaixo, mas aqui está uma breve visão geral que destaca os elementos importantes em nosso script. Utilizamos todos os sensores, bem como a câmera, para maximizar totalmente o potencial do nosso robô. Também incluímos um código que nos permitiu conectar um dispositivo móvel ao nosso robô e usar seu grioscópio para controlá-lo manualmente.
Começamos com o comando simples "r.setDriveVelocity (.06)" que define a velocidade de avanço do robô para 0,06 m / s. Isso é apenas para fazer o robô se mover de antemão
Em seguida, nosso script principal é iniciado com um loop while que recupera os dados do robô fornecido, criando estruturas que podemos fazer referência e usar nas declarações condicionais abaixo, permitindo-nos dizer ao robô para executar um determinado comando com base nos dados da estrutura o robô lê com seus sensores. Nós o configuramos de forma que o robô leia seus sensores de penhasco e siga um caminho escuro
while true% while loop vai até que algo "falso" ocorra (neste caso, ele continua infinitamente) data = r.getCliffSensors; data2 = r.getBumpers;% recupera dados continuamente sobre os valores do sensor de penhasco e os atribui a uma variável% img = r.getImage; % Tira uma foto da câmera montada% imagem (img); % Mostra a imagem que foi tirada% red_mean = mean (mean (img (:,:, 1)));% Obtém o valor médio da cor verde se data.rightFront <2000 r.turnAngle (-2); % gira o Roomba aproximadamente 0,2 grau CW quando o valor para os sensores de penhasco frontal direito cair abaixo de 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % diz ao Roomba para continuar avançando a aproximadamente 0,2 m / s se ambos os valores dos sensores dianteiro direito e esquerdo caírem abaixo de 2000% r.turnAngle (0); % diz ao Roomba para não virar se as condições acima mencionadas forem verdadeiras
elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (0,05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (0,05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (0,05);
Após este loop while, entramos em outro loop while que aciona os dados obtidos através da câmera. E usamos uma instrução if dentro desse loop while que reconhece uma imagem usando um programa específico (alexnet) e, uma vez que identifica a imagem, aciona imediatamente o controle remoto do dispositivo móvel
anet = alexnet; % Atribui o aprendizado profundo do alexnet a uma variável while true% Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); rótulo = classificar (anet, img); if label == "toalha de papel" || label == "refrigerador" label = "água"; imagem final (img); título (char (rótulo)); drawnow;
O loop while que nos permite controlar o dispositivo com nosso telefone recupera os dados do giroscópio do telefone e o conectamos a uma matriz que envia dados continuamente de volta ao MATLAB no computador. Usamos uma instrução if que lê os dados da matriz e fornece uma saída que move o dispositivo com base em certos valores do giroscópio do telefone. É importante saber que usamos os sensores de orientação do dispositivo móvel. A matriz um por três mencionada acima é categorizada por cada elemento dos sensores de orientação do telefone, que é azimute, inclinação e lado. As declarações if criaram condições que declararam quando o lado excede os valores 50 ou cai abaixo de -50, então o robô se move uma certa distância para frente (50 positivos) ou para trás (50 negativos). E o mesmo vale para o valor do pitch. Se o valor da inclinação ultrapassar o valor de 25 ou cair abaixo de -25, o robô girará em um ângulo de 1 grau (25 positivo) ou 1 grau negativo (25 negativo)
while true pause (.1)% Pausa de.5 segundos antes de cada valor ser obtido Controller = iphone. Orientation; % Atribui a matriz dos valores da orientação do iPhone a uma variável Azimutal = Controlador (1); % Atribui o primeiro valor da matriz a uma variável Pitch = Controller (2); % Atribui o segundo valor da matriz a uma variável (inclinação para frente e para trás quando o iPhone é segurado de lado) Lado = Controlador (3); % Atribui o terceiro valor da matriz a uma variável (inclinação para a esquerda e para a direita quando o iPhone é segurado de lado)% Causa uma saída com base na orientação do telefone se Lado> 130 || Side 25 r.moveDistance (-. 1)% Move o Roomba para trás aproximadamente 0,1 metros se o iPhone estiver inclinado para trás pelo menos 25 graus elseif Side 25 r.turnAngle (-1)% Gira o Roomba aproximadamente 1 grau CCW se o iPhone é inclinado para a esquerda em pelo menos 25 graus elseif Pitch <-25 r.turnAngle (1)% Gira o Roomba aproximadamente 1 grau CW se o iPhone estiver inclinado pelo menos 25 graus no final
Esses são apenas os destaques das principais partes do nosso código, que incluímos se você precisar copiar e colar rapidamente uma seção para seu benefício. No entanto, todo o nosso código está anexado abaixo, se necessário
Etapa 5: Conclusão
Este código que escrevemos é projetado especificamente para nosso robô, bem como para nossa visão geral do projeto. Nosso objetivo era usar todas as nossas habilidades de codificação do MATLAB para criar um script de design adequado que utilizasse a maioria dos recursos do robô. Usar o controlador de telefone não é tão difícil quanto você pode pensar e esperamos que nosso código possa ajudá-lo a entender melhor o conceito por trás da codificação de um iRobot.
Recomendado:
Sistema de irrigação controlado por WiFi 'inteligente' alimentado por energia solar: 6 etapas (com fotos)
Sistema de irrigação controlado por Wi-Fi 'inteligente' alimentado por energia solar: este projeto usa peças solares DIY e 12v padrão do ebay, juntamente com dispositivos Shelly IoT e alguma programação básica em openHAB para criar uma rede elétrica de jardim e irrigação inteligente totalmente movida a energia solar setup.System Highlights: Fu
Faixas de luz LED com desvanecimento controlado por sensor e alimentadas por Arduino: 6 etapas (com imagens)
Faixas de luz LED com desvanecimento controlado por sensor e alimentadas por Arduino: Recentemente, atualizei minha cozinha e sabia que a iluminação iria "melhorar" a aparência dos armários. Eu optei por ‘True Handless’ então tenho um espaço sob a superfície de trabalho, bem como um kickboard, debaixo do armário e na parte superior dos armários disponíveis e
Microcontrolador controlado MATLAB (Arduino MKR1000): 4 etapas
Microcontrolador controlado MATLAB (Arduino MKR1000): O objetivo de nosso projeto era utilizar o MATLAB e também o Arduino MKR1000 com o melhor de nossa capacidade. Nosso objetivo era criar um script que permitisse que certos recursos do arduino executassem uma determinada saída com base em uma entrada específica. Usamos muitos
Robô Roomba controlado por navegador com o Raspberry Pi Model 3 A +: 6 etapas (com imagens)
Robô Roomba controlado por navegador com o Raspberry Pi Model 3 A +: OverviewThis Instructable incidirá sobre como dar a um Roomba morto um novo cérebro (Raspberry Pi), olhos (webcam) e uma maneira de controlar tudo a partir de um navegador da web. Existem muitos hacks do Roomba que permitem o controle por meio da interface serial. Eu não tenho
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