Skip to main content

07-Testing & Verification

Fáza 1: Domáce testovanie (Statické)

Testové prostredie

  • Miesto: Domáce prostredie
  • Podmienky: Sedenie na stoličke, simulácia vodičskej polohy
  • Účel: Kalibrácia detekčných prahov a časových okien
  • Trvanie: 20 hodin testovania rôznych scenárov a oprava parametrov

Počiatočné parametre (verzia 1.0)

Prvé nastavenie bolo zámerně konzervativnejšie (vyššie prahy, dlhšie časové okná) pre bezpečné testovanie:

// 1. Strong Nod
const float SLEEP_ANGLE_THRESHOLD = 35.0°; // Vyšší prah
const int SLEEP_TIME_THRESHOLD = 2000ms; // Dlhšie čakanie

// 2. Micro Nods
const float MICRONOD_THRESHOLD = 20.0°;
const int MICRONOD_COUNT_ALERT = 3;
const int MICRONOD_TIME_WINDOW = 10000ms; // Dlhšie okno
const float MICRONOD_SPEED_THRESHOLD = 15.0°/s;

// 3. Slow Drift
const float SLOW_DRIFT_THRESHOLD = 15.0°;
const int SLOW_DRIFT_TIME = 5000ms; // Dlhšie čakanie

// 4. Freeze
const int NO_MOVEMENT_TIME = 15000ms; // 15 sekúnd
const float MOVEMENT_THRESHOLD = 2.0°;

// 5. Side Tilt
const float SIDE_TILT_THRESHOLD = 30.0°;
const int SIDE_TILT_TIME = 3000ms;

Zistenia z domáceho testovania

Problémy:

  • Prahy boli príliš vysoké - Strong Nod vyžadoval extrémny náklon 35°
  • Časové okná boli príliš dlhé - 2 sekundy na Strong Nod je nebezpečne dlho
  • Freeze algoritmus reagoval príliš pomaly (15 sekúnd)
  • Falošné negatíva - Niektoré nebezpečné stavy neboli zachytené

Úspešné validácie:

  • Kalibračný systém fungoval správne (50 vzoriek, baseline výpočet)
  • Display UI bol čitateľný a informatívny
  • Serial komunikácia fungovala spoľahlivo
  • Kruhový buffer pre mikrokývnutia fungoval správne

Optimalizované parametre (verzia 2.0)

Na základe testovania boli parametre sprísené pre reálne použitie:

// 1. Strong Nod
const float SLEEP_ANGLE_THRESHOLD = 25.0°; // ↓ 10° (citlivejšie)
const int SLEEP_TIME_THRESHOLD = 500ms; // ↓ 1500ms (4x rýchlejšie!)

// 2. Micro Nods
const float MICRONOD_THRESHOLD = 15.0°; // ↓ 5°
const int MICRONOD_COUNT_ALERT = 3; // Bez zmeny
const int MICRONOD_TIME_WINDOW = 8000ms; // ↓ 2000ms
const float MICRONOD_SPEED_THRESHOLD = 12.0°/s; // ↓ 3°/s

// 3. Slow Drift
const float SLOW_DRIFT_THRESHOLD = 12.0°; // ↓ 3°
const int SLOW_DRIFT_TIME = 3000ms; // ↓ 2000ms

// 4. Freeze
const int NO_MOVEMENT_TIME = 10000ms; // ↓ 5000ms (33% rýchlejšie)
const float MOVEMENT_THRESHOLD = 1.5°; // ↓ 0.5°

// 5. Side Tilt
const float SIDE_TILT_THRESHOLD = 25.0°; // ↓ 5°
const int SIDE_TILT_TIME = 500ms; // ↓ 2500ms (6x rýchlejšie!)

// Wake-up
const int WAKE_TIME_THRESHOLD = 1000ms; // Pridané

Porovnanie parametrov

AlgoritmusParameterV1.0V2.0Zmena
Strong NodUhol35°25°-29%
Strong NodČas2000ms500ms-75%
Micro NodsUhol20°15°-25%
Micro NodsRýchlosť15°/s12°/s-20%
Slow DriftUhol15°12°-20%
Slow DriftČas5000ms3000ms-40%
FreezeČas15000ms10000ms-33%
FreezePrah2.0°1.5°-25%
Side TiltUhol30°25°-17%
Side TiltČas3000ms500ms-83%

Výsledok: Systém je teraz 2-6x citlivejší a rýchlejší v detekcii nebezpečných stavov.


Fáza 2: Real-world testovanie (Dynamické)

Testové prostredie

  • Miesto: Osobné vozidlo na reálnych cestách
  • Podmienky:
    • Mestské cesty (30-50 km/h)
    • Prímestské cesty (60-90 km/h)
    • Rôzne povrchy (asfalt, hrboľaté cesty)
  • Trvanie: 10 hodin
  • Zariadenie: M5StickC Plus 2 pripevnený elastickou čelenkou na čelo

Test setup

Testovanie v aute Nodyne počas testovania v reálnych podmienkach

Testové scenáre

1. Normálna jazda (Baseline)

Scenár: Bdelá jazda s normálnymi pohybmi hlavy Výsledok:

  • Žiadne falošné pozitíva
  • Metriky sa aktualizovali plynulo
  • Batéria vydržala celé testovanie (5-8h výdrž potvrdená)

2. Simulovaný Strong Nod

Scenár: Zámerné prudké naklonenie hlavy dopredu >25° na 1 sekundu Výsledok:

  • Alarm sa aktivoval po ~600ms (limit 500ms + detekčná latencia)
  • Červená obrazovka + 1000/1500Hz tón
  • RGB LED sa rozsvetila
  • JSON alert odoslaný do dashboardu

3. Simulované Micro Nods

Scenár: Séria 3 rýchlych kývnutí (>15°, >12°/s) za 8 sekúnd Výsledok:

  • Po 3. kývnutí alarm okamžite
  • Kruhový buffer správne zaznamenal všetky 3 kývnutia
  • Časové okno 8s fungovalo správne (staršie kývnutia sa nezapočítali)

4. Simulovaný Slow Drift

Scenár: Pomaly kĺzajúca hlava v rozsahu 12-25° na 4 sekundy Výsledok:

  • Alarm po ~3.2 sekundách
  • Nereagoval na rýchle prechody cez toto pásmo

5. Simulovaný Freeze

Scenár: Úplné zamrznutie hlavy na 12 sekúnd Výsledok:

  • Alarm po 10 sekundách
  • Malé prirodzené mikropohyby (<1.5°) neresetnuli časovač

6. Simulovaný Side Tilt

Scenár: Bočné naklonenie hlavy >25° na rameno Výsledok:

  • Alarm po ~600ms
  • Rýchla reakcia zabránila dlhšiemu spánku

7. Hrboľaté cesty

Scenár: Jazda po hrboľatej ceste s veľkými vibráciami Výsledok:

  • EMA filter efektívne vyhladzoval šum
  • 1 falošný poplach (Freeze) počas extrémnych vibrácií (~5% miera)
  • Vozač manuálne vypol alarm tlačidlom B

Výsledky merania

MetrikaCieľDosiahnutéStatus
Úspešnosť detekcie>95%100%Prekročené
Falošné pozitíva<10%<5%Prekročené
Reakcný čas<1s0.5-3sSplnené
Výdrž batérie>5h5-8hSplnené
Stabilita systémuBez pádovŽiadne pádySplnené

Video dokumentácia

Video ukazuje testovanie v reálnych jazdných podmienkach s funkčným zariadením.


Závery testovania

Úspešné aspekty

  1. 5 algoritmov funguje paralelne - Žiadne konflikty, každý deteguje špecifický typ ospalosti
  2. Kalibračný systém - 50 vzoriek poskytuje spoľahlivý baseline
  3. EMA filter - Efektívne redukuje šum z vibrácií
  4. Serial komunikácia - Stabilná, bez straty paketov
  5. Optimalizované prahy - Verzia 2.0 je 2-6x citlivejšia než v1.0
  6. Battery life - 5-8 hodín pokrýva väčšinu jázd

Zistené problémy

  1. Falošné pozitíva na hrboľatých cestách - Freeze algoritmus občas reaguje na extrémne vibrácie
    • Riešenie: EMA filter pomohol znížiť z ~10% na <5%
  2. Pohodlie čelenky - Elastická čelenka môže byť nepohodlná na dlhých jazdách
    • Riešenie: Použitie mäkšieho materiálu v budúcich verziách

Navigation: ⬅️ Implementation · ⬆️ SDLC · ⬅️ Projekt · ➡️ Operation