Páginas

miércoles, 29 de mayo de 2013

[TEORÍA DE LA INFORMACIÓN] Resumen de bioinformática

Identification of complex metabolic states in critically injured patients using bioinformatic cluster analysis

Autores: Mitchell J. Cohen, Adam D. Grossman, Diane Morabito, M. Margaret Knudson, Atul J. Butte y Geoffrey T. Manley.

Linka al artículo: http://www.biomedcentral.com/content/pdf/cc8864.pdf

1. Introducción

La unidad de cuidados intensivos (ICU) está inundada de un flujo continuo de datos multivariados producidos a partir de varios monitores, ventiladores, datos de laboratorio y documentación personal médica.

Las comunidades de cuidados intensivos han recurrido a estos monitores y los datos que producen para comprender mejor la fisiología después de la lesión y la reanimación y el tratamiento manual. A pesar de las mejoras, y en el aumento de la dependencia de la tecnología de monitoreo, estos datos multivariados todavía registran de manera intermitente en muchas unidades de cuidados intensivos, a menudo con la menor frecuencia cada hora, en una hoja de papel.

Incluso en unidades de cuidados intensivos donde la hoja de papel ha sido sustituido por un registro médico electrónico, estos sistemas no son adecuados para el seguimiento y el análisis de las relaciones multivariantes complejas. Además, este sistema anticuado, no relacional de la recolección y presentación de datos limita nuestra capacidad de comprender las complejas relaciones entre las variables e impide el análisis longitudinal de las tendencias y el desarrollo de patofisiología en el paciente.

Aquí se muestra que estas metodologías de clustering de la bioinformática son aplicables a  datos fisiológicos multivariados rapidamente cambiantes en pacientes con lesiones críticas, dando datos importantes en la fisiología y los resultados de los pacientes. Se define que en cualquier momento, el estado del paciente se compone de un patrón complejo de variables que en conjunto constituyen el medio de resucitación y del metabolismo.

2. Materiales y métodos

2.1 Colección de datos

El sistema integra información continua de los monitores de pacientes. Datos intermitentes de laboratorio, medicamentos e intervenciones de enfermería se obtuvieron a partir del sistema de documentación de enfermería electrónico e integrado con los datos continuos. Los datos se almacenan en un servidor dedicado en la ICU.

Los pacientes fueron seleccionados como una muestra secuencial pero todos resultaron heridos gravemente y requirieron ingreso en la ICU y reanimación en curso. Los pacientes fueron monitoreados hasta el alta o la muerte, y todas las complicaciones, como infecciones y disfunción de órganos, fueron documentados en la base de datos del estudio.

La puntuación ordinal MOF (falla orgánica múltiple) se convirtió en una variable de resultado binario MOF con puntaje ≥ 4 designados como falla orgánica múltiple. Otras variables de resultado fueron la mortalidad y la infección.

2.2 Clustering jerárquico

Un total de 45 variables de datos fisiológicos, clínicos, y de tratamientos se recogieron cada minuto. Para el análisis de clustering se ha utilizado sólo variables continuos para las cuales los datos fueron completados, lo que resulta en 52 000 puntos a través de 14 variables.

El algorítmo de clustering procede en dos pasos principales: Cálculos de distancias por pares y la vinculación del clúster. Para los cálculos de distancia, se utilizó la distancia euclidiana estándar entre cada punto de los datos. Con una enumeración completa de las distancias por pares entre todas las observaciones, el algoritmo de vinculación combina los dos clusters más cercanos en uno solo, en donde un grupo también puede unirse como un punto de datos.

2.3 Clasificador lineal univariado

Al utilizar las técnicas de análisis multidimensional, es importante tener en cuenta si las técnicas univariadas simples pueden producir resultados similares. Por lo tanto se ha tratado de capacitar a un clasificador lineal univariante utilizando el análisis discriminante lineal (LDA) para clasificar el resultado binario.

2.4 Análisis de correlación entre clusters

A continuación se calcularon los coeficientes de correlación de Pearson para cada par de variables dentro de los clusters con las probabilidades más altas y más bajas de la muerte.

Por último, se comparó los coeficientes de correlación correspondientes entre los dos clusters de interés.

3. Resultados

3.1 Datos demográficos

Se incluyó a 17 pacientes con lesiones graves ingresados ​​en la Unidad Quirúrgica de Cuidados Intensivos en el Hospital General de San Francisco, los pacientes recibieron heridas de gravedad con un Injury Severity Score promedio de 28 ± 10, una estancia media en la ICU de 24 días y una estancia hospitalaria promedio total de 40 día.

El seguimiento sandard se inició en la admisión a la ICU. Debido a que estos pacientes a menudo fueron sometidos a diagnóstico y reanimación significativa en el departamento de emergencia (ED), pruebas de imagen en radiología, o procedimientos quirúrgicos en el quirófano.

3.2 Agrupación jerárquica

Para analizar los datos multivariantes se utilizó un algoritmo de agrupamiento jerárquico para colocar cada uno de los 52.000 minutos de datos a 1 de 10 clusters para representar los estados de los pacientes. Se eligió el número de grupos para proporcionar un equilibrio adecuado entre la maximización de intercluster y reducir al mínimo la distancia entre clusters.

Para determinar si el método de agrupación estaba produciendo resultados fisiológicamente razonables y agrupar las variables que esperamos fisiológicamente a agruparse, lo primero que examinó el dendrograma variable y encontramos que las variables conocidas fisiológicamente relacionadas se agrupan.

3.3 La evaluación clínica de los clusters

A continuación se examinó los estados producidos a partir de la agrupación para determinar si cualquiera de los clusters representados fisiología que sería obvia para un clínico astuto.

La evaluación de los datos clínicos en estos estados por cuatro médicos con experiencia se tradujo en la imposibilidad de definir clínicamente cualquiera de los estados, enfermo o sano, resucitado o no resucitado, y así sucesivamente, poniendo de relieve la dificultad de obtener una predicción clínica tradicional o el significado de estos patrones.

A continuación se trató de probar la capacidad de predicción del método de agrupamiento mediante el cálculo de la distribución de los pacientes con resultados particulares a través de los clusters.

Para probar si las variables individuales fueron predictores estadísticamente significativos de los resultados se realizó un análisis discriminante lineal (LDA). LDA muestra que hay una variable individual que era capaz de predecir correctamente el resultado del paciente significativamente mejor que el nivel de probabilidad de 10,8%. De hecho, todos menos dos variables que fallaron para clasificar correctamente un único punto de datos como pertenecientes a un paciente que murió.

3.4 Representación de las nuevos relaciones fisiológicas

Habiendo determinado que: 1) el análisis univariado no proporcionó factores predictivos adecuados y 2) que la agrupación jerárquica proporciona predicción superior de los resultados, el próximo objetivo era determinar por qué esto era así. La hipótesis de que los clusters contenían nuevas relaciones fisiológicas y que las correlaciones entre pares de variables serían diferentes según el estado del paciente. Además, secreía que estas correlaciones cambiantes probablemente reflejen cambios en las relaciones fisiológicas en función de la lesión o cambiar el estado de reanimación de un paciente.

El examen de estos resultados fue muy revelador y proporciona pruebas tanto de la discriminación de la técnica de agrupación y la capacidad de esta técnica para identificar las relaciones fisiológicas que de otro modo sería imposible de discernir.

Aunque estos resultados proporcionan pruebas convincentes de que el proceso de agrupación es fisiológicamente significativa, el próximo buscó la correlación que eran dispares entre clusters.

4. Resultados y discución

Se ha demostrado aquí la utilidad de la agrupación jerárquica como un esquema de clasificación no lineal sin supervisión en la predicción de los resultados en los pacientes de trauma con lesiones graves.

Estos grupos no sólo estaban dominados por unos pocos pacientes específicos con un resultado particular.

Por último, la información pronóstica incorporada en los resultados de la agrupación no era obtenible por el análisis estadístico tradicional y persiste en la cara de análisis univariado que no podrían predecir cualquiera de estos resultados.

Si bien estos monitores son excelentes como alarmas instantáneas sobre los parámetros críticos, no hacen nada para ayudar a predecir los resultados a largo plazo. Las mejoras en el diagnóstico y la atención han resultado tradicionalmente, tanto mejor perspicacia clínica y avances científicos, sobre todo en datos circundantes del examen científico de un solo o un pequeño grupo de adjuntos.

El uso de aprendizaje no supervisado con grandes datos multivariantes establece compuesto por los datos continuos representa una combinación poco frecuente de las técnicas para predecir y mejorar los resultados del paciente.

Existen varias limitaciones a este estudio preliminar. En primer lugar, el análisis aquí se basa en un número limitado de pacientes (17) y puntos de datos (52.000) . Los estudios futuros deben incorporar a más pacientes (y más datos) que representa los resultados primarios.

5. Conclusión

5.1 Conclusión de los autores

En resumen, se ha demostrado la aplicabilidad de la agrupación jerárquica de los datos fisiológicos a un grado muy alto. Profundizando en los resultados de la agrupación nos permitió aprender más sobre los cambios en la fisiología que son más representativos de los pacientes que mueren o viven de lo que podría determinarse utilizando todos los datos, de forma agregada, de los pacientes individuales que vivieron o murieron. Comparando los coeficientes de correlación de pares coincidentes de las variables entre los grupos revelaron diferencias predictivos de la vida y la muerte y las relaciones fisiológicas dispares dependiendo de la lesión y el estado de reanimación.

5.2 Conclusión personal

Creo que es algo complicado estudiar la fisiología humana pues todos los seres vivos funcionamos de manera diferente, algunos más parecidos a otros pero no de manera similar. Utilizar métodos de agrupación para determinar o predecir si un paciente vivirá o morirá parece una buena solución pero siempre pueden existir cambios que generen datos nuevos que no son tomados en cuenta por estos métodos. Por ejemplo, las medicinas cambiarán el comportamiento del ser y or lo tanto los resultados.

Las pruebas fueron hechas solo con pacientes que recibieron heridas de gravedad, pienso que se debió tomar en cuenta pacientes con heridas y enfermedades variadas para tener un análisis completo.

Referencias:

[1] Mitchell J. Cohen, Adam D. Grossman, Diane Morabito, M. Margaret Knudson, Atul J. Butte, Geoffrey T. Manley, "Identification of complex metabolic states in critically injured patients using bioinformatic cluster analysis", Critical Care 2010, 14:R10

domingo, 26 de mayo de 2013

[REDES DE TELECOMINUCACIONES] Resumen de redes sensoras

Mobile Robot Navigation using a Sensor Network

Autores: Maxim A. Batalin y Gaurav S. Sukhatme

1. Introducción

La navegación es un problema fundamental en la robótica móvil. La navegación local tiene un principal problema y es evitar obstáculos. La navegación global tiene otro problema, el robot no puede ver el estado de su objetivo debido a la gran escala del terreno.

Un número de soluciones han sido propuestas entre las cuales se encuentran: pre-especificación de mapa, construcción de mapa en vuelo, topología basada en señalamientos, etc. El problema con estas soluciones es que no son del todo exactas, pues los sensores envían ruido.

Un tipo de navegación basado en el filtrado de Kalman es preciso métricamente, sin embargo en situaciones de pérdida no se puede recuperar, pues es una solución unimodal.

Algunas soluciones desarrolladas en los últimos basadas en la localización de Markov prueban ser multimodales y exactas. para representar distribuciones probabilisticas de distintos tipos, pero requieren mayor poder de procesamiento, y por lo tanto son imprácticas.

Otro tipo de solución es el uso de técnicas basada en muestras. En lugar de guardar y procesar distribuciones en el momento, se toman con anterioridad y se procesan, las muestras se guardan. Mediante algoritmos de localización de Markov se procesa parcialmente para no dejar todo del lado de los datos almacenados previamente.

Estas soluciones tienen distintas ventajas y desventajas, e incluso en algunos casos pueden fallar. La solución propuesta en el artículo utiliza redes sensoras para monitorear el entorno.

Algunas propiedades de esta solución se sumarizan como sigue:
  1. La red sensora está previamente implementada en el entorno.
  2. En adición a implementar los nodos de la red, el algoritmo calcula las distribuciones de portabilidad de transición P(s'|s,a) de un nodo s a s', cuando el robot ejecuta una acción a.
  3. Los nodos están sincronizados en tiempo (no es necesario gran precisión).
  4. El robot no tiene un mapa precargado o acceso a GPS, IMU o brújula.
  5. No es necesario que el entorno sea estático.
  6. El robot no realiza mapéos o localizaciones.
  7. El robot no es sofisticado, los cálculos primarios se realizan distribuidamente en al red, solo se requiere que sepa evitar obstáculos.
2. Navegación probabilística

Para que el robot sea capaz de navegar por el entorno de un punto A a un punto B, debe ser capaz de seleccionar una acción que maximice las oportunidades de llegar a su destino, para poder medir el progreso y reconocer que ha llegado al punto B. La solución propuesta depende de una red sensora que determina las probabilidades de transición y consiste en dos etapas:

2.1 Planeando

Cuando el objetivo de navegación es especificado, el nodo más cercano al objetivo inicia una comunicación con el resto de nodos para determinar probabilísticamente cuál es el camino más óptimo.

1) Marco teórico - Valor de iteración: Considerando la red sensora como un grafo, donde los nodos son vértices. Se asume un número finito conjuntos de vértices S en la red y un número finito conjuntos de acciones A que el robot puede tomar. Dado un subconjunto de secciones A(s) ⊆ A, para cada dos vértices s,s' ∈ S en el grafo de la red y la acción a ∈ A(s) las probabilidades de transmisión P(s'|s,a) son determinadas para todos los vértices. Se muestra un ejemplo de distribución para un vértice por acción:

Para calular la mejor acción dado un vértice se utiliza un algoritmo de valor de iteración para el conjunto de vértices S - sg donde sg es el objetivo. La idea general es calcular las utilidades para cada estado y después tomar las acciones que determinen un camino hacia el objetivo con la máxima utilidad esperada. La utilidad se calcula incrementalmente:

donde C(s,a) es el costo asociado con el movimiento hacia el siguiente vértice. Usualmente el costo es escogido para ser un número negativo que es menor a -1/k donde k es el número de vértices. Racionalmente el robot debe "pagar" para tomar una acción, pero el costo no debe ser muy grande, de otra manera el robot optará por quedarse en su sitio. Dadas las utilidades, se calcula una política de acción para cada estado s como sigue:

El robot mantiene un modelo de transición probabilística para el grafo y puede calcular la política de acción para cada nodo para cualquier punto de destino.

2) Computación distribuida y procesamiento en red: Una solución más atractiva es calcular la política de acción distribuidamente en la red. La idea es que cada nodo en la red actualice su utilidad y calcule la acción óptima. Cuando el objetivo de acción es determinado, el nodo más cercano al objetivo inicia el cálculo inyectando un paquete "inicio de cálculo" en la red. Cada nodo redirecciona el paquete a sus vecinos usando llenado. Los nodos que reciben el paquete inician la utilidades y el valor del costo si el nodo particular es especificado como objetivo o no.

