Inhaltsverzeichnis:

Bauen Sie Ihr eigenes selbstfahrendes Auto - (Diese Anleitung ist in Arbeit) - Gunook
Bauen Sie Ihr eigenes selbstfahrendes Auto - (Diese Anleitung ist in Arbeit) - Gunook

Video: Bauen Sie Ihr eigenes selbstfahrendes Auto - (Diese Anleitung ist in Arbeit) - Gunook

Video: Bauen Sie Ihr eigenes selbstfahrendes Auto - (Diese Anleitung ist in Arbeit) - Gunook
Video: Eigenes Elektro-Auto bauen (Selbstfahrend) | Selbstexperiment 2024, November
Anonim
Image
Image

Hallo, Wenn Sie sich mein anderes Instructable on Drive Robot With Remote USB Gamepad ansehen, ist dieses Projekt ähnlich, jedoch in kleinerem Maßstab. Sie können auch den Playlists Robotics, Home-Grown Voice-Recognition oder Self-Driving Car-Playlists auf Youtube folgen oder Hilfe oder Inspiration erhalten.

Ich begann mit dem großen Roboter (Wallace 4), aber seit ich eine lokale Meetup-Gruppe gründete, brauchte ich etwas in kleinerem Maßstab und die Gruppe war sehr an Computer Vision interessiert.

So stieß ich auf diesen Udemy-Kurs: Build Your Own Self-Driving Car, der mich auf die Idee zu diesem Projekt brachte.

Wenn Sie sich für den Udemy-Kurs interessieren, können Sie dort immer wieder vorbeischauen. es wird von Zeit zu Zeit mit einem riesigen Rabatt verkauft. Hinweis: Es gibt Teil 1 und Teil 2 - Sie müssen einige Nachforschungen anstellen, wie Sie die beiden Kurse als Paket (ermäßigt) erhalten.

Der Zweck dieses instructable ist zweifach. Erstens, einige Hinweise und Alternativen zu bestimmten Teilen des Kurses (wie den Teilen und der Hardware) zu geben. Und zweitens, um den Kurs zu erweitern.

Der Hauptzweck des Udemy-Kurses:

besteht darin, ein kleines Roboterauto mit Rädern auf einer verkleinerten zweispurigen Straße zum Selbstfahren bringen zu können.

Es muss die Fahrbahnstreifen erkennen, und wenn es das Ende der Straße erreicht hat.

Es muss ein Stoppschild erkennen (und anhalten).

Außerdem eine ROTE und GRÜNE Ampel.

Außerdem muss es ein Hindernis (ein anderes Auto) erkennen und umfahren.

Was dieses Instructable dem Kurs hinzufügt:

Fahren Sie das kleine Auto mit einem Remote-USB-Gamepad, ähnlich wie in diesem anderen Instructable.

Nennen Sie einige Alternativen zu dem, was der Kurs bietet.

Möglicherweise müssen Sie den Kurs nicht einmal kaufen:

Dieses Instructable kann alles sein, was Sie brauchen, um loszulegen.

Lieferungen

Die wesentlichen (empfohlenen) Teile:

Ein Roboterchassis

Vier Motoren

Arduino

Raspberry Pi (3, 3B+, 4)

Kamera (USB-Webcam oder Picamera-Modul)

Batterieleistung

Ein-/Ausschalter

Überbrückungsdrähte

Abstandshalter (Kunststoff und vielleicht auch Metall)

Bitte überprüfen Sie das gesamte Instructable und auch die Videos, bevor Sie versuchen, Teile zu kaufen.

Nachdem ich dieses Projekt durchgeführt habe, stelle ich fest, dass die genauen Teile nicht so kritisch sind.

Schritt 1: Weitere Details zu den Teilen…

Image
Image
Mehr Details zu den Teilen…
Mehr Details zu den Teilen…
Mehr Details zu den Teilen…
Mehr Details zu den Teilen…

Das zugehörige Video geht detailliert auf die Teile und einige Probleme ein, die ich gefunden habe.

  • Schauen Sie sich nach verschiedenen Chassis / Motoren um
  • An den Motoren sollten bereits Drähte angelötet sein
  • Vielleicht möchten Sie einen Bohrer und Bohrer ODER ein Chassis mit mehr Löchern
  • Denken Sie daran, dass das Gewicht ein Problem ist. Alles sollte so leicht wie möglich sein.
  • Der L298 H-Brücken-Motortreiber funktioniert hervorragend. HINWEIS: Holen Sie sich eine mit den Schraubklemmenblöcken (siehe Foto)
  • Sie werden wahrscheinlich sowohl Kunststoff- als auch Metallabstandshalter haben wollen, Größe M3 ist wahrscheinlich die beste Wahl.

Kunststoff-Abstandshalter eignen sich gut für die Montage der Platinen auf dem Chassis (Motortreiber, Arduino, Raspberry, Power-Platine, Ein-/Aus-Schalter usw.).

Metallabstandshalter eignen sich gut zum Zusammenbau des Chassis (Stärke) und auch besonders beim Entwickeln (Programmieren, Testen). Für die Entwicklung können die Metallabstandshalter als Stelzen dienen. Genauso, als würden Sie an einem echten Auto arbeiten, möchten Sie das Auto so anheben, dass die Räder in der Luft sind und sich frei bewegen können. Dies ist sehr wichtig! Sie werden Fehler machen und möchten nicht, dass das Auto einfach abhebt und abstürzt.

Bohrer + Bohrer

Ich möchte unbedingt die Verwendung eines Bohrers hervorheben, wenn Sie dazu in der Lage sind, und die Verwendung von Abstandshaltern anstelle von doppelseitigem Klebeband. Es ist sehr wahrscheinlich, dass Sie Ihre Boards usw. während dieses Projekts mehrmals entfernen und neu positionieren, und die Verwendung des Klebebands wird sehr unordentlich.

Mit einer Bohrmaschine lässt es sich sehr einfach neu positionieren (insbesondere wenn das Chassis aus Kunststoff besteht) und sieht professioneller aus.

Schritt 2: Stromversorgung des Autos während der Entwicklung

Stromversorgung des Autos während der Entwicklung
Stromversorgung des Autos während der Entwicklung
Stromversorgung des Autos während der Entwicklung
Stromversorgung des Autos während der Entwicklung

Meiner Meinung nach ist der schnellste und einfachste Weg, mit diesem Projekt zu beginnen:

  • Für die Entwicklung von Software-Arduino-Skizzen schließen Sie das Arduino einfach über USB an Ihren Computer an
  • für Software Raspberry Pi sollten Sie über eine 5-V-USB-Stromversorgung verfügen, die mindestens 3 Ampere liefern kann. Und es sollte einen Ein/Aus-Schalter haben. Wenn Sie keinen guten, mit Strom versorgten USB-Hub an Ihren Computer angeschlossen haben, können Sie den Raspberry wahrscheinlich nicht direkt von Ihrem Computer aus mit Strom versorgen.
  • Wenn Sie bereit sind, die Motoren / Räder zu testen, ist (siehe Foto) am einfachsten eine gute Stromversorgung. Diese sind jedoch nicht günstig.

Mit diesem Abschnitt möchte ich sagen, dass Sie während der Entwicklung keinen Akku verbrauchen möchten, da dies Ihren Fortschritt erheblich verlangsamt.

Wenn Sie etwas Ähnliches wie die obigen Vorschläge machen, müssen Sie sich (noch) keine Gedanken darüber machen, wie Sie das Auto genau antreiben werden. Sie können diese Entscheidung auf später im Projekt verschieben.

Schritt 3: Stromversorgung des Autos während des tatsächlichen Gebrauchs

Stromversorgung des Autos während des tatsächlichen Gebrauchs
Stromversorgung des Autos während des tatsächlichen Gebrauchs
Stromversorgung des Autos während des tatsächlichen Gebrauchs
Stromversorgung des Autos während des tatsächlichen Gebrauchs

