Hey Leute! *Ausgangssituation*: Ich möchte einen Tennisball tracken und die Pose als Input für meine Software nutzen. Ich habe Softwareerfahrung aber überhaupt keine Erfahrung mit µ-controllern und hardware. *Mein Ziel*: Eine günstige Stereokamera, mit global Shutter und hoher fps. Deshalb habe ich als besten Sensor für mein Problem den OV9281 ausgewählt, das Problem ist dass ich in Deutschland keine in absehbarer Zeit erschwingliche Lösung finden konnte um daraus ein Stereo Setup zu machen. Hier mal die Optionen die ich sehe: 1) Nutze ein fertiges Stereomodul, dass leider mit 60mm nur eine gerine Baseline hat und damit auf meine Entfernungen keine gute Tiefenschätzung ermöglicht. Ich finde in Deutschland auch leider keine Variante mit flexibler Baseline. Hier ein Beispiel: https://amzn.eu/d/07wDwy99 Kennt jemand irgendwo einen Shop in dem es eine Variante gibt bei der die Distanz zwischen den Kameras vergrößert werden kann? 2) Nutze eine USB Version der OV9281, trigger die beiden Kameras mittels Arduino und verbinde sie separat mit dem PC. Das Problem ist, ich finde einfach keine USB Variante die auch Trigger Kontakte hat. Weiß jemand ob es irgendwo eine USB Variante der Kamera mit Triggermöglichkeit gibt? 3) Nutze die MIPI Version der Kamera. Verbinde sie mit einem rasberry pi 5 und trigger die kameras auch über den rasberry pi. Hier weiß ich aber nicht was für eine latenz ich reinbekomme, wenn ich die beiden mipi kameras über den rasberry and meinen rechner schicke. Hier eine Kamera mit mipi und trigger kontakten auf der rückseite: https://amzn.eu/d/09fOhOtK Was für eine Latenz bekomme ich über den Rasberry? Schafft er es überhaupt die zwei streams über einen usb port and den rechner zu schicken? Was würdet ihr sagen ist die beste Option? Könnt ihr mir irgendwelche Shops empfehlen, auf denen solche Hardware in Deutschland verfügbar ist? Ich lande immer wieder auf den gleichen shops wie antratek und roboshop wo das zeug einfach nicht verfügbar ist.
Eine flexible Baseline kannst vergessen. Die muss starr und stabil gegen Umwelteinflüssen sein (Temperatur, Feuchtigkeit, Vibration) sonst ist die Kalibrierung der Kameras kaputt. Eine leichte Verbiegung führt schon dazu, dass keine Tiefenwerte berechnet werden. Meistens nimmt man Aluminium oder Karbonfasern als Sensorträger. Es gibt Algorithmen, die eine kleine Veränderung korrigieren können, aber da kenne ich mich zu wenig aus. Bei Sensoren musst du genau ins Datenblatt schauen. Manche liefern nur mehr die halbe FPS, sobald du sie über ein externes Signal synchronisierst. Es gibt dedizierte Sensoren, die über eine Master-Slave-Kommunikation sich selber synchronisieren und da verliert man keine FPS und Exposure wird auch synchronisiert. Hast du dir auch Gedanken über die Laufzeit der Algorithmen gemacht? Ein Tiefenbild mit SGBM braucht viel Rechenleistung. Wenn man hohe FPS, niedrige Latenz und eine gute Auflösung haben wollte, hat man früher FPGAs genommen. Vermutlich können das die heutigen NV Jetson auch so schnell. Pose Detection und Object tracking willst du auch machen. Auch das braucht Rechenleistung.
:
Bearbeitet durch User
Bei meinem Arbytegeber wird für so etwas meist auf Jetson AGX ORIN Boards und PCIe-Kameras vom Ximea (ximea.com) zurückgegriffen. Diese Kameras schreiben ihre Daten direkt per DMA in den Hauptspeicher des NVidia Boards, wo die GPU mit ihren 2048 CUDA Cores direkt darauf zugreifen kann. ok, das wirst Du Dir nicht leisten können. Definitiv. Also: 1. Nimm einen Pi5 mit mindestens 4GB RAM 2. Nimm zwei Raspberry Global Shutter Kameras. Jede Kamera an ihrem eigenen CSI/DSI Port 3. Die Global Shutter Kameras können für den Betrieb mit externem Triggereingang modifiziert werden. Lies hier: https://www.raspberrypi.com/documentation/accessories/camera.html#external-trigger 4. Die Triggereingänge haben 1.8V Pegel. Du brauchst einen Pegelwandler wie 74LVC1T45. 5. Für die Erzeugung der Triggersignal würde ich irgendwas in Richtung STM32L0 oder so nehmen. Der läuft auch mit 1.8V. Bedenke, dass die fallende Flanke des Triggersignals die Aufnahme startet und den elektronischen Shutter öffnet, und die steigende Flanke den elektronischen Shutter wieder schließt und die Digitalisierung des Bildes startet. Du musst also sehr präzise Frequenz und Pulsbreite steuern. Bei meinem Arbytegeber benutzen wir teilweise gepulste Infrarot-Laser zur Beleuchtung des Objektes und lassen dafür den Shutter länger offen. Da definiert also die Pulsbreite des Lasers die Belichtungszeit. fchk PS: Randbedingung: Da die CSI-Folienleiter nicht länger als 20...30cm lang sein dürfen, können die beiden Kameras maximal 50..55cm voneinander entfernt sein.
:
Bearbeitet durch User
@fsasm Vielen Dank! Ich möchte natürlich die Baseline nicht flexibel halten, mir ging es mehr darum, dass es Systeme gibt die flexibler sind, so dass man seine Baseline zu Beginn festlegen kann. Bzgl. Algorithmus werde ich lediglich die Position des Balls tracken, nicht die Tiefe des gesamten Bildes schätzen, das sollte dann mit hoher fps gehen. @fchk Wow danke! Ja die Alternative über teuren Jetson macht für mich keinen Sinn, weil ich trotzdem einen weiteren Computer brauche für die Software die ich steuern möchte. Du empfiehlst mir also meine zweite Alternative. Kannst du abschätzen, ob der rasberry pi 5 es denn schafft 2x720p mit 120fps an den Pc zu schicken? Warum brauch ich den Pegelwandler und Signalerzeuger? Kann das der Rasberry nicht schon selber? In dem Tutorial siehts zumindest für mich so aus: https://docs.arducam.com/UVC-Camera/Appilcation-Note/External-Trigger-Mode/OV9281-Global-Shutter/#14-adjust-exposure-manually Ich würde dann einfach den raspy direkt nutzen und mit einem Steckboard das Signal auf beide Kameras spiegeln wollen. Denkst du das klappt?
:
Bearbeitet durch User
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.