Diferencia entre revisiones de «Micro-osciladores»

De WikiRobotics
Saltar a: navegación, buscar
(Cambios)
(Evolución del proyecto)
 
(No se muestran 27 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 +
[[Imagen:Micro-osciladores-logo-grande.png|thumb|200px|Micro-osciladores: movimiento autónomo de robots modulares]]
 +
 
== Introducción ==
 
== Introducción ==
 
En la tesis doctoral "[[Juan Gonzalez:Tesis|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.
 
En la tesis doctoral "[[Juan Gonzalez:Tesis|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.
Línea 6: Línea 8:
 
Hasta ahora, todos los experimentos de locomoción de los robots ápodos (ver vídeos [http://www.youtube.com/watch?v=RJL-buxNiD4] y [http://www.youtube.com/watch?v=dl-LReQScZk]) 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.
 
Hasta ahora, todos los experimentos de locomoción de los robots ápodos (ver vídeos [http://www.youtube.com/watch?v=RJL-buxNiD4] y [http://www.youtube.com/watch?v=dl-LReQScZk]) 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 ==
+
== Descarga ==
 +
=== ArduSnake Library ===
 +
 
 +
{| class="wikitable"
 +
|-
 +
|
 +
[[ArduSnake: Arduino Modular Snake Robots Library]]
 +
| Se ha hecho una nueva versión de micro-osciladores compatible con Arduino. Es un proyecto aparte que tiene su propia página wiki
 +
|}
 +
 
 +
=== Versión 0.4 ===
 +
{|{{tablabonita}}
 +
| [http://www.iearobotics.com/downloads/micro-osciladores/micro_osciladores_0.4.zip micro_osciladores_0.4.zip]
 +
|| '''Fuentes'''. Paquete con todo: Software para el PC, firmware para PIC y firmware para ATMEGA
 +
|--------------------
 +
|}
  
 
=== Versión: 0.3 ===
 
=== Versión: 0.3 ===
Línea 13: Línea 30:
 
|--------------------
 
|--------------------
 
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/micro_osciladores_0.3.zip micro_osciladores_0.3.zip]
 
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/micro_osciladores_0.3.zip micro_osciladores_0.3.zip]
|| Fuentes
+
|| '''Fuentes'''. Programas del PIC en C. Programas para el PC en python
 +
|--------------------
 +
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/sg-oscillator.hex sg-oscillator.hex]
 +
|| ''Ejecutable''. Servidor de oscilaciones, para comunicarse desde el PC
 +
|--------------------
 +
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/test-oscillator8.hex test-oscillator8.hex]
 +
|| ''Ejecutable''. Ejemplo de oscilación de 8 servos
 +
|--------------------
 +
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/test-P8.hex test-P8.hex]
 +
|| ''Ejecutable''. Ejemplo de movimiento de un robot del grupo cabeceo-cabeceo de 8 módulos. Probado con [[Cube Revolutions]]
 +
|--------------------
 +
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/test-PP1.hex test-PP1.hex]
 +
|| ''Ejecutable''. Ejemplo de movimiento de la configuracion PP ([[MiniCube|Minicube-I]]). Se usa el pulsador de test para cambiar la dirección del movimiento: adelante/atras
 +
|--------------------
 +
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/test-PY8.hex 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]]
 
|--------------------
 
|--------------------
| []
+
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/test-hypercube.hex test-hypercube.hex]
||  
+
|| ''Ejecutable''. Secuencia de movimiento para [[Hypercube]]. Se alternan el movimiento recto, desplazamiento lateral y rotación
 
|--------------------
 
|--------------------
| []
+
| [http://www.iearobotics.com/downloads/micro-osciladores/v0.3/test-PYP1.hex test-PYP1.hex]
||  
+
|| ''Ejecutable''. Secuencia de movimiento para la configuración PYP ([[MiniCube|Minicube-II]]). Se cambia de movimiento al apretar el pulsador de la [[Skycube]]
 
|}
 
|}
  
Línea 48: Línea 80:
  
 
== Evolución del proyecto ==
 
== Evolución del proyecto ==
 +
=== ArduSnake Library ===
 +
* Migración al entorno de Arduino. El desarrollo se continúa en esta página del wiki: [[ArduSnake: Arduino Modular Snake Robots Library]]
 +
* Migración a repositorio en github
 +
 +
=== Versión 0.4 ===
 +
[[Archivo:Micro-osciladores-0.4-1.jpg|thumb|right|250px|Micro-osciladores '''versión 0.4''': Pruebas con una skymega]]
 +
* Añadido soporte para los micros ATMEGA. Pruebas con la tarjeta Skymega.
 +
* Ejemplo de locomoción de la configuración mínima PP
 +
* Ejemplo de oscilación de 8 servos
 +
 +
=== Versión 0.3 ===
 +
[[Imagen:Micro-osciladores-0.3-1.jpg|thumb|right|250px|Micro-osciladores '''versión 0.3''': Funcionando con la Skycube. Locomoción de Minicube-II]]
 +
 +
([http://www.iearobotics.com/blog/2010/01/18/micro-osciladores-03/ Entrada en Blog])<br>
 +
Se ha probado con el SDCC 2.8.0
 +
 +
* '''Optimización del código'''
 +
** Sólo se usa el timer 0 para implementar las señales PWM y el periodo de muestreo
 +
** Se usa el periodo de muestreo mínimo posible: 20ms. Viene determinado por el servo Futaba 3003
 +
** Las oscilaciones son independientes del número de módulos. Oscilan exactamente igual 2 módulos que 8 (en las versiones anteriores esto no era así)
 +
** Código más compacto, simple y fácil de usar
 +
* '''Control parcial de los osciladores desde el PC''':
 +
** Versión alfa del servidor sg-oscillator, que se comunica con el PC a 56700 baudios. Implementados los servicios de identificación, ping, habilitación/deshabilitación de servos, activación/desactivación de osciladores y posicionamiento de servos.
 +
** Recepción de tramas mediante interrupciones
 +
** Nuevo stargate Oscillator, implementado en python, para controlar los osciladores desde el PC
 +
* '''Nuevos módulos oscillator-pn.c y oscillator-pyn.c''', para la locomoción de robots modulares de topología de 1D de los grupos cabeceo-cabeceo y cabeceo-viraje
 +
* '''Adaptación a la tarjeta Skyucube'''. Los ejemplos funcionan bien en una tarjeta [[Skypic]] o en la nueva [[Skycube|Skycube 1.0]]
 +
* '''Nuevos ejemplos''':
 +
** Movimiento del robot [[Cube Revolutions]]
 +
** Movimiento del robot [[Hypercube]]
 +
** Movimiento del robot [[MiniCube|Minicube-II]]
 +
** Oscilación de módulos desde el PC
  
 
=== Versión 0.2 ===
 
=== Versión 0.2 ===
Línea 93: Línea 157:
  
 
{| {{Tablabonita}}
 
{| {{Tablabonita}}
 +
| <youtube>PnMehYqtwTY|300|250</youtube>
 
| <youtube>66NN98tEd9Q|300|250</youtube>
 
| <youtube>66NN98tEd9Q|300|250</youtube>
 +
|------
 +
| Probando la '''versión 0.3'''. <br> Movimiento del robot [[MiniCube|Minicube-II]] y control desde el PC<br> [http://www.youtube.com/watch?v=PnMehYqtwTY Enlace al video en Youtube]
 +
| Probando la '''versión 0.2'''. <br> Movimiento del robot [[MiniCube|Minicube-I]] <br> [http://www.youtube.com/watch?v=66NN98tEd9Q Enlace al video en Youtube]
 +
|}
 +
 +
 +
{| {{Tablabonita}}
 
| <youtube>Au-bKpiNv0A|300|250</youtube>
 
| <youtube>Au-bKpiNv0A|300|250</youtube>
 
|------
 
|------
| Probando la '''versión 0.2'''. <br> Movimiento del robot [[MiniCube|Minicube-I]] <br> [http://www.youtube.com/watch?v=66NN98tEd9Q Enlace al video en Youtube]
 
 
| Probando la '''versión 0.1'''. <br> Oscilación de dos Módulos Y1 <br>[http://www.youtube.com/watch?v=Au-bKpiNv0A Enlace al video en Youtube]
 
| Probando la '''versión 0.1'''. <br> Oscilación de dos Módulos Y1 <br>[http://www.youtube.com/watch?v=Au-bKpiNv0A Enlace al video en Youtube]
 
|}
 
|}
  
 
== Cambios ==
 
== Cambios ==
 +
* '''15/Feb/2012''': Nueva [[ArduSnake: Arduino Modular Snake Robots Library|ArduSnake Library]]. Micro-osciladores compatibles con Arduino. Es un proyecto independiente que se lleva a su propia página del wiki.
 +
* '''09/Feb/2012''': Liberada versión 0.4
 
* '''18/Enero/2010''': Version 0.3
 
* '''18/Enero/2010''': Version 0.3
 
** Ejemplos de movimiento de [[MiniCube|Minicube-II]], [[Cube Revolutions]] e [[Hypercube]]
 
** Ejemplos de movimiento de [[MiniCube|Minicube-II]], [[Cube Revolutions]] e [[Hypercube]]
 
** Control parcial de los osciladores desde el PC
 
** Control parcial de los osciladores desde el PC
 +
** Probado en [[Skycube|tarjeta Skycube]]
 
* '''15/Abril/2009''': Versión 0.2
 
* '''15/Abril/2009''': Versión 0.2
 
** Ejemplo de movimiento del robot [[MiniCube|Minicube-I]]
 
** Ejemplo de movimiento del robot [[MiniCube|Minicube-I]]
Línea 113: Línea 187:
 
* Repositorio SVN: [http://svn.iearobotics.com/micro_osciladores http://svn.iearobotics.com/micro_osciladores]
 
* Repositorio SVN: [http://svn.iearobotics.com/micro_osciladores http://svn.iearobotics.com/micro_osciladores]
  
Para obtener la última versión estable teclear:
+
Para obtener la última '''versión estable''' teclear:
  svn co http://svn.iearobotics.com/micro_osciladores/micro_osciladores_0.3
+
  svn co http://svn.iearobotics.com/micro_osciladores/micro_osciladores_0.4
  
 
== Licencia ==
 
== Licencia ==
Línea 127: Línea 201:
  
 
== Noticias ==
 
== Noticias ==
 +
* '''27/Mayo/2010''': Comenzada la migración a los micros ATmega168
 +
* '''18/Enero/2010''': Liberada versión 0.3
 
* '''8/Abril/2009''': Comenzada esta página
 
* '''8/Abril/2009''': Comenzada esta página
  
Línea 132: Línea 208:
 
[[Categoría: Robots modulares]]
 
[[Categoría: Robots modulares]]
 
[[Categoría: Skypic]]
 
[[Categoría: Skypic]]
 +
[[Categoría: ATMEL]]

Revisión actual del 01:05 22 feb 2012

Micro-osciladores: movimiento autónomo de robots modulares

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

ArduSnake Library

ArduSnake: Arduino Modular Snake Robots Library

Se ha hecho una nueva versión de micro-osciladores compatible con Arduino. Es un proyecto aparte que tiene su propia página wiki

Versión 0.4

micro_osciladores_0.4.zip Fuentes. Paquete con todo: Software para el PC, firmware para PIC y firmware para ATMEGA

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

ArduSnake Library

Versión 0.4

Micro-osciladores versión 0.4: Pruebas con una skymega
  • Añadido soporte para los micros ATMEGA. Pruebas con la tarjeta Skymega.
  • Ejemplo de locomoción de la configuración mínima PP
  • Ejemplo de oscilación de 8 servos

Versión 0.3

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

(Entrada en Blog)
Se ha probado con el SDCC 2.8.0

  • Optimización del código
    • Sólo se usa el timer 0 para implementar las señales PWM y el periodo de muestreo
    • Se usa el periodo de muestreo mínimo posible: 20ms. Viene determinado por el servo Futaba 3003
    • Las oscilaciones son independientes del número de módulos. Oscilan exactamente igual 2 módulos que 8 (en las versiones anteriores esto no era así)
    • Código más compacto, simple y fácil de usar
  • Control parcial de los osciladores desde el PC:
    • Versión alfa del servidor sg-oscillator, que se comunica con el PC a 56700 baudios. Implementados los servicios de identificación, ping, habilitación/deshabilitación de servos, activación/desactivación de osciladores y posicionamiento de servos.
    • Recepción de tramas mediante interrupciones
    • Nuevo stargate Oscillator, implementado en python, para controlar los osciladores desde el PC
  • Nuevos módulos oscillator-pn.c y oscillator-pyn.c, para la locomoción de robots modulares de topología de 1D de los grupos cabeceo-cabeceo y cabeceo-viraje
  • Adaptación a la tarjeta Skyucube. Los ejemplos funcionan bien en una tarjeta Skypic o en la nueva Skycube 1.0
  • Nuevos ejemplos:

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.3.
Movimiento del robot Minicube-II y control desde el PC
Enlace al video en Youtube
Probando la versión 0.2.
Movimiento del robot Minicube-I
Enlace al video en Youtube


300|250</youtube>
Probando la versión 0.1.
Oscilación de dos Módulos Y1
Enlace al video en Youtube

Cambios

  • 15/Feb/2012: Nueva ArduSnake Library. Micro-osciladores compatibles con Arduino. Es un proyecto independiente que se lleva a su propia página del wiki.
  • 09/Feb/2012: Liberada versión 0.4
  • 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.4

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

  • 27/Mayo/2010: Comenzada la migración a los micros ATmega168
  • 18/Enero/2010: Liberada versión 0.3
  • 8/Abril/2009: Comenzada esta página