Esta técnica permite al robot navegar a través el entorno entre dos nodos en la red.

2.2 Navegación

La red sensora discretiza el entorno, en la imagen anterior, en el camino desde el nodo 1 al objetivo 5, el robot podría navegar del nodo 1 al 2, del 2 al 3 y así. Por lo tanto la navegación es acertada. Un nodo cuya dirección sugerida es seguida por el robot es llamado nodo actual. Inicialmente el nodo actual es el más cercano al robot.

El problema con esta solución es que los valores de intensidad de señal no son constantes o proporcionales de un radio a otro, de una topología a otra. Los resultados experimentales muestran que esta solución no es segura. Para predecir de forma segura donde se encuentra el robot, se desarrolló un algoritmo llamado Adaptative Delta Percent, basado en el procesamiento de los valores de intensidad de señal.

Considerar que el nodo actuales t. El nodo sugiere al robot en que dirección moverse. Asumiendo que antes de llegar al siguiente nodo el robot recibirá n muestras de valores de intensidad de señal para cada k nodos en los cuales el robot puede cambiar de acción. Después por cada uno de los k nodos:
  1. Se calcula un promedio del máximo inicial Aim - un promedio de las primeras i muestras donde i << n.
  2. Se calcula unpromedio corrido AR que es un promedio de j muestras consecutivas donde j << i.
  3. Si R = AR/Aim < M, donde M es el valor umbral, entonces se regresa del algoritmo. Se pone R a la lisa LR.
  4. Si y elementos consecutivos de LR están en orden no decreciente, se regresa del algoritmo, si no se repite del 2 a 4.
En caso de varios nodos regresen del algoritmo, se toma un nodo con el radio más pequeño.

3. Experimentos y discusión

Se realizaron experimentos  con un robot Pioneer 2DX con un rango laser de 180º para detectar y evitar obstáculos. La red de 9 nodos fue implementada dentro de un ambiente de cubículos y corredores largos. El escenario experimental de control de alarmas. Una alarma ocurre cuando un nodo  detecta un evento.

Puesto que el robot no tiene ningún dispositivo para posicionase, la dirección en la que el robot inicia es manualmente configurada. El robot mantiene la noción de dirección virtual mientras cambia de direcciones.

Los experimentos fueron los siguentes:

En todos los casos el robot pudo navegar a su destino.

4. Conclusión

4.1 Conclusión de los autores

Los autores concluyen que es factible utilizar robots que naveguen sin el uso de GPS o cualquier otro instrumento para posicionamiento. Lo que tratan de hacer es una red sensora que comunique al robot los eventos que suceden y mediante fuerza de señal, posicionar al robot creando una noción de posicionamiento virtual.

4.2 Conclusión personal

Aunque los experimentos muestran que el robot es capaz de moverse en la dirección señalada y al lugar correcto, las pruebas son hechas en un ambiente cerrado y con obstaculos sencillos, pues el área es una oficina llena de cubículos. Pienso que en un ambiente libre y con una distribución de nodos irregular podría fallar debido a que las intensidades de señal serían variables ademas de que habría ruido de por medio.

Posiblemente la red tendría que estar distribuida con distancias entre nodos muy pequeñas para generar intensidades de señal más altas.

Referecncias:
[1] Maxim A. Batalin, Gaurav S. Sukhatme, "Mobile Robot Navigation using a Sensor Network" (presentado en IEEE International Conference on Robotics and Automation, páginas 636 a 642, Abril 26 a Mayo 1, 2004)

martes, 21 de mayo de 2013

[REDES DE TELECOMINUCACIONES] Simulación de red ad hoc

Para esta entrada se pidió realizar una simulación de redes ad hoc en python o ns-2/3. En este caso inenté hacer lo más parecido a una red ad hoc con python.

Lo que hago basicamente es poner un monton de nodos a caminar en forma aleatoria y al dar click en una zona, el nodo hijo más cercano comunica a su nodo padre, y el nodo padre comunica a los demas nodos padres, estos comunican a sus hijos.

Los nodos pueden enviar un numero limitado de pila,  al agotarse mueren y dejan de moverse, ademas de que dejan de ser parte de la red.

Algunas capturas de como funciona:

Se generan 5 nodos padre y por cada uno se genera 3 nodos hijos. Se conectan entre si.
En terminal se imprime cada nodo:
Al dar clic en la ventana se envia el evento por medio del nodo más cercano. Estos van perdiendo batería hasta morir. Los nodos muertos estan estáticos en la ventana.
La información de los mensajes se imprime en terminal:
Código:

[CÓMPUTO UBICUO] Sugerencias de nuestro proyecto

Se tenía planeado una serie de cosas en un principio pero conforme pasó el semestre, modificamos algunas de ellas.

Para el garage inteligente se tenía contemplado lo siguiente:

  • Una puerta que se abriera mediante una aplicación móvil que se comunica via Bluetooth.
  • Una cámara que detecta la presencia de vehículos y que notifica al usuario de esto.
  • Lector de codigos QR mediante la misma cámara para permitir el paso a otras personas.
  • Una web qu el usuario puede acceder para ver el estado del sistema.

Además de pequeñas cosas que surgieron como ideas durante el semestre.

Para el proyecto se realizó una simulación del garage pues no contabamos con alguien que tuviera un garage con las condiciones para realizar el proyecto. Se realizó una simulación en un proto con leds de colores que notifican el estado del garage.

Lo que se logró fué lo siguiente:

  • Implementación de la web, donde el usuario puede acceder al sistema e inclusive abrir el garage desde este mismo. La web tambien permite al usuario generar un codigo QR y compartirlo con un amigo. Ademas de ver el historial de lo que ha sucedido.
  • Creación de una app móvil para acceder al garage utilizando comunicación Bluetooth. Se agrega una contraseña y se configura el dispositivo para comunicarse con el garage.
  • Implementación de códigos QR para abrir la puerta del garage con uno de estos. Mediante la cámara se detecta el QR. El QR tiene una caducidad, y el sistema no permite el paso a quienes tengan uno vencido.
  • Se implementó un sistema de notificaciones por e-mail. Si un usuario con un QR intenta acceder, se notifica al dueño via e-mail para notificar quien entró, si alguien con un QR vencido intentó entrar o si hay un vehiculo obstruyendo el paso.

Qué realicé:

Para el proyecto me enfoqué sobre la aplicación Android, mi meta era crear una app que se comunicara vía Bluetooth con el garage, comunicar al sistema de la posición actual y recibir las notificaciones directamente en el celular.

Por falta de tiempo solo se alcanzó la primera parte, la comunicación Bluetooth con el garage. Todo esto lo realicé "a ciegas" debido a que no tenía a la mano el dispositivo que utilizariamos como garage. Por lo que me vi en la necesidad de agregar una lista de dispositivos Bluetooth aunque no fueran del mismo tipo (mi idea era registrar una serie de direcciones MAC en el web service para solo leer la correcta). Como resultado, el usuario debe conectarse manualmente al dispositivo. La solución que dí fue que la app automaticamente detectara si hay o no dispositivos sincronizados, si no los hay, se abre la ventana de configuración de dispositivos, si si los hay, se muestra una lista de los dispositivos sincronizados (dando por hecho que el usuario sincronizó el celular con el garage). Por ultimo dando dos opciones para abrir y cerrar, y dos botones de configuración de dispositivo y contraseña.

Qué me faltó:

Sincronización GPS, no es difícil pero necesita de comunicación 3G (no tengo), por lo que las pruebas serían difíciles. Utilizar solo la red WiFi para esto no es buena práctica, pues no da un resultado exacto ni aproximado, sino que calcula la posición de otras antenas. Lo recomendado es utilizar una combinación o solo 3G para funcionar correctamente.

Las notificaciones al celular no se implementaron pues esto requiere de una cuenta en Google API y varias cosas que requieren servicios web que no se tenían planeados. Solo nos quedamos con las notificaciones vía email.

Qué faltó en general:

El servicio web quedó completo para lo que teniamos como entregable, pero para lo planeado quedó parcial, pues tenía planeado utilizarlo para la app móvil.

El proyecto iva por buen camino, pero se esperaba implementarlo en un garage real. No hubo coordinación por nuestra parte y  el desarrollo lo hicimos cada quien por separado por lo que no hubo mucha retroalimentación.

Por mi parte creo que necesitabamos contar con más participación en cuanto a reuniones y buscar a alguen dispuesto a prestarnos su garage.

[CÓMPUTO UBICUO] Sugerencias de proyectos finales.


Para esta entrada se mencionan algunas sugerencias para los proyectos finales que se vieron durante la clase.

SeguriLap:

Propósito: Una computadora inteligente capaz de detectar el rostro del usuario y realizar tareas de forma más inteligente.

Que faltó: Por lo que veo no lograron implementar al 100% el sistema de autentificación, pues el reconocimiento facial no es algo sencillo. Por lo que veo implementaron el metodo al que llaman mapeo (line edge maps), es un buen método pero se necesita de un mejor entrenamiento pues el mapeo solo detecta zonas de interés que podrían detectar cosas que no son ojos o boca o nariz. Deben alimentar a la red neuronal con zonas de interés aparte (ojos, boca, nariz por separado). Recomendaría utilizar un sistema que detecte todas las zonas de interés y después descarte lo que es ruido mediante esa red neuronal, pues veo que su cámara detecta cosas que no son de interés, aún así es preciso e hicieron una buena implementación. Por último, lo de reproducción de video no me quedó muy claro como funciona, pero me imagino como, y puede ser una oportunidad de implementar su sistema no solo en login o reproducción de video, sino en distintas aplicaciones.

CarNXP:

Propósito: Un automóvil que se abre con NFC y mediante esto se accede a una serie de funciones.

Qué faltó: La verdad es que su proyecto está muy completo, a pesar de las faltas. Eso si, la integración es una parte crucial pues mediante ella se tendría un mejor control de lo que sucede con el producto. Lo de la lista de reproducción no estoy seguro si sea necesario, aunque los usuarios buscan algo de distracción, pues no lo veía relacionado con su objetivo, pero está bien. Lo de medición de gasto de gasolina no creo que sea una buena forma obtener los datos del gasto propuesto por alguien más, creo que se podría hacer algo más para saber el gasto real mediante el uso de algunos dispositivos, pues un auto nunca consume lo mismo a lo largo de su vida útil.

Despertador inteligente:

Propósito: Un despertador incrustado en una cama que detecta si el usuario está levantado para asegurar que no se le haga tarde, si no, seguirá la alarma.

Qué faltó: Por lo que veo dedicaron mucho a este proyecto, veo que lograron la mayoría de sus objetivos principales, pensaron en varias soluciones. Aunque no lograron comunicar el dispositivo móvil con el Arduino vía Bluetooth, fue una buena idea crear un servicio web, eso si, yo veo su proyecto como un producto de uso local, es decir, las comunicaciones por Internet no son necesarias. La comunicación Bluetooth no es difícil de un Android a un Arduino, solo que se debe tener un control sobre lo que se envía (muchos o pocos bits) y la sincronización, generalmente con uno o dos bits hay buena comunicación.

Galería inteligente:

Propósito: Dar seguridad a obras de alguna galería e iluminarse automaticamente con la proximidad.

Qué faltó: Veo muchas áreas de oportunidad para su idea, pero la dejaron en un punto intermedio entre lo que pudieron lograr y lo que demostraron. Lo de reproducir sonidos mediante el Arduino, podrían pensar en utilizar una computadora central como lo hacen en la mayoría de los productos y simplemente llamar el sonido correcto. Lo de login y las gráficas puede ser un servicio interno y podrían utilizar tales gráficas para crear un servicio web que muestre un ranking de las obras. Veo que el audio es largo, pero no alcancé a notar si se corta cuando no hay nadie, este es el comportamiento que al menos yo esperaría.

Casa segura:

Propósito: Brindar al usuario seguridad en su hogar mediante dispositivos y mecanismos inteligentes.

Qué faltó: Pues faltó mas que nada organización como ustedes lo dijeron, pues su proyecto era muy bueno, estoy seguro que mucha gente desearía tener algo como lo propusieron. Si les faltó algún dispositivo, pudieron pedirlo prestado. Lo de conversión de niveles lógicos, no es algo realmente difícil, y no es necesario tener todo conectado a una misma fuente, pues la comunicación se puede realizar con éxito.

Alarma de automóvil inteligente:

Propósito: Brindar seguridad al automóvil de forma inteligente mediante una alarma.

Qué faltó: Veo que hicieron un intento por crear una alarma que se comunica con un móvil, debo decir que utilizar GPS no es difícil por lo que creo que se pudo realizar con éxito, los servicios web pudieron implementarlos localmente, no me queda claro cual es el intermediario entre las comunicaciones que se realizan. Las notificaciones debieron implementarse mediante ese servicio web, es decir, Bluetooth no es confiable a más de 10 metros de distancia, suponiendo que no hay obstrucciones.

Localizador inteligente:

Propósito: Mantener una serie de objetos localizados en un área determinada.

Qué faltó: No me queda muy claro como localizan los dispositivos, me imagino que mediante Bluetooth. Me esperaba que localizara cualquier objeto con algún RFID tag o equivalente. Por lo que veo solo es una alarma que alerta al usuario que un dispositivo está fuera del rango. Hay que pensar en que pasaría si el dispositivo se apaga, pues no se puede tener el Bluetooth encendido por siempre.

Oficina inteligente:

Propósito: Ingresar a la oficina mediante una sola llave además de que esto brindará servicios.

Qué faltó: Aunque su demo demuestra un funcionamiento básico, es cierto que pueden utilizar todo esto para varias funciones, en este caso solo simularon mediante software, pero esto se puede extender fácilmente a implementar el sistema en un ambiente real. Faltó un servicio local o web que controle lo que está ocurriendo. También mencionan la unificación del sistema en lugar de usar módulos separados, yo creo que no es mucho problema pero si es importante mantener todo el sistema comunicado, pueden utilizar comunicación inalámbrica pues me imagino que los sensores estarán dispersos y separados.

lunes, 20 de mayo de 2013

[REDES DE TELECOMINUCACIONES] Lab 11: Aplicación de redes ad hoc

Introducción

El costo de los servicios de salud incrementa conforme pasa el tiempo, ésto crea retos para proveedores de servicio de salud, hospitales, compañías farmacéuticas y desde luego a los pacientes.

Uno de los retos es cómo brindar mejores servicios de salud a un público que incrementa y que depende de recursos limitados. Una solución de interés es la tele-medicina inalámbrica que incluye el monitoreo de pacientes, usando una infraestructura inalámbrica ubicua.

Esto reduciría el costo total de cuidados médicos, para una mejor utilización de los recursos limitados y permitiría incrementar la esperanza de vida de individuos mayores.

Algunas condiciones físicas y psicológicas necesitan ser monitoreadas: presión sanguínea, temperatura, pulso, saturación de oxígeno, heridas en la piel, trastornos de equilibrio, actividad y agitación motora, localización actual, si está o no fumando y cantidad de humedad en la ropa.


Requerimientos y mejoras de confiabilidad

Los requerimientos para el monitoreo de pacientes son diversos y complejos. Los siguientes son algunos requerimientos generales:
  • Monitoreo y transmisión de signos vitales: Incluye temperatura, presión sanguínea, ritmo cardiaco, saturación de oxigeno, agitación y actividad motora, etc. Estos involucran un monitoreo periodico para algunos signos vitales.
  • Confiabilidad de entrega de datos: Debido a situaciones de riesgo, el envio y recepción de datos es crucial. Algunos factores son alcance de señal del dispositivo, batería, velocidad de datos, protocolo de ruteo, y comportamientos no cooperativos  de otros dispositivos.
  • Entrega de datos en tiempo razonable: La red debe entregar datos de los signos vitales en un cierto tiempo determinado por el nivel de emergencia. Los retrasos aumentan conforme el número de pacientes monitoreados aumenta.
  • Conservación de energía: El reto es conservar la energía del dispositivo mientras se satisfacen los requerimientos de monitoreo. Los factores influyentes son la potencia necesaria para transmitir datos, número de mensajes que deben ser ruteados, esquema de ruteo.
  • Cobertura para pacientes móviles y estáticos: La cobertura de pacientes debe incluir tanto pacientes dentro como fuera de casa, lo que hace difícil el monitoreo para pacientes fuera de casa es la distribución de pacientes que resulta en un esquema de comunicación poco confiable.
  • Soporte para diversos dispositivos de batería: Estos dispositivos deben ser utilizados en términos de poder y procesamiento, y el tipo de dispositivo depende de las condiciones físicas de los pacientes.
  • Escalabilidad: Los factores influynetes para este epunto son la velocidad de datos, frecuencia de monitoreo y transmisión, y el total de información por paciente. En una red ad hoc la velocidad de datos efectiva decrementa conforme la distancia entre dispositivos debido a:
    • Un requerimiento de poder incrementado que excede el disponible.
    • Transmisión de errores frecuente, los errores requieren retransmisión.
    • Área incrementada donde no hay dispositivos que puedan transmitir hasta que la transmisión actual sea completada.
  • Carga cognitiva manejable para los profesionales: Los datos obtenidos por el sistema no deben ser abrumadores para los médicos y profesionales en la salud, es decir, no se deben de llenar de mensajes repetitivos o con información variada. Los dispositivos deben ser capaces de hacer decisiones inteligentes en la selección de datos en cuanto al estado del paciente, y alertar a los médicos cuando haya algo anormal en los datos.
  • Privacidad y confidencialidad: Debido a que la información de salud es transmitida por redes inalámbricas, deben existir esfuerzos para mantener esta información confidencial. Se espera que sea un requerimiento crítico para administradores y reguladores de ley.

Protocolos de fiabilidad y conservación de energía

En redes ad hoc, la fiabiidad de la entrega de datos y conservación de energía son puntos conflictivos. Para que haya fiabilidad de entrega sin fallos se necesita incrementar el poder del dispositivo, con la finalidad de encontrar otro nodo y continuar transmitiendo. Este tipo de fiabilidad se puede mejorar utilizando multiples retransmiciones, ruteo, multiples redes ad hoc y un numero incrementela de dispositivos cooperativos.

El nivel de poder detransmición influencía la habilidad del dispositivo para localizar un dispositivo cooperativo y la habilidad de estos dispositivos cooperativos para localizar saltos dentro de la red y continuar ruteando. Consecuentemente la conectividad de la red ad hoc depende del poder de transmisión.

Algunos protocolos para el manejo de energía son:

Protocolo
Fiabilidad
Eficiencia
Saltos
Requerimientos de procesamiento
Adecuado para
MP-MDC
(Maximum Power from Patient’s Device and Cooperating Devices)
La más alta (utiliza mucho poder de transmición)Baja (la batería no durará mientras se utilize el máximo poder)Los menosposibles (utilizan mucho poder para mejor fiabilidad)Ninguno (todos los dispositivos transmiten al máximo poder)Transmisión de signos vitales de emergencia
OP-OCD
(Optimal Power from Both Patient and Cooperating Devices)
Alta (especialmente para poca movilidad de dispositivos)La más altaLos máximos posibles (utilizan poco poder de transmisión)Muy altos (para determinar los niveles óptimos de poder)Transmisión de signos vitales rutinarios
MP-OCD
(Maximum from Patient and Optimum from Cooperating Devices)
Muy alta (el máximo poder de los dispositivos incrementa la probabilidad de encontrar un salto.)La máxima conservación de poder posibleMás que OP-OCD y menos que MP-MDCAltos (para determinar los niveles óptimos de poder para algunos dispositivos)Transmisión de signos vitales de poca emergencia
RP-RCD
(Random Power from Patient’s Device and Cooperating Devices)
Imprevisible (basada en el poder individual de saltos individuales)Imprevisible (basada en la suma de todos los niveles de poder)Imprevisible (basada en el poder individual de saltos individuales)Bajos (los dispositivos seleccionan un poder de transmisión aleatorio)No aplica

Mantenimiento asistido de poder y estrategia de sueño

El propósito de los protocolos de conservación de poder puede se combinado con una estrategia de sueño. esto involucra el ahorro de energía en la capa física, y utilizar información de la capa de red y aplicación para crear un balance entre fiabilidad y conservación de energía.

Bajo el ciclo de sueño, los dispositivos pueden despertar periodicamente para verificar cualquier mensaje en espera o acciones por realiazar.

Los siguientes factores de múltiples capas pueden influir en la estrategia de sueño: nivel de conectividad, imparcialidad de las horas de sueño para los dispositivos, conservación de energía, niveles generales de la estrategia del sueño, y movilidad de los pacientes.

El impacto del mantenimiento asistido de poder y estrategia de sueño en la fiabilidad de la red, debe ser cuidadosamente evaluado. A pesar de que estas mejoras aumentan el ahorro de energía de los dispositivos y así mejorar la fiabilidad de las futuras transmisiones a nivel de dispositivo, una mala aplicación podría dar lugar a dificultades de ruteo de mensajes de emergencia debido a un número insuficiente de dispositivos disponibles para el ruteo.

Modelado y evaluación de rendimiento

Para poder evaluar al fiabilidad y los protocolos, se desarrolló un modelo analítico. Este modelo puede estimar la fiabilidad y el poder necesario para cada protocolo. Se extiende para derivar evaluación de rendimiento multimétrica para mensajes normales y de emergencia asistidos y de mantenimiento de poder automático y para varias estrategias de sueño.

Para medir la fiabilidad bajo varias densidaddes y saltos de ruteo, se variaron los saltos de 2 a 10, cambiando la distancia de cobertura por salto. para un número dado de saltos, los dispositivos involucrados transmitieron a un mismo nivel de poder, equivalente a la raíz de la distancia del siguiente salto. Los dispositivos fueron ordenados uniformemente. Al reducir el número de saltos, el poder de transmisión es incrementado en proporción a la raíz de la distancia de cada salto. El incremento resultante tiende a una alta probabilidad de encontrar uno o varios dispositivos cooperativos, por lo tanto mejora la fiabilidad.

Conclusiones

Existen varios retos, como el de soportar un monitoreo fiable utilizando redes ad hoc y como manejar la energía y poder de transmición desde los dispositivos de los pacientes.

Se discutió el diseño de los protocolos para lograr esta fiabilidad presentando el mantenimiento asistido de energía.

Los resultados muestran que los protocolos OP-OCD y MP-MCD son los más destacables, el primero porque logra un mantenimiento de energía, y el segundo por su alta fiabilidad con densidades de dispositivos bajas.

Es importante notar que la estrategia de sueño no es la mejor, pues le afecta en gran medida la cantidad de dispositivos en la red. Si existen muchos dispositivos en red, los tiempos de sueño son reducidos, haciendo que haya poca conservación de energía. Mientras que con pocos dispositivos, los tiempos de sueño son largos y tienden a perder mensajes. La solución propuesta es utilizar estrategias de sueño distintas para cada protocolo de mantenimiento de energía. lo que implica que los dispositivos en una red pueden estar tanto en uno como en otro protocolo en dado momento.

Los dispositivos deben de tomar decisiones inteligentes para el análisis de datos y enviar información relevante dependiendo del estado del paciente, lo que implica que el dispositivo es capaz de entender la situación actual del paciente, por lo tanto el sistema debe tener implementados en sus protocolos, un sistema de prioridad de mensajes, tal que si es una emergencia, el sistema enviará el mensaje con un poder de transmisión mayor al de un mensaje normal.

Referencias:

[1] Upkar Varshney, Sweta Sneha, "Patient Monitoring Using Ad Hoc Wireless Networks: Reliability and Power Management"(articulo en "Quality Assurance and Devices in Telemedicine", IEEE Communications Magazine, Abril 2006)

jueves, 16 de mayo de 2013

[VISIÓN COMPUTACIONAL] Reporte de Proyecto: Detección de rostros de gatos

Propósito

Se pretende escribir una librería capaz de detectar rostros de gatos (ningún motivo en especial), utilizando técnicas de filtrados y mapeos de zonas de interés, eso quiere decir que se pretende mapear características especiales que nos indican que se trata de un rostro.

Justificación

En la actualidad existen tecnologías capaces de detectar rostros y clasificarlos, la mayoría son productos que vienen con esas características. Lo que se busca con este proyecto es proporcionar una librería dedicada a esto.

Sus aplicaciones son variadas, de las más interesantes está la de utilizar tecnologías de reconocimiento facial para buscar personas extraviadas. Otra posible aplicación interesante sería la de buscar delincuentes, pues es lo mismo que la anterior pero enfocada a otro tema.

Ya que el tema es utilizarla en gatos (u otros animales), una aplicación interesante sería el de puertas automáticas que detectan un gato y se abren o cierran.

También una idea sería utilizar un sistema como ese para rellenar los platos de las mascotas dependiendo del rostro del animal, si hay larga o corta exposición en la cámara, el sistema decidiría que hacer.

Diseño del software

El programa trabaja de forma sencilla, pues lo único que debe hacer es buscar zonas de interes en una imagen. El procedimiento es el siguiente:

  • Entrada de datos: Una imagen con algún gato de entrada para iniciar con el proceso, se inicia con un filtro mediano para eliminar ruido.
  • Filtrado: Desde que se obtiene una versión de la imagen con filtro mediano, se empieza a obtener los datos necesarios. Se continua con el proceso de normalización para obtener un mapa de puntos.
  • Mapeo: Una vez que se tiene el mapa de puntos, se puede notar que en la imagen se encuentran resaltadas algunas zonas de interés (ojos, nariz, orejas, etc.). Se adelgazan los puntos para separar las zonas de interés del ruido.
  • Detección: Con las zonas de interés mapeadas, sabemos lo que buscamos en las imágenes y de esta manera podremos detectar lo que estemos buscando, en este caso un rostro.
Primero se introduce una imagen:

Después se inicia el proceso de filtrado:

Una vez aplicado el filtro mediano, se procede a normalizar, lo que ocurriría en una imagen normal es que daría una imagen con bordes destacados, en este caso no son bordes sino puntos:

Se procede a eliminar ruido de la imagen, los puntos sobresalientes sobrevivirán:

Ahora solo quedan zonas de interés, se toma el centro de las más notables, en este caso los ojos y la mancha frontal son elementos comunes en los gatos, puesto que es una imagen chica solo se alcanzó a detectar esas zonas, pero será suficiente:
Ahora estos puntos ya son del rostro detectado, solo falta encerrar la zona en un rectángulo para identificar el rostro del gato:

Simplemente encerramos la zona en la imagen original y listo.

Descripción textual

Lo que hace el software internamente en realidad es filtrar y buscar puntos de interés, pero ¿cómo se que una mancha no es un punto de interés? Pues la mayoría de los puntos de interés son simétricos y de gran tamaño. La mayor parte de las manchas se pierden cuando se filtra la imagen, el resto hace interferencia pero no es la gran cosa.



Librerías

Solamente utilicé la librería PIL, en un principio utilizaría OpenCV, pues en el puedo hacer la mayoría de los filtrados en menor tiempo, pero decidí utilizar el 100% de mi librería.

Los filtros y funciones que utilicé fueron los siguientes:
  • Filtro mediano: utilizado para remover ruido y para destacar los puntos de mapeo, junto con la normalización.
  • Filtro promedio: al igual que el filtro mediano, sirve para remover el ruido de las imágenes, además de que con el pude puntear la imagen en conjunto con filtro mediano.
  • Normalización: En general fue el encargado de mantener en funcionamiento las dos anteriores, entre iteraciones, paraba las imágenes a blanco y negro para evitar la generación de ruido.
  • BFS: utilizado para localizar zonas de interés y obtener su centro.
  • Dilatación: Sirve para adelgazar los pixeles negros mediante la dilatación de los blancos, útil para separar puntos.

Desempeño

Para las medidas de desempeño, puesto que solo utilicé imagenes estáticas, utilicé 8 resoluciones para una misma imagen y medí el tiempo de procesamiento.
  • Para imagenes grandes el tiempo de procesamiento es mayor pero tiene mejores resultados.
  • Para imagenes pequeñas, el procesamiento es rápido pero poco efectivo.

En total fueron 4 imágenes a 8 resoluciones cada una. Las resoluciones aproximadas fueron:
  • 800x850
  • 750x800
  • 700x750
  • 600x650
  • 550x600
  • 500x550
  • 350x400
  • 250x300
Dependiendo de la imagen, existía una pequeña varianza entre los tamaños, pero siempre tratando de ser proporcionales.

En el ejemplo siguiente se muestra el mejor y el peor caso:
Esta es la versión original y de mayor resolución, como se puede ver, hay detección en una zona aceptable.Esta versión es de tamaño reducido, el tiempo de procesamiento es de pocos segundos pero no da buenos resultados.

Demo

  

Futuro del proyecto

Para el futuro quizá deje a un lado Python y empieze a trabajar con un lenguaje más eficiente en cuanto a rendimiento. Esto ayudará implementar filtros en tiempos pequeños, y será mejor en cuestión de paralelización, pues muchos procesos facilmente se pueden paralelizar.

También tengo pensado en utilizar procesamiento de video y webcams en tiempo real, pues eso es más factible que usar imagenes estáticas.

Con los datos de salida de la librería se puede alimentar una red neuronal para que aprenda a detectar las zonas de interes basadas en haar cascades como OpenCV.

Liga al proyecto: https://github.com/victoralex911/vision-computacional/tree/master/cats

Presentación:

Referencias:
[1] Yongsheng Gao, Maylor K.H. Leung, "Face Recognition Using a Line Edge Map" (IEEE Pattern Analysis and Machine Intelligence 2002)

[2] Kevin Bonsor, Ryan Johnson, "How Facial Recognition Systems Work", "HowStuffWorks", http://electronics.howstuffworks.com/gadgets/high-tech-gadgets/facial-recognition.htm

martes, 14 de mayo de 2013

[REDES DE TELECOMINUCACIONES] Lab 10: Satélites

En esta entrada se hace una pequeña investigación sobre satélites y su comunicación.

Introducción

La comunicación vía satélite es muy importante en el mundo actual. Es un servicio muy utilizado en épocas de desastres naturales, tambien lo utilizan personas que viven en zonas alejadas y para fines militares y de defensa. Cualquier fallo de comunicación se puede solucionar mediante el uso de los servicios de comunicación por satélite que se pueden utilizar en cualquier lugar, en cualquier momento y sin ningún tipo de obstáculos. Además, las llamadas de larga distancia, el uso de Internet, etc, son algunas de las ventajas de los servicios de comunicación por satélite.

Por mencionar ejemplos de las ventajas de comunicación satelital:
  • Los satélites son usados por personas con acceso remoto en zonas lejanas, por lo que pueden estar en contacto con los demás.
  • Aplicaciones de seguridad y defensa nacional, pues las transmisiones por satélite son cifradas y no están al alcance de cualquiera.
  • Cuando hay desastres naturales y las comunicaciones terrestres caen, las comunicaciones satelitals son empleadas para mantener comunicación.
  • La comunicación por satélite nos mantiene informados de el estado del clima.
  • Son comunicaciones de bajo costo y muy eficientes.
Tipos de satélites

Existen varios tipos de satélites:
  • Satélites climatológicos: proveen sericio de meteorología para predicciones de condiciones climáticas.
  • Satélites de observación y reconocimiento: Los utilizan los científicos para evaluar ecoistemas den la Tierra.
  • Satélites de navegación: Utilizan tecnología GPS para dar posicionamientos.
  • Satélites de comunicaciones: Permiten retransmitir información entre distintos puntos del planeta.

Clasificación de orbitas

Los satélites se clasifican de la siguiente manera:
  • Órbita baja terrestre (LEO): órbita geocéntrica a una altitud de 0 a 2,000 Km.
  • Órbita media terrestre (MEO): órbita geocéntrica a una altitud entre 2,000 a 35,786 Km.
  • Órbita alta terrestre (HEO): órbita geocéntrica elíptica, a una altitud superior a los 35,786

Usos y funcionamiento

En la actualidad, el tipo de imaginación se puede imaginar como si se tuviera un enorme repetidor de microondas en el cielo. Está constituido por uno o más dispositivos receptor-transmisores, cada uno de los cuales escucha una parte del espectro, amplificando la señal de entrada y retransmitiendo a otra frecuencia para evitar los efectos de interferencia.

Cada una de las bandas utilizadas se divide en canales, suele haber un satélite repetidor para cada canal que se ocupa de capturar la señal y retransmitirla a la Tierra en la frecuencia correspondiente.

Telefonía

En telefonía se utilizan los satélites para realizar las llamadas de larga distancia, pues la señal en tierra se tiene que retransmitir entre estaciones y provocaría un retardo. En cambio vía satélite tiene una retransmisión rápida.

Radio y televisión

Para la televisión y radio se utilizan dos tipos de satélites:
  • DBS (Direct Broadcast Satellite) son satélites que envian señal directament a todas las antenas receptoras. Es utilizado tanto para señales analógicas y digitales y usualmente se utiliza para servicios de televisión y radio digital.
  • FSS (Fixed Service Satellite) Son satelites geoestacionarios usados para la transmisión de señales televisivas y de radio. Fueron usados para transmitir señales analógicas por compañías como Sky, DirecTV, etc.
Comunicaciones móviles

En la comunicación movil tambien hay tecnología satelital, tal es el caso del GPS, no importa donde estén los receptores, los satélites siempre envian una señal y dependiendo de la posición del receptor es la respuesta del satélite, utilizan algoritmos de triangulación entre varios satélites para posicionar con errores de pocos centimetros.

Información de transmisión y recepción de datos

Velocidad

Los anchos de banda van desde los 27 MHz a los 72 MHz y se utilizan para enviar señales analógicas de audio y/o video, o señales de televisión (normal o alta definición), radio digital (calidad CD), conversaciones telefónicas digitalizadas, datos, etc.

La eficiencia que se obtiene suele ser de 1 bit/s por Hz; un canal de 50 MHz permitiriía transmitir un total de 50Mbit/s de información.

Un satélite típico divide su ancho de banda de 500 MHz en unos doce receptores-transmisores de un ancho de banda de 36 MHz cada uno. Cada par puede emplearse para codificar un flujo de información de 500 Mbit/s, 800 canales de voz digitalizada de 64 kbit/s, o bien, otras combinaciones diferentes.

Formas de transmisión

Para la transmisión de datos vía satélite se han creado estaciones de emisión-recepción de bajo coste llamadas VSAT (Very Small Aperture Terminal). Una estación VSAT típica tiene una antena de un metro de diámetro y un vatio de potencia. Normalmente las estaciones VSAT no tienen potencia suficiente para comunicarse entre sí a través del satélite, por lo que se suele utilizar una estación en tierra llamada hub que actúa como repetidor. De esta forma, la comunicación ocurre con dos saltos tierra-aire. Un solo hub puede dar servicio a múltiples comunicaciones VSAT.

Retardo

Las comunicaciones vía satélite tienen algunas características singulares. En primer lugar está el retardo que introduce la transmisión de la señal a tan grandes distancias. Con 36.000 km de altura orbital, la señal ha de viajar como mínimo 72.000 km, lo cual supone un retardo de 240 milisegundos, sólo en la transmisión; en la práctica el retardo es de 250 a 300 milisegundos según la posición relativa del emisor, el receptor y el satélite. En una comunicación VSAT-VSAT los tiempos se duplican debido a la necesidad de pasar por el hub.

En una comunicación terrestre por fibra óptica, a 10.000 km de distancia, el retardo puede suponer 50 milisegundos (la velocidad de las ondas electromagnéticas en el aire o en el vacío es de unos 300.000 km/s, mientras que en el vidrio o en el cobre es de unos 200.000). En algunos casos estos retardos pueden suponer un serio inconveniente o degradar de forma apreciable el rendimiento si el protocolo no está preparado para este tipo de redes.

Broadcasting

Los satelites de forma natural pueden enviar una señal a un solo receptor o a varios con el mismo coste si todos los receptores se encuentran en la huella del satélite. Esto tiene aplicaciones muy interesnates pero puede tener consecuencias graves de seguridad en otras. Las transmiciones deben de ser cifradas, por lo que puede haber problemas si todos los receptores se comunican al mismo canal. Estos problemas son como los de una red local, puede haber interferencias y daños en la comunicación.


El coste de una transmisión vía satélite es independiente de la distancia, siempre que las dos estaciones se encuentren dentro de la zona de cobertura del mismo satélite.

Además, no hay necesidad de hacer infraestructuras terrestres, y el equipamiento necesario es relativamente reducido, por lo que son especialmente adecuados para enlazar instalaciones provisionales que tengan una movilidad relativa, o que se encuentren en zonas donde la infraestructura de comunicaciones está poco desarrollada.

Referencias:

[1] Ankur Rajput, "Advantages Of Satellite Communication", "SooperArticles", el 18 de Mayo 2010, http://www.sooperarticles.com/communications-articles/advantages-satellite-communication-66456.html

[2] "Applications of Satellites", "Pakistan Space and Upper Atmosphere Research Comission", el 14 de Mayo 2013, http://www.suparco.gov.pk/pages/applications-satellite.asp

[3] Orlando José GAETANO HADAD, "Los Satélites de Comunicaciones ", http://www.casanchi.freeiz.com/ast/satelitecom01.pdf

[CÓMPUTO UBICUO] Lab 11: Sugerencias de privacidad

Para esta entrada se realizan sugerencias en cuanto a privacidad en los proyectos, basadas en el contnido de las presentaciones de la semana pasada.

Alarma inteligente:

En realidad la comunicación Bluetooth corre el mismo riesgo que cualquier otro tipo de comunicación, así que si desean seguridad necesitarán implementar algún mecanismo de encriptación de datos.

Para los datos del GPS iguamente pueden utilizar encriptación de datos visibles solo desde algún modo solo disponible para el usuario. Además de limitar su uso, eso quiere decir que solo utilizarlo en cuanto sea necesario y no todo el momento.

Tambien agregar a sus avisos de privacidad y terminos y condiciones de uso todas las advertencias sobre el uso de datos y a que se limitan estos usos, además de dar a conocer quienes pueden ver esta información y con que privilegios cuenta.

Computadora inteligente:

En sí es muy poca la información personal que almacenan y además lo hacen en forma local, aunque si es importante que dén a conocer al usuario mediante algún aviso de privacidad la forma en que utilizan estos pocos datos.

Además de que implementen seguridad mediante encriptación de datos con alguna contraseña, para operaciones de escritura sobre archivos delicados, o cambios en el sistema, pues cualquiera puede llegar con una fotografía de un rostro registrado y acceder a la sesión.

Oficina inteligente:

Su sistema trabaja con información muy importante y que podría caer en manos equivocadas, es importante que utilicen algún mecanismo de seguridad para evitar clonaciones de los RFID tags y mencionarlo en sus terminos de uso y avisos de privacidad.

Mencionar tambien que datos personales se utilizan, como operan con ellos y quienes tienen acceso a ellos, ademas del nivel de privilegios que cuentan los usuarios.

Alarma de dispositivos inteligente:

En realidad no importa la localización del archivo de configuración si implementan un buen cifrado.

Otra cosa es que existen formas de detectar si el dispositivo está rooteado, quizá sería una buena opción tratar de proteger los datos contra posibles amenazas que dejar a que el usuario se encargue, ya que tener el dispositivo rooteado probablemente no es legal para el fabricante del dispositivo, pero Android da la posibilidad, por lo que se contempla más bien como algo opcional.

Galería inteligente:

No hacen uso de datos muy relevantes, pero si es importante que tengan avisos de privacidad y documentos de terminos y condiciones, esto sería para quienes adquieren su producto y no para los visitantes de la galería. También informar en esos mismos documentos, que tipo de información se recauda y quienes podrían tener acceso a ella.

Despertador inteligente:

No es muy seguro manejar información de bases de datos directamente con una app, tendrían que crear servicios web como inermediarios para comunicar la base de datos con la app, pues la app puede ser facilmente descompilada y obtener información muy importante.

Casa inteligente:

Creo que estar notificando al usuario a cada momento de lo que hace no es una buena idea, pero pueden utilizar su sustema de niveles para regular estas notificaciones, desde notificar cualquier cambio importante cada vez, hasta hacer todo de forma transparente sin notificaciones. Y poner todo esto en su aviso de privaidad y terminos de uso.

CarNXP:

Es importante que mantengan un sistema de seguridad y de cifrado de datos pues manejan demaciada información. También tratar de buscar una forma para evitar o manejar una situación de clonacion de NFC tags.

lunes, 13 de mayo de 2013

[REDES DE TELECOMUNICACIONES] Geolocalización usando triangulación

Para esta semana se encargó realizar, ya sea simulado o en físico, un sistema de geolocalización mediante triangulación de fueras de señal, en este caso usando el método de trilateración.

En esta entrada se muestra un pequeño programa que simula la triangulación usando 3 antenas que se pueden colocar en cualquier punto de la ventana, y puede calcular la posición de un receptor simulado al dar clic sobre un punto de la ventana.

La interfaz es como se muestra:
Al dar clic con el botón secundario del mouse se puede agregar una antena en un punto, máximo se pueden agregar 3 antenas.
Al dar clic sobre un punto se marcan las intensidades de las antenas sobre las que está el punto.
Y en terminal imprime su localización aproximada.

Si el punto no es posible localizar marcará un error, por ejemplo marcar el punto cercano solo a una antena.

También es posible calcular el punto cuando hay solo 2 antenas, pero muchas veces fallará.

Código:
Referencias:

[1] Mauricio Gende, Ivana Molina, "Trilateración", modificado en 6 de Junio 2011, http://catedras.fcaglp.unlp.edu.ar/geofisica/referenciacion-en-geofisica/teoria/instrumental-y-tecnicas-topograficas/trilateracion.

[2] wwnick , John Austen, respuesta a nohat, "Trilateration using 3 latitude and longitude points, and 3 distances", "Geographic Information Systems", post creado en 22 de Julio 2011, http://gis.stackexchange.com/questions/66/trilateration-using-3-latitude-and-longitude-points-and-3-distances.

jueves, 9 de mayo de 2013

[VISIÓN COMPUTACIONAL] Lab 9: Esquinas

Para este laboratorio se encargó detectar las esquinas de una figura utilizando un filtro mediano.

Utilizaré las siguientes imágenes para comprobar:

Lo primero que hice fue obtener la versión de filtro mediano de las imágenes, para eso seleccioné un pixel y sus 8 vecinos y acomodé los valores de los pixeles y tomé el medio. aplicándolo al pixel seleccionado. Después le resté a la imagen en escala de grises la versión con el filtro y obtuve las esquinas algo difuminadas, así que la convertí a blanco y negro para resaltarlas y dilaté los pixeles.

Finalmente saqué las posiciones de las esquinas mediante bfs a cualquier cosa que no fuera de color negro o el color que sería utilizado en bfs.

Como las figuras son polígonos regulares, pude sacar su centro de masa con tan solo las posiciones de sus esquinas y de esa manera verificar el ángulo de cada una. El ángulo me ayuda a saber cual esquina viene primero y de esa manera poder ordenarlos de tal forma que se puedan unir con una línea.

El resultado final es el siguiente:




Como se puede ver, no son resultados muy fieles a la versión original, esto se debe a variaciones que hay en los pixeles que causan esquinas falsas, cosas como pixelización, figuras con bordes gruesos, colores muy oscuros como el borde, etc.

El código es el siguiente:

[TEORÍA DE LA INFORMACIÓN] Código de corrección de errores

Para esta tarea se encargó implementar un algoritmo para corrección de errores. En este caso el Hamming (7,4).

Consiste en dividir el contenido de la información en bloques de 4 bits y codificar estos bloques, de tal manera se puede generar un bloque de 7 bits agregando 3 bits de paridad. Estos bloques de 7 bits son una codificación limitada a unas cuantas combinaciones, así que son estos bloques los que se envían y que pueden sufrir alteraciones, y mediante una operación de matrices se puede obtener las posiciones de bits donde hubo alteraciones.

Hamming (7,4) está limitado a la corrección y detección de un error de bit por bloque. Para poder distinguir entre dos errores se puede utilizar el Hamming extendido.

La matriz generadora G que utilicé es la siguiente:
La matriz de chequeo de paridad H es la siguiente:
El código es el siguiente:

Se utilizó el siguiente archivo de texto:

Y la pantalla donde corre el programa muestra al final el texto decodificado: