jueves, 23 de mayo de 2013

Laboratorio de Redes de telecomunicaciones

Buenas en esta ocasión les traemos una simulación en 3D con las siguientes características:

  • Nodos principales o de comunicación son estáticos.
  • Nodo de referencia para empezar eventos sera el único que estará en movimiento.
Para empezar los nodos  principales se generaron sus coordenadas de manera al azar, y el nodo de referencia se genero siempre en el mismo lugar al iniciar la simulación.

Para los nodos principales tienen los siguientes atributos:

  • posición en x.
  • posición en y.
  • posición en z.
  • Condición para saber si fueron avisados.
  • TTL que actualmente tiene ese nodo.

Además que se uso una función predefinida para saber si se encuentra dentro del área de cobertura cierto nodo contra otro.

Código de esto


Código de esto


Para continuar se uso la librería  matplotlib para poder realizar la simulación en 3D, esta herramienta se puede instalar desde el gestor Synaptic.

El proceso que se realizo fue muy similar al anterior post solo que en vez de ser en 2D fue en 3D.

Pasos:

  1. Se verificaba  si algún nodo tendría visión con el nodo de referencia.
  2. En caso que sea así su condición pasaba a 1 y se pinta de un color distinto.
  3. Este nodo verificaba si podría contactar con sus vecinos y enviarles un mensaje y un TTL.
  4. El nodo que recibía el TTL podría verificar de igual manera si podría enviar un mensaje a algún vecino cercano y enviar un TTL reducido.


Todo esto dentro de un bluce infinito, donde el único elemento que se puede mover seria el nodo de referencia. En la animación esta marcado con un texto: "Nodo R". Mientras que los nodos principales marcan su TTL.

El TTL en caso de que no hayan visto al nodo de referencia o no hayan sido avisados siempre sera de cero hasta que lo reciban de algún nodo.

En caso de que se podría enviar el mensaje el nodo receptor y transmisor en ese instante se unían con una linea.

Con respecto a la herramienta es relativamente sencilla de usar, solo es cuestión de inicializarla con:

-> plt.ion() ## para la animación
-> fig = plt.figure() ##inicializarla
-> ax = fig.add_subplot(111, projection='3d') ##modelo 3D

Donde plt.ion es para que se pueda realizar la simulación y lo demás para crear la gráfica en 3D
para poder modificar las posiciones lo que se hacia erra borrar la gráfica por cada cambio o frame y dibujar nuevamente los elementos en sus nuevas posiciones.

    plt.hold() ## para borrar elementos
    plt.draw() ## para dibujar


Aquí el vídeo de la simulación:









Aquí el código completo:

Aquí código completo

Para apreciar bien el vídeo se recomienda 360 p o superior

Referencias:
1-. matplotlib |"mplot3d tutorial"|  John Hunter, Darren Dale, Eric Firing, Michael Droettboom and the matplotlib development team|ultima modificación: 26 de marzo de 2013| http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html.

2-.Distancia entre puntos  en el espacio |¿Cómo calcular la distancia entre dos puntos en el espacio? |http://distanciapuntosenelespacio.blogspot.mx/2010/04/como-calcular-la-distancia-entre-dos_19.html


1 comentario: