Gergelim aberto ou Intel RealSense e ResNet Guard Fruit


Não é segredo que, no mundo moderno da alta tecnologia, somos obrigados a confirmar constantemente nossa identidade e direitos de acesso - com senhas, etiquetas sem contato, impressões digitais e assim por diante. Você pode fazer isso com uma impressão visual - o rosto do usuário. Basta olhar para o nosso gadget, como ele entende que há um usuário autorizado na frente dele e desbloquear a tela.


Decidimos implementar um esquema semelhante usando materiais disponíveis e soluções de código aberto. Como um objeto físico, que terá a "seletividade para descobertas" correspondente, um cofre foi escolhido.


Todos os detalhes sob o corte.


Habitação



Figura 1. Processo de montagem do caso


O estojo é feito de pedaços de painéis de MDF laminado de 40 x 40 cm, conectados por parafusos de móveis. Posteriormente, todas as juntas foram espessa- mente revestidas com massa acrílica sobre madeira, não muito completamente lixado, após o que todo o corpo foi coberto várias vezes com uma espessa camada de tinta acrílica branca. Pinte, aguarde até que a camada atual seque, lixe e cubra com a próxima camada. Após três camadas, obtive um acabamento fosco branco uniforme, sobre o qual passei uma fina camada de esmalte branco brilhante.



Figura 2. Caixa final durante a instalação elétrica


Na parte inferior do estojo, prendemos as pernas impressas - as primeiras partes desenhadas em um editor 3D.



Figura 3. Pernas. PLA de plástico


Eletricista


A fechadura do cofre foi feita a partir de um acionamento híbrido da fechadura central e da lingueta da porta interna - a partir da última, jogamos a manga rotativa e fazemos um gancho sob a tração.
Com a ajuda de peças impressas, tudo é montado em um único design e montado na porta. A placa principal em si é bastante fina (3 mm) e dobra facilmente, mas tudo muda após a instalação. O desenho final foi forte o suficiente para novas experiências.



Figura 4. Montagem do mecanismo de bloqueio


Obviamente, se estamos falando de um sistema de controle de acesso completo, você pode comprar uma fechadura elétrica pronta para uso em metal instalando-a em um cofre de metal normal. Mas não.


Além da fechadura, também precisamos de um trailer para controlar o estado da porta, um interruptor de três posições para controlar o sistema e um LED de duas cores para exibir o status atual do programa.



Figura 5. Diagrama esquemático do kit do corpo


Não se esqueça que a tensão nos pinos é de 1,8V (com uma placa de expansão já de 3,3V), por isso conectamos os LEDs através de um estágio de transistor - a partir de 1,8V eles simplesmente não acendem.


Eletrônicos


Os principais componentes do sistema - uma câmera e um computador de placa única foram criados um para o outro (no nosso caso, isso não é um discurso, mas um fato bem conhecido):



Figura 6. Kit de desenvolvimento Intel Joule 570x - um microcomputador de placa única com um Intel Atom de 4 bits e 64 bits na placa, 4 GB de memória e um conector USB 3.0



Figura 7. Câmera Intel RealSense SR300 - Câmera 3D de curto alcance como órgão de visão. A faixa efetiva de reconhecimento de profundidade é de 0,2 - 1,2 m.


Apenas alguns dias após o início do projeto, a Intel Joule conseguiu adquirir o status de EOL (End Of Life), mas isso não nos impediu.


Como módulo de computação, você pode usar praticamente qualquer placa única moderna com USB3.0, com base no processador Intel. Por exemplo, Kit de desenvolvimento da IoT Up Squared Grove ou MinnowBoard Turbot * . A Intel NUC também fará o truque.


Assembléia


Instalamos os detalhes da trava na caixa para que a trava seja fechada normalmente. Para que a porta bata quando acionada (como nos pedestais), imprimimos e instalamos um empurrador de mola. Sua tarefa é retrair a porta da trava alguns milímetros depois de retrair a língua, para que a caixa não feche novamente depois de remover a tensão.



Figura 8. Trava para empurrador de língua e mola


Monte a câmera na frente. Colamos o LED na tampa da câmera, no ponto acima de i - por algum motivo, ele conseguiu se metamorfosear em um LED verde. Consertamos com um par de parafusos.



Figura 9. Câmera instalada


Para o Intel Joule, você precisa de um gabinete; portanto, no editor 3D, você desenha um gabinete do tamanho necessário com janelas para os conectores.



Figura 10. Desenho do caso para Intel Joule


Para conectores GPIO de 40 pinos, nenhuma janela é fornecida, pois foi decidido colocar toda a parte elétrica dentro do gabinete. Para isso, é desenhada uma cobertura grossa, com ranhuras para o relé e 4 contatos, além de janelas para os interruptores. Não se esqueça que o processador na placa não é o mais fraco, por isso fazemos vários orifícios de ventilação na tampa.



Figura 11. Desenho da capa


Existem duas escolas. Em primeiro lugar, ao desenvolver o kit do corpo, o conector de conexão do LED não foi levado em consideração, o que levou ao fato de que:


  1. Não há orifício para o cabo / conector no gabinete e eu tive que queimar o orifício com um ferro de soldar;
  2. O gabinete montado possui uma cauda longa com LEDs no final.

Em segundo lugar, o gabinete deve estar de alguma forma conectado e nada melhor do que fazer isso usando pedaços de arame, como resultado, não foi inventado. Sobre montagem silenciosa geralmente silenciosa. Você não pode ver, mas em algum lugar, embaixo dos bicos térmicos, 3 transistores e saltos de rezuki estão ocultos.


protótipo de fumante

Aqui me lembro de uma foto de minha autoria:

E as palavras da pessoa que me trouxe o dispositivo certo - "eles já fizeram um protótipo para mim, só preciso consertar um pouco o firmware - algo é instável e a bateria acaba rapidamente".



Figura 12. Caixa eletrônica montada


O interior da caixa é composto por quatro terminais - dois para potência e dois para o motor, um reboque para a porta, um para frente e para trás para controlar o programa e um relé que fornece tensão à fechadura. Durante a impressão, o ângulo próximo à cavidade do relé arrancou a mesa e o relé decidiu não encaixar nela. Eu tive que colar o interruptor no thermosnot. Bem como pagador único.


A fita verde é colada na placa da antena Wi-Fi. Em geral, eles são autoadesivos, mas nós os colamos tantas vezes para destacar durante os experimentos, que eles perderam a capacidade de grudar na superfície.



Figura 13. Caixa eletrônica montada em formato fechado


Colocamos o intestino dentro do corpo, fechamos e prosseguimos com o desenvolvimento da parte do software.


Impressão 3D lírica.


Detalhes do castelo - amado por muitos e odiado por mim PLA. O material é muito bom para imprimir modelos de alta precisão, mas é completamente impossível de processar. E também essa infecção flutua quando aquecida, o que é uma propriedade muito ruim para elementos estruturais.


Todos os outros detalhes do HIPS - IMHO são menos caprichosos que o ABS e praticamente não cheiram quando impressos. A única ressalva - até que ele elevou a temperatura da mesa para 95 graus, os detalhes na mesa distorceram. De acordo com as instruções, a temperatura da mesa deve ser de cerca de 100 graus, mas quem a lê até agora?


Parte do software


Preparação do sistema


Primeiro de tudo, você precisa atualizar o BIOS na placa para instalar a imagem do sistema operacional de que precisamos. Usamos estas e estas instruções da documentação oficial no site da Intel.


Em seguida, conectando o monitor e o teclado à placa, instalamos a distribuição especial Ubuntu * Desktop 16.04 LTS para Intel Joule no modo gráfico ou de texto habitual. Se o computador usar Intel NUC ou outro computador, a imagem do sistema também será exibida.


Depois de instalar o sistema operacional usando meios regulares, nos conectamos à Internet através do Wi-Fi embutido. Como existe apenas um conector USB na placa e precisamos conectar a câmera, conectamos à placa via ssh. Agora podemos liberar a porta do teclado e conectar o Intel RealSense.


Instale pacotes e dependências.


Primeiro, instale o Python 3.5.4, no qual nosso projeto está gravado. Faça o download e construa o módulo OpenCV Python a partir do código-fonte, pois o módulo não oficial Python OpenCV no Intel Joule não funciona corretamente.


Instale ou atualize dependências adicionais:


apt install -y --fix-missing build-essential cmake gfortran git wget curl graphicsmagick libgraphicsmagick1-dev libatlas-dev libavcodec-dev libavformat-dev libboost-all-dev libgtk2.0-dev libjpeg-dev liblapack-dev libswscale-dev pkg-config python3-dev python3-numpy software-properties-common zip git clone https://github.com/davisking/dlib.git /root/dlib; cd /root/dlib; mkdir build; cd build; cmake .. -DUSE_AVX_INSTRUCTIONS=1; cmake --build . ; cd .. ; python3 setup.py install --yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA pip3 install face_recognition 

Colocamos libmraa - essa biblioteca é útil para nos comunicarmos com a caixa. Instruções detalhadas de montagem estão aqui .


Ou você pode instalar binários prontos do PPA:


 sudo add-apt-repository ppa:mraa/mraa sudo apt-get update sudo apt-get install libmraa1 libmraa-dev libmraa-java python-mraa python3-mraa node-mraa mraa-tools 

Depois de instalar todas as dependências, podemos verificar se tudo funciona corretamente. Para fazer isso, aumente tudo o VNC - vnc4server, execute uma amostra para trabalhar com a câmera e verifique se a câmera está funcionando.


O ponto de verificação final é a importação correta do módulo face_recognition . De fato, esta é a nossa rede neural ResNet, voltada para a identificação de pessoas na foto. Por isso, aparece na demonstração do autor:



 import face_recognition 

Quando tudo estiver pronto, descarregamos o código fonte do nosso aplicativo do repositório e começamos a trabalhar.


Por conveniência, adicionamos todas as bibliotecas como submódulos ao nosso projeto. Para baixá-los, faça a atualização do sub-módulo git --init --recursive no diretório do projeto.


Trabalho


 ./launcher.py 

Quando você liga o banco de dados pela primeira vez, não há pessoas; portanto, a caixa será fechada. Abrimos manualmente (temos uma porta traseira embutida para isso - um pequeno orifício claramente oposto à língua) e realizamos o treinamento.


Para fazer isso, fique na frente da caixa - o LED no painel frontal acende, indicando que uma determinada pessoa está no campo de visão da câmera.


Clicamos no botão na direção de lembrar a face e a entrada correspondente aparece no console.



Agora, se você fechar a gaveta e ficar na frente dela, o sistema reconhecerá seu rosto e abrirá a porta com alegria.



As entradas do console de acesso aparecerão no console.



Se um estranho se levantar, o sistema não poderá reconhecê-lo, pelo que a porta permanecerá fechada. Outra questão é que o sistema pode passar fome - a porcentagem de falsos positivos no nosso caso foi bastante alta e, se você andar por um longo tempo com um monte de objetos diferentes em suas mãos, até que ainda seja aberto.


Isso pode ser resolvido usando o canal de profundidade - ele não é usado na versão atual, pois não era possível fazê-lo funcionar de forma estável e era muito tarde para enviar o problema de compatibilidade com o Intel Joule. O autor do face_recognition mediu 99,38% de precisão no benchmark Faces rotuladas no lar selvagem


Conclusão


Obviamente, essa Prova de Conceito pode ser significativamente aprimorada e sua funcionalidade é expandida várias vezes. Por exemplo, você pode adicionar o registro de acesso bem-sucedido e malsucedido, além de um gerenciamento conveniente via interface da web.


O princípio básico da construção desse dispositivo foi: "Eu o ceguei do que era". Só queríamos mostrar que algo interessante pode ser feito de materiais improvisados.


Agradecemos a Dmitry ( dmitryvodop ) e Sergey por trabalharem na parte de software do projeto.


Todos os modelos no formato * .stl e o código fonte do programa são carregados no GitHub sob a licença MIT.

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


All Articles