Como lançar rapidamente projetos de sensoriamento óptico de tempo de vôo em 3D

By Stephen Evanczuk

Contributed By DigiKey's North American Editors

A medição óptica da distância por tempo de vôo (ToF) desempenha um papel fundamental em diversas aplicações, desde o sensoriamento industrial até interfaces de usuário baseadas em gestos. Com a disponibilidade de sensores ToF multipixel precisos e de alta velocidade, os desenvolvedores podem implementar algoritmos de detecção tridimensional (3D) mais sofisticados, necessários nestas aplicações. Entretanto, o tempo de desenvolvimento é retardado devido à complexidade do subsistema de sensoriamento óptico multipixel.

Este artigo discute os princípios básicos do ToF. Em seguida, introduz um kit óptico de avaliação ToF da Broadcom que permite aos desenvolvedores fazer protótipos rapidamente de aplicações precisas de medição de distância 1D e 3D, bem como implementar rapidamente soluções ópticas personalizadas de sensoriamento ToF.

Os princípios básicos da tecnologia óptica de ToF

Utilizada para obter a distância precisa necessária em múltiplas aplicações, a tecnologia óptica de ToF permite medições baseadas no tempo necessário para que a luz viaje pelo ar. Os cálculos específicos usados para realizar estas medições dependem, em geral, de duas abordagens diferentes – ToF direto e ToF indireto. No ToF direto, também conhecido como variação de pulso, um dispositivo mede o tempo entre a transmissão e a recepção de um determinado pulso de luz por um sensor ToF usando a Equação 1:

Equação 1 Equação 1

Onde:

c0 = Velocidade da luz no vácuo

∆T = Tempo decorrido entre a transmissão e a recepção

Embora simples no conceito, a capacidade de realizar medições precisas com esta abordagem enfrenta uma série de desafios, incluindo a necessidade de transmissores e receptores suficientemente potentes, melhoria da relação sinal/ruído e detecção precisa da borda de pulso.

Em contraste, os métodos ToF indiretos usam uma onda contínua modulada e medem a diferença de fase entre os sinais transmitidos e recebidos de acordo com a Equação 2:

d = c0 / 2fmod x ∆φ/2π Equação 2

Onde:

c0 = Velocidade da luz no vácuo

fmod = frequência de modulação a laser

∆φ = Diferença de fase determinada

Além de reduzir os requisitos de potência do transmissor e do receptor, a abordagem do ToF indireto relaxa os requisitos de modelagem de pulso, simplificando a complexidade do projeto para realizar a detecção de alcance e movimento em 3D.

Tanto os métodos diretos quanto os indiretos exigem um projeto cuidadoso do front-end óptico e um controle preciso dos sinais do transmissor e do receptor. Há anos, os desenvolvedores têm sido capazes de tirar proveito dos sensores ópticos de ToF integrados que combinam dispositivos de transmissão e recepção em um único invólucro. Entretanto, as gerações anteriores destes dispositivos normalmente exigiram que os desenvolvedores compensassem alguma combinação de desempenho ou características operacionais tais como consumo de energia, alcance, precisão e velocidade. Tais compromissos surgiram como um impedimento importante para um crescente conjunto de aplicações de sensoriamento industrial que precisam operar a distâncias médias de até 10 metros (m).

Módulos de sensores ToF indiretos mais avançados como o AFBR-S50MV85G da Broadcom são projetados especificamente para atender à crescente necessidade de resultados precisos e de alta velocidade em alcances médios de distância, mantendo ao mínimo o tamanho do invólucro e o consumo de energia. Com base neste sensor, o kit de avaliação AFBR-S50MV85G-EK da Broadcom e o kit de desenvolvimento do software associado (SDK) fornecem uma plataforma de desenvolvimento de sensores ToF multipixel que permite aos desenvolvedores implementar rapidamente aplicações de sensoriamento ToF em 3D.

Como um módulo integrado simplifica a medição de distância por ToF

Desenvolvido para aplicações de sensoriamento industrial, o módulo AFBR-S50MV85G fornece uma solução completa de sensoriamento óptico do ToF em um único invólucro. Seus componentes integrados incluem um laser de emissão de superfície e cavidade vertical (VCSEL) de 850 nanômetros (nm) para iluminação infravermelha (IR), uma matriz hexagonal de sensores de 32 pixels, lentes integradas para VCSEL e óptica do sensor, e um circuito integrado de aplicação específica (ASIC).

Posicionado em um alinhamento fixo com relação à matriz de sensoriamento, o transmissor ilumina um objeto alvo, fazendo com que um certo número de pixels na matriz detecte o sinal IR refletido. Na operação básica, isto permite que o módulo suporte a medição precisa da distância de superfícies brancas, pretas, coloridas, metálicas ou retrorrefletivas — mesmo sob luz solar direta — graças à sua capacidade incorporada de supressão da luz ambiente.

Conforme a distância até um objeto diminui, a compensação automática de erros de paralaxe permite medições com praticamente nenhum limite inferior de distância. Ao mesmo tempo, a combinação de iluminação IR e a matriz de sensoriamento permite a disponibilidade de informações adicionais sobre o objeto, incluindo seu movimento, velocidade, ângulo de inclinação ou alinhamento lateral. Como resultado, o módulo pode fornecer os dados necessários para determinar o sentido e a velocidade de um objeto alvo que passa ou se aproxima (Figura 1).

Diagrama de dados adquiridos da matriz de sensoriamento de 8 x 4 pixels do módulo Broadcom AFBR-S50MV85G (clique para ampliar)Figura 1: Usando dados adquiridos da matriz de sensoriamento de 8 x 4 pixels do módulo AFBR-S50MV85G, os desenvolvedores podem implementar aplicações 3D capazes de medir as características de movimento do objeto. (Fonte da imagem: Broadcom)

Orquestrando a operação precisa do seu VCSEL e da matriz de sensoriamento, o ASIC incorporado do módulo fornece todos os circuitos necessários para a acionamento do VCSEL, captura de sinal analógico a partir da matriz de sensoriamento e condicionamento de sinal digital (Figura 2).

Diagrama do ASIC integrado no módulo Broadcom AFBR-S50MV85GFigura 2: Um ASIC integrado no módulo AFBR-S50MV85G inclui todos os circuitos necessários para acionar a fonte de luz VCSEL do módulo, adquirir sinais recebidos da matriz de sensoriamento e gerar dados digitais para transferência através de um barramento SPI. (Fonte da imagem: Broadcom)

O circuito de alimentação integrado do ASIC permite que o módulo funcione com uma única alimentação de 5 volts, enquanto que seu oscilador RC (resistor-capacitor) integrado com compensação de temperatura e calibrado de fábrica, além da malha digital de captura de fase (PLL) fornecem todos os sinais necessários de clock. Devido a esta integração, os desenvolvedores podem facilmente incorporar o módulo em seus projetos usando uma unidade microcontroladora (MCU) e alguns componentes externos adicionais. A interface com o MCU requer apenas um pino de entrada/saída de uso geral (GPIO) para um sinal de dados prontos do módulo, com uma conexão através da Interface Periférica Serial (SPI) digital do módulo (Figura 3).

Diagrama do módulo AFBR-S50MV85G da Broadcom (clique para ampliar)Figura 3: O módulo AFBR-S50MV85G da Broadcom requer apenas um MCU e alguns componentes adicionais para a implementação de um sistema completo de sensoriamento ToF. (Fonte da imagem: Broadcom)

Complementando este projeto de hardware simples, a funcionalidade do software associado necessária para implementar a medição de distância é toda fornecida no software do driver do ToF da Broadcom. Enquanto o módulo trata da coleta óptica de dados para aplicações de medição de distância, o software do driver Broadcom ToF incluído no AFBR-S50 SDK fornecido pela empresa executa todas as etapas de configuração de hardware, calibração e medição. Durante a medição, o software do driver extrai tanto a distância quanto os valores de amplitude dos pixels.

Como desenvolver rapidamente uma aplicação de medição de distância

Combinado com o AFBR-S50 SDK, o kit de avaliação AFBR-S50MV85G-EK da Broadcom fornece uma plataforma abrangente para a prototipagem rápida e o desenvolvimento de aplicações de medição de distância. O kit vem com uma placa adaptadora contendo o módulo AFBR-S50MV85G, a placa de avaliação FRDM-KL46Z da NXP baseada em um MCU Cortex-M0+ da Arm e um cabo mini-USB para conectar a montagem da placa de avaliação a um laptop ou outro sistema embutido (Figura 4).

Imagem do kit de avaliação AFBR-S50MV85G-EK da BroadcomFigura 4: O kit de avaliação AFBR-S50MV85G-EK da Broadcom e o software associado fornecem uma plataforma completa para avaliação e prototipagem de aplicações de medição de distância por ToF. (Fonte da imagem: Broadcom)

A realização da medição de distância por ToF com o kit de avaliação requer apenas alguns passos para começar. Após baixar o AFBR-S50 SDK, um assistente de configuração guia o desenvolvedor através de um procedimento de instalação rápida. Depois que o desenvolvedor inicia o aplicativo do software AFBR-S50 Explorer da Broadcom incluído no pacote SDK, o software se conecta à placa de avaliação AFBR-S50 através da interface USB, recebe os dados de medição através do software do driver executado no MCU da placa NXP, e permite ao usuário exibir os resultados em um gráfico 1D ou 3D (Figura 5).

Imagem do software Broadcom AFBR-S50 Explorer (clique para ampliar)Figura 5: O software AFBR-S50 Explorer simplifica a avaliação das medições ToF através de gráficos 3D mostrando a amplitude de iluminação recebida para cada pixel na matriz de sensores do ToF. (Fonte da imagem: Broadcom)

Como mostrado na Figura 5, a visualização tridimensional mostra leituras de cada pixel, mas o software fornece uma visualização alternativa que permite aos desenvolvedores ver apenas os pixels considerados válidos para a medição. Nesta visão alternativa, os pixels que não atendem aos critérios definidos são removidos do gráfico (Figura 6).

Imagem do software AFBR-S50 Explorer da Broadcom (clique para ampliar)Figura 6: Com o software AFBR-S50 Explorer da Broadcom, os desenvolvedores podem visualizar gráficos 3D simplificados de medição que eliminam os pixels que não atendem a critérios pré-definidos. (Fonte da imagem: Broadcom)

Para explorar a precisão da medição e o desempenho em diferentes cenários de aplicação como iluminação, refletividade e tipo de superfície, os desenvolvedores podem visualizar o impacto de diferentes configurações de sensoriamento, como o uso de mais pixels para aplicações 3D aprimoradas, ou menos pixels para aplicações 1D que requeiram medição mais precisa. Depois de avaliar os métodos de medição em seus protótipos, os desenvolvedores podem criar no software de amostra incluído no AFBR-S50 SDK da Broadcom para implementar rapidamente aplicações personalizadas de sensoriamento ToF.

Criando aplicativos personalizados de software de sensoriamento ToF

A Broadcom cria suporte para aplicações de sensoriamento ToF em torno de uma arquitetura eficiente baseada na biblioteca principal do AFBR-S50, compreendendo código específico de hardware do sensor, uma interface de programação de aplicativo (API) e camadas de abstração de hardware (HAL) (Figura 7).

Diagrama do ambiente operacional ToF da BroadcomFigura 7: Dentro do ambiente operacional ToF da Broadcom, o API do driver ToF fornece ao usuário código de aplicação com acesso às funções de calibração, medição e avaliação na biblioteca principal do driver ToF pré-compilado. (Fonte da imagem: Broadcom)

Como parte do pacote AFBR-S50 SDK, a Broadcom fornece a biblioteca principal como um arquivo de biblioteca ANSI-C pré-compilado que incorpora todos os dados e algoritmos necessários para executar o hardware AFBR-S50MV85G. Executando o MCU do sistema de medição de distância, a biblioteca principal fornece funcionalidade incluindo calibração, medição e avaliação para realizar medição de distância com carga mínima de processamento ou consumo de energia. Como as funções da biblioteca principal tratam de todos os detalhes subjacentes, o ciclo básico de medição visto pelo desenvolvedor é direto (Figura 8).

Imagem do software Broadcom AFBR-S50 SDK ToF (clique para ampliar)Figura 8: O software AFBR-S50 SDK ToF minimiza a carga de trabalho do processador usando interrupções e retornos de chamada. (Fonte da imagem: Broadcom)

No início de cada ciclo de medição (iniciado por uma interrupção periódica do temporizador ou IRQ), o MCU inicia a medição e imediatamente retorna a um estado ocioso (ou continua processando algum código de aplicação). Após a conclusão da medição, o módulo AFBR-S50MV85G usa a linha GPIO conectada para sinalizar uma interrupção, acordando o MCU para iniciar uma leitura de dados no barramento SPI antes de retornar ao seu estado anterior. Após a leitura dos dados ser concluída (sinalizada por um "SPI done IRQ"), o MCU executa o código para avaliar os dados do sensor ToF adquirido.

Para evitar a perda de dados de medição, a biblioteca principal impede o início de um novo ciclo de medição, bloqueando o buffer de dados até que a rotina de avaliação seja chamada. Como tal, os desenvolvedores normalmente incluiriam um buffer duplo para dados brutos para permitir a execução intercalada de tarefas de medição e avaliação.

Para os desenvolvedores de software de aplicação, as rotinas da biblioteca principal protegem os detalhes de calibração, medição e avaliação. De fato, os desenvolvedores podem usar o kit de avaliação e o aplicativo AFBR-S50 Explorer como uma plataforma completa de prototipagem para fornecer dados de medição para código de aplicação do software de alto nível.

Para desenvolvedores que precisam implementar software de aplicação personalizado, o pacote AFBR-S50 SDK combina os módulos da biblioteca principal pré-compilada com vários exemplos de software. Como resultado, os desenvolvedores podem criar rapidamente suas próprias aplicações de sensoriamento ToF, compilando nos aplicativos de exemplo fornecidos no SDK. Os desenvolvedores podem acessar o hardware AFBR-S50MV85G e a funcionalidade da biblioteca principal do AFBR-S50 em seu código de software de aplicações específicas chamando funções no API AFBR-S50 SDK e especificando suas próprias funções para os vários retornos de chamada suportados pela biblioteca principal (ver Figura 7 novamente).

A Broadcom fornece extensa documentação sobre o API e o software de amostra, permitindo que os desenvolvedores adaptem rapidamente os exemplos de software às suas necessidades ou comecem do zero. Na verdade, o ciclo básico de medição e avaliação é direto, simplesmente combinando funções personalizadas e chamadas API com o ciclo de medição (ver Figura 8 novamente). Por exemplo, um ciclo de medição, como discutido anteriormente, inclui três fases: integração do dispositivo ToF, leitura de dados e avaliação. As chamadas API, da biblioteca principal, necessárias para iniciar estas três fases incluem:

  • Argus_TriggerMeasurement(), que aciona um único quadro de medição de forma assíncrona
  • Argus_GetStatus(), que retorna STATUS_OK após a conclusão bem sucedida da medição
  • Argus_EvaluateData(), que avalia as informações úteis a partir dos dados brutos de medição

A Broadcom demonstra este loop de medição fundamental em um aplicativo de exemplo incluído na distribuição SDK, mostrado na Listagem 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);
         }
      }
}

Listagem 1: O código de exemplo na distribuição Broadcom AFBR-S50 SDK que demonstra o padrão básico de projeto para aquisição e avaliação de dados ToF do módulo AFBR-S50MV85G. (Fonte do código: Broadcom)

Como mostrado na listagem, as três chamadas de função API, mencionadas anteriormente, formam a espinha dorsal da execução de um ciclo de medição. Ao estudar a documentação API e outros aplicativos de exemplo no SDK, os desenvolvedores podem implementar rapidamente aplicações 3D complexas usando a capacidade do módulo de fornecer os dados necessários para determinar características avançadas como velocidade, sentido e ângulo de inclinação de um objeto-alvo.

Conclusão

Os dispositivos ópticos de sensoriamento ToF permitiram aplicações em diversos segmentos que requerem medição precisa da distância, mas as limitações na faixa de medição, precisão ou confiabilidade restringiram a expansão para aplicações como sistemas de sensoriamento industriais que requerem dispositivos de baixa potência, capazes de fornecer resultados precisos em alcances maiores. Um subsistema óptico de ToF integrado da Broadcom atende a estes requisitos emergentes para aplicações de sensoriamento da próxima geração. Usando um kit de avaliação baseado neste dispositivo, os desenvolvedores podem implementar rapidamente sistemas para medição de precisão em aplicações de alcance 1D, e para rastreamento de movimentos complexos de objetos em aplicações 3D.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

About this publisher

DigiKey's North American Editors