Mostrando entradas con la etiqueta Gps. Mostrar todas las entradas
Mostrando entradas con la etiqueta Gps. Mostrar todas las entradas

miércoles, 14 de diciembre de 2011

Estado del proyecto Cerea



Os comento un poco el estado del proyecto, ya que tengo muchos frentes abiertos.

Version windows, implementando patrones de paralelismo, bases de datos de trabajos, multisector para herbicida.
Version android, implementada generacion de kml, resolviendo problemas con la fragmentación, esto me está tocando los eggs ya, peta el gesto de pellizco con la 3.0 y no doy con ello. Van 343 descargas ( me parece acojonante, dado que no deja de ser una frikadadilla).
Me sorprende que lo han sacado en combine forum de lefebure. En Alemania tiene 10 descargas, y se lo ha descargado alguien en los emiratos arabes. ( pa medir las hectareas del campo de petroleo?)

He tenido algunos correos pidiendolo para iphone e ipad, y dado que me regalaron uno ( regalaco) me he liado la manta a la cabeza, he pillado un mac, turra a leer, estudiar y practicar y estoy resolviendo el tema opengl. Comentario, las herramientas de desarrollo de la manzanita son buenísimas, y entre objective c ( lenguaje de la manzana) y java( del androide), son un dolor ambos,

La conexion de manzanas y androides a gps usb pasa, a dia de hoy, por arduino. Estoy a punto de comprar una para testear ambos.

La parte mas ambiciosa de todo es integrar el rtklib en cerea, esto dará bastante guerra, aunque como está en mi viejo amigo C, se llevará bien con Python y con la manzana y mal con el androide.

Como veis, el berenjenal es grande!!

Para los que me preguntan que tablet comprar, que le tengo pedirva los reyes, a dia de hoy,

Version windows sigue siendo lo mas maduro, lo mas conectable, y lo mas trabajado.
Version Android, buena pinta y aceptacion, le falta madurez.
Versión IOS, en pañales, pero a buen ritmo

Los plazos de release, lo mas rapido que se pueda.

Saludos a todos y gracias por los comentarios en el android market y foros agroterra.

miércoles, 6 de abril de 2011

Cerea 1.1.2

En la versión anterior había un bug y se ponía en pantalla el PDOP en lugar del HDOP , aquí está corregido

martes, 1 de marzo de 2011

Filtro de Kalman.

Por fin, he implementado el filtro de Kalman al programa Cerea. Y esto, ¿Para qué sirve?.

El filtro, en general, sirve para fusionar datos de diferentes sensores, por ejemplo, de dos gps a la vez, de un gps y una brújula electrónica, etc.

En la aplicación particular del Cerea, fusiono los datos del gps con un modelo matemático cinemático de un vehículo, con la hipótesis de restricción no holónoma ( esto es, sin deslizamiento lateral, sabemos que en un tractor, trabajando en el barro, la no holonomía puede estar en entredicho).

En la fusión y dadas las características del algoritmo, doy poco peso a las estimaciones de posición que me da el modelo y doy mucho peso a las estimaciones del ángulo del vehículo.

Un error común es suponer que el gps mide el yaw o cabeceo del vehículo. Es incierto, el gps mide el ángulo del vector velocidad. Mediante el filtro de Kalman, un modelo de triciclo de ackerman y usando como variables de control el módulo de la velocidad y el ángulo de este vector se puede cálcular el ángulo de yaw del vehículo.

Beneficios:
  • En parado, no hay bailoteo del vehículo ( el gps en parado da ángulos falsos). El ángulo es filtrado y el vehículo permace parado.
  • Reproduce la cinemática de marcha atrás, esto no me lo esperaba, pero cuando das marcha atrás el modelo se mueve como el vehículo. (* Parece que si, pero no lo reproduce, tengo que imponerle la restricción de máximo ángulo de giro de las ruedas)
  • Me permite aumentar el frame rate del programa, es decir, puedo tener 1 dato de gps por segundo y estimar los estados intermedios, subiendo a 20Hz, por ejemplo
  • Sirve para integrar nuevos sensores, por ejemplo, una unidad de guiado inercial.

El programa:

def kf_predict(X, P, A, Q, U):
dt =1.0
v = float(U[0])
titagps = float(U[1])
alfa= titagps
tita =float(X[2])
ganma= alfa-tita
b = 3.0
xpunto = v *cos(alfa)
ypunto = v* sin(alfa)
titapunto =v/b*sin(ganma)
BU = array([[dt*xpunto],[dt*ypunto],[dt*titapunto]])
#X = dot(A, X) + dot(B, U)
X = dot(A,X) + BU

P = dot(A, dot(P, A.T)) + Q
return(X,P)

def kf_update(X, P, Y, H, R):
IM = dot(H, X)
IS = R + dot(H, dot(P, H.T))
K = dot(P, dot(H.T, inv(IS)))
X = X + dot(K, (Y-IM))
P = P - dot(K, dot(IS, K.T))
#LH = gauss_pdf(Y, IM, IS)
return (X,P,K,IM,IS)


for line in f_in:
campo = line.split(",")
x = float(campo[2])
y = float(campo[3])

aux = float(campo[5].split(";")[0])
titav = 450 -aux
titav = titav-floor(titav/360)*360

if i ==0:
x_ant = x
y_ant= y
i+=1
x=x-x_ant
y=y-y_ant
v= float(campo[4])*0.514

if i == 1:
# Initialization of state matrices
X = array([[x], [y],[radians(titav)]])
P = diag((0.01, 0.01, 0.01))
A = array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
Q =10* eye(X.shape[0])
U=array([[v],[radians(titav)]])
Z=array([[x],[y]])
H = array([[1, 0, 0], [0, 1,0]])

R=array([[.25],[.25]])
(X, P) = kf_predict(X, P, A, Q, U)
(X, P, K, IM, IS) = kf_update(X, P, Z, H, R)
i+=1










Sobre los resultados, en el gráfico del ángulo del vehículo se aprecia, en la parte final , en rojo una zona ruidosa, el vehículo pintado por el programa oscila rotando en parado. Al aplicar el filtro permance quieto. Se ve en azul que el ángulo salta entre 0 y 360º. ( estos saltos son artificiales, porque al pasar los radianes a grados y meterlos dentre de una única vuelta de circunferencia ocurre esto).


jueves, 23 de diciembre de 2010

Felicitación Navideña Cerea.Video

Dejo aquí un video de la simulación, es largo pero está bien


Doy también las gracias a la diseñadora que me ha creado las letras.

miércoles, 10 de noviembre de 2010

Pequeña explicación de patrón C


La recta verde pasa por los puntos A y B. Si justo en el momento de marcarlos en el terreno pillaste un poco más de error o te desviaste minimamente, en manos/besanas largas vas a tener un error grande.
El patrón C aproxima mejor a un conjunto de puntos y no le influyen demasiado los puntos medidos con algo de error.

Versión Cerea1.1 beta en rapidshare.

http://rapidshare.com/files/429902865/cerea1.1_beta.rar

En este enlace lo podéis descargar también.

martes, 9 de noviembre de 2010

Cerea 1.1 beta con atajos de teclado

He liberado en estos links la nueva versión de Cerea con atajos de teclado y otras mejoras.

En megaupload:

En hotfile


Tenéis que descargar, descomprimir y ejecutar, no hay que instalar nada.



Videotutorial de cerea 1.1 beta

En este enlace está el videotutorial del software.


No sólo se maneja con un teclado numérico adicional , también con el teclado del ordenador, por supuesto, en este caso , las teclas de flecha sirven para navegar por los botones.

Asignación de teclas de teclado numérico

Este es el mapping de teclas que he definido, se puede cambiar en el archivo de configuracion

viernes, 15 de octubre de 2010

Chequeo de puertos conectados a GPS

He subido aquí un pequeño programita para ver que puertos y que baudios valen, hay que descargar, descomprimir y ejecutar el scan.exe.
Tarda un ratillo ( 5 minutos en el mio) porque va uno a uno verificando si recibe datos NMEA.
A disfrutar

sábado, 2 de octubre de 2010

Fichero en Fileserver

http://www.fileserver.cc/ixgfx6mrv1t9.html

Si hay problemas con megaupload lo he dejado en fileserver

viernes, 1 de octubre de 2010

Video tutorial del software.



Pongo aquí un video tutorial que he grabado. No es de la última versión pero se le parece mucho.

Video desde la cabina


Este es el vídeo desde la cabina del tractor. He de decir que con anchos tan pequeños (2,54m) no es muy manejable el sistema.

Prueba de Campo



Esta es la foto del día de las pruebas.

Colocación del GPS



El Gps lo coloqué en la cabina en la parte frontal. El techo es de fibra por lo que lo lijé un poco para quitar el barro y pegué con loctite una arandela grande, así el Gps va sujeto a la arandela con su propio imán.

Llevo un alargador de cable USB de 1.8 metros, para no tener problemas de longitud de cable.