martes, 20 de noviembre de 2012

Reporte

Este es el reporte final de el proyecto, se trato de ua red neuronal que  funciona de interfaz para controlar una red neuronal  y utilizando u sensor como entrada .

La red neuronal por medio de electrodos que se colocan en el antebrazo de una persona para que esta pueda determinar los movimientos que quiere realizar. Los datos que manda el cerebro en forma de frecuecias son interceptados en el antebraso y de esa maneracontrola el brazo robotico. Surgieron unos problemas con la aduana y los electrodos ya que lo tomaron como instrumeto medico y se utilizo un EGG.

El modo en que funciona :

Toma entradas del EGG y se van al preprocesamiento , despues se someten a un filtrado para tomar e ignorar los valores que no nos importan. Una vez tomados los datos que de importancia se colocan dentro de una lista que es la que entra a la red neuronal.

Se trabajo con un brazo robótica que se adquirió en Steren y viene un paquete de componentes electrónicos para armar un brazo mecánico que puede lograr movimientos de hasta de 270° y su pinza puede levantar objetos ligeros hasta de 100 gramos.
Dentro de los movimientos, el robot puede abrir o cerrar la tenaza, bajar o subir el brazo y moverlo hacia la derecha o izquierda, todo esto a través del control remoto integrado.


El brazo funciona con 4 pilas tipo “D”, haciéndolo portátil.

El brazo se movera a la derecha o izquierda dependiendo el resultado que mande la red neuronal en su salida ya sea 1 o 0 respectivamente.


El brazo robótico tiene cinco motores de directa, y para utilizarlo se desarmao el dispositivo y controlamos utilizando un Arduino cada motor por separado para mapear cada uno con una salida de nuestra red neuronal y solo le dimos un alcanse de girdo de 180 grados.


Se utilizo Arduino para controlar cada motor de la neurona y también la idea es utilizarlo como interfaz de las señales recibidas del sensor y también para las señales mandadas al brazo robótico.

En este proyecto se realizaron varios perceptrones uno en el que estuve trabajando fue en un perceptron que pudiera realizar una operacion and, con una cantidad de entradas indefinidas.

El Perceptron es un clasificador y que es uno del tipo más simple de red neuronal artificial . Además es un tipo de red que necesita conocer los valores esperados para cada una de las entradas presentadas; su comportamiento está definido por pares de esta forma:
Ronda: 10
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0
Ronda: 20
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0
Ronda: 30
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0
Ronda: 40
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0
Ronda: 50
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0

Cuando pj es aplicado a la red, la salida de la red es comparada con el valor esperado tj.


Se podria trabajar mas en el perceptron para mejorarlo

Codigo del perceptron


El brazo mecanico se mueve con un codigo echo en arduino se le dio un umbral para que no se moviera ma de lo debido, y las salidas se configuraron como puertos que dan corriente a los motores.

>


Links codigo




perceptron            https://gist.github.com/4117900
brazo mecanico     https://gist.github.com/4117995
preprocesamiento  https://gist.github.com/4118313
repositorio https://github.com/saulG/redesNeuronales

2 comentarios:

  1. Hay un chorro de errores en la redacción del reporte; 8 pts por ello. Tu código no está en el repositorio del resto del equipo y en realidad es una sola neurona y no una red neuronal como debería ser... Van 12 pts por el código.

    ResponderEliminar
  2. Presenta el examen ordinario para subir puntos. Si el resultado después del examen ordinario no basta para alcanzar los 70 puntos, en el extraordinario les pondré a programar SIN internet (guarda lo que ocupes de notas en tu compu) una red multicapa con backpropagation y sumo los puntos que sacas en eso a tu acumulado de primera oportunidad. Pero pues, si estudias bien para el ordinario (libro cerrado), no tendré que ponerte segundas.

    ResponderEliminar