Die Gameboy-Cam ist eigentlich ein Super-Einstieg. Hier im Forum gibt es einen langen Thread dazu.
Die Kann im Übrigen auch schon selbst die Kanten detektieren. Dadurch wird im Controller wieder Rechenleistung frei.
Druckbare Version
Die Gameboy-Cam ist eigentlich ein Super-Einstieg. Hier im Forum gibt es einen langen Thread dazu.
Die Kann im Übrigen auch schon selbst die Kanten detektieren. Dadurch wird im Controller wieder Rechenleistung frei.
Du solltest Dir erstmal klar werden, welche Auflösung Du brauchst und welche Framerate. Daraus kannst Du dann abschätzen, wieviel Rechenleistung Du brauchst. Ich könnte mir durchaus vorstellen, dass da ein AVR ausreicht, andererseits gibts ARM7-Boards mit 64KB RAM (sowas wie auf dem POB-Eye) für etwa 70 Euro.
Vitis schreibt, bei den AVRs gibts das Problem mit der Datenerfassung, aber da hätte ich eher die Adressierung extern gemacht und so unabhängig vom AVR ins RAM geschrieben.
Jein. Der Kantenerkennungs-Algorithmus der GB-Cam liefert leider keine absolut scharfen Kanten, d.h. ein reines schwarz-weiss Bild, sondern verstärkt lediglich. Es muss also nach wie vor eine Entscheidung durchgeführt werden, um die Farbtiefe auf 1 Bit zu bringen. Und zudem hat der Controller während dem Auslesen genügend Zeit, eine Kantenerkennung durchzuführen, da man immer wieder auf den A/D-Wandler warten muss.Zitat:
Zitat von ogni42
Mit einem AVR kommt man auf jeden Fall schnell ans Limit, sowohl vom Speicher als auch von der Rechenleistung her. Nur schon, um das Bild mit 8 Bit Farbtiefe zu speichern (128 * 128 * 1 Byte = 16 KByte), braucht man ein externes RAM. Selbst ein 1 Bit Bild (128 * 128 * 1 Bit = 2 KByte) füllt das interne RAM randvoll. Wenn dann jedes Pixel einzeln, wahlfrei und oft x-fach aus dem externen RAM geholt werden muss, dann frisst das enorm Zeit.Zitat:
Zitat von Markus4004
Die Rechenleistung des AVR setzt natürlich relativ enge Grenzen. Echtzeit-Bearbeitung z.B. für einen halbwegs schnellen Roboter, kann man mehr oder weniger vergessen. Bei einem 128 * 128 Bild dauert die Verarbeitung des Bildes bei einem 16 MHz Quarz pro Befehl, den man durchschnittlich auf ein Pixel anwendet, 1 ms. Und es dürfte klar sein, dass sich schnell hunderte bis tausende Befehle pro Pixel ansammeln. (z.B: http://de.wikipedia.org/wiki/Hough-Transformation)
Für einfache, nicht zeitkritische Anwendungen sollte ein AVR fürs erste reichen. Für alles andere ist er meiner Meinung nach überfordert. Die GB-Cam sollte für erste Versuche aber gut ausreichen, es bräuchte wohl schon einen mächtigen Controller, der die Bilder der GB-Cam voll ausreizen kann. Wobei die GB-Cam an Beleuchtung, Grösse und Entfernung der Objekte doch gewisse Ansprüche stellt...
Es gibt auch AVRs mit 8KB internem RAM. Aber das meinte ich nicht, ich bin eigentlich schon von externem RAM ausgegegangen.Zitat:
Zitat von mirage
Worum es mir ging:
Wie groß die Auflösung sein sollte hängt davon ab, wie weit er sehen will und wie groß das kleinste erkennbare Objekt sein soll. Da kann es durchaus sein, dass ihm 80x60 Pixel reichen. Und 80x60 Pixel sind weniger als ein drittel von 128x128.
Ich bin jetzt davon ausgegangen, dass er für den Anfang farbige Klötzchen erkennen will oder sowas in der Art. Und dafür sollte ein AVR schon reichen.Zitat:
Die Rechenleistung des AVR setzt natürlich relativ enge Grenzen. Echtzeit-Bearbeitung z.B. für einen halbwegs schnellen Roboter, kann man mehr oder weniger vergessen. Bei einem 128 * 128 Bild dauert die Verarbeitung des Bildes bei einem 16 MHz Quarz pro Befehl, den man durchschnittlich auf ein Pixel anwendet, 1 ms. Und es dürfte klar sein, dass sich schnell hunderte bis tausende Befehle pro Pixel ansammeln. (z.B: http://de.wikipedia.org/wiki/Hough-Transformation)
Markus
Und da gibt es in der Tat wieder unterschiede in _Grössenordnungen_. Einen Ball zu erkennen, der unmittelbar vor der Kamera liegt zu erkennen, oder aber einen Ball irgendwo im Zimmer zu finden - zwischen diesen Aufgaben liegen Welten an die Anforderungen der Kamera. Die benötigte Auflösung dürfte etwa mit dem Quadrat der Entfernung steigen...Zitat:
Zitat von Markus4004
Wobei er dann irgendwelche Farbseh-Möglichkeiten braucht. Im einfachsten Fall einfach einen Farbfilter vor die Kamera. Farbkameras werden dann aber schnell teurer und vorallem aufwändiger zum auslesen - da ist die Gameboy-Cam halt schon optimal. Für 10 EUR gekauft, Schaltung mit 1 uC, 2 Logik-ICs, 1 SRAM, AVR mit 11 MHz niemals an der Grenze.Zitat:
Zitat von Markus4004
Die GBCam hat mehrere Kantenerkennungsmodi (s. Datenblatt, Edge-Extraction und Edge-Enhancement). Letzterer verstärkt die Kanten, ersterer liefert ein Binärbild.
Auf den ADWandler muss man nur dann warten, wenn man nicht genügend Speicher hat, sprich: nur auf dem aktuellen Bild arbeiten kann. Ansonsten lässt sich das per ISR erledigen und parallel dazu auf einem anderen Puffer arbeiten.
Also würdet ihr mir von einem Einstieg über USB-Webcam doch abraten?
Ich sag mal so... es ís doch immer besser mehr daten "zur auswahl" zu haben, oder nicht?Zitat:
Worum es mir ging:
Wie groß die Auflösung sein sollte hängt davon ab, wie weit er sehen will und wie groß das kleinste erkennbare Objekt sein soll. Da kann es durchaus sein, dass ihm 80x60 Pixel reichen. Und 80x60 Pixel sind weniger als ein drittel von 128x128.
mit eben einem höher aufgelöstem bild kann ich doch bessere ergebnisse erzielen.(Bitte korrigiert mich, wenn ich falsch liege...)
und wenn das (zum größten teil) nur einen finanziellen unterschied macht, mit welcher auflösung ich arbeite, dann soll mir das irgendwo egal sein...
ich mein.. dafür ist das mein hobby.
mfg jürgen
Sicher ist das besser. Es kostet nur mehr Speicher und Rechenoperationen. Es kommt eben immer auf das Gesamtsystem an. Es ist nicht nur ein finanzieller Unterschied, da z.B. die ATMega Familie per XMEM Interface nur max 64kByte RAM adressieren kann. Wenn Du Bilder hast, die größer sind, fängst Du dann ganz schän zu tricksen an.
Wenn Du Dich erst mal nur mit Bildverarbeitung beschäftigen willst - und nicht sofort einen Roboter per BV steuern - bist Du mit einer preiswerten USB Kamera und einem PC besser dran.
OK, dann werd ich mir als erstes ne USB-Cam holen. damit werde ich mich erstmal nur mit Bildverarbeitung beschäftigen. wenn ich das dann hinbekommen hab, werd ich mich eben mit ner anderen kamera beschäftigen, die dann auf meinen roboter kommt.
mfg Jürgen
Genau so ist es. Je nachdem was du tun willst und worauf das System schlussendlich laufen soll, wirst du komplett andere Ansätze verfolgen müssen. Teleskop, Brille, Infrarotkamera oder Foto-Apparat, sie alle dienen uns irgendwie zum Sehen - auf ganz unterschiedliche Art und Weise, was sich in völlig unterschiedlicher Technologie ausdrückt.Zitat:
Zitat von ogni42
Ganz ähnlich ist die Frage, ob du z.B. mit der Kamera...
...Echtzeit-Kollisionsabfrage,
...Objektsuche in einem Raum,
...Unterscheidung von eingesammelten Objekten,
...Texterkennung
etc. realisieren willst. Überlege dir am besten schon am Anfang, was du _ungefähr_ tun willst und dimensioniere deine Experimentierplattform entsprechend.