Autor Tema: como saber cuando pase por un punto especifico en gps  (Leído 6979 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
como saber cuando pase por un punto especifico en gps
« en: 17 de Diciembre de 2010, 21:08:17 »
Hola amigos, tengo una duda, estoy leyendo las tramas de un gps, y solo busco leer el comando
gpgga
el cual me da
$GPGGA,160920.807,1947.5139,N,09037.3225,W,0,05,2.3,81.1,M,-9.7,M,,*6D
en este ejemplo, me encuentro en la escuela, y saco el valor de latitud y longitud, los guardo en una variable double, la pregunta es

¿como puedo saber que pase por un punto o cerca de un punto que haya guardado anteriormente, vamos a suponer que quiero guardar la coordenada 1948.51 y 09038.32 en latitud y longitud respectivamente, y estoy en la trayectoria de un vehiculo, en ese momento paso por ahi otra vez, y quiero guardar la hora que pase por ahi, una de mis soluciones fue la simplemente sacar la distancia entre el punto guardado y el punto actual, con la formula

d=sqrt((x2-x1)^2+(y2-y1)^2)) y una vez que tengo esa distancia compararla con un radio de tolerancia aproximado, el problema viene, cuando me pregunto, en que unidaddes esta esto???? que fue lo que saque??? por que mi idea es despues comparar esa "distancia" con 50 metros, alguien me puede hechar una mano de que formula utilizar? saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado Felixls

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 300
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #1 en: 17 de Diciembre de 2010, 22:07:22 »
d=sqrt((x2-x1)^2+(y2-y1)^2)) y una vez que tengo esa distancia compararla con un radio de tolerancia aproximado, el problema viene, cuando me pregunto, en que unidaddes esta esto???? que fue lo que saque??? por que mi idea es despues comparar esa "distancia" con 50 metros, alguien me puede hechar una mano de que formula utilizar?

Hola scientist, esa fórmula no te va a servir, busca el método de Haversine o SLC (Spherical Law of Cosines)


Por haversine es así:

Código: [Seleccionar]
def havDistance(lat1, lon1, lat2, lon2):
    dLat = lat2 - lat1
    dLon = lon2 - lon1
    a = math.sin(dLat / 2) * math.sin(dLat / 2) \
        + math.cos(lat1) * math.cos(lat2) \
        * math.sin(dLon / 2) * math.sin(dLon / 2);
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
    return R * c

por SLC
Código: [Seleccionar]
def slcDistance(lat1, lon1, lat2, lon2):
    return math.acos(math.sin(lat1) * math.sin(lat2)
                     + math.cos(lat1) * math.cos(lat2)
                     * math.cos(lon2 - lon1)) * R

links
http://en.wikipedia.org/wiki/Haversine_formula
http://mathworld.wolfram.com/SphericalTrigonometry.html
http://www.deanandara.com/Argonaut/Sensors/Gps/GettingData.html

saludos.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #2 en: 17 de Diciembre de 2010, 22:15:39 »
muchas gracias Felixls, de hecho, eso estaba tratando de entender en esta pagina

http://www.movable-type.co.uk/scripts/latlong.html

veo que defines la funcion como una especie de macro, para que lenguaje es ese? saludos!!! y Gracias de nuevo

Se me olvidaba, veo en la pagina que postee, que la longitud y latitud la convierten a radianes, en la formula que pones es igual, los valores de latitud y longitud los tomo igual que como los saca el GPS en gpgga ???

o los convierto como en esta pagina?

http://u3x.net/al-karem/?p=63
« Última modificación: 17 de Diciembre de 2010, 22:21:05 por scientist »
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado Felixls

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 300
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #3 en: 17 de Diciembre de 2010, 22:22:45 »
El código es python, está sacado de uno de los links, en realidad son conceptos muy simples, de trigonometría esférica, algo muy útil para los navegantes (antes, ahora está el GPS  :lol:)

saludos

Desconectado drm.electronic

  • PIC10
  • *
  • Mensajes: 3
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #4 en: 01 de Marzo de 2011, 14:54:53 »
Por lo que he visto hasta ahora una diferencia de latitud de 0.000500 es aproximadamente 50 mts(eso por la latitud +-12), si necesitas programar en PIC, donde creo q es más dificil hacer el cálculo real, por las funciones, intenta con esa aproximación y para hacerlo más fácil no es necesario que sea circular sólo un cuadrado, osea si la diferencia de latitudes es menor a tu tolerancia y lo mismo ocurre en la longitud, estás cerca de tu punto.
Sólo son dos restas y un operador AND.

Desconectado beatAurex1

  • PIC12
  • **
  • Mensajes: 78
    • Proyectos de Ingeniera -Control-Electrónica y desarrollo embebido.
Como Crear Geocerco
« Respuesta #5 en: 29 de Marzo de 2011, 19:20:14 »
Hola a todos, me preguntaba si este metodo que publican, me podria servir para programr un geocerco, en un pic, o alguien tednra la teoria  de como hacerlo, he buscaod en el foro peor no encuentro algo al respecto.  gracias

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #6 en: 26 de Septiembre de 2011, 03:08:53 »
por SLC
Código: [Seleccionar]
def slcDistance(lat1, lon1, lat2, lon2):
    return math.acos(math.sin(lat1) * math.sin(lat2)
                     + math.cos(lat1) * math.cos(lat2)
                     * math.cos(lon2 - lon1)) * R

Estoy queriendo usar esta formula para lograr esto, pero me doy cuenta que los valores que tengo son con decimales (-12.86026,-76.4891467, despues de haberlos pasado a radianes). Y las funciones del math.h del CCS solo admiten en sus argumentos de sin, cos, etc. variables de 32 bits solamente, mas no floats. No habria algun prolblema con esto? Se podria?

Gracias, un saludo.
« Última modificación: 26 de Septiembre de 2011, 20:08:07 por jeremylf »

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #7 en: 26 de Septiembre de 2011, 03:15:56 »
Vaya, debe ser por el sueño pero si que se puede en ccs hacer cos, sin o tan con argumento de float y hasta de 64 bits... seguro vi mal. Losiento =D


Porcierto, como lo resolviste scientist?

Saludos :D

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #8 en: 03 de Octubre de 2011, 03:30:36 »
Hola. Habra alguna forma de crear una zona amplia de varios puntos y que el pic sepa si esta dentro de toda esa area o no? Sera que con varios radios o hay alguna otra forma mas conveniente? Gracias.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #9 en: 03 de Octubre de 2011, 10:33:01 »
Podes tener un punto especifico y darle un tolerancia de aprox. +/-11m modificando el 4º decimal. O sea:

Longitud: xxx.xxx_    -> Latitud 0º:11m | 45º:7.8m | 70º:3.7m
Latitud: xx.xxx_   -> 11 m

El problema está para latitudes mayores a 60º donde la longitud comienza a reducirse bastante. Si eso no fuera problema poder armar un sector a controlar mediante un punto.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #10 en: 04 de Octubre de 2011, 21:46:15 »
Gracias Suky. Veras, quisiera que el area que el PIC pudiese controlar sea asi mas o menos:



Entonces, como hago esas verificaciones de acuerdo a esta area que tiene varios puntos...?

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #11 en: 04 de Octubre de 2011, 21:50:07 »
En ese caso los juegos que ha propuesto en su momento jgpeiro06 pueden ayudarte, hay un par de algoritmos  :)

http://www.todopic.com.ar/foros/index.php?topic=25639.msg209665#msg209665


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #12 en: 05 de Octubre de 2011, 13:59:40 »
Uy, estaria algo dificil integrar eso en coordenadas de GPS y todo no?  gracias suky.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #13 en: 05 de Octubre de 2011, 14:24:22 »
No, podes verlo como x,y.
No contesto mensajes privados, las consultas en el foro

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: como saber cuando pase por un punto especifico en gps
« Respuesta #14 en: 05 de Octubre de 2011, 15:28:41 »
Tu te refieres a la propuesto que dio BrunoF en su momento en ese juego? Pues, para el caso de GPS, son valores del tipo float...