Inhaltsverzeichnis:

VR-gesteuertes RC-Auto - Gunook
VR-gesteuertes RC-Auto - Gunook

Video: VR-gesteuertes RC-Auto - Gunook

Video: VR-gesteuertes RC-Auto - Gunook
Video: This is How i Control a RC Drift Car by Gesture Sensing 2024, Juli
Anonim
Image
Image

Wollten Sie schon immer einmal geschrumpft sein und ein Raumschiff wie Innerspace oder Fantastic Voyage steuern? Nun, ich denke, das ist so nah, wie Sie kurzfristig kommen werden!

Hier ist die Tonhöhe:

Ein ferngesteuertes Real-Life-Auto, das von einer Virtual-Reality-Befehlskonsole gesteuert wird. Dies bedeutet, dass Sie ein VR-Headset anschnallen, einen Schalter an einem RC-Auto umlegen und dann von VR mit Live-Video-Feed direkt in Ihr Gesicht steuern können.

Es gibt drei Dinge, die ich implementiert habe, die Sie auf dem VR-Auto steuern können.

  1. Räder
  2. Horn
  3. Beleuchtung

All dies hat eine Art Knopf oder einen Hebel in VR, den Sie umdrehen oder umschalten können, um das Auto zu fahren.

Das vollständige Repo und weitere Informationen finden Sie auf meinem Github und meiner Website!

Schritt 1: Materialien und Werkzeuge

Materialien und Werkzeuge
Materialien und Werkzeuge
Materialien und Werkzeuge
Materialien und Werkzeuge

Mechanisch:

Chassis-Kit mit Allradantrieb

Elektrisch:

  • Rad-Encoder
  • 3S 1300mAh Akku
  • Arduino Uno
  • Arduino-Motorschild
  • Piezoelektrischer Summer
  • Kleine LED
  • XT60-Anschlüsse
  • Aufwärts-/Abwärtswandler

Rechner:

  • Jedes eingebettete Computersystem: Raspberry Pi, Jetson Nano usw.
  • USB-Kamera (vorzugsweise - 180-Grad-Kamera)

Werkzeuge / Extras:

  • Lötkolben
  • Etwas VR-Setup - ich habe die Oculus Rift
  • Multimeter

Schritt 2: Auto konstruieren

Auto bauen
Auto bauen
Auto bauen
Auto bauen
Auto bauen
Auto bauen

Das Chassis für das Auto ist super einfach zu konstruieren. Sie müssen nur die Motoren über die Laschen, die sie Ihnen geben, an der Hauptplatine befestigen. Nachdem Sie die Räder und Motoren angebracht haben, benötigen Sie auch etwas, um die Kamera an der Vorderseite des Autos zu befestigen.

Ich habe den Karton verwendet, in dem die Kamera geliefert wurde, um sie zu montieren. Ich schneide eine große L-Form aus und schneide ein Loch für die Kamera, um gründlich zu stoßen. Danach können Sie die Kamera einfach durchstecken und etwas Klebeband in die Rückseite legen, um sie an Ort und Stelle zu halten. Wenn Sie möchten, können Sie jetzt auch Löcher für Ihre Scheinwerfer einbringen oder dies später beim Abmessen der Kabellänge tun.

Außerdem müssen Sie den Rad-Encoder an einem der Räder anbringen. Egal welches, ich habe es auf das linke Hinterrad gelegt. Sie müssen die Magnetscheibe auf die eigentliche Welle des Rades legen und der Encoder sollte am Auto daneben befestigt werden. Es ist ziemlich empfänglich, also muss es nicht ganz oben sein, sondern so nah wie möglich. Ich habe meinen Encoder mit Klebeband und einem Kabelbinder gesichert. Der Encoder ist das, was wir verwenden werden, um die Geschwindigkeit unseres Autos zu messen.

Schritt 3: Lötkreise

Lötkreise
Lötkreise
Lötkreise
Lötkreise

Dieser Teil ist ziemlich mühsam, aber nicht kompliziert. Wenn Sie dem Bild folgen und alles ausmessen, bevor Sie den Draht durchschneiden, ist es nicht so schlimm.

Während Sie dies tun, sollten Sie auch Ihren Abwärtswandler kalibrieren, um die richtige Spannung auszugeben. Der Raspberry Pi und der Jetson Nano nehmen beide 5 V auf, aber unsere Batterie hat 11,1 V. Also müssen wir sicherstellen, dass wir unsere Elektronik nicht braten. Stecken Sie dazu Ihren Akku in die Eingangsseite des Abwärtswandlers. Während die Batterie eingesteckt ist, verwenden Sie Ihr Multimeter, um die Ausgangsseite des Abwärtswandlers zu messen. Verwenden Sie einen kleinen Schlitzschraubendreher, um das Potentiometer am Abwärtswandler zu drehen, bis die Ausgangsspannung 5 V beträgt. Sobald die Ausgabe korrekt ist, müssen Sie das Potentiometer nicht mehr drehen.

Schritt 4: Abhängigkeiten auf dem eingebetteten System installieren

Abhängigkeiten vom eingebetteten System installieren
Abhängigkeiten vom eingebetteten System installieren

Hier gibt es nicht viel zu tun, aber trotzdem unglaublich wichtig.

Stellen Sie zunächst sicher, dass Sie eine Verbindung zu dem von Ihnen verwendeten Router herstellen, damit er sich von nun an automatisch verbinden kann.

Öffnen Sie dann ein Terminal und geben Sie Folgendes ein:

sudo apt-Update

sudo apt install openssh-server

sudo apt install python-pip pip install numpy pip install opencv-python pip install pyzmq

Sobald diese Dinge installiert sind, müssen wir sicherstellen, dass es immer erkannt wird, egal an welchem Port das Arduino angeschlossen ist. Wir schreiben also sogenannte UDEV-Regeln. Dies sind Regeln für Ihr Betriebssystem, die bestimmen, was passiert, wenn Sie Dinge einstecken. Wir möchten das Arduino identifizieren, wenn es angeschlossen ist, und ihm einen Namen geben, über den er darauf zugreifen kann. Dieser Name wird "arduino_0" sein. Dazu verwenden wir die interne Seriennummer des Arduino, um es zu identifizieren.

udevadm-Info -a -n /dev/ttyUSB1 | grep '{serial}' | Kopf -n1

Dies spuckt einen Wert für die Seriennummer aus. Kopieren Sie diesen Wert.

Wir müssen dann eine Datei mit dem Namen "99-usb-serial.rules" bearbeiten (oder erstellen, wenn sie nicht existiert). Diese Datei befindet sich im folgenden Dateipfad "/etc/udev/rules.d/99-usb-serial.rules". Wie ich bereits erwähnt habe, wenn diese Datei nicht existiert, erstellen Sie sie einfach und fügen Sie sie in die folgende Zeile ein, wobei VALUE_FROM_ABOVE durch Ihren vorherigen Wert ersetzt wird.

SUBSYSTEM=="tty", ATTRS{serial}=="VALUE_FROM_ABOVE", SYMLINK+="arduino_0"

Dies teilt dem Betriebssystem mit, dass es immer dann, wenn es diese spezifische Seriennummer sieht, arduino_0 nennen soll.

Das letzte, was Sie hier tun müssen, ist, die pushArucoVideoPullCommands.py herunterzuladen und an einem leicht zugänglichen Ort abzulegen. Ich würde das Home-Verzeichnis für Ihren Benutzer empfehlen, da wir dort landen, wenn wir später per SSH in das eingebettete System einsteigen.

Schritt 5: Statische IP-Adresse einrichten

Statische IP-Adresse einrichten
Statische IP-Adresse einrichten

Jetzt ist der Teil, den jeder liebt, die IP-Adressierung. Damit dieses Projekt funktioniert, muss der Code wissen, wohin Bilder und Steuerbefehle gesendet werden sollen, und das bedeutet, dass unsere Geräte eine statische IP benötigen.

Es gibt viele Möglichkeiten, Ihrem Gerät eine statische IP-Adresse zuzuweisen, aber da wir über einen Router verfügen, der unsere Bodenstation und unser eingebettetes System verbindet, können wir uns damit ganz einfach bestimmte IP-Adressen zuweisen.

Navigieren Sie zum Admin-Bereich Ihres Routers, normalerweise (bei den meisten Routern), indem Sie einen Webbrowser öffnen und zu "192.168.1.1" gehen. Sie werden aufgefordert, sich anzumelden, und der typische Standardbenutzername und das Standardkennwort für die meisten Router sind "admin".

