Micro-osciladores

De WikiRobotics
Revisión del 00:25 18 ene 2010 de Obijuan (Discusión | contribuciones) (Versión 0.3)

Saltar a: navegación, buscar

Introducción

En la tesis doctoral "Robótica Modular y Locomoción: Aplicación a Robots Ápodos" propusimos un modelo de osciladores sinusoidales para la locomoción de robots modulares de tipo ápodo (gusanos y serpientes). En ella estudiamos los parámetros de los osciladores para conseguir los diferentes modos de caminar.

Este modelo de control genera movimientos muy suaves, pero lo más importante es que son necesarios muy pocos recursos para su implementación. Por ejemplo, se pueden usar microcontroladores de 8 bits, como los PICs o los AVR. La implementación de los osciladores en los microcontroladores la hemos denominado micro-osciladores.

Hasta ahora, todos los experimentos de locomoción de los robots ápodos (ver vídeos [1] y [2]) los hacíamos controlando las oscilaciones desde un PC. Ahora, con los micro-osciladores podemos hacer que los robots ápodos sean autónomos, y que se desplacen sin tener que estar conectados al PC.

Descarga de los ejemplos

Versión: 0.3

Fichero Descripción
micro_osciladores_0.3.zip Fuentes. Programas del PIC en C. Programas para el PC en python
sg-oscillator.hex Ejecutable. Servidor de oscilaciones, para comunicarse desde el PC
test-oscillator8.hex Ejecutable. Ejemplo de oscilación de 8 servos
test-P8.hex Ejecutable. Ejemplo de movimiento de un robot del grupo cabeceo-cabeceo de 8 módulos. Probado con Cube Revolutions
test-PP1.hex Ejecutable. Ejemplo de movimiento de la configuracion PP (Minicube-I). Se usa el pulsador de test para cambiar la dirección del movimiento: adelante/atras
test-PY8.hex Ejecutable. Ejemplo de movimiento de robots del grupo cabeceo-viraje de 8 módulos. Solo se ejecuta un movimiento. Probado con Hypercube
test-hypercube.hex Ejecutable. Secuencia de movimiento para Hypercube. Se alternan el movimiento recto, desplazamiento lateral y rotación
test-PYP1.hex Ejecutable. Secuencia de movimiento para la configuración PYP (Minicube-II). Se cambia de movimiento al apretar el pulsador de la Skycube

Versión: 0.2

Fichero Descripción
Micro_osciladores_0.2.tar.gz Fuentes
Ej1-servos2-v0-2.hex Ejemplo 1: Oscilación de dos servos (servos 1 y 2). Ejecutable para la Skypic
Ej-PP1-v0-2.hex Ejemplo 2: Locomoción de Minicube-I (configuración PP). Ejecutable para la Skypic

Versión: 0.1

Fichero Descripción
Micro_osciladores_0.1.tar.gz Fuentes
Micro-oscillators-v0-1.hex Ejecutable para descargar en una Skypic

Evolución del proyecto

Versión 0.3

Micro-osciladores versión 0.3: Funcionando con la Skycube. Locomoción de Minicube-II

Versión 0.2

Micro-osciladores versión 0.2: Movimiento de Minicube-I
  • Reestructuración del código. Creados los siguientes módulos:
    • sin.c: Implementación de la función seno
    • servos.c: Posicionamiento de los servos
    • timer2.c: Generacion de pausas mediante el temporizador 2
  • Ejemplos de utilización:
    • ej1-servos2.c: Oscilación de los servos 1 y 2
    • ej-PP1.c: Locomoción de Minicube-I. Se emplean los servos 3 y 4. El robot se mueve en linea recta. Cada vez que se aprite el pulsador S1 de la Skypic se cambia el sentido del movimiento
  • Constantes definibles por el usuario:
    • A: Amplitud de las oscilaciones. Rango: 0-90 grados
    • FASE0: Fase inicial. Rango: 0-360 grados
    • DF: Diferencia de fase entre dos módulos consecutivos. Rango: -180,180 grados
    • OFFSET: Valor medio de la oscilación. Rango: -90,90 grados
    • T: Periodo de la oscilación en segundos
    • INC: Incremento de la fase con el tiempo. Rango: -180,180 grados

Versión 0.1

Micro-osciladores versión 0.1: Haciendo oscilar dos módulos Y1

Implementación de los micro-osciladores para la tarjeta Skypic, usando el compilador SDCC versión 2.8.0. Como ejemplo se hacen oscilar dos Módulos Y1 con amplitudes de 45 grados, mismo periodo y diferencia de fase de 90 grados.

Debido a un bug en el SDCC 2.8.0 (y 2.9.0) con los números flotantes negativos, las funciones trigonométricas de la librería matemática no funcionan correctamente. Por ello hemos tenido que implementar nuestra propia función seno usando una tabla

Para probar la versión 0.1 en una skypic:

  • Descargar el ejecutable en la Skypic: Micro-oscillators-v0-1.hex
  • Conectar dos servos (o módulos Y1) a las posiciones 1 y 2 de la Skypic
  • Empezarán a oscilar

Para compilar la versión 0.1:

  • Descargar las fuentes: Micro_osciladores_0.1.tar.gz
  • Descomprimir el paquete y entrar en el directorio micro_osciladores_0.1
  • Usar alguno de los siguientes métodos:
  • Ejecutar el siguiente comando en la linea de comandos:
$ sdcc -Wl-m -Wl-ainhx8m -mpic14 -p16f876a libm.lib -o micro-oscillators micro-oscillators.c
  • También se puede compilar usando make o el Piklab

Vídeos

300|250</youtube> 300|250</youtube>
Probando la versión 0.2.
Movimiento del robot Minicube-I
Enlace al video en Youtube
Probando la versión 0.1.
Oscilación de dos Módulos Y1
Enlace al video en Youtube

Cambios

  • 18/Enero/2010: Version 0.3
  • 15/Abril/2009: Versión 0.2
  • 08/Abril/2009: Versión 0.1
    • Versión inicial
    • Ejemplo de movimiento de dos módulos Y1

Repositorio

Para obtener la última versión estable teclear:

svn co http://svn.iearobotics.com/micro_osciladores/micro_osciladores_0.3

Licencia

Cc logo.png This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Spain License.
150px El código está liberado bajo licencia GPLv3

Autor

Juan González Gómez

Noticias

  • 8/Abril/2009: Comenzada esta página