viernes, 23 de noviembre de 2007

YATTA!!! robot con fonera!!!

Eureka! el invento de utilizar directamente la conexion ttl da sus frutos...
Voy a exponer a continuacion los problemas que me he encontrado al intentar conectar todo el tinglado:
  • parece que la masa se toma del conector DB9 (el puerto serie), pero al desactivarlo para utilizar ttl, tenemos que darle la masa externamente. En mi caso pensaba que la masa ya estaba, y solo ponia 2 hilos, el Tx y el Rx... La solucion: cojer la masa de la fonera!!! (si es que...)
  • Hasta donde yo pensaba, Tx y Rx son envio y recepcion... Pero segun me han explicado Jaime y Dani (gracias, chicos) Tx es bidireccional, y Rx es el reloj... por lo que el circuito que comunica (en este caso, la fonera) tiene que dar esas conexiones directamente... En resumen, Tx de fonera conectado con Tx de circuito, y Rx de fonera conectado con Rx de circuito.
  • Una vez resuelto el tema del circuito, se me plantea el problema de comunicar ordenes... segun el manual, hay que acabar todas las ordenes con <cr>, que es el caracter ASCII 13... trabajando desde la linea de comandos de la fonera, hay que escribir:

    echo -e "#0 P100 S100 \N016" >/dev/ttyS0.

    El \N016 es el caracter 13 EN OCTAL!!! (el -e permite que se interpreten caracteres como \n, \c...)

martes, 20 de noviembre de 2007

Conexion con TTL

Revisando el circuito que me han mandado (el controlador de 32 servos) he visto que, aparte de establecer comunicacion por puerto Serie, tambien permite la conexion por TTL.
Esto nos simplifica la electronica que tenemos que usar para controlar el robot con la Fonera. Recordemos que la Fonera tiene los conectores TTL y que habiamos puesto un circuito pequeño para su conversion a RS-232... pero si el circuito ya viene con TTL... pues todo en directo y listo!!!

viernes, 16 de noviembre de 2007

Comprimiendo el video del robot

Esto es solo un apunte interesante, ya que el video ocupaba inicialmente unos 22Mb y, gracias a Didnt y el comando ffmpeg, se ha reducido considerablemente (ahora ocupa 2Mb). En concreto, desde linux, podemos hacer:
ffmpeg -i origen.mov -s 4cif destino.mov
Recordar que ffmpeg hay que instalarlo, mirad en vuestra distribucion como hacerlo (en ubuntu, el tipico sudo apt-get install ffmpeg funciona.)

Las fotos

Pues si, he hecho unas fotos y un video del robot en funcionamiento (gracias, camara de fotos digital :), asi que vamos a ver el trasto montado y funcionando...
  • EL robot montado al completo. Lo que hay debajo es la cpu del ordenador al que le he conectado. En esta foto se pueden ver la base, el brazo y la pinza. Lo he sujetado a una madera, asi esta mas estable, ya que cuando se estira hacia delante y tiene un peso, puede llegar a volcar... :P
  • Detalle de la pinza: la verdad es que no es gran cosa, pero el mecanismo, una vez montado, parece de lo mas sencillo para hacer un modelo distinto.
  • El circuito: Esto ha sido una sorpresa. En teoria tiene que venir un controlador de 8 servos, pero me han mandado uno que controla 32!!! Cosa que les agradezco mucho :D
Y por ultimo, pero no menos importante... El VIDEO!!! Ahora podreis deleitaros con este gracioso invento. Vereis que al final pega un golpe al volver a la posicion HOME, es porque en el programa lo hace asi directamente...

miércoles, 14 de noviembre de 2007

Primeras pruebas

Despues de conectarlo todo al ordenador, e instalar el software que viene, encendemos el ordenador y parece que todo va estupendamente (debe ser la primera vez que monto algo y a la primera funciona).
Por lo pronto, el robot se puede mover independientemente por cada eje, y tambien por coordenadas (x, y, z). No he encontrado forma de definir una base y referir los movimientos desde ella, asi que por ahora... no se puede :(

Esto es todo... dentro de unos dias, a ver si empiezo a desarrollar el programa para controlarlo :D Por lo pronto, pongo aqui el enlace donde se encuentra el manual de la placa controladora que me han enviado (Manual)

El montaje

bueno, preparamos la mesa de operaciones con todas las herramientas necesarias... Este es el primer punto que hay que notar: no es un paquete como los del ikea (que vienen herramientas incluidas), pero si que vienen piezas... Distribuidas en paquetitos de bolsas, segun la parte del robot (base, brazo, pinza, placa circuito).
Personalmente, me he encontrado con varios problemas:
  • Lo primero, es que no hay instrucciones. Quiero decir, si las hay, pero tienes que bajártelas tu mismo de internet.
  • lo segundo, las instrucciones solo estan en Inglés. No es mucho problema, pero vamos, podian haberse estirado un poco (teniendo en cuenta que la pagina esta toda en Spanish :)
  • Las piezas vienen, en cierto modo, desordenadas. Si coges, por ejemplo, la base y empiezas a montarla, la ultima pieza que te dice las instrucciones que montes es el soporte de brazo (que viene en la bolsa del brazo, evidentemente), eso no seria mucho problema si no fuera porque (según las instrucciones) hay que acoplarla con tornillos que se encuentran en la base...
  • sobran muchas piezas. "si, claro, es que no las has montado todas"... pues no, realmente sobran. Parece que tienen definido que los motores están compuestos por el motor, unos tornillos, unos ejes, etc... y en el paquete de cada motor viene todo ese conjunto. Así que al principio empiezas a pensar..."no entiendo, esta pieza no esta, esta sobra..."
  • las piezas que refieren al brazo, las pinzas, y, en general, las que son superficie plana, vienen pegadas y sin taladrar. No es dificil (hay que presionar en donde es el taladro y sale la pieza que sobra) pero al principio mosquea un poco.
En lo que refiere al montaje, no es nada dificil. Es recomendable una mesa grande y limpia, para poder esparcir las piezas, y muy conveniente montar, grupo a grupo, el robot (si abres todo puedes liarte y poner tornillos que no son en piezas que no debes)

Una gran recepcion...

Pues eran algo asi como las 8:00 de la mañana (jodio MRW) cuando han llamado a mi puerta para entregarme un paquete... Dicho paquete contiene la tan esperada sorpresa, el brazo robot de 6 ejes (si, al final he cogido el de 6). Una caja bastante mas pequeña de lo que pensaba, pero con todo lo pedido.
Esta tarde me pongo a montarlo... veremos en que acaba todo esto...

martes, 13 de noviembre de 2007

Esperando...

Bueno, pues ya esta pedido el robot de las narices... ingresado el pago, verificado por telefono...
El caso es que, si todo va bien, mañana deberia estar en mis manos... que ilu!! :)

lunes, 12 de noviembre de 2007

un poco de humildad

Pues si porque, aunque haya trabajado de programador, ultimamente no soy capaz de ponerme a hacer programas... Digamos que me siento un poco perdido...

Asi que he decidido apuntarme a un curso de Programador de estos de la Junta... Aparte de ocupar el tiempo (mientras busco trabajo), refresco las ideas y cojo carrerilla para el asunto.

Por cierto, lo del robot lo deje a un lado porque pense que este año iba la empresa al simo (con lo que me planteaba comprarlo alli) pero parece ser que no pudieron ir (y me quede con las ganas) :(

Asi que de mañana no pasa: x la mañana a pedirlo y a ver cuanto tardan en traerlo :S

sábado, 3 de noviembre de 2007

Movimientos de un Robot

He estado revisando los apuntes del curso de Robotica que hice hace cosa de un mes. Creo interesante apuntar aqui los modos de movimiento que tienen este tipo de robots. Es importante para, a la hora de mover el robot, saber que efecto va a tener. Quizas deberian integrarse en una nueva clase que fuera, por ejemplo, CONSOLA (referido al panel de control de los robots), que controlaria estos movimientos.
Hay cuatro tipos:
  • modo eje: Se trata de mover cada eje del robot por separado. Intuyo que se trata del modo mas facil de programar, pues es incrementar o decrementar el valor de dicho eje.
  • modo mundo: en este caso, lo que movemos son una combinacion de los ejes, de manera que el punto P1 se desplace en las coordenadas. Existen al menos 3 coordenadas (x, y, z) de movimiento del robot, y otras tres (a, b, c) que indican el balanceo de la Herramienta respecto a dicho punto.
  • modo base: aqui se indican los movimientos como el modo mundo, solo que dichas variaciones estan en funcion de una base propia definida por el usuario. Hay una serie de metodos para definir bases (ya hablaremos otro dia de ellos)
  • modo Herramienta:este metodo hace variar los ejes como el modo mundo, solo que las coordenadas estan definidas en funcion de la herramienta. Normalmente un desplazamiento en Z indica un movimiento de avance o retroceso de la herramienta (por poner un ejemplo)

jueves, 1 de noviembre de 2007

Efectos al cambiar los angulos

Ya hemos visto que sucede si el punto P1 cambia, o lo que es lo mismo, hemos calculado que angulos queremos para posicionar el punto donde queremos. Nos faltaria saber que efecto tiene el cambiar el angulo sobre el punto P1 (vamos, hacer las cosas al reves).
Hoy analizamos dichos efectos:
  • sobre el eje A1: cambiar el angulo del eje A1 implica posicionar los brazos del robot en el plano formado por OO y P1. Esto es importante para los calculos de los angulos de los brazos, pues nos basamos en dicho plano.
  • sobre el eje A2: cambiar el angulo del eje A2 implica mover el punto P1 en una orbita circular, en la cual el radio es la distancia entre OO y P1. Dicho radio no varia si cambiamos este angulo.
  • sobre el eje A3: cambiar este eje cambia tanto la posicion de P1 como la distancia entre OO y P1.
Aunque A1 es importante por la cuestion indicada arriba, solo nos complicaria los calculos en la explicacion.

Bueno, una aproximacion para calcular el punto P1 dados los angulos de A2 y A3 (que denominaremos Alfa y Beta) y la longitud de sus lados (llamados A y B) se puede resolver como la suma de dos vectores:
  • el primer vector es A con angulo Alfa. Tenemos que pasarlo a coordenadas cartesianas, asi que directamente podemos hacer:
  • el segundo vector es un poco mas complicado. Resulta que el angulo Beta esta referido al punto final del primer vector (lo que es el origen del eje A3), y tenemos que calcularlo referido a OO. Este ajuste nos deja un nuevo angulo: Con este ultimo angulo ya podemos calcular las coordenadas:
  • sumar vectores es sumar las coordenadas iguales entre si, por lo que nos aparece el vector suma (o lo que es lo mismo, el punto P1):
 
Informacion de proyecto para el control de un robot mediante puerto serie desde una fonera. Jakala. Licencia GPL. oct-2007