Jak rychle spustit návrhy 3D optického snímání Time-of-Flight
Contributed By DigiKey's North American Editors
2022-04-26
Optické měření vzdálenosti Time-of-Flight (ToF) hraje zásadní roli v různých aplikacích od průmyslového snímání až po uživatelská rozhraní založená na gestech. Díky dostupnosti přesných, vysokorychlostních multipixelových senzorů ToF mohou vývojáři implementovat sofistikovanější trojrozměrné (3D) snímací algoritmy, které jsou v těchto aplikacích potřebné. Doba vývoje je však zpomalena kvůli složitosti multipixelového optického snímacího subsystému.
V tomto článku je pojednáno o základních principech technologie ToF. Poté si zde představíme optickou vyhodnocovací sadu ToF od společnosti Broadcom, která vývojářům umožňuje rychle prototypovat přesné 1D a 3D aplikace pro měření vzdálenosti a také rychle implementovat vlastní řešení optického snímání ToF.
Základy optické technologie ToF
Optická technologie ToF, která se používá k získání přesné vzdálenosti potřebné v různých aplikacích, umožňuje měření na základě doby potřebné pro průchod světla vzduchem. Specifické výpočty používané k provádění těchto měření obecně spoléhají na dva různé přístupy – přímou a nepřímou technologii ToF. V přímé technologii ToF, známé také jako technologie PRT („pulse ranging technology“), měří zařízení dobu mezi vysláním a příjmem konkrétního světelného impulzu senzorem ToF pomocí rovnice 1:
Rovnice 1
Kde:
c0 = rychlost světla ve vakuu
∆T = doba uplynulá mezi vysláním a příjmem
Přestože je koncept jednoduchý, schopnost provádět přesná měření tímto přístupem čelí řadě problémů, včetně potřeby dostatečně výkonných vysílačů a přijímačů, vylepšení odstupu signálu od šumu a přesné detekce hran impulzu.
Naproti tomu nepřímé metody ToF využívají modulovanou spojitou vlnu a měří fázový rozdíl mezi vysílanými a přijímanými signály podle rovnice 2:
Rovnice 2
Kde:
c0 = rychlost světla ve vakuu
fmod = frekvence laserové modulace
∆φ = určený fázový rozdíl
Kromě snížení požadavků na napájení vysílače a přijímače zmírňuje nepřímý přístup ToF požadavky na tvarování impulzů, zjednodušuje složitost návrhu pro provádění 3D měření a detekce pohybu.
Přímá i nepřímá metoda vyžaduje pečlivý návrh optického front-endu a přesné řízení signálů vysílače a přijímače. Vývojáři byli po celé roky schopni využívat výhod integrovaných optických senzorů ToF, které kombinují vysílací zařízení a přijímací senzory v jednom pouzdru. Nicméně předchozí generace těchto zařízení obvykle vyžadovala, aby vývojáři udělali nějaký kompromis kombinace výkonu nebo provozních charakteristik, jako jsou spotřeba energie, dosah, přesnost a rychlost. Takové kompromisy se ukázaly jako klíčová překážka rostoucího souboru průmyslových snímacích aplikací, které potřebují pracovat na střední vzdálenosti s dosahem až 10 m.
Pokročilejší nepřímé senzorové moduly ToF, jako je model AFBR-S50MV85G společnosti Broadcom, jsou navrženy speciálně tak, aby reagovaly na rostoucí potřebu vysokorychlostních a přesných výsledků na střední vzdálenosti při zachování minimální velikosti pouzdra a spotřeby energie. Na základě tohoto senzoru poskytuje vyhodnocovací sada AFBR-S50MV85G-EK a související sada pro vývoj softwaru (SDK) společnosti Broadcom platformu pro vývoj multipixelových senzorů ToF, která vývojářům umožňuje rychle implementovat aplikace 3D snímání ToF.
Jak integrovaný modul zjednodušuje měření vzdálenosti ToF
Modul AFBR-S50MV85G, vyvinutý pro průmyslové aplikace snímání, poskytuje kompletní optické řešení snímání ToF v jediném pouzdru. Jeho integrované součásti zahrnují 850nm laser s vertikální dutinou („vertical-cavity surface-emitting laser“, VCSEL) pro infračervené (IR) osvětlení, šestihrannou 32pixelovou matici senzoru, integrované čočky pro laser VCSEL a optiku senzoru a integrovaný obvod pro konkrétní aplikaci („application-specific integrated circuit“, ASIC).
Vysílač, umístěný v pevném vyrovnání vzhledem ke snímací matici, osvětluje cílový objekt, což způsobí, že určitý počet pixelů ve snímací matici detekuje odražený IR signál. V základním provozu to umožňuje modulu podporovat přesné měření vzdálenosti od bílých, černých, barevných, kovových nebo retroreflexních povrchů – a to i na přímém slunci – díky vestavěným funkcím potlačení okolního světla.
Se snižující se vzdáleností k objektu umožňuje automatická kompenzace chyb paralaxy měření prakticky bez spodní hranice vzdálenosti. Kombinace IR přísvitu a snímací matice zároveň umožňuje dostupnost dalších informací o objektu včetně jeho pohybu, rychlosti, úhlu náklonu nebo bočního vyrovnání. Díky tomu může modul poskytovat data potřebná k určení směru a rychlosti procházejícího nebo přibližujícího se cílového objektu (obrázek 1).
Obrázek 1: Pomocí dat získaných ze snímací matice 8 × 4 pixelů modulu AFBR-S50MV85G mohou vývojáři implementovat 3D aplikace schopné měřit charakteristiky pohybu objektů. (Zdroj obrázku: společnost Broadcom)
Vestavěný obvod ASIC modulu zajišťuje přesné ovládání laseru VCSEL a snímací matice a poskytuje všechny obvody potřebné pro řízení laseru VCSEL, zachycení analogového signálu ze snímací matice a kondicionování signálu (obrázek 2).
Obrázek 2: Obvod ASIC integrovaný v modulu AFBR-S50MV85G obsahuje všechny obvody potřebné k řízení světelného zdroje VCSEL modulu, získávání přijatých signálů ze snímací matice a generování digitálních dat pro přenos přes sběrnici SPI. (Zdroj obrázku: společnost Broadcom)
Integrovaný napájecí obvod ASIC umožňuje modulu napájet jedno 5voltové napájení, zatímco jeho integrovaný továrně kalibrovaný a teplotně kompenzovaný oscilátor rezistor-kondenzátor („resistor-capacitor“, RC) a digitální smyčka s fázovým závěsem („phase locked loop“, PLL) poskytují všechny požadované taktovací signály. Díky této integraci mohou vývojáři snadno začlenit modul do svých návrhů pomocí mikrokontrolérové jednotky („microcontroller unit“, MCU) a několika dalších externích komponent. Rozhraní s MCU vyžaduje pouze univerzální vstupní/výstupní („general-purpose input/output“, GPIO) pin pro signál připravený pro data z modulu spolu s připojením přes digitální sériové periferní rozhraní („Serial Peripheral Interface“, SPI) modulu (obrázek 3).
Obrázek 3: Modul AFBR-S50MV85G společnosti Broadcom vyžaduje k implementaci kompletního systému snímání ToF pouze MCU a několik dalších komponent. (Zdroj obrázku: společnost Broadcom)
Tento přímočarý hardwarový design doplňuje přidružená softwarová funkce potřebná k implementaci měření vzdálenosti v softwaru ovladače ToF společnosti Broadcom. Zatímco modul zpracovává sběr optických dat pro aplikace měření vzdálenosti, software ovladače ToF společnosti Broadcom, který je součástí dodávky sady SDK AFBR-S50 poskytované společností, provádí všechny kroky hardwarové konfigurace, kalibrace a měření. Software ovladače extrahuje během měření hodnoty vzdálenosti i amplitudy pixelů.
Jak rychle vyvinout aplikaci pro měření vzdálenosti
Vyhodnocovací sada AFBR-S50MV85G-EK společnosti Broadcom poskytuje v kombinaci se sadou SDK AFBR-S50 komplexní platformu pro rychlé prototypování a vývoj aplikací pro měření vzdálenosti. Sada se dodává s deskou adaptéru obsahující modul AFBR-S50MV85G, vyhodnocovací deskou FRDM-KL46Z společnosti NXP založenou na MCU Arm Cortex-M0+ a s kabelem mini-USB pro připojení sestavy vyhodnocovací desky k notebooku nebo jinému vestavěnému systému (obrázek 4).
Obrázek 4: Vyhodnocovací sada AFBR-S50MV85G-EK společnosti Broadcom a související software poskytují kompletní platformu pro vyhodnocování a prototypování aplikací měření vzdálenosti ToF. (Zdroj obrázku: společnost Broadcom)
Provádění měření vzdálenosti ToF pomocí vyhodnocovací sady vyžaduje pouze několik kroků, abyste mohli začít. Po stažení sady SDK AFBR-S50 provede vývojáře postupem rychlé instalace průvodce nastavením. Jakmile vývojář spustí softwarovou aplikaci AFBR-S50 Explorer společnosti Broadcom, která je součástí balíčku SDK, software se připojí k vyhodnocovací desce AFBR-S50 přes rozhraní USB, přijme naměřená data prostřednictvím softwaru ovladače běžícího na MCU desky NXP a umožní uživateli zobrazení výsledků v 1D nebo 3D diagramu (obrázek 5).
Obrázek 5: Software AFBR-S50 Explorer zjednodušuje vyhodnocování měření ToF prostřednictvím 3D diagramů zobrazujících přijatou amplitudu osvětlení pro jednotlivé pixely v matici senzoru ToF. (Zdroj obrázku: společnost Broadcom)
Jak je znázorněno na obrázku 5, zobrazení 3D diagramu ukazuje hodnoty z jednotlivých pixelů, ale software poskytuje alternativní pohled, který umožňuje vývojářům zobrazovat pouze pixely považované za platné pro měření. V tomto alternativním zobrazení jsou pixely, které nesplňují definovaná kritéria, z diagramu odstraněny (obrázek 6).
Obrázek 6: Se softwarem AFBR-S50 Explorer společnosti Broadcom mohou vývojáři prohlížet optimalizované 3D diagramy měření, které eliminují pixely, které nesplňují předem definovaná kritéria. (Zdroj obrázku: společnost Broadcom)
K prozkoumání přesnosti a výkonu měření v různých aplikačních scénářích, jako je osvětlení, odrazivost a typ povrchu, mohou vývojáři sledovat dopad různých konfigurací snímání, jako je použití více pixelů pro vylepšené 3D aplikace nebo méně pixelů pro 1D aplikace vyžadující přesnější měření. Po vyhodnocení metod měření ve svých prototypech mohou vývojáři stavět na ukázkovém softwaru obsaženém v sadě SDK AFBR-S50 společnosti Broadcom a rychle implementovat vlastní aplikace pro snímání ToF.
Vytváření vlastních softwarových aplikací pro snímání ToF
Společnost Broadcom staví podporu pro aplikace snímání ToF na efektivní architektuře založené na knihovně jádra AFBR-S50 obsahující hardwarově specifický kód senzoru, aplikační programovací rozhraní („application programming interface“, API) a vrstvy abstrakce hardwaru („hardware abstraction layers“, HAL) (obrázek 7).
Obrázek 7: V provozním prostředí ToF společnosti Broadcom poskytuje rozhraní API ovladače ToF uživatelskému aplikačnímu kódu přístup ke kalibračním, měřicím a vyhodnocovacím funkcím v předkompilované knihovně jádra ovladače ToF. (Zdroj obrázku: společnost Broadcom)
Jako součást balíčku SDK AFBR-S50 poskytuje společnost Broadcom knihovnu jádra jako předkompilovaný soubor knihovny ANSI-C, který vkládá všechna data a algoritmy potřebné ke spuštění hardwaru AFBR-S50MV85G. Knihovna jádra běží na MCU systému měření vzdálenosti a poskytuje funkce včetně kalibrace, měření a vyhodnocování pro provádění měření vzdálenosti s minimální zátěží zpracování nebo spotřebou energie. Vzhledem k tomu, že funkce knihovny jádra zpracovávají všechny základní detaily, je základní cyklus měření, který vidí vývojář, přímočarý (obrázek 8).
Obrázek 8: Software SDK ToF AFBR-S50 minimalizuje zátěž procesoru pomocí přerušení a zpětných volání. (Zdroj obrázku: společnost Broadcom)
Na začátku každého měřicího cyklu (iniciovaného periodickým přerušením časovače nebo IRQ) zahájí MCU měření a okamžitě se vrátí do klidového stavu (nebo pokračuje ve zpracování nějakého aplikačního kódu). Po dokončení měření používá modul AFBR-S50MV85G připojenou linku GPIO k signalizaci přerušení, čímž probudí MCU, aby inicioval čtení dat na sběrnici SPI, než se vrátí do předchozího stavu. Po dokončení čtení dat (signalizováno IRQ pomocí SPI) spustí MCU kód k vyhodnocení získaných dat senzoru ToF.
K prevenci ztráty dat měření zabraňuje knihovna jádra spuštění nového cyklu měření blokováním datové vyrovnávací paměti, dokud se nezavolá vyhodnocovací rutina. Vývojáři by tak typicky zahrnuli dvojitou vyrovnávací paměť pro nezpracovaná data, aby umožnili prokládané provádění úloh měření a vyhodnocení.
Pro vývojáře aplikačního softwaru chrání rutiny knihovny jádra detaily kalibrace, měření a vyhodnocení. Ve skutečnosti mohou vývojáři použít vyhodnocovací sadu a aplikaci AFBR-S50 Explorer jako kompletní prototypovou platformu k dodání naměřených dat do kódu softwarové aplikace vysoké úrovně.
Pro vývojáře, kteří potřebují implementovat vlastní aplikační software, kombinuje balíček SDK AFBR-S50 předkompilované moduly knihovny jádra s několika příklady softwaru. Výsledkem je, že vývojáři mohou rychle vytvářet své vlastní aplikace pro snímání ToF na základě ukázkových aplikací poskytovaných v sadě SDK. Vývojáři mohou přistupovat k hardwaru AFBR-S50MV85G a funkcím knihovny jádra AFBR-S50 ve svém softwarovém kódu specifickém pro aplikaci voláním funkcí v API SDK AFBR-S50 a specifikováním vlastních funkcí pro různá zpětná volání podporovaná knihovnou jádra (viz znovu obrázek 7).
Společnost Broadcom poskytuje k API a ukázkovému softwaru rozsáhlou dokumentaci, což vývojářům umožňuje rychle přizpůsobit příklady softwaru jejich potřebám nebo začít od nuly. Ve skutečnosti je základní cyklus měření a vyhodnocování přímočarý, jednoduše přizpůsobuje uživatelské funkce a volání API cyklu měření (viz znovu obrázek 8). Například cyklus měření, jak bylo uvedeno výše, zahrnuje tři fáze: integraci zařízení ToF, čtení dat a vyhodnocení. Volání rozhraní API knihovny jádra potřebná k zahájení těchto tří fází zahrnují:
- Argus_TriggerMeasurement(), které spouští jeden měřicí rámec asynchronně
- Argus_GetStatus(), které po úspěšném dokončení měření vrací hodnotu STATUS_OK
- Argus_EvaluateData(), které vyhodnocuje užitečné informace z nezpracovaných dat měření
Společnost Broadcom demonstruje tuto základní měřicí smyčku na ukázkové aplikaci zahrnuté v distribuci SDK, která je uvedena v zápisu 1.
Kopírovat
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);
}
}
}
Zápis 1: Ukázkový kód v distribuci SDK AFBR-S50 společnosti Broadcom demonstruje základní vzor pro získávání a vyhodnocování dat ToF z modulu AFBR-S50MV85G. (Zdroj obrázku: společnost Broadcom)
Jak je uvedeno v zápisu, tři dříve zmíněná volání funkcí API tvoří páteř provádění cyklu měření. Prostudováním dokumentace API a dalších ukázkových aplikací v SDK mohou vývojáři rychle implementovat složité 3D aplikace pomocí schopnosti modulu poskytovat data potřebná k určení pokročilých charakteristik, jako je rychlost, směr a úhel náklonu cílového objektu.
Závěr
Optická snímací zařízení ToF umožnila aplikace v různých segmentech vyžadující přesné měření vzdálenosti, avšak omezení v rozsahu měření, přesnosti nebo spolehlivosti omezila rozšíření do aplikací, jako jsou průmyslové snímací systémy, které vyžadují zařízení s nízkou spotřebou schopná poskytovat přesné výsledky na delší vzdálenosti. Integrovaný optický subsystém ToF od společnosti Broadcom tyto vznikající požadavky na snímací aplikace nové generace splňuje. Pomocí vyhodnocovací sady založené na tomto zařízení mohou vývojáři rychle implementovat systémy pro přesné měření v 1D aplikacích určování vzdálenosti a pro komplexní sledování pohybu objektů ve 3D aplikacích.
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.


