Para ésta entrada escogí el problema P 9.2, el cuál consiste en sacar los diagramas de nyquist y sus margenes.
Funciones:
Para realizar éste problema utilicé la las funciones que nos proporciona octave las cuales son la de nyquist que nos devuelve su diagrama y margin.
jueves, 22 de noviembre de 2012
martes, 20 de noviembre de 2012
Reporte Proyecto Final: Control de velocidad de un motor de corriente directa
Proyecto:
Introducción:
Funcionamiento General:
Principalmente el proyecto esta constituido por 3 partes:
"Control de velocidad de un motor de corriente directa"
Introducción:
Existen diversas situaciones donde el control de la velocidad de un motor es crítica,
por ejemplo, cuando un robot es movido por 2 motores y se quiere avanzar en cierta
dirección, controlar la velocidad de ambos es importante. La velocidad de rotación de un disco duro o un lector de CD/DVD es otro caso. Para ello es necesario adaptar el motor a diversas situaciones de funcionamiento que puedan suceder, por ejemplo, si un móvil va cuesta arriba o cuesta abajo, o cuando existe fricción entre las partes.
Principalmente el proyecto esta constituido por 3 partes:
- Sensor: Que consta de un optointerruptor ITR8102 y un disco horadado como encoder.
- Microcontrolador: El cual es un Arduino UNO que procesa la salida del sensor para adaptar la velocidad.
- Planta: Será el motor eléctrico el cual será controlado.
lunes, 19 de noviembre de 2012
Reporte Final Redes Neuronales
Introducción
La idea del proyecto es realizar una red neuronal que pudiera hacer pronósticos basándose en un historial o una serie de datos proporcionados por el usuario, la idea es integrar éste proyecto junto a otro(plusreports) y éste sirve como historial para predecir sucesos.
Para la arquitectura de la red neuronal, se piden 6 valores, que estos pueden ser días, semanas meses o años y la red neuronal te regresara el séptimo valor.
Aportaciones:
Mis aportaciones principalmente fueron de la entrada y procesamiento de datos:
Aprendizaje:
Para el aprendizaje de la red neuronal, se utiliza el algoritmo de back-propagation junto con la función sigmoidal y el proceso feedforward con aprendizaje persistente.
Seuencia:
La secuencia que sigue el programa empieza en la interfaz, donde el usuario podrá subir un archivo csv (acomodado por fecha, valor), teniendo éste archivo el programa lo separa por fechas y valores acomodandolos en dos archivos uno que es valores.txt y fecha.txt, que esto servirá para su representación, una vez obtenido ésto, el programa lo normaliza en escala de 0 a 1 y corre un python donde será devuelto valores una vez que se haya terminado, se retroalimenta el csv y se muestran en la gráfica.
Código
El código que hace todo ésto se encuentra en la siguiente carpeta:
https://github.com/rafaellopezgtz/neurored/tree/master/entrada
Repositorio:El repositorio se encuentra en el siguiente link, donde mi usuario es jsp
https://github.com/rafaellopezgtz/neurored/commits/master
Demo:
http://neurored.rafaellopezgtz.com/pagina/
La idea del proyecto es realizar una red neuronal que pudiera hacer pronósticos basándose en un historial o una serie de datos proporcionados por el usuario, la idea es integrar éste proyecto junto a otro(plusreports) y éste sirve como historial para predecir sucesos.
Para la arquitectura de la red neuronal, se piden 6 valores, que estos pueden ser días, semanas meses o años y la red neuronal te regresara el séptimo valor.
Aportaciones:
Mis aportaciones principalmente fueron de la entrada y procesamiento de datos:
- Neurona simple
- Interfaz
- Lectura del archivo CSV
- Escalamiento de éste
- Gráficas
- Interpretación de post-procesamiento
Aprendizaje:
Para el aprendizaje de la red neuronal, se utiliza el algoritmo de back-propagation junto con la función sigmoidal y el proceso feedforward con aprendizaje persistente.
Seuencia:
La secuencia que sigue el programa empieza en la interfaz, donde el usuario podrá subir un archivo csv (acomodado por fecha, valor), teniendo éste archivo el programa lo separa por fechas y valores acomodandolos en dos archivos uno que es valores.txt y fecha.txt, que esto servirá para su representación, una vez obtenido ésto, el programa lo normaliza en escala de 0 a 1 y corre un python donde será devuelto valores una vez que se haya terminado, se retroalimenta el csv y se muestran en la gráfica.
Código
El código que hace todo ésto se encuentra en la siguiente carpeta:
https://github.com/rafaellopezgtz/neurored/tree/master/entrada
Repositorio:El repositorio se encuentra en el siguiente link, donde mi usuario es jsp
https://github.com/rafaellopezgtz/neurored/commits/master
Demo:
http://neurored.rafaellopezgtz.com/pagina/
jueves, 15 de noviembre de 2012
Laboratorio 6 de Automatización
Para ésta entrada, me toco obtener la controlabilidad y observabiliad del sistema dado:
Respuesta:
Desarrollo:
Para obtener la observabilidad y controlabilidad del sistema se empleo octave usando la librería de control, con la función de ctrb, obsv y una vez tenidas éstas, emplear la función det, que te de su determinante.
Nota:
Otra de las formas para obtener ésto, es empleando la fórmula respectiva de cada una:
Donde la primera es la de controlabilidad y la segunda de observabilidad.
Cñódigo en Octave
Salidas:
Conclusiones
Donde podemos observar que la salida proporcionada de control y observabilidad da como salida 14 y 5, siendo el sistema completamente controlable ya que mensiona el teorema que este tiene un rango máximo y nuestra salida es dirente a cero, siendo ésto aceptable y el sistema es del todo observable ya que su salida es 5 y en el teorema mensiona que debe de ser diferente a cero.
Referencias:
http://es.wikipedia.org/wiki/Controlabilidad
http://es.wikipedia.org/wiki/Observabilidad
Respuesta:
Desarrollo:
Para obtener la observabilidad y controlabilidad del sistema se empleo octave usando la librería de control, con la función de ctrb, obsv y una vez tenidas éstas, emplear la función det, que te de su determinante.
Nota:
Otra de las formas para obtener ésto, es empleando la fórmula respectiva de cada una:
Donde la primera es la de controlabilidad y la segunda de observabilidad.
Cñódigo en Octave
Salidas:
Conclusiones
Donde podemos observar que la salida proporcionada de control y observabilidad da como salida 14 y 5, siendo el sistema completamente controlable ya que mensiona el teorema que este tiene un rango máximo y nuestra salida es dirente a cero, siendo ésto aceptable y el sistema es del todo observable ya que su salida es 5 y en el teorema mensiona que debe de ser diferente a cero.
Referencias:
http://es.wikipedia.org/wiki/Controlabilidad
http://es.wikipedia.org/wiki/Observabilidad
martes, 13 de noviembre de 2012
Reporte grupal Automatización
El reporte grupal de esta semana se encuentra en el blog de mi compañero Juan Carlos
El equipo esta conformado por:
Juan Carlos
Rafael
El equipo esta conformado por:
Juan Carlos
Rafael
Lógica Temporal
Para ésta semana se seleccionó un ejercicio, el cuál me tocó realizar el siguiente:
14.1.9:
Donde lo podemos traducir como:
pam = profesor esta en la máquina
eam = estudiante esta en la maquina
t t = tres transiciones
Referencias:
http://www.voronkov.com/lics_doc.cgi?what=chapter&n=14
14.1.9:
"If a professor is currently at the machine, there will be no student at the machine for at least the next three transitions."
Donde lo podemos traducir como:
"Si un profesor se encuentra actualmente en la máquina, no habrá ningún estudiante en la máquina durante al menos los próximos tres transiciones."(pam→(¬eam º tt))
pam = profesor esta en la máquina
eam = estudiante esta en la maquina
t t = tres transiciones
Referencias:
http://www.voronkov.com/lics_doc.cgi?what=chapter&n=14
martes, 6 de noviembre de 2012
Lectura Científica
Titulo:
Ejemplos de posibles usos:
Principalmente en los carros autónomos manejando ésto en zonas más grandes, como el prototipo del carro de google, carritos exploradores, etc.
Opinión:
Este tipo de control en lo personal me podría ayudar, ya que en proyectos anteriores buscaba controlar un carrito, pequeños robots o drones en una determinada zona, mejorando la transición que seguiria el robot, como pasar algunos obstáculos.
Desventajas:
Algunas de las desventajas que encontré fue que no muchas veces se buscará una zona determinada, así que depende mucho de las balizas y que éstas al ponerlas en zonas mas grandes el tiempo de transmisión o recepción aumentaría, otra de ellas fue que hoy en día varios sistemas o robots móviles emplean sensores lasers para su correcta calibración o como guía de posicionamiento, siendo esto más exacto y más rapido.
Referencia:
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=220053
"Optimal Estimation of Position and Heading for Mobile RobotsUsing Ultrasonic Beacons and Dead-reckoning".
Descripción:
Este tipo de control es utilizado para el posicionamiento y determinación en ángulo de un robot, cuando se encuentra que las ruedas del robot son imperfectas o se deslizan mucho, causando que se genere errores en la determinación de su posición.
Respuesta:
El artículo mensiona una solución al problema, usando guías ultrasónicos para saber su posición correcta, mejorando lo adaptativo del robot y sus actividades autónomas.
La estructura usada, para la resolución del problema fue usar 6 balizas(emisor de señal) ultrasónicos conectados a un control de transmisión, un receptor compuesto por 8 sensores ultrasónicos (receptores), tomando las señales de las balizas para sacar la estimación de posición y orientación usando el filtro de Kalman, donde éste estima el estado de n dimensional de un sistema denotado por x, dado un conjunto de m dimensiones del vector y. El estado para localizarlo contiene la posición, orientación y velocidad del robot.
El filtro de Kalman ayuda a éste a encontrar el estado oculto de un sistema dinámico lineal, cuando se tiene diferentes valores de señal en tiempos diferentes (siendo éstos las emisiones y recepciones de las balizas).
Donde aplica el control:
El control aplica, al momento de su retroalimentación, ya que las balizas mandan una señal y los receptores calculan los errores de posición, obteniendo así la retroalimentacón que será utilizada, ya sea para emitir su posición correcta actual, corregir su posición, o entre otras que éste destinada a ralizar
Respuesta:
El artículo mensiona una solución al problema, usando guías ultrasónicos para saber su posición correcta, mejorando lo adaptativo del robot y sus actividades autónomas.
La estructura usada, para la resolución del problema fue usar 6 balizas(emisor de señal) ultrasónicos conectados a un control de transmisión, un receptor compuesto por 8 sensores ultrasónicos (receptores), tomando las señales de las balizas para sacar la estimación de posición y orientación usando el filtro de Kalman, donde éste estima el estado de n dimensional de un sistema denotado por x, dado un conjunto de m dimensiones del vector y. El estado para localizarlo contiene la posición, orientación y velocidad del robot.
El filtro de Kalman ayuda a éste a encontrar el estado oculto de un sistema dinámico lineal, cuando se tiene diferentes valores de señal en tiempos diferentes (siendo éstos las emisiones y recepciones de las balizas).
Donde aplica el control:
El control aplica, al momento de su retroalimentación, ya que las balizas mandan una señal y los receptores calculan los errores de posición, obteniendo así la retroalimentacón que será utilizada, ya sea para emitir su posición correcta actual, corregir su posición, o entre otras que éste destinada a ralizar
Ejemplos de posibles usos:
Principalmente en los carros autónomos manejando ésto en zonas más grandes, como el prototipo del carro de google, carritos exploradores, etc.
Opinión:
Este tipo de control en lo personal me podría ayudar, ya que en proyectos anteriores buscaba controlar un carrito, pequeños robots o drones en una determinada zona, mejorando la transición que seguiria el robot, como pasar algunos obstáculos.
Desventajas:
Algunas de las desventajas que encontré fue que no muchas veces se buscará una zona determinada, así que depende mucho de las balizas y que éstas al ponerlas en zonas mas grandes el tiempo de transmisión o recepción aumentaría, otra de ellas fue que hoy en día varios sistemas o robots móviles emplean sensores lasers para su correcta calibración o como guía de posicionamiento, siendo esto más exacto y más rapido.
Referencia:
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=220053
Expresión w-regular
Para ésta entrada se busco hacer hacer una expresión w-regular y una vez tenida sacar el NBA, mi ejemplo a expresar es cuando se intenta entrar a una casa con las llaves
La expresión es la siguiente:
Donde:
El NBA es el siguiente:
Referencias:
http://goo.gl/izfGR
http://goo.gl/BS4IJ
http://goo.gl/5m2Tz
http://goo.gl/Yf8dL
La expresión es la siguiente:
Donde:
- A es indicado (llave indicada)
- B es cambiar (cambiamos llaves)
- C es intento (intentamos con la llave actual)
El NBA es el siguiente:
Referencias:
http://goo.gl/izfGR
http://goo.gl/BS4IJ
http://goo.gl/5m2Tz
http://goo.gl/Yf8dL
jueves, 1 de noviembre de 2012
Tarea 5: Dibujar el diagrama de Bode
Para ésta entrada, me tocó realizar el diagrama de bode de la siguiente función:
Desarrollo:
Así que lo buscado será primero simplificar, para hacerlo más fácil.
Una vez tenido el polinonio es multiplicado por 30.3215
Ahora tenemos el num. y den.
Una vez que se obtiene ésto es mas fácil graficarlo con octave ya que tiene una función propia
Código:
Salida:
Desarrollo:
Así que lo buscado será primero simplificar, para hacerlo más fácil.
Una vez tenido el polinonio es multiplicado por 30.3215
Ahora tenemos el num. y den.
Una vez que se obtiene ésto es mas fácil graficarlo con octave ya que tiene una función propia
Código:
num = [30.3215 39.41795 12.81083]; den = [0 1 0]; s1 = tf(den, num) bode(s1)
Salida:
Result Steganography
The images that have information are:
The content of each one are: a letter, an url and the code of my program.
The code take 2 parameters, the name of the file that contains the information and the name of the image to save.
> criptoImage.py fileInformation.txt image.png > dInformation.txt
To decrypt we can use the next code:
This code only takes the name of the image
code
letter
url
The content of each one are: a letter, an url and the code of my program.
code:
from sys import argv from PIL import Image def openFile(fileName): f = open(fileName, 'r') mensaje = list() for line in f: mensaje.append(line) f.close() return "".join(mensaje) def setMsn(mensaje): m2 = list() mensaje = list(mensaje) for i in mensaje: u = bin(ord(i))[2:].zfill(8) for j in u: m2.append(j) return m2 def getMsn(mensaje): m2 = list() a = 1 b = '' for i in mensaje: b = b+i if(a%8 == 0): m2.append(chr(int(b,2))) b = '' a = a + 1 return "".join(m2) def pixelF(m2, v, count): if(v[7:8] != m2[count]): v = v[:7]+m2[count] else: v = v return int(v, 2) def openImage(fileName, m2): im = Image.open(fileName) rgb = im.convert('RGB') c = 0 while c != len(m2)-1: for i in range(0, im.size[0], 3): for j in range(im.size[1]): b = rgb.getpixel((i, j))[2] v = bin(b)[2:].zfill(8) w = pixelF(m2, v, c) r = rgb.getpixel((i, j))[0] g = rgb.getpixel((i, j))[1] d = tuple([r,g,w]) im.putpixel((i,j),d) if(c == len(m2)-1): break c = c+1 im.save(str(2)+fileName, "PNG") def decodeM(fileName): im = Image.open(fileName) rgb = im.convert('RGB') arrayRGB = list() for i in range(0, im.size[0], 3): for j in range(im.size[1]): b = rgb.getpixel((i, j))[2] v = bin(b)[2:].zfill(8) arrayRGB.append(v[7:8]) return arrayRGB def main(): mensaje = openFile(argv[1]) mensaje = setMsn(mensaje) imagen = argv[2] print imagen w = openImage(imagen, mensaje) m2 = decodeM(str(2)+imagen) print getMsn(m2) main()
The code take 2 parameters, the name of the file that contains the information and the name of the image to save.
> criptoImage.py fileInformation.txt image.png > dInformation.txt
To decrypt we can use the next code:
from sys import argv from PIL import Image def getMsn(mensaje): m2 = list() a = 1 b = '' for i in mensaje: b = b+i if(a%8 == 0): m2.append(chr(int(b,2))) b = '' a = a + 1 return "".join(m2) def decodeM(fileName): im = Image.open(fileName) rgb = im.convert('RGB') arrayRGB = list() for i in range(0, im.size[0], 3): for j in range(im.size[1]): b = rgb.getpixel((i, j))[2] v = bin(b)[2:].zfill(8) arrayRGB.append(v[7:8]) return arrayRGB def main(): m2 = decodeM(str(1)+imagen) print getMsn(m2) main()
This code only takes the name of the image
Suscribirse a:
Entradas (Atom)