Forum: Mikrocontroller und Digitale Elektronik Quadrocopter mit einem Raspberry Pi


von Oliver L. (oliver_l)


Lesenswert?

Hallo Leute,
Ich möchte mir einen Quadrocopter selber bauen. Ich bin neu in diesem 
Gebiet und das ist mein erstes Projekt.
Ich hab mir das ganze so vorgestellt:
Ein Raspberry Pi B+ als Steuerplatine.
An die GPIO Pins 4 ECS mit brushless Motoren anhängen.
Sensoren wie Magnetometer, Barometer, Thermometer,  Accelorator, ... an 
den Pi anhängen.
Dann noch ein Funkmodul für die Fernbedienung,  eventuell auch ein GPS 
Modul.
Später vielleicht auch ein 3G Modul.
Dann noch Software auf dem Pi programmieren um alles aus den Sensoren 
auszulesen, die gesammelten Daten berechnen und dann damit die Motoren 
anzusteuern. Das ganze in Phyton oder C++.
Programmieren kann ich halbwegs. :)

Doch ich bin mir nicht sicher ob das alles so funktioniert wie ich mir 
das vorstelle.  Ich weiß auch noch nicht wie man das ganze Umsetzen 
soll, bzw. ob das alles überhaupt mit einem Pi funktioniert.

Ich bin für jede Hilfe und für alle Tipps überaus dankbar.
Und ich möchte mich schon im voraus für die Hilfe und Unterstützung bei 
der Umsetzung meines Projektes bedanken.

MfG Oli

: Verschoben durch User
von Dominik L. (Gast)


Lesenswert?

Interessantes Projekt ;) - Die Hardware wäre der Pi dann total 
unterfordert...

Schau Dir mal das ArduPilot-Projekt an:
http://dev.ardupilot.com/
https://github.com/diydrones/ardupilot

Vielleicht bekommst Du das irgendwie in Linux portiert und findest eine 
Möglichkeit die ganze Peripherie anzusprechen!

von Ion (Gast)


Lesenswert?

Eine Echtzeit Aufgabe für ein Nicht Echtzeit System....
Am besten noch mit Windows 10!
Bereite dich darauf vor wegen einem Java Update abzustürzen :D

von Oliver L. (oliver_l)


Lesenswert?

Ion schrieb:
> Eine Echtzeit Aufgabe für ein Nicht Echtzeit System....

Ich bitte um eine erklärung das versteh ich nicht ganz.

von Ion (Gast)


Lesenswert?

Oliver L. schrieb:
> Ion schrieb:
>> Eine Echtzeit Aufgabe für ein Nicht Echtzeit System....
>
> Ich bitte um eine erklärung das versteh ich nicht ganz.

Ein Raspberry macht im Hintergrund noch 15 andere Sachen, bis dann mal 
Python dran ist...

von hmmm (Gast)


Lesenswert?

Oliver L. schrieb:
> Ion schrieb:
>> Eine Echtzeit Aufgabe für ein Nicht Echtzeit System....
>
> Ich bitte um eine erklärung das versteh ich nicht ganz.


du hast typische echtzeitaufgaben:
1) bewegungsausgleich
2) kommunikation mit peripherie
etc.
Echt-Zeit : dein OS muss garantieren können, dass der Task der deine 
aktuelle Position berechnet, alle 1 ms drankommt.
Das kann dein Linux hier nicht. Also schmiert dir das Ding irgendwann 
ab.

von Jan L. (ranzcopter)


Lesenswert?

Dominik L. schrieb:
> Interessantes Projekt ;) - Die Hardware wäre der Pi dann total
> unterfordert...
>
> Schau Dir mal das ArduPilot-Projekt an:

...dessen Standard-Hardware längst überfordert ist (AVR Mega), weswegen 
die Entwicklung inzwischen auf Pixhawk/ARM zugeschnitten ist.
Was wiederum auf einem NuttX/Rtos Unterbau aufsetzt.
Rtos gibt es - glaube ich - nicht für den Raspi, aber es wäre bestimmt 
ein interessantes Projekt, das dort mit sowas hier zu versuchen:

http://www.stevebate.net/chibios-rpi/GettingStarted.html

Mit Standard-Linux jedenfalls wird das nix, fürchte ich...

> http://dev.ardupilot.com/
> https://github.com/diydrones/ardupilot
>
> Vielleicht bekommst Du das irgendwie in Linux portiert und findest eine
> Möglichkeit die ganze Peripherie anzusprechen!

von Oliver L. (oliver_l)


Lesenswert?

Ion schrieb:
> Oliver L. schrieb:
>> Ion schrieb:
>>> Eine Echtzeit Aufgabe für ein Nicht Echtzeit System....
>> Ich bitte um eine erklärung das versteh ich nicht ganz.
>
> Ein Raspberry macht im Hintergrund noch 15 andere Sachen, bis dann mal
> Python dran ist...

Ach ok das versteh ich. Aber ist das nicht zu umgehen?
Z.b. mit Prioritäten?
Oder einen extra Arduino um die Motoren anzusteuern und den Pi als GPS 
Rechner und als UMTS und oder als   WLAN-Empfänger?

von ... (Gast)


Lesenswert?

Ein Flugstabilisierungssytem sollte in Echtzeit laufen. Wenn du den ARM 
auf dem Raspi direkt nutzen willst, ist er völlig überdimensioniert. 
Wenn du das System über eine der gängigen Linux-Distris verwirklichen 
willst, hast du kein Echtzeitsystem... also vergiss Phyton, wenn dann 
direkt in C/C++ ohne den Linux Unterbau, oder gibt es stabile RTOS für 
Raspi und Co?

von Ion (Gast)


Lesenswert?

Oliver L. schrieb:
> Ion schrieb:
>> Oliver L. schrieb:
>>> Ion schrieb:
>>>> Eine Echtzeit Aufgabe für ein Nicht Echtzeit System....
>>> Ich bitte um eine erklärung das versteh ich nicht ganz.
>>
>> Ein Raspberry macht im Hintergrund noch 15 andere Sachen, bis dann mal
>> Python dran ist...
>
> Ach ok das versteh ich. Aber ist das nicht zu umgehen?
> Z.b. mit Prioritäten?
> Oder einen extra Arduino um die Motoren anzusteuern und den Pi als GPS
> Rechner und als UMTS und oder als   WLAN-Empfänger?

Du kannst den Raspberry gegen den Arduino tauschen ;P
Prioritäten bringen nichts, IRGENDWANN muss der rest ja mal abgearbeitet 
werden.

Raspberry ---- Arduino ,wenn der Arduino auch mal ein paar Sekunden ohne 
Befehle vom Raspi klarkommt.... -> Autopilot

von Oliver L. (oliver_l)


Lesenswert?

Wenn man allerdings nur einen Arduino verwendet hat der wieder genug 
Rechenleistung um komplett im Autopilot zu fliegen? Also Koordinaten 
eingeben und dann fliegt er zum Ziel und landet?

von Ion (Gast)


Lesenswert?

Oliver L. schrieb:
> Wenn man allerdings nur einen Arduino verwendet hat der wieder
> genug
> Rechenleistung um komplett im Autopilot zu fliegen? Also Koordinaten
> eingeben und dann fliegt er zum Ziel und landet?

Müsste

von Jan L. (ranzcopter)


Lesenswert?

Oliver L. schrieb:
> Wenn man allerdings nur einen Arduino verwendet hat der wieder genug
> Rechenleistung um komplett im Autopilot zu fliegen? Also Koordinaten
> eingeben und dann fliegt er zum Ziel und landet?

Die bekannteste OS Lösung für Arduino dürfte Multiwii sein - die kann 
sowas aber nur in Ansätzen.
In der Klasse Arduino Mega liegt die Hardware, die man für Ardupilot 
benötigt - damit geht das sogar komfortabel mit grafischem 
Missionplanner. Allerdings läuft das nicht auf einem vanilla Arduino 
Mega, sondern auf angepasster Hardware wie 'MiniApm'...

von Oliver L. (oliver_l)


Lesenswert?

