PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mikrokontroller für Drohne



Verata
03.10.2011, 21:15
Ich arbeite im Moment an einem Quadrocopter, der die Fähigkeit erhalten soll Luftbilder zu machen und diese auszuwerten.
Im Moment frage ich mich, welche Teile ich idealerweise verwende. Zunächst würde ich gerne von euch eine Empfehlung für einen Mikrokontroller haben. Er muss folgendes können:
Einen hochauflösenden CCD ansteuern (welche Kamera weiß ich noch nicht)
Die Bilder in Echtzeit auswerten (z.B. Menschen zählen, Bewegungsrichtung von Objekten bestimmen und Objekte verfolgen)
Über eine SIO Schnittstelle mit dem Avionik-Board der Drohne kommunizieren
Daten von einer SD Karte lesen und schreiben
Einen einigermaßen humanen Stromverbrauch haben (max. 8W im Leerlauf)
In einer Hochsprache programmierbar sein (C/C++ oder Basic Dialekte)
Mit allen erforderlichen Komponenten auf ein Board von Maximal 120mmX120mm passen

Für Empfehlungen bezüglich einer Kamera bin ich auch dankbar.
LG, Verata

Felix G
03.10.2011, 22:31
Er muss folgendes können:
Einen hochauflösenden CCD ansteuern (welche Kamera weiß ich noch nicht)
Die Bilder in Echtzeit auswerten (z.B. Menschen zählen, Bewegungsrichtung von Objekten bestimmen und Objekte verfolgen)Erstmal ganz wichtig: was verstehst du unter "hochauflösend", was unter "Echtzeit"?

Ich würde jedenfalls bei einer derartigen Anwendung eher keinen Mikrocontroller verwenden, sondern einen DSP.

021aet04
04.10.2011, 08:01
Das sind große Herausforderungen. Was kannst du schon? Kamera Auswertung, Hochauflösend (welche Auflösung stellst du dir vor?), Echtzeit. Das wird alles sehr kompliziert. Entweder wie oben schon genannt DSP oder einen PC verwenden, wobei je nach PC die Stromaufnahme schonrelativ groß ist. Ich würde auf ein System mit mehreren Controllern setzen (einer für Flugregelung, Navigation und einer für Kamera,...)

MfG Hannes

goara
04.10.2011, 10:46
ich würde das nicht alles in den quadro reinpacken. nehme für die flugregelung einen Atemega644 oder ähnliches, kleiner tuts auch, aber da hast du noch ein wenig spielraum. Das Video würde ich dann über Funk zu einer Bodenstation schicken und die Bildbearbeitung mit einem Laptop oder ähnlcihem Machen, wenn es wirklich ganz echtzeit sein soll, eventuell mit einem FPGA board, das eigent sich gut für Videoverarbeitung aber VHDL ist sehr gewöhnungsbedürftig zum Programmieren.

Richard
04.10.2011, 11:04
Das sind große Herausforderungen. Was kannst du schon? Kamera Auswertung, Hochauflösend (welche Auflösung stellst du dir vor?), Echtzeit. Das wird alles sehr kompliziert. Entweder wie oben schon genannt DSP oder einen PC verwenden, wobei je nach PC die Stromaufnahme schonrelativ groß ist. Ich würde auf ein System mit mehreren Controllern setzen (einer für Flugregelung, Navigation und einer für Kamera,...)

MfG Hannes

Es gibt spezial Chips (Texas (?)) die 4 Video Kanäle in h264 50/Fs verarbeten können, oder man nimmt FPGA's UND DSP's. Auf jeden Fall bedarf das sehr viel KnoffHoff. :-) Einen kompletten PC auf einen Quardkopter?????? Da kann man auch eine gebrauchte Bo 105 nehmen. :-)

Gruß Richard

021aet04
04.10.2011, 11:25
Ich habe nur die Mögllichkeiten beschrieben. Besser wäre natürlich ein DSP o.Ä. auf dem Quadro, da diese weniger Platz, Stromverbrauch, weniger unnötige Peripherie,... haben. Das einfachste wäre natürlich die Bilddaten zu einer Bodenstation senden und dort weiter zu verarbeiten. Da könnte man einen PC verwenden.

PS: Es gibt aber auch sehr kleine PCs (Pico ITX mit 100x72mm).
http://de.wikipedia.org/wiki/Nano-ITX

MfG Hannes

Verata
04.10.2011, 14:36
Danke für die zahlreichen Ideen.
Ich habe bereits 5 Mikrokontroller für das eigendliche fliegen in Gebrauch. Einen AtMega1284 als Hauptsteuereinheit, der via I2C die Atmega8 der Motorentreiber.
Ein FPGA geht nicht, weil mich dafür die Informatik Kentnisse fehlen.
Um die unklaren Begriffe klar zu stellen sei hier noch gesagt, dass es um eine Kameraauflösung von 720p geht. Die beschriebenen Opperationen sollen in Echtzeit erfolgen können. Das heißt die Drohne soll autonom einem Objekt folgen können.
Die Idee x86 Hardware zu verbauen gefällt mir ganz gut. Ich schaue mich mal nach einem passenden MB um, aber vielleicht lohnt es sich auch ein Netbook auszuweiden.
mfg Verata

extremesports
04.10.2011, 14:45
X86 wäre auch das Bifferboard, sehr geringer Stromverbrauch, klein und günstig. Ob dir allerdings die Rechenleistung ausreicht weiß ich nicht.

Grüße ext.

Verata
04.10.2011, 14:52
Danke für die Idee, aber ich glaube, das hat zu wenig Power. Im Übrigen hätte ich gerne WLAN, wenn schon x86.
Ich bin auf das pico-ITX Format gestoßen. Das Brett (http://geizhals.at/deutschland/266360) könnte passen.
Wenn ich ein minimalistisches Linux drauf setze müsste es funktionieren.
Ich könnte wahrscheinlich auch ein kleines Brett mit LGA-775 unterbringen, aber der Kühlkörper wird zu schwehr. Die ganze Konstruktion darf höchstens 500g wiegen.
mfg Verata

goara
04.10.2011, 15:48
500g wirst du kaum schaffen, wenn du eine halbwegs sinnvolle flugzeit haben willst, dann wiegt dein LlPo schon 3-400g
Mein Quadro(ok ist relativ groß 50cm Spannweite) wiegt über 950g und da ist kein rechner mit drauf, das meisste macht der rahmen (carbon ~250g) und der LiPo ~350g dann noch moroten und bishcen platine empfänger..
Wenn da noch ein kleines Board dazukommt wird das extrem eng. was spricht den n dagegen das auf eine Bodenstation zu packen wenn du sowieso wlan willst?

Verata
04.10.2011, 15:56
Der Hersteller des Sets, auf dessen Basis ich arbeite gibt an, dass der Quadro eine Nutzlast von 500g bei einer Flugzeit von 25 Minuten hat. Diese Nutzlast gilt für Kammeras und aähnliches, der LiPo zählt also nicht mit. Mit "der ganzen Konstruktion" meine ich die PC-Teile und die Kamera.
mfg Verata

Richard
04.10.2011, 16:08
Sorry Unterschrift vergessen.

Der Hersteller des Sets, auf dessen Basis ich arbeite gibt an, dass der Quadro eine Nutzlast von 500g bei einer Flugzeit von 25 Minuten hat. Diese Nutzlast gilt für Kammeras und aähnliches, der LiPo zählt also nicht mit. Mit "der ganzen Konstruktion" meine ich die PC-Teile und die Kamera.
mfg Verata

Hast Du einmal einen Link dazu? 25 min bei 500g Nutzlast ist schon ordentlich. Ich kenne einige Objecktverfolger au den Video Überwachungs Bereich, die sind sogar recht fix. Wobei "Echtzeit" ein weiter begriff ist, Echtzeit sang eigentlich nur "schnell genug für genau diese eine gerade gemeinte Anwendung". Hier z.B. Fußgänger verfolgen oder ein 300 km/h schnelles Motorrad? Einmal Echtzeit JA, einmal Echtzeit NEIN. :-)

Sorry Unterschrift vergessen.

Gruß Richard

Verata
04.10.2011, 17:17
Es handelt sich um einen Mikrokopter (https://www.mikrocontroller.com/index.php?main_page=index&cPath=80&zenid=e807ea1689720921b0c7b91d3010d38e).
Um die Anwendung etwas zu spezifizieren:
Es geht darum dass ich versuchen will ein System zur Früherkennung von Massenpaniken zu entwickeln. Es geht also um das verfolgen von Objekten, die sich mit Weniger als 20km/h bewegen. Meine Anforderung ist, dass die Software 30 Bilder pro Sekunde auswerten muss. Wie schnell das Objet ist, ist dann ja egal, wenn das Objekt sich auf mindestens 2 Bildern identifizieren lässt.
mfg Verata

Besserwessi
04.10.2011, 17:44
Man muss vermutlich keine 30 FPS auswerden, denn so schnell ändern die wenigsten Personen ihre Richtung. Zu Fuss ist man etwa im Bereich von 1-3 m/s, man braucht also für eine Strecke von etwa der größe des Kopfes eher so eine Zeit von 1/10-1/3 s. Wenn man so schnell ist, sollte das reichen um Objekte zu verfolgen. Ein PC aus x86 basis hätte ggf. den Vorteil einer einfachen WLAN-Anbindung, braucht aber von der Tendenz relativ Strom. Sparsamer könnte ein Board auf ARM Basis, ggf. auch mit DSP dazu sein. Ein FPGA fällt vermutlich schon wegen des hohen Stromverbrauchs aus. Wenn es nicht unbedingt sein muss, wird man hier auf ein fertiges Board zurückgreifen und nichts selber löten.

Je nach Elektronik wird man dafür zusätzliche Akkukapazität brauchen - eine Teil der 500 g Nutzlast gehen also doch wieder für den Akku rauf.

Der erste Punkt wäre sich mit der Bildverarbeitung zu beschäftigen, erstmal weitgehend unabhängig von der Hardware. Wenn man dann eine halbwegs laufender Software hat, kann man sich überlegen welche Hardware man mitschleppen muss. Die Entwicklung kann also erst mal weitgehend am Boden stattfinden. Für die Entwicklung wäre also der Weg mit PC am Boden schon keine so schlechte Idee - da ist man viel flexibler und hat mehr Rechenleistung zur Verfügung.

Verata
04.10.2011, 18:14
Mit Bildverarbeitung habe ich mich bereits eingehend befasst. Die Idee ARM CPUs zu nutzen klingt auf den ersten Blick sehr gut, da Ubuntu ja auch problemlos auf ARM läuft. Meine bissherigen Algorithmen laufen wunderbar, aber eben auf einem Hexacore bei 4,3Ghz. Auf dem Quadrocopter habe ich ja nur ca.5% dieser Rechenleistung verfügbar.

Felix G
04.10.2011, 20:03
720p bei 30Hz ist schon ziemlich heftig...
Das wären 1280x720x30 = 27648000 Pixel/s, also knapp 30MP/s

Ganz klar:
wenn ein FPGA nicht in Frage kommt, nimm den stärksten DSP den du finden kannst und schreib die Low-level Bildverarbeitung möglichst in Assembler.
(Schau mal bei Texas Instruments, die haben sehr leistungsfähige multicore DSPs)