Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Monitoreo Empresarial Con Camaras IP y Linux
Monitoreo Empresarial Con Camaras IP y Linux
Preparada en el
Laboratorio de Tcnicas y Aplicaciones para la Multimedia Distribuida
Para la obtencin del ttulo de
LICENCIADO EN COMPUTACIN
De la Universidad Autnoma Metropolitana Unidad Iztapalapa
Por
Asesor:
Octubre de 2004
Agradecimientos
Escribir estas lneas me tom un par de minutos, leerlas toma algunos segundos. Esta
brevedad no refleja el tiempo que fue necesario para dar vida a la oportunidad de
escribirlas.
Agradezco a POE la inspiracin que me ha dado su msica desde el 2000, y a las
personas que sin saberlo ayudaron a que este documento existiera, sin olvidar a las que
voluntariamente lo hicieron. Gracias.
Moiss
Estas breves letras son un tributo a mis padres, a mi madre por creer en mi y no
escuchar a los que le dijeron que no terminara la secundaria y a mi padre que me
ense que siempre hay un camino para llegar a lo deseado.
Gracias a ti mis expectativas van mas all de las fronteras y mi futuro me agrada cada
da ms, Gracias Mam.
No me rindo porque t no lo hiciste y lograste tu independencia, Gracias Pap.
Y algo extra.
Gracias Moiss por ensearme que un compaero de tesis puede convertirse en un
amigo de por vida, eres listo y vales mas de lo que crees. Se que tendrs una gran vida y
que la mereces. Lo aprend trabajando en esta tesis. Gracias Amigo.
Y gracias Ana por compartir y apoyarme en estos das en los que te he necesitado. No
sabes lo importante que fue Gracias Amor.
Andrs
Andrs y Moiss
Indice
Captulo 1.
Introduccin General
1.1 Introduccin
.
.
1.2 Objetivos del proyecto
.
.
1.3 Caractersticas de las Cmaras de red .
.
1.4 Caractersticas de la Cmara Axis 2100
.
1.5 Software para realizar aplicaciones de Telemonitoreo
1.6 JAVA vs C/C++
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
4
7
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
12
12
13
18
Captulo 2
El Sistema de Telemonitoreo
Captulo 3
Despliegue de video por medio de Cambozola
3.1 Introduccin
.
3.2 Problemtica
.
3.3 Solucin propuesta
.
3.4 Implementacin de la solucin propuesta
3.5 Conclusiones
.
.
.
.
.
.
.
.
.
.
.
Captulo 4
Soporte para el manejo de planos arquitectnicos: imgenes vectoriales
4.1 Introduccin
.
4.2 Problemtica
.
4.3 Solucin propuesta
.
4.4 Implementacin de la solucin propuesta
4.5 Conclusiones
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
19
20
24
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25
25
26
26
26
27
27
30
31
Captulo 5
Protocolo para la distribucin de video
5.1 Introduccin
.
.
5.2 Problemtica
.
.
5.3 Solucin propuesta
.
.
5.3.1 Definicin del protocolo de transmisin
.
5.3.2 Transferencia de una imagen fija
.
5.3.3 Transmisin de un conjunto de imgenes fijas
5.4 Implementacin de la solucin propuesta
.
5.5 Mejoras a la aplicacin
.
.
5.6 Conclusiones
.
.
Captulo 6
Conclusiones Generales y comentarios
6.1 Conclusiones Generales
6.2 Comentarios
.
.
.
.
.
.
.
.
.
.
.
.
32
32
Glosario
Bibliografa
Anexos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
34
35
36
Captulo 1
Introduccin General
1.1 Introduccin
El telemonitoreo es un rea con muchas aplicaciones tanto en las actividades
cotidianas como para el control de procesos industriales, comnmente se utilizan dispositivos
analgicos con capacidades limitadas. Las aplicaciones de sistemas digitales IP para el
telemonitoreo abre un nmero de posibilidades tales como: monitoreo remoto sin limitaciones
a nivel planetario, bsqueda de imgenes y aprovechamiento de los dispositivos de
almacenamiento.
En este documento se explica el desarrollo de elementos que van encaminados a formar una
aplicacin para telemonitoreo completa. Se plantea la problemtica que presentan, la solucin
propuesta, su implementacin y finalmente exponemos nuestras conclusiones y comentarios
acerca de ese elemento y la informacin relacionada que encontramos en el proceso de
realizar esa tarea.
Caractersticas Generales:
o Integra un servidor Web (con soporte para PHP3) y una interfaz de red.
o Utiliza como sistema operativo embedded Linux 2.0.33
o Soporta los protocolos TCP/IP, HTTP, FTP, SMTP, ARP, BOOTP, PPP, CHAP, PAP y DHCP.
Caractersticas de la Cmara:
o Cmara digital con color de 24 bits
Sensor de imagen
o ICX098AK Sony CCD con escaneo Progresivo RGB de de pulgada
o HxV: 659x494.
o Resolucin: 640x480 (pxeles)
Exposicin
o
o
o
o
Compensacin de luz
Control de ganancia automtico (AGC)
Balance de blanco automtico y visualizacin previa a la seleccin
Obturador electrnico: 1/30s - 1/30.000s (con adaptacin automtica)
Sensibilidad
o Iluminacin mxima: 10.000 lux
Lente:
o Foco 0,5 mm a infinito
o Lente estndar de 4,0 mm reemplazable con formato CS ( equivalente a una lente de una
cmara estndar de 35 mm con apertura de F2 . Es opcional una lente de 2,6 mm.)
Caractersticas del Hardware:
o
o
o
o
Alimentacin:
o Toma exterior de alimentacin 12V AC . Consumo mximo 7W.
Entorno operativo:
o Slo para instalaciones en interiores.
o Temperatura: 5- 40 C
o Humedad: 20-80%, no condensada.
Dimensiones y peso:
o
o
o
o
Alto: 4,1 cm
Ancho: 10,2 cm
Fondo: 14,7 cm
Peso: 0,24 kg
Conexiones:
o Cable par trenzado RJ45, conexin de red Ethernet 10/100 Mbit.
o Conexin mdem a travs del puerto RS-232, para uso dial- in o dial-out.
o Conector entrada/salida para activar la cmara en eventos externos.
Imgenes:
o
o
o
o
o
Hasta 10 imgenes/seg.
Imgenes fijas JPEG y motion-JPEG.
Compresin de imgenes a alta velocidad mediante hardware
Disponibles en 5 niveles de compresin.
Control de ancho de banda,
Entradas/Salidas:
o Conector Input/Output para activar la cmara con eventos externos
o Almacenamiento de imgenes en modo remoto va e- mail y FTP
Los componentes de la cmara capturan la imagen, que puede ser descrita como luz con
diferentes longitudes de onda, y la transforma en seales elctricas. Estas seales son
transformadas a seales digitales y transfe ridas a las funciones que comprimen la imagen y la
envan a la red.
Cabe destacar que la cmara de red Axis 2100 utiliza el chip dedicado a la compresin de
imgenes JPEG ARTPEC-1, de esta manera no interrumpe al procesador en el proceso de
compresin, con esto se utiliza la misma cantidad de tiempo para comprimir una imagen sin
importar que tan compleja es.
Captulo 2
El Sistema de Telemonitoreo
En esta ilustracin se aprecian las caractersticas del sistema, sus principales elementos son:
el conjunto de cmaras para vigilar el lugar, las cuales pueden monitorearse desde
cualquier punto de la red de rea local o bien en cualquier lugar del mundo mediante
la mayor red del mundo, Internet;
1.2 Caractersticas del Diseo Descendente para la Aplicacin del Sistema de Telemonitoreo.
Una buena manera de planear proyectos de software grandes es utilizar un diseo
descendente ( Top Down ), bajo este esquema de programacin cada tarea es descompuesta
en acciones ms simples para finalmente integrar los distintos mdulos en el proyecto final.
Bajo nuestro criterio, los mdulos en los que puede descomponerse esta aplicacin deben
atacar las siguientes tareas:
Captulo 3
Despliegue de video por medio de Cambozola
3.1 Introduccin
Cuando comenzamos a trabajar en esta rea del proyecto, tenamos como objetivo
continuar el trabajo hecho por un compaero cuyos esfuerzos estaban enfocados en la
realizacin de un applet, en Java, que mostrara una imagen proveniente de la cmara de red
Axis 2100 con la posibilidad de actualizarla. No utilizamos su investigacin porque
utilizamos una aproximacin distinta para atacar el problema de base, sin embargo, es
conveniente mencionar los problemas que se presentan bajo ese primer enfoque. l se
encontr con un problema: la direccin que utilizaba en el servidor http de la cmara para
recuperar una imagen le enviaba siempre la misma., es decir; tena un applet en Java que
mostraba siempre la misma imagen. Este problema se debe a que la direccin http en la
cmara ejecuta un script en CGI que se encarga de obtener una nueva imagen, este script no
se ejecutaba cuando el applet peda una nueva imagen, permitindole simplemente disfrutar
de una y solo una imagen digital.
Es posible utilizar una perspectiva diferente ya que la cmara Axis 2100 permite recuperar un
flujo de tipo MJPEG, esto es: Motion JPEG, imgenes JPEG consecutivas con marcadores
que indican dnde comienza y dnde termina cada una de ellas.
Es fcil imaginar las caractersticas de una aplicacin que pueda aprovechar un flujo de esta
naturaleza para recuperar las imgenes que contiene, podemos describir su funcionamiento
mediante el siguiente algoritmo:
El nivel de complejidad de una aplicacin como la que describimos en las lneas anteriores
radica principalmente en el uso eficiente del lenguaje de programacin que se elija para
desarrollarla.
10
Software Reutilizable
Por otra parte, existen muchos programas con una licencia del tipo GNU General
Public License, un licencia que permite, en pocas palabras, utilizar el software que se cobija
bajo ella, tomar partes de l, modificarlo e incluso redistribuirlo, siempre y cuando se
proporcione el cdigo fuente de todas las modificaciones realizadas para que otras personas
tengan las mismas facilidades que quienes lo utilizaron y / o modificaron; as como el respeto
de los autores originales.
La idea detrs de este tipo de licencias es precisamente ayudar a desarrolladores a
preocuparse en la problemtica principal de sus proyectos y no por los detalles bsicos que se
repiten en muchas otras aplicaciones; es decir, encaminarse hacia la creacin de chips de
software que puedan integrarse permitiendo avanzar en el desarrollo de un proyecto sin
detenerse a redescubrir el hilo negro ni resolver problemas ya resueltos de manera eficiente.
Cambozola v0.34
Cambozola v0.34, es un software con una licencia del tipo GNU, General Public
License. Su autor, Andy Wilcock, lo describe de la siguiente manera [13] :
Cambozola es un visor de flujos de imgenes como los producidos por webcams.
Netscape puede desplegarlos de manera correcta actualizando las imgenes como las
va recibiendo, pero algunos exploradores, como el Internet Explorer, no pueden
manejar este flujo y solo muestran la 1ra imagen. Cambozola es un ele mento para
utilizar en conjunci n con las pginas web, puede utilizarse en pginas para el
Internet Explorer as como para Nestcape. Tambin permite tener acceso a los flujos
desde la lnea de comando.
11
3.2 Problemtica
Construir una aplicacin en Java para mostrar un flujo de video proveniente de una cmara de
red.
12
Accesories
Contiene el cdigo fuente de los accesorios que aparecen en la parte izquierda de la
ventana as como una imagen asociada a cada una de ellas.
Server
Contiene el cdigo fuente de un servidor de prueba que enva repetidamente un
conjunto de imgenes que se encuentran en testImages.
Shared
Contiene el cdigo fuente de las clases compartidas por el servidor y el cliente de este
software.
13
Viewer.java
La clase principal que permite establecer una conexin con un flujo MJPEG y
desplegarlo en una ventana.
Estableciendo la conexin
Las clases que permiten realizar la funcin principal de este software son las siguientes:
Viewer.java
StreamSplit.java
CamStream.java
El siguiente diagrama indica la manera en que los objetos de estas clases interactan.
14
b ) Realizar un proyecto en JBuilder 8 Personal Edition, que integre las clases de cambozola
v0.34 tiles para satisfacer el problema planteado.
JBuilder 8 Personal Edition proporciona una interfaz grfica que facilita la elaboracin y
control de proyectos realizados en Java, decidimos trabajar con esta versin porque es
gratuita, de esta manera contamos con las funcionalidades limitadas de un software legal.
Una vez entendido el funcionamiento de Cambozola, identificamos las modificaciones que
debamos realizar sobre la clase que realiza la conexin con el flujo MJPEG y lo despliega en
pantalla, Viewer.java, estas fueron:
-
15
Velocidad
Le toma a la aplicacin algunos segundos establecer la conexin con el flujo, una vez
realizada esta operacin pueden monitorearse ms cmaras que proporcionen un flujo de
imgenes MJPEG. Es ta aplicacin se prob sobre una conexin a 56KB y sobre la conexin
del laboratorio de Tcnicas y Aplicaciones para la Multimedia Distribuida, a manera
cualitativa podemos mencionar que la diferencia de velocidad es bastante notoria, mientras
que en una conexin casera de 56 KB las cmaras se refrescan en intervalos de tiempo ms
largo, una conexin ms rpida permite un monitoreo ms cercano al tiempo real.
16
17
3.5 Conclusiones
Sobre la planeacin y desarrollo
Ahora que nos encontramos redactando las tareas que realizamos en este proyecto, nos
damos cuenta que el tiempo utilizado para desarrollar la aplicacin que se describe en este
captulo fue excesivo. La razn de la divergencia entre el tiempo utilizado para la planeacin desarrollo y el tiempo, que ahora con la experiencia que no s dej el proyecto estimamos
necesario, se debe a los conocimientos mnimos que tenamos respecto a cmaras de red, al
lenguaje de programacin Java, al funcionamiento del esquema cliente - servidor y al formato
MJPEG.
Esta ignorancia, hasta entonces no culpable, tuvo que desaparecer para poder tener xito en el
objetivo de esta parte del proyecto de investigacin.
Sobre software libre y deteccin de movimiento
El software libre proporciona herramientas valiosas para el desarrollo, no solo rpido,
sino eficiente de proyectos, esta posibilidad de encontrar e integrar elementos existentes y
necesarios para problemticas nuevas permite que la humanidad avance en conjunto, ya que
ante nuestros conocimientos limitados sobre los temas de la naturaleza nuestra nica
posibilidad de tomar un poco de ella y obtener algo para beneficio general es brindarle un
golpe colectivo gracias a las ideas que algunos visionarios tienen..
Las cmaras de red integran aplicaciones que permiten distintas caractersticas de
administracin, sin embargo existen algunas otras aplicaciones desarrolladas por terceros que
extienden las funcionalidades que una cmara de este tipo ofrece. Los ejemplos que
conocemos son Cambozola [13] y Video Sensor 1.22 [15] [16], el primero ya lo describimos
en este captulo, el segundo ofrece la posibilidad de realizar deteccin de movimiento,
utilizando los recursos del equipo del usuario que accede a la pgina http de la cmara. Esta
aplicacin es un primer paso en la incorporacin de deteccin de movimiento para la
aplicacin encargada de la gestin de cmaras de red.
18
Captulo 4
Soporte para el manejo de planos arquitectnicos: imgenes vectoriales
4.1 Introduccin
Una de las funcionalidades que tendr el gestor de cmaras de red es poder ubicar
stas en un mapa, ya sea de un estadio, de un hipdromo, de un edificio o de una alberca.
Esta caracterstica permitir acceder a las cmaras de manera rpida mientras se est
consciente de su ubicacin en el entorno que se vigila.
El formato WMF (Windows Meta File) es un formato vectorial de imgenes creado por
Microsoft para ser utilizado en las plataformas Windows. Se diferencia de otros formatos de
imgenes como el JPEG porque cada elemento en la image n es independiente de la imagen
misma, vista como un solo elemento, permite adems la posibilidad de modificar su tamao
sin perdida de definicin y por lo regular el espacio que utiliza en disco es una fraccin del
espacio ocupado por la misma imagen en un formato no vectorial. Este formato de archivos se
utiliza por lo regular en clipart y logos, es claro que este formato no puede utilizarse para
fotos realistas con muchos detalles [12].
En relacin al gestor de cmaras, utilizar el formato vectorial WMF para representar los
mapas permite trabajar con archivos de tamao optimizado y poder realizar zoom in / out
sobre la imagen sin perder calidad.
Una alternativa a las imgenes WMF es el formato SVG (Scalable Vector Graphics) [14].
SVG es un lenguaje para describir imgenes en dos dimensiones en el formato XML, fue
creado por el World Wide Web Consortium (W3C), la industria sin fines de lucro con
especificaciones pblicas que creo HTML y XML. Ms de 20 organizaciones han particiado
en la definicin de SVG, algunos ejemplos son : Sun Microsystems, Adobe, Apple, IBM, y
Kodak. Este formato trabaja con la tecnologa java y sus especificaciones son pblicas.
4.2 Problemtica
Desarrollar una aplicacin que permita:
a) Mostrar imgenes vectoriales del formato WMF
b) Mostrar botones con posiciones especficas
4.3 Solucin propuesta
a) Mostrar imgenes vectoriales del formato WMF
Hay 2 opciones, la primera es desarrollar un visor para este tipo de imgenes, una tarea que
exige un tiempo considerable, pues requiere estudiar y analizar la especificacin del formato
as como de un conocimiento en el lenguaje de programacin bastante slido para que puedan
manipularse archivos a nivel de bytes con seguridad; la segunda opcin es utilizar visores de
licencia pblica
19
Decidimos utilizar la 2da aproximacin porque el tiempo con el que contamos es limitado,
adems de que nos permite dar una idea de la manera en que funcionar esta caracterstica en
el gestor de cmaras.
b) Mostrar botones con posiciones especficas
Utilizaremos un archivo de texto que contendr la ubicacin de los botones (que representan a
las cmaras), la ubicacin se refiere a coordenadas dentro de una ventana, en esta
aproximacin los botones son independientes de la imagen que se utilizar como mapa.
Los archivos que permiten desplegar una imagen wmf en una ventana son WmfDecoder.java
y WmfView.java. La clase WmfView tiene proporciona el siguiente mtodo
public Image CreateWmfDecoder(String filename)
{
Image image;
try
{
WmfDecoder WDec=new WmfDecoder(new FileInputStream(filename));
image = createImage(WDec);
WDec=null;
}
catch (Exception ex)
{
ex.printStackTrace();
return null;
}
return image;
}
el cual recibe como argumento el nombre de un archivo wmf, instancia un objeto de tipo
WmfDecoder y crea una imagen a partir de l.
20
La clase WmfDecoder contiene los marcadores y elementos propios del formato wmf para
poder recuperar una imagen a partir de la informacin contenida en una imagen con este
formato.
Utilizando solo los elementos necesarios, el Visor de Imgenes WMF tiene los siguientes
archivos:
El eve nto define un objeto de tipo Image y uno de tipo WmfView, despus de verificar que el
archivo existe instancia el objeto de tipo WmfView con el nombre del archivo, ejecuta el
mtodo .CreateWmfDecoder de este objeto para obtener la imagen que finalmente se utiliza
21
22
El 1er elemento indica el nmero de botones, y el resto indica la posicin de cada uno de
ellos, es decir; se obtiene el equivalente en cdigo ASCII y se le suma 49. El archivo de
configuracin se utiliza de esta manera porque estaba en fase de desarrollo, lamentablemente
no pudimos continuar mejorando su diseo porque resulto ms importante desarrollar el
servidor-cliente que se describe en el siguiente captulo.
23
4.5 Conclusiones
En esta parte de la tesis desarrollamos con xito una aplicacin que permite visualizar
imgenes WMF. Lamentablemente el visor en el que se basa la aplicacin sufre en desempeo
y veracidad al trabajar con imgenes formadas por muchos elementos, en los archivos de
ejemplo proporcionados con este documento, puede apreciarse que en algunos casos los
colores se ven alterados y en el peor de los casos hay elementos que se unen a otros mediante
trayectorias no planteadas originalmente. El archivo de prueba final, el mapa de la alberca
olmpica, es un claro ejemplo de las deficiencias del visor.
24
Captulo 5
Protocolo pa ra la distribucin de video
5.1 Introduccin
Las capacidades de cmputo de la cmara de red Axis 2100 hacen posible ejecutar
programas en ella, de esta manera no se utiliza tiempo del procesador en el cliente. La
aplicacin que se desea desarrollar para esta cmara es una que permita realizar deteccin de
movimiento en las imgenes que observa, de esta manera solo enva al cliente la informacin
relevante al entorno que se vigila, pues almacenar imgenes obtenidas en intervalos fijos
requieren de una gran cantidad de espacio, an siendo imgenes digitales. Si bien el
almacenamiento digital requiere menos espacio fsico que el almacenamiento analgico es
necesario hacerlo de manera inteligente, si se almacenan solo las imgenes de un lugar en las
que hubo movimiento, se ahorran recursos y tiempo.
El primer paso para desarrollar esta aplicacin es poder obtener 2 imgenes en cualquier
momento. La aplicacin servidor resuelve este punto al crear un directorio temporal en donde
se almacena la ltima imagen enviada a un cliente, as se tiene una imagen de referencia a
comparar con la nueva imagen que se pida. Pero las aplicaciones proporcionadas por el
fabricante permiten obtener imgenes de la cmara, por qu resulta importante hacer una
aplicacin para este mismo propsito? La respuesta es clara, para disponer de imgenes en la
cmara que puedan compararse cuando la parte de deteccin de movimiento est completa y
para tener un control sobre quienes acceden a la cmara al utilizar un puerto especfico y una
validacin diferente a la proporcionada por el fabricante.
5.2 Problemtica
Realizar una aplicacin cliente servidor de tal manera que el servidor pueda
ejecutarse en la cmara de red Axis 2100. El servidor debe implementar un mtodo para
validar al usuario que se conecta y utilizar un protocolo de transferencia de imgenes
apropiado.
25
4.2.1
26
4.2.1
El cliente esta diseado para solicitar una imagen, si se desea solicitar ms el cliente
debe ejecutarse muchas veces. Un visor para este servidor deber pasar por todo el
protocolo cuando necesite la siguiente imagen.
27
Sobre el cliente
La implementacin del cliente se realizo partiendo de un esquema cliente servidor bastante
simple hasta cumplir con las caractersticas descritas en la solucin propuesta. A continuacin
se muestra el cdigo fuente de cliente.c
#include "net.c"
//en net.c se especifica el tamao de los paquetes en 10KB
#define DIRECCION 1
#define PUERTO
2
struct sockaddr_in serv;
int fd,len,i=0;
FILE *f2=NULL;
main (int argc, char *argv [])
{
char buffer [ETHSIZE]; //El buffer para almacenar la imagen
if (argc != 3) {
printf ("%s <IP address> <port>\n", argv [0]);
exit (1);
}
De esta manera redirige a un archivo los mensajes que recibe. Este modo de funcionamiento
permite ser ms eficiente al momento de almacenar imgenes consecutivas pues puede
utilizarse un script que genere nombres consecutivos, basados en un contador de imagen o en
el reloj. Asi el cliente solo se encarga de realizar su tarea, pedir una imagen.
28
Sobre el servidor
Cuenta con 2 archivos de conviguracion iplist y task.list. El primero tiene el siguiente aspecto:
255.255.255.255
148.206.49.157
127.0.0.1
192.168.0.5
148.206.49.71
148.206.49.153
192.168.0.3
255.255.255.255
El segundo se necesita para poder ejecutar el servidor al iniciar la cmara, debe copiarse en el
directorio /etc en la camara. A continuacin se muestra su contenido:
once immune % /bin/bufferd : -start -buffername snap -snapshot -format
Foto.jpg -uri ftp://axis-cgi/jpg/640x480.jpg;
once % /mnt/flash/servidor;
29
while(f1==NULL)
f1 = fopen("/tmp/snap/Foto.jpg","r");
while((j=fgetc(f1))!=EOF){
buffer[i]=j;i++;atam++;
if(i==ETHSIZE){
buffer[ETHSIZE]='\0';
send_UDP (fd, buffer, ETHSIZE, &cli);
i=0;
}
}
buffer[i]='\0';
send_UDP (fd, buffer, i, &cli);
printf("\nEnviado: %d\n",atam);
ipvalida=0;
}
////En caso de tener una IP no valida, se envia el mensaje de error.
else{
printf("\n[Conexion terminada]\n");
send_UDP (fd, "Error", 5 , &cli);
}
rewind(lista);
fclose(f1);
f1=NULL;
j=0;i=0;atam=0;
}
return 0;
}
El tamao de los paquetes se fijo en 10KB ya que con tamaos ms grandes la cmara
presentaba un comportamiento inestable.
30
o las imgenes son nicas para cada peticin, debido a que se solicitan imgenes en
tiempos diferentes.
Podran considerarse:
Enviar cada paquete a todos los clientes en una lista de usuarios conectados.
Es claro que se esta restringido a las familias de protocolos soportados por la cmara; es
decir, utilizar protocolos que distribuyan el flujo como IGMP no es posible.
5.6 Conclusiones
Esta parte del proyecto de investigacin fue la ms interesante porque involucr un nivel
terico que exige una buena asimilacin del material proporcionado por otros cursos. El paso
de la solucin propuesta a la implementacin requiri un tiempo considerable pues no hay
mucha informacin relacionada a aplicaciones sobre la cmara, por lo que era nuestra
responsabilidad resolver los problemas que se nos presentaban. Este servidor permite
controlar los accesos a la cmara, pero es importante considerar que tanto vale la pena
dedicarle tiempo a tareas que en modelos ms recientes ya estn integradas.
31
Captulo 6
Conclusiones Generales y comentarios
6.1 Conclusiones Generales
A lo largo de este proyecto conocimos diferentes elementos que participan en una
aplicacin para telemonitoreo, los elementos que comenzamos a desarrollar en este
documento pueden ser continuados para aumentar su funcionalidad y ayudar a dar vida a la
aplicacin que se contempl cuando comenzamos a trabajar en este proyecto. La parte
relacionada con las aplicaciones en Java nos proporcion conocimientos sobre este lenguaje
de programacin, nos dio una idea de las utilidades que se le da a las imgenes en formatos
vectoriales, as como una visin de las alternativas no propietarias. Sin duda, la parte ms
interesante de este proyecto fue lo relacionado a la definicin de un protocolo para transferir
imgenes, el cual se implementamos en la aplicacin cliente servidor que utilizamos en el
captulo 4. Esta parte del proyecto nos ayud a consolidar nuestras bases en protocolos de
internet (una palabra un tanto pretenciosa) , utilizamos programacin en sockets y conocimos
de qu manera funcionan, programa mos en el intrprete de lenguajes para linux (un lenguaje
de programacin de 4ta generacin), conocimos un poco sobre compiladores cruzados
(cross-compilers) que permiten crear ejecutables para distintas plataformas, y del manejo,
configuracin, desarrollo y ejecucin de aplicaciones en la cmara de red Axis 2100,
conocimiento que nos permiti redactar el documento Axis 2100 , una buena referencia que
esperamos sea de gran utilidad a alumnos y profesores que estn interesados en realizar
aplicaciones para esta cmara. Tal documento contiene toda la informacin que nos habra
permitido reducir el tiempo de desarrollo de este proyecto considerablemente.
El almacenamiento digital es un gran avance que sin duda adquirir ms seguidores a lo largo
de los aos hasta volverse parte imprescindible de la humanidad, las ventajas de este tipo de
almacenamiento sobre el analgico en el monitoreo de locaciones son muchas y es solo
cuestin de tiempo para que las empresas dedicadas a curir las necesidades de este tipo hagan
su transicin a los nuevos estndares mientras que se contina desarrollando nuevos que
permitan mejorar la transmisin, disminuir los requisitos de recursos de comunicacin y
hagan que el almacenamiento digital, las transmisiones multimedia, y funcionalidades extra
sean ms accesibles, eficientes y tiles.
6.2 Comentarios
Vale la pena desarrollar un software que permita detectar movimiento para la cmara
Axis 2100 cuando el modelo 210, 211 y 2120 ya lo incorporan? Es importante considerar qu
tan necesario es dedicarle esfuerzos a una tarea, tal vez podra obtenerse una mayor eficienc ia
al desarrollar una funcionalidad como esa, y es claro que tiene una gran importancia
acadmica pero desde el punto de vista del costo que se invierte en tiempo y esfuerzos vale
la pena? Creemos que los argumentos de las respuestas van encaminados en cierta manera a
las razones por las que se estn desarrollando chips de software, no tanto como para
ahorrarnos trabajo o darle la vuelta a un problema sino para continuar trabajos ya hechos
y no perder tiempo en rehacer algo ya estudiado.
32
Static Linking
Es necesario incluir las bibliotecas que necesitar un ejecutable al compilarlo para la cmara,
pues sta solo cuenta con bibliotecas optimizadas, as que el parmetro static es obligatorio
[20]. Esta explicacin tom tres lneas pero descubrir el uso de ese parmetro nos tom
alrededor de 1 semana, principalmente porque nuestra experiencia no era la suficiente para
darnos cuenta de la razn por la cual nuestros ejecutables no encontraban las bibliotecas que
requeran. El soporte tcnico de Axis nos menciono que no proporciona ayuda en el desarrollo
de aplicaciones llevadas a cabo por terceros (ver anexos), la solucin a este problema la
encontramos en una pagina de soporte de Axis en Europa donde una persona tubo el mismo
problema que nosotros, y al parecer en el 2002 el soporte tcnico aun daba esa clase de ayuda.
Ligar de manera esttica un programa con las bibliotecas que utiliza produce un ejecutable de
tamao obsceno (varios MB), el compilador cruzado de Axis liga ejecutables para la cmara
con bibliotecas optimizadas, de esta manera es posible desarrollar programas para ella dadas
sus limitaciones de almacenamiento.
devboard-R1_1_0.tgz
La distribucin del compilador para la cmara necesita un ; en el archivo boa_grammar.y en
la lnea 234, este error ya fue corregido en el cd que acompaa al manual de referencia Axis
2100.
33
Glosario
LAN
Local Area Network , Una red de rea local.
DSL
Digital Subscriber Line, se refiere a un conjunto de tecnologas similares
que permiten conexiones de alto rendimiento a travs de lneas telefnicas
convencionales para la transmisin de datos sin interrumpir el servicio
telefnico.
MODEM
Modulador-DEmodulador, es un dispositivo que transforma las seales
digitales de la computadora en seales analgicas para transmitirlas y
recibirlas mediante la lnea telefnica.
Embedded Linux.
Una distribucin de Linux que integra los elementos necesarios para
propsitos especficos, es decir; se toma una distribucin de Linux a la cual
se le retiran las partes que no se necesitan, de esta manera el usuario tiene
exactamente lo que requiere y nada ms. La cmara Axis 2100 utiliza
como sistema operativo un embedded Linux que puede actualizarse en la
memoria flash de 2MB integrada.
JPEG ARTPEC-1
Se utiliza compresin JPEG en las imgenes que genera la cmara Axis
2100. El chip de compresin desarrollado por Axis, ARTPEC 1 , Axis
Real Time Picture Encoder - 1 . Este chip permite 2 niveles de resoluci+on
y 5 niveles de compresin.
MJPEG
La abreviacin de Motion-JPEG, es un estndar de video creado por el
Joint Photographic Experts Group, la organizacin que creo el formato de
compresin JPEG. Utiliza compresin JPEG para cada imagen en el video.
WMF
Formato vectorial de imgenes creado por Microsoft.
34
Bibliografa
[1] Paul Dubois, Using csh & tcsh. OReilly & Associates, Inc, 1995
[2] Jay Arthur Lowell, Ted Burns, Unix Shell Programming. Whiley Computer Publishing, 1997
[3] Tonny Espesset, Kick ass Java programming. Coriolis Group Books, 1996
[4] Siever, Spainhour, Figgins, Hekman, Built-in csh and tcsh Commands (Linux in a Nutshell, 3rd Edition).
http://www.hk8.org/old_web/linux/lnut/ch08_09.htm , August, 2000
[5] Bill Rogers, Programming Language Generations. http://www.sxu.edu/~rogers/cs111/generations.html ,1999
[6] Evan Schaffer, Mike Wolf, The UNIX Shell As a Fourth Generation Language.
http://www.rdb.com/lib/4gl.pdf , Febrero, 2001
[7] Christian Korner, Identify Sony chips.
http://www.plasma-online.de/index.html?content=http%3A//www.plasmaonline.com/english/identify/picture/sony.html , 1999
[8] Jason Schumaker, Linux Journal: The Axis 2100 Network Camera [Review].
http://alllinuxdevices.com/news_story.php3?ltsn=2000-08-26-005-03-PS-HW , Agosto, 2000
[9] Cmaras de red Axis. http://www.axis.com.mx/productos/camaras/ , 2004
[10] Axis 2100. http://axis.com.mx/productos/camaras/2100.htm , 2004
[11] Network Camera benefits. http://www.axis.com/products/video/camera/benefits.htm , 2004
[12] Geoff Spencer, Imagenes WMF. http://www.shoal.net.au/~huntingcat/images.html , 2001
[13] Andy Wilcock, Cambozola Streaming Image Viewer
http://www.charliemouse.com/code/cambozola/index.html , 2000
[14] Chris Lilley, Scalable Vector Graphics (SVG) http://www.w3.org/Graphics/SVG/Overview.html , 2004
[15] Video Sensor 1.22, Sensores de movimiento por software para la cmara AXIS 2100
http://www.gipro.de/download/ , Marzo , 2003
[16] SeeTec Motion Detection Software. http://www.seetec.de/eng/eng/software_index.html , Marzo, 2004
[17] Comprar WMF2Viewer, http://shareit1.ele ment5.com/programs.html?productid=106153
[18] Albrecht Kleine, WmfView . http://www.sax.de/~adlibit/ , Julio , 2004
[19] Street Tech Glossary. http://www.streettech.com/glossary.html , 1999
[20] Jonas Holmberg, Static Linking. http://mhonarc.axis.se/dev-etrax/msg00990.html , Septiembre, 2001
35
Anexos
Asunto:
Moses/Andrew,
Apoligies for taking so long to reply. Unfortunately, I don't have a
AXIS 2100, just a pathetic $10 IBM webcam (I kid you not).
As for the proxy, I am able to use [all on one line]:
java -jar cambozola.jar
http://66.210.186.170/axis-cgi/mjpg/video.cgi?1054271499352
[- the image location from http://66.210.186.170/view/index.shtml ]
The same should work from the web browser/applet IF you use the prebuilt
jar file (as it is signed).
Hope that helps,
Andy.
On Thu, 2003-05-22 at 07:04, ----------- ----------- wrote:
> Dear Andrew,
>
> We apologize for our last mail, we hadn't tried enough and we hadn't
> read the manual. Finally we could make your viewer work but we are
> having some problems trying to access cameras outside of our local
> network, we can see the video stream in the internet explorer (eg.
> http://66.210.186.170/axis-cgi/axis-cgi/mjpg/video.cgi?resolution=320x240) but
when we try to access that URL with cambozola viewer we get a "connection error
timed out", We use a proxy server to connect to the outside, do we have to make
some modifications in order for cambozola to use the proxy server too?
>
>
> PS. We are still interested in buying some new or used axis 2100
>
>
>
>
>
>
>
>
>
36
Thankful in advance
Moses Marin
Andrew Sanz
Computer Science
"Casa abierta al tiempo"
UAM-I
<marin_r_us@hotmail.com>
Asunto:
Estimado Moiss:
Que tal. El firmware de la cmara Axis 2100 no tiene la opcin de deteccin de movimiento. Normalmente
se hace por medio de una aplicacin externa, o colocndole sensores fsicos. Hace poco un desarrollador
europeo saco una adicin para las cmaras que nos permiten tener esta opcin. No la hemos probado en
Mxico, pero en los laboratorios funcion. Puede descargarla de:
Sensores de movimiento por software para la cmara AXIS 2100 http://www.gipro.de/download/sensor119.zip
Para las cmaras 2100 y 2110 (llenar formulario) http://www.seetec.de/eng/homepage_products/link_download.html
Espero que le funcionen, pero Axis no se responsabiliza de ello ya que es una aplicacin desarrollada por
terceros. Gracias.
Saludos,
Juan David Luna Cruz
AXISNet, S.A. de C.V.
Soporte Tcnico
(+52) 52-73-84-74
Visite la pgina de Axis http://www.axis.com.mx en espaol.
-----Mensaje original----De: ----------- ----------- [mailto:marin_r_us@hotmail.com]
Enviado el: Jueves, 08 de Mayo de 2003 10:21 a.m.
Para: soporte@axis.com.mx
Asunto: Informes Axis 2100
Saludos ;
Estamos utilizando una camara axis 2100, y queremos incorporarle una aplicacion que detecte el movimiento, mi pregunta
es: Es posible agregarle est caracteristica a la camara mediante una actualizacion de su software interno, o esto debe
hacerse en la aplicacion final?
Atte.
Moiss Marin.
Andres Flores
Lic en Computacin
"Casa Abierta al Tiempo"
UAM Iztapalapa
37
Moiss despus de terminar sus estudios se volvi esclavo en la biblioteca de la UAM I, donde
voluntariamente acepto renunciar a sus fines de semana por una cantidad que se omite en este texto
por temor a su seguridad. Actualmente radica en la biblioteca donde se le puede encontrar de 9am a 9
pm de Lunes a Domingo. A veces visita a su madre.
Andrs, una vez concluida su tesis de licenciatura dedic su tiempo a terminar la licenciatura. = |
Ya con un nuevo corte de cabello para las ltimas sesiones de la tesis, decidi dejar crecer el vello en
otras reas cutneas para compensar la prdida. Actualmente radica en Villacoapa donde pasa la
mayor parte de su tiempo incrementando su ya en si gran coleccin de BangBus.
Ambos continan con buena salud, buen estado de nimo y aun gozan recreando las conversaciones de
cuando negociaron participar en este proyecto con el profesor Luis Martin.
38
Case Details
Product family
Product name
Problem area
Submittance Date
Camera Servers
Axis 2100
Question about configuration
2003-06-03
39
Case Details
Product family
Product name
Problem area
Submittance Date
Camera Servers
Axis 2100
General
2003-07-09
Case Details
Product family
Product name
Problem area
Submittance Date
40
Camera Servers
Axis 2100
Question about configuration
2003-10-03
Case Details
Product family
Product name
Problem area
Submittance Date
Camera Servers
AXIS 2100
General
2003-10-08
Case Details
Product family
Product name
Problem area
Submittance Date
Camera Servers
Axis 2100
General
2003-11-29
41
SOCKETS
o
Crear un socket
esto selecciona la fa milia de protocolo que deber emplearse, estas familias estn definidas
en sys/socket.h
En este programa se utiliza del dominio AF_INET la familia de protocolos PF_INET, la cual
utiliza TCP/IP v4 permitiendo al cliente y al servidor estar en cualquier lugar de internet.
tipo
-SOCK_RAW
Permite a los programas accesar a los protocolos de bajo nivel o a las
interfaces de red.
-SOCK_SEQPACKET
Provee un camino de transmisin, secuenciado, confiable, bidireccional,
orientado a conexin para datagramas de tamao fijo.
-SOCK_RDM
Provee una capa confiable para el envi de datagramas que no garantiza un
orden de recepcin.
42
struct sockaddr_in
{
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
};
/*
/*
/*
/*
Familia de la Direccin
Puerto
Direccin de Internet
Del mismo tamao que struct sockaddr
*address
*port
*/
*/
*/
*/
17
UDP
Una vez creado el socket se inicializa con 0 el rea de memoria ocupada por serv mediante la
instruction
memset (serv, sizeof (struct sockaddr_in),0);
- si la funcin fue invocada por un servidor *address =NULL, por lo que se obtiene
la direccin IP automticamente
serv->sin_addr.s_addr = htonl (INADDR_ANY);
Enviar un Mensaje
43
int sendto (int s, const void *msg, int len, unsigned int flags, const struct
suckaddr *destino, int tolen);
int s
const void *msg
int len
int flags
const struct suckaddr *destino
int tolen
Recibir un Mensaje
44