Índice:

HackerBox 0024: Vision Quest: 11 etapas
HackerBox 0024: Vision Quest: 11 etapas

Vídeo: HackerBox 0024: Vision Quest: 11 etapas

Vídeo: HackerBox 0024: Vision Quest: 11 etapas
Vídeo: HackerBox #0024: Vision Quest 2024, Novembro
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Este mês, os HackerBox Hackers estão experimentando visão computacional e rastreamento de movimento servo. Este Instructable contém informações para trabalhar com o HackerBox # 0024, que você pode pegar aqui enquanto durarem os estoques. Além disso, se você gostaria de receber um HackerBox como este diretamente em sua caixa de correio a cada mês, inscreva-se em HackerBoxes.com e junte-se à revolução!

Tópicos e objetivos de aprendizagem para HackerBox 0024:

  • Experimentação com visão computacional
  • Configurando OpenCV (Visão Computacional)
  • Programando o Arduino Nano a partir do Arduino IDE
  • Controlando servo motores com o Arduino Nano
  • Montagem de um Conjunto Mecânico de Pan e Tilt
  • Controle do movimento panorâmico e inclinado com um microcontrolador
  • Execução de rastreamento facial usando OpenCV

HackerBoxes é o serviço de caixa de assinatura mensal para eletrônicos DIY e tecnologia de computador. Somos amadores, criadores e experimentadores. Somos os sonhadores dos sonhos. HACK THE PLANET!

Etapa 1: HackerBox 0024: conteúdo da caixa

HackerBox 0024: Conteúdo da caixa
HackerBox 0024: Conteúdo da caixa
  • HackerBoxes # 0024 Cartão de Referência Coletável
  • Conjunto de pan e tilt com três suportes
  • Dois Servos MG996R com Acessórios
  • Dois servo-acopladores circulares de alumínio
  • Arduino Nano V3 - 5 V, 16 MHz, MicroUSB
  • Conjunto de câmera digital com cabo USB
  • Três lentes com montagem universal para clipes
  • Caneta de luz de inspeção médica
  • Jumpers masculino / feminino Dupont
  • Cabo MicroUSB
  • Decalque OpenCV exclusivo
  • Decalque exclusivo do Dia de Muertos

Algumas outras coisas que serão úteis:

  • Sucata de pequena placa de madeira para base de câmera
  • Ferro de soldar, solda e ferramentas básicas de solda
  • Computador para executar ferramentas de software

Mais importante ainda, você precisará de um senso de aventura, espírito faça-você-mesmo e curiosidade de hacker. Eletrônicos hardcore DIY não é uma busca trivial, e não estamos diluindo isso para você. O objetivo é o progresso, não a perfeição. Quando você persiste e aproveita a aventura, uma grande satisfação pode ser derivada do aprendizado de novas tecnologias e, felizmente, de fazer alguns projetos funcionarem. Sugerimos dar cada passo devagar, atento aos detalhes e nunca hesitar em pedir ajuda.

PERGUNTAS MAIS FREQÜENTES: Gostamos de pedir a todos os membros do HackerBox um grande favor. Reserve alguns minutos para revisar as perguntas frequentes no site da HackerBoxes antes de entrar em contato com o suporte. Embora obviamente queiramos ajudar todos os membros tanto quanto necessário, a maioria dos nossos e-mails de suporte envolvem questões simples que são abordadas de forma muito clara no FAQ. Obrigado pela compreensão!

Etapa 2: visão computacional

Visão Computacional
Visão Computacional

A visão computacional é um campo interdisciplinar que trata de como os computadores obtêm um entendimento de alto nível de imagens ou vídeos digitais. Do ponto de vista da engenharia, a visão computacional busca automatizar tarefas que o sistema visual humano pode realizar. Como disciplina científica, a visão computacional está preocupada com a teoria por trás dos sistemas artificiais que extraem informações de imagens. Os dados da imagem podem assumir várias formas, como sequências de vídeo, visualizações de várias câmeras ou dados multidimensionais de um scanner médico. Como disciplina tecnológica, a visão computacional busca aplicar suas teorias e modelos para a construção de sistemas de visão computacional. Os subdomínios da visão computacional incluem reconstrução de cena, detecção de evento, rastreamento de vídeo, reconhecimento de objeto, estimativa de pose 3D, aprendizagem, indexação, estimativa de movimento e restauração de imagem.

É interessante notar que a visão computacional pode ser considerada o inverso da computação gráfica.

Etapa 3: Processamento e OpenCV

Processamento e OpenCV
Processamento e OpenCV

Processing é um caderno de esboços de software flexível e uma linguagem para aprender a codificar dentro do contexto das artes visuais. O Processing promoveu a alfabetização em software nas artes visuais e a alfabetização visual na tecnologia. Existem dezenas de milhares de estudantes, artistas, designers, pesquisadores e amadores que usam o Processing para aprendizagem e prototipagem.

OpenCV (Open Source Computer Vision Library) é uma biblioteca de software de visão computacional e aprendizado de máquina de código aberto. O OpenCV foi construído para fornecer uma infraestrutura comum para aplicativos de visão computacional e para acelerar o uso da percepção da máquina em produtos comerciais. A biblioteca OpenCV tem mais de 2.500 algoritmos otimizados, que incluem um conjunto abrangente de algoritmos clássicos e de última geração de visão computacional e aprendizado de máquina. Esses algoritmos podem ser usados para detectar e reconhecer rostos, identificar objetos, classificar ações humanas em vídeos, rastrear movimentos de câmera, rastrear objetos em movimento e assim por diante.

Instale o OpenCV no Processing a partir do menu Arquivo> Exemplos selecionando “Adicionar exemplos” e, em seguida, na guia Bibliotecas, instalando as bibliotecas de vídeo e OpenCV. Abra o exemplo LiveCamTest para rastreamento básico de rosto. Confira alguns outros exemplos de OpenCV para processamento aqui.

Mais recursos:

Getting Started with Computer Vision é um projeto de livro que fornece um ponto de entrada fácil para experimentação criativa com visão computacional. Ele apresenta o código e os conceitos necessários para construir projetos de visão computacional.

Programming Computer Vision with Python é um livro da O'Reilly sobre PCV, um módulo Python de código aberto para visão computacional.

Aprendendo OpenCV

Visão computacional: algoritmos e aplicações

Dominando OpenCV

Stanford Course CS231n Convolutional Neural Networks for Visual Recognition (16 Videos)

Chris Urmson TED Talk Como um carro sem motorista vê a estrada

Etapa 4: plataforma de microcontrolador Arduino Nano

Plataforma de microcontrolador Arduino Nano
Plataforma de microcontrolador Arduino Nano

Podemos usar qualquer plataforma de microntrolador comum para controlar servos em nossa montagem de câmera panorâmica e inclinada. O Arduino Nano é uma placa Arduino miniaturizada de montagem em superfície, compatível com a placa de ensaio e com USB integrado. É incrivelmente completo e fácil de hackear.

Recursos:

  • Microcontrolador: Atmel ATmega328P
  • Tensão: 5V
  • Pinos de E / S digitais: 14 (6 PWM)
  • Pinos de entrada analógica: 8
  • Corrente DC por pino de E / S: 40 mA
  • Memória Flash: 32 KB (2 KB para bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Velocidade do relógio: 16 MHz
  • Dimensões: 17 mm x 43 mm

Esta variante específica do Arduino Nano é o design preto do Robotdyn. A interface é feita por uma porta MicroUSB integrada que é compatível com os mesmos cabos MicroUSB usados em muitos telefones celulares e tablets.

Arduino Nanos apresenta um chip de ponte USB / Serial integrado. Nesta variante em particular, o chip ponte é o CH340G. Observe que existem vários outros tipos de chips de ponte USB / Serial usados nos vários tipos de placas Arduino. Esses chips permitem que a porta USB do seu computador se comunique com a interface serial no chip do processador do Arduino.

O sistema operacional de um computador requer um driver de dispositivo para se comunicar com o chip USB / serial. O driver permite que o IDE se comunique com a placa Arduino. O driver de dispositivo específico necessário depende da versão do sistema operacional e também do tipo de chip USB / Serial. Para os chips CH340 USB / Serial, existem drivers disponíveis para muitos sistemas operacionais (UNIX, Mac OS X ou Windows). O fabricante do CH340 fornece esses drivers aqui.

Quando você conecta o Arduino Nano pela primeira vez a uma porta USB do seu computador, a luz verde de alimentação deve acender e logo após o LED azul deve começar a piscar lentamente. Isso acontece porque o Nano vem pré-carregado com o programa BLINK, que está rodando no novo Arduino Nano.

Etapa 5: Arduino Integrated Development Environment (IDE)

Arduino Integrated Development Environment (IDE)
Arduino Integrated Development Environment (IDE)

Se você ainda não instalou o IDE do Arduino, pode baixá-lo em Arduino.cc

Se desejar informações introdutórias adicionais para trabalhar no ecossistema Arduino, sugerimos verificar as instruções do HackerBoxes Starter Workshop.

Conecte o Nano ao cabo MicroUSB e a outra extremidade do cabo a uma porta USB no computador, inicie o software Arduino IDE, selecione a porta USB apropriada no IDE em ferramentas> porta (provavelmente um nome com "wchusb" nele) Selecione também "Arduino Nano" no IDE em ferramentas> placa.

Finalmente, carregue um pedaço de código de exemplo:

Arquivo-> Exemplos-> Básico-> Blink

Na verdade, este é o código que foi pré-carregado no Nano e deve estar em execução agora para piscar lentamente o LED azul. Da mesma forma, se carregarmos este código de exemplo, nada mudará. Em vez disso, vamos modificar um pouco o código.

Olhando de perto, você pode ver que o programa liga o LED, espera 1000 milissegundos (um segundo), desliga o LED, espera mais um segundo e então faz tudo de novo - para sempre.

Modifique o código alterando ambas as instruções "delay (1000)" para "delay (100)". Essa modificação fará com que o LED pisque dez vezes mais rápido, certo?

Vamos carregar o código modificado no Nano clicando no botão UPLOAD (o ícone de seta) logo acima do código modificado. Observe abaixo o código para obter as informações de status: "compilando" e depois "enviando". Eventualmente, o IDE deve indicar "Upload concluído" e seu LED deve piscar mais rápido.

Se sim, parabéns! Você acabou de hackear seu primeiro pedaço de código embutido.

Depois que sua versão de piscar rápido estiver carregada e funcionando, por que não ver se você pode alterar o código novamente para fazer o LED piscar rápido duas vezes e esperar alguns segundos antes de repetir? De uma chance! Que tal alguns outros padrões? Depois de conseguir visualizar um resultado desejado, codificá-lo e observá-lo para funcionar conforme planejado, você deu um enorme passo para se tornar um hacker de hardware competente.

Etapa 6: Servo motores

Servo Motors
Servo Motors

Os servo motores são geralmente controlados por uma série de pulsos elétricos repetidos, onde a largura dos pulsos indica a posição do servo. O sinal de controle modulado por largura de pulso (PWM) geralmente é gerado por um microcontrolador comum, como um Arduino.

Pequenos servos de passatempo, como o MG996R, são conectados por meio de uma conexão de três fios padrão: dois fios para uma fonte de alimentação CC e um fio para transportar os pulsos de controle. Os servos MG996R têm uma voltagem operacional de 4,8-7,2 VCC.

Etapa 7: Montagem do mecanismo de panorâmica e inclinação

Montagem do mecanismo de panorâmica e inclinação
Montagem do mecanismo de panorâmica e inclinação
  1. Puxe os dois servos MG996R de suas bolsas e reserve os acessórios incluídos por enquanto.
  2. Anexe um servo-acoplador circular de alumínio a cada servo. Observe que os acopladores vêm em bolsas separadas dos servos. O acoplador é um ajuste muito apertado. Comece pressionando o acoplador na extremidade da saída do servo e, em seguida, rosqueie um parafuso no orifício central. Aperte a rosca para puxar o acoplador para a saída do servo.
  3. Observe que existem três suportes para o conjunto pan-tilt - dois suportes de caixa e um suporte em U.
  4. Monte um dos suportes de caixa no círculo de alumínio de um dos servos. Chamaremos isso de servo de pan servo. Oriente o suporte de caixa com sua parede central contra o círculo de alumínio de forma que as outras duas paredes do suporte de caixa fiquem voltadas para o servo pan. Use os orifícios centrais na parede do meio do suporte da caixa. Este arranjo deve permitir que o servo pan gire o suporte de caixa anexado ao redor, uma vez que é acionado.
  5. Posicione o outro servo (servo de inclinação) no suporte de caixa que está preso ao círculo de alumínio do servo pan. Use pelo menos duas porcas e parafusos para fixar o servo de inclinação - um de cada lado.
  6. Segurando o suporte em U, insira o "rolamento" de latão de dentro do U através de um dos grandes orifícios de montagem do pivô.
  7. Coloque o suporte em U com o rolamento no servo de inclinação que está dentro do suporte da caixa de forma que o outro orifício de montagem do pivô grande (aquele sem o rolamento) se alinhe com o círculo de alumínio no servo de inclinação.
  8. Use parafusos para fixar o suporte em U no círculo de alumínio em um lado do suporte em U.
  9. No outro lado do suporte em U, aperte um único parafuso através do rolamento e no pequeno orifício do suporte interno. Isso deve permitir que o suporte em U gire em torno do suporte em caixa posteriormente, quando o servo de inclinação for acionado.

Etapa 8: Montagem do Conjunto Pan e Tilt

Montagem do Conjunto Pan e Tilt
Montagem do Conjunto Pan e Tilt
Montagem do Conjunto Pan e Tilt
Montagem do Conjunto Pan e Tilt

O suporte da caixa restante pode ser aparafusado a uma pequena placa de madeira para servir como base da câmera, conforme mostrado na imagem. Finalmente, o servo pan é montado dentro do suporte de caixa restante usando pelo menos duas porcas e parafusos para fixar o servo ao suporte - um de cada lado.

Etapa 9: Conecte e teste o conjunto de panorâmica e inclinação

Conecte e teste o conjunto de panorâmica e inclinação
Conecte e teste o conjunto de panorâmica e inclinação

Para conectar os servos de acordo com o esquema, é mais rápido apenas cortar os conectores fêmeas originais dos servos e, em seguida, usar algumas pontas de jumper DuPont fêmeas para obter o sinal e as linhas de aterramento anexados aos pinos Nano.

O Nano não tem corrente suficiente na fonte de 5 V para alimentar os servos via USB, então uma fonte adicional é recomendada. Isso pode ser qualquer coisa na faixa de 4,8-7,2 volts. Por exemplo, quatro pilhas AA (em série) funcionarão bem. Um suprimento de bancada ou verruga de parede também é uma boa escolha.

O código Arduino de exemplo simples anexado aqui como PanTiltTest.ino pode ser usado para testar o controle dos dois servos do monitor serial no IDE do Arduino. Defina a taxa de transmissão do monitor para corresponder aos 9600 bps definidos no código de exemplo. Inserir valores de ângulo entre 0 e 180 graus posicionará os servos de acordo.

Finalmente, o Módulo de Câmera USB (ou outro sensor) pode ser montado no Suporte em U do Conjunto Pan-Tilt para uso em aplicações de rastreamento.

Etapa 10: rastreamento facial com OpenCV

Image
Image
Hack the Planet
Hack the Planet

Um sistema de rastreamento facial de visão de máquina pode ser implementado combinando subsistemas conforme mostrado no diagrama de blocos. O esboço SerialServoControl para Arduino pode ser encontrado no seguinte tutorial Sparkfun junto com uma demonstração relacionada usando OpenCV, Processing, um Arduino, uma câmera USB e um conjunto Pan / Tilt para rastrear um rosto humano. A demonstração usa dois servos para reposicionar a câmera a fim de manter o rosto centralizado no quadro do vídeo, mesmo enquanto o usuário se move pela sala. Por exemplo de código em C #, verifique o repositório GitHub para o vídeo CamBot.

Etapa 11: hackear o planeta

Se você gostou deste Instrucable e gostaria de ter uma caixa de projetos eletrônicos e de tecnologia de informática como este entregue diretamente em sua caixa de correio a cada mês, junte-se a nós ASSINANDO AQUI.

Entre em contato e compartilhe seu sucesso nos comentários abaixo ou na página do HackerBoxes no Facebook. Certamente, deixe-nos saber se você tiver alguma dúvida ou precisar de ajuda com alguma coisa. Obrigado por fazer parte do HackerBoxes. Por favor, continue enviando suas sugestões e comentários. HackerBoxes são SUAS caixas. Vamos fazer algo ótimo!

Recomendado: