sábado, agosto 16, 2008

The ball wheel project

Hace tiempo mencioné algo por el blog sobre el proyecto que unos compañeros y yo estábamos haciendo en Dinamarca. Como tampoco entré mucho en detalles y me he dado cuenta de que es con lo que mas he aprendido desde que llevo estudiando, me he decidido a subir parte del contenido que tenía por el disco duro a iternet para que sea accesible para quien le interese la robótica y la informática.

La VIA UC en colaboración con la universidad de Aarhus está desarrollando un robot para tareas agrícolas, conocido como hortibot. Este robot ya ha sufrido varias modificaciones desde su versión inicial y una de las que se están planeando es la de sustituir sus 4 ruedas por ruedas esféricas.



El hortibot

El propósito de esto es conseguir un vehículo de muy alta movilidad, capaz de superar obstáculos y salir de territorios en los que el movimiento pueda ser complicado por la consistencia y la rugosidad del terreno. Para llegar a esto, el departamento de mecánica en colaboración con el de IT está trabajando en un prototipo de robot propulsado mediante una rueda esférica. Como proyecto final tuvimos la oportunidad en la universidad danesa de trabajar en este línea y mejorar el manejo de la rueda.


La situación inicial de la que partíamos cuando empezamos el proyecto era una rueda esférica que se podía orientar en casi cualquier dirección del espacio (había que tener en cuenta bastantes limitaciones físicas).
La rueda se movía mediante 3 servomotores, que permitían moverla en 3 planos diferentes. El control de la rueda se llevaba a cabo mediante un joystick analógico, que se conectaba a unos servodrivers analógicos. La potencia la suministraban dos baterías industriales de 12 V cada una.

Nuestro trabajo consistía en tres partes principales:
  • Parte mecánica: obtener una serie de expresiones matemáticas que determinasen que movimientos parciales tenían que realizar los servos para llegar a una determinada posición.

  • Parte electrónica: Crear la infraestructura de control necesaria para poder manejar el robot de manera automática, desde un programa en C, y suprimiendo el joystick analógico. Para esto equipamos la rueda con encoders en cada uno de los servos, utilizamos un micro Atmel AT90CAN128, un adaptador para can bus y varios interfaces para manejar los servodrivers analógicos desde la placa del microcontrolador, ya que no hubo tiempo de sustituirlos por unos digitales.

  • Parte informática: Creación del software necesario para leer los encoders (tanto incrementales como absolutos), manejo del bus CAN desde el micro atmel y manejo del bus SPI para interactuar con los servodrivers analógicos. Creación de un conjunto de funciones de mayor nivel de abstracción para que moviesen a diferentes velocidades cada servo, en un sentido concreto, a una posición determinada, etc ... Creación del software necesario para manejar la rueda desde un pc conectado al bus can. También trasteamos bastante con la API en .net del adaptador CAN conectado al PC para crear nuestro propio software que operase la rueda desde un portatil.



Algunas de las limitaciones físicas que afectaban al movimiento de la rueda



Algunas fotos de la estructura durante y tras las modificaciones mecánicas que realizamos. De izquierda a derecha: la estructura final. Delimitando los movimientos para encontrar las equivalencias entre las posiciones físicas y las lógicas que iban a corresponder tras utilizar los encoders. Modificando la estructura. La bola por dentro, era una pelota de fibra de vídrio hueca.



Fotos de algunas electro-tripas que utilizamos. De izquierda a derecha: Servo-drivers analógicos. Osciloscopio fluke digital que lo flipas que andaba rodando por el laboratorio. Encoder absoluto con salida en código gray. Pruebas de los potenciómetros digitales que atacaban a los servo-drivers.




De izquierda a derecha: adaptador para CAN bus para pc (can-bus a usb). Adaptador para CAN bus para la stk501. Slip-ring, escobillas para solucionar el problema de la alimentación del servo contenido en la ruda, ya que los cables que lo alimentaban se retorcían en el eje. Señal PWM que movía los servomotores.


Y no quería cerrar el post sin poner un par de vídeos donde aparecía la rueda en acción. En el primero de ellos se ve tal y como la recibimos al principio. Con la estructura completa y operada desde el joystick analógico.




Utilizando un programa para mandar paquetes CAN que contenían la información relativa al movimiento de la rueda (dirección y velocidad) la rueda podía ser operada desde el PC.



Fue un proyecto en el que aprendimos un montón sobre electrónica, programación de micros y mecánica (en mi caso de esto menos por que me dediqué a las partes anteriores). Ha sido uno de los trabajos mas interesantes y entretenidos que he hecho hasta ahora y, aunque tuvimos que currar bastante, siempre quedaron ratos para las barbacoas en la terraza del laboratorio, unas partidillas al urban terror o jugar con la maqueta que teníamos para pensar los movimientos sin tener que estar con el robot de por medio (la maqueta era una pelota de fútbol).

Links
Album en picasa con estas y mas fotografías a mayor resolución link
Página web del proyecto Hortibot
AT90CAN128 atmel website link
STK500 atmel website link
STK501 atmel website link

1 comentario:

Txemita dijo...

wenas!
Antes de nada felcidades por el blog, a los aficionadillos al tema nos saca de mas de una duda y se aprende mucho :)
Encontre una web que me llamo bastante la atencion a ver que os parece. Se trata de una web de fabricacion y distribucion de baterias industriales.
El caso es que me llamo la atencion que se pueden encargar el diseño de baterias a medida para algun proyrecto. Me parece interesantisimo este tema y no sabia que fuera tan accesible el poder pedir una bateria a la medida de las necesidades de cada uno. Muy interesante, a ver que os parece...
Un saludo y hasta otra!