Cum să lansați rapid proiecte de detecție optică 3D pentru timpul de zbor

By Stephen Evanczuk

Contributed By DigiKey's North American Editors

Măsurarea optică a distanței în timp de zbor (ToF) joacă un rol fundamental în diverse aplicații, de la detectarea industrială la interfețele de utilizare bazate pe gesturi. Odată cu disponibilitatea senzorilor ToF multipixel preciși și de mare viteză, dezvoltatorii pot implementa algoritmi de detecție tridimensională (3D) mai sofisticați, necesari în aceste aplicații. Cu toate acestea, timpul de dezvoltare este încetinit din cauza complexității subsistemului de detecție optică multipixel.

Acest articol prezintă principiile de bază ale ToF. Apoi, se prezintă un kit de evaluare ToF optic de la Broadcom, care permite dezvoltatorilor să creeze rapid prototipuri pentru aplicații precise de măsurare a distanțelor 1D și 3D, precum și să implementeze rapid soluții de detecție ToF optice personalizate.

Noțiunile de bază ale tehnologiei optice ToF

Folosită pentru a calcula distanța exactă necesară în mai multe aplicații, tehnologia optică ToF permite efectuarea de măsurători bazate pe timpul necesar pentru ca lumina să se deplaseze prin aer. Calculele specifice utilizate pentru efectuarea acestor măsurători se bazează, în general, pe două abordări diferite – ToF direct și indirect. În cazul ToF direct, cunoscut și ca măsurarea distanței impulsurilor, un dispozitiv măsoară timpul dintre transmiterea și recepția unui anumit impuls de lumină de către un senzor ToF, utilizând Ecuația 1:

Ecuația 1 Ecuația 1

Unde:

c0 = viteza luminii în vid

∆T = timpul scurs între emisie și recepție

Deși conceptul este simplu, capacitatea de a efectua măsurători precise cu această abordare se confruntă cu o serie de provocări, inclusiv necesitatea unor emițătoare și receptoare suficient de puternice, îmbunătățirea raportului semnal/zgomot și detectarea precisă a marginilor impulsurilor.

În schimb, metodele ToF indirecte utilizează o undă continuă modulată și măsoară diferența de fază dintre semnalele transmise și recepționate în conformitate cu Ecuația 2:

d = c0 / 2fmod x ∆φ/2π Ecuația 2

Unde:

c0 = Viteza luminii în vid

fmod = frecvența de modulație laser

∆φ = diferența de fază determinată

Pe lângă faptul că reduce cerințele de putere ale emițătorului și receptorului, abordarea indirectă ToF relaxează cerințele pentru modelarea impulsurilor, simplificând complexitatea proiectării pentru a realiza măsurarea distanței 3D și detectarea mișcării.

Atât metodele directe, cât și cele indirecte necesită o proiectare atentă a front-end-ului optic și un control precis al semnalelor emițătorului și receptorului. De ani de zile, dezvoltatorii au putut profita de senzorii optici integrați ToF care combină dispozitivele de transmisie și senzorii de recepție într-un singur pachet. Cu toate acestea, generațiile anterioare ale acestor dispozitive au impus, de obicei, dezvoltatorilor să facă compromisuri în ceea ce privește performanța sau caracteristicile de funcționare, cum ar fi consumul de energie, raza de acțiune, precizia și viteza. Astfel de compromisuri au apărut ca un impediment cheie pentru un set tot mai mare de aplicații de detecție industrială care trebuie să funcționeze la distanțe medii de până la 10 metri (m).

Modulele mai avansate de senzori ToF indirecți, cum ar fi AFBR-S50MV85G de la Broadcom, sunt concepute special pentru a răspunde nevoii tot mai mari de rezultate precise și de mare viteză pe distanțe medii, menținând în același timp dimensiunea pachetului și consumul de energie la un nivel minim. Pe baza acestui senzor, kitul de evaluare AFBR-S50MV85G-EK de la Broadcom și kitul de dezvoltare software (SDK) asociat oferă o platformă de dezvoltare a senzorilor ToF multipixel care permite dezvoltatorilor să implementeze rapid aplicații de detecție 3D ToF.

Cum simplifică un modul integrat măsurarea distanței ToF

Dezvoltat pentru aplicații de detecție industrială, modulul AFBR-S50MV85G oferă o soluție completă de detecție optică ToF într-un singur pachet. Componentele sale integrate includ un laser cu emisie de suprafață cu cavitate verticală (VCSEL) de 850 nanometri (nm) pentru iluminarea în infraroșu (IR), o matrice de senzor hexagonal de 32 de pixeli, lentile integrate pentru optica VCSEL și a senzorului și un circuit integrat specific aplicației (ASIC).

Poziționat într-o aliniere fixă în raport cu matricea de detectare, emițătorul luminează un obiect țintă, determinând un anumit număr de pixeli din matricea de detectare să detecteze semnalul IR reflectat. În funcționarea de bază, acest lucru permite modulului să accepte măsurarea precisă a distanței de la suprafețe albe, negre, colorate, metalice sau retroreflectorizante – chiar și în lumina directă a soarelui – datorită capacităților sale integrate de suprimare a luminii ambientale.

Pe măsură ce distanța până la un obiect scade, compensarea automată a erorilor de paralaxă permite efectuarea de măsurători fără limită inferioară a distanței. În același timp, combinația dintre iluminarea IR și matricea de detecție permite obținerea de informații suplimentare despre obiect, inclusiv despre mișcarea, viteza, unghiul de înclinare sau alinierea laterală a acestuia. Drept urmare, modulul poate furniza datele necesare pentru a determina direcția și viteza unui obiect țintă aflat în trecere sau care se apropie (Figura 1).

Diagrama datelor obținute de la matricea de detecție de 8 x 4 pixeli a modulului Broadcom AFBR-S50MV85G (faceți clic pentru a mări imaginea)Figura 1: utilizând datele obținute de la matricea de detecție de 8 x 4 pixeli a modulului AFBR-S50MV85G, dezvoltatorii pot implementa aplicații 3D capabile să măsoare caracteristicile mișcării obiectelor. (Sursa imaginii: Broadcom)

Orchestrând funcționarea precisă a VCSEL-ului și a matricei de detecție, ASIC-ul încorporat al modulului furnizează toate circuitele necesare pentru acționarea VCSEL-ului, captarea semnalului analogic de la matricea de detecție și condiționarea semnalului digital (Figura 2).

Diagrama ASIC-ului integrat în modulul Broadcom AFBR-S50MV85GFigura 2: un ASIC integrat în modulul AFBR-S50MV85G include toate circuitele necesare pentru a comanda sursa de lumină VCSEL a modulului, pentru a achiziționa semnalele primite de la matricea de detecție și pentru a genera date digitale pentru transferul pe o magistrală SPI. (Sursa imaginii: Broadcom)

Circuitele de alimentare integrate ale ASIC permit modulului să funcționeze cu o singură sursă de 5 volți, în timp ce oscilatorul său rezistor-condensator (RC) integrat, calibrat din fabrică și cu compensare a temperaturii și bucla digitală cu blocare de fază (PLL) furnizează toate semnalele de ceas necesare. Datorită acestei integrări, dezvoltatorii pot încorpora cu ușurință modulul în proiectele lor folosind o unitate cu microcontroler (MCU) și câteva componente externe suplimentare. Interfața cu MCU necesită doar un pin de intrare/ieșire de uz general (GPIO) pentru un semnal pentru datele de la modul, împreună cu o conexiune prin intermediul interfeței periferice seriale (SPI) digitale a modulului (Figura 3).

Diagrama modulului AFBR-S50MV85G de la Broadcom (faceți clic pentru a mări imaginea)Figura 3: modulul AFBR-S50MV85G de la Broadcom necesită doar un MCU și câteva componente suplimentare pentru implementarea unui sistem complet de detecție ToF. (Sursa imaginii: Broadcom)

În completarea acestui design hardware simplu, funcționalitatea software asociată, necesară pentru a implementa măsurarea distanței, este furnizată de software-ul driverului ToF de la Broadcom. În timp ce modulul se ocupă de colectarea datelor optice pentru aplicațiile de măsurare a distanței, software-ul driver-ului Broadcom ToF inclus în AFBR-S50 SDK furnizat de companie realizează toate etapele de configurare, calibrare și măsurare a hardware-ului. În timpul măsurătorilor, software-ul driverului extrage atât valorile distanței, cât și valorile amplitudinii pixelilor.

Cum să dezvoltați rapid o aplicație de măsurare a distanței

În combinație cu AFBR-S50 SDK, kitul de evaluare AFBR-S50MV85G-EK de la Broadcom oferă o platformă completă pentru crearea rapidă de prototipuri și dezvoltarea de aplicații de măsurare a distanței. Kitul este însoțit de o placă adaptoare care conține modulul AFBR-S50MV85G, placa de evaluare FRDM-KL46Z de la NXP bazată pe un MCU Arm Cortex-M0+ și un cablu mini-USB pentru conectarea ansamblului plăcii de evaluare la un laptop sau la un alt sistem încorporat (Figura 4).

Imagine a kitului de evaluare Broadcom AFBR-S50MV85G-EKFigura 4: kitul de evaluare AFBR-S50MV85G-EK de la Broadcom și software-ul asociat oferă o platformă completă pentru evaluarea și crearea de prototipuri pentru aplicațiile de măsurare a distanței ToF. (Sursa imaginii: Broadcom)

Măsurarea distanței ToF cu ajutorul kitului de evaluare necesită doar câțiva pași pentru a începe. După descărcarea AFBR-S50 SDK, un program de instalare ghidează dezvoltatorul printr-o procedură rapidă de instalare. După ce dezvoltatorul pornește aplicația software AFBR-S50 Explorer de la Broadcom inclusă în pachetul SDK, software-ul se conectează la placa de evaluare AFBR-S50 prin intermediul interfeței USB, primește datele de măsurare prin intermediul software-ului driver-ului care rulează pe MCU-ul plăcii NXP și permite utilizatorului să afișeze rezultatele într-un grafic 1D sau 3D (Figura 5).

Imagine a software-ului Broadcom AFBR-S50 Explorer (faceți clic pentru a mări imaginea)Figura 5: software-ul AFBR-S50 Explorer simplifică evaluarea măsurătorilor ToF prin intermediul graficelor 3D care arată amplitudinea iluminării primite pentru fiecare pixel din matricea senzorului ToF. (Sursa imaginii: Broadcom)

După cum s-a arătat în Figura 5, vizualizarea 3D afișează citirile de la fiecare pixel, dar software-ul oferă o vizualizare alternativă care permite dezvoltatorilor să vadă doar pixelii considerați valabili pentru măsurare. În această vizualizare alternativă, pixelii care nu îndeplinesc criteriile definite sunt eliminați din grafic (Figura 6).

Imagine a software-ului AFBR-S50 Explorer de la Broadcom (faceți clic pentru a mări imaginea)Figura 6: cu ajutorul software-ului AFBR-S50 Explorer de la Broadcom, dezvoltatorii pot vizualiza grafice 3D de măsurare simplificate care elimină pixelii care nu îndeplinesc criteriile predefinite. (Sursa imaginii: Broadcom)

Pentru a explora acuratețea și performanța măsurătorilor în diferite scenarii de aplicații, cum ar fi iluminarea, reflectivitatea și tipul de suprafață, dezvoltatorii pot vizualiza impactul diferitelor configurații de detecție, cum ar fi utilizarea unui număr mai mare de pixeli pentru aplicații 3D îmbunătățite sau a unui număr mai mic de pixeli pentru aplicații 1D care necesită măsurători mai precise. După ce au evaluat metodele de măsurare în prototipurile lor, dezvoltatorii se pot baza pe software-ul de probă inclus în SDK-ul AFBR-S50 de la Broadcom pentru a implementa rapid aplicații de detecție ToF personalizate.

Crearea de aplicații software personalizate de detecție ToF

Broadcom construiește compatibilitatea pentru aplicațiile de detecție ToF în jurul unei arhitecturi eficiente bazate pe biblioteca de bază AFBR-S50 care cuprinde cod specific hardware-ului senzorului, o interfață de programare a aplicațiilor (API) și straturi de abstractizare hardware (HAL) (Figura 7).

Diagrama mediului de operare ToF al BroadcomFigura 7: în cadrul mediului de operare ToF de la Broadcom, API-ul driver-ului ToF oferă codului aplicației utilizatorului acces la funcțiile de calibrare, măsurare și evaluare din biblioteca de bază precompilată a driver-ului ToF. (Sursa imaginii: Broadcom)

Ca parte a pachetului AFBR-S50 SDK, Broadcom oferă biblioteca de bază ca fișier de bibliotecă ANSI-C precompilat, care include toate datele și toți algoritmii necesari pentru a rula hardware-ul AFBR-S50MV85G. Rulând pe MCU-ul sistemului de măsurare a distanței, biblioteca de bază oferă funcționalități, inclusiv calibrare, măsurare și evaluare, pentru a efectua măsurarea distanței cu o sarcină de procesare sau consum de energie minim. Deoarece funcțiile de bază ale bibliotecii gestionează toate detaliile subiacente, ciclul de măsurare de bază văzut de dezvoltator este simplu (Figura 8).

Imagine a software-ului Broadcom AFBR-S50 SDK ToF (faceți clic pentru a mări imaginea)Figura 8: software-ul AFBR-S50 SDK ToF reduce la minimum sarcina de lucru a procesorului folosind întreruperi și apelări inverse. (Sursa imaginii: Broadcom)

La începutul fiecărui ciclu de măsurare (inițiat de o întrerupere periodică a temporizatorului, sau IRQ), MCU inițiază măsurarea și revine imediat la o stare de inactivitate (sau continuă procesarea unui cod de aplicație). După finalizarea măsurării, modulul AFBR-S50MV85G utilizează linia GPIO conectată pentru a semnaliza o întrerupere, activând MCU pentru a iniția o citire a datelor pe magistrala SPI înainte de a reveni la starea anterioară. După finalizarea citirii datelor (semnalată de un IRQ efectuat de SPI), MCU execută codul pentru a evalua datele senzorului ToF achiziționate.

Pentru a preveni pierderea datelor de măsurare, biblioteca de bază previne începerea unui nou ciclu de măsurare prin blocarea tamponului de date până la apelarea rutinei de evaluare. Ca atare, dezvoltatorii includ de obicei o memorie tampon dublă pentru datele neprocesate pentru a permite executarea intercalată a sarcinilor de măsurare și evaluare.

Pentru dezvoltatorii de software de aplicații, rutinele de bază ale bibliotecii protejează detaliile de calibrare, măsurare și evaluare. De fapt, dezvoltatorii pot utiliza kitul de evaluare și aplicația AFBR-S50 Explorer ca o platformă completă de prototipare pentru a furniza date de măsurare către codul aplicației software de nivel înalt.

Pentru dezvoltatorii care trebuie să implementeze aplicații software personalizate, pachetul AFBR-S50 SDK combină modulele precompilate ale bibliotecii de bază cu mai multe exemple de software. Prin urmare, dezvoltatorii își pot crea rapid propriile aplicații de detecție ToF, bazându-se pe aplicațiile de probă furnizate în SDK. Dezvoltatorii pot accesa hardware-ul AFBR-S50MV85G și funcționalitatea bibliotecii de bază AFBR-S50 în codul software specific aplicației lor prin apelarea funcțiilor din AFBR-S50 SDK API și prin specificarea propriilor funcții pentru diversele apelări inverse acceptate de biblioteca de bază (consultați din nou Figura 7).

Broadcom oferă o documentație amplă privind API-ul și exemplele de software, permițând dezvoltatorilor să adapteze rapid exemplele de software la nevoile lor sau să înceapă de la zero. De fapt, ciclul de bază de măsurare și evaluare este simplu, fiind vorba de corelarea funcțiilor personalizate și a apelurilor API cu ciclul de măsurare (consultați din nou Figura 8). De exemplu, un ciclu de măsurare, așa cum s-a discutat anterior, include trei faze: integrarea dispozitivului ToF, citirea datelor și evaluarea. Apelurile API ale bibliotecii de bază necesare pentru a iniția aceste trei faze includ:

  • Argus_TriggerMeasurement(), care declanșează un singur cadru de măsurare în mod asincron
  • Argus_GetStatus(), care returnează STATUS_OK în cazul finalizării cu succes a măsurătorii
  • Argus_EvaluateData(), care evaluează informațiile utile din datele de măsurare neprocesate

Broadcom demonstrează această buclă de măsurare fundamentală într-o aplicație de probă inclusă în distribuția SDK, prezentată în Lista 1.

Copie
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);
         }
      }
}

Lista 1: exemplul de cod din distribuția Broadcom AFBR-S50 SDK demonstrează modelul de proiectare de bază pentru achiziția și evaluarea datelor ToF de la modulul AFBR-S50MV85G. (Sursa codului: Broadcom)

După cum s-a arătat în listă, cele trei apeluri de funcție API menționate anterior formează baza execuției unui ciclu de măsurare. Prin studierea documentației API și a altor exemple de aplicații din SDK, dezvoltatorii pot implementa rapid aplicații 3D complexe folosind capacitatea modulului de a furniza datele necesare pentru a determina caracteristici avansate, cum ar fi viteza, direcția și unghiul de înclinare a unui obiect țintă.

Concluzie

Dispozitivele de detecție optică ToF au permis aplicații în diverse segmente care necesită măsurarea precisă a distanțelor, dar limitările în ceea ce privește domeniul de măsurare, acuratețea sau fiabilitatea au încetinit extinderea în aplicații precum sistemele de detecție industrială care necesită dispozitive cu consum redus de energie capabile să furnizeze rezultate precise la distanțe mai mari. Un subsistem ToF optic integrat de la Broadcom îndeplinește aceste cerințe emergente pentru aplicațiile de detecție de ultimă generație. Utilizând un kit de evaluare bazat pe acest dispozitiv, dezvoltatorii pot implementa rapid sisteme pentru măsurători de precizie în aplicații de măsurare a distanțelor 1D și pentru urmărirea mișcărilor complexe ale obiectelor în aplicații 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