MIRO - uma plataforma de robô indoor aberta

Quero falar sobre meu trabalho e nosso projeto coletivo de animais de estimação - um robô móvel interno baseado em várias placas de microprocessadores ARDUINO (ATMEGA328 - como você vê melhor), ESP8266 e Raspberry Pi. Meus amigos e eu o chamamos de MIRO - do "Mobile Intelligent RObot".

imagem

Índice: Parte 1 , Parte 2 , Parte 3 , Parte 4 , Parte 5 .

Sou o chefe do Centro de Treinamento e Pesquisa em Robótica da Pacific State University e, ao mesmo tempo, nosso pequeno espaço de hackers local EastMaker. Nosso centro universitário existe pelo quinto ano. Formalmente, somos uma unidade estrutural da universidade que possui dois vetores principais de atividades (inesperadamente): acadêmica e científica. Até agora, a atividade científica está principalmente relacionada aos sistemas de bagagem disponíveis - sistemas de navegação e comunicação para robótica subaquática. Mesmo antes do surgimento de nosso centro, o Laboratório de Tecnologias e Sistemas Inteligentes (LITiS) existia no Departamento de Engenharia de Computação, um laboratório conjunto com o Instituto de Problemas de Tecnologia Marinha, Filial do Extremo Oriente da Academia Russa de Ciências. E ainda existe. Quando o centro foi criado, o chefe deste laboratório tornou-se seu supervisor científico e o Centro de Robótica tornou-se uma base de recursos para o LITiS.

O segundo componente da atividade é a educação. O processo educacional do Centro está sendo construído como parte das atividades do projeto de estudantes e alunos (envolvemos alunos em vários projetos). Estudantes de graduação e pós-graduação de quase todas as áreas técnicas estão trabalhando em projetos.

imagem

imagem

Nosso centro é interdepartamental, não vinculado a nenhum departamento. Projetos, pesquisa e desenvolvimento em nossa base técnica podem ser realizados por estudantes e funcionários de toda a universidade. Se ao menos houvesse um desejo e essa base fosse suficiente.

Junto com essa atividade, meus amigos e eu criamos uma escola particular de robótica e aplicamos conhecimentos de engenharia para crianças em Khabarovsk. E para atividades educacionais na escola e no Centro de Robótica, ficou quase imediatamente claro que era necessário algum tipo de curso de jovens lutadores, revelando o básico nas seguintes áreas:

  • noções básicas de tecnologia de microprocessador;
  • sensores simples (princípios de operação, características de uso);
  • fundamentos das tecnologias de processamento de materiais (fresagem, corte a laser, impressão 3D);
  • controle cenários e algoritmos simples do campo da robótica móvel.

Então me pareceu muito correto que o objeto deste curso fosse algum tipo de robô ARDUINO barato.

Começamos a olhar para o que está no mercado. E eles descobriram a seguinte estranheza. Havia realmente bons robôs e kits ARDUINO. Frequentemente bastante caro. Mas eles geralmente tinham duas grandes desvantagens:

  • o uso de um certo ferro "original" (geralmente o mesmo ARDUINO, mas na versão do autor, envolvendo a compra de placas exclusivamente de um fabricante);
  • falta de material educacional (isso geralmente é uma coisa interessante - as pessoas fazem excelentes kits e kits para educação, mas não se importam em liberar coisas básicas: manuais, lições, pastas de trabalho (se necessário)).

Então, quase quatro anos atrás, o MIRO apareceu. Mas apenas apareceu. Com o tempo, a lógica deste projeto mudou completamente.

Inicialmente, criamos um complexo educacional baseado em nosso robô. E não havia ESP e Raspberry Pi lá. Havia ARDUINO e um módulo bluetooth. Aqui está o primeiro carrinho:

imagem

Com este carrinho, sabíamos o que fazer com os alunos. Bem, mesmo no festival ROBOMECH que organizamos em Khabarovsk, eles montaram um pequeno jogo de futebol para os visitantes.

imagem

Depois de algum tempo, fizemos a segunda versão, que não era diferente em princípio, exceto pelo formulário e algumas melhorias no layout. Nesta fase, também abandonamos completamente a impressão 3D - todos os suportes e suportes eram feitos de duas folhas (acrílico e madeira compensada) por corte a laser.

imagem

Já tínhamos excelentes instruções ilustradas para a montagem do kit, algum tipo de programa educacional com manuais e pastas de trabalho, e treinamos ativamente crianças em idade escolar e estudantes, realizamos aulas de mestrado em dias abertos e férias na cidade.

Nessa época, o mercado foi inundado com diferentes decisões sobre esse tópico. E os recursos do ATMEGA328 em robótica real, mesmo para a educação, tornaram-se insignificantes demais. Em seguida, nasceu o novo conceito de robô interno MIRO, que é uma solução aberta para prototipagem rápida de robôs móveis internos e externos com um hardware suficientemente funcional que permite mergulhar no OpenCV e ROS e em todos os tipos de IOT.

Portanto, a essência do conceito MIRO de hoje.

Em primeiro lugar , o MIRO é um pequeno robô móvel com código aberto (até os componentes seriais e placas usados ​​usados ​​- se o fabricante não fornecer o código fonte, também não os temos), licenciado sob o CC Attribution Share Alike 4.0.

O corpo do robô é feito por impressão 3D e corte a laser. Após a primeira versão do robô, em um esforço para reduzir o custo, geralmente não queríamos usar a impressão 3D na tecnologia de produção. Mas, tendo sofrido com as chapas na segunda versão, abandonei completamente a idéia de reduzir custos em detrimento da qualidade e da funcionalidade. E hoje, o MIRO é 90% concluído com a impressão 3D. Muito mais confiável mecanicamente e agradável de usar. A única aspiração que apoiamos no processo de design de partes do corpo é a facilidade de impressão. Eu queria evitar suportes complicados e seções "tortas" - para que, mesmo em uma impressora 3D barata, obtivéssemos um bom resultado. Olhando para o futuro, direi que conseguimos isso - a impressão de controle sem modificações nos bens de consumo absolutos da ANET A6 confirmou isso.

O MIRO tem alguma modularidade.

imagem

O módulo do sensor frontal pode ser substituído facilmente sem a desmontagem do robô. Além disso, o design do robô foi projetado para que quase todos os componentes sejam facilmente acessíveis e facilmente substituíveis. Eles procuraram precisamente a conveniência da operação e modificação. Eu vou falar sobre isso um pouco mais tarde.

Em segundo lugar , o MIRO são ferramentas de software desenvolvidas:

  • API do robô para ATMEGA328 com uma biblioteca de comunicação com o Raspberry Pi (ainda em desenvolvimento) ou com um host via UART (mas está pronto).
  • Exemplos de lições e programas, desde rotações mais simples de motores até visão técnica, com a transmissão de um fluxo de vídeo ou resultados de processamento de vídeo para um host. Em um futuro próximo, faça vários exemplos no ROS.
  • Imagens Raspbian prontas com bibliotecas e software pré-instalados, máquinas virtuais VirtualBox também com software de desenvolvimento pré-instalado.

Além disso, escrevemos um mapa detalhado da produção do robô para que qualquer pessoa possa montá-lo em casa / em círculo / CMIT / universidade.

No momento, em testes beta, um site com a capacidade de publicar seus projetos para o MIRO. Até agora, apenas pequenos arquivos podem ser hospedados lá, mas, com o tempo, acho que vamos nos instalar.

Agora, haverá uma série de artigos sobre o MIRO, nos quais falarei mais detalhadamente, com todos os detalhes.

Francamente, o volume de materiais já é tal que é difícil para mim acompanhar a atualização dos repositórios no prazo (esse ainda não é o trabalho principal). Por esse motivo, pode haver erros e omissões nos materiais. Além disso, não tenho absolutamente nenhuma experiência no suporte a projetos de código-fonte aberto. Espero aprender tudo isso em breve.

Além disso, planeja traduzir todos os materiais para o inglês. Este é um grande trabalho separado para nós e ainda não tivemos tempo para fazê-lo.

Alguns dos materiais da série de artigos duplicarão minhas instruções dos repositórios, mas em alguns lugares serão mais detalhados.

Hoje, vamos revisar o hardware do robô.

O robô MIRO é baseado em três sistemas populares de microprocessadores:

  • ARDUINO (baseado no Atmel ATMEGA328, núcleo AVR)
  • ESP8266
  • Raspberry Pi (que versão não é importante no momento).

O robô MIRO é alimentado por uma bateria com uma tensão de alimentação nominal de 7,4V (Li-Ion 2S). Para obter os 5V exigidos pela maioria dos dispositivos de microprocessador do robô, é usado um conversor LM2596S.

Como padrão, todos os sensores e atuadores são controlados pelo ATMEGA328.

O ESP8266 permite a programação sem fio do chip ATMEGA328 a partir do ambiente ARDUINO IDE e também serve como uma ponte SERIAL-WIFI que permite a troca de dados com a porta serial ATMEGA328 (UART) sem fio, usando o protocolo TELNET. Obviamente, o ATMEGA328 e o ESP8266 são conectados via linhas RX / TX.

Além disso, para implementar o chip ATMEGA328 sem fio, a linha RESET desse chip é conectada à linha GPIO2 do microcontrolador ESP8266.

Assim, mesmo sem um Raspberry Pi, o MIRO contém uma arquitetura desenvolvida e conveniente para o desenvolvimento.

Na configuração básica do robô com o módulo frontal SENS1, os seguintes sensores e dispositivos são conectados ao microcontrolador ATMEGA328:

  1. Sensores odômetros digitais (roda esquerda e direita)
  2. Motorista dos motores esquerdo e direito nos chips L9110S
  3. Sensor de linha ultrassônico HC-SR04
  4. Sensores de luz fotorresistentes (esquerdo e direito)
  5. Emissor de som piezo
  6. LEDs para luz frontal (esquerda e direita)
  7. Sensores de linha (esquerdo, direito e central)
  8. Servo motor de inclinação da câmera

Os dispositivos 3 a 7 são opcionais e podem ser substituídos por qualquer sensor ou dispositivo. Você pode projetar e fabricar seu próprio módulo frontal em troca do módulo proposto (chamado SENS1 nos documentos) com suas tarefas e dispositivos.

Os dispositivos 1, 2 e 8 são obrigatórios para o funcionamento do robô e não envolvem desligamento. É compreensível - sem os drivers do motor, o robô não poderá se mover e, sem sensores de odometria, você não poderá dizer nada sobre a natureza do movimento do robô e não poderá controlar com precisão o movimento. Bem, a suspensão da câmera (se é que você pode chamar assim) provavelmente também é parte integrante.

O Raspberry Pi está conectado ao ATMEGA328 via I2C (TWI). Uma câmera Raspberry Pi Camera v1.3 está conectada à placa Raspberry Pi.

Quero prestar atenção aos componentes seriais que agora são usados ​​no MIRO. Basicamente, focamos em um fabricante sino-russo (no mapa de produção, na lista de componentes seriais, você pode ver o nome da empresa). Isso foi parcialmente feito de propósito. Os chineses têm muitos módulos de tweeters, assobios e outros bens de consumo. Esses mesmos caras representam pelo menos alguma marca com designações de nomenclatura. E você pode, pelo menos de alguma forma, indicar qual deve ser exatamente o pedaço de ferro em um ou outro nó do robô. Embora eles vendam os mesmos bens de consumo por pouco dinheiro. Eu olhei atentamente para eles e fiquei impressionado que era como uma empresa russa. E a mensagem que eles publicam em seu site, ele inspirou esperanças de que os caras "por tudo bonito". Na realidade, aparentemente, tudo é um pouco não tão bom. O diagrama de circuito de pelo menos a placa UNO + WiFi deste fabricante não resiste a nenhuma crítica.

imagem

Não está completo e é executado com muitos erros. Segundo ele, não foi possível determinar todos os componentes da placa, ao que está conectado.

No próprio quadro, os projetistas criaram um bug / recurso inútil: um único circuito de redefinição ATMEGA328 e ESP8266. Isso significa que nesta placa é impossível organizar o firmware sem fio do ATMEGA328 via ESP8266 - quando o ESP8266 tenta redefinir o ATMEGA, ele puxa sua própria linha de redefinição. Ao mesmo tempo, a placa possui um botão separado para redefinir o ESP e um botão de redefinição geral para todos os controladores de uma só vez. Além disso, o interruptor DIP para 8 linhas é soldado na placa. E a oitava opção não está envolvida. No final, quebrei a linha de redefinição do ESP e tornei possível conectá-lo ao circuito de redefinição comum usando esse oitavo comutador usando o fio de montagem. Ou seja, se o interruptor 8 estiver desligado, o ESP poderá ser redefinido apenas pressionando o botão ESP RESET, e um sinal na linha RST comum ou pressionando o botão de redefinição geral não redefinirá o ESP. Quando a chave está ligada, tudo volta ao estado como era antes da modificação da placa.
Resta descobrir como interromper o circuito de redefinição. Encontrei a solução mais indolor.

  1. Solde o diodo D3 perto do conector para conectar uma antena externa.
  2. Solde o capacitor entre a perna do diodo soldado (3.3V) e o solo.

Agora, quando você pressiona o botão de redefinição, o ESP não é redefinido.

Lembrando a mensagem no site, escrevi uma proposta para corrigir esse "recurso". Mas eles nem me responderam.
Eu não queria fazer meu pedaço de ferro, mas aparentemente teria que fazê-lo. Também sob uma licença aberta.

Existe uma solução alternativa - o habitual Arduino UNO e uma placa de expansão (ou algo parecido).

