Max Hernandez

Laberinto - Ejemplo de Canvas en HTML5

jueves, 9 de febrero de 2012

Sistema determinista - Comunicación

Buen día

Un sistema determinista se basa en el modelo filosófico determinismo, el cual sostienen  que todo acontecimiento físico están caaualmente determinados por la irrompible cadena causa-consecuencia.
Esto quiere decir que para obtener un resultado se requiere una serie de sucesos que llevan a otros y generan el mismo. Los sucesos son relativamente sencillamente predecibles.


Comunicación

Como ejemplo de sistema determinista escogí un dialogo puesto que en la interaccion entre dos personas es de esperar que cuando alguien mande un mensaje si este es entendido, es de esperar que el receptor del mensaje regrese alguno relacionado con el primero.




[imagen obtenida de: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgxQ1GlOK_co78RP2JzQnRr-K5-ZtR2C3twywS7Q9asrbOutkokOFsDRhZiZz_1n16SIclLSHxVVTSLDPaWxJe_hvjA5vs1h9bP8pZzsxPaxbuK9W6-sywCOXznlGtfTmOIuF0w2o0xMAY/s400/media446051.jpg]

La comunicación es un sistema muy definido de dos partes, un emisor(quien manda el mensaje) y un receptor(quien revisa el mensaje) del mensaje. Durante el proceso para transmitir un mensaje las entidades que desean mandar un mensaje toman el papel de emisores. Como sistema determinista la comunicación se da en varios estados muy definidos donde se genera un mensaje, despues de envia por un canal y al final se recibe el mismo.


Diagrama

En el diagrama se explica con mas detalle las partes de la comunicación añadiendo ademas el código que representa las ideas del mensaje dentro del canal.

Pseudocódigo

...
Objeto Emisor{
  Mensaje;
  Canal;

  enviarMensaje(mensaje, receptor){
     Canal.enviando(receptor, mensaje);
  }

}

Objeto Receptor{
  Mensaje;
  Canal;

  recibirMensaje(mensaje){
    Mensaje = mensaje;
    this.interpretarMensaje()
  }

  interpretarMensaje(...){ ... }
}

Objeto Canal{

  enviando(receptor, mensaje){
    receptor.recibirMensaje(mensaje)
  }
}
...


Referencias:
http://es.wikipedia.org/wiki/Comunicaci%C3%B3n
http://html.rincondelvago.com/elementos-de-la-comunicacion.html

"Hasta un reloj descompuesto acierta dos veces al día" - Woody Allen

miércoles, 8 de febrero de 2012

Seleccionando e instalando herramientas

Para empezar a trabajar en mi proyecto me di a la tarea de buscar e instalar las herramientas necesarias para realizar mi proyecto.

El tema me parece interesante así que lo primero que hice fue buscar librerías que pudieran servirme para construir aplicaciones de este tipo. Mis necesidades no son muy especificas para este tipo de aplicaciones solo necesito visualizar imágenes en 3D para mostrar las piezas de ajedrez y  alguna manera de interacción con el usuario.

Después de unas cuantas horas de búsqueda encontré paginas de herramientas relacionadas con lo que voy a trabajar e inclusive la página personal de una persona que en algún momento estuvo trabajando en este tipo de aplicaciones para la plataforma Android. Y de ahí obtuve la lista que muestro a continuación.

Lista de librerías de realidad aumentada:


Una ves obtenida esta información comencé a probar algunas de estas librerías a fin de encontrar alguna que me sirviera para mis fines. La que mas llamo mi atención fue QCAR puesto que su documentación es bastante clara y fue muy sencillo instalara y correr varios ejemplos que ya venían con esta. Ademas de buscar el Android Market y probar algunas aplicaciones construidas con esta librería termino de convencerme.

El mas grande inconveniente que encontré fue el modelado de figuras en 3D en lo cual no tengo ninguna experiencia, una vez que instale y corrí QCAR me dí cuenta que este trabaja muy bien con Unity un software de modelado en 3D. Como Unity solo trabaja en Windows y MacOS ahora me encuentro instalando de nuevo todas las herramientas.

Instalando Android


[imagen obtenida de: http://talfin.net/blog/wp-content/uploads/2011/02/android.png]

Ahora deseó mostrar a modo de tutorial mí experiencia instalando el Android SDK y configurando Eclipse para utilizarlo como IDE para desarrollar aplicaciones.  

1.- EL primer paso fue asegurarse de tener instalado el JDK yo ya lo tenia instalado pero en caso de no tenerlo se puede descargar de aquí:


en caso de tener linux se puede instalar en ubuntu con el siguiente comando en la terminal:

sudo apt-get install openjdk-6-jdk openjdk-6-jre

2.- El siguiente paso fue descargar el eclipse IDE esto se puede hacer desde la siguiente pagina:


Para trabajar con Eclipse decidí crear una carpeta en mi escritorio donde tengo organizadas todas las herramientas que necesito para desarrollar.

3.- El proximo paso fue descargar el Android SDK lo cual pudé hacer desde esta pagina:


Una vez descargado lo descomprimí en la carpeta que había elegido anteriormente. Me pareció muy conveniente agregar la ruta de la carpeta tools que se encuentra dentro de la carpeta que acabamos de descomprimir del SDK para utilizar mas facilmente las herramientas de este. Como sabemos la variable PATH contiene los directorios donde el shell busca los programas que ejecutamos en la terminal, por ejemplo: si ejecutamos el 

En caso de usar linux esta seria la instrucción, que quiere decir, ala variable PATH se le asigna el contenido de la variable PATH denotado por “$PATH” y se le agrega el nuevo directorio separando los directorios con el símbolo “:”.  

export PATH=$PATH:/android-sdk-linux

En el caso de MacOS:

PATH=$PATH:/android-sdk-linux; export PATH

En mi caso tambien añadí eclipse de forma permanente para abrirlo rapidamente.

4.- Lo siguiente fue instalar el android ADT la cual es una extension de Eclipse que le permite conectarse con el Android SDK. Para esto abrí eclipse y luego en la opción  "help>Install New Software". Nos aparecera la siguiente ventana:


Y añadí el siguiente link de la siguiente manera:




Ahora dando click en “OK”  automaticamente Eclipse conectó con la página y me mostró una lista con las extensiones que se pueden instalar.


Aquí se seleccionan extenciones  las que Elicpse va a descargar e instalar, las mas importantes son las dos superiores y esas son las únicas que instalé.



Escogemos siguiente y nos aparecera una ventana con las herramientas seleccionadas y abajo si se produjo un error al verificar si se pueden instalar. En caso de no tener ningun error damos click en siguiente



Ahora leemos los terminos de acuerdo de licencia, seleccionamos “I accept the terms of the license agreements” y por ultimo damos click en “Finish” 




Esperamos a que se instalen las herramientas, al terminar nos pedira reiniciar eclipse, reiniciamos.

Cuando reiniciamos nos aparece una ventana donde nos pide instalar o seleccionar la carpeta donde se encuentra el Android SDK, como podemos recordar ya habiamos descargado, el Android SDK, seleccionamos “ “ y seleccionamos la carpeta donde se encuentra el Android SDK y damos click en siguiente. nos aparecera un ventana donde nos invita a compartir nuestros datos para estadisticas, escogemos una opcion y damos click a “Finish”.




ANDROID SDK PLATAFFORM SUPPORT

Ahora en eclipse vamos a la opción Window>Android SDK Manager


nos aparecera la siguiente ventana, donde marcamos las herramientas que necesitamos, las herramientas que tenemos marcadas por defecto deberian ser suficientes para desarrollar pero para utilizar “QCAR” vamos a necesitar ademas las que marqué.


Aceptamos los terminos y condiciones, damos click en “Install” y esperamos a que se descarguen las herramientas.



Una vez hecho esto ya tengo las herramientas para empezar a generar aplicaciones en Eclipse para la plataforma Android.

Fuentes:
http://www.evilcodingmonkey.com/2011/04/22/augmented-reality-on-android/

jueves, 2 de febrero de 2012

Clase modelado y simulación de sistemas dinámicos

Sistemas integrados

[Imagen obtenida de: http://studentprojectideas.in/wp-content/uploads/2011/08/embedded-systems.jpg]

¿Qué es un sistema integrado?

Estos se consideran sistemas de computación diseñados para realizar tareas especificas y cuentan con pocas funciones. Este normalmente incluye un computador programable como un microcontrolador o un microprocesador pero no se considera a este un computador de propósito general.

Características:
- Tiene un funcionamiento especifico.
- Ya que estos se pueden fabricar en grandes cantidades, se busca reducir los costes lo cual provoca que los sistemas embebidos suelan usar un procesador relativamente pequeño y una memoria pequeña.
- Puede ser un sistema independiente o parte de un sistema mayor.
- Usualmente no necesita memoria secundaria.
- comúnmente deben reaccionar a cambios en el ambiente y hacer cálculos en tiempo real.

Hardware

Como ya sabemos el hardware es cada componente físico que conforma nuestros sistemas, a diferencia de la programación común, para crear sistemas integrados es necesario tener muy en cuenta el hardware con el que estamos trabajando.

Microprocesadores
Un microprocesador se refiere a un circuito integrado de varios miles de transistores que tiene la capacidad de realizar una gran cantidad de funciones y tareas.

Existen tres tipos de microprocesadores los cuales son:


  • Microprocesadores de uso general: Es un dispositivo programable adaptable a una gran variedad de aplicaciones, cuenta con memoria para ejecución de programas ya que no se conoce a ciencia cierta cuál programa será ejecutado.
  • Procesadores de propósito específico: También llamado acelerador y periférico. Se diseña para ejecutar exactamente un programa. 
  • Procesadores específicos de aplicación: Es un procesador programable optimizado para una clase particular de aplicaciones.


Microcontrolador:
Un microcontrolador es un tipo de microprocesador de tipo específico de aplicación optimizado para aplicaciones embebidas.

Ejemplos de microcontroladores:

  • PIC
  • AVR de Atmel
  • 68HC05 de Freescale
  • Mics-68 de Intel

[imagen obtenida de:http://upload.wikimedia.org/wikipedia/commons/thumb/1/18/PIC18F8720.jpg/220px-PIC18F8720.jpg]

Sensores
Un sensor es un dispositivo eléctrico y/o mecánico que convierte magnitudes físicas en magnitudes medibles de dicha magnitud.

La señal medida usualmente debe transformarse a una señal discreta para poder interpretarse esto se logra acondicionando la señal utilizando instrumentos especiales para esto y después se convierte a señal discreta utilizando con convertidor analógico/digital(A/D).

Tipos de sensores:


  • Pasivos: Son los que necesitan energía externa para su funcionamiento.
    • Resistivos: Su medición se basa en la variación de una resistencia.
    • Capacitivos: Su medición se basa en la variación de la capacidad de un condensador.
    • Inductivos:  Su medición se basa en la variación de la inductancia de un bobina.
  • Activos: Estos generan su propia energía.
Algunos ejemplos de sensores son:

  • Sensores de temperatura.
  • Sensores de luz.
  • Sensores de sonido.
  • Sensores de contacto.
  • Sensores de presión.

[imagen obtenida de:https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj71_R0SpnL8iwKHNXWDF0Y22fqjpYEtvUnUVb4HkZoYKJHrTvicQZjfsb3uiD5h298qVEs7lNHYJyMWRXqTIAXxpJ6jK7JVvwNWWUR7FruuAERjEir8pcXA78pCV_0WBjfT3eYlxK_tmjo/s1600/sensores.jpg]

Memoria
La memoria es necesaria en los sistemas integrados, ya sea para guardar el programa que va  a ejecutarse como para guardar el valor de datos necesarios para uso posterior.

Los tipos de memoria comunes en sistemas integrados son:

  • RAM(Random Access Memory): Esta es una memoria que nos permite leer y escribir rápidamente datos. El inconveniente es que estas memorias necesitan siempre estar alimentadas por corriente eléctrica y una ves que se deja de suministrar esta se pierden los datos por lo cúal se le considera una memoria  volátil.
  • ROM(Read Only Memory): En este tipo de memoria los datos no son fácilmente modificables pero los datos no son volátiles.

[Imagen obtenida de: http://static.ddmcdn.com/gif/microprocessor-ram.jpg]

Aplicaciones o ejemplos del computo integrado

Algúnas de las aplicaciones de este tipo de sistemas son las siguientes:

  • Teléfonos móviles
  • Cámaras digitales
  • Robots
  • Maquinas expendedoras
  • Servomotor
  • Lavadoras
  • Microondas
  • Juguetes asesinos.
  • Controladores de partes periféricas de las computadoras.
  • Control remoto de televisores.
  • Sistemas biomédicos.

Aunque cada vez es mas común encontrar este tipo de sistema en cualquier aparato eléctrico.

referencias:
http://www.ciens.ucv.ve/escueladecomputacion/documentos/archivo/88
http://es.wikipedia.org/wiki/Sistema_embebido
http://www.dauniv.ac.in/downloads/EmbsysRevEd_PPTs/Chap01Lesson_6Emsys.pdf
http://es.wikipedia.org/wiki/Instrumentaci%C3%B3n_electr%C3%B3nica#Acondicionadores

Laboratorio de sistemas integrados