Compartir artículo:

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.


Problemas y soluciones básicas: volver a conectar las cámaras

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.


Soluciones alternativas más sofisticadas

Dado que desconectar las cámaras de forma remota no es factible, empleamos dos trucos adicionales:

  1. Reiniciar los controladores USB
    Esto se puede lograr mediante un script, simulando así la desconexión del cable entre el PC y un concentrador con alimentación. Sin embargo, este método solo funciona en algunos casos.
  2. Reinicia el ordenador
    Mediante una alarma de activación, podemos apagar el ordenador y que se vuelva a encender automáticamente. Este script garantiza que el sistema se apague por completo antes de reiniciarse, ya que un apagado incompleto impide que vuelva a estar en línea.

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.


Actualizar el firmware

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.


Asegúrese de tener una conexión USB3.

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.


Gestionar las limitaciones de ancho de banda

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:

  • Adquiera una tarjeta PCIe con puertos USB adicionales. Las tarjetas de alta calidad proporcionan un ancho de banda independiente para cada puerto, mientras que las más económicas comparten el ancho de banda entre los puertos.
  • Reduce la velocidad de fotogramas o la resolución de las cámaras para disminuir el consumo de ancho de banda.

Reinicia la cámara regularmente.

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.


Cuidado con el error de fuga de información del dispositivo /dev/media*

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.
  • Registros del kernel que contienen “media: no se pudo obtener un menor libre”.
  • 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).


Corrupción de datos de calibración de profundidad

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.

Corrupción de datos de calibración de profundidad en la serie RealSense D400

Inspeccione sus cables

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.


El soporte de Intel es útil.

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.

La lista Digital Shapers, a menudo denominada los "Óscares Digitales", reconoce a personas que demuestran una visión y determinación excepcionales al marcar tendencias tecnológicas y crear soluciones competitivas a nivel internacional. La Academia Digital, una organización independiente, destacó específicamente el logro de Kacper al conseguir la ronda de financiación de Nomagic por valor de $44 millones de dólares, liderada por EBRD Venture Capital y respaldada por socios como Almaz Capital, Khosla Ventures y el Banco Europeo de Inversiones (BEI).

Este reconocimiento subraya el continuo enfoque de Nomagic en el desarrollo de soluciones prácticas de IA física que impulsan almacenes de distribución inteligentes, maximizando el rendimiento, la precisión y la eficiencia.

También te puede gustar

Tu futuro en la robótica comienza aquí.

Ponte en contacto con Nomagic para descubrir cómo nuestra tecnología innovadora puede llevar tus procesos de logística al siguiente nivel.