Come creare rapidamente progetti di rilevamento ottico 3D del tempo di volo
Contributo di Editori nordamericani di DigiKey
2022-04-26
La misurazione ottica della distanza a tempo di volo (ToF) gioca un ruolo fondamentale in diverse applicazioni che vanno dal rilevamento industriale alle interfacce utente basate sui gesti. Con la disponibilità di sensori ToF multipixel accurati e ad alta velocità, gli sviluppatori possono implementare algoritmi di rilevamento tridimensionale (3D) più sofisticati per queste applicazioni. Tuttavia, il tempo di sviluppo è rallentato a causa della complessità del sottosistema di rilevamento ottico multipixel.
Questo articolo discute i principi di base del ToF. Presenta quindi un kit di valutazione ToF ottico di Broadcom che consente agli sviluppatori di prototipare rapidamente applicazioni accurate di misurazione della distanza 1D e 3D, nonché di implementare rapidamente soluzioni di rilevamento ToF ottico personalizzate.
Le basi della tecnologia ToF ottica
Utilizzata per calcolare accuratamente la distanza in molteplici applicazioni, la tecnologia ToF ottica permette di effettuare misurazioni basate sul tempo necessario alla luce per viaggiare attraverso l'aria. I calcoli specifici utilizzati per eseguire queste misurazioni si basano in generale su due approcci - ToF diretto e ToF indiretto. Nel ToF diretto, noto anche come Pulse Ranging, un dispositivo misura il tempo tra la trasmissione e la ricezione di un particolare impulso di luce da un sensore ToF utilizzando l'equazione 1:
Equazione 1
Dove:
c0 = velocità della luce nel vuoto
∆T = tempo trascorso tra la trasmissione e la ricezione
Anche se semplice nel concetto, la capacità di eseguire misurazioni accurate con questo approccio deve affrontare una serie di sfide, tra cui la necessità di trasmettitori e ricevitori sufficientemente potenti, il miglioramento del rapporto segnale/rumore e il rilevamento preciso del fronte dell'impulso.
Al contrario, i metodi ToF indiretti utilizzano un'onda continua modulata e misurano la differenza di fase tra i segnali trasmessi e ricevuti secondo l'equazione 2:
Equazione 2
Dove:
c0 = velocità della luce nel vuoto
fmod = frequenza di modulazione del laser
∆φ = differenza di fase determinata
Oltre a ridurre i requisiti di potenza del trasmettitore e del ricevitore, l'approccio ToF indiretto rilassa i requisiti per la formazione degli impulsi, semplificando la complessità progettuale per eseguire la misurazione 3D e il rilevamento del movimento.
Sia i metodi diretti sia quelli indiretti richiedono un'attenta progettazione del front-end ottico e un controllo preciso dei segnali del trasmettitore e del ricevitore. Per anni, gli sviluppatori sono stati in grado di trarre vantaggio dai sensori ToF ottici integrati che combinano dispositivi di trasmissione e sensori di ricezione in un unico contenitore. Tuttavia, le generazioni precedenti di questi dispositivi imponevano spesso agli sviluppatori un compromesso tra la combinazione di prestazioni o caratteristiche operative come il consumo energetico, la portata, la precisione e la velocità. Tali compromessi sono emersi come un impedimento chiave per una serie crescente di applicazioni di rilevamento industriale che hanno bisogno di operare a distanze medie che vanno fino a 10 metri.
I moduli di sensori ToF indiretti più avanzati, come AFBR-S50MV85G di Broadcom, sono progettati specificamente per rispondere alla crescente necessità di risultati accurati e ad alta velocità su distanze medie, mantenendo un contenitore di dimensioni contenute e un consumo energetico minimo. Sulla base di questo sensore, il kit di valutazione AFBR-S50MV85G-EK di Broadcom e il relativo kit di sviluppo software (SDK) forniscono una piattaforma di sviluppo del sensore ToF multipixel con cui gli sviluppatori possono implementare rapidamente applicazioni di rilevamento ToF 3D.
Un modulo integrato semplifica la misurazione della distanza ToF
Sviluppato per applicazioni di rilevamento industriale, il modulo AFBR-S50MV85G è una soluzione completa di rilevamento ottico ToF in un unico contenitore. I suoi componenti integrati includono un laser a cavità verticale a emissione superficiale (VCSEL) da 850 nm per l'illuminazione a infrarossi (IR), una matrice di sensore esagonale da 32 pixel, lenti integrate per l'ottica VCSEL e del sensore e un circuito integrato specifico per le applicazioni (ASIC).
Posizionato in un allineamento fisso rispetto alla matrice di rilevamento, il trasmettitore illumina l'oggetto bersaglio, causando un certo numero di pixel nella matrice di rilevamento per rilevare il segnale IR riflesso. Nel funzionamento di base, questo permette al modulo di supportare la misurazione accurata della distanza da superfici bianche, nere, colorate, metalliche o retroriflettenti, anche alla luce diretta del sole, grazie alle sue capacità integrate di soppressione della luce ambientale.
Via via che la distanza di un oggetto diminuisce, la compensazione automatica degli errori di parallasse permette di effettuare misurazioni senza limite inferiore di distanza. Allo stesso tempo, la combinazione dell'illuminazione IR e della matrice di rilevamento permette di disporre di informazioni aggiuntive sull'oggetto, compreso il suo movimento, la velocità, l'angolo di inclinazione o l'allineamento laterale. Di conseguenza, il modulo può fornire i dati necessari per determinare la direzione e la velocità di un oggetto bersaglio che passa o si avvicina (Figura 1).
Figura 1: Utilizzando i dati acquisiti dalla matrice di rilevamento 8 x 4 pixel del modulo AFBR-S50MV85G, gli sviluppatori possono implementare applicazioni 3D in grado di misurare le caratteristiche di movimento degli oggetti. (Immagine per gentile concessione di Broadcom)
Orchestrando il funzionamento preciso del suo VCSEL e della matrice di rilevamento, l'ASIC integrato del modulo fornisce tutti i circuiti necessari per il pilotaggio del VCSEL, l'acquisizione del segnale analogico dalla matrice di rilevamento e il condizionamento del segnale digitale (Figura 2).
Figura 2: Un ASIC integrato nel modulo AFBR-S50MV85G include tutta la circuiteria necessaria per pilotare la sorgente luminosa VCSEL del modulo, acquisire i segnali ricevuti dalla matrice di rilevamento e generare dati digitali da trasferire attraverso un bus SPI. (Immagine per gentile concessione di Broadcom)
Il circuito di alimentazione integrato dell'ASIC permette al modulo di funzionare con una singola alimentazione a 5 V, mentre il suo oscillatore RC (resistore-condensatore) calibrato in fabbrica e termocompensato e il PLL (circuito ad aggancio di fase) digitale forniscono tutti i segnali di clock richiesti. Grazie a questa integrazione, gli sviluppatori possono facilmente incorporare il modulo nei progetti utilizzando un'unità microcontroller (MCU) e pochi componenti esterni aggiuntivi. L'interfaccia con l'MCU richiede solo un pin GPIO (ingresso/uscita per uso generale) per un segnale data-ready dal modulo, insieme a una connessione attraverso l'interfaccia digitale periferica seriale (SPI) del modulo (Figura 3).
Figura 3: Il modulo AFBR-S50MV85G di Broadcom richiede solo un MCU e pochi componenti aggiuntivi per l'implementazione di un sistema di rilevamento ToF completo. (Immagine per gentile concessione di Broadcom)
A complemento della semplice progettazione hardware, la funzionalità software associata necessaria per implementare la misurazione della distanza è tutta fornita nel software del driver ToF di Broadcom. Mentre il modulo gestisce la raccolta dei dati ottici per le applicazioni di misurazione della distanza, il software del driver ToF incluso in AFBR-S50 SDK di Broadcom esegue tutte le fasi di configurazione, calibrazione e misurazione dell'hardware. Durante la misurazione, il software del driver estrae sia i valori di distanza sia quelli di ampiezza dei pixel.
Come sviluppare rapidamente un'applicazione di misurazione della distanza
In combinazione con l'SDK AFBR-S50, il kit di valutazione AFBR-S50MV85G-EK di Broadcom è una piattaforma completa per la prototipazione rapida e lo sviluppo di applicazioni di misurazione della distanza. Il kit è fornito con una scheda di espansione contenente il modulo AFBR-S50MV85G, la scheda di valutazione FRDM-KL46Z di NXP basata su un MCU Arm Cortex-M0+ e un cavo mini-USB per collegare il gruppo a un computer portatile o a un altro sistema embedded (Figura 4).
Figura 4: Il kit di valutazione AFBR-S50MV85G-EK di Broadcom e il software associato sono una piattaforma completa per la valutazione e la prototipazione di applicazioni di misurazione della distanza ToF. (Immagine per gentile concessione di Broadcom)
L'esecuzione della misurazione della distanza ToF con il kit di valutazione richiede solo pochi passi. Dopo aver scaricato l'SDK AFBR-S50, una procedura di installazione guida lo sviluppatore in ogni fase. Dopo che lo sviluppatore avvia l'applicazione software AFBR-S50 Explorer di Broadcom inclusa nell'SDK, il software si connette alla scheda di valutazione AFBR-S50 attraverso l'interfaccia USB, riceve i dati di misurazione dal software del driver in esecuzione sull'MCU della scheda di NXP e permette all'utente di visualizzare i risultati in un grafico 1D o 3D (Figura 5).
Figura 5: Il software AFBR-S50 Explorer semplifica la valutazione delle misurazioni ToF attraverso grafici 3D che mostrano l'ampiezza dell'illuminazione ricevuta per ogni pixel nella matrice del sensore ToF. (Immagine per gentile concessione di Broadcom)
Come mostrato nella Figura 5, la vista del grafico 3D visualizza le letture di ogni pixel, ma il software fornisce una vista alternativa che permette agli sviluppatori di vedere solo i pixel ritenuti validi per la misurazione. In questa vista alternativa, i pixel che non soddisfano i criteri definiti sono rimossi dal grafico (Figura 6).
Figura 6: Con il software AFBR-S50 Explorer di Broadcom, gli sviluppatori possono visualizzare grafici 3D di misurazione semplificati che eliminano i pixel che non soddisfano i criteri predefiniti. (Immagine per gentile concessione di Broadcom)
Per esaminare l'accuratezza della misurazione e le prestazioni in diversi scenari di applicazione come l'illuminazione, la riflettività e il tipo di superficie, gli sviluppatori possono visualizzare l'impatto di diverse configurazioni di rilevamento come l'utilizzo di più pixel per applicazioni 3D avanzate o di meno pixel per applicazioni 1D che richiedono una misurazione più precisa. Dopo aver valutato i metodi di misurazione nei loro prototipi, gli sviluppatori possono basarsi sul software di esempio incluso nell'SDK AFBR-S50 di Broadcom per implementare rapidamente applicazioni di rilevamento ToF personalizzate.
Creare applicazioni software di rilevamento ToF personalizzate
Broadcom fonda il supporto per le applicazioni di rilevamento ToF su un'architettura efficiente basata sulla libreria di base AFBR-S50 che comprende codice specifico per l'hardware del sensore, un'interfaccia di programmazione delle applicazioni (API) e livelli di astrazione dell'hardware (HAL) (Figura 7).
Figura 7: All'interno dell'ambiente operativo ToF di Broadcom, l'API del driver ToF fornisce al codice dell'applicazione utente l'accesso alle funzioni di calibrazione, misurazione e valutazione nella libreria di base precompilata del driver ToF. (Immagine per gentile concessione di Broadcom)
Come parte del pacchetto SDK AFBR-S50, Broadcom fornisce la libreria di base come un file di libreria ANSI-C precompilato che incorpora tutti i dati e gli algoritmi necessari per eseguire l'hardware AFBR-S50MV85G. Eseguita sull'MCU del sistema di misurazione della distanza, la libreria di base fornisce funzionalità tra cui la calibrazione, la misurazione e la valutazione per misurare la distanza con il minimo carico di elaborazione o consumo energetico. Poiché le funzioni della libreria di base gestiscono tutti i dettagli sottostanti, il ciclo di misurazione di base visto dallo sviluppatore è semplice (Figura 8).
Figura 8: Il software ToF dell'SDK AFBR-S50 riduce al minimo il carico di lavoro del processore usando interrupt e callback. (Immagine per gentile concessione di Broadcom)
All'inizio di ogni ciclo di misurazione (iniziato da un interrupt periodico del timer, o IRQ), l'MCU inizia la misurazione e torna immediatamente a uno stato di inattività (o continua a elaborare il codice applicativo). Una volta completata la misurazione, il modulo AFBR-S50MV85G utilizza la linea GPIO collegata per segnalare un interrupt, riattivando l'MCU per iniziare una lettura di dati sul bus SPI prima di tornare allo stato precedente. Dopo aver completato la lettura dei dati (segnalata da un IRQ fatto da SPI), l'MCU esegue il codice per valutare i dati acquisiti dal sensore ToF.
Per evitare di perdere i dati di misurazione, la libreria centrale impedisce l'inizio di un nuovo ciclo di misurazione bloccando il buffer di dati fino alla chiamata della routine di valutazione. Pertanto, gli sviluppatori includono tipicamente un doppio buffer per i dati grezzi per permettere l'esecuzione interleaved delle attività di misurazione e valutazione.
Per gli sviluppatori di software applicativo, le routine della libreria di base schermano i dettagli di calibrazione, misurazione e valutazione. Infatti, gli sviluppatori possono utilizzare il kit di valutazione e l'applicazione AFBR-S50 Explorer come piattaforma di prototipazione completa per fornire dati di misurazione al codice di applicazione software di alto livello.
Per gli sviluppatori che hanno bisogno di implementare un software applicativo personalizzato, il pacchetto dell'SDK AFBR-S50 combina i moduli di libreria di base precompilati con diversi esempi di software. Di conseguenza, gli sviluppatori possono creare rapidamente le proprie applicazioni di rilevamento ToF basandosi sulle applicazioni campione fornite nell'SDK. Gli sviluppatori possono accedere all'hardware AFBR-S50MV85G e alle funzionalità della libreria di base AFBR-S50 nel codice software specifico dell'applicazione chiamando le funzioni nell'API SDK AFBR-S50 e specificando le proprie funzioni per i vari callback supportati dalla libreria di base (si veda ancora la Figura 7).
Broadcom fornisce un'ampia documentazione sull'API e sul software di esempio, in modo che gli sviluppatori possano iniziare velocemente ad adattare gli esempi alle loro esigenze o iniziare da zero. In effetti, il ciclo di misurazione e valutazione di base è semplice, abbina funzioni personalizzate e chiamate API al ciclo di misurazione (si veda di nuovo la Figura 8). Ad esempio, un ciclo di misurazione simile a quanto discusso in precedenza comprende tre fasi: integrazione del dispositivo ToF, lettura dei dati e valutazione. Le chiamate API della libreria di base necessarie per avviare queste tre fasi includono:
- Argus_TriggerMeasurement(), che innesca un singolo frame di misurazione in modo asincrono
- Argus_GetStatus(), che restituisce STATUS_OK al termine della misurazione
- Argus_EvaluateData(), che valuta le informazioni utili dai dati di misurazione grezzi
Broadcom dimostra questo ciclo di misurazione fondamentale in un'applicazione di esempio inclusa nella distribuzione dell'SDK, mostrata nel listato 1.
Copy
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);
}
}
}
Listato 1: Il codice di esempio nella distribuzione dell'SDK AFBR-S50 di Broadcom dimostra il modello di progettazione di base per acquisire e valutare i dati ToF dal modulo AFBR-S50MV85G. (Codice per gentile concessione di Broadcom)
Come mostrato nell'elenco, le tre chiamate di funzioni API summenzionate formano la spina dorsale per l'esecuzione di un ciclo di misurazione. Studiando la documentazione API e altre applicazioni di esempio nell'SDK, gli sviluppatori possono implementare rapidamente complesse applicazioni 3D utilizzando la capacità del modulo di fornire i dati necessari per determinare caratteristiche avanzate come la velocità, la direzione e l'angolo di inclinazione di un oggetto bersaglio.
Conclusione
I dispositivi di rilevamento ottico ToF hanno permesso applicazioni in diversi segmenti che richiedono una misurazione precisa della distanza, ma le limitazioni nel campo di misurazione, nell'accuratezza o nell'affidabilità hanno frenato l'espansione in applicazioni come i sistemi di rilevamento industriale che richiedono dispositivi a bassa potenza in grado di fornire risultati accurati su distanze maggiori. Un sottosistema ToF ottico integrato di Broadcom soddisfa questi requisiti emergenti per le applicazioni di rilevamento di prossima generazione. Utilizzando un kit di valutazione basato su questo dispositivo, gli sviluppatori possono implementare rapidamente sistemi per la misurazione di precisione in applicazioni 1D e per il tracciamento del movimento di oggetti complessi in applicazioni 3D.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.


