Índice:

EyeRobot - a bengala robótica: 10 etapas (com imagens)
EyeRobot - a bengala robótica: 10 etapas (com imagens)

Vídeo: EyeRobot - a bengala robótica: 10 etapas (com imagens)

Vídeo: EyeRobot - a bengala robótica: 10 etapas (com imagens)
Vídeo: Top 10 AI Robots In 2023 | Advanced AI Robots in the World | Artificial Intelligence | Simplilearn 2024, Julho
Anonim
EyeRobot - a bengala robótica branca
EyeRobot - a bengala robótica branca

Resumo: Usando o iRobot Roomba Create, criei um protótipo de um dispositivo chamado eyeRobot. Ele guiará usuários cegos e deficientes visuais por ambientes desordenados e povoados usando o Roomba como base para casar a simplicidade da tradicional bengala branca com os instintos de um cão-guia. O usuário indica o movimento desejado empurrando e girando intuitivamente a alça. O robô pega essas informações e encontra um caminho claro por um corredor ou através de uma sala, usando o sonar para orientar o usuário em uma direção adequada em torno de obstáculos estáticos e dinâmicos. O usuário então segue atrás do robô enquanto ele o guia na direção desejada pela força perceptível sentida através da alça. Esta opção robótica requer pouco treinamento: empurre para ir, puxe para parar, gire para girar. A clarividência que os telêmetros fornecem é semelhante à de um cão guia e é uma vantagem considerável sobre as constantes tentativas e erros que marcam o uso da bengala branca. No entanto, o eyeRobot ainda oferece uma alternativa muito mais barata do que os cães-guia, que custam mais de US $ 12.000 e são úteis por apenas 5 anos, enquanto o protótipo foi construído por menos de US $ 400. Também é uma máquina relativamente simples, exigindo alguns sensores baratos, vários potenciômetros, algum hardware e, claro, um Roomba Create.

Etapa 1: demonstração de vídeo

Demonstração de Vídeo
Demonstração de Vídeo

Versão de alta qualidade

Etapa 2: Visão geral da operação

Visão Geral da Operação
Visão Geral da Operação

Controle do usuário: A operação do eyeRobot foi projetada para ser o mais intuitiva possível para reduzir ou eliminar significativamente o treinamento. Para iniciar o movimento, o usuário simplesmente precisa começar a andar para frente, um sensor linear na base do manche irá captar esse movimento e começar a mover o robô para frente. Usando este sensor linear, o robô pode então combinar sua velocidade com a velocidade desejada do usuário. eyeRobot se moverá tão rápido quanto o usuário quiser. Para indicar que uma curva é desejada, o usuário simplesmente precisa girar a manivela e, se uma curva for possível, o robô responderá de acordo.

Navegação do robô: ao viajar em um espaço aberto, eyeRobot tentará manter um caminho reto, detectando qualquer obstáculo que possa impedir o usuário e guiando-o ao redor desse objeto e de volta ao caminho original. Na prática, o usuário pode seguir naturalmente atrás do robô com pouco pensamento consciente. Para navegar por um corredor, o usuário deve tentar empurrar o robô em uma das paredes de cada lado, ao adquirir uma parede o robô começará a segui-lo, guiando o usuário no corredor. Quando uma interseção é alcançada, o usuário sentirá o robô começar a virar e poderá escolher, girando a manivela, se deseja virar para baixo no novo desdobramento ou continuar em um caminho reto. Desta forma, o robô é muito parecido com a bengala branca, o usuário pode sentir o ambiente com o robô e usar essas informações para navegação global.

Etapa 3: Sensores de alcance

Sensores de alcance
Sensores de alcance

Ultrassônico: O eyeRobot possui 4 telêmetros ultrassônicos (MaxSonar EZ1). Os sensores ultrassônicos são posicionados em um arco na frente do robô para fornecer informações sobre os objetos na frente e nas laterais do robô. Eles informam o robô sobre o alcance do objeto e o ajudam a encontrar uma rota aberta ao redor desse objeto e de volta ao seu caminho original.

Telêmetros infravermelhos: O eyeRobot também carrega dois sensores infravermelhos (GP2Y0A02YK). Os telêmetros IR são posicionados voltados 90 graus para a direita e esquerda para ajudar o robô a seguir a parede. Eles também podem alertar o robô sobre objetos muito próximos de seus lados e que o usuário pode entrar.

Etapa 4: Sensores de posição de cana

Sensores de posição cana
Sensores de posição cana

Sensor Linear: para que o eyeRobot corresponda à velocidade do usuário, o eyeRobot detecta se o usuário está empurrando ou retardando seu movimento para frente. Isso é feito deslizando a base da cana ao longo de um trilho, pois um potenciômetro detecta a posição da cana. O eyeRobot usa essa entrada para regular a velocidade do robô. A ideia de o eyeRobot se adaptar à velocidade do usuário por meio de um sensor linear foi inspirada, na verdade, no cortador de grama da família. A base da cana é conectada a um bloco guia que se move ao longo de um trilho. Preso ao bloco-guia está um potenciômetro deslizante que lê a posição do bloco-guia e informa ao processador. Para permitir que o stick gire em relação ao robô, há uma haste que sobe por um bloco de madeira, formando um mancal giratório. Esse rolamento é então preso a uma dobradiça para permitir que o manche se ajuste à altura do usuário.

Sensor de torção: O sensor de torção permite que o usuário gire a alça para girar o robô. Um potenciômetro é preso à extremidade de uma haste de madeira e o botão é inserido e colado na parte superior do cabo. Os fios percorrem o pino e alimentam a informação de torção no processador.

Etapa 5: Processador

Processador
Processador

Processador: O robô é controlado por um Zbasic ZX-24a instalado em uma placa-mãe avançada Robodyssey II. O processador foi escolhido por sua velocidade, facilidade de uso, custo acessível e 8 entradas analógicas. Ele é conectado a uma grande placa de ensaio de prototipagem para permitir mudanças rápidas e fáceis. Toda a energia do robô vem da fonte de alimentação da placa-mãe. O Zbasic se comunica com o roomba através da porta do compartimento de carga e tem controle total sobre os sensores e motores do Roomba.

Etapa 6: Visão geral do código

Visão geral do código
Visão geral do código

Evitar obstáculos: para evitar obstáculos, o eyeRobot usa um método em que os objetos próximos ao robô exercem uma força virtual no robô, afastando-o do objeto. Em outras palavras, os objetos afastam o robô de si mesmos. Na minha implementação, a força virtual exercida por um objeto é inversamente proporcional à distância ao quadrado, então a força do impulso aumenta conforme o objeto se aproxima e cria uma curva de resposta não linear: PushForce = ResponseMagnitudeConstant / Distance2Os impulsos vindos de cada sensor são somados; os sensores do lado esquerdo empurram para a direita e vice-versa, para obter um vetor para a viagem do robô. As velocidades das rodas são então alteradas para que o robô gire em direção a esse vetor. Para garantir que os objetos mortos na frente do robô não exibam uma "sem resposta" (porque as forças em ambos os lados se equilibram), os objetos na frente morta empurram o robô para o lado mais aberto. Quando o robô passa pelo objeto, ele usa os codificadores do Roomba para corrigir a alteração e voltar ao vetor original.

Seguimento de parede: O princípio de seguimento de parede é manter uma distância desejada e um ângulo paralelo a uma parede. Os problemas surgem quando o robô é girado em relação à parede porque o único sensor produz leituras de alcance inúteis. As leituras de alcance são efetuadas tanto pelo ângulo do robô em relação à parede quanto pela distância real à parede. Para determinar o ângulo e assim eliminar esta variável, o robô deve ter dois pontos de referência que possam ser comparados para obter o ângulo do robô. Como o eyeRobot tem apenas um lado voltado para o telêmetro infravermelho, para atingir esses dois pontos, ele deve comparar a distância do telêmetro ao longo do tempo, conforme o robô se move. Ele então determina seu ângulo a partir da diferença entre as duas leituras conforme o robô se move ao longo da parede. Em seguida, usa essas informações para corrigir o posicionamento incorreto. O robô entra no modo parede seguindo sempre que tem uma parede ao lado dele por um determinado período de tempo e sai sempre que houver um obstáculo em seu caminho, que o empurre para fora de seu curso, ou se o usuário usar a alça de torção para trazer o robô longe da parede.

Etapa 7: Lista de peças

Lista de Peças
Lista de Peças

Peças necessárias: 1x) Roomba create1x) Folha grande de acrílico 2x) Sharp GP2Y0A02YK IR rangefinder4x) rangefinders ultrassônicos Maxsonar EZ11x) Microprocessador ZX-24a1x) Placa-mãe avançada Robodyssey II1x) Potenciômetro deslizante1x) Potenciômetro ultrassônico Maxsonar EZ11x) Microprocessador ZX-24a1x) Placa-mãe avançada Robodyssey II1x) Potenciômetro deslizante1x) Potenciômetro sem soldador de volta única1x) Rolamento linear sem soldador1x) Pão linear) Dobradiças, buchas, parafusos, porcas, suportes e fios

Etapa 8: Motivação e Melhoria

Motivação e Melhoria
Motivação e Melhoria

Motivação: Este robô foi projetado para preencher a lacuna óbvia entre o cão-guia capaz, mas caro, e a bengala branca barata, mas limitada. No desenvolvimento de um Robotic White Cane comercializável e mais capaz, o Roomba Create foi o veículo perfeito para projetar um protótipo rápido para ver se o conceito funcionava. Além disso, os prêmios forneceriam suporte econômico para as despesas consideráveis de construção de um robô mais capaz.

Melhoria: A quantidade que aprendi construindo este robô foi substancial e aqui tentarei expor o que aprendi enquanto tento construir um robô de segunda geração: 1) Evitar Obstáculos - Aprendi muito sobre obstáculos em tempo real evasão. No processo de construção deste robô, passei por dois códigos de evitação de obstáculos completamente diferentes, começando com a ideia de força do objeto original, passando para o princípio de encontrar e buscar o vetor mais aberto e, em seguida, voltando para a ideia de força do objeto com a compreensão fundamental de que a resposta do objeto deve ser não linear. No futuro, corrigirei meu erro de não fazer nenhuma pesquisa online de métodos usados anteriormente antes de embarcar em meu projeto, pois agora estou aprendendo que uma rápida pesquisa no Google teria rendido vários artigos excelentes sobre o assunto.2) Design do stick sensores - No início deste projeto, pensei que minha única opção para um sensor linear era usar um pote deslizante e algum tipo de rolamento linear. Agora percebo que uma opção muito mais simples teria sido simplesmente anexar a parte superior da haste a um joystick, de forma que empurrar o manche para frente também empurraria o joystick para frente. Além disso, uma junta universal simples permitiria que a torção do manche se traduzisse no eixo de torção de muitos joysticks modernos. Esta implementação teria sido muito mais simples do que a que uso atualmente.3) Rodas giratórias livres - Embora isso fosse impossível com o Roomba, agora parece óbvio que um robô com rodas giratórias livres seria ideal para essa tarefa. Um robô que rola passivamente não exigiria motores e uma bateria menor e, portanto, seria mais leve. Além disso, este sistema não requer nenhum sensor linear para detectar o impulso do usuário, o robô simplesmente rolaria na velocidade do usuário. O robô poderia ser girado ao dirigir as rodas como um carro e, se o usuário precisasse ser parado, os freios poderiam ser adicionados. Para a próxima geração do eyeRobot, certamente usarei essa abordagem muito diferente.4) Dois sensores espaçados para acompanhamento de parede - Como discutido anteriormente, surgiram problemas ao tentar seguir a parede com apenas um sensor de face voltado para o lado, portanto, foi necessário mover o robô entre as leituras para alcançar diferentes pontos de referência. Dois sensores com uma distância entre eles simplificariam muito o acompanhamento da parede.5) Mais sensores - Embora isso custasse mais dinheiro, foi difícil tentar codificar este robô com tão poucas janelas do mundo fora do processador. Isso teria tornado o código de navegação muito mais poderoso com um conjunto de sonar mais completo (mas é claro que os sensores custam dinheiro, o que eu não tinha na época).

Etapa 9: Conclusão

Conclusão
Conclusão

Conclusão: O iRobot provou ser uma plataforma de prototipagem ideal para experimentar o conceito de uma Bengala Branca Robótica. A partir dos resultados desse protótipo, é evidente que um robô desse tipo é realmente viável. Espero desenvolver um robô de segunda geração com as lições que aprendi ao usar o Roomba Create. Em versões futuras do eyeRobot, imagino um dispositivo capaz de fazer mais do que apenas guiar uma pessoa por um corredor, mas sim um robô que pode ser colocado nas mãos de cegos para uso na vida cotidiana. Com este robô, o usuário simplesmente falaria seu destino e o robô os guiaria até lá sem esforço consciente do usuário. Este robô seria leve e compacto o suficiente para ser facilmente carregado escada acima e guardado em um armário. Este robô seria capaz de fazer navegação global além de local, podendo guiar o usuário do início ao destino sem o conhecimento ou experiência prévia do usuário. Esta capacidade iria muito além até mesmo do cão-guia, com GPS e sensores mais avançados permitindo aos cegos navegar livremente pelo mundo, Nathaniel Barshay, (apresentado por Stephen Barshay) (Agradecimentos especiais a Jack Hitt pelo Roomba Create)

Etapa 10: Construção e Código

Construção e Código
Construção e Código

Algumas palavras estranhas sobre construção: O deck é feito de um pedaço de acrílico cortado em um círculo com uma abertura na parte traseira para permitir o acesso dos eletrônicos, e é então aparafusado nos orifícios de montagem ao lado do compartimento de carga. A placa de prototipagem é aparafusada no orifício do parafuso na parte inferior do compartimento. O Zbasic é montado com um suporte em L com os mesmos parafusos do deck. Cada sonar é aparafusado em um pedaço de acrílico, que por sua vez é preso a um suporte em L preso ao convés (os suportes em L são dobrados 10 graus para trás para dar uma visão melhor). A trilha para o sensor linear é aparafusada diretamente no deck e o pote deslizante é montado com suportes em L ao lado dele. Uma descrição mais técnica da construção do sensor linear e da haste de controle pode ser encontrada na etapa 4.

Código: Anexei a versão completa do código dos robôs. Ao longo de uma hora, tentei limpá-lo das três ou quatro gerações de código que estavam no arquivo, deve ser fácil de seguir agora. Se você tiver o IDE ZBasic, ele deve ser fácil de visualizar, caso contrário, use o bloco de notas começando com o arquivo main.bas e passando pelos outros arquivos.bas.

Recomendado: