Forum: Mikrocontroller und Digitale Elektronik Stereokamera am µC


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von theHL-mod (Gast)


Lesenswert?

Hallo,
Dies ist mein erster Beitrag in diesem Forum, also hoffe ich, dass es 
das richtige Forum ist :)

Also es ist folgende Ausgangssituation:
In meiner Fakultät haben wir eine Carrera Bahn, deren Autos wir schon 
vor einigen Semestern mit Mikrokontrollern ausgestattet haben.
Um Unfälle mit den Autos zu vermeiden habe ich vor, im Rahmen meiner 
Masterarbeit, eine Entfernungsmessung zu bauen.

Die Idee ist es, dies über Stereobildverarbeitung zu tun.
Ich habe bis jetzt 2 verschiedene Sensoren Ausprobiert:
- ov7670
- AU-85B (das Modul gibts bei pollin)

Mein Problem ist hauptsächlich bei der Ansteuerung der Module.
Also beim ov7670 ist das problem, dass sich die Bildrate nicht erhöhen 
lässt, indem man die Auflösung verringert.
Bei dem Modul AU-85B ist die zwar möglich, aber wenn ich versuche die 
Auflösung zu verringern, liefert mir der Sensor keine Daten mehr :/

Aber generell hätte ich erstmal die Frage, ob mir jemand ein Kameramodul 
empfehlen kann.

Ich brauche etwa eine Auflösung von 100x50 pixeln mit etwa 100 Hz
Graustufen reichen aus.

Na, ich hoffe das war jetzt nicht zu viel auf einmal, aber ich bin 
dankbar für alle Vorschläge.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Kommen die Kameras in die Autos rein? Oder ist das mehr so eine Art 
Kreuzungsüberwachung.

Wenn Du nicht weiterkommst, hast Du zwei Möglichkeiten, die Auflösung zu 
erhöhen und die Rasterung zu tunneln:

1. Ein zweites Kamerasystem von weiter weg oder mit anderer Optik, dass 
Du eine 1:1,41 Abbildung erhälst. Kameras zudem im 45 Grad Winkel

2. Zeitliche Auflösung senken und die DPI steigern durch Verwackeln. 
(Unwuchtmotor, Frequenzregelung, XY-Korrektur gemäß Motorposition)

Eine einfachere Möglichkeit, genau zumessen, ist Ultraschall.

von theHL-mod (Gast)


Lesenswert?

Danke schonmal für die Antwort :)

Die Kameras kommen in das Auto rein. An eine Ausrichtung von 45° habe 
ich auch schon gedacht, kann ich aber erst ausprobieren, wenn ich mal 
ein sinnvolles Bild vom Sensor erhalte ;)

Der Pollin Sensor liefert momentan Bilder mit 1600x1200 mit 12 
Bildern/s.
Also Wackeln habe ich im Auto mehr als genug, wenn es fährt, denn da die 
Bahnsegmente der Carrerabahn in China hergestellt werden, sind die 
ziemlich Uneben :) (Notfalls kann man eine Unwucht in die Reifen 
einbauen :D )

Beschleunigungssensoren sind sowieso vorgesehen, damit könnte man das 
Wackeln zurückrechnen.

Was meinst du mit XY-Korrektur anhand der Motorposition?

Also vom Wissenschaftlichen Gedanken bei der Masterarbeit wäre der 
Ansatz mit der hohen Auflösung super, das werde ich mal weiter 
verfolgen.

Beim Ultraschall gibt es das Problem, dass vorgesehen ist, dass 10 Autos 
gleichzeitig auf der Bahn fahren (an manchen Stellen hat die Bahn 6 
Spuren).
Ich bin immer davon ausgegangen, dass die Autos sich stören würden, 
besonders, wenn sie nebeneinander fahren. Das weitere Problem war, 
glaube ich, dass die Sensoren nicht genügend Messungen Vornehmen (Die 
Autos sind mit bis zu 10 m/s unterwegs).


Eine weitere optische Lösung wäre es, 2 Zeilensensoren zu verwenden, und 
die mit 1000/s auszulesen, allerdings wollte ich es vermeiden eine 
eigene Optik zu bauen.

Trotzdem vielen Dank für die Antwort, die Idee finde ich sehr 
interessant.

von Oktavian G. (Firma: Hochschule Karlsruhe) (tavin)


Lesenswert?

Es gibt ein e Rheie neuer ultrakleiner IR Abstandsensoren z.b. VCNL4000 
so einer wurde ganz gut in eine Carerra Auto passen. Die reichweite von 
ca 200 mm must noch brauchbar sein. Ultraschal wird hier nichst bringen 
da sich die Sensoren massiv stören wurden. Ich hate mal auf einem 
roboter 2 Ultraschalsensoren in ca 160° winkel eingebaut, und die haben 
sich massiv gestört wenn der eine etwas in kurzer Distanz angepingt hat.
Was mich aber sehr interessieren wurde, was für ein Controller sollte 
die für die Arbeit benutzt werden? in so ein Carrera Auto passt ja nicht 
so viel rein...

von theHL-mod (Gast)


Lesenswert?

Ah, das ist auch eine gute Idee, aber leider brauchen die Autos etwa 1m 
zum bremsen, deswegen sollten die Sensoren etwa 2m Reichweite haben. 
Vermutlich würden diese sich auch gegenseitig stören, wenn 2 oder 3 
Autos nebeneinander fahren.

