\chapter{Conclusiones y trabajos futuros}

En capítulos anteriores hemos descrito el problema que abordamos en
este proyecto, los objetivos iniciales, y la solución propuesta junto
con una serie de pruebas y datos que validan y caracterizan el
proyecto. En este capítulo expondremos las conclusiones obtenidas y
las posibles líneas por las que se puede continuar el trabajo aquí
realizado.


\section{Conclusiones}

Los objetivos marcados inicialmente para este proyecto fin de máster
implicaban la realización de un sistema de vídeo vigilancia
distribuido, multiplataforma, multilenguaje y accesible a través de
teléfonos móviles inteligentes. Para ello se han diseñado componentes
encargados de obtener el flujo de vídeo de las cámaras, realizar las
grabaciones, detectar movimiento y notificar alarmas. Además se han
empleado dispositivos móviles táctiles para realizar pruebas y recoger
la experiencia de uso del sistema.

La conclusión general es que hemos cumplido satisfactoriamente los
objetivos marcados en el capítulo 2. El sistema de vídeo vigilancia
distribuido funciona correctamente, realizando grabaciones periódicas
de las cámaras y generando alarmas cuando se detecta
movimiento. Además, se ha incorporado el teléfono móvil como un actor
importante en este sistema ya que es capaz de visualizar en tiempo
real el vídeo de las cámaras, listado de grabaciones y alarmas,
\emph{streaming} de las grabaciones y detección de caras en la imagen. Por
último, y no menos importante, hemos cumplido uno de los principales
objetivos que engloba a todo el proyecto, que es generar software y
tecnología libre (\emph{FLOSS}), que permite el aprovechamiento y
reutilización del código, compartir la información y favorecer la
investigación e innovación.

A continuación comentaremos en qué medida se han satisfecho los
sub-objetivos marcados en el capítulo 2.

\begin{itemize}

\item \emph{Sistema de grabaciones y alarmas:} En este primer
  sub-objetivo se proponía la realización de un sistema de grabaciones
  y alarmas que fuera robusto y fiable. El sistema
  debería contar con un gran detalle de configuración de grabaciones
  en cuanto a formato, resolución y \emph{framerate}. El sistema de
  alarmas, por su parte debe ser capaz de generar y tratar las alarmas
  correctamente y ofrecer mecanismos genéricos para integrar y aceptar
  diferentes generadores de alarmas.

  Hemos desarrollado tres componentes principales que se encargan del
  sistema de grabaciones (\emph{Surveillance, RecordingManager y
    Recorder}). El componente \emph{Recorder} es el encargado de
  realizar las grabaciones y permite una configuración detallada de
  cómo queremos el resultado de la grabación. Podemos escoger entre
  diferentes \emph{providers} (mplayer, mencoder, vlc), diferentes
  resoluciones (320x240, 640x480, ...), diferentes \emph{framerates}
  (25 fps) y podemos realizar las grabaciones en diferentes
  formatos de vídeos (\emph{mpeg},\emph{divx},\emph{ogg}).

  El componente \emph{RecordingManager} junto con el componente
  \emph{Recorder} se encargan de dar fiabilidad, robustez, coherencia
  e integración al sistema de grabaciones, tal como se cuenta en la
  sección \ref{subsec:recordingManager}. Gracias a los mecanismos y métodos
  asíncronos utilizados el sistema puede detectar qué grabaciones se
  han realizado correctamente y cuáles no, dando en todo momento una
  información fiable y válida.

  El subsistema de alarmas es capaz de generar alarmas y grabaciones
  cuando detecta movimiento en alguna de las cámaras del
  sistema. Además, gracias al diseño e interfaz que se ha realizado en
  la parte del componente \emph{Surveillance} (sección
  \ref{subsec:surveillance}) es fácil añadir numerosos generadores
  de alarmas al sistema.


\item \emph{Sistema distribuido:} En este segundo sub-objetivo se
  describía que el sistema resultante debería ejecutar de una manera
  distribuida, en redes heterogéneas, que fuera multiplataforma y
  multi-lenguaje. Gracias a esto, podríamos cumplir otro de los
  objetivos del proyecto que es conseguir la mayor interoperabilidad
  posible con diferente \emph{hardware} y sistemas.

  Gracias a la utilización de la plataforma software \emph{JDEROBOT
    5.0} que está basada en el \emph{framework} distribuido \emph{ICE} hemos
  podido desarrollar un sistema distribuido, donde cada componente
  puede ejecutar en una máquina distinta. Además, gracias a la
  utilización de este software, nuestro sistema es multiplataforma y
  multilenguaje. La mejor prueba de ello, es que parte del sistema
  ejecuta en una arquitectura \emph{i386} y está programado en
  \emph{C++} (sección \ref{sec:grabaciones}) y la otra parte ejecuta
  en un arquitectura \emph{MIPS} y está programado en \emph{JAVA}
  (sección \ref{sec:movil}).

  Constancia de ello son los escenarios que hemos descrito a lo largo del
  capítulo 4 donde varios componentes situados en otras máquinas
  acceden simultáneamente al interfaz del \emph{CameraServer}
  (figura~\ref{fig:dise-cameraserver}), o varios \emph{Recorder}
  alojados en máquinas distintas, interactúan con el
  \emph{RecordingManager} para realizar las grabaciones
  (figura~\ref{fig:dise-recorder}). Finalmente describimos la
  interacción del componente \emph{MobileSecurity} (alojado en un
  dispositivo móvil) con los componentes \emph{CameraServer} y
  \emph{RecordingManager} (figura~\ref{fig:dise-mobilesecurity}).



\item \emph{Integración del smartphone:} El último de los
  sub-objetivos que planteamos en el capítulo 2 trata de integrar en
  el sistema un dispositivo móvil inteligente o \emph{smartphone}. El
  uso de este dispositivo provee de funcionalidades avanzadas como el
  \emph{streaming} de vídeos en tiempo real, gestión y visualización
  de grabaciones y alarmas, e incorpora cierto análisis de
  imagen. Gracias a esta integración, el usuario a través del
  dispositivo móvil puede visualizar las cámaras y lo que sucede en el
  sistema instalado en su casa aunque esté de vacaciones a miles de
  kilómetros.

  Se ha desarrollado un componente del sistema para el dispositivo
  móvil inteligente (\emph{MobileSecurity}), que en este proyecto se
  trata de un teléfono basado en el sistema operativo
  \emph{Android}. Hemos seleccionado un teléfono potente, con pantalla
  táctil y de alta resolución para una buena experiencia de usuario al
  interactuar con el sistema (sección \ref{subsec:telefono-movil}).

  El componente desarrollado ofrece la posibilidad de ver en streaming
  el vídeo real de la cámara (sección \ref{subsec:streaming}) y el
  vídeo resultado de las grabaciones (sección
  \ref{subsec:grabaciones}). Ambos pueden visualizarse sin saltos ni
  cortes en el teléfono, con una resolución de 320x240 @25fps. Además,
  desde el dispositivo móvil se tiene acceso a las alarmas y
  grabaciones que ha realizado el sistema, pudiendo acceder a sus
  características, detalles y vídeo.

  Por último, se añadió una funcionalidad \emph{activa} en el
  dispositivo móvil para demostrar que es mucho más que un mero visor
  del sistema y que es capaz de analizar en tiempo real la imagen
  proveniente de las cámaras y detectar la existencia de caras para
  posteriormente generar una alarma en el sistema (sección
  \ref{subsec:face-detect}).

\end {itemize}


El sistema ha sido validado y probado en entornos reales de oficina
con un par de cámaras y un dispositivo móvil asociado al
sistema. Estas pruebas han sido de gran ayuda para caracterizar el
sistema y concluir cuál es la mejor configuración del sistema.

Además de los objetivos, se han cumplido los requisitos establecidos
en la sección \ref{sec:requisitos}:

\begin{itemize}

\item El sistema debía componerse de ordenadores, cámaras y teléfonos
  móviles. Por lo que se han utilizado cámaras USB e inalámbricas para
  la obtención de las imágenes, ordenadores como la placa VIA para el
  procesamiento y alojamiento de los componentes, y por último un
  dispositivo móvil de última generación con pantalla táctil y basado
  en Android.

\item El sistema debía ser estable, eficaz y robusto sobre todo en el
  aspecto de las grabaciones. Para ello, hemos utilizado software muy
  probado y con gran valía en la comunidad de software libre como son
  mencoder, ffmpeg y vlc. Además, hemos realizado pruebas donde el
  sistema ha estado más de 5 días grabando con este sistema y sin
  producirse ningún fallo grave.

\item El sistema posee un bajo consumo energético ya que utiliza
  dispositivos de bajo consumo como el ordenador \emph{Pico-ITX}
  (sección \ref{subsec:picoitx}) que se alimenta con únicamente
  12v. Además tanto este hardware como el de las cámaras no resulta
  costoso, todo el hardware podemos tenerlo por menos de 500\euro.

\item El diseño e implementación (sección \ref{sec:diseno-global}) se
  han concebido siguiendo la arquitectura de \emph{JDEROBOT}. De este
  modo el software se ha implementado siguiendo la arquitectura de
  componentes que puede ejecutar en distintas máquinas y
  arquitecturas.

\item El sistema funciona correctamente bajo la plataforma
  (\emph{GNU/Linux}), concretamente una \emph{Debian} ejecutando en un
  kernel \emph{2.6.30-486}. La segunda parte del sistema que ejecuta
  en el entorno móvil, lo hace sobre el sistema operativo
  \emph{Android 2.1}.

\item Por último y no menos importante, la licencia con la que se
  libera el código realizado en este proyecto es \emph{GPLv3} y la
  licencia con la que se libera toda la documentación, incluida esta
  memoria, es \emph{Creative Commons Share-Alike 3.0}.

\end{itemize}

Gracias a la metodología utilizada por el software libre (compartir,
reutilizar,...) hemos conseguido una solución fiable, robusta, que se
apoya en herramientas realizadas por expertos y que nos proveen de
actualizaciones y mejoras de las mismas. Todo ello, nos da la
posibilidad de dedicar los esfuerzos en las partes más novedosas de
nuestro proyecto, llegando de esta manera a una solución mejor y
descartando la idea de \emph{reinventar la rueda}.


Este proyecto de ingeniería tiene un matiz de investigación e
integración. Al principio se tenía el problema de un contexto
bastante abierto del que no se sabía hasta dónde íbamos a llegar, o
cuán positivos iban a ser los resultados obtenidos. Por ello ha sido
muy importante la metodología seleccionada, que nos ha provisto de
prototipos preliminares donde podíamos ir evaluando la funcionalidad
con diferentes configuraciones. Esto, unido a un plan de pruebas nos
ha llevado a la configuración idónea del sistema.


\section{Trabajos futuros}

Como es normal, un proyecto de investigación de este tipo tiene que
finalizar en un momento determinado y deja abiertas ciertas líneas por
donde seguir investigando y desarrollando. A continuación se comentan
alguna de ellas.

Uno de los caminos más interesantes por los que podríamos continuar
este trabajo es incorporar cámaras diferentes, como por ejemplo
firewire, cámaras ip, infra-rojas o térmicas. Con cámaras de estas
características podemos analizar y vigilar entornos con poca o nada
luminosidad, o detectar movimiento y presencia por calor. De esta
forma podríamos monitorizar escenarios durante la noche.

Un paso más en cuanto a la tecnología móvil, sería utilizar la cámara
del propio dispositivo móvil, como cámara integrada en el sistema de
vídeo-vigilancia. De esta forma, tendríamos una cámara
ubicua-distribuida que entraría en juego para poder realizar
grabaciones o análisis de imagen allá donde se encuentre.

Podríamos integrar el número de generadores de alarmas en el sistema y
así poder detectar más situaciones de interés. Por ejemplo, alarmas sobre
conteo de personas, equipaje olvidado en un escenario concreto, coche
en dirección contraria en una autopista, persona caída en vías o en
paso de cebra.


