Empiece rápidamente con las aplicaciones de tiempo de vuelo en 3D
Colaboración de Editores de DigiKey de América del Norte
2020-03-25
Las imágenes del tiempo de vuelo (ToF) en 3D ofrecen una alternativa eficaz a las imágenes de video para una amplia gama de aplicaciones que incluyen la seguridad industrial, la navegación robótica, las interfaces de control de gestos y mucho más. Sin embargo, este enfoque requiere una cuidadosa mezcla de diseño óptico, circuitos de temporización de precisión y capacidades de procesamiento de señales que a menudo pueden dejar a los desarrolladores luchando por implementar una plataforma ToF en 3D efectiva.
Este artículo describirá los matices de la tecnología ToF antes de mostrar cómo dos kits de ToF 3D disponibles en el mercado -la plataforma de desarrollo AD-96TOF1-EBZ de Analog Devices y el kit de evaluación EPC660 de ESPROS Photonics pueden ayudar a los desarrolladores a crear rápidamente prototipos de aplicaciones de ToF 3D y obtener la experiencia necesaria para implementar diseños de ToF 3D que cumplan con sus requisitos exclusivos.
¿Qué es la tecnología ToF?
La tecnología ToF se basa en el conocido principio de que la distancia entre un objeto y algún punto de la fuente puede encontrarse midiendo la diferencia entre el tiempo en que la energía es transmitida por la fuente y el tiempo en que su reflejo es recibido por la fuente (Figura 1).
Figura 1: Los sistemas ToF calculan la distancia entre el sistema y los objetos externos midiendo el retardo de tiempo entre la transmisión de energía y la recepción por parte del sistema de la energía reflejada por un objeto. (Fuente de la imagen: Analog Devices).
Aunque el principio básico sigue siendo el mismo, las soluciones de ToF varían ampliamente y tienen las capacidades y limitaciones inherentes a sus tecnologías subyacentes, como los ultrasonidos, la detección y el alcance de la luz (LiDAR), las cámaras y las señales de RF de onda milimétrica (mmWave):
- Las soluciones de ToF ultrasónicas ofrecen una solución de bajo costo pero con un alcance y una resolución espacial limitados de los objetos
- Las soluciones ópticas de ToF pueden lograr un mayor alcance y resolución espacial que los sistemas ultrasónicos, pero se ven comprometidas por la niebla espesa o el humo.
- Las soluciones basadas en la tecnología de ondas mm son típicamente más complejas y costosas, pero pueden operar a un rango significativo mientras proveen información sobre la velocidad y el rumbo del objeto objetivo a pesar del humo, la niebla o la lluvia.
Los fabricantes aprovechan las capacidades de cada tecnología según sea necesario para cumplir con requisitos específicos. Por ejemplo, los sensores ultrasónicos son muy adecuados para detectar obstrucciones cuando los robots se mueven por un camino o cuando los conductores estacionan sus vehículos. En cambio, la tecnología mmWave proporciona a los vehículos el tipo de capacidad de detección a larga distancia necesaria para detectar los peligros que se aproximan a la carretera, incluso cuando otros sensores no pueden penetrar en condiciones climáticas adversas.
Los diseños de ToF pueden construirse alrededor de un único par transmisor/receptor. Por ejemplo, un simple diseño óptico de ToF conceptualmente sólo requiere un LED para iluminar alguna región de interés y un fotodiodo para detectar las reflexiones de los objetos dentro de esa región de interés. Este diseño aparentemente simple, sin embargo, requiere de circuitos precisos de sincronización y tiempo para medir el retardo. Además, pueden ser necesarios circuitos de modulación y demodulación para diferenciar la señal de iluminación de las fuentes de fondo o apoyar métodos de onda continua más complejos.
La complejidad del diseño aumenta rápidamente a medida que los desarrolladores trabajan para mejorar la relación señal-ruido (SNR) y eliminar los artefactos en los sistemas de ToF. Para aumentar la complejidad, las soluciones de detección más avanzadas emplearán múltiples transmisores y receptores para rastrear múltiples objetos o soportar algoritmos de rastreo de movimiento más sofisticados. Por ejemplo, los sistemas de ondas milimétricas a menudo emplean múltiples receptores para rastrear el rumbo y la velocidad de múltiples objetos independientes. (Ver "Usar kits de radar de ondas milimétricas para el desarrollo rápido de diseños de detección de objetos de precisión").
Sistemas ópticos ToF en 3D
Los sistemas ópticos de ToF en 3D amplían la idea de utilizar más receptores mediante el uso de sensores de imagen que suelen basarse en un conjunto de dispositivos de acoplamiento de carga (CCD). Cuando un conjunto de lentes enfoca alguna región de interés en la matriz CCD, cada dispositivo de almacenamiento de carga en la matriz CCD se carga por la iluminación de retorno reflejada desde un punto correspondiente en esa región de interés. Sincronizada con la iluminación de onda pulsada o continua, la luz reflejada que llega al conjunto de la CCD se captura esencialmente en una secuencia de ventanas o fases, respectivamente. Estos datos se procesan posteriormente para crear un mapa de profundidad tridimensional que comprende vóxeles (VOlume piXELs) cuyo valor representa la distancia al punto correspondiente en la región de interés.
Al igual que los fotogramas de un video, los mapas de profundidad individuales pueden capturarse en secuencia para proporcionar mediciones con una resolución temporal limitada únicamente por la frecuencia de fotogramas del sistema de captura de imágenes y con una resolución espacial limitada únicamente por la matriz CCD y el sistema óptico. Con la disponibilidad de imágenes CCD más grandes de 320 x 240, los sistemas ópticos ToF de mayor resolución en 3D encuentran aplicaciones en segmentos muy diversos, como la automatización industrial, los vehículos aéreos no tripulados (UAV) e incluso las interfaces de gestos (Figura 2).
Figura 2: Con su alta velocidad de cuadro y resolución espacial, el ToF óptico en 3D puede proporcionar sistemas de interfaz de gestos con datos detallados como la mano de una persona que se levanta hacia la cámara ToF como se muestra aquí. (Fuente de la imagen: ESPROS Photonics)
A diferencia de la mayoría de los métodos basados en cámaras, los sistemas ToF en 3D pueden proporcionar resultados precisos a pesar de las sombras o las condiciones de iluminación cambiantes. Estos sistemas proporcionan su propia iluminación, típicamente usando láseres o LED infrarrojos de alta potencia como los LED infrarrojos Luxeon de Lumileds capaces de operar a las tasas de conmutación de megahertz (MHz) usadas en estos sistemas. A diferencia de métodos como las cámaras estereoscópicas, los sistemas de ToF en 3D proporcionan una solución compacta para generar información detallada de la distancia.
Soluciones preconstruidas
Sin embargo, para implementar sistemas de ToF en 3D, los desarrolladores se enfrentan a múltiples retos de diseño. Además de los circuitos de cronometraje mencionados anteriormente, estos sistemas dependen de una tubería de procesamiento de señales cuidadosamente diseñada y optimizada para leer rápidamente los resultados de la matriz CCD para cada ventana o medición de fase, y luego completar el procesamiento requerido para convertir esos datos en bruto en mapas de profundidad. Los generadores de imágenes ToF en 3D avanzados, como el generador de imágenes ToF EPC660-CSP68-007 de ESPROS Photonics, combinan un conjunto de CCD de 320 x 240 con todo el complemento de capacidades de cronometraje y procesamiento de señales necesario para realizar mediciones ToF en 3D y proporcionar datos de distancia de 12 bits por píxel (Figura 3).
Figura 3: El ESPROS Photonics epc660 integra un generador de imágenes de 320 x 240 píxeles con un complemento completo de circuitos de cronometraje y controladores necesarios para convertir los datos brutos del generador de imágenes en mapas de profundidad. (Fuente de la imagen: ESPROS Photonics)
El portador de chips con conector de borde de tarjeta EPC660-007 de ESPROS Photonics monta el generador de imágenes epc650 en una placa de circuito impreso (placa pc) de 37.25 x 36.00 milímetros (mm) completa con condensadores de desacoplamiento y conector de borde de tarjeta. Aunque este portador de chips se ocupa de la interfaz básica de hardware en un diseño de sistema ToF en 3D, los desarrolladores se quedan con las tareas de completar el diseño óptico apropiado en la parte delantera y proporcionar recursos de procesamiento en la parte trasera. El kit de evaluación epc660 de ESPROS Photonics elimina estas tareas proporcionando un entorno completo de desarrollo de aplicaciones de ToF en 3D que incluye un sistema de imágenes de ToF en 3D preconstruido y el software asociado (Figura 4).
Figura 4: El kit de evaluación epc660 de ESPROS Photonics proporciona un sistema de cámara ToF en 3D preconstruido y el software asociado para utilizar la información de profundidad en las aplicaciones. (Fuente de la imagen: ESPROS Photonics)
Diseñado para la evaluación y el prototipo rápido, el kit ESPROS proporciona un sistema de cámara pre-ensamblada que combina el porta-chip epc660 CC, el conjunto de lentes ópticas, y un conjunto de ocho LED. Junto con el sistema de la cámara, una placa procesadora BeagleBone Black con 512 megabytes (Mbytes) de RAM y 4 gigabytes (Gbytes) de flash sirve como controlador del host y recurso de procesamiento de la aplicación.
ESPROS también proporciona un software de soporte para el kit de evaluación epc660 que puede descargarse de su sitio web y abrirse con una contraseña que puede solicitarse en la oficina de ventas local de la empresa. Después de acceder al software, los desarrolladores simplemente ejecutan una aplicación de interfaz gráfica de usuario (GUI) con uno de los varios archivos de configuración proporcionados para comenzar a operar el sistema de la cámara. La aplicación GUI también proporciona ventanas de control y visualización para establecer parámetros adicionales, incluyendo ajustes de filtros espaciales y temporales, y finalmente para ver los resultados. Con un esfuerzo mínimo, los desarrolladores pueden utilizar el kit para comenzar a capturar mapas de profundidad en tiempo real y utilizarlos como entrada para su propio software de aplicaciones.
Sistemas de resolución mejorada ToF en 3D
Un generador de imágenes de 320 x 240 como el ESPROS epc660 puede servir para muchas aplicaciones, pero puede carecer de la resolución necesaria para detectar pequeños movimientos en las interfaces de gestos o para distinguir pequeños objetos sin restringir severamente el rango de interés. Para estas aplicaciones, la disponibilidad de kits de desarrollo listos para usar basados en sensores de 640 x 480 ToF permite a los desarrolladores crear rápidamente prototipos de aplicaciones de alta resolución.
La cámara de profundidad DeepEye Turbo de Seeed Technology integra un sensor ToF de 640 x 480, cuatro diodos láser emisores de superficie de cavidad vertical (VCSEL) de 850 nanómetros (nm), circuitos operativos de iluminación y detección, alimentación y soporte de interfaz USB en un cubo autónomo de 57 x 57 x 51 mm. El soporte de software se proporciona a través de un repositorio libPointCloud SDK github de código abierto con soporte para plataformas Linux, Windows, Mac OS y Android.
Junto con los controladores C++, las bibliotecas y el código de muestra, la distribución del SDK libPointCloud incluye una API de Python para la creación rápida de prototipos, así como una herramienta de visualización. Después de instalar el paquete de distribución en su plataforma de desarrollo anfitriona, los desarrolladores pueden conectar la cámara por medio de un USB a su computadora y comenzar inmediatamente a utilizar la herramienta de visualización para mostrar mapas de fase, amplitud o nubes de puntos, que son esencialmente mapas de profundidad mejorados que se presentan con superficies de textura para proporcionar una imagen 3D más suave (Figura 5).
Figura 5: Usado en combinación con la cámara de profundidad Seeed Technology DepthEye Turbo, el paquete de software asociado permite a los desarrolladores visualizar fácilmente los datos ToF en 3D en una variedad de representaciones, incluyendo nubes de puntos, como se muestra aquí en el panel de la ventana principal. (Fuente de la imagen: Seeed Technology/PointCloud.AI)
El kit de evaluación de ToF 3D AD-96TOF1-EBZ de Analog Devices proporciona un diseño de hardware más abierto construido con un par de placas y diseñado para utilizar el modelo B+ de Raspberry Pi 3 o el modelo Raspberry Pi 4 de Raspberry Pi como controlador de host y recurso de procesamiento local (Figura 6).
Figura 6: El kit de evaluación de ToF en 3D AD-96TOF1-EBZ de Analog Devices combina un conjunto de dos placas para la iluminación y la adquisición de datos con una placa Raspberry Pi para el procesamiento local. (Fuente de la imagen: Analog Devices).
La placa de la parte delantera analógica (AFE) del kit contiene el ensamblaje óptico, el conjunto de CCD y los buffers, el almacenamiento de firmware y un procesador que gestiona el funcionamiento general de la cámara, incluyendo la sincronización de la iluminación, la sincronización de los sensores y la generación de mapas de profundidad. La segunda placa contiene cuatro diodos láser de 850 nm VCSEL y drivers y está diseñada para conectarse a la placa AFE de modo que los diodos láser rodeen el conjunto óptico como se muestra en la figura de arriba.
Analog Devices es compatible con el kit AD-96TOF1-EBZ con su suite de software de código abierto ToF en 3D que incluye el SDK 3D ToF junto con código de muestra y envoltorios para C/C++, Python y Matlab. Para soportar tanto las aplicaciones del host como las interacciones de hardware de bajo nivel en un entorno de red, Analog Devices divide el SDK en una partición del host optimizada para la conectividad USB y de red, y una partición de bajo nivel que se ejecuta en Embedded Linux y se construye sobre un controlador Video4Linux2 (V4L2) (Figura 7).
Figura 7: La API del SDK TOF en 3D de de Analog Devices es compatible con aplicaciones que se ejecutan en el host local de Embedded Linux y aplicaciones que se ejecutan remotamente en hosts de red. (Fuente de la imagen: Analog Devices).
Este SDK habilitado para redes permite que las aplicaciones que se ejecutan en hosts conectados a la red trabajen de forma remota con un sistema de hardware ToF para acceder a la cámara y capturar datos de profundidad. Los programas de usuario también pueden ejecutarse en la partición de Linux incorporado y aprovechar al máximo las opciones avanzadas disponibles en ese nivel.
Como parte de la distribución del software, Analog Devices proporciona un código de muestra que demuestra las principales capacidades operativas de bajo nivel, como la inicialización de la cámara, la captura de fotogramas básicos, el acceso remoto y la captura multiplataforma en una computadora central y localmente con Linux incorporado. Otras aplicaciones de muestra se basan en estas operaciones básicas para ilustrar el uso de los datos capturados en aplicaciones de mayor nivel, como la generación de nubes de puntos. De hecho, una aplicación de muestra demuestra cómo un modelo de inferencia de red neuronal profunda (DNN) puede utilizarse para clasificar los datos generados por el sistema de la cámara. Al estar desarrollada en Python, esta aplicación de muestra de DNN (dnn.py) muestra cada paso del proceso necesario para adquirir datos y preparar su clasificación mediante el modelo de inferencia (Lista 1).
Copy
import aditofpython as tof
import numpy as np
import cv2 as cv
. . .
try:
net = cv.dnn.readNetFromCaffe(args.prototxt, args.weights)
except:
print("Error: Please give the correct location of the prototxt and caffemodel")
sys.exit(1)
swapRB = False
classNames = {0: 'background',
1: 'aeroplane', 2: 'bicycle', 3: 'bird', 4: 'boat',
5: 'bottle', 6: 'bus', 7: 'car', 8: 'cat', 9: 'chair',
10: 'cow', 11: 'diningtable', 12: 'dog', 13: 'horse',
14: 'motorbike', 15: 'person', 16: 'pottedplant',
17: 'sheep', 18: 'sofa', 19: 'train', 20: 'tvmonitor'}
system = tof.System()
status = system.initialize()
if not status:
print("system.initialize() failed with status: ", status)
cameras = []
status = system.getCameraList(cameras)
. . .
while True:
# Capture frame-by-frame
status = cameras[0].requestFrame(frame)
if not status:
print("cameras[0].requestFrame() failed with status: ", status)
depth_map = np.array(frame.getData(tof.FrameDataType.Depth), dtype="uint16", copy=False)
ir_map = np.array(frame.getData(tof.FrameDataType.IR), dtype="uint16", copy=False)
# Creation of the IR image
ir_map = ir_map[0: int(ir_map.shape[0] / 2), :]
ir_map = np.float32(ir_map)
distance_scale_ir = 255.0 / camera_range
ir_map = distance_scale_ir * ir_map
ir_map = np.uint8(ir_map)
ir_map = cv.cvtColor(ir_map, cv.COLOR_GRAY2RGB)
# Creation of the Depth image
new_shape = (int(depth_map.shape[0] / 2), depth_map.shape[1])
depth_map = np.resize(depth_map, new_shape)
distance_map = depth_map
depth_map = np.float32(depth_map)
distance_scale = 255.0 / camera_range
depth_map = distance_scale * depth_map
depth_map = np.uint8(depth_map)
depth_map = cv.applyColorMap(depth_map, cv.COLORMAP_RAINBOW)
# Combine depth and IR for more accurate results
result = cv.addWeighted(ir_map, 0.4, depth_map, 0.6, 0)
# Start the computations for object detection using DNN
blob = cv.dnn.blobFromImage(result, inScaleFactor, (inWidth, inHeight), (meanVal, meanVal, meanVal), swapRB)
net.setInput(blob)
detections = net.forward()
. . .
for i in range(detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > thr:
class_id = int(detections[0, 0, i, 1])
. . .
if class_id in classNames:
value_x = int(center[0])
value_y = int(center[1])
label = classNames[class_id] + ": " + \
"{0:.3f}".format(distance_map[value_x, value_y] / 1000.0 * 0.3) + " " + "meters"
. . .
# Show image with object detection
cv.namedWindow(WINDOW_NAME, cv.WINDOW_AUTOSIZE)
cv.imshow(WINDOW_NAME, result)
# Show Depth map
cv.namedWindow(WINDOW_NAME_DEPTH, cv.WINDOW_AUTOSIZE)
cv.imshow(WINDOW_NAME_DEPTH, depth_map)
Lista 1: Este recorte de una aplicación de muestra en la distribución SDK ToF en 3D de Analog Devices demuestra los pocos pasos necesarios para adquirir imágenes de profundidad e IR y clasificarlas con un modelo de inferencia. (Fuente del código: Analog Devices).
Aquí, el proceso comienza utilizando los métodos DNN de OpenCV (cv.dnn.readNetFromCaffe) para leer la red y los pesos asociados para un modelo de inferencia existente. En este caso, el modelo es una implementación de Caffe de la red de detección Google MobileNet Single Shot Detector (SSD), conocida por lograr una gran precisión con tamaños de modelo relativamente pequeños. Después de cargar los nombres de clase con los identificadores y etiquetas de clase soportados, la aplicación de muestra identifica las cámaras disponibles y ejecuta una serie de rutinas de inicialización (no mostradas en el Listado 1).
El grueso del código de muestra se ocupa de preparar el mapa de profundidad (depth_map) y el mapa de infrarrojos (ir_map) antes de combinarlos (cv.addWeighted) en una sola matriz para mejorar la precisión. Finalmente, el código llama a otro método OpenCV DNN (cv.dnn.blobFromImage) que convierte la imagen combinada en el tipo de datos de blob de cuatro dimensiones necesario para la inferencia. La siguiente línea de código establece la blob resultante como la entrada del modelo de inferencia (net.setInput(blob)). La llamada a net.forward() invoca el modelo de inferencia que devuelve los resultados de la clasificación. El resto de la aplicación de la muestra identifica los resultados de la clasificación que superan un umbral preestablecido y genera para ellos una etiqueta y un cuadro delimitador que muestra los datos de la imagen capturada, la etiqueta identificada por el modelo de inferencia y su distancia a la cámara (figura 8).
Figura 8: Usando unas pocas líneas de código Python y la biblioteca OpenCV, la aplicación de muestra DNN en la distribución SDK ToF en 3D de Analog Devices captura imágenes de profundidad, las clasifica y muestra la etiqueta y la distancia del objeto identificado. (Fuente de la imagen: Analog Devices).
Como demuestra la aplicación de muestra DNN de Analog Devices, los desarrolladores pueden utilizar los mapas de profundidad ToF en 3D en combinación con métodos de aprendizaje automático para crear características de aplicación más sofisticadas. Aunque es más probable que las aplicaciones que requieren respuestas de baja latencia construyan estas características con C/C++, los pasos básicos siguen siendo los mismos.
Utilizando datos de ToF en 3D y modelos de inferencia de alto rendimiento, los sistemas robóticos industriales pueden sincronizar con mayor seguridad sus movimientos con otros equipos o incluso con los humanos en entornos "cobot" en los que los humanos y los robots trabajan de forma cooperativa en estrecha proximidad. Con diferentes modelos de inferencia, otra aplicación puede utilizar una cámara ToF 3D de alta resolución para clasificar los movimientos finos para una interfaz de gestos. En las aplicaciones de automoción, este mismo enfoque puede ayudar a mejorar la precisión de los sistemas avanzados de asistencia al conductor (ADAS), aprovechando al máximo la alta resolución temporal y espacial disponible con los sistemas de ToF en 3D.
Conclusión
Las tecnologías de ToF juegan un papel clave en casi cualquier sistema que depende críticamente de la medición precisa de la distancia entre el sistema y otros objetos. Entre las tecnologías de ToF, el ToF óptico en 3D puede proporcionar tanto una alta resolución espacial como una alta resolución temporal, permitiendo una distinción más fina entre los objetos más pequeños y una supervisión más precisa de su distancia relativa.
Sin embargo, para aprovechar esta tecnología, los desarrolladores han tenido que hacer frente a múltiples desafíos relacionados con el diseño óptico, la sincronización de precisión y la adquisición de señales sincronizadas de estos sistemas. Como se muestra, la disponibilidad de sistemas ToF en 3D preconstruidos, como la plataforma de desarrollo AD-96TOF1-EBZ de Analog Devices y el kit de evaluación EPC660 de ESPROS Photonics elimina estas barreras para la aplicación de esta tecnología en sistemas industriales, interfaces de gestos, sistemas de seguridad automotriz y más.
Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.