Navigieren Sie dort zu etwas, das "DHCP-Server" erwähnt. Dies ist ein Prozess, der auf Ihrem Router ausgeführt wird und verfolgt, welche Geräte über ihre MAC-Adresse mit ihm verbunden sind, die immer konstant ist. Wir möchten die Geräte auswählen, die uns wichtig sind über, den Computer der Bodenstation und das eingebettete System, und fügen Sie sie dem reservierten Client-Bereich hinzu. Dadurch erhalten sie eine statische IP, wenn sie mit diesem Router verbunden sind.

Stellen Sie sicher, dass Sie die IP des eingebetteten Systems auf 192.168.1.122 einstellen. Die IP der Bodenstation kann auf einen beliebigen Wert eingestellt werden.

Schritt 6: Code auf Arduino hochladen

Code auf Arduino hochladen
Code auf Arduino hochladen

Um den Arduino-Code hochzuladen, müssen wir zuerst eine Bibliothek installieren, um mit dem Motorschild zu arbeiten.

Gehen Sie auf Ihrer Arduino-IDE zu Sketch->Include Library->Manage Libraries… Dann suchen Sie nach Adafruit Motor Shield Library. Installieren Sie diese Bibliothek und laden Sie dann den Code auf Ihr Arduino hoch, nichts anderes sollte erforderlich sein.

Schritt 7: Schließen Sie die Schaltung und den Computer an das Auto an

Schließen Sie Schaltkreise und Computer an das Auto an
Schließen Sie Schaltkreise und Computer an das Auto an

Jetzt, da die Strecke gebaut ist, ist es an der Zeit, alles auf das Auto zu legen. Ich werde nicht lügen, vieles von diesem Zeug wird nur mit Klebeband festgehalten, weil es für mich am einfachsten war, schnell zusammenzuklatschen. Davon abgesehen hat das Befestigungslöcher angebracht, wie im Bild oben zu sehen ist.

Die meisten Dinge lassen sich ziemlich einfach irgendwo auf dem Auto sitzen lassen, also machen Sie sich keine Sorgen, wenn nicht viel Platz ist.

Schritt 8: VR-Umgebung einrichten

VR-Umgebung einrichten
VR-Umgebung einrichten

Dieser Abschnitt wird ein wenig anders aussehen, je nachdem, welche Art von VR-Setup Sie haben. Wie auch immer, ich habe SteamVR verwendet, um diese Software zu entwickeln, daher müssen Sie diese möglicherweise installieren.

Solange Sie SteamVR verwenden, sollten sich die Bedienelemente an verschiedene Controller anpassen. Ich habe die Steuerelemente "Aktionen" zugeordnet, nicht unbedingt Schaltflächen, also passt es sich theoretisch für jeden an.

Sie müssen nur die Datei mit dem Build Unity World herunterladen und entpacken und bereit sein, die VR_Bot.exe auszuführen.

Schritt 9: Führen Sie alles zusammen

Führen Sie alles zusammen
Führen Sie alles zusammen
Führen Sie alles zusammen
Führen Sie alles zusammen

Nun, da wir das Auto eingerichtet haben und die Bodenstation fertig angeschlossen und einsatzbereit ist, wie führen wir diesen bösen Jungen eigentlich? Nun, aus Sicht der Bodenstation müssen Sie nur die VR_Bot.exe-Datei ausführen, die wir zuvor gesehen haben.

Gleichzeitig müssen Sie den Akku an das Embedded System anschließen und es automatisch starten und mit Ihrem Router verbinden. Sobald es hochgefahren ist, SSH hinein. Um darauf zuzugreifen, benötigen Sie eine Art Terminal auf der Bodenstation, ich empfehle GitBash.

SSH steht für Secure Shell und ist ein Protokoll für den sicheren Zugriff auf Remote-Systeme. In unserem Fall erhalten wir von der Bodenstation aus Zugriff auf das eingebettete System. Klick hier um mehr zu erfahren.

Sie müssen den Benutzernamen kennen, mit dem Sie Ihr eingebettetes System einrichten. Für Himbeer-Pis ist der Standardbenutzername 'pi' und das Passwort 'raspberry'.

Öffnen Sie nach der Installation ein Terminal und geben Sie Folgendes ein:

ssh {Benutzername des eingebetteten Systems}@192.168.1.122

Dadurch wird ein Terminal im Embedded System geöffnet.

Dort müssen Sie nur das Python-Skript ausführen, das wir zuvor kopiert haben.

python /path/to/pushArucoVideoPullCommands.py

Danach beginnt das Embedded System mit dem Auspumpen von Bildern und dem Empfangen von Befehlen an und von der Bodenstation.

Dann können Sie losfahren und Spaß haben!