Inhoudsopgave:

Autonome lijnvolger-drone met Raspberry Pi - Ajarnpa
Autonome lijnvolger-drone met Raspberry Pi - Ajarnpa

Video: Autonome lijnvolger-drone met Raspberry Pi - Ajarnpa

Video: Autonome lijnvolger-drone met Raspberry Pi - Ajarnpa
Video: Lijnvolger - labo elektronica 2024, November
Anonim
Autonome lijnvolger-drone met Raspberry Pi
Autonome lijnvolger-drone met Raspberry Pi

Deze tutorial laat zien hoe je uiteindelijk een lijnvolger-drone kunt maken.

Deze drone heeft een schakelaar voor "autonome modus" die de drone in de modus zet. U kunt dus nog steeds met uw drone vliegen zoals voorheen.

Houd er rekening mee dat het tijd kost om te bouwen en nog meer tijd om aan te passen. Maar de laatste… is dat je denkt dat het de moeite waard is.

Om te beginnen met het maken van uw eigen autonome lijntracker-drone, moet u ervoor zorgen dat u;

  • Rasberry Pi 3 of Raspberry Pi Zero W met SSH-toegang
  • Ready-To-Fly-drone met APM- of Pixhawk-vluchtcontroller
  • Arduino Leonardo of een andere Arduino met hoge kloksnelheid
  • Minstens 6 CH zender
  • USB-webcam die Raspberry Pi en OpenCV ondersteunt
  • Een pc
  • 6 transistors voor algemeen gebruik
  • Bedrading kabels

Stap 1: Het idee en de connecties

Het idee en de connecties
Het idee en de connecties

APM, ook bekend als ArduPilot, is een vluchtcontroller op basis van Arduino Mega. Dit betekent dat we het kunnen aanpassen om het beste te zijn voor ons geval. Maar aangezien ik de informatie niet heb om dit te doen, ga ik een andere weg volgen.

Raspberry Pi's zijn helaas niet tijdgevoelig, wat betekent dat ze niet overweg kunnen met PPM-signalen.

Daarom hebben we het extra Arduino-bord nodig.

Op deze manier zal Raspberry Pi de afbeeldingen verwerken en de vluchtinstructies berekenen en deze via de seriële UART-interface naar Arduino sturen. Arduino-kaart zal hier staan als een PPM-encoder/decoder, die de vluchtinstructies codeert naar PPM-signalen die APM wil. Om een idee te krijgen, kunt u het symbolische schakelschema bekijken.

Raspberry Pi zal zich naast de detectielijn gedragen als telemetriezender.

Het essentiële circuit wordt getoond in de afbeeldingen. Ik zal het verder uitleggen in de volgende stappen.

Stap 2: Raspberry Pi-verbindingen en configuratie

Raspberry Pi-verbindingen en configuratie
Raspberry Pi-verbindingen en configuratie
Raspberry Pi-verbindingen en configuratie
Raspberry Pi-verbindingen en configuratie

Raspberry Pi wordt verbonden met Wi-Fi-adapter (optioneel), USB-webcam, Arduino Leonardo via USB, APM via ingebouwde seriële interface. APM - RPI-verbinding weergegeven met details in de afbeeldingen.

Om te configureren, heb je twee opties: pure Raspbian met benodigde pakketten of speciale afbeelding voor MAVLink-verbinding genaamd APSync. Als je Raspbian gaat gebruiken, zorg er dan voor dat je deze pakketten hebt geïnstalleerd:

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 toekomstige pymavlink mavproxy pyserial

Om de ingebouwde seriële interface van Raspberry Pi te gebruiken, moet je OS vertellen om het niet te gebruiken. Typ hiervoor

sudo raspi-config

en volg Interfacing-opties > Seriële interface

U moet de seriële interface uitschakelen, maar de seriële hardware inschakelen.

Op dit moment is de rest geschikt voor zowel Raspbian als APSync.

Maak in de homedirectory drie bestanden: reboot script en image processor scriptt. Tweede regel maakt reboot-script uitvoerbaar.

raak reboot.sh image_processor.py aan

chmod +x reboot.sh

Kopieer alle regels in onderstaande bestanden naar je homedirectory (/home/pi) in Raspberry Pi.

Het reboot-script bevat triggers die beeldprocessor- en telemetriescripts activeren. Ook weinig instellingen. Houd er rekening mee dat als u geen telemetriefunctie wilt, # vóór die regel moet worden toegevoegd.

nano reboot.sh

#!/bin/bash

python3 /home/pi/image_processor.py

Sla het op met CTRL+O en sluit af met CTRL+X. De laatste stap hierover is het registreren in het opstartbestand van het besturingssysteem, rc.local

sudo nano /etc/rc.local

Voeg deze regel toe boven exit 0:

/home/pi/reboot.sh

Ons reboot-script wordt bij elke keer opstarten uitgevoerd.

We willen dat Raspberry Pi live video opneemt, on-the-fly verwerkt, vluchtinstructies berekent, naar de vluchtcontroller stuurt en telemetrie doet. Maar aangezien Raspberry Pi geen PPM-signaal kan genereren dat APM wil, hebben we een andere manier nodig om dit te bereiken.

Raspberry Pi stuurt zijn beeldverwerkingsuitvoer naar Arduino (in mijn geval Arduino Leonardo) via seriële poort. Arduino genereert PPM-signaal van die ingang en stuurt het via jumperdraden naar Flight Controller. Dit is allemaal voor Raspberry Pi.

Laten we naar de volgende stap gaan.

Stap 3: APM-verbindingen en configuratie

APM-verbindingen en configuratie
APM-verbindingen en configuratie

De dingen over APM zijn eenvoudig omdat het al klaar is om te vliegen. We moeten de baudrates van seriële poorten kennen en ervoor zorgen dat de TELEM-poort is ingeschakeld.

Controleer in je grondsoftware, in mijn geval Mission Planner, de parameterlijst van de vluchtcontroller en ontdek de baudrates. SERIAL_BAUD is bijvoorbeeld USB-baudrate en SERIAL_BAUD1 is TELEM-poortbaudrate voor APM. Let op die waarden.

Het belangrijkste onderdeel zijn de aansluitingen van de INPUT-pinnen. Zoals te zien is in de afbeelding, sluit u Arduino's digitale pinnen 4 tot en met 9. U kunt hiervoor een breadbord gebruiken, omdat we enkele transistors en ontvangeruitgangen gaan toevoegen. (Zie afbeeldingen) (Transistors zullen werken voor het geval u de controle over uw drone wilt overnemen)

ARD 4 APM INGANG 1

ARD 5 APM INGANG 2

ARD 6 APM INGANG 3

ARD 7 APM INGANG 4

ARD 8 ↔ APM INGANG 5

ARD 9 ↔ APM-INGANG 6

Sluit alle 5V-pinnen op APM-ingang aan op Arduino Leonardo 5V-pin. Sluit op dezelfde manier alle APM Input GND-pinnen aan op de Arduino Leonardo GND-pin.

Stap 4: Arduino Leonardo-configuratie

We hebben alle draden voor Leonardo aangesloten, dus alleen de code is overgebleven.

Upload de onderstaande code naar je Arduino Leonardo. Let op baudrates.

Stap 5: Eerste vlucht

Als u klaar bent met alle voorgaande stappen, betekent dit dat u klaar bent.

Schakel alle kaarten in en maak verbinding met SSH met Raspberry Pi. Typ terminal in:

sudo su

mavproxy.py --master=/dev/[SERILE INTERFACE] --baudrate [TELEM POORT BAUDRATE] --aircraft [AANGEPASTE NAAM

De standaard ingebouwde seriële interface van de Raspberry Pi is ttyS0 (/dev/ttyS0)

De standaard baudrate van de APM TELEM-poort is 57600

Standaard APM USB-poort baudrate is 115200

U kunt elke naam aan uw vliegtuig geven, kies het verstandig, zodat u het later kunt herkennen.

Als alles in orde is, maak dan nu verbinding met je Raspberry Pi via VNC, zodat je in realtime kunt zien wat drone ziet.

Nu kunt u uw drone bewapenen. Spannend, toch?

Zet je drone af en vlieg boven de lijnbaan. Nu kunt u de lijnvolgmodus activeren door de CH6-schakelaar te gebruiken.

Aanbevolen: