lunes, 14 de marzo de 2011

Últimos avances

Después de haber pasado la época de exámenes, de nuevo he conseguido poder avanzar en el PFC.
En esta nueva versión hay múltiples cambios, mejoras y componentes nuevos, que describiré a continuación.
Resumiendo, he desarrollado los siguientes puntos:

  1. Mapa aparte
  2. Controles de reproducción centralizado para todas las pestañas.
  3. Colores en las gráficas VRA
  4. Cálculo del pequeño radio de distancia que hay desde el centro de la circunferencia formada por los sensores de distancia a cualquiera de los sensores.
  5. Corregir parpadeos en los gráficos.

Mapa aparte
---------------
Hay una nueva pestaña en la que se dibuja el mapa del circuito a la vez que se ejecuta la carrera.
Para pintarlo me baso en la estructura Entorno. Esta estructura contiene una cadena que define el tipo de entorno reconocido, así como el radio de curvatura en caso de ser una curva el entorno reconocido ( -1 si no es curva o es desconocido), y también contiene una estructura con el ciclo completo.
A partir de esta información se puede ir reconstruyendo una aproximación al circuito.
Tengo el problema de que al solo estar almacenando cambios de entorno, no sé con precisión cómo de larga tengo que representar por ejemplo una recta. En una siguiente versión este punto se mejorará. Quizá una posible solución sea almacenar los entornos de cada instante, y no solo en los instantes de cambio de entorno.

Controles de reproducción
----------------
Se ha independizado la barra de controles del resto de pestañas. Ahora aparece debajo de todos los paneles de pestañas, y cuándo se produce un evento relacionado con esta barra quedan afectados los paneles de gráficas VRA y el panel de telemetría.

Colores en las gráficas VRA
------------------
Una novedad importante es la mejora de la pestaña "gráficas". En esta pestaña se representan la velocidad, las revoluciones por minuto y la aceleración (de ahí el nombre VRA, para abreviar). Para cada vuelta, se representan las gráficas con un color distintos y cada vez que comienza una nueva vuelta se empieza a pintar desde el extremo izquierdo de cada gráfica. Una vez que ha terminado la ejecución, se puede seleccionar el instante deseado desde la barra de reproducción, señalándose en cada gráfica VRA el instante mediante una línea vertical negra. Esto último ha sido bastante costoso de implementar, he tenido que usar 2 búferes de imágenes, con la idea de que en el momento previo a pintar la línea vertical de marcado, se pintase de nuevo las gráficas con el estado que tenían al finalizar la ejecución, apareciendo así la ilusión de que se mueven las líneas verticales al mover el control de reproducción.
También se han incluído en esta pestaña varias cajas de texto, que muestran la distancia desde la salida, la velocidad , las revoluciones por minuto y la aceleración para un instante seleccionado.

Cálculo del radio de la circunferencia formada por los sensores de distancia
--------------------------------------------------------------------------
Esta parte está comentada en la entrada anterior.


Corrección de parpadeos en los gráficos
---------------------------------------
Para evitar que las actualizaciones de los gráficos interfieran entre las distintas pestañas solapándose, se ha empleado fundamentalmente el método setVisible(boolean v) . Al cambiar de pestaña se activan/desactivan los paneles adecuados.

Otras mejoras
-------------------
Otra mejora que he desarrollado ha sido la refactorización del código fuente, se han creado las clases MemGraficas y GraficasVRA.
La clase MemGraficas se ha utilizado para tener un histórico sobre qué coordenada x, velocidad, rpm, aceleración y nº de vuelta corresponde a cada tick (muestreo). Esta estructura es de gran utilidad cuándo hay que marcar instantes en las gráficas.

La clase GraficasVRA la diseñé para equilibrar la cohesión y el acoplamiento de la clase GUI_Telemetria, que ya estaba teniendo demasiada responsabilidad y se estaba dificultando la comprensión del código. Esta nueva clase tiene la responsabilidad de todas las operaciones de refresco, pintar un nuevo instante, representación de marcado, etc de las gráficas VRA.

A continuación incluyo una captura de la versión actual:


Un saludo y hasta la próxima actualización.

No hay comentarios:

Publicar un comentario