Die Carrera Autos sind im Maßstab 1/24, da passt also einiges rein. 
Momentan sind 4 xmega drin. Für die Bildverarbeitung würde ich natürlich 
einen DSP nehmen, oder alles direkt in einem FPGA implementieren.

von egon (Gast)


Lesenswert?

theHL-mod:
wie hast du denn bei der au-85 die aufloesung  versucht zu 
verringern...?

hast du das subsampling der kamera verwendet ? oder benutzt du die 
window funktion ? oder beides ?

zu dem problem das keine daten mehr geliefert werden... es gibt einen 
linebuffer den man explizit aktivieren muss... (reg 0x2210 -> [5]: Line 
Buffer usage.)
diesen linebuffer braucht man wenn die output clock nicht das doppelte 
der imager clock ist...
hast du das mal probiert ? vielleicht braucht die kamera diesen 
linebuffer beim subsampling... aber nur eine vermutung...

ich hab zwar noch nichts gemacht mit der kamera aber das datenblatt habe 
ich ein wenig gelesen...

lg....

von theHL-mod (Gast)


Lesenswert?

Cool, vielen Dank, den Line buffer habe ich noch nicht ausprobiert. Die 
Kamera hat 3 Möglichkeiten für sub sampling allerdings nur eine, die 
direkt auf dem Bildsensor arbeitet. Ansonsten habe ich Subsampling und 
windowing ausprobiert. Beim Linebuffer dachte ich, dass der automatisch 
aktiviert ist, weil beim Default value laut datasheet das Bit auf 1 ist 
(Zumindest dachte ich das)

Wenn ich später im Labor bin probier ich das aber auf jeden Fall mal aus 
:)

von B. G. (smarti)


Lesenswert?

Hallo theHL-mod,

da du ja die Ansteuerung des AU-85B Moduls schon gewältigt hast, wäre es 
möglich einige Details zu nenen (verwendeter µC etc.)

Ein Thread zur Verwendung des Moduls läuft gerade hier:

Beitrag "pollin kamera au-85"

Grüße

Smarti

von egon (Gast)


Lesenswert?

ja stimmt du hast recht...
als default steht beim reg 0x2210 = 0x20 das ist ja genau das bit...
nur auf seite 20 steht:
The use of this buffer must be explicitly enabled.

etwas widerspruechlich...


aber meine kamera ist heute gekommen (bzw. liegt bereits in der 
packstation) werd ich dann auch mal ein paar tests machen am 
wochenende...

lg...

von theHL-mod (Gast)


Lesenswert?

Also momentan lese ich noch mit dem xmega aus rotwerd, aber später 
werde ich einen DSP verwenden. Ich habe noch einen ARM7 und diverse 
Hyperstone DSPs hier rumliegen, die von mir noch getestet werden wollen 
;)

Den Anderen Thread werde ich mir mal genauer anschauen, danke.

von 360-Panorama (Gast)


Lesenswert?

Nettes Projekt,

meinst nicht du willst das noch ein wenig ausbauen?

Wie wäre es damit:

http://www.heise.de/newsticker/meldung/Panorama-im-Flug-1360554.html

Sorry, ist n bissle off topic, aber mit dem Pollinmodul könnte das 
günstig machbar sein ;)

Viel Erfolg bei deinem Projekt

von Beschwerdeführer (Gast)


Lesenswert?

Was heute alles patentiert wird...

Hätte ich sofort 4 Ideen, das so toppen.

von theHL-mod (Gast)


Lesenswert?

Also ich habe letzte Woche mein Testprogramm nochmal angeschaut, dabei 
ist mir aufgefallen, dass ich das Register 0x2210 schon auf den Wert 
0x20 gesetzt habe.
Wirklich schade, dass es die Firma nicht mehr gibt, sonst würde ich dort 
einfach nachfragen.
Hast du denn bei deinem eigenen Projekt auch vor die Auflösung zu 
verändern?

Bei der Steuerung mit dem Xmega nehme ich diesen nur zur Konfiguration 
über i2c, Bilder lese ich dabei nicht aus, ich zähle nur anhand der 
Interrupts, wie groß das Bild ist. Am Oszilloskop schaue ich mir diese 
interruptleitungen auch an (VSYNC, HSYNC und Pixel clock), daher sehe 
ich, wenn kein Bild mehr kommt :)

von egon (Gast)


Lesenswert?

am wochenende hab ich das mal soweit geloetet und angefangen mit der 
ansteuerung...

der line mode ist immer aktiv stimmt schade. scheint so das die info wo 
im datenblatt nicht ganz aktuell ist.

mist hab ich anderen thread geantwortet... dann hier noch mal kurz.
also ich stell 250a ein. starte die aufnahme und hsync und vsync tut 
sich was.

ich zaehl nachher auch mal die irqs mal schauen was bei mir rauskommt.

aenderst du eigentlich den pll ? was ich nicht ganz verstehe ist ich geh 
zum test mit 8 mhz rein (mainclock) output clock ist 2,6 mhz das kann 
ich noch nachvollziehen. internal clock muesste dann 4 mhz sein wenn ich 
das mal per hand durchrechne. verstehe ich aber nicht ganz weil im 
datenblatt steht das die output clock > der mainclock sein soll.
oder ein fehler im datenblatt ? gibt ja noch am ende ein divider der 
durch 2 teilt fuer die internal clock aber der ist eigentlich aus...

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
Noch kein Account? Hier anmelden.