Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Compass & Heading

Iniciado por iRobb, Octubre 01, 2015, 07:36:21 PM

Tema anterior - Siguiente tema
Hola a todos! Hacía tiempo que no planteaba una pregunta. Ya toca!Estoy tratando de conseguir el heading (true, orientado al N, no al magnético) a través de las funciones de Unity y me encuentro con un montón de problemas paralelos.Según la documentación y la puesta en práctica, el trueHeading es el valor en ángulos del vector respecto al N que surge de la parte superior del móvil puesto en vertical. Si yo apunto con él al N mirándolo de cara me da 0 grados. BienAhora bien, si yo muevo el teléfono en cualquier ángulo, rotándolo p.ej., al ser un vector respecto a, el valor de trueHeading comienza a cambiar ya que el vector cambia. Como es lógico.Según he estado encontrando por mil sitios, se recomienda utlizar el resto de sensores (gyro, acelerómetro) para compensar los valores y tratar de obtener un valor adecuado. Bueno vale, pensé, dicho y hecho. Pero es que los valores devuelven una cantidad de ruido de espanto. Desde otros sitios leo que recomiendan aplicar un filtro de Kalman a los resultados debido a esto. Otros sitios que los chipsets son tan sofisticados que ya lo llevan aplicado, con creces y mejores variaciones del algoritmo.Pues no sé por donde continuar. Si alguien ha trabajado con el valor del trueHeading en aplicaciones serias, me podría echar una mano? Una orientación de qué tipo de sensores utilizar y, si debo aplicar o no filtros y de qué tipo.Muchas gracias a todos!   

Interesante, voy a investigar. ..En la documentación no habla nada del ruido ni de aplicar un filtro para el cálculo del true heading, solo indica que también se debe iniciar la actualización de la ubicación llamando a  Input.location.Start()

Bye Bye



Sin embargo,  leyendo esto:http://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-configs" rel="external nofollow">http://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-configs veo que el  calculo del rumbo del sensor magnético es dejado netamente al hardware, entonces es deducible que su error también va a depender de este.Por ahí en algunos app indican mover el dispositivo en forma de 8 para calibrar el compás interno.También interesante sería el averiguar un poco más de como aplicar una corrección al compás, supongo que para eso unity usa esta función:

http://docs.unity3d.com/ScriptReference/Compass.html" rel="external nofollow">Compass.headingAccuracy


Bye Bye



El heading accuracy devuelve 0 en mi s4, o sea que no lo soporta. Supongo que la mayoría. Lo de calibrarlo moviéndolo lo he hecho y lo del location además del compass también. En general los valores son dispares a veces y a veces no. Yo que me muevo por patrones, me vuelve loco. Puede estar registrando el 0 grados norte, moverlo 45 grados e indicar 0 norte igual. En otro momento, lo indica bien. Sé que influyen todos los ejes, pero esto parece ridículo. Añadí una flecha de compass que me indica exactamente donde debo apuntar, así y todo, da extraños valores a veces.Lo de los filtros es por la cantidad de ruido (un lowpass como mínimo habría que añadir). Puedes ver bailar los valores a una velocidad tremenda entre dos o tres decimales. Para que sea práctico, le llego a aplicar hasta variaciones de 5 grados.Gracias por el interés. Puedes probarlo tu mismo, es sencillo. Sino, te paso un código de base. 

Octubre 02, 2015, 02:37:55 PM #4 Ultima modificación: Octubre 02, 2015, 02:38:58 PM por Oak Human Flesh
En el avión se usa la variación magnética para calcular el true heading, esta variación es el ángulo formado entre el norte geográfico, el norte magnético,  y la posición actual de el avión en el mundo. Si tienes alguna aplicación de prueba, y si lo deseas puedes pasarmela para comparar sus lecturas con los instrumentos del avión,  sin embargo también puedes hacer el procedimiento de calibración (compass swing), tu mismo, lo recomendable es usar un compás maestro,  e ir rotando cada 30° y anotar la desviación comparándola entre ambos luego de esperar un tiempo de estabilización. (El dispositivo móvil y el compás maestro).También es necesario que no haya interferencias como las producidas por construcciones o herramientas, en el caso de las construcciones, lo mínimo recomendable es que estén alejadas del lugar de pruebas unos 300 mts mínimo,  por esto muchas veces hacemos el compass swing en vuelo, sale muy caro  
También tenemos un compás maestro que induce una señal sobre el compás magnético y no es requerido el salir a volar, y se puede usar bajo techo. 

Bye Bye



Hago pruebas fuera tambíén (aunque debería hacer más). Estoy rodeado de wifis, hd's, monitores, amplificadores, altavoces, transformadores de 12v, en fin. Ahora en serio, ya te pasaré algo sencillo para que se pueda toquetear fácilmente. Y si averiguas algo, genial!

[quote author=iRobb" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="27938" data-ipsquote-contentcommentid="115513">Hago pruebas fuera tambíén (aunque debería hacer más). Estoy rodeado de wifis, hd's, monitores, amplificadores, altavoces, transformadores de 12v, en fin. Ahora en serio, ya te pasaré algo sencillo para que se pueda toquetear fácilmente. Y si averiguas algo, genial![/quote]jajajaja la desventaja del avance tecnológico.  :)

Bye Bye



Sabía que tenías algo que ver

Ya he encontrado la solución!

Octubre 03, 2015, 07:04:21 AM #9 Ultima modificación: Octubre 03, 2015, 07:06:48 AM por Oak Human Flesh
Ciertamente requiere de atención,  ya que he probado con un script hecho netamente con el manual de Unity y en ambos heading indica el mismo rumbo,  comparado a los indicadores del avión el desface es mínimo, máximo 2°, desde mi posición geográfica es muy difícil percibir la diferencia entre los heading, esto debido a la distancia que hay entre en mag north,, el true north ,  y mi present position, por ejemplo uno de los aviones me indicaba 355° mag y 358° true, el teléfono móvil 358° en ambos,  en otro avión 40° mag y 38° true, el teléfono móvil 40° en ambos heading. Y con respecto a la posición geográfica el desface era de unos 15 o 20mts, en general normal para un sistema menos certero. [quote author=iRobb" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="27938" data-ipsquote-contentcommentid="115656">Ya he encontrado la solución![/quote]Tal vez lo que encontraste pueda sacar la respuesta definitiva de si las indicaciones eran true o mag en el móvil, así nada mas ( como esta puesto en el manual de unity) o si realmente requiere de una corrección. Me hubiera gustado tener un avión apuntando a cada punto cardinal, pero me salio trabajo extra en un avión,  jajaja   <_<

Bye Bye



Espera, espera, que pare la música. Mi problema no es la diferencia entre el magnético y en el N geográfico. Mi problema es que al leer el trueheading no hay mucha precisión al ir cambiando de orientación. O sea:- Coger el móvil y apuntar a 0 grados.- Girar 45 grados a la derecha, y a veces dar lo mismo, o sea casi 0 o 358 gradosTu has conseguido que la medida sea coherente entonces?Saludos

Según las pruebas es coherente solo en los polos N y S, pero en E y W es sospechoso,  pareciera apuntar en los 90° y los 270° en una dirección mas cerca de los 45° y 315°, por eso requiere atención en esos polos, en ocasiones he reparado algunos compaces magnéticos con este tipo de falla, pero por la construcción del móvil podría deberse a interferencia en el flujo magnético producto de alguna instalación cercana. Simplemente podría requerir de algún script para compensar en esos polos, o mi teléfono móvil posee un sensor de flujo magnético dañado ya que otra aplicación que instalé da el mismo problema. Igual me interesa ver la solución que posees, tal vez mi script y la aplicación que descargue estan mal el Smart Tools.
Por cierto siempre tengo que calibrar el móvil antes de iniciar las pruebas,  luego trabaja de la forma que te describí,  no trabaja de otra forma siempre igual. 

Bye Bye



Se me olvidaba mencionar que también en mi dispositivo el heading accuracy devuelve 0 igual al tuyo.

Bye Bye



Toda vía no lo tengo conseguido a la práctica, pero creo que la teoría de mi solución es correcta. Te cuento.Inicialmente yo obtenía una localización basándome en mi posición GPS y el objetivo, utilizando la distancia total respecto al destino + el bearing o ángulo respecto al destino. Este dato me lo guardaba y luego al dibujarlo, colocaba el destino basándome en los datos anteriores y mi orientación de compass, escalado en un minimap. Que ocurre cuando la lectura de compass es mala? Que todo se va al garete. Nada funciona y comienza y a bailar. Terrible.Objetivo: No depender del compass prácticamente para nada.Segunda solución. Obtener la distancia de dos puntos GPS tanto en la latitud, como en la longitud. Sin ángulo. Luego dibujarlos en el minimap a escala basándome solamente en la distancia (son dos ejes, es fácil), solo que las distancias está calculado por harvesine.Que me falta ahora... Pues rotar el minimap basándome en el giroscopio, obteniendo valores puntuales del compass que sean coherentes para corregir la rotación. En ello estoy. Si lo consigo, tendré un compass tremendamente fiable y prácticamente sin interferencias de campos magnéticos. 

Octubre 04, 2015, 05:18:03 AM #14 Ultima modificación: Octubre 04, 2015, 05:18:55 AM por Oak Human Flesh
[quote author=iRobb date=1443898649" data-ipsquote="" data-cite="iRobb">Toda vía no lo tengo conseguido a la práctica, pero creo que la teoría de mi solución es correcta. Te cuento.Inicialmente yo obtenía una localización basándome en mi posición GPS y el objetivo, utilizando la distancia total respecto al destino + el bearing o ángulo respecto al destino. Este dato me lo guardaba y luego al dibujarlo, colocaba el destino basándome en los datos anteriores y mi orientación de compass, escalado en un minimap. Que ocurre cuando la lectura de compass es mala? Que todo se va al garete. Nada funciona y comienza y a bailar. Terrible.Objetivo: No depender del compass prácticamente para nada.Segunda solución. Obtener la distancia de dos puntos GPS tanto en la latitud, como en la longitud. Sin ángulo. Luego dibujarlos en el minimap a escala basándome solamente en la distancia (son dos ejes, es fácil), solo que las distancias está calculado por harvesine.Que me falta ahora... Pues rotar el minimap basándome en el giroscopio, obteniendo valores puntuales del compass que sean coherentes para corregir la rotación. En ello estoy. Si lo consigo, tendré un compass tremendamente fiable y prácticamente sin interferencias de campos magnéticos. [/quote]Entiendo que quieres triangular la posición del norte magnético?o tal vez requires la posición aproximada del norte magnético, este sistema de navegación seria dependiente de la actualización de su ubicación, si es así puedes ver este link:http://wdc.kugi.kyoto-u.ac.jp/poles/polesexp.html

Bye Bye



Etiquetas: