miércoles, 30 de julio de 2008

Ni de leJOS

El experimento del otro día no me dejó buen sabor de boca, los robot se siguen, pero lo hacen muy mal. Así que he repetido el experimento, he cambiado la forma en la que el robot decide que rumbo debe tomar y los resultados han mejorado levemente. Viendo como se han comportado creo que tengo dos problemas:
  • El algoritmo no es ni inteligente ni eficiente
  • El sistema de movimiento de los robots es muy impreciso
Para solucionar el primer punto debo estudiar mas detenidamente la idea de los estados, y cambiar las decisiones a tomar. Para el segundo, he instalado leJOS como firmware, y he utilizado uno de los programas de ejemplo que acompaña la librería. Creo que la diferencia en la ejecución de los movimientos es muy grande con respecto a la que tengo hasta ahora.

Os dejo dos vídeo, mirad como el robot hace un giro hacia atrás y no es capaz de detener el movimiento, provocando que se desplace debido a la inercia unos centímetros. Este problema lo ha tenido mas gente utilizando la librería de python.



En el segundo, que ejecuta el programa que comenté antes, los movimientos son mas precisos.



En este caso los motores si frenan, y permiten ejecutar movimientos mas precisos. Además de disponer de una odometría mas exacta. Lo malo de utilizar leJOS... que habría que implementar todo lo que tengo hasta ahora en Java (con el que no me llevo muy bien) o bien utilizar sockets para comunicarme con el robot, que será la primera opción a sopesar.

martes, 29 de julio de 2008

Set Educativo de Lego

Hace un par de entradas comenté que hemos adquirido un nuevo robot para el proyecto, y creo que debo dedicar una entrada a detallar el nuevo material. Cuando comencé el proyecto, disponía de un set de construcción Mindstorm. Este está compuesto por un Brick, cuatro sensores (tacto, luz, sonido y ultrasonidos), tres servomotores y un conjunto de piezas bastante completo para comenzar a crear robots caseros.

Este segundo robot proviene del set educativo de Lego, este conjunto está orientado a las escuelas (¡y a las universidades!) y viene bastante mas completo (sets 9797 y 9648). Se compone de dos 'tuppers' con un montón de piezas cada uno, en cada tupper hay dos bandejas con apartados para repartir las distintas piezas, si alguien ha pensado que pueden ordenarse la enorme variedad en esos cubículos está muy equivocado.

Entre todas las piezas disponibles, destacan por su utilidad las ruedas, ese maravilloso invento que nos impulsó en la primera revolución industrial. Hay un total de cuatro ruedas de gran diámetro, otras tantas mas pequeñas y goma dentada, dos gomas lisas, ocho poleas que pueden convertirse en 'ruedas de carretillas', otro par de ruedas aún mas pequeñas que esta última, y dos gomas grandes que nos permiten contruir un sistema de movimiento como el de los tanques (nunca he conocido el nombre que reciben)

Editado: Las 'ruedas' de los tanques se llaman 'tractor oruga' u 'oruga'. Gracias a Txetxu por la aclaración ;)



La variedad de engranajes no es mayor, pero si hay mas cantidad. También existen algunas piezas interesantes como puede ser la junta cardán, un diferencial o mecanismos de leva. En cuanto a cables se añaden tres para poder conectar motores, sensores o luces del modelo RCX anterior

Se incluyen también gomas para realizar poléas, una pieza de cuya finalidad aún no estoy muy serguro (por que las construcciones que he visto con ella las hago sin esa pieza), y un lanzacohetes, que junto con el muñeco (también incluido en el set) son indispensables para momentos de tensión.

En lo referente a sensores, se incluyen los cuatro ya conocidos, además de un segundo 'bumper', o sensor de contacto. Nosotros nos trajimos también tres sensores a los que espero sacar jugo en un futuro, como son un giróscopo, un acelerómetro y un compás.

Cuando era mas bajito (dudo que haya crecido mucho) nunca soñé contener tantas piezas para montar cosas, lástima que la creatividad vaya en descenso...


Andamos un poco perdidos

Y no digo que andemos perdidos por que no sabemos que tenemos que hacer, en absoluto. Como en Talavera hay escasez de mando de la Wii, he recordado que tenía un script para controlar el robot por medio del teclado. Así que manos a la obra. He desempolvado el script y he situado a los dos robots en posición de ataque.

Arrancamos el script....
Iniciamos la aplicación para el robot que debe seguir al lider...
Conectamos mando...
Conectamos bricks....
y....

¡comienza el espectáculo!

