Cómo lanzar rápidamente diseños de detección óptica de tiempo de vuelo en 3D

Por Stephen Evanczuk

Colaboración de Editores de DigiKey de América del Norte

La medición óptica del tiempo de vuelo (ToF) desempeña un papel fundamental en diversas aplicaciones que van desde la detección industrial hasta las interfaces de usuario basadas en gestos. Gracias a la disponibilidad de sensores ToF multipíxel precisos y de alta velocidad, los desarrolladores pueden implementar algoritmos de detección tridimensional (3D) más sofisticados, necesarios en estas aplicaciones. Sin embargo, el tiempo de desarrollo se ralentiza debido a la complejidad del subsistema de detección óptica multipíxel.

Este artículo analiza los principios básicos de la ToF. A continuación, presenta un kit de evaluación de ToF óptico de Broadcom que permite a los desarrolladores crear rápidamente prototipos de aplicaciones precisas de medición de distancias 1D y 3D, así como implementar rápidamente soluciones de detección ToF ópticas personalizadas.

Los fundamentos de la tecnología ToF óptica

Utilizada para obtener la distancia precisa que se necesita en múltiples aplicaciones, la tecnología ToF óptica permite realizar mediciones basadas en el tiempo que necesita la luz para viajar a través del aire. Los cálculos específicos utilizados para realizar estas mediciones se basan, en general, en dos enfoques diferentes: ToF directo e indirecto. En el ToF directo, también conocido como localización por impulsos, un dispositivo mide el tiempo entre la transmisión y la recepción de un determinado pulso de luz por un sensor ToF utilizando la ecuación 1:

Ecuación 1 Ecuación 1

Donde:

c0 = Velocidad de la luz en el vacío

∆T = Tiempo transcurrido entre la transmisión y la recepción

Aunque el concepto es sencillo, la capacidad de realizar mediciones precisas con este enfoque se enfrenta a una serie de retos, como la necesidad de contar con transmisores y receptores suficientemente potentes, la mejora de la relación señal/ruido y la detección precisa de los bordes del pulso.

En cambio, los métodos ToF indirectos utilizan una onda continua modulada y miden la diferencia de fase entre las señales transmitidas y recibidas según la ecuación 2:

d = c0 / 2fmod x ∆φ/2πEcuación 2

Donde:

c0 = Velocidad de la luz en el vacío

fmod = Frecuencia de modulación del láser

∆φ = Diferencia de fase determinada

Además de reducir los requisitos de potencia del transmisor y el receptor, el enfoque de ToF indirecto relaja los requisitos de conformación de impulsos, lo que simplifica la complejidad del diseño para realizar el alcance 3D y la detección de movimiento.

Tanto los métodos directos como los indirectos requieren un diseño cuidadoso del front-end óptico y un control preciso de las señales del transmisor y el receptor. Durante años, los desarrolladores han podido aprovechar los sensores ópticos ToF integrados que combinan dispositivos de transmisión y sensores de recepción en un solo paquete. No obstante, las generaciones anteriores de estos dispositivos han exigido normalmente a los desarrolladores que compensen alguna combinación de prestaciones o características de funcionamiento, como el consumo de energía, el alcance, la precisión y la velocidad. Estos compromisos han surgido como un impedimento clave para un conjunto cada vez mayor de aplicaciones de detección industrial que necesitan operar a distancias medias de hasta 10 metros (m).

Los módulos de sensores ToF indirectos más avanzados, como el AFBR-S50MV85G de Broadcom, están diseñados específicamente para satisfacer la creciente necesidad de obtener resultados precisos y de alta velocidad en rangos de distancia media, manteniendo un tamaño de paquete y un consumo de energía mínimos. Basado en este sensor, el kit de evaluación AFBR-S50MV85G-EK de Broadcom y el kit de desarrollo de software (SDK) asociado proporcionan una plataforma de desarrollo de sensores ToF multipíxel que permite a los desarrolladores implementar rápidamente aplicaciones de detección ToF 3D.

Cómo un módulo integrado simplifica la medición de la distancia ToF

Desarrollado para aplicaciones de detección industrial, el módulo AFBR-S50MV85G ofrece una completa solución de detección óptica ToF en un solo paquete. Sus componentes integrados incluyen un láser de emisión superficial de cavidad vertical (VCSEL) de 850 nanómetros (nm) para la iluminación infrarroja (IR), una matriz de sensor hexagonal de 32 píxeles, lentes integradas para el VCSEL y la óptica del sensor, y un circuito integrado de aplicación específica (ASIC).

Situado en una alineación fija con respecto a la matriz de detección, el transmisor ilumina un objeto objetivo, haciendo que un cierto número de píxeles de la matriz de detección detecten la señal IR reflejada. En el funcionamiento básico, esto permite que el módulo admita una medición precisa de la distancia desde superficies blancas, negras, de color, metálicas o retrorreflectantes -incluso con luz solar directa- gracias a su capacidad integrada de supresión de la luz ambiental.

A medida que la distancia a un objeto disminuye, la compensación automática de los errores de paralaje permite realizar mediciones prácticamente sin límite inferior de distancia. Al mismo tiempo, la combinación de la iluminación IR y la matriz de detección permite disponer de información adicional sobre el objeto, incluyendo su movimiento, velocidad, ángulo de inclinación o alineación lateral. Como resultado, el módulo puede proporcionar los datos necesarios para determinar la dirección y la velocidad de un objeto que pasa o se aproxima (Figura 1).

Diagrama de los datos adquiridos por la matriz de detección de 8 x 4 píxeles del módulo Broadcom AFBR-S50MV85G (haga clic para ampliar)Figura 1: Utilizando los datos adquiridos por la matriz de detección de 8 x 4 píxeles del módulo AFBR-S50MV85G, los desarrolladores pueden implementar aplicaciones 3D capaces de medir las características del movimiento de los objetos. (Fuente de la imagen: Broadcom)

El ASIC integrado en el módulo, que organiza el funcionamiento preciso de su VCSEL y de la matriz de detección, proporciona todos los circuitos necesarios para el accionamiento del VCSEL, la captura de la señal analógica de la matriz de detección y el acondicionamiento de la señal digital (Figura 2).

Diagrama del ASIC integrado en el módulo Broadcom AFBR-S50MV85GFigura 2: Un ASIC integrado en el módulo AFBR-S50MV85G incluye toda la circuitería necesaria para accionar la fuente de luz VCSEL del módulo, adquirir las señales recibidas de la matriz de detección y generar datos digitales para su transferencia a través de un bus SPI. (Fuente de la imagen: Broadcom)

El circuito de alimentación integrado en el ASIC permite que el módulo funcione con una sola alimentación de 5 voltios, mientras que su oscilador de resistencia-condensador (RC) integrado, calibrado en fábrica y con compensación de temperatura, y el bucle digital de bloqueo de fase (PLL) proporcionan todas las señales de reloj necesarias. Gracias a esta integración, los desarrolladores pueden incorporar fácilmente el módulo a sus diseños utilizando una unidad de microcontrolador (MCU) y unos pocos componentes externos adicionales. La interfaz con la MCU sólo requiere un pin de entrada/salida de propósito general (GPIO) para una señal de datos listos del módulo, junto con una conexión a través de la interfaz digital de periféricos en serie (SPI) del módulo (Figura 3).

Diagrama del módulo AFBR-S50MV85G de Broadcom (haga clic para ampliar)Figura 3: El módulo AFBR-S50MV85G de Broadcom sólo requiere una MCU y unos pocos componentes adicionales para implementar un sistema completo de detección ToF. (Fuente de la imagen: Broadcom)

Como complemento a este sencillo diseño de hardware, la funcionalidad de software asociada necesaria para implementar la medición de la distancia se proporciona en el software del controlador ToF de Broadcom. Mientras que el módulo se encarga de la recopilación de datos ópticos para las aplicaciones de medición de distancia, el software del controlador ToF de Broadcom incluido en el SDK AFBR-S50 proporcionado por la empresa realiza todos los pasos de configuración, calibración y medición del hardware. Durante la medición, el software del controlador extrae los valores de distancia y amplitud de los píxeles.

Cómo desarrollar rápidamente una aplicación de medición de distancias

Combinado con el SDK AFBR-S50, el kit de evaluación AFBR-S50MV85G-EK de Broadcom ofrece una plataforma completa para la creación rápida de prototipos y el desarrollo de aplicaciones de medición de distancia. El kit incluye una placa adaptadora que contiene el módulo AFBR-S50MV85G, la placa de evaluación FRDM-KL46Z de NXP basada en una MCU Arm Cortex-M0+ y un cable mini-USB para conectar el conjunto de la placa de evaluación a un ordenador portátil u otro sistema integrado (Figura 4).

Imagen del kit de evaluación AFBR-S50MV85G-EK de BroadcomFigura 4: El kit de evaluación AFBR-S50MV85G-EK de Broadcom y el software asociado ofrecen una plataforma completa para evaluar y crear prototipos de aplicaciones de medición de distancia ToF. (Fuente de la imagen: Broadcom)

Realizar la medición de la distancia ToF con el kit de evaluación sólo requiere unos pocos pasos para empezar. Después de descargar el SDK AFBR-S50, un asistente de configuración guía al desarrollador a través de un rápido procedimiento de instalación. Después de que el desarrollador inicie la aplicación de software AFBR-S50 Explorer de Broadcom incluida en el paquete SDK, el software se conecta a la placa de evaluación AFBR-S50 a través de la interfaz USB, recibe los datos de medición a través del software del controlador que se ejecuta en la MCU de la placa NXP y permite al usuario visualizar los resultados en un gráfico 1D o 3D (Figura 5).

Imagen del software Broadcom AFBR-S50 Explorer (haga clic para ampliar)Figura 5: El software AFBR-S50 Explorer simplifica la evaluación de las mediciones ToF mediante gráficos 3D que muestran la amplitud de la iluminación recibida para cada píxel de la matriz del sensor ToF. (Fuente de la imagen: Broadcom)

Como se muestra en la Figura 5, la vista de trazado 3D muestra las lecturas de cada píxel, pero el software proporciona una vista alternativa que permite a los desarrolladores ver sólo los píxeles considerados válidos para la medición. En esta vista alternativa, los píxeles que no cumplen los criterios definidos se eliminan del gráfico (Figura 6).

Imagen del software AFBR-S50 Explorer de Broadcom (haga clic para ampliar)Figura 6: Con el software AFBR-S50 Explorer de Broadcom, los desarrolladores pueden ver gráficos 3D de medición racionalizados que eliminan los píxeles que no cumplen los criterios predefinidos. (Fuente de la imagen: Broadcom)

Para explorar la precisión y el rendimiento de las mediciones en diferentes escenarios de aplicación, como la iluminación, la reflectividad y el tipo de superficie, los desarrolladores pueden ver el impacto de diferentes configuraciones de detección, como el uso de más píxeles para aplicaciones 3D mejoradas, o menos píxeles para aplicaciones 1D que requieren una medición más precisa. Tras evaluar los métodos de medición en sus prototipos, los desarrolladores pueden basarse en el software de muestra incluido en el SDK AFBR-S50 de Broadcom para implementar rápidamente aplicaciones de detección ToF personalizadas.

Creación de aplicaciones de software de detección ToF personalizadas

Broadcom crea soporte para las aplicaciones de detección ToF en torno a una arquitectura eficiente basada en la biblioteca central AFBR-S50 que comprende código específico del hardware del sensor, una interfaz de programación de aplicaciones (API) y capas de abstracción de hardware (HAL) (Figura 7).

Diagrama del entorno operativo ToF de BroadcomFigura 7: Dentro del entorno operativo ToF de Broadcom, la API del controlador ToF proporciona al código de aplicación del usuario acceso a las funciones de calibración, medición y evaluación en la biblioteca central del controlador ToF precompilado. (Fuente de la imagen: Broadcom)

Como parte del paquete AFBR-S50 SDK, Broadcom proporciona la biblioteca central como un archivo de biblioteca ANSI-C precompilado que incorpora todos los datos y algoritmos necesarios para ejecutar el hardware AFBR-S50MV85G. La biblioteca central, que se ejecuta en la MCU del sistema de medición de distancias, proporciona funciones como la calibración, la medición y la evaluación para realizar la medición de distancias con una carga de procesamiento o un consumo de energía mínimos. Dado que las funciones de la biblioteca central se encargan de todos los detalles subyacentes, el ciclo de medición básico que ve el desarrollador es sencillo (Figura 8).

Imagen del software AFBR-S50 SDK ToF de Broadcom (haga clic para ampliar)Figura 8: El software AFBR-S50 SDK ToF minimiza la carga de trabajo del procesador mediante interrupciones y devoluciones de llamada. (Fuente de la imagen: Broadcom)

Al comienzo de cada ciclo de medición (iniciado por una interrupción periódica del temporizador, o IRQ), la MCU inicia la medición e inmediatamente vuelve a un estado de reposo (o continúa procesando algún código de aplicación). Una vez finalizada la medición, el módulo AFBR-S50MV85G utiliza la línea GPIO conectada para señalar una interrupción, despertando al MCU para iniciar una lectura de datos en el bus SPI antes de volver a su estado anterior. Una vez completada la lectura de datos (señalada por una IRQ realizada por SPI), la MCU ejecuta el código para evaluar los datos adquiridos del sensor ToF.

Para evitar que se pierdan los datos de las mediciones, la biblioteca central impide el inicio de un nuevo ciclo de medición bloqueando el búfer de datos hasta que se llame a la rutina de evaluación. Por ello, los desarrolladores suelen incluir un doble búfer para los datos brutos que permita la ejecución intercalada de las tareas de medición y evaluación.

Para los desarrolladores de software de aplicación, las rutinas de la biblioteca central blindan los detalles de la calibración, la medición y la evaluación. De hecho, los desarrolladores pueden utilizar el kit de evaluación y la aplicación AFBR-S50 Explorer como una completa plataforma de creación de prototipos para suministrar datos de medición a un código de aplicación de software de alto nivel.

Para los desarrolladores que necesitan implementar un software de aplicación personalizado, el paquete AFBR-S50 SDK combina los módulos de la biblioteca central precompilados con varios ejemplos de software. Como resultado, los desarrolladores pueden crear rápidamente sus propias aplicaciones de detección ToF basándose en las aplicaciones de ejemplo proporcionadas en el SDK. Los desarrolladores pueden acceder al hardware AFBR-S50MV85G y a la funcionalidad de la librería del núcleo AFBR-S50 en su código de software específico de la aplicación llamando a las funciones de la API del SDK AFBR-S50 y especificando sus propias funciones para las diversas devoluciones de llamada soportadas por la librería del núcleo (véase de nuevo la Figura 7).

Broadcom proporciona una amplia documentación sobre la API y el software de muestra, lo que permite a los desarrolladores avanzar rápidamente en la adaptación de los ejemplos de software a sus necesidades o empezar desde cero. De hecho, el ciclo básico de medición y evaluación es sencillo, ya que basta con hacer coincidir las funciones personalizadas y las llamadas a la API con el ciclo de medición (véase de nuevo la figura 8). Por ejemplo, un ciclo de medición, como se ha comentado anteriormente, incluye tres fases: Integración del dispositivo ToF, lectura de datos y evaluación. Las llamadas a la API de la biblioteca central necesarias para iniciar estas tres fases incluyen:

  • Argus_TriggerMeasurement(), que dispara una sola trama de medición de forma asíncrona
  • Argus_GetStatus(), que devuelve STATUS_OK al finalizar la medición con éxito
  • Argus_EvaluateData(), que evalúa la información útil de los datos de medición sin procesar

Broadcom demuestra este bucle de medición fundamental en una aplicación de ejemplo incluida en la distribución del SDK, que se muestra en el Listado 1.

Copiar
int main(void)
{
   status_t status = STATUS_OK;
   
   /* Initialize the platform hardware including the required peripherals
   * for the API. */
   hardware_init();
   
   /* The API module handle that contains all data definitions that is
   * required within the API module for the corresponding hardware device.
   * Every call to an API function requires the passing of a pointer to this
   * data structure. */
   argus_hnd_t * hnd = Argus_CreateHandle();
   handle_error(hnd ? STATUS_OK : ERROR_FAIL, "Argus_CreateHandle failed!");
   
   /* Initialize the API with default values.
   * This implicitly calls the initialization functions
   * of the underlying API modules.
   *
   * The second parameter is stored and passed to all function calls
   * to the S2PI module. This piece of information can be utilized in
   * order to determine the addressed SPI slave and enabled the usage
   * of multiple devices on a single SPI peripheral. */
   
   status = Argus_Init(hnd, SPI_SLAVE);
   handle_error(status, "Argus_Init failed!");
   
   /* Print some information about current API and connected device. */
   uint32_t value = Argus_GetAPIVersion();
   uint8_t a = (value >> 24) & 0xFFU;
   uint8_t b = (value >> 16) & 0xFFU;
   uint8_t c = value & 0xFFFFU;
   uint32_t id = Argus_GetChipID(hnd);
   argus_module_version_t mv = Argus_GetModuleVersion(hnd);
   print("\n##### AFBR-S50 API - Simple Example ##############\n"
   " API Version: v%d.%d.%d\n"
   " Chip ID: %d\n"
   " Module: %s\n"
   "##################################################\n",
   a, b, c, id,
   mv == AFBR_S50MV85G_V1 ? "AFBR-S50MV85G (v1)" :
   mv == AFBR_S50MV85G_V2 ? "AFBR-S50MV85G (v2)" :
   mv == AFBR_S50MV85G_V3 ? "AFBR-S50MV85G (v3)" :
   mv == AFBR_S50LV85D_V1 ? "AFBR-S50LV85D (v1)" :
   mv == AFBR_S50MV68B_V1 ? "AFBR-S50MV68B (v1)" :
   mv == AFBR_S50MV85I_V1 ? "AFBR-S50MV85I (v1)" :
   mv == AFBR_S50SV85K_V1 ? "AFBR-S50SV85K (v1)" :
   "unknown");
      
/* Adjust some configuration parameters by invoking the dedicated API methods. */
   status = Argus_SetConfigurationFrameTime( hnd, 100000 ); // 0.1 second = 10 Hz
   handle_error(status, "Argus_SetConfigurationFrameTime failed!");
   
   /* The program loop ... */
   for (;;)
   {
      myData = 0;
      /* Triggers a single measurement.
      * Note that due to the laser safety algorithms, the method might refuse
      * to restart a measurement when the appropriate time has not been elapsed
      * right now. The function returns with status #STATUS_ARGUS_POWERLIMIT and
      * the function must be called again later. Use the frame time configuration
      * in order to adjust the timing between two measurement frames. */
      Argus_TriggerMeasurement(hnd, measurement_ready_callback);
      handle_error(status, "Argus_StartMeasurementTimer failed!");
      STATUS_ARGUS_POWERLIMIT)
      {
         /* Not ready (due to laser safety) to restart the measurement yet.
         * Come back later. */
         continue;
      }
      else
      {
         /* Wait until measurement data is ready. */
      do
         {
            status = Argus_GetStatus(hnd);
         }
         while (status == STATUS_BUSY);
         handle_error(status, "Waiting for measurement data ready (Argus_GetStatus) failed!");
         /* The measurement data structure. */
         argus_results_t res;
         
         /* Evaluate the raw measurement results. */
         status = Argus_EvaluateData(hnd, &res, (void*) myData);
         handle_error(status, "Argus_EvaluateData failed!");
         
         /* Use the obtain results, e.g. print via UART. */
         print_results(&res);
         }
      }
}

Listado 1: El código de ejemplo en la distribución del SDK AFBR-S50 de Broadcom demuestra el patrón de diseño básico para adquirir y evaluar los datos ToF del módulo AFBR-S50MV85G. (Fuente del código: Broadcom)

Como se muestra en el listado, las tres llamadas a funciones de la API mencionadas anteriormente forman la columna vertebral de la ejecución de un ciclo de medición. Estudiando la documentación de la API y otras aplicaciones de ejemplo en el SDK, los desarrolladores pueden implementar rápidamente aplicaciones 3D complejas utilizando la capacidad del módulo para proporcionar los datos necesarios para determinar características avanzadas como la velocidad, la dirección y el ángulo de inclinación de un objeto objetivo.

Conclusión:

Los dispositivos de detección óptica ToF han permitido aplicaciones en diversos segmentos que requieren una medición precisa de la distancia, pero las limitaciones en el rango de medición, la precisión o la fiabilidad han frenado la expansión hacia aplicaciones como los sistemas de detección industrial que requieren dispositivos de baja potencia capaces de ofrecer resultados precisos a rangos más largos. Un subsistema óptico ToF integrado de Broadcom cumple estos requisitos emergentes para las aplicaciones de detección de próxima generación. Mediante un kit de evaluación basado en este dispositivo, los desarrolladores pueden implementar rápidamente sistemas para la medición de precisión en aplicaciones de alcance 1D y para el seguimiento del movimiento de objetos complejos en aplicaciones 3D.

DigiKey logo

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.

Información sobre el autor

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk tiene más de 20 años de experiencia escribiendo para y sobre la industria de electrónica en un amplio rango de temas, entre ellos hardware, software, sistemas y aplicaciones, que incluyen IoT. Se doctoróen neurociencias (redes neuronales) y trabajó en la industria aeroespacial en sistemas seguros con distribución masiva y métodos de aceleración de algoritmos. Actualmente, cuando no escribe artículos sobre tecnología e ingeniería, trabaja en aplicaciones de aprendizaje profundo sobre sistemas de reconocimiento y recomendaciones.

Información sobre la editorial

Editores de DigiKey de América del Norte