Índice:

Localino rastreia Roomba IRobot, mapeia o ambiente e permite o controle .: 4 etapas
Localino rastreia Roomba IRobot, mapeia o ambiente e permite o controle .: 4 etapas

Vídeo: Localino rastreia Roomba IRobot, mapeia o ambiente e permite o controle .: 4 etapas

Vídeo: Localino rastreia Roomba IRobot, mapeia o ambiente e permite o controle .: 4 etapas
Vídeo: Os melhores robôs aspiradores para comprar em 2023 2024, Julho
Anonim
Image
Image

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: