Sommario:

HackerBox 0024: Vision Quest: 11 passaggi
HackerBox 0024: Vision Quest: 11 passaggi

Video: HackerBox 0024: Vision Quest: 11 passaggi

Video: HackerBox 0024: Vision Quest: 11 passaggi
Video: HackerBox #0024: Vision Quest 2024, Novembre
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Questo mese, gli hacker di HackerBox stanno sperimentando la Computer Vision e il Servo Motion Tracking. Questo Instructable contiene informazioni per lavorare con HackerBox # 0024, che puoi raccogliere qui fino ad esaurimento scorte. Inoltre, se desideri ricevere un HackerBox come questo direttamente nella tua casella di posta ogni mese, iscriviti a HackerBoxes.com e unisciti alla rivoluzione!

Argomenti e obiettivi di apprendimento per HackerBox 0024:

  • Sperimentare con la visione artificiale
  • Configurazione di OpenCV (Computer Vision)
  • Programmare Arduino Nano dall'IDE Arduino
  • Controllo dei servomotori con Arduino Nano
  • Assemblaggio di un gruppo meccanico di panoramica e inclinazione
  • Controllo del movimento pan e tilt con un microcontrollore
  • Esecuzione di Face Tracking utilizzando OpenCV

HackerBoxes è il servizio di box in abbonamento mensile per l'elettronica fai da te e la tecnologia informatica. Siamo hobbisti, maker e sperimentatori. Siamo i sognatori dei sogni. HACK IL PIANETA!

Passaggio 1: HackerBox 0024: contenuto della confezione

HackerBox 0024: contenuto della confezione
HackerBox 0024: contenuto della confezione
  • HackerBoxes #0024 Scheda di riferimento da collezione
  • Gruppo Pan e Tilt a tre staffe
  • Due servi MG996R con accessori
  • Due accoppiatori servo circolari in alluminio
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Gruppo fotocamera digitale con cavo USB
  • Tre obiettivi con attacco a clip universale
  • Penna luminosa per ispezione medica
  • Maglioni Dupont uomo/donna
  • Cavo MicroUSB
  • Decalcomania esclusiva OpenCV
  • Decalcomania esclusiva del Dia de Muertos

Alcune altre cose che saranno utili:

  • Scarto di piccola tavola di legno per la base della fotocamera
  • Saldatore, saldatore e strumenti di saldatura di base
  • Computer per l'esecuzione di strumenti software

Soprattutto, avrai bisogno di un senso di avventura, spirito fai-da-te e curiosità da hacker. L'elettronica fai-da-te hardcore non è una ricerca banale e non la stiamo annacquando per te. L'obiettivo è il progresso, non la perfezione. Quando persisti e ti godi l'avventura, una grande soddisfazione può derivare dall'apprendimento di nuove tecnologie e, si spera, dal far funzionare alcuni progetti. Ti suggeriamo di fare ogni passo lentamente, prestando attenzione ai dettagli e non esitando mai a chiedere aiuto.

DOMANDE FREQUENTI: Ci piace chiedere a tutti i membri di HackerBox un grande favore. Ti preghiamo di dedicare qualche minuto a rivedere le FAQ sul sito Web HackerBoxes prima di contattare l'assistenza. Anche se ovviamente vogliamo aiutare tutti i membri quanto necessario, la maggior parte delle nostre e-mail di supporto include domande semplici che sono affrontate in modo molto chiaro nelle FAQ. Grazie per la comprensione!

Passaggio 2: visione artificiale

Visione computerizzata
Visione computerizzata

La visione artificiale è un campo interdisciplinare che si occupa di come i computer ottengono una comprensione di alto livello da immagini o video digitali. Dal punto di vista dell'ingegneria, la visione artificiale cerca di automatizzare le attività che il sistema visivo umano può svolgere. In quanto disciplina scientifica, la visione artificiale si occupa della teoria alla base dei sistemi artificiali che estraggono informazioni dalle immagini. I dati dell'immagine possono assumere molte forme, come sequenze video, viste da più telecamere o dati multidimensionali da uno scanner medico. Come disciplina tecnologica, la visione artificiale cerca di applicare le sue teorie e modelli per la costruzione di sistemi di visione artificiale. I sottodomini della visione artificiale includono la ricostruzione di scene, il rilevamento di eventi, il monitoraggio video, il riconoscimento di oggetti, la stima della posa 3D, l'apprendimento, l'indicizzazione, la stima del movimento e il ripristino dell'immagine.

È interessante notare che la computer vision può essere considerata l'inverso della computer grafica.

Passaggio 3: elaborazione e OpenCV

Elaborazione e OpenCV
Elaborazione e OpenCV

Processing è uno sketchbook flessibile e un linguaggio per imparare a programmare nel contesto delle arti visive. L'elaborazione ha promosso l'alfabetizzazione software all'interno delle arti visive e l'alfabetizzazione visiva all'interno della tecnologia. Ci sono decine di migliaia di studenti, artisti, designer, ricercatori e appassionati che utilizzano Processing per l'apprendimento e la prototipazione.

OpenCV (Open Source Computer Vision Library) è una libreria di software di visione artificiale e machine learning open source. OpenCV è stato creato per fornire un'infrastruttura comune per le applicazioni di visione artificiale e per accelerare l'uso della percezione della macchina nei prodotti commerciali. La libreria OpenCV ha più di 2500 algoritmi ottimizzati, che includono un set completo di algoritmi di computer vision e machine learning sia classici che all'avanguardia. Questi algoritmi possono essere utilizzati per rilevare e riconoscere volti, identificare oggetti, classificare le azioni umane nei video, tenere traccia dei movimenti della telecamera, tracciare oggetti in movimento e così via.

Installa OpenCV in Processing dal menu File > Esempi selezionando "Aggiungi esempi" e quindi nella scheda Librerie installando sia le librerie Video che OpenCV. Apri l'esempio di LiveCamTest per il rilevamento del volto di base. Dai un'occhiata ad altri esempi di OpenCV per l'elaborazione qui.

Altre risorse:

Getting Started with Computer Vision è un progetto di libro che fornisce un facile punto di ingresso per la sperimentazione creativa con la computer vision. Introduce il codice e i concetti necessari per costruire progetti di visione artificiale.

Programming Computer Vision with Python è un libro di O'Reilly su PCV, un modulo Python open source per la computer vision.

Imparare OpenCV

Visione artificiale: algoritmi e applicazioni

Padroneggiare OpenCV

Corso di Stanford CS231n Reti neurali convoluzionali per il riconoscimento visivo (16 video)

Chris Urmson TED Talk Come vede la strada un'auto senza conducente

Passaggio 4: piattaforma di microcontrollori Arduino Nano

Piattaforma di microcontrollori Arduino Nano
Piattaforma di microcontrollori Arduino Nano

Possiamo utilizzare qualsiasi piattaforma di microcontrollore comune per controllare i servi nel nostro supporto per telecamera pan e tilt. Arduino Nano è una scheda Arduino miniaturizzata a montaggio superficiale, compatibile con la breadboard, con USB integrato. È sorprendentemente completo e facile da hackerare.

Caratteristiche:

  • Microcontrollore: Atmel ATmega328P
  • Tensione: 5V
  • Pin I/O digitali: 14 (6 PWM)
  • Pin di ingresso analogico: 8
  • Corrente CC per pin I/O: 40 mA
  • Memoria Flash: 32 KB (2 KB per bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Velocità di clock: 16 MHz
  • Dimensioni: 17 mm x 43 mm

Questa particolare variante di Arduino Nano è il design Robotdyn nero. L'interfaccia è tramite una porta MicroUSB integrata compatibile con gli stessi cavi MicroUSB utilizzati con molti telefoni cellulari e tablet.

Arduino Nanos è dotato di un chip bridge USB/seriale integrato. Su questa particolare variante, il chip bridge è il CH340G. Si noti che esistono vari altri tipi di chip bridge USB/seriale utilizzati sui vari tipi di schede Arduino. Questi chip consentono alla porta USB del computer di comunicare con l'interfaccia seriale sul chip del processore di Arduino.

Il sistema operativo di un computer richiede un driver di dispositivo per comunicare con il chip USB/seriale. Il driver consente all'IDE di comunicare con la scheda Arduino. Il driver del dispositivo specifico necessario dipende sia dalla versione del sistema operativo che dal tipo di chip USB/seriale. Per i chip USB/seriale CH340, sono disponibili driver per molti sistemi operativi (UNIX, Mac OS X o Windows). Il produttore del CH340 fornisce questi driver qui.

Quando colleghi per la prima volta Arduino Nano a una porta USB del tuo computer, la spia di alimentazione verde dovrebbe accendersi e poco dopo il LED blu dovrebbe iniziare a lampeggiare lentamente. Questo accade perché il Nano è precaricato con il programma BLINK, che è in esecuzione sul nuovissimo Arduino Nano.

Passaggio 5: ambiente di sviluppo integrato Arduino (IDE)

Ambiente di sviluppo integrato Arduino (IDE)
Ambiente di sviluppo integrato Arduino (IDE)

Se non hai ancora installato l'IDE Arduino, puoi scaricarlo da Arduino.cc

Se desideri ulteriori informazioni introduttive per lavorare nell'ecosistema Arduino, ti suggeriamo di consultare le istruzioni per HackerBoxes Starter Workshop.

Collega il Nano al cavo MicroUSB e l'altra estremità del cavo a una porta USB del computer, avvia il software Arduino IDE, seleziona la porta USB appropriata nell'IDE in strumenti>porta (probabilmente un nome con "wchusb" in esso). Seleziona anche "Arduino Nano" nell'IDE in strumenti>scheda.

Infine, carica un pezzo di codice di esempio:

File->Esempi->Base->Blink

Questo è in realtà il codice che è stato precaricato sul Nano e dovrebbe essere in esecuzione in questo momento per far lampeggiare lentamente il LED blu. Di conseguenza, se carichiamo questo codice di esempio, non cambierà nulla. Invece, modifichiamo un po' il codice.

Guardando da vicino, puoi vedere che il programma accende il LED, aspetta 1000 millisecondi (un secondo), spegne il LED, aspetta un altro secondo e poi ripete tutto - per sempre.

Modificare il codice modificando entrambe le istruzioni "delay(1000)" in "delay(100)". Questa modifica farà lampeggiare il LED dieci volte più velocemente, giusto?

Carichiamo il codice modificato nel Nano facendo clic sul pulsante UPLOAD (l'icona a forma di freccia) appena sopra il codice modificato. Guarda sotto il codice per le informazioni sullo stato: "compiling" e poi "uploading". Alla fine, l'IDE dovrebbe indicare "Caricamento completato" e il LED dovrebbe lampeggiare più velocemente.

Se è così, congratulazioni! Hai appena hackerato il tuo primo pezzo di codice incorporato.

Una volta che la tua versione con lampeggio veloce è stata caricata e funzionante, perché non vedere se riesci a cambiare di nuovo il codice per far lampeggiare velocemente il LED due volte e poi aspettare un paio di secondi prima di ripetere? Provaci! Che ne dici di altri modelli? Una volta che sei riuscito a visualizzare un risultato desiderato, codificarlo e osservarlo per funzionare come previsto, hai fatto un enorme passo avanti per diventare un hacker hardware competente.

Passaggio 6: servomotori

Servomotori
Servomotori

I servomotori sono generalmente controllati da una serie di impulsi elettrici ripetuti in cui l'ampiezza degli impulsi indica la posizione del servo. Il segnale di controllo modulato a larghezza di impulso (PWM) è spesso generato da un comune microcontrollore come un Arduino.

I piccoli servi per hobby, come l'MG996R, sono collegati tramite una connessione standard a tre fili: due fili per l'alimentazione CC e un filo per il trasporto degli impulsi di controllo. I servi MG996R hanno un range di tensione operativa di 4,8-7,2 VDC.

Passaggio 7: assemblaggio del meccanismo di panoramica e inclinazione

Assemblaggio del meccanismo di panoramica e inclinazione
Assemblaggio del meccanismo di panoramica e inclinazione
  1. Estrai entrambi i servi MG996R dalle loro borse e metti da parte gli accessori inclusi per ora.
  2. Attaccare un servo accoppiatore circolare in alluminio a ciascun servo. Notare che gli accoppiatori vengono forniti in sacchetti separati dai servi. L'accoppiatore è molto stretto. Inizia premendo l'accoppiatore sull'estremità dell'uscita del servo e poi avvita una vite nel foro centrale. Stringere il filo per attirare l'accoppiatore sull'uscita del servo.
  3. Notare che ci sono tre staffe per il gruppo pan-tilt: due staffe a scatola e una staffa a U.
  4. Montare una delle staffe della scatola sul cerchio di alluminio per uno dei servi. Chiameremo questo servo servo del pan. Orientare la staffa della scatola con la sua parete centrale contro il cerchio di alluminio in modo che le altre due pareti della staffa della scatola siano rivolte lontano dal servo del pan. Utilizzare i fori centrali sulla parete centrale della staffa della scatola. Questa disposizione dovrebbe consentire al servo del pan di ruotare la staffa della scatola attaccata una volta azionato.
  5. Posizionare l'altro servo (servo di inclinazione) nella staffa della scatola che è attaccata al cerchio di alluminio del servo del pan. Utilizzare almeno due dadi e bulloni per fissare il servo dell'inclinazione, uno su ciascun lato.
  6. Tenendo la staffa a U, inserire il "cuscinetto" in ottone dall'interno della U attraverso uno dei grandi fori di montaggio del perno.
  7. Posiziona la staffa a U con il cuscinetto sul servo di tilt che si trova all'interno della staffa della scatola in modo che l'altro grande foro di montaggio del perno (quello senza il cuscinetto) si allinei con il cerchio di alluminio sul servo di tilt.
  8. Utilizzare le viti per fissare la staffa a U sul cerchio di alluminio su un lato della staffa a U.
  9. Dall'altro lato della staffa a U, serrare una singola vite attraverso il cuscinetto e nel piccolo foro nella staffa della scatola all'interno. Ciò dovrebbe consentire alla staffa a U di ruotare attorno alla staffa della scatola in un secondo momento quando viene azionato il servo dell'inclinazione.

Passaggio 8: montaggio del gruppo panoramica e inclinazione

Montaggio del gruppo panoramica e inclinazione
Montaggio del gruppo panoramica e inclinazione
Montaggio del gruppo panoramica e inclinazione
Montaggio del gruppo panoramica e inclinazione

La restante staffa della scatola può essere avvitata a un piccolo pezzo di tavola di legno per fungere da base della fotocamera, come mostrato nell'immagine. Infine, il servo del pan viene montato all'interno della staffa rimanente utilizzando almeno due dadi e bulloni per fissare il servo alla staffa, uno su ciascun lato.

Passaggio 9: cablaggio e test del gruppo panoramica e inclinazione

Cablare e testare il gruppo panoramica e inclinazione
Cablare e testare il gruppo panoramica e inclinazione

Per cablare i servi secondo lo schema, è più veloce semplicemente tagliare i connettori femmina originali dai servi e quindi utilizzare alcune estremità dei ponticelli DuPont femmina per ottenere il segnale e le linee di massa collegate ai pin Nano.

Il Nano non ha abbastanza corrente sull'alimentazione a 5 V per alimentare i servi da USB, quindi si consiglia un'alimentazione aggiuntiva. Questo può essere qualsiasi cosa nella gamma di 4,8-7,2 Volt. Ad esempio, quattro batterie AA (in serie) funzioneranno bene. Anche una fornitura da banco o una verruca da parete è una buona scelta.

Il semplice codice Arduino di esempio allegato qui come PanTiltTest.ino può essere utilizzato per testare il controllo dei due servi dal monitor seriale sull'IDE Arduino. Imposta la velocità di trasmissione del monitor in modo che corrisponda ai 9600 bps impostati nel codice di esempio. L'immissione di valori di angolo tra 0 e 180 gradi posizionerà i servi di conseguenza.

Infine, il modulo fotocamera USB (o altro sensore) può essere montato sulla staffa a U del gruppo pan-tilt per l'uso in applicazioni di tracciamento.

Passaggio 10: rilevamento del volto con OpenCV

Image
Image
Hackera il pianeta
Hackera il pianeta

Un sistema di tracciamento facciale di visione artificiale può essere implementato combinando sottosistemi come mostrato nello schema a blocchi. Lo schizzo SerialServoControl per Arduino può essere trovato nel seguente tutorial Sparkfun insieme a una dimostrazione correlata utilizzando OpenCV, Processing, un Arduino, una fotocamera USB e un gruppo Pan/Tilt per tracciare un volto umano. La demo utilizza due servocomandi per riposizionare la telecamera in modo da mantenere il viso centrato nell'inquadratura video anche quando l'utente si muove per la stanza. Ad esempio il codice in C#, controlla il repository GitHub per il video CamBot.

Passaggio 11: hackerare il pianeta

Se ti è piaciuto questo Instrucable e desideri ricevere una scatola di progetti di elettronica e informatica come questo direttamente nella tua casella di posta ogni mese, per favore unisciti a noi ISCRIVENDOTI QUI.

Raggiungi e condividi il tuo successo nei commenti qui sotto o sulla pagina Facebook di HackerBoxes. Certamente fateci sapere se avete domande o avete bisogno di aiuto con qualsiasi cosa. Grazie per essere parte di HackerBoxes. Si prega di mantenere i vostri suggerimenti e feedback in arrivo. Gli HackerBox sono le TUE scatole. Facciamo qualcosa di grande!

Consigliato: