Drohne mit Arduino

Hallo Leute,

ich bin ein blutiger Arduino Anfänger und möchte gerne eine Drohne mithilfe eines Arduinos bauen. Ich habe Programmiererfahrung, jedoch kenne ich die Grenzen eines Arduinos nicht. Ist es möglich, eine eigene Drohnensteuerung zu basteln, welche Kollisionen erkennt und diesen ausweicht? Ich habe mich ein wenig schlau gemacht und habe herausgefunden, das es wohl mit Ultrasonic Sensoren möglich sein soll. Jedoch habe ich doch schon etliche Kabel von ESCs, Batterie, MPU, Funksteuerung etc.. Da werden die Pin´s des Arduino Uno´s doch schon recht knapp oder nicht? Vielen Dank für eure Hilfe :)

Mit freundlichen Grüßen, Timo Wiesmann

Bei den von Dir beschriebenen Voraussetzungen benötigst Du eine extrem steile Lernkurve, um zu einem Erfolg zu kommen. Einen UNO halte ich für zu schlapp für diese Aufgabe. Andererseits sind zwölf Menschen mit Hilfe eines Taschenrechners auf dem Mond gelandet.

Was wäre denn passend für diese Aufgabe ?

Ich sehe das wie agmue.

Du solltest Dich zunächst in die „Arduino-erei“ einarbeiten. Dabei wirst Du schnell erkennen, dass Du reichlich viel möchtest - reichlich.

Leg' Dir zuerst einen Uno zu und arbeite Dich durch die Beispiele. Schon damit wirst Du reichlich zu tun (und Spaß) haben.

Gruß

Gregor

Das Problem daran ist, das ich es machen muss. Es ist eine Facharbeit für die Schule und wird wie eine Klausur bewertet.

Dann dürfte der Aufgabensteller auch nicht viel Ahnung von der Sache haben oder uns fehlen wesentliche Informationen.

Ich gehe davon aus, bereits mit einer Lagestabilisierung (d.h. er steht in der Luft und leichter Wind wirft ihn nicht aus der Bahn) ist der Arduino schon stark ausgelastet. Und das ist eine Grundvoraussetzung für Dein automatisches Ausweichen.

Gruß Tommy

Würde es mit einem Arduino Mega funktionieren?

Hi

Naja - ein 4-Kerner mit >3GHz würde sich anbieten - allerdings muß dann die Motorleistung auch 'etwas' angehoben werden.

Was brauchst Du? Sind die Motoren mit Bürsten? (Sehe hier und Da Mal Welche auf eBay - aber noch nicht näher betrachtet). Dann ist die eigentliche Last mit einem FET pro Motor durch. Der Arduino müsste 'alle Nase lang' schauen, wie die Drohne 'in der Luft liegt' und Das auf Waage und Richtung korrigieren. Die Befehle der Fernsteuerung würden 'nur' die Waage und den angestrebten Winkel verstellen. Klar, das Korrigieren resultiert wieder in der Ansteuerung der Motoren, zum Drehen müssten die zwei 'links gewickelten' den Ticken schneller werden, Den die 'rechts gewickelten' langsamer werden. Für 'Schnauze hoch' müssten die Vorderen schneller als die Hinteren werden. Links/Rechts kippen halt eine Seite schneller als die Andere. Das Alles kombiniert (plump zusammen gerechnet) ergibt die Soll-Drehzahl des einzelnen Motor. Ob hier noch ein PID mit rein darf/soll/kann ... gute Frage, denke aber, daß Das nicht schadet.

Wie oft kann der Arduino die Sekunde einen Lagesensor auslesen? Reicht diese Aktualisierungsrate? Das Bisschen Rechnen zwischen-drin sollte wenig bis kaum auffallen.

Der Mega rechnet auch nicht schneller, als der Uno/Nano - hat halt mehr Speicher. Ein Ausweichen würde ja auch noch beinhalten, daß die Drohne Ihre Umgebung 'sieht' - Da kann man dann wohl eine ganze Menge Rechenzeit rein buttern. Wem oder Was soll denn ausgewichen werden? Springbäumen oder anderen, ähnlich schnellen, Flugobjekten? Quasi: Die Drohne für den Kinderspielplatz - egal, was Du versuchst, die Dinger berühren sich nicht!

MfG

Moin,

Ich fliege seit 15 Jahren Modellheli und mache seit 23 Jahren Modellbau. Seit gut 2 Jahren Arduino IDE und hab auch vor 25 Jahren schon programmiert. Die Aufgabe ist leicht gestellt. Ich persönlich glaube nicht, das du es schaffen wirst einen Copter auf der Stelle schweben lassen zu können, geschweige denn eigenständig Hindernissen auszuweichen. Wie willst du es schaffen (mit welcher Sensorik), dass der Copter nicht wegdriftet? Das tut ernämlich immer.

Lieben Gruß, Chris

TimoWiesmann: Was wäre denn passend für diese Aufgabe ?

Diese Frage kann ich Dir leider nicht beantworten, da ich sowas noch nicht gemacht habe.

TimoWiesmann: Würde es mit einem Arduino Mega funktionieren?

Der hat nur mehr Anschlüsse und mehr Speicher, ist aber nicht schneller. Also eher auch nicht.

TimoWiesmann: Das Problem daran ist, das ich es machen muss.

Ein UNO ist schon wegen der unzuverlässigen Steckkontakte und seiner schieren Größe (=Gewicht) ungünstig.

Gleiche Leistung aber kleiner wäre ein ProMini (Schnittstelle CP2102 wird nur einmal benötigt). Mehrere verteilt und vernetzt (CanBus oder I2C) könnte ein Ansatz sein. Als Recheneinheit mit Fließkomma ein Teensy 3.5 oder 3.6. Natürlich gibt es noch hunderte andere Varianten, welche funktionieren würde, weiß ich leider auch nicht.

Das alles zu programmieren ist für jemanden mit Programmiererfahrung eine Herkulesaufgabe.

Fange vorne an, am Ende bist Du schlauer und um eine Note reicher.

Die Links dienen nur der Erläuterung und sind keine Kaufempfehlungen!


postmaster-ino: Dann ist die eigentliche Last mit einem FET pro Motor durch.

Dazu werden die ESCs genommen, die sich vergleichbar wie Servos ansteuern lassen.

Es gab mal einen fc mit dem Mega. Aber der konnte die Drone gerade so stabil halten, pid hatte der auch schon. An Hinderniserkennung ist damit nicht zu denken.

So etwas überhaupt als Prüfungs- bzw. Projektaufgabe mit Benotung jemanden zu stellen, zeugt von absoluter Unkenntnis des Lehrers.

Die Fa. DJI ist in diesem Bereich recht weit fortgeschritten, informier dich mal, wieviele Ingenieure und Doktoren und Manpower die haben. Und das ist im Prinzip alles noch Hobbybereich.

Hier hat es jemand gut dokumentiert

TimoWiesmann: Das Problem daran ist, das ich es machen muss. Es ist eine Facharbeit für die Schule und wird wie eine Klausur bewertet.

Dann wird ihm später der Doktortitel aber wieder aberkannt ;)

Und von Hindernisserkennung ist in dem Video auch noch keine Rede.

ElEspanol: Es gab mal einen fc mit dem Mega. Aber der konnte die Drone gerade so stabil halten, pid hatte der auch schon. An Hinderniserkennung ist damit nicht zu denken.

Das ganze nennt sich Arducopter (APM2.8 )mit dem MEGA2560, super Software und alles rausgeholt was man man in einem Copter braucht. Fliege damit schon lange.

https://www.ebay.de/itm/323670072458

Arducopter Sources

Dazu gibts auch noch eine Windows Software: http://ardupilot.org/planner2/index.html

Die neueren Verisonen bauen alle auf STM32 auf.. Atmega ist nur Easy und Schnell aber nicht performant.

Das Wacklige unperformante Ding nennt sich "Multiwii" und das ist mit nem Atmega328p!

Ja, das ist ein Flightcontroller. Aber von Hindernis ausweichen und von alleine fliegen is das immer noch weit entfernt. Mit GPS bleibt sowas ja auch nicht in der Luft stehen, sondern kann seine Position nur auf ein paar Meter genau halten. Wenn man was performantes haben will, dann mal nach Betaflight, Butterflight, INAV, Kiss, Flightone suchen. An diesen Softwaren haben hundertschaften jahrelabg dran programmiert. Dazu dann F4 oder F7 Flightcontroller. Die einzige Variante, die theoretisch die Position sehr gut halten kann ist INAV mit GPS, Kompass und einem Flow-Sensor. Ich habe aber noch nicht gesehen, ob und wie gut das wirklich geht. Richtig gut und exakte Positionsbestimmung und Navigation geht bisher nur sehr aufwendig und extrem Rechenintensiv mit Motion capturing: https://youtu.be/w2itwFJCgFQ https://youtu.be/YQIMGV5vtd4 https://youtu.be/MlFtHuXPbv4 Hier mal nur mit GPS: https://youtu.be/4mHDDG3FCjs https://youtu.be/VnTQTm7vNbY

TimoWiesmann: Es ist eine Facharbeit für die Schule und wird wie eine Klausur bewertet.

Das ist unglaubwürdig.

Gruß

Gregor

Danke für die interessanten Links!

@TimoWiesmann: Wenn fliegen mit einem Mega2560 "kein Problem" darstellt und die Quellen bekannt sind, dann könntest Du mit einem zweiten (wohl in der kompakteren Bauform) die Kollisionserkennung machen. Austauschen können die sich mittels I2C oder Rx/Tx.

Mein ardupilot mit MEGA2560 kann soweit alles mit nem ruhigen Hexa.. mit nem teuren GPS sogar auf einer stelle stehen und sich gegen Wind wehren.. etc.

so bei nem Racer wird der zu langsam.. bei Großen trägen Hexas wie bei meinem mit 700mm Durchmesser klappt alles sogar Agil wie es soll.

In welchem Radius um einen fixen Punkt kann das GPS ihn bei Wind über 5 Minuten halten?

Hi

Das wird wohl auf die Genauigkeit des GPS ankommen (kA, ob die Werte 'springen' oder ob Die einfach nur 'meilenweit daneben liegen' - also zumindest Das für den Normal-Sterblichen).

Der Rest, also das Ausregeln auf Null, dürfte nur an Motorleistung und Programm liegen, wie schnell/wie genau 'auf Fleck' gehalten wird, oder ob 'drum herum getanzt' wird, weil das Gelump laufend über das Ziel hinaus fliegt. Das dürfte dann aber eine Sache im PID-Regler sein.

MfG