P. 1
Locomoción bípeda

Locomoción bípeda

|Views: 535|Likes:

More info:

Published by: Jose Enrique Martínez on Sep 03, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

12/28/2013

pdf

text

original

Locomoci´n b´ o ıpeda del robot humanoide Nao

Proyecto Final de Carrera Memoria

Autor Samuel Fern´ndez Iglesias a Director Josep M. Fuertes i Armengol Noviembre 2009

Escola T`cnica Superior e d’Enginyeria Industrial de Barcelona

Universitat Polit`cnica e de Catalunya

Resumen
La locomoci´n b´ o ıpeda de robots humanoides, es decir, aquellos que tienen morfolog´ humana y las articulaciones necesaıa rias para realizar movimientos parecidos a los humanos, es un desaf´ para el desarrollo tecnol´gico. Esta faceta de la ingeıo o nier´ agrupa muchas ramas reunidas para un mismo objetivo: ıa mec´nica, autom´tica, electr´nica, inform´tica, biolog´ . . a a o a ıa. Este proyecto de investigaci´n se propone como objetivo o principal desarrollar un algoritmo de control para conseguir que el robot humanoide Nao camine, mejorando su algoritmo propio. Adem´s, se crear´ una interfaz gr´fica de usuario para el a a a control de Nao y las funciones que se desarrollen. Como fuente de inspiraci´n y para ver el estado del arte se o har´ un an´lisis de otros algoritmos de locomoci´n existentes a a o en robots, tales como: Generaci´n de trayectorias imponiendo estabilidad. o Aprovechamiento de din´micas internas. a M´quinas de estados. a La propia locomoci´n humana. o El algoritmo propio que se desarrollar´, Sammy’s Walk, aprovechar´ las oscilaciones proa a pias del sistema para generar la locomoci´n y as´ tener una din´mica de locomoci´n m´s o ı a o a eficiente. Esto conllevar´ hacer estudios de frecuencias de oscilaci´n del robot y atractores en a o el espacio de fases. Este planteamiento, distante de la mayor´ de algoritmos de locomoci´n basados en geıa o neraci´n de trayectorias, es novedoso en su aplicaci´n para robots con muchos grados de o o libertad activos, y puede sentar una base para investigaciones futuras. El resultado de aprovechar estas din´micas se traducir´ en un ahorro energ´tico, y un a a e estilo de marcha parecido al humano.
Figura 1: Robot Nao

1

.

. . . Fases de la marcha . . . . .3. . BigDog . .2. . . . . . . . . . . .1. .2. . . . . . . . . . . . . . .4. . . . . . 2. . . . .1. . . . . . .1. Introducci´n o 2. .4. . . . . 2. . Resultados . . . .2. . . . . . . . . . . . . . . . . . . . . Caracter´ ısticas del paso . . . . Descripci´n cualitativa . . . .2. . . . . . . . . . . . . .2. . . 2. . . . 3. . . . . 2. . . . . ASIMO . . . . . . . . . . . . 2. . . . . . . . . . . . . . Cinem´tica . . . . . . . . . . . .2. . . . . . . .1. . . Zero-Moment Point (ZMP) . . . . . . . . . Desarrollo del pie durante la marcha . . . . . . . . . Algoritmo . . . . . . . . . . . . . . . 2. . . Descripci´n y morfolog´ . . .2. 1 5 8 9 11 13 15 15 16 18 19 20 21 21 22 24 24 25 26 27 29 29 31 32 32 33 34 34 35 35 . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . Passive & Dynamic Walking . . 2. .5. . . . . . . . . . .2. An´lisis de la locomoci´n b´ a o ıpeda humana 3. . . o ıa 2. . . . . . . . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . 3. . . . . . . . . . Sistema de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . o a 2. . . . . . . a 3. . . . . . . . . .1. . . . . . . . . .2. . . . . .1. . . . . . . . .1. . . . . . . . . . . . . . . . . .1. . . . Robots b´ ıpedos y algoritmos de control 2. . . . Conclusiones . . . . Algoritmo . . . .3. . . . . Passive Walking . Brazos y movimiento de torsi´n transversal o 3. . . . . . . . . .1. . . . . . . . .4. . . . . . . . . . . .3. . . . . . . . . . . . . .1. Control . . . .3. . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ventajas e inconvenientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. . Formulaci´n matem´tica . . . . . . . . . . . .1. . . . . . . . . .3. . . . . . . . . . . . 3. Dynamic Walking . . . . .4.´ Indice general Resumen ´ Indice general ´ Indice de figuras ´ Indice de tablas ´ Indice de v´ ıdeos 1. . . . .1. . . . . . . . . . . . . . . . 2. . . . . 3 . 2. . . . . . 2. . SIMBICON: Simple Biped Locomotion Control 2. . . . . . . . . . . . . o 3. .1. . . . .4. .

. . . . . . . .3. . . . . . . . . . .3. . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . .2. . . Movimientos articulares . .4. . . . . o 5. . . . . .1. .3. . .1. . . .3. . . . .1.1. . . . . . . . .3. . . . . . . . An´lisis de prestaciones a 6. . . . . . . . . . . . . . . . . . . . .1. . o A. . .3. . . . . . . . Descripci´n de las funciones de locomoci´n b´ o o ıpeda .4 Locomoci´n b´ o ıpeda del robot humanoide Nao 3. . Simulaci´n con Webots . . . . o 7. A. . Instalaci´n del robot . . . . . . o o A. . . . . . . . . . Incremento de la estabilidad del ciclo l´ ımite . .1. . . 5. . . 6. . . . Simulador: Webots . . . . . . Nao 4. . . . . . . . . . . . . . . . . . . . Inducci´n de un ciclo l´ o ımite . . 5. .1. . . . . . . . . . . . . Programaci´n de Sammy’s Walk . o 5. . . . . . . . 4. . . . . . .2. .3. .2. 4. . .3. . . . Modificaci´n del algoritmo ZMP . . . . . . . . . .2. . . . . . . . . . . . . Compilaci´n cruzada para librer´ din´micas o ıas a . . o o . . . . . . . o 5. . . . . . Ejecuci´n de c´digo en tiempo real . . . Caracter´ ısticas generales . . .3. . . . .1. . . . . . . . . . .5. . . . . .4. . . . . . . . . . . o 5. . . . Ejemplo de programaci´n en Pyhton . .1. . . . . . . . . .2. . . . . . . . . . . .2. o B. . . . . . . . . . . . . . . . . . . Oscilaci´n lateral . . . . . . Instalaci´n SDK . . . . . . . Conexi´n Ethernet . . . . . . . .3. . . . . . . . . . 5. . . . . NaoQi: programaci´n de Nao o 4. . . Inicializaci´n y sincronizaci´n con DCM . . . . . . Conclusiones . . . . . . . . . B. . . . . . . . . . . . . . .2. . . . NaoQi . 4. . . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . .2. . . . . . M´dulos de NaoQi . . . . Caracter´ ısticas y uso de NaoQi . Mejoras estil´ ısticas y de estabilidad . . . . . . . . . . . . . . . . . o A. . . . . . . . . URBI . . . . . . . 5.6. . . . . . . . o 6. . . .2. . . . . . .3. . . . .1. Caracter´ ısticas de la locomoci´n con ALWalk . . . . . . . . .1. . . . . . .2. . . .5. . . . . . . . Programaci´n . .3. . . .1. . . . Sincronismo con movimiento de avance . . . . . . 3. . .3. . . . . . . . . . . . . . . . . B. . . . . . . . . . . . . . . . . . . . . o A. . . .7. . . Pruebas de funcionamiento . . . . . . . . . . . . . . . . . . .2. Programaci´n del algoritmo y la interfaz gr´fica o a B. . . Conclusiones Biblograf´ ıa A. . . Dise˜ o del algoritmo de locomoci´n para el robot Nao n o 5. . . . . . . . . 35 37 39 39 41 41 43 45 46 46 48 49 51 52 54 55 65 69 70 71 73 73 74 77 80 81 81 81 82 85 85 86 86 87 89 91 91 95 96 96 97 . . .4. . . .1. . . . . . . . .1. . . . . . . . . . . . . Conclusiones . Conclusiones . . . . . . . .2. . . . . . . . . . . . .6. . . . . . o A. . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sammy’s Walk : Dise˜o de un algoritmo de locomoci´n b´ n o ıpeda 5. . . . . . . A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caracter´ ısticas de la locomoci´n con Sammy’s Walk . . .1. Principales variables usadas . . 5. . . . . . . . . . o A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . Puesta en marcha y programaci´n de Nao o A. . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . ALWalk : Algoritmo de locomoci´n implementado en Nao . . .3. . . . . . . . . A. . . . . . . .2. o A. .

. . . . B. . . . . . . . . . .4.5. . . . . . . . .2. .2. . . . . . . . . . . . . . . .3. . . . . . . . .2. . . . . .6. . . . . . . . . . . GUI . . . . . . . . Uso diario . . . . . . . . . Generador de trayectorias . . . An´lisis de costes . . . . . .2. . . . . . . . . . . . Carga de configuraciones . . B. . . . . . . . . . . . .5. B. . . . . . . . . . . . . . . . .6. . . . . . . . . . . . . . . . Detecci´n de impacto con el o B. . . . . o B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interfaz ALWalk . . . suelo . . Impacto medioambiental 109 D. . . . . . . . . .2. Ventana principal . . . B. . . . B. . . . . . . . . . . . . . . . .1. . . . . . . . .2. . . . . . . . . . . . . . . . . . . Editor de posturas . . . . . . . . .1. . Proceso de fabricaci´n . . . . . . . . .1. . . . . .2. . . . . . . Fin de la vida util . . . . . . . . . . . . .2. . . 107 a C. . . Control con Wiimote . . . . . . 98 98 99 99 100 100 101 101 103 104 105 C. . . . . . .3. .4. . . . . . . . . . . . . . . . B. . Programaci´n . . . . . . . Bucle de control . . . . . . . . . . . . . . . . . . . . Interfaz Sammy’s Walk . . . .´ Indice general 5 B. . . . . . . . .1. . . . . . . . Presupuesto 107 C.1. . . .1. . . . . . . . . . . . . . . . . 111 ´ . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 o D. . . . . . . . . . . . . . . . . . . . . .1. . . . . 110 D. . . . . . . . . . . B. . . . . . B. . . . . . . . . . .2. . . . Beneficios . . . . . . . . . . . . . . . . . . . 108 D. . . .2. .

.

. . . . . . . Simulaciones de un personaje en 2D con el algoritmo SIMBICON . . . . . . . . . . . . . .11. . . . . . . . 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Articulaciones del robot . . . .7. . . . . . . . . . . . . . . . . . . a Fases de la marcha . . . . . . . . .6. . . . . . . . . .5. . . . . .4. . . . . . . . . o 7 . . . . . .3. . Desarrollo del pie durante a marcha . . . Webots 6. . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. . . . . . . . . . . . . . paso . . . . . . . . . . . . . . . . . . . o 3. . . . . . . . .10. . . o 2. . . .7. . . . . .1. . . . . . . . . . .1. .12. . Sistema de referencia .9. . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . BigDog . . . . .3. . . . . . . . . . . . . . . . 3. . . . . . . 3. Patrones de locomoci´n . . . . . . . . 5. . . . . . . . .´ Indice de figuras 1. . . . . . . o 2. . . . . . . . Copia del mecanismo inventado por McGeer . Configuraci´n de par´metros de Offset del ZMP . . . . . . . . Robot Nao . . . .3. . o Cicloide usada para trayectorias de los pies . . . a ´ Angulos articulares de la pierna derecha y fase de Nao Academics Edition . . . . . . . . . .6. . . . . . . a 2. . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . 5. . . . . . . . . . . a Respuesta del filtro pasabajos al escal´n unitario . . . 5. . . . . . . . . . . . . . . . . . 4. . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . 5.8. . . . . . . . . . .13. . . . . . . . . . . . . . 2. . Robot ASIMO . . . . . . . . . . . . .8. . . . . . . . . .5. .2. . u o 2. . . . Microsoft Robotics Studio . .1. . . 5. . . . . . Principios del control de la locomoci´n . . . . . . . 2. . . . . . o a Pantalla de la GUI para la configuraci´n de ALWalk o M´quina de estados . . . . . . . . . . . . . . . . . . . . . . . 2. . . . . . . Instant´neas de las fases de la marcha [13] . Simulaci´n en tiempo real de un personaje que camina con el algoritmo SIMo BICON . .3. . . . . . . . . . . . . . . . . . . . . Elementos de la estrategia de realimentaci´n para el equilibrio . . 1 16 16 19 21 22 24 25 25 26 27 27 28 29 32 33 34 34 35 36 36 37 38 39 40 42 42 47 48 48 50 53 54 2. Movimiento de brazos y hombros al caminar . Descripci´n BigDog . . . . . . .4. . . . . . . . . . .9. . Diagrama del lazo de control . .1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5. . . . . . . . . 4. . . . . . . . . . . .4. M´quina de estados . . . . . a Instant´nea en t = 5s . . . . . . . . . . . . . 3. . . . 2. Tres caminadores actuados basados en el mecanismo de locomoci´n pasivo . . . . . . . . . . . . . 2. . . . . . . . .2. . . . . . . 3. . . . . . . . . . . Fuerzas y momentos sobre el pie . . . 3. . . . . . . . . . . .2. . . . . . . . . . . . . 2. . . . . . . . . . . . . . . . . . Caracter´ ısticas del paso . Pol´ ıgono de soporte seg´n fase de locomoci´n . . . o 2. . . 2. . . .4. An´lisis del caminar humano . . . . . . . 3.1. . . . . . . . . . . . . . . . . . . . . . .6. . . . . . . . . . . . . . . . .

8. . . . . . . . . . o A. . . . . . . . . . . B. B.2. . . . . . . .tar. . Configuraci´n de servidor en Nao . . An´lisis de ejecuci´n del bucle de a o Estructura de la GUI . . . . . . . . . . . . . Oscilaciones laterales inducidas – Velocidad angular X . . . . o 5. . . . . . . . . . . . . . . . . . . . . . . . Ventana ALWalk . . . . . . . . Wiimote . . .3. . . . . .13. . . . . o 5. 6. . . . . . . . . . . .9. . . . . . .3. o Consumo de intensidad para la locomoci´n Sammy’s Walk . . P´gina web de conexi´n a Nao . . . . . . . . . .9. . . . . B. . .16. . . . . . . . .7. . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . Frecuencia de oscilaci´n seg´n configuraci´n . Ventana principal de NaoGUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama de correcci´n del ancho de paso . . . . . . . . . . . . . . ´ 5. .15. . . . . . B. . . . . 57 59 60 61 62 62 64 66 68 69 70 75 75 76 83 84 84 95 99 101 102 102 103 104 105 106 Consumo de intensidad para la locomoci´n ZMP low-stiffness . . . . . . . . .14. . . . . . . . Oscilaciones laterales inducidas – Angulo X respecto la vertical . . . . . . .8 Locomoci´n b´ o ıpeda del robot humanoide Nao 5. . . . . . . . . . . . . . . 5. . . . . . . . . o 6. . caderas . . . . . . . . . . . . . . . . . . . . .7. . . . 5. . . . . . . . . .10.4. . . . . . .2. . . . . . . . . . . . . . .gz . . . Ventana Sammy’s Walk . . . . . . . . . . Intensidad consumida en la oscilaci´n lateral inducida . . . . control . . . Mando de la Wii. . . . . . . . . . B. . . . . . . . . . . . . . . . . . . B. .0-Linux. . . . . .5. . . . . . . . . . Ciclo l´ ımite lateral . . Movimiento lateral . . . . . . . .1. . . . . . . . . . . . a o A. . . altura o 26cm . . . . . . . . .12. . . . . .8. . . . . . . . . . . . . o 5. . B. . . 5. . . . . . . . . . . . . . . . . . . . . . . . . . . B. Ventana principal . o ´ Angulos articulares de la pierna derecha y fase de paso . . . . . . . . . 6.17. . . . . o u o 5. . . . . Contenido de NaoQiAcademics-1. . . . . .2. . . . . . . . . . . . . . . .1. . . B. Auto-oscilaci´n con el robot de pie. . . . . . . . . . . . . . . .1. . . . . . . . Estructura del programa local . . . Oscilaci´n lateral nominal . . . .11. . . . . . . Espacio de estados ante perturbaciones con correcci´n velocidad . . . . . . . . . . . A. Configuraci´n de las piernas para el avance . . . . . .6. . .3. . . . .2. . . o 5. . . . . . . . . . . Ventana del editor de posturas . . . . . . . . . . . . . . apertura de las piernas 0o . . .

. . . . . . . . o C. . . . . . . . . . o o 6. . . . . . . .1. . . . o 6. . . . . . . . . . . . . . . . .1. . . . 107 9 . . . . . o a Frecuencia de oscilaci´n seg´n configuraci´n . . Comparaci´n algoritmos ALWalk y Sammy’s Walk . . . Configuraci´n de Stiffness para cada articulaci´n o o Configuraci´n de par´metros extra . . Configuraci´n de Stiffness para cada articulaci´n . . . . .1. . . . . .2. . . . . . . . . . . . . . . .1. . . . . . . .1. . . . . . . . . . . . . . . . . . Lista de articulacines de Nao . . . . . . . . . . . . . . . . . . . . . .3. Comparaci´n algoritmos ALWalk y Sammy’s Walk . . . . . o u o Valores de la velocidad angular seg´n el estado . . . . . 23 40 50 50 58 67 73 74 74 77 6. . o 7. . . . . . . . . . . .3.1. . . . . . . . . . . . 5. . 5. . . .´ Indice de tablas 2. . . . . . . . . Coste energ´tico espec´ e ıfico de la locomoci´n . . . . . Presupuesto .2. . u . . . . .4. o 4. . . . . . . . . . . . . . . . 5. . . . . . . 5. . . Coste energ´tico espec´ e ıfico de la locomoci´n – Comparativa . . . . . . .

.

. . . . . . . . . . . . . . . . . . . . 39 o http://www. . . . . . .com/watch?v=Q3C5sc8b3xM 2. . . . . . . .youtube. . . . . . 22 http://www. . . . . . En http://www. . . . . . . . . . . . . . . . . . . . . . Estos est´n incluidos en el CD adjunto y se han codificado con el c´dec libre XVID para mayor a o portabilidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . .com/watch?v=cIDkP7atTMM 2. . . . . . . . . .com/watch?v=cHJJQ0zNNOM&fmt=18 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .youtube. . . . .youtube. . . . . . . .1. . . . . . . . . . . . . . . . . . . . . . .´ Indice de v´ ıdeos ´ El siguiente listado muestra todos v´ ıdeos que se citan a lo largo de la memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .youtube. . . . . . . . . . . al que se puede acceder a o directamente desde el documento electr´nico de la memoria. . . . . . . . . . . . . . . . . . . . . . . .com/ o view_play_list?p=BC6A4C9D88DF0431 se encuentra la lista de reproducci´n con todos los o v´ ıdeos recopilados. . . . . . . . .youtube. . . 2. .com/watch?v=rSKRgasUEko&fmt=18 5.2. . . . . . . . 48 http://www.2 B´ ıpedo Delft . . 22 http://www. . . . .2 B´ ıpedo del MIT . . . . . . . . . .com/watch?v=Lyyxb8uaTNo 4 Presentaci´n de Nao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .com/watch?v=e2Q2Lx8O6Cg 2. . . . . .youtube. . . . . . . . . . . . . . . . . . . .1 Passive Walker . . . . . . . . .youtube. . . . . . . . . . . . . . . .2 Persona caminando a velocidad normal . . . . . . . . . . . . .youtube. . . .youtube. . . . . .2. . . . . . . . .2. . . . . . . . . . . . . . . . . .4 SIMBICON . . . . . . . . . . . . . . . . . . . .1. . . . . . 19 http://www. . . . . . . . . . .3 ASIMO . . . 26 http://www. 37 http://www.youtube. .2. . . . . . . . . . . . . . . . . . . .2 ALWalk velocidad baja . . . . . . . . . . . . . . . 24 http://www. . . . .com/watch?v=2rp2BjqCrFk 2. . . . . . . . . . 22 http://www. .com/watch?v=ynhqomKwbAE 2. 21 http://www. . . . . . . . . . . . . . . Adem´s se indica un enlace para su versi´n on-line. . . . . .2 B´ ıpedo Cornell . . . . . . .com/watch?v=ICcnmpxjRcQ&fmt=18 11 . . . .com/watch?v=uBQfSBluhFU 3. . . . .3 BigDog . . . . . . . . . . . . .youtube. . . . . . . . . . .

. . . . . .3 ALWalk low-stifness. . . .com/watch?v=YD1bSfUuXOw&fmt=18 5. . . . . . .youtube. . . . . . . . . . . . . velocidad alta . .youtube. . . . . . . . . . . . . . . . . . . . 91 o http://www. . . . . . . . . . . . . . .63 http://www. . . . . . . . . . . .com/watch?v=Zo2fHp9ttHU&fmt=18 B. . . . . . . . . . . . . . .com/watch?v=gWDDUm9R8DI 5. .2. . . . . . . . . . . . . . . . . .youtube. . . . . . . . . . . . . . . . . .2. .youtube. . . . . . . . . . . . 55 o http://www. . . . . . . . 52 http://www. . . 60 http://www. .com/watch?v=yegYi-mUO9w&fmt=18 5. .2. . . . . . . .3 Respuesta a perturbaciones externas . . . . . . . . . . . . . . . . . . . . . .youtube. . . . . . . . . . .2. . .1.com/watch?v=mBUr6-fWJck&fmt=18 5. . . . . . . . . . . .youtube. .2. .4 Estabilizaci´n movimiento lateral . . .2 ALWalk velocidad alta . . . . . . . . .youtube.2. . . . . .2 Simulaci´n con Webots: Oscilaci´n lateral estable .3 Oscilaci´n lateral propia . . . . . . . . . .youtube. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .youtube. .2 Simulaci´n con Webots: Marcha . . .3. . . . . . . . . . .com/watch?v=1yQMAdktnFg&fmt=18 . . . . . .1 Spring Flamingo .com/watch?v=ieNhko_8-Us&fmt=18 A.5 Nao caminando con algoritmo Sammy’s Walk . . . . .3 Balanceo lateral estable . . . . . . .2. . . . . . . . . . . . . . . .youtube. . . . . . . . . . . . . . . . . . . 67 o http://www. . .com/watch?v=WsvSDLvSyso&fmt=18 5. . . 51 http://www. . . . . . . . . . . . . . . 56 o http://www. . . . . . . . . . . . . . .12 Locomoci´n b´ o ıpeda del robot humanoide Nao 5. . . . . . . . . . . . . . . . . . .4 Ejemplo de programaci´n en Python . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . .youtube. . 89 o http://www. . . .youtube. . 102 http://www. . . .com/watch?v=oNyvn6dL04I&fmt=18 5. .com/watch?v=AM3bckQ4ujQ 5. . . . . . . . . . . . . . .com/watch?v=0bcNYX5PrJM 5. . . 55 o o http://www. . . . . . . . . . . .com/watch?v=MRBFnJs7ZB8&fmt=18 5. . . . . . . . . . . . . . . . . . . . 48 http://www. . . . . . . . . . . . . . . . . .2.youtube. . . . . . . . . . . . . .3. . . . . . . . . . . . . . . . . .67 http://www. . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . .com/watch?v=pAhuOHn_bH4&fmt=18 A. . . . . .5 Ejemplo de programaci´n en URBI .3 Nao controlado con mando de la Wii .

y dise˜o de un algoritmo que los o n aproveche para inducir un movimiento de avance. Estudio de ciclos l´ ımites en la oscilaci´n del robot. Estabilizaci´n de las oscilaciones mediante atractores en el espacio de fases. se pretende dise˜ar n este algoritmo a trav´s de inducir ciclos l´ e ımites en el movimiento del robot y aprovechar las din´micas propias del sistema para provocar su avance. experimentaci´n y a n o an´lisis de resultados m´s que en una formulaci´n din´mica-mec´nica del robot como sistema a a o a a multis´lido. a 13 . o La metodolog´ que se seguir´ ser´ principalmente experimental. El dise˜o del algoritmo se har´ desarrollando diferentes n a metodolog´ ıas. lograr que Nao camine. En concreto. a Como objetivo paralelo se desarrollar´ una interfaz de usuario para poner en uso las funciones a principales de Nao y sus funciones de locomoci´n. sin ser ni mucho menos una b´squeda intuitiva al azar. es decir. mejorando el propio de Nao. o El enfoque estar´ orientado al dise˜o de los algoritmos de control. Las investigaciones en este campo ya tienen un amplio desarrollo. se plantean los siguientes a subobjetivos. programaci´n y simulaci´n en o o realidad virtual. para alcanzar el objetivo deseado. A su vez. esto es. o o o Es de esperar que al ser una implementaci´n novedosa se encuentren problem´ticas de o a diversa ´ ındole. aunque ´sta muchas veces no se podr´ implementar en Nao ıa e a o no obtendr´ los resultados esperados. su interfaz con el ordenador. sino m´s bien una u a experimentaci´n basada en estudios sobre robots e introspecci´n en la locomoci´n humana. aquellos que tienen morfolog´ humana y las articulaciones necesarias ıa para realizar movimientos parecidos a los humanos. investigaci´n de algoritmos o o de locomoci´n ya existentes y de la locomoci´n humana. o o Puesta en marcha de Nao. hacer que camine. ser´ necesario e a un desarrollo propio y novedoso. o An´lisis de prestaciones y resultados. que conforman la estructura de este proyecto: Como fuente de inspiraci´n y para ver el estado del arte. El objetivo central de este proyecto es dise˜ar un algoritmo de locomoci´n b´ n o ıpeda para que el robot Nao camine. que se deber´n ir solucionando con ingenio y los recursos disponibles.Cap´ ıtulo 1 Introducci´n o El presente proyecto de investigaci´n plantea el estudio de locomoci´n b´ o o ıpeda de robots humanoides. y se han logrado resultados muy interesantes. ´ste es. a Por tanto. Como punto de partida ıa a a se formular´n hip´tesis a partir de modelos simplificados. Tambi´n se usar´n ideas de la a o e a amplia bibliograf´ investigada.

.

En caso de soporte sobre un unico pie. el robot se inclina rotando sobre alguno de los bordes de dicho pol´ ıgono. Laboratory of Ichiro Kato. o ´ 1´ 15 . En caso de soporte con los dos pies. y es e a n actualmente una de las m´s extendidas. el pol´ ´ ıgono de soporte es este mismo. a a Area conexa formada con los puntos de contacto sobre el suelo (ver Figura 2.Cap´ ıtulo 2 Robots b´ ıpedos y algoritmos de control La locomoci´n de robots con piernas. m´s a e a robustez se conseguir´. sin entrar en demostraciones ni formulaciones complejas del robot como sistema din´mico a multis´lido. S´lo se har´ un an´lisis descriptivo de los aspectos m´s importano a a a tes. o n Del vasto trabajo de investigaci´n que se ha realizado en este campo. no es una novedad para o el desarrollo tecnol´gico. Cuando ZMP est´ fuera del pol´ a a ıgono de soporte. Este concepto fue aplicado con ´xito por o e primera vez en 1984 en Waseda University. y desde entonces en otros m´ltiples robots. el primero equilibrado din´micamente. la condici´n ZMP asegura que el movimiento del cuerpo ser´ tal que o a el pie estar´ plano en el suelo y por tanto no caer´. Cuando pZM P existe dentro del pol´ ıgono de soporte1 . el contacto entre el suelo y el pie es estable. el pol´ ıgono de soporte abarca la regi´n de los pies y el parte del area entre ambos. Para ampliar la informaci´n se puede consultar la bibliograf´ referenciada. De forma intuitiva.1). Establece un criterio de estabilidad din´mica para el a a robot que permite generar patrones de locomoci´n. o o ıa 2. se estudiar´n dio a versos algoritmos de control representativos. es un deber analizar algunas de las o o soluciones y tecnolog´ que ya se han encontrado e implementado. Zero-Moment Point (ZMP) Esta t´cnica de control fue introducida por primera vez hace m´s de 35 a˜os [24]. Los primeros trabajos se iniciaron hace 40 a˜os. punto de momento nulo) se puede definir como el punto pZM P en el suelo tal que el momento neto de las fuerzas externas no tiene componente sobre los ejes horizontales. as´ como algunos ejemplos de robots reales y ı simulaciones interesantes. antes o n de comenzar la aproximaci´n propia a esta cuesti´n. El criterio de que ZMP exista dentro del pol´ ıgono de soporte es condici´n necesaria y suficiente para garantizar la estabilidad din´mica o a del robot. ıas Este cap´ ıtulo tiene como objetivo ver el estado del arte de la locomoci´n de robots b´ o ıpedos. y a su vez servir de fuente de inspiraci´n para el posterior dise˜o de un algoritmo propio. en el robot WL-10RD.1. Cuanto m´s cercano est´ p al centro de la superficie de soporte. humanoides o similares. Por tanto. a u ZMP (Zero Moment Point.

a Figura 2.16 Locomoci´n b´ o ıpeda del robot humanoide Nao (a) Soporte doble (dos pies) (b) Soporte simple (un pie) Figura 2. sobre ´l act´a la reacci´n del suelo (la fuerza R y el momento ısla e u o M). FT z y de momento MT x . En general.1: Pol´ ıgono de soporte seg´n fase de locomoci´n u o 2. no en uno de sus bordes. es decir. Ry ). as´ como la condici´n o a o ı o que permite generar trayectorias de locomoci´n estables. se cumplir´ que las componentes horizontales de FT (FT x . considerado un s´lido r´ o o ıdigo. Igualmente en la articulaci´n o del tobillo habr´ tres componentes de fuerza FT x . se puede reducir a una fuerza y un momento aplicados en un punto determinado. la fricci´n. o e Si se a´ el sistema “pie”. La o reacci´n del suelo sobre el “pie”. y la de la articulaci´n del tobillo (la fuerza FT y el momento MT ) (ver Figura 2. MT x . Rz . MT z . que o e la reacci´n del suelo est´ aplicada en el interior del pie.1. Lo mismo pasar´ con la o a componente vertical del momento MT z y Mz . o La clave est´ en suponer que el robot est´ apoyado sobre un unico pie. esto es. My . Ry . y un tres componentes de momento Mx .2). Se impone como a a ´ condici´n de equilibrio que el pie no est´ en condiciones de volcada inminente. habr´ tres componentes de fuera za Rx . FT x . Mz . Formulaci´n matem´tica o a A continuaci´n se har´ una demostraci´n sencilla del criterio ZMP. y suponiendo que no hay deslizamiento. .1.2: Fuerzas y momentos sobre el pie Dadas las caracter´ ısticas del enlace pie-suelo. FT y ) siempre se ver´n compensadas a a por las componentes horizontales de R (Rx .

existe un momento que est´ haciendo e a girar el pie. Dado que la fuerza Rz es unidireccional. y analizar las componentes horizontales: Fi = 0. MT y y Mx . La ecuaci´n generalizada para calcularlas es: o τ = H(q)¨ + C(q. no est´ en condiciones de volcada inminente. a trav´s de una formulaci´n din´mica inversa (Newton-Euler por e o a ejemplo) se pueden determinar los momentos y fuerzas en cada articulaci´n. En a o condiciones de volcada inminente. i i MPi = 0 (2. siempre se puede encontrar un punto p tal que la reacci´n del suelo o Rz . y ´ o o restringi´ndola a las componentes horizontales se obtiene: e −→ − −→ − −→ − (OPZMP ∧ (−FT − mpie g))H + OG ∧ mpie g + MH + (OT ∧ FT )H = 0 T (2. ZMP y CdP est´n ubicados sobre un borde del pol´ a ıgono de soporte. velocidades y aceleraciones. Sustituyendo la ecuaci´n 2. Tambi´n existe una interpretaci´n que es la que permite utilizar este concepto en el dise˜o e o n de trayectorias: CdP se define en funci´n de la interacci´n de las fuerzas de reacci´n del suelo. es decir. ZMP existir´ fuera del pol´ a ıgono de soporte en un punto tal que el momento neto de todos los enlaces sea nulo. Si el pie est´ en equilibrio.5) . y ser´ coincidente con CdP por definici´n. CdP continuar´ estando en el borde del pol´ a ıgono de soporte (no puede existir fuera de ´ste).1) R + FT + mpie g = 0 ⇒ R = −FT − mpie g −→ − −→ − −→ − OPZMP ∧ R + OG ∧ mpie g + MT + M + OT ∧ FT = 0 (2. Rz . ZMP a a se encontrar´ dentro del pol´ a ıgono de soporte.3) Si se estudian unicamente las componentes horizontales. Cabe destacar que esta definici´n es muy parecida a la de centro de presi´n (CdP). fuera del equilibrio. se pasar´ a o u a condiciones de volcada. Este punto es el Zero-Moment Point o ZMP. A continuaci´n se explicar´ la diferencia ´ o a entre ambos conceptos. y en concreto o para el tobillo del pie soporte. CdP se o o define como el punto tal que el efecto de la fuerza y momento de la reacci´n del suelo equivale o a unicamente una fuerza aplicada en ese punto. M no aparece en la ecuaci´n ´ o al tener unicamente componente vertical. Robots b´ ıpedos y algoritmos de control 17 Por tanto. My ).3. q)q + g(q) + τext q ˙ ˙ (2. siendo las componentes horizontales del ´ momento compensadas por la ubicaci´n de la fuerza. Para calcular la posici´n de o o ZMP a partir de una trayectoria en primer lugar hay que imponer equilibrio est´tico de a momentos en el pie.2 en la ecuaci´n 2.4) Para una trayectoria computada. Sin embargo. o o o ZMP se puede definir en funci´n de una trayectoria computada. de la cual se conozcan las variables articulares.2) (2. Cuando el momento externo de la articulaci´n contin´e aumentando. Mx . My se reduzca unicamente a una fuerza. el problema se reduce a estudiar la componente vertical de las fuerzas (FT z y Rz ) y las componentes horizontales de los momentos (MT x .2.

a Criterios estil´ ısticos: ya que el modelo a resolver es de dimensi´n muy elevada. Si est´ fuera. la trayectoria es estable. 2. C incluye los t´rminos e de coriolis. a o 2. H la matriz de inercia. o La condici´n de ZMP impone que el pie est´ est´ticamente equilibrado. o El robot HRP-2 implementa este y otros criterios [23]. Como resultados de esta e ecuaci´n se pueden encontrar en concreto los valores de MT y FT . ya que las trayectorias de la locomoci´n son estables. El procedimiento consta de los siguientes pasos [4]: o 1. existir´ un a a a momento neto y por tanto el pie volcar´ sobre uno de sus bordes. Esta o condici´n expuesta para el soporte con un solo pie se puede extrapolar para el soporte doble. Sobre esta base se pueden implementar mejoras. a y para pasar de movimientos articulares a fuerzas la din´mica inversa. y otros dependientes de cada caso concreto. M´ ınimos y m´ximos movimientos articulares. Las restricciones a que debe cumplir la optimizaci´n deben ser: o Condici´n ZMP (equilibrio din´mico). Para encontrar las trayectorias de un paso se sigue un proceso de optimizaci´n. o usar informaci´n de otros medios para calcular trayectorias futuras. Para pao sar de trayectorias a configuraciones articulares es necesario usar la cinem´tica inversa. la posici´n del ZMP puede constituir una variable de control efectiva para asea o gurar estabilidad. Algoritmo El algoritmo que se presentar´ a continuaci´n permite generar trayectorias que cumplan a o la condici´n ZMP. La funci´n a optimizar puede incluir aspectos energ´ticos (minimizar la energ´ o e ıa aportada por los actuadores en un ciclo). o ´ es necesario definir m´s criterios. Estos pueden ser del estilo trayectoria del pie a cicloidal. En este caso ser´ necesario a a redefinir la trayectoria inicial de tal forma que se consiga cumplir la condici´n ZMP.2. .1.4 se puede determinar la posici´n del punto pZM P .. Adem´s. como por ejemplo calcular las trayectorias y el ZMP on-line. de robustez (ZMP lo m´s cercano posible a al centro del pol´ ıgono de soporte). Pero como para o e a su c´mputo se utilizan las din´micas del resto del cuerpo. Sustituy´ndolos en la o e ecuaci´n 2. altura de las caderas dentro de un rango.. no se podr´ cumplir el equilibrio. Aunque quiz´ el ejemplo m´s reprea a sentativo del algoritmo ZMP es el robot ASIMO de Honda [8]. Si este est´ dentro del pol´ o o a ıgono de soporte. se dice que esta condici´n es de o a o estabilidad din´mica. g los t´rminos de gravedad y τext las fuerzas externas. Se definen una serie de posiciones de los pasos deseados. o a Cumplimiento de las posiciones deseadas para cada paso.18 Locomoci´n b´ o ıpeda del robot humanoide Nao siendo τ el vector de fuerzas generalizado.

la ultima y novedosa ´ versi´n se present´ en el a˜o 2005 (ver Figura 2.3 ASIMO] contiene una demostraci´n del robot caminando en sus diferentes modos. Cuando hay un o u e desajuste entre el patr´n ideal y la realidad (ya sea por perturbaciones o por el terreno) o entran en funcionamiento las siguientes tres estrategias de control para prevenir una ca´ ıda. Camina de forma normal a 2. es e uno de los robots m´s avanzados que se han dise˜ado en laboratorios de investigaci´n. El v´ ıdeo [2. Quiz´ sea uno de los ejemplos m´s o o n a a representativos de los robots caminadores b´ ıpedos basados en el algoritmo ZMP. ASIMO ASIMO (acr´nimo de Advanced Step in Innovative Mobility – paso avanzado en movilidad o innovadora). y puede alcanzar corriendo (con o fase a´rea) los 6 km/h.7 km/h. es un robot humanoide creado por la empresa Honda [8]. Puede correr girando y evitar deslizamiento de los pies. tiene 34 grados de libertad y una ´ o bater´ que dura aproximadamente 25 min. u a a o Control de la posici´n del siguiente paso: Se hacen los ajustes necesarios a la o trayectoria planificada de tal manera que el siguiente paso sea en el sitio ´ptimo para o compensar la perturbaci´n. a n o . Control del ZMP objetivo: Se hacen las correcciones necesarias sobre las articulaciones de tal forma que se sit´e lo m´s r´pido posible en la posici´n ZMP ideal. aparte de todo un arsenal de sensores inerciales. Sin duda. y consecuentemente lograr estabilizar la locomoci´n: o Control de la reacci´n del suelo: se controla la fuerza ejercida en los pies para o detectar las irregularidades en el terreno. o (a) Evoluci´n de ASIMO (1986 a 2005) o (b) Versi´n 2005 o Figura 2.1. las perturbaciones que provocan y as´ poder ı corregirlas. o La ultima versi´n de ASIMO mide 130 cm. y mover las articulaciones seg´n ´ste.3).3: Robot ASIMO El funcionamiento se basa en generar un patr´n de movimiento ideal para las articulao ciones que cumpla la condici´n ZMP. Robots b´ ıpedos y algoritmos de control 19 2.2.1. ıa de presi´n y de fuerza.3. pesa 54 kg.

el c´lculo del grado de separaci´n de ZMP permite tener una medida de la a o perturbaci´n. l´gicamente existen perturbaciones. Debido a que se necesita a e gran precisi´n para tener una trayectoria estable. pero esto limitar´ la o ıa ıa movilidad “natural” del robot. ¿es realmente necesario? ¿No se podr´ buscar o a ıa un sistema de locomoci´n tal que el ciclo l´ o ımite de los sucesivos pasos fuera estable.4. Llegados a este o punto resulta interesante analizar trabajos realizados sobre el denominado caminar pasivo (Passive Walking). sobre dos.1. volviendo a recuperar la estabilidad. ser´ interesante reflexionar en lo siguiente: ZMP busca que las trayectorias ´ ıa de locomoci´n sean din´micamente estables. siempre recordando que los mejores robots que caminan usan este m´todo: e La resoluci´n del algoritmo es de alta complejidad. o a Constituye una variable de control on-line. a a El uso de cinem´tica inversa tambi´n comporta problemas. La otra opci´n ser´ evitar configuraciones cercanas a singularidades.. aunque las trayectorias fueran inestables? Efectivamente s´ se puede y de hecho. Aunque las trayectorias se planeen generalmente off-line. Se puede establecer un control o articular tal que en caso de que ZMP se desv´ de su posici´n calculada regrese a ´sta. Ventajas e inconvenientes Las ventajas de aplicaci´n del concepto ZMP y los algoritmos derivados podr´ ser o ıan resumidas en: En s´ mismo ZMP constituye una metodolog´ sistem´tica para la generaci´n de traı ıa a o yectorias para la locomoci´n. y por tanto deben usarse matrices de din´mica diferentes. Esto eleva la complejidad much´ a ısimo. sobre un borde de un pie. Con el crecimiento de capacidad de o c´lculo de los ordenadores no supondr´ un problema en el futuro. Dependiendo de la configuraci´n (articulaci´n en su l´ o o ımite.. y por tanto comportamientos e bruscos del robot. ı a los humanos no cumplen la condici´n ZMP en todas las fases de la marcha. Esta se puede corregir entonces modificando la trayectoria de tal manera o ´ que el nuevo paso se sit´e de tal forma que el nuevo pol´ u ıgono de soporte incluya ZMP. . tal como se ver´. o Se asegura que las trayectorias de locomoci´n sean din´micamente estables. los errores num´ricos pueden tener o e implicaciones muy perjudiciales de desequilibrado. soporte sobre un pie. Por ultimo.) cambian los grados de libertad del sistema.20 Locomoci´n b´ o ıpeda del robot humanoide Nao 2. y los trabajos que se derivan aplicados a caminadores activos. Los m´s comunes son e a divisiones por cero que conllevan explosiones num´ricas. ıe o e En caso que la perturbaci´n no se consiga compensar y ZMP salga del pol´ o ıgono de soporte. Los siguientes puntos se plantean como inconvenientes al ZMP. El uso cinem´tica y din´mica inversas puede tener problemas por singularidades. ya que a a cerca de ellas se producen errores num´ricos muy importantes.

2. Robots b´ ıpedos y algoritmos de control

21

2.2.
2.2.1.

Passive & Dynamic Walking
Passive Walking

El concepto de locomoci´n pasiva (Passive Walking), es decir, sin actuadores, fue introduo cido por primera vez en 1988 por Tad McGeer [15][18][16][17], quien estudi´ y construy´ un o o caminador pasivo (ver v´ ıdeo [2.2.1 Passive Walker]).

Figura 2.4: Copia del mecanismo inventado por McGeer

La virtud de este mecanismo es que no necesita energ´ externa ni ning´n tipo de control ıa u para caminar por una pendiente, el movimiento viene “propulsado” por la energ´ gravitaıa cional de la bajada. El sistema act´a como dos p´ndulos acoplados. La pierna soporte es un u e p´ndulo invertido, y la pierna oscilante es un p´ndulo normal unido a la pierna soporte. Con e e la distribuci´n de masas y longitudes adecuada, se consigue un ciclo l´ o ımite estable, una trayectoria nominal que se repite. Inicialmente el mecanismo no ten´ rodillas, pero una mejora ıa posterior implement´ esta articulaci´n manteniendo la estabilidad. El movimiento lateral se o o inhibe al contar con cuatro piernas. McGeer hizo un estudio exhaustivo de la mec´nica y din´mica del caminador. Demostr´ las a a o condiciones necesarias para asegurar la estabilidad del ciclo l´ ımite. Cabe destacar una diferencia sustancial respecto al algoritmo ZMP: el caminador pasivo describe trayectorias inestables (por definici´n, se comporta como un p´ndulo invertido inestable), manteniendo el ciclo l´ o e ımite estable. Tambi´n es de gran inter´s el hecho que los movimientos de este simple mecanismo, que no e e tienen actuaci´n ni control, tengan una gran semejanza al de los humanos. Esto sugiere la idea o de que los humanos aprovechamos las din´micas propias de nuestro cuerpo para optimizar el a consumo energ´tico de la locomoci´n. e o Este descubrimiento abri´ una nueva puerta de investigaci´n: robots que aprovechen los o o mismos conceptos de la locomoci´n pasiva aplic´ndolos para conseguir locomoci´n sobre o a o llanos y subidas, l´gicamente a˜adiendo elementos actuadores y de control. Esto se conoce o n como dynamic walking (caminata din´mica). a

22

Locomoci´n b´ o ıpeda del robot humanoide Nao

2.2.2.

Dynamic Walking

Steve Collins y sus compa˜eros hicieron interesantes estudios de robots humanoides que n usan los conceptos de la locomoci´n pasiva [6]. Desarrollaron tres robots diferentes, sustituo yendo la “propulsi´n” gravitacional por actuadores simples. o El b´ ıpedo “Cornell” (Figura 2.5a) est´ basado en el mecanismo pasivo, y propulsado por a motores el´ctricos y muelles que ayudan al movimiento de los tobillos cuando se levantan los e pies. Tiene cinco grados de libertad (dos tobillos, dos rodillas y la cadera), los brazos est´n a unidos mec´nicamente a la pierna opuesta. El b´ a ıpedo “Delft” (Figura 2.5b) tiene una morfolog´ similar, pero con actuaci´n neum´tica. Y el ultimo (Figura 2.5c) fue desarrollado en el ıa o a ´ MIT (Massachusetts Institute of Technology). Tiene la peculiaridad de estar controlado mediante un aprendizaje con refuerzo (reinforcement learning), que converge autom´ticamente a a la estrategia de control ´ptima. Se pueden ver en funcionamiento en los v´ o ıdeos [2.2.2 B´ ıpedo Cornell], [2.2.2 B´ ıpedo Delft], [2.2.2 B´ ıpedo del MIT].

(a) B´ ıpedo “Cornell”

(b) B´ ıpedo “Delft”

(c) B´ ıpedo del MIT

Figura 2.5: Tres caminadores actuados basados en el mecanismo de locomoci´n pasivo o

El b´ ıpedo “Cornell” est´ espec´ a ıficamente dise˜ado para minimizar la energ´ de propuln ıa si´n. Mediante una pol´ o ıtica en los actuadores adecuada, se consigue que siempre aporten trabajo positivo y no se usen como disipadores. Este hecho est´ en contraposici´n con el proa o blema que presentan muchos otros robots: en el momento en el que el pie impacta en el suelo se disipa energ´ debido a que el robot est´ frenando, afectando as´ al rendimiento, ya que ıa a ı luego hay que recuperarla. Aunque los robots del MIT i “Delft” no fueron dise˜ados espec´ n ıficamente para usar poca energ´ ambos tienen las ventajas inherentes de los caminadores ıa, pasivos en lo que respecta a bajo consumo. Resulta interesante comparar la eficiencia de estos robots con otros y con los humanos. Para compararlos se usa un concepto de coste energ´tico mec´nico espec´ e a ıfico adimensional cmt , propuesto por [6]: Pm [W] cmt = (2.6) g[N/kg] · v[m/s] · m[kg]

2. Robots b´ ıpedos y algoritmos de control

23

siendo Pm la potencia de locomoci´n consumida en watts (s´lo la de los actuadores que se o o invierte en la locomoci´n, no se cuenta la del procesador ni otros elementos como sensores, o etc.), g la gravedad, v la velocidad en m/s y m la masa en kg. La Tabla 2.1 muestra una estimaci´n comparativa de estos par´metros. Es notorio que el robot ASIMO, un representante o a de los robots basados en control de los ´ngulos articulares, tiene un consumo espec´ a ıfico m´s a de un orden de magnitud mayor que los humanos, que a su vez est´ en el mismo orden de a magnitud que los robots mencionados en este apartado. Robot cmt B´ ıpedo “Cornell” 0,055 B´ ıpedo “Delft” 0,08 B´ ıpedo MIT 0,02 ASIMO 1,5 Humano 0,05

Tabla 2.1: Coste energ´tico espec´ e ıfico de la locomoci´n o

En contraste con otros robots actuados, los robots b´ ıpedos “Delft” y “Cornell” usan esquemas de control primitivos. Los unicos sensores que tienen son de contacto con el suelo, ´ y los comandos a los motores son se˜ales de on/off. n Algunas caracter´ ısticas interesantes (e imprescindibles) de los robots basados en el caminador pasivo son: La forma de la “suela” de los pies est´ muy estudiada. Es una forma curvada que permite a que el movimiento de avance sea suave. Gran parte del movimiento tal´n–punta del pie o tan “humano” que tienen es gracias a esta caracter´ ıstica. El robot del MIT tambi´n e tiene forma curvada en el plano lateral, facilitando su oscilaci´n y asegurando estabilidad o intr´ ınseca en este plano. Presentan elementos pasivos, por ejemplo muelles. Estos elementos con las caracter´ ısticas adecuadas permiten almacenar energ´ en una fase de la locomoci´n para liberarla ıa o en otra fase. De esta forma se consigue un ahorro energ´tico muy importante, adem´s e a de un mejor comportamiento especialmente en el impacto del pie en el suelo. Tambi´n e pueden incluir amortiguadores mec´nicos que proporcionan estabilidad en el momento a de impacto con el suelo. El resultado de estos estudios de robots b´ ıpedos basados en caminadores pasivos se puede resumir en los siguientes puntos: Controladores simples. No usan actuadores de alta potencia. No usan controladores de alta frecuencia, que no ser´ comparables al comportamiento ıan humano. Tienen eficiencias y movimientos parecidos a los humanos.

y adem´s un quinto grado de libertad pasivo a a (ver Figura 2.7).3. Cada actuador tiene sensores de posici´n y fuerza.3m de ancho. BigDog tiene unos 50 sensores. actuaci´n. sus sensores y las comunicaciones. sensado. su comportamiento es muy natural. El robot pesa 109 kg. capaz de moverse en entornos reales muy diversos. La computadora controla el comportamiento del BigDog. o o o a El sistema de control realiza tareas tanto de bajo como de alto nivel: control de fuerzas y posiciones de las articulaciones y coordinaci´n global de la locomoci´n. una ingenier´ especializada ıa en la construcci´n de robots din´micos y software de simulaci´n. Los de inercia miden la inclinaci´n y aceleraci´n del cuerpo.3. Ha sido ı desarrollado por Boston Dynamics (www. siendo muy estable ante perturbaciones externas importantes y variaciones de terreno. o o mientras que los de las articulaciones miden el movimiento y fuerza de los actuadores. BigDog BigDog[22] es un robot con cuatro piernas. Permite controlar la o o interacci´n con el suelo para mantenerse erguido y continuar la marcha.com). o e Los actuadores son cilindros hidr´ulicos de baja fricci´n controlados por servov´lvulas a o a de alta calidad. Utiliza como fuente de energ´ un motor de combusti´n interna de ıa o 2 tiempos de 15 CV que va conectado a una bomba hidr´ulica. y una morfolog´ parecida a la de un perro ıa (de ah´ su nombre perro grande).1m de largo y 0. la cual proporciona aceite a a alta presi´n a trav´s de los sistemas correspondientes. Figura 2. Descripci´n y morfolog´ o ıa BigDog tiene varios sistemas a bordo. mide alrededor de un metro de alto. que le suministran potencia. y en primer lugar se centraron en desarrollar un robot con forma animal que pudiera caminar.bostondynamics. Cada una de las cuatro o piernas dispone de cuatro actuadores hidr´ulicos. Con toda esta informaci´n es posible tener una estimaci´n de c´mo se est´ moviendo en el espacio.3 BigDog] se puede comprobar la bondad del algoritmo de control de este robot. o control y comunicaciones. o .6: BigDog Aunque este robot no es humanoide.1. ya que tiene cuatro piernas. Surgi´ del Massachusetts o a o o Institute of Technology. En el v´ ıdeo [2. 2.24 Locomoci´n b´ o ıpeda del robot humanoide Nao 2. 1.

m´xima 3. 1. Colocar los pies en posiciones clave a cada paso usando principios de simetr´ para que ıa el robot se balancee de forma estable mientras camina (ver Figura 2. Puede permanecer en pie. Robots b´ ıpedos y algoritmos de control 25 Figura 2. 6m/s). o avanzar levantando s´lo una pierna cada vez (velocidad 0. Se basa en los siguientes principios: Soportar el cuerpo con un movimiento vertical basado en rebotes (ver Figura 2. prediciendo d´nde colocar el siguiente paso de tal forma que se o estabiliza el movimiento.7: Descripci´n BigDog o El robot tiene una gran variedad de estilos de locomoci´n.8b). Control BigDog camina al trote mientras asegura su estabilidad din´micamente.8a). 1m/s).8: Principios del control de la locomoci´n o . Controlar la forma de caminar a trav´s de los momentos aplicados en las caderas durante e la fase de soporte de la pierna (ver Figura 2.8c).2. (a) Rebotar sobre las piernas con muelle (b) Mantener postura vertical con las piernas soporte (c) Movimientos sim´tricos e Figura 2.3. caminar corriendo con fase a´rea (velocidad e normal 2m/s. caminar levantando 2 piernas o opuestas por vez (igual que un perro.2m/s). a 2. El sistema de a control es simple comparado con otros. Usa una estimaci´n de la velocidad y aceleraci´n o o lateral para estabilizarlo.2.

. evitar y recuperarse de resbalones. o Evitar colisiones entre piernas. corriendo. girando. . Cabe destacar que s´lo se ha probado con o simulaciones f´ ısicas (con par´metros reales). y compar´ndola con la real se obtieo e a a ´ nen las fuerzas que se deben ejercer. Este algoritmo funciona bien tanto en 2D como en 3D. el sistema de control realiza las siguientes tareas (en la Figura 2. Estas se env´ a articulaciones para que su interacci´n ıan o con el suelo sea tal que las fuerzas y momentos de la reacci´n estabilicen el robot mientras o camina.9: Diagrama del lazo de control El algoritmo de coordinaci´n entre piernas inicia las transiciones de estado para producir o una locomoci´n estable. a Permite una gran cantidad de estilos de locomoci´n en tiempo real (hacia delante. A trav´s de cinem´tica inversa. pero no en robots b´ a ıpedos. y con par´metros adecuados a se puede conseguir un estilo de caminar muy parecido al humano y muy estable frente a perturbaciones externas o cambios de terreno.4. o o o Ajustar la postura para optimizar la fuerza de cada pierna.9 se puede ver el diagrama de control): Estimar la evoluci´n del terreno usando la informaci´n hist´rica. o a de lado. saltando. Usar el control de tracci´n para detectar. . Se puede ver una demostraci´n en el v´ o ıdeo [2. SIMBICON: Simple Biped Locomotion Control SIMBICON [27] es un algoritmo de control para robots b´ ıpedos que usa t´cnicas de e feedback orientadas a conseguir el equilibrio a partir del estudio de las din´micas involucradas.4 SIMBICON]. 2. gateando. V lcd d eo ia d sa a ee d Pa ic có lnf a in i ta e tr ry co i a pe is Pen ir a vru l i a t C I C od o re nds aa Pen ir a vru l i a t C D P D S ro ev F ez s u ra vru ls i ae t Pen ir a vru l i a t MD P rs ae a t ua in s ri lc e c o R bt oo Á g ls n uo y v lc a e eo i d s d d a t ua in e ri lc c ó Me a imo c ns s C o dn có o r ia in Etd pen s o ir a a Má un q ia E td s sa o E tr o no n C= ie t aIv ra ICn mái n es c C = ie t aD rca D Cn mái i t c e MD Mo eoVru l = dl i a t Figura 2.26 Locomoci´n b´ o ıpeda del robot humanoide Nao Adicionalmente a los principios expuestos. hacia atr´s.

Algoritmo La idea del algoritmo es usar una m´quina de estados finita.4. despu´s de que el pie establezca contacto con el suelo. En segundo lugar. no respecto a su articulaci´n previa. De esta forma se consigue un balanceo robusto modificando el siguiente punto de soporte. o grafo con posturas de a control. se a˜ade un t´rmino de o n e feedback para corregir el ´ngulo objetivo de la cadera-f´mur en funci´n de la posici´n del a e o o centro de masas y su velocidad. sin embargo. Robots b´ ıpedos y algoritmos de control 27 (a) Caminando (b) Pasos altos (c) Corriendo (d) Paso largo Figura 2. unas modificaciones permiten obtener una locomoci´n robusta.11: Simulaci´n en tiempo real de un personaje que camina con el algoritmo SIMBICON o 2. el torso y la articulaci´n o o cadera-f´mur de la pierna oscilante tienen ´ngulos objetivo respecto al sistema de referencia e a del suelo. y para correr s´lo dos estados. Cada estado consiste en una postura del cuerpo que representa los ´ngulos objetivo a de cada articulaci´n respecto al eslab´n anterior. para todas las articulaciones. Cada articuo o laci´n individual usa un controlador PD (proporcional-derivativo) para dirigirse a su ´ngulo o a objetivo. para otros ese tados. En primer lugar. Las transiciones entre estados ocurren despu´s de un tiempo fijo o.10: Simulaciones de un personaje en 2D con el algoritmo SIMBICON (a) El controlador 2D reacciona frente a cambios en el terreno (b) El controlador 3D reacciona a una fuerza externa en diagonal Figura 2.1. Los estilos de locomoci´n para e o caminar se modelan con cuatro estados. .2. o El control por posturas por s´ solo no tiene equilibrio intr´ ı ınseco.

Realimentaci´n para conseguir equilibrio o El ultimo componente de la estrategia de control es aplicar una realimentaci´n al posi´ o cionamiento del pie en movimiento. En segundo lugar se desacopla el control del ´ngulo de la cadera de la pierna oscilante a respecto a la inclinaci´n actual del torso. no se alcanzan realmente en un funcionamiento a normal. Control de la inclinaci´n del torso y la cadera en movimiento o La cadera de la pierna de apoyo y la pierna oscilante se controlan de forma diferente. y de 1 → 2 despu´s del contacto del e e pie con el suelo (ver Figura 2.12: M´quina de estados a En cualquier estado dado. los pares aplicados a las articulaciones se calculan con un control ˙ proporcional-derivativo (PD) τ = kp (θd − θ) − kd θ para llevar cada articulaci´n al ´ngulo o a deseado θd . controlando la cadera de la pierna en movimiento o respecto al sistema de referencia del suelo. Se emplea una ley de la forma . esto se consige usando un controlador virtual PD que trabaja en este sistema de referencia que calcula el par neto τA . Estos ´ngulos son un objetivo.13a. Es o a necesario que el par deseado sobre el torso τtorso sea el par neto que se aplica. El par τB es calculado tambi´n con un controlador e PD virtual que trabaja en la referencia del suelo. Para solucionar este aspecto se calcula el par neto del torso como τA = τtorso − τB . −τA − τB . la reacci´n (par inverso) se est´ aplicando sobre el torso. La transici´n e o entre los estados 0 → 1 ocurre despu´s de un tiempo. es decir. Para una locomoci´n sim´trica. En primer lugar se controla la inclinaci´n del torso o respecto al sistema de referencia del suelo. tal como se muestra en la figura. de hecho. S p repen o o t ir a iq ir a z ued 0 I at mp co peiq ir o i z ued 1 I at mp co ped rc o i ee h 3 S p repen o o t ir a d rc a ee h 2 Figura 2. los estados 0 y 2.12). tal como se ilustra en la Figura 2. Finalmente cabe notar que el par τB es interno al sistema y.28 Locomoci´n b´ o ıpeda del robot humanoide Nao M´quina de estados a Cada estado tiene sus ´ngulos objetivo. 1 y 3. los pares de a o e estados derecho-izquierdo deben ser sim´tricos.

10 se muestran los dibujos de diversas simulaciones. resulta muy estable frente a perturbaciones. y permite a trav´s de un dise˜o conjunto de la estructura f´ a e n ısica .13b.5. El par´metro cv regula la velocidad en estado a estacionario. El punto medio de las caderas se puede usar como una soluci´n simple y o efectiva para estimar la posici´n y velocidad del CDM.4. un procedimiento sistem´tico que permite asegurar la estabilidad de las locomociones. siendo θd el ´ngulo objetivo del controlador PD. o El par´metro cd es importante para suministrar equilibrio en locomociones a baja veloa cidad o simplemente dando pasos en el sitio. Conclusiones Despu´s de este an´lisis se puede ver el estado del arte en lo que respecta a la locomoci´n e a o b´ ıpeda de robots humanoides. Robots b´ ıpedos y algoritmos de control 29 θd = θd0 + cd d + cv v (2. cadera de o pierna de apoyo y cadera de la pierna en movimiento (b) Posici´n y o velocidad del centro de masas Figura 2.2. a Este algoritmo es siempre una referencia para el desarrollo de otros. Esta ultima e u ´ est´ bastante desarrollada. Resultados El algoritmo SIMBICON proporciona una serie de ventajas: gran facilidad para crear estilos de locomoci´n. (a) Relaci´n entre los pares del torso. θd0 a el ´ngulo objetivo por defecto de la m´quina de estados. y su simplicidad y facilidad o de programaci´n. 2. d la distancia horizontal del pie a a de soporte hasta el centro de masa (CDM). Tambi´n existen otras m´ltiples aproximaciones. tal como se ve en la Figura 2. y v la velocidad del CDM.13: Elementos de la estrategia de realimentaci´n para el equilibrio o 2.7) a la cadera de la pierna en movimiento. En la Figura 2. como dynamic walking. Los resultados m´s exitosos se han conseguido con el algoritmo a ZMP.2. Puede ser una opci´n muy interesante para el desarrollo de la locomoci´n o o o de un robot humanoide.

Este punto se tratar´ en el a siguiente cap´ ıtulo. . Aqu´ se han mostrado algunos de los algoritmos m´s usados e o ı a para locomoci´n b´ o ıpeda. Una aproximaci´n e o o inspirada en este planteamiento puede proporcionar propiedades muy interesantes al robot. .30 Locomoci´n b´ o ıpeda del robot humanoide Nao y el control reducir much´ ısimo el consumo energ´tico de la locomoci´n. t´cnicas de optimizaci´n [25]. como por ejemplo el uso de modelos virtuales [21]. y otros interesantes para tener una base y fuente de inspiraci´n para o la implementaci´n particular que se desarrollar´ en este proyecto. Si embargo. Aparte de los algoritmos usados. existen muchos otros. aprendizaje con redes neuronales [14]. aprendizaje por refuerzo [19] [12]. . falta analio a zar un aspecto muy importante: la locomoci´n b´ o ıpeda humana.

org. momentos y potencia de cada articulaci´n. obtenidos por cinem´tica/din´mica o a a inversa. Ya que se pretende implementar el control en un robot o humanoide. y se mostrar´n de una forma gr´fica para su a a mejor comprensi´n. Captura en v´ ıdeo de la secuencia. En ella se puede hallar una captura de informaci´n a o con m´ltiples sensores y c´maras de precisi´n para analizar el caminar humano. muy lento.1): Diferentes estilos de caminar: Normal. o Los datos que proporcionan constan de (ver Figura 3.Cap´ ıtulo 3 An´lisis de la locomoci´n b´ a o ıpeda humana La locomoci´n humana es compleja y un an´lisis exhaustivo ser´ inviable para este proo a ıa yecto. Parte de los u a o datos expuestos se han tomado de este estudio.org. En concreto se analizar´n el estilo general de locomoci´n y los a a o movimientos articulares. Informaci´n de la actividad muscular. muy muy lento. A continuaci´n se analizar´n aquellos aspectos biol´gicos-cinem´ticos-mec´nicos releo a o a a vantes para el dise˜o del algoritmo de locomoci´n del robot. ya que son la clave para caminar. Dibujo esquem´tico de la persona. a o 31 . e Se ha utilizado como fuente de datos la informaci´n proporcionada en [13]. Se puede afirmar que la forma de caminar de los humanos est´ muy optimizada para a la configuraci´n de dos piernas. Este an´lisis se centrar´ en las n o a a piernas. Otros aspectos como la din´mica. tambi´n es un deber estudiar el modelo “original”. r´pido y estilo a ASIMO. o o ´ Angulos. potencia u otros aspectos salen a de los objetivos de este proyecto. y tambi´n por o e la p´gina web www.dynamicwalking. Hay m´ltiples e interesantes estudios al respecto que se u pueden consultar para m´s informaci´n en la web de www. lento. a El aspecto m´s relevante para el posterior desarrollo de un algoritmo de locomoci´n en a o el robot es la cinem´tica.dynamicwalking. o Captura de la posici´n XYZ de cada articulaci´n.

32 Locomoci´n b´ o ıpeda del robot humanoide Nao (a) Dibujo esquem´tico a (b) V´ ıdeo (c) Actividad muscular Figura 3. La rodilla est´ flexionada de un 15 a un 25 % con el fin de evitar un ascenso ´ a del centro de gravedad.2d) – Es el doble apoyo. Los movimientos son muy r´pidos. a 4. 3. Pie plano en el suelo (15-40 %) (Figura 3. flexi´n del tobillo. contrariamente a lo que ocurre en la carrera.2e) – Flexi´n de la rodilla o o ). Ataque del tal´n en el suelo (0-15 %) (Figura 3.2a) – La rodilla est´ en extensi´n o a o completa. el miembro posee su longitud m´ r´pida e importante (40-50 a o ınima. es de una complejidad extraordinaria. la pelvis oblicua hacia adelante. Descripci´n cualitativa o Fases de la marcha La marcha normal. ya que un ciclo completo dura del orden a de 1s.2b) – El sujeto se halla en equilibrio sobre un unico pie. un acto esencial que se aprende por instinto. o De forma esquem´tica los diversos tiempos de la marcha son: a 1. 3.1. Despuegue del tal´n (40-50 %) (Figura 3. desde el contacto del tal´n en el suelo hasta el siguiente contacto. 5. Este o o e elemento es estable a partir del cual los dem´s se mueven.1. Se caracteriza por el hecho de que el cuerpo jam´s abandona totalmente el contacto a con el suelo.1: An´lisis del caminar humano a 3. Avance del miembro inferior oscilante (60-75 %) (Figura 3. el tobillo en posici´n neutra. . Despegue de los dedos (50-60 %) (Figura 3. Para mayor claridad se explican las fases de la marcha referenciadas al porcentaje del ciclo de un solo miembro. o 2.2c) – Apoyo reducido s´lo al antepi´.1.

2f) . Extensi´n total (75-100 %) (Figura 3. Del 15 al 40 % (Figura 3. que la condici´n ZMP que el pie completo est´ totalo e mente apoyado s´lo se cumple durante medio ciclo. a (a) (b) (c) (d) (e) (f ) Figura 3. Del 40 al 50 % (Figura 3.3.3b) – El pie permanece plano. .3a) – El abordaje al suelo se realiza por el tal´n. Del 50 al 60 % (Figura 3.2. El contacto se realiza a trav´s e del borde externo.El miembro oscilante pasa a gran velocidad o y se coloca en la posici´n de mayor longitud posible con el fin de alcanzar el suelo lo o m´s delante posible del cuerpo. De 0 al 15 % (Figura 3.1. e 4. Todo el peso reposa s´lo sobre el o o antepi´.2: Fases de la marcha Es de notorio inter´s que en la marcha normal s´lo se tiene un pie totalmente apoyado e o durante un 50 % del tiempo. Desarrollo del pie durante la marcha 1.3d) – Despegue de los dedos. 3. a a 3.3c) – Despegue del tal´n. o 2. Se puede comprobar f´cilmente intentando o a caminar con los pies siempre planos que se requiere mucho m´s esfuerzo y es m´s dificultoso. Es decir. An´lisis de la locomoci´n b´ a o ıpeda humana 33 6.

Su valor normal es de 15o .5 a 5 km/h. 3. o e Recordar que en un ciclo completo se realizan dos pasos. Amplitud del paso . En un hombre adulto de talla media (170cm de altura) la cadencia m´s eficiente1 var´ entre 110 y 130 pasos por minuto. Brazos y movimiento de torsi´n transversal o Con el fin de separar lo menos posible el centro de gravedad de su eje de progresi´n. y el paso se ´ debe acortar. Se o o llama ´ngulo del paso el formado por la l´ a ınea de marcha y el eje del pie.92 y 1. Esto es a ıa 2 entre 0. En caso ıa que se amputaran todos los dedos la ultima fase del paso no se puede realizar. Se puede ver que desde el punto de vista de la pierna. y la un per´ ıodo de ciclo velocidad ser´ de 5 a 6.1. que cruzan por detr´s. 3.4).34 Locomoci´n b´ o ıpeda del robot humanoide Nao (a) (b) (c) (d) Figura 3. La velocidad de marcha es igual u al producto de la cadencia por la longitud de paso. a La marcha normal es la que tiene un consumo energ´tico menor.5 km/h. . el pie est´ basculando. La longitud de paso oscila entre 75 y 85 cm.6cm Línea de la marcha 15º Ángulo del paso Figura 3. Caracter´ ısticas del paso El paso es la distancia que separa dos apoyos sucesivos.09 s.5).4. 1 2 Entendida como la que tiene la relaci´n velocidad/(consumo energ´tico) mayor.3. Esta idea es a la que se aprovechaba en los caminadores pasivos. con una velocidad alree dedor de 4. y se mide de tal´n a tal´n. es preciso que los hombros y brazos realicen el o giro en sentido inverso (ver Figura 3. para una velocidad media es de 5 a 6cm (ver Figura 3.1. y o disminuir la oscilaci´n transversal del tronco.3: Desarrollo del pie durante a marcha Este ser´ el esquema del desarrollo del paso para un pie estrictamente normal. por eso tienen movimientos tan parecidos a los humanos.4: Caracter´ ısticas del paso La cadencia es el n´mero de pasos hechos en un minuto. La amplitud del paso es la distancia que separa el tal´n de a o la l´ ınea de marcha.

Figura 3.7 se pueden hallar instant´neas para cada fase del paso.2.3. Es por eso que resulta interesante analizar la evoluci´n temporal de los o o a ´ngulos de articulaci´n cu´ndo una persona est´ caminando. Se a considerar´n los movimientos en cada plano independientes para esta primera aproximaci´n.2. 3. o a a En la Figura 3. Cinem´tica a Sistema de referencia En primer lugar se definir´n planos de referencia y ejes respecto al cuerpo (Figura 3. 3. se estudiar´n solamente los planos a frontal (movimientos de aducci´n/abducci´n). aunque se puede proseguir a con la marcha.1. De hecho. Movimientos articulares Los comandos que se enviar´n al robot para controlarlo ser´n las configuraciones angulares a a de cada articulaci´n. por coherencia se han o tomado los mismos ejes que se definir´n en el robot Nao.2. a Ya que se analizar´ la locomoci´n en l´ a o ınea recta.5: Movimiento de brazos y hombros al caminar 3.2. y sagital (movimientos de flexi´n/extensi´n). a . a o Los ejes de rotaci´n locales de cada articulaci´n est´n definidos con el mismo sentido que o o a estos ejes locales para la posici´n indicada en el dibujo. o o o o Los movimientos en el plano transversal (movimientos de torsi´n) son menos relevantes en o l´ ınea recta a bajas velocidades.6). An´lisis de la locomoci´n b´ a o ıpeda humana 35 Se puede comprobar que si se intenta caminar con los brazos fijos pegados al tronco resulta mucho m´s dificultoso. el torso oscila mucho en el eje transversal.

6: Sistema de referencia (a) (b) (c) 105º 105º 120º (d) (e) (f ) Figura 3.36 Locomoci´n b´ o ıpeda del robot humanoide Nao + – + (a) Planos referencia (b) Ejemplo articulaci´n tibia-pie o Figura 3.7: Instant´neas de las fases de la marcha [13] a .

se tomar´ como base para el algoritmo de locomoci´n de desarrollo propio. 6km/h). o a para cada fase. En los de abd/aducci´n se puede o o o destacar el hecho que mientras un pie est´ apoyado. porque se considera que ´ste es e una buena referencia. la configuraci´n articular intenta ser tal a o que el centro de masa del cuerpo est´ sobre la vertical del pie (ver Figura 3. de per´ u ´ ıodo 1. El eje de tiempo est´ adaptado para poder seguirlo en el v´ a ıdeo [3.08 s. o a es de esperar que sea necesario usar una marcha de pasos cortos.3. Se muestra un unico ciclo. seg´n los ejes indicados.8: Instant´nea en t = 5s a 3. 27m/s = 4. una vez ya se ha iniciado el movimiento. El sentido est´ definido de la articulaci´n a o superior a la inferior. Ya que en el robot no se dispone de esta articulaci´n (tal como se ver´ posteriormente). Es de notar el hecho que en la locomoci´n humana resulta un punto clave los dedos de los o pies. a o Posteriormente se har´ un an´lisis de prestaciones para compararlo con el comportamiento a a humano.9 se representan los ´ngulos articulares mientras se est´ caminando de fora a ma normal.2.8). Los movimientos de flexi´n/extensi´n son los previsibles. e Como lecci´n se puede extraer que los movimientos no son extremadamente complejos. Figura 3.3. Conclusiones El an´lisis hecho aqu´ y especialmente la evoluci´n temporal de los ´ngulos articulares a ı. o como era de esperar.2 Persona caminando a velocidad normal]. En la Figura 3. Esto implica que planteamientos como SIMBICON basados en un grafo de posturas pueden representar bien el comportamiento humano. . Todo el an´lisis que se realizar´ a continuaci´n ser´ con un estilo a a o a de caminar a velocidad normal (v = 1. An´lisis de la locomoci´n b´ a o ıpeda humana 37 En la web mencionada anteriormente se encuentra informaci´n sobre la evoluci´n temporal o o de las variables articulares.

38 Locomoci´n b´ o ıpeda del robot humanoide Nao ´ (a) Angulos eje Y de flexi´n/extensi´n o o ´ (b) Angulos eje X de abd/aducci´n o ´ Figura 3.9: Angulos articulares de la pierna derecha y fase de paso .

Permite realizar o movimientos precisos y coordinados.aldebaran-robotics. En a o o el ap´ndice A se ampl´ esta informaci´n. pesa 4. Usa una a a bater´ de litio de Un = 21.Cap´ ıtulo 4 Nao El robot humanoide usado en este proyecto es el Nao Academics Edition v3. Ha sustituido a Aibo de Sony en la competici´n internacional de rob´tica o o Robocup. Caracter´ ısticas generales Nao mide 58cm de altura. ıa Windows y Mac. El v´ ıdeo [4 Presentaci´n de Nao] muestra sus grandes o posibilidades. con una autonom´ aproximada de 45 min. e o Las explicaciones. Nao es un robot de tecnolog´ puntera. o o Figura 4.3kg y la carcasa est´ fabricada en pl´stico. programaci´n y scripts son fruto de desarrollo e investigaci´n propios. Adem´s. El consumo en ıa ıa 39 .1: Nao Academics Edition 4. programable y controlable usando Linux. En este cap´ ıtulo se har´ una descripci´n general del robot. a modo de presentaci´n. dise˜ado n y fabricado por la compa˜´ francesa Aldebaran Robotics (www.1).com. proporcionando una interfaz de comunicaci´n muy flexible.1. Por estas caracter´ ısticas se ha escogido como plataforma para el desarrollo de este trabajo. Los datos e ıa o o t´cnicos se han obtenido principalmente de la documentaci´n suministrada con el robot [3]. nıa ver Figura 4. 6V . y se explican detalles de c´mo usarlo. lleva incorporadas una serie de funciones de a alto nivel para facilitar su uso.

2 y Tabla 4. Figura 4. Permite conexi´n con cargador de 24V.1): 2 en la cabeza. 5 en cada pierna.40 Locomoci´n b´ o ıpeda del robot humanoide Nao uso normal es de 30W.1: Lista de articulacines de Nao .2: Articulaciones del robot HeadPith HeadYaw Cabeza Flexi´n/Extensi´n cuello o o Rotaci´n cuello o HipYawPith Pelvis Articulaci´n p´lvica a 45o o e Brazos (R/L Derecha/Izquierda) R/LShoulderPitch Flexi´n/Extensi´n hombro o o R/LShoulderRoll Abd/Aducci´n hombro o R/LElbowYaw Rotaci´n codo o R/LElbowRoll Flexi´n/Extensi´n codo o o R/LWristYaw Rotaci´n mu˜eca o n R/LHand Abrir/Cerrar mano Piernas (R/L Derecha/Izquierda) R/LHipPith Flexi´n/Extensi´n cadera o o R/LHipRoll Abd/Aducci´n cadera o R/LAnklePith Flexi´n/Extensi´n tobillo o o R/LAnkleRoll Abd/Aducci´n tobillo o R/LKneePith Flexi´n/Extensi´n rodilla o o Tabla 4. 1 en la pelvis. 5 en cada brazo+1 en cada mano. y en actividad 70W. o Tiene un total de 25 grados de libertad (ver Figura 4.

Python. programar y simular robots m´viles. e Webots se distribuye preparado para ejecutar simulaciones con Nao. Con Nao no es posible.3) para modelar. tiene 4 de ultrasonidos situados a en el pecho. y en cada articulaci´n o o o sensores de posici´n con una resoluci´n de 0. El modo de interactuar es mediante el env´ de consignas de a ıo posici´n. el programa usado en Webots se puede trasladar directamente al robot f´ ısico. u otros. Para hacerlo m´s vistoso. La conexi´n puede hacerse v´ Wi-Fi IEE 802. Respecto a los sensores. Tambi´n permite a e grabar en AVI o MPG las simulaciones. 4 micr´fonos e a o y 2 c´maras VGA 640x480. Tiene una CPU x86 AMD GEODE 500MHz. Tambi´n se pueden compilar programas para ejecutarse desde Nao. basado en la distribuci´n OpenEmbedded. En el caso de algunos robots. orejas. Hay de dos tipos diferentes y con dos tipos de reducciones diferentes seg´n las necesidades de cada articulaci´n. Para ejecutar ´rdenes sobre Nao es necesario hacerlo a trav´s de NaoQi. sensores inerciales (aceler´metro de 3 ejes y gir´scopo de 2 ejes). que es el encargado de controlar el robot mediante diversos m´dulos espec´ o ıficos. 30 fps. Tambi´n maneja las comunicaciones. Para ampliar esta informaci´n se puede consultar la documentaci´n del robot. URBI. Simulador: Webots Webots es un entorno de desarrollo (ver Figura 4.2.1o . Nao 41 Tambi´n incorpora 2 altavoces de 36mm de di´metro situados en las orejas. 4 sensores de fuerza en cada pie.3. Python o o URBI. o ıa e 4. Entre algunas de las e funciones de alto nivel que implementa se encuentra un algoritmo de locomoci´n b´ o ıpeda tipo ZMP. de par´metros configurables. incorpora LEDs o o a de colores en los ojos. Existen versiones para Windows y Linux. Se puede realizar la programaci´n con diversos o lenguajes: C/C++. sensores de tacto en la parte frontal de cada pie. Con Webots se puede crear un o mundo virtual com´n con varios robots que interact´en entre ellos y realizar una simulaci´n u u o f´ ısica precisa gracias al motor matem´tico ODE (Open Dynamics Engine). pecho y pies. ya que es la pla- . El sistema operativo de Nao es un Embedded Linux (32 bit x86). Esta secci´n se ampl´ en el Ap´ndice A.11g o ıa (inal´mbrica) o Ethernet (con cable). Java. Se puede hacer o e de forma remota (desde el PC) usando lenguajes de programaci´n como C++. a no ser que se programe a trav´s de NaoQi. o Nao lleva su propio PC incrustado. o o 4. NaoQi: programaci´n de Nao o ´ Nao se suministra con un entorno de desarrollo llamado NaoQi. Sobre este sistema operativo corre o un programa llamado NaoQi. a Los actuadores son motores Coreless MAXON DC. programados en e C++. Este es un programa que implementa una gran cantidad de funciones de alto nivel y se encarga de comunicarse con los dispositivos de bajo nivel. con 256 MB SDRAM y 1 GB de memoria flash.4. El control de u o los motores se realiza mediante microcontroladores PIC que llevan un algoritmo tipo PID.

Este e se puede ejecutar unicamente bajo Windows.4). un estilo de programaci´n o mediante bloques.robocup. Con Nao viene a un modelo para Webots que se puede controlar desde un NaoQi ejecutado en el ordenador (no con la versi´n demostraci´n de Webots). Microsoft Robotics Studio (ver Figura 4. las simulaciones o ıa. El problema que tiene ´ste es que no se puede acceder e a la informaci´n de los sensores.3: Webots 6. Figura 4. Igual que Webots tiene un simulador f´ ´ ısico de un mundo virtual.1. o ´ Existe tambi´n otro simulador de Nao. Se programa en Visual Programming Language. por lo que se desestima esta v´ Adem´s.4: Microsoft Robotics Studio Se dispone de un modelo de Nao. a .1 taforma est´ndar para la liga simulada de RoboCup (www.42 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura 4.org). Tambi´n se puede programar en C o C++ un o o e ejecutable que controle el robot durante la simulaci´n.

su morfolog´ humanoide b´ ıa ıpeda y los m´ltiples sensores que tiene hacen que sea una plataforma id´nea para el desarrollo de este u o proyecto.4.4. y especialmente el contacto con el suelo. n Las funcionalidades que incorpora de control articular. Webots se muestra m´s correcto con la simulaci´n de Nao. actuadores y sensores hasta la arquitectura de software se nota un dise˜o muy cuidado. Nao 43 que se han probado dan resultados poco realistas en cuanto a movimientos. a o 4. . Desde la estructura f´ ısica. Conclusiones Nao se muestra como un robot con caracter´ ısticas muy avanzadas. y el estudio de la locomoci´n b´ o ıpeda en robots humanoides.

.

y con los actuadores situados en las posiciones habituales) que use los principios de los caminadores pasivos.2. y sobre un suelo cer´mico resbalan. Finalmente se har´ un o o a e a an´lisis de prestaciones. Se analizar´ el algoritmo y sus a a a prestaciones.Cap´ ıtulo 5 Dise˜ o del algoritmo de locomoci´n n o para el robot Nao Despu´s de llegar a una clara compresi´n de las claves de la locomoci´n b´ e o o ıpeda vistas a trav´s de ejemplos de robots humanoides y el propio cuerpo humano. ha llegado el momento de desarrollar la parte clave o de este proyecto: el dise˜o de un algoritmo propio para locomoci´n de Nao. ya que aprovechan las din´micas propias del sistema. No se o har´ un an´lisis matem´tico de la mec´nica del robot como sistema multis´lido ni la formulaa a a a o ci´n del algoritmo ZMP. tal como se mencion´ en la secci´n anterior. La programaci´n se mostrar´ en el Ap´ndice B. y adem´s est´ fuera de los objetivos de este proyecto. Las suelas a del robot son de pl´stico. Sin embargo. por varios motivos. u a n que no tenga los pies con formas especiales. a Adem´s. En a a primer lugar. a Conjuntamente con la investigaci´n que se expondr´ en este apartado se ha desarrollado o a una interfaz gr´fica para poder usar todas las funciones que se mencionan. un algoritmo de locomoci´n tipo ZMP. y la descripci´n detallada se ı a o puede encontrar en el Ap´ndice B. Aqu´ mostrar´n algunas capturas de pantallas. Nao ya tiene implementadas o o funciones para caminar. Los robots basados en los passive walkers tienen un consumo mucho menor. e Las pruebas se har´n sobre el robot directamente. ya que ´ste ya lo ha realizado la empresa fabricante de Nao y viene o e dado. En la investigaci´n bibliogr´fica hecha hasta la fecha. estos robots se han dise˜ado a n espec´ ıficamente con este fin. con las precauciones debidas. Ya que el modelo est´ proo a gramado por el fabricante. Ser´ muy interesante verificar ıa la validez de esta concepci´n en concreto con Nao. y se le har´n las modificaciones necesarias para que funcione correctamente. sin entrar en detalles de programaci´n que oscurecer´ el a n o ıan desarrollo l´gico. se investigar´ en el desarrollo de un nuevo algoritmo. aunque el algoritmo ZMP es muy potente. a Sin embargo. o 45 . Esta secci´n se n o o centrar´ en el dise˜o conceptual. El desarrollo se centrar´ en o a el estudio de la funcionalidad del algoritmo ZMP implementado y c´mo mejorarlo. y de ver el potencial de e Nao como plataforma de investigaci´n. no especialmente dise˜ado con este objetivo. se presupone la correcci´n de este. no se ha o a encontrado ning´n robot “est´ndar” (es decir. Por este motivo se har´n las a a a pruebas sobre una superficie de pl´stico que de adherencia al robot.1. tiene unos costes energ´ticos muy e elevados. y tambi´n otras a e propias de Nao.

entre otras cosas. puede e dar lugar a inestabilidades. pMaxStepHeight Altura m´xima de un paso en metros (de 0. Representa la altura de la cicloide. Estos son: o ´ pMaxStepLength Longitud m´xima de un paso en metros (de 0. La posici´n o o ZMP se crea on-line a trav´s de patrones de posici´n de los pies para cada tipo de paso. int pNumSa mp le sP er St ep ) La idea del algoritmo implementado es transformar una posici´n del ZMP objetivo en un o objetivo de posici´n del centro de masa CdM. haciendo un seguimiento de este. Uno de ellos es ALMotion. o AlMotion permite. se tiene acceso a las siguientes funciones o o (se muestran en lenguaje C++): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // p D i s t a n c e : d i s t a n c i a a c a m i n a r en m e t r o s // pNumSamplesPerStep : n´ mero de c i c l o s de 20ms p o r p a s o u // Caminar en l´ n e a r e c t a ı void walkStraight ( float pDistance . Adem´s. o 5. que incorpora las funciones para e mover el robot.1. El c´mputo de la trayectoria de CdM se realiza o con un modelo simplificado de un p´ndulo invertido.1.1. mover puntos detera minados en el espacio cartesiano o controlar la rigidez de las articulaciones.1. se pueden configurar par´metros caracter´ a a ısticos de la locomoci´n. . 055m). o bloques funcionales (informaci´n a o o ampliada en el Ap´ndice A. y se describe a continuaci´n. ALWalk : Algoritmo de locomoci´n implementado en Nao o NaoQi. 08m. 0 a 0. La forma de moverlo es mediante consignas de posici´n para las articulaciones.3. El subm´duo lo que tiene estas funciones se llama ALWalk. int pN um Sa mp le sP er St ep ) // G i r a r m a n t e n i e d o p o s i c i o n ´ void turn ( float pAngle . 015m).46 Locomoci´n b´ o ıpeda del robot humanoide Nao 5. Como es un modelo simplificado.2). el software de Nao. como por ejemplo mantener el equilibrio o caminar. resolver el modelo cinem´tico. float pRadius . Los e o diferentes patrones son los que se muestran en la Figura 5. int pN um Sa mp le sP er St ep ) // Caminar d e s c r i b i e n d o una c u r v a // p A n g l e : ´ n g u l o en r a d i a n e s de l a c i r c u m f e r e n c i a a // p R a d i u s : r a d i o d e l c´ r c u l o ı void walkArc ( float pAngle .1). La trayectoria de los pies se realiza con forma de cicloide (ver Figura 5. Descripci´n de las funciones de locomoci´n b´ o o ıpeda Una vez se hace la conexi´n al m´dulo ALWalk. int pN um Sa mp le sP er St ep ) // Caminar de l a d o void walkSideways ( float pDistance . 09m. est´ organizado en m´dulos. tambi´n a e tiene funciones de alto nivel. 0 a 0. por defecto a 0. por defecto a 0. Adem´s.

(ver Figura 5. 0 a 0. pLHipRollBacklashCompensator y pRHipRollBacklashCompensator son dos par´metros para compensar la a deformaci´n pl´stica que se produce en la cadera durante la caminata. por o defecto 0. 015m). 244m) y pTorsoYOrientation (-20o a 20o . por defecto 5o ). pHipHeight (0. tambi´n se definen cuatro par´metros extra para facilitar la creaci´n de patroe a o nes de locomoci´n estables: pLHipRollBacklashCompensator (0o a 15o . a pZmpOffsetY Offset de la posici´n objetivo del ZMP hacia un lado (de −0. pZmpOffsetX es una distancia positiva desde el tal´n de un paso. o por defecto 0. pZmpOffsetX Offset de la posici´n objetivo del ZMP hacia adelante (de 0. que hace que el CdM permanezca durante o m´s tiempo sobre el pie. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 47 (a) L´ ınea recta (b) De lado (c) Girar manteniendo posici´n o (d) Caminar en curva Figura 5. a pMaxStepTurn M´ximo cambio de orientaci´n seg´n eje vertical en radianes (de 0. 0 a a o u 1. por defecto 4. 0 a 0.5o ). Este par´metro y el siguiente sirven para controlar como las posicioa nes de cada paso se convierten en una ruta objetivo del ZMP. 0rad). 05m.5o ). 06m). o pRHipRollBacklashCompensator (-15o a 15o . 1m. Asimismo. por defecto −4.15 a 0. 015m). Se env´ una se˜al o a ıa n trapezoidal a la articulaci´n HipRoll durante la fase de soporte sobre un unico pie para manteo ´ ner el torso recto lateralmente.5. pHipHeight define la altura de las caderas del robot durante .3).1: Patrones de locomoci´n o pMaxStepSide Longitud m´xima de un paso lateral en metros (de 0. Se puede usar para reducir el ancho del movimiento lateral del CdM. 05 a 0.

hacer que Nao camine deber´ ser tan f´cil como ejecutar la siguiente ıa a o ´rden de Python: motion. el robot cae estrepitosamente por los siguientes motivos.2: Cicloide usada para trayectorias de los pies Figura 5. m´s inestable ser´ la locomoci´n.1. se muestra en el v´ ıdeo [5.2 ALWalk velocidad alta].1. lo que puede llevar a provocar movimientos bruscos.2s o Los resultados se muestran en el v´ ıdeo [5. con un paso de duraci´n 60x20ms=1. Pruebas de funcionamiento Una vez configurado. y m´s cerca se estar´ de la a a a a o a a singularidad.2 ALWalk velocidad baja].2.48 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura 5. pTorsoYOrientation define la orientaci´n del torso frontalmente. o En la documentaci´n de Nao [3] se dan explicaciones detalladas de c´mo configurar estos o o par´metros para estabilizar la locomoci´n. a o ı o 5. algunos de ellos inherentes al algoritmo ZMP: . as´ como una configuraci´n por defecto. Tambi´n se hicieron e pruebas para una velocidad de paso mayor. Cu´nto m´s alto. 60) #Camina 1m. Como se puede ver.walk(1.1.3: Configuraci´n de par´metros de Offset del ZMP o a la marcha.

El robot unicamente reproduce una secuencia de movimientos.5. Una soluci´n a esta problem´tica es limitar el par m´ximo aplicado a cada articulaci´n. Las inestabilidades se deben a que los pies no se apoyan bien sobre el suelo. Para solucionar este problema se baj´ mucho la stiffness para que se o pudieran absorber las perturbaciones. ı el siguiente apartado explicar´ la soluci´n que se ha obtenido. a o 5. De hecho. El sistema est´ en lazo abierto y por ahora Nao no dispone de medios para estabilizarlo. Respecto a ıa o los par´metros de configuraci´n extra se establecieron los que se muestran en la Tabla 5. Modificaci´n del algoritmo ZMP o El problema principal reside en que el seguimiento de las trayectorias se realiza con ganancias muy altas. en que las articulaciones se puede considerar que no hacen un seguimiento con altas ganancias. por lo que las trayectorias calculadas no necesariamente sean tan robustas como se esperar´ ıa.4 se muesta una captura de la interfaz que se ha creado para controlar ALWalk con los par´metros citados. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 49 El sistema est´ en lazo abierto. Este comportamiento no se corresponde al humano. pero [9] es de especial inter´s al centrarse espec´ e ıficamente en la aplicaci´n o a Nao. no tiene inforo ´ maci´n del entorno. Esto impide que el sistema absorba ning´n tipo de perturbaci´n. Sin embargo s´ que se puede hacer que se absorban un cierto grado las perturbaciones. a 1 . Las articulaciones no son perfectas. a Los errores de modelado son dif´ ıciles de compensar dada la complejidad y alta dimensi´n del o sistema. Hay m´ltiples investigau ciones al respecto. ya que en la bibliograf´ el t´rmino ingl´s stiffness a e ıa e e est´ ampliamente usado. En a o la Figura 5. o a a o Esto se puede realizar directamente en Nao gracias al par´metro stiffness (rigidez) de cada a articulaci´n. Se usar´n indistintamente los dos t´rminos. se lleg´ a una configuraci´n de e u o o stiffness que permit´ estabilizar la locomoci´n. por tanto es inviable compensar ning´n tipo de pertura u baci´n. a El procedimiento de ajuste ha sido el siguiente: Para disminuir la inestabilidad se ha reducido la altura de las caderas al m´ ınimo. y a la vez absorber las perturbaciones y estabilizar el sistema. o El algoritmo ZMP se basa en un seguimiento con una alta ganancia de una trayectoria precalculada.2. y lo desequilibran. Rigidez. y as´ evitar un comportamiento r´ ı ıgido.1. En este u o 1 para todas las articulaciones (se llamar´ full-stiffness). Existen huelgos mec´nicos y otros fen´menos no a o modelados que provocan inestabilidades. La stiffness representa qu´ fracci´n en tanto por uno del par m´ximo se aplicar´.3. o e o a a Es una saturaci´n de la salida del controlador del motor que permite un seguimiento de la o trayectoria m´s suave.1. caso se tiene 100 % de stiffness a Seguramente existan diferencias entre el modelo f´ ısico usado y el robot real. no se absorben las perturbaciones y por tanto se desequilibra. cada articulaci´n est´ configurada para suministrar el par m´ximo (100 %) en caso de ser o a a necesario. a Despu´s de m´ltiples ensayos experimentales iterativos. que se muestra en la Tabla 5.

3 0.02 0.0 Par´metro a pMaxStepHeight pMaxStepTurn pHipHeight pZmpOffsetY pLHipRollBacklashCompensator Valor 0.0 0.0 Tabla 5.0 0.3 0. ya que es la encargada de mantener erguido el cuerpo.04 0. .3 0.0 0.025 0. Para que los pies no toquen el suelo siempre hay que imponer una cierta altura en el paso.0 0.7 0.4: Pantalla de la GUI para la configuraci´n de ALWalk o Tambi´n se baj´ la stiffness de las rodillas y del movimiento lateral de las caderas para e o hacer un movimiento m´s suave.2: Configuraci´n de par´metros extra o a Figura 5.6 0. para asegurar la estabilidad.1 0. como si fueran “muelles”.2 Tabla 5. Esto se consigue haciendo pasos cortos. Para estabilizar el movimiento hay que asegurar que el robot est´ siempre “encima de e los pies”.50 Locomoci´n b´ o ıpeda del robot humanoide Nao Articulaci´n o Brazos HipYawPitch R/LHipPitch R/LHipRoll R/LKneePitch R/LAnkleRoll R/LAnklePitch Stiffness 0.3 0. a La stiffness del movimiento frontal de caderas no se puede bajar.1: Configuraci´n de Stiffness para cada articulaci´n o o Par´metro a pMaxStepLenght pMaxStepSide pTorsoYOrientation pZmpOffsetX pRHipRollBacklashCompensator Valor 0. Como se ha reducido mucho la fuerza en los pies y rodillas. el robot tiende a caerse.

velocidad alta]. o estabilizar la locomoci´n.2. no necesariamente buscar algoritmos basados en formulaciones matem´ticas a complejas. La formulaci´n ZMP es ı o ampliamente conocida e investigada.3 ALWalk low-stifness. con los problemas mencionados anteriormente.1. suponiendo el comportamiento de este como dos p´ndulos unidos. El algoritmo que se propone a continuaci´n tiene el objetivo de producir una locomoci´n estable o o para Nao a partir del control del robot. Sammy’s Walk : Dise˜ o de un algoritmo de locomoci´n n o b´ ıpeda La naturalidad del estilo de caminar de los passive walkers resulta sorprendente. sino la estabilidad. Este proyecto se parecer´ en forma a otros a . tal como se a o puede ver en el v´ ıdeo [5. Este proyecto se propone como objetivos para conseguir una locomoci´n tipo dynamic o walking: Inducir el ciclo l´ ımite que provoque la locomoci´n. dan tiempo a que el sistema se inestabilice. Esta idea se usa por ejemplo en el robot o BigDog. Estos par´metros dieron como resultado una locomoci´n estable y robusta. Si se hace el movimiento m´s r´pido no s´lo se consigue aumentar la a a o velocidad de translaci´n. no es en s´ mismo un algoritmo nuevo. Aplicar leyes de control que se correspondan a reacciones l´gicas que realizamos los o humanos. o Aprovechar las din´micas propias del sistema para reducir la energ´ consumida (este a ıa punto se tendr´ m´s en cuenta en un an´lisis de prestaciones posterior que en el propio a a a desarrollo).5. a o Se observa que los movimientos lentos son perjudiciales. Aunque hay muchos trabajos te´ricos que tienen este esp´ o ıritu (por ejemplo [7][11]). As´ se ı. las implementaciones en robots reales son escasas. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 51 La inclinaci´n del torso tiene que ser aquella que haga que el robot no bascule hacia o adelante ni hacia atr´s. Se buscar´ un estilo de control m´s pr´ximo al control cl´sico de dimensiones e a a o a reducidas. Adem´s se produjo una a mejora sustancial en las prestaciones de la locomoci´n. es decir. 5. o Hacer que las ´rbitas del ciclo l´ o ımite tengan un espacio de atracci´n mayor. que se analizar´n en el siguiente o a cap´ ıtulo. ya que de hecho la locomoci´n es un ciclo l´ o ımite estable que se da en un sistema no lineal. para poder comparar los resultados con los ya encontrados. sino que se mantenga en la posici´n vertical. Adem´s. a el hecho de que los robots tengan un consumo tan bajo los convierte en un modelo a seguir. La aproximaci´n mencionada en este apartado es una modificaci´n del algoritmo que ya o o viene incorporado con Nao. decide iniciar otra v´ de investigaci´n basada en el aprovechamiento de las din´micas propias ıa o a del sistema.

no se usar´ directamente. BigDog (pasos r´pidos.2. a a o simetr´ marcha humana (´ngulos articulares) y otras que se ir´n explicando durante el ıa).1.52 Locomoci´n b´ o ıpeda del robot humanoide Nao y tomar´ ideas de ellos.1 Spring Flamingo] se puede ver su comportamiento. pero llega un punto en que si se reduce m´s. Se usar´n tres a a estados por fase de soporte para poder tener un mayor control. sino que s´lo se coger´ el concepto. har´ falta definir la evoluci´n de un estado a otro. as´ que su aplicaci´n en Nao es una ı o novedad. Por tanto a medida que avance la investigaci´n se ir´n indicando los o a problemas que se encuentren y sus posibles soluciones. En el v´ ıdeo [5. En primer lugar se buscar´ inducir una oscilaci´n lateral y sobre ´sta se buscar´ sobreponer a o e a el movimiento de avance. 5. Sin embargo. Inducci´n de un ciclo l´ o ımite Caminar en l´ ınea recta es de hecho la superposici´n sincronizada de dos movimientos: o Oscilaci´n lateral. 6. Ya que se pretende lograr un movimiento rectil´ ıneo. no es capaz de u a a levantarse. El paso de los estados 1 → 2 (4 → 5) y de 2 → 3 (5 → 6) se producir´ despu´s a e de un tiempo determinado ajustable. los estados para la fase de soporte izquierdo 1. y tambi´n proviene de una formulaci´n matem´tica a e o a compleja. el impacto del pie derecho (de 6 → 1 pie izquierdo)2 . sino inducir ciclos l´ ımite). a a o a Existen otros robots. 3 ser´n sim´tricos a a e los de la fase de soporte derecho 4. Si los cambios se hacen a o directos. como por ejemplo Spring Flamingo [20]. Los movimientos e o contin´an siendo muy r´pidos. o Avance. controlando con la posici´n del siguiente paso. SIMBICON no se ha implementado en robots reales. que tambi´n usan una e m´quina de estados. Sin embargo puede suponer un buen comienzo para investigaciones futuras. a . a a desarrollo. es de esperar que no se consiga madurar suficientemente para obtener resultados comparables a otros ya existentes.5. No hay un punto intermedio que logre un movimiento suave. Para generar las trayectorias se opta por utilizar una m´quina de estados que alterne a entre diferentes posturas. Nao usa el par m´ximo disponible y provoca movimientos muy bruscos e indeseables. o Asimismo. Sin embargo. ya a o o que el movimiento lateral est´ bloqueado. La m´quina de estados implementada es la descrita en la Figura 5.2. 2 Para detectarlo se usar´n los sensores de fuerza que Nao incorpora en los pies. pero a su vez diferir´ de todos. El paso de 3 → 4 se producir´ con un evento externo a de sincronismo. Tambi´n es de esperar que ciertos resultados te´ricos no se puedan aplicar a la pr´ctica e o a sobre el robot real. Este algoritmo es el que se usa en SIMBICON [27]. algoritmo SIMBICON (control por m´quina de estados). As´ que realmente la locomoci´n se genera a partir de ı o tres estados. este robot en concreto s´lo se mueve en una direcci´n. Dado que este desarrollo es relaa a tivamente novedoso. 2. Adem´s. a Si se aplica el m´todo de reducci´n de stiffness el robot pierde fuerza. Cada postura ser´ una a configuraci´n articular del robot. Como inspiraci´n se tomar´n ideas de la locomoci´n pasiva (no se usar´ la filosof´ de o a o a ıa crear trayectorias tipo ZMP. 5.

En vez de usar alg´n tipo de ajuste tipo polin´mico u o u o o curvas b´zier que son relativamente complejos. (z − a)2 G(z) = a ∈ R.5: M´quina de estados a El algoritmo SIMBICON usaba para la generaci´n de estas trayectorias un controlador o PD.1) . o As´ la funci´n de transferencia discreta del filtro ser´: ı. tras realizar diferentes pruebas se comprueba que el ajuste de los supuesto par´metros Kp . Las articulaciones de Nao est´n en principio controladas por un controlador “tipo” PID. Ki . de par´metros configurables. la ultima opci´n que ´ o queda es usar alg´n tipo de interpolaci´n. se escoge otra opci´n que ha dado grandes e o resultados. Por tanto. son de hecho a escalones. La documentaci´n no da o detalles concretos si realmente es un PID ni de su estructura. al venir de la m´quina de estados. y Kd no da los resultados que se esperar´ a ıan. ajustado de tal forma que los movimientos fueran suaves. con dos o a polos reales. Se ha escogido de tal forma que tenga ganancia unitaria ante entradas escal´n. o a (1 − a)2 z . Para evitar que en el instante que se produce el escal´n ya haya salida. Las consignas de las articulaciones. Para suavizarlos se puede usar un filtro pasa bajos.5. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 53 XYZ[ _^]\ 1 vX Impacto pie vv v izquierdo vvv vv vv vv vv v _^]\ XYZ[ 6 drr rr rr rr rr t5 (s) rrr rr r XYZ[ _^]\ o 5 CQ CQ t1 (s) t4 (s) (a) Grafo de estados y condiciones de transici´n o XYZ[ G _^]\ 2 rr rr rr rrt2 (s) rr rr rr rr 6 XYZ[ _^]\ 3 vv v vv vv vv vv Impacto vv v pie derecho zvv XYZ[ _^]\ 4 CQ CQ CQ CQ @ABC GFED 1 t1 (s) @ABC GFED G 2 t2 (s) (b) Vista frontal del movimiento lateral @ABC GFED G 3 Impacto pie derecho @ABC GFED G 4 t4 (s) @ABC GFED G 5 t5 (s) @ABC GFED izquierdo GFED @ABC G 1 G 6 Impacto pie Figura 5. a a Sin embargo. 0<a<1 (5. se usar´ un filtro simple de segundo orden.

6: Respuesta del filtro pasabajos al escal´n unitario o Ahora que ya est´ definida la estructura del algoritmo. o a Entre otros se afrontaron los siguientes desaf´ ıos: Aprendizaje de la metodolog´ de programaci´n de Webots. se proceder´ a su implementaci´n. la Figura 5. si a → 0 el comportamiento ser´ m´s r´pido. ya que aunque el robot se caiga es una simulaci´n.54 Locomoci´n b´ o ıpeda del robot humanoide Nao donde a es la posici´n del polo en el eje real. o a Figura 5. Simulaci´n con Webots o En primer lugar se pens´ en usar el entorno Webots para hacer las primeras pruebas o con el simulador en vez de con el robot real. Con este tiempo de muestreo. o . el comportamiento ser´ m´s lento. a o Aunque la programaci´n es relativamente sencilla. a a a a a Recordamos que el c´digo en tiempo real que se ejecutar´ en Nao tiene un per´ o a ıodo de 20ms. solventar las limitaciones de la versi´n o o demostraci´n y aprender los comandos espec´ o ıficos de Webots.6 muestra la respuesta del filtro para una entrada escal´n unitario para varios valores del par´metro a.2. la estructura de programa. a a o 5. la configuraci´n de las simulaciones desde cero no fue tarea f´cil. un par´metro ajustable que regula el tiempo en o a que se llega al valor final. ıa o Desarrollo de la primera versi´n del algoritmo Sammy’s Walk. Si a → 1.2. Esto deber´ permitir un mayor rapidez en las ıa pruebas de par´metros y mayor seguridad. Se escoge la posici´n del polo tal que tenga m´dulo menor que 1 o o (estable). y del robot simulado. que sea real y positivo para que no haya oscilaciones.

5. u como por ejemplo: Desviaciones el los par´metros del modelo respecto al robot real.2. es decir. Pero para este proyecto se dejar´ de usar el simulador. con las articulaciones roll del robot. el sistema tiende a caerse. ıa Estas diferencias del robot real respecto al simulado se pueden deber a m´ltiples motivos. se apreciaba que el contacto con el suelo provocaba comportamientos aleatorios indeseados. La liga Robocup que ıa a usa Webots tiene movimientos mucho m´s est´ticos. El sistema es equivalente a dos p´ndulos invertidos. ya que se tiene acceso a ´l. El comportamiento era o o totalmente diferente. y se har´n las pruebas a a directamente con el robot f´ ısico.2 Simulaci´n con Webots: Oscilaci´n lateral estable]). e 5. Si se cae hacia a el lado del pie izquierdo. Se aprecia por ejemplo que los pies en el robot simulado son de base rectangular mientras que el robot real tienen una curvatura. tienen juego mec´nico. Al ir a buscar o oscilaciones del sistema f´ ısico. los o a ´ brazos se tratar´n posteriormente. y por tanto muchos de estos problemas a a no se afrontan.2 Simulaci´n con Webots: Marcha]). y cruzarla con el movimiento de avance para de esta forma inducir un ciclo l´ ımite estable que provoque la locomoci´n. esta vez con la base en el pie izquierdo.2. cuando en Webots caminaba bien. e . el objetivo es inducir una oscilaci´n lateral o estable. el robot real se ca´ estrepitosamente. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 55 Para la locomoci´n resulta un punto clave el contacto con el suelo. o El problema fue cuando se pas´ a la implementaci´n en el robot. hay que hacer primero un peque˜o an´lisis del como n a portamiento del sistema. En un principio se usar´n unicamente las piernas. esta v´ no resulta pr´ctica para el desarrollo del robot real. a ıa y es muy dif´ encontrar una correspondencia entre el modelo y el comportamiento del ıcil suelo real. y no solamente movimientos lentos. el derecho por ejemplo. Para inducir la oscilaci´n lateral. se producir´ una transferencia de peso y pasar´ a estar apoyado a a sobre este ultimo. Este aspecto es muy relevante. Tras bastantes pruebas iterativas se consigui´ inducir una oscilaci´n lateral (ver v´ o o ıdeo [5. La oscilaci´n lateral se pretende inducir unicamente con a o ´ movimientos laterales (sin doblar las rodillas por ejemplo). Por tanto. Imperfecciones del robot real. y existen deformaciones en las articulaciones.2.3. y tambi´n que el robot caminara o o e de forma estable relativamente r´pido (ver v´ a ıdeo [5. Oscilaci´n lateral o Tal como se ha explicado anteriormente. e o Imprecisiones en el modelo. Entonces el comportamiento del sistema cambia y pasa a moverse como ´ otro p´ndulo. Las articulaciones y sus controladores no son perfectos. a La superficie de contacto es un par´metro que var´ mucho el comportamiento del robot. a Errores num´ricos de la simulaci´n. mientras se e est´ apoyado sobre un pie.

Esta medida se muestra la mejor para obtener la frecuencia de oscilaci´n. f la frecuencia. Aunque el comportamiento del robot no se corresponde al de un p´ndulo (es de hecho un e doble p´ndulo inverso). haciendo cambios en las articulaciones se a pueden hacer cambios en los par´metros b´sicos del p´ndulo. o Si el sistema se excita a frecuencias parecidas a fp . y en [5. e ıa. o o o Estos resultados se analizar´ por medio de una FFT3 para obtener la frecuencia propia. ıa Los experimentos se realizar´n levantando el robot de un pie y dej´ndolo caer. para ´ngulos mayores s´ a n a ı. la reacci´n del suelo no necesariamente est´ colocada sobre el centro. a .3 Oscilaci´n a o lateral propia] el v´ ıdeo del experimento. En un p´ndulo normal. ıa o a Si se aumenta la energ´ puede llegar un momento que se automantenga. a En primer lugar se realizar´ el experimento con el robot totalmente de pie. a Las ideas que se ha seguido para inducir la oscilaci´n lateral con un coste de energ´ o ıa m´ ınimo son las siguientes. fp . Se observa que tiene una cierta o a deriva. g 1 2π g l T = 2π f= (5. La aceleraci´n tampoco da una o o 3 Fast Fourier Tranform. por ejemplo su longitud.2) donde T es el per´ ıodo de oscilaci´n. Como los pies tienen cierta superficie. se tender´ a mantener la oscilaci´n. es un sistema sobre el que se puede actuar. provenientes del control y el conocimiento de los sistemas f´ ısicos: Los sistemas f´ ısicos tienen frecuencias propias de oscilaci´n. Esto hace que la articulaci´n de los pies pueda ejercer un momento limitado o sobre el cuerpo. la velocidad angular y la aceleraci´n en la misma direcci´n. o e Para ´ngulos peque˜os. La velocidad angular no es una medida a directa. se espera encontrar un comportamiento similar: al disminuir la altura e del robot la frecuencia deber´ aumentar.56 Locomoci´n b´ o ıpeda del robot humanoide Nao Sin embargo. l la longitud del p´ndulo y g la gravedad. y al aumentar la amplitud (apertura de las piernas) ıa deber´ disminuir. transformada r´pida de Fourier. y a a e as´ modificar su din´mica. Adem´s. o sistema puede llegar a convertirse en inestable. a a o sistema. si la energ´ aportada por la oscilaci´n es insuficiente.2. Si finalmente ıa se aporta todav´ m´s energ´ o a frecuencias muy pr´ximas a la frecuencia propia. a o En un principio.7 ◦ /s. Tambi´n hay que recordar que en el momento del impacto de cada ı a e pie se producen p´rdidas de energ´ y por tanto el movimiento se ir´ amortiguando. sino que cada unidad corresponde aproximadamente a 1/2.7 se pueden ver los gr´ficos. grabando a a la informaci´n de los sensores inerciales. En concreto se obtendr´ la informaci´n del ´ngulo o a o a de inclinaci´n respecto la vertical. que se puede controlar. la frecuencia de oscilaci´n para ´ngulos peque˜os es de: e o a n l . aunque no afecta al comportamiento din´mico. La inclinaci´n respecto a la oscilaci´n vertical se obtiene del robot directamente en grados o o sexagesimales (o ) Esta medida se obtiene mediante un algoritmo interno del robot que usa la aceleraci´n y la velocidad angular para calcular el ´ngulo. y las piernas a paralelas (apertura 0o ) En la Figura 5. la frecuencia no depende de la amplitud. puede estar o a en los laterales. esta se extinguir´. As´ en primer lugar se analizar´ cu´l es la frecuencia propia de oscilaci´n lateral del ı. el ıa a ıa.

7: Auto-oscilaci´n con el robot de pie. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 57 Figura 5. altura caderas 26cm o . apertura de las piernas 0o .5.

38hz 10o 2. y para la mitad de ciclo. La aceleraci´n se observa que o tiene mucho ruido. a A partir de este valor de frecuencia se pueden sacar f´cilmente los primeros valores tentaa tivos de la configuraci´n de la m´quina de estados. a que la frecuencia de oscilaci´n es de fp = 2. la mitad de un paso ser´ aproximadamente 420ms.3: Frecuencia de oscilaci´n seg´n configuraci´n o u o Se observa que los valores son todos muy similares. 42hz 20o 2. Por el mismo motivo se tomar´ de apertura de piernas 0o (piernas paralelas). Tambi´n se han hecho pruebas para el robot un poco agachado e (´ngulo de la articulaci´n de la rodilla de 60o ) y muy agachado (´ngulo de la articulaci´n de a o a o la rodilla de 120o ). As´ se tomar´ t1 = t4 = 150ms.9). aproximadamente un valor de 56 equivale a g (9. Se toma en primera instancia un valor de a = 0. y su espectro no es como se esperar´ De los an´lisis frecuenciales se ve ıa. s´lo se usar´n los movimientos laterales. o Se han hecho experimentos para aperturas entre piernas de 10o y 20o (manteniendo el robot totalmente erguido). o Se puede observar que la transferencia de peso se realiza aproximadamente cuando el valor . que a partir de una apertura de piernas dada. En este caso el per´ ıodo ser´ de ıa T = 840ms. caderas y o pies son menores.6 para ver ı la respuesta del filtro). Como tampoco es importante el valor absoluto. 38hz 23cm 2. 38hz 26cm 2. Ahora s´lo es necesario definir los estados articulares. la inclinaci´n de las piernas. Por tanto se toma como frecuencia propia de oscilaci´n del sistema fp = 2. 38hz.3. no se aprecian variaciones sustanciales por los cambios de configuraci´n. no se han corregido. Rea cordemos que el paso del estado 3 → 4 viene dado por un evento. Con este tiempo de ciclo. escogida de forma arbitraria. que es la “velocidad” con que se llega a los estados. ϕ (ver Figura 5. para que as´ en el tiempo que dura cada estado no se logre llegar al valor final (ver Figura 5. 38hz. ya que para la otra se imponen sim´tricos. Aunque s´ parece que al bajar el centro de masa la frecuencia o ı aumenta ligeramente. la diferencia es muy baja. as´ que no ı se puede imponer directamente. Es de suponer que si se excita el sistema a o a la frecuencia propia. Tal como se e mencion´ anteriormente. y los gr´ficos en la Figura 5. no por un tiempo. As´ que idealmente en este plano s´lo se tiene un ı o grado de libertad. 8m/s2 ). pero s´ es de esperar que este tiempo sea peque˜o cuando el ı n sistema est´ oscilando de forma nominal. Estos se definir´n unicamente para o a ´ las piernas. Los resultados se muestran en la Tabla 5. a de forma arbitraria para que se cumpla aproximadamente el per´ ıodo encontrado. y por tanto Tp = 420ms. ya que en esa posici´n los pares necesarios en las articulaciones de rodillas. el movimiento sea igual para ambas piernas. se optar´ por a a una din´mica lenta. es decir. 2hz.8: a Apertura piernas Frecuencia oscilaci´n o Altura caderas Frecuencia oscilaci´n o 0o 2. y t2 = t5 = 150ms e ı. 42hz Tabla 5. es decir las articulaciones o o a R/LAnkleRoll y R/LHipRoll. sino a o encadenarlos de forma suave.58 Locomoci´n b´ o ıpeda del robot humanoide Nao medida directa del valor. Se tomar´ como configuraci´n base el robot totalmente o a o erguido. Como criterio estil´ ıstico se impondr´ que los movimientos de a ambas piernas sean paralelos. Respecto al par´metro a. este se volver´ inestable. No se pretende que se llegue a la configuraci´n final en cada estado. 38hz 17cm 2. 8. En primer lugar se excitar´ para una frecuencia a a menor de f = fp /2 ≈ 1.

Dise˜o del algoritmo de locomoci´n para el robot Nao n o 59 (a) Erguido.8: Frecuencia de oscilaci´n seg´n configuraci´n o u o .5. apertura piernas 10o (b) Erguido. apertura piernas 20o (c) Agachado. altura caderas 23cm (d) Agachado. altura caderas 17cm Figura 5.

Como en el estado no se llega al valor final. Despu´s de todo este razonamiento llega el momento de probarlo en el sistema.10 (el eje de velocidad se muestra la medida del sensor sin unidades). ϕ3 = 0o . ϕ5 = −10o . con valores inferiores a 15o la oscilaci´n no llega a levantar los o pies. Este o se ha representado en la Figura 5. por tanto insuficiente.11 y 5. El sistema empieza a oscilar de forma estable haciendo un movimiento de vaiv´n (ver Figura 5. y que permite inducir y estabilizar el ciclo l´ ımite. Si se cogen valores mayores a 40o . ımite estable en la oscilaci´n lateral.2. ϕ4 = −30o . ϕ6 = 0o . tanto si se aumentan a como si se disminuyen la oscilaci´n o se vuelve inestable.3 Balanceo lateral estable]).60 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura 5.9: Movimiento lateral ϕ = 20o . Para entender mejor la din´mica del robot con este algoritmo hay que hacer un an´lisis a a m´s profundo. El sistema se puede considerar formado por varios bloques: a M´quina a de estados G Generador de G Sistema f´ ısico trayectorias o G Oscilaci´n f´ ısica . y en este e momento se produce la magia. Tiene una frecuencia f = 1. As´ se ha logrado inducir un ciclo l´ ı. o golpea de forma brusca con el o suelo. 373hz. el robot a cae hacia uno de los lados. se impondr´ para el estado 1 ϕ1 = 30o . o Ahora se explorar´ los l´ a ımites del par´metro ϕ. y el v´ e ıdeo [5. T = 728ms.12. es que los estados 3 y 6 se sincronizan con la evoluci´n del sistema. Aunque se ha impuesto que las piernas tengan un movimiento paralelo y ser´ de esperar que ıa el torso estuviera vertical durante el movimiento. Estos par´metros tambi´n se toman inspirados en los equivalentes para a e el cuerpo humano. Uno de los motivos que funcione bien. Respecto a los par´metros de tiempo ti . debido a los huelgos de las articulaciones y a que los controladores de bajo nivel en las articulaciones tienen tambi´n su error de e ´ seguimiento. y a para el resto de estados se asigna de forma intuitiva los valores ϕ2 = 10o .

Dise˜o del algoritmo de locomoci´n para el robot Nao n o 61 Figura 5.10: Ciclo l´ ımite lateral .5.

62 Locomoci´n b´ o ıpeda del robot humanoide Nao ´ Figura 5.11: Oscilaciones laterales inducidas – Angulo X respecto la vertical Figura 5.12: Oscilaciones laterales inducidas – Velocidad angular X .

95A. Haciendo un an´lisis temporal de las variables ı a implicadas (estado. el robot.2. a = 0. y por tanto la oscilaci´n real no se corresponder´ a la e a o a de la m´quina de estados. y tiene menor amplitud. pero que resulta m´s estable ante o a a a perturbaciones. De esta forma se consigue que en el tercer estado el robot est´ sobre el pie izquierdo. ya que la m´quina de estados est´ concebida para que a a en cada estado el sistema est´ en una configuraci´n determinada. Haciendo un ajuste manual m´s fino se llega a la siguiente configuraci´n de par´metros a o a que realizan un movimiento suave y estable: ϕ1 = −ϕ4 = 0o . Resulta interesante ver el consumo energ´tico para esta oscilaci´n (ver Figura 5. 9. al no corresponderse directamente. tambi´n presentar´ un cierto desfase. contacto de los pies) se observa que el impacto del pie derecho se produce en el segundo estado. Por tanto el consumo empleado en la locomoci´n mec´nica es solamente de Im = 0. y el pie e derecho impacte. e El aspecto del consumo se tratar´ posteriormente en el cap´ a ıtulo 6 de an´lisis de prestaciones. el tercer estado de la m´quina de estados debe ser a tal que el robot se est´ moviendo hacia su derecha. tal como se dise˜´ inicialmente. a Este punto resulta un problema. Para ver el consumo de intensidad empleado en la locomoci´n hay o que restarle el consumo de la CPU. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 63 La m´quina de estados se puede considerar un oscilador con una cierta frecuencia y a amplitud. Se observa que al tener en cuenta las frecuencias propias del sistema se consigue un consumo energ´tico muy reducido. ϕ2 = −ϕ5 = 30o . controladores y dem´s elementos no activos. el segundo el tercero. a a Para que se de este sincronismo. Sin embargo.3A. La contrapartida es que se no pierde un poco de vista en la configuraci´n de la m´quina de estados el significado f´ o a ısico de los valores. t2 = t5 = 150ms. Se podr´ hacer un an´lisis e o ıa a te´rico para determinar los retardos de cada bloque. . modificando en amplitud a y fase la oscilaci´n original. pasando as´ al cuarto estado. a Ahora se tratar´ el tema de c´mo ampliar la atracci´n del ciclo l´ a o o ımite para hacerlo m´s a robusto. t1 = t4 = 100ms. y el tercero el primero. el consumo de estos elementos es de 0. de forma o experimental se puede corregir m´s f´cilmente. Al e o principio. y un valor de a = 0. Las pruebas se pueden ver en el v´ ıdeo [5. Para verificar la robustez y los l´ ımites de atracci´n de las ´rbitas se opta por dar golpes al o o robot en momentos determinados y ver su comportamiento. hacer que el primero o sea el segundo. El sistema f´ ısico. 65hz. despu´s va e disminuyendo hasta 1. apoyado en su pie izquierdo. se est´ moviendo hacia la derecha y el e e pie derecho impacte en el suelo. Para peque˜as perturbaciones el sistema n se vuelve a estabilizar.6A.13). el generador de trayectorias presentar´ un desfase o a importante para valores de a cercanos a la unidad (para la frecuencia de oscilaci´n descrita o anteriormente. 35A (aproximadamente la o a mitad que cuando caminaba con el algoritmo ZMP y low-stiffness). y corregirlo de tal forma que la m´quio a na de estados estuviera en fase con la oscilaci´n inducida deseada. y los sucesivos bloques presentaran sus din´micas propias. Si se apagan a totalmente los motores. ϕ3 = −ϕ6 = 0o . velocidad angular. T = 605ms).5. 9. el pico de intensidad llega casi a 2. Con estos par´metros se produce una a oscilaci´n un poco m´s r´pida (f = 1. En concreto.3 Respuesta a perturbaciones externas]. cuando el robot se levanta. Para corregir este problema y sincronizar la m´quina a de estados con la oscilaci´n del robot basta con desplazar los estados. el desfase es mayor a 200ms).

64 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura 5.13: Intensidad consumida en la oscilaci´n lateral inducida o .

o 5. o 2. ıa o 2. 3. Los diferentes m´todos expuestos se pueden resumir en: e 1. Las ecuaciones usadas o son: 1 1 2 ∗2 2 ∗ ∆E = Ix ωx − ωx = Ix ∆ωx + 2ωx ωx (5. o 6. Se ha probado de todas formas. y Ix la inercia. Cambio del ancho del paso. este m´todo es el usado para inducir el ciclo l´ e ımite y estabilizarlo. . ωx la velocidad angular o ∗ actual con la perturbaci´n. Esta opci´n puede resultar viable.5. la oscilaci´n lateral se amortigua. 4. y una posible compensaci´n dif´ o o ıcil.4. Ahora lo que se requiere es aumentar la estabilidad.2. De hecho. o 7. A partir de una medida de la perturbaci´n o o se corrige la configuraci´n de la pierna para estabilizar el paso. 3. o o y tampoco se consigue el efecto deseado de aumentar la estabilidad. se pueden hacer los siguientes comentarios sobre cada m´todo: e 1. Control directo por realimentaci´n de estado. Incremento de la estabilidad del ciclo l´ ımite En [10] se encuentra una investigaci´n interesante sobre como estabilizar el movimiento o lateral en un caminador pasivo. Esta v´ ya se descart´ en el planteamiento inicial. e y las consecuencias son que como se pierde actuaci´n. Uso de una rueda de reacci´n en el torso para estabilizarlo. ωx la velocidad ıa o a ∗ angular de la trayectoria nominal para la configuraci´n dada. La o implementaci´n directa de esta manera es inviable. o 4. Actuaci´n lateral en los tobillos. El propio art´ ıculo expone que no es un m´todo viable. o 5. La medida exacta de la perturbaci´n es inviable con los sensores que se disponen. ∆ωx = ωx − ωx . Cambio en la inclinaci´n del torso. Cambio en la posici´n del siguiente paso. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 65 5. No se dispone de este mecanismo. o En la aplicaci´n pr´ctica a Nao y al ciclo l´ o a ımite ya inducido. Esta opci´n puede resultar viable. Esta correcci´n presupone o o que el sistema pueda contrarrestar de forma quasi-instant´nea la perturbaci´n (a partir a o de un cambio de configuraci´n que reduzca en el mismo valor la energ´ potencial por o ıa ejemplo).3) 2 2 donde ∆E es la energ´ de la perturbaci´n que se supone instant´nea. Disminuci´n de la stiffness de los tobillos lateralmente para absorber las perturbaciones. 6. 7.

3 se muestra el incremento de energ´ cin´tica de la perturbaci´n. o Suponiendo que aproximadamente L es constante. Este incremento de energ´ cin´tica debe corregirse idealmente con un incremento ıa e id´ntico en la energ´ potencial del siguiente paso. m la masa.4) donde Ep es la energ´ potencial del sistema. Si se imagina que el robot est´ apoyado sobre su pie derecho. Este comportamiento requiere una planificaci´n ya que pretende corregir a o perturbaciones muy grandes. es necesario que el siguiente paso sea m´s abierto. Si la perturbaci´n hace incrementar la velocidad angular (y o o la energ´ es posible que en el siguiente paso el robot se caiga hacia afuera. y se est´ cayendo muy r´pido hacia su derecha no se a a a arregla nada abriendo m´s el paso. a o o Suponiendo que el movimiento se realiza en el plano lateral. no tendr´ suficiente energ´ y acabe cayendo hacia adentro del paso. y viceversa. En el Figura 5. El trabajo [10] previamente citado propone e ıa esta idea. En este caso la a a correcci´n l´gica ser´ cruzar las piernas sin que colisionen para colocar el siguiente paso o o ıa m´s a la derecha. una o perturbaci´n se puede considerar una variaci´n en la energ´ cin´tica de rotaci´n. El objetivo de este apartado a es aumentar la regi´n de atracci´n del ciclo l´ o o ımite ya inducido para peque˜as perturbaciones. que depende de la configuraci´n del robot q. a ıa Si la energ´ ha aumentado. y no se considerar´ en este estudio. en la fase de soporte de un unico ´ pie el robot est´ de hecho rotando con una cierta velocidad angular alrededor del pie o uno de a sus bordes. L(q) la distancia ıa entre la base del pie soporte y el centro de masa. Una reflexi´n o a e o sobre la mec´nica del movimiento puede dar ideas de c´mo reaccionar ante una perturbaci´n. ωx on-line. ıa e que se va intercambiando con la potencial. a ıa Figura 5. e a En la ecuaci´n 5. es decir.66 Locomoci´n b´ o ıpeda del robot humanoide Nao En esta aproximaci´n se usar´ la t´cnica de modificar la longitud del paso.14: Diagrama de correcci´n del ancho de paso o Existe una posibilidad en que es necesario modificar esta idea. En el ciclo l´ ımite nominal para cada fase hay una energ´ cin´tica determinada. Si la velocidad ıa). una o o ıa e o variaci´n en la velocidad angular. angular disminuye. con una formulaci´n que se expone aqu´ de forma simplificada: o ı Ep = m · g · h = m · g · L(q) · cos(θ) (5. ya que acabar´ cayendo hacia afuera.5) . se puede calcular el incremento diferencial en la energ´ potencial como: ıa ∆Ep ≈ −m · g · L · sin(θ) · ∆θ (5. para que ıa a de esta forma cuando el otro pie entre en contacto tenga un recorrido mayor. ωx se o ıa e o ∗ se puede medir con los sensores puede determinar a partir de un an´lisis del ciclo l´ a ımite. g la gravedad. n y para estas el m´todo planteado es v´lido. esto es. Tal como se mencion´ en el segundo punto.14 se ilustra esta idea. tenga que utilizar m´s energ´ potencial.

o para la configuraci´n θ = 0 no se puede resolver. Ya que es una aproximaci´n diferencial.i a ı. ∆qAnkleRoll ´ ıdem para la articulaci´n lateral en el tobillo libre. Los valores obtenidos de la medida directa de los sensores son (en la Figura 5. desde el punto de vista de la o a implementaci´n pr´ctica. el objetivo no era absorber la depende del cuadrado de ω perturbaci´n totalmente. se obtiene: ıa o ∆θ = 1 2 ∗ 2 ∗ Ix ∆ωx + 2ωx ωx ∆ωx + 2ωx ωx ∆E = 2 = −k −m · g · L · sin(θ) −m · g · L · sin(θ) sin(θ) (5. o Haciendo las mismas pruebas de provocar perturbaciones se comprueba el mejor comportamiento.15 se muestra una gr´fica con los a datos origen para realizar estos c´lculos): a ω1 ω2 ω3 -200. sino lo suficiente como para que se regrese al ciclo l´ o ımite.5 188.8 42. El espacio de o o .0 ω4 ω5 ω6 173. ωx . o La correcci´n implementada har´ una correcci´n en la apertura de la pierna proporcional o a o a la desviaci´n de la velocidad angular respecto a la nominal: o ∗ ∆qHipRoll = −∆qAnkleRoll = −k (ωx − ωx ) (5. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 67 Imponiendo que este incremento de energ´ sea igual al de la perturbaci´n.5. Para determinar sus valores se har´ la media entre el valor inicial y a o a final para cada estado durante varios ciclos. y la media de todos ellos. ya que la realimentaci´n de velocidad provoca una correcci´n predictiva. Esta variaci´n del ´ngulo no se pasar´ por el filtro de generaci´n de trayectorias o a a o (ya que con el retraso existente volver´ inestable el sistema). Adem´s. se opta por otra soluci´n. con su consecuente ruido. Sin embargo.3 Tabla 5. a dado el enfoque claramente experimental de este trabajo y las limitaciones que presentan los sensores. sino que se sumar´ a ´ste. se tomar´ un valor aproximado correspondiente al valor medio para cada estado. La ıa a e constante k se determinar´ ajust´ndola de forma experimental para que el sistema tenga un a a buen comportamiento. ser´ funci´n del estado i. Hacer o a operaciones como divisiones entre un n´mero cercano al cero y cuadrados en el denominador u traer´n problemas num´ricos e inestabilidades.7) donde ∆qHipRoll es una variaci´n en el ´ngulo de la articulaci´n de movimiento lateral de la o a o cadera de la pierna libre. Para obtener la velocidad del ciclo l´ ımite nominal.4 Estabilizaci´n movimiento lateral].6) Este planteamiento presenta varios problemas. que se han corroborado con diversas pruebas. Adem´s. Se o aplica a ambas articulaciones para imponer que el pie sea en la medida de lo posible paralelo al suelo.2.5 -249.4: Valores de la velocidad angular seg´n el estado u Experimentalmente se determina un valor de k = 0. As´ ωx. se aplicar´ una zona muerta para evitar peque˜as oscilaciones a a n ∗ indesables. a e De este planteamiento se puede extraer que para corregir una velocidad angular ω ∗ diferente de la nominal hay que modificar la apertura de la pierna libre en un ´ngulo que a ∗ entre otras cosas. Adem´s. ωx ser´ directamente la medida del gir´scopo. La bondad de los resultados se puede ver en el v´ ıdeo [5. filtrado por una media m´vil de a o o ancho 3 para eliminar un poco los ruidos. los datos provienen de sensores. 02 y una zona muerta de 3o como valores que confieren estabilidad sin provocar autoosilaciones por ruido de los sensores.7 -28.

68 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura 5.15: Oscilaci´n lateral nominal o .

ıa Por tanto. e De forma an´loga.5. Por tanto se impondr´ que la pierna a oscilante avance (y la fija retroceda) en el mismo momento que el apoyo est´ totalmente e ubicado en la pierna soporte. y por tanto se avance el derecho. la m´quina de estados concebida o a inicialmente no est´ en fase con la oscilaci´n f´ a o ısica. Esto se produc´ en los estados 2 y 4. el siguiente apartado tratar´ c´mo o a o superponer el movimiento de avance. se impondr´ en el estado 2 que el valor deseado para la articulaci´n frontal de a o la cadera de pierna oscilante sean -20o (hacia delante). donde se aprecia claramente que las ´rbitas o de atracci´n son mayores. y por tanto se pueda avanzar el derecho.2. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 69 estados obtenido se representa en la Figura 5. La pierna soporte se impondr´ un comportamiento a . la rodilla doblada 20o . es de esperar que en el estado 1 y 2 el robot est´ apoyado sobre el pie izquierdo.5b. en los estados 4 y 5 el robot es de esperar que est´ apoyado sobre el pie a e derecho. y el tobillo recto para que permanezca paralelo al suelo. Una vez conseguido este punto. tal como se discuti´ en el apartado anterior.16. Figura 5. Sin embargo.5. Tal como se vio en la Figura 5.16: Espacio de estados ante perturbaciones con correcci´n velocidad o 5. Sincronismo con movimiento de avance Para cruzar la oscilaci´n lateral con el avance es necesario que cuando un pie est´ levantado o a se mueva hacia delante.

al ser estados de transici´n. Tambi´n se ha intentado reducir la stiffness de los tobillos para absorber perturbaciones.6. y para ganancias bajas no era suficiente como para estabilizar el e movimiento. Si se pon´ un valor muy bajo el robot se ca´ porque ıa ıa era incapaz de mantenerse en pie. de modo parecido a como se hace lateralmente. Si se aplica un filtro como una media m´vil o estrecha para evitarlo. tal como se puede ver en el v´ ıdeo [5. Cuando se o o prob´ esto el sistema se puso a oscilar de forma violenta. Finalmente se pens´ en usar la informaci´n de los sensores de los pies para averiguar o o . e tal como se hizo con el algoritmo ZMP. Adem´s. y con valores medios/altos continuaba inestable. Hay que tener en cuenta que existe o un retraso entre que se recibe la informaci´n de los sensores y se act´a.70 Locomoci´n b´ o ıpeda del robot humanoide Nao parecido hacia atr´s: cadera hacia atr´s 20o . 5. Esto ha provocado tambi´n inestabilidades. se prueba el comportamiento.2.17: Configuraci´n de las piernas para el avance o Con estos par´metros configurados. rodilla recta. o 20º 20º 20º 20º Figura 5. En primer lugar se pens´ en usar el mismo concepto que con SIMBICON. Esto implica corregir instant´neaa mente la posici´n de las piernas y el torso en funci´n de los sensores inerciales. la oscilaci´n en las medidas provoca peque˜as a o n oscilaciones de alta frecuencia en los motores.2. El resultado es que a el robot empieza a caminar. El problema u principal es que en el plano frontal el movimiento es muy inestable. Mejoras estil´ ısticas y de estabilidad Para mejorar la estabilidad del avance se han probado m´ltiples soluciones. que el torso y la o pierna oscilante tengan como referencia el sistema mundo.5 Nao caminando con algoritmo Sammy’s Walk]. se incrementa el retraso y la inestabilidad. En los estados 1 y 3 se dejaran las piernas rectas.17). tobillo -20o para que est´ paralelo a a e al suelo (ver Figura 5. Otra opci´n que se ha probado es corregir la posici´n de la pierna oscilante en funci´n de la o o o velocidad angular del torso. y ´ste es suficiente coo u e mo para inestabilizar el movimiento.

y as´ poder corregirlo. Mediante el uso de atractores en el espacio de fases se ha conseguido aumentar la estabilidad lateral de la oscilaci´n. Queda pendiente para estudios futuros el dise˜o de un algoritmo que estabilice n el movimiento de avance. empez´ a oscilar de forma violenta.1. En el caso del algoritmo ZMP tambi´n se tuvo e que optar por esta soluci´n de acortar los pasos para estabilizarlo. Se hizo un ajuste muy fino ı de cada sensor individualmente en est´tico. Se deja para investigaciones futuras el estudio o del movimiento de los brazos. ya e que no son imprescindibles para la locomoci´n. y con el robot quieto se consigui´ amortiguar a o de forma suave las oscilaciones frontales a partir de la lectura de los sensores de fuerza de los pies. Cuando se prob´ esto con el robot en movimiento.5. se ha decidido no dotar de movimiento a ´stos. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 71 hacia donde se estaba cayendo el robot.2. Si se notaba que el robot se inclinaba mucho hacia atr´s se correg´ y viceversa. . a o Vistas que estas soluciones no funcionaban. la soluci´n es acortar los pasos. 5. o o o Respecto al movimiento de los brazos. Investigando u a los motivos. y o ıan a no eran v´lidos para esta aplicaci´n. a ıa. El motivo se expuso en o el apartado 3. siendo ´ste f´cilmente implementable a partir del algoritmo ya e a desarrollado.3. como en el caso de Nao. se encontr´ que los sensores ten´ un comportamiento din´mico muy malo. Tras o o m´ltiples intentos de corregir los par´metros los resultados fueron los mismos. se opt´ por reducir la amplitud frontal de los o pasos hasta que el movimiento fuera estable. o El movimiento frontal no se ha conseguido estabilizar con los m´todos probados experie mentalmente. si no existe la articulaci´n de los dedos ni un mecanismo que permita la o basculaci´n tal´n–punta. Conclusiones Se ha conseguido dise˜ar un algoritmo que aprovecha las din´micas propias del robot para n a inducir un ciclo l´ ımite estable que hace que el robot camine.

.

9 ± 0.3 cm/s.1W. a e 6. A nivel estil´ ıstico. ZMP produce una locomoci´n m´s limpia y constante. Se tiene una velocidad de translaci´n de 10. Concepto definido en Apartado 2. Pese a los m´ltiples u intentos de que la versi´n full-stiffness caminara bien.1. o a los movimientos laterales se notan muy artificiales comparados con los humanos. o 2 1 73 .2. Los resultados se pueden resumir en la siguiente tabla: o Algoritmo Algoritmo ZMP b´sico a Algoritmo con baja Stiffness Velocidad [cm/s] 8.1: Configuraci´n de Stiffness para cada articulaci´n o o Se pueden ver las mejoras sustanciales. del PC incrustado y otros elementos electr´nicos es de 0. la potencia involucrada y el coste de o transporte cmt . El consumo medio es de 1. o y un cmt = 3.8 Tabla 6. La intensidad consumida se puede ver en la Figura 6. 1. En [9] se consigui´ que alguna vez funcionar´ la versi´n full-stiffness. 2 ∆Velocidad [ %] 100 % 160 % Eficiencia1 cm t 5. 1 13. calculada en una o distancia de 1m durante varios intentos. En el algoritmo Sammy’s Walk se analizar´n tambi´n otros aspectos. 7 ± 0. Los resultados encontrados con nuestro robot son parecidos a los de [9]. Caracter´ ısticas de la locomoci´n con ALWalk o Resultar´ interesante comparar la locomoci´n con ALWalk (algoritmo ZMP) con la stiffıa o ness de las articulaciones al 100 % con las modificaciones que se han hecho. ALWalk y Sammy’s Walk. y el utilizado unicamente para los o ´ motores es de 0.95A. y se compar´ con o a o o la versi´n low-stiffness.Cap´ ıtulo 6 An´lisis de prestaciones a En este apartado se comparar´n las caracter´ a ısticas de las locomociones conseguidas con los dos algoritmos que se han estudiado. por tanto no se puede o o comparar.2. lo que supone una potencia consumida para la locomoci´n de 14. no se consigui´. Los par´metros m´s a a interesantes de analizar son la velocidad de translaci´n.6A durante la locomoci´n. Sin embargo. a El consumo del robot con todos los motores apagados. es decir. El motivo m´s probablees que los robots difieren unos de otros y no con todos se a puede conseguir.8 2. p´gina 22.1.65A2 .

7W. 93. aunque la locomoci´n parece m´s inestable que con ZMP. e o o Algoritmo ALWalk Sammy’s Walk Potencia [W ] 14. Caracter´ ısticas de la locomoci´n con Sammy’s Walk o La velocidad de locomoci´n con Sammy’s Walk es de 6. p´gina 76) y las humanas (Figura 3. se a˜aden los valores encontrados: n Robot cmt “Cornell” 0.2). As´ el valor de o ı. aunque o tambi´n una reducci´n de la velocidad de locomoci´n del 35 %. .93 Tabla 6. El consumo medio de o intensidad es de 1. se pueden ver las analog´ e ıas.055 “Delft” 0.02 ASIMO 1.3.7 (62 %) Velocidad [cm/s] 10. Rest´ndole el consumo del PC i otros elementos queda que el consumo de intensidad a utilizado en la locomoci´n es de 0.2.9.3: Coste energ´tico espec´ e ıfico de la locomoci´n – Comparativa o A nivel estil´ ıstico.1 Sammy’s Walk 2.4A.05 ZMP 3. y por tanto una potencia de 8.5 Humano 0. Tambi´n es muy interesante comparar las trayectorias articulares del robot con el algorite mo Sammy’s Walk (Figura 6. De esta forma aprecia que el dise˜o del algoritmo inspirado en la locomoci´n n o humana efectivamente produce trayectorias similares. y las curvaturas son las mismas para cada fase de la marcha.3 (100 %) 6. Esto supone una reducci´n del coste espec´ o ıfico de locomoci´n del 5 %. cmt = 2. Especialmente si se compara con un a beb´ (tienen aproximadamente las mismas dimensiones y peso). p´gina 38).2: Comparaci´n algoritmos ALWalk y Sammy’s Walk o Recuperando la Tabla 2.1 (100 %) 8.1 (100 %) 2.93 (95 %) Tabla 6.08 MIT 0.7 (65 %) cmt 3.7 cm/s.74 Locomoci´n b´ o ıpeda del robot humanoide Nao 6.1. los movio a mientos se parecen m´s a los naturales de los humanos. Se puede a a apreciar que las formas son muy parecidas.35A (Figura 6.

An´lisis de prestaciones a 75 Figura 6.2: Consumo de intensidad para la locomoci´n Sammy’s Walk o .6.1: Consumo de intensidad para la locomoci´n ZMP low-stiffness o Figura 6.

76

Locomoci´n b´ o ıpeda del robot humanoide Nao

´ (a) Angulos eje Y de flexi´n/extensi´n o o

´ (b) Angulos eje X de abd/adducci´n o

´ Figura 6.3: Angulos articulares de la pierna derecha y fase de paso

Cap´ ıtulo 7

Conclusiones
El objetivo principal de este proyecto era conseguir que el robot humanoide Nao caminara. En primer lugar se prob´ el algoritmo ZMP de locomoci´n propio de Nao, ALWalk, y se o o encontr´ que tal como viene implementado presenta diversos problemas (5.1.2). Por tanto, se o ha realizado un redise˜o del algoritmo ALWalk que los solucione (5.1.3). En primer lugar se n ha disminuido la rigidez de las articulaciones para permitir movimientos m´s suaves, lo que a ha permitido estabilizar el movimiento. Adem´s se ha hecho que este sea m´s r´pido para a a a evitar que las oscilaciones propias interfieran, y m´s bien aprovecharlas. As´ se ha conseguido a ı que el algoritmo ALWalk tenga una locomoci´n estable. Sin embargo, su dise˜o est´ basado o n a en una planificaci´n de movimientos que no tiene en cuenta las din´micas propias del robot. o a El nuevo algoritmo de locomoci´n para Nao que se ha dise˜ado, Sammy’s Walk, aprovecha o n las din´micas propias del robot para obtener una locomoci´n m´s eficiente (5.2). La idea de a o a partida es que la marcha es un ciclo l´ ımite en que se superponen una oscilaci´n lateral con el o movimiento de avance. Gracias a un estudio de las frecuencias propias de oscilaci´n lateral o se consigui´ inducir un ciclo l´ o ımite estable mediante una m´quina de estados. Para aumentar a las ´rbitas de atracci´n se han aplicado correcciones al movimiento de la pierna oscilante o o proporcionales a la desviaci´n de la velocidad angular respecto al ciclo l´ o ımite nominal. Haciendo un an´lisis de prestaciones y de la eficiencia de ambos algoritmos de locomoci´n a o para el robot Nao se han obtenido los siguientes resultados: El algoritmo AlWalk tiene un consumo de potencia mec´nica para la locomoci´n de a o Pm = 14, 1W , una velocidad de translaci´n de v = 10, 3cm/s y un coste espec´ o ıfico (2.2.2) de cmt = 3, 1. El algoritmo Sammy’s Walk consume para la locomoci´n Pm = 8, 7W , o una velocidad de translaci´n de v = 6, 7cm/s y un coste espec´ o ıfico de cmt = 2, 93. Algoritmo ALWalk Sammy’s Walk Potencia [W ] 14,1 (100 %) 8,7 (62 %) Velocidad [cm/s] 10,3 (100 %) 6,7 (65 %) cmt 3,1 (100 %) 2,93 (95 %)

Tabla 7.1: Comparaci´n algoritmos ALWalk y Sammy’s Walk o

Tal como se puede ver, aprovechar las din´micas propias del sistema para la a locomoci´n b´ o ıpeda provoca una disminuci´n del coste espec´ o ıfico de transporte del 5 %. Esta reducci´n, aunque peque˜a, es un indicio claro de que este es un o n buen camino, y sin duda es uno de los mejores logros de este proyecto. Adem´s, tanto las trayectorias articulares como el movimiento conjunto resultan parea cidos a los humanos (6.2).

77

78

Locomoci´n b´ o ıpeda del robot humanoide Nao

Fruto del desarrollo de este proyecto se han obtenido los siguientes resultados paralelos: Creaci´n de un conjunto de scripts que permiten la puesta en marcha de Nao: instalao ci´n, acceso al robot, compilaci´n remota, compilaci´n local y ejemplos de uso (A). o o o Creaci´n de una interfaz gr´fica de usuario, NaoGUI que permite acceder a las funciones o a principales del robot, las funciones de locomoci´n desarrolladas en este proyecto, y o control mediante el mando de la Wii (B.2). Como en todo trabajo de investigaci´n y aplicaci´n tecnol´gica, a medida que se resuelven o o o los problemas aparecen otros desaf´ a solucionar. As´ de este proyecto se desprenden las ıos ı, siguientes l´ ıneas de trabajo de cara a investigaciones futuras: El coste espec´ ıfico de los passive walkers sigue siendo muy inferior a los obtenidos. Uno de los motivos m´s importantes es el dise˜o de los pies. El robot Nao no puede a n conseguir un movimiento de balanceo ya que los pies son una superficie plana, y este es un factor clave que hace que el coste espec´ ıfico aumente mucho. Por tanto, se podr´ ıan investigar otros mecanismos para conferirle al robot mayor estabilidad y eficiencia en su locomoci´n. o No se ha conseguido estabilizar de forma eficaz el movimiento de avance. En el momento que se consiga este punto es muy posible que se pueda aumentar mucho la velocidad de translaci´n manteniendo una potencia consumida parecida, con la consecuente diso minuci´n del coste espec´ o ıfico de transporte. En el presente proyecto solamente se ha investigado sobre la locomoci´n en l´ o ınea recta sobre una superficie plana. Posteriores estudios podr´ aplicar los conceptos aqu´ exıan ı puestos para generar locomoci´n en curva, locomoci´n lateral y locomoci´n capaz de o o o adaptarse a irregularidades del terreno. A˜adir movimiento a los brazos para conseguir marchas m´s estables y suaves. n a Como conclusi´n final, el algoritmo Sammy’s Walk que se ha dise˜ado, basado en la o n inducci´n de un ciclo l´ o ımite estable y aprovechamiento de las din´micas propias del robot, ha a conseguido una mejora en la eficiencia de la locomoci´n del robot humanoide Nao. Adem´s o a tiene trayectorias articulares similares a las humanas, lo que de alguna forma deja entrever que es una v´ de investigaci´n que apunta en la direcci´n adecuada. Se podr´ decir que a medida ıa o o ıa que pase el tiempo los robots tendr´n un papel m´s importante en nuestra sociedad. Su a a evoluci´n, e integraci´n, estar´ determinada en gran manera por su capacidad de interactuar o o a con el entorno f´ ısico, y en concreto de moverse en ´l de una forma eficiente. As´ el desarrollo e ı, de algoritmos de locomoci´n basados en aprovechar las din´micas propias puede constituir o a un punto clave en esta evoluci´n, tal como se ha podido analizar en este proyecto. o

2007. ´ [5] Castan Salinas. Honda Motor Co. tech. 2007. ` ` [13] Lelievre. Passive dynamic walking. report. et al. Ltd. T. J.. Ho Oh. Limit cycles and their stability in a passive bipedal gait. J. Biped walking pattern generation using reinforcement learning. (1999). Humanoid Robot Research Center. Documentaci´n de Nao.ch/. [7] Goswami.. [12] Lee J..Bibliograf´ ıa [1] Els ordinadors. 79 . pp.. o [8] Honda. report. Republic of Korea. [9] Kulk. [2] Electronic waste guide. 307 (2005). et al. o [4] Carpin. [11] Laszlo. 2009. A. et al. S. tech. (2002).. Australia.. pp. Masson.technical information. Limit cycle control and its application to the animation of balancing and walking. (2008). INRIA Rhˆne-Alpes. Material inform´tico y contaminaci´n medioambiental. J. tech. Adaptive. [3] Aldebaran. British Columbia.. ıa [14] Manoonpong P. et al. Welsh. Science. Abril a o 2008. http://www. Opcions no 6. 1988. Patolog´ del pie. 1996.. 1082–1085.. Department of Computer Science and Department of Electrical and Computer Engineering. Canada.e-waste. Asimo . tech. 2008.. Stabilization of lateral motion in passive dynamic walking. The challenge of motion planning for soccer playing humanoid robots. PLoS Comput Biol. fast walking in a biped robot under neuronal control and learning. A.. J. 1987. A.. A low power walk for the nao robot. [15] McGeer. report. University of Newcastle. Burnaby.. J. report. tech. Efficient Bipedal Robots Based on Passive-Dynamic Walkers. report. KAIST. Simon Fraser University. [10] Kuo. University of Toronto. 2005. [6] Collins et al. report. (2007).. Lelievre J-F.. 8–12. tech. The International Journal of Robotics Research..

Stability and control of two-dimensional bipedal walking. DynamicWalking2008.. Passive walking with knees. report. It and environment initiative. . 1989. Cincinnati. (2008). MIT Leg Laboratory. report.. 2007. [20] Pratt. pp. report. Department of Electrical Engineering and Computer Science. [24] Vukobratovic. [22] Raibert. M. USA. tech. [19] Morimoto. Netherlands. 1988. Passive bipedal running. report. the rough-terrain quaduped robot. tech. Cambridge. J. ACM.. Simon Fraser University.org/.. of the 1998 international conference on robotis and automation)... K. Burnaby. Bigdog..thirty fiveve years of its life.. J. 1 (2004). Delft. E. Design of asymptotically stable walking for a 5-link planar biped walker via optimization. report. A simple reinforcement learning algorithm for biped walking. British Columbia. Canada. et al. 1990 IEEE Robotics & Automation Conference. Simon Fraser University. B.. British Columbia.W. Borovac. 2008. M.it-environment. [23] Shuuji. J. SIMBICON: simple biped locomotion control. G. [25] Westervelt. tech. . 1640–1645. Intuitive control of a planar bipedal walking robot (proc. [21] . Proc.80 Locomoci´n b´ o ıpeda del robot humanoide Nao [16] [17] [18] . Zero-moment point . tech. [26] Williams. New York. International Conference on Robotis and Automation. Virutal model control of a bipedal walking robot. http://www. (2004). OH. Canada. 2002. Burnaby.R. . (1990). International Conference on Robotis and Automation. K.. 1998. 157–173. et al. Humanoid robot hrp-2: Overview of zmp-based biped walking. [27] Yin. Grizzle. pp.. NY. E. (2007). International Journal of Humanoid Robotics. Pratt. tech.

PC conectado con el cable de red al router. as´ como la IP a la que se ha conectado. para el desarrollo de este proyecto se ha usado la distribuci´n Ubuntu 9. Conexi´n Ethernet o En primer lugar hay que asegurarse que la conexi´n est´ f´ o a ısicamente realizada: 1.1. o a 81 . Instalaci´n del robot o El robot se arranca apretando el bot´n del pecho. y ejecutar un servidor DHCP1 o que asignar´ la IP al robot autom´ticamente. En primer lugar hay que establecer una IP al a a PC. tal como ´ o ıas a se explicar´ posteriormente. Todas las explicaciones se realizar´n suponiendo este entorno.1. por la facilidad de configuraci´n de las o tareas necesarias.1.Ap´ndice A e Puesta en marcha y programaci´n o de Nao A. Esta debe estar o f´ ısicamente lista antes de encender Nao.1 sudo /etc/init. Si se da un pulso al bot´n del pecho el robot se presenta con o su nombre y n´mero de serie. desde una consola se realiza de la siguiente manera: sudo ifconfig eth0 10. Nao conectado en la cabeza con el cable de red al router. Una vez el robot ha arrancado las luces de los ojos dejan de parpadear y “saluda” con un mensaje de bienvenida.0. 3. Protocolo Configuraci´n Din´mica de Servidor. Antes de encender el robot hay que configurar la conexi´n. Se ha elegido como sistema de desarrollo Linux. Es muy importante u ı establecer la conexi´n correctamente para poder comunicarse con el robot. y por ser el unico que permite compilaci´n de librer´ din´micas.0. Para el desarrollo en otros sistemas se puede consultar la documentaci´n de Nao.d/dhcp3-server start 1 Dynamic Host Configuration Protocol. Suponiendo que la red ethernet se llama eth0. y se apaga manteni´ndolo pulsado o e durante 4s. o A.04 de o 32bits. o 2. Router conectado a la alimentaci´n. a a En concreto.

0. Su uso se explicar´ posteıas a a riormente. librer´ m´dulos.2. e Esto es muy f´cil de hacer desde Linux.2.gz Incluye los archivos necesarios para el desarrollo de programas: ejecutables. Tambi´n se puede buscar la IP asignada mediante e el programa nmap.0. En la Figura A. Si desde cualquier navegador se introduce la IP de nao se accede a su configuraci´n. ı este SDK es el mismo NaoQi para ejecuci´n remota en un PC. kit de desarrollo de software. Instalaci´n SDK o El SDK3 proporcionado por Albedaran incluye los siguientes archivos: NaoQiAcademics-1.0. . En la o Figura A. e ´ Software Development Kit.0-Linux.82 Locomoci´n b´ o ıpeda del robot humanoide Nao Ahora ya se puede encender el robot.0. ejemplos.0.0. o Para apagar el robot a se puede hacer manteniendo pulsado el bot´n del pecho m´s de o a 4s. o enviando la orden halt a trav´s de SSH. a u se introduce la IP del robot.8 closed. Este entorno de desaıas. Crear´ una carpeta que contendr´ la a a ra´ del sistema de archivos de Nao llamada sftp://root@10.1 se muestra la pantalla que aparece.8 root@Nao [0] [~]# Para salir basta con ejecutar la orden exit: root@Nao [0] [~]# exit Connection to 10. ctc-academics-1..0.. es como abrir una consola de Linux en Nao: user@user-PC:~$ ssh root@10.0. Si la salida del programa se filtra se puede obtener la IP del robot (en caso que en la red haya m´s de una IP activa habr´ que a a seleccionar la correcta): sudo nmap -v -sP --system-dns 10. el suministrado por Aldebaran para desarrollo de programas de alto nivel.2.8/.bz2 Es la herramienta CrossTool que permite compilar librer´ din´micas para luego ser ejecutadas dentro de Nao. Para ejecutar comandos a dentro del Linux del Nao se puede hacer con el protocolo SSH2 que los redirige al robot de forma segura. e A.tar. Nao internamente ejecuta NaoQi para su control. Desde el men´ Lugares->Conectar con servidor. 2 3 Secure SHell. apretando el bot´n del pecho se o reproduce un mensaje con la IP de Nao. as´ como con otros simuladores. que hace un escaneo de las IP activas. Una vez encendido. o rrollo se llama NaoQi (se explicar´ m´s adelante).0.1. int´rprete de ordenes seguro.3 se o muestra el contenido del archivo.8.0. Tambi´n se puede navegar por el sistema de archivos del robot mediante un protocolo SSH.0/24 | grep "latency" A partir de este momento se supondr´ que la IP del robot es 10.2 se ız muestra c´mo hacerlo. Se puede utilizar con el programa a a Choregraphe. root como usuario y listo. En la Figura A.tar.

1: P´gina web de conexi´n a Nao a o . Puesta en marcha y programaci´n de Nao o 83 (a) P´gina principal a (b) P´gina de configuraci´n a o Figura A.A.

tar.84 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura A.gz .0-Linux.3: Contenido de NaoQiAcademics-1.2: Configuraci´n de servidor en Nao o Figura A.2.

Puesta en marcha y programaci´n de Nao o 85 Con el siguiente script (se supone ubicado en el mismo directorio que los archivos mencionados) se puede instalar en la carpeta de trabajo ∼/naoqi. En si es un programa que se ejecuta en Linux y que hace de intermediario entre el robot y los programas. remotamente. Se a~ ade a bashrc " n echo " export AL_DIR =~/ naoqi " | tee -a ~/.academics -1. gz mv NaoQiAcademics -1.0 . Para facilitar el desarrollo de aplicaciones. ejecutado en el linux incrustado de Nao.3.1.Linux .0 .dev 16 17 18 19 echo " Existe instalacion anterior de naoqi .get install gcc g ++ cmake python python . tar . Pyhton y URBI. then echo " Instalando Naoqi en ~/ naoqi / " tar . URBI es un lenguaje espec´ o ıfico de robots. En concreto es necesario definir una variable del sistema llamada AL_DIR que contenga la ruta de la instalaci´n de NaoQi. " echo " Borre todos los archivos y elimine la variable AL_DIR " 20 fi A.xv mv ctc . que permite crear o scripts complejos para interactuar con los m´dulo de NaoQi.xzvf NaoQiAcademics -1.dc ctc . a a A.2. tar .1.2. Despu´s que el sistema operativo del robot ha arrancado se ejecuta directamente e NaoQi. tambi´n se puede ejecutar NaoQi desde el PC. se proporciona conjuntamente con el robot. Programaci´n o Nao se puede programar usando diversos lenguajes: C.3.Linux ~/ naoqi echo " Instalando CrossTool en ~/ naoqi / crosstoolchain " bzip2 . En los siguientes apartados se explicar´n m´s detalles. bz2 | tar .A.2. NaoQi se puede ejecutar local o remotamente. Como es l´gico. o 1 2 3 4 5 6 7 8 #! / b i n / b a s h if [ " $AL_DIR " = " " ]. bashrc echo " Instalando paquetes necesarios para el else desarrollo " sudo apt . Tambi´n realiza las configurae ciones necesarias.academics -1.1 ~/ naoqi / crosstoolchain 9 10 11 12 13 14 15 echo " Creando variable AL_DIR . los comandos e o . Por localmente se entiende dentro del robot. C++.2. es decir. NaoQi NaoQi es el entorno de desarrollo de Nao. Python es un lenguaje interpretado (no requiere compilaci´n) novedoso y flexible.

o esto es. Esto se hace mediante proxys. para ejecutar comandos sobre el robot hay que ejecutar los siguientes pasos: 1. o o al robot. hace falta enviar los comandos a los m´dulos. . A. o Desde el punto de vista del programador.ini. Crear un proxy.3. o Modularidad: se pueden ejecutar programas en local para aplicaciones que requieran control con un bajo tiempo de ciclo. Uso de la memoria compartida: se puede leer. La forma m´s f´cil es utilizar el broker principal NaoQi.2. Cuando o ıas NaoQi se carga (u otro broker ). accesos a m´dulos.3. las llamadas pueden realizarse desde cualquier sistema operativo.86 Locomoci´n b´ o ıpeda del robot humanoide Nao que se env´ no tendr´n ninguna actuaci´n ya que no existe ning´n robot. a o Finalmente. ). ıas A. o con el programa Coreographe facilitado por Aldebaran. se inicializan autom´ticamente sus m´dulos asociandos.3. que escucha en la direcci´n del robot (o la direcci´n local en caso o o que NaoQi se ejecute localmente). A continuaci´n se explicar´ la estructura de NaoQi. M´dulos de NaoQi o Los m´dulos principales facilitados por NaoQi son: o ALMemory Es la memoria del robot. herramienta grandiosa. o remotamente mediante llamadas a los m´dulos o de NaoQi. o llamadas por eventos. Aun as´ esto es una ıen a o u ı. escribir o subscribirse a datos. leds. Multi-plataforma: al tener un sistema operativo incrustado con comunicaciones v´ ıa Ethernet (o Wi-Fi). Los o m´dulos son de hecho librer´ cargadas desde AL_DIR/modules/lib/autoload. Tambi´n permite la compilaci´n de programas ya que e o incorpora todas las librer´ necesarias para crear programas propios. Permite acceder y subscribirse con funciones como getData o subscribeOnDataChange. Ejecutar un broker. Ejecuci´n de procedimientos secuencialmente. en paralelo. 2. . y mediante este enviar las ´rdenes al m´dulo correspondiente. En la configuraci´n del broker previamente se han indicado los m´dulos que se quieren o o cargar. ya que se puede usar con simuladores como Webots. 3. Caracter´ ısticas y uso de NaoQi Multi-lenguaje: se puede programar en diversos lenguajes. ya sea local a a o remotamente. . para aplicaciones que no tengan estas requisiciones. Un m´dulo es una clase que contiene funcionalidades del robot (movimientos. NaoQi es el broker o principal (main broker). Hay unos programas llamados brokers o a que escuchan comandos en una direcci´n IP en un puerto determinado. es decir. y por defecto en el puerto 9559.

.playFile("/freemp3/feelgood. tiene funciones de alto nivel o a para caminar que usan el algoritmo ZMP. Tambi´n se puede controlar a e directamente la posici´n del centro de masa. Adem´s. home ) aldir = aldir . Es tan f´cil como enviar comandos tipo a walkStraight(distancia).say("Hello World!") A. environ . equilibrio con un unico pie o con dos. As´ es ı. " " ) sys . path . o ´ consignas de posici´n en el espacio cartesiano. replace ( " ’" . environ . Mediante este m´dulo se pueden enviar comandos directamente a los o o actuadores. o DCM Siglas de Device Communication Manager. exit (1) else : aldir = aldir + " / extern / python / aldebaran " aldir = aldir . get ( " HOME " ) # i m p o r t NaoQi l i b if aldir == " None " : print ( " La variable de entorno AL_DIR no est´ definida " ) a sys .3. replace ( " ~ " . Puesta en marcha y programaci´n de Nao o 87 ALMotion Permite enviar comandos de posici´n a las articulaciones con funciones como o setAngle. Ejemplo de programaci´n en Pyhton o Suponiendo que se ha creado la conexi´n ethernet o Wi-Fi PC-robot correctamente.mp3 con comandos como aup. reproduce palabras por los altavoces con e comandos como tts. ). . el v´ ınculo entre las funciones de alto nivel y las de bajo nivel (programas en las placas electr´nicas). ALUltrasound Se encarga del control de los sensores de ultrasonidos. ALTextToSpeech Sintetizador de texto en ingl´s.4. ALLeds Actuaci´n sobre los LEDs. que o Nao tiene una IP correcta y que el robot y NaoQi est´ en funcionamiento. el siguiente ser´ a ıa un c´digo ejemplo para conectarse al main broker y hacer algunas cosas: o 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # −∗− c o d i n g : u t f −8 −∗− import os import sys import time #C o n e x i ´ n con NaoQi o aldir = os . Incorpora funciones de alto nio vel para conseguir las matrices de cinem´tica directa. append ( aldir ) . ya sea a una articulaci´n o una cadena.A. ALAudioPlayer Permite reproducir archivos de audio .wav o . actuadores.mp3"). sensores. get ( " AL_DIR " ) home = os . es el m´dulo que se encarga de las coo municaciones con los dispositivos del robot (placas.

9999 . e ) : print ( " Error creando v´ nculo con m´ dulo ALMotion " ) ı o print ( str ( e ) ) exit (1) motion = ALProxy ( " ALMotion " ) try : print ( " DCM " ) except ( RuntimeError .1 " . e ) : print ( " Error creando v´ nculo con m´ dulo DCM " ) ı o print ( str ( e ) ) exit (1) dcm = ALProxy ( " DCM " ) try : print ( " ALLeds " ) except ( RuntimeError . IP . e ) : print ( " Error creando v´ nculo con m´ dulo ALLeds " ) ı o print ( str ( e ) ) exit (1) leds = ALProxy ( " ALLeds " ) try : tts = ALProxy ( " ALTextToSpeech " ) print ( " ALTextToSpeech " ) except ( RuntimeError ." 127.0. e : print ( " Imposible establecer conexi´ n con broker " ) o exit (1) 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 try : print ( " ALMotion " ) except ( RuntimeError . PORT ) except RuntimeError .8 " #I n s e r t a r a q u´ l a IP ı PORT = 9559 #P u e r t o p o r d e f e c t o de NaoQi try : broker = ALBroker ( " pythonBroker " .0.0.0.88 Locomoci´n b´ o ıpeda del robot humanoide Nao 20 21 22 23 24 25 26 27 28 29 from from from from naoqi naoqi naoqi naoqi import import import import ALBroker ALModule ALProxy ALBehavior IP = " 10. e ) : print ( " Error creando v´ nculo con m´ dulo ALTextToSpeech " ) ı o print ( str ( e ) ) exit (1) .

com). getAngle ( " HeadYaw " ) . set ( " FaceLeds " . motion .py o y llamar al int´rprete para ejecutar los comandos deseados.0 . sleep (1) tts . Puesta en marcha y programaci´n de Nao o 89 66 67 68 69 leds . clearFootsteps () #Se f i n a l i z a e l m o v i m i e n t o time . u s a n d o una i n t e r p o l a c i ´ n q u e d u r a %) o 1s motion .0. 1. .previ ousHea dAngle ) > 0.4 Ejemplo de programaci´n en Python]. To stop me move my head . post . A. say ( " Hi . Desde una consola de Linux se e llamar´ de la siguiente forma: ıa python prueba.5.gostai.py El resultado se puede ver en el v´ ıdeo [A. por ejemplo prueba. sleep (2) 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 while ( motion . isRunning ( walkTaskId ) ) : #S i s e mueve l a c a b e z a m´ s de a if ( abs ( motion . walk () #Se i n i c i a l a l o c o m o c i ´ n o como una t a r e a ( s e e j e c u t a en p a r a l e l o .A. se tChain Stiffn ess ( " Head " .3. addWalkStraight (10 . getAngle ( " HeadYaw " ) . s i g u e e l h i l o de ejecucion ) ´ prev iousH eadAng le = motion .1) : motion . " ) #H a b l a motion . motion . I am going to walk . o Junto con el pack de desarrollo se incluyen numerosos ejemplos de programaci´n en todos o los lenguajes. go toBody Stiffn ess (1.1. 80) #Se e n v i a n l a s ´ r d e n e s p a r a o caminar walkTaskId = motion . INTERPOLATION_SMOOTH ) tts .0) #E s t a b l e c e l a s t i f f n e s s ( r i g i d e z de l a s a r t i c u l a c i o n e s ) de t o d o e l c u e r p o a 1 ( . desarrollado por la empresa francesa Gostai (www. URBI URBI (Universal Real-time Behavior Interface) es un lenguaje de programaci´n usado o para el control de robots. say ( " Bye Bye " ) 85 86 87 88 Solamente es necesario guardar este c´digo en un archivo de Python.0 .0) time .3.

Java. y permite la interconexi´n n o con otros lenguajes de programaci´n. stop movimiento . se puede hacer de forma tan sencilla como abrir una consola de Linux y enviarlos mediante el programa telnet: telnet 10. e s e mueve h e a d P i t c h a 0 . secuencialo mente sin retraso.90 Locomoci´n b´ o ıpeda del robot humanoide Nao Hay distribuciones para Windows. por ejemplo los que se han explicado antes. Por ejemplo. una o velocidad e incluso un movimiento sinusoidal. val = 0. imponiendo un tiempo de interpolaci´n.6 time :1 s ) & ( headYaw . val = 0 sin :3 s ampli :1 . tts . el operador & para que dos ´rdenes empiezen al mismo tiempo. Es un lenguaje cuyo n´cleo es de bajo nivel. como C++. Para enviar comandos. val = 0. val = 0 cos :3 s ampli :0. ambos m o v i m i e n t o s t i e n e n d u r a c i ´ n de 1 s .0. val = -0. Las ´rdenes a las o o articulaciones se pueden enviar directamente.0 time :3 s ) } . // un . 0 e movimiento : // D e f i n i c i ´ n de una e t i q u e t a o { // M o v i m i e n t o s s i n u s o i d a l e s // e l o p e r a d o r . headPitch . manejo de eventos de forma muy simple y uso del tiempo en condiciones.0. NaoQi ejecuta un broker int´rprete de URBI (si est´ habie a litado en AL_DIR/modules/lib/autoload. on () . 6 rad . wait ( 3 s ) .6 r a d y headYaw a 0 . o Como puntos clave destacan la capacidad de ejecuci´n de comandos en paralelo.6 . }. Matlab y muchos otros. y e m p i e z a n o a l mismo t i e m p o ya q u e s e ha u s a d o e l o p e r a d o r & // J u s t o d e s p u ´ s q u e ha a c a b a d o e s t e m o v i m i e n t o ( o p e r a d o r | ) . headYaw . //En p r i m e r l u g a r mueve h e a d P i t c h a −0. se puede usar el operador | para que una ´rden se ejecute exactamente despu´s o e de otra. u dise˜ado para trabajar con motores y sensores. Linux y Mac.6 time :1 s ) } | { ( headPitch . { ( headPitch . En su dise˜o se ha cuidado la simplicidad. p e r m i t e s e p a r a r ´ r d e n e s . Python. Los objetos tienen un alto grado de abstracci´n o y m´todos muy intuitivos. q u e s e e j e c u t a r ´ n o a cuando l l e g u e e l o p e r a d o r . es o a muy sencillo de entender aunque no se conozca el lenguaje: 1 motors . aunque permite el desarrollo de comandos n complejos de alto nivel. 0 en 3 s y d e s p u ´ s headYaw a 0 .ini) que escucha en el puerto 54000. a l f i n a l de l a s e n t e n c i a o b l i g a a e s p e r a r a que e s t a acabe // Se p u e d e n i m p o r t a r y u s a r f ´ c i l m e n t e o b j e t o s de NaoQi a var tts = ALProxy ( " ALTextToSpeech " ) . e A continuaci´n se muestran algunos comandos v´lidos en URBI para programar Nao. say ( " Youhou ! " ) .8 5400 . 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Cuando se enciende el robot. val = 0.0 time :3 s ) | ( headYaw .

Se accede mediante un acceso SSH. es decir.0. o o se hace la planificaci´n necesaria para cada articulaci´n. El siguiente a apartado explica c´mo se compila. Es decir.INI Simplemente con ejecutar el terminal telnet y escribir el script mencionado anteriormente el robot realiza los movimientos que se pueden ver en el v´ ıdeo [A. Es decir. o A. Puesta en marcha y programaci´n de Nao o 91 El int´rprete de URBI ya est´ configurado. C++ es el id´neo) e ıa o como una librer´ din´mica. los sensores y actuadores se declaran autom´tie a a camente. Compilaci´n cruzada para librer´ din´micas o ıas a Para poder compilar una librer´ din´mica es necesario hacerlo en entorno Linux. En cada instante a a o que se ejecuta el c´digo del DCM se analizan las consignas futuras y. Las consignas de posici´n se pueden enviar a trav´s del DCM para instantes futuros arbitrarios.3. Tambi´n cabe destacar el hecho que para poder ejecutar c´digo en tiempo real es necesario e o que el programa est´ compilado (no se podr´ hacer con Python o URBI.ini.A. encargado de enviar los comandos a los actuadores y actualizar el valor o de los sensores a las variables de memoria tiene un per´ ıodo de refresco de 20ms (50hz).3.5 Ejemplo de programaci´n o en URBI]: A. hay que compilar el archivo en el mismo entorno. un m´dulo. que desde el punto de vista del programador. tampoco se da informaci´n precisa al respecto. Por debajo del DCM existen las o o placas electr´nicas que tienen una frecuencia de refresco mucho m´s alta (para los motores o a 1ms) que se encargan de controlar los dispositivos directamente.8/opt/naoqi/extern/urbi/URBI. o ıa a a El m´dulo DCM.0. a a o En caso de ejecutar programas de forma local (dentro el robot) existe la posibilidad de sincronizarse con la actualizaci´n del DCM. o e y ser´ el propio DCM que se encargar´ de hacer la interpolaci´n necesaria. a . En caso que simplemente se quiera ejecutar un bloque de c´digo de forma o peri´dica existe una metodolog´ m´s f´cil. y al sincronizarla con DCM se ejecutar´ cada 20ms. a este nivel s´lo se puede leer o y enviar informaci´n con una frecuencia de 50hz.6. Esto quiere decir que ser´ el propio NaoQi ıa a o a (broker) que la llame al arrancarse si est´ habilitada en el archivo autoload. Ya que ıa a el sistema operativo de Nao es un Linux. Ejecuci´n de c´digo en tiempo real o o La plataforma de desarrollo de Nao tiene herramientas para la implementaci´n de c´digo o o en tiempo real. Por tanto. Para saber el nombre se puede mirar el archivo4 : sftp://root@10. se puede crear una funci´n que incorpore el o o c´digo de control. por tanto es recomendable hacer los menores accesos a memoria i escritura en ficheros. La duraci´n del c´digo o a o o debe ser tal que no colapse el sistema.3. con la posici´n actual. La documentaci´n da a entender que la o o actualizaci´n de los sensores y el env´ de consignas a los actuadores se realiza de forma o ıo pr´cticamente instant´nea. Los 4 Este archivo est´ dentro de Nao. ser´ el propio DCM que llame a una o a funci´n determinada que se desee.7.

A continuaci´n solo hace falta reiniciar NaoQi ıa ıa o y se cargar´ la librer´ programada. por ejemplo con Python. Tamo o bi´n se podr´ compilar como un ejecutable que se conecte a un broker ya creado. A continuaa a a ci´n se muestra un script de consola que permite compilar el ejemplo incluido en el SDK. as´ como los archivos de confiı guraci´n y las dependencias para hacer una compilaci´n r´pida y limpia. echo " Compilando con make .. then cat temp make > temp . " echo " " if [ " $ ( cat temp | grep ’ Built target ’) " == " " ]. pero para e ıa realizar esta tarea quiz´ sea m´s f´cil escribir directamente un script en Python.. por tanto opci´ n . Finalmente hace falta llamar a las funciones deseadas a ıa del m´dulo de la forma deseada.92 Locomoci´n b´ o ıpeda del robot humanoide Nao archivos necesarios deben estar en la ruta ∼/naoqi/modules/src/[Nombre del programa]. Se o supone que este script se ejecuta en la ruta ∼/naoqi/modules/src/[Ra´z del proyecto]. o En la documentaci´n explica paso por paso como realizar este tipo de compilaci´n. El archivo generado o o a (una librer´ . con la estructura y los archivos de configuraci´n necesarios para ser compilado por cmake. a ı o REMOTE = OFF " echo " As´ se podr´ ejecutar c´ digo de tiempo real " ı a o echo " Presione <c > y <g > para configurarlo . Lo o m´s pr´ctico resulta copiar la estructura del directorio ∼/naoqi/modules/src/examples.. " echo " " echo " Presione < enter > para continuar " echo " " echo " " read DUMMY ccmake . o a ı 1 2 3 4 5 6 7 8 9 10 #! / b i n / b a s h echo " Borrando archivos antiguos " echo " " rm -r crossbuild mkdir crossbuild cd crossbuild echo " Llamando herramienta CrossTool " echo " " $AL_DIR / tools / crosscompile . a a El SDK de NaoQi ya trae ejemplos de programas en C++. ı y el c´digo fuente est´ en ∼/naoqi/modules/src/[Ra´z del proyecto]/[Programa]/src. sh $AL_DIR / crosstoolchain $AL_DIR / modules / src / NaoqiProgram > temp 11 12 13 14 15 echo echo echo echo 16 17 18 19 20 21 22 23 24 25 26 27 28 29 "" " Ahora se cargar´ CMAKE " a "" " Se compilar´ como una librer´ a .a) se copia al robot v´ ethernet.

Abortando " o echo " " else rm temp rm temp echo " Compilaci´ n exitosa " o echo " " cd . echo " IP usada 10. so root@10 .8 " / opt / naoqi / bin / restart .8 . sh ..0. Puesta en marcha y programaci´n de Nao o 93 30 31 32 33 34 35 36 37 38 39 echo " Errores en compilaci´ n ./ test #Programa P y t h o n q u e s e c o n e c t a a l b r o k e r y e j e c u t a l a s f u n c i o n e s d e l m´ dulo o " 58 59 60 61 fi .0.0. ini " echo " " echo " " 47 48 49 50 51 52 53 54 55 56 57 echo " Reiniciando naoqi " echo " " echo " " ssh root@10 . para cambiarla edite este echo " " programa " 40 41 42 43 44 echo " \ Copiando la librer´ a compilada al robot " ı echo " " scp $AL_DIR / modules / lib / libNaoqiProgram . edite el fichero con " a sftp :// root@10 .0.8:/ opt / naoqi / modules / lib 45 46 echo " Se supone que la librer´ a est´ a~ adida a ’ autoload ı a n echo " " echo " \ gedit .8/ opt / naoqi / modules / lib / autoload .A. ini ’.0.0.0.0. exit " echo " \ Presione < enter > para ejecutar el programa en Nao echo " " read DUMMY . Si no lo est´ .

.

ser´ necesario compilarlo como una librer´ a o a ıa din´mica (m´dulo) dentro de Nao de forma local. o a se programar´ de tal forma que sea posible cargar diferentes estilos de locomoci´n preprograa o mados mediante la funci´n style. Interfaz Gr´fica de Usuario. Por este a motivo se plantea el desarrollo de una interfaz de dise˜o totalmente propio que sirva como n herramienta de trabajo. telemetr´ etc. Adem´s. ´ a n una interfaz de desarrollo para Nao.Ap´ndice B e Programaci´n del algoritmo y la o interfaz gr´fica a En el Ap´ndice A. Como se ejecutar´ c´digo en tiempo real. Remotamente. detecci´n de colisi´n de los pies. y un poco impr´ctica de usar. a lenguaje est´ndar de NaoQui para programar un m´dulo. es muy pesada. Desde el punto de vista externo tendr´ disponibles funciones para interactuar tales n a como start para inicializar la locomoci´n. a o 1 GUI Graphical User Interface. adem´s de al algoritmo dise˜ado. a el algoritmo explicado se la llamar´ ALSammysWalk. Esta se proporciona libremente con este proyecto con amplios comentarios para futuras ampliaciones.1: Estructura del programa local ALSammysWalk ser´ un m´dulo de Nao encargado del control del algoritmo de locomoci´n a o o dise˜ado.1. walk para caminar y stop para parar. 1• • • • • • • 1 1 Programado 1 1 • • • • • • •  en C++ 1 1• • • • • • • • 1 ALSammysWalk o tt tt tt tt tt ytt  1 M´dulo local 1 o www 1 dentro Nao 1 • • • • • • • • www www www ww8 Funci´n o start Funci´n o walk Funci´n o stop Figura B. ya que es el o o ıa. y que permita futuras mejoras. La estructura del programa es la representada en la Figura B.3. Se programar´ en C++. Internamente tendr´ funciones privadas encargadas entre o a otros aspectos de: sincronizaci´n del bucle de control. Aunque con Nao se distribuye Choregraphe.1 se explic´ el funcionamiento de NaoQi. el paquete de desarrollo para e o Nao. generaci´n de trayectorias (filtro pasao o bajos). correr´ el a a 1 y permitir´ acceso a funciones programa que ser´ la interfaz con el usuario llamada NaoGUI a a utiles del robot. desde el PC. A esta librer´ que llevar´ implementado a o ıa. a 95 .

RWristYaw . La siguiente exposici´n explicar´ el funcionamiento todo el programa. Aun as´ las sentencias a ı. RAnkleRoll . se puede consultar la documentaci´n de Nao. Gran parte de la exposici´n se har´ sobre el propio c´digo con o o a o comentarios. LAnkleRoll .1. // Hip ( 1 0 ) float LHipYawPitch . e 1 2 3 4 5 6 7 8 9 10 // V a r i a b l e s q u e a l m a c e n a n e l v a l o r f i n a l d e s e a d o de c a d a articulaci´n o // Son l a s v a r i a b l e s q u e u s a e l i n t e r p o l a d o r // R i g h t Leg ( 0 t o 4 ) float RHipPitch . La compilaci´n se a o o realiza con la herramienta cmake. // R i g h t Arm ( 1 1 t o 1 5 ) float RShoulderRoll . RHipRoll . RKneePitch . . una de ellas ser´ un editor de posturas a a y configurador de stiffness articular. ALWalk.h.1. Programaci´n de Sammy’s Walk o Este m´dulo se programar´ y compilar´ en el PC y posteriormente se cargar´ en Nao. o a a a Para m´s detalles. Se podr´ acceder a otras ventanas. a En la explicaci´n de este apartado se presuponen los conocimientos de C++ y Python. muchas de ellas se pueden entender f´cilmente sin necesidad de dominar a los lenguajes de programaci´n citados. Acceder´ a diversos m´dulos a a a o para la actuaci´n sobre Nao y para recibir informaci´n. Principales variables usadas Para la m´quina de estados. ALSammysWalk. RElbowRoll . que o incluir´ todo el c´digo. Los m´dulos principalmente usados o o o son: ALMotion.cpp (m´s de 900 l´ a a ıneas de c´digo). DCM.96 Locomoci´n b´ o ıpeda del robot humanoide Nao NaoGUI ser´ una interfaz gr´fica para interactuar con Nao. y ALSammysWalk. LKneePitch . Se programar´ en Python por su facilidad de uso y portabilidad. B. RElbowYaw . LAnklePitch . ALTextToSpeech. a o Los archivos que se generar´n son ALSammysWalk. El interpolador las toma o para generar los valores articulares a trav´s del filtro pasa-bajos. reproducci´n de a o o texto y caminar. RShoulderPitch . que se llamar´n variables articulares. // L e f t Leg ( 5 t o 9 ) float LHipPitch . se usan a ´ una serie de variables. son muy intuitivas. LHipRoll .1. RAnklePitch . o B. ALLeds. y en general para el control de las articulaciones. Estas son el valor final que se a quiere para cada articulaci´n expresadas en grados sexagesimales. Desde la ventana principal se acceder´ a las funciones de actuaci´n sobre los leds de los ojos. otra ser´ destinada al control del algoritmo dise˜ado a n ALSammysWalk. entrando en detalle o a s´lo en los puntos clave. y se o dirige al lector a libros convenientes en caso de necesitar m´s detalles. con las cabeceras necesarias.

y otras variables secundarias. a se encienden los motores y se env´ la posici´n inicial (robot de pie). ı 1 2 3 4 5 6 7 8 int state . La m´quina sim´trica requiere tres estados. Estos est´n ubicados dentro del o o a sistema de archivos de Nao. LElbowRoll .2. a o . y la generaci´n o de nuevos estilos. Programaci´n del algoritmo y la interfaz gr´fica o a 97 11 12 // L e f t Arm ( 1 6 t o 2 0 ) float LShoulderRoll . Las siguientes variables. SwingAnkleRoll [3]. Este se actualiza cada 20ms. se inicializa la m´quina de estados. a a Una vez hecho esto. proxys de los m´dulos de Naoqi. uno para “telemetr´ y otro como un registro. float SwingAnklePitch [3] . LWristYaw . Las de arriba se usan por el programa para mayor facilidad. float StanceAnklePitch [3] . a 1 2 // v a r i a b l e s u s a d a s p o r e l i n t e r p o l a d o r de t r a y e c t o r i a s p a r a su f i l t r o float servo [21][2]. Finalmente se inicia el lazo de ıa” control. y en cada actualizaci´n se e o ejecutar´ una funci´n programada. StanceAnkleRoll [3]. stand es el primero que tiene como objetivo inducir la oscilaci´n. Para evitar cambios bruscos en las articulaciones.B. Tambi´n se abren ıa o e dos ficheros. // E s t a d o a c t u a l int tinc [3]. Se hacen las inicializaciones o de las variables del sistema necesarias. los temporizadores necesarios. y para cada estado la configuraci´n final y el a e o tiempo de transici´n. Adem´s de las citadas. o B. StanceHipRoll [3]. y walk que es el que hace caminar al o robot. o A continuaci´n se leen los archivos de configuraci´n. SwingHipRoll [3]. son las que de forma sucesiva se ir´n asignando a las a a previamente citadas para as´ inducir el movimiento al robot. LShoulderPitch . acceso a ficheros.1. LElbowYaw . Esto se explicar´ con m´s detalle posteriormente. hay variables para la configuraci´n del par´metro a del interpolador a o a (un valor para los movimientos laterales y otro para los frontales). Esta forma de acceder a las configuraciones permite desarrollos futuros. Para cargar un estilo determinado basta con llamar a la funci´n interna o loadConfig(const char * estilo). // Tiempo de t r a n s i c i ´ n o float SwingHipPitch [3] . la siguiente a ser´ la que realmente se use. // P o s t u r a s float SwingKneePitch [3]. que contienen la representaci´n del estado y o o se llamar´n variables de estado actual. float StanceHipPitch [3] . float StanceKneePitch [3]. en la ruta /data/[estilo]/. subscribi´ndose al DCM. se crea otra variable que o las incluir´ todas. Como hace falta un hist´rico de estas variables para el filtro. al inicio se leen los valores de cada articulaci´n y se establecen como valores del interpolador. Inicializaci´n y sincronizaci´n con DCM o o La funci´n start es la encargada de iniciar el algoritmo. Se definen dos estilos.

1. 2. y finalmente se cancelar´ la a o a subscripci´n al DCM y se cerrar´n los archivos. un valor muy peque˜o que asegura que el c´digo programado se ejecuta en tiempo n o real.98 Locomoci´n b´ o ıpeda del robot humanoide Nao B. o a Es importante verificar que efectivamente el c´digo se ejecute en tiempo real. En el caso de los estados 1 a 3 esta asignaci´n es directa. por tanto muy correcto. Generador de trayectorias El generador recorre las articulaciones una por una actualizando su valor. 0<a<1 (B. que se calcula con temporizadores. para dar tiempo a que la oscilaci´n o lateral se induzca.1. que sirve para hacer levantar al robot. En caso que se apriete el bot´n del pie izquierdo. 5 es un o tiempo determinado. U (z) (z − a)2 a ∈ R. e • Se comprueba la condici´n de fin de estado. B. A partir de aqu´ se alterna sucesivamente de los estados 1 a 6. Consta de la m´quina de estados pura. o Para cada estado se realizan las siguientes acciones: • Se asignan a las variables articulares los valores de las variables de estado actual. n o ıa” a Se llama al interpolador para que actualice los valores articulares. y cambiando el signo de las articulaciones laterales.3. ya que el movimiento es sim´trico.4. Tal como se ha explicado. En primer lugar se realizan dos pasos en el sitio. La funci´n implementada. A partir de aqu´ se prosigue con la m´quina de estados normal. o Se define el estado 0. Para los estados 3 y 6 es el impacto del pie con el suelo. es: e o G(z) = Y (z) (1 − a)2 z = .2) se puede ver que el tiempo entre sucesivas activaciones a o es de 20±1ms. Para hacerlo de forma segura se establece el estado -1. o se env´ la orden. La forma de detectarlo se explica posteriormente. Haciendo un o an´lisis de activaci´n (ver Figura B. de ganancia unitaria. El movimiento se realiza a lo largo de 3s. 4. En caso que se apriete el del pie derecho se reinicia. La ejecuci´n del bucle de control dura en su totalidad o 1-2ms. que o llevar´ el robot a una posici´n de sentado de forma gradual. En los estados 4 a 6 se o toman los mismos valores cambiando la pierna oscilante por la fija. donde se a realizan consecutivamente las siguientes acciones: Verificar condiciones externas. Bucle de control El lazo de control se ejecuta cada 20ms. el valor que se env´ es el de las posturas (se puede interpretar como un escal´n) ıa o filtrado a trav´s de un filtro pasa-bajos. Para los estados 1. se detendr´ la o ıe a ejecuci´n del programa. tal como ı se defini´ en la memoria. ı a Se a˜ade la informaci´n de “telemetr´ al archivo para su posterior an´lisis y el registro. En caso que se apriete el bot´n del pie izquierdo se o finaliza la ejecuci´n.1) .

El valor que proporciona Naoqi de la lectura de los sensores tiene una caracter´ ıstica inversa respecto a la fuerza ejercida.1.6. Estos sensores tienen una amplia variabilidad. Haciendo una calibraci´n individual de o cada sensor se consigue un buen comportamiento. Haciendo la a antitransformada z al dominio temporal se tiene que: yk+1 = (1 − a)2 uk + 2ayk + a2 yk−1 Esta ecuaci´n en diferencias es la que se ha implementado para cada articulaci´n.2) B. a las que se pasa como par´metro una caa . Carga de configuraciones Para cargar y guardar las configuraciones se usan las funciones loadConfig(const char * estilo) y saveConfig(const char * estilo).2: An´lisis de ejecuci´n del bucle de control a o siendo a el par´metro que controla la velocidad con que se llega al valor final. y requieren ser calibrados individualmente. y si alguno est´ por debajo de un umbral establecido (presionado) quiere decir que el pie ha colisionado a con el suelo.B.1. B. Para saber si un pie ha impactado en el suelo se comprueban todos los sensores.5. o o (B. Programaci´n del algoritmo y la interfaz gr´fica o a 99 Figura B. Detecci´n de impacto con el suelo o Nao tiene en cada pie sensores capacitivos de fuerza que se pueden usar para detectar el impacto con el suelo.

ya que tanto las n o a funciones de NaoQi. o ıas o Conexi´n con el broker principal de Nao. que servir´ para acceder de a a forma f´cil a las funciones principales de Nao. y en concreto se dise˜ar´ una interfaz para usar a n a el m´dulo de locomoci´n propio de Nao ALWalk y el dise˜ado Sammy’s Walk. GTK+ (o The GIMP Toolkit) es un conjunto de bibliotecas multiplataforma para desarrollar interfaces gr´ficas de usuario. o Ejecuci´n de la GUI. Esto e tiene la ventaja a˜adida que la migraci´n a otros sistemas operativos es f´cil. o a kvel : ganancia de la compensaci´n del desv´ de velocidad angular. por su flexibilidad y porque permite acceder a las funciones de NaoQi de forma f´cil. como GTK+ son multiplataforma. Se ha programado en Python. o a t2: duraci´n de los estados 2 y 5 de la m´quina de estados.2. el Wiimote. NaoQi. a aP itch: par´metro del interpolador para el movimiento frontal. En programaci´n. NaoGUI. a a XFCE y ROX aunque tambi´n se puede usar en el escritorio de Windows. principalmente para los entornos gr´ficos GNOME. es decir.2. GUI Se ha programado una interfaz gr´fica de usuario. MacOS y otros. a t1: duraci´n de los estados 1 y 4 de la m´quina de estados. o o Dentro de la carpeta de cada estilo se guarda en orden la siguiente informaci´n: o aRoll: par´metro del interpolador para el movimiento lateral. o Definici´n de la clase que representa la GUI. la NaoGUI programada en Python. y declarar eventos. como por ejemplo una ventana o un bot´n. Programaci´n o El programa de Python desarrollado tiene la siguiente estructura: Inclusi´n de librer´ y declaraci´n de constantes. o o 2 . La estructura de la interfaz es la siguiente: B. o Para el dise˜o de la GUI se ha usado el programa Glade. que permite crear ventanas. un widget es un elemento o bloque de una interfaz gr´fica que muestra informaci´n o o a o permite su modificaci´n por el usuario.1. n incluir objetos (widgets).100 Locomoci´n b´ o ıpeda del robot humanoide Nao dena con el nombre del estilo que contiene la configuraci´n (de momento s´lo stand y walk). Para crear la interfaz gr´fica desde Python se ha usado la librer´ a a ıa GTK+. o ıo B. La programaci´n se hace dentro de la clase de o Python. Es necesario declarar objetos que representen a los widgets 2 de la GUI. Tambi´n se o o n e incluir´ la funcionalidad adicional de controlar el robot Nao a trav´s del mando inal´mbrico a e a de la Wii.

B.2.4) est´ contiene una barra de herramientas que permite a acceder a otras tres ventanas (editor de posturas.py. el Wiimote (ver Figura B. o reproducir un texto por los altavoces de Nao.3. ıa El archivo principal de la GUI se llama naoGUI. previo apretar los botones 1 y 2 del mando a la vez: . que se programar´n de acuerdo al comportamiento que se quiera obtener. o B. Tambi´n acceso e a funciones generales de Nao. es de gran utilidad por su facilidad de uso. hay que vincular los eventos de la GUI a funciones de a la clase de Python. ALWalk. Para saber la direcci´n bluetooth del mando o o se puede ejecutar en una consola. Programaci´n del algoritmo y la interfaz gr´fica o a 1• • • • • • • 1 1 Programado 1 1 1 • • • • • • •  101 en Python 1 1 1• • • • • • • • • • 1 1 Programa remoto 1 NaoGUI o desde PC dd €€€ 1 1 q Ó • • • • • • • • • • dd €€€ qq Ó dd €€€ qqq ÓÓÓ q €€€ dd qqq ÓÓ €€€ dd Ó  xqqq €€9 dd ÓÓ dd Ó M´dulo o M´dulo o M´dulo o dd ÓÓ dd ÓÓ ALMotion ALWalk DCM Ó dd ÓÓ dd ÓÓ dd dd ÓÓ Ó 1  ÑÓ M´dulo o ALLeds M´dulo o ALTextToSpeech M´dulo o ALSammysWalk Figura B. Finalmente tambi´n permite acceder al control de e e Nao con el mando de la Wii.2. Adem´s tiene una a a serie de botones y una utilidad para la mano izquierda. mediante su sintetizador vocal en ingl´s. que permite acceder al o ıa mando. Tambi´n cuenta con un sensor ´ptico PixArt. que tiene un joystick. como por ejemplo cambiar el color de los ojos mediante barras de desplazamiento (una para cada color). Nunchuck. Control con Wiimote El mando de la Wii.3: Estructura de la GUI crear un v´ ınculo entre ambos.6). lo que le permite determinar o e o el lugar al que el Wiimote est´ apuntando (esta funcionalidad no se usa). y contiene m´s de 1800 l´ a ıneas de c´digo.2. que se explicar´ en el siguiente apartado. a B. a Todas estas funcionalidades las proporciona la librer´ de GTK de Glade. Tiene la capacidad de detectar la aceleraci´n a lo largo de tres ejes mediante la utilizaci´n o o de un aceler´metro. La conexi´n se hace mediante bluetooth. Ventana principal La ventana principal (ver Figura B. y Sammy’s Walk). botones y un aceler´metro. o Para la programaci´n se ha usado la librer´ de Python cwiid. Adem´s.

tanto lateral como frontal. o o Si se aprieta el bot´n 1 del Wiimote. manteni´ndolo apretado.3 Nao controlado con mando de la Wii]): Control de la cabeza de Nao mediante el joystick del Nunchuck.se cierra. y lo mismo con el balanceo (roll ). manteni´ndolo apretado. a o Apretando el bot´n home del mando o en la interfaz directamente.2.102 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura B. a ıa o Las funcionalidades que se obtienen con el mando son (ver demostraci´n en el v´ o ıdeo [B. se controla el movimiento o e del brazo derecho. Si se aprieta el bot´n + abre la mano. o Reproducci´n de un texto con el bot´n B del Nunchuck.. El cabeceo del mando (pitch) se corresponde al cabeceo del hombro. manteni´ndolo apretado. se puede controlar la o e inclinaci´n del torso. y con el bot´n o o . realiza los c´lculos necesarios y env´ las ´rdenes a Nao. termina la conexi´n. Si se aprieta el bot´n B del Wiimote..4: Ventana principal Figura B. y al moverlo hacia abajo se sienta. Para obtener el o o estado de los sensores se entra en un bucle que actualiza toda la informaci´n del mando cada o 50ms. Cambio del color de los ojos con el bot´n A del Nunchuck. 00:19:FD:EE:C8:5A Nintendo RVL-CNT-01 Esta direcci´n es la que hay que introducir en la GUI para la conexi´n. u Est´ preparado para programar funciones de locomoci´n con las flechas.5: Ventana principal de NaoGUI sudo hcitool scan Scanning. o o . Si se aprieta el bot´n A del Wiimote. al mover el mando hacia o e arriba el robot se levanta. Cada segundo se actualiza el cabeceo o y balanceo del robot seg´n el balanceo y cabeceo del mando.

4387195466 </ LElbowRoll > < LElbowYaw > -16. Wiimote B. haciendo que ambas se o corresponden.31411894283 </ HeadPitch > < RShoulderPitch > 68. e e Para enviar los comandos al robot hay que seleccionar un tiempo de interpolaci´n. Por o ejemplo.B.7) es muy util para hacer mover el robot.5212406399 </ RElbowYaw > < RWristYaw > -5. se incluyen funciones para abrir y guardar posturas.4.4387195466 </ RElbowRoll > < RElbowYaw > 16.xml. con los valores pada cada articulaci´n. ´ Dispone de una barra de desplazamiento para cada articulaci´n para poder moverlas indepeno dientemente.9968451205 </ RShoulderRoll > < RElbowRoll > 61. a Las configuraciones se guardan en archivos . Programaci´n del algoritmo y la interfaz gr´fica o a 103 (a) Vista del mando (b) Ejes de los aceler´metros o Figura B. crear nuevas o borrarlas. que contiene o la siguiente informaci´n: o 1 2 3 4 5 6 7 8 9 10 11 12 < postura > < HeadYaw > 0.6: Mando de la Wii.0306034165 </ RShoulderPitch > < RShoulderRoll > -23. Editor de posturas La ventana del editor de posturas (Figura B. Tambi´n permite abrir y cerrar las manos. Asimismo incluye el bot´n “Posici´n Actual” o o para leer la posici´n actual del robot y actualizarla en la interfaz.0306034165 </ LShoulderPitch > < LShoulderRoll > 23.2.xml”. enceno der los motores con el bot´n de la barra de herramientas.10012445136 </ RWristYaw > < LShoulderPitch > 68. y hacer clic en el bot´n “¡Enviar!” o o para que los cambios se reflejen en el robot. Adem´s cuenta con los botones “Brazos sim´tricos” y “Piernas sim´tricas” para a e e poder enclavar las articulaciones derechas e izquierdas de tal forma que realicen movimientos sim´tricos. para una configuraci´n de reposo se ha creado la postura “sentado. Adem´s.9968451205 </ LShoulderRoll > < LElbowRoll > -61.261270957452 </ HeadYaw > < HeadPitch > 9.5212406399 </ LElbowYaw > .

10012445136 </ LWristYaw > < RAnklePitch > -70.7504393855 </ RAnklePitch > < RAnkleRoll > 0. lateral.5.00240422658784 </ LAnkleRoll > < LHipPitch > -40.8) contiene las funciones necesarias para hacer caminar el robot con el algoritmo ZMP propio de Nao.876513053546 </ LHipRoll > < LKneePitch > 125. Interfaz ALWalk La ventana ALWalk (ver Figura B.7504393855 </ LAnklePitch > < LAnkleRoll > -0. Todos los valores por defecto de esta ventana est´n configurados o a .599679289 </ RKneePitch > < LAnklePitch > -70.1.104 Locomoci´n b´ o ıpeda del robot humanoide Nao 13 14 15 16 17 18 19 20 21 22 23 24 25 < LWristYaw > 5.9391895357 </ HipYawPitch > </ postura > Figura B.7841660248 </ RHipPitch > < RHipRoll > -0.2.7: Ventana del editor de posturas B.876513053546 </ RHipRoll > < RKneePitch > 125.1).7841660248 </ LHipPitch > < LHipRoll > 0. para poder generar a una locomoci´n estable. los par´metros avanzados y enviar las ´rdenes correspondientes a locomoci´n a o o frontal. a a Adem´s permite configurar la stiffness de cada grupo de articulaciones.599679289 </ LKneePitch > < HipYawPitch > -14. en curva y girando (para m´s detalles de los par´metros ver apartado 5. Permite configurar los par´metros b´sicos del a a algoritmo ZMP.00240422658784 </ RAnkleRoll > < RHipPitch > -40.

2. Para que la configuraci´n introducida se aplique sobre Nao hay que hacer clic en los o correspondientes botones “Enviar”. as´ como los tiempos ı correspondientes. Con el bot´n “Descansar” se para o o el algoritmo. Programaci´n del algoritmo y la interfaz gr´fica o a 105 acorde con los encontrados en la memoria principal que hacen estable la locomoci´n (ver o apartado 5.3).8: Ventana ALWalk B. Tambi´n se puede modificar el par´metro a del generador de trayectorias. Permite conn figurar todas las articulaciones para cada estado (ver apartado 5. e a y kvel para la correcci´n de velocidad. Cuando se hace clic en el bot´n “Enviar datos” se copian el robot los archivos.8) contiene las funciones necesarias para hacer caminar el robot con el algoritmo Sammy’s Walk dise˜ado en este proyecto. y a continuaci´n o o ya se puede ejecutar el algoritmo con el bot´n “Caminar”. ıa . o Los estados se guardan localmente con la misma estructura de archivos que en Nao.2). y con “Descargar y ver registro” se copia al PC la telemetr´ generada.1.6. Interfaz Sammy’s Walk La ventana Sammy’s Walk (ver Figura B.B. Figura B.

106 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura B.9: Ventana Sammy’s Walk .

000 e/ud 1 ud 11. ) o Otros Tiempo tutorizaci´n o Coste unitario 1. se har´ un an´lisis de los costes a a que ha implicado el desarrollo de este proyecto. .Ap´ndice C e Presupuesto Como en todo proyecto de investigaci´n resulta imprescindible hacer un an´lisis de costes o a y posibles beneficios.1: Presupuesto 107 . .100e 1. programaci´n.000 e – 540h 120h 60h 240h 120h 100h – 15e/h 15e/h 15e/h 15e/h 15e/h 35e/h TOTAL – 8. Elemento Ordenador Procesador AMD 2Ghz Memoria RAM 2GB Disco duro 160GB Monitor. y las repercusiones de los resultados obtenidos.000 e/ud Unidades 1 ud Coste 1. C. An´lisis de costes a En el proceso de desarrollo se tendr´n en cuenta diversos factores: hardware.000 e 11.600e Tabla C. La Tabla C. Particularizando al proyecto presente. a tiempo involucrado y otros.800e 900e 3.800e 3.600e 1. software.1.500e 23. Conexi´n ethernet y otros o Robot Nao Nao Academics Edition Software de desarrollo Licencia de Coreographe Webots (licencia gratuita) Tiempo dedicado Investigaci´n con Webots o Puesta en marcha de Nao Desarrollo del algoritmo (pruebas.1 explica los costes de los diferentes elementos (algunos de ellos son estimaciones).

2.108 Locomoci´n b´ o ıpeda del robot humanoide Nao C. . Adem´s plantea una l´ ıa. Beneficios Los beneficios econ´micos de este proyecto son dif´ o ıcilmente medibles. se ha obtenido una reducci´n consumo energ´tico espec´ o e ıfico de locomoci´n del o 5 % respecto al algoritmo b´sico ZMP implementado en Nao. e a ınea de investigaci´n o que en el futuro puede reportar mayores beneficios. Como resultados importantes. Esto implica una mayor duraci´n a o de la bater´ y el consecuente ahorro energ´tico.

Ap´ndice D e Impacto medioambiental En s´ mismo Nao est´ hecho de material electr´nico e inform´tico: pl´stico en la carcasa.1. aluminio y cobre. el vertido o la incineraci´n de los ordenadores se liberen dioxinas y otros o o contaminantes en el medio. tambi´n en la leche e materna) y se mueven hacia arriba en la cadena alimentaria. ı a o a a m´ltiples placas y procesadores internos. acero. sobretodo plomo. e El impacto ambiental de almacenar ordenadores en vertederos. Se acumulan en los tejidos grasos (y por lo tanto. los cables y las carcasas para hacerlos poco inflamables. Los usados m´s habitualmente son halogenados: contienen bromo o fl´or. motores. Una de las sustancias problem´ticas son los retardantes de llama con que la ley obliga a a cubrir los circuitos impresos. algunas de ellas muy contaminantes y conocidos cancer´ ıgenos. El impacto que tienen este tipo de componentes se basa en los siguientes puntos [5][2][26]: El impacto ambiental de la producci´n de material inform´tico y pl´sticos. e o m´s abundantes en un ordenador son pl´sticos. Se tratar´ conu a juntamente el impacto ambiental de Nao y el PC necesario para su uso. silicio. o a a El consumo el´ctrico en la fase de uso. cadmio y mercurio. D. Proceso de fabricaci´n o En [1] se hace una exposici´n del impacto medioambiental de la producci´n de material o o inform´tico. lo que causa que durante a u la fabricaci´n. Tambi´n se utilizan metales pesados. pero posiblemente tambi´n c´ncer y desordenes en a e a el desarrollo neuronal. Pero tambi´n se liberan al aire mientras los ordenadores se usan: e algunos estudios han detectado una concentraci´n de bromo en la sangre m´s elevada que la o a media entre la gente que trabaja en oficinas. Estas substancias causan sobretodo desorden en el sistema hormonal (gl´ndula tiroidea). A continuaci´n se muestra un extracto de este documento. y otros componentes varios. un consumo muy elevado de o o agua y energ´ y el gran volumen de residuos (tambi´n t´xicos) que generan. El plomo se e utiliza para soldar los chips a las placas. a Existen tres problemas medioambientales relacionados con la fabricaci´n de ordenadores: o el uso de muchas substancias t´xicas en el proceso de producci´n. Pero en la a a fabricaci´n de los chips y las placas se utilizan hasta un millar de sustancias qu´ o ımicas. y en las pantallas de rayos cat´dicos (las que no o son planas) para absorber una parte de las radiaciones electromagn´ticas que generan las e 109 . La exposici´n hecha a o o para el material de los ordenadores es perfectamente v´lida para los materiales de Nao. Los materiales ıa.

benceno. el principal inter´s del cual es atraer inversores extranjeros. Brasil y Sud´frica. lo que supondr´ una emisi´n de 45kg de CO2 . Uso diario El consumo el´ctrico de un ordenador sencillo se puede estimar en funcionamiento nore mal en 300W. se puede o o estimar que el uso del PC + Nao hacen un total de 350W. pero o no evitan la exposici´n de los trabajadores a los t´xicos). Por otro lado. los cables suelen ser de PVC. y por tanto la electricidad necesaria generar´ ≈ 100gCO2 /h. pero se convierten en un peligro cuando se liberan al medio durante la fabricaci´n y al lanzar el ordenador. como el montaje de placas y ordenadores. ıa o . Durante el uso de e los ordenadores no estamos expuestos a dichos elementos. En las plantas de montaje ıa a de placas. Las carcasas se suelen proteger con pinturas que contienen disolventes org´nicos. y en menor cantidad Centroam´rica. China. e D. En e a las plantas de montaje suelen trabajar mujeres j´venes cobrando salarios bajos. como no los podemos metabolizar. A principios de los a 90 murieron cuatro trabajadores en Tailandia: la autopsia les detect´ un nivel de plomo en o la sangre m´s alto de lo normal. se acumulan e en los tejidos y son una causa de c´ncer. El resultado fue negado por la empresa donde trabajaban y a silenciado por el gobierno. Forman parte de los productos cuya emisi´n o o se acord´ reducir en el Protocolo de Kyoto para frenar el cambio clim´tico. El cadmio y el mercurio tambi´n se utilizan en dichas pantallas. El ozono al nivel del suelo causa problemas o respiratorios y dificulta el crecimiento normal de los vegetales. Durante la d´cada de los 90. pero los a casos todav´ est´n pendientes por falta de evidencias concluyentes. Pasan a los seres o vivos a trav´s de la cadena alimentaria y. y sin sindicatos. presi´n por producir deprisa. durante la aplicaci´n se liberan compuestos org´nicos vol´tiles. tolueno y o e cromo hexavalente. a Las empresas son reticentes a colaborar en estudios de las substancias t´xicas sobre la o salud. las grandes empresas de material electr´nico todav´ no o ıa han comenzado a elaborar c´digos de conducta que establezcan unas condiciones laborales o m´ ınimas en sus f´bricas y empresas proveedoras. Durante la fabricaci´n de los chips se emiten al a o aire perfluorocarbonos (PFCs).110 Locomoci´n b´ o ıpeda del robot humanoide Nao pantallas. recientemente Europa del Este.2. se tomar´ para los c´lculos 50W. Parece claro que hay una tasa de abortos y malformaciones en beb´s m´s alta de lo e a normal entre las mujeres que trabajan en salas blancas (los trajes especiales que usan evitan la exposici´n de las obleas de chips a las impurezas que puedan portar los trabajadores. Por tanto. con jornadas o muy largas. o a Otras sustancias t´xicas que utilizan los ordenadores son ars´nico. Tailandia. Vietnam. a a A trav´s de la informaci´n proporcionada por Red El´ctrica de Espa˜a se estima la e o e n producci´n de CO2 para la generaci´n de electricidad en 290 (g/h)/kW . los suelen a hacer empresas subcontratadas en Malasia. A diferencia de lo que pasa en el o sector de los juguetes o del textil. El consumo de Nao en funcionamiento oscila entre 30W (quieto) y 70W (en actividad). que provocan que se a o a a acumule ozono en las capas bajas de la atm´sfera. Filipinas. que son gases que permanecen durante mucho tiempo en la atm´sfera y contribuyen al efecto invernadero. Los procesos m´s sencillos. el peligro m´s grande es el plomo que se utiliza para soldar. Indonesia. Se estima o ´ durante el desarrollo de este proyecto que se han empleado 450h usando el PC+Nao. a El fabricante de Nao no proporciona informaci´n sobre la vida util del robot. en o o e EEUU y Escocia se ha demandado a algunas empresas porque la frecuencia de c´ncer de a cerebro entre los trabajadores de salas limpias es 2’5 veces m´s alta que la media.

En la incineraci´n de los retardantes de llama brominados y del PVC se generan dioxinas o y furanos extremadamente t´xicos. En el vertido de residuos electr´nicos se liberan metales pesados (como plomo. con un tratamiento adecuado. Si adem´s la o o a incineraci´n o quemado se realiza al aire abierto. en Europa la mayor parte de los residuos el´ctricos y electr´nicos se e o incorporan a los flujos de los residuos urbanos. interruptores de mercurio y magnetot´rmicos. los equipos se desmontan y los componentes potencialmente peligrosos se a´ ıslan y se . Fin de la vida util ´ Al final de la vida util del PC y Nao hay que desechar sus componentes. mientras los ordenadores contienen un 23 % de peso en pl´sticos. f´sforo en monitores.3. y el cobre. cadmio en las bater´ antio o ıas. pilas. podemos encontrar plomo en las soldaduras y los tubos de rayos cat´dicos. Impacto medioambiental 111 D. princio e palmente aceros. empeora o o la situaci´n debido a que es un buen catalizador de la formaci´n de dioxinas. la inhalaci´n de las emisiones de gas puede o o provocar ataques de asma. o En la actualidad. berilio en los PCs antiguos y las conexiones de tel´fonos e m´viles. e e Aproximadamente el 50 % del peso de aparatos electr´nicos y el´ctricos son metales. En ´ste ultimo a a e ´ caso. el principal impacto ambiental de la basura electr´nica se debe principalmente a un procesado inadecuado. ars´nico y silicio en los microprocesadoo e res. Dependiendo del aparato considerado. La exposici´n cr´nica o o o a estas emisiones genera enfisema y c´ncer. a ıdo Los aparatos electr´nicos est´n constituidos por un conjunto de componentes de entre los o a cuales conviene destacar: aparatos de visualizaci´n como tubos de rayos cat´dicos y pantao o llas de cristal l´ ıquido. El resto de materiales quedan repartidos entre dos fracciones que se encuentran en porcentajes similares y que son pl´sticos y vidrios. vidrio. etc. aluminio en los discos duros. plomo. monio en el encapsulado de los chips. e As´ buena parte de los agentes contaminantes que se encuentran en los flujos de residuos ı. cobre en toda la electr´nica. En 1998 en los EEUU s´lo se reciclaron un u o 11 % de los ordenadores personales y un 26 % de los perif´ricos de los ordenadores obsoletos. resistencias. que poseen e el 70 % del valor residual de un ordenador. a Se calcula que. complementado con explicaciones propias. El siguiente ´ an´lisis se ha extra´ de [5]. circuitos impresos. Hablando de metales. cromo en los metalizados. cables. Los compuestos m´s problem´ticos desde el punto de vista medioambiental contenidos en a a los residuos el´ctricos y electr´nicos son los metales pesados. acero en las carcasas. mercurio y metales preciosos. el PVC. m´s que a su o a contenido t´xico inherente. y metales o preciosos en las placas de circuiter´ ıa. abundante en la basura electr´nica. cobre. lo que quiere decir que se desechan en vertederos o se incineran sin ning´n tratamiento previo. condensadores. A pesar de todo. en los equipos dedicados a a telecomunicaciones puede llegar hasta un 50 %. bario en los tubos de rayos cat´dicos. rel´s.D. mercurio en bater´ interruptores y las bombillas que o ıas. problemas respiratorios e irritaci´n de ojos. estos datos pueden variar. cadmio o y mercurio) y otras substancias t´xicas que acaban contaminando la tierra y los acu´ o ıferos. y a diferencia de los desechos tradicionales. se podr´ reaprovechar entre el 70 % y el ıa 90 % de lo que se lanza. reus´ndolos cuando fuera posible o recicl´ndolos. urbanos proceden de dichos aparatos. aluminio. pl´sticos con materiales ign´ a ıfugos. iluminan las pantallas planas. As´ a ı. los materiales ign´ e o ıfugos bromados y los compuestos bin´filos policlorados (PCB).

ıa u por un m´ ısero salario de 1. se revalorizan.boe. los materiales o se clasifican por tipos. n o En Espa˜a dicha directiva se traduce en el real decreto 208/2005 (que entra en vin gor el 13/8/2005). Trece pa´ ıses. incluyendo el reciclaje.int/. Hasta la fecha.basel. En la fase de trituraci´n.pdf). hace responsables a las empresas de electr´nica de deshacerse o o de sus productos una vez los usuarios ya no los quieran.es/boe/dias/ n o 2005-03-30/pdfs/A10800-10800. Pero gran parte de los residuos inform´ticos (se calcula que el 80 % en el caso de EEUU a y el 60 % en el caso de Europa) se env´ a pa´ en v´ de desarrollo. donde la o gente m´s pobre se expone a envenenamientos intentando extraer los diferentes metales y a componentes mediante tecnolog´ medieval y sin ning´n respeto hacia el medio ambiente. As´ las regiones m´s pobres de Asia (principalmente en China. Se estima que para ello el coste medio a a˜adir al precio de producci´n de un equipo ronda los 90 euros.boe. En este aspecto. Nos encontramos con que las regiones m´s ricas del planeta. que se puede a consultar en http://www. finalmente. cultivos. se tratan para ser recuperados y. El 2002 se trasladaron a Asia entre 6 y 10 millones de ordenadores obsoletos. y que desde 1989 proh´ la exportaci´n de residuos ıbe o peligrosos de las naciones ricas a las pobres bajo cualquier pretexto. o .5 d´lares diarios. que se puede consultar en http://www. a est´ haciendo caso omiso del Convenio de Basilea de las Naciones Unidas.112 Locomoci´n b´ o ıpeda del robot humanoide Nao entregan a gestores autorizados para su tratamiento. Estados Unidos es el unico pa´ industrializado que no ha ratificado dicho ´ ıs convenio. el llamado primer mundo. donde los materiales ıan ıses ıas contaminantes acaban en campos y costas.es/boe/dias/2005-02-26/ pdfs/A07112-07121. India y Pakistan) se est´n ı a a convirtiendo en las colonias-vertedero de residuos t´xicos del resto del planeta.pdf (con una peque˜a correcci´n en http://www. la mayor´ europeos. Esta ley indica que son los ciudadanos los que deben depositar los equipos en puntos de recogida espec´ ıficos y que a partir de ah´ son los ı fabricantes quienes deben hacerse cargo del procesado de los residuos. ya aprobaron normas que prev´n la obligaci´n de ıa e o reciclar los ordenadores. animales y agua potable. ensuciando aguas y suelos. la directiva Wastes from Electrical and Electronic Equipment de la Uni´n Europea. se venden a las industrias que los pueden aprovechar.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->