Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2018:accel-roll-pitch

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2018:accel-roll-pitch [2019/01/14 22:44]
Ondrej Vörös
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 101: Řádek 118:
 jedna sekunda a tiež spracovanie znakov z kruhového zásobníka prijímaných sériovým rozhraním UART. K ovládaniu jedna sekunda a tiež spracovanie znakov z kruhového zásobníka prijímaných sériovým rozhraním UART. K ovládaniu
 programu cez sériové rozhranie slúžia dva príkazy: ​ programu cez sériové rozhranie slúžia dva príkazy: ​
-  * ''​COMPENSATE''​ - spustenie kompenzovaného výpočtu náklonu+  * ''​COMPENSATE''​ - spustenie kompenzovaného výpočtu náklonu ​(30 meraní s periódou 1 sekunda)
   * ''​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]]
 ---- ----
2018/accel-roll-pitch.1547502283.txt.gz · Poslední úprava: 2019/01/14 22:44 autor: Ondrej Vörös