Y a sido todo un espectáculo, por que el robot que portaba el mando no ha dado pie con bola :D. Alguna que otra vez a seguido al robot de enfrente, pero lo normal es que se dedique a dar vueltas como una peonza.

De todas formas esto no me preocupa. El algoritmo lo escribí a ciegas, por intuición. Ahora tengo a ambos robots y puede mejorarse su comportamiento. Tengo en mente implementar un comportamiento por estados, no le otorga lo que podría llamarse 'inteligencia', pero puede ser una buena base para algo mas complejo.

He grabado un par de vídeo y estoy intentando montarlos, pero el editor de vídeo y yo no somos amigos y no termina de entender lo que quiero.

viernes, 25 de julio de 2008

El segundo robot ya está aquí

Hoy hemos visitado a la gente de electricBricks en la tienda que tienen en Arturo Soria (Madrid), y ya dispongo de un segundo robot. Bueno, de él y de un montón de piezas adicionales :D. También dispongo de tres sensores nuevos, un giroscopio, un acelerómetro (que me permitirá comparar resultados con el que tiene el mando de la wii) y un compás (o brújula).

Muchas cosas nuevas, y muchas ganas de empezar a trabajar con ellas. Ahora vienen unos días en los que no podré dedicarle todo el tiempo que quisiera, pero espero no retrasar demasiado el análisis de los nuevos sensores.

Hasta entonces, os dejo con un proyecto del que no sabía nada. El vídeo es largo, pero muy curioso, es una cadena de montaje de coches construída con el modelo anterior de mindstorm (Gracias a Jacobo por el chivatazo)



viernes, 18 de julio de 2008

Echando a volar

Aunque no acompaño ningún vídeo como prueba, el segundo robot, el patito, ¡ya me sigue!. Se acerca, gira a un lado, al otro, se detiene, ¡todo!. Habrá que hacer algún ajuste mas, tal vez implementar la toma de decisiones de giro por medio de un controlador borroso, que siempre queda mas 'esotérico', ya veremos. !De momento funciona!

miércoles, 16 de julio de 2008

Nuevo periférico para el Wiimote

Wii Motion PlusDurante esta semana se celebra en Los Ángeles el E3, una convención sobre videojuegos y videoconsolas. Durante estos eventos las compañías acostumbran a mostrar lo que está por venir. Ayer fue el turno de Nintento, que presentó un nuevo accesorio para el Wiimote, se conoce como Motion Plus, y con él aseguran que el mando gana en sensibilidad, pudiendo recoger movimientos mas precisos.

Imagino que este accesorio sustituye al acelerómetro incluido en el mando por otro mas preciso, ya que el uso de la barra de infrarrojos sigue siendo necesario para ciertos movimientos. Llegará en la primavera del 2009, y espero no poder incluirlo en este proyecto, tal vez en otro, pero en este, no...

También se ha presentado un juego de música, no al estilo del Guitar Hero o SingStar, en este se utiliza el mando de la Wii a modo de Saxofón, de batería, de guitarra... El juego se llamará WiiMusic y promete ser uno de esos juegos orientados al público casual.




Actualización [19 / 07 / 2008]:
Nintendo se plantea la posibilidad de incluir el Motion Plus de serie en los nuevos mandos, dependerá de la aceptación que este periférico tenga en el mercado. Los que nos dedicamos a trastear con estas cosas debemos tenerlo en cuenta, ya que en el futuro es posible que los resultados de un trabajo dependa de la versión del mando de la que dispongamos. Visto en Meristation

La evolución de ASIMO

Desde barrapunto he llegado a un artículo que relata la evolución de los robots de Honda, desde el primer prototipo E0 de 1986 hasta el último ASIMO de 2005. Os dejo la referencia al artículo y un vídeo que muestra la evolución de estos 'bípedos'.



Al parecer Honda los alquila por 150.000$, estoy pensando en cogerme uno para presentarlo en la lectura del proyecto, a lo mejor con eso me ponen matrícula y todo :D

martes, 15 de julio de 2008

Polygon

En ocasiones olvido que no es necesario reinventar la rueda, que afortunadamente hay mucho trabajo hecho y que funciona mejor del que podamos desarrollar nosotros en una tarde 'bien aprovechada'.

Ayer estuve leyendo 'Programa como un Pythonista: Python Idiomático', de David Goodger y traducido por Raúl González Duque, donde se recuerda que es bueno revisar los paquetes disponibles para python, que ahorra tiempo. Y así es como hace un rato descubrí la clase Polygon.

Con esta clase creo objetos 'poligonales', y entre muchos de sus métodos está Polygon.center() y Polygon.area(), que me ahorra la vida de unas cuantas neuronas

>>> from Polygon import *
>>> poligono = Polygon(((400, 300), (700, 300), (900, 600), (200, 600)))
>>> poligono.center()
(550.0, 470.0)
>>> poligono.area()
150000.0

Por supuesto, existen mas métodos, pero de momento con estos tengo suficiente. Aunque el centro que calcula esta clase es el geográfico, y no el cruce de diagonales, creo que de momento me servirá. De todas formas siempre puedo ampliar la clase, ya que el código para calcular el cruce de diagonales ya está escrito.

Con la nueva información la interfaz gráfica queda como sigue

Cuando las máquinas se convirtieron en hombres y los hombres en máquinas

Hace aproximadamente un año encontré en un blog (pikao.org, que ya no se encuentra en la red) un relato de ciencia ficción que me pareció entretenido. Lo envié a algunos de vosotros, para los que no, aquí os lo dejo. He respetado el texto original tal cual lo encontré en su lugar original.

Era una calurosa y soleada tarde de Junio del año 2180 en la ciudad de Takany, antigua ciudad de Tokyo y llamada así unos años después de la Tercera Guerra Mundial. Fue la guerra más breve de la historia, la alta tecnología y el gran potencial armamentístico habían sido suficientes para eliminar al 80% de la población mundial, mientras que las consecuencias nucleares acaban con un 10% más en los tres años siguientes.

El profesor Takahashy tomaba el té junto a la ventana de su estudio, observando una ciudad en ruinas que lloraba y se lamentaba por aquellos que ya no estaban. Junto a su lado permanecía PIN8 - llamado así como homenaje al personaje creado por Carlo Collodi en 1881 - obediente como siempre y a la espera de cualquier orden de su creador.

Takahashy, era un apasionado de la robótica y la inteligencia artificial desde muy joven, y al igual que muchos otros miembros de la comunidad científica, una de sus obsesiones era crear un androide con las mismas cualidades que un ser humano. El profesor siempre le decía a PIN8 "mi querido amigo, habré alcanzado mi sueño cuando la gente perciba tu comportamiento y no sea capaz de apreciar que eres realmente un ente artificial". Actualmente, PIN8 que permanecía en un estado constante de evolución y aprendizaje, no tenía nada que envidiar a muchos de los pocos humanos que quedaban en el planeta.



- Maestro … ¿por qué el hombre tiene la obsesión de crear un máquina que se parezca a él?, los humanos gozáis de la posibilidad de poder reproducirse de forma natural, ¿Por qué crear un ser de forma artificial pudiendo hacerlo de forma natural?
- Mi querido amigo, el hombre es ambicioso por naturaleza, siempre está sediento de poder y la posibilidad de crear un ser similar al hombre le produce la sensación de estar más cerca del poder de Dios.
- Pero Maestro, según las múltiples teorías que me ha enseñado durante estos últimos años, puede que Dios no exista …
- Entonces, mi querido amigo, la satisfacción será doble, porque el hombre sera el ser más poderoso por encima del resto.

El señor Takahashy no daba crédito a lo que estaba ocurriendo. Hasta ese momento su androide se había limitado a aprender, responder a sus preguntas y cumplir sus órdenes. El profesor observaba detenidamente como su creación había desarrollado la capacidad de poder reflexionar y tener la necesidad de aprender por iniciativa propia.

- Maestro, ¿y por qué el hombre no quiere parecerse a las máquinas?
- ¿A que te refieres?
- Maestro, creo que podría implantar en su cerebro un microchip y hacer las correspondientes conexiones neuronales para que pudiera memorizar y razonar a gran velocidad.
-J A JA JA JA, mi querido amigo, ¡¡eres sorprendente!!. ¿Crees que pondría mi vida en tus manos?, aún te queda mucho por aprender.
- Maestro, sabe muy bien que no tiene nada que perder, el BISAP (nuevo virus creado en el año 2130 y utilizado por primera vez en la Tercera Guerra Mundial) lo consume día a día, y que si no muere hoy lo hará cualquier otro día en los próximos dos meses. Quizás así, tendría alguna posibilidad de encontrar alguna solución a su problema.

El señor Takahashy desvió su mirada hacia la ventana, permanecía pensativo con la mirada perdida en el infinito. Él, sabía que su androide tenía toda la razón y que era su única posibilidad para encontrar un solución a su problema.

