ich bin Merlin Ortner vom Team DBG Robots des Dietrich-Bonhoeffer-Gymnasiums Oberasbach, und wir nehmen am RoboCup Rescue teil. Wir suchen gerade die beste Kamera für unseren Roboter und würden uns über euer Feedback freuen!
Unsere Anforderungen:
Mindestens 1080p & 30 FPS
Weiter Blickwinkel (~160°-170°) für gute Sicht im Parcours
CSI-2 oder USB-Anschluss (wir nutzen den 22-pin CSI-2 des Raspberry Pi 5)
QR-Code-Erkennung und Navigation müssen gut funktionieren
Der Parcours ist zwar beleuchtet, aber es gibt dunkle Bereiche. Würde sich eine NoIR-Kamera lohnen, oder haben wir durch die fehlende IR-Sperre eher Nachteile bei der Farbwiedergabe?
Welche Kabellänge würdet ihr empfehlen?
Zur Verbindung mit dem Raspberry Pi 5 nutzen wir das CSI-2 Interface. Hier gibt es verschiedene Kabellängen. Hat jemand Erfahrung mit längeren Kabeln in beweglichen Robotern?
Freue mich über jede Einschätzung. Danke im Voraus!
ihr werdet mehrere Kameras ausprobieren müssen bis eine ‘passt’.
Fast jede Kamera macht 1080p@30fps, aber ehrlich gesagt reicht auch 720p (zum fahren auch 480p). Dabei ist 1080p 225% so groß wie 720p - und es kann entsprechend Lag entstehen, erst recht über Funkverbindung.
Wir haben auf der hinterseite eine hochauflösende Kamera mit nicht-verzerrenden Linse für CV (QR codes usw.) und vorne zum Fahren eine ultra-weitwinkel Kamera mit stark verzerrender Linse auf 480p gestellt.
(Die UW-Cam sieht die räder, das ist vor allem für align super wichtig!)
Da könnt ihr nämlich linsen separat kaufen, bis eine perfekt euren Umständen passt.
Zur verbindung:
CSI ist toll wenns funktioniert. Es einzurichten ist aber ein riesen schmerz, (erst recht auf einem Jetson), und die langen Kabel funktionierten bei uns nicht.
(möglicherweise könnte abschirmen helfen (das Kabel mit alutape einwickeln))
Aber CSI kameras haben wesentlich mehr Einstellmöglichkeiten - man spricht den sensor direkt an. (diese sind aber für euren Zweck eh unwichtig - außer ihr wollt RAW aufnahmen oder so machen )
Hingegen ist USB plug-and-play, aber der USB-A stecker scheint bei rucken manchmal die Verbindung kurz zu verlieren. Das heißt einmal die kamera raus-und-rein stecken und es geht wieder.
Persönlich würde ich eher USB wählen, da problemsuche bei CSI echt komplex ist, die Kabellänge sehr begrenzt ist und USB kameras eben wegen plug-and-play super simpel zu bedienen sind.
Ach und das CSI Flachbandkabel ist mega nervig; es gibt keine Rundkabel zum Kaufen.
CSI wurde für interne Verbindungen (zb handykamera) entwickelt und ist daher recht sensibel und auf kurze Distanzen ausgelegt.
bei einem Kamerafehler genügt bei USB ein-und-ausstecken, CSI erfordert einen Neustart des Robot-computers.
USB kameras verbrauchen viel Bandbreite - das heißt man kann nur 2(.5) USB2.0 Cams in ein Hub stecken bevor die Verbindung ausgelastet ist → sie müssen direkt in den Robot-computer gesteckt werden (ein USB 3.0 hub macht die 2.0 Verbindung nicht schneller)
CSI kann größere Datenmengen übertragen (damit volle Auflösung des sensors (oft 2k) und höhere FPS (je nach Sensor)), USB kameras komprimieren bei höheren Auflösungen um die FPS nicht einbüßen zu müssen.
Nachtsicht:
Nö.
Klatscht lieber eine weiße LED dran.
Oder stellt die Kamera richtig ein: auto-exposure aus, und brightness- Wert anpassen (das hilft vor allem bei der Messe wo die Kamera wegen den großen Fenstern nicht an die Helligkeit im Parcours anpasst)
Nachtsicht heißt eigentlich “kein Infrarot filter”. Lustigerweise kann man bei einer solch Kamera die Scanlinie des LiDAR sehen
M12 kameras haben in der Regel keinen solch Filter eingebaut, der Filter ist unten an der Linse. Falls ihr “nachtsicht” ausprobieren wollt kann man den super leicht mit einen Schraubenzieher entfernen.
Info zu Linsen:
wir haben auf die harte weise gelernt, dass die Gradzahl einer Linse nicht die “weitwinkeligkeit” definiert.
Es ist stattdessen eine Kombi aus Gradzahl, Brennweite (Focal length), und Größe des Kamerasensors.
Schaut einfach im Internet nach wie Linsen funktionieren
Info zur Software:
Es gibt mehrere ros2-kamera softwaren, aber die flexibelste ist ganz klar camera_ros.
Die benutzt den libcamera stack, der von den raspi leuten super gut unterstützt wird.
Der ist dadurch auch egal was für eine Verbindung die Kamera benutzt, das heißt CSI und USB kameras funktionieren ohne umbasteln beide wunderbar.
Zum testen ob eine Kamera erscheint:
libcamera tools installieren: sudo apt install libcamera-tools
testen: cam -l (zeigt auch die Kamera IDs ab)
Ihr könnt von unseren Robotern die Config für den ROS2 Teil abschauen:
# Installieren:
sudo apt install ros-jazzy-camera-ros #camera_ros installieren (gibts auch für humble)
source /opt/ros/jazzy/setup.bash #ros neu laden
ros2 run camera_ros camera_node #basic test für die Kamera
#die Fehler über fehlende Kalibrierung könnt ihr erstmal ignorieren.
#das wird erst wichtig wenn ihr euren Roboter simulieren und mapping machen wollt
Hallo Merlin,
ich hatte früher gute Erfahrungen mit den CSI-Kameras gemacht. Das ist aber schon ein paar Jahre her. Letzte Woche habe ich das Raspberry Camera 3 Modul bestellt mit einer Weitwinkellinse. Der Öffnungswinkel ist allerdings “nur” 102°. Ich bin gespannt auf diese Kamera. Die Erfahrungen teile ich gerne mit Euch. Ihr müsst es aber wirklich testen, was zu Eurem Roboter passt. Beim Fahren ist es z.B. gut, wenn man die Räder noch ein wenig im Bild sieht, damit man Abstände zu Hindernissen, Stufen, etc. besser abschätzen kann. Also auch die Position und der Anbringungswinkel der Kamera sind wichtig. Bei einem sehr hohen Öffnungswinkel ist die Verzeichnung extrem. In den Randbereichen erscheinen gerade Linien krumm, so dass ich auch nicht ad hoc weiß, ob eine Detektion von QR-Codes, etc. in diesen Bildbereichen gut klappt. Es gibt zwar die Möglichkeit die Bilder zu Rektifizieren, aber das muss man auch in Gang bringen. Denkt auch daran, dass Ihr vorwärts und rückwärts fahren müsst. In einigen Parcourselementen ist einfach kein Platz zum Drehen des Roboters. Ihr müsst also entweder auf eine zweite rückwärtsgerichtete Kamera umschalten, die Kamera schwenken können oder ein gutes Raumgefühl beim Rückwärtsfahren haben. Ich habe schon Teams gesehen, die Parcoursbereiche auswendig kannten und mit der vorwärtsgerichteten dennoch rückwärts navigieren konnten. Aber das erfordert Training.
Ein weiterer wichtiger Punkt ist die Datenübertragung. Wenn Ihr über ein drahtloses Netz kommuniziert, lassen sich keine hochaufgelösten Bilder in hoher Aktualisierungsrate übertragen. Auch mit Ethernet ist irgendwann Schluss. 720p reicht in den meisten Fällen gut aus. Wenn Ihr einen “schlauen” Kameraknoten baut, der ein hochaufgelöstes Bild auf Knopfdruck überträgt und sonst nur niedrig aufgelöste Bilder in hoher Aktualisierungsrate zum Fahren, seid Ihr gut gerüstet.
Viele Grüße
Stefan May