Kalibrierung
#1
Hi
Ich habe erhebliche Probleme mit der Kalibriergenauigkeit.
Ich lasse den neXt unter Linux X86_64 laufen und verwende den Dongle vom Reflex im Joystick Mode zusammen mit dem Simstick vom Reflex und Spektrum Empfänger.
Im Reflex benutze ich diese Kombination, natürlich mit dem Dongle im native Mode, seit Jahren ohne Probleme.
Ich habe nun erst probiert die Raw Werte vom "Joystick" so zu lassen und damit direkt zu kalibrieren.
Trotzdem die Raw Werte erheblich von -100, +100 für die Endausschläge abweichen gelingt eine einwandfreie Kalibrierung
Auf allen Achsen werden danach in der Ergebnis Spalte -100, +100 für die Endausschläge angezeigt.
Nach Neustart des neXt zeigten sich jedoch große Abweichungen insbesondere bei Pitch. Da ging es dann im Ergebnis von -90 bis +113.
Ein strace auf den neXt ergab, das die Daten einwandfrei aus /home/db/.config/unity3d/Eiperle-CGM/CGM-rc-Heli-Simulator/prefs
ausgelesen werden und auch hinein geschrieben werden.
...
open("/home/db/.config/unity3d/Eiperle-CGM/CGM-rc-Heli-Simulator/prefs", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=41512, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f73b96d8000
fstat(5, {st_mode=S_IFREG|0644, st_size=41512, ...}) = 0
lseek(5, 40960, SEEK_SET) = 40960
read(5, "MjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMC"..., 552) = 552
lseek(5, 0, SEEK_SET) = 0
read(5, "<unity_prefs version_major=\"1\" v"..., 40960) = 40960
read(5, "MjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMC"..., 4096) = 552
brk(0x2556000) = 0x2556000
brk(0x2577000) = 0x2577000
brk(0x2576000) = 0x2576000
close(5) = 0
...
open("/home/db/.config/unity3d/Eiperle-CGM/CGM-rc-Heli-Simulator/prefs", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4
...
write(4, "\t<pref name=\"CalTransmChannels0\""..., 459) = 459
write(4, "\t<pref name=\"CalTransmChannels1\""..., 459) = 459
write(4, "\t<pref name=\"CalTransmChannels2\""..., 459) = 459
write(4, "\t<pref name=\"CalTransmChannels3\""..., 459) = 459
write(4, "\t<pref name=\"CalTransmitter0\" ty"..., 1040) = 1040
write(4, "\t<pref name=\"CalTransmitter1\" ty"..., 1040) = 1040
write(4, "\t<pref name=\"CalTransmitter2\" ty"..., 1040) = 1040
write(4, "\t<pref name=\"CalTransmitter3\" ty"..., 1040) = 1040
...
close(4)
Weil vor allem der Pitch Kanal betroffen war, habe ich mit jscal die relevanten
Achsen vorkalibriert, so das der Treiber Raw Werte nahe 100% für alle Endausschläge
ausgibt. Wieder war noch der Kalibrierung ein perfektes Ergebnis zu sehen. Ebenso
gab es wieder erhebliche Abweichungen nach dem Neustart, wenn auch nicht so krass
wie vorher ohne Vorkalibrierung.
In den Spalten "Kalibrierung" stehen jetz diese Werte
-100 +100
-92 +100
-100 +100
-100 +99
Mich beschleicht nun ein Verdacht. Und zwar sind diese Werte
ja nur 2 stellig, wärend die Ergebnisse und die Raw Werte 6stellig sind
Kann es sein, das die nach der Kalibrierung sich im Speicher des neXt
Prozesses befindlichen genauen Werte zu ungenau in die Datei wandern
und es außerdem zu schlimmen "Rundungsfehlern" kommt?
PS Eine Abweichung bei Pitch kann man leicht an dem Fadenkreuz im Fenster Pitchkurve
unter Tab Heli erkennen. Direkt nach der Kalibrierung sind die Endpositionen zentrisch
unter den äußeren Schiebern. Nach dem Neustart deutlich verschoben oder gar nicht mehr im Fenster.
Gruß
Dieter
#2
Hallo,
der neXt liest genau das ein, was er in die Preferences Datei schreibt. Kalibrierwerte haben 7 Stellen hinter dem Komma und werden auch nicht gerundet. Der Eintrag heißt 'CalTransmitter' mit der Nummer 1 bis 4. Unter Windows und Mac OSX gibt es hier kein Problem. Mit Linux kann ich wegen der Komplexität leider nicht vernünftig helfen.
Hilft Dir das weiter: Installation und Ordner unter (x)buntu ab 14.x
Könntest Du bitte nachschauen was in den Preferences für Werte stehen?
Viele Grüße,
Klaus
#3
Hallo Klaus,
in dem Abschnitt finde ich aktuell diese Werte:
<pref name="CalTransmChannels0" type="string">MyMjMSMjMCMjMiMjMCMjMCwwMiMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjLTEjIzEzIyMxMiMjMTA=</pref>
<pref name="CalTransmChannels1" type="string">MCMjMSMjMiMjMyMjMSMjMCwwNSMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjLTEjIzEzIyMxMiMjMTA=</pref>
<pref name="CalTransmChannels2" type="string">MCMjMSMjMiMjMyMjMSMjMCwwNSMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjLTEjIzEzIyMxMiMjMTA=</pref>
<pref name="CalTransmChannels3" type="string">MCMjMSMjMiMjMyMjMSMjMCwwNSMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjMCwwMDAwMDAwIyMwLDAwMDAwMDAjIyMjMCMjMCMjLTEjIzEzIyMxMiMjMTA=</pref>
<pref name="CalTransmitter0" type="string">MCwwMDAwMDAwIyMtMCw5OTk5Njk1IyMwLDk5OTk2OTUjIzEjIzAsMDA4NjE1MSMjLTAsOTIxNzI5MyMjMSwwMDAwMDAwIyMwIyMtMCwwMDk5Mjk1IyMtMSwwMDAwMDAwIyMwLDk4NTAyMDIjIzAjIzAsMDAwMDAwMCMjLTAsOTk5OTY5NSMjMCw5OTk5Njk1IyMxIyMwLDAwODYxNTEjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMj</pref>
<pref name="CalTransmitter1" type="string">MCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyM=</pref>
<pref name="CalTransmitter2" type="string">MCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyM=</pref>
<pref name="CalTransmitter3" type="string">MCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyMwLDAwMDAwMDAjIy0xLDAwMDAwMDAjIzEsMDAwMDAwMCMjMCMjMCwwMDAwMDAwIyMtMSwwMDAwMDAwIyMxLDAwMDAwMDAjIzAjIzAsMDAwMDAwMCMjLTEsMDAwMDAwMCMjMSwwMDAwMDAwIyMwIyM=</pref>
Decodiert sehen sie so aus:
CalTransmChannels0:
3##1##0##2##0##0,02##0##0##0##0##0##0##0##0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##-1##13##12##10
CalTransmChannels1:
0##1##2##3##1##0,05##0##0##0##0##0##0##0##0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##-1##13##12##10
CalTransmChannels2:
0##1##2##3##1##0,05##0##0##0##0##0##0##0##0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##-1##13##12##10
CalTransmChannels3:
0##1##2##3##1##0,05##0##0##0##0##0##0##0##0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##0,0000000##0,0000000####0##0##-1##13##12##10
CalTransmitter0:
0,0000000##-0,9999695##0,9999695##1##0,0086151##-0,9217293##1,0000000##0##-0,0099295##-1,0000000##0,9850202##0##0,0000000##-0,9999695##0,9999695##1##0,0086151##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##
CalTransmitter1:
0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##
CalTransmitter2:
0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##
CalTransmitter3:
0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##0,0000000##-1,0000000##1,0000000##0##
Gruß
Dieter
#4
Hallo Klaus,
der Fehler liegt offenbar jenseits der Joystick API. Mir war noch aufgefallen, das sich die Werte in weiten Bereichen des Knüppelausschlags gar nicht ändern.
Um einen Fehler auf deiner Seite der API, wahrscheinlich tief in den mono libs vesteckt, auszuschließen, hab ich ein kleines Testprogram in C geschrieben.
Da kann man deutlich sehen, dass z.B. auf der Rollachse bei Auschlag nach rechts erst mal gar kein Event produziert wird. Ich konnte die Trimmung alle Schritte
nacht rechts klicken ohne nach den ersten 2 Klicks eine Wirkung zu haben. Nach links von der Mitte reagiert die Achse sofort und mit feiner Auflösung. Die Reproduziergenauigkeit ist auch nicht gut.
1 Versuch:
Am Sender nach Monitor alles auf Null,
dann Rolltrimmung ganz nach rechts:
Die ersten Events werden vom Treiber künstlich erzeugt
und haben den Type dez 130 (initial state)
Event: time 21409085, value 675, type: 130, axis/button: 0
Event: time 21409086, value 3040, type: 130, axis/button: 1
Event: time 21409087, value 1013, type: 130, axis/button: 2
Event: time 21409088, value 1351, type: 130, axis/button: 3
Event: time 21409089, value 1013, type: 130, axis/button: 4
Event: time 21409090, value 0, type: 130, axis/button: 5
Event: time 21409091, value 0, type: 130, axis/button: 6
Event: time 21409092, value 0, type: 130, axis/button: 7
Dann wird die Trimmung auf Richtung Mitte geklickert:
Event: time 21421678, value 337, type: 2, axis/button: 0
Event: time 21423069, value 1013, type: 2, axis/button: 0
Event: time 21423089, value 675, type: 2, axis/button: 0
Event: time 21423350, value 1013, type: 2, axis/button: 0
Event: time 21423370, value 675, type: 2, axis/button: 0
Event: time 21423990, value 1013, type: 2, axis/button: 0
Erst ein Klick vor der Mitte springt der Wert auf 337, ein Klick weiter
springt der Wert beständig zwischen 1013 und 675
2. Versuch
Das Interface wird mitsamt dem Simstick vom Rechner getrennt und wieder
angesteckt. Am Sender wird wieder die Trimmung für Roll ganz nach recht geklickert.
Die initialen Werte sind anders als zuvor.
Event: time 21539083, value 0, type: 130, axis/button: 0
Event: time 21539084, value 1013, type: 130, axis/button: 1
Event: time 21539085, value 1013, type: 130, axis/button: 2
Event: time 21539086, value 0, type: 130, axis/button: 3
Event: time 21539087, value 1013, type: 130, axis/button: 4
Event: time 21539088, value 0, type: 130, axis/button: 5
Event: time 21539089, value 0, type: 130, axis/button: 6
Event: time 21539090, value 0, type: 130, axis/button: 7
Die Achsen 1,2 und 4 Rauschen
Wieder erst ein Klick von der Trimm Mitte entfernt bewegt sich der Wert von
Roll auf 337 und springt dann bei Mitte wie zuvor zwischen 1013 und 675
Event: time 21539270, value 1351, type: 2, axis/button: 2
Event: time 21539300, value 1013, type: 2, axis/button: 2
Event: time 21539360, value 1351, type: 2, axis/button: 4
Event: time 21539410, value 1013, type: 2, axis/button: 4
Event: time 21539450, value 1351, type: 2, axis/button: 1
Event: time 21539450, value 1351, type: 2, axis/button: 4
Event: time 21539470, value 1013, type: 2, axis/button: 1
Event: time 21539470, value 1013, type: 2, axis/button: 4
Event: time 21539651, value 1351, type: 2, axis/button: 1
Event: time 21539671, value 1013, type: 2, axis/button: 1
Event: time 21539711, value 1351, type: 2, axis/button: 1
Event: time 21539731, value 1013, type: 2, axis/button: 1
Event: time 21539761, value 1351, type: 2, axis/button: 4
Event: time 21539781, value 1013, type: 2, axis/button: 4
Event: time 21540041, value 1351, type: 2, axis/button: 1
Event: time 21540061, value 1013, type: 2, axis/button: 1
Event: time 21540281, value 1351, type: 2, axis/button: 1
Event: time 21540301, value 1013, type: 2, axis/button: 1
Event: time 21540852, value 1351, type: 2, axis/button: 1
Event: time 21540882, value 1013, type: 2, axis/button: 1
Event: time 21540902, value 1351, type: 2, axis/button: 1
Event: time 21540922, value 1013, type: 2, axis/button: 1
Event: time 21542314, value 1351, type: 2, axis/button: 2
Event: time 21542334, value 1013, type: 2, axis/button: 2
Event: time 21542374, value 1351, type: 2, axis/button: 2
Event: time 21542394, value 1013, type: 2, axis/button: 2
Event: time 21542945, value 1351, type: 2, axis/button: 1
Event: time 21542965, value 1013, type: 2, axis/button: 1
Event: time 21543075, value 1351, type: 2, axis/button: 1
Event: time 21543095, value 1013, type: 2, axis/button: 1
Event: time 21543205, value 1351, type: 2, axis/button: 1
Event: time 21543235, value 1013, type: 2, axis/button: 1
Event: time 21543495, value 1351, type: 2, axis/button: 1
Event: time 21543515, value 1013, type: 2, axis/button: 1
Event: time 21544116, value 1351, type: 2, axis/button: 2
Event: time 21544136, value 1013, type: 2, axis/button: 2
Event: time 21544907, value 1351, type: 2, axis/button: 1
Event: time 21544927, value 1013, type: 2, axis/button: 1
Event: time 21545127, value 1351, type: 2, axis/button: 1
Event: time 21545147, value 1013, type: 2, axis/button: 1
Event: time 21546119, value 1351, type: 2, axis/button: 4
Event: time 21546139, value 1013, type: 2, axis/button: 4
Event: time 21546179, value 337, type: 2, axis/button: 0
Event: time 21546219, value 675, type: 2, axis/button: 0
Event: time 21546249, value 1351, type: 2, axis/button: 2
Event: time 21546269, value 1013, type: 2, axis/button: 2
Event: time 21546379, value 1351, type: 2, axis/button: 1
Event: time 21546399, value 1013, type: 2, axis/button: 0
...
So kann das ja nichts werden mit dieser Konfiguration.
Ich werde noch mal das Ding von Freakware testen, um
den Reflex Dongele + Simstick auszuschließen.
Dann bliebe nur noch Kernel patchen
Gruß
Dieter
Hi,
ich interpretiere jetzt zwar nicht all deine Information, aber ich kann dir sagen, dass ich den neXt genauso wie du unter Linux Mint 17.1 verwende. Ich habe den billigen Hobbyking-Wireless Dongle. Also, ich denke du machst dir zuviele Gedanken. Führe einfach unter Linux die Joystick-Kalibrierung durch: http://wiki.ubuntuusers.de/joystick
Zitat
Nach Neustart des neXt zeigten sich jedoch große Abweichungen insbesondere bei Pitch. Da ging es dann im Ergebnis von -90 bis +113.
Naja, das habe ich auch manchmal. Einfach den neXt beenden und neustarten. Ich habe die Vermutung, dass dies immer beim allerersten Start vom neXt mit ausgeschalteter Funke ist. Weiß nicht, was der HK-Funk-Dongle überträgt, wenn kein definiertes Signal empfangen wird. Irgendwie scheint der neXt beim Start (oder das OS) wann und wieso auch auch immer manchmal einen Abgleich auszuführen. Keine Ahnung. Aber wenn so ein seltsames Verhalten auftritt, dann einfach den neXt beenden und mit aktiven Dongle und eingeschalteter Funke neustarten.
Gruß johno
Ehrlich gesagt steig ich bei Dieters Schilderung nicht ganz durch wann er wie und was kalibriert hat. !?!?
Meine Erfahrung ist, dass ohne Kalibrierung auf Systemebene, die Werte nicht ganz richtig sind. Außerdem wird die Kalibrierung nach einem Neustart des Systems wieder zurückgesetzt.
Hier gibts eine ziemlich umfangreiche Doku zu dem Thema: https://wiki.archlinux.org/index.php/Gamepad
Insbesondere der Abschnitt "Setting up deadzones" ist sehr interessant.
#7
Hi
ich habe jetzt folgendes rausgefunden:
1. Nach einer Kalibrierung mit jscal ist die Totzone komplett verschwunden.
2. Die Kalibrierung ist nicht boot resistent. Kann ja auch nicht, die wird ja direkt in den Kernelspeicher geschrieben.
3. Die Kalibrierung wird auch durch Trennen und erneutes Anstecken des Devices vergessen.
Abhilfe:
Wie beschrieben in /usr/src/linux/Documentation/input/joystick.txt, nach dem Kalibrieren mit jscal und testen mit jstest die Kal Daten mitsamt Programaufruf sichern.
jstest muss übrigens nach der Kalbrierung für alle Endausschläge ziemlich genau -32766 +32766 anzeigen.
Die Mitten sollten nicht mehr als 1 Trimklick abweichen. Das entspricht bei mir 324.
jscal -p /dev/js0 > /etc/joystick.cal
Jetzt steht darin sowas wie
jscal -s 8,1,0,18,18,5368545,5368545,1,0,19,19,5422773,5478107,1,0,18,18,5478107,5368545,1,0,19,19,5368545,5422773,1,0,18,18,-2147483648,-2147483648,1,1,0,1,-536854528,-536854528,1,0,-128,-128,-2147483648,-2147483648,1,0,0,0,-2147483648,-2147483648 /dev/input/js0
Nach jeder Inbetriebname, am besten von jedem Start von neXt diese Zeile von einem Script aufrufen lassen:
source /etc/joystick.cal
Man kann dann z.B im Desktopsystem seiner Wahl KDE, Gnome was weis ich, einen Desktop Entry erzeugen und
das Wiederherstellen der Kalibrierung und den eigentlichen Aufruf von /PATH/neXt.x86_64 in in ein shell script schreiben.
Ob damit jetzt auch das Phänomen erschlagen ist, dass ein bloßer Neustart von neXt die darin angezeigen Ergebnisdaten
verändert, muss ich noch rausfinden. Die Daten vom Joysticktreiber sind jetzt jedenfalls stabilisiert.
Gruß
Dieter
Zitat von nichtgedacht im Beitrag #7
Nach jeder Inbetriebname, am besten von jedem Start von neXt diese Zeile von einem Script aufrufen lassen:
source /etc/joystick.cal
Kann man auch sehr schön als udev-Regel bei Einstecken des Dongles automatisieren: https://wiki.archlinux.org/index.php/Gamepad#Deadzones_in_the_Kernel_Driver
#9
Zitat von GerriJay im Beitrag #8
Kann man auch sehr schön als udev-Regel bei Einstecken des Dongles automatisieren: https://wiki.archlinux.org/index.php/Gamepad#Deadzones_in_the_Kernel_Driver
Hi
mit udev ist das schon elegant aber auch aufwändiger.
Was mein Ursprungsproblem angeht habe ich jetzt einen für mich reproduzierbaren Bug gefunden.
Ich hatte mich schon gewundert, dass zunächst mal immer nur die Kalibrierung der Pitch Achse durch den neXt nicht wiederhergestellt wurde nach Neustart des Programms.
Dann dachte ich, dass das Vorkalibrieren mit jscal das Problem beseitigen könnte, weill vielleicht diese Achse besonders stark daneben hängt.
Dann habe ich mich ins Bockshorn jagen lassen, weil der Treiber im Kernel auch alles vergisst wenn nur das Device ab/angesteckt wird.
Aber, jetzt kommts:
Wenn ich den Pitchknüppel +Max stelle und dann den neXt starte, dann mit rechter Maustaste auf das Logo klicke und dann auf den Reiter Heli im Menü klicke kann ich
im Fenster Pitchkurve am Fadenkreuz sehen, dass die komplette positive Hälfte des Pitchweges weg ist.
Im Reiter Simulation Eingabegerät -> Kalibrieren -> Ergebnis sieht man das dann auch. Und zwar werden schon die Eingangwerte falsch angezeigt.
Der neXt vergisst also nicht seine Korrekturen, sondern erwartet, jedenfalls bei mir, einen zentrierten Pitchknüppel beim Start der Programms.
Ist das bei dir auch so?
Gruß
Dieter
Zitat
Aber, jetzt kommts:
Wenn ich den Pitchknüppel +Max stelle und dann den neXt starte, dann mit rechter Maustaste auf das Logo klicke und dann auf den Reiter Heli im Menü klicke kann ich
im Fenster Pitchkurve am Fadenkreuz sehen, dass die komplette positive Hälfte des Pitchweges weg ist.
Im Reiter Simulation Eingabegerät -> Kalibrieren -> Ergebnis sieht man das dann auch. Und zwar werden schon die Eingangwerte falsch angezeigt.
Der neXt vergisst also nicht seine Korrekturen, sondern erwartet, jedenfalls bei mir, einen zentrierten Pitchknüppel beim Start der Programms.
ja, ist bei mir manchmal so. Aber ich beende den neXt und starte einfach neu. Ok, inzwischen achte ich darauf, dass der Knüppel immer in der Mitte ist. Deswegen stört mich das wohl auch nicht mehr. Aber du hast schon recht, ist ein komischer Bug. Vermutlich von Unity.
Gruß johno
Zitat von nichtgedacht im Beitrag #9
Der neXt vergisst also nicht seine Korrekturen, sondern erwartet, jedenfalls bei mir, einen zentrierten Pitchknüppel beim Start der Programms.
Ist das bei dir auch so?
Ja, kann ich bestätigen. Die Knüppel müssen zetriert sein. Sorry, hätte ich vllt. früher erwähnen sollen.
Ist zwar nicht schön, aber gibt schlimmeres.
Ich habe gerade durch Zufall noch einen anderen, simplen Weg gefunden die Kalibrierung (auf Systemebene) zu speichern. Das funktioniert mit dem Tool jscal-store:
sudo jscal-store /dev/input/jsX
(wobei X die entsprechende Device-Nummer ist)
Erklärung zur Funktionsweise aus der Manpage:
Zitat
jscal-store stores the calibration and mapping information for the given joystick device. This information can later be restored using the jscal-restore command.
An appropriate rule can be set up with udev so that any stored calibration settings are restored when the relevant device is connected. Some distributions (at least
Debian, Ubuntu and Slackware) provide joystick packages which install such rules automatically.
Funktioniert bei mir unter Ubuntu 14.10 und 15.04 wunderbar!
- neXt - CGM RC Flight Simulator - English
- News: neXt - CGM RC Flight Simulator
- FAQ
- Feature Suggestions
- Model Setups
- neXt - CGM RC Flight Simulator - Deutsch
- Neuigkeiten: neXt - CGM RC Flight Simulator
- Fragen und Antworten zum neXt
- Gewünschte Funktionen
- Modell Setups
- Verschiedenes
- Marktplatz: Kaufen und Verkaufen
- Align
- FBL-Systeme
- Blade
- Advertising
Related topics
Register now!
Sign up now!