imagem

Mas aqui é um pouco inconveniente com o firmware ESP. No entanto, o firmware ESP em sua função atual no MIRO é um procedimento bastante raro.

Bem, em qualquer caso, você precisa conectar o GPIO2 ESP8266 à linha Reset do controlador ATMEGA328 para obter o firmware sem fio. Você pode escolher outro GPIO, mas é o GPIO2 que está registrado no código MIRO (ou o código precisará ser corrigido). A princípio, por inexperiência, eles escolheram a primeira coisa que veio à mão, como se costuma dizer, - GPIO0. Mas eles logo perceberam seu erro - no firmware ESP, esse jumper precisou ser desconectado / não vendido, porque a linha GPIO0 no ESP foi usada no procedimento do firmware.

Conclusão geral: ao montar o MIRO, você pode usar qualquer placa de qualquer fabricante que permita atender aos requisitos do esquema de comutação.

O diagrama completo do circuito do robô MIRO é apresentado em um dos repositórios mencionados.

Imediatamente uma pergunta banal. Existem soluções similares no mercado? Claro que existe. Mas caro. A propósito, os caras que publicaram aqui uma série de artigos sobre o carrinho ROS também observaram a falta de uma solução "ferro" mais ou menos acessível. Será ótimo se os autores e eu incorporarmos seus resultados no MIRO.

Agora, em geral, sobre os planos. Para o desenvolvimento de tudo e de tudo antes da terceira versão, o projeto recebeu o apoio do estado. financiamento. Ou seja, o Fundo para a Promoção da Inovação. Pelo qual muito obrigado a ele. Sem esse dinheiro, provavelmente o teríamos deixado conosco e com uma qualidade completamente diferente. Eu realmente quero que o robô se torne uma plataforma para prototipagem, treinamento e experimentos, que estabelecerá as bases para alguma interação real de CMITs (FabLabs, hacks) em nosso país. Tornou-se um ponto peculiar de esforços conjuntos, onde a contribuição de cada um se torna a vantagem de todos. Entendo claramente que conto com unidades de equipes, para as quais isso se tornará interessante. Mas mesmo essa interação será um sucesso. Fico muito animado com o resultado no Ocidente - como em um local praticamente vazio e com a iniciativa de alguns entediados, nasce um imenso ecossistema. E se der certo? Existem muitos pontos de aplicação de esforço nele.

O roteiro de desenvolvimento atual, a meu ver, está no quadro Kanban no GitHub .

Também desenvolvemos algumas políticas de desenvolvimento de projetos. Qualquer plataforma implica certas restrições, "sinalizadores". Sem eles, tudo se transforma em anarquia, e a plataforma não surge e, se isso acontecer, não dura muito. No mesmo GitHub está um documento , algo como um manifesto de desenvolvimento de plataforma. Com o tempo, quase certamente mudará - a experiência simplesmente ajustará a conveniência de todos (usuários, desenvolvedores).

Quanto ao potencial comercial, o projeto certamente o possui, e a equipe e eu também tentaremos usá-lo. Como O mais simples é a produção e venda de kits de montagem. No final, é também uma maneira de expandir o público de usuários que realmente não querem se preocupar com a produção. Sem hesitar, foi decidido agora abrir uma pré-encomenda de robôs prontos no site.

Obrigado a todos pela atenção e terei prazer em ter perguntas e iniciativas construtivas que ajudem no desenvolvimento do projeto.

O próximo artigo será dedicado à mecânica, design e fabricação da caixa.

Algumas fotos de robôs.

imagem

imagem

imagem

PS Ao longo do caminho, o projeto foi acompanhado por pessoas próximas e queridas para mim, que em diferentes períodos de tempo se tornaram parte da equipe e ajudaram a desenvolver o projeto. Nossos caminhos profissionais divergiram com alguém, mas não posso deixar de notar sua contribuição. Deixe o nome deles não dizer quase nada a ninguém, mas espero que eles fiquem satisfeitos. Este é Yevgeny Ledkov, que agora trabalha na FEFU na Diretoria de Programas Educacionais, que escreveu o primeiro plano de negócios do que, de fato, não existia e afogou toda a alma do projeto. E Pavel Efimov, que também se mudou para a FEFU, para o laboratório de robótica, que se relacionou direta ou indiretamente com o projeto. E Bair Dambaev, que voltou à sua terra natal em Ulan-Ude e agora está ensinando crianças ao centro infantil que ele estabeleceu. E mais alguns caras que apenas fizeram seu trabalho bem.

Source: https://habr.com/ru/post/pt472380/


All Articles