Índice:

Hawking Bot: 5 etapas
Hawking Bot: 5 etapas

Vídeo: Hawking Bot: 5 etapas

Vídeo: Hawking Bot: 5 etapas
Vídeo: Stephen Hawking's Famous Speech. 2024, Julho
Anonim
Image
Image
Construa seu Hawking Bot
Construa seu Hawking Bot

O Hawking Bot é um projeto Lego MINDSTORMS EV3 inspirado no falecido Stephen Hawking. Stephen Hawking tinha um bom senso de humor, então tenho certeza de que ele teria aprovado este projeto. O Hawking Bot pode navegar ao redor de obstáculos e responder a movimentos e, em seguida, profere uma das famosas frases de efeito de Stephen Hawking e se move na direção do objeto em movimento. Ele usa o sensor ultrassônico que faz a varredura do ambiente com um movimento de varredura da cabeça.

Etapa 1: construir seu Hawking Bot

Todas as peças necessárias estão no conjunto básico EV3 Lego MINDSTORMS, com exceção do sensor ultrassônico (seus olhos), que deve ser adquirido separadamente.

Passo 2:

Imagem
Imagem

O código para o Hawking Bot é todo escrito em python 3. Um arquivo de imagem inicializável para executar python em um ambiente Debian Linux no Hawking Bot pode ser baixado do site ev3dev. O código para executar o Hawking Bot pode ser baixado aqui. Todo o código está contido em um arquivo de classe para que você possa usar os métodos existentes ou até mesmo modificá-los, se desejar.

Assista a este vídeo com instruções detalhadas sobre como configurar o Debian Linux e Python3 em seu robô. Embora seja especificamente para uma configuração de Mac, ainda será útil para obter uma compreensão geral do processo. Esse trabalho está em andamento. O sensor ultrassônico às vezes não é confiável e isso requer um código mais inteligente para detectar 'outliers'. Eu gostaria de ver contribuições de outras pessoas para tornar o código mais eficiente e menos sujeito a erros.

Etapa 3: faça seus próprios sons Hawking

OK, agora você quer algumas citações famosas ou apenas algumas declarações simples do Prof Hawking. Existem toneladas de vídeos onde você pode ouvi-lo falar e, em seguida, há suas palestras que são um tesouro de sabedoria e frases de efeito úteis.

Você precisa de um programa como o Audacity, que funciona em muitas plataformas para selecionar e cortar suas frases de efeito favoritas.

Salve sua frase de efeito como um arquivo wav mono como SH6, SH7,… SH11, SH12 e assim por diante.

Abaixo você encontra alguns exemplos que criei de acordo com o método acima.

Etapa 4: dicas e truques

Dicas e truques
Dicas e truques
Dicas e truques
Dicas e truques

O Hawking Bot vem com um módulo de autoverificação para garantir que todos os cabos estejam conectados e que a bateria seja suficiente. Conexões soltas, ausentes ou mesmo danificadas podem ocorrer facilmente. Portanto, este módulo é muito útil. O método 'checkConnection' verifica apenas se há uma conexão elétrica. Você ainda deve garantir que os motores estejam conectados à porta correta.

O movimento da cabeça deslizante é essencial para o Hawking Bot examinar seu terreno e encontrar o caminho desobstruído mais longo à frente. Os cabos precisam de espaço suficiente para acomodar os movimentos da cabeça; portanto, é aconselhável amarrá-los como mostrado na fotografia.

O Hawking Bot funciona melhor com obstáculos grandes e em uma superfície plana e lisa. Os tapetes são mais desafiadores para os motores e pode ser necessário ajustar as configurações para ajustar o comportamento para diferentes superfícies.

O Hawking Bot não é de forma alguma perfeito e este é um protótipo que se beneficiará de novas melhorias. O código está totalmente comentado e deve ser fácil para você descobrir o que os vários métodos fazem. Vários bits foram comentados com #, se você remover o # antes de 'imprimir', o programa em execução mostrará as várias leituras e cálculos do sensor.

