No estoy muy seguro de que este post este bien situado ya que el tema abarca tanto informatica como mecanica. Disculpad si la he cagado.
Soy un poco aficionado a la robotica desde hace ya algunos años. Empece con Lego MindStorms, que aunque no deja de ser un juguete ofrece increibles posibilidades por su modularidad.
Hace poco he adquirido un producto coreano llamado Bioloid. Es un conjunto de servomotores, piezas estructurales, microcontrolador de 8 bits, sensor de distancia, sonido, etc, que permite la construccion de distintos tipos de robots como humanoides bipedos, arañas, cuadrupedos, etc. Quiza alguno de vosotros vio en el programa del Buenafuente un robot que bailaba el chikichiki y esta construido con estas piezas.
El caso es que tengo un pequeño problema y he pensado que quiza podria discutirlo con algun otro aficionado, si es que lo hay.
Cada uno de los servos utiliza aproximadamente 50 bytes que permiten controlar la posicion exacta, velocidad, fuerza empleada, curva de ataque y llegada y otros muchos valores asi como detectar cual es la fuerza externa a que esta sometido. En total dispongo de 21 servos y varios sensores (pueden adquirirse por separado tantos como se desee) lo que implica que en conjunto muevo aproximadamente unos 1.5Kb de informacion.
El caso es que el microcontrolador de 8 bits dispone en una FlashRom de 64KB para colocar un programa de control, otras 64KB para datos pero solo 4KB de RAM para datos vivos. La escasa RAM no me permite hacer demasiadas virguerias por lo que he optado por la solucion de añadir un pequeño modulo inalambrico que me permite atraves del puerto serie comunicarme con el microcontrolador. La idea es que el micro tan solo actue como puente entre los servos y sensores con el PC, donde residiria la inteligencia del robot.
El bus que conecta los servos y sensores con el micro funciona a la respetable velocidad de 1 Mbit/s pero el puerto serie del PC funciona como maximo a 56 KBits (da problemas a 115 KBits), es decir 7KB/s. Dado que el micro es capaz de enviar o recibir pero no ambas cosas simultaneamente la velocidad efectiva pasa a ser la mitad, es decir 3.5KB.
Dado que la informacion a manejar actualmente es de 1.5KB (podria aumentar si añado servos o sensores) esto significa que como mucho puedo rastrear y modificar las posiciones, fuerzas, etc solo unas 2 veces por segundo, sin tener en cuenta el tiempo necesario para el PC para sus calculos.
Medio segundo parece muy poco tiempo pero es una eternidad si deseo que el robot pueda correr manteniendo el equilibrio dinamico necesario, por lo que hace inviable este sistema de control.
Lo unico que se me ocurre es que solo se transmitan los cambios ocurridos desde el anterior envio, pero para ello el micro debe guardar el estado de todos los servos y sensores para compararlo con los nuevos estados. Lo jodido de esto es que guardar toda esa informacion me deja sin apenas RAM para el propio programa de control.
¿A Alguien se le ocurre algo? Evidentemente no puedo añadir RAM al micro.
Aunque nadie tenga respuesta si hay aqui algun aficionado me gustaria compartir ideas con el
Un saludo,
Mela
Última edición por Melapela el 20 Jun 2008 23:20; editado 1 vez
HispaRed Legend Of Mir III v. 4.7!!
Fantásticos y revolucionarios nuevos equipos.












