Jan L. schrieb:
> ...dessen Standard-Hardware längst überfordert ist (AVR Mega), weswegen
> die Entwicklung inzwischen auf Pixhawk/ARM zugeschnitten ist.
> Was wiederum auf einem NuttX/Rtos Unterbau aufsetzt.
> Rtos gibt es - glaube ich - nicht für den Raspi, aber es wäre bestimmt
> ein interessantes Projekt, das dort mit sowas hier zu versuchen:
>
> http://www.stevebate.net/chibios-rpi/GettingStarted.html

Das heißt sollte ich mir das als OS auf den Pi spielen.
Hätte ich dann ein Echtzeit laufendes OS. Dann kann ich die Peripherie 
anschließen und habe sozusagen einen stärkeren Arduino?
Oder hab ich da etwas falsch verstanden?

von Jan L. (ranzcopter)


Lesenswert?

Oliver L. schrieb:
> Jan L. schrieb:
>> ...dessen Standard-Hardware längst überfordert ist (AVR Mega), weswegen
>> die Entwicklung inzwischen auf Pixhawk/ARM zugeschnitten ist.
>> Was wiederum auf einem NuttX/Rtos Unterbau aufsetzt.
>> Rtos gibt es - glaube ich - nicht für den Raspi, aber es wäre bestimmt
>> ein interessantes Projekt, das dort mit sowas hier zu versuchen:
>>
>> http://www.stevebate.net/chibios-rpi/GettingStarted.html
>
> Das heißt sollte ich mir das als OS auf den Pi spielen.
> Hätte ich dann ein Echtzeit laufendes OS. Dann kann ich die Peripherie
> anschließen und habe sozusagen einen stärkeren Arduino?
> Oder hab ich da etwas falsch verstanden?

Naja, der Bezug zum Arduino würde sich i.W. auf die Eigenschaft 
beschränken, dass man Signale in Echtzeit (mehr oder weniger) 
verarbeiten kann - ansonsten wäre das schon noch ein 'Betriebssystem'. 
Arduino hat sowas eher nicht...

Eine andere Experimentiermöglichkeit wäre aber evtl. auch ein Linux, bei 
dem man dessen durchaus vorhandene RT-Optionen aktiviert hat. Das auch 
schon jemand für den Raspi als Image erstellt:
http://www.emlid.com/raspberry-pi-real-time-kernel/
Keine Ahnung, wie weit RT beim Linuxkernel inzwischen gediehen ist, und 
ob sowas dann 'flugfähig' wäre. Sicherlich werden die Latenzen nicht an 
Rtos herankommen, aber vielleicht kann das durch die schiere 
Rechenleistung des Raspi (2?) ausgeglichen werden... :)

[edit]
Oops, gerade entdeckt - basierend auf Rpi und obigem RT-Linux gibt es 
tatsächlich schon einen Port des Ardupilot, nennt sich Navio - sieht 
interessant aus, finde ich:
http://docs.emlid.com/Navio-APM/building-from-sources/

: Bearbeitet durch User
von Ion (Gast)


Lesenswert?

Oliver L. schrieb:
> Das heißt sollte ich mir das als OS auf den Pi spielen.
> Hätte ich dann ein Echtzeit laufendes OS. Dann kann ich die Peripherie
> anschließen und habe sozusagen einen stärkeren Arduino?
> Oder hab ich da etwas falsch verstanden?

Bezweifle immernoch das es gleich schnell wie ein 'Arduino' ist, auch 
ein RTOS muss ja die ganze Peripherie der CPU versorgen...

Probieren macht schlau...

von Oliver L. (oliver_l)


Lesenswert?

Ja da habt ihr wohl recht das das beste einfach probieren ist...

von Schreiber (Gast)


Lesenswert?

Oliver L. schrieb:
> Ich weiß auch noch nicht wie man das ganze Umsetzen
> soll, bzw. ob das alles überhaupt mit einem Pi funktioniert.

Alles zeitkritische in einen eigenen µC stopfen. Diesen dann per I2C 
oder Rs232 an den Raspberry hängen.

Wozu brauchts den Raspberry überhaupt? Bildauswertung zur 
Positionsbestimmung bei fehlendem GPS? Automatischer Zielanflug mittels 
Bildauswertung? Navigaionsradar/-lidar?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.