martes, 25 de octubre de 2016

Fusión sensorial : Logica difusa

Hoy vamos a ver varias técnicas de fusión de información, y vamos a poner en práctica la fusión con lógica difusa de la información proveniente de dos sensores.


Como parte de las notas opcionales dejo en el blog dos entradas de artículos científicos de fusión de información. La tarea consistirá en hacer un resumen aplicado a la práctica que estamos realizando . Ver en que sentido es aprovechable .

Hay una semana para entregarlo y la entrega consistirá en una presentación en ppt o pdf que se expondrá en clase , no debe exceder en tiempo de exposición los 15 minutos, no hay longitud máxima o mínima.





Luego repasaremos los conceptos de integración de la información presentes en esta Tesis.

Finalmente, según la planificación hay que integrar las medidas de luz y de distancia en el paso de peatones mediante un controlador difuso. Hemos explicado en clase  los rudimentos para hacer desde cero un controlador difuso. Para la implementación del controlador difuso se puede utilizar este código de ejemplo (es de procesing, pero puede ser adaptado fácilmente  a arduino ). Viene para 4 variables, hay que modificarlo para las variables (sensores ) que vayamos a utilizar en la práctica.
Como resumen de la clase comentar que tras la certeza de la situación de un vehículo o peatón dada por calibración, medida con media movil, y finalmente un proceso de fusión sensorial, hay que utilizar esta información para actualizar el estado del sistema. Para ello es necesario mantener una máquina de estados que dependiendo de los eventos producidos ("peatón cruzando", "coche acercándose" "coche cruzando...", "paso libre") realice acciones o emita otros eventos .

Por ejemplo una vez detectado un peatón , si ya estaba el paso en estado de "peatón cruzando"  antes no cambiamos de estado, pero si antes estaba en "paso libre" , puede cambiar el estado del paso a "peatón cruzando". 
Referencia : Proyecto de fin de grado : Paso de Peatones Inteligente.
Este proyecto realiza una detección de peatones cruzando por un paso de cebra para iluminar un led de advertencia a los vehículos que se acercan. Cuando un vehículo cruza el paso de peatones, este de desabilita para no encender el led de advertencia (si no hay peatones cruzando en dicho momento). Detecta mediante sensores magnéticos la presencia de vehículos aparcados que pudiesen confundir al paso y pensar que es un vehículo que se aproxima. 

jueves, 13 de octubre de 2016

Esquema de desarrollo del proyecto

Detalle del proyecto

El proyecto tendrá varias  fases, las primeras están más detalladas para que se pueda ir planificando los esfuerzos y decidiendo qué partes son reutilizables. Las últimas se irán detallando a medida que se imparta la teoría al respecto. Hay partes opcionales, si el alumno está interesado en una de estas partes debe acordar con el profesor el alcance para contener el esfuerzo en metas alcanzables y que parte de la nota/trabajo final corresponde según el esfuerzo requerido :

0- Calibrado de sensores, dependiendo de una entrada (botón, o jumper ) calibrar los sensores. Debe medir la luz en vacío con distintas condiciones de luz. Para elllo irá mostrando con impulsos el estado de la calibración (un impulso de los dos , para el primer caso, se pone a verde fijo cuando termina bien, si hay cualquier problema se pone a rojo y repite pasado 5 segundos. dos impulsos para el segundo caso , etc....


1-Modelar cada modulo con un arduino que determina en una salida digital (un led verde y uno rojo) si hay peatones sobre él o vehículos acercándose . La señal se debe tomar con técnicas de eliminación de ruido , probando varias de ellas y los parámetros más indicados (media movil ,estadística, etc...). Inicialmente se realizará con lógica CRISP (if valorSensor1 > 999  y valorSensor 2 < then.....) . Posteriormente esta lógica se realizará con métodos de fusión sensorial para determinar si la plaza está ocupada o libre.










2- Dotar de inteligencia al paso de peatones. Un arduino controlador tiene asociado un modulo con un sensor de luminosidad, de magnetismo y de distancia. Cuando se detecta un peaton debe emitirse un pulso mediante un led hasta que el peatón salga del paso de peatones.
      2.1 Unir los Arduinos (modulos) mediante conexiones por bus I2C/SPI/serial al controlador. para unirlos por serial, hay una librería que permite usar otros pines: SoftwareSerial
      2.2 Trabajos opcionales de conexión a probar , en todos ellos habrá que redactar una pequeña memoria de los comandos at utilizados y los modos de conexión: 
     a) Enlace radio NRF024 permite simular red mesh  algunos ejemplos:

    b) uso de XBee para red mesh. La raspberry  (y/o el arduino asociado a la raspberry) y los 2 arduinos contarán con una xbee. Los arduinos se conectan al controlador y dan información de estado de la plaza.

    c) uso de modulos bluetooth Master (hc05) y Slave (hc06). los dos arduino de las plazas tendrán un slave y la Raspberry pi /arduino asociado un módulo master.


3- Implementar la lógica difusa de existencia de peaton, coche aparcado o vehiculo acercandose. Se implementará un sistema de 2-3 variables representando a cada sensor donde se establece como salida c. Tanto las reglas como las pada situación.las particiones se realizan con conocimiento de experto tras realizar pruebas con las distintas situaciones de los vehículos/peatones : 

  • Vehículo aparcado sobre sensor
  • Vehiculo acercandose
  • peaton cruzando

