Índice:
Vídeo: Localino rastreia Roomba IRobot, mapeia o ambiente e permite o controle .: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
Para construir a ponte WiFi-UART, você pode verificar este repositório github:
Tem uma boa base para começar. Certifique-se de ler bem as diretrizes, porque o Roomba VCC durante o carregamento aumenta até 20 Volts! Se você adicionar um ESP8266 sem um conversor de buck adequado que funciona até 20 V e converte para 3,3 V, você danificará seu ESP.
Certifique-se também de usar um deslocador de nível (por exemplo, usando um divisor de tensão) para mudar os níveis lógicos UART de 5 V do Roomba para 3,3 V, que são usados pelo ESP.
Outro detalhe importante é que o conversor buck deve ter 300mA, mas não muito menos ou muito mais (dependendo do próprio conversor buck). Existem alguns que podem gerar muito mais corrente, mas podem causar o travamento do Roomba porque consomem muita corrente durante a inicialização. Descobrimos que o Regulador Abaixador de Tensão Pololu 3,3V, 300mA (D24V3F3) funciona perfeitamente. As versões alternativas com 500mA / 600mA causaram o travamento da interface UART do Roomba. Basicamente, o Roomba estava reagindo ao pressionar o botão, mas não aos comandos via interface UART. Uma vez que isso aconteceu, tivemos que remover a bateria do Roomba e reiniciá-lo a frio com a ponte WiFi-UART conectada. No entanto, apenas o D24V3F3 funcionou bem.
Além desse detalhe técnico, você deve adicionar comandos adicionais ao código, que você pode encontrar nas especificações de interface aberta do Roomba. Você precisará adicionar todos os comandos aos quais deseja que seu roomba reaja (por exemplo, para trás, para frente, velocidade, etc.).
exemplos dentro do IDE arduino:
void goForward () {char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (c); }
void goBackward () {char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (c); }
void spinLeft () {char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (c); }
void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (c); }
se você escrever em lua, parece um pouco diferente, um exemplo para uma curva à ESQUERDA seria assim:
if (_GET.pin == "LEFT") então imprime ('\ 137'); --VOR
tmr.delay (100);
imprimir ('\ 00'); - Velocidade = 200 = 0x00C8 -> 0 e 200
tmr.delay (100);
imprimir ('\ 200'); - velocidade
tmr.delay (100);
imprimir ('\ 254'); - Raio = 500 = 0x01F4 = 0x01 0xF4 = 1 244
tmr.delay (100);
imprimir ('\ 12'); -- Vez
fim
Certifique-se de corrigir a descrição da interface aberta para o seu Roomba. Existem pelo menos duas especificações de interface aberta disponíveis.
para a série Roomba 5xx:
para a série Roomba 6xx:
Depois de construir sua ponte WiFi-UART e testar os comandos, você deu um grande passo adiante. Este vídeo demonstra que o aplicativo e a abordagem funcionam. Estávamos um pouco preguiçosos, a interface da web está faltando todos os outros comandos de controle, como avançar, retroceder, velocidade, direita, esquerda e assim por diante, mas você pode emitir os comandos via http. De qualquer forma, é apenas uma demonstração de que o controle remoto do Roomba funciona com um hardware e software simples usando um ESP8266.
Agora, como você pode controlar seu Roomba remotamente de um aplicativo de PC, a única coisa que falta é a localização interna. Precisamos disso para fechar o ciclo de feedback, porque nosso objetivo era dirigir o robô para uma determinada direção. Vamos fazer isso.
Etapa 3: configure seu sistema de localização interna
Para fechar o ciclo de feedback, usamos um sistema de localização interna. Usamos Localino para isso. O sistema Localino consiste em "âncoras" e "tags". As âncoras são posicionadas em locais fixos dentro da sala e localizam a posição da etiqueta móvel (que é colocada no Roomba). O processamento da localização é feito em um aplicativo de PC. Isso é uma grande vantagem, porque você também pode controlar o Roomba a partir do mesmo PC! O código-fonte gratuito está disponível no site do Localino, é escrito em python e também há um fluxo em tempo real disponível que oferece as coordenadas XYZ da tag. O fluxo de dados está disponível por meio da rede UDP, mas você também pode adicionar MQTT ou qualquer outra coisa sofisticada que desejar. Se você conhece Python, existem muitas bibliotecas que o ajudam.
Neste vídeo, a localização do Roomba é demonstrada. Portanto, temos 4 âncoras configuradas na sala em locais fixos, que permitem o posicionamento 3D do Roomba. Em geral, exigiríamos apenas 3 âncoras, porque o Roomba provavelmente não se moverá no eixo Z, portanto, 2D seria suficiente. Mas, como as âncoras estão localizadas na altura dos plugues principais CA (que é aproximadamente 30 cm acima do solo), uma configuração 2D causaria pequenos erros de estimativa de posição. Portanto, decidimos ter 4 âncoras e localizar em 3D.
Agora que temos a posição do Roomba, nosso próximo passo é controlar o Roomba a partir do mesmo aplicativo. A ideia é usar a verdade fundamental e estimar um caminho de limpeza perfeito para o robô. Com o uso do Localino podemos fechar o ciclo de feedback e controlar o robô a partir do aplicativo de PC.
Observações de configuração
Posicione as âncoras Localino dentro da sala em diferentes posições x, y e três delas na mesma posição z. Posicione uma das quatro âncoras em uma altura diferente z por ambiente. Certifique-se de que haja uma boa cobertura da tag Localino, que será movida com o Roomba.
Todas as âncoras possuem um ID de âncora único, que é exibido no código de barras do Localino e pode ser lido com a ferramenta “configuração localino”.
Observe as posições em X, Y, Z e os IDs de âncora. Isso é necessário para o software do processador Localino e deve ser adaptado no arquivo “localino.ini” na pasta “LocalinoProcessor”
As âncoras devem apontar para cima ou para baixo em Z (quando a área XY estiver coberta), mas não na direção da área coberta. As âncoras também não devem ser cobertas por metal ou qualquer outro material que perturbe o sinal sem fio. Se isso não for possível, também deve haver um certo espaço de ar entre qualquer material e a âncora.
… Mais por vir.
Etapa 4: adaptar o software Python
Fique ligado. mais por vir.
Recomendado:
Mood Speaker - um poderoso alto-falante para música ambiente a ser tocada com base na temperatura ambiente: 9 etapas
Mood Speaker - um alto-falante poderoso para música ambiente a ser tocada com base na temperatura ambiente: Olá! Para meu projeto escolar no MCT Howest Kortrijk, fiz um Mood Speaker, que é um dispositivo de alto-falante Bluetooth inteligente com diferentes sensores, um LCD e WS2812b tira de LED incluída. O alto-falante reproduz música de fundo com base na temperatura, mas pode
Controle de gestos simples - controle seus brinquedos RC com o movimento de seu braço: 4 etapas (com imagens)
Controle de gestos simples - controle seus brinquedos RC com o movimento de seu braço: Bem-vindo ao meu 'ible' # 45. Um tempo atrás eu fiz uma versão RC totalmente funcional do BB8 usando peças de Lego Star Wars … https://www.instructables.com/id/Whats-Inside-My-R…Quando vi como era legal a banda de força feita por Sphero, pensei: " Ok, eu c
Controlador RGB Led Strip Bluetooth V3 + Sincronização de música + Controle de luz ambiente: 6 etapas (com imagens)
RGB Led Strip Bluetooth Controller V3 + Music Sync + Ambient Light Control: Este projeto usa arduino para controlar uma strip led RGB com seu telefone via bluetooth. Você pode mudar a cor, sincronizar as luzes com a música ou ajustá-las automaticamente para a iluminação ambiente
Controle de temperatura ambiente baseado em IOT: 5 etapas
Controle de temperatura ambiente baseado em IOT: Isso é instrutível no projeto de controle de temperatura ambiente baseado em IOT. Características: -1. LIGUE automaticamente a ventoinha acima da temperatura ambiente especificada.2. Desligue automaticamente o ventilador abaixo da temperatura ambiente especificada.3. Controle manual em qualquer ponto do tempo
Uma luz ambiente LED RGB com controle remoto: 3 etapas (com fotos)
Uma luz ambiente LED RGB com controle remoto: controle a cor de um poderoso feixe de luz LED com um controle remoto, armazene as cores e as recupere à vontade. Com isso, posso controlar a cor de uma luz brilhante em muitas cores diferentes usando as três cores fundamentais: vermelho, verde