Buscar en Google

martes, 16 de diciembre de 2008

Robots inspirados en la naturaleza

La verdad es que si la naturaleza ya tiene modelos en producción cuya efectividad está más que comprobada, lo lógico es que tratemos de seguir sus pasos e imitarla en la medida de lo posible. A propósito de eso, aquí os dejo un acerca de un pez robot bastante creible (salvo porque parece hecho de perlas de collar, jejeje). Espero que os guste.

AH3-R Robot, un hexápodo muy interesante

Es bastante fluido el movimiento que han conseguido con este robot. Se trata de seis patas, con 3 servomotores cada una. La verdad es que han logrado una coordinación entre patas muy buena, lo que hace su desplazamiento bastante preciso y suave. Me encanta, un buen trabajo desde luego.

Aquí os dejo un video de ejemplo del AH3-R.

viernes, 5 de diciembre de 2008

WILLY-1: Un par de fotos de nuestro robot casero

Ya podéis ver un par de fotitos del enjendro este al que llamamos robot casero. Os podéis reir libremente, ya que la verdad es que si de algo podemos estar seguros es que no ganaremos un concurso de belleza robótica. De todos modos, como ya se dijo al principio, se trata de un robot muy simple, pues el objetivo del proyecto es el software en sí, la IA que le aplicaremos.

Aún tenemos algún problema con su movilidad y es que, aunque avanza y retrocede bastante eficientemente, no lo hace tanto en cuanto a los giros. De momento, las ruedas delanteras patintan en exceso al girar y esto es debido a dos motivos principales (por lo que estamos haciéndole algunos cambios). El primero de ellos es el par de ruedas traseras, que aplican demasiada resistencia, por lo que las sustituiremos por una única rueda loca (de esas que giran libremente hacia un lado u otro - tipo a las de los carritos del carrefour, jejeje). El segundo motivo (menos grave) hace referencia a las ruedas delanteras, ya que al ser pequeñas, tienen poca superficie en contacto con el suelo (y esto lo queremos solucionar con las orugas que desde un principio quisimos ponerle).

Aparte del tema "hardware", la única novedad destacable hasta el momento es que ya he empezado con la programación del bot conversacional (para tratar de dotar a Willy-1 de un sistema semi-inteligente, capaz de reaccionar a órdenes habladas, y responder - con la voz cutrecilla del festival - de una forma medianamente aceptable). El diccionario de palabras lo estoy desarrollando en formato XML. Además usaremos el Sphinx4 para el reconocimiento de patrones de voz, aunque de momento lo único que dice Willy a todo es "no entiendo lo que dices" (vaya exitazo jajaja).

Bueno, como siempre ya publicaré los avances y retrocesos del proyecto.
Un saludo a tod@s!

lunes, 1 de diciembre de 2008

Robots bípedos

La verdad es que si alguna institución se caracteriza por sus avances en el desarrollo de robots bípedos, es sin duda el MIT (Instituto Tecnológico de Massachusetts) - por supuesto, aparte de las grandes megacorporaciones tipo Honda y compañía.

Aquí os dejo un video bastante interesante para los que nos gustan los robots (yo quiero un velociraptor de esos jejejeje).

WILLY-1: ...y nuestro robot empezó a andar

Bueno, antetodo perdonad el retraso en escribir. Ha habido algún progreso con Willy-1, aunque no demasiado (he estado bastante liado con otros menesteres :P). La cosa es que ya anda (y ve). Me está costando horrores colocarle las orugas, por lo que de momento se desplaza con ruedas (dos delanteras, con un servomotor cada una, y dos traseras sin tracción).

En cuanto a los materiales usados hasta el momento:

  • 1 quickcam (desmontada, solo nos quedamos el circuito y la lente)
  • 2 servos para tilt/pan de la cámara (hay kits ya preparados si no te quieres complicar)
  • 2 servos de rotación continua (en realidad cualquier servo puede valernos si lo transformamos a rotación continua, mirad aqui por ejemplo http://www.superrobotica.com/mx400.htm)
  • 4 ruedas (de un coche teledirijido estropeado, bueno lo estropeé yo al desmontarlo)
  • 1 circuito controlador de servos
  • 2 chapones de 20x30 cms aprox.
  • X tornillos, tuercas, arandelas (cuantas mas tengas mejor, nunca sobran :P)
  • 1 segueta y pelillos (para cortar las piezas) + un par de destornilladores.

Bueno, esta es la lista de lo que llevo montado hasta ahora. A ver si esta tarde tengo un rato y le hago algunas fotillos y videos para que lo veais (corre bastante, lo único es que al girar de momento le cuesta un poco).

Ya os iré poniendo más al dia (a ver si esta semana dejo todo el hardware listo y me pongo ya con el programa, que es para lo que monté todo esto).

Un saludo a todo@s!

Henry.

lunes, 10 de noviembre de 2008

WILLY-1: Comunicando nuestro programa con el robot casero, mediante un puerto USB conectado al puerto serie del controlador de servos.

Y nos tuvimos que poner algo técnicos...

Para la comunicación serie en java estoy utilizando la librería gnu.io.* que tiene la clase RXTXPort. Esta clase nos da todas las herramientas necesarias para hacer dicha conexión. Un detalle que hay que tener en cuenta es que es necesario que le digamos a dicha librería que el puerto /dev/ttyUSB0 es un puerto serie.

Primero importamos la libreria.

import gnu.io.*;

Como variables globales de la clase definimos:

InputStream entrada = null;
OutputStream salida;
RXTXPort puertoSerie = null;
int timeout = 10;

Este fragmento de código muestra la conexión con el puerto USB que usa el programa.

private void inicializaPuerto(){

// Nuestro Puerto
String dispositivo2 = "/dev/ttyUSB0";

try{
puertoSerie = new RXTXPort( dispositivo2 );
puertoSerie.setSerialPortParams( 19200,RXTXPort.DATABITS_8, RXTXPort.STOPBITS_1,RXTXPort.PARITY_NONE );
puertoSerie.setFlowControlMode( RXTXPort.FLOWCONTROL_NONE );
puertoSerie.enableReceiveThreshold( 1 );
puertoSerie.enableReceiveTimeout( timeout );
//System.out.println( "Dispositivo Serie abierto" );
salida = puertoSerie.getOutputStream();
entrada = puertoSerie.getInputStream();
}catch(Exception e){
this.textArea1.setText("No puedo abrir el puerto.");
}
}

Para iniciar los servos y enviar los comandos uso estas sencillas funciones. Tened en cuenta que el formato del comando a enviar es el del controlador de servos que uso (SUPER CONTROLADOR DE SERVOS S310175, www.superrobotica.com - voy a tener que pedir comisión por tanta publicidad :P). Como podeis ver, en la inicialización de los servos recorre un bucle del 1 al 8, ya que este controlador permite hasta 8 servos (en realidad se pueden usar hasta 8 controladores de este tipo como si fueran uno solo, lo que nos darias hasta un maximo de 64 servos - pero mejor nos conformamos con 8... que ya esta bien). Estas son las funciones:

public void iniciaServos(){
int i=0;
for(i=1;i<9;i++){>1"+i+"w",(byte)1);
enviaComando(">1"+i+"a",(byte)128);
}
}

public void enviaComando(String myCommand, byte data){
char[] arr = myCommand.toCharArray();
try{
salida.write(arr[0]);
salida.write(arr[1]);
salida.write(arr[2]);
salida.write(arr[3]);
salida.write((byte)data);
//Thread.sleep(1000);
}catch(Exception e){
//...
}
}

Añadiendo un control de tipo Slide para cada servo podemos hacer lo siguiente:

private void slideServo(int modulo, int servo, int posicion){
int miValor = (posicion*254)/100 +1;//.getValue();
//String cadena = new Character((char)miValor).toString();
String miComando = ">"+modulo+""+servo+"a";
this.textArea1.setText(miComando + " - " + miValor);
enviaComando(miComando,(byte)miValor);

}

//Este es el evento de arrastrar el raton en el Slide1
//por lo que necesitamos una de estas por cada servo.
private void jSlider1MouseDragged(java.awt.event.MouseEvent evt) {
// Cambio de valor en Servo 1
slideServo(1,1,jSlider1.getValue());
}


Los slide ofrecen valores de 1 a 100, y los servos de 1 a 255, por eso se hace la pequeña operación para obtener el valor (no os asusteis que solo es una regla de tres simple).

Bueno, después si tengo un rato os pongo más cosillas, a ver si esta semana lo puedo tener armado al completo para subiros un video de como va funcionando el elemento.

Ya sabeis, se agradecen los comentarios.

WILLY-1: Haciendo las paces con la segueta

Bueno, pues este finde me he puesto manos a la obra a sacar las piezas que necesito para ensamblar las distintas partes de Willy-1. Primero recorté una para que sirviera de apoyo al tilt/pan de la camara y para el controlador de servos. Después saqué otras para adaptar la cámara al soporte y varias más para las orugas (aún me faltan justo las piezas que soportarán los ejes de las ruedas).

De momento os pongo ya algunas fotillos que, aunque desenfocadas, dan una ideilla de por donde va la cosa (es decir, muuuuy poco avanzada). Tambien tenéis una captura del programita para el control de los servos que he hecho en Java (con el fantastico NetBeans de fondo :P).


El juego de orugas de goma (de www.superrobotica.com)

jueves, 6 de noviembre de 2008

WILLY-1: Comenzamos nuestro primer minirobot

Robots caseros



Llevaba tiempo queriendo iniciarme en esto de la robotica y por fin he comenzado mi primer robot casero. El proyecto se llama Willy-1 y es bastante simplecito, la verdad.

En principio se tratará de un modulo de tracción por orugas (cada oruga será controlada por un servo independiente, con lo que mato dos pájaros de un tiro, el desplazamiento adelante y atrás (ambos servos girando hacia el mismo sentido), y los giros (un servo con sentido opuesto al otro). Sobre éste se montará un segundo bloque que incluye un circuito de control de servos (abajo os pongo mas detalles de los materiales que se van a usar), un montaje tilt/pan de cámara con dos servomotores (lleva el circuito de una quickcam de logitech que he desarmado). Como tengo además dos microservos, los montaré en la parte delantera para colocarle en un futuro un sensor (no tengo muy claro aún si usaré uno térmico, por infrarrojos o por ultrasonidos). También llevará un hub usb donde conectaremos el controlador de servos (con un cable conversor DB9-USB) y la webcam.

Hasta aquí la parte hardware de esta "vergüencilla de los robots caseros", que se complementa con el uso de un PC como controlador principal del sistema (la idea es, una vez programado, colocarle un nanoPC, un microPC, o un EEPC lo mas pequeñito posible). El SO elegido por múltiples razones es Linux, concretamente la distribución Debian.

La parte software la he empezado a programar en Java. La verdad es que hace dos dias que he descubierto el Net Beans y estoy encantao (aunque a veces se le vaya la pinza cuando mueves algún componente en la vista grafica del programa). He instalado las librerias comm y rxtx para java. El primer programita ya lo tengo medio listo y sirve tan solo para calibrar los servos. En cuanto lo termine (espero que sea antes del fin de semana) lo subiré para que podáis echarle un ojillo.

En fin, que me lio a escribir y esto al final es un tostón. En cuanto tenga las piezas del primer modulo recortadas os subiré fotos y los esquemas usados (aunque parezca medieval estoy usando un poco de chapón para estas piezas y la verdad es que siempre fui lentillo con la segueta).

Un abrazo a tod@s!!!
Henry

sábado, 4 de octubre de 2008

Robots impresionantes - Snake Robot

Si de algún robot me he quedado impresionado es, desde luego el robot serpiente ACM-R5, no solo por el presente (el video lo dice todo, aunque lo diga en japonés, las imágenes hablan por si solas), sino por lo que en ciertas manos podría llegar a ser el futuro.


Es alucinante el movimiento y la soltura con la que se maneja dentro del agua. El hecho de ser un robot anfibio, capaz de nadar de ese modo lo hace un objetivo fácil para las agencias de defensa de las potencias de siempre. Claro que siempre tendrían que salvar el tema de la energía (tal vez con algún tipo de sistema de energía mareomotriz, utilizando materiales fotosensibles en las piezas de su cubierta o de su chasis, o ambas, yo que sé).

El caso es que es uno de mis preferidos y quería compartirlo con quienes aun no lo han visto.

Un saludo a tod@s!

martes, 30 de septiembre de 2008

Comenzamos...

Hoy comienzo este blog con la intención de compartir conocimientos y experiencias en el mundo de la informática y otros campos, y con la esperanza de que también me aporte puntos de vista nuevos, que me hagan evolucionar. Igualmente trataré de haceros llegar noticias y eventos que me parecen importantes, y publicaré códigos en distintos lenguages a fin de poder ayudar a gente que se inicia en este mundillo.

Los temas acerca de los que trataré (o al menos pienso tratar) serán LAMP (linux, apache, mysql y PHP), Asterisk (y programación de AGIs y apps para esta fantástica centralita virtual), Robótica e IA (son mis grandes pasiones, aunque reconozco que soy bastante neófito en el tema, por lo que ruego paciencia y muuuucha ayuda).

Espero que volváis pronto por aquí y encontréis lo que buscais.
Un abrazo,

Enrique Altamirano

Noticias tecnológicas