Anfänger bittet um Hilfe. TrackIR Daten mit FreePIE editieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
edelatze_roman
User
Beiträge: 6
Registriert: Sonntag 20. Mai 2018, 08:00

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
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Statt atan benutzt man atan2, genau wegen dem von dir beschriebenen Problem.
edelatze_roman
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
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Hast Du nachgelesen, wie man ›atan2‹ benutzt? Das solltest Du nachholen.
edelatze_roman
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
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

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?
edelatze_roman
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!
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

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?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe mal ein bisschen in den Code geschaut. Da sehe ich nichts, das dieses Verhalten erklären würde. Vielleicht solltest du mal ein minimales Beispiel bauen & einen issue bei FreePIE einstellen.
edelatze_roman
User
Beiträge: 6
Registriert: Sonntag 20. Mai 2018, 08:00

__deets__ hat geschrieben: Sonntag 20. Mai 2018, 12:20
Kannst du nicht einfach eine neue Variable einführen, yaw2, die dann propagiert wird?
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
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
edelatze_roman
User
Beiträge: 6
Registriert: Sonntag 20. Mai 2018, 08:00

__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.
Danke für den Hinweis.

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
Antworten