Mikołaj Zalewski, Ingenieur für maschinelles Lernen, und Przemysław Walczyk, Senior Engineering Manager
Bei Nomagic arbeiten wir intensiv mit Kameras der RealSense D400-Serie (hauptsächlich der D415). Diese Kameras sind beliebt, da sie RGB- und Tiefeninformationen zu einem vernünftigen Preis liefern – um ein Vielfaches günstiger als industrielle Tiefenkameras. Als Stereokamera mit statischem Muster ermöglicht die D415 den gleichzeitigen Betrieb mehrerer Kameras ohne Störungen. Obwohl die Tiefenqualität idealerweise besser sein könnte (andererseits berechnet RealSense die Tiefe in Echtzeit mit hohen Bildraten), bestand unser Hauptproblem darin, dass die Kameras zeitweise nicht funktionierten. Diese Probleme wurden oft durch die Komplexität unseres Bildverarbeitungssystems verschärft, da mehrere Kameras gleichzeitig angeschlossen sind. Im Folgenden stellen wir einige effektive Lösungsansätze für diese Probleme vor.
Häufig funktionierte die Kamera nach Beendigung des ROS-Knotenprozesses beim nächsten Versuch nicht mehr. Gelegentlich stellte sie auch während der Ausführung ihren Betrieb ein. In solchen Fällen traten Fehlermeldungen bezüglich E/A- oder Protokollfehlern auf, oder die Kamera verschwand einfach aus dem System. rs-enumerate-devices Und lsusb. Das erneute Anschließen der Kamera behob das Problem in der Regel (in einem Fall mussten wir jedoch den Computer neu starten, wie unten beschrieben). Wir verwendeten aktive Hubs, und das erneute Anschließen des Kabels zwischen Kamera und Hub erwies sich stets als zuverlässige Lösung. Das erneute Anschließen des Kabels zwischen Hub und PC funktionierte hingegen nur in einigen Fällen. Dies deutet darauf hin, dass mindestens zwei verschiedene Problemtypen vorliegen – weitere Details finden Sie im nächsten Abschnitt.
In einem Experiment schlossen wir vier Kameras an ein System an und starteten deren ROS-Knoten 6.631 Mal hintereinander neu. Dabei beobachteten wir 45 Fälle, in denen eine der vier Kameras nicht wieder erkannt wurde (ca. 1%). Details zu diesem Problem finden sich in diesem Fehlerbericht. Die Ergebnisse können jedoch stark variieren – an manchen Tagen funktionierten die Kameras deutlich besser, an anderen Tagen deutlich schlechter.
Da das ferngesteuerte Trennen der Kameras nicht möglich ist, wenden wir zwei weitere Tricks an:
Diese Behelfslösungen sind zwar kurzfristig hilfreich, eignen sich aber nicht für Produktionsumgebungen. Daher suchten wir nach robusteren Lösungen.
Die standardmäßig mit den Kameras ausgelieferte Firmware 5.8.15 neigt zu Problemen mit sporadischen Ausfällen. Ein Upgrade auf die 5.9.x-Serie behebt viele dieser Probleme, wobei die 5.10.x-Serie eine noch höhere Stabilität bietet.
Gelegentlich verbindet sich eine Kamera im USB-2-Modus (selbst an einem USB-3-Anschluss), was die Funktionalität erheblich einschränkt. Beispielsweise ist es dann nicht mehr möglich, gleichzeitig Tiefen- und Infrarotbilder aufzunehmen oder höhere Auflösungen und Bildraten zu erzielen. Um den Verbindungstyp zu überprüfen, führen Sie folgenden Befehl aus: lsusb -t. Jede Kamera sollte als vier Einträge mit einer Geschwindigkeit von erscheinen. 5000M. Wenn Sie nur drei Einträge sehen bei 480 Mio., es ist notwendig, die Kamera neu anzuschließen.
Wie in diesem Dokument detailliert beschrieben, beanspruchen RealSense-Kameras einen erheblichen Teil der theoretischen USB-3-Bandbreite von 5000 Mbit/s (die tatsächliche Bandbreite liegt typischerweise bei 3200–3600 Mbit/s). Der Anschluss zu vieler Kameras an einen einzigen USB-Anschluss über Hubs kann aufgrund von Bandbreitenbeschränkungen zu Ausfällen führen. Selbst bei separaten USB-Anschlüssen verfügen viele Motherboards nur über einen oder zwei interne USB-Hubs, sodass sich die Anschlüsse die gleiche Bandbreite von 5000 Mbit/s teilen müssen. lsusb -t Der Befehl kann anzeigen, wie viele Hubs verwendet werden (suchen Sie nach Zeilen mit der Markierung „“). 5000M).
Zur Erhöhung der Bandbreite:
Das Zurücksetzen der Kamera vor der Verwendung erwies sich als äußerst wirksam, insbesondere bei älteren Firmware-Versionen. Viele Probleme konnten durch das programmgesteuerte Zurücksetzen der Kamera behoben werden, wie hier gezeigt wird. begehen. Durch das Hinzufügen eines solchen Codes zum Startvorgang der Kamera konnten die Fälle von Initialisierungsfehlern deutlich reduziert werden.
Das Zurücksetzen oder Trennen von Kameras vom Stromnetz kann einen Fehler in einigen Linux-Kerneln aufdecken, darunter auch in der Version, die in Ubuntu 16.04 LTS verwendet wird. Wie beschrieben in dieser Bericht, Bei bestimmten Kernelversionen kommt es zu Leckagen. /dev/media* Geräte nach dem Trennen der Verbindung. Sobald alle 255 Geräte verwendet wurden, funktionieren die RealSense-Kameras nicht mehr.
Zu den Symptomen gehören:
lsusb -t Das heißt, es ist nichts anderes als das, was man erwarten würde. Fahrer= anstatt Treiber=uvcvideo.ls /dev/media* Es werden 255 Einträge angezeigt.Die einzige Abhilfe besteht in einem Neustart des Systems, wobei ein Upgrade auf eine Kernel-Version, die von diesem Fehler nicht betroffen ist (z. B. 4.18 oder höher), vorzuziehen ist.
Wenn Ihr Tiefendatenstrom verzerrt erscheint, kann dies auf beschädigte Tiefenkalibrierungsdaten hinweisen. Das “Dynamische Kalibrierungstool” kann Kalibrierungsdaten wiederherstellen. Intel.Realsense.CustomRW -g, Anschließend wird das Kalibrierungsverfahren durchgeführt.

Manche Probleme entstehen durch defekte Kabel, insbesondere wenn die Kamera an einem beweglichen Roboterarm montiert ist. Symptome sind unter anderem, dass eine bestimmte Kamera mit der Zeit immer häufiger ausfällt, bis sie schließlich ganz ausfällt. Ein Kabeltausch behebt das Problem in der Regel. Zwar verfügen wir noch nicht über eine zuverlässige Methode zur Erkennung defekter Kabel, doch das Zählen unvollständiger Bilder oder die Verwendung der … GetPortErrorCount Der Befehl (eingeführt in USB 3.1) könnte helfen.
Hinweis: Die theoretische Bandbreite von USB 3.0 (5000 Mbit/s) kann Störungen bei 2,5-GHz-Funkgeräten verursachen. Beispielsweise funktionierte eine drahtlose Tastatur nicht mehr, als sie in der Nähe einer RealSense-Kamera angeschlossen wurde. Abgeschirmte USB-Kabel oder das Vermeiden solcher Geräte in der Nähe können dieses Problem beheben.
Viele der hier beschriebenen Tricks wurden durch Interaktionen mit entdeckt. Intel RealSense-Unterstützung, Dafür sind wir dankbar. Sie können dort Tickets eröffnen und mit einer schnellen Antwort rechnen.