Inhoudsopgave:

HackerBox 0024: Vision Quest: 11 stappen
HackerBox 0024: Vision Quest: 11 stappen

Video: HackerBox 0024: Vision Quest: 11 stappen

Video: HackerBox 0024: Vision Quest: 11 stappen
Video: HackerBox #0024: Vision Quest 2024, November
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Deze maand experimenteren HackerBox Hackers met Computer Vision en Servo Motion Tracking. Deze Instructable bevat informatie voor het werken met HackerBox #0024, die u hier kunt ophalen zolang de voorraad strekt. Als u ook maandelijks zo'n HackerBox in uw mailbox wilt ontvangen, schrijf u dan in op HackerBoxes.com en doe mee aan de revolutie!

Onderwerpen en leerdoelen voor HackerBox 0024:

  • Experimenteren met computervisie
  • OpenCV instellen (Computer Vision)
  • De Arduino Nano programmeren vanuit de Arduino IDE
  • Servomotoren besturen met de Arduino Nano
  • Een mechanische pan- en kantelconstructie monteren
  • Pan- en tiltbewegingen besturen met een microcontroller
  • Face Tracking uitvoeren met OpenCV

HackerBoxes is de maandelijkse abonnementsservice voor doe-het-zelf-elektronica en computertechnologie. Wij zijn hobbyisten, makers en experimenteerders. Wij zijn de dromers van dromen. HACK DE PLANEET!

Stap 1: HackerBox 0024: Inhoud van de doos

HackerBox 0024: Inhoud van de doos
HackerBox 0024: Inhoud van de doos
  • HackerBoxes #0024 Verzamelbare referentiekaart
  • Pan- en kantelmontage met drie beugels
  • Twee MG996R-servo's met accessoires
  • Twee aluminium ronde servokoppelingen
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Digitale cameramontage met USB-kabel
  • Drie lenzen met universele clipbevestiging
  • Penlicht voor medische inspectie
  • Dupont heren/vrouwelijke truien
  • MicroUSB-kabel
  • Exclusief OpenCV-embleem
  • Exclusief Dia de Muertos-embleem

Enkele andere dingen die nuttig zullen zijn:

  • Klein houten plankje voor camerabasis
  • Soldeerbout, soldeer en standaard soldeergereedschappen
  • Computer voor het uitvoeren van softwaretools

Het belangrijkste is dat je een gevoel van avontuur, doe-het-zelf-geest en nieuwsgierigheid van hackers nodig hebt. Hardcore doe-het-zelf-elektronica is geen triviale bezigheid, en we verwateren het niet voor je. Het doel is vooruitgang, niet perfectie. Als je volhardt en geniet van het avontuur, kan er veel voldoening worden gehaald uit het leren van nieuwe technologie en hopelijk het werkend krijgen van een aantal projecten. We raden aan om elke stap langzaam te doen, op de details te letten en nooit te aarzelen om hulp te vragen.

VEELGESTELDE VRAGEN: We willen alle HackerBox-leden een heel grote gunst vragen. Neem een paar minuten de tijd om de veelgestelde vragen op de HackerBoxes-website te lezen voordat u contact opneemt met de ondersteuning. Hoewel we natuurlijk alle leden zoveel als nodig willen helpen, bevatten de meeste van onze ondersteuningsmails eenvoudige vragen die heel duidelijk worden behandeld in de veelgestelde vragen. Dank u voor uw begrip!

Stap 2: Computervisie

Computer visie
Computer visie

Computervisie is een interdisciplinair veld dat zich bezighoudt met hoe computers een hoog niveau van begrip verkrijgen uit digitale afbeeldingen of video's. Vanuit het perspectief van engineering probeert computervisie taken te automatiseren die het menselijke visuele systeem kan doen. Als wetenschappelijke discipline houdt computervisie zich bezig met de theorie achter kunstmatige systemen die informatie uit beelden halen. De beeldgegevens kunnen vele vormen aannemen, zoals videosequenties, weergaven van meerdere camera's of multidimensionale gegevens van een medische scanner. Als technologische discipline probeert computervisie zijn theorieën en modellen toe te passen voor de constructie van computervisiesystemen. Subdomeinen van computervisie omvatten scènereconstructie, gebeurtenisdetectie, videotracking, objectherkenning, 3D-pose-schatting, leren, indexeren, bewegingsschatting en beeldherstel.

Het is interessant om op te merken dat computervisie kan worden beschouwd als het omgekeerde van computergraphics.

Stap 3: Verwerking en OpenCV

Verwerking en OpenCV
Verwerking en OpenCV

Processing is een flexibel softwareschetsboek en een taal om te leren coderen binnen de context van de beeldende kunst. Processing heeft softwaregeletterdheid binnen de beeldende kunst en visuele geletterdheid binnen de technologie bevorderd. Er zijn tienduizenden studenten, kunstenaars, ontwerpers, onderzoekers en hobbyisten die Processing gebruiken voor leren en prototyping.

OpenCV (Open Source Computer Vision Library) is een open source computer vision en machine learning softwarebibliotheek. OpenCV is gebouwd om een gemeenschappelijke infrastructuur te bieden voor computervisietoepassingen en om het gebruik van machineperceptie in commerciële producten te versnellen. De OpenCV-bibliotheek heeft meer dan 2500 geoptimaliseerde algoritmen, waaronder een uitgebreide set van zowel klassieke als geavanceerde algoritmen voor computervisie en machine learning. Deze algoritmen kunnen worden gebruikt om gezichten te detecteren en te herkennen, objecten te identificeren, menselijke acties in video's te classificeren, camerabewegingen te volgen, bewegende objecten te volgen, enzovoort.

Installeer OpenCV binnen Processing vanuit het menu Bestand > Voorbeelden door "Voorbeelden toevoegen" te selecteren en vervolgens onder het tabblad Bibliotheken zowel de Video- als de OpenCV-bibliotheken te installeren. Open het LiveCamTest-voorbeeld voor eenvoudige gezichtsherkenning. Bekijk hier enkele andere voorbeelden van OpenCV voor verwerking.

Meer middelen:

Aan de slag met Computer Vision is een boekproject dat een gemakkelijk startpunt biedt voor creatieve experimenten met computervisie. Het introduceert de code en concepten die nodig zijn om computervisieprojecten te bouwen.

Computervisie programmeren met Python is een O'Reilly-boek over PCV, een open source Python-module voor computervisie.

OpenCV leren

Computervisie: algoritmen en toepassingen

OpenCV beheersen

Stanford-cursus CS231n Convolutionele neurale netwerken voor visuele herkenning (16 video's)

Chris Urmson TED Talk Hoe een auto zonder bestuurder de weg ziet

Stap 4: Arduino Nano Microcontroller-platform

Arduino Nano Microcontroller-platform
Arduino Nano Microcontroller-platform

We kunnen elk gebruikelijk microntroller-platform gebruiken voor het besturen van servo's in onze pan- en tilt-camerabevestiging. De Arduino Nano is een op het oppervlak te monteren, breadboard-vriendelijk, geminiaturiseerd Arduino-bord met geïntegreerde USB. Het is verbazingwekkend volledig uitgerust en gemakkelijk te hacken.

Functies:

  • Microcontroller: Atmel ATmega328P
  • Spanning: 5V
  • Digitale I/O-pinnen: 14 (6 PWM)
  • Analoge ingangspennen: 8
  • Gelijkstroom per I/O-pin: 40 mA
  • Flash-geheugen: 32 KB (2KB voor bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Kloksnelheid: 16 MHz
  • Afmetingen: 17 mm x 43 mm

Deze specifieke variant van de Arduino Nano is het zwarte Robotdyn-ontwerp. De interface is via een ingebouwde MicroUSB-poort die compatibel is met dezelfde MicroUSB-kabels die worden gebruikt met veel mobiele telefoons en tablets.

Arduino Nano's hebben een ingebouwde USB/seriële bridge-chip. Op deze specifieke variant is de bridge-chip de CH340G. Merk op dat er verschillende andere soorten USB/seriële bridge-chips worden gebruikt op de verschillende soorten Arduino-kaarten. Met deze chips kan de USB-poort van uw computer communiceren met de seriële interface op de Arduino-processorchip.

Het besturingssysteem van een computer vereist een apparaatstuurprogramma om te communiceren met de USB/seriële chip. De driver zorgt ervoor dat de IDE kan communiceren met het Arduino-bord. Het specifieke apparaatstuurprogramma dat nodig is, hangt af van zowel de versie van het besturingssysteem als het type USB/seriële chip. Voor de CH340 USB/Serial-chips zijn er drivers beschikbaar voor veel besturingssystemen (UNIX, Mac OS X of Windows). De maker van de CH340 levert die drivers hier.

Wanneer u de Arduino Nano voor het eerst aansluit op een USB-poort van uw computer, moet het groene aan / uit-lampje gaan branden en kort daarna moet de blauwe LED langzaam beginnen te knipperen. Dit gebeurt omdat de Nano vooraf is geladen met het BLINK-programma, dat draait op de gloednieuwe Arduino Nano.

Stap 5: Arduino geïntegreerde ontwikkelomgeving (IDE)

Arduino geïntegreerde ontwikkelomgeving (IDE)
Arduino geïntegreerde ontwikkelomgeving (IDE)

Als je de Arduino IDE nog niet hebt geïnstalleerd, kun je deze downloaden van Arduino.cc

Als je aanvullende inleidende informatie wilt over het werken in het Arduino-ecosysteem, raden we je aan de instructies voor de HackerBoxes Starter Workshop te bekijken.

Steek de Nano in de MicroUSB-kabel en het andere uiteinde van de kabel in een USB-poort op de computer, start de Arduino IDE-software, selecteer de juiste USB-poort in de IDE onder tools>port (waarschijnlijk een naam met "wchusb" erin). Selecteer ook "Arduino Nano" in de IDE onder tools>board.

Laad ten slotte een stukje voorbeeldcode op:

Bestand->Voorbeelden->Basis->Knipperen

Dit is eigenlijk de code die vooraf op de Nano was geladen en nu zou moeten lopen om de blauwe LED langzaam te laten knipperen. Als we deze voorbeeldcode laden, verandert er dus niets. Laten we in plaats daarvan de code een beetje aanpassen.

Als je goed kijkt, kun je zien dat het programma de LED aanzet, 1000 milliseconden (één seconde) wacht, de LED uitschakelt, nog een seconde wacht en dan alles opnieuw doet - voor altijd.

Wijzig de code door beide "delay(1000)"-instructies te wijzigen in "delay(100)". Deze aanpassing zorgt ervoor dat de LED tien keer sneller knippert, toch?

Laten we de gewijzigde code in de Nano laden door op de knop UPLOADEN (het pijlpictogram) net boven uw gewijzigde code te klikken. Bekijk hieronder de code voor de status info: "compileren" en dan "uploaden". Uiteindelijk zou de IDE "Uploading Complete" moeten aangeven en zou uw LED sneller moeten knipperen.

Zo ja, gefeliciteerd! Je hebt zojuist je eerste stukje embedded code gehackt.

Als uw snel knipperende versie eenmaal is geladen en actief is, waarom zou u dan niet kijken of u de code opnieuw kunt wijzigen zodat de LED twee keer snel knippert en dan een paar seconden wacht voordat u dit herhaalt? Probeer het eens! Wat dacht je van andere patronen? Als je er eenmaal in bent geslaagd om een gewenst resultaat te visualiseren, te coderen en te observeren om te werken zoals gepland, heb je een enorme stap gezet om een competente hardware-hacker te worden.

Stap 6: servomotoren

Servomotoren
Servomotoren

Servomotoren worden over het algemeen bestuurd door een reeks herhalende elektrische pulsen waarbij de breedte van de pulsen de positie van de servo aangeeft. Het pulsbreedtegemoduleerde (PWM) stuursignaal wordt vaak gegenereerd door een gewone microcontroller zoals een Arduino.

Kleine hobbyservo's, zoals de MG996R, worden aangesloten via een standaard driedraadsaansluiting: twee draden voor een gelijkstroomvoeding en een draad voor het dragen van de stuurpulsen. MG996R-servo's hebben een bedrijfsspanning van 4,8-7,2 VDC.

Stap 7: Het pan- en kantelmechanisme monteren

Het pan- en kantelmechanisme in elkaar zetten
Het pan- en kantelmechanisme in elkaar zetten
  1. Trek beide MG996R-servo's uit hun tas en leg de meegeleverde accessoires voor nu opzij.
  2. Bevestig een aluminium, cirkelvormige servokoppeling aan elke servo. Merk op dat de koppelingen in aparte zakken van de servo's worden geleverd. De koppeling is een zeer strakke pasvorm. Begin door de koppeling op het uiteinde van de servo-uitgang te drukken en draai vervolgens een schroef in het middelste gat. Draai de draad vast om de koppeling op de servo-uitgang te trekken.
  3. Merk op dat er drie beugels zijn voor de pan-tilt montage - twee doosbeugels en één U-beugel.
  4. Monteer een van de box-beugels op de aluminium cirkel voor een van de servo's. We zullen deze servo de pan-servo noemen. Richt de box-beugel met zijn middenwand tegen de aluminium cirkel zodat de andere twee wanden van de box-beugel van de pan-servo af zijn gericht. Gebruik de middelste gaten op de middelste wand van de doosbeugel. Deze opstelling zou de pan-servo in staat moeten stellen om de bevestigde doosbeugel rond te draaien zodra deze is geactiveerd.
  5. Plaats de andere servo (tilt servo) in de box-beugel die is bevestigd aan de aluminium cirkel van de pan servo. Gebruik ten minste twee moeren en bouten om de kantelservo te bevestigen - één aan elke kant.
  6. Houd de U-beugel vast en steek het koperen "lager" vanaf de binnenkant van de U door een van de grote bevestigingsgaten van het draaipunt.
  7. Plaats de U-beugel met het lager op de kantelservo die zich in de beugel van de doos bevindt, zodat het andere grote draaimontagegat (degene zonder het lager) uitgelijnd is met de aluminium cirkel op de kantelservo.
  8. Gebruik schroeven om de U-beugel op de aluminium cirkel aan één kant van de U-beugel te bevestigen.
  9. Draai aan de andere kant van de U-beugel een enkele schroef door het lager en in het kleine gaatje in de kokerbeugel binnenin. Hierdoor zou de U-beugel later rond de box-beugel moeten kunnen draaien wanneer de kantelservo wordt geactiveerd.

Stap 8: De pan- en kantelmontage monteren

De pan- en kantelmontage monteren
De pan- en kantelmontage monteren
De pan- en kantelmontage monteren
De pan- en kantelmontage monteren

De resterende box-beugel kan worden vastgeschroefd op een klein houten plankje om als camerabasis te dienen, zoals weergegeven in de afbeelding. Ten slotte wordt de pan-servo in die resterende doosbeugel gemonteerd met behulp van ten minste twee moeren en bouten om de servo aan de beugel te bevestigen - één aan elke kant.

Stap 9: Bedraad en test de pan- en kantelmontage

Bedraad en test de pan- en kantelmontage
Bedraad en test de pan- en kantelmontage

Om de servo's volgens het schema te bedraden, is het het snelst om gewoon de originele vrouwelijke connectoren van de servo's te knippen en vervolgens enkele vrouwelijke DuPont-jumperuiteinden te gebruiken om de signaal- en aardelijnen aan de Nano-pinnen te bevestigen.

De Nano heeft niet genoeg stroom op de 5V-voeding om de servo's via USB te voeden, dus een extra voeding wordt aanbevolen. Dit kan van alles zijn in het bereik van 4,8-7,2 Volt. Vier AA-batterijen (in serie) zullen bijvoorbeeld prima werken. Een bankvoorraad of muurwrat is ook een goede keuze.

De eenvoudige Arduino-code die hier als PanTiltTest.ino is bijgevoegd, kan worden gebruikt om de besturing van de twee servo's van de seriële monitor op de Arduino IDE te testen. Stel de baudrate van de monitor in zodat deze overeenkomt met de 9600bps die in de voorbeeldcode is ingesteld. Als u hoekwaarden tussen 0 en 180 graden invoert, worden de servo's dienovereenkomstig gepositioneerd.

Ten slotte kan de USB-cameramodule (of een andere sensor) op de U-beugel van de pan-tilt-assemblage worden gemonteerd voor gebruik in volgtoepassingen.

Stap 10: Face Tracking met OpenCV

Image
Image
Hack de planeet
Hack de planeet

Een machine vision face-tracking systeem kan worden geïmplementeerd door subsystemen te combineren zoals weergegeven in het blokschema. De SerialServoControl-schets voor Arduino is te vinden in de volgende Sparkfun-tutorial, samen met een gerelateerde demonstratie met OpenCV, Processing, een Arduino, een USB-camera en een Pan/Tilt-assemblage om een menselijk gezicht te volgen. De demo gebruikt twee servo's om de camera te verplaatsen om het gezicht gecentreerd in het videoframe te houden, zelfs als de gebruiker door de kamer beweegt. Bijvoorbeeld code in C#, bekijk de GitHub-repository voor de CamBot-video.

Stap 11: Hack de planeet

Als je van deze Instrucable hebt genoten en elke maand een doos met elektronica- en computertechnologieprojecten als deze rechtstreeks in je mailbox wilt hebben, sluit je dan bij ons aan door HIER INSCHRIJVEN.

Reik uit en deel uw succes in de opmerkingen hieronder of op de HackerBoxes Facebook-pagina. Laat het ons zeker weten als je vragen hebt of ergens hulp bij nodig hebt. Bedankt dat je deel uitmaakt van HackerBoxes. Laat uw suggesties en feedback maar komen. HackerBoxen zijn JOUW dozen. Laten we er iets geweldigs van maken!

Aanbevolen: