Obálka
MÁRIA GAMCOVÁ  ·  JÁN GAMEC

RADARY
V AUTOMOBILOCH

Príručka k toolboxu AWR2944

Technická univerzita v Košiciach
Fakulta elektrotechniky a informatiky
Katedra počítačových sietí
2026
Radary v automobiloch: príručka k toolboxu AWR2944
Autori:
doc. Ing. Mária Gamcová, PhD.
doc. Ing. Ján Gamec, CSc.
Pracovisko:
Katedra počítačových sietí
Fakulta elektrotechniky a informatiky
Technická univerzita v Košiciach
Recenzenti:
prof. Ing. Milan Dado, PhD.
Ing. Emil Matúš, PhD.

Vydanie: prvé
Rok vydania: 2026
Náklad: 0 ks (elektronické vydanie)
Rozsah: 83 strán
Forma vydania: elektronická (HTML)
Dostupné na: radary-prirucka.tuke.sk
Vydavateľ: Technická univerzita v Košiciach

Za odbornú a jazykovú stránku zodpovedajú autori. Rukopis neprešiel jazykovou úpravou.

ISBN 978-80-553-4963-3

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

Anotácia

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.

Kľúčové slová

FMCW radar, automobilový radar, AWR2944, DCA1000, MATLAB, nespracované dáta ADC, akvizícia dát, spracovanie radarových signálov, laboratórne cvičenia

Poznámka k číselným údajom

Čí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

Obsah
  1. Prehľad toolboxu
  2. Fyzikálny princíp merania
  3. Inštalácia a príprava
  4. Začíname
  5. Konfiguračný súbor .cfg
  6. Trieda awr2944_dca
  7. Nástroje toolboxu
  8. Príklady použitia
  9. Architektúra a prenosová vrstva
  10. Riešenie problémov, prenositeľnosť a obmedzenia

Použitá literatúra

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.

1. Prehľad toolboxu

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.

Čo je „nespracovaný chirp“ resp. rámec. Radar nevzorkuje priamo vyslaný ani prijatý vysokofrekvenčný lineárne frekvenčne modulovaný signál (FMCW). Tie sa v zmiešavači vynásobia (zmiešajú) — nie odčítajú; odčítanie by robil diferenčný zosilňovač — a z výsledku ostane pomalší záznejový (beat) signál, ktorého frekvencia sa rovná rozdielu okamžitých frekvencií vyslaného a prijatého signálu (rozdielová frekvencia). Práve tento záznejový signál z intervalu jedného lineárneho frekvenčného rozmietnutia v čase zachytáva ADC — jeden „nespracovaný chirp“ je teda postupnosť jeho vzoriek, ešte pred akoukoľvek FFT. Určitá množina chirpov, ktoré sú nejakým spôsobom usporiadané napr. podľa prijímacích/vysielacích (RX/TX) antén, je označovaná ako rámec (frame). Vo frekvencii záznamu je uložená informácia o vzdialenosti aj rýchlosti cieľa, vo fáze (najmä naprieč anténami) o uhle príchodu odrazeného signálu — a túto informáciu z neho neskôršie spracovanie extrahuje (range/Doppler FFT, beamforming).

1.1 Čo toolbox umožňuje

Prácu s radarom rozdeľuje do troch funkčných rovín — konfigurácia, záznam a práca s výstupom:

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.

1.2 V skratke

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).

1.3 Z čoho sa toolbox skladá

Na rozdiel od dca1000 (samostatný objekt od MathWorks) je awr2944_toolbox toolbox viacerých súčastí, ktoré na seba nadväzujú:

Dve cesty práce s radarom. Nástroje toolboxu pokrývajú dve principiálne odlišné cesty, pomenované podľa toho, aké dáta nimi tečú. Cesta spracovaných dát — celý proces spracovania (FFT, detekcia) beží priamo v procesore radaru a von sa vysielajú už hotové výsledky (detegované body, profily), zabalené spôsobom TLV (Type–Length–Value): každý blok správy nesie typ (čo obsahuje), dĺžku (koľko bajtov má) a hodnotu (samotné dáta), takže prijímateľ vie správu rozobrať blok po bloku. Tieto dáta zobrazujú 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.

Predpoklady: AWR2944 musí mať naflashované mmw demo a dosky musia byť prepojené tromi linkami — LVDS (AWR2944 → DCA1000, nespracované dáta), Ethernet (DCA1000 → PC) a USB (AWR2944 → PC, konfigurácia). Čím, ako a odkiaľ sa flashuje, ktoré konektory sú nevyhnutné a v akom režime radar pracuje (TDM-MIMO), je krok za krokom v kapitole 4 (Začíname). Samotné flashovanie a prácu cez Demo Visualizer rozoberá aj Radary v automobiloch: metodika merania a zadania, kapitoly 6 a 7.
Jednoduchosť použitia: jeden príkaz zachytí meranie a otvorí ho v BIN2MAT_2944. Žiadne mmWave Studio, žiadne ručné prepínanie nástrojov.

2. Fyzikálny princíp merania

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ť.

2.1 Princíp range-FFT a Doppler-FFT

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:

f(t) = f_0 + S\,.\,t(2.1)

Odraz od cieľa vo vzdialenosti R sa vráti s oneskorením (cesta tam aj späť):

\tau = \dfrac{2\,.\,R}{c}(2.2)

takže v okamihu t prijíma anténa frekvenciu f(t-\tau):

f(t-\tau) = f_0 + S\,.\,(t-\tau)(2.3)

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:

f_{beat} = S\,.\,\tau = \dfrac{2\,.\,S\,.\,R}{c}(2.4)

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:

R = \dfrac{c\,.\,f_{beat}}{2\,.\,S}(2.5)

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:

\Delta R = 2\,.\,v\,.\,T(2.6)

čo v jednotkách fázy (časované vlnovou dĺžkou \lambda) znamená fázový rozdiel medzi chirpmi:

\Delta\varphi = \dfrac{4\pi\,.\,v\,.\,T}{\lambda}(2.7)

Celý rad numLoops chirpov tak vytvorí postupnosť s lineárne rastúcou fázou:

\varphi_m = m\,.\,\Delta\varphi, \quad \text{kde } m = 0, 1, \ldots(2.8)

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.

Presne toto je potrebné naprogramovať v Zadaní 1 (Radary v automobiloch: metodika merania a zadania, kapitola 14). Range-FFT aj Doppler-FFT sú oba len FFT nad odlišnou osou toho istého merania: range-FFT cez vzorky v jednom chirpe (dáva vzdialenosť z f_{beat}), Doppler-FFT cez chirpy tej istej vzdialenostnej zložky naprieč rámcom (dáva rýchlosť z \Delta\varphi). Implementovať ich znamená aplikovať FFT na správnu os poľa a previesť index výslednej zložky na fyzikálnu jednotku podľa vzorcov vyššie — rovnaké, aké používa radar_cfg (kapitola 7.1.b) aj BIN2MAT_2944.

2.2 Princíp uhlového odhadu (beamforming)

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:

\Delta\varphi = 2\pi\,.\,\dfrac{d}{\lambda}\,.\,\sin\theta(2.9)

Signály N prvkov tak tvoria postupnosť s lineárne rastúcou fázou (narastajúcou so vzdialenosťou od prvého prvku):

\varphi_n = n\,.\,\Delta\varphi, \quad \text{kde } n = 0, 1, \ldots, N-1(2.10)

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:

A(\theta) = \sum_{n=0}^{N-1} x_n \, e^{-j 2\pi\,.\,\frac{d}{\lambda}\,.\,n\,.\,\sin\theta},(2.11)

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).

Presne toto je potrebné naprogramovať v Zadaní 2 (Radary v automobiloch: metodika merania a zadania, kapitola 14). Úloha „naprogramujte 1D beamforming (uhlovú FFT)“ znamená implementovať vzorec A(\theta) vyššie: pre každý testovaný uhol spočítať váženú sumu signálov z virtuálnych prvkov s fázami podľa ich polohy, a nájsť uhol maximálnej odozvy. Namiesto cyklu cez \theta_{\text{test}} sa to v praxi robí jednou FFT (rovnomerný rozostup d = \lambda/2 to umožňuje priamo) — ale oba prístupy počítajú tú istú vec. Šírka výsledného laloka okolo maxima je to, čo v Zadaní 2 porovnávate s predikciou z bodu 1 (kapitola 2.3, vzorec uhlového rozlíšenia).

2.3 Vplyv parametrov .cfg na vlastnosti radaru

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ňujeAko
freqSlopeConst (sklon)rozlíšenie vzdialenosti, max dosahstrmší sklon → väčšia šírka pásma → jemnejšie rozlíšenie; zároveň kratší max dosah
numAdcSamplesrozlíšenie vzdialenosti, počet range bodovviac 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ásmavyšš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 + rampEndTimePRF, max rýchlosťkratší chirp → vyššia PRF → väčšia max. jednoznačná rýchlosť
numLoopsrozlíšenie rýchlostiviac 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ť.
framePeriodicitysnímková frekvenciaperióda rámca určuje, koľko rámcov za sekundu
numFramesdĺžka záznamupoč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:

\Delta R = \dfrac{c}{2\,.\,B},(2.12)

kde B je skutočne využitá šírka frekvenčného pásma počas vzorkovaného úseku chirpu:

B = S\,.\,\dfrac{\text{numAdcSamples}}{f_s},(2.13)

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:

R_{max} \approx \dfrac{c\,.\,f_s}{4\,.\,S}(2.14)

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:

\lambda = \dfrac{c}{\text{startFreq}},(2.15)

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:

T = \text{idleTime} + \text{rampEndTime},(2.16)

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):

PRF = \dfrac{1}{T}(2.17)

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ť:

v_{max} \approx \pm\dfrac{\lambda}{4\,.\,\text{NumTX}\,.\,T},(2.18)

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:

\Delta v \approx \dfrac{\lambda}{2\,.\,\text{numLoops}\,.\,\text{NumTX}\,.\,T},(2.19)

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:

\Delta\theta \approx \dfrac{\lambda}{N\,.\,d},(2.20)

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).

Pozor na číslovanie vysielačov. Tento toolbox, .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).
Rozloženie antén AWR2944EVM — vlastná fotografia dosky s vyznačenými rozostupmi
Obr. 2.1. Rozloženie vysielačov a prijímačov na doske AWR2944EVM. Číslovanie je 0-based (TX0–TX3, RX0–RX3), teda zhodné s maskami v .cfg aj s týmto toolboxom; TI vo svojej dokumentácii číslujú od jednotky (TX1–TX4), pozri poznámku vyššie.

3. Inštalácia a príprava

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.

3.1 Čo treba mať

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

PrvokPoznámka
MATLABVerzia s objektmi serialport a udpport (R2020b alebo novší). Staršie verzie so zastaranými serial/udp toolbox nepodporuje.
Instrument Control ToolboxPotrebný pre udpport (komunikácia s kartou DCA1000 po sieti). serialport je už v základnom MATLABe.
Signal Processing ToolboxPotrebný 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 ToolboxPotrebný pre DAT2MAT_2944 a LIVE_DAT2MAT_2944 (funkcia prctile pri škálovaní zobrazenia).
Operačný systémVyvíjané a overené na Windows; na macOS/Linux beží s malými obmedzeniami (pozri 10.2).
Hardvér a zapojenieAWR2944 EVM + DCA1000, tri linky a statická IP — všetko opísané v kapitole 4 (4.1–4.3).
Ako overiť, či sú dostupné potrebné toolboxy. Priamo v príkazovom riadku MATLABu: Ak zber dát beží a offline nástroje fungujú, potrebné závislosti sú zjavne splnené — tieto príkazy len presne ukážu, ktorý toolbox ich pokrýva.

3.2 Distribúcia a inštalácia

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.

Konfiguračný súbor musí byť v rovnakom priečinku ako trieda. Konštruktor hľadá predvolený súbor s profilom a jeho konfiguráciou 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.

4. Začíname

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.

Čo z tejto kapitoly naozaj potrebujete. Ak je váš radar už zapojený a naflashovaný (typicky na školskom počítači pripojenom k radaru), podkapitoly 4.1–4.4 (zapojenie, prepínače, flashovanie) sú referenčné materiály pre prípad, že treba diagnostikovať problém alebo rozumieť, ako zostava funguje — na bežné meranie stačí rovno 4.5 Prvé meranie.

4.1 Čo je potrebné

Pred prvým meraním treba pripraviť nasledovné (tabuľka 4.1):

Tabuľka 4.1. Čo treba pripraviť pred prvým meraním

PrvokHodnota / poznámka
Radarová doskaAWR2944 EVM (xWR2944EVM, REV. D) s naflashovaným mmw demo
Capture doskaDCA1000EVM
PCWindows + MATLAB, sieťová karta na statickej IP 192.168.33.30
Káble a napájanieUSB (AWR2944 ↔ PC), Ethernet RJ45 (DCA1000 ↔ PC), napájacie zdroje oboch dosiek
Spoj dosiek60-pinový HD (LVDS) konektor medzi AWR2944 a DCA1000

4.2 Zapojenie a konektory

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):

Zostava AWR2944EVM + DCA1000EVM so všetkými káblami
Obr. 4.1. Kompletná zostava: DCA1000EVM (vľavo) spojené s AWR2944EVM (vpravo) cez LVDS (Samtec 60-pin), konfiguračný USB (XDS110) a Ethernet do PC, samostatné napájanie oboch dosiek.

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.)

Podrobný postup zapojenia a napájania je v Radary v automobiloch: metodika merania a zadania, kapitoly 2 až 5 — vrátane rizík (nesprávna orientácia LVDS, podpätie a prepätie) a diagnostiky cez výstupný log. Pozor: tam opísaný postup pracuje s programom mmWave Studio, ktorý CLI príkazy posiela cez FTDI port (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

LinkaAWR2944EVMDCA1000EVMKam
Nespracované dáta (LVDS)J7 — 60-pin SamtecJ3 — 60-pin HDdoska ↔ 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ájanieJ12 — 12 VJ2 — 5 V (voľba SW3)zdroj

Fotografia je na obrázku 4.2.

Strana dosky DCA1000EVM s obvodom FPGA, prepínačmi a konektorom J3, s označením prvkov Strana dosky DCA1000EVM s konektorom RJ45, slotom pre kartu SD a napájacím konektorom, s označením prvkov
Obr. 4.2. DCA1000EVM — hore strana s obvodom FPGA, prepínačmi a 60-pinovým konektorom 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.
Upravené podľa SPRUIJ4A.

4.2.1 Prepínače na DCA1000 (SW2, SW1)

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

SW2jedna polohadruhá poloha
5SW_CONFIG (konfigurácia softvérom)HW_CONFIG (prepínačmi)
4RAW_MODE (nespracované ADC)DATA_MODE
3AR1642_MODE1243_MODE
2ETH_STREAM (cez Ethernet)SD_STORE (na SD kartu)
1LVDS_CAPT (záznam cez LVDS)DMM_PLAYBACK
6–8USER_SW1 / USER_SW2 / USER_SW3 (používateľské)

SW1 — LVDS_MODE_SEL: 12-bit / 14-bit / 16-bit.

Pre tento toolbox je kľúčové SW2.5 = SW_CONFIG — konfiguráciu FPGA potom preberá softvér po Ethernete (toolbox cez príkaz 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).

4.3 Flashovanie firmvéru (mmw demo)

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žimSOPJ17J18J20
Flashovanie101closedopenclosed
Funkčný (beží demo)001openopenclosed

Fotografia je na obrázku 4.3.

Doska AWR2944EVM s vyznačenými SOP jumprami, konektorom J8 a konektorom J12
Obr. 4.3. AWR2944EVM — SOP jumpre 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:

  1. SOP sa nastaví na flashovací režim 101 (J17 closed, J18 open, J20 closed) a AWR2944 sa vypne a zapne (power cycle), aby sa SOP načítal.
  2. Spustí sa UniFlash; zvolí sa (alebo sa automaticky zdeteguje) zariadenie AWR2944 a COM port XDS110 Class Application/User UART (číslo je v Správcovi zariadení); prenosová rýchlosť ostáva prednastavená.
  3. Vyberie sa SBL image a app image z ciest vyššie a klikne sa na Load Images; počká sa na úspešné dokončenie.
  4. SOP sa prepne späť na funkčný režim 001 (J17 open, J18 open, J20 closed) a nasleduje znova power cycle. Odvtedy doska po každom zapnutí spúšťa mmw demo z QSPI.

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.

4.4 V akom režime radar pracuje (TDM-MIMO)

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.

4.5 Prvé meranie

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:

Ako čítať bloky kódu: bloky na tmavom pozadí sú príkazy, ktoré sa zadávajú do príkazového riadka MATLABu; bloky na svetlom (sivom) pozadí sú to, čo MATLAB vypíše späť. Text za % 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ú:

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).

Opakované merania. 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.
Súbežná záťaž počas merania. Počas merania treba minimalizovať súbežnú aktivitu PC a siete — pozastaviť cloudovú synchronizáciu, aktualizácie a náročné aplikácie, lebo môže dochádzať k stratám UDP paketov (v zázname sa prejavia ako nulové úseky).
Ak meranie zlyhá: najčastejšie je to nesprávna IP sieťovej karty (musí byť 192.168.33.30), obsadený port z predošlého behu, alebo zlý COM port. Podrobne v kapitole 10.

5. Konfiguračný súbor .cfg

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

5.1 Kľúčové polia

Ich význam je v tabuľke 5.1:

Tabuľka 5.1. Kľúčové riadky konfiguračného profilu

RiadokVýznam
channelCfg rxMask txMask cascMasky aktívnych antén. 15 = 4 RX (binárne 1111), 7 = 3 TX (111). Počet jednotiek určuje NumRX a NumTX.
adcCfg bits fmtInvariant. 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 … txEnableJeden 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 0Invariant. Zapína tok ADC dát po LVDS na DCA1000. Bez neho DCA nedostane nič.

5.2 profileCfg po poliach

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

PoleHodnotaVýznam
profileId0poradové číslo profilu
startFreq77štartovacia frekvencia [GHz]
idleTime267pauza pred chirpom [µs]
adcStartTime7oneskorenie spustenia ADC [µs]
rampEndTime57.14dĺžka rampy [µs]
freqSlopeConst70strmosť nábehu frekvencie [MHz/µs]
txStartTime1oneskorenie TX [µs]
numAdcSamples560počet ADC vzoriek na chirp → SamplesPerChirp
digOutSampleRate11396vzorkovacia frekvencia ADC [ksps]
rxGain158zisk prijímača

(Polia s hodnotou 0 medzi nimi — txOutPower, txPhaseShifter, hpfCornerFreq1/2 — sú pre nespracovaný zber nepodstatné.)

5.3 Ako z profilu vychádzajú rozmery dátového poľa

5.4 Invarianty a úprava

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).

6. Trieda awr2944_dca

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).

Konvencie zápisu (ako sa nastavujú vlastnosti a volajú funkcie). Naprieč touto kapitolou sa opakujú dva MATLABovské zápisy — aby boli jednoznačné:

Konfigurácia radaru AWR2944 + DCA1000 a zber nespracovaných ADC dát — dávkovo aj v reálnom čase.

6.1 Opis

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.

Rozdiely oproti objektu 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).

6.2 Vytvorenie

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.

6.3 Vlastnosti — nastaviteľné

Ich úplný zoznam je v tabuľke 6.1:

Tabuľka 6.1. Nastaviteľné vlastnosti triedy awr2944_dca

VlastnosťOpisTypPredvolené
ConfigPortSériový (COM) port s Application/User UART. Pri meraní sa naň aj tak interaktívne spýta.string"COM9"
HostIPAddressIP adresa sieťovej karty PC.string"192.168.33.30"
DcaIPAddressIP adresa FPGA na DCA1000.string"192.168.33.180"
ConfigFileCesta k .cfg profilu. Prázdne → DCA_RX1111_TX1110_TDM.cfg uložený pri triede.string""
RecordLocationPriečinok na ukladanie. Prázdne → Downloads.string""
RecordFilePrefixPrefix názvu .bin súboru.string"adc_data_Raw"
RecordToFileČi sa má meranie uložiť na disk.logicaltrue
WriteLogFileČi popri .bin zapísať aj adc_data_LogFile.txt (pre bin2mat).logicaltrue
RecordSubfolderKaždé meranie do vlastného podpriečinka s časovou pečiatkou.logicaltrue
CaptureFramesPočet rámcov pre capture, keď má profil numFrames = 0 (napr. export z Demo Visualizera).double20

6.4 Vlastnosti — iba na čítanie (odvodené z .cfg)

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
SamplesPerChirpPočet ADC vzoriek na jeden chirp (z profileCfg).
NumRXPočet aktívnych prijímacích antén (z channelCfg).
NumTXPočet aktívnych vysielacích antén (z channelCfg).
AdcBitsBitová hĺbka ADC (z adcCfg); typicky 16.
ChirpsPerFramePočet chirpov na rámec — (chirpEnd − chirpStart + 1) × loops.
NumFramesPočet rámcov merania (z frameCfg).
IsRealtrue — výstup je reálny (AWR2944 nevracia IQ).
LastBinFileCesta k naposledy zapísanému .bin.
LiveActivetrue počas živého režimu.

6.5 Metódy objektu

Ich prehľad je v tabuľke 6.3:

Tabuľka 6.3. Metódy triedy awr2944_dca

MetódaČo robí
capturecube = 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).
startLivesrc.startLive() — prepne radar na nepretržitý beh (numFrames = 0), pripraví DCA1000 a spustí senzor.
readFrameframe = src.readFrame(timeout) — vráti jeden ďalší rámec z live toku.
readFrameLatestframe = src.readFrameLatest() — vráti najnovší rámec a starší backlog zahodí; live zobrazenie tak nenaberá oneskorenie.
stopLivesrc.stopLive() — zastaví senzor aj záznam live režimu.
releasesrc.release() — zastaví prípadný live režim a uvoľní sériový port aj UDP porty. Volá sa na konci práce.
readBincube = src.readBin(binFile) — načíta uložený .bin späť do dátového poľa.
Metódy 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.

6.6 Rozloženie výstupných dát (dátové pole a .bin)

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).

6.7 Výpis do príkazového riadka

Objekt počas práce vypíše niekoľko ďalších riadkov, mimo [validacia] a .bin zapisany, ktoré rozoberá 4.5:

Profily priamo z Demo Visualizera. DV exportuje .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.

7. Nástroje toolboxu

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.

7.1 Nástroje na konfiguráciu merania

7.1.a CFG_EDITOR_2944

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.

Opis

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í.

Vyvolanie
CFG_EDITOR_2944     % načíta DCA_RX1111_TX1110_TDM.cfg z priečinka toolboxu
CFG_EDITOR_2944('moj.cfg')     % načíta konkrétny profil
Čo sa dá upraviť

Editor sprístupňuje kľúčové polia profilu (význam jednotlivých polí je v kapitole 5):

chirpCfg pri TDM. Načítané 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í.
Čo prepočíta a stráži

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áciaUpozornenie
frekvencia mimo pásma AWR2944koncová nad 81 GHz alebo štartovacia pod 76 GHz.
adcCfg nebol 2 0vynúti 16-bit reálny.
TX maska už nesedí s chirpCfgTDM: blok sa pri exporte pregeneruje (poznámka vyššie); non-TDM profil sa neupravuje — úprava ručne.
numFrames = 0nekonečné; pre capture() treba konečný počet.
perióda rámca prikrátkamenšia než aktívny čas chirpov — radar ju odmietne; nad 20 fps je praktický strop.
lvdsStreamCfg vypnuté / chýbabez neho DCA nedostane dáta; editor ho pri exporte doplní.

Okno editora je na obrázku 7.1.

Okno CFG_EDITOR_2944 s načítaným predvoleným profilom
Obr. 7.1. Okno 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.
Tlačidlá

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.

Názvoslovná konvencia profilov. Pri ukladaní editor navrhne názov zložený z obsahu profilu: <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á.
Typický postup: načíta sa profil vyexportovaný z Demo Visualizera → editor doplní LVDS riadok (do ukladaného súboru .cfg) → uloží sa .cfg → použije sa v awr2944_dca (vyberie sa pri capture/startLive).

7.1.b radar_cfg

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.

Opis

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).

Vyvolanie
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)
Čo vracia (štruktúra P)

Parametre načítané z profilu sú v tabuľke 7.2:

Tabuľka 7.2. radar_cfg — polia štruktúry P: parametre profilu

PoleVýznam
cfgFileCesta k použitému súboru ('' pri defaulte).
startFreq_GHz, idle_us, rampEnd_us, slope_MHzusDefinícia chirpu — štartovacia frekvencia, idle, ramp end, sklon.
numAdc, fs_kspsPočet ADC vzoriek na chirp a vzorkovacia frekvencia.
numRx, numTxPočet aktívnych RX a TX (z mask).
chirpStart, chirpEnd, numLoops, chirpsPerFrame, numFrames, framePeriod_msSkladba rámca.
txPhysFyzické 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

PoleVýznam
lambda_m, Tr_s, Teff_sVlnová dĺžka, perióda chirpu a efektívna perióda Dopplerovho vzorkovania Teff = tdmFactor·Tr.
tdmFactorTDM 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_mRange-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_msDoppler-FFT a os rýchlosti — PRF = 1/Teff, teda delená TDM faktorom.
winR, winDHann 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

PoleVýznam
elevCalibKalibrač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.
elevScaleKorekčná škála elevačného uhla (1,20 — konštantná v overenom rozsahu ±3,8°).
elevGateAzDegElevačný gate: výška sa počíta len pre |azimut| ≤ táto hodnota [°] (predvolene 6).
elevGateSnrLiveSNR prah elevačného gate pre live zobrazenie (predvolene 15).
Dva formáty vstupu. Súbor .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.

7.2 Nástroje pre nespracované dáta

7.2.a live_display

Zobrazenie merania v reálnom čase v jednom okne — nespracovaný chirp, RP, RD, RA alebo oblak bodov (PC).

Opis

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.

Vyvolanie
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
Vstupné argumenty

Vysvetľuje ich tabuľka 7.5:

Tabuľka 7.5. live_display — vstupné argumenty

ArgumentVýznamPredvolené
viewKtorý pohľad zobraziť: 'raw' / 'rp' / 'rd' / 'ra' / 'pc' / 'pcelev' / 'pc3d' (viď tabuľka 7.6).'rp'
stopTimeDĺžka behu v sekundách.60
dispFpsStrop kreslenia [fps]; zber beží nezávisle od kreslenia.15
pcModeRež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'
Pohľady

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
rawJeden nespracovaný chirp v čase (RX0, prvý chirp) — amplitúda vs ADC vzorka. Najbližšie k tomu, čo zachytil ADC.
rpRange profil (RP) — RX0, priemer cez chirpy; relatívny výkon [dB] vs vzdialenosť [m].
rdRange-Doppler mapa (RD) — TX0 + RX0; vzdialenosť [m] × rýchlosť [m/s]; bez uhla.
raRange-angle mapa (RA) — azimutové TX, všetky RX; priestorová mapa vzdialenosť × uhol (bočný × pozdĺžny rozmer).
pcOblak bodov (Point Cloud — PC) zhora — bočný × pozdĺžny rozmer, farba = výška z.
pcelevPC čelne — bočný rozmer × výška z, farba = vzdialenosť; referenčná čiara na z = 0.
pc3dPC 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.

Ukončenie

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).

7.2.b BIN2MAT_2944

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.

Opis

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).

Vyvolanie
[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.

Zobrazenia prehliadača

Č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.

Ovládanie prehliadača

Okno prehliadača ukazuje obrázok 7.2.

Okno prehliadača BIN2MAT_2944 (Raw TDM chirp viewer)
Obr. 7.2. Okno prehliadača (Raw TDM chirp viewer) — ovládacie prvky v hornej lište, grafy pod nimi.

Ovládanie prehliadača zhŕňa tabuľka 7.8:

Tabuľka 7.8. BIN2MAT_2944 — ovládacie prvky okna

PrvokFunkcia
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.

BIN2MAT_2944 — rozšírené menu PC mode s voliteľným prahom výšky
Obr. 7.3. Rozšírené menu PC mode: 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.
Výstup

Tabuľka 7.9 vysvetľuje každé pole:

Tabuľka 7.9. BIN2MAT_2944 — výstupné premenné

VýstupVýznam
adcCubeDá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.

7.2.c plot_chirp

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.

Opis

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.

Odkiaľ vziať dáta

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
Dve pasce — osi a rozloženie poľa. (1) Keď sa 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.
Vyvolanie
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)
Argumenty

Podrobne ich rozoberá tabuľka 7.10:

Tabuľka 7.10. plot_chirp — argumenty

ArgumentVýznamPredvolené
cubeDátové pole (z capture alebo readBin).—
chirpIdxIndex chirpu, ktorý vykresliť.1
frameIdxIndex rámca.1
fs_kspsVzorkovacia frekvencia ADC [ksps] (pre os vzdialenosti).z radar_cfg()
slope_MHzusStrmosť nábehu frekvencie [MHz/us] (pre os vzdialenosti).z radar_cfg()
adcStart_usADC 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.

Okno plot_chirp — časový priebeh chirpu a range-FFT všetkých RX
Obr. 7.4. Okno 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.
Výstup

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);
Výpis do príkazového riadka

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).

Čo na grafe hľadať: hore má byť čistý, jemný a nesaturovaný priebeh záznejového signálu; dole výrazný peak na rovnakej vzdialenosti pre všetky štyri RX (to potvrdzuje konzistenciu). Ak by boli RX navzájom rozhádzané, naznačovalo by to zle preskladanú os prijímačov.

7.2.d micro_doppler

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).

Opis

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).

Os rýchlosti a TDM faktor. PRF sa pre Doppler delí TDM faktorom profilu — počtom 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).
Vyvolanie
% 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)
Argumenty

Tabuľka 7.11 vysvetľuje každý z nich:

Tabuľka 7.11. micro_doppler — argumenty

ArgumentVýznamPredvolené
srcZdroj 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_mVektor vzdialeností [m], 1–3 hodnoty (napr. [1.5 3 5]). Prázdne → výber dialógom.[]
txIndex 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_msRučný override periódy rámca [ms] (pre časovú os). Inak z profilu.z profilu
cluttertrue → potlačenie statiky (MTI). Prázdne → dialóg.false
Interaktívne dialógy

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.

Porovnávací režim

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).

Okno micro_doppler v porovnávacom režime — tri spektrogramy rýchlosť × čas
Obr. 7.5. Okno 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.
Clutter removal (MTI). Voliteľné potlačenie statiky odčíta v každom rámci statickú zložku (0 m/s, t.j. priemer pomalého času) ešte pred Doppler-FFT, aby slabý pohyb vystúpil z pozadia. Predvolene vypnuté (nech vidno aj statiku); keď je zapnuté, v titulku grafu sa zobrazí | MTI.
Na čo si dávať pozor: pre zmysluplný micro-Doppler treba dlhší záznam — odporúčame ≥ 100 rámcov (ako mmWave Studio); pri menej rámcoch je spektrogram v čase hrubý. Ak dátové pole vzniklo z iného profilu než naposledy uloženého (iný počet vzoriek), funkcia na to upozorní a vypýta si zodpovedajúci .cfg/LogFile. Vzdialenosti mimo rozsahu 0…Rmax sa vypustia; pri viac než troch sa zobrazia len prvé tri (s varovaním).
Výpis do príkazového riadka

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.

7.2.e show_pc3d

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.

Opis

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.

Vyvolanie
show_pc3d            % vezme premennu pcDetections_mmWS z workspace
show_pc3d(pc)        % alebo priamo matica [x y v range az z]
Vstup

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.

Body bez platnej výšky sa nevykreslia. Detekcie, ktorým prehliadač výšku nepriradil (z = NaN — nesplnená podmienka platnosti výšky, kapitola 7.2.b), sa v tomto okne nedajú zobraziť v žiadnom z panelov: vľavo je výška priamo súradnicou a vpravo sa z nej odvodzuje elevačný uhol. Stĺpec rýchlosti v sa v zobrazení nepoužíva — vo formáte je kvôli zhode s exportom z BIN2MAT_2944.

Okno je na obrázku 7.6.

Okno show_pc3d — 3D oblak bodov a uhlový priestor azimut × elevácia
Obr. 7.6. Okno 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°.

7.3 Nástroje pre spracované dáta

7.3.a DAT2MAT_2944

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.

Opis

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).

Vymaže celý workspace. Funkcia na začiatku vykoná 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.
Vyvolanie
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.

Osobitosti súboru .cfg Demo Visualizera oproti štandardnému profilu toolboxu

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í.

Panely a režimy

Š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

RodinaA / BDiff / Traj
RDRange-Doppler mapa rámca A alebo B.Rozdielová mapa A−B, s prekreslenou trajektóriou lokálnych RD maxím medzi rámcami.
RARange-angle mapa (bočná/pozdĺžná vzdialenosť) rámca A alebo B.Rozdielová mapa A−B, s trajektóriou lokálnych RA maxím.
Scatter3D3D 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.
RPRange 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.

Okno DAT2MAT_2944 (AWR2944 DAT Viewer) so štyrmi panelmi
Obr. 7.7. Štyri voľne nastaviteľné panely: 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).

DAT2MAT_2944 po kliknutí na Compare Motion — všetky štyri panely v režime Diff/Traj
Obr. 7.8. Výsledok tlačidla Compare Motion (rovnaké rámce A=1/61, B=56/61): 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.
Referenčný bod a trajektória. Pre každý rámec sa vyberie jeden reprezentatívny bod z oblaku bodov: nájde sa najsilnejšie miesto v RA mape, a z PC sa vyberie bod s najmenšou XY vzdialenosťou od neho (bez RA sa použije bod s najvyšším SNR, prípadne najbližší). Tento bod sa vykresľuje ako značka v 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.
Ostatné ovládanie

Zvyšné prvky sú v tabuľke 7.13:

Tabuľka 7.13. DAT2MAT_2944 — ostatné ovládanie

PrvokFunkcia
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 / StopAutomatické posúvanie rámca A rýchlosťou danou framePeriodicity_ms zo .cfg.
SaveUloží 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 MATTo isté, ale zapísané priamo do .mat súboru.

7.3.b LIVE_DAT2MAT_2944

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).

Opis

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).

Vyvolanie
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).

Kľúčové argumenty

Tabuľka 7.14. LIVE_DAT2MAT_2944 — kľúčové argumenty

ArgumentVýznamPredvolené
CfgFileCesta k vlastnému .cfg."" — vypýta sa
CfgProfileNázov vstavaného profilu (tabuľka 7.15) — zapíše sa ako LIVE_PROFILE_<id>.cfg do CfgStartDir.""
ConfigPort, DataPortDva rôzne UART porty — CLI/config a samostatný DATA."" — vypýtajú sa
RememberLastCfgZapamätá si naposledy použitý externý .cfg (cez setpref) na ďalšie spustenie.true
LeftPanel, RightPanelPočiatočný režim každého panelu: RA/RD/RP/PC/RA SUM."RD", "RA"
BaudRate, ConfigBaudRateRý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.

Vstavané profily (CfgProfile)

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

CfgProfilechannelCfg (RX/TX)Poznámka
4RX_4TX_EL15 / 15 (všetky 4 TX)Všetky pohľady vrátane elevácie.
4RX_3TX_EL15 / 7 (TX0,TX1,TX2)Elevačný TX1 aktívny.
4RX_3TX_AZ15 / 13 (TX0,TX2,TX3)Čisto azimutový (bez elevácie); základný profil pre 1TX/2RX1TX aliasy.
4RX_2TX_AZ15 / 5 (TX0,TX2)Dva azimutové TX.
RA mode ako obmedzenie na jeden TX. Aliasy s menom v tvare 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).
Panely

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.

Automatické prepojenie kurzora. Keď je jeden panel 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).
LIVE_DAT2MAT_2944 — dvojpanelové okno s prepojeným kurzorom medzi RD a PC
Obr. 7.9. Dvojpanelové okno počas behu: vľavo 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.
Ovládanie v reálnom čase (CLI Command, Radar Setup)

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).

Dialóg Radar Setup — živý náhľad odvodených veličín a kontrol platnosti
Obr. 7.10. Dialóg Radar Setup: vľavo tri vstupné skupiny parametrov (Range/Velocity causes, RF/Timing), vpravo Derived (odvodené veličiny) a Checks (všetko OK — zelené skóre by tu bolo červené). V pozadí beží RA panel (Polar Range Azimuth) — dialóg neblokuje hlavné okno, meranie počas úpravy pokračuje ďalej.
Každá zmena je plný reštart. Aplikovanie z oboch dialógov (aj samotné prepnutie 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.
Ostatné ovládanie

Zvyšok ovládania zhŕňa tabuľka 7.16:

Tabuľka 7.16. LIVE_DAT2MAT_2944 — ostatné ovládanie

PrvokFunkcia
Start / StopSpustí, resp. zastaví senzor (aj klávesová skratka S na prepnutie).
Save WSUloží aktuálny rámec do base workspace (klávesová skratka W).
Save MATTo isté priamo do .mat súboru.
Workspace ViewerOtvorí samostatné okno s naposledy uloženým snímkom (aktívne, len ak už bolo niečo uložené).
QuitZastaví senzor, uvoľní oba porty a zatvorí okno (klávesová skratka Q).
Výpis do príkazového riadka

Popri okne funkcia počas behu vypisuje do príkazového riadka MATLABu diagnostické správy (pri predvolenom Verbose = true):

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).

Iný TLV rozsah než 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.

7.4 Pomocné funkcie

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).

8. Príklady použitia

Ú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:

8.1 Jednoduché meranie do súboru

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.

8.2 Viac meraní za sebou

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]
...

8.3 Kam, pod akým názvom a či vôbec ukladať

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();

8.4 Jeden chirp konkrétnej (fyzickej) RX antény z dátového poľa

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.

8.5 Jeden chirp virtuálnej antény (TDM)

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.

8.6 Načítanie dát z .bin

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.

8.7 Sledovanie v reálnom čase

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.

8.8 Výber a úprava profilu .cfg

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.

8.9 Micro-Doppler spektrogram pohybu

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).

Kedy zapnúť MTI: ak silný statický odraz (stena, zem) prebíja slabý pohyb, clutter removal odstráni statickú zložku (0 m/s) a pohyb vystúpi z pozadia; v titulku grafu sa objaví | 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).

8.10 Meranie výšky cieľa (elevácia)

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č +10 cm nad úrovňou radaru
Obr. 8.1. Výsledok scenára v okne 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°.
Typické problémy: cieľ ďalej než ~6° od osi → bod bez výšky (posunúť cieľ alebo radar); málo bodov s výškou → nižší prah (> 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.

9. Architektúra a prenosová vrstva

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 profil awr2944_dca objekt — riadi celé meranie Konfigurácia radaru — UART (XDS110) awr_sensor_config → awr_send_cmd · awr_read_lines Riadenie + dáta DCA1000 — UDP dca_connect (riadenie) · dca_capture (zber do pamäte) nespracovaný tok dát typu int16 (v operačnej pamäti) reshapeRaw → dátové pole [vzorky × RX × chirpy × rámce] .bin + LogFile → BIN2MAT_2944 plot_chirp live_display startLive · readFrame micro_doppler radar_cfg — spoločné osi a veličiny pre všetky zobrazenia
Obr. 9.1. Tok dát: z .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.

9.1 Prenosová vrstva

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

LinkaSmerNa čo
UART (XDS110, J8)PC → radarCLI príkazy z .cfg (profil, chirpy, rámec…)
UDP 4096PC ↔ DCA1000 (FPGA .180)riadenie DCA (pripojenie, konfigurácia, ARM/stop)
UDP 4098DCA1000 → PC (.30)samotný tok ADC dát

Sekvencia jedného merania:

  1. Konfigurácia radaru (po UART): toolbox načíta .cfg a pošle jeho príkazy do radaru (channelCfg, adcCfg, profileCfg, chirpCfg, frameCfg, lvdsStreamCfg…); sensorStart/Stop/flushCfg rieši sám.
  2. Pripojenie a konfigurácia DCA1000 (po UDP 4096): SYSTEM_CONNECT → READ_FPGA_VERSION → CONFIG_FPGA (RAW režim, 2-lane, 16-bit) → CONFIG_RECORD.
  3. Záznam: ARM (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.

9.2 Vplyv na mierky grafov

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.

9.3 awr2944_dca — životný cyklus objektu

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.

Vznik objektu a odvodenie parametrov

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.

Jednorazový záznam (capture)

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.

Prečo je 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.

Záznam v reálnom čase (live streaming)

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.

9.4 Prenosová vrstva — dca_connect + dca_capture

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.

Obálka príkazu a úvodná výmena (dca_connect)

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).

Pozor na dva významy slova „lane“. Slovo lane (linka, dráha) označuje samostatnú cestu, po ktorej tečú dáta — a v tomto reťazci sa vyskytuje v dvoch rôznych významoch, ktoré sa nesmú zamieňať: Inak povedané: dáta prichádzajú po dvoch fyzických LVDS linkách, ale na PC sa skladajú ako jeden tok. Dve hodnoty „lane“ pre dve odlišné roviny — preto sa zdanlivo nezhodujú, hoci je všetko v poriadku.

Záznam do pamäte (dca_capture)

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.

9.5 Konfigurácia radaru — awr_sensor_config + awr_send_cmd + awr_read_lines

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).

Prečo vlastné čítanie odpovede. CLI demo po odpovedi vypíše prompt 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í.

9.6 radar_cfg — jedno miesto pravdy

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.

9.7 Zobrazovacie funkcie — live_display, plot_chirp, micro_doppler

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.

Niť cez celý reťazec. Tie isté nespracované vzorky pretekajú od 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.

10. Riešenie problémov, prenositeľnosť a obmedzenia

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.

10.1 Riešenie problémov

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íznakPravdepodobná príčina a riešenie
Žiadny sériový port, radar sa neozývaZlý 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í nezmyselProfil 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).

10.2 Prenositeľnosť a odlišnosti operačných systémov

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

VecWindowsmacOS / Linux
Názvy portovCOM9 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 Downloadsz premennej USERPROFILEz 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.

10.3 Obmedzenia

Použitá literatúra

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.

  1. TEXAS INSTRUMENTS. AWR2944 Evaluation Module (AWR2944EVM) — User's Guide. SPRUJ22C. Dostupné na: www.ti.com/lit/ug/spruj22c/spruj22c.pdf.
  2. TEXAS INSTRUMENTS. DCA1000EVM Data Capture Card — User's Guide (Rev. A). SPRUIJ4A. Dostupné na: www.ti.com/lit/ug/spruij4a/spruij4a.pdf.
  3. TEXAS INSTRUMENTS. MIMO Radar (Rev. A). Application Report SWRA554A. Dostupné na: www.ti.com/lit/an/swra554a/swra554a.pdf.
  4. MATHWORKS. dca1000 — dokumentácia objektu pre záznamovú kartu DCA1000EVM. In: Radar Toolbox, dokumentácia MATLAB.
  5. GAMCOVÁ, M. — GAMEC, J. Radary v automobiloch: metodika merania a zadania. Košice: Technická univerzita v Košiciach, 2026. ISBN 978-80-553-4964-0. Dostupné na: radary-metodika.tuke.sk.

Použitý softvér

Programové vybavenie nie je literatúra; uvádza sa preto zvlášť a s verziou, s ktorou boli postupy overené.

Zadná strana obálky