robotino,
so, jetzt bin ich wieder im Lande. Es hat mich gefreut, zu sehen, dass Du Dich so gründlich mit der Sache auseinandergesetzt hast. Eine exakte analytische Lösung des Gleichungssystems gibt es im allgemeinen nicht, weil es überbestimmt ist. Mit der Methode der kleinsten Fehlerquadrate kann man aber die Abweichung zwischen Messwerten und berechneten Werten so klein wie möglich machen. Es also eher eine optimale Anpassung, als eine Lösung. Im Anhang kannst Du die Einzelheiten sehen. Delta Phi ist ein Skalar, weil rechts ein Skalarprodukt steht! Ich hab im Anhang versucht, die Formel suggestiver aufzuschreiben.
Ja primaZitat von robotino
! Das heisst, Du berechnest Drehung und Verschiebung, oder?
Die Genauigkeit ist ein echtes Problem. Meine Maussensoren liegen nicht auf dem Untergrund auf, sondern beäugen ihn durch eine Linse von 8mm Brennweite, die ca. 50mm über dem Untergrund montiert ist. Bei dieser Gegenstandsweite brauche ich auch keine Beleuchtung mehr; normales Tageslicht reicht dicke aus. Die Auflösung liegt bei ca. 3 Ticks/mm. Unebenheiten sind bei diesem Aufbau unschädlich, solange sie nicht zu weit aus dem Bereich der Schärfentiefe herausragen. Das Scharfstellen geht sehr einfach: Solange an der Fokussierschraube drehen, bis der SQUAL-Wert (Register 0x04) maximal ist.
Ein Testfeld ohne Unebenheiten hatte ich mir hergestellt, indem ich ein altes(!) Geschirrhandtuch mit Linoldruckfarbe eingerollt und dann auf einem DIN A2 Bogen weissen Zeichenkartons abgedruckt habe. Das gibt eine unregelmässige Struktur mit hohem Kontrast und ausreichend feiner Körnigkeit.
Bei mir ist die Positionsberechnung bei geraden Fahrten über 200 bis 300mm auf mindestens 1mm genau. Ungenau wird's erst bei Drehungen. Meine Berechnungen laufen auf einem ATmega16, der auch die Messwerte abfragt. Der "SLEEP"-Modus ist natürlich ausgeschaltet und wie gesagt, ich verwende kein Wechsellicht für die Ausleuchtung (die Sensorkamera macht 1600 Aufnahmen/s; da verursacht das 100Hz-Flackern einer Wechselstromlampe schlimme Fehlmessungen). Es gibt noch jede Menge anderer Fehlerquellen. Inzwischen habe ich eine Liste zusammengestellt, die ich in den nächsten Wochen abarbeiten werde. Zwei der Kandidaten sind:
1. ab und zu werden Messwerte zwar abgefragt, aber unvollständig oder falsch verarbeitet (z.B. durch pile-ups der Timerinterrupts). Das führt zu verschiedenen Fehlerbildern.
2. das Messintervall ist ab und zu so lang, dass ein Messwert überläuft (die delta_x- und delta_y-Register können ja nur -127 bis +127 darstellen), dann ist die berechnete Verschiebung zu kurz, bzw. die Drehung zu klein.
Bei Dir laufen die Rechnungen auf dem PC, nehme ich an? Welche Genauigkeit haben Deine Variablen? Die Kalibrierdaten der Sensoren streuen. Es ist eine gute Idee, gemittelte Werte aus mehreren Kalibierfahrten zu verwenden.
Ciao,
mare_crisium
Edit: Ach, ich habe wieder übersehen, dass Du ja mechanische Mäuse verwendest. Sprichst Du Deine Mäuse über PS/2 an?
Edit2: Attachment gelöscht, wg. Upload-Quota.
Lesezeichen