neděle 27. ledna 2013

Individuální projekt (4) - Inverzní kinematická úloha

Cíle úlohy je na základě zadaných GPS souřadnic bodu na mapě a jeho nadmořské výšky určit kloubové souřadnice kamerové platformy tak, aby tento bod byl ve středu zorného pole kamery.

Ze známých GPS souřadnic nosiče a bodu určíme nejprve vzdálenost (po povrchu Země) $l$ a úhel $\alpha$ mezi nimi. Zeměpisnou šířku nosiče budu značit jako $\varphi_1$ a zeměpisnou délku nosiče jako $\lambda_1$. Obdobně pak pro souřadnice bodu na mapě pouze s tím rozdílem, že dolní index bude $2$.

Vzdálenost určíme pomocí tzv. haversine vzorce, který lze nalézt například zde [1]
\begin{align} a &= \sin^2\left( \left(\varphi_2 - \varphi_1\right)/2\right) + \cos\left( \varphi_1\right) \cos\left( \varphi_2\right) \sin^2\left( \left(\lambda_2 - \lambda_1\right)/2\right), \\
l &= 2\mathrm{R}\,\text{atan2}\left( \sqrt{a}, \sqrt{1-a} \right), \end{align} kde $\mathrm{R}$ je poloměr Země v kilometrech.

Úhel určíme podle vztahu (viz [1])
\begin{equation} \alpha = \text{atan2}\left( \sin\left(\Delta\lambda\right) \cos\left(\varphi_2\right), \cos\left(\varphi_1\right)\sin\left(\varphi_2\right) - \sin\left(\varphi_1\right)\cos\left(\varphi_2\right)\cos\left(\Delta\lambda\right)\right), \end{equation} kde $\Delta\lambda = \left(\lambda_2 - \lambda_1\right)$.

Konečně polohový vektor bodu na mapě vůči nosiči v jeho vnější souřadnicové soustavě je \begin{equation} \mathbf{X} = \begin{bmatrix}
l\cos\left(\alpha\right)\\
l\sin\left(\alpha\right)\\
h_1 - h_2
\end{bmatrix}, \end{equation} kde $h_1$ je nadmořská výška nosiče a $h_2$ je nadmořská výška bodu na mapě. Tento vektor transformujeme do vnitřní souřadnicové soustavy nosiče pomocí rotační matice $\mathbf{R}(\mathbf{q})$ z předchozího příspěvku. Tato matice však představuje transformaci z vnitřní souřadnicové soustavy do vnější. Inverzní transformaci získáme její transpozicí. Polohový vektor $\mathbf{X}$ ve vnitřní souřadnicové soustavě tedy určíme následovně \begin{equation} \mathbf{X}' = \mathbf{R}^T\mathbf{X}. \end{equation} Poslední úpravou polohové vektoru je jeho transformace do souřadnicové soustavy samotné kamerové platformy, tedy vlastně pouze posunutí počátku vnitřní souřadnicové soustavy nosiče do bodu, kde mají průsečík obě osy otáčení kamerové platformy. To lze udělat například pomocí transformační matice $\mathbf{T}_2^0(\mathbf{q}_1, \mathbf{q}_2)$ z předchozího příspěvku s nulovými kloubovými souřadnicemi. \begin{equation} \mathbf{X}'' = \left(\mathbf{T}_2^0(\mathbf{q}_1, \mathbf{q}_2)\right)^T\mathbf{X}' \end{equation} Kýžené kloubové souřadnice pak již určíme snadno pomocí následujících vztahů \begin{align} q_1 &= \pi - \text{atan2}(X''_x, X''_y),\\
q_2 &= \pi/2 + \text{atan2}(X''_x, X''_z), \end{align} přičemž ony posuny o zlomky $\pi$ jsou dány orientací inkrementálních enkodérů (viz příspěvek Individuální projekt (2)).

Zdroje

[1] http://www.movable-type.co.uk/scripts/latlong.html

středa 23. ledna 2013

Individuální projekt (3) - Přímá kinematická úloha

Úloha spočívá v určení GPS souřadnic bodu, jenž se nachází ve středu zorného pole kamery inerciálně stabilizované hlavice ze známé polohy a orientace nosiče a známých orientací jednotlivých kloubů platformy z inkrementálních čítačů.

Hlavice

V příspěvku Individuální projekt (2) jsem uvažoval inerciálně stabilizovanou platformu jako otevřený kinematický řetězec a ten popsal Denavit-Hartenbergovou notací. Pro tuto notaci je definována transformační matice ze souřadnicové soustavy kloubu $n$ do $n-1$ následovně (viz [1])
$$ \mathbf{T}_{n}^{n-1} (\theta_n, d_n, a_n, \alpha_n)=
\left[
\begin{array}{cccc}
\cos\theta_n & -\sin\theta_n \cos\alpha_n & \sin\theta_n \sin\alpha_n & a_n \cos\theta_n \\
\sin\theta_n & \cos\theta_n \cos\alpha_n & -\cos\theta_n \sin\alpha_n & a_n \sin\theta_n \\
0 & \sin\alpha_n & \cos\alpha_n & d_n \\
0 & 0 & 0 & 1
\end{array}
\right].
$$ Transformační matice pro celý kinematický řetězec je pouze součinem transformačních matic jednotlivých kloubů.
$$ \mathbf{T}_{2}^{0} (q_1, q_2) = \mathbf{T}_{1}^{0}(q_1) \mathbf{T}_{2}^{1}(q_2)
$$

Nosič

Transformační matice pro přechod z vnitřní souřadnicové soustavy nosiče do vnější souřadnicové soustavy je dána rotační maticí, kterou získáme převodem z quaternionu  $\mathbf{q}=(q_w, q_x, q_y, q_z)$ pomocí následujícího vztahu
$$ \mathbf{R}(\mathbf{q}) = \begin{bmatrix} 1 - 2 q_y^2 - 2 q_z^2 & 2 q_x q_y - 2 q_z q_w & 2 q_x q_z + 2 q_y q_w \\ 2 q_x q_y + 2 q_z q_w & 1 - 2 q_x^2 - 2 q_z^2 & 2 q_y q_z - 2 q_x q_w \\ 2 q_x q_z - 2 q_y q_w & 2 q_y q_z + 2 q_x q_w & 1 - 2 q_x^2 - 2 q_y^2 \end{bmatrix}. $$

Samotný výpočet

Jelikož je osa kamery a dálkoměru totožná s osou $x$ posledního rotačního kloubu, vypadá vektor směřující na místo na Zemi, které je ve středu obrazu kamery, v souřadnicové soustavě tohoto kloubu následovně
$$ \mathbf{X}(d)=
\left[
\begin{array}{c}
X_x\\
X_y\\
X_z\\
1
\end{array}
\right]=
\left[
\begin{array}{c}
d\\
0\\
0\\
1
\end{array}
\right],
$$ kde $d$ je změřená vzdálenost dálkoměrem v kilometrech. Tento vektor transformujeme pomocí výše uvedených matic do vnější souřadnicové soustavy nosiče.
$$ \mathbf{X}' (\mathbf{q}, q_1, q_2, d)= \mathbf{R}(\mathbf{q})\mathbf{T}_2^0(q_1, q_2) \mathbf{X}(d)
$$ Bod na Zemi na nějž ukazuje vektor $\mathbf{X}'$ však chceme vyjádřit v GPS souřadnicích. To provedeme tak, že z vektoru $\mathbf{X}'$ určíme vzdálenost nosiče na Zemi $l$ a úhel $\alpha$ mezi nosičem a bodem ve středu kamery.
\begin{align*}
l &= \sqrt{\mathbf{X}'^2_x + \mathbf{X}'^2_y}\\
\alpha &= \text{atan2}\left(\mathbf{X}'_y, \mathbf{X}'_x\right)
\end{align*}
Konečně, GPS souřadnice bodu ve středu obrazu z kamery spočteme pomocí vztahů, které jsou uvedeny například zde [2].
\begin{align*}
\phi_2 &= \mathrm{asin}( \sin(\phi_1)\cos(\mathrm{l/R}) + \cos(\phi_1)\sin(\mathrm{l/R})\cos(\alpha) ),\\
\lambda_2 &= \lambda_1 + \mathrm{atan2}(\sin(\theta)\sin(l/\mathrm{R})\cos(\phi_1), \cos(l/\mathrm{R})-\sin(\phi_1)\sin(\phi_2) ),
\end{align*}
kde $\phi_1$, $\lambda_1$ jsou zeměpisná šířka, resp délka nosiče, $R$ je poloměr Země v kilometrech a $\phi_2$, $\lambda_2$ jsou zeměpisná šířka, resp délka kýženého bodu na Zemi.

Zdroje

[1] P. Corke. Robotics, Vision and Control: Fundamental Algorithms in MATLAB. Springer, 1st edition, Nov. 2011.
[2] http://www.movable-type.co.uk/scripts/latlong.html

neděle 30. prosince 2012

Převod quaternionu na Eulerovy úhly

V tomto příspěvku odvodím vztahy pro převod quaternionu na Elerovy úhly používané v letectví, tedy úhly, které postupně reprezentují rotaci okolo osy $z$ , $y$ a $x$. Tyto úhly značím postupně jako $\alpha$, $\beta$ a $\gamma$. Prvek matice $\mathbf{R}$ na řádku $i$ a ve sloupci $j$ značím jako $\mathbf{R}_{ij}$.

Nejprve převedeme quaternion na rotační matici a z té posléze získáme Eulerovy úhly. Rotační matici z quaternionu $\mathbf{q}=(q_w, q_x, q_y, q_z)$ získáme pomocí následujícího vztahu [1]:
$$
\mathbf{R}_q =

\begin{bmatrix}
    1 - 2 q_y^2 - 2 q_z^2 & 2 q_x q_y - 2 q_z q_w & 2 q_x q_z + 2 q_y q_w \\
    2 q_x q_y + 2 q_z q_w & 1 - 2 q_x^2 - 2 q_z^2 & 2 q_y q_z - 2 q_x q_w \\
    2 q_x q_z - 2 q_y q_w & 2 q_y q_z + 2 q_x q_w & 1 - 2 q_x^2 - 2 q_y^2
\end{bmatrix}
$$ Rotační matice pro Eulerovy úhly definované v úvodním odstavci při značení $\sin\!\left(\alpha\right)=s_\alpha$ (pro kosinus a další úhly analogicky) má následující podobu
$$ \mathbf{R}_E =
\begin{bmatrix} c_\alpha\, c_\beta & c_\alpha\, s_\beta\, s_\gamma - c_\gamma\, s_\alpha & s_\alpha\, s_\gamma + c_\alpha\, c_\gamma\, s_\beta\\ c_\beta\, s_\alpha & c_\alpha\, c_\gamma + s_\alpha\, s_\beta\, s_\gamma & c_\gamma\, s_\alpha\, s_\beta - c_\alpha\, s_\gamma\\ - s_\beta & c_\beta\, s_\gamma & c_\beta\, c_\gamma \end{bmatrix}
$$ Z matice $\mathbf{R}_E$ určíme nejprve úhel $\beta$ jako
$$ \beta = \mathrm{asin}\,\left(-\mathbf{R}_{31} \right).
$$ Dále se postup v závislosti na hodnotě prvku $\mathbf{R}_{31}$ dělí na tři případy.
  1. Pokud platí, že $\mathbf{R}_{31} = 1$, pak má rotační matice nutně následující podobu
$$
\mathbf{R}_E' =
\begin{bmatrix} 0 & -c_\alpha\, s_\gamma - c_\gamma\, s_\alpha & s_\alpha\, s_\gamma - c_\alpha\, c_\gamma\\
0 & c_\alpha\, c_\gamma - s_\alpha\,  s_\gamma & -c_\gamma\, s_\alpha\, - c_\alpha\, s_\gamma\\
1 & 0 & 0 \end{bmatrix}
=
\begin{bmatrix} 0 & -s_{\gamma + \alpha} & c_{\gamma + \alpha}\\
0 & c_{\gamma + \alpha} & -s_{\gamma + \alpha}\\
1 & 0 & 0 \end{bmatrix}.
$$ Řešení  pro úhly $\alpha$ a $\gamma$ je nekonečně mnoho. Je možné získat pouze součet těchto úhlů. Z nekonečně mnoha řešení tedy vybereme jedno. \begin{align*}
\alpha &= 0\\
\gamma &= \mathrm{atan2}\!\left( \mathrm{-\mathbf{R}_{12}}\mathrm{\mathbf{R}_{22}} \right)
\end{align*}
  1. Pokud platí, že $\mathbf{R}_{31} = -1$, pak má rotační matice nutně následující podobu
$$
\mathbf{R}_E' =
\begin{bmatrix} 0 & c_\alpha\, s_\gamma - c_\gamma\, s_\alpha & s_\alpha\, s_\gamma + c_\alpha\, c_\gamma\\
0 & c_\alpha\, c_\gamma + s_\alpha\,  s_\gamma & c_\gamma\, s_\alpha\, - c_\alpha\, s_\gamma\\
-1 & 0 & 0 \end{bmatrix}
=
\begin{bmatrix} 0 & s_{\gamma - \alpha} & c_{\gamma - \alpha}\\
0 & c_{\gamma - \alpha} & -s_{\gamma - \alpha}\\
-1 & 0 & 0 \end{bmatrix}.
$$ Obdobně jako v předchozím případě je řešení  pro úhly $\alpha$ a $\gamma$ nekonečně mnoho. Opět vybereme jedno řešení, které má například následující podobu \begin{align*}
\alpha &= 0,\\
\gamma &= \mathrm{atan2}\!\left( \mathrm{\mathbf{R}_{12}}, \mathrm{\mathbf{R}_{22}} \right).
\end{align*}
  1. Pro jiné hodnoty $\mathbf{R}_{31}$ určíme zbývající úhly podle následujících vztahů
\begin{align*} \alpha &= \mathrm{atan2}\!\left(\mathrm{\mathbf{R}_{21}}, \mathrm{\mathbf{R}_{11}} \right),\\
\gamma &= \mathrm{atan2}\!\left( \mathrm{\mathbf{R}_{32}}, \mathrm{\mathbf{R}_{33}} \right).
\end{align*} Rotační matici s konkrétními hodnotami jsme získali převodem z quaternionu a známe vztahy pro výpočet jednotlivých Eulerových úhlů z této matice, které jsme odvodili z obecného tvaru rotační matice pro tyto úhly. Již tedy zbývá jen do těchto vztahů dosadit. Pro jednoduchost zde uvádím jen dosazené vztahy pro poslední případ.\begin{align*} \alpha &= \mathrm{atan2}\!\left( 2 q_x q_y + 2 q_z q_w, 1 - 2 q_x^2 - 2 q_y^2 \right),\\
\beta &= \mathrm{asin}\,\left(2 q_y q_w - 2 q_x q_z\right),\\
\gamma &= \mathrm{atan2}\!\left( 2 q_y q_z + 2 q_x q_w, 1 - 2 q_y^2 - 2 q_z^2 \right).
\end{align*} Převod quaternionů na Eulerovy úhly implementovaný v programovacím jazyce C# vypadá následovně:
        public void ToEulerAngles(out double yaw, out double pitch, out double roll)
        {
            double test = q[1] * q[3] - q[0] * q[2];

            if (test > 0.49999)
            {
                roll = Math.Atan2(2 * q[1] * q[0] - 2 * q[2] * q[3], 2 * q[1] * q[3] + 2 * q[2] * q[0]);
                pitch = -Math.PI / 2;
                yaw = 0;
                return;
            }

            if (test < -0.49999)
            {
                roll = Math.Atan2(2 * q[2] * q[3] - 2 * q[1] * q[0], 2 * q[1] * q[3] + 2 * q[2] * q[0]);
                pitch = Math.PI / 2;
                yaw = 0;
                return;
            }

            double sqx = q[1] * q[1];
            double sqy = q[2] * q[2];
            double sqz = q[3] * q[3];

            roll = Math.Atan2(2 * q[2] * q[3] + 2 * q[0] * q[1], 1 - 2 * sqx - 2 * sqy);
            pitch = Math.Asin(-2 * test);
            yaw = Math.Atan2(2 * q[1] * q[2] + 2 * q[3] * q[0], 1 - 2 * sqy - 2 * sqz);
        }

Zdroje

Individuální projekt (2)

Vnější souřadnicová soustava

Vnější souřadnicová soustava nosiče vůči Zemi má počátek v hmotném středu nosiče, osa $x$ směřuje na sever, osa $z$ do středu Země a osa $y$ je orientována tak, aby byl souřadnicový systém pravotočivý.

Vnitřní souřadnicová soustava nosiče

Souřadnicová soustava nosiče je znázorněna na Obrázku 1. Jedná se o v letectví běžně používaný souřadnicový systém, kde počátek je ve středu nosiče (je tedy souhlasný s počátkem vnější souřad. soustavy), osa $x$ je orientována ve směru letu, osa $y$ prochází osou křídel a osa $z$ je orientována tak, aby směřovala směrem dolů a systém splňoval pravidlo pravotočivé souřadnicové soustavy.

Obrázek 1: Souřadnicová soustava nosiče


Poloha a orientace nosiče

Polohu nosiče získáme přímo z polohy určené GPS přijímačem v inerciální jednotce. Tato poloha sice neodpovídá poloze nosiče, jelikož je dána polohou antény, ale vzhledem k tomu, že rozdíl v těchto polohách je minimální vzhledem k ostatním uvažovaným vzdálenostem ve výpočtu přímé kinematické úlohy, lze tento rozdíl zanedbat, případně by byl kompenzován přímo v inerciální jednotce.

Orientaci nosiče získáme opět přímo z inerciální jednotky. Inerciální jednotka může být umístěna v rámci nosného objektu tak, že její orientace se neshoduje s orientací nosného objektu. Tato situace je však kompenzována přímo v inerciální jednotce. Orientace je v inerciální jednotce uchovávána v podobě quaternionů.

Popis samotné inerciálně stabilizované platformy

Samotná inerciálně stabilizovaná platforma má čtyři klouby. Dva zajišťují rotaci platformy v azimutální ose a zbylé dva v elevační ose. Pro rotaci okolo jedné osy jsou tedy vždy použity dva klouby. Jeden je schopen rotace o $n\cdot360^\circ$ a je vůči druhému relativně pomalý, druhý je schopen rotace jen ve velmi omezeném rozsahu, ale je velmi rychlý. Pro samotnou stabilizaci se tedy s výhodou využívají převážně ony rychlé klouby.

Pro naše účely je ale výhodnější reprezentovat kamerovou platformu jako otevřený kinematický řetězec s pouze dvěma klouby. Pro přímou kinematickou úlohu pouze přičteme k pomalému kloubu pro danou osu otočení rychlého kloubu. Pro inverzní kinematickou úlohu budeme uvažovat pouze pomalé klouby. Takovýto kinematický řetězec můžeme popsat například Denavit-Hartenbergovou notací. Pro náš případ je také výhodné, že v této notaci se bude shodovat osa kamery a dálkoměru s osou $x$ souřadnicové soustavy posledního kloubu.

Parametry Denavitovy-Hartenbergovy notace
$n$ $\theta_n$ $d_n$ $a_n$ $\alpha_n$
1 $q_1$ $d_1$ $0$ $\pi/2$
2 $q_2$ $0$ $0$ $0$
Parametry $q_1$ a $q_2$ jsou kloubové souřadnice robota, které odpovídají natočení azimutálního a elevačního kloubu. Tato natočení jsou vyčítána řídící jednotkou kamerové platformy z inkrementálních rotačních čítačů. Ty však bohužel nemají shodnou orientaci s kloubovými souřadnicemi. Na Obrázku 2 jsou znázorněny orientace jednotlivých čítačů. Z nich snadno získáme převodní vztah do kloubových souřadnic.

\begin{align*}
q_1 &= -(\beta_0 + \beta_1) + \pi \\
q_2 &= \alpha_0 + \alpha_1 - \pi/2
\end{align*}
Obrázek 2: Orientace kloubových úhlů


Individuální projekt (1)

Tato série příspěvků se bude věnovat úloze, kterou jsem řešil v rámci předmětu Individuální projekt (A3B35IND). Úloha se týká projektu inerciálně stabilizované kamerové platformy, tedy projektu, jehož se okrajově týkaly i předchozí příspěvky o inerciální jednotce. Podrobnější popis projektu inerciálně stabilizované kamerové platformy je na stránkách skupiny AA4CC.

Cílem práce je vyřešit přímou a inverzní kinematickou úlohu pro kamerovou hlavici na nějakém nosném objektu. Přímá část práce spočívá v určení místa na mapě, jenž je ve středu zorného pole kamery. Motivací pro tuto úlohu je fakt, že operátor kamerové hlavice má aktuálně k dispozici aplikaci, v níž je vykreslována pozice nosného objektu a obraz z kamery, bohužel však již nemá k dispozici informaci o tom, na jaké místo na mapě je kamerová hlavice zaměřena. Inverzní úloha spočívá v určení kloubových souřadnic kamerové platformy takových, aby zadané místo na mapě bylo v zorném poli kamery. Zde je motivace zřejmá. Místo nepohodlného ručního zaměřování určitého místa na mapě přenechat tuto úlohu řídícímu systému a celý tento proces tak zautomatizovat.

sobota 29. prosince 2012

C# třída pro práci s (transformačními) maticemi

Jelikož programovací jazyk C# nenabízí ve standardních třídách vhodnou třídu pro práci s maticemi, natož pak s transformačními maticemi, musel jsem si vytvořit vlastní třídu. Třída obsahuje mimo základní operace s maticemi, jako je sčítání, maticové násobení, násobení skalárem a transpozici i operace spojené s transformačními maticemi. Jmenovitě se jedná o generování rotačních matic okolo osy $x$, $y$ a $z$, rotační matice podle Eulerových úhlů v notaci $ZYX$, translační matice a transformační matice podle parametrů z Denavit-Hartnebergovy notace. Rotační matice jsou dimenze $4\times 4$, tedy v homogenních souřadnicích. Třída přetěžuje operátory sčítání, násobení a indexového přístupu pro maximálně intuitivní práci s jednotlivými instancemi třídy. Její aktuální verze s podrobnější dokumentací je přístupná na mém repositáři na githubu.

Seznam funkcí implementovaných ve třídě:
        public Matrix(int rows, int cols)
        public Matrix Copy()
        public static Matrix ZeroMatrix(int rows, int cols)
        public static Matrix IdentMatrix(int n)
        public override string ToString()
        public static Matrix Transpose(Matrix m)
        public static Matrix Multiply(Matrix m1, Matrix m2)
        private static Matrix ScalarMultiply(double n, Matrix m)
        private static Matrix Add(Matrix m1, Matrix m2)
        public static Matrix EulerRotaionMatrix(double yaw, double pitch, double roll)
        public static Matrix RotaionMatrixZ4(double angle)
        public static Matrix RotaionMatrixX4(double angle)
        public static Matrix RotaionMatrixY4(double angle)
        public static Matrix TranslationMatrix(double xTrans, double yTrans, double zTrans)
        public static Matrix DHTransMatrix(double[][] DHparams)

úterý 24. července 2012

Srovnání elektronických gyroskopů InvenSense ITG-3200 a ST L3G4200D

V dnešním článku srovnám elektronické gyroskopy InvenSense ITG-3200 a ST L3G4200D a to především podle šumu, teplotní závislosti offsetů a závislosti offsetů na tíhovém zrychlení.

Oba senzory měli při měření nastaveny obdobné parametry.
  • Oba: rozlišení 2000 °/s, vzorkovací frekvence 200 Hz
  • ITG-3200: dolnopropustní filtr 98 Hz
  • L3G4200dolnopropustní filtr 70 Hz

Popis senzorů

ITG-3200

Tento senzor jsem popsal již v tomto dřívějším článku.

L3G4200D

Elektronický gyroskop L3G4200D je 16 bitový tříosý mikromechanický senzor úhlové rychlosti. Senzor má  mimo jiné programové nastavitelné rozlišení (±250 °/s±500 °/s, ±2000 °/s), vzorkovací frekvenci a k dané vzorkovací frekvenci i dolnopropustní filtr. Dále má senzor v sobě integrován teploměr se vzorkovací frekvencí 1 Hz, 8 bitovým rozlišením s citlivostí 1 °C/LSB. Komunikace se senzorem je možná po sběrnici I2C nebo SPI. Výrobce se u tohoto senzoru chlubí výjimečnou stálostí offsetů.

Šum

Obrázek 1 zobrazuje graf s naměřeným hodnotami úhlových rychlostí pro stejnou osu z obou senzorů. Senzor L3G4200D měl nulový offset a naměřená data jsou tedy zobrazena bez jakýchkoliv úprav. U senzoru ITG-3200 byl pro lepší srovnání odečten nenulový offset, který nemá na šum vliv. Z grafu je zřejmé, že šum má v obou případech nulovou střední hodnotu. V tomto srovnán jasně vítězí senzor ITG-3200, neboť má násobně menší šum (v řádu několika málo LSB).
Obrázek 1: Srovnání šumu

Závislost offsetů na orientaci vektoru tíhového zrychlení

Tuto závislost jsem pro senzor ITG-3200 naměřil již dříve a publikoval v tomto článku. Zde již pouze uvedu, že závislost nebyla prokázána.
Naměřená data ze senzoru L3G4200D jsou zobrazena na Obrázku 2. Při měření byl senzor natočen do šesti poloh tak, aby vždy vektor tíhové zrychlení byl rovnoběžný z jednou z os senzoru. Offset je zřejmě nezávislý na orientaci senzoru vůči Zemi a tedy orientaci vektoru tíhového zrychlení.
Obrázek 2: Závislost offsetu senzoru L3G4200D na orientaci vůči Zemi

Závislost offsetů na teplotě

Senzory byly podchlazovány pomocí Peltierova článku M-TEC1-01708 a ohřívány pomocí horkovzdušné pistole. Teplota je měřena vždy čidlem teploty integrovaným přímo v pouzdře senzoru. 

L3G4200D

Závislost na teplotě je u senzoru L3G4200D zřejmá z grafu na Obrázku 3.  Na Obrázku 4 je zobrazen graf závislosti offsetu senzoru pro osu Z. Při změně teploty o cca 45 °C se offset změnil o cca 0,75 °/s. Nutno podotknout, že v obou grafech je teplota vynesena diferenčně tak, jak ji měří integrovaný teploměr.

Obrázek 3

ITG-3200

Podrobnější rozbor závislosti offsetu senzoru ITG-3200 jsem uvedl v tomto článku. Zde pouze publikuji grafy s naměřenými daty pro větší teplotní rozsah.


Závěr

Dle výše uvedených grafů považuji za vítěze tohoto srovnání elektronický gyroskop ITG-3200 od firmy InvenSnese. Má sice podstatně větší offset ve všech osách i mírně větší teplotní závislost offsetů, nicméně samotná velikost offsetu není zajímavá pokud je stabilní. Stabilní v tomto případě sice není, neboť je závislý na teplotě, ale díky velmi dobrému integrovanému teploměru, který má větší rozlišení i vzorkovací frekvenci než L3G4200D, je možné tuto závislost kompenzovat. Oproti svému konkurentovi navíc vyniká menším šumem.