Hallo Leute Ich habe den Auftrag bekommen, einen Roboter zu bauen welcher farbige Gegenstände erkennen und einsammeln kann. Dazu werden Gegenstände mit den Farben Rot, Grün, Blau & Gelb auf einer vordefinierten Fläche verteilt. Der Roboter soll nun herausfinden von welcher Farbe die meisten Objekte vorhanden sind und diese dann einsammeln. Wenn zum Beispiel 3 Rote und jeweils 2 von den anderen Farben vorhanden sind soll er nur die roten Objekte einsammeln. Es besteht die Möglickeit den Roboter extern durch einen PC zu steuern. Die Steuerung kann sich aber auch direkt auf dem Roboter befinden. Mein erster Ansatz ist, dass der Roboter zu beginn ein Gesamtfoto der Objekte schiesst und an den Rechner sendet. Der Rechner soll dann auswerten welche Farbe im Bild dominiert und diese Farbe wird dann zurück an den Roboter gesendet. Mit dieser Information macht sich dann der Roboter auf den Weg und sammelt ein Objekt nach dem anderen ein. Mithilfe eines Farbsensors überprüft er, ob das Objekt die gewünschte Farbe hat oder nicht. Falls ja, deponiert er das Objekt an einem vordefinierten Ort, falls nicht, wirft er es aus dem Feld. Dies macht er so lange, bis er alle Objekte kontrolliert hat. Nun habe ich aber keinen Ansatz, wie ich auswerten kann, welche Farbe dominiert. Gibt es da eventuell schon fertige Programme, welche das bereits können? Andernfalls gibt es irgendwelche Algorithmen welche ich in Java oder C implementieren könnte, damit dies funktioniert? Und was haltet ihr von meinem Ansatz der Problemlösung? Weitere Möglichkeiten das Problem zu lösen wären, dass der Roboter zuerst alle Objekte einsammelt und nach Farbe sortiert. Nachdem alle eingesammelt sind kann er bestimmen von welcher Farbe am meisten objekte vorhanden sind und diese an einen vordefinierten Ort bringen. Bei dieser Variante wäre keine vorgängige Farbauswertung nötig. Weiter gäbe es die Möglichkeit wie bei meinem ersten Ansatz die dominierende Farbe durch eine Gesamtaufnahme mit dem Rechner zu ermitteln. Anschliessend hebt der Roboter dann gezielt nur Objekte mit dieser Farbe auf. Dies könnte zum Beispiel mit einer CUCam oder AVRCam realisiert werden. Da ich aber noch nie mit solchen Kameras gearbeitet habe, wird der Aufwand wohl zu gross sein. Hoffe auf Feedback von euch Gruss Stefan
schau Dir mal dieses Kickstarter-Projekt an: http://www.kickstarter.com/projects/254449872/pixy-cmucam5-a-fast-easy-to-use-vision-sensor insbesondere das Produkt-Video ganz oben auf der Seite. Das dürfte im Prinzip schon fast alles können, was Du brauchst. Das Modul teilt Dir dann über I2C mit, welche Objekte es erkannt hat und wo sich diese im Bildausschnitt befinden. Wenn ich mich recht erinnere, ist das ein Open-Hardware-Projekt ... das heißt, der Quellcode steht irgendwo auch zur Verfügung.
:
Bearbeitet durch User
Digi Spark schrieb: > schau Dir mal dieses Kickstarter-Projekt an: > http://www.kickstarter.com/projects/254449872/pixy-cmucam5-a-fast-easy-to-use-vision-sensor Vielen Dank für die schnelle Antwort, genau sowas habe ich gesucht. Leider wird Pixy aber voraussichtlich erst im November ausgeliefert. Um aber Test durchzuführen bräuchte ich die Kamera spätestens mitte Oktober. Gibt es eventuell noch andere Möglichkeiten?
Google mal nach Opencv; damit sollte es nicht schwierig sein, die Bilderkennung in C++ zu machen - zumindest wenn die Farben der Kugeln und des Untergrundes sich klar unterscheiden.
Vabi schrieb: > Google mal nach Opencv; damit sollte es nicht schwierig sein, die > Bilderkennung in C++ zu machen - zumindest wenn die Farben der Kugeln > und des Untergrundes sich klar unterscheiden. Vielen Dank für eure Antworten. Hab mich jetzt in OpenCV eingearbeitet und kann nun auch Farben erkennen. Mein grösstes Problem bis lang ist jedoch, dass mein Programm momentan extrem Lichtempfindlich ist. Ich arbeite im HSV Farbraum. Nun ist die Frage, welche Filter kann ich in OpenCV programmtechnisch oder auch physikalisch vor der Kameralinse anwenden, damit ich die Farben auch bei Lichtunterschieden erkenne? In OpenCV habe ichs schon mit equalizeHist() versucht, jedoch bringt das nicht den gewünschten Effekt. Über Hilfe wäre ich extrem dankbar. Grüsse
Stefan schrieb: > Hab mich jetzt in OpenCV eingearbeitet > und kann nun auch Farben erkennen. Das wage ich zu bezweifeln. Wir haben in der Firma 4 Leute die seit ihrem Studium sich auf Bildverarbeitung spezialisiert haben und seit 2007 mit OpenCV arbeiten und selbst diese absoluten Cracks/Nerds kennen nicht den Funktionsumfang diese Projekts. Du kannst höchstens einen Stream öffnen und dann wahllos einen Filter draufklatschen. Stefan schrieb: > Mein grösstes Problem bis lang ist > jedoch, dass mein Programm momentan extrem Lichtempfindlich ist. Ich > arbeite im HSV Farbraum. Hat genau 0,0 miteinander zu tun. Deine Kamera sollte das eigentlich beherrschen. Brauchst du ein vernünftige Kamera.
Vielleicht war eingearbeitet die falsche Wortwahl. Mir ist klar, dass man nicht in einem Monat zum OpenCV Crack wird. Auch Jahre reichen da nicht. Es tut mir leid, wenn ich dir durch meine Aussage auf den Schlips getreten bin. War definitiv nicht meine Absicht. Trotzdem würde ich sagen, dass ich in einem Monat ziemlich weit gekommen bin. Und nein, ich klatsche nicht wahllos Filter drauf, sondern ich weiss was ich da tu. Mir ist klar, dass der HSV Farbraum nichts mit Lichtverhältnissen zu tun hat. Jedoch ist man flexibler bei der Farbkalibration, da man nicht nur die Farbkanäle hat sondern auch noch die Sättigung und Helligkeit. Daher ist sie resistenter gegen Lichtänderungen im Vergleich zum RGB Raum. Da ich mich bei diesem Projekt auf eine Webcam beschränken muss, muss ich diese Lichtfilterung entweder softwaretechnisch oder mit einem physikalischen Filter lösen. Und da ich weder in der Bildverarbeitung, noch in der Fotografie/Optik über ein breites Wissen verfüge, habe ich hier um Hilfe gebeten.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.