Hallo!
Ich habe einen Tricopter entwickelt (Videos siehe Anhang), den ich in meinem Zimmer autonom fliegen lassen möchte. Dazu fehlt mir eine absolute Positionsbestimmung (GPS scheidet natürlich aus). Ich dachte ich probiers mal mit ner Webcam die den Tricopter von unten filmt, die Position von drei farbigen LEDs bestimmt (R,G,B) und per Funk-RS232 dem Tricopter mitteilt wo er sich befindet. Evtl. funktioniert das ja so. Die Webcam möchte ich mit Matlab auswerten.
Ich habe jetzt mal eine blaue LED ins Bild gehalten, die ergibt im blauen Kanal des Bildes einen riesigen weißen Fleck, im roten und grünen Kanal ist aber auch noch deutlich ein weißer Fleck zu erkennen. So kann meine Webcam natürlich keinen unterschied zwischen den versch. Farben feststellen.... Gibt es da irgendeinen Trick? Wenn ich die LEDs viel dunkler mache ist das ja auch nicht grad so toll für die Zuverlässigkeit meiner Positionsbestimmung....
Viele Grüße,
William
ich habe leider keine Lösung für Dich, aber möchte dein Projekt mal loben!
Einfach eine klasse Sache und super Videos. Endlich mal eine Aufgabe zum "anfassen"!
Finde ich wirklich super und viel Glück beim Umsetzen.
Hi Martin!
Schön dass es Dir gefällt! Mir macht es auch viel Spaß an dem Teil rumzubasteln und das Ergebnis von abstrakter "Rumfilterei" und "Programmiererei" direkt vor mir in der Luft zu haben. Jetzt wäre es natürlich schön wenn ich irgendwie Matlab mit dem Tricopter verknüpfen könnte.... Mich wunderts dass ich zu "LED Tracking Matlab" in Google nichts finde... Wenn ich irgendetwas mit ner Kamera tracken wollen würde, dann würde ich doch an das Objekt ne LED dran bappen, das sollte doch einen schönen Marker ergeben...
Aber anscheinend ist es nicht so leicht wie gedacht......
Hmm, eigentlich brauche ich gar keine farbigen Leds, wenn ich einfach den Suchradius beschränke, so dass die Leds nicht verwechselt werden können. Wenn alles klappt bewegt sich mein Copter ja auch fast nicht.
Hat jemand mal ein einfaches Point-Tracking versucht oder weiss jemand wo ich gute Infos darüber finde...?
ich finde auch, dass es eine spannende Geschichte ist, die du da vorhast. Hab mich auch mal damit beschäftigt allerdings fehlte mir dann das Geld dafür. Ist das bei dir Privat oder wird das von der Hochschule gefördert?
Zur Antwort: Normalerweise müsste die Kamera, die Farbe der LEDs erkennen können. Ein schneller Test mit meiner Handykamera und den mir umgebenden LEDs zeigte das es geht. Ich würde mal eine andere Kamera oder andere LEDs probieren.
Ansonsten wäre womöglich auch die Wii Fernbedienung in Kombination mit Infrarot-LEDs interessant für dich. Hätte den Vorteil, dass du wirklich nur die LEDs als Punkte sehen würdest. Der Rest wäre Schwarz. Ist dann womöglich einfacher als wenn du verschiedene Farben hast. Ansonsten fällt mir auch noch Soundtriangulation mit einem Mikrofonarray ein. Würde natürlich auch mit einem anderen Funksignal funktionieren. Guck auch mal wie das Fraunhofer Institut das damals gemacht hat. Hmm hab jetzt ne Stunde den richtigen Link gesucht. Hab aufjedenfall vor ner Weile einen fahrbaren Roboter gesehen, der auch eine Drohne oben drauf hat, welche alleine abhebt und wieder richtig landen kann. Wenn ich die Links noch finde poste ich sie.
Hi Oli,
das ist komplett privat, kann froh sein wenn die Hochschule mir genug Zeit lässt um solche Dinge überhaupt zu machen... So teuer ist das aber echt nicht. Die Motoren kosten bspw. 4 Euro pro Stück, die Regler je 8 Euro. Gyros und ACC sind auch nicht sooo teuer. Insgesamt vielleicht 200 Euro (wenn man Modellbauer ist und Fernsteuerung, Ladegeräte etc sowieso schon hat). Allerdings kostet die Entwicklung von so einem Ding schon ziemlich viel Zeit...
Also die Webcam erkennt die Farbe der LEDs, allerdings sind die Dinger wohl so hell dass alle drei Farbkanäle am Anschlag sind. IR-Leds wären schön, allerdings bräuchte ich dann wie du gesagt hast ne spezielle Kamera dafür, bzw. einen Filter. Danke auch für den Link, auch wenn die Landung noch ziemlich unbeholfen aussieht steckt da sicherlich extrem viel Knowhow drin...
Eben hatte ich die Idee dass ich ne LED mit der halben Frequenz blinken lasse mit der aufgenommen wird. Z.B. wenn die kamera 30fps hat, blinkt die LED mit 15Hz. Dann ist die Led in den augenommenen Bildern immer abwechseln an und aus. Anschließend könnte ich immer Bild 1 minus Bild 2 rechnen usw. Jeder Bildbereich der nicht mit 15Hz blinkt sollte dann schwarz sein, die Led sollte als weisser Punkt erscheinen.
Aber wahrscheinlich müsste ich dann das Blinken exakt mit der Kamera Framerate synchronisieren, sonst wird das nix.
Ich würde aber gerne meine Webcam benutzen, denn dann muss ich kein Geld investieren sondern nur Zeit... hmmm... Vielleicht doch Ultraschallsensoren am Copter? Kostet aber ne ganze Menge...
Kannst du vll die Verschlusszeit und Empfindlichkeit der Kamera steuern?
Ist zwar nicht bei allen machbar, aber wenn ja, dann solltest du zumindest so die Übersteuerung in den Griff bekommen.
Sehr ehrgeiziges Projekt. Hut ab.
_________________
Hallo,
dieses Thema lässt mich nicht los. Ich habe folgendes Problem...: Ich suche mir in zwei verschiedenen Bildern mit "centroids" die Zentren von hellen Punkten. Nun möchte ich folgendes machen:
Die Punkte, die am nähesten zusammenliegen sollen als "Gruppe" behandelt werden, so dass ich den Versatz der hellen Punkte jeweils herausbekomme. Aber wie stelle ich das an? Wie kann ich Matlab herausfinden lassen welches der näheste Punkt ist?
Hier mein bisheriger Code:
Habe eine Lösung gefunden. Einfach für jeden Punkt die Distanz zu den anderen Punkten berechnen und die geringste Distanz nehmen.
Hab mal wieder ein Video gecaptured, es werden 5 Leds getrackt. Allerdings muss der Threshold für die Binärisierung wohl noch angepasst werden. Aber immerhin klappt schonmal irgendwas. Allerdings schafft mein Computer nur 0.5 frames pro sekunde...
Jetzt klappt das mit den LEDs tracken. Ich berechne die Distanz der LEDs zur Kamera, den Gierwinkel und die Position + Geschwindigkeit. Das sende ich dann per RS232 and den Copter. Theoretisch müsste ich damit den Copter stationär über der Kamera halten können. In der Praxis habe ich bestimmt wieder mal irgendwas nicht bedacht... Ein Video vom Tracking des Copters (noch nicht im Flug) gibt es im Anhang...
Ich guck mal morgen ob das funktionieren kann.
Der Vollständigkeit halber...:
Es ist vollbracht, Matlab steuert meinen Copter und hält in auf der Stelle:
http://www.youtube.com/watch?v=OD6i_fkT1ZE
Jetzt ein Bierchen.
gomatlab.de wird im Abspann auch kurz erwähnt. Schließlich wurde mir bei meinen Projekten stets souverän geholfen.
Viel Spaß beim angucken!
p.s.: Dieses LED-Tracking-Dings funktioniert mittlerweile sehr gut. Der Copter kann jetzt auch ganz autonom einen kleinen Pfad abfliegen. Falls das jemanden interessiert findet ihr Videos davon bei meinem Vimeo-Account:
http://www.vimeo.com/willa _________________
Hi, hab eben erst dein Projekt gesehen und sieht sehr interessant aus. Möchtest du den Tricopter auch mal außerhalb deines Zimmers fliegen lassen? Ich könnte mir vorstellen, dass es Probelme bei Sonneneinstrahlung gibt besonders auch wenn du IR LEDs benutzen möchtest gerade auch weil du von unten filmst. Was passiert wenn der copter mal außerhalb des Bildbereichs kommt (durch eine Unachtsamkeit oder Unfall)? Da ich mich nicht so mit dem Gerät auskennen würde ich noch gerne wissen wie sich dein Tricopter stabilisiert? Nur anhand der Lichter? Wäre es nicht sinnvoller dies über ein oder zwei Lagesensoren auf den Tricopter direkt zu steuern und sich nur noch um die Position zum Sender zu kümmern?
Meine Vorschläge zur Positionsbestimmung wären dann noch (mal aus Sicht von vor einem halben Jahr gesehen) das du vielleicht nicht die farben aus dem Bild filterst sondern hingehst und entweder 3 LEDs an die Flächen machst und diese im vierertakt blinken läßt in der Art
1. Sekunde LED1,
2. Sekunde LED2,
3. Sekunde LED3,
4. Sekunde alles aus bzw alle 3 an um das erste LED eindeutig bestimmen zu können
oder aber an den ersten Arm 1 LED an den 2. Arm 2 LEDs ...
aus der heutigen Sicht und für die Zukunft wenn der Tricopter im Freien fliegen soll wäre es da möglich an jeden "Flügel" eine Art Funksender anzubringen, welche den Sender anpingen und man anhand der Laufzeit die Position zum Sender bestimmen kann?
P.S. Gibt es für dein Projekt einen Baukasten und was würde es zusammen kosten? Sieht echt sehr interessant aus
Da gabs doch auch damals so ein Projekt im ccc-Camp oder so. Ich meine mal was darüber gelesen zu haben *hm*
Möchtest du den Tricopter auch mal außerhalb deines Zimmers fliegen lassen? Ich könnte mir vorstellen, dass es Probelme bei Sonneneinstrahlung gibt besonders auch wenn du IR LEDs benutzen möchtest gerade auch weil du von unten filmst.
Outdoor fliege ich nicht autonom. Das macht meiner Meinung nicht sooo viel Sinn, den im freien kann man auch "einfach" per GPS navigieren. Die Herausforderung und das Neue an diesem Projekt ist eben der autonome indoor Flug.
Zitat:
Was passiert wenn der copter mal außerhalb des Bildbereichs kommt (durch eine Unachtsamkeit oder Unfall)?
Im Moment ist das "nicht vorgesehen"... Man könnte aber relativ einfach eine Sicherheitsfunktion einbauen: Wenn Bildbereich (z.B. nach links) verlassen, dann steuere solange nach rechts bis der Copter wieder im Bild ist.
Zitat:
Da ich mich nicht so mit dem Gerät auskennen würde ich noch gerne wissen wie sich dein Tricopter stabilisiert? Nur anhand der Lichter?
Mein Copter wird durch 3 Gyroskope und einen 2-achs Beschleunigungssensor stabilisiert. Durch diese Sensoren bleibt er zwar immer waagerecht, aber er kennt seine absolute Position im Raum nicht. Diese kann man entweder per LED-Tracking bestimmen und regeln oder aber (outdoor) per GPS und elektronischem Kompass und Luftdrucksensor.
Zitat:
Meine Vorschläge zur Positionsbestimmung wären dann noch (mal aus Sicht von vor einem halben Jahr gesehen) das du vielleicht nicht die farben aus dem Bild filterst sondern hingehst und entweder 3 LEDs an die Flächen machst und diese im vierertakt blinken läßt
An soetwas hatte ich auch schon gedacht. Dazu müsste man aber die Kamera und die LEDs synchronisieren. Mit einem Blinktakt von 1 Sekunde würde man aber nicht weit kommen. Es müsste schon mit ca. 15Hz die Position erfasst werden, d.h. die LEDs müssten mit 3*15Hz Blinken, so schnell kann aber meine Kamera keine Bilder erfassen.
Zitat:
wäre es da möglich an jeden "Flügel" eine Art Funksender anzubringen, welche den Sender anpingen und man anhand der Laufzeit die Position zum Sender bestimmen kann?
Das wäre bestimmt möglich, aber auch sehr teuer... Mein LED-Tracking funktioniert ohne irgendeine teure Sache und ohne dass ich mir was neues kaufen musste.
Zitat:
Gibt es für dein Projekt einen Baukasten und was würde es zusammen kosten? Sieht echt sehr interessant aus
Noch gibt es den nicht, aber ich arbeite im Moment daran einen Schaltplan zu zeichnen und eine Platine zu entwerfen. Wenn du mehr Infos suchst kannst du hier mehr über mein Projekt lesen:
http://shrediquette.blogspot.com www.tinyurl.com/tricopterthread
Die Kosten würden sich wohl auf ca. 300 Euro belaufen denke ich mal. Die Gyroskope sind leider das teuerste daran (ca. 55 Euro pro Stück)
_________________
Übrigens befestige ich zur Positionbestimmung 4 LEDs am Copter (Bild siehe Anhang). Dadurch kann ich jetzt immer genau bestimmen wo vorne und wo hinten ist. Ich suche einfach nach zwei hellen Punkten mit dem geringsten Abstand zueinander -> das ist hinten. Dann bleiben noch zwei helle Punkte übrig die ich ebenfalls eindeutig zuordnen kann (ich gehe davon aus, dass mein Copter keine Loopings fliegt und die Kamera nicht von der Decke fällt).
Die Kamera ist wie gesagt mittlerweile an der Decke befestigt, damit ich auch autonom starten und landen kann und ein etwas größeres Sichtfeld bei der Kamera habe.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.