Im Folgenden wird die Drehung des Roboters mit Hilfe eines Gyrometers gemessen. Der Gyrometer ist im Zentrum des Gehäuse angebracht und misst die Drehgeschwindigkeiten _I\dot{\omega}^B. Der Gyrometersensor MPU6050, der hierzu verwendet wird, ist ein kostengünstiger Sensor. Er misst die Drehgeschwindigkeit und lineare Beschleunigungen in allen 6 Raumrichtungen, siehe MPU6050.

Um die Lagegrößen aus den Sensordaten vom Gyrometer bzw. Accelerometer zu konstruieren, muss die Drehgeschwindigkeit einfach und die translatorische Beschleunigungen zweifach integriert werden. Das führt dazu, dass die Messfehler mitsummiert werden. Während die Messfehler bei der Ermittlung der Orientierung durch Gyrometrie linear steigen, steigen sie bei der Ermittlung der translatorischen Lagegrößen durch den Accelerometer quadratisch. Im heutigen Stand der Technik können die Accelerometerdaten zu Hilfe gezogen werden, um momentane Beschleunigungen genau zu erfassen, allerdings für die Positionsbestimmung bei mobilen Indoor-Robotern gilt sie eher als ungeeignet, siehe BorensteinFeng94.

Die Daten des Gyrometers sind allerdings in manchen Anwendungen brauchbar. Hierbei hat man hierbei den Vorteil, dass direkt die Drehgeschwindigkeit und nicht die -beschleunigung gemessen wird. Bei der Bestimmung der absoluten Rotation um alle 3 Raumrichtungen, tritt das Problem auf, dass bei der Formulierung der Rotation alle 3 Achsen in Abhängigkeit stehen. Zur Formulierung der Rotation in allen Raumrichtungen kann die Formulierung nach Eulerwinkeln oder mit Hilfe der Quaternionen erfolgen, siehe DrehJena. Dies führt dazu, dass erstens die Messfehler in allen Richtungen addiert werden, zweitens dass man die Sensoren in allen Richtungen kalibrieren muss. Das ist z.B. eine bekannte Herausforderung bei der Anwendung in Flugobjekten wie Quadrocoptern und Flugzeugen.

Ohne darauf detailliert einzugehen, kann man erwähnen, dass im Beispiel eines 2D-Roboters nur die Rotation um eine Raumachse und zwar die Normalrichtung zur Ebene gemessen werden muss. Bei einer geschickten Kalibrierung des Sensors, lässt sich die Drifting des Sensor im Bereich von < 0.01\nicefrac{^\circ}{min} halten, was für vorliegende Anwendung eine ausreichende Fehlerentwicklung darstellt. Als Vergleich: Bei der Messung der Rotation in allen 3 Raumrichtungen und Formulierung durch Quaternionen beträgt die Drifting um die obengenannte Achse deutlich über 1 \nicefrac{^\circ}{min}.

Es gilt hierbei zu erwähnen, dass obiger Ansatz nur unter der Annahme

(1)   \begin{equation*} \begin{bmatrix} \alpha^G\\ \beta^G \end{bmatrix}=0 \end{equation*}

gilt, was am Anfang bei der Formulierung der Zwangsbedingungen erfolgte. Somit werden die Drehungen um die Frontal- und die Querachse (Roll und Pitch) vollständig vernachlässigt. Das kann ggf. genauso zu Fehlern führen, wenn die Bewegung des Roboters nicht mehr auf einer Ebene betrachtet werden kann, konkret gesagt, wenn er stolpert, über Gegenstände klettern muss etc. Für einen breiten Einsatz scheint diese Annahme allerdings zu eignen, siehe BorensteinFeng94 und BorensteinFeng96.

In dem vorherigen Teil wurde die Ermittlung des Zustands nur anhand der Odometrie erläutert. In diesem Teil wird die Ermittlung des Zustands anhand der Odometrie und der Gyrometrie diskutiert.

Sensor-Fusion

Die Ermittlung des Systemzustands durch Odometrie und Gyrometrie führt zu einem überbestimmten Problem. Der Rotationswinkel _G\gamma_{t} wird hierbei sowohl aus den Odometern konstruiert als auch aus dem Gyrometer akquiriert. Da die von der Sensorik akquirierten Daten keine absoluten Wahrheiten wiedergeben, wird hierbei von der Wahrscheinlichkeit der Daten bzw. einer „Schätzung“ (Prediction) des Systemzustands gesprochen. Hierbei erhält der Algorithmus mehrere ggf. voneinander abweichende Informationen über den Systemzustand. Er muss demnach den optimalsten bzw. den wahrscheinlichsten Systemzustand schätzen. Hierzu gibt es ebenfalls zahlreiche Studien und Ansätze, wie z.B. Bayes Theorem und Kalman Filter etc. Hier ein hilfreiches Video für Sensor-Fusion auf Android Devices mit Hilfe desselben Sensors.

Im vorliegenden Fall hat die Odometrie eine deutlich schlechtere Genauigkeit als die Gyrometrie. Eine Approximation ist die Annahme, dass die Gyrometerdaten durch geringe Drifting exakte Wahrheit sind, d.h.

(2)   \begin{equation*} P_\Gamma(G)=1 \end{equation*}

Die Daten der Odometrie und Gyrometrie sind \textit{weitestgehend} nicht komplementär, d.h. die Daten aus der Gyrometrie beeinflussen nicht die Wahrscheinlichkeit der Daten aus der Odometrie. Die Wahrscheinlichkeit der Odometriedaten wird in der Abbildung 1 dargestellt.

Rendered by QuickLaTeX.com

Abbildung 1: Gausssche Verteilung der Wahrscheinlichkeit der Odometriedaten
Das Ziel ist allerdings nicht nur Winkel sondern die gesamte differentielle Bewegung _G \mathbf{r}_{t}^B abzuschätzen. Somit sieht das Kreisbogen-Modell wie in der Abbildung 2.

Rendered by QuickLaTeX.com

Abbildung 2: Konstruktion der differentiellen Bewegung durch Odometer und Gyrometer
Die einfache optische Odometriemessung hat eine Auflösung, die zwei Spaltbreiten beträgt (ein leerer + ein voller). Wenn der Sensor ein Inkrement misst, gilt es

(3)   \begin{equation*} k_{Mess,Ink}=1\Rightarrow0<l_{Ist}<2l_s \end{equation*}

wobei k_{MESS,Ink} Inkrementenanzahl, l_{IST} die IST-Verschiebung (radial oder linear) und l_s eine Spaltbreite (ebenso radialoder linear) ist. In unserem Fall handelt es sich um einen Low-Budget Drehinkrementgeber (Drehencoder) mit 20 Spalten. Eine Spaltbreite beträgt demnach 360^\circ / (20*2)=9^\circ und wir haben insgesamt eine Auflösung von \pm9^\circ. Wichtig zu beachten ist, dass es sich hier nicht um einen Fehler handelt, sondern die Auflösung. Die Abweichungen werden nicht addiert.

Aus dieser Ungenauigkeit entsteht ein mögliches Intervall für die Ist-Inkrement für jeweils das rechte und das linke Rad. Daraus lassen sich nach den bereits genannter Vorgehensweise ein minimaler und ein maximaler Wert für die hinterlegten Bogenlängen \Delta a_{min,l,t}, \Delta a_{min,r,t}, \Delta a_{max,l,t}, \Delta a_{max,r,t} und daraus Radiusintervall des Drehkreises r_{min,c,t}, r_{max,c,t} berechnet.

Bei der Annahme, dass die Gyrometerdaten eine 100\%– Wahrscheinlichkeit und eine unendlich hohe Auflösung haben, kann der Radius des Drehkreises einen beliebigen Wert zwischen

(4)   \begin{equation*} r_{min,c,t}< r_{Ist,c,t}< r_{max,c,t} \end{equation*}

betragen. Nun gilt das Schätzungsproblem zu lösen, wodurch man die Fehler minimiert. Hierzu kann das Kalman-Filter zu Hilfe gezogen werden, welches die Tendenzen im Algorithmus mitspeichert und -berücksichtigt.

Eine Vereinfachung für die Abschätzung ist die Annahme, dass der Ist-Wert dem arithmetischen Mittel entspricht, d.h. r_{Ist,c,t}=\frac{r_{min,c,t}+r_{max,c,t}}{2}. Auch dieser Ansatz erweist sich für diese Anwendung brauchbar, weil die unsystematischen Fehler hoch sind und die systematischen Fehler überdecken, siehe BorensteinFengCalib96. Trotzdem bietet das Kalman-Filter eine allgemeingültigere und präzisere Vorangehensweise an das Schätzungsproblem.