Hallo
Ich sitze Zur Zeit über meinem TouchScreen (Resistiv, 2.4").
Ich Sample die Koordinaten mit ~140Hz. Wie man das so kennt, sind die
Touch-Koordinaten krass verrauscht und teilweise völlig unfug.
Das Problem habe ich zufriedenstellend gelößt.
Nun muss ich mich um die Gestiken kümmern. Nichts kompliziertes, sondern
nur die Intension des Benutzers herausfinden.
Dabei sollen lediglich 2 Fälle unterschieden werden:
a) Nur auflegen des Fingers oder Stifts, um zu sehen, wie die GUI
reagiert
b) Drücken des Touchscreens im Sinne von "TuWas" (Mausklick sozusagen)
Die Messwerte des Drucks stehen zur Verfügung.
Wenn wirklich Interesse am Stoff besteht, dann bitte ich jetzt den
Anhang anzusehen, ohne die Bilder wirds sinnlos weiterzulesen.
Mein bisheriger Ansatz: (Blaue Linie)
Ein Bandpassfilter: Er filtert den "GleichDruck" heraus und gibt mir
sozusamgen die erste Ableitung aus, dabei werden hohe Frequenzen
gedämpft.
Das wird damit nichts.
Im Anhang sieht man 6 Bilder, die jeweils verschiedene Eingaben
repräsentieren. Es folgt eine kleine Auswertung: (Die Rote Linie um
unteren Dieagram ist interessant, das blaue ist mein Bandpass-Versuch)
>Bild 1:
Ich habe nur meinen Daumen aufgelegt. Der Daumen ist eine recht große
Fläche.Große Flächen verursachen bei Resistiven TouchScreens automatisch
große Drücke. Deswegen ist der Druck-Grundlevel relativ hoch und das
Rauschen durch geringe Druckvatiationen recht groß. Dieser Fall darf
KEIN Klick auslößen.
>Bild 2:
Fingernagel oder Stift haben nur geringer Kontaktfläche. Das Ergebnis
der Messungen Unterliegt weniger Rauschen. Jedoch ist der
GleichDruck-Anteil geringer als beim Daumen.
Das auszuwerten wäre nicht Schwer.
>Bild 3:
Hier habe ich meinen Dicken Daumen bemüht einfach draufzuhauen. Das muss
als Mausklick interpretiert werden können.
>Bild 4:
Hier habe ich einen Stift genommen und "draufzuklicken"
Man sieht: Im Vergleich ist der MaximalDruck kleiner.
>Bild 5:
Hier habe ich mal den Daumen aufgelegt und dann den Druck verandert, als
hätte ich per auflegen mein GUI-Steuerelement Markiert und dann
ausgelößt.
Man sieht: Mit dem Auge sind die Druckpunkte recht gut zu erkennen, aber
vom Filterstandpunkt aus gesehen, sind sie schwer vom Rauschen zu
unterschieden.
>Bild 6:
Das ist sozusagen nochmal Bild 5 nur mit einem Stift. Man sieht
eindeutig, dass die Druckunterschiede recht gering sind. Das rauschen
aber auch.
---------------------------
Der Filter muss also folgenes Können:
Einfach Formuliert:
Bild 1 == Bild 2 nur auflegen darf erkannt werden
Bild 3 == Bild 4 nur Klicks dürfen erkannt werden
Bild 5 == Bild 6 anfangs das Auflegen, dann die Klicks erkennen
>Folgende Ideen geistern in meinem Kopf:
Hochpass (mit geringer 3dB-GrenzFrequenz) um den Gleichanteil
herauszufiltern, damit wird erstmal alles normiert. Der GleichDruck wird
weggeschnitten, nur noch der Wechseldruck ist interessant.
Mit dem Verbleibenden Signal:
a) noch ein Hochpass (mit hoher Grenzfrequenz) und Effektivwertbildung
-> Müsste dann das Rauschen repräsentieren -> Je höher, desto Wurstiger
der Finger ;-)
b) ein Tiefpass zur Klickerkennung, wenn dann ein Maximum und Minumum in
einem Bestimmten Zeitrahmen aufkommt, wird ein KlickEvent ausgelößt.
Warum ich hier Schreibe:
Ich brauche Hilfe beim Filterdesign.. ich habe davon kaum Ahnung.
Welche FilterAlgos sind anzuwenden? IIR FIR? Gibt es dafür sinnvollere
Lösungen? Wie macht man eine Digitale Effektivwertbildung??
Hat jemand andere Ideen, wie man soetwas umsetzen kann?
Die messwerte sehen qualitativ genauso aus. Ich denke im allgemeinen
Einsatz sind sie eher noch schlechter.
Hilfe ;-)
PS:
SystemInfo: Mikrocontroller, externer Ram, Ordentlich Leistung, aber
ungern würde ich viel Spendieren, SmapleRate == 140Hz, 9 Bit
genauigkeit, Das Auswerteprogramm arbeitet auf dem OC mit Rohdaten.