Inhaltsverzeichnis:

Autonome Line-Follower-Drohne mit Raspberry Pi - Gunook
Autonome Line-Follower-Drohne mit Raspberry Pi - Gunook

Video: Autonome Line-Follower-Drohne mit Raspberry Pi - Gunook

Video: Autonome Line-Follower-Drohne mit Raspberry Pi - Gunook
Video: Line Follower - Drone Programming Course Demo 2024, Juli
Anonim
Autonome Line-Follower-Drohne mit Raspberry Pi
Autonome Line-Follower-Drohne mit Raspberry Pi

Dieses Tutorial zeigt, wie Sie schließlich eine Line-Follower-Drohne erstellen können.

Diese Drohne verfügt über einen Schalter für den "autonomen Modus", der die Drohne in den Modus versetzt. Sie können Ihre Drohne also weiterhin wie bisher fliegen.

Bitte beachten Sie, dass der Aufbau und die Anpassung noch mehr Zeit in Anspruch nehmen werden. Aber das Finale… lässt Sie denken, dass es sich lohnt.

Um mit der Erstellung Ihrer eigenen autonomen Line-Tracker-Drohne zu beginnen, stellen Sie sicher, dass Sie Folgendes haben:

  • Raspberry Pi 3 oder Raspberry Pi Zero W mit SSH-Zugang
  • Ready-To-Fly-Drohne mit APM- oder Pixhawk-Flugsteuerung
  • Arduino Leonardo oder ein anderer Arduino mit schneller Taktrate
  • Mindestens 6 CH-Sender
  • USB-Webcam, die Raspberry Pi und OpenCV unterstützt
  • Ein PC
  • 6 Allzwecktransistoren
  • Verdrahtungskabel

Schritt 1: Die Idee und Verbindungen

Die Idee und Verbindungen
Die Idee und Verbindungen

APM, auch bekannt als ArduPilot, ist ein Flugcontroller basierend auf Arduino Mega. Dies bedeutet, dass wir es so ändern können, dass es für unseren Fall am besten ist. Da ich aber nicht über die Informationen dazu verfüge, gehe ich einen anderen Weg.

Raspberry Pis sind leider nicht zeitsensitiv, was bedeutet, dass sie nicht mit PPM-Signalen umgehen können.

Deshalb brauchen wir das zusätzliche Arduino-Board.

Auf diese Weise verarbeitet Raspberry Pi die Bilder und berechnet die Fluganweisungen und sendet sie über die serielle UART-Schnittstelle an Arduino. Die Arduino-Karte wird hier als PPM-Encoder / -Decoder stehen, der die Fluganweisungen in PPM-Signale codiert, die APM will. Um eine Idee zu haben, können Sie den symbolischen Schaltplan untersuchen.

Raspberry Pi verhält sich neben der Erkennungsleitung als Telemetriesender.

Die wesentliche Schaltung ist in den Bildern dargestellt. Ich werde in den nächsten Schritten weiter erklären.

Schritt 2: Raspberry Pi-Verbindungen und -Konfiguration

Raspberry Pi-Verbindungen und -Konfiguration
Raspberry Pi-Verbindungen und -Konfiguration
Raspberry Pi-Verbindungen und -Konfiguration
Raspberry Pi-Verbindungen und -Konfiguration

Raspberry Pi wird mit Wi-Fi-Adapter (optional), USB-Webcam, Arduino Leonardo über USB, APM über eingebaute serielle Schnittstelle verbunden. APM - RPI-Verbindung mit Details in den Bildern gezeigt.

Zur Konfiguration haben Sie zwei Möglichkeiten: reines Raspbian mit benötigten Paketen oder spezielles Image für die MAVLink-Verbindung namens APSync. Wenn Sie Raspbian verwenden möchten, stellen Sie sicher, dass Sie diese Pakete installiert haben:

sudo apt-get update

sudo apt-get install -y screen python-wxgtk3.0 python-matplotlib sudo apt-get install -y python-opencv python-pip python-numpy python-dev sudo apt-get install -y libxml2-dev libxslt-dev python- lxml sudo pip install future pymavlink mavproxy pyserial

Um die integrierte serielle Schnittstelle des Raspberry Pi zu verwenden, müssen Sie dem Betriebssystem mitteilen, dass es sie nicht verwenden soll. Geben Sie dazu ein

sudo raspi-config

und folgen Sie Schnittstellenoptionen > Serielle Schnittstelle

Sie müssen die serielle Schnittstelle deaktivieren, aber die serielle Hardware aktivieren.

An dieser Stelle ist der Rest sowohl für Raspbian als auch für APSync geeignet.

Erstellen Sie im Home-Verzeichnis drei Dateien: Reboot-Skript und Image-Prozessor-Skript. Die zweite Zeile macht das Reboot-Skript ausführbar.

Berühren Sie reboot.sh image_processor.py

chmod +x reboot.sh

Kopieren Sie alle Zeilen in den unten angegebenen Dateien in Ihr Home-Verzeichnis (/home/pi) in Raspberry Pi.

Das Neustartskript enthält Trigger, die Bildprozessor- und Telemetrieskripts auslösen. Auch wenige Einstellungen. Beachten Sie, dass Sie # vor dieser Zeile hinzufügen, wenn Sie keine Telemetriefunktion wünschen.

nano reboot.sh

#!/bin/bash

python3 /home/pi/image_processor.py

Mit STRG+O speichern und mit STRG+X beenden. Der letzte Schritt ist die Registrierung in der Betriebssystem-Startdatei rc.local

sudo nano /etc/rc.local

Hängen Sie diese Zeile über Ausgang 0 an:

/home/pi/reboot.sh

Unser Reboot-Skript wird bei jedem Booten ausgeführt.

Wir möchten, dass Raspberry Pi Live-Videos aufzeichnet, on-the-fly verarbeitet, Fluganweisungen berechnet, an den Flugcontroller sendet und Telemetrie ist. Da Raspberry Pi jedoch nicht in der Lage ist, das von APM gewünschte PPM-Signal zu generieren, benötigen wir einen anderen Weg, um dies zu erreichen.

Raspberry Pi sendet seine Bildverarbeitungsausgabe über den seriellen Port an Arduino (in meinem Fall Arduino Leonardo). Arduino generiert ein PPM-Signal von diesem Eingang und sendet es über Steckbrücken an den Flight Controller. Das ist alles für Raspberry Pi.

Kommen wir zum nächsten Schritt.

Schritt 3: APM-Verbindungen und -Konfiguration

APM-Verbindungen und -Konfiguration
APM-Verbindungen und -Konfiguration

Die Dinge an APM sind einfach, da es bereits flugbereit ist. Wir müssen die Baudraten der seriellen Ports kennen und sicherstellen, dass der TELEM-Port aktiviert ist.

Überprüfen Sie in Ihrer Bodensoftware, in meinem Fall Mission Planner, die Parameterliste des Flugreglers und ermitteln Sie die Baudraten. Beispielsweise ist SERIAL_BAUD die USB-Baudrate und SERIAL_BAUD1 die TELEM-Port-Baudrate für APM. Beachten Sie, dass Werte.

Der wichtigste Teil sind die Anschlüsse der INPUT-Pins. Verbinden Sie wie in der Abbildung gezeigt die digitalen Pins 4 von 9 von Arduino. Möglicherweise möchten Sie dafür ein Steckbrett verwenden, da wir einige Transistoren und Empfängerausgänge hinzufügen werden. (Siehe Bilder) (Transistoren funktionieren, falls Sie die Kontrolle über Ihre Drohne übernehmen möchten)

ARD 4 APM-EINGANG 1

ARD 5 APM-EINGANG 2

ARD 6 APM-EINGANG 3

ARD 7 APM-EINGANG 4

ARD 8 APM-EINGANG 5

ARD 9 APM-EINGANG 6

Verbinden Sie alle 5V-Pins des APM-Eingangs mit dem Arduino Leonardo 5V-Pin. Verbinden Sie ebenfalls alle APM Input GND-Pins mit dem Arduino Leonardo GND-Pin.

Schritt 4: Arduino Leonardo-Konfiguration

Wir haben alle Drähte für Leonardo angeschlossen, sodass nur noch der Code übrig ist.

Laden Sie den unten angegebenen Code auf Ihren Arduino Leonardo hoch. Achten Sie auf Baudraten.

Schritt 5: Erstflug

Wenn Sie alle vorherigen Schritte abgeschlossen haben, bedeutet dies, dass Sie bereit sind.

Schalten Sie alle Karten ein und verbinden Sie sich mit SSH mit dem Raspberry Pi. Terminal eingeben:

sudo su

mavproxy.py --master=/dev/[SERIAL INTERFACE] --baudrate [TELEM PORT BAUDRATE] --aircraft [CUSTOM NAME

Die standardmäßige eingebaute serielle Schnittstelle des Raspberry Pi ist ttyS0 (/dev/ttyS0)

Die Standardbaudrate des APM TELEM-Ports ist 57600

Die Standard-Baudrate des APM-USB-Ports ist 115200

Sie können Ihrem Flugzeug einen beliebigen Namen geben, ihn mit Bedacht wählen, damit Sie ihn später wiedererkennen.

Wenn alles in Ordnung ist, verbinden Sie sich jetzt über VNC mit Ihrem Raspberry Pi, damit Sie in Echtzeit sehen können, was die Drohne sieht.

Jetzt können Sie Ihre Drohne bewaffnen. Aufregend, oder?

Nehmen Sie Ihre Drohne ab und fliegen Sie über die Linienspur. Jetzt können Sie den Linienverfolgungsmodus aktivieren, indem Sie den Schalter CH6 verwenden.

Empfohlen: