Miten tuoda nopeasti markkinoille optista 3D-kulkuaikamittausta käyttäviä tuotteita
Julkaisija DigiKeyn kirjoittajat Pohjois-Amerikassa
2022-04-26
Optisella ToF (Time-of-Flight) -etäisyysmittauksella on erittäin tärkeä rooli erilaisissa sovelluksissa, jotka ulottuvat teollisesta mittauksesta eleisiin perustuviin käyttöliittymiin. Saatavilla olevien tarkkojen ja huippunopeiden monipikselisten ToF-anturien avulla kehittäjät voivat toteuttaa näissä sovelluksissa tarvittavia sofistikoituneita kolmiulotteisia (3D) mittausalgoritmeja. Kehitysaikaa hidastaa kuitenkin monipikselisen optisen mittausalijärjestelmän kompleksisuus.
Tässä artikkelissa käsitellään ToF-tekniikan perusperiaatteita. Sen jälkeen siinä esitellään Broadcomin optinen ToF-evaluointisarja, jonka avulla kehittäjät voivat tehdä nopeasti prototyyppejä tarkoista 1D- ja 3D-etäisyysmittaussovelluksista sekä toteuttaa nopeasti asiakaskohtaisia optisia ToF-mittausratkaisuja.
Optisen ToF-tekniikan perusteet
Optinen ToF-tekniikka mahdollistaa mittaukset, jotka perustuvat valon kulkuaikaan ilman läpi. Sitä käytetään monissa sovelluksissa tarvittavan tarkan etäisyyden mittaukseen. Näiden mittausten suorittamiseen käytettävät laskelmat perustuvat yleensä kahteen eri lähestymistapaan – suoraan ja epäsuoraan ToF-menetelmään. Suorassa ToF-menetelmässä, joka tunnetaan myös nimellä ”pulse ranging” (pulssietäisyysmittaus), laite mittaa ToF-anturilla tietyn valopulssin lähettämisen ja vastaanottamisen välisen ajan yhtälön 1 avulla:
Yhtälö 1
Yhtälössä:
c0 = valon nopeus tyhjiössä
∆T = lähetyksen ja vastaanoton välillä kulunut aika
Vaikka konsepti on yksinkertainen, tähän lähestymistapaan liittyy useita haasteita tarkkojen mittausten suorittamisessa. Niitä ovat esimerkiksi riittävän tehokkaiden lähettimien ja vastaanottimien tarve, signaali-kohinasuhteen parantaminen ja pulssinreunojen tarkka tunnistus.
Epäsuorissa ToF-menetelmissä käytetään puolestaan moduloitua kantoaaltoa ja mitataan lähetetyn ja vastaanotetun signaalin vaihe-ero yhtälön 2 mukaisesti:
Yhtälö 2
Yhtälössä:
c0 = valon nopeus tyhjiössä
fmod = laserin modulointitaajuus
∆φ = määritetty vaihe-ero
Epäsuora ToF-lähestymistapa vähentää lähettimen ja vastaanottimen tehovaatimuksia. Lisäksi se vähentää pulssinmuodostukseen liittyviä vaatimuksia yksinkertaistaen 3D-etäisyysmittaukseen ja liikkeentunnistukseen käytettävän ratkaisun kompleksisuutta.
Sekä suora että epäsuora menetelmä edellyttää optisen etuasteen huolellista suunnittelua sekä lähetin- ja vastaanottosignaalien tarkkaa hallintaa. Kehittäjät ovat voineet hyödyntää jo vuosien ajan integroituja optisia ToF-antureita, joissa lähetinlaitteet ja vastaanottoanturit on yhdistetty samaan pakettiin. Näiden laitteiden aiemmat sukupolvet ovat kuitenkin yleensä vaatineet kehittäjiltä kompromisseja suorituskyvyn tai käyttöominaisuuksien, kuten virrankulutuksen, kantaman, tarkkuuden ja nopeuden, välillä. Tällaiset kompromissit ovat olleet keskeisenä esteenä yhä useammille teollisille mittaussovelluksille, joiden pitää toimia keskipitkillä, jopa 10 metrin (m) etäisyyksillä.
Kehittyneemmät epäsuorat ToF-anturimoduulit, kuten Broadcomin AFBR-S50MV85G, on suunniteltu erityisesti vastaamaan kasvavaan tarpeeseen saada huippunopeita ja tarkkoja tuloksia keskipitkillä etäisyyksillä ja samalla pitää kotelokoko ja virrankulutus mahdollisimman pienenä. Broadcomin AFBR-S50MV85G-EK-evaluointisarja ja siihen liittyvä ohjelmistokehityssarja (SDK) perustuvat tähän anturiin. Ne tarjoavat monipikselisen ToF-anturin kehitysalustan, jonka avulla kehittäjät voivat toteuttaa nopeasti 3D-TOF-mittaussovelluksia.
Miten integroitu moduuli yksinkertaistaa ToF-etäisyysmittausta
Teollisuuden mittaussovelluksiin kehitetty AFBR-S50MV85G-moduuli tarjoaa täydellisen optisen ToF-mittausratkaisun yhdessä paketissa. Sen integroituihin komponentteihin kuuluvat 850 nanometrin (nm) VCSEL (Vertical Cavity Surface-Emitting Laser) -laser infrapunavalaisua varten, kuusikulmainen 32 pikselin anturimatriisi, integroidut linssit VCSEL- ja anturioptiikoita varten sekä sovelluskohtainen integroitu piiri (ASIC).
Anturimatriisiin nähden tietyllä tavalla suunnattu lähetin valaisee kohdeobjektin, jolloin jotkin anturimatriisin pikseleistä havaitsevat heijastuvan IR-signaalin. Peruskäytössä tämä mahdollistaa sen, että moduuli voi tukea tarkkaa etäisyysmittausta valkoisilta, mustilta, värillisiltä, metallisilta tai heijastavilta pinnoilta – jopa suorassa auringonvalossa – sisäänrakennettujen ympäristön valoa kompensoivien ominaisuuksien ansiosta.
Kun etäisyys objektiin pienenee, automaattinen parallaksivirheiden kompensointi mahdollistaa mittaukset käytännössä ilman alarajaa etäisyydelle. Samanaikaisesti IR-valaistuksen ja anturimatriisin yhdistelmä mahdollistaa lisätietojen saannin kohteesta, kuten sen liikkeestä, nopeudesta, kallistuskulmasta tai sivusuuntaisesta kohdistuksesta. Näin ollen moduuli voi tuottaa dataa, joita tarvitaan ohikulkevan tai lähestyvän kohdeobjektin suunnan ja nopeuden määrittämiseen (kuva 1).
Kuva 1: Kehittäjät voivat toteuttaa AFBR-S50MV85G-moduulin 8 x 4-pikselisestä anturimatriisista saadun datan avulla 3D-sovelluksia, joilla voidaan mitata objektin liikettä. (Kuvan lähde: Broadcom)
Moduulin sovelluskohtainen integroitu piiri (ASIC) organisoi VCSEL-laserin ja anturimatriisin tarkan toiminnan. Se tarjoaa kaikki VCSEL-laserin ohjaukseen, analogisen signaalin mittaamiseen anturimatriisista ja digitaalisen signaalin parannukseen tarvittavat piirit (kuva 2).
Kuva 2: AFBR-S50MV85G-moduuliin integroitu ASIC sisältää kaikki piirit, jotka tarvitaan moduulin VCSEL-valonlähteen ohjaamiseen, anturimatriisista saatujen signaalien mittaukseen ja SPI-väylän kautta siirrettävän digitaalisen datan generoimiseen. (Kuvan lähde: Broadcom)
ASIC-piirin integroidut syöttöpiirit mahdollistavat moduulin käytön yhdellä 5 voltin jännitteellä, kun taas integroitu ja tehtaalla kalibroitu sekä lämpötilakompensoitu vastus-kondensaattori (RC) -oskillaattori ja digitaalinen vaihelukittu silmukka (PLL) tuottavat kaikki tarvittavat kellosignaalit. Tämän integraatiotason ansiosta kehittäjien on helppo käyttää moduulia omissa suunnitelmissaan mikrokontrollerin (MCU) ja muutamien ulkoisten lisäkomponenttien avulla. Liitäntä mikrokontrollerin kanssa vaatii vain GPIO (General-Purpose Input/Output) -nastan moduulin datavalmiussignaalia varten sekä yhteyden moduulin digitaalisen SPI (Serial Peripheral Interface) -liitännän kautta (kuva 3).
Kuva 3: Broadcomin AFBR-S50MV85G-moduuli vaatii vain mikrokontrollerin ja muutamia lisäkomponentteja kokonaisen ToF-mittausjärjestelmän toteuttamiseen. (Kuvan lähde: Broadcom)
Tätä suoraviivaista laitteistosuunnittelua täydentää Broadcomin ToF-ajuriohjelmisto, joka tarjoaa kaikki etäisyysmittauksen toteuttamiseen tarvittavat ohjelmistotoiminnot. Moduuli huolehtii optisen datan keruusta etäisyysmittaussovelluksia varten, kun taas Broadcomin toimittama AFBR-S50 SDK sisältää ToF-ajuriohjelmiston, joka suorittaa kaikki laitteiston konfigurointi-, kalibrointi- ja mittausvaiheet. Ajuriohjelmisto lukee mittauksen aikana pikseleistä sekä etäisyys- että amplitudiarvot.
Miten etäisyysmittaussovellus voidaan kehittää nopeasti
Broadcomin AFBR-S50MV85G-EK-evaluointisarja tarjoaa yhdessä AFBR-S50 SDK -moduulin kanssa monipuolisen alustan etäisyysmittaussovellusten nopeaan prototyyppitestaukseen ja -kehitykseen. Sarjaan kuuluu AFBR-S50MV85G-moduulin sisältävä sovitinkortti, NXP:n FRDM-KL46Z-evaluointikortti (joka perustuu Arm Cortex-M0+ -mikrokontrolleriin) ja mini-USB-kaapeli, jolla evaluointikortti voidaan liittää kannettavaan tietokoneeseen tai muuhun sulautettuun järjestelmään (kuva 4).
Kuva 4: Broadcomin AFBR-S50MV85G-EK-evaluointisarja ja siihen liittyvä ohjelmisto tarjoavat monipuolisen alustan ToF-etäisyysmittaussovellusten evaluointiin ja prototyyppien kehittämiseen. (Kuvan lähde: Broadcom)
ToF-etäisyysmittauksen aloittaminen evaluointisarjalla vaatii vain muutaman vaiheen. Kun AFBR-S50 SDK on ladattu, ohjattu toiminto opastaa kehittäjän nopeasti asennusprosessin läpi. Kun kehittäjä käynnistää SDK-pakettiin sisältyvän Broadcomin AFBR-S50 Explorer -sovelluksen, ohjelmisto muodostaa yhteyden AFBR-S50-evaluointikorttiin USB-liitännän kautta, lukee NXP-kortilta mikrokontrollerin suorittaman ajuriohjelmiston välittämää mittausdataa ja tarjoaa käyttäjälle mahdollisuuden näyttää tulokset 1D- tai 3D-kaaviona (kuva 5).
Kuva 5: AFBR-S50 Explorer -ohjelmisto yksinkertaistaa ToF-mittausten evaluointia käyttäen 3D-kaavioita, joissa näytetään luettu valaistusamplitudi kullekin ToF-anturimatriisin pikselille. (Kuvan lähde: Broadcom)
Kuten kuvassa 5 näkyy, 3D-diagrammi näyttää jokaisen pikselin lukemat. Ohjelmisto tarjoaa lisäksi sellaisenkin näkymän, jossa kehittäjät näkevät vain ne pikselit, jotka kuuluvat kyseiseen mittaukseen. Tässä vaihtoehtoisessa näkymässä kaaviosta poistetaan pikselit, jotka eivät täytä määriteltyjä kriteerejä (kuva 6).
Kuva 6: Broadcomin AFBR-S50 Explorer -ohjelmiston avulla kehittäjät voivat tarkastella optimoituja 3D-mittauskaavioita, joista poistetaan sellaiset pikselit, jotka eivät täytä ennalta määriteltyjä kriteerejä. (Kuvan lähde: Broadcom)
Kehittäjät voivat tutkia mittaustarkkuutta ja suorituskykyä erilaisissa käyttöskenaarioissa, kuten eri valaistuksella, heijastuksilla ja pintatyypeillä. He voivat myös tarkastella erilaisten mittauskonfiguraatioiden vaikutusta, kuten suuremman pikselimäärän käyttämistä parannetuissa 3D-sovelluksissa tai pienempää pikselimäärää tarkempaa mittausta vaativissa 1D-sovelluksissa. Kun kehittäjät ovat evaluoineet mittausmenetelmiä prototyyppien avulla, he voivat toteuttaa nopeasti räätälöityjä ToF-tunnistussovelluksia rakentamalla ne Broadcomin AFBR-S50 SDK:n sisältämän esimerkkiohjelmiston pohjalta.
Kustomoitujen ToF-mittausohjelmistosovellusten rakentaminen
Broadcom tukee ToF-mittaussovelluksia tehokkaalla arkkitehtuurilla, joka perustuu AFBR-S50-ydinkirjastoon. Arkkitehtuuri kattaa anturilaitteistokohtaisen koodin, ohjelmointirajapinnan (API) ja laitteiston abstraktiotasot (HAL) (kuva 7).
Kuva 7: ToF-ajurin ohjelmointirajapinta mahdollistaa Broadcomin ToF-toimintaympäristössä käyttäjän sovelluskoodin pääsyn ToF-ajurin valmiiksi käännetyn ydinkirjaston kalibrointi-, mittaus- ja evaluointitoimintoihin. (Kuvan lähde: Broadcom)
Osana AFBR-S50 SDK-pakettia Broadcom tarjoaa ydinkirjaston valmiiksi käännettynä ANSI-C-kirjastotiedostona, joka sisältää kaikki AFBR-S50MV85G-laitteiston käyttämiseen tarvittavan datan ja algoritmit. Etäisyysmittausjärjestelmän mikrokontrolleriyksikössä suoritettava ydinkirjasto tarjoaa sellaisia toimintoja kuten kalibroinnin, mittauksen ja evaluoinnin, joiden avulla etäisyysmittaus voidaan suorittaa mahdollisimman pienellä prosessointikuormituksella ja virrankulutuksella. Koska ydinkirjaston toiminnot hoitavat kaikki taustalla olevat yksityiskohdat, kehittäjän näkemä perusmittaussykli on yksinkertainen (kuva 8).
Kuva 8: AFBR-S50 SDK ToF -ohjelmisto minimoi prosessorin työkuorman keskeytysten ja takaisinkutsujen avulla. (Kuvan lähde: Broadcom)
Mikrokontrolleri käynnistää jokaisen mittaussyklin (käynnistys jaksottaisella kellokeskeytyksellä tai IRQ-signaalilla) alussa mittauksen ja palaa välittömästi joutokäyntitilaan (tai jatkaa jonkin sovelluskoodin käsittelyä). Kun mittaus on valmis, AFBR-S50MV85G-moduuli generoi keskeytyksen piirien välisen GPIO-linjan välityksellä ja herättää mikrokontrollerin, joka aloittaa datan lukemisen SPI-väylältä ennen paluuta edelliseen tilaansa. Kun data on luettu (ilmoitetaan IRQ-signaalilla ”SPI done”), mikrokontrolleri suorittaa koodin kerätyn ToF-anturidatan evaluointia varten.
Jottei mittausdataa hukattaisi, ydinkirjasto estää uuden mittaussyklin aloittamisen estämällä datapuskurin käytön siihen saakka, että evaluointirutiinia kutsutaan. Kehittäjät käyttävät tästä syystä normaalisti kaksinkertaista puskuria raakadataa varten, jotta mittaus- ja evaluointitehtävät voidaan suorittaa lomitetusti.
Ydinkirjaston rutiinit piilottavat kalibroinnin, mittauksen ja evaluoinnin yksityiskohdat sovellusohjelmistojen kehittäjiltä. Kehittäjät voivat itseasiassa käyttää evaluointisarjaa ja AFBR-S50 Explorer -sovellusta valmiina prototyyppialustana, jolla mittausdata toimitetaan korkean tason ohjelmistosovelluskoodille.
AFBR-S50 SDK -paketti sisältää valmiiksi käännetyt ydinkirjastomoduulit sekä useita ohjelmistoesimerkkejä asiakaskohtaisten sovellusohjelmistojen kehittäjiä varten. Näin ollen kehittäjät voivat luoda nopeasti omia ToF-mittaussovelluksia rakentamalla ne ohjelmistokehityssarjan tarjoamien esimerkkisovellusten pohjalta. Kehittäjät voivat käyttää AFBR-S50MV85G-laitteistoa ja AFBR-S50-ydinkirjaston toimintoja sovelluskohtaisessa ohjelmistokoodissa. He voivat tällöin kutsua AFBR-S50 SDK -ohjelmointirajapinnan funktioita sekä määritellä omia takaiskutsufunktioita ydinkirjaston erilaisia takaisinkutsuja varten (ks. jälleen kuva 7).
Broadcom tarjoaa kattavan ohjelmointirajapintaa ja esimerkkiohjelmistoja koskevan dokumentaation, jonka avulla kehittäjät voivat sovittaa ohjelmistoesimerkit nopeasti omiin tarpeisiinsa tai aloittaa nollasta. Perusmittaus- ja evaluointisykli on tosiasiassa hyvin yksinkertainen: asiakaskohtaiset funktiot ja API-kutsut yksinkertaisesti sovitetaan mittaussykliin (ks. jälleen kuva 8). Aiemmin käsitelty mittaussykli esimerkiksi sisältää kolme vaihetta: ToF-laitteen integroinnin, datan lukemisen ja evaluoinnin. Näiden kolmen vaiheen käynnistämiseen tarvittavat API-ydinkirjastokutsut ovat seuraavat:
- Argus_TriggerMeasurement(), joka käynnistää yksittäisen mittauskehyksen asynkronisesti
- Argus_GetStatus(), joka palauttaa arvon STATUS_OK, kun mittaus on suoritettu onnistuneesti
- Argus_EvaluateData(), joka hankkii raakamittausdatasta hyödyllistä informaatiota.
Broadcom demonstroi tätä perusmittaussilmukkaa ohjelmistokehityssarjaan sisältyvässä esimerkkisovelluksessa, joka näytetään listauksessa 1.
Kopioi
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);
}
}
}
Listaus 1: Broadcom AFBR-S50 SDK:n esimerkkikoodi näyttää perussuunnittelumallin AFBR-S50MV85G-moduulista saatavan ToF-datan hankintaan ja evaluointiin. (Koodin lähde: Broadcom)
Kuten listaus osoittaa, aiemmin mainitut kolme API-funktiokutsua muodostavat selkärangan mittaussyklin suorittamiselle. Tutustumalla API-dokumentaatioon ja muihin ohjelmistokehityssarjan esimerkkisovelluksiin kehittäjät voivat toteuttaa nopeasti kompleksisia 3D-sovelluksia. Näin he voivat hyödyntää moduulin kykyä hankkia dataa, jota tarvitaan sellaisten edistyneiden ominaisuuksien kuten kohdeobjektin nopeuden, suunnan ja kallistuskulman määrittämiseen.
Yhteenveto
Optiset ToF-anturilaitteet ovat mahdollistaneet useita sovelluksia eri aloilla, joilla edellytetään tarkkaa etäisyysmittausta. Mittausalueeseen, tarkkuuteen tai luotettavuuteen liittyvät rajoitukset ovat kuitenkin estäneet niiden laajentamista sellaisiin sovelluksiin kuten teollisuuden mittausjärjestelmät, jotka edellyttävät vähävirtaisia ja tarkkoja tuloksia pidemmillä etäisyyksillä tarjoavia laitteita. Broadcomin integroitu optinen ToF-alijärjestelmä täyttää nämä uuden sukupolven mittaussovelluksiin liittyvät uudet vaatimukset. Kehittäjät voivat toteuttaa laitteeseen perustuvan evaluointisarjan avulla nopeasti järjestelmiä tarkkuusmittauksiin 1D-etäisyyssovelluksissa ja kompleksiseen objektin liikkeen seurantaan 3D-sovelluksissa.
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.


