Inhaltsverzeichnis:

HackerBox 0024: Visionsquest: 11 Schritte
HackerBox 0024: Visionsquest: 11 Schritte

Video: HackerBox 0024: Visionsquest: 11 Schritte

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

Vision Quest - Diesen Monat experimentieren HackerBox-Hacker mit Computer Vision und Servo Motion Tracking. Dieses Instructable enthält Informationen für die Arbeit mit HackerBox # 0024, die Sie hier abholen können, solange der Vorrat reicht. Wenn Sie jeden Monat eine solche HackerBox direkt in Ihre Mailbox erhalten möchten, abonnieren Sie bitte HackerBoxes.com und schließen Sie sich der Revolution an!

Themen und Lernziele für HackerBox 0024:

  • Experimentieren mit Computer Vision
  • OpenCV (Computer Vision) einrichten
  • Programmierung des Arduino Nano über die Arduino IDE
  • Steuerung von Servomotoren mit dem Arduino Nano
  • Zusammenbau einer mechanischen Schwenk- und Neigebaugruppe
  • Steuerung von Pan- und Tilt-Bewegungen mit einem Mikrocontroller
  • Durchführen von Gesichtsverfolgung mit OpenCV

HackerBoxes ist der monatliche Abo-Box-Service für DIY-Elektronik und Computertechnik. Wir sind Bastler, Macher und Experimentatoren. Wir sind die Träumer der Träume. HACK DEN PLANETEN!

Schritt 1: HackerBox 0024: Inhalt der Box

HackerBox 0024: Lieferumfang
HackerBox 0024: Lieferumfang
  • HackerBoxes #0024 Sammelbare Referenzkarte
  • Schwenk- und Neigebaugruppe mit drei Halterungen
  • Zwei MG996R Servos mit Zubehör
  • Zwei kreisförmige Servokupplungen aus Aluminium
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Digitalkamera-Baugruppe mit USB-Kabel
  • Drei Objektive mit Universal Clip Mount
  • Leuchte für medizinische Inspektionsstifte
  • Dupont Pullover für Männer/Frauen
  • MicroUSB-Kabel
  • Exklusiver OpenCV-Aufkleber
  • Exklusiver Dia de Muertos Aufkleber

Einige andere Dinge, die hilfreich sein werden:

  • Kleiner Holzbrettschrott für Kamerabasis
  • Lötkolben, Lötzinn und grundlegende Lötwerkzeuge
  • Computer zum Ausführen von Softwaretools

Am wichtigsten sind Abenteuerlust, DIY-Geist und Hacker-Neugier. Hardcore-DIY-Elektronik ist kein triviales Unterfangen, und wir verwässern es nicht für Sie. Das Ziel ist Fortschritt, nicht Perfektion. Wenn Sie hartnäckig bleiben und das Abenteuer genießen, können Sie viel Befriedigung daraus ziehen, neue Technologien zu lernen und hoffentlich einige Projekte zum Laufen zu bringen. Wir empfehlen, jeden Schritt langsam zu machen, auf die Details zu achten und nie zu zögern, um Hilfe zu bitten.

HÄUFIG GESTELLTE FRAGEN: Wir bitten alle HackerBox-Mitglieder um einen wirklich großen Gefallen. Bitte nehmen Sie sich ein paar Minuten Zeit, um die FAQ auf der HackerBoxes-Website zu lesen, bevor Sie sich an den Support wenden. Während wir natürlich allen Mitgliedern so gut wie nötig helfen wollen, beinhalten die meisten unserer Support-E-Mails einfache Fragen, die in den FAQ sehr klar angesprochen werden. Danke für dein Verständnis!

Schritt 2: Computer Vision

Computer Vision
Computer Vision

Computer Vision ist ein interdisziplinäres Feld, das sich damit beschäftigt, wie Computer aus digitalen Bildern oder Videos ein hohes Verständnis gewinnen. Aus ingenieurwissenschaftlicher Sicht zielt Computer Vision darauf ab, Aufgaben zu automatisieren, die das menschliche visuelle System ausführen kann. Als wissenschaftliche Disziplin beschäftigt sich Computer Vision mit der Theorie künstlicher Systeme, die Informationen aus Bildern extrahieren. Die Bilddaten können viele Formen annehmen, wie beispielsweise Videosequenzen, Ansichten von mehreren Kameras oder mehrdimensionale Daten von einem medizinischen Scanner. Als technologische Disziplin versucht Computer Vision, ihre Theorien und Modelle für den Bau von Computer Vision Systemen anzuwenden. Zu den Unterdomänen der Computer Vision gehören Szenenrekonstruktion, Ereigniserkennung, Videoverfolgung, Objekterkennung, 3D-Posenschätzung, Lernen, Indizierung, Bewegungsschätzung und Bildwiederherstellung.

Es ist interessant festzustellen, dass Computer Vision als das Gegenteil von Computergrafik betrachtet werden kann.

Schritt 3: Verarbeitung und OpenCV

Verarbeitung und OpenCV
Verarbeitung und OpenCV

Processing ist ein flexibles Software-Skizzenbuch und eine Sprache zum Erlernen des Programmierens im Kontext der bildenden Kunst. Processing hat die Softwarekompetenz in den bildenden Künsten und die visuelle Kompetenz in der Technologie gefördert. Es gibt Zehntausende von Studenten, Künstlern, Designern, Forschern und Bastlern, die Processing zum Lernen und Prototyping verwenden.

OpenCV (Open Source Computer Vision Library) ist eine Open-Source-Softwarebibliothek für Computer Vision und maschinelles Lernen. OpenCV wurde entwickelt, um eine gemeinsame Infrastruktur für Computer-Vision-Anwendungen bereitzustellen und den Einsatz der maschinellen Wahrnehmung in kommerziellen Produkten zu beschleunigen. Die OpenCV-Bibliothek verfügt über mehr als 2500 optimierte Algorithmen, die einen umfassenden Satz sowohl klassischer als auch hochmoderner Computer-Vision- und Machine-Learning-Algorithmen umfassen. Diese Algorithmen können verwendet werden, um Gesichter zu erkennen und zu erkennen, Objekte zu identifizieren, menschliche Aktionen in Videos zu klassifizieren, Kamerabewegungen zu verfolgen, sich bewegende Objekte zu verfolgen und so weiter.

Installieren Sie OpenCV innerhalb der Verarbeitung aus dem Menü Datei > Beispiele, indem Sie „Beispiele hinzufügen“auswählen und dann auf der Registerkarte Bibliotheken sowohl die Video- als auch die OpenCV-Bibliotheken installieren. Öffnen Sie das LiveCamTest-Beispiel für die grundlegende Gesichtsverfolgung. Sehen Sie sich hier einige andere OpenCV-Beispiele für die Verarbeitung an.

Mehr Ressourcen:

Getting Started with Computer Vision ist ein Buchprojekt, das einen einfachen Einstieg für kreatives Experimentieren mit Computer Vision bietet. Es stellt den Code und die Konzepte vor, die zum Erstellen von Computer Vision-Projekten erforderlich sind.

Computer Vision mit Python programmieren ist ein O'Reilly-Buch über PCV, ein Open-Source-Python-Modul für Computer Vision.

OpenCV lernen

Computer Vision: Algorithmen und Anwendungen

OpenCV meistern

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

Chris Urmson TED Talk Wie ein fahrerloses Auto die Straße sieht

Schritt 4: Arduino Nano-Mikrocontroller-Plattform

Arduino Nano-Mikrocontroller-Plattform
Arduino Nano-Mikrocontroller-Plattform

Wir können jede gängige Microcontroller-Plattform zur Steuerung von Servos in unserer Schwenk- und Neigekamerahalterung verwenden. Das Arduino Nano ist ein oberflächenmontierbares, Steckbrett-freundliches, miniaturisiertes Arduino-Board mit integriertem USB. Es ist erstaunlich voll funktionsfähig und leicht zu hacken.

Merkmale:

  • Mikrocontroller: Atmel ATmega328P
  • Spannung: 5V
  • Digitale I/O-Pins: 14 (6 PWM)
  • Analoge Eingangspins: 8
  • Gleichstrom pro E/A-Pin: 40 mA
  • Flash-Speicher: 32 KB (2 KB für Bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Taktfrequenz: 16 MHz
  • Abmessungen: 17 mm x 43 mm

Diese besondere Variante des Arduino Nano ist das schwarze Robotdyn-Design. Die Schnittstelle besteht aus einem integrierten MicroUSB-Anschluss, der mit den gleichen MicroUSB-Kabeln kompatibel ist, die bei vielen Mobiltelefonen und Tablets verwendet werden.

Arduino Nanos verfügen über einen integrierten USB/Seriell-Bridge-Chip. Bei dieser speziellen Variante ist der Brückenchip der CH340G. Beachten Sie, dass es verschiedene andere Arten von USB / seriellen Brückenchips gibt, die auf den verschiedenen Arten von Arduino-Boards verwendet werden. Diese Chips ermöglichen es dem USB-Port des Computers, mit der seriellen Schnittstelle auf dem Prozessorchip des Arduino zu kommunizieren.

Das Betriebssystem eines Computers erfordert einen Gerätetreiber, um mit dem USB/Seriell-Chip zu kommunizieren. Der Treiber ermöglicht es der IDE, mit dem Arduino-Board zu kommunizieren. Der benötigte spezifische Gerätetreiber hängt sowohl von der Betriebssystemversion als auch vom Typ des USB/Seriell-Chips ab. Für die CH340 USB/Seriell-Chips stehen Treiber für viele Betriebssysteme (UNIX, Mac OS X oder Windows) zur Verfügung. Der Hersteller des CH340 liefert diese Treiber hier.

Wenn Sie den Arduino Nano zum ersten Mal an einen USB-Port Ihres Computers anschließen, sollte die grüne Betriebsanzeige aufleuchten und kurz darauf sollte die blaue LED langsam zu blinken beginnen. Dies geschieht, weil der Nano mit dem BLINK-Programm vorinstalliert ist, das auf dem brandneuen Arduino Nano läuft.

Schritt 5: Arduino integrierte Entwicklungsumgebung (IDE)

Arduino integrierte Entwicklungsumgebung (IDE)
Arduino integrierte Entwicklungsumgebung (IDE)

Wenn Sie die Arduino IDE noch nicht installiert haben, können Sie sie von Arduino.cc herunterladen

Wenn Sie zusätzliche einführende Informationen zum Arbeiten im Arduino-Ökosystem wünschen, empfehlen wir Ihnen, die Anleitung zum HackerBoxes Starter Workshop zu lesen.

Stecken Sie den Nano in das MicroUSB-Kabel und das andere Ende des Kabels in einen USB-Port des Computers, starten Sie die Arduino IDE-Software, wählen Sie den entsprechenden USB-Port in der IDE unter tools>port (wahrscheinlich ein Name mit "wchusb" darin)). Wählen Sie auch in der IDE unter Tools>Board "Arduino Nano" aus.

Laden Sie zum Schluss einen Beispielcode hoch:

Datei->Beispiele->Grundlagen->Blinken

Dies ist eigentlich der Code, der auf dem Nano vorgeladen wurde und jetzt laufen sollte, um die blaue LED langsam zu blinken. Dementsprechend ändert sich nichts, wenn wir diesen Beispielcode laden. Lassen Sie uns stattdessen den Code ein wenig ändern.

Wenn Sie genau hinsehen, können Sie sehen, dass das Programm die LED einschaltet, 1000 Millisekunden (eine Sekunde) wartet, die LED ausschaltet, eine weitere Sekunde wartet und dann alles wieder tut - für immer.

Ändern Sie den Code, indem Sie beide "delay(1000)"-Anweisungen in "delay(100)" ändern. Diese Änderung führt dazu, dass die LED zehnmal schneller blinkt, oder?

Laden wir den geänderten Code in den Nano, indem Sie auf die Schaltfläche HOCHLADEN (das Pfeilsymbol) direkt über Ihrem geänderten Code klicken. Beobachten Sie unten den Code für die Statusinfo: "Kompilieren" und dann "Hochladen". Schließlich sollte die IDE "Uploading Complete" anzeigen und Ihre LED sollte schneller blinken.

Wenn ja, herzlichen Glückwunsch! Sie haben gerade Ihren ersten eingebetteten Code gehackt.

Wenn Ihre Fast-Blink-Version geladen ist und ausgeführt wird, können Sie den Code erneut ändern, damit die LED zweimal schnell blinkt, und dann einige Sekunden warten, bevor Sie den Vorgang wiederholen. Versuche es! Wie wäre es mit anderen Mustern? Sobald es Ihnen gelungen ist, ein gewünschtes Ergebnis zu visualisieren, zu codieren und zu beobachten, dass es wie geplant funktioniert, haben Sie einen enormen Schritt in Richtung eines kompetenten Hardware-Hackers getan.

Schritt 6: Servomotoren

Servomotor
Servomotor

Servomotoren werden im Allgemeinen durch eine Reihe sich wiederholender elektrischer Impulse gesteuert, wobei die Breite der Impulse die Position des Servos anzeigt. Das pulsweitenmodulierte (PWM) Steuersignal wird oft von einem üblichen Mikrocontroller wie einem Arduino erzeugt.

Kleine Hobbyservos wie das MG996R werden über eine Standard-Dreileiterverbindung angeschlossen: zwei Drähte für eine Gleichstromversorgung und eine für die Übertragung der Steuerimpulse. MG996R Servos haben einen Betriebsspannungsbereich von 4,8-7,2 VDC.

Schritt 7: Zusammenbau des Schwenk- und Neigemechanismus

Zusammenbau des Schwenk- und Neigemechanismus
Zusammenbau des Schwenk- und Neigemechanismus
  1. Ziehen Sie beide MG996R-Servos aus ihren Taschen und legen Sie das mitgelieferte Zubehör vorerst beiseite.
  2. Befestigen Sie an jedem Servo einen runden Aluminium-Servokoppler. Beachten Sie, dass die Kupplungen in separaten Beuteln von den Servos geliefert werden. Die Kupplung sitzt sehr eng. Drücken Sie zunächst die Kupplung auf das Ende des Servoausgangs und schrauben Sie dann eine Schraube in das mittlere Loch. Ziehen Sie das Gewinde fest, um die Kupplung auf den Servoausgang zu ziehen.
  3. Beachten Sie, dass es drei Halterungen für die Schwenk-Neige-Einheit gibt - zwei Kastenhalterungen und eine U-Halterung.
  4. Montieren Sie eine der Kastenhalterungen auf dem Aluminiumkreis für eines der Servos. Wir nennen dieses Servo das Pan-Servo. Richten Sie die Kastenhalterung mit ihrer Mittelwand gegen den Aluminiumkreis so aus, dass die anderen beiden Wände der Kastenhalterung vom Schwenkservo weg zeigen. Verwenden Sie die Mittellöcher an der Mittelwand der Kastenhalterung. Diese Anordnung sollte es dem Schwenkservo ermöglichen, die angebrachte Kastenhalterung herumzudrehen, sobald sie betätigt wird.
  5. Positionieren Sie das andere Servo (Neigungsservo) in der Kastenhalterung, die am Aluminiumkreis des Schwenkservos befestigt ist. Verwenden Sie mindestens zwei Muttern und Schrauben, um das Neigungsservo zu befestigen - eine auf jeder Seite.
  6. Halten Sie die U-Halterung fest und führen Sie das Messing-"Lager" von der Innenseite des U durch eines der großen Drehbefestigungslöcher ein.
  7. Platzieren Sie die U-Halterung mit dem Lager auf dem Neigungsservo, das sich in der Kastenhalterung befindet, so dass das andere große Drehbefestigungsloch (das ohne Lager) mit dem Aluminiumkreis auf dem Neigungsservo ausgerichtet ist.
  8. Verwenden Sie Schrauben, um die U-Halterung auf dem Aluminiumkreis auf einer Seite der U-Halterung zu befestigen.
  9. Ziehen Sie auf der anderen Seite der U-Halterung eine einzelne Schraube durch das Lager und in das kleine Loch in der Kastenhalterung hinein. Dies sollte es dem U-Bügel ermöglichen, sich später um den Kastenbügel zu drehen, wenn das Neigungsservo betätigt wird.

Schritt 8: Montage der Schwenk- und Neigebaugruppe

Montage der Schwenk- und Neigebaugruppe
Montage der Schwenk- und Neigebaugruppe
Montage der Schwenk- und Neigebaugruppe
Montage der Schwenk- und Neigebaugruppe

Die verbleibende Kastenhalterung kann wie im Bild gezeigt auf einem kleinen Holzbrettschrott als Kamerabasis dienen. Schließlich wird das Schwenkservo innerhalb dieser verbleibenden Kastenhalterung montiert, wobei mindestens zwei Muttern und Schrauben verwendet werden, um das Servo an der Halterung zu befestigen - eine auf jeder Seite.

Schritt 9: Verdrahten und testen Sie die Schwenk- und Neigebaugruppe

Verdrahten und testen Sie die Schwenk- und Neigebaugruppe
Verdrahten und testen Sie die Schwenk- und Neigebaugruppe

Um die Servos gemäß dem Schaltplan zu verdrahten, ist es am schnellsten, einfach die originalen Buchsen von den Servos abzuschneiden und dann einige weibliche DuPont-Jumperenden zu verwenden, um die Signal- und Masseleitungen an die Nano-Pins anzuschließen.

Der Nano hat an der 5V-Versorgung nicht genügend Strom, um die Servos über USB mit Strom zu versorgen, daher wird eine zusätzliche Versorgung empfohlen. Dies kann alles im Bereich von 4,8-7,2 Volt sein. Zum Beispiel funktionieren vier AA-Batterien (in Reihe) gut. Eine Bankversorgung oder Wandwarze ist auch eine gute Wahl.

Der einfache Arduino-Beispielcode, der hier als PanTiltTest.ino angehängt ist, kann verwendet werden, um die Steuerung der beiden Servos vom seriellen Monitor auf der Arduino IDE zu testen. Stellen Sie die Baudrate des Monitors so ein, dass sie den im Beispielcode eingestellten 9600 bps entspricht. Durch Eingabe von Winkelwerten zwischen 0 und 180 Grad werden die Servos entsprechend positioniert.

Schließlich kann das USB-Kameramodul (oder ein anderer Sensor) zur Verwendung in Tracking-Anwendungen an der U-Halterung der Schwenk-Neige-Baugruppe montiert werden.

Schritt 10: Gesichtsverfolgung mit OpenCV

Image
Image
Hacke den Planeten
Hacke den Planeten

Ein Gesichtsverfolgungssystem für maschinelles Sehen kann durch Kombinieren von Subsystemen implementiert werden, wie im Blockdiagramm gezeigt. Die SerialServoControl-Skizze für Arduino finden Sie im folgenden Sparkfun-Tutorial zusammen mit einer entsprechenden Demonstration mit OpenCV, Processing, einem Arduino, einer USB-Kamera und einer Pan/Tilt-Baugruppe, um ein menschliches Gesicht zu verfolgen. Die Demo verwendet zwei Servos, um die Kamera neu zu positionieren, um das Gesicht im Videobild zentriert zu halten, auch wenn sich der Benutzer im Raum bewegt. Sehen Sie sich zum Beispiel Code in C# im GitHub-Repository für das CamBot-Video an.

Schritt 11: Hacken Sie den Planeten

Wenn Sie dieses Instrucable genossen haben und jeden Monat eine Schachtel mit Elektronik- und Computertechnologieprojekten wie diesem direkt an Ihre Mailbox geliefert haben möchten, treten Sie uns bitte HIER ABONNIEREN bei.

Melde dich und teile deinen Erfolg in den Kommentaren unten oder auf der HackerBoxes Facebook-Seite. Lassen Sie es uns auf jeden Fall wissen, wenn Sie Fragen haben oder Hilfe bei irgendetwas benötigen. Vielen Dank, dass Sie Teil von HackerBoxes sind. Bitte halten Sie Ihre Vorschläge und Rückmeldungen bereit. HackerBoxes sind IHRE Boxen. Lass uns etwas Großartiges machen!

Empfohlen: