Príručka k toolboxu AWR2944
Za odbornú a jazykovú stránku zodpovedajú autori. Rukopis neprešiel jazykovou úpravou.
Táto práca bola realizovaná s podporou grantu Kultúrnej a edukačnej grantovej agentúry MŠVVaM SR (projekt KEGA č. 073TUKE-4/2024).
Autori použili pri príprave publikácie asistenta s umelou inteligenciou (Claude, Anthropic) na jazykovú a redakčnú podporu a na sadzbu. Odborný obsah, merania a závery sú dielom autorov.
© Mária Gamcová, Ján Gamec, 2026
Vývojový modul AWR2944EVM od spoločnosti Texas Instruments nemá v prostredí MATLAB priamu podporu, hoci ide o senzor generácie, ktorá sa v automobilovom priemysle používa dnes. Prístup k nespracovaným dátam analógovo-digitálneho prevodníka preto vyžaduje vlastnú akvizičnú cestu.
Publikácia opisuje toolbox awr2944_toolbox, vytvorený na Katedre počítačových sietí Fakulty
elektrotechniky a informatiky Technickej univerzity v Košiciach pre meraciu zostavu zloženú
z vývojového modulu AWR2944EVM a záznamového modulu DCA1000EVM. Vysvetľuje objektový model triedy
awr2944_dca, štruktúru konfiguračných profilov, akvizičný cyklus vrátane priebežného aj dávkového
režimu, formát zaznamenaných dát a nástroje na ich spracovanie a zobrazenie. Text je vedený tak, aby
čitateľ nielen zopakoval postup, ale rozumel, čo jednotlivé voľby znamenajú pre výsledok merania — najmä vzťah
medzi nastavením profilu a dosiahnuteľným rozlíšením vo vzdialenosti, rýchlosti a uhle.
Publikácia je určená študentom prvého až tretieho stupňa vysokoškolského štúdia v predmete Radary v automobiloch a v príbuzných predmetoch so zameraním na vysokofrekvenčnú a radarovú techniku. Používa sa pri laboratórnych cvičeniach, semestrálnych projektoch a záverečných prácach realizovaných na experimentálnych pracoviskách katedry. Nadväzuje na ňu samostatný titul venovaný metodike merania elevácie a zadaniam na cvičenia.
FMCW radar, automobilový radar, AWR2944, DCA1000, MATLAB, nespracované dáta ADC, akvizícia dát, spracovanie radarových signálov, laboratórne cvičenia
Číselné hodnoty uvádzané v tejto publikácii — rozlíšenie vo vzdialenosti a rýchlosti, maximálny
jednoznačný dosah, veľkosť dátového poľa a objem záznamu — platia pre východiskový profil triedy
awr2944_dca, ktorého úplné nastavenie je uvedené v kapitole 5.
Pri inom profile sa tieto hodnoty menia; vzťahy, z ktorých sa počítajú, sú uvedené vždy spolu s výsledkom,
takže ich čitateľ vie prepočítať pre vlastné nastavenie.
Spojenie profil triedy sa v texte používa ako zaužívaná skratka pre celý východiskový konfiguračný
súbor .cfg — teda nielen pre príkaz profileCfg, ktorý určuje frekvencie, strmosť
rozmietania a počet vzoriek, ale aj pre nastavenie chirpov, aktívnych kanálov a rámca.
Pri porovnávaní s inými materiálmi k tej istej aparatúre treba mať na pamäti, že každý z nich vychádza z profilu, ktorý je pre jeho účel vhodný, a číselné údaje sa preto legitímne líšia.
MATLAB toolbox na zber a zobrazenie nespracovaných ADC dát z radaru TI AWR2944 EVM + DCA1000EVM bez potreby programu mmWave Studio.
Text opisuje toolbox awr2944_toolbox, verzia triedy 1.7 · jazyk rozhrania: slovenčina
Radar a oko si nie sú také cudzie, ako sa na prvý pohľad zdá. Oko vidí len preto, že sa svetlo odráža od predmetov; a to, čo vnímame ako farbu, nie je nič iné než vlnová dĺžka — teda frekvencia — toho odrazeného svetla. Radar robí v podstate to isté, len o niekoľko rádov nižšie vo frekvencii: do tmy vyšle vlastný „svit“ — krátky spev, ktorého tón plynulo stúpa — a počúva ozvenu. Z jej oneskorenia, frekvencie a fázy prečíta, ako ďaleko predmet je, ako rýchlo sa pohybuje a v ktorom smere sa nachádza.
Podobnosť ide ešte ďalej. Oko sústredí obraz na sietnicu — mriežku citlivých buniek; radar si svojou MIMO virtualizáciou anténnej sústavy stavia akúsi syntetickú sietnicu, ktorá scénu vzorkuje z mnohých bodov naraz. A tak ako predmety nerozoznáva oko, ale mozog, aj pri radare vzniká význam až v spracovaní — vo Fourierových transformáciách, v detekcii, v učení. Celá tá reč sa však začína úplne dole: pri nespracovaných vzorkách analógovo-digitálneho prevodníka, pri číslach, ktoré ešte nikto neupravil — pri tom, čo dopadlo na „sietnicu“ skôr, než to „mozog“ stihol pochopiť.
K týmto číslam sa zvyčajne dostaneme len cez mmWave Studio — ťažkopádny nástroj, ktorý navyše beží na starom 32-bitovom MATLAB Runtime. Medzi pozorovateľom a nespracovanými dátami tak stojí zbytočná stena.
Tento toolbox tú stenu odstraňuje. Jediným príkazom v MATLABe nakonfiguruje radar, prikáže doske DCA1000 zachytávať a vráti nespracované vzorky priamo do rúk — pripravené na spracovanie alebo na otvorenie v známom prehliadači. Cieľom nie je nahradiť veľké nástroje, ale dať do rúk to najcennejšie: priamy, nezahmlený prístup k tomu, čo radar naozaj počuje.
awr2944_toolbox je MATLAB toolbox, ktorý nakonfiguruje radar TI AWR2944 EVM aj kartu DCA1000EVM a
zachytí z nich nespracované 16-bitové reálne ADC vzorky — celé z MATLABu, bez potreby programu mmWave Studio, ktorý je poskytovaný výrobcom Texas Instruments. Jeho jadrom je
trieda awr2944_dca — funkčný ekvivalent dca1000, už existujúceho objektu (triedy) od
MathWorks — prispôsobená doske
AWR2944: tú totiž dca1000 nepodporuje (zvláda len rady xWR16xx/18xx/68xx) a navyše vracia dáta v komplexnom tvare (IQ-zložky), kým AWR2944 posiela vzorky v reálnom tvare. Štandardná cesta k týmto dátam, mmWave Studio (pre AWR2944 vo verzii 3.1.4.4), je
ťažkopádna a vyžaduje starý 32-bitový MATLAB Runtime; tento toolbox ju pri týchto meraniach nahrádza.
Prácu s radarom rozdeľuje do troch funkčných rovín — konfigurácia, záznam a práca s výstupom:
.cfg profilu. Profil určuje, čo a ako sa meria (počet vzoriek,
antén, chirpov, rámcov, časovanie). Vyberie sa, ručne upraví alebo zostaví vo vizuálnom editore
CFG_EDITOR_2944, a toolbox ho po sériovej linke pošle do radaru.capture
(zmeraj — vráť — ulož), alebo nepretržitým zobrazením v reálnom čase (live), z ktorého sa číta rámec po rámci metódami
startLive / readFrame / stopLive.cube), ukladajú sa do dvojice súborov .bin + adc_data_LogFile.txt pre prehliadač BIN2MAT_2944, alebo sa sledujú
v reálnom čase (live): nespracovaný chirp, range profil (RP), range-Doppler mapa (RD), range-angle mapa (RA)
alebo oblak bodov detekcií (Point Cloud — PC) — detegované ciele vynesené ako body v súradniciach scény,
každý s polohou, rýchlosťou a prípadne výškou.BIN2MAT_2944, show_pc3d) aj v reálnom čase (live_display). Princíp,
kalibráciu a limity rozoberá príklad 8.10 (praktický postup) a Radary v automobiloch: metodika merania a zadania (kapitoly 8 až 13).Pod týmito rovinami beží prenosová vrstva troch fyzických liniek: konfigurácia radaru ide po USB cez prevodník XDS110 (sériová linka), a riadenie aj samotný dátový tok karty DCA1000 po Ethernete (UDP). Ako presne do seba zapadajú, je v kapitole 9.
Vytvorí sa objekt a nastavia sa jeho vlastnosti (properties); jedno meranie vykoná volanie capture (vráti dátové pole
a voliteľne uloží súbory), na sledovanie v reálnom čase slúžia startLive / readFrame /
stopLive, a na konci release uvoľní porty. Najjednoduchšie meranie je
v kapitole 4 (Začíname), scenáre úloh v kapitole 8 (Príklady použitia).
Na rozdiel od dca1000 (samostatný objekt od MathWorks) je awr2944_toolbox
toolbox viacerých súčastí, ktoré na seba nadväzujú:
awr2944_dca — hlavná trieda (class); ňou sa konfiguruje, meria (dávkovo aj v reálnom čase) a ukladá.live_display — zobrazenie v reálnom čase v jednom okne: nespracovaný chirp, RP, RD, RA
alebo PC (zhora / čelne s výškou / 3D).BIN2MAT_2944 — offline prehliadač uložených meraní (.bin z tohto toolboxu
alebo z mmWave Studia): RD, RA a PC vrátane výšky.plot_chirp — rýchle vykreslenie jedného chirpu na kontrolu, že dáta sú nepoškodené.show_pc3d — rýchle 3D okno PC s uhlovým priestorom azimut × elevácia.micro_doppler — micro-Doppler spektrogram (rýchlosť × čas) z nespracovaných dát,
s porovnávacím režimom.CFG_EDITOR_2944 — vizuálny editor .cfg profilov s okamžitým prepočtom rozmerov,
rozlíšenia a maximálneho dosahu.radar_cfg — spoločný modul: jedno miesto pravdy pre parametre profilu a osi všetkých nástrojov.DAT2MAT_2944 — prehliadač zaznamenaných spracovaných (TLV) dát z Demo Visualizera (cesta spracovaných dát).LIVE_DAT2MAT_2944 — náhrada Demo Visualizera v MATLABe: zobrazenie spracovaných dát
v reálnom čase (cesta spracovaných dát).DAT2MAT_2944 (zo záznamu) a LIVE_DAT2MAT_2944 (v reálnom čase, náhrada Demo
Visualizera-nástroja poskytovaného výrobcom Texas Instruments pre zobrazovanie výstupov z radaru). Cesta nespracovaných dát — spracovanie v radare sa obchádza a cez kartu DCA1000 sa zbierajú
nespracované ADC vzorky (trieda awr2944_dca a nadväzujúce nástroje) — jadro tohto dokumentu. Obe cesty vyžadujú, aby procesor radaru mal k dispozícii nahratý (naflashovaný) softvér mmw demo; prácu s Demo Visualizerom rozoberá Radary v automobiloch: metodika merania a zadania, kapitola 6.K nim patrí niekoľko pomocných funkcií (komunikácia po UART, logovanie). Podrobná referencia každej súčasti je v kapitolách 6 a 7.
BIN2MAT_2944. Žiadne mmWave Studio, žiadne ručné prepínanie nástrojov.Táto kapitola vysvetľuje, čo presne radar meria a prečo z toho vieme vypočítať vzdialenosť, rýchlosť aj uhol — ešte predtým, než čokoľvek zapojíte. Ak toto pochopíte teraz, kapitoly o zapojení a používaní nástrojov budú dávať zmysel ako aplikácia týchto princípov, nie ako súbor krokov, ktoré treba proste odklikať.
Range-FFT aj Doppler-FFT vychádzajú z tej istej myšlienky: lineárne rastúca fáza alebo frekvencia medzi po sebe idúcimi vzorkami sa dá pomocou FFT previesť na frekvenciu, a tú ďalej na fyzikálnu veličinu. Rozdiel je len v tom, na akej osi FFT počíta — range-FFT na osi vzoriek v jednom chirpe, Doppler-FFT na osi chirpov v rámci (ten istý princíp sa v kapitole 2.2 uplatní ešte raz, na priestorovej osi antén, pri odhade uhla).
Range-FFT. Výstup range-FFT — priebeh výkonu signálu v závislosti od vzdialenosti — sa označuje ako range profil (po slovensky presnejšie profil vzdialenosti, skratka RP). Počas jedného chirpu frekvencia vyslaného signálu lineárne rastie so sklonom S:
Odraz od cieľa vo vzdialenosti R sa vráti s oneskorením (cesta tam aj späť):
takže v okamihu t prijíma anténa frekvenciu f(t-\tau):
o trochu nižšiu, než práve vysiela. Zmiešavač (kapitola 1) tieto dva signály s dvomi frekvenciami vzájomne vynásobí, čím vznikne signál s rozdielovou záznejovou frekvenciou:
Záznejová frekvencia je počas celého chirpu konštantná a priamo úmerná vzdialenosti. Fourierovou transformáciou (algoritmus FFT) sa vzorky jedného chirpu v čase pretransformujú do frekvenčnej oblasti, v ktorej sa hodnoty frekvenčnej osi dajú priamo nahradiť hodnotami vzdialenosti:
Presne to je vzorec, z ktorého vychádza os dosahu aj jej rozlíšenie z kapitoly 2.3.
Doppler-FFT. Ak sa rýchlosťou v pohybujúci sa cieľ medzi dvoma po sebe nasledujúcimi chirpmi (odstup T) posunie o nejakú vzdialenosť v\,.\,T (radiálna rýchlosť v), jeho vzdialenosť sa zmení a s ňou aj fáza odrazeného signálu. Dráha (vzdialenosť) tam aj späť sa zmení o:
čo v jednotkách fázy (časované vlnovou dĺžkou \lambda) znamená fázový rozdiel medzi chirpmi:
Celý rad numLoops chirpov tak vytvorí postupnosť s lineárne rastúcou fázou:
a FFT cez tento rad (pre pevný — rovnakú vzdialenostnú zložku — prvok profilu vzdialenosti) z nej extrahuje \Delta\varphi. Pozn.: presne ten istý princíp sa v kapitole 2.2 uplatní pri uhlovej FFT, ale naprieč anténami. Keďže \Delta\varphi podľa vzorca vyššie jednoznačne súvisí s rýchlosťou, z polohy FFT vrcholu sa rýchlosť priamo dopočíta — to je presne mechanizmus, z ktorého vychádza rozlíšenie a maximálna jednoznačná rýchlosť v kapitole 2.3.
radar_cfg (kapitola 7.1.b) aj BIN2MAT_2944.Kapitola 2.1 ukázala, že range-FFT aj Doppler-FFT pracujú s časovou osou (vzorky v chirpe, chirpy v rámci) a menia frekvenciu na vzdialenosť, resp. rýchlosť. Odhad uhla robí presne to isté s priestorovou osou: namiesto vzoriek v čase sa spracujú vzorky naprieč anténami v jednom okamihu (jedna range-Dopplerova zložka, všetky virtuálne prvky).
Cieľ pod uhlom \theta voči kolmici anténnej sústavy prichádza ku každému prvku po mierne inej dráhe, teda s inou fázou. Pri prvkoch s rovnomerným rozostupom d platí, že fázový rozdiel medzi susednými prvkami je:
Signály N prvkov tak tvoria postupnosť s lineárne rastúcou fázou (narastajúcou so vzdialenosťou od prvého prvku):
presne ako pri Doppler-FFT (kapitola 2.1) je frekvencia (v čase) daná lineárne rastúcou fázou medzi chirpmi. Uhlová FFT preto z tejto priestorovej frekvencie extrahuje \Delta\varphi rovnako, ako Doppler-FFT extrahuje časovú frekvenciu z postupnosti chirpov — a keďže \Delta\varphi jednoznačne súvisí so \sin\theta podľa vzorca vyššie, z frekvenčnej zložky FFT sa priamo dopočíta uhol príchodu.
Fyzikálne to zodpovedá tomu, čo sa v anglickej literatúre volá beamforming: signály z jednotlivých prvkov sa sčítajú s takými fázovými posunmi, aby sa pre testovaný smer \theta_{\text{test}} navzájom zosilnili (konštruktívna interferencia), zatiaľ čo z iných smerov sa čiastočne vyrušia — sústava tak „počúva“ prednostne do zvoleného smeru. Testovanie všetkých smerov naraz je matematicky ekvivalentné FFT cez priestorovú os:
kde x_n je (komplexná) hodnota range-FFT n-tého virtuálneho prvku v danej range-Dopplerovej zložke. Uhol \theta, pri ktorom |A(\theta)| dosiahne maximum, je odhadovaný uhol príchodu; šírka tohto maxima okolo
vrcholu je práve uhlové rozlíšenie z kapitoly 2.3. Presne túto sumu (efektívne počítanú cez FFT namiesto
priameho vyčíslenia pre každé \theta_{\text{test}} zvlášť) počítajú live_display a BIN2MAT_2944
pri zobrazení range-angle mapy (kapitola 9.7).
Hodnoty v profile priamo určujú, čo radar „vidí“. Najdôležitejšie vzťahy sú v tabuľke 2.1:
Tabuľka 2.1. Vplyv parametrov profilu .cfg na vlastnosti radaru
| Parameter (.cfg) | Ovplyvňuje | Ako |
|---|---|---|
| freqSlopeConst (sklon) | rozlíšenie vzdialenosti, max dosah | strmší sklon → väčšia šírka pásma → jemnejšie rozlíšenie; zároveň kratší max dosah |
| numAdcSamples | rozlíšenie vzdialenosti, počet range bodov | viac vzoriek → dlhšie ADC okno → väčšia šírka pásma → jemnejšie rozlíšenie a hustejšia os dosahu |
| digOutSampleRate (fs) | max dosah, šírka pásma | vyššie fs → väčší max dosah aj väčšia šírka pásma |
| startFreq (f₀) | vlnová dĺžka λ | λ = c/f₀; vyššia f₀ → kratšia λ → o niečo jemnejšie uhlové aj rýchlostné rozlíšenie |
| idleTime + rampEndTime | PRF, max rýchlosť | kratší chirp → vyššia PRF → väčšia max. jednoznačná rýchlosť |
| numLoops | rozlíšenie rýchlosti | viac slučiek (chirpov na TX) → jemnejšie rozlíšenie rýchlosti |
| channelCfg (NumTX, NumRX) | uhol (azimut / elevácia), max rýchlosť | NumTX·NumRX tvorí virtuálnu anténnu sústavu; jemnosť uhla závisí od jej geometrie. Na AWR2944 nie sú TX v jednej rovine — časť rozširuje azimut, jeden je posunutý do elevácie, takže ďalší TX môže pridať eleváciu (druhý uhlový rozmer), nie nutne jemnejší azimut. Viac TX (TDM) navyše znižuje max rýchlosť. |
| framePeriodicity | snímková frekvencia | perióda rámca určuje, koľko rámcov za sekundu |
| numFrames | dĺžka záznamu | počet rámcov merania (nie vlastnosť radaru) |
Kľúčové vzťahy (c = rýchlosť svetla, B = využitá šírka pásma) prevádzajú parametre profilu na fyzikálne veličiny, ktoré určujú, čo presne radar dokáže rozlíšiť. Nasledujú rozpísané postupne, s fyzikálnym zdôvodnením, nie len ako holé vzorce.
Rozlíšenie vzdialenosti hovorí, aký najmenší rozdiel vzdialeností ešte radar dokáže rozoznať ako dva samostatné ciele namiesto jedného:
kde B je skutočne využitá šírka frekvenčného pásma počas vzorkovaného úseku chirpu:
kde S je strmosť alebo sklon nárastu frekvencie, \text{numAdcSamples} je počet vzoriek odobratých z jedného chirpu a f_s je vzorkovacia frekvencia.
Čím širšie pásmo radar prevzorkuje (strmší sklon alebo dlhší ADC úsek), tým jemnejšie je rozlíšenie — je to priamy dôsledok toho, ako Fourierova transformácia mení šírku spektra na jemnosť výsledných frekvenčných zložiek.
Maximálny dosah rastie so vzorkovacou frekvenciou f_s a klesá so sklonom — rýchlejšie vzorkovanie zachytí vyššie záznejové frekvencie, teda vzdialenejšie ciele, kým strmší sklon posunie tú istú vzdialenosť na vyššiu frekvenciu skôr. Keďže AWR2944 vzorkuje reálne (nie komplexné IQ), využiteľná je len polovica záznejového pásma — druhá polovica nesie tú istú informáciu zrkadlovo. Os dosahu na grafe preto siaha približne po:
Vlnová dĺžka — \lambda je základnou jednotkou pre všetko, čo súvisí s fázou (uhol, elevácia) — vyššia nosná frekvencia znamená kratšiu vlnovú dĺžku:
kde \text{startFreq} je počiatočná frekvencia chirpu (nosná frekvencia na začiatku frekvenčného nábehu, nie začiatku vysielania — pri FMCW sa vysiela nepretržite).
Perióda jedného chirpu je:
kde \text{idleTime} je čas pokoja medzi chirpmi a \text{rampEndTime} je dĺžka samotného frekvenčného nábehu (chirpu). Jej prevrátená hodnota, PRF (Pulse Repetition Frequency, frekvencia opakovania rozmietania):
určuje, ako často sa „vzorkuje“ rýchlosť.
Pri TDM sa každý vysielač vráti na rad až po NumTX chirpoch, takže z pohľadu jedného TX je
efektívna perióda vzorkovania NumTX-krát dlhšia.
Z tejto efektívnej periódy plynie maximálna jednoznačná rýchlosť:
kde \text{NumTX} je počet vysielacích antén (TX) použitých v TDM cykle — nad touto hranicou by sa rýchlosť cieľa „pretočila“ a javila by sa ako opačná alebo nesprávna (rovnaký jav ako pri elevácii, kapitola 8.4 v metodike).
Rozlíšenie rýchlosti:
kde \text{numLoops} je počet chirpov jedného TX v rámci; hodnota hovorí, aký najmenší rozdiel rýchlostí
ešte radar rozlíši — viac slučiek (numLoops) predĺži celkový čas pozorovania cieľa, a tak,
presne ako pri rozlíšení vzdialenosti, dlhšie pozorovanie znamená jemnejšie rozlíšenie.
Uhlové rozlíšenie:
kde d je rozostup medzi susednými virtuálnymi prvkami (zavedený v kapitole 2.2) a N je počet virtuálnych prvkov v danej rovine — azimutovej alebo elevačnej — nie celkový súčin NumTX·NumRX. Pri bežnom rozostupe d \approx \lambda/2 vychádza rozlíšenie zhruba na 2/N radiánov. Na AWR2944 sú tri vysielače
v azimute (TX0, TX2, TX3) a jeden (TX1) v elevácii, takže to, ktoré TX sú aktívne, priamo
rozhoduje, koľko prvkov padne do každej roviny: štvorvysielačový profil (všetky TX) dáva tri azimutové plus
jeden elevačný, teda rad 12 azimutových virtuálnych prvkov a nad ním rad 4 elevačných; predvolený
trojvysielačový profil DCA_RX1111_TX1110_TDM (TX0, TX1, TX2) dáva dva azimutové plus jeden
elevačný — rad 8 a nad ním rad 4. Plne azimutový rad s 12 prvkami by vznikol až maskou
TX0+TX2+TX3, teda bez elevačného TX1.
Pozn.: vzťahy pre rýchlosť platia pre TDM-MIMO (každý TX sa vystrieda raz za NumTX
chirpov) — viac TX rozširuje virtuálne pole (azimut a/alebo elevácia), ale úmerne znižuje max. rýchlosť (základný
kompromis TDM).
.cfg masky aj Obr. 2.1 používajú 0-based
číslovanie (TX0–TX3, RX0–RX3), kým TI user guide (AWR2944EVM) čísluje od jednotky — 1-based (TX1–TX4).
Elevačný vysielač, posunutý o 0.8λ nahor (a o λ do strany), je teda TX1 (maska 2) —
v dokumentácii TI označený ako „TX2“; azimutové sú TX0, TX2, TX3 (u TI TX1, TX3, TX4). Prijímače RX0–RX3 majú
rozostup λ/2. Preto napr. DCA_RX1111_TX1110_TDM
(masky 1, 4, 2 = TX0, TX2, TX1) má dva azimutové a jeden elevačný vysielač. Geometriu tohto usporiadania
(2D MIMO pole so súčasnou azimutovou aj elevačnou schopnosťou) znázorňuje aj obrázok 6 v MIMO Radar (Texas Instruments, SWRA554A).
.cfg aj s týmto toolboxom; TI vo svojej dokumentácii číslujú od jednotky (TX1–TX4), pozri poznámku vyššie.Skôr než sa dá čokoľvek zmerať, treba mať pripravené prostredie — MATLAB so správnymi toolboxmi a toolbox samotný niekde na ceste (path) MATLABu. Táto kapitola je krátka a čisto praktická; hardvér (radar, DCA1000, zapojenie) rieši až nasledujúca kapitola 4.
Na strane softvéru stačí MATLAB s podporou novších objektov pre sériový port a sieťovú komunikáciu (tabuľka 3.1):
Tabuľka 3.1. Softvérové a hardvérové predpoklady
| Prvok | Poznámka |
|---|---|
| MATLAB | Verzia s objektmi serialport a udpport (R2020b alebo novší). Staršie verzie so
zastaranými serial/udp toolbox nepodporuje. |
| Instrument Control Toolbox | Potrebný pre udpport (komunikácia s kartou DCA1000 po sieti).
serialport je už v základnom MATLABe. |
| Signal Processing Toolbox | Potrebný pre BIN2MAT_2944, DAT2MAT_2944 a LIVE_DAT2MAT_2944
(funkcia hann pri váhovaní pred FFT). Ostatné nástroje (live_display, plot_chirp,
radar_cfg, micro_doppler) majú vlastnú implementáciu okna a tento toolbox nepotrebujú. |
| Statistics and Machine Learning Toolbox | Potrebný pre DAT2MAT_2944 a LIVE_DAT2MAT_2944
(funkcia prctile pri škálovaní zobrazenia). |
| Operačný systém | Vyvíjané a overené na Windows; na macOS/Linux beží s malými obmedzeniami (pozri 10.2). |
| Hardvér a zapojenie | AWR2944 EVM + DCA1000, tri linky a statická IP — všetko opísané v kapitole 4 (4.1–4.3). |
ver — vypíše zoznam nainštalovaných produktov; treba v ňom hľadať Instrument Control Toolbox,
Signal Processing Toolbox a Statistics and Machine Learning Toolbox.license('test','Instr_Control_Toolbox'), license('test','Signal_Toolbox'),
license('test','Statistics_Toolbox') — každá vráti 1, ak je licencia dostupná, inak 0.which udpport -all — ukáže, z ktorého toolboxu funkcia udpport pochádza; cesta obsahujúca
\toolbox\instrument\ potvrdzuje Instrument Control Toolbox.Samotný kód nevyžaduje inštalátor ani kompiláciu — je to sada .m/.p súborov a niekoľkých
.cfg profilov, ktoré sa spustia priamo v MATLABe. Celý distribuovaný balík okrem kódu a profilov
obsahuje aj sprievodnú dokumentáciu, obrázky a ukážkové dáta — zoznam nižšie sa týka len samotného kódu.
Rozširuje sa jednoducho: priečinok s kódom sa skopíruje a pridá do cesty (path) MATLABu.
Čo priečinok obsahuje. Hlavnú triedu awr2944_dca.m, prenosovú a konfiguračnú vrstvu
(dca_connect.m, dca_capture.m, awr_sensor_config.m, awr_send_cmd.m,
awr_read_lines.m, awr_log.m), spoločný modul osí radar_cfg.m a jeho pomocnú
funkciu elev_calib_load.m (voliteľné prepísanie elevačnej kalibrácie externým súborom, pozri
Radary v automobiloch: metodika merania a zadania, kapitola 12), zobrazovacie a pomocné
nástroje (live_display.m, plot_chirp.m, micro_doppler.m, show_pc3d.m,
CFG_EDITOR_2944.m), offline prehliadače záznamu (BIN2MAT_2944.m,
DAT2MAT_2944.m, LIVE_DAT2MAT_2944.m) a niekoľko .cfg profilov (predvolený
DCA_RX1111_TX1110_TDM.cfg a alternatívne profily pre iné TX masky a režimy). Čo ktorý súbor
robí, je v kapitolách 6, 7 a 9. Všetky súbory sú v priečinku matlab\ balíka
toolboxu a sú dostupné v zdrojovej podobe.
DCA_RX1111_TX1110_TDM.cfg v tom istom priečinku ako súbor triedy awr2944_dca.m
(zistí to cez mfilename). Keď sa tento priečinok presúva, treba premiestniť profil spolu s ním — inak sa predvolený
profil nenájde; vlastný profil sa však vždy dá zadať cez vlastnosť ConfigFile (kapitola 6).Inštalácia v troch krokoch. Priečinok sa skopíruje na cieľový stroj; v MATLABe sa pridá do cesty
(addpath + savepath, alebo Set Path); a nastaví sa statická IP sieťovej karty na
192.168.33.30 (postup je v 4.2). Tým je toolbox pripravený na použitie.
Ukážkové dáta bez radaru. Priečinok sample_data/ (vedľa matlab/, v koreni balíka)
obsahuje štyri sady nameraných dát na vyskúšanie offline nástrojov bez pripojeného radaru:
capture_raw (záznam z tohto toolboxu — otvára BIN2MAT_2944), capture_raw_micro
(záznam pohybu — otvára micro_doppler), mmWS_raw
(nespracovaný záznam z mmWave Studia — tiež BIN2MAT_2944) a DV_tlv (spracovaný TLV
export z Demo Visualizera — otvára DAT2MAT_2944). Podrobný popis každej sady je v jej
vlastnom README.md.
Táto kapitola je o tom, čo treba pripraviť skôr, než sa toolbox prvýkrát spustí: aký firmvér musí mať radar, ako sa dosky fyzicky prepoja a na ktoré konektory, a v akom režime radar pracuje. Na konci je prvé jednoduché meranie.
Pred prvým meraním treba pripraviť nasledovné (tabuľka 4.1):
Tabuľka 4.1. Čo treba pripraviť pred prvým meraním
| Prvok | Hodnota / poznámka |
|---|---|
| Radarová doska | AWR2944 EVM (xWR2944EVM, REV. D) s naflashovaným mmw demo |
| Capture doska | DCA1000EVM |
| PC | Windows + MATLAB, sieťová karta na statickej IP 192.168.33.30 |
| Káble a napájanie | USB (AWR2944 ↔ PC), Ethernet RJ45 (DCA1000 ↔ PC), napájacie zdroje oboch dosiek |
| Spoj dosiek | 60-pinový HD (LVDS) konektor medzi AWR2944 a DCA1000 |
Tri linky z prehľadu (kapitola 1) majú na doskách konkrétne konektory. Označenia (J-čísla) sú podľa potlače dosiek AWR2944EVM a DCA1000EVM (obr. 4.1):
Nespracované dáta — LVDS medzi doskami. Radar posiela ADC vzorky cez vysokorýchlostný LVDS spoj. Na
AWR2944EVM je to 60-pinový konektor J7 (v literatúre sa označuje aj ako 60-pin Samtec
HD konektor), na DCA1000EVM 60-pinový HD konektor J3. Tieto dva konektory sa spoja priamo —
bez nich nepôjdu žiadne dáta.
Dáta do PC — Ethernet. DCA1000 posiela zachytené vzorky po Ethernete cez RJ45 konektor
J6 (Mag-jack) do sieťovej karty PC. PC má statickú IP 192.168.33.30, FPGA na DCA1000
má 192.168.33.180; konfiguračný kanál ide na UDP porte 4096, dátový na 4098. (AWR2944EVM má aj vlastný
Ethernet jack — ten sa na zber dát nepoužíva, pripája sa do DCA1000.)
Konfigurácia radaru — USB. Príkazy z .cfg profilu idú do radaru po sériovej linke cez
prevodník XDS110, vyvedený na AWR2944EVM na USB konektor J8 (na potlači XDS_USB).
V systéme z neho vznikne
Application/User UART COM port (číslo sa líši stroj od stroja; toolbox sa naň pri štarte spýta). (AWR2944EVM
má aj druhý mikro-USB konektor J10 (na potlači FTDI_USB) — relevantný len pri
práci s mmWave Studiom; tento toolbox ho nepoužíva.)
J10), kým tento toolbox používa XDS110 (J8) — konektor na konfiguráciu radaru sa teda líši.Napájanie. AWR2944EVM napája 12 V cez napájací konektor J12; DCA1000EVM
beží na 5 V cez napájací konektor J2, pričom zdroj napájania volí prepínač
SW3.
Prehľad všetkých liniek a konektorov zhŕňa tabuľka 4.2:
Tabuľka 4.2. Prehľad liniek a konektorov zostavy
| Linka | AWR2944EVM | DCA1000EVM | Kam |
|---|---|---|---|
| Nespracované dáta (LVDS) | J7 — 60-pin Samtec | J3 — 60-pin HD | doska ↔ doska |
| Dáta do PC (Ethernet) | — | J6 — RJ45 | → NIC PC (192.168.33.30) |
| Konfigurácia (USB / UART) | J8 — XDS_USB (XDS110) | — | → PC (App/User UART COM) |
| Napájanie | J12 — 12 V | J2 — 5 V (voľba SW3) | zdroj |
Fotografia je na obrázku 4.2.
J3 (LVDS), dole strana s konektorom J6 (RJ45, Ethernet), slotom pre kartu SD
a napájacím konektorom J2 (DC Power Jack). Voľbu napájania určuje prepínač SW3,
režim DIP prepínače SW1/SW2 (pozri 4.2.1). Ostatné označené prvky (SD karta,
FPGA JTAG, diódy LED, program switch, FPGA konfigurácia) toolbox nepoužíva.DCA1000 má dve skupiny DIP prepínačov, ktoré určujú režim zachytávania a zdroj konfigurácie. SW2
(8-polohový) prepína medzi dvojicami funkcií, SW1 volí bitovú šírku LVDS (LVDS_MODE_SEL) — význam jednotlivých polí zhŕňa tabuľka 4.3:
Tabuľka 4.3. Prepínače SW2 a SW1 na DCA1000EVM
| SW2 | jedna poloha | druhá poloha |
|---|---|---|
| 5 | SW_CONFIG (konfigurácia softvérom) | HW_CONFIG (prepínačmi) |
| 4 | RAW_MODE (nespracované ADC) | DATA_MODE |
| 3 | AR1642_MODE | 1243_MODE |
| 2 | ETH_STREAM (cez Ethernet) | SD_STORE (na SD kartu) |
| 1 | LVDS_CAPT (záznam cez LVDS) | DMM_PLAYBACK |
| 6–8 | USER_SW1 / USER_SW2 / USER_SW3 (používateľské) | |
SW1 — LVDS_MODE_SEL: 12-bit / 14-bit / 16-bit.
CONFIG_FPGA nastaví RAW režim, 2-lane aj 16-bit) — a SW1 =
16-bit. Keďže v režime SW_CONFIG riadi FPGA softvér, ostatné prepínače SW2 nie sú kritické; môžu ostať v polohe,
v akej zber funguje (RAW_MODE, ETH_STREAM, LVDS_CAPT).Toolbox komunikuje s radarom cez mmw demo — referenčnú aplikáciu od TI, ktorá na strane radaru rozumie
CLI príkazom z .cfg. AWR2944 ju musí mať nahratú v pamäti QSPI. Flashuje sa len raz a doska často
prichádza s demom už nahratým — ak je demo už nahraté, táto časť sa preskočí a SOP sa rovno nastaví na funkčný režim (krok 4).
Čo je potrebné: nástroj TI UniFlash, USB kábel do konektora J8 (XDS_USB) a dva
súbory zo mmWave MCUPLUS SDK 04.07.01.04 — zavádzač (SBL) a samotnú demo aplikáciu (verzia TDM):
SBL: C:\ti\mmwave_mcuplus_sdk_04_07_01_04\mmwave_mcuplus_sdk_04_07_01_04\
tools\awr294x\sbl_qspi.release.tiimage
app: C:\ti\mmwave_mcuplus_sdk_04_07_01_04\mmwave_mcuplus_sdk_04_07_01_04\
ti\demo\awr294x\mmw\awr2944_mmw_demoTDM.appimage
To, či doska po zapnutí naskočí do flashovania alebo spúšťa nahratú aplikáciu, určujú SOP jumpre (prepojky)
J17 / J18 / J20 (tabuľka 4.4):
Tabuľka 4.4. Nastavenie prepojok SOP
| Režim | SOP | J17 | J18 | J20 |
|---|---|---|---|---|
| Flashovanie | 101 | closed | open | closed |
| Funkčný (beží demo) | 001 | open | open | closed |
Fotografia je na obrázku 4.3.
J17 (SOP 2), J18 (SOP 1), J20 (SOP 0),
konektor J8 (XDS110, USB pre flashovanie) a napájací konektor J12. Ostatné označené prvky (Ethernet MATEnet J4, MIPI J19,
CAN J2/J3, JTAG/SPI muxy S1/S2) toolbox nepoužíva.Postup:
Aplikácia awr2944_mmw_demoTDM je verzia s TDM-MIMO — preto radar pracuje v režime
opísanom v 4.4. (SOP a postup podľa TI AWR2944EVM user guide, SPRUJ22C.) Podrobnejší krok-za-krokom postup
s odkazmi na TI zdroje je v Radary v automobiloch: metodika merania a zadania, kapitola 6.
AWR2944 má viac vysielacích (TX) aj prijímacích (RX) antén. Toolbox ich používa v režime TDM-MIMO
(time-division multiplexing): v každom chirpe vysiela vždy len jeden TX a vysielače sa striedajú chirp po
chirpe (v .cfg to nastavujú jednotlivé chirpCfg, každý s jedným zapnutým TX). Vďaka tomu
vie prijímač priradiť ozvenu konkrétnemu vysielaču a spracovanie z toho poskladá virtuálnu anténnu sústavu —
viac „pohľadov“ na scénu, než je fyzických antén, čo zlepšuje rozlíšenie uhla (to je tá „syntetická sietnica“ z
úvodu).
Preto má napríklad predvolený 3-TX profil 48 chirpov na rámec (16 slučiek × 3 vysielače) a prehliadač
BIN2MAT_2944 chirpy podľa vysielačov rozpletá (de-interleave). Iné schémy MIMO (BPM s fázovou moduláciou,
DDM s frekvenčnou) tieto profily nepoužívajú.
Teoretické pozadie TDM-MIMO aj alternatívnych schém (BPM, DDM) rozoberá TI aplikačná správa MIMO Radar (Texas Instruments, SWRA554A) — kapitoly 3–4 a obrázky 8–10.
Keď je hardvér prepojený (kapitola 4.2) a AWR2944 má nahraté demo (kapitola 4.3), prvé jednoduché meranie overí, že celá reťaz funguje. Stačia tri príkazy:
% je
komentár. Niektoré príkazy sú interaktívne — toolbox sa spýta na profil a COM port; stačí potvrdiť Enterom
prednastavenú voľbu.src = awr2944_dca; % vytvor objekt cube = src.capture(); % nastav radar, zmeraj, vrat data (a uloz na disk) src.release(); % uvolni porty plot_chirp(cube, 1, 1); % nakresli chirp c.1, ramec c.1 (vsetky prijimace)
Pri capture sa toolbox interaktívne spýta na profil (ktorý .cfg) a na
COM port (Application/User UART z konektora J8); Enter potvrdí predvolené hodnoty. Potom
nakonfiguruje radar, chvíľu zaznamenáva a na konci oznámi, kam dáta uložil.
Predvolene sa ukladajú do priečinka Stiahnuté (Downloads) aktuálneho používateľa, a to do nového
podpriečinka pomenovaného dátumom a časom merania — napríklad awr2944_2026-06-01_19-14-56. Vďaka tomu sa
merania neprepisujú a dátový súbor .bin ostáva pohromade so svojím opisným LogFile:
.bin zapisany: C:\Users\<pouzivatel>\Downloads\awr2944_2026-06-01_19-14-56\
adc_data_Raw_0.bin (2108288 vzoriek)
[validacia] cube [560 4 48 19] | range-FFT chirp0/RX0:
peak bin 8, peak/median 678.2
Čo tie dva riadky znamenajú:
adc_data_Raw_0.bin obsahuje nespracované vzorky;
(2108288 vzoriek) je ich počet v súbore (o niečo viac, než je v dátovom poli, lebo .bin obsahuje
aj nedokončený posledný rámec).[validacia]) je rýchla automatická kontrola zdravia merania: z prvého chirpu
prvého prijímača sa spraví range-FFT a porovná sa najsilnejšia hodnota spektra vzdialenosti so strednou (mediánom)
z ostatných. Hodnota peak/median 678 znamená, že najsilnejší odraz je približne 678× nad úrovňou šumu
— teda jasný, výrazný cieľ; hodnota blízka 1 by znamenala iba šum (žiadny cieľ, zlé prepojenie a podobne).
peak bin 8 hovorí, na ktorej pozícii (indexe) spektra vzdialenosti je najsilnejší odraz.Premenná cube je reálne double pole rozmeru
SamplesPerChirp × NumRX × ChirpsPerFrame × NumFrames, tu [560 × 4 × 48 × 19] (19 úplných
rámcov z 20 — posledný býva neúplný). Funkcia plot_chirp z nej nakreslí jeden nespracovaný chirp v čase
(záznejový signál z kapitoly 1).
capture sa dá volať opakovane bez resetovania či
opätovného pripájania zostavy — pri prvom volaní objekt radar nakonfiguruje, pri ďalších už len spúšťa ďalšie
meranie (interne posiela sensorStart 0, teda štart bez opätovnej konfigurácie). Príklad slučky
viacerých meraní je v 8.2.Profil .cfg je obyčajný textový súbor v štandardnom formáte TI mmWave CLI — rovnaký, aký exportuje
mmWave Studio aj Demo Visualizer. Toolbox ho pri capture/startLive načíta a riadok po riadku
pošle do radaru (príkazy sensorStart/sensorStop/flushCfg preskočí a rieši sám).
Z profilu si zároveň odvodí rozmery dátového poľa.
Predvolený profil DCA_RX1111_TX1110_TDM.cfg (skrátene, kľúčové riadky):
channelCfg 15 7 0 adcCfg 2 0 profileCfg 0 77 267 7 57.14 0 0 70 1 560 11396 0 0 158 chirpCfg 0 0 0 0 0 0 0 1 chirpCfg 1 1 0 0 0 0 0 4 chirpCfg 2 2 0 0 0 0 0 2 frameCfg 0 2 16 20 560 100 1 0 lvdsStreamCfg -1 0 1 0
Ich význam je v tabuľke 5.1:
Tabuľka 5.1. Kľúčové riadky konfiguračného profilu
| Riadok | Význam |
|---|---|
channelCfg rxMask txMask casc | Masky aktívnych antén. 15 = 4 RX (binárne 1111), 7 = 3 TX (111). Počet jednotiek určuje NumRX a NumTX. |
adcCfg bits fmt | Invariant. 2 0 = 16-bit, reálny výstup (nie IQ). Pre tento toolbox sa nemení. |
profileCfg … | Definícia chirpu — rozpis polí nižšie (frekvencia, časovanie, sklon, počet vzoriek, vzorkovanie). |
chirpCfg … txEnable | Jeden riadok na chirp; posledné číslo je TX maska. Tu tri chirpy s maskami 1/4/2 → TDM (v každom chirpe vysiela iný TX). |
frameCfg cs ce loops frames … | Skladba rámca: 0 2 16 20 = chirpy 0–2, 16 slučiek, 20 rámcov. ChirpsPerFrame = (2−0+1)×16 = 48, NumFrames = 20. |
lvdsStreamCfg -1 0 1 0 | Invariant. Zapína tok ADC dát po LVDS na DCA1000. Bez neho DCA nedostane nič. |
Riadok profileCfg 0 77 267 7 57.14 0 0 70 1 560 11396 0 0 158, po poľiach rozpísaný v tabuľke 5.2:
Tabuľka 5.2. Polia riadka profileCfg
| Pole | Hodnota | Význam |
|---|---|---|
| profileId | 0 | poradové číslo profilu |
| startFreq | 77 | štartovacia frekvencia [GHz] |
| idleTime | 267 | pauza pred chirpom [µs] |
| adcStartTime | 7 | oneskorenie spustenia ADC [µs] |
| rampEndTime | 57.14 | dĺžka rampy [µs] |
| freqSlopeConst | 70 | strmosť nábehu frekvencie [MHz/µs] |
| txStartTime | 1 | oneskorenie TX [µs] |
| numAdcSamples | 560 | počet ADC vzoriek na chirp → SamplesPerChirp |
| digOutSampleRate | 11396 | vzorkovacia frekvencia ADC [ksps] |
| rxGain | 158 | zisk prijímača |
(Polia s hodnotou 0 medzi nimi — txOutPower, txPhaseShifter, hpfCornerFreq1/2 — sú pre nespracovaný zber nepodstatné.)
SamplesPerChirp = numAdcSamples (560)NumRX = počet jednotiek v rxMask (4), NumTX = počet jednotiek v txMask (3)ChirpsPerFrame = (chirpEnd − chirpStart + 1) × numLoops (48)NumFrames = numFrames (20)Dva riadky sú pre tento toolbox povinné a nemenné: adcCfg 2 0 (16-bit reálny) a
lvdsStreamCfg -1 0 1 0 (tok na DCA). Editor CFG_EDITOR_2944 ich stráži a v prípade potreby doplní
(viď 7.1.a). Ostatné riadky — guiMonitor, cfarCfg, multiObjBeamForming,
antGeometryCfg a podobne — slúžia internému spracovaniu demo aplikácie a nespracovaný zber
neovplyvňujú; prejdú do radaru nezmenené.
Profil sa dá upraviť ručne v textovom editore, alebo bezpečne v CFG_EDITOR_2944, ktorý popri tom živo
prepočíta rozmery, rozlíšenie a dosah (kapitola 7.1.a). Nový profil sa potom použije cez ConfigFile
(príklad 8.8).
Táto a nasledujúca kapitola tvoria referenčnú časť príručky: pre každú súčasť toolboxu uvádzajú, čo robí, ako sa vytvára či spúšťa, a jej vlastnosti, metódy (methods) a argumenty. Táto kapitola opísuje triedu awr2944_dca, kapitola 7 jednotlivé nástroje v poradí podľa spracovaných a nespracovaných dát (kapitola 1).
"Name", Value (Name v úvodzovkách je presný názov vlastnosti, za ňou jej hodnota; dvojíc
môže byť ľubovoľný počet):
src = awr2944_dca("ConfigFile","moj.cfg", "RecordToFile",false);. Kedykoľvek po vytvorení
bodkovým priradením: src.ConfigFile = "moj.cfg";. Takto sa menia len nastaviteľné vlastnosti;
odvodené (len na čítanie) si trieda dopočíta sama z profilu.capture,
release, startLive…) sa volajú bodkou na objekte: src.capture() — v MATLABe je to
to isté ako capture(src); ak metóda nemá argumenty, zátvorky možno vynechať (src.release).
Samostatné funkcie (live_display, plot_chirp, CFG_EDITOR_2944,
micro_doppler, radar_cfg) sa volajú priamo menom: live_display('rd').Konfigurácia radaru AWR2944 + DCA1000 a zber nespracovaných ADC dát — dávkovo aj v reálnom čase.
Objekt awr2944_dca drží v sebe celé spojenie s meracou zostavou: sériový port na konfiguráciu radaru
a dve UDP linky na riadenie a dáta z DCA1000. Z vybraného .cfg profilu si odvodí parametre merania, pošle
konfiguráciu do radaru, prepne DCA1000 do RAW režimu a zaznamená nespracované 16-bitové reálne ADC vzorky. Výsledok
vráti ako štvorrozmerné dátové pole rozmeru [SamplesPerChirp × NumRX × ChirpsPerFrame × NumFrames] a (voliteľne)
uloží do .bin spolu s adc_data_LogFile.txt pre prehliadač BIN2MAT_2944.
dca1000 od MathWorks: (1) nezadáva sa boardName — trieda je napevno
pre AWR2944; (2) výstup je reálny, nie IQ; (3) capture dáta naraz vráti aj uloží (kým pri
dca1000 sa číta volaním objektu a nahráva sa cez startRecording).src = awr2944_dca; % predvolené nastavenia
src = awr2944_dca(Name, Value, ...); % s nastavením vlastností
% napr. iný profil a meranie len do pamäte:
src = awr2944_dca("ConfigFile","moj.cfg", "RecordToFile",false);
Konštruktor prijíma dvojice Name, Value, kde Name je názov niektorej
nastaviteľnej vlastnosti (zo zoznamu nižšie — napr. ConfigFile, RecordLocation,
RecordToFile) a Value je hodnota, ktorá sa jej priradí; dvojíc môže byť ľubovoľný počet
(alebo žiadna — potom platia predvolené hodnoty). To isté sa dosiahne aj nastavením vlastnosti bodkou po vytvorení,
napr. src.RecordToFile = false; (oba spôsoby zhŕňa poznámka Konvencie zápisu vyššie).
Ak ostane ConfigFile prázdne, použije sa DCA_RX1111_TX1110_TDM.cfg uložený pri triede; ak ostane
RecordLocation prázdne, ukladá sa do priečinka Downloads. Hneď pri vytvorení si trieda z profilu
odvodí parametre merania.
Ich úplný zoznam je v tabuľke 6.1:
Tabuľka 6.1. Nastaviteľné vlastnosti triedy awr2944_dca
| Vlastnosť | Opis | Typ | Predvolené |
|---|---|---|---|
ConfigPort | Sériový (COM) port s Application/User UART. Pri meraní sa naň aj tak interaktívne spýta. | string | "COM9" |
HostIPAddress | IP adresa sieťovej karty PC. | string | "192.168.33.30" |
DcaIPAddress | IP adresa FPGA na DCA1000. | string | "192.168.33.180" |
ConfigFile | Cesta k .cfg profilu. Prázdne → DCA_RX1111_TX1110_TDM.cfg uložený pri triede. | string | "" |
RecordLocation | Priečinok na ukladanie. Prázdne → Downloads. | string | "" |
RecordFilePrefix | Prefix názvu .bin súboru. | string | "adc_data_Raw" |
RecordToFile | Či sa má meranie uložiť na disk. | logical | true |
WriteLogFile | Či popri .bin zapísať aj adc_data_LogFile.txt (pre bin2mat). | logical | true |
RecordSubfolder | Každé meranie do vlastného podpriečinka s časovou pečiatkou. | logical | true |
CaptureFrames | Počet rámcov pre capture, keď má profil numFrames = 0 (napr. export z Demo Visualizera). | double | 20 |
Tieto vlastnosti sa nenastavujú priamo — trieda si ich odvodí z .cfg profilu pri vytvorení (a pri
každom capture/startLive). Menia sa teda nepriamo, úpravou profilu (prehľad v tabuľke 6.2).
Tabuľka 6.2. Vlastnosti odvodené z profilu (iba na čítanie)
| Vlastnosť | Opis |
|---|---|
SamplesPerChirp | Počet ADC vzoriek na jeden chirp (z profileCfg). |
NumRX | Počet aktívnych prijímacích antén (z channelCfg). |
NumTX | Počet aktívnych vysielacích antén (z channelCfg). |
AdcBits | Bitová hĺbka ADC (z adcCfg); typicky 16. |
ChirpsPerFrame | Počet chirpov na rámec — (chirpEnd − chirpStart + 1) × loops. |
NumFrames | Počet rámcov merania (z frameCfg). |
IsReal | true — výstup je reálny (AWR2944 nevracia IQ). |
LastBinFile | Cesta k naposledy zapísanému .bin. |
LiveActive | true počas živého režimu. |
Ich prehľad je v tabuľke 6.3:
Tabuľka 6.3. Metódy triedy awr2944_dca
| Metóda | Čo robí |
|---|---|
capture | cube = src.capture() — nakonfiguruje meranie, zaznamená jednu dávku, vráti dátové pole a (ak RecordToFile) uloží .bin + LogFile. Na konci vypíše rýchlu validáciu. Opakované volania spúšťajú ďalšie merania bez rekonfigurácie (pozri 4.5). |
startLive | src.startLive() — prepne radar na nepretržitý beh (numFrames = 0), pripraví DCA1000 a spustí senzor. |
readFrame | frame = src.readFrame(timeout) — vráti jeden ďalší rámec z live toku. |
readFrameLatest | frame = src.readFrameLatest() — vráti najnovší rámec a starší backlog zahodí; live zobrazenie tak nenaberá oneskorenie. |
stopLive | src.stopLive() — zastaví senzor aj záznam live režimu. |
release | src.release() — zastaví prípadný live režim a uvoľní sériový port aj UDP porty. Volá sa na konci práce. |
readBin | cube = src.readBin(binFile) — načíta uložený .bin späť do dátového poľa. |
setup, pickConfig a pickPort sa volajú automaticky (a interaktívne)
v rámci capture/startLive — preto sa toolbox pri štarte pýta na profil a port. Volať ich ručne
väčšinou netreba.Výstupom merania sú tie isté čísla v dvoch podobách — ako dátové pole v pamäti MATLABu a ako súbor
.bin na disku.
Dátové pole (v anglickej literatúre radar data cube — odtiaľ názov premennej
cube) je 4-rozmerné, reálne, typu double, s rozmermi
[SamplesPerChirp × NumRX × ChirpsPerFrame × NumFrames]. Indexuje sa ako
cube(vzorka, rx, chirp, ramec): prvý rozmer je poradie ADC vzorky v rámci jedného chirpu, druhý je
prijímacia anténa, tretí chirp v rámci a štvrtý rámec. Hodnoty sú nespracované ADC čísla (z 16-bitového prevodníka)
uložené ako double; keďže AWR2944 vracia reálne vzorky, dátové pole je reálne (bez imaginárnej zložky).
Súbor .bin je holý tok 16-bitových celých čísel so znamienkom (int16, na PC v
poradí bajtov little-endian), bez akejkoľvek hlavičky. Čísla idú presne v tom poradí, v akom z nich vznikne dátové pole pri
preskladaní (reshape) po stĺpcoch: najrýchlejšie sa mení vzorka, potom prijímač, potom chirp a napokon rámec.
Inak povedané — pre jeden chirp idú za sebou všetky vzorky prvého prijímača, potom všetky vzorky druhého atď.; po
poslednom prijímači nasleduje ďalší chirp a po poslednom chirpe ďalší rámec.
Práve preto k .bin patrí aj adc_data_LogFile.txt — sú v ňom uložené parametre merania
(počet kanálov, bitová hĺbka, profil, frameCfg), aby prehliadač ako BIN2MAT_2944 vedel tento
plochý tok opäť poskladať do dátového poľa. Súbor .bin môže obsahovať o jeden neúplný rámec navyše (preto je
v ňom o niečo viac vzoriek než v dátovom poli — pozri 4.5).
Objekt počas práce vypíše niekoľko ďalších riadkov, mimo [validacia] a
.bin zapisany, ktoré rozoberá 4.5:
awr2944_dca: setup... a po dokončení awr2944_dca: setup OK (FPGA vX.Y.Z) —
pri prvom capture/startLive, keď sa zostava pripája a konfiguruje.LogFile zapisany: <cesta> — hneď po riadku .bin zapisany, ak je
WriteLogFile zapnuté (predvolene áno).live OK: N B/ramec (M vzoriek) — po úspešnom startLive, potvrdzuje veľkosť
očakávaného rámca.[cfg] numFrames=0 -> N ramcov (CaptureFrames) pre capture. a/alebo
[cfg] lvdsStreamCfg chybal (DV export?) -> doplneny -1 0 1 0. — len ak sa použije profil
priamo z Demo Visualizera (podrobne nižšie); objekt si ho pred meraním potichu opraví
a ohlási to..cfg bez riadku
lvdsStreamCfg (DV LVDS streaming nepoužíva, posiela spracované dáta po dátovom porte) a s
numFrames = 0 (nekonečne). Objekt to pri capture rieši sám: ak lvdsStreamCfg
chýba, doplní lvdsStreamCfg -1 0 1 0 — bez neho by karta DCA1000 nedostala žiadne dáta (pozri 10.1) — a
nekonečný počet rámcov nahradí konečným podľa vlastnosti CaptureFrames (predvolene 20). DV export sa teda
dá použiť priamo, bez ručných úprav profilu.Pri probléme (napr. strata viac než jedného rámca, alebo neúspešný capture) sa
namiesto fprintf objaví štandardné MATLAB varovanie (žltý text) — typické prípady
rozoberá kapitola 10.1.
Táto kapitola opísuje jednotlivé nástroje toolboxu. Podľa spôsobu použitia sú rozdelené na nástroje, ktorými sa meranie nastaví, nástroje pre nespracované a spracované dáta (obe cesty zavádza kapitola 1) a pomocné funkcie.
Samostatná aplikácia s vlastným oknom — s radarom nekomunikuje, pracuje výlučne so súbormi
.cfg na disku. Načítaný profil vizuálne upraví, okamžite prepočíta dôsledky (rozmery dátového poľa,
rozlíšenie, maximálny dosah, snímkovú frekvenciu, veľkosť .bin) a uloží ako nový profil.
Funkcia CFG_EDITOR_2944 otvorí okno, načíta základný .cfg profil (predvolene
DCA_RX1111_TX1110_TDM.cfg z priečinka toolboxu) a umožní vizuálne prenastaviť kľúčové parametre merania. Pri
každej zmene okamžite prepočíta rozmery dátového poľa, rozlíšenie vzdialenosti, maximálny dosah, šírku
pásma rozmietania, snímkovú frekvenciu a veľkosť
.bin. Pri uložení ponechá (a v prípade potreby doplní) dva invarianty potrebné pre DCA1000:
adcCfg 2 0 (16-bit reálny) a lvdsStreamCfg -1 0 1 0 (tok ADC dát na DCA). Ostatné riadky
profilu (napr. guiMonitor, cfarCfg) prejdú bez zmeny a v pôvodnom poradí.
CFG_EDITOR_2944 % načíta DCA_RX1111_TX1110_TDM.cfg z priečinka toolboxu
CFG_EDITOR_2944('moj.cfg') % načíta konkrétny profil
Editor sprístupňuje kľúčové polia profilu (význam jednotlivých polí je v kapitole 5):
profileCfg): štartovacia frekvencia, idle time, ADC start time, ramp end time, sklon,
počet ADC vzoriek, vzorkovanie, RX zisk.1110 =
TX0+TX1+TX2 (maska 7), 1011 = TX0+TX2+TX3 (maska 13).chirpCfg riadky editor zachováva presne tak, ako
prišli (vrátane poradia z Demo Visualizera). Pregeneruje ich iba vtedy, keď sa TX maska zmení tak, že už nesedí —
vtedy vytvorí jeden chirpCfg na každý zapnutý TX v poradí TX0, TX2, TX3, TX1 (azimutové
vzostupne, elevačný TX1 posledný — overené z exportov Demo Visualizera) a dorovná frameCfg.
S tým súvisí, že pri TDM profile sa polia chirp start/end odvádzajú automaticky (0 … počet
chirpCfg − 1) — ručná zmena týchto dvoch polí sa pri najbližšom prepočte prepíše. Profily,
ktoré nie sú TDM (viac TX v jednom chirpe), editor needituje — len upozorní.V paneli „Prepočty“ priebežne ukazuje zoznam aktívnych kanálov (RX/TX menovite) a poradie chirpov
(napr. TX0 -> TX2 -> TX1), počet RX/TX, chirpov na rámec, rozmer dátového poľa, rozlíšenie vzdialenosti,
maximálny dosah, šírku pásma rozmietania a koncovú frekvenciu, periódu rámca a snímkovú frekvenciu (s maximom podľa
aktívneho času chirpov) a veľkosť .bin. Na typické problémy upozorní (tabuľka 7.1):
Tabuľka 7.1. CFG_EDITOR_2944 — situácie, na ktoré editor upozorní
| Situácia | Upozornenie |
|---|---|
| frekvencia mimo pásma AWR2944 | koncová nad 81 GHz alebo štartovacia pod 76 GHz. |
adcCfg nebol 2 0 | vynúti 16-bit reálny. |
TX maska už nesedí s chirpCfg | TDM: blok sa pri exporte pregeneruje (poznámka vyššie); non-TDM profil sa neupravuje — úprava ručne. |
numFrames = 0 | nekonečné; pre capture() treba konečný počet. |
| perióda rámca prikrátka | menšia než aktívny čas chirpov — radar ju odmietne; nad 20 fps je praktický strop. |
lvdsStreamCfg vypnuté / chýba | bez neho DCA nedostane dáta; editor ho pri exporte doplní. |
Okno editora je na obrázku 7.1.
CFG_EDITOR_2944 s načítaným predvoleným profilom
DCA_RX1111_TX1110_TDM.cfg: vľavo stĺpec parametrov (profil, rámec a kanály, strážené invarianty)
s tlačidlami dole, vpravo panel Prepočty — vrátane zoznamu kanálov a poradia chirpov — a pod ním náhľad
vygenerovaného .cfg. Prípadné upozornenia sa zobrazujú červeným textom pod prepočtami.Načítaj .cfg… (otvorí iný profil), Default (vráti predvolený profil toolboxu,
DCA_RX1111_TX1110_TDM.cfg), Ulož .cfg… (zapíše upravený profil).
Funkcia nič nevypisuje do príkazového riadka — všetky prepočty, upozornenia (červený text pod prepočtami) aj potvrdenie uloženia sa zobrazujú priamo v okne.
<DCA|DV>_RX<maska>_TX<maska>[_TDM].cfg — prefix DCA pre profily s
lvdsStreamCfg (zber nespracovaných dát), DV pre profily bez neho (TLV výstup pre Demo
Visualizer), masky binárne (zľava = anténa 0) a prípona _TDM pre časovo multiplexované profily.
Názov, ktorý konvenciu už spĺňa, sa ponechá..cfg) → uloží sa .cfg → použije sa v awr2944_dca (vyberie sa pri
capture/startLive).Spoločný modul bez vlastného okna — nič nemeria ani nezobrazuje. Načíta profil
(.cfg alebo adc_data_LogFile.txt), vypočíta odvodené veličiny a osi, a je jedným miestom pravdy
pre všetky ostatné nástroje.
radar_cfg je centrálny modul, z ktorého všetky ostatné nástroje (micro_doppler,
live_display, plot_chirp, CFG_EDITOR_2944) berú parametre merania aj výpočet osí a veličín —
aby sa vzorce neopakovali a nelíšili. Načíta buď mmWave CLI .cfg profil, alebo
adc_data_LogFile.txt (mmWS API log, ktorý capture ukladá k .bin) a parametre z neho
spätne prepočíta. Pamätá si naposledy použitý profil (v rámci relácie aj medzi reláciami), takže funkcie ako
micro_doppler sa dajú zavolať rovno na dátové pole vo workspace bez opätovného zadávania profilu.
Ak zatiaľ žiadny profil použitý nebol, radar_cfg() upozorní varovaním a vráti predvolené hodnoty
(zodpovedajú profilu DCA_RX1111_TX1110_TDM.cfg).
P = radar_cfg(cfgFile) % .cfg alebo LogFile.txt -> naparsuje
% a zapamata ako posledny
P = radar_cfg(params) % struktura s parametrami (override; bez suboru,
% bez pamate) - CFG_EDITOR_2944
P = radar_cfg() % naposledy pouzity profil (z pamate)
P)Parametre načítané z profilu sú v tabuľke 7.2:
Tabuľka 7.2. radar_cfg — polia štruktúry P: parametre profilu
| Pole | Význam |
|---|---|
cfgFile | Cesta k použitému súboru ('' pri defaulte). |
startFreq_GHz, idle_us, rampEnd_us, slope_MHzus | Definícia chirpu — štartovacia frekvencia, idle, ramp end, sklon. |
numAdc, fs_ksps | Počet ADC vzoriek na chirp a vzorkovacia frekvencia. |
numRx, numTx | Počet aktívnych RX a TX (z mask). |
chirpStart, chirpEnd, numLoops, chirpsPerFrame, numFrames, framePeriod_ms | Skladba rámca. |
txPhys | Fyzické indexy TX z chirpCfg mask (pre range-angle / voľbu azimutových TX). |
Odvodené veličiny (rovnaké vzorce ako BIN2MAT_2944) sú v tabuľke 7.3:
Tabuľka 7.3. radar_cfg — polia štruktúry P: odvodené veličiny
| Pole | Význam |
|---|---|
lambda_m, Tr_s, Teff_s | Vlnová dĺžka, perióda chirpu a efektívna perióda Dopplerovho vzorkovania Teff = tdmFactor·Tr. |
tdmFactor | TDM faktor — počet chirpCfg riadkov profilu: pri štandardnom TDM = počet TX, pri non-TDM profile 1 (podrobne v poznámke pri 7.2.d). |
NfftR, NrBins, rangeAxis, rangeRes_m, Rmax_m | Range-FFT a os vzdialenosti. Reálne vzorkovanie → maximálny dosah Rmax = c·fs/(4·sklon). |
rampBW_MHz, fEnd_GHz | Šírka pásma rozmietania a koncová frekvencia. |
NfftD, velAxis, vMax_ms | Doppler-FFT a os rýchlosti — PRF = 1/Teff, teda delená TDM faktorom. |
winR, winD | Hann okná dĺžky numAdc / numLoops. |
Elevačné konštanty (definované priamo v radar_cfg — MASTER, jedno miesto pre všetky nástroje) sú v tabuľke 7.4:
Tabuľka 7.4. radar_cfg — polia štruktúry P: osi grafov
| Pole | Význam |
|---|---|
elevCalib | Kalibračný vektor fázových ofsetov elevačných párov (4 hodnoty, jeden ofset na RX pár); aktuálny vektor je z nivelovanej kalibrácie. Podrobnosti a procedúra rekalibrácie sú v Radary v automobiloch: metodika merania a zadania, kapitola 12. |
elevScale | Korekčná škála elevačného uhla (1,20 — konštantná v overenom rozsahu ±3,8°). |
elevGateAzDeg | Elevačný gate: výška sa počíta len pre |azimut| ≤ táto hodnota [°] (predvolene 6). |
elevGateSnrLive | SNR prah elevačného gate pre live zobrazenie (predvolene 15). |
.cfg je textový profil pre CLI rozhranie
mmw demo (formát TI mmWave SDK; takéto profily exportuje Demo Visualizer a vytvára ich aj
CFG_EDITOR_2944) — funkcia z neho číta hodnoty priamo z polí (napr. profileCfg:
sklon = 8. hodnota; frameCfg: perióda = 6. hodnota). Súbor adc_data_LogFile.txt je
API log vo formáte mmWave Studia (TI); pri každom zázname ho k .bin ukladá capture
tohto toolboxu (a rovnako ho vytvára aj samotné mmWave Studio). Z neho funkcia konštanty spätne prepočítava ako
BIN2MAT_2944 (frekvencia a sklon cez merné konštanty, časy /100 → µs, perióda
/1e6 → ms) — v logu je navyše poradie TX/RX opačné než v .cfg, s čím funkcia ráta.radar_cfg() bez argumentu je užitočné aj samo o sebe — vráti veličiny posledného profilu (maximálny dosah,
rozlíšenie, λ, max rýchlosť…), takže sa dajú rýchlo pozrieť alebo použiť vo vlastnom skripte.Zobrazenie merania v reálnom čase v jednom okne — nespracovaný chirp, RP, RD, RA alebo oblak bodov (PC).
Funkcia live_display spustí radar v live režime a v jednom okne priebežne vykresľuje zvolený
pohľad. Sama si vytvorí objekt awr2944_dca (s vypnutým ukladaním na disk), spustí
startLive a v slučke číta vždy najnovší rámec (readFrameLatest — starší backlog sa
zahodí, obraz nenaberá oneskorenie), kým sa okno nezatvorí alebo neuplynie nastavený čas. Radarové parametre
(vzorkovacia frekvencia, strmosť nábehu frekvencie, štartovacia frekvencia, časovanie) si číta z .cfg, ktorý
sa vyberie pri štarte; výpočty (range-FFT, Doppler, beamforming) sú rovnaké ako v BIN2MAT_2944, aby live
obraz zodpovedal offline vyhodnoteniu.
live_display % RP, 60 s
live_display('rd') % RD
live_display('ra', 120) % RA, 2 min
live_display('raw') % nespracovany chirp
live_display('pc3d') % 3D PC (farba = vyska z)
live_display('pcelev') % celny pohlad (bocny x vyska z), farba = vzdialenost
live_display('pc', 60, 15, 'multi') % zhora, viacbodovy rezim
Vysvetľuje ich tabuľka 7.5:
Tabuľka 7.5. live_display — vstupné argumenty
| Argument | Význam | Predvolené |
|---|---|---|
view | Ktorý pohľad zobraziť: 'raw' / 'rp' / 'rd' / 'ra' / 'pc' / 'pcelev' / 'pc3d' (viď tabuľka 7.6). | 'rp' |
stopTime | Dĺžka behu v sekundách. | 60 |
dispFps | Strop kreslenia [fps]; zber beží nezávisle od kreslenia. | 15 |
pcMode | Režim PC (len pre pc/pcelev/pc3d): 'peak' = jeden dominantný bod (stabilné pre live), 'multi' = viac bodov cez prah a lokálne maximá (až 60). | 'peak' |
Hodnoty argumentu view sú malé písmená zavedených skratiek pohľadov (RP → 'rp'
atď.) — v texte sa používajú veľké, v kóde malé (význam každého v tabuľke 7.6):
Tabuľka 7.6. live_display — dostupné pohľady
| view | Čo zobrazuje |
|---|---|
raw | Jeden nespracovaný chirp v čase (RX0, prvý chirp) — amplitúda vs ADC vzorka. Najbližšie k tomu, čo zachytil ADC. |
rp | Range profil (RP) — RX0, priemer cez chirpy; relatívny výkon [dB] vs vzdialenosť [m]. |
rd | Range-Doppler mapa (RD) — TX0 + RX0; vzdialenosť [m] × rýchlosť [m/s]; bez uhla. |
ra | Range-angle mapa (RA) — azimutové TX, všetky RX; priestorová mapa vzdialenosť × uhol (bočný × pozdĺžny rozmer). |
pc | Oblak bodov (Point Cloud — PC) zhora — bočný × pozdĺžny rozmer, farba = výška z. |
pcelev | PC čelne — bočný rozmer × výška z, farba = vzdialenosť; referenčná čiara na z = 0. |
pc3d | PC v 3D — x, y, z; farba = výška z; radar v počiatku. |
PC a elevácia. Pohľady pc/pcelev/pc3d
používajú jednoduchý prah (nie CFAR) a rýchlosť sa nepočíta — sú stavané na plynulé live zobrazenie. Výšku
z dodáva interferometria z elevačného TX1; bez neho je z = 0 (funkcia upozorní). Osi a farebné
rozsahy výšky sú pevné (±1,5 m), aby obraz medzi rámcami neposkakoval.
Výška sa počíta len tam, kde je splnená podmienka platnosti výšky: |azimut| ≤ 6° a
SNR > 15 (nastaviteľné piatym argumentom funkcie, elevSnrThr; predvolene sa berie
z radar_cfg, P.elevGateSnrLive).
Dôvod obmedzenia na azimut nie je energetický — silný cieľ môže byť v mape RA zjavný pri ľubovoľnom uhle — je
geometrický: fáza, ktorú prijme ktorýkoľvek prvok anténnej sústavy, závisí od
x·sin(azimut)·cos(elevácia) + z·sin(elevácia), teda od azimutu aj elevácie súčasne. Použitý 1D
azimutový odhad (beamforming len po vodorovnej osi) člen cos(elevácia) neberie do úvahy, takže
zdanlivý azimut sa s eleváciou mierne posuva (a naopak) — to sa potvrdilo aj v mmWave Studiu s továrenskou
kalibráciou kanálov, ide teda o vlastnosť sústavy s jediným zvýšeným radom antén, nie o chybu tohto toolboxu.
Kalibračná kampáň s rohovým odrážačom ukazala dôveryhodné hodnoty do ±3° a nespoľahlivé už od ±13,4°; 6° je
konzervatívna prevádzková hranica.
Keď detekcia túto podmienku nespĺňa, jej výška je z = NaN. V pohľade zhora (pc) taký bod
ostáva zobrazený, len s neutrálnou farbou namiesto výšky (poloha zhora na výške nezávisí); v pohľadoch, kde
je výška priamo súradnicou (pcelev, pc3d), sa taký bod nedá vykresliť vôbec — jeho
poloha na zvislej osi jednoducho nie je známa.
Hodnoty podmienky, kalibrácia aj škála elevácie sa berú
zo spoločného radar_cfg (P.elevGateAzDeg, P.elevGateSnrLive,
P.elevCalib, P.elevScale) — praktický postup merania výšky je v príklade 8.10,
metodika v Radary v automobiloch: metodika merania a zadania, kapitoly 8 až 11.
Beh skončí zatvorením okna alebo po uplynutí stopTime. V oboch prípadoch funkcia korektne
uvoľní porty (release) — aj pri zatvorení okna uprostred rámca.
live_display neukladá na disk (slúži na pozorovanie v reálnom čase). Kanály sú
v pohľadoch pevné — raw/rp: prijímač RX0; rd: vysielač TX0 +
prijímač RX0; ra: azimutové vysielače TX0 a TX2 + prijímače RX0–RX3 (číslovanie antén podľa kap. 2).
Výber konkrétnych
TX/RX/slučiek ponúka offline prehliadač BIN2MAT_2944. Pri štarte sa rovnako
ako pri capture spýta na profil a COM port. RD používa zjemnenú rýchlostnú os (≥128 hodnôt
cez zero-padding; ostré pixely, bez obrazovej interpolácie).Offline prehliadač uložených meraní. Otvorí záznam .bin z tohto toolboxu alebo
z mmWave Studia a zobrazí RP, RD a RA mapy aj oblak bodov detekcií (PC) vrátane
výšky.
Funkcia BIN2MAT_2944 načíta uložený záznam nespracovaných dát (.bin), preskladá ho
do dátového poľa s rozpletenými virtuálnymi kanálmi (de-interleave podľa vysielačov TDM) a otvorí prehliadač
s výpočtami range-FFT, Doppler-FFT a beamformingu. Parametre merania (počet kanálov, profil, časovanie) sa
zvyčajne nedajú vyčítať zo samotného .bin — ten obsahuje len holé vzorky. Preto si funkcia najprv skúsi
prečítať sprievodný súbor adc_data_LogFile.txt, ktorý vzniká spolu s .bin pri každom zázname
(ukladá ho capture, aj mmWave Studio) a nesie presne tieto parametre. Ak sa taký súbor nenájde,
parametre treba zadať ručne v dialógovom okne.
Podporuje záznamy z tohto toolboxu aj z mmWave Studia (PostProc adc_data.bin + API log —
krížovo overené na tom istom meraní; opačné poradie TX/RX v logu si funkcia ošetrí sama), LVDS v 1- aj
2-lane režime a zadávanie antén binárnymi maskami (zľava = anténa 0, ako v editore).
[adcCube, params] = BIN2MAT_2944; % vsetko ostatne interaktivne
Funkcia nemá vstupné argumenty — postupne sa spýta na: (1) súbor .bin; (2) súbor
LogFile (Cancel = bez logu, parametre ručne); (3) parametre zobrazenia v prehliadači.
Čo ktorý pohľad ukáže, zhŕňa tabuľka 7.7:
Tabuľka 7.7. BIN2MAT_2944 — zobrazenia prehliadača
| Pohľad | Čo zobrazuje |
|---|---|
| Range profil (RP) | Relatívny výkon [dB] vs vzdialenosť [m] — kontrola scény. |
| Range-Doppler (RD) | Vzdialenosť × rýchlosť; podklad pre detekcie (CFAR). |
| Range-angle (RA) | Vzdialenosť × azimut cez beamforming virtuálnej anténnej sústavy (azimutové TX). |
| Oblak bodov (PC) | Detekcie v troch režimoch: 2D (zhora), 2D + elevácia (čelný, výška z), 3D. |
Zobrazovať možno jednotlivé rámce alebo AVG rámec — koherentný priemer cez všetky úplné rámce (zisk SNR ≈ 10·log10(N) dB pri statickej scéne); pre presné vyhodnotenie výšky je AVG rámec odporúčaný postup.
Okno prehliadača ukazuje obrázok 7.2.
Ovládanie prehliadača zhŕňa tabuľka 7.8:
Tabuľka 7.8. BIN2MAT_2944 — ovládacie prvky okna
| Prvok | Funkcia |
|---|---|
| Frame (posúvník) | Výber rámca. Posledná poloha je AVG rámec — štítok ukáže AVG (N fr) namiesto čísla rámca. |
| Loop (posúvník) | Výber slučky (chirpu daného TX v rámci) — uplatňuje sa v pohľadoch Raw a RP. |
| TX (zoznam) | Výber vysielača; položky zodpovedajú TX vzorom načítaným z profilu. Pri načítaní z logu sa zobrazujú ako binárne masky chirpov (zľava = anténa 0). |
| RX (zoznam) | Výber prijímača binárnou maskou ako pri TX (zľava = anténa 0; napr. 0100 = RX1). Posledná položka — maska všetkých aktívnych RX (napr. 1111) — znamená spoločné spracovanie všetkých prijímačov (Common). |
| View (zoznam) | Prepínač pohľadov: Raw / RP / RD / RA / PC (tabuľka 7.7). |
| CFAR thr (posúvník) | Prah CFAR detektora pre PC (1,2–30; predvolene 3,0) — nižší prah = viac detekcií vrátane slabších a falošných. |
| PC src (zoznam) | Zdroj pre PC: Selected RX (len zvolený prijímač) alebo Common RX (všetky; predvolené). |
| PC mode (zoznam) | Režim PC: 2D / 2D+elev (prah > 15/20/25) / 3D (prah > 15/20/25). Režimy s výškou sú dostupné len pri aktívnom elevačnom rade (TX1); bez neho ostáva len 2D. Vyšší prah = menej bodov so spoľahlivou výškou, ale prísnejšie filtrovaný šum. |
| v < 0 / v = 0 / v > 0 (zaškrtávacie) | Filter detekcií podľa znamienka rýchlosti — napr. len približujúce sa ciele, alebo skrytie statiky. |
PC a elevácia (offline reťazec). Detekcie vznikajú vlastným 2D CA-CFAR v RD mape (nastaviteľný prah); pre každú detekciu sa v úzkom okne vzdialeností nájde najsilnejší uhol v RA mape a z elevačných párov (TX1 vs spodný rad na rovnakej horizontálnej pozícii) sa interferometricky odhadne výška z.
Rovnako ako pri live (7.2.a) sa výška počíta len pri splnenej podmienke platnosti: |azimut| ≤ 6°,
s SNR prahom vyberateľným priamo v menu PC mode (2D+elev/3D s hodnotou
> 15/20/25) — vyšší prah znamená menej bodov so spoľahlivou výškou, ale prehodnotenie
platí len pre priradenie výšky, nie pre počet detekcií samotných (ten určuje CFAR prah vedla).
Obmedzenie na azimut je geometrické, nie
energetické: 1D azimutový odhad prijatú fázu x·sin(azimut)·cos(elevácia) + z·sin(elevácia)
zjednodušuje a člen cos(elevácia) zanedbáva, takže zdanlivý azimut sa s eleváciou posuva
(potvrdené aj v mmWave Studiu s továrenskou kalibráciou) — je to vlastnosť sústavy s jediným zvýšeným
radom antén. Mimo podmienky je z = NaN; v tomto (plne 2D) pohľade bod ostáva v oblaku, len bez výšky,
kým v pohľadoch 2D+elev a 3D, kde je výška priamo súradnicou, sa taký bod nedá vykresliť.
Kalibrácia a škála elevácie sú tu vlastnou kópiou
hodnôt z radar_cfg — BIN2MAT_2944 je zámerne samostatný (nevolá radar_cfg), takže
pri rekalibrácii treba aktualizovať obe miesta. Pre kalibračný postup funkcia pri každom behu exportuje do
workspace tabuľku elevPairPhaseTable (dosah, azimut, nekalibrované fázy párov) — rekalibračný
postup je v Radary v automobiloch: metodika merania a zadania, kapitola 12.
Rozšírené menu je na obrázku 7.3.
2D, 2D+elev a 3D každé v troch
variantoch prahu (> 15/20/25). Pravý pohľad (čelný) ukáže pri nižšom prahu viac farebných
bodov, keďže viac detekcií prejde podmienkou platnosti výšky.Tabuľka 7.9 vysvetľuje každé pole:
Tabuľka 7.9. BIN2MAT_2944 — výstupné premenné
| Výstup | Význam |
|---|---|
adcCube | Dátové pole [vzorky × slučky × virt. RX × rámce] — už rozpletené virtuálne kanály (iné usporiadanie než pole z capture, ktoré má fyzické RX a prepletané chirpy). |
params | Štruktúra parametrov merania (profil, masky, anténne pozície v λ, osi). |
elevPairPhaseTable | (vo workspace) nekalibrované fázy elevačných párov pre kalibráciu. |
BIN2MAT_2944 vyžaduje Signal Processing Toolbox
(funkcia hann) — rovnako ako DAT2MAT_2944 a LIVE_DAT2MAT_2944 (kapitola 3.1);
ostatné nástroje majú vlastnú implementáciu okna. Anténne pozície AWR2944 (horizontálne po λ/2,
elevačný prvok +0,8λ z TX1) má zabudované napevno.Statická (offline) kontrola merania — nemá režim v reálnom čase. Z dátového poľa, či už z práve
dokončeného capture alebo z uloženého záznamu (readBin), vykreslí jeden chirp všetkých RX:
časový priebeh a range-FFT.
Funkcia plot_chirp zobrazí jeden vybraný chirp z dátového poľa v dvoch grafoch nad sebou: hore
časový priebeh (nespracovaný záznejový signál) všetkých prijímačov, dole range-FFT v dB pre všetky RX
so zvýrazneným peakom prvého prijímača (RX0) — najsilnejší odraz je vyznačený zvislou čiarou s hodnotou
vzdialenosti. Pred FFT sa signál násobí Hannovým oknom a dopĺňa nulami (zero-padding) na hladšiu os;
jednosmerná zložka (DC) sa pri hľadaní peaku potláča, aby konštantný posun neprekryl skutočný cieľ.
Je to rýchla vizuálna kontrola, či meranie dopadlo dobre.
Vstupom je dátové pole priamo z merania — rozloženie [vzorky × RX × chirpy × rámce], ako
ho vracia capture alebo readBin (kapitola 6). Dve typické cesty:
% (a) cerstve meranie - osi netreba zadavat (profil si pamata radar_cfg):
src = awr2944_dca;
cube = src.capture();
src.release();
plot_chirp(cube, 1, 1); % chirp c.1, ramec c.1, vsetky RX
% (b) ulozene meranie - najprv nastavit profil TOHO merania, potom nacitat .bin:
radar_cfg("C:\...\awr2944_2026-06-01_19-14-56\adc_data_LogFile.txt");
src = awr2944_dca;
cube = src.readBin("C:\...\awr2944_2026-06-01_19-14-56\adc_data_Raw_0.bin");
plot_chirp(cube); % bez dalsich argumentov = chirp 1, ramec 1
fs_ksps/slope_MHzus
nezadajú, funkcia ich vezme z naposledy použitého profilu (radar_cfg()) a nekontroluje,
či k dátam naozaj patria — pri poli z iného merania treba preto najprv zavolať radar_cfg s jeho
LogFile/.cfg (cesta (b) vyššie), inak peak vyjde na nesprávnej vzdialenosti.
(2) Pole adcCube z BIN2MAT_2944 má iné rozloženie (rozpletené virtuálne
kanály, [vzorky × slučky × virt. RX × rámce]) — pre plot_chirp nie je vhodným
vstupom; použiť treba dátové pole z capture/readBin.pk = plot_chirp(cube) % chirp 1, ramec 1; osi z posledneho profilu pk = plot_chirp(cube, 5, 2) % chirp c.5, ramec c.2 pk = plot_chirp(cube, 1, 1, 11396, 70) % osi rucne: fs [ksps], sklon [MHz/us] pk = plot_chirp(cube, chirpIdx, frameIdx, fs_ksps, slope_MHzus, adcStart_us)
Podrobne ich rozoberá tabuľka 7.10:
Tabuľka 7.10. plot_chirp — argumenty
| Argument | Význam | Predvolené |
|---|---|---|
cube | Dátové pole (z capture alebo readBin). | — |
chirpIdx | Index chirpu, ktorý vykresliť. | 1 |
frameIdx | Index rámca. | 1 |
fs_ksps | Vzorkovacia frekvencia ADC [ksps] (pre os vzdialenosti). | z radar_cfg() |
slope_MHzus | Strmosť nábehu frekvencie [MHz/us] (pre os vzdialenosti). | z radar_cfg() |
adcStart_us | ADC start time [us] — len informatívne v titulku. | 7 |
Ak sa fs_ksps/slope_MHzus nezadajú, použijú sa hodnoty naposledy použitého profilu
(cez radar_cfg()) — po bežnom capture teda netreba zadávať nič.
Príklad je na obrázku 7.4.
plot_chirp: hore časový priebeh nespracovaného záznejového signálu všetkých
štyroch prijímačov, dole range-FFT v dB so zvýrazneným peakom RX0 — peak všetkých RX leží na rovnakej
vzdialenosti, presne ako opisuje tip nižšie.Vráti štruktúru pk s dvoma poľami, oboma pre prijímač RX0: pk.range_m je
vzdialenosť najsilnejšieho odrazu v metroch (tá istá, ktorú v grafe vyznačuje zvislá čiara) a
pk.bin je pozícia (index) tohto peaku v range-FFT. Návratovú hodnotu netreba preberať —
plot_chirp(cube) funguje aj samostatne; hodí sa však v skriptoch, napr.:
pk = plot_chirp(cube, 1, 1);
fprintf('najsilnejsi ciel je na %.2f m (bin %d)\n', pk.range_m, pk.bin);
Funkcia vypíše dva riadky: cube [560 4 48 19] | zobrazujem chirp 1, frame 1, 4 RX, 560 vzoriek
(rozmer dátového poľa a čo sa kreslí — rýchla kontrola, že sa číta správne pole) a
RX0 peak: bin N ~ X.XX m (ten istý peak, ktorý sa vracia v pk).
Offline nástroj — nemá režim v reálnom čase. Z dátového poľa (workspace po capture/
readBin) alebo priamo z uloženého .bin vykreslí micro-Doppler spektrogram (rýchlosť × čas)
pre jednu až tri vzdialenosti, s voliteľným porovnávacím režimom (vzdialenosť/TX vedľa seba).
Funkcia micro_doppler vykreslí micro-Doppler spektrogram: ako sa Dopplerovo (rýchlostné) spektrum
na zvolenej vzdialenosti vyvíja v čase. Princíp: jeden RD rez = jeden rámec — pre danú vzdialenostnú zložku sa cez
chirpy jedného TX (numLoops chirpov) spraví Doppler-FFT a stĺpce sa poskladajú cez všetky rámce, čím vznikne mapa
čas × rýchlosť. Prijímače sa nekoherentne sčítavajú (suma cez RX → potlačenie šumu); farebná škála je
pevná (0 … −40 dB vzhľadom na maximum spektrogramu). Všetky rozmery, časovanie a osi
berú z radar_cfg (rovnaké vzorce ako BIN2MAT_2944/live_display).
chirpCfg riadkov. Pri štandardnom TDM profile je to počet TX (každý vysielač sa zopakuje raz za
NumTX chirpov), pri non-TDM profile (všetky TX v jedinom chirpCfg) je faktor 1 a použijú sa
všetky chirpy — jednoznačná rýchlosť je potom NumTX-krát vyššia (pri troch TX napr. ±3,0 m/s
namiesto ±1,0 m/s).% spyta sa: workspace/subor -> porovnanie? -> vzdialenosti -> TX -> MTI micro_doppler micro_doppler(cube, cfg) % datove pole z workspace + profil; zvysok dialogom micro_doppler(binFile, cfg) % zo suboru .bin micro_doppler(cube, cfg, [1.5 3 5]) % konkretne vzdialenosti (bez dialogu) micro_doppler(cube, cfg, r, tx, framePeriod_ms, clutter)
Tabuľka 7.11 vysvetľuje každý z nich:
Tabuľka 7.11. micro_doppler — argumenty
| Argument | Význam | Predvolené |
|---|---|---|
src | Zdroj dát: dátové pole [vzorky×RX×chirpy×rámce], cesta k .bin, alebo prázdne → interaktívny výber (workspace / súbor). | — (interaktívne) |
cfgFile | .cfg profil alebo adc_data_LogFile.txt k týmto dátam. Prázdne → naposledy použitý profil (radar_cfg). | [] |
ranges_m | Vektor vzdialeností [m], 1–3 hodnoty (napr. [1.5 3 5]). Prázdne → výber dialógom. | [] |
tx | Index vysielača (1..NumTX) pre Doppler; hodnota 1 zodpovedá TX0 (titulky a dialógy značia 0-based). Prázdne → dialóg, ak NumTX>1. Pri non-TDM profile sa výber neuplatní (použijú sa všetky chirpy). | 1 |
framePeriod_ms | Ručný override periódy rámca [ms] (pre časovú os). Inak z profilu. | z profilu |
clutter | true → potlačenie statiky (MTI). Prázdne → dialóg. | false |
Bez argumentov (alebo keď sa ranges_m vynechá) sa funkcia pýta postupne: (1) zdroj — workspace
(zoznam číselných 3D/4D premenných) alebo súbor .bin; pri súbore si parametre nájde uložené pri ňom
(najprv .cfg v rovnakom priečinku, inak LogFile .txt; keď nie je ani jedno, vypýta si
ich — Cancel = naposledy použitý profil); (2) porovnanie? — či otvoriť porovnávací režim (nižšie);
(3) vzdialenosti — 1–3 zo zoznamu stredov vzdialenostných zložiek (viacnásobný výber Ctrl/Shift, predvolený stred rozsahu);
(4) TX — len pri TDM profile s viacerými vysielačmi (značenie 0-based: TX0, TX1…); pri non-TDM sa nepýta,
lebo sa aj tak použijú všetky chirpy; (5) clutter removal (MTI) áno/nie.
V interaktívnom behu funkcia ponúkne porovnanie: 2 alebo 3 spektrogramy pod sebou, každý s vlastnou dvojicou (vzdialenosť, TX) — dá sa tak porovnať rovnaká vzdialenosť pri rôznych TX, rovnaký TX pri rôznych vzdialenostiach, alebo ľubovoľná kombinácia. TX sa volí len pri TDM profile; MTI sa zvolí raz a platí pre všetky panely. Panely počíta to isté výpočtové jadro s rovnakou farebnou škálou aj osami, takže rozdiely medzi nimi sú priamo porovnateľné (obr. 7.5).
micro_doppler v porovnávacom režime: tri spektrogramy rýchlosť × čas
z toho istého záznamu, rovnaký vysielač (TX0, suma 4 RX), tri vzdialenosti — na 1,19 m a 1,31 m periodický
pohyb (vejáre siahajúce do ±2,5 m/s okolo statickej čiary na 0 m/s), na 0,95 m takmer čistá statika.
Farba je relatívna intenzita (0 … −40 dB vzhľadom na maximum); titulok každého panelu nesie vzdialenosť
(a poradie vzdialenostnej zložky), zvolený TX a počet sčítaných RX — pri zapnutom potlačení statiky by niesol aj značku
| MTI.| MTI..cfg/LogFile.
Vzdialenosti mimo rozsahu 0…Rmax sa vypustia; pri viac než troch sa zobrazia len prvé tri (s varovaním).Funkcia najprv vypíše hlavičku (=== micro_doppler ===, použitý .cfg, rozmer dátového
poľa, dĺžku
záznamu a rozsah vzdialeností — pri zázname kratšom než 100 rámcov aj riadok POZOR), potom riadok
Spracovanie: (suma RX, zvolený TX, počet vzdialeností, prípadné MTI; v porovnávacom režime rozpis
panelov) a na záver Hotovo: s počtom spektrogramov a maximálnou rýchlosťou. Úplný príklad výpisu je
v kapitole 8.9. Nezrovnalosti (nesúlad dátového poľa s profilom, neznáma perióda rámca → 100 ms, orezanie na prvé tri
vzdialenosti) prichádzajú ako štandardné žlté varovania MATLABu.
Pomocná funkcia k BIN2MAT_2944 — pracuje čisto offline nad detekciami, ktoré prehliadač
exportoval do pracovného priestoru (workspace), a zobrazí ich v 3D a v uhlovom priestore azimut × elevácia.
Funkcia show_pc3d nič nemeria ani nepočíta z nespracovaných dát — nemá žiadny režim
v reálnom čase; je to statické zobrazenie hotového výsledku. Vstupom sú detekcie oblaku bodov (PC), ktoré
BIN2MAT_2944 pri pohľade PC ukladá do pracovného priestoru (premenná
pcDetections_mmWS). Otvorí okno s dvoma panelmi: vľavo 3D scatter detekcií (x, y, z; farba =
výška z, radar vyznačený v počiatku), vpravo uhlový priestor azimut × elevácia (farba = vzdialenosť)
s vyznačenou hranicou jednoznačnosti elevácie ±38,7° (vertikálny rozostup 0,8λ → |sin el| ≤ 0,625).
Elevačný uhol si dopočíta ako arkussínus pomeru z/vzdialenosť; osi pravého panelu sú pevné
(azimut ±90°, elevácia ±45°). Slúži ako rýchla priestorová kontrola výsledku PC
bez opätovného spúšťania prehliadača.
show_pc3d % vezme premennu pcDetections_mmWS z workspace show_pc3d(pc) % alebo priamo matica [x y v range az z]
Matica detekcií s aspoň šiestimi stĺpcami (ďalšie sa ignorujú): 1 = x (bočný) [m], 2 = y (pozdĺžny) [m],
3 = v [m/s], 4 = vzdialenosť [m],
5 = azimut [°], 6 = z (výška) [m]. Bez argumentu funkcia siahne po premennej pcDetections_mmWS,
ktorú do workspace ukladá BIN2MAT_2944 v pohľade PC — typický postup je teda:
spustiť prehliadač, prepnúť na PC, potom show_pc3d.
BIN2MAT_2944.Okno je na obrázku 7.6.
show_pc3d: vľavo 3D oblak bodov (farba = výška z, radar vyznačený
trojuholníkom v počiatku), vpravo uhlový priestor azimut × elevácia (farba = vzdialenosť) s červenými
čiarami hranice jednoznačnosti elevácie ±38,7°.Offline prehliadač uložených spracovaných (TLV) záznamov z Demo Visualizera — porovnávanie dvoch rámcov (frames), rozdielové mapy a 3D trajektória pohybu.
Funkcia DAT2MAT_2944 načíta dvojicu súborov z jedného záznamu Demo Visualizera —
.cfg (konfigurácia použitá pri meraní) a .dat (uložený binárny tok spracovaných
TLV dát) — a otvorí interaktívny prehliadač so štyrmi voľne nastaviteľnými panelmi na porovnávanie dvoch
rámcov (frames). Na rozdiel od
BIN2MAT_2944 (kapitola 7.2.b), ktorý rekonštruuje mapy priamo z nespracovaných ADC vzoriek,
tento nástroj len zobrazuje už hotové výsledky, ktoré spracoval samotný radar (cesta spracovaných
dát — pozri kapitolu 1).
clear; clc; close
all; — vymaže všetky premenné v pracovnom priestore MATLABu a zatvorí všetky okná, nielen
svoje vlastné. Pred spustením si ulož rozrobenú prácu.DAT2MAT_2944 % ziadne argumenty; vsetko vyberies v dialogoch
Postupnosť: (1) výber .cfg súboru; (2) .dat súbor sa automaticky nájde, ak je
v rovnakom priečinku práve jeden — pri viacerých sa zobrazí zoznam na výber, pri žiadnom sa vypýta ručne.
Na rozdiel od BIN2MAT_2944 tu nie je automatické načítanie parametrov zo sprievodného súboru —
všetko príde z vybraného .cfg.
Popri štandardných riadkoch (channelCfg, profileCfg, frameCfg,
aoaFovCfg) číta aj komentárové riadky, ktoré do exportovaného profilu vkladá samotný
Visualizer (% Range Resolution(m):, % Maximum unambiguous Range(m):,
% Maximum Radial Velocity) — ak sú prítomné, nahradia hodnoty prepočítané z
profilu, aby osi grafov presne sedeli s tým, čo Visualizer ukazoval pri meraní.
Štyri panely (2×2 mriežka), každý s vlastným rozbaľovacím menu; k dispozícii sú tri rodiny pohľadov, každá v troch variantoch A / B / Diff (Scatter3D namiesto Diff ponúka Traj — trajektóriu); prehľad je v tabuľke 7.12:
Tabuľka 7.12. DAT2MAT_2944 — panely a režimy porovnávania
| Rodina | A / B | Diff / Traj |
|---|---|---|
| RD | Range-Doppler mapa rámca A alebo B. | Rozdielová mapa A−B, s prekreslenou trajektóriou lokálnych RD maxím medzi rámcami. |
| RA | Range-angle mapa (bočná/pozdĺžná vzdialenosť) rámca A alebo B. | Rozdielová mapa A−B, s trajektóriou lokálnych RA maxím. |
| Scatter3D | 3D oblak bodov (PC) rámca A alebo B, s vyznačeným referenčným bodom. | Traj: prekryté PC oboch rámcov + 3D trajektória referenčného bodu cez všetky rámce medzi A a B. |
| RP | Range profil rámca A alebo B. | Diff tu nie je rozdiel, ale prekrytie oboch kriviek v jednom grafe (praktickejšie na porovnanie ako čistý rozdiel). |
Rozloženie panelov je na obrázku 7.7.
RP(A) s označeným peakom, RD(A),
Scatter3D(Traj) (trajektória referenčného bodu medzi rámcami A=1/61 a B=56/61) a RA(A)
v režime dv_like. Tlačidlá Save/Save MAT/Play/Stop sú zarovnané na výšku a pozíciu príslušného
posuvníka (Frame A, resp. Frame B).Tlačidlo Compare Motion jedným klikom nastaví všetky štyri panely na porovnávaciu zostavu
(RD(Diff), RA(Diff), Scatter3D(Traj), RP(Diff)) — výsledok je na obrázku 7.8. Rozbaľovacie menu RA mode prepína medzi
dv_like (32 uhlových binóv, bez okna, lineárna škála — ako pôvodne ukazoval Visualizer) a
full_va (72 binóv, Hannovo okno, dB škála — jemnejšie, ale už nezodpovedá pôvodnému zobrazeniu).
RD(Diff) a
RA(Diff) ukazujú rozdielové mapy s vyznačenými peakmi A aj B a prekreslenou trajektóriou (ružová
čiara); Scatter3D(Traj) vľavo dole ukazuje 3D trajektóriu referenčného bodu, RP(Diff)
vpravo dole prekrytím kriviek A a B, kde sa range profily naprieč meraním zhodujú a kde nie.Scatter3D(A/B) a jeho poloha naprieč všetkými rámcami medzi A a B tvorí 3D trajektóriu
v Scatter3D(Traj). Osi Scatter3D majú pevnú mierku spočítanú z celého
záznamu (všetky rámce), aby sa obraz pri prehrávaní alebo posune A/B neposkakoval.Zvyšné prvky sú v tabuľke 7.13:
Tabuľka 7.13. DAT2MAT_2944 — ostatné ovládanie
| Prvok | Funkcia |
|---|---|
| Frame A / Frame B (posúvníky) | Nezávislý výber dvoch rámcov na porovnanie; prehodenie ich poradia (A po B alebo naopak) len otočí smer trajektórie. |
| Play / Stop | Automatické posúvanie rámca A rýchlosťou danou framePeriodicity_ms zo .cfg. |
| Save | Uloží aktuálny rámec (všetky mapy, osi aj referenčný bod a trajektóriu) do base workspace pod krátkymi názvami (PCl, RP_dB, RD_map, RA_map, trajXYZ…). |
| Save MAT | To isté, ale zapísané priamo do .mat súboru. |
Dvojpanelový prehliadač v reálnom čase (live viewer) spracovaných (TLV) dát priamo z radaru cez UART — súbežne aj prepisovanie CLI parametrov v reálnom čase (clutter, CFAR, celý profil merania).
Funkcia LIVE_DAT2MAT_2944 je ekvivalentom DAT2MAT_2944
(kapitola 7.3.a), ktorý ale pracuje v reálnom čase — rovnaké TLV dekodéry, ale namiesto čítania uloženého .dat pripojí dva
sériové (UART) porty priamo na radar: CLI/config port (posiela .cfg príkazy) a
DATA port (prijíma TLV tok). Toto je odlišný fyzický spôsob prenosu než u awr2944_dca/
BIN2MAT_2944/live_display, ktoré idú cez DCA1000 (Ethernet) — tu spracovanie
prebieha na čipe radaru a von sa posiela už hotový výsledok (cesta spracovaných dát, kapitola 1), oboma
smermi po UART. Okno zostane otvorené (funkcia beží v slučke), kým ho nezavrieš alebo nestlačíš Q;
po zatvorení vráti štruktúru session (posledný rámec, počet rámcov, použité porty a profil).
LIVE_DAT2MAT_2944 % vsetko interaktivne (vyber profilu aj portov)
LIVE_DAT2MAT_2944("CfgProfile","4RX_3TX_EL") % vstavany profil, porty sa opytaju
LIVE_DAT2MAT_2944("CfgFile","moj.cfg", "ConfigPort","COM7", "DataPort","COM8")
Argumenty sú dvojice Name, Value (rovnaký zápis ako pri awr2944_dca, poznámka
Konvencie zápisu na začiatku kapitoly 6); všetky sú voliteľné, chýbajúce sa vypýtajú dialógom (tabuľka 7.14).
Tabuľka 7.14. LIVE_DAT2MAT_2944 — kľúčové argumenty
| Argument | Význam | Predvolené |
|---|---|---|
CfgFile | Cesta k vlastnému .cfg. | "" — vypýta sa |
CfgProfile | Názov vstavaného profilu (tabuľka 7.15) — zapíše sa ako LIVE_PROFILE_<id>.cfg do CfgStartDir. | "" |
ConfigPort, DataPort | Dva rôzne UART porty — CLI/config a samostatný DATA. | "" — vypýtajú sa |
RememberLastCfg | Zapamätá si naposledy použitý externý .cfg (cez setpref) na ďalšie spustenie. | true |
LeftPanel, RightPanel | Počiatočný režim každého panelu: RA/RD/RP/PC/RA SUM. | "RD", "RA" |
BaudRate, ConfigBaudRate | Rýchlosť DATA (3125000) a CLI (115200) portu. | ako uvedené |
Ďalšie voliteľné argumenty (uhlové FFT bin, okno, farebné rozsahy PC, tempo dotazovania portu…) menia jemné detaily zobrazenia; predvolené hodnoty sú vo väčšine prípadov v poriadku.
Namiesto vlastného .cfg možno použiť jeden zo šiestich hotových profilov (zvyšné štyri sú
aliasy na 4RX_3TX_AZ, líšia sa len tým, ktorá TX podmnožina sa neskôr použije pre RA — prehľad v tabuľke 7.15):
Tabuľka 7.15. LIVE_DAT2MAT_2944 — vstavané profily
| CfgProfile | channelCfg (RX/TX) | Poznámka |
|---|---|---|
4RX_4TX_EL | 15 / 15 (všetky 4 TX) | Všetky pohľady vrátane elevácie. |
4RX_3TX_EL | 15 / 7 (TX0,TX1,TX2) | Elevačný TX1 aktívny. |
4RX_3TX_AZ | 15 / 13 (TX0,TX2,TX3) | Čisto azimutový (bez elevácie); základný profil pre 1TX/2RX1TX aliasy. |
4RX_2TX_AZ | 15 / 5 (TX0,TX2) | Dva azimutové TX. |
4RX_1TX_AZ_TX<n> alebo 2RX_1TX_AZ_TX<n> použijú rovnaký profil ako
4RX_3TX_AZ (radar teda naďalej vysiela zo všetkých troch TX), no funkcia z názvu .cfg
súboru rozpozná režim spracovania RA a v mape RA použije virtuálne kanály len jedného TX (prípadne
len dvoch RX) — užitočné na diagnostiku jedného vysielača/prijímača bez zásahu do merania. Pre vlastný
.cfg tento režim funkcia základne odvodí z jeho cesty/názvu súboru — inak ostáva
FULL (všetky TX).Dva samostatné panely (vľavo, vpravo), každý s vlastným rozbaľovacím menu s piať možnosťami:
RA, RD, RP, PC (2D alebo 3D podľa toho, či je aktívny elevačný
TX1), a RA SUM — súčet RA mapy cez všetky uhly, teda v podstate range profil zostavený z RA
spájania namiesto priameho RP TLV.
PC a druhý niečo iné
(RA/RD/RP/RA SUM), funkcia nájde najsilnejšie miesto v tom druhom paneli a v PC vyznačí
červeným krúžkom detekciu s najbližšou vzdialenosťou k tomuto miestu — oba panely tak vždy ukazujú
ten istý cieľ, bez ručného hľadania (obr. 7.9).
RD s vyznačeným peakom, vpravo PC s
zodpovedajúcou detekciou vyznačenou rovnakým krúžkom („PC matches: 1“ v stavovom riadku). Stavový riadok
dole zhrňuje všetko podstatné naraz: rámec, veľkosť paketu, aktívne TLV typy, použitý profil, počet binóv
RD, režim spracovania RA, stav clutter removal a CLI.Tlačidlo CLI Command otvorí dialóg s krátkym zoznamom preset príkazov — clutterRemoval
(0/1) a cfarCfg (samostatný formulár pre range aj Doppler CFAR s validáciou vstupov pred
odoslaním). Tlačidlo Radar Setup otvorí väčší dialóg s troma vstupnými skupinami —
Range causes (ramp end, sklon, vzorkovanie, ADC start, počet vzoriek), Velocity causes (počet
slučiek, perióda rámca) a RF / Timing (štartovacia frekvencia, idle time, TX start, RX zisk) — a
dvomi výstupnými panelmi, ktoré sa pri každej zmene priebežne prepočítajú: Derived (šírka pásma,
rozlíšenie a maximálny dosah, počet range aj Doppler binóv, maximálna a rozlišovacia rýchlosť…) a
Checks (zoskupené kontroly platnosti — šírka pásma, celý rozmiet zachytený, ADC okno, vzťah okna
k rampe…, nižšie aj „praktické limity“) — tlačidlo Apply je vypnuté, kým je čo i len jedna kontrola neplatná (obr. 7.10).
RA panel (Polar Range Azimuth) — dialóg neblokuje hlavné okno, meranie počas úpravy pokračuje ďalej.clutterRemoval) nezasahuje do bežiaceho merania priamo — zapíše nový pracovný <profil>_LIVE_WORK.cfg, zastaví senzor, pošle celú novú konfiguráciu a znova ho spustí. Rýchlejšia
„za behu“ úprava (bez reštartu) sa v kóde vyskúšala, no ukázala sa nespoľahlivá (senzor po nej niekedy prestal
streamovať) — preto zostal len tento pomalší, ale spoľahlivý postup.Zvyšok ovládania zhŕňa tabuľka 7.16:
Tabuľka 7.16. LIVE_DAT2MAT_2944 — ostatné ovládanie
| Prvok | Funkcia |
|---|---|
| Start / Stop | Spustí, resp. zastaví senzor (aj klávesová skratka S na prepnutie). |
| Save WS | Uloží aktuálny rámec do base workspace (klávesová skratka W). |
| Save MAT | To isté priamo do .mat súboru. |
| Workspace Viewer | Otvorí samostatné okno s naposledy uloženým snímkom (aktívne, len ak už bolo niečo uložené). |
| Quit | Zastaví senzor, uvoľní oba porty a zatvorí okno (klávesová skratka Q). |
Popri okne funkcia počas behu vypisuje do príkazového riadka MATLABu diagnostické správy (pri predvolenom
Verbose = true):
[CFG] <riadok> — každý riadok .cfg poslaný do radaru, pri KAŽDOM (opätovnom)
štarte senzora — teda aj po CLI Command/Radar Setup, keďže obe robia plný reštart (vyššie).[DUAL] New TLV signature: <typy> a k tomu zoznam TLV n: type=X len=Y —
vypíše sa len raz, pri prvom výskyte danej kombinácie TLV typov v pakete; užitočné na overenie, čo
presne radar posiela.[DUAL] ... attempt N/M ... — ak sa senzor pri štarte nerozbehne na prvý pokus (chýbajúce dáta
na DATA porte), funkcia to skúsi znova (až StartDataRetryCount-krát, predvolene 5) a každý
pokus ohlási.Tlačidlá Save WS/Save MAT po úspešnom uložení vypíšu jednoduché potvrdenie
(Current live frame was saved..., resp. cestu k .mat súboru).
DAT2MAT_2944. Tento nástroj dekóduje užší súbor typov TLV
(1, 2, 4, 5, 7 — point cloud, range profil, RA, RD, side info); novšie typy (301/302, 6/306) nespracúva. Pre záznamy
z mmw demo aktuálnej verzie to stačí; ak by .dat záznam z Demo Visualizera obsahoval len novšie
typy, treba siahnuť po DAT2MAT_2944, ktorý ich pozná oba.Tieto funkcie používa awr2944_dca vnútorne — väčšinou sa nevolajú priamo, no je dobré vedieť, čo
robia (a hodia sa pri ladení); prehľad je v tabuľke 7.17:
Tabuľka 7.17. Pomocné funkcie toolboxu
| Funkcia | Čo robí |
|---|---|
dca_connect() | Pripojí a nakonfiguruje DCA1000 cez UDP: SYSTEM_CONNECT → READ_FPGA_VERSION → CONFIG_FPGA → CONFIG_RECORD. Vráti štruktúru so soketmi (konfig 4096, dáta 4098), IP a verziou FPGA. |
dca_capture(uart, dca, cfg, outputBin) | Spustí záznam: ARM → sensorStart → priebežne prijíma UDP pakety do pamäte (skladá nespracovaný tok dát typu int16, výpadky vyplní nulami) → sensorStop + STOP_RECORD. Voliteľne zapíše aj .bin. |
awr_sensor_config(uart, cfgFile) | Načíta .cfg a pošle konfiguračné príkazy do radaru po UART (preskočí sensorStart/Stop/flushCfg), naparsuje parametre merania a vypíše súhrn. |
awr_send_cmd(uart, cmd) | Pošle jeden CLI príkaz na radar po UART (ASCII + LF). |
awr_read_lines(uart, maxLines, timeout_s) | Prečíta odpoveď radaru z UART po bajtoch — rýchlo, bez blokovania na prompt mmwDemo:/>. |
awr_log(msg) | Vypíše správu s časovou značkou (ako log v mmWave Studio). |
Úlohové príklady — každý ukazuje jeden scenár: krátky úvod, kód a (kde to dáva zmysel) reálny výstup. Konvencia
blokov kódu je rovnaká ako v 4.5 (tmavé = príkazy, svetlé = výpis). Väčšina príkladov predpokladá vytvorený objekt
src = awr2944_dca.
Prehľad príkladov:
Najzákladnejší scenár: jedno meranie, ktoré vráti dátové pole a uloží ho na disk.
src = awr2944_dca; cube = src.capture(); src.release();
Toolbox sa spýta na profil a COM port, zaznamená a uloží .bin + LogFile do podpriečinka
v Downloads. Podrobný rozbor výstupu (cesta, riadok [validacia], rozmer dátového poľa) je v kapitole 4.5.
Niekoľko meraní v cykle; každé sa vďaka RecordSubfolder uloží do vlastného časového podpriečinka, takže
sa neprepíšu.
src = awr2944_dca;
for k = 1:5
cube = src.capture(); % kazde do vlastneho podpriecinka
fprintf('meranie %d: datove pole %s\n', k, mat2str(size(cube)));
end
src.release();
meranie 1: datove pole [560 4 48 19] meranie 2: datove pole [560 4 48 19] ...
Cieľový priečinok, prefix názvu a možnosť merať len do pamäte (bez zápisu na disk) sa nastavujú cez vlastnosti pred
capture.
src = awr2944_dca; src.RecordLocation = "D:\merania\test1"; % kam ukladat src.RecordFilePrefix = "pokus"; % nazov suboru -> pokus_0.bin cube = src.capture(); src.RecordToFile = false; % len do pamate, na disk sa nic nezapise cubeMem = src.capture(); src.release();
Dátové pole je [vzorka × RX × chirp × rámec], takže jeden chirp jednej antény je priame indexovanie.
Pozor na posun o jednotku: MATLAB indexuje od jednotky, kým antény sa číslujú od nuly (kapitola 2) —
index i v druhom rozmere teda patrí anténe RX(i−1).
chirp1_rx0 = cube(:, 1, 1, 1); % beat signal: RX0 (index 1), 1. chirp,
% 1. ramec -> [560 x 1]
chirp5_rx2 = cube(:, 3, 5, 1); % RX2 (index 3), 5. chirp, 1. ramec
% vsetky chirpy jednej anteny v ramci (napr. RX1 = index 2, ramec 1):
rx1_all = squeeze(cube(:, 2, :, 1)); % [560 x 48]
Prvý index je poradie ADC vzorky v chirpe, druhý prijímacia anténa (1–4, teda RX0–RX3), tretí chirp v rámci, štvrtý rámec.
squeeze odstráni rozmery veľkosti 1.
Pri TDM-MIMO vysiela v každom chirpe iný TX, takže virtuálny prvok je dvojica (TX, RX). V dátovom poli sú chirpy
uložené po slučkách: v slučke L idú za sebou chirpy pre 1., 2., … NumTX-tý vysielač. Index chirpu
vybranej dvojice je preto (L−1)·NumTX + TX.
NumTX = src.NumTX; % napr. 3
TX = 2; RX = 3; L = 1; frame = 1; % 2. vysielac TDM cyklu + RX2
% (index 3), 1. slucka
c = (L-1)*NumTX + TX; % index chirpu v ramci = 2
vchirp = cube(:, RX, c, frame); % beat signal virtualneho prvku -> [560 x 1]
Premenná TX je poradie vysielača v TDM cykle (1..NumTX), nie jeho označenie — ktorý fyzický
vysielač to je, závisí od toho, ktoré sú v profile aktívne. Takto sa dá poskladať celá virtuálna anténna sústava (NumTX × NumRX prvkov) na odhad uhla. Presne tento
de-interleave robí pri offline vyhodnotení aj BIN2MAT_2944.
Uložené meranie sa dá načítať späť do dátového poľa dvomi spôsobmi — pohodlne cez objekt, alebo ručne (keď sú známe rozmery z
LogFile).
% pohodlne:
cube = src.readBin("C:\Users\...\Downloads\awr2944_...\adc_data_Raw_0.bin");
% rucne, bez objektu (rozmery z LogFile):
fid = fopen("adc_data_Raw_0.bin", "r");
d = fread(fid, inf, "int16=>double");
fclose(fid);
nS = 560; nR = 4; nC = 48; % SamplesPerChirp, NumRX, ChirpsPerFrame
nF = floor(numel(d) / (nS*nR*nC));
cube = reshape(d(1:nS*nR*nC*nF), [nS nR nC nF]);
Ručné čítanie kopíruje rozloženie .bin z kapitoly 6 (int16, poradie vzorka → RX → chirp → rámec). Na úplné
prezeranie (range/Doppler/angle) slúži BIN2MAT_2944.
Bez ukladania, len pozorovanie v reálnom čase — stačí live_display s voľbou pohľadu.
live_display % range profil (predvolene), 60 s
live_display('rd') % range-Doppler
live_display('ra', 120) % range-angle, 2 min
live_display('raw') % nespracovany chirp
Okno sa dá zatvoriť kedykoľvek; porty sa korektne uvoľnia. Detaily pohľadov sú v 7.2.a.
Iný profil sa použije buď nastavením ConfigFile, alebo sa najprv upravuje vizuálne v CFG_EDITOR_2944.
% pouzitie konkretneho profilu:
src = awr2944_dca;
src.ConfigFile = "C:\radar\moj_profil_LVDS.cfg";
cube = src.capture();
% alebo vizualna uprava + ulozenie noveho profilu:
CFG_EDITOR_2944("C:\radar\DCA_RX1111_TX1110_TDM.cfg");
Význam jednotlivých polí profilu je v kapitole 5.
Keď je zaznamenaný pohybujúci sa cieľ (chodec, mávanie rukou, rotujúca vrtuľa…), micro_doppler
ukáže, ako sa jeho rýchlostné spektrum na danej vzdialenosti vyvíja v čase. Pracuje offline — nad dátovým poľom
z workspace (z predchádzajúceho capture) alebo nad uloženým .bin. Pre zmysluplný spektrogram
treba dlhší záznam (odporúčame ≥ 100 rámcov), takže profil má mať nastavený vyšší numFrames.
Z dátového poľa vo workspace (interaktívne). Bez ďalších argumentov sa funkcia sama spýta na vzdialenosti, TX a MTI:
src = awr2944_dca; cube = src.capture(); % dlhší záznam (numFrames >= 100) src.release(); micro_doppler(cube); % profil z posledného capture (radar_cfg) -> dialógy
Vyskočia tri dialógy: výber 1–3 vzdialeností zo zoznamu stredov vzdialenostných zložiek (Ctrl/Shift = viac), výber
TX (keď je viac vysielačov) a clutter removal (MTI) áno/nie. Profil sa neuvádza — vezme sa
naposledy použitý (po capture ho má radar_cfg v pamäti).
Zo súboru .bin. Prvý argument môže byť priamo cesta k záznamu; profil/LogFile si funkcia nájde vedľa neho:
f = "C:\Users\<ty>\Downloads\awr2944_2026-06-03_18-20-11\adc_data_Raw_0.bin"; micro_doppler(f);
Neinteraktívne (skript). Vzdialenosti, TX, periódu a MTI sa zadávajú argumentmi — žiadne dialógy. Tu dve vzdialenosti, prvý vysielač a zapnuté potlačenie statiky:
micro_doppler(cube, "DCA_RX1111_TX1110_TDM.cfg", [1.5 3.0], 1, [], true);
Poradie argumentov je src, cfgFile, ranges_m, tx, framePeriod_ms, clutter. Prázdne [] pre
framePeriod_ms znamená „vezmi periódu z profilu“; true na konci zapína MTI.
=== micro_doppler === .cfg: C:\radar\DCA_RX1111_TX1110_TDM.cfg Datove pole: [560 x 4 x 48 x 150] (vzorky x RX x chirpy x ramce) Zaznam: 150 ramcov x 100 ms = 15.0 s Rozsah vzdialenosti: 0 .. 12.21 m (krok ~4.4 cm). Spracovanie: suma 4 RX, TX0 (z 3), 2 vzdialenost(i), MTI (potlacena statika). Hotovo: 2 spektrogram(ov), max rychlost +/- 0.99 m/s.
Vykreslí sa jedno okno s jedným spektrogramom na každú vzdialenosť (čas na vodorovnej, rýchlosť na zvislej osi, farba = intenzita v dB). RX sa nekoherentne sčítavajú (potlačenie šumu); vybraný TX určuje, ktoré chirpy sa použijú (rôzne fázové stredy → mierne odlišné spektrogramy).
| MTI. Ak treba
vidieť aj statiku, necháva sa vypnutý (predvolené). Pri menej než 100 rámcoch funkcia upozorní, že spektrogram bude
v čase hrubý — osi a výpočty sú rovnaké ako v BIN2MAT_2944 (spoločný radar_cfg).Cieľom scenára je zmerať okrem polohy cieľa vo vodorovnej rovine (bočný × pozdĺžny rozmer, ako ju
dávajú azimutové vysielače) aj jeho výšku z. Výšku dodáva interferometria
elevačného vysielača TX1 — profil ho musí mať aktívny (predvolený
DCA_RX1111_TX1110_TDM.cfg ho má; čisto azimutové profily ako 4RX_3TX_AZ nie).
Výška sa počíta len pri splnenej podmienke platnosti výšky (|azimut| ≤ 6° a SNR nad prahom) —
prečo, vysvetľujú poznámky v 7.2.a a 7.2.b; tu je praktický postup.
Offline vyhodnotenie (odporúčané pre presnú výšku). Statická scéna, cieľ blízko osi radaru (v ideálnom prípade do ±3° azimutu):
src = awr2944_dca; % predvoleny profil ma elevacny TX1 cube = src.capture(); % staticka scena, ciel blizko osi src.release(); BIN2MAT_2944; % otvorit zaznam (.bin + LogFile z Downloads) % v prehliadaci: View -> PC, PC mode -> "2D+elev (prah > 15)" alebo "3D", % Frame -> posledna poloha posuvnika = AVG ramec show_pc3d; % 3D kontrola + uhlovy priestor azimut x elevacia
Kľúčové voľby v prehliadači: pohľad PC, režim 2D+elev alebo 3D s prahom
(> 15/20/25 — vyšší prah = menej bodov, ale spoľahlivejšia výška) a AVG rámec:
koherentný priemer cez všetky úplné rámce zdvihne pri statickej scéne SNR o ≈ 10·log10(N) dB,
takže podmienkou platnosti prejde viac bodov a výška je stabilnejšia. Rýchlu priestorovú kontrolu dá
show_pc3d (7.2.e) — v pravom paneli vidno aj hranicu jednoznačnosti elevácie ±38,7°.
V reálnom čase. Na živé pozorovanie výšky slúžia pohľady pcelev (čelný: bočný
rozmer × výška) a pc3d; piaty argument elevSnrThr sprísni SNR prah výšky:
live_display('pcelev') % celny pohlad, farba = vzdialenost
live_display('pc3d', 60, 15, 'multi') % 3D, viacbodovy rezim
live_display('pcelev', 60, 15, 'peak', 20) % prisnejsi prah (elevSnrThr = 20)
Čo čakať. Kalibračná kampaň s rohovým odrážačom ukázala dôveryhodné výšky do ±3° azimutu
a nespoľahlivé od ±13,4°; prevádzková hranica podmienky je konzervatívnych 6°. Kalibrácia fáz aj škála
elevácie (1,20) sú zabudované (radar_cfg, 7.1.b); absolútna presnosť výšky overená na
nivelovaných záznamoch s rohovým odrážačom (1,9–4 m) je ±2–3 cm. Body mimo podmienky majú z = NaN:
v pohľade zhora ostanú bez farby výšky, v čelnom/3D sa nevykreslia — nie je to porucha, ale oznámenie,
že výška pre ten bod nie je známa.
Výsledok je na obrázku 8.1.
show_pc3d: rohový odrážač s vrcholom +10 cm nad úrovňou
radaru na ≈ 1,95 m, nivelovaná zostava (záznam G2 kalibračnej kampane). Nameraná výška bodu je
z ≈ +0,12 m — v pásme absolútnej presnosti ±2–3 cm; v uhlovom priestore vpravo bod leží na elevácii ≈ +3,7°,
hlboko vnútri hraníc jednoznačnosti ±38,7°.> 15), bližší/väčší cieľ, alebo AVG rámec; pohyblivá scéna →
AVG rámec nepoužívať (koherentný priemer predpokladá statiku), vyhodnotiť jednotlivé rámce.Princíp interferometrie, kalibračná kampaň a rekalibračný postup sú v Radary v automobiloch: metodika merania a zadania, kapitoly 8 až 13.
Fyzikálne princípy merania (čo znamenajú namerané čísla) rozobrala kapitola 2. Táto kapitola je o inom: ako je toolbox postavený zvnútra — akými linkami komunikuje s hardvérom, ako presne vyzerá komunikačný protokol, a napokon, súbor po súbore, prečo je kód napísaný tak, ako je. Nie je nevyhnutná na bežné používanie — je pre toho, kto chce rozumieť vnútornostiam alebo niečo v toolboxe upravovať.
Táto kapitola sleduje tok dát — cestu, ktorou číselné vzorky putujú toolboxom — od profilu, cez konfiguráciu radaru a zber z karty DCA1000, až po zobrazenie. Mapu ukazuje obrázok 9.1; text pod ním ide po jednotlivých súboroch a vysvetľuje nielen čo robia, ale najmä prečo sú napísané tak, ako sú. Pojmy, ktoré sa tu objavia prvýkrát, vysvetľujeme priamo pri prvom použití.
.cfg profilu cez objekt awr2944_dca, dvoma linkami (UART do radaru, UDP do
karty DCA1000) k nespracovanému toku, jeho preskladanie do dátového poľa a vejár výstupov. Modul radar_cfg dodáva
osi všetkým zobrazeniam.Toolbox riadi zostavu cez tri linky: jednu sériovú (konfigurácia radaru) a dve sieťové (riadenie a dáta z DCA1000) — prehľad v tabuľke 9.1.
Tabuľka 9.1. Linky prenosovej vrstvy
| Linka | Smer | Na čo |
|---|---|---|
UART (XDS110, J8) | PC → radar | CLI príkazy z .cfg (profil, chirpy, rámec…) |
| UDP 4096 | PC ↔ DCA1000 (FPGA .180) | riadenie DCA (pripojenie, konfigurácia, ARM/stop) |
| UDP 4098 | DCA1000 → PC (.30) | samotný tok ADC dát |
Sekvencia jedného merania:
.cfg a pošle jeho príkazy do radaru
(channelCfg, adcCfg, profileCfg, chirpCfg, frameCfg,
lvdsStreamCfg…); sensorStart/Stop/flushCfg rieši sám.SYSTEM_CONNECT → READ_FPGA_VERSION
→ CONFIG_FPGA (RAW režim, 2-lane, 16-bit) → CONFIG_RECORD.START_RECORD) → sensorStart (po UART) → DCA posiela ADC dáta po
UDP 4098, toolbox ich priebežne prijíma do pamäte → sensorStop + STOP_RECORD.Rámcovanie príkazov DCA. Každý príkaz pre DCA1000 má hlavičku 0x5A 0xA5, kód, dĺžku, dáta a
patičku 0xAA 0xEE; odpoveď príde na port 4096 s hlavičkou 0xA55A a stavovým kódom (0 = OK).
Dátové pakety. ADC dáta chodia na port 4098 v paketoch s 10-bajtovou hlavičkou (4 B poradové číslo + 6 B počítadlo bajtov) a 1456-bajtovou užitočnou časťou. Poradové číslo slúži na detekciu výpadkov — chýbajúce pakety toolbox vyplní nulami, aby ostali zachované rozmery.
Tie isté parametre, ktoré určujú fyzikálne vlastnosti merania, sa premietajú aj priamo do osí grafov,
ktoré vykresľujú plot_chirp a live_display — nie je to náhoda, obe vychádzajú z tých
istých vzorcov kapitoly 2.3.
Os dosahu (v range-FFT, range profile, aj v range-Doppler a range-angle mapách) určujú
fs a sklon rovnako ako pri výpočte maximálneho dosahu vyššie — siaha teda po
≈ c·fs/(4·sklon). Viac ADC vzoriek (numAdcSamples) znamená viac bodov range-FFT,
a teda hustejšiu, jemnejšie vykreslenú os — nie však jemnejšie fyzikálne rozlíšenie, to určuje
šírka pásma (kapitola 2.3).
Os rýchlosti v range-Doppler mape vychádza z startFreq (cez vlnovú dĺžku λ), z periódy chirpu idleTime+rampEndTime (cez PRF) a z počtu slučiek numLoops. Nad rámec fyzikálneho rozlíšenia sa os navyše dodatočne zjemňuje zero-paddingom na aspoň 128 Doppler bodov — presne tak, ako pri range-FFT dopĺňanie nulami nepridáva informáciu, len hustejšie vzorkuje ten istý priebeh.
Os uhla v range-angle mape je iného druhu — nie je to jedna číselná os, ale priestorová mapa daná
geometriou virtuálnej anténnej sústavy (počtom prvkov NumTX·NumRX a ich vzájomnými
rozostupmi). Rozsah je −90° až +90°, zobrazený ako bočný × pozdĺžny dosah — teda ako pôdorys scény, nie
ako jednoduchý graf hodnota-verzus-uhol.
Hlavná trieda je v MATLABe takzvaný handle objekt — to znamená, že premenná src nie je
samotný objekt, ale len odkaz (referencia) naň: keď sa priradí inej premennej, obe ukazujú na ten istý objekt v
pamäti a metóda mení práve ten jeden. Vďaka tomu drží objekt počas celého merania otvorené spojenie (sériový port a sieťové
linky) a postupne v ňom mení svoj stav. Keď premenná zanikne (alebo sa zavolá clear), MATLAB sám spustí metódu
delete, ktorá zavolá release a uvoľní porty — takže aj keď sa zabudne na release, spojenie
sa nakoniec poupratuje.
Vlastnosti objektu sú zámerne rozdelené do troch skupín podľa toho, kto a kedy ich smie meniť: nastaviteľné (konfigurácia, ktorá sa zadáva — profil, kam ukladať a pod.), iba na čítanie (parametre merania, ktoré si trieda sama odvodí z profilu) a súkromné (vnútorné spojenia a pomocné premenné, ku ktorým zvonka nie je prístup). Toto rozdelenie chráni pred omylom prepísanou hodnotou, ktorú má dopočítať trieda.
Pri vytvorení konštruktor prejde zadané dvojice Name, Value (každú overí, či taká vlastnosť existuje,
neznámu len ohlási varovaním), doplní predvolené hodnoty (prázdny ConfigFile → DCA_RX1111_TX1110_TDM.cfg
ležiaci vedľa triedy; prázdny RecordLocation → priečinok Downloads) a zavolá vnútornú funkciu
parseCfgDims. Tá načíta .cfg a odvodí z neho parametre merania: počet prijímačov a vysielačov (z počtu
jednotiek v anténnych maskách), počet vzoriek na chirp, bitovú hĺbku, počet chirpov na rámec
((chirpEnd − chirpStart + 1) × loops) a počet rámcov. Parametre teda objekt pozná ešte pred meraním —
a prepočíta ich pri každom capture/startLive, ak sa medzitým vymení profil.
Metóda capture spraví jeden záznam naraz — zmeria, vráti dáta a (ak treba) uloží — a je tak
náprotivkom záznamu v reálnom čase (nižšie). Pri prvom volaní si najprv sama prichystá spojenia: vyberie profil,
otvorí sériový port, pošle konfiguráciu do radaru a pripojí kartu DCA1000 (ďalšie volania to už nerobia). Potom prebehne samotný zber a jeho výsledok — jeden dlhý tok 16-bitových celých čísel —
vnútorná funkcia reshapeRaw preskladá do dátového poľa s rozmermi [vzorky na chirp × prijímače ×
chirpy na rámec × rámce], napríklad [560 × 4 × 48 × 19]. Počet úplných rámcov si dopočíta z dĺžky toku;
posledný rámec býva neúplný, lebo zber sa zámerne zastaví krátko pred koncom (okolo 98 %), a to je normálny stav —
varovanie príde až vtedy, keď chýba viac než jeden rámec. Ak je zapnuté ukladanie, objekt zapíše .bin spolu
s popisným adc_data_LogFile.txt a vedľa nich aj kópiu použitého .cfg, aby nadväzujúce nástroje
(napr. micro_doppler) našli profil priamo pri zázname.
LogFile presnou inverziou čítania profilu. Aby bol výstup čitateľný
prehliadačom BIN2MAT_2944, objekt k nemu zapíše popisný súbor adc_data_LogFile.txt vo formáte,
aký používa mmWave Studio. Tento formát neukladá hodnoty v bežných jednotkách (GHz, µs), ale ako celé čísla —
násobky drobných merných konštánt prístroja (najmenších krokov, v ktorých vie meniť frekvenciu, sklon a časy).
writeLogFile preto hodnoty z .cfg spätne prepočíta na tieto konštanty (frekvenciu a sklon
cez ich merné konštanty, časy násobí stom) — je to presný opak toho, ako ten istý log neskôr číta
radar_cfg aj BIN2MAT_2944. Jedna jemnosť: do logu zapíše skutočný počet úplných rámcov
v súbore (zistený z jeho veľkosti), nie počet z konfigurácie. Keby tam totiž bol konfiguračný počet (napr. 32) a v
súbore je pre zastavenie na 98 % len 31 úplných rámcov, prehliadač by delil počet chirpov nedeliteľným číslom a pri
viacerých vysielačoch (TDM) by zlyhal. Je to tichá, ale dôležitá poistka, aby sa náš výstup vždy otvoril.V režime záznamu v reálnom čase radar beží nepretržite a rámce sa čítajú jeden po druhom. startLive použije ten istý
profil, len v ňom prepíše počet rámcov na 0 (nekonečne), pripraví kartu a spustí senzor. Každé volanie
readFrame potom vráti práve jeden ďalší rámec. Lenže dáta po sieti neprichádzajú po celých rámcoch, ale po
malých kúskoch — paketoch (podrobne v 9.4) — a jeden rámec sa zvyčajne rozloží do mnohých paketov. Preto si
objekt medzi volaniami pamätá rozrobený rámec v niekoľkých vnútorných premenných (nazvime to stav toku): koľko
z rámca už prišlo, aké bolo posledné poradové číslo paketu a aký kúsok bajtov ostal navyše. readFrame tento
stav dopĺňa, kým nemá pokope celý rámec, a až ten vráti. Na konci release (alebo automatické
delete) uvoľní sieťové aj sériové spojenie.
Táto dvojica funkcií komunikuje priamo s hardvérom karty DCA1000 — dca_connect ju pripojí a
nakonfiguruje, dca_capture z nej preberá dáta. Stručne boli uvedené v 7.4; tu je dôležité, akými
správami a v akom poradí to celé prebieha.
Každý príkaz pre kartu DCA1000 sa posiela v pevnej obálke bajtov: začína dvojicou 5A A5,
nasleduje kód príkazu a dĺžka dát (každé ako dva bajty, pričom nižší bajt ide prvý — toto poradie sa volá
little-endian), potom samotné dáta a na konci dvojica AA EE. Odpoveď karty príde na ten istý
port, na ktorý sa príkaz poslal (4096). Spojenie sa nadviaže krátkou úvodnou výmenou (handshake) —
postupnosťou príkazov, ktorou sa PC s kartou „dohodne“ a nastaví ju do správneho režimu, presne v poradí, aké
používa aj nástroj od TI:
0x09 SYSTEM_CONNECT -> 0x0E READ_FPGA_VERSION -> 0x03 CONFIG_FPGA -> 0x0B CONFIG_RECORD
Payload CONFIG_FPGA je [1, 2, 1, 2, 3, 30] = LogMode 1 (RAW), LvdsMode 2, XferMode 1,
CaptureMode 2 (Ethernet), FormatMode 3 (16-bit), Timer 30. Odpoveď sa overuje na rámec 0xA55A…
0xEEAA a stav 0 = OK (čítanie verzie sa akceptuje aj inak).
CONFIG_FPGA vyššie: hodnota 2 znamená
dve fyzické LVDS linky (štandard pre AWR2944).LogFile
zapíše LaneConfig 1) a prehliadač BIN2MAT_2944 ho tak aj číta. Že je to správne, dokazujú
korektne dekódované merania.Zber prebieha najprv do pamäte (po anglicky memory-first): vopred sa naalokuje bajtový buffer (vyrovnávacia pamäť) s rezervou (očakávané bajty ×1,05) a dáta sa skladajú
priamo v pamäti — .bin je až voliteľný výstup. Poradie: ARM (START_RECORD 0x05) →
sensorStart (UART) → príjem paketov (10 B hlavička: 4 B poradové číslo + 6 B počítadlo, 1456 B dáta)
→ sensorStop + STOP_RECORD 0x06. Dva detaily, ktoré treba vidieť: pri výpadku (skok
v poradovom čísle) sa zapisovací index posunie o chýbajúce bajty — a keďže buffer je vynulovaný, stratené pakety sú
automaticky nuly na správnom mieste (zachované časovanie); záznam sa zastaví pri ~98 % očakávaných dát
(preto posledný rámec býva neúplný) alebo po 30 s. Na záver sa nazbierané bajty reinterpretujú ako 16-bitové celé čísla (int16) — bez prepočtu, len iný pohľad na tie isté bajty.
awr_sensor_config načíta .cfg, riadok po riadku pošle do radaru (preskočí komentáre a
sensorStart/sensorStop/flushCfg, ktoré rieši toolbox sám), pri každom príkaze prečíta
odpoveď a hľadá v nej Error/Fail. Nakoniec naparsuje parametre pre výpis veľkosti .bin a
zavolá radar_cfg(cfgFile) — tým si profil zapamätá ako posledný, aby sa nadväzujúce nástroje dali
volať bez opätovného zadávania profilu. awr_send_cmd je len writeline (ASCII + LF).
mmwDemo:/>
bez koncového \n. Blokujúce readline by preto na každom príkaze čakalo na nový riadok až do
timeoutu portu (~5 s). awr_read_lines miesto toho číta bajty priamo (read vráti hneď, čo je k
dispozícii) a skončí hneď po detekcii Done/Error/Fail/promptu — ~50 ms na príkaz
namiesto ~5 s. Buffer potom rozdelí na riadky (CRLF/CR/LF) a holý prompt zahodí.Referencia (7.1.b) hovorí, čo radar_cfg vracia; tu je podstatné prečo existuje. Všetky nástroje
(live_display, plot_chirp, micro_doppler, CFG_EDITOR_2944) berú parametre aj
vzorce osi z jedného modulu — aby sa nikde nelíšili. (Práve preto je TDM konvencia rýchlosti, PRF ÷ NumTX,
v celej vetve jednotná a fyzikálne správna.)
Modul číta dva formáty: z .cfg berie hodnoty priamo z polí, z LogFile ich
spätne prepočítava z mmWS konštánt — čo je presná inverzia writeLogFile z 9.3 (a v logu je navyše poradie
TX/RX opačné než v .cfg). Odvodené veličiny: NfftR = 2^nextpow2(numAdc) a os dosahu;
NfftD = max(128, 2^nextpow2(loops·8)) (zero-padding pre jemnú Dopplerovu os) a os rýchlosti s
Teff = numTx·Tr. Naposledy použitý profil drží v persistent premennej — prežije v rámci relácie aj
medzi nimi, takže radar_cfg() bez argumentu vráti posledný profil.
Spoločné všetkým trom: parametre aj osi berú z radar_cfg, takže ich výstupy sú číselné totožné
s offline vyhodnotením v BIN2MAT_2944.
live_display si sám vytvorí objekt awr2944_dca s vypnutým ukladaním, spustí záznam
v reálnom čase a v slučke číta rámce; pre zvolený pohľad z každého rámca spočíta príslušnú transformáciu a okno
priebežne prekresľuje. Pri pohľade na uhol (range-angle) použije beamforming — spájanie signálov z jednotlivých
antén s vhodnými fázovými posunmi tak, aby virtuálna anténna sústava „počúvala“ do zvoleného smeru; z porovnania smerov vznikne
uhlová mapa (fyzikálny princíp aj vzorce sú v kapitole 2.2). Beh skončí zatvorením okna alebo po uplynutí nastaveného času a v oboch prípadoch korektne uvoľní porty.
plot_chirp nakreslí jeden chirp v dvoch grafoch nad sebou: hore časový priebeh všetkých
prijímačov, dole jeho range-FFT v decibeloch. Pred FFT prenásobí úsek Hannovým oknom (váhovacie okno pomenované
po J. von Hannovi — v anglickej literatúre často nesprávne „Hanning“ — ktoré zjemní okraje úseku, a tým potlačí
falošné bočné laloky spektra) a použije zero-padding (doplnenie vstupu FFT nulami: nepridá novú informáciu, ale
dá hustejšiu, plynulejšiu os) na dĺžku Nfft = 2^nextpow2(max(numAdc, 1024)). Najsilnejší odraz hľadá na
prvom prijímači, pričom potlačí jednosmernú zložku (DC — konštantný posun, ktorý by inak prekryl blízke ciele).
Ak sa nezadá vzorkovacia frekvencia ani sklon, vezmú sa z radar_cfg() — po bežnom capture teda
netreba zadať nič.
micro_doppler stavia spektrogram — mapu toho, ako sa rýchlostné spektrum mení v čase.
Pre zvolenú vzdialenostnú zložku (jeden prvok range-FFT, teda jednu konkrétnu vzdialenosť) spraví v každom
rámci Doppler-FFT cez chirpy jedného vysielača (numLoops chirpov) a tieto stĺpce poskladá za sebou cez
všetky rámce. Prijímače sa nekoherentne sčítajú: spočítajú sa ich veľkosti (nie komplexné hodnoty aj s fázou),
čím sa cieľ zvýrazní a šum potlačí. Voliteľné potlačenie statiky (MTI z 7.2.d) ešte pred Doppler-FFT odčíta nehybnú
zložku. Osi vzdialenosti, rýchlosti aj času sú opäť z radar_cfg.
dca_capture (pamäť)
cez reshapeRaw (dátové pole) až do zobrazenia, pričom všetky fyzikálne osi pochádzajú z jediného miesta
(radar_cfg). Preto sa toolbox dá rozširovať bez rizika, že sa mierky rozídú — nový nástroj len siahne po
radar_cfg.Táto kapitola zhromažďuje to, čo sa pri reálnom používaní najčastejšie pokazí, v čom sa líšia operačné systémy a kde sú hranice toolboxu.
Najčastejšie príznaky a ich pravdepodobné príčiny sú v tabuľke 10.1:
Tabuľka 10.1. Najčastejšie príznaky a ich pravdepodobné príčiny
| Príznak | Pravdepodobná príčina a riešenie |
|---|---|
| Žiadny sériový port, radar sa neozýva | Zlý alebo obsadený COM port. Treba skontrolovať správny UART v Správcovi zariadení a zavrieť iné nástroje (mmWave Studio, predchádzajúcu reláciu MATLABu), ktoré port držia. |
Karta DCA sa nepripojí (SYSTEM_CONNECT bez odpovede) | IP sieťovej karty nie je
192.168.33.30, alebo port 4096 drží iný program. Treba overiť IP a zavrieť DCA CLI / mmWave Studio. |
Na dátový port (4098) nepríde nič | LVDS spoj alebo chýbajúci lvdsStreamCfg v profile —
bez neho karta žiadne dáta nedostane (pozri 5). |
| Dátové pole má zlé rozmery alebo kreslí nezmysel | Profil nesedí s dátami (iný počet vzoriek či kanálov). Pri
starých .bin z mmWave Studia pozri obmedzenie v 10.3. |
| Posledný rámec chýba alebo je kratší | Normálny stav — zber sa zastaví na ~98 % (pozri 9.3). Varovanie príde až pri strate viac než jedného rámca. |
Či reťazec zbiera zmysluplné dáta, sa dá rýchlo overiť riadkom [validacia], ktorý capture vypíše
(pozri 4.5): vysoký pomer špička/medián znamená jasný cieľ, hodnota okolo 1 iba šum (zvyčajne zlé prepojenie
alebo chýbajúci signál).
Jadro (objekty serialport a udpport, FFT) beží na všetkých systémoch rovnako, no pár vecí sa líši (tabuľka 10.2):
Tabuľka 10.2. Odlišnosti medzi operačnými systémami
| Vec | Windows | macOS / Linux |
|---|---|---|
| Názvy portov | COM9 a podobne | /dev/ttyACM0, /dev/tty.usbmodem… |
| Popis portu pri výbere | áno — cez PowerShell sa zobrazí „Application/User UART“ | len holý zoznam portov (popis nie je k dispozícii) |
Priečinok Downloads | z premennej USERPROFILE | z premennej HOME |
Statická IP sieťovej karty (192.168.33.30) aj prepínače na karte DCA1000 platia rovnako na všetkých
systémoch. Samotné flashovanie firmvéru nástrojom UniFlash je však — ako sa spomína v 4.3 — záležitosťou Windows.
BIN2MAT_2944 očakáva formát, aký produkuje tento toolbox
(jeden usporiadaný tok, jedna rekonštrukčná lane — pozri 9.4). Staršie .bin z mmWave Studia v inom formáte
sa nemusia správne preskladať.numFrames = 0 (záznam v reálnom čase) má prealokácia v pamäti strop
(~64 MB) a jednorazový zber sa zastaví po ~30 s alebo na ~98 % očakávaných dát.Zoznam obsahuje pramene, na ktoré sa text odvoláva. Dokumenty spoločnosti Texas Instruments sú uvedené s kódom, pod ktorým ich výrobca zverejňuje; internetové adresy platia k dátumu vydania.
Programové vybavenie nie je literatúra; uvádza sa preto zvlášť a s verziou, s ktorou boli postupy overené.
awr2944_toolbox, trieda vo verzii 1.7.