martes, 5 de marzo de 2013

Laboratorio 5. Simulación con NS-2

Para esta semana de clase, se nos pidió correr una simulación en Network Simulator ya sea en la versión 2 o 3, en mi caso utilicé la 2.

Para escribir estas simulaciones se utiliza la extensió "tcl".

La programación NS-2 basicamente tiene el siguiente procedimiento.
  1. Crear el planificador de eventos
  2. Encender el rastreo
  3. Crear red
    - Configuración de enrutamiento - rtproto
    - Crear conexión (capa de transporte) - agentes
    - Crear trafico - aplicaciones
  4. Monitoreo
    - Visualización usando nam

 Comunicación UDP


Los datos son los flujos del agente UDP al agente Nulo.
        
  #Crear un agente UDP y ponerselo al nodo 0
  set udp0 [new Agent/UDP]
  $ns attach-agent $n0 $udp0

  # Crear un agente Nulo que actue como recolector de tráfico y se lo adjunte al
  # nodo 1
  set null0 [new Agent/Null]
  $ns attach-agent $n1 $null0

  # Conectar dos agentes
  $ns connect $udp0 $null0

Comunicación TCP

Los datos son flujos del agente TCP al agente recolector TCP

# Crear agente TCP y adjuntarselo al nodo n0
set tcp0 [new Agent/TCP]
$ns attach-agent $n0 $tcp0

# Crear un agente tcpsink que actue como recolector de tráfico y se lo adjunte al  
# nodo 1
set tcpsink0 [new Agent/TCPSink]
$ns attach-agent $n1 $tcpsink0

# Conecta dos agentes
$ns connect $tcp0 $tcpsink0

Generador de tráfico


Se necesita generadores de tráfico para los datos actuales, estos simulan alguna aplicación de tráfico

Ejemplo simple utilizando CBR

# Crear agente CBR
set cbr0 [new Application/Traffic/CBR]

# Adjuntar el agente CBR a algun agente UDP/TCP
$cbr0 attach-agent $udp0

Planificar los eventos


"At" juega el rol más importante

$ns at 1.0 “$cbr0 start”
$ns at 5.0 “finish"

cbr0 empezará al tiempo de 1.0 ms y todo el proceso se parara a los 5.0 ms, también se puede parar cada generador de tráfico.

$ns at 4.0 ”$cbr0 stop”

El generador de tráfico cbr0 se parará a los 4.0 ms


A continuación pongo unas simulaciones que corrí, agregue algunos comentarios a los códigos según lo que entendí que hacia cada simulación.

Simulación 1.


Código
Este programa simple que muestra como se envían datos en datagramas UDP.




Simulación 2.


Código
Este programa muestra como utilizar el filtro del algoritmo Token Bucket (algoritmo utilizado para controlar la cantidad de datos inyectados a la red, permitiendo el envío de ráfagas de éstos) para cosas como:
  • Catalogación de paquete. Cuando hay dos modelos del mismo origen conectados a un Receptor común, una de las fuentes está conectada a través de un filtro Token Bucket mientras el otro está conectado directamente.Los parámetros TBF dan forma a la exponencial (on/off) para parecer una codificación bitrate constante.

Simulación 3. 


En la última simulación podemos ver una simulación TCP, en la cual se reenvía una ACK para confirmar que el paquete fue enviado.




Referencias:

Laboratorio 5. Catálogos y Proveedores

Nuestro proyecto consiste en un garage inteligente, vamos a abrir la puerta de este a través el dispositivo móvil.

Para realizar nuestro proyecto se requiere el hardware y software que mencionaré a continuación:

HARDWARE


Smartphone

Para nuestro proyecto utilizaremos un Smartphone con sistema operativo Android.


Este dispositivo será utilizado como lector QR y también para recibir las notificaciones de cuando alguien se encuentre estacionado fuera de tu casa y no seas tu. 

Cámara web

Esta la utilizaremos para detectar las imágenes que se encuentran enfrente del garage, esto con el fin de saber cuando alguien va a entrar o cuando alguien se estaciona frente al garage, estas imagenes se mandan a la computadora para procesarlas.



Precio: $260
Tienda: Steren
Link: http://www.steren.com.mx/catalogo/prod.asp?f=&sf=53&c=569&p=4030&desc=webcam-con-microfono-e-iluminacion-multicolor

Arduino UNO

El Arduino lo utilizaremos para controlar la puerta del garage, este recibirá las señales para saber si abrir o cerrar el garage. 
Precio: $365
Tienda: Electrónica 5hz
Link: http://www.5hz-electronica.com/arduino_uno-3-1.aspx

Módulo Bluetooth

El módulo bluetooth será utilizado en conjunto con el Arduino UNO para establecer una comunicación inalámbrica entre el dispositivo móvil y el garage, mediante una aplicación que tendra el dispositivo Android para abrir y cerrar el garage.
Precio: $580
Tienda: Electrónica 5hz
Link: http://www.5hz-electronica.com/modembluetooth-silver.aspx

Servo

Como realizaremos un prototipo a escala, vamos a necesitar motores para darle movimiento a la puerta del garage, para esto se puede utilizar un servo 360 de rotación, lo cual significa gira 360 grados continuamente, esto suponiendo que una cadena estuviera girando para abrir el garage.
Precio: $220
Tienda: Electrónica 5hz

Computadora

Necesitamos una computadora que se encuentre conectada al Arduino para leer el web service. Estábamos pensando en utilizar una Raspberry PI para realizar esto.


SOFTWARE


Para nuestro proyecto utilizaremos diferentes lenguajes de programación:

  • Python. Escribir código para establecer comunicaciones.
  • Processing. Lenguaje de programación de Arduino.
  • Java. Para la aplicación móvil que realizaremos para abrir o cerrar el garage.
  • PHP. Para el web service.
También son necesarias las librerías de Android SDK y el software de Arduino para programar en Processing y escribir código en el Arduino.


Link de Android SDK: http://developer.android.com/sdk/index.html#download
Link del software de Arduino: http://arduino.cc/en/main/software

Tarea 4. Detección de Circulos

Para esta semana, se nos pidió detectar círculos en una imagen, estos círculos tienen un radio conocido y todos los los mismos tienen el mismo radio.

Para esta tarea utilicé algunas de las fórmulas utilizadas para la detección de líneas, los círculos los dibuje en GIMP con radio de 100.

Para este algoritmo como ya lo mencioné se utilizó el código de detección de líneas, en este nuevo código se utilizaron los gradientes para calcular el ángulo y utilizar este punto para el círculo y se obtiene el centro del círculo.

Fórmula para calcular el gradiente:

Con el gradiente se calcula:

Teniendo esto calculamos obtenemos lo siguiente para calcular los centros:


Tuve algunos problemas con el programa, pero para la tarea de lab pienso solucionarlo.




Resultados:







Código:





Referencias:
http://elisa.dyndns-web.com/~elisa/teaching/comp/vision/circulos.pdf