Wenn Sie sich entscheiden, dem Kurs (oder dem, was ich getan habe) für 5V-Stromversorgung der Logik zu folgen, beachten Sie, dass nicht alle 5V-USB-Powerbanks für dieses Projekt geeignet sind.

Der Hauptpunkt hier ist, dass Sie 5V benötigen, aber mindestens 3 Ampere! Stellen Sie sich das so vor - Sie möchten eine Powerbank, die einen Laptop (vielleicht) mit Strom versorgt.

Wenn Sie in den USA leben, können Sie dies meiner Meinung nach am besten bei Best Buy kaufen. Wieso den? Wegen ihrer 14-tägigen Geld-zurück-Politik für Rücksendungen.

Ich musste tatsächlich drei verschiedene Powerbanks ausprobieren, bevor ich eine fand, die funktionierte. Die anderen führen dazu, dass sich der Raspberry Pi über Unterspannung beschwert.

Ich hatte mit der günstigsten Powerbank angefangen und probierte immer wieder das nächste Modell aus (das mehr kostete), bis ich eines fand, das funktionierte.

Wie man den Arduino mit Strom versorgt

Im Udemy-Kurs entschied sich der Autor, den Arduino direkt von der Powerbank mit Strom zu versorgen (über eine von ihm selbst hergestellte benutzerdefinierte Platine) und er verwendete Power-Pins am GPIO-Anschluss des Arduino.

Ich habe mich jedoch dafür entschieden, den Arduino direkt vom Raspberry Pi über das USB-Kabel mit Strom zu versorgen.

Sie müssen entscheiden, was besser ist.

So betreiben Sie die Motoren/Motortreiber

Im Udemy-Kurs entschied sich der Autor, die Motoren/Treiber direkt über die 5V-Powerbank mit Strom zu versorgen. Es gibt zwei Überlegungen, wenn Sie diesen Ansatz verwenden.

  1. Wenn sich die Motoren zum ersten Mal drehen, ziehen sie den meisten Strom. Dies kann (wird) dazu führen, dass die Netzspannung unter 5 V sinkt (eintaucht) und die Himbeere zurückgesetzt wird.
  2. Die Verwendung von nur 5 V zur Stromversorgung der Motoren bedeutet, dass Sie den Motoren nicht so viel Strom zuführen, wie Sie könnten, und das Auto bewegt sich langsamer (träger). Ich habe die Motoren (mit diesem Netzteil) (siehe Foto) auf mindestens 9 V getestet. Bei 9V funktionieren sie einwandfrei.

Beobachtungen über 9V (oder mehr)

Wenn Sie sich alle Fotos und Videos für dieses Instructable angesehen haben, haben Sie bemerkt, dass ich eine benutzerdefinierte Platine zusammengebaut habe, um meine eigene 9-V-Stromquelle zu erstellen. Dabei habe ich einiges gelernt.

Im Moment verwende ich mehrere (3) 9V-Batteriezellen parallel, um die Motoren anzutreiben. Ich habe sowohl Alkali- als auch NiMH-Akkus verwendet.

Lernerfahrung Nr. 1: Es dauert lange (viele Stunden), um NiMH 9V-Akkus richtig aufzuladen.

Mögliche Lösung: Investieren Sie in ein NiMH-Ladegerät mit mehreren Batterien. Es sollte ein "intelligentes" Ladegerät sein.

Nachteil: Sie sind nicht billig.

Lernerfahrung #2: 9V-Batterien bestehen eigentlich aus mehreren kleinen Innenzellen. Wenn eine dieser Zellen stirbt, ist die gesamte Batterie unbrauchbar. Ich hatte dieses Problem NICHT, aber ich habe darüber gelesen.

Lernerfahrung #3: Nicht alle 9V-Batterien haben die gleiche Spannung. Dieser ist wichtig. Denn je höher die Spannung, desto mehr Geschwindigkeit ist möglich. Einige Batteriezellen (und Ladegeräte) haben nur 8,4 V. Manche sogar noch weniger. Einige sind 9,6 V.

Lernerfahrung Nr. 4: 9V-Batterien, insbesondere die NiMH-Batterien, sind leicht. Eine gute Sache. Die meisten von ihnen liefern jedoch nur mA Ausgangsstrom. Deshalb musste ich sie parallel platzieren. Sie benötigen eine Gesamtstromkapazität von fast 2 Ampere, auch für kurze Zeiträume.

Lernerfahrung Nr. 5: Es gibt 9,6-V-Batteriepacks, die für Dinge wie funkgesteuerte Autos verwendet werden. Ich habe noch keine verwendet, aber ich glaube, sie liefern mehr Strom als die parallelen 9-V-Batterien, wie ich es getan habe. Sie können auch das einzelne Gerät aufladen. Die Packungen sind in verschiedenen Größen erhältlich. Und es gibt eine Gewichtsüberlegung. Und dann, verwenden Sie das Paket, um das gesamte Auto oder nur die Motoren anzutreiben? Für das gesamte Auto benötigen Sie dann einen 5V-Abwärtsregler für den Raspberry Pi.

Die L298 H-Bridge kann zu diesem Zweck 5 V ausgeben, aber ich bin besorgt darüber, wie viel Strom sie für den Raspberry Pi produzieren kann und ob dies die L298-Platine zu stark belastet.

Wenn Sie sich für zwei separate Stromquellen entscheiden, liegt möglicherweise ein Gewichtsproblem vor (zu schwer).

Schritt 4: Softwareprogrammierung für das Gamepad-Fahren

Ich denke, ich habe einen Großteil dieses Abschnitts bereits im Robot Driven Via Remote USB Gamepad Instructable abgedeckt, daher werde ich das hier nicht wiederholen.

Die Programmier- / Softwareabschnitte in diesem anderen Instructable sind nur Vorschläge. Ich denke, man lernt mehr durch Versuch und Irrtum.

Schritt 5: Hinzufügen einer Kamera

Hinzufügen einer Kamera
Hinzufügen einer Kamera
Hinzufügen einer Kamera
Hinzufügen einer Kamera
Hinzufügen einer Kamera
Hinzufügen einer Kamera

Ich glaube, dass der Autor im Udemy-Kurs runde Holzdübel und eine Klebepistole verwendet, um eine Möglichkeit zum Anheben der Kamera zu konstruieren.

Sie sollten die Kamera so anheben, dass sie auf die zweispurige Straße herabschaut, damit sie die Fahrspuren leichter erkennen kann.

Wo ich in den USA lebe, waren die Holzdübel sehr günstig. Sie können sie entweder bei Lowe's oder Home Depot kaufen. Ich entschied mich für quadratische Dübel anstelle von runden Dübeln.

Ich habe mich auch für eine stabilere Basis für den Kameraturm entschieden und den gesamten Turm vom Auto abnehmbar gemacht, damit ich damit herumspielen und experimentieren kann, was die beste Position dafür am Auto ist.

Außerdem habe ich den Turm mit der Idee im Hinterkopf gemacht, dass ich mit einer USB-Webcam beginnen werde, aber möglicherweise später zum Picamera-Modul übergehe.

Vielleicht möchten Sie in eine Fischaugenkamera investieren.

Ich habe mir eine sehr günstige Heißklebepistole gekauft, wollte aber die Basis des Turms besser verstärken, also habe ich einige Schraubenlöcher vorgebohrt und Schrauben hinzugefügt, um alles besser zusammenzuhalten.

Dann habe ich die Basis auf das Chassis des Autos geschraubt.

Wenn ich später etwas bewegen möchte, schraube ich einfach die Basis vom Chassis ab, bohre neue Löcher in die neue Position des Chassis und schraube den Turm wieder am Chassis an.

Ich habe den "Follow-me"-Python- und Node.js-Code vom großen Roboter (Wallace Robot 4) mitgebracht, um alles zu testen. Bitte sehen Sie sich die Fotos in diesem Abschnitt an, um die Liste der Youtubes zu sehen, die viel mehr Details zu "Follow-me" enthalten.

Wie bereits erwähnt, war es einfacher, zuerst eine USB-Webcam zu montieren. Später kann ich das Picamera-Modul montieren.

