Archiv verlassen und diese Seite im Standarddesign anzeigen : Sensor einer Optischen Maus zur Streckenmessung
Hi!
Hat sich schon mal jemand von euch überlegt den Sensor einer optischen Maus zur Strecken- und Geschwindigkeitsmessung zu verwenden?
Ich das überhaupt möglich?
Hat jemand eine Ahnung, ob das auch bei höheren Geschwindigkeiten (20 bis 40 km/h) fonktionieren könnte?
sg
Paunza
Unter "optische Maus geänderte Fokus Distanz" sind einige Untersuchungen beschrieben.
Es ist mit einem anderen Abstand etwas schwierig.
Bei ein paar m/s ist aber wohl Schluß.
Manfred
https://www.roboternetz.de/phpBB2/viewtopic.php?p=60367#60367
honkitonk
13.09.2005, 08:09
Also es gibt mehere Threads dazu lies erstmal dich durch. Aber diese Technik hat kaum potenzial um deine Anfordungen zu befriedigen.
euer Student
Hatte das Thema in meiner Diplomarbeit und kann dazu sagen: Durch Verwendung eines externen Mikrocontrollers lassen sich diese Sensoren ideal für Geschwindigkeitsmessungen einsetzen, wenn man im Mikrocontroller eine Mittelwertbildung vornimmt. Wichtig für eine optimale Funktion sind geeignete Objektive mit auf den Anwendungsfall abgestimmten Brennweiten, ausreichende Beleuchtung der Messstelle und die Einstellung des korrekten Abstandes zwischen Objektiv und Oberfläche. Wir haben solche Messsysteme an Außenspiegeln von Autos montiert und Geschwindigkeiten bis über 200km/h gemessen.
Streckenmessungen sind eher ungenau, bedingt durch die geringe, örtliche Auflösung der Sensoren und den damit verbundenen Fehler bei der Aufsummierung der Einzelstrecken. Es kommt eben immer darauf an, wie genau man messen möchte.
Ruppi
Wir haben solche Messsysteme an Außenspiegeln von Autos montiert und Geschwindigkeiten bis über 200km/h gemessen.
Welcher Abbildungsmaßstab wurde dabei eingesetzt?
Manfred
Das Sichtfeld des Sensors muss auf eine Größe von etwa 30x30mm vergrößert werden. Da er nur über 30x30Pixel verfügt, entspricht die örtliche Auflösung also nur 1Pixel pro mm. Das reicht aber völlig aus, um die Oberflächenstruktur einer Strasse sauber zu erkennen, bzw zu tracken.
Wenn man die Geschwindigkeit sehr genau messen kann, kann man doch aus Zeit und Geschwindigkeit die zurückgelegte Strecke bestimmen.
Das ist dann zwar nur indirekt, dürfte allerdings auch funktionieren.
Wenn der Sensor einer optischen Maus im originalzustand ausreicht, welche geschwindigkeiten könnte man dann damit messen?
Kannst du mir mal ein paar Auszüge deiner Diplomarbeit zeigen, die sich genauer damit beschäftigen?
Danke
Stefan
Ich hatte bei meinen Untersuchungen einen Mauschip mit 65µ Pixelgröße. Da wären bei einem Abbildungsmaßstab von 1:16 die 200km/h immerhin 3,6m/s Mausgeschwindigkeit.
Waren das auch Mauschips in der Diplomarbeit? Kann man über das Objetiv noch etwa erfahren? Brennweite, Apertur...
Manfred
Das muss ein älterer Sensor gewesen sein, was hatte er für eine Framerate und Pixelanzahl?
Aktuelle Sensoren schaffen über 7000 Frames/s und schaffen selbst in der Mausanwendung 1m/s. Die haben etwa eine Pixelgröße von 25µm. Das Objektiv ist nicht ganz so wichtig. Wenn man Geschwindigkeiten (z.B. am Auto) messen möchte, muss man sich überlegen, in welchem Abstand vom Boden der Sensor befestigt werden soll. Dann erfolgt die Auslegung der Brennweite. Ich habe verschiedene Objektive ausprobiert, gute Ergebnisse liefern Brennweiten ab etwa 6mm. Am Fahrzeug war ein teures Objektiv mit einer Brennweite von 25mm und verstellbarer Blende eingesetzt. Zur Apertur kann ich leider nichts sagen, aber ich könnte es herausfinden.
Ruppi
Der Sensor war immerhin in einer aktuellen Maus drin, der billigsten bei Saturn, die meisten Daten stehen im Thread zur Analyse der Maus. Das Sensorfeld hat die Größe 19x20. Chipfoto s.u.
Handelt es sich bei Deinen Versuchen um einen Mauschip im Gehäuse mit integrierter Blende oder wurde der Chip einzeln eingesetzt?
https://www.roboternetz.de/phpBB2/viewtopic.php?p=68529#68529
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=440
Die Blende lässt sich bei Agilent Chips einfach entfernen, die komplette Unterseite ist nur aufgesteckt. Ich habe die Blende allerdings dran gelassen, sie störte nicht weiter. Welcher Sensortyp ist das (Bezeichnung von Agilent)?
Übrigens - klasse Versuchsaufbauten, arbeitest Du in einer Uni?!
Der Chip in der billigsten Maus hat die Aufschrift:
PAN101
BSI-208
33H243RW
Hierzu gibt es die folgende Beschreibung im Netz:
Chip: PixArt Imaging PAN301A (20 pin, improved tracking vs. PAN101)
Known Mouses Used In: none that I know of (new sensor)
Image Sensor Size (pixels) : 16x16
Resolution (CPI) : 400, 600, or 800
Refresh (Hz) : 3000 or 4000
Mpixels/sec : 0.768 or 1.024
Max Speed (inches/sec) : 37
Max Acceleration (g).: 20
The PixArt PAN101 is the only mouse sensor I've come across that I know for a fact is NOT made by/in agreement with Agilent. I don't have many specs on it, but it is pretty cheap and you'll find it in your $4.99 cheepo optical mouses (the one I looked at was a free-after-rebate iConcepts-branded PS2-only mouse from OfficeMax). Surprisingly, the mouse works pretty well. Agilent (a spin-off of HP), has lots of patents on optical mouse sensors, and is currently suing PixArt for infringement.
Manfred
Den kenne ich nicht. Ich benutze den ADNS 3080 von Agilent.
Auflösung bis zu 1600dpi
bis 6469Hz
30x30 Pixel
Beschleunigung 15g
5,82 MPixel/s
40inch/s = >1m/s
Ich habe eine Platine für den Sensor geätzt und steuere ihn mit einem ATMega8L an. Dabei kann man zwischen dem Kamerabild und dem Tracking-Modus umschalten. Der Kameramodus kann gut genutzt werden, um Objektive und den richtigen Abstand zur Messfläche einzustellen.
Ruppi
Hast du eine Bezugsquelle, oder ein Mausfabrikat, das sich günstig "einfangen" lässt ;-)
Ich habe eine Platine für den Sensor geätzt und steuere ihn mit einem ATMega8L an. Dabei kann man zwischen dem Kamerabild und dem Tracking-Modus umschalten. Der Kameramodus kann gut genutzt werden, um Objektive und den richtigen Abstand zur Messfläche einzustellen.
Das ist sicher die sauberste Methode für die optische Einstellung.
Hast Du vielleicht ein Foto von der Objektivmontage, mich interessiert wie die Freiheisgrade justierbar sind.
Z.B. Chip in x-y Richtung und Objektiv in z-Richtung.
Manfred
Bezugsquelle habe ich leider nicht, für die ersten Versuche habe ich in der Firma die Innereien teurer Logitech-Mäuse verwendet. Aber ich denke, für die meisten Sachen sind die Chips der normalen billig-Mäuse ausreichend, also einfach schlachten...
Wenn man beispielsweise schnelle Richtungsänderungen erfassen möchte (z.B. Schwingschleifer), dann lässt sich eine Maus dafür so nicht verwenden, denn zum einen verfügen die Sensoren über eine automatische Framerate, die je nach Bewegung und Bildhelligkeit angepasst wird und zum Anderen erfolgt im ansteuernden USB-Controller eine Mittelwertbildung, da der USB-Controller nur mit 125Hz die Bewegungsdaten an den PC sendet. Für Geschwindigkeitsmessungen ist das in Ordnung, aber nicht für schnelle Richtungswechsel oder ähliches.
Ich mache mal nen paar Fotos von der Platine und auch von dem Kamerabild, stelle sie im Laufe des Tages hier rein.
Ich mache mal nen paar Fotos von der Platine und auch von dem Kamerabild, stelle sie im Laufe des Tages hier rein.
Geanu, das wäre sehr schön. Bei mir war die erste Version etwas schlicht.
Manfred
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=496
So, hier die Fotos, sie sind leider etwas unscharf. Die Halterung der Linse ist nur provisorisch, daher habe ich wohl alle Freiheitsgrade...
Ich hatte anfangs nicht vor, den Abstand der Linse zum Sensor häufig zu ändern, daher dachte ich mir, ich bohre eine zweite Platine, die mit Abstandshaltern nur zur Aufnahme des Objektivs dient, habe aber leider kein Foto parat. Der Ausschnitt aus meiner Software zeigt meine Armbanduhr im Abstand von etwa 300mm. Hier wurde eine einfache Linse von Conrad mit einer Brennweite von 6mm verwendet.
Hier noch die Software...
Die Idee mit der Verstellung in Polarkoordinaten und Kontermutter in Z Richtung ist ganz schön. Das meinte ich. (Für die 200km/h am Rückspiegel wird man dann noch etwas anderes brauchen.)
Das Auslesen des Kamerabildes muß ich bei Gelegenheit auch noch mal machen, das ist der Weg zur sicheren Scharfstellung.
Manfred
Oh mann, ihr seid ja absolute Profis.
Ich kenn mich in elektronik beinahe gar nicht aus, aber gerade das macht es für mich so spannend.
Ist komplettes Neuland, daß ich da betrete.
Ich hab mir nicht gedacht, daß das alles so kompliziert wird.
Wie wird der Maussensor eigentlich mir dem Mikroprozessor verbunden? Wird der Mikroprozessor direkt an den Sensor angeschlossen oder wird der an die Platine der Maus angeschlossen?
Dann könnte mann die Tasten und das Rad zum Scollen auch verwenden.
Geht das überhaupt?
In deiner Maus sitzt auch nichts anderes als ein Mikrocontroller, nämlich der USB-Controller. Dieser taktet die Bewegungsdaten des Sensors über eine vierpolige, serielle Schnittstelle aus dem Sensor. Mein Mikrocontroller macht nichts anderes. Man muss eben nur eine Software für den Controller schreiben, um den Sensor korrekt auslesen zu können. Wie Du im Bild sehen kannst, habe ich eine eigene Platine dafür geätzt, aber es geht auch auf der Mausplatine. Du musst dann nur die oben beschriebenen vier Beine von der Platine lösen und z.B. Flachbandkabel anlöten, dann kannst Du das alles auch anders machen. Ich hatte das anfangs auch so und habe den Sensor mit dem Parallelport des PC's ausgelesen.
Aber falls Du auch sowas vor hast, verstehe ich nicht, was Du noch mit dem Mausrad und den Tasten willst...
Ruppi
Die Leistungsdaten dieses Sensorchips hören sich sehr interessant an,
kannst du näher sagen, aus welchem Logitech-Maus-Modell die entnommen
wurden ? Besonders die Imaging Funktion (30x30) klingt interessant ...
Hast du eine Bibliothek für dein Frontend benutzt (Schnittstellenauswertung uC-PC?) und kannst du näheres zur Visualisierungssoftware sagen (Visual C++ ?) )
Markus
Hmm.... möchte ich zuviel wissen oder sind die Angaben über den
Sensorchip eine Vermutung. Ich meine, nachdem ich das Datenblatt
eines älteren Agilent-Chips gelesen habe, ... das Bilder auslesen
funktioniert auch schon mit älteren Sensorchips.
Wäre wirklich sehr an dem Mausmodell zwecks eigener "Ausschlachtung"
und Einschränkung des finanziellen Rahmens interessiert.
VG, Markus
Hier ist eine Tabelle aus 2004 über Chips mit ihren Mäusen.
Manfred
http://www.ida.net/users/oe1k/OpticalMouse/#thestats
mzrocker
19.09.2005, 23:35
Hallo Ruppi,
könntest Du evtl. mal den Schaltplan zu deiner Platine posten? Insbesondere interessieren mich die Spannungsversorgung (3,3V?) und die Nutzung des Quarzes. Im Datenblatt ist ein 24MHz für den ADNS3080 vorgesehen und ein weiteres (beliebiges) für den µC. 24MHz bekomme ich aber nur als Quarzoszillator mit 4 Anschlüssen. Wie hast Du dieses Prob gelost?
Gruß
Steffen
Hallo,
war sehr lange nicht online, daher erst jetzt eine Antwort.
Der Agilent ADNS 3060 ist in der Logitech MX510 und anderen Mäusen verbaut. Allerdings lassen sich bei so ziemlich allen Chips von Agilent die Bilddaten auslesen. Für einige dürfte ein älterer Chip sehr nützlich sein, da er direkte Quadraturausgänge besitzt, an denen ein TTL Rechtecksignal für die Bewegungen in X- und Y-Richtung anliegt. Diese Chips sind in den ersten optischen Mäusen von Microsoft verbaut gewesen.
Die Software ist komplett in Visual Basic geschrieben, Schnittstelle zur Platine ist RS232. Bei 115200 Baud ist dann noch eine Bildaktuallisierung mit etwa 8 Bildern/s möglich, nicht viel, aber reicht, um z.B. Objektive einzustellen.
Gruß, Ruppi
In deiner Maus sitzt auch nichts anderes als ein Mikrocontroller, nämlich der USB-Controller. Dieser taktet die Bewegungsdaten des Sensors über eine vierpolige, serielle Schnittstelle aus dem Sensor. Mein Mikrocontroller macht nichts anderes. Man muss eben nur eine Software für den Controller schreiben, um den Sensor korrekt auslesen zu können. Wie Du im Bild sehen kannst, habe ich eine eigene Platine dafür geätzt, aber es geht auch auf der Mausplatine. Du musst dann nur die oben beschriebenen vier Beine von der Platine lösen und z.B. Flachbandkabel anlöten, dann kannst Du das alles auch anders machen. Ich hatte das anfangs auch so und habe den Sensor mit dem Parallelport des PC's ausgelesen.
Aber falls Du auch sowas vor hast, verstehe ich nicht, was Du noch mit dem Mausrad und den Tasten willst...
RuppiVerstehe
Hello!
I can't find PAN101BOI-208 datasheet. On PixArt home page login required, but how I can take this registration I don?t know.
Please, If anybody has PAN101BOI-208 datasheet, send it on my E-mail: m_v_e@mail.ru
Thank?s
Die Leistungsdaten dieses Sensorchips hören sich sehr interessant an,
kannst du näher sagen, aus welchem Logitech-Maus-Modell die entnommen
wurden ? Besonders die Imaging Funktion (30x30) klingt interessant ...
Hast du eine Bibliothek für dein Frontend benutzt (Schnittstellenauswertung uC-PC?) und kannst du näheres zur Visualisierungssoftware sagen (Visual C++ ?) )
Markus
Hi!
Für die Viasualisierung der Bilddaten benutzen wir SDL(www.libsdl.org) das mit VisualC++ kombiniert wird.
Die kommunikation zwischen uC und PC läuft über USB(mit FT245BM von FTDI; Treiber, Libs und Anleitungen bei www.ftdichip.com). Mit der Kommunikation über USB können wir mit dem "picture burst" Modus ca. 75 Frames erreichen.
Ciao!
Hallo Ruppi,
könntest Du evtl. mal den Schaltplan zu deiner Platine posten? Insbesondere interessieren mich die Spannungsversorgung (3,3V?) und die Nutzung des Quarzes. Im Datenblatt ist ein 24MHz für den ADNS3080 vorgesehen und ein weiteres (beliebiges) für den µC. 24MHz bekomme ich aber nur als Quarzoszillator mit 4 Anschlüssen. Wie hast Du dieses Prob gelost?
Gruß
Steffen
Hi!
Die Frage geht zwar an Ruppi, aber ich habe auch eine Antwort.
Die 3.3V wird mit einem LM317 erzeugt (LF33CV ist auch geeignet).
Als Quartz verwenden wir einen ganz normalen standard Quartz von Reichelt(24-hc18) (ohne Kondensatoren, so wie es im Schaltplan angegeben ist).
Ciao!
Moin moin!
Ich bin z.Z. auch dabei einen ADNS3080 Chip als Wegstreckenmesser umzufunktionieren. Erste Bilder kann ich schon auf dem PC darstellen, mehr folgt hoffentlich :-)
Weiß jemand von euch wo man die Firmware für den ANDS3080 bekommen kann? Laut Datenblatt beim Herstelller Agilent, da ist sie allerdings nicht aufzufinden.
Hat jemand von euch schon Erfahrung mit der Firmware gemacht? Lohnt sich ein aufspielen überhaupt?
MfG
Sebastian Brinkmann
Hi!
Agilent hat die Optischen Sensoren in die Firma Avago Technologies ausgelagert.
Auf der Internetseite von Avago Technologies reicht eine Suche nach "adns 3080" aus um die Frimware("Design Tool - SROM for ADNS-3080") zu finden.
Wie sich nun die Firmware auf die Fähigkeiten des ADNS-3080 auswirkt kann ich nicht sagen.
Ciao!
DERGEBBEN
19.02.2007, 14:36
Hi...!
Ich habe beim Auslesen der ADNS Wegdaten ein paar Probleme:
Bevor die Register 0x03 und 0x04 ausgelesen werden können, muss man das Register 0x02(Motion) abgerufen werden, um zu schauen, ob Bewegung stattgefunden hat. Ich habe im Versuchsaufbau ein Rad über dem Sensor montiert, so dass eine definierte Bewegung vorliegt - jetzt ist aber manchmal das Motion Bit nicht gesetzt, obwohl ja eine Bewegung stattgefunden hat. hatte jemand von Euch schon einmal ähnliche Probleme? Ich steuere denn Chip mit einen PIC 18F458 Controller an um sämtliche Zeiten bzw Protokolle zu realisieren die Daten sollen dann per CAN einem übergeordneten System zu Verfügung gestellt werden. DAzu hab ich ein Interface mit C# geschrieben, mit dem ich die Daten und Bilder auslesen kann....
Würde mich über Tipps freuen!
Gruß Matthias
Hallo.
Ist schon eine Weile her, dass hier jemand etwas geschrieben hat - aber ich hab da noch ein paar Fragen - vielleicht findet sich ja jemand, der mir helfen kann^^
Zum ADNS-3080 - ich habe diesen Sensor in einer Logitech MX518 verbaut gefunden, dabei fiel mir auf, dass der OPTP-Pin auf der Logitech-Platine an Masse geschlossen war und laut Datenblatt eigentlich an VDD3 geschlossen werden soll. Kann mir jemand sagen, was es mit diesem Pin auf sich hat und warum Logitech ihn so verbunden hat?
Als weiteres hab ich eine Frage zu dem Layout von Ruppi - der ADNS-3080 funktioniert doch auf 3,3V Basis, der Atmega jedoch auf 5V Basis. Klappt das Auslesen trotzdem einwandfrei oder muss man einen Pegelwandler dazwischen setzen? In deinem Layout scheint das zu gehen - vom rechnerischen her braucht der Atmega jedoch 3 V und der Sensor liefert im Minimum 2,9... V als high (könnte höchstens sein, dass das bei der Low Voltage Variante des Atmegas ander ist). Kann mir da jemand Erfahrungen dazu schreiben (habe meine ersten Versuche mit einem Max3378 Pegelwandler gemacht, aber wenn ich den nicht brauche, spart das ne Menge Aufwand).
Dann wollte ich fragen, ob es das Layout zu der kleinen Platine gibt, wollte mir nämlich auch eine eigene bauen, da das mit dem Anklemmen auf der Logitech-Platine auf die Dauer doof ist.
Vielleicht kann mir ja jemand ein paar Tips oder ähnliches geben. Für die Ansteuerung habe ich bisher einen Atmega32 genutzt, ein kleines Programm für die SPI-Schnittstelle geschrieben - bisher leider nur mit mäßigem Erfolg.
Grüße,
Robert
Also, wen es noch interessiert:
Logitech hat den Sensor in der Maus gegen einen ADNS3080-E getauscht - dort scheint dir Pinbelegung auch anders zu sein.
Es gibt eine Seite hierzu, die google erst übersetzen muss:
http://translate.google.de/translate?hl=de&sl=ja&u=http://gadget.tm.land.to/pukiwiki/%25BC%25E7%25A4%25CA%25A5%25BB%25A5%25F3%25A5%25B5 %25A1%25BC/&sa=X&oi=translate&resnum=2&ct=result&prev=/search%3Fq%3Dadns-3080e%26hl%3Dde%26client%3Dfirefox-a%26rls%3Dorg.mozilla:de:official%26hs%3DGcV
Ich hoffe, der Link geht. Es scheint keine richtigen Datenblätten zu dem Sensor zu geben - aber ich schreib mal avago an, mal sehn, was sich da tut.
MfG, Robert
Super-digger
21.01.2009, 23:16
Moin Moin ,
Das ist ja eigentlich ein seher interesantes Tehma !
Wie reagiert den der Chip bei reflektionen wie wasser , ist dann noch eine korekte messung möglich ?
ist es möglich noch das Layout und Schaltbild für die Platine zu bekommen oder kann mann den Maustreiber umschreiben um die Maus direkt auszulesen
Hallo!!
Also ich habe auch mal mit einem ADNS-2610 zur Positionsbestimmung experimentiert. Das funktioniert immer wieder erstaunlich präzise.
Ich habe übrigens als Gehäuse und Optik einfach zwei alte Webcams verwendet. So welche mit manueller Fokussierung.
Manchmal treten aber auch erhebliche Messfehler auf. Daraufhin habe ich mir einfach mal die richtige Computermaus genommen (welcher Sensor verbaut ist, weiss ich nicht) und etwas experimentiert. Dabei konnte ich feststellen, dass die Maus bei sehr langsamen Bewegungen, welche nicht nur rein parallel zu einer Koordinatensystemachse erfolgen, die Vektorkomponente, welche im Bewegungsvektor nicht dominiert, zunehmend ignorieren.
Ich vermute dass das gewollt ist, da man die Maus bei der Mausbedienung ja doch oft mal etwas verdreht. Will man nun den Mauspointer genau (also langsam) positionieren, dürfte dieses Verhalten ganz angenehm sein.
Bei schnelleren Bewegungen wird hingegen der reale Bewegungsvektor reproduziert.
Der ADNS-2610 scheint auch dieses Verhalten zu zeigen.
Für Ortsbestimmungen ist das natürlich fatal.
Was sehr schade ist, da die Sensoren ansonsten erstaunlich präzise zu sein scheinen.
Ich bezweifle stark, dass man das dem Sensor abgewöhnen kann.
Gibts da Erfahrungen?
Machen das alle Sensoren so?
Viele Grüße,
Klaus
mare_crisium
15.08.2009, 05:42
vortex,
ich experimentiere auch mit dem ADNS2610 herum. Ich habe für meine Sensoren die Optik selbst gebaut (Brennweite 8mm), die auch gut funktioniert (manuell fokussierbar). Die Messergebnisse sind auf den Millimeter genau, solange die Bewegungen rein linear sind. Bei Drehungen wirds ungenau und zwar umso mehr, je näher die beiden Sensoren am Drehzentrum sitzen. Allerdings habe ich auch umfangreiche Berechnungen laufen, um aus zwei Sensoren die Bewegungsrichtungen und den aktuellen Aufenthaltsort zu extrahieren.
Die kommenden beiden Wochen bin ich leider nicht erreichbar. Danach würde ich aber gern mit Dir weitere Erfahrungen austauschen.
Ciao,
mare_crisium
radbruch
15.08.2009, 08:40
Hallo
Ein Maussensor alleine taugt nicht zur Orientierung:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=421528#421528
Gruß
mic
Hallo
Ein Maussensor alleine taugt nicht zur Orientierung:
Ja, ist schon klar, ich habe ja auch zwei und dank entsprechender Vektorgeometrie kann man das entsprechend verrechnen. Sonst könnte man ja keine Drehungen feststellen usw.
Grundsätzlich sind die Positionsdaten sehr exakt und ich kann eigentlich auch keine Rundungsfehler feststellen. Der Fehler kommt nur durch den oben beschriebenen Effekt zustande.
Würde man 4 (grenzwertig) oder besser noch 5 Sensoren verwenden, könnte man den Fehler rausrechnen, aber das ist natürlich etwas schwachsinnig.
Na, mal sehen....
mare_crisium
02.09.2009, 08:14
Vortex,
wie schon gesagt, versuche auch ich, den ADNS2610 für die Koppelnavigation einzusetzen. Die mathematischen Vorarbeiten dazu habe ich in diesem Thread
Microcontroller » Software, Algorithmen und KI » Odometrieberechung mit zwei Maussensoren
vorgestellt. Inzwischen lasse ich die Berechnung (in Fliesskomma-Arithmetik) auf einem ATmega16 laufen, übertrage aber nach jedem Rechnungslauf Rohdaten und Rechenergebnisse an den PC. Dadurch konnte ich die Richtigkeit der Berechnungen auf dem ATmega kontrollieren. Sie sind richtig.
Es zeigt sich, dass die berechneten Drehwinkel immer zu klein ausfallen. Eine numerischen Ungenauigkeit kann ich ausschliessen, weil die Winkeländerung pro Messintervall weit unter 10° liegt. Numerische Ungenauigkeiten werden bei meinem Algorithmus erst oberhalb 20° signifikant. Ich habe die Sensoren auch mit unterschiedlichen Abständen zueinander montiert. Dabei zeigt sich, dass die Winkelfehler kleiner werden, je grösser die Distanz zwischen den Maussensoren ist. Wenn es sich um einen einfachen Mathefehler bei der Berechnung des Winkels handelte, müsste es genau anders herum sein. Also muss die Ursache bei den Messwerten liegen.
Hier fallen mir zwei mögliche Ursachen ein:
1. Die Pixel der Sensorkamera sind nicht genau quadratisch.
2. Der "Vorzugseffekt", den Du beobachtet hast.
Wenn die Pixel rechteckig wären, würde die Sensorkamera gestauchte bzw. gestreckte Bilder liefern. Das ist nicht der Fall. Bleibt nur der "Vorzugseffekt" übrig. Oder jemand noch andere Vorschläge?
Du liest die Sensordaten direkt ein, vermute ich; sonst hättest Du das Bild nicht einlesen können. Andernfalls könnte es sich um eine Eigenschaft des Maustreibers/Betriebssystems handeln: Ich erinnere mich finster, dass es irgendwo in den Tiefen der Windows- oder Maustreiber-Einstellungen einmal eine Einstellmöglichkeit für den "ballistischen" Effekt gab. Könnte sein, dass damit etwas Ähnliches gemeint ist.
Welche Messungen hast Du gemacht, die Dich auf die Fährte des "Vorzugseffektes" gebracht haben? Ich würde sie gern mit meiner Anordnung wiederholen. - Ist schon ein herber Rückschlag :-(. Jetzt bleibt nur die vage Hoffnung, den Effekt mathematisch zu kompensieren (hat aber Einbussen bei der Genauigkeit zur Folge).
Ciao,
mare_crisium
Edit: Habe bei Avago diese AN gefunden:
http://www.avagotech.com/docs/AV01-0476EN
Sie beschreibt einen Algorithmus, der die Auflösung in Abhängigkeit von der Bewegungsgeschwindigkeit verändert. Er ist aber nicht fest im Sensor eingebaut, sondern muss im Maustreiber (auf dem PC) oder in dem Auswertungs MC (in der Maus) extra programmiert werden.
/i]
vorgestellt. Inzwischen lasse ich die Berechnung (in Fliesskomma-Arithmetik) auf einem ATmega16 laufen, übertrage aber nach jedem Rechnungslauf Rohdaten und Rechenergebnisse an den PC. Dadurch konnte ich die Richtigkeit der Berechnungen auf dem ATmega kontrollieren. Sie sind richtig.
Hm, ich hätte es vielleicht auch besser in Fliesskommaarithmetik probieren sollen. Das ganze händische Kommageschiebe wird mit der Zeit etwas lästig. Aber vielleicht praktiziere ich auch nur falsche Technik :-).
Es zeigt sich, dass die berechneten Drehwinkel immer zu klein ausfallen. Eine numerischen Ungenauigkeit kann ich ausschliessen, weil die Winkeländerung pro Messintervall weit unter 10° liegt. Numerische
Also ich bin eigentlich bei meinen letzten Experimenten zu der Erkenntnis gelangt, dass die Sensoren wirklich nur brauchbare absolute Ergebnisse liefern, wenn man sich bei der Bewegung auf eine Koordinate beschränkt. Und das ist natürlich nicht Sinn und Zweck bei dieser Navigationsanwendung.
Ich musste meine Versuche wegen Zeitmangel aber etwas aussetzen und wollte das ganze noch genauer untersuchen. Kommt vielleicht noch.
Du liest die Sensordaten direkt ein, vermute ich; sonst hättest Du das Bild nicht einlesen können. Andernfalls könnte es sich um eine Eigenschaft des Maustreibers/Betriebssystems handeln: Ich erinnere mich finster, dass es irgendwo in den Tiefen der Windows- oder Maustreiber-Einstellungen einmal eine Einstellmöglichkeit für den "ballistischen" Effekt gab. Könnte sein, dass damit etwas Ähnliches gemeint ist.
Ja, ich lese die Sensordaten direkt ein. Das Bild ist ja nur "Ascii-Art" im Terminalprogramm. Ich mache es mit einem atmega8.
Der Effekt lässt sich aber eben tatsächlich auch an einem ganz normalen Windows-PC mit einer optischen Maus beobachten. Von daher ging ich davon aus dass es Sensorbedingt ist.
nur die vage Hoffnung, den Effekt mathematisch zu kompensieren (hat aber Einbussen bei der Genauigkeit zur Folge).
Ja, darüber habe ich auch schon nachgedacht. Aber die ganze Anordnung ist sowieso schon mit so viel spekulation und Ungenauigkeiten verbunden dass das schon sehr fraglich wird. Aber wie geschrieben will ich mich nochmal damit beschäftigen, sobald wieder etwas Zeit ist.
Ciao,
mare_crisium
Edit: Habe bei Avago diese AN gefunden:
Ich schau mir das auch nochmal an, aber scheint ein anderer Effekt zu sein.
Bis dann!
Viele Grüße,
Klaus
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.