Hi,
um mein Head Tracking Projekt abzuschließen ist der Letzte Schritt nun ein kleines Programm zu schreiben, welches die Rohdaten des Bewegungssensors abgreift, und mit meinem Algorithmus neu berechnet.
Leider habe ich keine Vorkenntnisse vom Programmieren, sodass mich Kleinigkeiten sehr lange aufhalten.
Vielleicht habt ihr ja einen Vorschlag, wie ich meine zwei konkreten Probleme lösen kann.
Rohdaten werden in Abhängigkeit meiner Kopfbewegung korrekt in FreePIE angezeigt:
diagnostics.watch(trackIR.yaw)
diagnostics.watch(trackIR.pitch)
diagnostics.watch(trackIR.roll)
diagnostics.watch(trackIR.x)
diagnostics.watch(trackIR.y)
diagnostics.watch(trackIR.z)
Problem Nr.1
setze ich einen Variable auf einen festen Wert, gehen alle anderen Werte auf 0.
Gibt es die Möglichkeit, einer Variable einen Wert zuzuweisen, ohne dass die anderen Werte beeinflusst werden?
Problem Nr.2
trackIR.yaw = math.atan(trackIR.x/trackIR.y)
Hier habe ich dass Problem, dass Track IR.y den Wert 0 annehmen Kann. Division durch 0 nicht möglich.
Gibt es hier einen Weg, wie man den Wert 0 ausschließen kann?
Ich bin um jede Hilfe dankbar.
Gruß,
Roman
Anfänger bittet um Hilfe. TrackIR Daten mit FreePIE editieren
-
- User
- Beiträge: 6
- Registriert: Sonntag 20. Mai 2018, 08:00
Hi deets,
danke für die schnelle Hilfe, doch leider brachte das keinen Erfolg.
Nun bekomme ich diese Fehlermeldung:
https://picload.org/view/doopaldi/4.png.html
danke für die schnelle Hilfe, doch leider brachte das keinen Erfolg.
Nun bekomme ich diese Fehlermeldung:
https://picload.org/view/doopaldi/4.png.html
-
- User
- Beiträge: 6
- Registriert: Sonntag 20. Mai 2018, 08:00
zugegeben... es war naiv zu glauben, dass es nur durch hinzufügen der Zahl 2 funktioniert
mit dem Ausdruck z = atan2(x,y) funktioniert es nun. Damit wäre Problem Nr. 2 gelöst. Super!
Nun habe ich nur noch Problem Nr.1
FreePIE empfängt Variable trackIR.yaw als Rohdatensatz. Nun muss ich dieser Variable einen neuen Wert zuweisen, und unter gleichem Namen an die Simulation weiterleiten.
Das führt dazu, dass das Skript zwar läuft, aber alle Bewegungsfreiheitsgrade 0 ergeben.
https://picload.org/view/dooplaia/11.png.html
https://picload.org/view/dooplail/22.png.html
mit dem Ausdruck z = atan2(x,y) funktioniert es nun. Damit wäre Problem Nr. 2 gelöst. Super!
Nun habe ich nur noch Problem Nr.1
FreePIE empfängt Variable trackIR.yaw als Rohdatensatz. Nun muss ich dieser Variable einen neuen Wert zuweisen, und unter gleichem Namen an die Simulation weiterleiten.
Das führt dazu, dass das Skript zwar läuft, aber alle Bewegungsfreiheitsgrade 0 ergeben.
https://picload.org/view/dooplaia/11.png.html
https://picload.org/view/dooplail/22.png.html
Bist du sicher, das du die Parameter an atan2 in der richtigen Reihenfolge übergibst? In der Doku ist das nämlich y,x
Bezüglich deines anderen problems kann ich dir nicht helfen. Ich verstehe durch die Bilder weder, was da passiert, noch was da passieren soll. Gib es für dieses Tool ggf eine Community?
Bezüglich deines anderen problems kann ich dir nicht helfen. Ich verstehe durch die Bilder weder, was da passiert, noch was da passieren soll. Gib es für dieses Tool ggf eine Community?
-
- User
- Beiträge: 6
- Registriert: Sonntag 20. Mai 2018, 08:00
Ich bin noch in der Experimentierphase. Daher macht es momentan noch keinen Unterschied ob y,x oder umgekehrt. Hauptsache es funktioniert und ich habe plausibele Werte.
Mein anderes Problem versuche ich noch einmal verständlicher anhand eines Screenshots zu erklären.
https://picload.org/view/doopwgoi/erklaerung.jpg.html
Ich habe mich bereits an die TrackIR-, FreePIE-, und Rennsimulationscommunity gewendet. Bisher leider ohne Erfolg.
Aber hier geht es ja super voran!
Mein anderes Problem versuche ich noch einmal verständlicher anhand eines Screenshots zu erklären.
https://picload.org/view/doopwgoi/erklaerung.jpg.html
Ich habe mich bereits an die TrackIR-, FreePIE-, und Rennsimulationscommunity gewendet. Bisher leider ohne Erfolg.
Aber hier geht es ja super voran!
Na so wie ich das verstehe ist das ja ein FreePIE verhalten. Der mag nicht, wenn du Werte selber setzt. Warum da so ist, muss der ja wissen.
Kannst du nicht einfach eine neue Variable einführen, yaw2, die dann propagiert wird?
Kannst du nicht einfach eine neue Variable einführen, yaw2, die dann propagiert wird?
-
- User
- Beiträge: 6
- Registriert: Sonntag 20. Mai 2018, 08:00
Ja, ich kann der Variable yaw2 den korrekten Wert zuweisen. Dann habe ich aber das Problem, dass die Simulation diesen Wert nicht einliest.
Hier kommen schon wieder neue Probleme auf mich zu, denn, so wie es aussieht, liest die Simulation nur die Daten direkt von der TrackIR Software, und nicht mein Python Skript von FreePIE.
Aber das hat nichts mit der Programmiersprache zu tun. Ich habe aber auch keine Ahnung, wie ich das das hinkriegen soll, bzw. wer da Rat weiß.
Gruß,
Roman
Ich sehe das ja alles zum ersten Mal. Aber kann es sein, dass du da ein konzeptionelle Problem hast? So wie ich das sehe versuchst du denen originalmTracker Input mittels FreePI zu filtern, also zu modifizieren, und dann soll das modifizierte Ergebnis wieder zurück auf den tracker (respektive dessen Informations-Datenstruktur) geschrieben werden. Das geht glaube ich so nicht.
Du kannst remapping machen, also zb mouse oder Tastatur Ereignisse erzeugen. Aber dieser Filterfall ist so nicht vorgesehen.
Das heißt, das eben alle Programme, die am tracker hängen, dessen Daten bekommen. Dein SIM genauso wie FreePIE. Was du aber tun musst, ist deinen SIM auf bestimmte Tastatur oder Joystick Events zu konfigurieren, und die zu erzeugen. So sieht das zumindest aus. Ggf kann man auch virtuelle Geräte erzeugen, dann wäre das der Weg. KA wie FreePIE das macht, ich habe kein Windows hier.
Du kannst remapping machen, also zb mouse oder Tastatur Ereignisse erzeugen. Aber dieser Filterfall ist so nicht vorgesehen.
Das heißt, das eben alle Programme, die am tracker hängen, dessen Daten bekommen. Dein SIM genauso wie FreePIE. Was du aber tun musst, ist deinen SIM auf bestimmte Tastatur oder Joystick Events zu konfigurieren, und die zu erzeugen. So sieht das zumindest aus. Ggf kann man auch virtuelle Geräte erzeugen, dann wäre das der Weg. KA wie FreePIE das macht, ich habe kein Windows hier.
-
- User
- Beiträge: 6
- Registriert: Sonntag 20. Mai 2018, 08:00
Danke für den Hinweis.__deets__ hat geschrieben: ↑Montag 21. Mai 2018, 11:43 Ich sehe das ja alles zum ersten Mal. Aber kann es sein, dass du da ein konzeptionelle Problem hast? So wie ich das sehe versuchst du denen originalmTracker Input mittels FreePI zu filtern, also zu modifizieren, und dann soll das modifizierte Ergebnis wieder zurück auf den tracker (respektive dessen Informations-Datenstruktur) geschrieben werden. Das geht glaube ich so nicht.
Die Inspiration für mein Vorhaben entspringt diesem Video:
[/url]https://www.youtube.com/watch?v=DREkyWxBJtg[/url]
In den ersten 2 Minuten erklärt er seine Struktur:
- Freetrack generiert Rohdaten seines Eigenbau Headtracking device
- FreePIE modifiziert die Daten mittels Python Skript
- Simulation liest FreePIE Daten
Wenn er sein Skript ändert, ändert sich auch die Bewegung im Spiel.
Leider ist mein TrackIR 5 System nicht mehr kompatiblem mit dem alten Programm "Freetrack", sonst sollte es auch bei mir funktionieren wie bei ihm.
Daher dachte ich, es könnte auch mit der originalen TrackIR Software funktionieren anstatt Freetrack, tut es aber leider nicht.
Ich werde mal im Netz eine alternative Headtracking Software suchen, die mit meinen Gerät funktioniert.
Gruß,
Roman