sábado, 29 de diciembre de 2012

Servidor WEB en Raspberry-pi

Como tengo mala memoria y esto me ayuda a refrescarme, pongo un mini-tutorial que me ayuda mucho en momento de instalar y configurar el servidor web en la r-pi.

Lo que necesitamos es instalar un servidor, como la R-pi tiene "poco poder"(poca memoria) es recomendable instalar lighttpd. 

Para instalarlo: 


Este comando crear el directorio /var/www en el cual tendrás que archivar todos los archivos que debe o contendrá tu servicio web.
Si has trabajado antes con Apache o Nginx, sabras que es muy latoso estar logeandote como "sudo" repetidamente para modificar estos archivos.
La mejor solucion es dar permisos al usuario(la R-pi) para evitarnos estos problemas.

En terminal:



Ahora demos un poco de poder a la R-pi, instalemos PHP:
Primero y como buena practica actualizamos nuestros paquetes.

En terminal:


Estos comandos instalan el interprete de PHP y habilita el modulo FastCGI en el servidor Lighttpd. FastCGI acelera los sitios web dinámicos enormemente, así que es buena idea habilitarlo. Ya para terminar tenemos que editar el archivo de configuración de Lighttpd.

En terminal:

y agregamos esta linea al final del archivo:


y reiniciamos para que los cambios cambios se apliquen.



jueves, 27 de diciembre de 2012

Instalar SO a Raspberry desde Linux

Que tal buen día, hoy después de tronar por primera vez el SO de mi R-pi hago este tuto para ayudarles (recordar) a crear su SD booteable desde linux sin tanto rollo. Empecemos...

Primero y estoy seguro que este paso ya lo deberían tener listo, es descargar la ".img" para la R-pi. 
Si aun no lo tienen, les dejo la liga a la pagina oficial para que la vean lo bonita que esta. Si son primerisos como yo, les recomiendo "raspbian".


Una vez descargada, descomprimanla en el escritorio(por facilidad) o donde quieran. Tendrás algo como esto...



Ahora analizaremos las unidades montadas en la PC, para eso contamos la con la instrucción "df- h": 
Primero ejecuten el comando SIN la SD puesta en la PC(esto para ver en que unidad esta montada) verán algo como esto:



ahora inserten la SD y vuelvan a ejecutar la instrucción(notaran la diferencia):




mi memoria esta en sbd, así que lo primero que hacemos sera desmontar las particiones, esto lo hacemos con...


hecho esto, cambiamos de dirección al escritorio(o donde tengas tu ".img") y ejecutamos la sig. instrucción...

sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdb 
No olvides cambiar el nombre del archivo.
esta instrucción puede tomar algo de tiempo.... sean pacientes.



y listo, YA TENEMOS UNA SD_BOOTEABLE.

martes, 20 de noviembre de 2012

Red Neuronal - Presentación final

Bueno para esta entrega final tenemos que comentar que parte fue en la que trabajos cada uno del equipo....

Todos nos juntamos, todos dábamos ideas, cuando uno se atoraba preguntaba en general y si uno de nosotros lo sabia pues le ayudaba, no hay discusión por esa parte, todos apoyaron.

En lo que yo me encargue fue en hacer la Red por clases y una que otra función, anteriormente lo teníamos TODO con funciones lo cual nos era imposible crear capas ocultas, modifique eso y ahora tenemos una red de 3 capaz con 2 entradas y 2 salidas.



Una las funciones de código que se tienen que resaltar es la backpropagation:



El cual nos basamos en la siguiente imagen para obtenerla:



Otra de las Funcione interesante es la de obtener los valores deseados:
Esta es una "mexicanada" porque no es la mejor u óptima pero es una solución sencilla.


Primero se toma como referencia en la coordenada en el que esta y la coordenada final, ambos los guarda en variables y se hace su deferencia, si el valor 1 es mayor a 320 (que es el punto medio de la pantalla en el eje x) significa que hizo un movimiento a la derecha y por los tanto el valor que debe guardar es el "40". Nota la coordenada 0-0 se localiza en la parte superior derecha. En caso de que sea menos al punto medio este hizo un movimiento a la izquierda y por lo tanto su objetivo es el "440". Y eso también aplica para el valor 2(valor en y).



Todo el trabajo lo pueden encontrar en nuestro repositorio.

https://github.com/JonathanAlvarado/kinect_control_interfaz/

domingo, 18 de noviembre de 2012

Tarea 12: Computation Tree Logic

Para está entrada mi ejercicio es el siguiente:


La cual trata de convertirla a CTL, en caso de que sea imposible explicar el porque.

Para que sea mas fácil su construcción, primero definiremos su sintaxis... pero antes que nada definamos los operadores:


Resaltando las palabars claves de nuestro enunciado:
p es verdadera en el estado actual y alguna ruta y en algun tiempo futuro tendra q verdadera.
Lo cual se puede interpretar de la siguiente forma:
EU q
entonces su contrucción quedaria(los puntos celestes es donde se cumplen la condiccioón para "p" y los puntos rojos en para "q"):


Representando la misma expresión con la estrucura de Kripke tendremos:

Estrucura general de Kripke

Estructura de Kripke para "p EU q"


Referencias:
http://en.wikipedia.org/wiki/Computation_tree_logic
A good document on Computation Tree Logic.
http://elisa.dyndns-web.com/~elisa/teaching/sys/valid/ctl.pdf

jueves, 15 de noviembre de 2012

Reporte Lab 6

Problema capitulo 11

Considere el sistema definido mediante:


donde


Obtenga la función de transferencia Y(s) / U(s).


Vamos a usar una funcion ss2tf:

Las salidas num y den son  los coeficientes polinomiales para num(s) y den(s). El numero de filas en num es igual al numero de salidas del sitema. 
[num,den] = ss2tf(a,b,c,d)
Conversion from tranfer function to state-space.
Ahora teniendo la sintaxis y los datos podemos resolver el problema.
Utilizando el comando, apartir del numerador y el denominador se puede obtener la funcion de transferencia.






REFERENCIAS:

http://www.uhu.es/antonio.barragan/content/manual-ejemplos-matlab-octave





martes, 6 de noviembre de 2012

Teoría de Control aplicada en la visión robótica.

En el este PDF explica detalladamente este tema, mi tarea consiste en leerlo y resumir como es importante la teoría de control en la ingeniería.

EL pdf nos explica que el problema principal es crear robots autómatas que puedan dar asistencia a humanos tales como el cuidado de la salud. Esto se puede facilitar usando un proceso jerárquico POMDPs. 

Como funciona POMDPs: 

Este método consto de 3 niveles jerárquicos. El nivel mas "alto" POMDP("HL-POMDP") escoge una secuencia de imagenes 3D y las procesa basadas en las tarea("Donde buscar?"). EL nivel "intermedio" POMDP("IL-POMDP") analiza las imagenes seleccionadas y resalta las regiones de interés en las imagenes bajo la tarea("Que proceso"). Finalmente este modelo pasa por el ultimo("LL-POMDP") nivel donde procesa cada imagen tomada y busca la tarea especifica("Como procesar"). 


El "alto" nivel(HL-POMDP) se disminuye el tamaño/rango de decisión esto base a políticas/normas previamente establecidas. 

Cuando el robot detecta un objetivo, se calcula la distancia relativa hacia el objetivo. De cualquier el modo de orientación de la observación se incrementara la complejidad eliminando los espacios dudosos. 

De los principales cosas son las políticas restringidas que incrementarían los zonas de búsqueda visual, la propagación de creencia automática entre los niveles de la jerarquía y los modelos aprendidos de la actividad de los operadores visuales. Como resultado de esto el robot es capaz de hacer una secuencia de movimientos fiables, detección visual y los operadores de procesamiento pueden llevar a cabo la tarea en cuestión. 


Expresión ω-regular

La tarea de esta semana consiste en:

"Inventen una expresión ω-regular con por lo menos dos símbolos y por lo menos dos operadores. Dibujen el NBA que le corresponde."

Que son las expresiones Regulares ?
          Una expresión regular, a menudo llamada también patrón, es una expresión que describe un
          conjunto de cadenas sin enumerar sus elementos.

Construcción de expresiones regulares
         Un cuantificador tras un carácter especifica la frecuencia con la que éste puede ocurrir. Los
         cuantificadores más comunes son +, ? y *:

          + => El signo más indica que el carácter que le precede debe aparecer al menos una vez. Por 
         ejemplo, "ho+la" describe el conjunto infinito holahoolahooolahoooola, etcétera.

          ? => El signo de interrogación indica que el carácter que le precede puede aparecer como mucho una
          vez. Por ejemplo, "ob?scuro" casa con oscuro y obscuro.

          * => El asterisco indica que el carácter que le precede puede aparecer cero, una, o más veces. Por
          ejemplo, "0*42" casa con 42042004200042, etcétera.

Esta es mi expresión: 

 y una vez definida, podemos dibujar su NBA (Nondeterministic Büchi Automaton):



Referencias






jueves, 1 de noviembre de 2012

Reporte LAB 5

Reporte Semanal. Capitulo 8. Libro: Modern_Control_Engineering__4t

Considere un sistema de control con retroalimentación unitaria con la siguiente función de transferencia de trayectoria directa:




Dibuje los lugares de las raíces para el sistema. Si el valor de la ganancia se fija en 2, ¿donde se localiza los polos en lazo cerrado?

La ecuación característica para el sistema es:



si "k" es igual a 2, entonces la ecuación característica se convierte en



Los polos de lazo cerrado se ubican de la sig. manera....


Este es un ejemplo en octave para encontrar los polos de lazo cerrado. 



Hice este programa en octave para graficar las raíces así como también el resultado de "rlocus".





This is the code...


martes, 30 de octubre de 2012

Entrada 3 - Clase

Este es el momento en el tenemos que checar y hacer un reporte de como funciona nuestro sistema, para eso, tenemos que darle valores a nuestra función de transferencia.

Nuestra ecuacion de transferencia es la siguiente:

//

//

Esta grafica muestra el comportamiento de los polos y ceros de la funcion de transferencia.
.

Como vemos la gráfica comienza a partir del cero positivo, y por lo tanto es inestable.

Las siguientes gráficas son el resultado con un valor de entrada y con un ruido.


Como vemos todas son positivas por lo tanto es inestable.

sistema de transiciones

Para esta entrada, haremos un sistema de transiciones para x sistema.

Me enfocare a realizarlo para un clima.



Componentes del sistema 

Los botones => Encendido, apagado, subir o bajar temperatura, apagado automático.
EL Clima => El esclavo, hace lo que se le ordena.
La Persona => El líder, ordena que es lo que pasara.

Estados(Componente) => Transiciones

 Esperando(Persona) => Activar/desactivar el clima.
 Apagado(Clima) => El clima esta apagado y esperando.
 Encendido(Clima) => El clima empieza a funcionar en su temperatura inicial.
 Inicial(Botón) => Botón ON presionado.
 Checar(Clima) => Checar tiempo de apagado automático.
 Subir(Botón) => Aumentar temperatura.
 Bajar(Botón) => Disminuir la temperatura.
 Tiempo(Botón) => Aumenta o Reinicia el contador de Apagado automático.



jueves, 18 de octubre de 2012

Reporte 4

Para este reporte tenemos que resolver el siguiente problema...

Obtenga de forma analitica y de forma computacional el tiempo de subida, el tiempo de pico, la maxima sobreenlogación y el tiempo de acentamiento como respuesta a un escalon unitario del sistema en lazo cerrado dado por


lo primero que haremos es factorizar...

 2.- Vamos a obtener el valor de "Wn"...

3.- Despues utilizando en la formula

recordemos "Kk"....

y sustituyamos...

con el valor de "z" podemos sacar el tiempo pico(tp) con la sig. formula...
"wd" se sustituye por la sig. formula...
Como dato el valor de "pi" lo truncaremos a 3.14 por que asi lo maneja el libro.


Sustituyendo valores...

  tp = 0.5307

  Ahora saquemos la maxima sobreenlogación

 Despues pasaremos a sacar la el tiempo de acentamiento

para la formula anterior necesitamos el valor de "wd"


ahora calcularemos "B" y "ts"...