Snel 3D optische Time-of-Flight sensing-ontwerpen starten
Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey
2022-04-26
Optische time-of-flight (ToF) afstandsmeting speelt een fundamentele rol in diverse toepassingen, gaande van industriële detectie tot gebaar-gebaseerde gebruikersinterfaces. Met de beschikbaarheid van nauwkeurige, snelle multipixel ToF-sensoren kunnen ontwikkelaars meer verfijnde driedimensionale (3D) detectiealgoritmen implementeren die nodig zijn in deze toepassingen. De ontwikkelingstijd wordt echter vertraagd door de complexiteit van het subsysteem optische sensoren met meerdere pixels.
In dit artikel worden de basisbeginselen van ToF besproken. Vervolgens wordt een optische ToF-evaluatiekit van Broadcom geïntroduceerd waarmee ontwikkelaars snel een prototype kunnen maken van nauwkeurige 1D- en 3D-afstandsmeettoepassingen, en snel aangepaste optische ToF-sensingoplossingen kunnen implementeren.
De grondbeginselen van optische ToF-technologie
De optische ToF-technologie wordt gebruikt voor het verkrijgen van nauwkeurige afstanden in diverse toepassingen en maakt metingen mogelijk op basis van de tijd die het licht nodig heeft om door de lucht te reizen. De specifieke berekeningen die worden gebruikt om deze metingen uit te voeren, berusten in het algemeen op twee verschillende benaderingen - directe en indirecte ToF. Bij directe ToF, ook wel pulse ranging genoemd, meet een toestel de tijd tussen zenden en ontvangen van een bepaalde lichtpuls door een ToF-sensor met behulp van vergelijking 1:
Vergelijking 1
met
c0 = lichtsnelheid in vacuüm
∆T = Verstreken tijd tussen zenden en ontvangen
Hoewel het concept eenvoudig is, kent de mogelijkheid om met deze aanpak nauwkeurige metingen te verrichten een aantal uitdagingen, waaronder de behoefte aan voldoende krachtige zenders en ontvangers, signaal/ruis-verbetering, en nauwkeurige pulsranddetectie.
Indirecte ToF-methoden daarentegen maken gebruik van een gemoduleerde continue golf en meten het faseverschil tussen uitgezonden en ontvangen signalen volgens vergelijking 2:
Vergelijking 2
met
c0 = lichtsnelheid in vacuüm
fmod = modulatiefrequentie van de laser
∆φ = Bepaald faseverschil
De indirecte ToF-benadering vermindert niet alleen het vereiste zend- en ontvangervermogen, maar versoepelt ook de vereisten voor pulsvorming, waardoor de complexiteit van het ontwerp voor het uitvoeren van 3D-ranging en bewegingsdetectie wordt vereenvoudigd.
Zowel directe als indirecte methoden vereisen een zorgvuldig ontwerp van het optische front-end en een nauwkeurige regeling van de zender- en ontvangersignalen. Jarenlang hebben ontwikkelaars hun voordeel kunnen doen met geïntegreerde optische ToF-sensoren die zend- en ontvangsensoren in één enkel pakket combineren. Desondanks moesten de ontwikkelaars bij vorige generaties van deze toestellen meestal een bepaalde combinatie van prestaties of werkingskenmerken, zoals energieverbruik, bereik, nauwkeurigheid en snelheid, op de koop toe nemen. Dergelijke compromissen zijn een belangrijk obstakel gebleken voor een groeiende reeks industriële sensortoepassingen die op middellange afstanden tot 10 meter (m) moeten werken.
Meer geavanceerde indirecte ToF-sensormodules zoals de AFBR-S50MV85G van Broadcom zijn speciaal ontworpen om te voldoen aan de groeiende behoefte aan snelle, nauwkeurige resultaten op middellange afstand met behoud van minimale pakketgrootte en stroomverbruik. Op basis van deze sensor bieden Broadcom's AFBR-S50MV85G-EK-evaluatiekit en bijbehorende software development kit (SDK) een multipixel ToF sensor ontwikkelingsplatform waarmee ontwikkelaars snel 3D ToF-sensingtoepassingen kunnen implementeren.
Hoe een geïntegreerde module ToF-afstandmeting vereenvoudigt
De AFBR-S50MV85G-module is ontwikkeld voor industriële detectietoepassingen en biedt een complete optische ToF detectieoplossing in één enkel pakket. De geïntegreerde componenten omvatten een 850 nanometer (nm) verticale-cavity surface-emitting laser (VCSEL) voor infrarood (IR) verlichting, een zeshoekige 32-pixel sensormatrix, geïntegreerde lenzen voor VCSEL en sensoroptiek, en een toepassingsspecifieke geïntegreerde schakeling (ASIC).
De zender, die op een vaste plaats ten opzichte van de detectiematrix staat, verlicht een doelobject, waardoor een aantal pixels in de detectiematrix het gereflecteerde IR-signaal detecteren. In de basiswerking ondersteunt de module zo nauwkeurige afstandsmetingen van witte, zwarte, gekleurde, metalen of retroreflecterende oppervlakken, zelfs in direct zonlicht, dankzij de ingebouwde onderdrukking van het omgevingslicht.
Naarmate de afstand tot een object afneemt, maakt automatische compensatie voor parallaxfouten metingen mogelijk met vrijwel geen ondergrens van de afstand. Tegelijkertijd maakt de combinatie van IR-verlichting en de detectiematrix het mogelijk aanvullende informatie over het object te verkrijgen, waaronder zijn beweging, snelheid, kantelhoek of zijdelingse uitlijning. Als gevolg daarvan kan de module gegevens verstrekken die nodig zijn om de richting en snelheid van een passerend of naderend doelobject te bepalen (Afbeelding 1).
Afbeelding 1: Met behulp van gegevens die zijn verkregen uit de AFBR-S50MV85G module's 8 x 4 pixeldetectiematrix, kunnen ontwikkelaars 3D-toepassingen implementeren die in staat zijn de bewegingskenmerken van objecten te meten. (Afbeelding bron: Broadcom)
De ingebouwde ASIC van de module, die de precieze werking van de VCSEL en de detectiematrix regelt, levert alle schakelingen die nodig zijn voor het aansturen van de VCSEL, het opvangen van analoge signalen van de detectiematrix, en de digitale signaalconditionering (figuur 2).
Figuur 2: Een in de AFBR-S50MV85G module geïntegreerde ASIC omvat alle schakelingen die nodig zijn om de VCSEL-lichtbron van de module aan te sturen, de ontvangen signalen van de detectiematrix te verwerven en digitale gegevens te genereren voor overdracht via een SPI-bus. (Bron afbeelding: Broadcom)
Het geïntegreerde voedingscircuit van de ASIC stelt de module in staat te werken met een enkele 5-volt voeding, terwijl de in de fabriek gekalibreerde en temperatuurgecompenseerde weerstand-capaciteit (RC) oscillator en digitale fase-gesloten lus (PLL) alle vereiste kloksignalen leveren. Dankzij deze integratie kunnen ontwikkelaars de module gemakkelijk in hun ontwerpen integreren met behulp van een microcontroller unit (MCU) en een paar extra externe componenten. De interface met de MCU vereist slechts een GPIO-pen (general-purpose input/output) voor een data-ready signaal van de module, samen met een verbinding via de digitale SPI (Serial Peripheral Interface) van de module (figuur 3).
Figuur 3: Broadcom's AFBR-S50MV85G module vereist slechts een MCU en een paar extra componenten voor de implementatie van een compleet ToF sensorsysteem. (Bron afbeelding: Broadcom)
Als aanvulling op dit eenvoudige hardwareontwerp is de bijbehorende softwarefunctionaliteit die nodig is om de afstandsmeting te implementeren, allemaal opgenomen in de ToF-driversoftware van Broadcom. Terwijl de module de optische gegevensverzameling voor afstandmetingstoepassingen voor haar rekening neemt, voert de Broadcom ToF driversoftware, die is opgenomen in de door het bedrijf geleverde AFBR-S50 SDK, alle hardwareconfiguratie-, kalibratie- en meetstappen uit. Tijdens de meting extraheert de software van het stuurprogramma zowel de afstands- als de amplitudewaarden van de pixels.
Hoe snel een toepassing voor afstandsmeting ontwikkelen
In combinatie met de AFBR-S50 SDK biedt Broadcom's AFBR-S50MV85G-EK evaluatiekit een uitgebreid platform voor het snel ontwikkelen van prototypes en afstandmeettoepassingen. De kit wordt geleverd met een adapterbord met de AFBR-S50MV85G-module, NXP's FRDM-KL46Z-evaluatiebord op basis van een Arm Cortex-M0+ MCU, en een mini-USB-kabel voor aansluiting van het evaluatiebord op een laptop of ander ingebed systeem (Afbeelding 4).
Afbeelding 4: Broadcom's AFBR-S50MV85G-EK-evaluatiekit en bijbehorende software bieden een compleet platform voor het evalueren en prototypen van ToF-afstandmeetapplicaties. (Bron afbeelding: Broadcom)
Het uitvoeren van ToF-afstandmetingen met de evaluatieset vergt slechts een paar stappen om te beginnen. Na het downloaden van de AFBR-S50 SDK, leidt een installatiewizard de ontwikkelaar door een snelle installatieprocedure. Nadat de ontwikkelaar de Broadcom AFBR-S50 Explorer-softwaretoepassing, die is opgenomen in het SDK-pakket, heeft opgestart, maakt de software via de USB-interface verbinding met de AFBR-S50 evaluatiekaart, ontvangt de meetgegevens via de besturingssoftware die draait op de MCU van de NXP-kaart, en stelt de gebruiker in staat de resultaten weer te geven in een 1D- of 3D-plot (Afbeelding 5).
Figuur 5: De AFBR-S50 Explorer-software vereenvoudigt de evaluatie van ToF-metingen door middel van 3D-plots die de ontvangen verlichtingsamplitude weergeven voor elke pixel in de ToF-sensor matrix. (Bron afbeelding: Broadcom)
Zoals in Afbeelding 5 te zien is, worden in de 3D-plotweergave de metingen van elke pixel weergegeven, maar de software biedt een alternatieve weergave waarmee ontwikkelaars alleen de pixels kunnen zien die als geldig voor meting worden beschouwd. In deze alternatieve weergave worden pixels die niet aan gedefinieerde criteria voldoen, uit de plot verwijderd (Afbeelding 6).
Afbeelding 6: Met de AFBR-S50 Explorer-software van Broadcom kunnen ontwikkelaars gestroomlijnde 3D-grafieken voor metingen bekijken waarin pixels die niet aan vooraf gedefinieerde criteria voldoen, worden geëlimineerd. (Bron afbeelding: Broadcom)
Om de meetnauwkeurigheid en prestaties in verschillende toepassingsscenario's zoals verlichting, reflectiviteit en oppervlaktetype te onderzoeken, kunnen ontwikkelaars de impact van verschillende detectieconfiguraties bekijken, zoals het gebruik van meer pixels voor verbeterde 3D-toepassingen, of minder pixels voor 1D-toepassingen die preciezere metingen vereisen. Na het evalueren van meetmethoden in hun prototypes, kunnen ontwikkelaars voortbouwen op de voorbeeldsoftware die is opgenomen in Broadcom's AFBR-S50 SDK om snel aangepaste ToF-sensingtoepassingen te implementeren.
Software-applicaties voor ToF-detectie op maat bouwen
Broadcom bouwt ondersteuning voor ToF-sensortoepassingen rond een efficiënte architectuur op basis van de AFBR-S50 kernbibliotheek die bestaat uit sensor-hardware-specifieke code, een toepassingsprogramma-interface (API) en hardware-abstractielagen (HAL) (Afbeelding 7).
Afbeelding 7: Binnen de ToF-besturingsomgeving van Broadcom biedt de ToF-stuurprogramma-API gebruikerstoepassingscode met toegang tot kalibratie-, meet- en evaluatiefuncties in de vooraf gecompileerde ToF-driverkernbibliotheek. (Bron afbeelding: Broadcom)
Als onderdeel van het AFBR-S50 SDK-pakket levert Broadcom de kernbibliotheek als een voorgecompileerd ANSI-C bibliotheekbestand dat alle gegevens en algoritmen bevat die nodig zijn om de AFBR-S50MV85G-hardware te laten werken. De kernbibliotheek draait op de MCU van het afstandmeetsysteem en biedt functionaliteit zoals kalibratie, meting en evaluatie om afstandmetingen uit te voeren met minimale verwerkingsbelasting of stroomverbruik. Omdat de kernfuncties van de bibliotheek alle onderliggende details afhandelen, is de basismeetcyclus die de ontwikkelaar te zien krijgt rechttoe rechtaan (Af 8).
Afbeelding 8: De ToF-software van de AFBR-S50 SDK minimaliseert de werkbelasting van de processor door gebruik te maken van interrupts en callbacks. (Bron afbeelding: Broadcom)
Aan het begin van elke meetcyclus (geïnitieerd door een periodieke timerinterrupt, of IRQ), initieert de MCU de meting en keert onmiddellijk terug naar een inactieve toestand (of gaat verder met het verwerken van toepassingscode). Nadat de meting is voltooid, gebruikt de AFBR-S50MV85G-module de aangesloten GPIO-lijn om een interrupt te signaleren, waardoor de MCU wordt gewekt om een gegevensuitlezing op de SPI-bus te initiëren alvorens terug te keren naar de vorige toestand. Nadat het uitlezen van de gegevens is voltooid (gesignaleerd door een SPI done IRQ), voert de MCU-code uit om de verkregen ToF-sensorgegevens te evalueren.
Om te voorkomen dat meetgegevens verloren gaan, voorkomt de kernbibliotheek het begin van een nieuwe meetcyclus door de gegevensbuffer te blokkeren totdat de evaluatieroutine wordt aangeroepen. Daarom zullen ontwikkelaars gewoonlijk een dubbele buffer voor ruwe gegevens inbouwen om de uitvoering van meet- en evaluatietaken in elkaar over te laten lopen.
Voor ontwikkelaars van applicatiesoftware zijn de details van kalibratie, meting en evaluatie afgeschermd met de kernroutines van de bibliotheek. In feite kunnen ontwikkelaars de evaluatieset en de AFBR-S50 Explorer applicatie gebruiken als een compleet prototyping platform om meetgegevens te leveren aan high-level software-applicatiecode.
Voor ontwikkelaars die aangepaste applicatiesoftware moeten implementeren, combineert het AFBR-S50 SDK-pakket de voorgecompileerde kernbibliotheekmodules met diverse softwarevoorbeelden. Daardoor kunnen ontwikkelaars snel hun eigen ToF sensing-toepassingen maken door voort te bouwen op de voorbeeldtoepassingen die in de SDK zijn opgenomen. Ontwikkelaars kunnen toegang krijgen tot AFBR-S50MV85G hardware en AFBR-S50 core library functionaliteit in hun applicatie-specifieke software code door het aanroepen van functies in de AFBR-S50 SDK API en het specificeren van hun eigen functies voor de verschillende callbacks ondersteund door de core library (zie Afbeelding 7 nogmaals).
Broadcom biedt uitgebreide documentatie over de API en voorbeeldsoftware, zodat ontwikkelaars de softwarevoorbeelden snel kunnen aanpassen aan hun behoeften of vanaf nul kunnen beginnen. In feite is de basismeet- en evaluatiecyclus rechttoe rechtaan, door eenvoudigweg aangepaste functies en API-aanroepen aan de meetcyclus te koppelen (zie Afbeelding 8 nogmaals). Bijvoorbeeld, een meetcyclus zoals eerder besproken omvat drie fasen: ToF-apparaatintegratie, data uitlezen en evaluatie. De API-aanroepen van de kernbibliotheek die nodig zijn om deze drie fasen te starten, omvatten:
- Argus_TriggerMeasurement(), dat asynchroon een enkel meetframe triggert
- Argus_GetStatus(), die STATUS_OK teruggeeft bij succesvolle voltooiing van de meting
- Argus_EvaluateData(), dat nuttige informatie uit de ruwe meetgegevens evalueert
Broadcom demonstreert deze fundamentele meetlus in een voorbeeldtoepassing die in de SDK-distributie is opgenomen, getoond in Lijst 1.
Kopieer
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);
}
}
}
Lijst 1: Voorbeeldcode in de Broadcom AFBR-S50 SDK-distributie demonstreert het basis ontwerppatroon voor het verwerven en evalueren van ToF gegevens van de AFBR-S50MV85G-module. (Bron code: Broadcom)
Zoals uit de lijst blijkt, vormen de drie eerder genoemde API-functie-aanroepen de ruggengraat van de uitvoering van een meetcyclus. Door de API-documentatie en andere voorbeeldtoepassingen in de SDK te bestuderen, kunnen ontwikkelaars snel complexe 3D-toepassingen implementeren door gebruik te maken van de mogelijkheid van de module om de gegevens te verstrekken die nodig zijn om geavanceerde kenmerken te bepalen zoals snelheid, richting en kantelhoek van een doelobject.
Conclusie
Optische ToF-sensoren hebben toepassingen mogelijk gemaakt in diverse segmenten die nauwkeurige afstandsmeting vereisen, maar beperkingen in het meetbereik, de nauwkeurigheid of de betrouwbaarheid hebben de uitbreiding naar toepassingen zoals industriële detectiesystemen die apparaten met laag stroomverbruik vereisen die nauwkeurige resultaten op grotere afstanden kunnen leveren, afgeremd. Een geïntegreerd optisch ToF-subsysteem van Broadcom voldoet aan deze opkomende eisen voor de volgende generatie sensortoepassingen. Met behulp van een evaluatiekit op basis van dit toestel kunnen ontwikkelaars snel systemen implementeren voor precisiemeting in 1D ranging-toepassingen, en voor het volgen van complexe objectbewegingen in 3D-toepassingen.
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.