Etapa 5: sugestões de melhorias, atualizações e ideias para o futuro

Agora que você construiu seu robô com sucesso, você deseja levá-lo para o próximo nível. Você pode melhorar o método MotionDetector. Agora, com frequência, a leitura é errada. Você pode ver as leituras reais descomentando disA e disB (na parte inferior do bloco do método). A leitura errada geralmente se destaca de outras leituras, então você pode escrever um algoritmo para impedir o robô de responder a uma leitura errada.

Talvez você queira assumir o controle total do robô e apenas controlar remotamente suas várias funções. Você poderia fazer isso via Bluetooth e escrever um programa Android para se comunicar com o robô. No entanto, uma abordagem muito mais fácil seria encontrar um lugar para o sensor infravermelho assumir o controle do Hawking Bot.

Que tal fazer o robô aprender sobre seu ambiente? Isso poderia ser realizado com uma abordagem de k-vizinho mais próximo ou possivelmente uma rede neural. O bloco EV3 tem poder de processamento limitado, embora suporte Numpy. Uma alternativa seria um BrickPi que permitiria a você executar uma biblioteca de IA como o Tensorflow, mas a intenção deste guia era usar o kit Lego EV3 MINDSTORMS sem a necessidade de comprar muitas peças adicionais caras além do sensor ultrassônico.

No entanto, a abordagem de aprendizagem de reinfocamento de k-vizinhos mais próximos deve funcionar no bloco EV3 e este é o algoritmo sugerido. Deixo para você encontrar uma implementação funcional ou identificar quaisquer problemas:

Aprendizagem por reforço para Hawking Bot

A ideia é que as 7 leituras USS sejam codificadas em um vetor e os últimos 10 swoops da cabeça sejam usados para criar um vetor sequencial de 70 entradas. As primeiras leituras estão incompletas, portanto, serão preenchidas com zeros. Cada entrada contém o valor da distância do USS. Este é o vetor de estado s. O sistema permite 1000 entradas. Depois disso, a entrada mais antiga será substituída e as entradas de idade para cada par s-r serão reduzidas em um.

O bot não deve ficar a menos de 10 cm de um objeto. Isso cria uma recompensa negativa. Pela simplicidade; as boas ações são recompensadas com 1 e as ruins com 0. Efetivamente, isso cria uma probabilidade de recompensa para cada combinação de ação-estado. Usaremos recompensas com desconto e política gananciosa de epsilon.

Isso cria 3 grandes tabelas de estados de recompensa (s-r) para todas as três ações à direita, em frente e à esquerda - pode ser possível ter velocidades rápidas e lentas para cada ação. Teríamos então 6 ações e 6 tabelas s-r de pesquisa.

Cada vez que um novo estado é registrado, ele é comparado às tabelas, a distância euclidiana (ou medida semelhante) é usada para encontrar o vizinho mais próximo. Isso não será classificado, mas um limite t é definido para aceitar o estado como muito semelhante, sobrescrever o estado existente e atualizar para a recompensa mais alta e realizar a ação associada a. Se não for semelhante (d> t), insira um novo par s-r para cada ação a. Se houver empate entre as ações de para s-r (todas têm a mesma recompensa), escolha aleatoriamente, mas isso não é comum e pode ser omitido.

t terá que ser determinado experimentalmente, se t for muito pequeno estados semelhantes serão ignorados e cada estado será visto como único. Um t muito grande significa que mesmo estados bastante diferentes são agrupados, o que pode afetar a capacidade de escolher boas ações. Pode ser possível usar métodos estatísticos para determinar o melhor t.

A tabela é semelhante a esta: Entrada Não - Vetor de estado - recompensa pela ação 1 - recompensa pela ação 2 - recompensa pela ação 3.

Acho que a implementação real será complicada, mas deve ser feita com esforço. Boa sorte!

Recomendado: