Inhaltsverzeichnis:

Bewegungsgesteuerter Fernsuch- und Entsorgungsroboter von Leap - Gunook
Bewegungsgesteuerter Fernsuch- und Entsorgungsroboter von Leap - Gunook
Anonim
Image
Image

Als Teil meines Beitrags für den Leap Motion #3D Jam war ich begeistert, diesen drahtlosen gestengesteuerten Such-/Rettungsroboter basierend auf dem Raspberry Pi zu bauen. Dieses Projekt demonstriert und liefert ein minimalistisches Beispiel dafür, wie drahtlose 3D-Handgesten verwendet werden können, um physische Dinge zu steuern und mit ihnen zu interagieren.

Da dieses Projekt das beliebte WebIOPi-IoT-Framework auf dem Raspberry Pi verwendet, kann es sehr einfach erweitert werden, um typischerweise jeden Sensor/Hardware/Elektronik zu steuern und zu verbinden, die mit dem Raspberry Pi verbunden werden kann.

Einige mögliche Szenarien, von denen ich mir vorstelle, dass andere Maker dieses Projekt als Basisgerüst verwenden, auf dem sie aufbauen können:

1. Gestengesteuerter Bombenentsorgungsroboter (unter Verwendung eines OWI-Arms usw.)

2. Fernchirurgischer Eingriff durch einen Arzt

3. Gestengesteuerte interaktive Kunstausstellungen oder Bildungsinhalte

4. Unendlich andere Möglichkeiten/Integrationen (ich bin durch meine Vorstellungskraft begrenzt:))

Schritt 1: Übersicht

Das WebIOPi-Framework verstehen
Das WebIOPi-Framework verstehen

Dieses Projekt ermöglicht es einem Benutzer, einen Roboter mit 3D-Handgesten über einen an einen PC angeschlossenen Leap Motion interaktiv zu steuern.

Der Raspberry Pi an Bord des Roboters verfügt auch über eine USB-Webcam, die Live-Videos zurück an den Benutzer streamt, die in einem Webbrowser angezeigt werden können. Die in diese Webseite eingebettete LeapMotion-JavaScript-Bibliothek verarbeitet Handgesten und sendet Steuersignale zurück an den Roboter, der sich dann entsprechend bewegt.

Der Raspberry Pi am Roboter wird mit Hilfe des daran angeschlossenen USB-WLAN-Dongles als Hotspot (AP-Modus) konfiguriert. Dadurch können sich unsere PCs/Geräte direkt mit dem Raspberry Pi verbinden und über eine Webseite steuern. Der Raspberry Pi kann auch für den Betrieb im Client-Modus konfiguriert werden, wobei er sich drahtlos mit dem AP des WLAN-Routers verbindet, mit dem der PC/die Geräte bereits verbunden sind.

Dieses Projekt basiert auf WebIOPi (https://webiopi.trouch.com/), einem beliebten IoT-Framework für Raspberry Pi. Durch die Verwendung des mitgelieferten Weaved IoT Kit (oder durch Portweiterleitung am Router) kann dieser Roboter ferngesteuert werden und/oder Daten von jedem Teil der Welt empfangen.

Die folgenden Komponenten wurden für den Bau des Projekts verwendet:

  1. Raspberry Pi B (100% aufwärtskompatibel mit Raspberry Pi B+)
  2. Logitech USB-Webcam (dürftige 1,3 Megapixel)
  3. L293D Motortreiber-IC und Breakout Shield
  4. USB-WLAN-Dongle für Raspberry Pi
  5. USB-Powerbank für Raspberry Pi
  6. Externe 4V/1,5A Batterie zum Antrieb der Robotermotoren

Schritt 2: Projekt erstellen

WebIOPi installieren, benutzerdefinierten Code schreiben und Webcam konfigurieren:

WebIoPi-Installationsanleitungen, Framework-Grundlagen und viele Beispiele finden Sie auf der Projektseite hier:

Damit die auf der Webseite eingebetteten LeapMotion-Funktionen GPIO-Aktionen auf dem Raspberry Pi auslösen, haben wir Makros verwendet, deren Details hier zu finden sind:

Ich habe auch einige Einführungshinweise zu dem oben genannten Prozess geschrieben, die im Anhang zu finden sind.

Installieren und Konfigurieren der Webcam

Wir verwenden den MJPG-Streamer, um den Videofeed vom Raspberry Pi über die am Pi angeschlossene USB-Webcam zurück zum Browser zu streamen. Bitte befolgen Sie die hier angegebenen Setup- und Build-Anweisungen https://blog.miguelgrinberg.com/post/how-to-build-…, um den MJPG-Streamer auf dem Raspberry Pi zum Laufen zu bringen.

Konfigurieren des Raspberry Pi als AP/Hotspot

Um den Raspberry Pi als Hostpot einzurichten, folgen Sie bitte der Anleitung hier: https://elinux.org/RPI-Wireless-Hotspot. Ich habe die statische IP des Raspberry Pi als 192.168.42.1 konfiguriert, die wir in den Browser eingeben würden, sobald der Pi in den AP-Modus startet.

WebIOPi, MJPG-Streamer und WiFi-Hotspot-Dienst wurden so konfiguriert, dass sie beim Booten automatisch ausgeführt werden. Dies ermöglicht es uns, einen Webbrowser direkt zu öffnen und nach dem Booten eine Verbindung zum Roboter herzustellen. Die im Repository verfügbare Datei rc.local wird verwendet, um die Webcam beim Booten auszuführen.

Schritt 3: Aufbau-/Verdrahtungsanweisungen

4 GPIOs des Raspberry Pi, nämlich GPIO 9, 11, 23 & 24, sind mit dem L293D-Motortreiber-IC verbunden, der die Motoren entsprechend ansteuert, nachdem er Makroanforderungen von der vom Webiopi-Framework bereitgestellten Webseite erhalten hat. Der USB-WLAN-Dongle und die USB-Logitech-Webcam werden an die 2 verfügbaren USB-Ports des Raspberry Pi angeschlossen. Eine 5V 4000 Mah Powerbank versorgt den Pi mit dem Hauptstrom. Zum Antrieb der Motoren wird eine 4V 1,5A Blei-Säure-Batterie verwendet.

Hinweis: Da der maximale Ausgangsstrom der von mir verwendeten Powerbank mickrige 1000 Mah betrug, musste ich die externe Blei-Säure-Batterie zum Antrieb der Motoren verwenden. Wenn Sie eine Powerbank haben, die >= 2000Mah liefert, können Sie die Motoren direkt von der 5V-Schiene auf dem Pi antreiben (ich würde dies jedoch nicht für leistungshungrige Motoren empfehlen).

Im Folgenden werden die 3 wichtigsten Unterabschnitte des Projekts LeapMotion Javascript API, WebIOPi und MJPG-Streamer und deren grundlegende Funktionsweise/Einrichtung kurz skizziert.

Schritt 4: Das WebIOPi-Framework verstehen

Das im Browser angezeigte Frontend ist in HTML (Dateiname:index.html) & Javascript geschrieben, während das Backend, das die GPIOs steuert, in Python geschrieben ist (Dateiname: script.py). Detaillierte Hinweise zum Erstellen einer benutzerdefinierten WebApp basierend auf dem WebIOPi-Framework sind als Hinweise im Bitbucket-Repository angehängt.

Im Python-Skript definierte benutzerdefinierte Makros können aus der HTML-Datei ausgelöst werden.

ZB: webiopi().callMacro("go_forward"); Dies ist ein benutzerdefinierter Aufruf eines im Python-Skript definierten Makros go_forward, das den Prozess des Antreibens beider Motoren in Vorwärtsrichtung behandelt.

Die Verzeichnishierarchie, in der die Dateien auf dem Pi gespeichert sind, wird im angehängten Bild angezeigt.

Der Robot-Ordner enthält diese Unterordner:

  • html: enthält index.html
  • Python: enthält script.py
  • mjpg-streamer-r63: enthält die Build-Dateien und die ausführbare Datei zum Ausführen der Webcam

MJPG-Streamer: Der Live-Videostream der USB-Webcam läuft standardmäßig auf Port 8080 des Pi. Um den Stream manuell anzuzeigen, navigieren Sie nach dem Einschalten der Webcam im Browser zu RASPBERRYPI_IP:8080.

LeapMotion-Code:

Codeausschnitte aus den im LeapMotion SDK bereitgestellten Beispielen wurden in die Datei index.html eingebettet. Die LeapMotion-Datei LeapMotion muss dem html-Ordner im Projektverzeichnis auf dem Raspberry Pi hinzugefügt werden.

Der vom LeapMotion gesendete Parameter palmPosition wird verwendet, um zu bestimmen, welches Makro auf dem Raspberry Pi ausgelöst werden soll.

Schritt 5: Ausführen des Projekts

Schalten Sie einfach den Raspberry Pi ein und warten Sie ungefähr eine Minute. Sie werden sehen, dass ein neuer Hotpsot RaspberryPi angezeigt wird. Verbinden Sie sich mit diesem Hotspot und öffnen Sie diese statische IP-Adresse im Browser: 192.168.42.1:8000. 8000 ist der Standardport von WebIOPi.

Der Raspberry Pi kann auch so konfiguriert werden, dass er sich als In-Client mit dem lokalen WLAN-Netzwerk verbindet, anstatt als Hotspot angezeigt zu werden. Sie müssen dann die dynamische IP ermitteln, die der Router dem Raspberry Pi zugewiesen hat, und sie dann im Browser aufrufen, um mit dem Bot herumzuspielen.

Sie können einen Kommentar hinterlassen, wenn Sie Hilfe benötigen oder Fragen zum Projekt haben. Fröhliches Springen!

Der gesamte Quellcode ist beigefügt. Sie können einen Kommentar hinterlassen, wenn Sie Hilfe bei einem Teil des Baus des Projekts benötigen. Fröhliches Springen!

Empfohlen: