Maus mit hoher Lift-Off-Distance

Rhino_Cracker

Komplett-PC-Käufer(in)
Hi zusammen,
ich bin gerade auf der Suche nach Mäusen mit sehr hohen Lift-Off-Distanzen (LOD).

Warum zur Hölle will er das?
Experimente, Zweckentfremdung, Odometrie: Sensor, der optisch misst, wie weit sich ein Objekt auf einer geraden krummen aber definierten Linie bewegt hat.

Bisherige Recherche hat nur ergeben, dass es Sensoren gibt, die zwischen 1,5 und 3 mm einstellbar sind [cb]
und "schlechte" optische Mäuse angeblich bis zu 2 cm haben. [cm]

Ich dachte, bevor ich mir da jetzt noch ein paar weitere Stunden einen absuche, frage ich lieber mal direkt bei den Hardware-Insidern ;)
Kennt ihr Mäuse mit besonders hohen Lift-Off-Distances?

VG & Thx, Rhi
 
Zuletzt bearbeitet:
Hol dir einfach einen time of flight sensor (Laser-Distanzmesser o.ä.) für Arduino und machs damit.

Die Maussensoren sind höchstwahrscheinlich extrem divergent und prinzipiell ausgelegt auf kurze Distanzen. Sowohl aus Gründen des Augenschutzes als auch Einsatzzwecks ist es extrem unwahrscheinlich, dass eine Firma einen unpassenden Sensor in einer Maus verbaut, damit man den sinnvoll für sowas verwenden kann.
 
Ich hatte mich mit den Worten "gerade Linie" leider fehlerhaft ausgedrückt (kommt davon, wenn man kurz vor nem Termin noch schnell fertig werden will :) ).
Die Linie ist nicht gerade, aber fest und bekannt. Man kann also eindeutig von einer zurückgelegten Wegstrecke auf eine Position zurückschließen.
Ich denke, Time-of-Flight würde da dann eher ausfallen, außer man kann den Sensor immer aufs Zielobjekt ausrichten. Eine freie Sichtlinie zwischen ortsfestem Sensor und beweglichem Objekt ist aber denke ich nicht immer gegeben.
 
In dem Fall:

Teuer und genau: Kamera von oben mit telezentrischem Objektiv. Schwerpunkt vom Objekt tracken.

Günstig und vermutlich weniger genau: Arduino und Beschleunigungssensor. dx = sqrt(x'^2+y'^2)*dt wobei dt die Polling-rate vom Beschleunigungssensor ist und dt Kehrwert der Polling-Frequenz.

Code:
len = 0;
void loop()
{
    dlen = sqrt(x'^2+y'^2)*dt // distanz in der ebene
    // dlen = sqrt(x'^2+y'^2+z'^2)*dt // distanz im raum
    len = len+dlen;
}

edit: Vorsicht, es ist nicht ganz so trivial. Die Absolutgeschwindigkeit muss noch rein, d.h. Beschleunigung integrieren. Das genau zu machen ist nicht easy bzw. extrem fehleranfällig, falls man wegen Rauschen oder Messfrequenz Beschleunigung unter den Tisch kehrt.

edit: Hier ein Beispiel mit Maus, weil ichs auch interessant fand

Das Problem mit Lift-off ist einfach, dass der Sensor in der Maus im Endeffekt auch auf einen S/W Sensor abbildet, intern wird dann ein 32x32 Pixelbild oder sowas in der Richtung verrechnet bei Bewegung in Distanz.

Das Problem bei der Maus ist damit ein optisches, denn aus Preisgründen ist der Sensor klein und aus offensichtlichen Gründen Bild- und Gegenstandsweite klein. Das darin verbaute Abbildungssystem, vermutlich ein Einlinser, dürfte also eine extrem kurze Brennweite haben. Damit ist die Tiefenschärfe prinzipbedingt extrem gering und abseits der Designdistanz (Lift-off Distanz!) landet ein vermatschter Pixelbrei auf dem Sensor (ähnlich stark weichgezeichnetem / getiefpassten Bild), womit Positionen nicht mehr unterscheidbar werden und ohne Unterlage in der korrekten Distanz zum Sensor keine zuverlässige Distanzmessung machbar ist.

Ich glaube ein Beschleunigungssensor ist für deinen Fall am praktikabelsten, vorausgesetzt du findest einen der genau genug für deinen Einsatzzweck ist.
 
Zuletzt bearbeitet:
Weißt Du, wie der Algorithmus von sowas aussieht? Maus-Verschwibungs-Bestimmung)
Verschiebt der das alte Bild per BruteForce so lange und berechnet die Grau-Wert-Differenz zum aktuellen Bild, bis diese minimal wird? Das stelle ich mir zu rechenintensiv für ein kleines, per USB angebundenes, ungekühltes Gerät von ~1995 vor, als dass es das zwischen 2 30x30px-Bildern ~100 mal pro Sekunde machen könnte.

"Beschleunigungssensor" << Ich kenne die Teile. Sie messen idR. die Kraft auf eine Masse, welche sich durch die Beschleunigung und ihre Trägheit ergibt.
1x zeitlich Integrieren liefert Geschwindigkeit, 2x zeitlich integrieren liefert Ort, theoretisch.
In der Praxis muss man erst noch die dabei herauspurzelnden Integrationskonstanten eliminieren. Man braucht einen sehr gut parametrierten Sensor und alle Fehler (in der Beschleunigung) integrieren sich doppelt auf (zum Ort).
Ich hatte da selbst mal mit einem Inertialsensor aus dem Autobereich auf einer Art Motorrad experimentiert.
Hier solls erstmal optisch, durch nach unten gerichtetes Messsystem passieren.

"extrem kurze Brennweite" << heißt für mich: ich bekomme mit zunehmendem Abstand zunehmende Untrackbarkeiten (weil unscharf) und einen zunehmenden Skalierungsfehler (weiter entfernte Objekte erscheinen kleiner). Also entweder damit leben (falls es gerade noch so reicht), oder Objektiv vorm Sensor ausbauen und anderes Linsensystem dran? Oder gleich eine Art Zusatzlinsensystem? (keine Ahnung gerade aus dem Kopf, ob das mit Zusatzlinse möglich ist)...
Oder gleich ein NanoPi mit Kamera, die nach unten schaut - wäre vermutlich die billigste Lösung.

Wäre jetzt natürlich interessant zu wissen, ab welcher Distanz die Mäuse eine Struktur nicht mehr auflösen+verarbeiten können. Ob das quasi gerade noch ausreicht oder nicht^^
 
Ich weiss nicht ob noch relevant oder ob es überhaupt technisch Sinn macht aber es gibt ein paar SteelSeries Mäuse die einen speziellen Lift off Sensor zusätzlich drin haben.

zB
 
Zurück