Raspberry Pi powered Wii-Quadrocopter

NeroBurner

Neuer Benutzer
#1
Hallo,
ich versuche einen Quadrocopter aus meinem Raspberry Pi und meiner WiiPlus+Nunchuck zu erstellen

Folgende Teile habe ich mir herausgesucht
1 x Raspberri Pi
1 x HD Kamera für Raspberry Pi
2 x L293D Motor Controller IC aus der Anleitung von adafruit
1 x WLAN-Stick


Jetzt fehlen mir noch 4 Motoren, dazu passende Rotoren, ein Gehäuse und die Stromversorgung. Worauf muss ich dabei achten? Ich würde gerne alle Teile bei conrad kaufen. Für links zu Motoren/Rotoren und Tipps wäre ich sehr dankbar
 

sausarus

Unikatbastler
#2
tja, ich glaube das wird nicht so funktionieren! die motortreiber können nur bürstenmotoren steuern. um den pi vernünftig in die luft zu bekommen brauchst du aber mehr leistung als bei den nanoquads verfügbar ist. also musst du dich mal schlau machen ob eine ansteuerung von brushless-motoren möglich ist!

grüße, jörg
 

muerzi

Erfahrener Benutzer
#7
Hiermit kannst du den nunchuck auslesen http://olimex.wordpress.com/2013/01/11/raspberry-pi-project-interfacing-wii-nunchuk-with-rpi/

Hiermit kannst du brushlessregler ansteuern http://solenerotech1.wordpress.com/...-control-a-brushless-motor-with-raspberry-pi/

Weiter infos zu Regelkreis usw... http://solenerotech1.wordpress.com

Jede Menge arbeit, aber bestimmt machbar. Kalman filter gibts sicher auch in phyton sowie ne gps lib usw...

Opencv ist auch schon portiert zur objekterkennung. Der phantasie sind keine grenzen gesetzt...
http://www.raspberrypi.org/archives/4207
 
Zuletzt bearbeitet:

NeroBurner

Neuer Benutzer
#8
ich verwende kein multiwii, ich habe vor die Regelung selbst zu schreiben (C++, C, Python)

@sausarus: danke für den Hinweis. Es wäre möglich mit dem Chip einen Brushless Motor zu betreiben, nur würde ich dann jede Phase einzeln ansteuern müssen (Tutorial) . Da ist mir ein ESC lieber, da muss ich beim RPi pro Motor nur einen Pin mit einer PWM einstellen
@muerzi: danke für die Links, sehen SEHR hilfreich aus

Somit meine Upgedatete Frage: welche Brushless Motoren + ESC soll ich verwenden? Wie viel Leistung brauche ich. Welche Stromversorgung soll ich dabei nehmen? Gibt es Tipps für das Gehäuse?

habe ich die folgenden Punkte richtig verstanden:
- wii motion plus ist ein Gyrometer, also bestimmt den Neigungswinkel
- wii nunchuck ist ein Accelerometer, bestimmt also die Beschleunigung
- für einen Quadrocopter ist das Gyrometer essentiell zum Fliegen, und der Accellerometer da um wieder zum Stillstand zu kommen

Mein Plan ist es zuerst alle Teile Anzuschaffen, danach es zusammen zu bringen die einzelnen Komponenten anzusteuern (Nunchuck, Motion Plus, Motoren). Wenn das geschehen ist eine Regelung schreiben und ganz am Schluss den ganzen Quadrocopter über WLAN fernzusteuern.

Wenn mein kleiner RPI fliegt können ja weitere Modifikationen gemacht werden, aber zuerst muss die RPi einmal in die Luft (und wieder heil runter kommen).
OpenCV hört sich auch sehr interessant an
 

zerosight

Erfahrener Benutzer
#9
Ich würde kleine, einfache und günstige Komponenten für den Anfang verwenden. Je leichter der Copter, desto geringer die Energie beim Aufschlag, die vernichtet werden muss. Also 30g Motoren mit um die 1000kV, 8" Propeller und Rahmen aus Baumarktalu. Sowas gibts aber nicht bei Conrad. Conrad ist da eher die Apotheke. Es gibt diverse spezialisierte Internethändler, wie flyduino.net, pitchpump etc..
 
#10
Bei mir gibt es 2 Gründe:
1. Ich hatte keine Ahnung dass es so eine MultiWii Steuerung gibt, da ich immer von Raspberry Pi + Peripherie ausgegangen bin und folglich nicht in diese Richtung gesucht habe
2. Spielerisch Lernen. Mein Ziel ist es durch herumspielen, ausprobieren, Manuals lesen, etc, etwas dazu zu lernen und dabei auch noch Spaß zu haben. zB muss ich einen Motor ansteuern (Bushed, Brushless, PWM,...), die Motion Plus und den Nunchuck auslesen (I2C-Protokoll), die ganze Elektronik verkabeln und mit Strom versorgen. Meiner Meinung nach eine Win-Win-Situation für mich.

Welche teile ersetzt ne MultiWii Steuerung, oder anders gefragt, was kann eine MultiWii Steuerung?
 

Zuse

Erfahrener Benutzer
#11
Also ne MultiWii Steuerung gibts kompletto für unter 20 Euro. Wieso sollte man sich die Mühe machen, etwas passend zu machen, was einfach nicht passend ist. ;) *amkopfkratz*

Will ja auch keiner ein Auto mit Paddeln fahren.
Der Weg ist das Ziel!
Wenn jeder einfach nur die "MultiWii Steuerung für unter 20 Euro kauft", gibt es keine Innovationen mehr sondern nur noch Copterflieger ;)

Diskutieren könnte man eher darüber, ob es unbedingt die WiiMotion (mit der ich auch angefangen habe!) sein muss und der Nunchuk ...
DAS ist kostenmäßig kein Vorteil und technisch noch die Steinaxt ... ein kleines Board mit dem MPU6050 ist für wenige Dollar zu bekommen und lässt Zeit und Raum für die wirklichen Programmieraufgaben.

Nur meine Meinung
Manfred
 

muerzi

Erfahrener Benutzer
#13
Nimm einen mpu6050 und einen hmc8553l.

Sind mittlerweile spottbillig und laufen mit 3,3v.
Misst dann auch nix zerlegen oder wild herumlöten..,
 

rossi

Erfahrener Benutzer
#14
Sehr gute Idee. So ein Raspberry Pi als Boardcomputer bringt viele Vorteile mit sich, die grundsätzlich schon mal bei wesentlich mehr Rechenpower anfangen und bei einem echten USB Host (UMTS Stick, USB Kamera etc.) noch lange nicht aufhören.
Bin sehr gespannt.
 

Zuse

Erfahrener Benutzer
#15
( ...) Tolle Sache ansich, aber bitte eigne dir (im eigenen Interesse) zuerst die Grundlagen an und dann überraschst du uns mit deinen rattenscharfen Eigenentwicklungen! Glaub mir, wir freuen uns darauf!
Viel Erfolg!
Volle Zustimmung!
Es finden sich hier - und nicht nur hier - immer wieder Threads mit großem Anspruch und praktisch Null Vorkenntnisse,
nur ein aktuelles Beispiel: http://fpv-community.de/showthread.php?32670-Quadrocopter-Selbstbau.
Muss wirklich nicht sein.

Manfred
 

zwiebacksaege

Erfahrener Benutzer
#16
dem möchte ich auch zustimmen... bevor Du Dir direkt vornimmst eine komplette Copter-Regelung inkl. komplett neuer Hardware zu schreiben, solltest Du evtl. einen Gang zurückschalten. Im Normalfall sollte man mal schauen, was es schon alles gibt, was man daran vielleicht besser oder anders machen kann und es erst einmal ausprobieren... dann erübrigen sich auch viele Fragen und relativieren sich einige Ansprüche.
Dein Beitrag klingt leider in unseren Ohren ein bisschen nach neues Auto erfinden wollen und gleichzeitig fragen was ein Rad ist.
Bei so wenig Vorwissen und (Flug)erfahrung unterstelle ich einfach mal, dass USB und RPi technisch weit überholt sind, bis Du dein Ziel erreicht hast. Warum schliesst Du dich nicht einer bestehenden FC-Entwicklung an und bringst dort zu unser aller Freude deine Kraft und Zeit ein?
Bitte nicht falsch verstehen
 

schnellmaleben

Erfahrener Benutzer
#17
habe ich die folgenden Punkte richtig verstanden:
- wii motion plus ist ein Gyrometer, also bestimmt den Neigungswinkel
- wii nunchuck ist ein Accelerometer, bestimmt also die Beschleunigung
- für einen Quadrocopter ist das Gyrometer essentiell zum Fliegen, und der Accellerometer da um wieder zum Stillstand zu kommen
Nicht ganz. Das Gyrometer kann nur (relative) Drehungen erfassen, es macht aus dem System aus 4 oder mehr Motoren erst ein selbststabilisierendes System (die Regelung minimiert die Drehung um alle drei Achsen). Ja, das ist essentiell :)
Das Accelerometer wird in er einfachsten Form nur benutzt, um die Richtung der Erdanziehung (eine permanent vorhandene Beschleunigung) rauszufinden. Das braucht man um den Copter wieder in die Senkrechte zu stellen, so dass Schub gegen Schwerkraft wirkt und der Copter nicht unkontrolliert seitwärts davonsaust.

Was hältst Du denn davon, Dir einen MultiWii-Copter zu bauen und dann den Raspi mit drauf zu schnallen? Er könnte dann, statt die LowLevel-Regelung machen zu müssen, gut HighLevel-Funktionen wie Navigation, Wegpunkte, Bilderkennung usw. machen und gibt das dann an die MultiWii-Lageregelung weiter (z.B. seriell). Die MultiWii-SW kannst Du ja trotzdem nach belieben ummodden. Auf die Art bist Du schnell am Ziel, Zusatzkosten halten sich in Grenzen, da eine einfache FlightControl kaum mehr kostet als die Sensoren.
Es gibt ja auch Arduino-basierte Aufsatzboards für den Pi, da dürfte MultiWii auf Anhieb drauf laufen. Dann brauchst Du noch eine gescheite IMU (am besten gleich mehr Sensoren als nur Gyro/ACC).
 

harlix

Neuer Benutzer
#18
Hallo,

ich glaube nicht, dass das Projekt mit einer RPi-Standard-Linuxdistribution zum Erfolg wird. Grund: Das ist nicht echtzeitfähig. Die erforderlichen Regelungen brauchen aber einen jitterfreien und genau periodischen Systemtakt, um alle n ms die Reglerwerte neu zu berechnen, dabei darf es auch keine Fehler geben. Ein normales Linux kann erst einmal so nicht garantieren, dass z. B. genau alle 5 ms eine Funktion zur Werteberechnung aufgerufen wird, da vielleicht gerade in dem Moment eine Task mit höherer Priorität läuft, die sich nicht beenden lässt (irgend ein Treiber z. B., der gerade durch einen Interrupt ausgelöst irgendwas berechnet). Dazu muss erst ein Kernel mit Echtzeit-Patch kompiliert werden und das ist recht aufwändig. Auch halte ich Python für zeitkritische Berechnungen für ungeeignet, da es sich dabei um eine interpretierte Sprache handelt, was zu unvorhersehbaren Latenzen und einem ziemlichen Overhead führt.

Ansonsten aber ein netter Ansatz. Der RPi ist bestimmt gut geeignet für die Kamerasteuerung und Komfortfunktionen, wo es auf hohe Rechenleistung, hohen Datendurchsatz und eben nicht so sehr auf Echtzeitfähigkeit ankommt. Die Regelung der Antriebe auf Low-Level-Ebene könnte ein dafür vorgesehenes (echtzeitfähiges) Controller-Board übernehmen, das mit dem RPi kommuniziert.

Gruß,

Felix
 

rossi

Erfahrener Benutzer
#19
Ich glaube nicht, dass die von dir angeführten Punkte von besonderer Relevanz sind. Ein Prozessor, der mit 700MHz getaktet ist berechnet die Regelung eines Kopters wohl auch mit einem nicht Echtzeit OS präzise genug. Zumindest sicher genau so präzise wie ein mit 16MHz getakteter 8-bit Prozessor. Die Unterbrechungen durch andere Prozesse lassen sich auf ein Minimum reduzieren indem man die Prozesspriorität passend wählt und Prozesse, die nicht gebraucht werden einfach gar nicht erst startet. Und dann gibt es natürlich auch noch die Möglichkeit die Unzulänglichkeiten des Betriebssystems in Software auszugleichen. Jeder, der schon mal einen Egoshooter im Lan gezockt hat und mal darüber nachgedacht hat, wie schön synchron mehrere Rechner in einem Netzwerk ein Programm abarbeiten kann sich vorstellen, dass es kein Hexenwerk sein kann eine stabile Zeitbasis zu schaffen.

Edit: Bei Python gebe ich dir Recht. Das ist für diese Aufgabe mehr als schlecht geeignet. Eine Compilersprache sollte es schon sein.
 
Zuletzt bearbeitet:
#20
Ich denke, da hat harlix schon Recht. Es geht hierbei nicht darum, möglichst viel Rechenleistung zu haben. Es geht im präzises, jitterfreies Zeitverhalten. Diese Anforderung ist nicht mit einem Egoshooter im LAN vergleichbar. In Betriebssystemen werden den einzelnen Tasks von einem Scheduler Rechenzeit zugeteilt. Das kann man hier überhaupt nicht gebrauchen weil man nie weiß, wann der Task mit dem Regler seine Rechenzeit bekommt. Mag sein, dass das mit 700MHz rasend schnell geht. Aber das Timing ist eben nicht präzise kalkulierbar. Alles, was auf einem normalen Betriebssystem läuft ist dafür ungeeignet. Interpreter-Sprachen wie Python erst recht. Für langsame Regelaufgaben wie z.B. eine Heizungsregelung mag das funktionieren, aber wir reden hier über hochdynamische Flugreglungen. Da muss man schon hardwarenah programmieren. Der Task für einen solchen Regler muss interruptgesteuert durch einen Hardwaretimer angestoßen werden. Auf diese Ebene kommst du bei einem Betriebssystem nicht herunter. Ansonsten hast du bei jedem Regelschritt effektiv andere I- und D-Parameter im Regler. Was wie besagt Sinn macht ist die reine Flugreglung durch eine hardwarenah programmierte Flightcontrol zu machen und diese z.B. über einen UART mit dem Linuxboard zu verbinden. Das Linux-Board kann dann das ganze High-Level Zeug wie Waypoints, RTH, Kameraauslösung, und Loggen der Flugdaten machen.
 
Zuletzt bearbeitet:
FPV1

Banggood

Oben Unten