
Par Mikołaj Zalewski, ingénieur en apprentissage automatique et Przemysław Walczyk, directeur principal de l'ingénierie
Chez Nomagic, nous utilisons intensivement les caméras RealSense série D400 (principalement la D415). Ces caméras sont populaires grâce à leur capacité à fournir des entrées RGB et de profondeur à un coût raisonnable, plusieurs dizaines de fois inférieur à celui des caméras de profondeur industrielles. Caméra de vision stéréoscopique à motif statique, la D415 permet à plusieurs caméras de fonctionner simultanément sans interférence. Bien que la qualité de la profondeur puisse idéalement être meilleure (RealSense calcule la profondeur en temps réel à des fréquences d'images élevées), le principal problème rencontré était le dysfonctionnement intermittent des caméras. Ces problèmes étaient souvent aggravés par la complexité de notre système de vision, qui implique plusieurs caméras connectées simultanément. Nous présentons ici quelques solutions efficaces pour y parvenir.
Souvent, après l'arrêt du processus ROS de la caméra, celle-ci ne fonctionnait plus lors de la tentative suivante. Parfois, elle cessait également de fonctionner en cours d'exécution. Dans ces cas, nous rencontrions des messages d'erreur liés aux entrées/sorties ou au protocole, ou la caméra disparaissait tout simplement. rs-énumérer-les-périphériques et lsusb. Le simple fait de rebrancher et de débrancher la caméra résolvait généralement le problème (bien que, dans un cas précis, un redémarrage de l'ordinateur ait été nécessaire, comme décrit ci-dessous). Nous utilisons des hubs alimentés, et le simple fait de rebrancher et de débrancher le câble entre la caméra et le hub constitueait toujours une solution fiable. En revanche, rebrancher et débrancher le câble entre le hub et le PC ne fonctionne que dans certains cas. Cela suggère l'existence d'au moins deux types de problèmes différents ; consultez la section suivante pour plus de détails.
Dans une expérience, nous avons connecté quatre caméras à un système et redémarré leurs nœuds ROS 6 631 fois de suite. Nous avons observé 45 cas où l'une des quatre caméras n'a pas réapparu (environ 1%). Les détails de ce problème sont disponibles dans ce rapport de bug ; les résultats peuvent toutefois varier considérablement : certains jours, les caméras ont fonctionné beaucoup mieux, tandis que d'autres jours, leurs performances ont été moins bonnes.
Comme il n'est pas possible de débrancher les caméras à distance, nous utilisons deux astuces supplémentaires :
Bien que ces solutions de contournement soient utiles à court terme, elles ne conviennent pas aux environnements de production. C'est pourquoi nous avons recherché des solutions plus robustes.
Le firmware 5.8.15 fourni par défaut avec les caméras est sujet à des dysfonctionnements intermittents. La mise à jour vers la série 5.9.x résout la plupart de ces problèmes, la série 5.10.x offrant une stabilité encore plus grande.
Il arrive parfois qu'une caméra se connecte en mode USB 2 (même branchée sur un port USB 3), ce qui réduit considérablement ses fonctionnalités. Par exemple, il devient impossible de capturer simultanément des images de profondeur et infrarouges, ou d'atteindre des résolutions et des fréquences d'images plus élevées. Pour vérifier le type de connexion, exécutez la commande suivante : lsusb -t. Chaque caméra devrait apparaître comme quatre entrées avec une vitesse de 5000M. Si vous ne voyez que trois entrées à 480M, Il est nécessaire de rebrancher la caméra.
Comme indiqué dans ce document, les caméras RealSense consomment une partie importante de la bande passante théorique de l'USB 3.0 de 5 000 Mbits/s (la bande passante réelle se situe généralement entre 3 200 et 3 600 Mbits/s). Connecter trop de caméras à un seul port USB via des concentrateurs peut entraîner des dysfonctionnements dus aux limitations de bande passante. Même avec des ports USB séparés, de nombreuses cartes mères ne permettent qu'un ou deux concentrateurs USB internes, ce qui signifie que plusieurs ports peuvent partager la même bande passante de 5 000 Mbits/s. lsusb -t Cette commande permet de visualiser le nombre de hubs utilisés (recherchez les lignes marquées). 5000M).
Pour augmenter la bande passante :
Réinitialiser l'appareil photo avant utilisation s'est avéré très efficace, notamment avec les anciennes versions du micrologiciel. De nombreux problèmes ont été résolus par une réinitialisation logicielle de l'appareil photo, comme le montre cet exemple. mettre. L'ajout d'un tel code au processus de démarrage de la caméra a considérablement réduit les cas d'échec d'initialisation.
La réinitialisation ou le débranchement des caméras peut révéler un bug dans certains noyaux Linux, notamment celui utilisé dans Ubuntu 16.04 LTS. Comme décrit dans ce rapport, certaines versions du noyau présentent des fuites /dev/media* Les appareils se déconnectent. Une fois les 255 appareils utilisés, les caméras RealSense cessent de fonctionner.
Les symptômes incluent :
lsusb -t montrer Conducteur= au lieu de Pilote=uvcvideo.ls /dev/media* Affichage de 255 entrées.La seule solution consiste à redémarrer le système, bien qu'il soit préférable de passer à une version du noyau non affecté par ce bogue (par exemple, 4.18 ou ultérieurement).
Si votre flux de profondeur commence à se déformer, cela peut indiquer des données d'étalonnage de profondeur corrompues. L'' Outil d'étalonnage dynamique “ peut restaurer ces données. Intel.Realsense.CustomRW -g, puis en exécutant la procédure d'étalonnage.

Certains problèmes surviennent de câbles défectueux, notamment lorsque la caméra est montée sur un bras robotisé mobile. Les symptômes impliquent un dysfonctionnement de plus en plus fréquente d'une caméra spécifique au fil du temps, jusqu'à ce qu'elle cesse complètement de fonctionner. Le remplacement du câble résout généralement ce problème. Bien que nous ne disposions pas encore d'une méthode fiable pour détecter les câbles défectueux, le comptage des images incomplètes ou l'utilisation de la GetPortErrorCount Cette commande (introduite dans l'USB 3.1) pourrait être utile.
Remarque : La bande passante théorique de 5 000 Mbits/s de l'USB 3 peut interférer avec les équipements radio 2,5 GHz. Par exemple, nous avons constaté qu'un clavier sans fil cessait de fonctionner lorsqu'il était branché à proximité d'une caméra RealSense. L'utilisation de câbles USB blindés ou l'éloignement de tels appareils peuvent atténuer ce problème.
Bon nombre des astuces décrites ici ont été découvertes grâce à des interactions avec Prise en charge d'Intel RealSense, Nous vous en remercions. Vous pouvez y ouvrir des tickets et obtenir une réponse rapide.