Pregunta

Veo que puedo recuperar Cmattitud Desde un dispositivo y de él puedo leer 3 valores que necesito (tono, rollo y guiñada). Según tengo entendido, este objeto CMattitude es administrado por Coremotion, que es un administrador de fusión de sensores para calcular los resultados correctos de la brújula, el giroscopio y el acelerómetro juntos (en Android es la clase Sensormanager).

Entonces mis preguntas son:

  1. ¿Son esos valores (tono, rollo y guiñada) en relación con el norte magnético y la gravedad?

  2. Si lo anterior es correcto, ¿cómo puedo modificarlo para darme resultados en relación con el Norte Geográfico?

  3. Si un dispositivo (como el iPhone 3GS) no tiene un giroscopio, tengo que decirle que se administre o puedo decirle que me dé la actitud del dispositivo en función de los sensores que tiene (ACC + Gyro + Compas O ACC + Compas)

¿Fue útil?

Solución

  1. y 2:

iOS 5.0 simplifica esta tarea. CMMotion Manager tiene un nuevo método:


- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

Como marco de referencia, puede usar estos valores:

  • CMATTITUDEREFERIERTAFRAMEXMAGNETICNORTHZVERTICAL para Magnetic North,
  • CMATTITUDEREFERENTERFRAMEXTRUENORTHZECTICAL para True North.

Si quieres hacer esto con iOS más antiguos, me temo que tienes que calibrar esto solo usando la ubicación actual del usuario.

Intente ver estos recursos:

3. Si el dispositivo no tiene Gyro, la propiedad de DeviceMotionVainable de CMMotionManger será "no" (es equivalente a la propiedad Gyroavilable) y no puede obtener actitud utilizando el movimiento del dispositivo. Lo único que puede hacer es leer los datos del acelerómetro y el magnetómetro directamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top