Schritt 6: Gesichtserkennung - Position bestimmen

Image
Image

Dieser Teil steht nicht im Mittelpunkt des Udemy-Kurses, aber es hat Spaß gemacht.

Wenn Sie im Internet nach "Python Opencv-Gesichtserkennung" suchen, finden Sie viele gute Beispiele dafür, und alle folgen so ziemlich den gleichen Schritten.

  1. Laden Sie die Gesichtsdatei "haar"
  2. Kamera initialisieren
  3. starte eine Schleife, wo du einen Frame greifst
  4. Konvertieren Sie das Farbbild in Graustufen
  5. füttere es an den opencv, damit es Gesichter findet
  6. Starten Sie eine innere Schleife (für jedes gefundene Gesicht) (in meinem Fall füge ich Code hinzu, um abzubrechen, wenn mehr als 1 Gesicht vorhanden ist)

Zu diesem Zweck kennen wir hier, nachdem wir ein Gesicht erkannt haben, X, Y, W und H des imaginären Quadrats, das das Gesicht umreißt.

Wenn Sie möchten, dass sich der Roboter vorwärts oder rückwärts bewegt, müssen Sie nur W berücksichtigen. Wenn W zu groß (zu nah) ist, lassen Sie den Roboter zurückfahren. Wenn W zu klein (zu weit) ist, lassen Sie den Roboter vorwärts fahren.

Die Bewegung nach links/rechts ist nur ein bisschen komplizierter, aber nicht verrückt. Sehen Sie sich das Bild für diesen Abschnitt an, in dem beschrieben wird, wie die linke vs. rechte Gesichtsposition bestimmt wird.

HINWEIS:

Wenn Sie eines der Web-OpenCV-Beispiele ausführen, zeigen sie alle die tatsächliche Ansicht dessen, was opencv "sieht", wobei das Gesicht in einem Quadrat umrandet ist. Wenn Sie bemerken, dass dieses Quadrat nicht stetig ist, auch wenn Sie sich nicht bewegen.

Diese sich ändernden Werte würden dazu führen, dass sich der Roboter ständig bewegt, vorwärts oder rückwärts, links oder rechts.

Daher benötigen Sie eine Art Delta sowohl für vorwärts/rückwärts als auch für links/rechts.

Nehmen wir links vs rechts:

Nachdem Sie links und rechts berechnet haben, erhalten Sie die Differenz (Delta):

Delta = abs (links - rechts)

Sie müssen das Absolute nehmen, weil Sie nicht wissen, welches die größere Zahl sein wird.

Dann fügen Sie einen bedingten Code hinzu, um nur zu versuchen, sich zu verschieben, wenn das Delta größer als ein Minimum ist.

Sie würden dasselbe für vorwärts vs. rückwärts tun.

Schritt 7: Gesichtsposition - Roboter bewegen

Wenn Sie wissen, dass sich der Roboter nach links oder rechts, vorwärts oder rückwärts bewegen muss, wie machen Sie das?

Da dieses Instructable im Moment in Arbeit ist, habe ich nur den Code von meinem großen Roboter kopiert, um ihn für dieses Projekt zu verwenden. Bitte schauen Sie sich meine Robotics-Playlist auf YouTube an, in der all dies beschrieben wird.

Kurz gesagt, ich habe den Code in Schichten.

Python-Gesichtserkennungsskript stellt HTTP-Anfragen an den Node.js-Server

Der Node.js-Server lauscht auf http-Anfragen für Bewegungsrichtungen und konvertiert diese in ein benutzerdefiniertes serielles Protokoll

Benutzerdefiniertes serielles Protokoll zwischen Node.js-Server und Arduino

Arduino-Skizze, die die eigentlichen Befehle ausführt, um den Roboter zu bewegen

Der Udemy-Kurs macht es nicht wie oben. Da ich aber gute Fortschritte machen und mich auf die eigentliche Bilderkennung konzentrieren wollte, habe ich vorerst meinen vorherigen Code wiederverwendet.

Empfohlen: