Problema con programa que lee desde un GPS

10/11/2009 - 16:36 por [Juanjo] | Informe spam
Hola grupo:

Tengo una aplicación VS2008-C# que lee datos de un dispositivo GPS, y
sitúa las posiciones leidas en un mapa.

Hasta aquí todo "bien", el problema que tengo es que cada satélite GPS
da una posición diferente para una posición (en función de la "cobertura"
que tengo con mas o menos variación) y entonces al situar el punto leido en
el plano, el punto se mueve constantemente. No se si me he explicado bien,
si nosotros vamos con un navegador TomTomGo o del estilo en un coche,
llegamos a un semaforo y nos paramos, el punto que indica nuestra posición
se queda quieto no? pues si yo hago lo mismo con mi programa cuando llego al
semaforo, constantemente se esta moviendo un poco adelante, un poco atras, a
los lados, siempre cerca del punto donde estoy.

Alguien se le ocurre como solucionar esto?, he pensado en poner un
umbral antes de recolocar la posición en el mapa, pero entonces el
movimiento no es fluido, si no que va a "saltos". No se si en los datos que
se leen del GPS, hay algun dato que indique si lo leido es correcto o que
grado de exactitud tiene.

Gracias de antemano

Preguntas similare

Leer las respuestas

#6 [Juanjo]
11/11/2009 - 10:30 | Informe spam
Muchas gracias,

Despues de mucho pensar se me ha ocurrido una idea, que probare, por si a
alguien le interesa la expongo:

Ademas de la posición, los satelites mandan otra información como la
velocidad, entondes, supongo que cuando estes parado, supongo que todos los
satelites daran velocidad 0 (of course :P), y no ocurrira como con la
posición, que cada satelite da la que "quiere", asi que cuando la velocidad
sea distinta de 0 hare los calculos del movimiento.


"RFOG" escribió en el mensaje de noticias
news:
Pues ya no sé qué decirte... Estoooo... Haz el punto más gordo, y mientras
no te salgas del contorno no lo muevas... :-P

Cuando estés parado, toma el satélite de mayor señal e ignora los demás, y
hasta que no tengas un vector lo suficientemente grande no integres los
demás... Está claro que los que hacen navegadores lo han solucionado de
alguna forma, y no creo que sea demasiado compleja porque la electrónica
de esos cacharros no es gran cosa...


On Wed, 11 Nov 2009 09:17:51 +0100, [Juanjo]
wrote:

Gracias, por la idea.

Ya lo hice asi, pero creo que me falta algo en la interpretacion de los
datos que leo, por que si ponia un umbral pequeño, los satelites con
peor cobertura, daban datos que sobrepasaba ese umbral y si el umbral es
grande, el movimiento no es continuo, si no a saltos.


"RFOG" escribió en el mensaje de noticias
news:
Pues entonces ponte un umbral antes de empezar a mover el punto. A
partir de un delta, o cuando todos empiecen a cambiar a la vez en un
mismo vector... ya sé que decirlo es muy fácil...

On Tue, 10 Nov 2009 20:20:13 +0100, [Juanjo]
wrote:





<snip>
<snip>




<snip>


>>> En el amor es lo mismo que en la guerra; plaza que parlamenta está
medio conquistada.







Microsoft Visual C++ MVP => http://geeks.ms/blogs/rfog
> En el amor es lo mismo que en la guerra; plaza que parlamenta está medio
conquistada.
Respuesta Responder a este mensaje
#7 Pedro Maicas
12/11/2009 - 16:37 | Informe spam
On Tue, 10 Nov 2009 16:36:59 +0100, "[Juanjo]"
wrote:

Alguien se le ocurre como solucionar esto?, he pensado en poner un
umbral antes de recolocar la posición en el mapa, pero entonces el



Amigo, tienes un error 'de concepto'. Los satélites no te dan
tu posicion, y mucho menos los diferentes satelites te dan diferentes
posiciones, no es eso, creeme o repasa un poco el funcionamiento
del sistema gps, en internet hay abundante informacion.

Los satelites si limitan a enviar una señal, y tu receptor
recibe esa señal y calcula tu posicion. Es tu receptor el
que decide la posicion en base a complicados calculos.
Todos los receptores del mundo reciben la misma señal y cada uno
de ellos calcula su posicion.

¿ hasta aqui me sigues ?

Bien, entonces tenermos que tu receptor calcula la
posicion y lo hace una vez por segundo , tu recibes la
posicion calculada cada segundo. La precision de
los cálculos obviamente no es infinita, hay un pequeño
error de 5 a 10 metros normalmente (y algun rerror espúreo
mucho mayor)

Entonces cada segundo estas recibiendo una posicion.
¿que varía ? ¿ que oscila ? Pues claro, es tu problema
filtrar esas oscilaciones, ahí entras tu como programador,
tu debes saber la precision esperada, cómo filtras
y que consecuencias tiene ese filtrado.

Respecto a si el gps tiene o no tiene un indicador
de la validez, claro, repasa el formato completo nmea,
tienes indicacion de los satelites usados, de la
validez, de la precision esperada (que a veces puede
tambien fallar), la velocidad, el rumbo, etc.. además
de la posicion.

Pero aún con eso, tu debes ser consiente de la precision
inherente al sistema y de la posibilidad de errores espureos
y usar el gps para un trabajo que el gps pueda hacer.


Saludos :-)
-Pedro-

http://www.maicas.net/ (desarrollo de software)
http://www.mancuentro.com/ (localizacion gps)
Respuesta Responder a este mensaje
#8 [Juanjo]
13/11/2009 - 16:12 | Informe spam
Gracias por responder,

Todo eso que me dices, ya lo sabía, incluso que para calcular una posición
correcta, para uso comercial, es necesario recibir la señal de tres
satelites, para militar en EEUU con uno vale, etc.

Lo que queria saber, era si tu habias programado eso, como lo habias hecho,
alguna idea, de todas las formas he encontrado una libreria (GPS.NET) que
soluciona este problema de forma bastante aceptable.

Un saludo


"Pedro Maicas" escribió en el mensaje de noticias
news:
On Tue, 10 Nov 2009 16:36:59 +0100, "[Juanjo]"
wrote:

Alguien se le ocurre como solucionar esto?, he pensado en poner un
umbral antes de recolocar la posición en el mapa, pero entonces el



Amigo, tienes un error 'de concepto'. Los satélites no te dan
tu posicion, y mucho menos los diferentes satelites te dan diferentes
posiciones, no es eso, creeme o repasa un poco el funcionamiento
del sistema gps, en internet hay abundante informacion.

Los satelites si limitan a enviar una señal, y tu receptor
recibe esa señal y calcula tu posicion. Es tu receptor el
que decide la posicion en base a complicados calculos.
Todos los receptores del mundo reciben la misma señal y cada uno
de ellos calcula su posicion.

¿ hasta aqui me sigues ?

Bien, entonces tenermos que tu receptor calcula la
posicion y lo hace una vez por segundo , tu recibes la
posicion calculada cada segundo. La precision de
los cálculos obviamente no es infinita, hay un pequeño
error de 5 a 10 metros normalmente (y algun rerror espúreo
mucho mayor)

Entonces cada segundo estas recibiendo una posicion.
¿que varía ? ¿ que oscila ? Pues claro, es tu problema
filtrar esas oscilaciones, ahí entras tu como programador,
tu debes saber la precision esperada, cómo filtras
y que consecuencias tiene ese filtrado.

Respecto a si el gps tiene o no tiene un indicador
de la validez, claro, repasa el formato completo nmea,
tienes indicacion de los satelites usados, de la
validez, de la precision esperada (que a veces puede
tambien fallar), la velocidad, el rumbo, etc.. además
de la posicion.

Pero aún con eso, tu debes ser consiente de la precision
inherente al sistema y de la posibilidad de errores espureos
y usar el gps para un trabajo que el gps pueda hacer.


Saludos :-)
-Pedro-

http://www.maicas.net/ (desarrollo de software)
http://www.mancuentro.com/ (localizacion gps)

Respuesta Responder a este mensaje
#9 Pedro Maicas
14/11/2009 - 19:29 | Informe spam
On Fri, 13 Nov 2009 16:12:47 +0100, "[Juanjo]"
wrote:

Gracias por responder,

Todo eso que me dices, ya lo sabía, incluso que para calcular una posición
correcta, para uso comercial, es necesario recibir la señal de tres
satelites, para militar en EEUU con uno vale, etc.



Estoy seguro de que lo sabías, pero lo que escribiste
textualemnte era bastante desacertado, alguien con menos
conomientos podría sacar una impresion equivocada.

generalmente hacen falta 4 satelites mínimo para
obtener una posicion en 3D, para 'militar en eeuu' incluido,
si te conformas con una posicion 2D (sobre la superficie
teorica de la tierra) con 3 valdría.

Lo que queria saber, era si tu habias programado eso, como lo habias hecho,
alguna idea, de todas las formas he encontrado una libreria (GPS.NET) que
soluciona este problema de forma bastante aceptable.



Todo depende del tipo de vehiculo al que va acoplado el gps, en un
vehiculo rápido no necesitas filtrar mas que por la velocidad, en
uno lento (el coche de san fernando, un rato a pie y otro andando)
posiblemente tengas que calcular la media de varios puntos.

Por ejemplo en mi programa ZhenHe ( http://www.maicas.net/zhenhe/ )
para registrar un recorrido he eliminado todos los puntos que se
salían un determinado ángulo de la trayectoria anterior (para
eliminar puntos espúereos) y todos los que la velocidad era
menos de unos pocos km/h (para elimnar puntos estando parado)
Eso para registrar una trayectoria, porque para pintarla
(seguir una trayectoria previamente registrada) es mas complicado
hay que 'mentir' en la posicion obtenida, de otra manera la
imagen no mostraria al vehículo sobre la carretera sino que
lo mostraria unos metros a un lado o al otro (esos pocos
metros es la precision que le falta al GPS).

En www.mancuentro.com hice algo parecido para detectar
las paradas, cortando a partir de determinada velocidad.
Por supuesto que se puede engañar al sistema moviendose
lentamente, pero eso es inevitable, es la precision del gps.


Saludos :-)
-Pedro-

http://www.maicas.net/ (desarrollo de software)
http://www.mancuentro.com/ (localizacion gps)


Saludos :-) - Pedro -

http://www.maicas.net/
Respuesta Responder a este mensaje
#10 [Juanjo]
15/11/2009 - 20:29 | Informe spam
Gracias por las ideas.

En mi caso, lo que necesito es seguir una ruta previamente definida fija con
un coche por una ciudad (no tratar de ir de un punto a otro por el camino
mas corto, recalculado si te sales del recorrido), pero que dificilmente va
a pasar de 60 km/h y con continuas paradas.

Lo ideal para mi, es que siguiera la ruta "pintada", y esto lo conseguí con
un comportamiento muy aceptable, pero en el momento en el que el coche se
salia de la ruta (calle cortada, obras, desvíos, etc) se fastidiaba todo, y
descarte la idea, sobre todo por lo que comento de tener que seguir una ruta
no tratar de llegar de un punto a otro.

Mirare tanto la web como el programa, que tienes. me parecen muy
interesantes.

Por cierto, para el programa zhenhe, cuando dices "Usa un gráfico normal
(bmp, jpg o gif) calibrado con maplot", por ejemplo tienes un mapa de España
con todas las ciudades en una imagen, o las tienes en varias y las cargas a
medida que las necesitas? Yo solo necesito una imagen de mi ciudad, pero con
bastante nivel de detalle, y claro la imagen es muy grande y no el portatil
se que me queda "frito" (y eso que no utilizo PDA)

Gracias de nuevo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida