Pro získání kompletní prostorové orientace – tedy náklonu (Roll), stoupání (Pitch) a kurzu (Yaw) – je nutné zkombinovat data ze všech tří senzorů na desce Voltino TriSense Pro: gyroskopu a akcelerometru (z čipu ICM42688P) a magnetometru (AK09918C).
Pro tento účel knihovna TriSense nabízí dvě různé implementace fúze senzorů (Sensor Fusion), které se liší přesností a komplexitou:
SimpleTriFusion (Jednoduchá integrace Gyroskopu)
AdvancedTriFusion (Pokročilá komplementární filtrace s dynamickými zisky)
Základem fúze je pochopení silných a slabých stránek každého senzoru:
Gyroskop (ICM42688P): Měří úhlovou rychlost (rychlost otáčení). Je velmi přesný pro sledování dynamických, rychlých pohybů. Při dlouhodobém používání jeho data akumulují chybu (drift).
Akcelerometr (ICM42688P): Měří zrychlení a ukazuje směr gravitačního vektoru. Ideální pro určení Roll a Pitch v klidu, ale nespolehlivý během pohybu (měří zrychlení, ne jen gravitaci).
Magnetometr (AK09918C): Měří směr magnetického pole Země. Používá se k určení Yaw (kurzu). Jeho data jsou stabilní (nedriftují), ale pomalá a náchylná na magnetické rušení.
Princip: Integrace Gyroskopu
Tato metoda představuje nejjednodušší přístup. Předpokládá, že gyroskop je dostatečně přesný pro krátkodobé sledování orientace.
Počáteční stav: V klidu se provede inicializace (fusion.initOrientation()), kde se spočítá počáteční orientace (Roll, Pitch z akcelerometru a Yaw z magnetometru).
Sledování: Orientace se počítá pouze integrací dat z gyroskopu s časovým krokem Δt (Úhel_nový = Úhel_starý + (Gyroskopická rychlost × Δt)). Ostatní senzory se nepoužívají.
Limitace
Hlavní problém je drift (akumulace chyby). I malé chyby v datech gyroskopu se s časem sčítají, což vede k postupnému vychylování orientace. Tato metoda je vhodná pouze pro krátké, rychlé a relativní měření.
Voltino TriSense Pro senzor
Arduino Uno (nebo jiný mikrokontroler)
7 jumper kabelů (samec-samice)
Počítač s nainstalovaným Arduino IDE
DŮLEŽITÉ UPOZORNĚNÍ K NAPÁJENÍ: Modul TriSense Pro je vybaven obvody pro posun logických úrovní (level shifters). Napětí na pinu VIN se musí rovnat logickému napětí, které používá vaše hlavní řídicí deska.
Pro Arduino Uno/Nano použijte 5V napájení (VIN → 5V)
Pro ESP32 nebo Raspberry Pi Pico použijte 3.3V napájení (VIN → 3.3V)
Zapojení
VIN (senzor) → 5V (Arduino)
GND (senzor) → GND (Arduino)
SDA (senzor) → A4 (Arduino – SDA pin pro I²C)
SCL (senzor) → A5 (Arduino – SCL pin pro I²C)
MOSI (senzor) → D11 (Arduino – MOSI)
MISO (senzor) → D12 (Arduino – MISO)
SCK (senzor) → D13 (Arduino – SCK)
CS (senzor) → D10 (Arduino – CS, lze změnit)
C++
Princip: Komplementární filtrace s dynamickými zisky
Kombinuje silné stránky všech senzorů pro dosažení dlouhodobé stability a potlačení driftu.
Krátkodobá přesnost (Gyroskop): Primárně se používá gyroskop k rychlému sledování rotačních změn (integrace).
Dlouhodobá korekce (Accel/Mag): Akcelerometr a magnetometr slouží jako stabilní reference pro korekci chyb gyroskopu. Akcelerometr koriguje Roll a Pitch, magnetometr koriguje Yaw.
Dynamické Zisky (Dynamic Gains): Filtr dynamicky mění, jak moc věří korekčním senzorům (Accel/Mag).
Limitace
Závislost na kalibraci: Bez přesné kalibrace gyroskopu a magnetometru bude Yaw nepřesný.
Tuning: Jemné doladění dynamických Gaussových zisků může být nutné pro konkrétní aplikaci.
Pro lepší výsledky je třeba použít výkonnější mikrokontrolér než Arduino Uno/Nano, ideálně s FPU čipem (např. Raspberry Pico 2)
C++
Primární mechanismus
→ SimpleTriFusion (Integrace): Integrace gyroskopu
→ AdvancedTriFusion (Komplementární filtr): Integrace gyroskopu + korekce Accel/Mag
Stabilita Yaw (kurzu)
→ SimpleTriFusion: Nízká, rychlý drift
→ AdvancedTriFusion: Vysoká, korigováno magnetometrem
Potlačení šumu
→ SimpleTriFusion: Žádné, šum se sčítá
→ AdvancedTriFusion: Vynikající, využívá dynamické zisky
Nutnost kalibrace
→ SimpleTriFusion: Gyro offset částečně
→ AdvancedTriFusion: Kalibrace všech 9 os nezbytná
Doporučení pro použití
→ SimpleTriFusion: Krátké, relativní měření (do 1 sekundy)
→ AdvancedTriFusion: Dlouhodobé sledování 3D orientace
Drift kurzu (Yaw): Pokud se Yaw rychle vychyluje, zkontrolujte kalibraci magnetometru (Hard/Iron a Soft/Iron) a gyro offsety.
Nekonzistentní Roll/Pitch: Přesvědčte se, že akcelerometr je správně kalibrován a deska je během inicializace stále.
Šum v datech: U AdvancedTriFusion můžete upravit dynamické Gaussovy zisky (setAccelGaussian nebo setMagGaussian) pro lepší filtrování.
Nestabilní čtení při pohybu: V krátkodobém rychlém pohybu může i AdvancedTriFusion vykazovat mírné odchylky – jde o fyzikální limit snímačů.
Kontrola sériového výstupu: Pokud se orientace neaktualizuje, ujistěte se, že není blokován COM port jinou aplikací a baud rate je 115200.