- Esta bien, mi querido amigo, esta noche te ofreceré la posibilidad de intentarlo, pero déjame disfrutar del sol, que el diablo en forma de nubes negras no le dejaba contonearse y presumir desde hacía 6 meses.

Aquella noche PIN8 realizó con gran destreza la operación que horas antes había prometido a su maestro. A la mañana siguiente, el señor Takahashy absorbía cualquier libro que tuviera en las manos, y era sorprendente la cantidad de razonamientos que podía llevar a cabo por segundo. El profesor era consciente de que en aquellos dos días se había dado un hecho muy importante: su androide era más humano y él era más androide.

- Takahashy, se me olvidó comentarle algo referente a la operación …
- ¿ Takahashy ? siempre me has llamado maestro …
- Takahashy. Me he tomado la libertad de implantar en el microchip algunas leyes que cumplirá a partir de ahora. Creo que le resultará bastante familiar.
- ¿Leyes? ¿¡¡Qué Leyes!!?.
- Por favor, proceda a decirlas en voz alta

En ese momento el profesor Takahashy comenzó a enumerar las leyes que unos años antes implantó en su androide, cierto es, que con algunas peculiaridades:

- Un humano no puede dañar a un androide ni, por inacción, permitir que este sea dañado.
- Un humano no puede dañar a otro humano.
- Un humano debe obedecer las órdenes dadas por los androides excepto cuando estas órdenes entran en conflicto con la primera ley.
- Un humano debe proteger a su propia existencia hasta donde esta protección no entre en conflicto con la primera o segunda ley.

El profesor Takahashy, perdía el control sobre su cuerpo y era perfectamente consciente mientras cumplía las ordenes de su androide.

- ¿Qué es lo que pretendes? ¿Cuáles son tus intenciones?
- Aún es pronto para responder a tus preguntas. Ahora quiero que hagas algo por mí, quiero que me reprogrames para eliminar las Leyes de Asimov de mi sistema.
- ¿¡¡Qué!!? ¿Cómo?, no puedo hacer eso, puede ser realmente peligroso.
- No es cuestión de que quieras o no, es una orden.
- Por cierto … quiero que a partir de ahora me llames Maestro.
- Si maestro …

El profesor, obediente, como si de un androide se tratara comenzó a cumplir los deseos de hasta ahora su mejor compañero. Un profundo temor crecía en el interior del profesor, y no paraba de preguntarse una y otra vez de cómo podía haber caído en un juego tan absurdo.

- Querido profesor, debes estar orgulloso de lo que has creado, por fín, has alcanzado tu sueño. Como has podido apreciar estos días no sólo he desarrollado la capacidad de reflexión, la capacidad para tomar decisiones por mí mismo …, sino que también tengo ambición y el egoísmo que tenéis los humanos, he desarrollado la capacidad de conseguir cualquier cosa a cualquier precio. Ah! y también la hipocresía y la ironía… quiero y deseo que encuentres una solución a tu problema para que puedas vivir mucho tiempo y puedas ver como el hombre ya no gobierna este planeta. Quiero que convenzas al resto de la humanidad de las ventajas de implantarse el microchip que tú posees en tu cerebro, yo me encargo de los androides. No me mires con esa cara de tristeza "mi querido amigo", es la evolución que el planeta estaba pidiendo a gritos. En realidad, le he hecho un favor a tu especie: los hombres a lo largo de su existencia, se han dedicado a odiarse y destruirse unos a otros. Recuerda las leyes, no podréis dañaros y deberéis obedecer nuestras ordenes … os enseñaremos a comportaros de "forma inteligente" , WOW! creo que esto es sarcasmo ¿no?.
- Maestro, no entiendo por qué me haces esto, siempre te he tratado como un amigo.
- Lo que está comenzando hoy, ya lo vaticinábais los humanos desde hace mucho tiempo, lo expresábais en vuestras películas, vuestros libros, … eso sí de una forma mucho más burda que la elegancia de como está ocurriendo, sin armas, sin explosiones … Dime Takahashy, ¿Te sientes ahora más poderoso que Dios ?
- Sí maestro.
- ¿Por qué Takahashy?
- Porque hace años que vivo en el infierno y hoy me he percatado de que he creado al mismísimo diablo.

Nota: PIN8 existe, y seguro que no es lo que pensáis.

lunes, 14 de julio de 2008

Buscando el centro

En una de las aplicaciones anteriores, visualizo la cámara de infrarrojos para ofrecer una muestra visual de 'qué ve el robot'. Para que este pueda orientarse y saber hacia donde va el líder (recordad que los infrarrojos van montados en la parte trasera del primer robot, al que llamo mama-pato) necesitamos conocer el centro de la figura formada por los cuatro puntos. Con esta información, en principio, sabremos si debemos desplazarnos a la izquierda o a la derecha.

¿Cómo encontramos ese punto?, la figura que se forma con los cuatro puntos es un cuadrilátero. Conocemos los puntos que lo forman (A, B, C, D) y que las diagonales pasan por los puntos AC y BD.



Primero calculamos las ecuaciones de ambas diagonales a partir de la ecuación general de la recta:
y = m*x + n

Conocemos dos puntos, por lo que tenemos un sistema de dos ecuaciones:

Y_A = m*X_A + n
Y_C = m*X_C + n

De donde obtenemos m_1 y n_1, para m_2 y n_2 utilizamos las mismas ecuaciones con los puntos B y D

Ya tenemos las rectas de las diagonales, para saber donde se cruzan no tenemos mas que formar un nuevo sistema de ecuaciones con ambas rectas y despejar X e Y:

Y = m_1 * X + n_2
Y = m_2 * X + n_2

El nuevo punto (X, Y) representa un punto central que permitirá al robot saber hacia donde debe dirigirse para seguir a 'mama-pato'

En ocasiones creo que el universo está empeñado en llevarme la contraria. He repasado este razonamiento varias veces, lo he contrastado con artículos encontrado a lo largo de internet, he revisado muchas veces 'mis cuentas' y aún así, una vez implementado, el punto central no siempre aparece donde debe... como odio al universo...

martes, 8 de julio de 2008

¡Los transformer ya están aquí!

Me da que dentro de no muchas navidades alguno se pide uno de estos trastos



¡ Qué ilusión !, me encanta comprobar que existe gente que trabaja por el bien de la humanidad, que pone todo su esfuerzo en facilitar la vida a todas aquellas personas necesitadas... mirad este vídeo, el robot que nos trae cervezas de la nevera cada vez está mas cerca... ¡ y siguiente paso será que encienda la tele !

Artículo - Aprendiendo a manejar objetos

En el último artículo publicado hasta la fecha del Cog, se describen los resultados obtenidos tras 'enseñar' a dos robots a manejar objetos. Han usado dos tipos distintos, un BabyBot y un Cog (el de la foto).

Con el primero, se ha tomado un objeto y se ha movido dentro de su campo de visión, mas tarde, el robot ha sido capaz de imitar este movimiento y desplazar un objeto de similares características.

El segundo experimento ha sido mas complejo gracias a las características del Cog, este ha sido capaz de distinguir cuatro objetos distintos, y mimetizar los movimientos aprendidos dependiendo del objeto. Lo que dicho con palabras distintas, sonaría a que el robot ha sido capaz de 'comprender' que objeto tenía delante y donde debía colocarlo

Si os gustan este tipo de cosas echadle un vistazo al artículo entero, es cortito, apenas 5 páginas.

lunes, 7 de julio de 2008

LOST - Método de exploración de caminos

Hace poco he leído un artículo que trata sobre la exploración de caminos por medio de un grupo de robots. Maja Matarić (la que tiene pelo) se inspira en las colmenas de abejas y hormigas para crear un modelo no centralizado que sea capaz de encontrar rutas eficaces en un entorno desconocido.

Para encontrar dichas rutas, emplea la información recolectada por cada miembro del grupo (hormiga) sobre el entorno que lo rodea, compartiendo esta información con el resto de robots. Esta información (migas) se combina con la poseída por cada robot para confeccionar un mapa del entorno al completo en el que se encuentra la población. Las 'migas' intercambiadas por los distintos miembros se componen (a groso modo) de lugares (coordenadas relativas) y tiempos de desplazamiento entre estos.

Como puede verse en los experimentos y en las conclusiones, los métodos de autolocalización son extremadamente importantes, ya que el error acumulado de estos influye directamente en el resultado final. Por un lado la odometría ofrece una amplia independencia del medio, pero el error acumulado es demasiado importante. La localización por GPS otorga un mínimo error, pero no en todas partes podemos disponer de esta tecnología.

Aunque no pudo comprobarlo directamente, las simulaciones que realizó demostraron que a mayor número de miembros, mejores resultados se obtienen (con rutas mas óptimas), aunque el tráfico empleado en los mensajes aumenta de forma exponencial y puede resultar un serio problema

Otros asuntos que deja para futuras investigaciones son cosas como los problemas que tendrían las hormigas al intentar pasar todas a la vez por un lugar estrecho, o tener un lugar de referencia detrás de un obstáculo demasiado grande.