Hur man snabbt lanserar optiska konstruktioner för time of flight-avkänning i 3D

Av Stephen Evanczuk

Bidraget med av DigiKeys nordamerikanska redaktörer

Optisk mätning av time of flight (ToF) spelar en grundläggande roll i olika tillämpningar som sträcker sig från industriell avkänning till användargränssnitt som baseras på gester. Tack vare tillgången på exakta, snabba multipixelsensorer med hög hastighet kan utvecklare implementera de mer sofistikerade tredimensionella (3D) avkänningsalgoritmer som behövs i dessa tillämpningar. Utvecklingstiden fördröjs dock på grund av komplexiteten hos det optiska delsystemet för multipixelavkänning.

Artikeln diskuterar de grundläggande principerna för ToF. Därefter presenteras ett optiskt ToF-utvärderingskit från Broadcom som gör det möjligt för utvecklare att snabbt ta fram prototyper av tillämpningar för exakt avståndsmätning i 1D och 3D och snabbt implementera anpassade optiska ToF-sensorlösningar.

Grunderna för optisk ToF-teknik

Optisk ToF-teknik, som används för att få fram de exakta avstånd som behövs i många olika tillämpningar, möjliggör mätningar baserade på den tid som ljuset behöver för att färdas genom luften. De specifika beräkningar som används för att utföra dessa mätningar bygger i allmänhet på två olika metoder - direkt och indirekt ToF. Vid direkt ToF, även känd som pulsavståndsmätning, mäter en anordning tiden mellan sändning och mottagning av en viss ljuspuls av en ToF-sensor med hjälp av ekvation 1:

Ekvation 1 Ekvation 1

Där:

c0 = Ljusets hastighet i vakuum

∆T = Förfluten tid mellan sändning och mottagning.

Även om konceptet är enkelt, finns det ett antal utmaningar när det gäller att utföra noggranna mätningar med denna metod, bland annat behovet av tillräckligt kraftfulla sändare och mottagare, förbättring av signal-brusförhållandet och exakt detektering av pulskanter.

Indirekta ToF-metoder använder däremot en modulerad kontinuerlig våg och mäter fasdifferensen mellan överförda och mottagna signaler enligt ekvation 2:

d = c0 / 2fmod x ∆φ/2π Ekvation 2

Där:

c0 = Ljusets hastighet i vakuum

fmod = Laserns moduleringsfrekvens

∆φ = Konstaterad fasdifferens

Förutom att minska effektkraven för sändare och mottagare minskar den indirekta ToF-strategin kraven på pulsformning, vilket förenklar designens komplexitet för att utföra 3D-avståndsmätning och rörelsedetektering.

Både direkta och indirekta metoder kräver noggrann utformning av den optiska frontenden och exakt kontroll av sändar- och mottagarsignaler. I flera år har utvecklare kunnat dra nytta av integrerade optiska ToF-sensorer som kombinerar sändande enheter och mottagande sensorer i en enda kapsling. Tidigare generationer av dessa enheter har dock vanligtvis krävt att utvecklare har tvingats kompromissa med någon kombination av prestanda eller driftsegenskaper, t.ex. energiförbrukning, räckvidd, noggrannhet och hastighet. Sådana kompromisser har visat sig vara ett viktigt hinder för en växande uppsättning industriella avkänningstillämpningar som måste fungera på medelstora avstånd på upp till 10 m.

Mer avancerade indirekta ToF-sensormoduler som AFBR-S50MV85G från Broadcom är särskilt utformade för att tillgodose det ökande behovet av snabba och exakta resultat på medellånga avstånd, samtidigt som de har en minimal storlek och energiförbrukning. Baserat på denna sensor erbjuder utvärderingssatsen AFBR-S50MV85G-EK från Broadcom, och det tillhörande mjukvaruutvecklingskitet (SDK) en utvecklingsplattform för ToF-sensorer med multipixel, som gör det möjligt för utvecklare att snabbt implementera tillämpningar för 3D ToF-avkänning.

Hur en integrerad modul förenklar ToF-avståndsmätning

Modulen AFBR-S50MV85G är utvecklad för industriella avkänningstillämpningar och erbjuder en komplett optisk lösning för ToF-avkänning i en enda kapsling. De integrerade komponenterna omfattar en VCSEL-laser (vertical-cavity surface-emitting laser) på 850 nanometer (nm) för infraröd (IR) belysning, en sexkantig sensormatris med 32 pixlar, integrerade linser för VCSEL- och sensoroptik och en applikationsspecifik integrerad krets (ASIC).

Sändaren, som är placerad i en fast linje i förhållande till sensormatrisen, belyser ett målobjekt, vilket gör att ett visst antal pixlar i sensormatrisen upptäcker den reflekterade IR-signalen. I grundläggande drift gör detta att modulen kan stödja noggrann avståndsmätning från vita, svarta, färgade, metalliska eller retroreflekterande ytor - till och med i direkt solljus - tack vare den inbyggda förmågan att undertrycka omgivande ljus.

När avståndet till ett objekt minskar möjliggör en automatisk kompensation av parallaxfel, mätningar med praktiskt taget ingen nedre gräns för avståndet. Samtidigt gör kombinationen av IR-belysning och sensormatrisen det möjligt att få tillgång till ytterligare information om objektet, t.ex. om dess rörelse, hastighet, lutningsvinkel eller riktning i sidled. Modulen kan därför tillhandahålla den information som behövs för att bestämma riktning och hastighet för ett objekt som passerar eller närmar sig (figur 1).

Diagram över data som hämtats från 8 x 4 pixelmatrisen i modulen AFBR-S50MV85G från Broadcom (klicka för att förstora)Figur 1: Med hjälp av data från 8 x 4 pixelmatrisen i modulen AFBR-S50MV85G kan utvecklare implementera tillämpningar i 3D som kan mäta objektets rörelseegenskaper. (Bildkälla: Broadcom)

Modulens inbyggda ASIC, som styr den exakta driften av dess VCSEL och sensormatrisen, tillhandahåller alla kretsar som krävs för att driva dess VCSEL, fånga upp analoga signaler från sensormatrisen och bearbeta digitala signaler (figur 2).

Diagram på ASIC inbyggt i modulen Broadcom AFBR-S50MV85GFigur 2: En ASIC integrerad i modulen AFBR-S50MV85G innehåller alla kretsar som krävs för att driva modulens VCSEL-ljuskälla, förvärva mottagna signaler från sensormatrisen och generera digitala data för överföring via en SPI-buss. (Bildkälla: Broadcom)

ASIC:ens integrerade försörjningskrets gör att modulen kan köras med en enda 5 V-matning, medan den integrerade fabrikskalibrerade och temperaturkompenserade RC-oscillatorn (Resistor-Capacitor) och den digitala PLL-slingan (Phase Locked Loop) ger alla nödvändiga klocksignaler. Tack vare integrationen kan utvecklare enkelt integrera modulen i sina konstruktioner med hjälp av en mikrokontrollerenhet (MCU) och några få externa komponenter. Gränssnittet mot MCU:n kräver endast ett GPIO-stift (general-purpose input/output) för en dataklar signal från modulen, tillsammans med en anslutning via modulens digitala SPI-gränssnitt (Serial Peripheral Interface) (figur 3).

Diagram över modulen AFBR-S50MV85G från Broadcom (klicka för att förstora)Figur 3: Modulen AFBR-S50MV85G från Broadcom kräver endast en MCU och några få ytterligare komponenter för att implementera ett komplett ToF-sensorsystem. (Bildkälla: Broadcom)

Som komplement till denna enkla hårdvarudesign finns den tillhörande mjukvarufunktion som krävs för att implementera avståndsmätning med Broadcoms ToF-drivrutin. Medan modulen hanterar den optiska datainsamlingen för distansmätningtillämpningar, utför Broadcom ToF-drivrutinen som ingår i företagets SDK AFBR-S50 alla konfigurations-, kalibrerings- och mätningssteg för maskinvaran. Under mätningen extraherar drivrutinen pixlarnas värden både för avstånd och amplitud.

Hur man snabbt utvecklar en tillämpning för avståndsmätning

Tillsammans med SDK:et AFBR-S50 är utvärderingssatsen AFBR-S50MV85G-EK från Broadcom en omfattande plattform för att snabbt ta fram prototyper och utveckla tillämpningar för avståndsmätning. Satsen levereras med ett adapterkort som innehåller modulen AFBR-S50MV85G, NXP:s utvärderingskort FRDM-KL46Z baserat på en Arm Cortex-M0+ MCU och en mini-USB-kabel för att ansluta utvärderingskortet till en bärbar dator eller annat inbäddat system (figur 4).

Bild på utvärderingssatsen AFBR-S50MV85G-EK från BroadcomFigur 4: Utvärderingssatsen AFBR-S50MV85G-EK och tillhörande programvara från Broadcom utgör en komplett plattform för utvärdering och framtagning av prototyper för tillämpningar inom ToF-avståndsmätning. (Bildkälla: Broadcom)

För att utföra ToF-avståndsmätning med utvärderingsutrustningen krävs bara några få steg för att komma igång. När SKD:et AFBR-S50 har laddats ner leder en installationsguide utvecklaren genom en snabb installationsprocedur. När utvecklaren har startat programmet AFBR-S50 Explorer från Broadcom som ingår i SDK-paketet ansluter programmet till utvärderingskortet AFBR-S50 via USB-gränssnittet, tar emot mätdata via drivrutinen som körs på NXP-kortets MCU och låter användaren visa resultaten på en 1D- eller 3D-ritning (figur 5).

Bild på programmet AFBR-S50 Explorer från Broadcom (klicka för att förstora)Figur 5: Programmet AFBR-S50 Explorer förenklar utvärderingen av ToF-mätningar med hjälp av 3D-plottar som visar amplituden av den mottagna belysningen för varje pixel i ToF-sensormatrisen. (Bildkälla: Broadcom)

Som visas i figur 5 visar den plottade 3D-vyn avläsningar från varje pixel, men programmet tillhandahåller en alternativ vy som gör att utvecklare endast kan se de pixlar som anses vara giltiga för mätning. I denna alternativa vy tas pixlar som inte uppfyller de definierade kriterierna bort från diagrammet (figur 6).

Bild på programmet AFBR-S50 Explorer från Broadcom (klicka för att förstora)Figur 6: Med programmet AFBR-S50 Explorer från Broadcom kan utvecklare se smidiga 3D-mätningar som eliminerar pixlar som inte uppfyller fördefinierade kriterier. (Bildkälla: Broadcom)

För att utforska mätnoggrannhet och prestanda i olika tillämpningsscenarier, t.ex. belysning, reflektivitet och typ av yta, kan utvecklare se effekterna av olika avkänningskonfigurationer, t.ex. genom att använda fler pixlar för förbättrade 3D-tillämpningar eller färre pixlar för 1D-tillämpningar som kräver mer exakta mätningar. Efter att ha utvärderat mätmetoderna i sina prototyper kan utvecklare bygga vidare på exempelprogrammen som ingår i Broadcoms SDK AFBR-S50 för att snabbt implementera anpassade tillämpningar för ToF-avkänning.

Bygga anpassade programtillämpningar för ToF-avkänning

Broadcom bygger sitt stöd för tillämpningar inom ToF-avkänning på en effektiv arkitektur som bygger på kärnbiblioteket AFBR-S50 och omfattar specifik kod för sensorhårdvaran, ett gränssnitt för programmering av tillämpningar (API) och ett abstraktionslager för hårdvara (HAL) (figur 7).

Diagram över Broadcoms ToF-driftmiljöFigur 7: I Broadcoms ToF-driftmiljö ger ToF-drivrutinens API tillgång till kalibrerings-, mätnings- och utvärderingsfunktioner i den förkompilerade ToF-drivrutinens kärnbibliotek för användarens tillämpningskod. (Bildkälla: Broadcom)

Som en del av SDK-paketet AFBR-S50 tillhandahåller Broadcom kärnbiblioteket som en förkompilerad biblioteksfil för ANSI-C som innehåller all data och alla algoritmer som behövs för att köra hårdvaran AFBR-S50MV85G. Kärnbiblioteket körs på avståndsmätningssystemets MCU och tillhandahåller funktioner som kalibrering, mätning och utvärdering för att utföra avståndsmätning med minimal bearbetningsbelastning och energiförbrukning. Eftersom funktionerna i kärnbiblioteket hanterar alla underliggande detaljer är den grundläggande mätcykeln för utvecklaren okomplicerad (figur 8).

Bild på programmet AFBR-S50 SDK ToF från Broadcom (klicka för att förstora)Figur 8: Programmet AFBR-S50 SDK ToF minimerar processorns arbetsbelastning med hjälp av avbrott och återanrop. (Bildkälla: Broadcom)

I början av varje mätcykel (initierad av ett periodiskt timeravbrott, eller IRQ) startar MCU:n mätningen och återgår omedelbart till ett viloläge (eller fortsätter att bearbeta programkod). När mätningen är klar använder modulen AFBR-S50MV85G den anslutna GPIO-linjen för att signalera ett avbrott, vilket väcker MCU:n för att initiera en dataavläsning på SPI-bussen innan den återgår till sitt tidigare tillstånd. När dataavläsningen är klar (signalerad av en SPI done IRQ) utför MCU:n kod för att utvärdera den hämtade informationen från ToF-sensorn.

För att förhindra att mätdata går förlorade förhindrar kärnbiblioteket starten av en ny mätcykel genom att blockera databufferten tills utvärderingsrutinen anropas. Utvecklarna inkluderar vanligtvis en dubbel buffert för rådata för att möjliggöra mellanliggande utförande av mätnings- och utvärderingsuppgifter.

För utvecklare av tillämpningsprogram skyddar kärnbibliotekets rutiner detaljerna för kalibrering, mätning och utvärdering. Faktum är att utvecklare kan använda utvärderingssatsen och programmet AFBR-S50 Explorer som en komplett plattform för prototyptillverkning, för att leverera mätdata till programkod på hög nivå.

För utvecklare som behöver implementera anpassad programvara kombinerar SDK-paketet AFBR-S50 de förkompilerade kärnbiblioteksmodulerna med flera mjukvaruexempel. Utvecklare kan därför snabbt skapa egna tillämpningar inom ToF-avkänning genom att bygga vidare på de exempelprogram som finns i SDK:et. Utvecklare kan få tillgång till hårdvaran i AFBR-S50MV85G och kärnbibliotekets funktioner i AFBR-S50 i sin tillämpningsspecifika programkod genom att anropa funktioner i AFBR-S50-SDK:ets API och specificera sina egna funktioner för de olika återanrop som stöds av kärnbiblioteket (se figur 7 igen).

Broadcom tillhandahåller omfattande dokumentation kring API:et och exempelprogrammen, vilket gör det möjligt för utvecklare att snabbt anpassa programvaruexemplen till sina behov eller börja från början. Den grundläggande mätnings- och utvärderingscykeln är i själva verket okomplicerad, genom att helt enkelt matcha anpassade funktioner och API-anrop med mätcykeln (se figur 8 igen). En mätcykel som diskuterats tidigare omfattar till exempel tre faser: Integrering av ToF-enheten, avläsning av data och utvärdering. De API-anrop som behövs för att initiera dessa tre faser är följande:

  • Argus_TriggerMeasurement(), som utlöser en enda mätram asynkront.
  • Argus_GetStatus(), som returnerar STATUS_OK när mätningen har slutförts.
  • Argus_EvaluateData(), som utvärderar användbar information från rå mätdata.

Broadcom demonstrerar denna grundläggande mätslinga i ett exempelprogram som ingår i SDK-distributionen, se lista 1.

Kopiera
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: Exempelkod i SDK-distributionen av AFBR-S50 SDK från Broadcom visar det grundläggande designmönstret för att samla in och utvärdera ToF-data från modulen AFBR-S50MV85G. (Bildkälla: Broadcom)

Som visas i listan utgör de tre anropen till API-funktioner som nämndes tidigare, ryggraden i utförandet av en mätcykel. Genom att studera API-dokumentationen och andra exempelprogram i SDK:et kan utvecklare snabbt implementera komplicerade tillämpningar i 3D med hjälp av modulens förmåga att tillhandahålla de data som behövs för att bestämma avancerade egenskaper som hastighet, riktning och lutningsvinkel för ett målobjekt.

Sammanfattning

Optiska ToF-sensorer har möjliggjort tillämpningar inom olika segment som kräver exakt avståndsmätning, men begränsningar i mätområde, noggrannhet eller tillförlitlighet har hindrat expansionen till tillämpningar som industriella sensorsystem som kräver energisnåla enheter som kan leverera exakta resultat på längre avstånd. Ett integrerat optiskt delsystem för ToF från Broadcom uppfyller dessa nya krav för nästa generations tillämpningar inom avkänning. Med hjälp av en utvärderingssats baserat på den här enheten kan utvecklare snabbt implementera system för precisionsmätning i tillämpningar för 1D och för komplicerad spårning av objektsrörelser i 3D-tillämpningar.

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.

Om skribenten

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk har arbetat i mer än 20 år med att skriva för och om elektronikbranschen inom många olika områden som maskinvara, programvara, system och applikationer – inklusive sakernas internet. Han har en kandidatexameni neurovetenskap om artificiella neuronnät och har arbetat inom rymdfartsindustrin med mycket distribuerade säkra system och metoder för acceleration av algoritmer. När han inte skriver artiklar om teknik och konstruktion arbetar han med applikationer för djupinlärning för igenkänningssystem och rekommendationssystem.

Om utgivaren

DigiKeys nordamerikanska redaktörer