en este caso recibimos información de los modulos vecinos (mínimo uno) , tanto de los sensores que necesitemos como del estado del mismo (led de peatón encendido, coche aparcado, coche pasando...)

*También es factible programarla desde cero.

3.1*- Trabajo opcional: Aprender de los objetos presentados cada una de las situaciones. Se puede aprender con particiones fuzzy  fijas (wan y mendel, aunque está diseñado para regresión se puede realizar una adaptación) o determinar las particiones a partir de reglas de experto con un pequeño algoritmo de aprendizaje (esto se puede realizar en el arduino o enviando por serie la información al PC y realizando la optimización en Processing o Java).

4-  Implementación de colas. Se implementará un servidor de colas MQTT en la Raspberry pi que sustituirá la lógica de máquina de estados de Arduino por la emisión y recepción de eventos.

5- Implementación de panel Web: Se mostrará información dk. Pruebas de distinta funcionalidad de la plataforma. Envío de Twitter. Pose estado del paso de peatones y estadistica de coches y peatones .. 

6- Implementación de ontología y estructuración de eventos para el control de paso (directamente con Mosquito MQTT en Raspberry pi, Sophia2, Fiware, Se decidirá en clase según análisis de requisitos y evolución de trabajos). 

Trabajo final: El trabajo final consistirá en implementar en alguna de las alternativas nombradas el caso de uso completo consistente en : 

  • Mostrar en una web o aplicación movil (appinventor) el estado del paso
  • Solicitar por interacción web, bluetooth, app el estado de tráfico y solicitar el encendido del led 
  • Opcional: Realización de pequeña aplicación móvil con appinventor para modo conductor de coche (aviso de peatón cruzando mediante gps) y peatón (aviso de estado de paso antes de cruzar)

Practica 1: Sensores y calibrado

Objetivos

En esta asignatura vamos a realizar un proyecto que irá tomando forma poco a poco para conformar la base donde los alumnos realizarán el proyecto personal.
La primera parte de la práctica tiene como objetivo estudiar el comportamiento de la medida de sensores para mejorar la toma de valores de los mismos en la mejores circunstancias.

 


Enunciado de la práctica

El objetivo general del proyecto será la de automatizar un paso de peatones con varios módulos que se comunican entre ellos. Cada módulo tiene un sensor de distancia y un sensor de luminosidad que nos informara de la presencia de un peaton y vehiculo respectivamente.

El subsistema tendra al menos 2 sensores de distinto tipo para determinar la presencia de distntos tipos de vehiculos y peatones

Documentación General
Para cada apartado se realizará una entrada en el Blog IIOT2016.blogspot.com con fotos /representacion del circuito en Fritzing. Breve explicación del apartado de la práctica , capturas de pantalla y un video cuando haya que mostrar cambios de estado.
Todos los scripts deberán estar subido a alguna cuenta en la nube (preferiblemente github) y referenciados por el blog.



Apartado 1.1 Medida y calibrado de sensores

Utilizando un Arduino uno, una placa de entrenamiento y los sensores de fotoresistencia (gl55) y de temperatura lm35 realizar el calibrado y medidas sin ruido.

Para el calibrado se debe disponer de alguna referencia externa. Para ello utilizaremos la medida de temperatura interna del arduino como referencia. Tb se puede utilizar cualquier medida de temperatura ambiente.  (calibración lineal).
Para la tabla de medidas  se utilizará una fuente de luz y uno de los sensores como referencia de los otros.



a) Calcular el rango de valores real, algunos puntos de la curva de transferencia y describa la linealidad de la misma (luz)
b) calibrar el offset y la sensibilidad asumiendo que la curva es lineal. (luz y temperatura)
c) calcular la media, mediana y moda y analizar su uso.  (luz)
d) Calcular la media móvil y mostrarla por pantalla. Inferir un valor adecuado para la tolerancia (luz y temperatura)

e) Calcular valores y usarlos en una tabla lockup para generar un valor linealizado en base a estos valores (luz)

f) Discutir los valores y curvas encontrados en la ficha técnica de los sensores

g) Resultado final: realizar un programa o programas en arduino que realice la calibración lineal, lockup y luego muestre valores en base a la media movil para cada sensor y como calculo del conjunto de sensores de luz.   



Aplicación al proyecto del paso de peatones: 

Cuando el sistema se inicia tendrá opciones de calibrar y se utilizará una media móvil u otro método para las medidas de cada sensor.

Intenciones

Este blog está dedicado a subir la documentación y videos de las prácticas de la asignatura de Internet of Things. En la esperanza de que el conocimiento pueda cruzar fronteras y servir a otros alumnos.


Cada práctica debe contener una descripción en fritzing de los circuitos utilizados asi como otros diagramas standard para explicar el proceso (diagramas de clases, casos de uso, diagrama de eventos, descripción de maquinas de estados, etiquetas y reglas difusas, Jsom y XML , etc.....)


Deberá acompañarse de un pequeño video de demostración con la salida por pantalla, comportamiento físico del dispositivo y referencias al código utilizado en la plataforma GitHub.