Android-Pitch-und Roll-Problem
Arbeite ich an einem tilt-app für Android. Ich habe ein Problem mit Portrait - & Landschaft-Modus. Wenn die pitch = 90 Grad (Handy am Ende) und auch etwas vor dem roll-Wert spielt verrückt, wenn es keine physischen Wandels in der Rolle. Ich habe nicht in der Lage gewesen, eine Lösung zu finden für dieses problem. Ob jemand kann mich in die richtige Richtung, würde es geschätzt werden.
Hier ein kurzer code-dump, damit Sie wissen, es ist nicht ein Beschleunigungsmesser Fehler.
final SensorEventListener mEventListener = new SensorEventListener(){
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent event) {
setListners(sensorManager, mEventListener);
SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet);
SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);
synchronized (this) {
switch (event.sensor.getType()){
case Sensor.TYPE_ACCELEROMETER:
System.arraycopy(event.values, 0, mValuesAccel, 0, 3);
long actualTime = System.currentTimeMillis();
//Sensitivity delay
if (actualTime - lastUpdate < 250) {
return;
}
else {
sysAzimuth = (int)Math.toDegrees(mValuesOrientation[0]);
sysPitch = (int)Math.toDegrees(mValuesOrientation[1]);
sysRoll = (int)Math.toDegrees(mValuesOrientation[2]);
//invert direction with -1
pitch = (sysPitch - pitchCal)*-1;
roll = (sysRoll - rollCal);
azimuth = sysAzimuth;
lastUpdate = actualTime;
}
InformationsquelleAutor user1234051 | 2012-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich gefunden, was ich suchte, Rotations-Matrizen.
War ich mit Euler-Winkeln (roll, pitch, yaw) für die Nick-und Wankbewegungen. Wenn das Telefon eingeschaltet ist, Ende um 90 Grad zu der x-und z-Ebene sind die gleichen, und das Telefon spielt verrückt, ein grundlegender Fehler mit Euler Winkeln.
Ich brauche, um die pitch-und roll Grad mit Rotations-Matrizen über getRotationMatrix
Hier ist es für alle 😉
XML:
Code:
Kann nicht auf den Kommentar Vektor, aber die mAzimuth ist der Kompass überschrift, bieten nicht es es als eine saubere 0-360 Lesen, müssen Sie zum konvertieren von neg-Werte zurück zur 360, plus eine Menge andere tweaks, wenn Sie wollen, um richtig berechnen. Sie würden denken, Sie könnten nur bitten, das Gerät für die pitch -, roll-und kompasskurs und bekommen es zurück, keine Möglichkeit, Sie zu bekommen, um es herauszufinden, ein major PITA für was sollte einfach.
Was sind die anderen tweaks? Was Sie am Ende tut mit mInclination? Ist, dass ein Teil der Korrektur? Ich bin mit getRotationMatrixFromVector() als gut und zu sehen, die Azimut variieren mit Tonhöhen, die will ich nicht, und Google maps nicht in den Kompass-Modus.
InformationsquelleAutor user1234051
Ich würde es nicht verwenden Euler-Winkel (roll, pitch, yaw). Es ist ziemlich viel Schrauben, bis die Stabilität der app, wie du schon bemerkt.
Sehen Sie hier, warum, und was stattdessen tun: Seltsames Verhalten mit android-Ausrichtung sensor.
Sie nicht haben, um es zu implementieren, umgesetzt wird es durch den SensorManager. Ich würde anfangen, an der SensorManager.getRotationMatrix.
Danke, habe ich mir angeschaut. Leider habe ich nicht erfahren, auch von Google ' s theoretische Beispiele. Ich vermute, die Dinge durch das betrachten von funktionierenden code, neues auf den Begriff der rotation Matrizen und auch Android. Ein heck ein Aufstieg jetzt.
Ich kann leider nicht an der Android-Programmierung, damit ich dir helfen kann. Naja, nicht aufgeben!
Danke für die Hilfe
InformationsquelleAutor Ali
Durch Experimentieren fand ich, dass beim Umschalten von Hochformat zu Querformat-Modus Ihre rotation matrix ändert sich nicht, aber Sie müssen es manuell ändern, um die Verwendung mit OpenGL korrekt
Auch ich hoffe, dass Sie erwerben die rotationsmatrix richtig auf dem ersten Platz:
InformationsquelleAutor Vlad
Was Sie beschreiben, nennt gimbal lock. Bei pitch +/-90 -, Gier - ( + ) - Rolle ist völlig undefiniert. In der Nähe von pitch +/-90, kleine nois/Fehler in der Haltung kann zu großen Schwankungen in der Gier-und roll einzeln, obwohl es keine große änderung in der tatsächlichen Ausrichtung. Hier ist eine große write-up auf yaw, pitch roll (und, wie thay sind nicht gut umgesetzt, die auf vielen Plattformen):
http://www.sensorplatforms.com/understanding-orientation-conventions-mobile-platforms/
InformationsquelleAutor nak