Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
2018:accel-roll-pitch [2019/01/14 22:48] Ondrej Vörös [Štruktúra programu] |
2018:accel-roll-pitch [2019/01/14 23:58] (aktuální) Ondrej Vörös |
||
---|---|---|---|
Řádek 94: | Řádek 94: | ||
==== Výpočet derotačnej matice a kompenzácia náklonu ==== | ==== Výpočet derotačnej matice a kompenzácia náklonu ==== | ||
+ | Derotačná matica je inverzná alebo transponovaná rotačná matica. Rotačné matice pre rotáciu okolo jednotlivých osí | ||
+ | sú [[https://www.mathworks.com/help/phased/ref/rotx.html|definované]] takto: | ||
- | Rotačná matica okolo danej osi | + | Rx = [1 0 0; 0 cos(roll) -sin(roll); 0 sin(roll) cos(roll)]; % rotacna matica okolo osi x- counterclockwise |
+ | Ry = [cos(pitch) 0 sin(pitch); 0 1 0; -sin(pitch) 0 cos(pitch)]; % rotacna matica okolo osi y- counterclockwise | ||
+ | Rz = [cos(yaw) -sin(yaw) 0; sin(yaw) cos(yaw) 0; 0 0 1]; % rotacna matica okolo osi z- counterclockwise | ||
+ | |||
+ | Keďže pomocou akcelerometru nie je možné počítať uhol kurzu (otočenie okolo osi z- yaw), rotačnú maticu ''Rz'' | ||
+ | nevyužijeme. Ako derotačnú maticu sme použili ''M = Rx*Ry'' (bola určená experimentálne, aby vektor zrýchlenia | ||
+ | [1000 0 0] pri rotácii o 90° pozdĺžneho náklonu-pitch sa otočil do polohy [0 0 1000]- nasmerovanie osi z | ||
+ | do smeru gravitačného zrýchlenia). Rovnako, pri použití rotačnej matice M sa vektor zrýchlenia [0 -1000 0] | ||
+ | pri rotácii o 90° priečneho náklonu-roll otočí do polohy [0 0 1000]. | ||
+ | |||
+ | Derotovanie dátového vektora (v našom prípade vektoru zrýchlenia) prebieha vynásobením vektoru s derotačnou maticou. | ||
+ | Následne možno z derotovaného vektoru znovu vypočítať uhly náklonu. | ||
+ | |||
+ | accXr = M(1,1)*accX + M(1,2)*accY + M(1,3)*accZ | ||
+ | accYr = M(2,1)*accX + M(2,2)*accY + M(2,3)*accZ | ||
+ | accZr = M(3,1)*accX + M(3,2)*accY + M(3,3)*accZ | ||
==== Štruktúra programu ==== | ==== Štruktúra programu ==== | ||
Řádek 104: | Řádek 121: | ||
* ''MATRIX m11 m12 m13 m21 m22 m23 m31 m32 m33'' - zadanie derotačnej matice (zadanie prvkov matice po riadkoch) | * ''MATRIX m11 m12 m13 m21 m22 m23 m31 m32 m33'' - zadanie derotačnej matice (zadanie prvkov matice po riadkoch) | ||
- | ---- | + | ----- |
====== Záver ====== | ====== Záver ====== | ||
- | [[https://drive.google.com/open?id=1P0V9NppeeiWWQ49n4yWtXbpKTopOQkus|zdrojové súbory]] | + | Výsledkom riešenia projektu je meranie pozdĺžneho a priečneho náklonu. Tiež bola implementovaná derotácia dátového |
+ | vektoru zrýchlenia pre ľubovoľnú polohu akcelerometru voči referenčnej rovine. Kompenzácia dát derotáciou | ||
+ | dátového vektoru zrýchlenia podľa hodnôt náklonu akcelerometru vo zvolenej polohe nie je žiaľ presná (nepresnosť | ||
+ | kolíše v závislosti na zvolenej polohe akcelerometru) a nepodarilo sa mi prísť (kvôli nedostatku času) na to, | ||
+ | kde môže byť chyba. | ||
+ | [[https://drive.google.com/open?id=16A5mXGF80x7sn3EjSTIg6NrUqWS896O5|zdrojové súbory]] | ||
[[https://drive.google.com/open?id=17qJpzuhK15dT8O1v8BeUGPA5j-lbc9JG|videoukážka]] | [[https://drive.google.com/open?id=17qJpzuhK15dT8O1v8BeUGPA5j-lbc9JG|videoukážka]] | ||
---- | ---- |