Mikołaj Zalewski, ingeniero de aprendizaje automático y Przemysław Walczyk, director sénior de ingeniería
En Nomagic, trabajamos extensamente con cámaras de la serie RealSense D400 (principalmente la D415). Estas cámaras son populares por su capacidad de proporcionar entrada RGB y de profundidad a un costo razonable, decenas de veces más económico que las cámaras de profundidad industriales. Como cámara de visión estéreo con patrón estático, la D415 permite que varias cámaras operen simultáneamente sin interferencias. Si bien la calidad de la profundidad podría ser idealmente mejor (por otro lado, RealSense calcula la profundidad en tiempo real a altas velocidades de fotogramas), el principal problema que encontramos fue que las cámaras dejaban de funcionar intermitentemente. Estos problemas a menudo se veían agravados por la complejidad de nuestro sistema de visión, que involucra varias cámaras conectadas al sistema a la vez. Aquí compartimos algunas formas efectivas de abordar estos problemas.
A menudo, después de que el proceso del nodo ROS para la cámara terminaba, la cámara no volvía a funcionar la siguiente vez que intentábamos usarla. En ocasiones, la cámara también dejaba de funcionar durante la ejecución. En tales casos, encontrábamos mensajes de error relacionados con errores de E/S o de protocolo, o la cámara simplemente desaparecía. rs-enumerate-devices y lsusb. Generalmente, desconectar y volver a conectar la cámara solucionaba el problema (aunque en una ocasión tuvimos que reiniciar el ordenador, como se describe más adelante). Utilizamos concentradores con alimentación externa, y desconectar y volver a conectar el cable entre la cámara y el concentrador siempre fue una solución eficaz. Sin embargo, desconectar y volver a conectar el cable entre el concentrador y el PC solo funcionó en algunos casos. Esto sugiere que existen al menos dos tipos de problemas diferentes; consulte la siguiente sección para obtener más detalles.
En un experimento, conectamos cuatro cámaras a un sistema y reiniciamos sus nodos ROS 6631 veces consecutivas. Observamos 45 casos en los que una de las cuatro cámaras no volvió a aparecer (aproximadamente 1%). Los detalles de este problema se pueden encontrar en este informe de errores, aunque los resultados pueden variar significativamente: algunos días las cámaras funcionaron mucho mejor, mientras que otros funcionaron peor.
Dado que desconectar las cámaras de forma remota no es factible, empleamos dos trucos adicionales:
Si bien estas soluciones provisionales son útiles a corto plazo, no son adecuadas para entornos de producción. Por lo tanto, buscamos soluciones más robustas.
El firmware 5.8.15 que viene preinstalado en las cámaras suele causar problemas con fallos intermitentes. La actualización a la serie 5.9.x resuelve muchos de estos problemas, y la serie 5.10.x ofrece una estabilidad aún mayor.
En ocasiones, una cámara se conecta en modo USB2 (incluso cuando está conectada a un puerto USB3), lo que reduce significativamente su funcionalidad. Por ejemplo, resulta imposible capturar imágenes de profundidad e infrarrojas, o alcanzar resoluciones y velocidades de fotogramas más altas. Para verificar el tipo de conexión, ejecute lsusb -t. Cada cámara debe aparecer como cuatro entradas con una velocidad de 5000 metros. Si ve solo tres entradas en 480M, Es necesario volver a conectar la cámara.
Como se detalla en este documento, las cámaras RealSense consumen una parte significativa del ancho de banda teórico USB3 de 5000 Mbps (con un ancho de banda real que suele rondar los 3200–3600 Mbps). Conectar demasiadas cámaras a un único puerto USB mediante concentradores puede provocar fallos debido a las limitaciones de ancho de banda. Incluso con puertos USB separados, muchas placas base solo tienen uno o dos concentradores USB internos, lo que significa que los puertos pueden compartir el mismo ancho de banda de 5000 Mbps. lsusb -t El comando puede revelar cuántos concentradores están en uso (busque las líneas marcadas 5000 metros).
Para aumentar el ancho de banda:
Reiniciar la cámara antes de usarla resultó muy efectivo, especialmente con versiones de firmware más antiguas. Muchos problemas se resolvieron reiniciando la cámara mediante programación, como se demuestra en este ejemplo. comprometerse. Agregar dicho código al proceso de inicio de la cámara redujo considerablemente los casos de fallos de inicialización.
Reiniciar o desconectar las cámaras puede exponer un error en algunos núcleos de Linux, incluida la versión utilizada en Ubuntu 16.04 LTS. Como se describe en este informe, ciertas versiones del kernel presentan fugas /dev/media* Los dispositivos se desconectan. Una vez que se utilizan los 255 dispositivos, las cámaras RealSense dejan de funcionar.
Los síntomas incluyen:
lsusb -t demostración Conductor= en lugar de Controlador=uvcvideo.ls /dev/media* Mostrando 255 entradas.La única solución provisional es reiniciar el sistema, aunque es preferible actualizar a una versión del kernel que no se vea afectada por este error (por ejemplo, la 4.18 o posterior).
Si su flujo de profundidad comienza a aparecer distorsionado, puede indicar datos de calibración de profundidad corruptos. La “Herramienta de calibración dinámica” puede restaurar los datos de calibración utilizando Intel.Realsense.CustomRW -g, seguido de la ejecución del procedimiento de calibración.

Algunos problemas se derivan de cables defectuosos, especialmente cuando la cámara está montada en un brazo robótico móvil. Los síntomas incluyen que una cámara específica falla con mayor frecuencia con el tiempo hasta que deja de funcionar por completo. Reemplazar el cable generalmente resuelve esto. Si bien aún no tenemos un método confiable para detectar cables defectuosos, contar fotogramas incompletos o usar el ObtenerContadorDeErroresDePuerto El comando (introducido en USB 3.1) podría ser útil.
Nota: El ancho de banda teórico de USB 3.0 (5000 Mbps) puede interferir con equipos de radio de 2,5 GHz. Por ejemplo, un teclado inalámbrico dejó de funcionar al conectarlo cerca de una cámara RealSense. El uso de cables USB blindados o evitar el contacto con este tipo de dispositivos puede mitigar este problema.
Muchos de los trucos descritos aquí fueron descubiertos a través de interacciones con Soporte de Intel RealSense, por lo que estamos agradecidos. Puede abrir incidencias allí y esperar una respuesta rápida.