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

.

. . . . . . . . . . . . .1.4. . . . . . . . . . . . . . . . Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. SIMBICON: Simple Biped Locomotion Control 2. . Sistema de referencia . . . . .2. . . . . .1. . . . . .2. . 2. . . . . Descripci´n y morfolog´ .1. . . . . . . . . . . An´lisis de la locomoci´n b´ a o ıpeda humana 3. . Control . . . . . . . . Algoritmo . .1. . . . . . . . . . . Passive Walking . . . .1. .3. Formulaci´n matem´tica . . . . . . . . . 2. . o a 2. . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . .2. . . . . . . .3. . . . . . . .1. . 2. . . . . .2. . . . . . .4. .2. . . . . . .1. . .3. . . Introducci´n o 2. . . . . . . . Caracter´ ısticas del paso . . . . . . . . o ıa 2. . . 3. . . . . . . .1. . . Zero-Moment Point (ZMP) . . . . . . . . . . . . . . . . . Resultados . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . 2. . . . . 3. . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . Fases de la marcha . . . .2. . . . .1. . . ASIMO . . . . 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 . o 3. . . . . . . . 2. . . . . . . . . 3 . . . . . . . 2. . . . . . . . . . . . . . . . . . . . . .1. . . . .5. . . . . a 3. .1. . . . . . . . . . .4. . . . . . . . . Passive & Dynamic Walking . . . . . . . . . Cinem´tica . .3. .2. Robots b´ ıpedos y algoritmos de control 2. . Desarrollo del pie durante la marcha . . . . . . . . . . . . . . . . . .1. . . . . . . . . BigDog . .2. . .1. . . . .´ Indice general Resumen ´ Indice general ´ Indice de figuras ´ Indice de tablas ´ Indice de v´ ıdeos 1. . . . . Brazos y movimiento de torsi´n transversal o 3. . 2. . . . . . . . . . . . . . . . . . . . . . Descripci´n cualitativa . . .4. . . . . . 3.1. . . . . .4. . . . . . . 2. . . . . . . . . . . . . . . . 2. . . . . . . . . . . . . . . . Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. . .3. . . . . . . . . . Ventajas e inconvenientes . . Dynamic Walking . . .

1. . . . . . . . . . . . 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 . . . An´lisis de prestaciones a 6. . . . o o A. Modificaci´n del algoritmo ZMP . . o A. . . .1. . . . . . . . . . o o . . Instalaci´n SDK . . . . 5. . . . . . . . . . . o 5. . Programaci´n de Sammy’s Walk . . . Caracter´ ısticas generales . . . Conexi´n Ethernet . . A. . . . . . . . . . . . . . . . . . . .3. . . . B. . . . . . . . . . . o A. . . . . . . . . . . . . . . Instalaci´n del robot . o A. 5. . .1. . . . Sammy’s Walk : Dise˜o de un algoritmo de locomoci´n b´ n o ıpeda 5. . . . .3. . . . . . . . . . . . . . . . . Conclusiones . . . . Incremento de la estabilidad del ciclo l´ ımite . .2. . . . Simulaci´n con Webots . .2. . . .1. . . . . . . . . . . . 4. . . . . Caracter´ ısticas y uso de NaoQi . . . . . . . . . . . . . . . . . . . . . . . o A. . . . . Conclusiones Biblograf´ ıa A. . . . . . . . . . . . . . . . .3. . . o B. . . . . . o 7. . . . . . . . .1. . . . . . .3. . 5. . . . Inicializaci´n y sincronizaci´n con DCM . .3. . . . . . . . . Conclusiones . . 6. . . . . . . . . . . . Movimientos articulares . . . . . .6. . . . . . . . . . . . . . . . . . o A. . . . . . Conclusiones . . . . . . . . . .3. .3. . . . . .1.3.1. . . . Ejecuci´n de c´digo en tiempo real . . 5. . . . . . URBI . . NaoQi . . 5. . . . . . . . . . . . . Inducci´n de un ciclo l´ o ımite . . . Compilaci´n cruzada para librer´ din´micas o ıas a . . . 5. . . . . . . . . . . . . . . . . .2. . . . . . . 5. . . .3. . . . . . . . . .3. . . . . . ALWalk : Algoritmo de locomoci´n implementado en Nao . . .5. Programaci´n . . . . . . .3. . . . . A. . . . . . . . . . . . . Sincronismo con movimiento de avance . . . . . . . . . o 5. . . .5. . . . . . . . . o 5. . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Principales variables usadas . . . . . . . . .2. . . . .2. . . . . . . . . . . . . . . . . . . .4 Locomoci´n b´ o ıpeda del robot humanoide Nao 3. . . . . . . . . . . . . . . . . . . .4. . . . . . . . . . . . . B. .1. . . . . . .3. . . . . . . . . . . . . . NaoQi: programaci´n de Nao o 4. . .6. . . . . . . . . . . . . . . . . . . . A. . . . . . . . . .7. . . . . .2. . . . . . . . o 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscilaci´n lateral . .1.2. . . . Descripci´n de las funciones de locomoci´n b´ o o ıpeda . . . . 3. . . . . .2. . . . .2. .2. . . . . . . . . Caracter´ ısticas de la locomoci´n con Sammy’s Walk . . . . . . . . . . . . . . . M´dulos de NaoQi . . . . . . . . . . . . . . . Caracter´ ısticas de la locomoci´n con ALWalk . . Pruebas de funcionamiento . Nao 4. . . . . . . . . . .2. . .1. Simulador: Webots . . . . . . . . . .2. .3.1. Puesta en marcha y programaci´n de Nao o A. . . . . . . . . . . . . Mejoras estil´ ısticas y de estabilidad . . . . . . . . . . . . . . . . . . .2. . . 4. . . . . . . . . . . . . . . . .2. . . . . . . . . .2.1.4. . . . . . . . . . . . . . . . .3. . . .1. . . . .4. . . . . . . Ejemplo de programaci´n en Pyhton . . . . . . . .1. . . . . o 5. . . . . . . Programaci´n del algoritmo y la interfaz gr´fica o a B. 4. . . . . . . . . o A.1. . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . .

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

.

. . . . . . . . . . . . . . . . . .6. . . . . . . . . . . . . a Respuesta del filtro pasabajos al escal´n unitario . . . .2. . . . . . . . . . . . . . . . . . . o 2. . . . . . . . . o 3. . .2. . . . . . . . .1 . . . . . 4. . . . . . . . Descripci´n BigDog . . . . . . . . . . . . .4. . . . . . . . . . . . . Robot Nao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fuerzas y momentos sobre el pie . . . Caracter´ ısticas del paso . . . . .4. . . . . .2. . . . . . . . . . . . . . . 2. . . . . . . . . . . . . . . . . . . . . .6. . . . . . . . . . Simulaci´n en tiempo real de un personaje que camina con el algoritmo SIMo BICON . . . . . . . . .13. . . . . . . . . . . . o 2. . . paso . . . . . . . . . 3. . . . . . . . o a Pantalla de la GUI para la configuraci´n de ALWalk o M´quina de estados . . Instant´neas de las fases de la marcha [13] . . . . . . . . . . . . . . . .12. . . . .10. . . 3. . . . . . .3. . . . . . . .1. . . . . . . . . Movimiento de brazos y hombros al caminar . . . . . . . . . . . . 2. . . 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. . . . . . . . . . . . . . . . . . . . . . . . . Principios del control de la locomoci´n . . . u o 2. . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . a Fases de la marcha . . a 2. . . .1. 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . Elementos de la estrategia de realimentaci´n para el equilibrio . . Copia del mecanismo inventado por McGeer . . . .5. . . . .3. . . 3. . . . . . . . . . Sistema de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . .7. 2. . . . Pol´ ıgono de soporte seg´n fase de locomoci´n . . . . . . . . . . . a Instant´nea en t = 5s .8.2. . . BigDog . . . . . . . 4. . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . . . . Robot ASIMO .4. 3. 4. . 5. . . .1. . . . . . . . . . . . 3. .1. . . . . . . .4. . . . . . . . . . .5. o 7 . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .´ Indice de figuras 1. . . . . 5. 5. . . . . . . . . . . . . . . . . M´quina de estados . .9. . . . . . . . . .3.5. . . . . . . 2. . . . . . .9. . . . . a ´ Angulos articulares de la pierna derecha y fase de Nao Academics Edition . . Articulaciones del robot . . . . . . . . . . .11. . . . . 2. . . . . .7. o 2. . Microsoft Robotics Studio . . . . . . . . . 5. . . . . . 2. . . . . . . . . . . . 3. . . . . Configuraci´n de par´metros de Offset del ZMP . . . . . . .3. . . . 3. . Patrones de locomoci´n . . . . . . . . .8. . . . . . . Tres caminadores actuados basados en el mecanismo de locomoci´n pasivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . An´lisis del caminar humano . . . . . . . . . . . . . o Cicloide usada para trayectorias de los pies . . . . . . . . . . . . 4. . . . . . . . . Simulaciones de un personaje en 2D con el algoritmo SIMBICON . . . . . . . . . . Desarrollo del pie durante a marcha . . . . . . . . . . . . Diagrama del lazo de control . . . . . . . . . . Webots 6. . . . . 2. . . . . .6. . . . . .

. . . . . .9. . . . . . . . . . . . . B. . . . . . . . apertura de las piernas 0o . . . . . . . . . . .5.8. . . . . . . . . . . . . . . . . altura o 26cm .3. . . . . . . Intensidad consumida en la oscilaci´n lateral inducida . . . . . . . . . . . . . Auto-oscilaci´n con el robot de pie. Diagrama de correcci´n del ancho de paso .tar. . .8. . control . . . . . . . . . .11. . o u o 5. . . . . . . . . . . . Ciclo l´ ımite lateral . . .1. . . . . Oscilaciones laterales inducidas – Angulo X respecto la vertical . .9. . . . . . o 6. o 5. B. . .14. . . . . . . . 6. . . . . . . . A. . . . . . . . . . . Ventana ALWalk . . . P´gina web de conexi´n a Nao . . . . . . . . .2. . . . .13. . . . . . . . . . o 5. . . . . . . . . Ventana principal . . . . . . .1. . . .7. . 5. . . . . . .17. . . . . B. . . . . . . . . . . . . o Consumo de intensidad para la locomoci´n Sammy’s Walk .3. . . . . . . . . . . . . . Espacio de estados ante perturbaciones con correcci´n velocidad . . . . . . . . . . . . . . . . . . . . Configuraci´n de servidor en Nao . . .8 Locomoci´n b´ o ıpeda del robot humanoide Nao 5. . . . Ventana Sammy’s Walk . . . . . . . .0-Linux. . .2. . . . . . . . B. . . . . 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mando de la Wii. . . . Estructura del programa local . . . . . . . . . . . .15. . . . . . . . . . . . . . . . . . . . . . . . o 5. . . . . . . . . . . . . . . . . . . 5. . . . . Wiimote . . . . . . . . . . . . .2. . . .16. . . . . . . . . . . . . . . . . Ventana del editor de posturas . . . . . . . . . . . . . . . . . . . o 5. . . . . . Frecuencia de oscilaci´n seg´n configuraci´n . . . . . . 5. . 5. . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . Oscilaci´n lateral nominal .2. . . . . B. Ventana principal de NaoGUI . . .gz . . . . B. . . . . . . . . Movimiento lateral . . . . . . . . . . .4. .3. B. . . . . Contenido de NaoQiAcademics-1. . . . o A. a o A. . An´lisis de ejecuci´n del bucle de a o Estructura de la GUI . . . . . . . . . ´ 5. . . . . . . . . . Configuraci´n de las piernas para el avance . . . . . . . . . . . . . . . . . . o ´ Angulos articulares de la pierna derecha y fase de paso . . . . . . . . . . . . .10.6. . . . B. . . . . . caderas . . . . . . . . . . . Oscilaciones laterales inducidas – Velocidad angular X . . . . . . .12. . . . . . . . B. . . .1. . . .7. . . .

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

.

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

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

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

.

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

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

existe un momento que est´ haciendo e a girar el pie. Si el pie est´ en equilibrio. Dado que la fuerza Rz es unidireccional. My ).3) Si se estudian unicamente las componentes horizontales. A continuaci´n se explicar´ la diferencia ´ o a entre ambos conceptos. velocidades y aceleraciones. i i MPi = 0 (2. Cuando el momento externo de la articulaci´n contin´e aumentando.1) R + FT + mpie g = 0 ⇒ R = −FT − mpie g −→ − −→ − −→ − OPZMP ∧ R + OG ∧ mpie g + MT + M + OT ∧ FT = 0 (2. ZMP y CdP est´n ubicados sobre un borde del pol´ a ıgono de soporte. 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. M no aparece en la ecuaci´n ´ o al tener unicamente componente vertical. y ser´ coincidente con CdP por definici´n. o o o ZMP se puede definir en funci´n de una trayectoria computada. Sustituyendo la ecuaci´n 2. My se reduzca unicamente a una fuerza. 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.2 en la ecuaci´n 2. La ecuaci´n generalizada para calcularlas es: o τ = H(q)¨ + C(q. Robots b´ ıpedos y algoritmos de control 17 Por tanto. CdP continuar´ estando en el borde del pol´ a ıgono de soporte (no puede existir fuera de ´ste). siendo las componentes horizontales del ´ momento compensadas por la ubicaci´n de la fuerza. MT y y Mx . es decir.2. Rz . fuera del equilibrio. Mx . ZMP a a se encontrar´ dentro del pol´ a ıgono de soporte. siempre se puede encontrar un punto p tal que la reacci´n del suelo o Rz .2) (2. se pasar´ a o u a condiciones de volcada.3.5) . y en concreto o para el tobillo del pie soporte. 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. Sin embargo. Cabe destacar que esta definici´n es muy parecida a la de centro de presi´n (CdP). Este punto es el Zero-Moment Point o ZMP. 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.4) Para una trayectoria computada. ZMP existir´ fuera del pol´ a ıgono de soporte en un punto tal que el momento neto de todos los enlaces sea nulo. 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. no est´ en condiciones de volcada inminente. de la cual se conozcan las variables articulares. q)q + g(q) + τext q ˙ ˙ (2. 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 . y analizar las componentes horizontales: Fi = 0.

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

aparte de todo un arsenal de sensores inerciales. o (a) Evoluci´n de ASIMO (1986 a 2005) o (b) Versi´n 2005 o Figura 2. y mover las articulaciones seg´n ´ste. El v´ ıdeo [2. y puede alcanzar corriendo (con o fase a´rea) los 6 km/h.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.7 km/h.1. Sin duda. tiene 34 grados de libertad y una ´ o bater´ que dura aproximadamente 25 min. ıa de presi´n y de fuerza. es un robot humanoide creado por la empresa Honda [8]. o La ultima versi´n de ASIMO mide 130 cm.2. 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. 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. Camina de forma normal a 2. ASIMO ASIMO (acr´nimo de Advanced Step in Innovative Mobility – paso avanzado en movilidad o innovadora).3 ASIMO] contiene una demostraci´n del robot caminando en sus diferentes modos. es e uno de los robots m´s avanzados que se han dise˜ado en laboratorios de investigaci´n. la ultima y novedosa ´ versi´n se present´ en el a˜o 2005 (ver Figura 2. Puede correr girando y evitar deslizamiento de los pies. a n o .3.3). pesa 54 kg.1. Robots b´ ıpedos y algoritmos de control 19 2. 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. 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. las perturbaciones que provocan y as´ poder ı corregirlas. 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.

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

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.

siendo muy estable ante perturbaciones externas importantes y variaciones de terreno. que le suministran potencia. mide alrededor de un metro de alto. Los de inercia miden la inclinaci´n y aceleraci´n del cuerpo. y una morfolog´ parecida a la de un perro ıa (de ah´ su nombre perro grande). La computadora controla el comportamiento del BigDog.6: BigDog Aunque este robot no es humanoide.com). sus sensores y las comunicaciones. su comportamiento es muy natural.24 Locomoci´n b´ o ıpeda del robot humanoide Nao 2. o . 1.1m de largo y 0.bostondynamics. o o mientras que los de las articulaciones miden el movimiento y fuerza de los actuadores.1. Surgi´ del Massachusetts o a o o Institute of Technology. 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.7). ya que tiene cuatro piernas. capaz de moverse en entornos reales muy diversos. una ingenier´ especializada ıa en la construcci´n de robots din´micos y software de simulaci´n. y adem´s un quinto grado de libertad pasivo a a (ver Figura 2. BigDog BigDog[22] es un robot con cuatro piernas. actuaci´n. Cada actuador tiene sensores de posici´n y fuerza. sensado. Figura 2. El robot pesa 109 kg. o e Los actuadores son cilindros hidr´ulicos de baja fricci´n controlados por servov´lvulas a o a de alta calidad. 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. o control y comunicaciones.3m de ancho. 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. la cual proporciona aceite a a alta presi´n a trav´s de los sistemas correspondientes. 2.3 BigDog] se puede comprobar la bondad del algoritmo de control de este robot. Permite controlar la o o interacci´n con el suelo para mantenerse erguido y continuar la marcha. Ha sido ı desarrollado por Boston Dynamics (www. Descripci´n y morfolog´ o ıa BigDog tiene varios sistemas a bordo. y en primer lugar se centraron en desarrollar un robot con forma animal que pudiera caminar. BigDog tiene unos 50 sensores.3. En el v´ ıdeo [2.

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

pero no en robots b´ a ıpedos. Cabe destacar que s´lo se ha probado con o simulaciones f´ ısicas (con par´metros reales). 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. girando. saltando.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. . hacia atr´s. a Permite una gran cantidad de estilos de locomoci´n en tiempo real (hacia delante.26 Locomoci´n b´ o ıpeda del robot humanoide Nao Adicionalmente a los principios expuestos. o Evitar colisiones entre piernas. gateando. . 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. Este algoritmo funciona bien tanto en 2D como en 3D.9 se puede ver el diagrama de control): Estimar la evoluci´n del terreno usando la informaci´n hist´rica. Usar el control de tracci´n para detectar. 2. corriendo. 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. 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 SIMBICON]. . evitar y recuperarse de resbalones. o o o Ajustar la postura para optimizar la fuerza de cada pierna. Se puede ver una demostraci´n en el v´ o ıdeo [2.4. o a de lado. y compar´ndola con la real se obtieo e a a ´ nen las fuerzas que se deben ejercer. el sistema de control realiza las siguientes tareas (en la Figura 2. A trav´s de cinem´tica inversa.

Cada articuo o laci´n individual usa un controlador PD (proporcional-derivativo) para dirigirse a su ´ngulo o a objetivo.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. 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.4. no respecto a su articulaci´n previa. Robots b´ ıpedos y algoritmos de control 27 (a) Caminando (b) Pasos altos (c) Corriendo (d) Paso largo Figura 2. o grafo con posturas de a control. para todas las articulaciones. Las transiciones entre estados ocurren despu´s de un tiempo fijo o. para otros ese tados. unas modificaciones permiten obtener una locomoci´n robusta. De esta forma se consigue un balanceo robusto modificando el siguiente punto de soporte.2.11: Simulaci´n en tiempo real de un personaje que camina con el algoritmo SIMBICON o 2. sin embargo. Cada estado consiste en una postura del cuerpo que representa los ´ngulos objetivo a de cada articulaci´n respecto al eslab´n anterior. 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. . Algoritmo La idea del algoritmo es usar una m´quina de estados finita. despu´s de que el pie establezca contacto con el suelo. En segundo lugar. o El control por posturas por s´ solo no tiene equilibrio intr´ ı ınseco. y para correr s´lo dos estados. Los estilos de locomoci´n para e o caminar se modelan con cuatro estados.1. En primer lugar.

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. El par τB es calculado tambi´n con un controlador e PD virtual que trabaja en la referencia del suelo. Estos ´ngulos son un objetivo. 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. de hecho. no se alcanzan realmente en un funcionamiento a normal.13a.28 Locomoci´n b´ o ıpeda del robot humanoide Nao M´quina de estados a Cada estado tiene sus ´ngulos objetivo. la reacci´n (par inverso) se est´ aplicando sobre el torso. es decir. La transici´n e o entre los estados 0 → 1 ocurre despu´s de un tiempo. 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. −τA − τB . los pares de a o e estados derecho-izquierdo deben ser sim´tricos. Para una locomoci´n sim´trica. los estados 0 y 2. tal como se muestra en la figura. Es o a necesario que el par deseado sobre el torso τtorso sea el par neto que se aplica. 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. Para solucionar este aspecto se calcula el par neto del torso como τA = τtorso − τB . 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 .12). En primer lugar se controla la inclinaci´n del torso o respecto al sistema de referencia del suelo. y de 1 → 2 despu´s del contacto del e e pie con el suelo (ver Figura 2. esto se consige usando un controlador virtual PD que trabaja en este sistema de referencia que calcula el par neto τA . controlando la cadera de la pierna en movimiento o respecto al sistema de referencia del suelo. Se emplea una ley de la forma . Finalmente cabe notar que el par τB es interno al sistema y.12: M´quina de estados a En cualquier estado dado. tal como se ilustra en la Figura 2. 1 y 3.

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. Los resultados m´s exitosos se han conseguido con el algoritmo a ZMP.2. y su simplicidad y facilidad o de programaci´n. Tambi´n existen otras m´ltiples aproximaciones. y permite a trav´s de un dise˜o conjunto de la estructura f´ a e n ısica .7) a la cadera de la pierna en movimiento. (a) Relaci´n entre los pares del torso.4.13: Elementos de la estrategia de realimentaci´n para el equilibrio o 2.5. En la Figura 2. El par´metro cv regula la velocidad en estado a estacionario. Esta ultima e u ´ est´ bastante desarrollada. tal como se ve en la Figura 2. Resultados El algoritmo SIMBICON proporciona una serie de ventajas: gran facilidad para crear estilos de locomoci´n. 2. a Este algoritmo es siempre una referencia para el desarrollo de otros. un procedimiento sistem´tico que permite asegurar la estabilidad de las locomociones. resulta muy estable frente a perturbaciones. 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. d la distancia horizontal del pie a a de soporte hasta el centro de masa (CDM). Puede ser una opci´n muy interesante para el desarrollo de la locomoci´n o o o de un robot humanoide. como dynamic walking. siendo θd el ´ngulo objetivo del controlador PD.2.13b.10 se muestran los dibujos de diversas simulaciones. Robots b´ ıpedos y algoritmos de control 29 θd = θd0 + cd d + cv v (2. θd0 a el ´ngulo objetivo por defecto de la m´quina de estados. 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. y v la velocidad del CDM.

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

dynamicwalking. Parte de los u a o datos expuestos se han tomado de este estudio. a o 31 . o Los datos que proporcionan constan de (ver Figura 3. muy lento. o o ´ Angulos. lento. obtenidos por cinem´tica/din´mica o a a inversa. Otros aspectos como la din´mica. 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. Informaci´n de la actividad muscular. 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. o Captura de la posici´n XYZ de cada articulaci´n. e Se ha utilizado como fuente de datos la informaci´n proporcionada en [13].1): Diferentes estilos de caminar: Normal. y tambi´n por o e la p´gina web www. Ya que se pretende implementar el control en un robot o humanoide. En concreto se analizar´n el estilo general de locomoci´n y los a a o movimientos articulares. 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. Este an´lisis se centrar´ en las n o a a piernas.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.dynamicwalking. r´pido y estilo a ASIMO. y se mostrar´n de una forma gr´fica para su a a mejor comprensi´n. momentos y potencia de cada articulaci´n. Captura en v´ ıdeo de la secuencia. Se puede afirmar que la forma de caminar de los humanos est´ muy optimizada para a la configuraci´n de dos piernas.org. tambi´n es un deber estudiar el modelo “original”. Hay m´ltiples e interesantes estudios al respecto que se u pueden consultar para m´s informaci´n en la web de www.org. Dibujo esquem´tico de la persona. ya que son la clave para caminar. potencia u otros aspectos salen a de los objetivos de este proyecto. muy muy lento.

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

3a) – El abordaje al suelo se realiza por el tal´n. o 2. Desarrollo del pie durante la marcha 1.3c) – Despegue del tal´n. .3b) – El pie permanece plano.3. e 4. 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. a a 3. que la condici´n ZMP que el pie completo est´ totalo e mente apoyado s´lo se cumple durante medio ciclo.2f) . 3. Del 15 al 40 % (Figura 3. Extensi´n total (75-100 %) (Figura 3.2.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. a (a) (b) (c) (d) (e) (f ) Figura 3. Del 40 al 50 % (Figura 3.1. De 0 al 15 % (Figura 3. Es decir.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. Del 50 al 60 % (Figura 3. Todo el peso reposa s´lo sobre el o o antepi´. El contacto se realiza a trav´s e del borde externo. An´lisis de la locomoci´n b´ a o ıpeda humana 33 6.3d) – Despegue de los dedos.

5 km/h. En caso ıa que se amputaran todos los dedos la ultima fase del paso no se puede realizar. La amplitud del paso es la distancia que separa el tal´n de a o la l´ ınea de marcha. que cruzan por detr´s. 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.5 a 5 km/h. es preciso que los hombros y brazos realicen el o giro en sentido inverso (ver Figura 3. y el paso se ´ debe acortar. Se puede ver que desde el punto de vista de la pierna. a La marcha normal es la que tiene un consumo energ´tico menor. .5).3: Desarrollo del pie durante a marcha Este ser´ el esquema del desarrollo del paso para un pie estrictamente normal. el pie est´ basculando. La velocidad de marcha es igual u al producto de la cadencia por la longitud de paso.3. y se mide de tal´n a tal´n. o e Recordar que en un ciclo completo se realizan dos pasos. 1 2 Entendida como la que tiene la relaci´n velocidad/(consumo energ´tico) mayor.4). 3. con una velocidad alree dedor de 4.34 Locomoci´n b´ o ıpeda del robot humanoide Nao (a) (b) (c) (d) Figura 3.09 s.1. 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. Se o o llama ´ngulo del paso el formado por la l´ a ınea de marcha y el eje del pie.4: Caracter´ ısticas del paso La cadencia es el n´mero de pasos hechos en un minuto. y la un per´ ıodo de ciclo velocidad ser´ de 5 a 6. Esto es a ıa 2 entre 0. Esta idea es a la que se aprovechaba en los caminadores pasivos. Caracter´ ısticas del paso El paso es la distancia que separa dos apoyos sucesivos. 3.1.4. por eso tienen movimientos tan parecidos a los humanos. Su valor normal es de 15o . La longitud de paso oscila entre 75 y 85 cm. para una velocidad media es de 5 a 6cm (ver Figura 3.6cm Línea de la marcha 15º Ángulo del paso Figura 3.92 y 1. y o disminuir la oscilaci´n transversal del tronco.

6). a . aunque se puede proseguir a con la marcha. el torso oscila mucho en el eje transversal. o a a En la Figura 3. 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. Cinem´tica a Sistema de referencia En primer lugar se definir´n planos de referencia y ejes respecto al cuerpo (Figura 3. 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.2. De hecho. 3. Movimientos articulares Los comandos que se enviar´n al robot para controlarlo ser´n las configuraciones angulares a a de cada articulaci´n. se estudiar´n solamente los planos a frontal (movimientos de aducci´n/abducci´n). a Ya que se analizar´ la locomoci´n en l´ a o ınea recta. 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. por coherencia se han o tomado los mismos ejes que se definir´n en el robot Nao.5: Movimiento de brazos y hombros al caminar 3. y sagital (movimientos de flexi´n/extensi´n).2.2. Figura 3.7 se pueden hallar instant´neas para cada fase del paso. 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.3.2. 3.1.

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

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

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

40 Locomoci´n b´ o ıpeda del robot humanoide Nao uso normal es de 30W. o Tiene un total de 25 grados de libertad (ver Figura 4. 5 en cada brazo+1 en cada mano.1: Lista de articulacines de Nao . Permite conexi´n con cargador de 24V.2 y Tabla 4. y en actividad 70W. 5 en cada pierna. 1 en la pelvis.1): 2 en la cabeza.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. Figura 4.

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

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

n Las funcionalidades que incorpora de control articular. actuadores y sensores hasta la arquitectura de software se nota un dise˜o muy cuidado.4. 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. y el estudio de la locomoci´n b´ o ıpeda en robots humanoides. Conclusiones Nao se muestra como un robot con caracter´ ısticas muy avanzadas. y especialmente el contacto con el suelo. Desde la estructura f´ ısica.4. Nao 43 que se han probado dan resultados poco realistas en cuanto a movimientos. Webots se muestra m´s correcto con la simulaci´n de Nao. . a o 4.

.

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

2). .46 Locomoci´n b´ o ıpeda del robot humanoide Nao 5. Adem´s. ALWalk : Algoritmo de locomoci´n implementado en Nao o NaoQi. como por ejemplo mantener el equilibrio o caminar. Descripci´n de las funciones de locomoci´n b´ o o ıpeda Una vez se hace la conexi´n al m´dulo ALWalk. Como es un modelo simplificado. Representa la altura de la cicloide. por defecto a 0. int pN um Sa mp le sP er St ep ) // Caminar de l a d o void walkSideways ( float pDistance .1. pMaxStepHeight Altura m´xima de un paso en metros (de 0. por defecto a 0. Adem´s. 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 . o bloques funcionales (informaci´n a o o ampliada en el Ap´ndice A. 015m). Los e o diferentes patrones son los que se muestran en la Figura 5. o AlMotion permite. 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. 0 a 0.1). mover puntos detera minados en el espacio cartesiano o controlar la rigidez de las articulaciones. La forma de moverlo es mediante consignas de posici´n para las articulaciones. 08m.1. haciendo un seguimiento de este. tambi´n a e tiene funciones de alto nivel. est´ organizado en m´dulos. puede e dar lugar a inestabilidades. y se describe a continuaci´n. Uno de ellos es ALMotion. el software de Nao. 09m. 055m).1. que incorpora las funciones para e mover el robot.3. El c´mputo de la trayectoria de CdM se realiza o con un modelo simplificado de un p´ndulo invertido. 0 a 0. float pRadius . entre otras cosas. resolver el modelo cinem´tico.1. se pueden configurar par´metros caracter´ a a ısticos de la locomoci´n. Estos son: o ´ pMaxStepLength Longitud m´xima de un paso en metros (de 0. o 5. 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 . 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 . La trayectoria de los pies se realiza con forma de cicloide (ver Figura 5. El subm´duo lo que tiene estas funciones se llama ALWalk. 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.

5o ). 05 a 0.1: Patrones de locomoci´n o pMaxStepSide Longitud m´xima de un paso lateral en metros (de 0. 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. Este par´metro y el siguiente sirven para controlar como las posicioa nes de cada paso se convierten en una ruta objetivo del ZMP. por defecto 5o ). Se puede usar para reducir el ancho del movimiento lateral del CdM. 015m).(ver Figura 5. pHipHeight (0. pHipHeight define la altura de las caderas del robot durante . a pMaxStepTurn M´ximo cambio de orientaci´n seg´n eje vertical en radianes (de 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 . o por defecto 0. que hace que el CdM permanezca durante o m´s tiempo sobre el pie. o pRHipRollBacklashCompensator (-15o a 15o . por o defecto 0. 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. pZmpOffsetX Offset de la posici´n objetivo del ZMP hacia adelante (de 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. 0 a a o u 1. a pZmpOffsetY Offset de la posici´n objetivo del ZMP hacia un lado (de −0. por defecto 4. 244m) y pTorsoYOrientation (-20o a 20o . 05m.5o ).3). por defecto −4. pZmpOffsetX es una distancia positiva desde el tal´n de un paso. 0 a 0. 015m). 0 a 0.5. 1m.15 a 0. 06m). 0rad). Asimismo.

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

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

1 0. Esto se consigue haciendo pasos cortos.1: Configuraci´n de Stiffness para cada articulaci´n o o Par´metro a pMaxStepLenght pMaxStepSide pTorsoYOrientation pZmpOffsetX pRHipRollBacklashCompensator Valor 0. Para que los pies no toquen el suelo siempre hay que imponer una cierta altura en el paso. como si fueran “muelles”.0 0. ya que es la encargada de mantener erguido el cuerpo.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.7 0.3 0.0 0. Como se ha reducido mucho la fuerza en los pies y rodillas.3 0.025 0.0 0. .3 0.02 0. a La stiffness del movimiento frontal de caderas no se puede bajar. el robot tiende a caerse.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.2: Configuraci´n de par´metros extra o a Figura 5. Para estabilizar el movimiento hay que asegurar que el robot est´ siempre “encima de e los pies”.0 Tabla 5.3 0.0 Par´metro a pMaxStepHeight pMaxStepTurn pHipHeight pZmpOffsetY pLHipRollBacklashCompensator Valor 0.2 Tabla 5.6 0.04 0.0 0. para asegurar la estabilidad.

con los problemas mencionados anteriormente. Estos par´metros dieron como resultado una locomoci´n estable y robusta. Se buscar´ un estilo de control m´s pr´ximo al control cl´sico de dimensiones e a a o a reducidas. o estabilizar la locomoci´n. que se analizar´n en el siguiente o a cap´ ıtulo. Este proyecto se parecer´ en forma a otros a . Si se hace el movimiento m´s r´pido no s´lo se consigue aumentar la a a o velocidad de translaci´n. 5. Aplicar leyes de control que se correspondan a reacciones l´gicas que realizamos los o humanos. velocidad alta].2. 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). 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. La formulaci´n ZMP es ı o ampliamente conocida e investigada. no es en s´ mismo un algoritmo nuevo. decide iniciar otra v´ de investigaci´n basada en el aprovechamiento de las din´micas propias ıa o a del sistema. 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. es decir. o Hacer que las ´rbitas del ciclo l´ o ımite tengan un espacio de atracci´n mayor. Aunque hay muchos trabajos te´ricos que tienen este esp´ o ıritu (por ejemplo [7][11]). las implementaciones en robots reales son escasas. As´ se ı. no necesariamente buscar algoritmos basados en formulaciones matem´ticas a complejas. Esta idea se usa por ejemplo en el robot o BigDog. suponiendo el comportamiento de este como dos p´ndulos unidos.3 ALWalk low-stifness. tal como se a o puede ver en el v´ ıdeo [5. dan tiempo a que el sistema se inestabilice. sino la estabilidad. La aproximaci´n mencionada en este apartado es una modificaci´n del algoritmo que ya o o viene incorporado con Nao. para poder comparar los resultados con los ya encontrados. ya que de hecho la locomoci´n es un ciclo l´ o ımite estable que se da en un sistema no lineal. Adem´s se produjo una a mejora sustancial en las prestaciones de la locomoci´n.1. a o Se observa que los movimientos lentos son perjudiciales. a el hecho de que los robots tengan un consumo tan bajo los convierte en un modelo a seguir. sino que se mantenga en la posici´n vertical.5. Adem´s. 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. 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 inducir ciclos l´ ımite). Dado que este desarrollo es relaa a tivamente novedoso. As´ que realmente la locomoci´n se genera a partir de ı o tres estados. los estados para la fase de soporte izquierdo 1. En primer lugar se buscar´ inducir una oscilaci´n lateral y sobre ´sta se buscar´ sobreponer a o e a el movimiento de avance. 3 ser´n sim´tricos a a e los de la fase de soporte derecho 4. Sin embargo. a a desarrollo. SIMBICON no se ha implementado en robots reales. a a o a Existen otros robots. 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 robot en concreto s´lo se mueve en una direcci´n. No hay un punto intermedio que logre un movimiento suave.5. Cada postura ser´ una a configuraci´n articular del robot. har´ falta definir la evoluci´n de un estado a otro.52 Locomoci´n b´ o ıpeda del robot humanoide Nao y tomar´ ideas de ellos. Sin embargo.1 Spring Flamingo] se puede ver su comportamiento. Se usar´n tres a a estados por fase de soporte para poder tener un mayor control. es de esperar que no se consiga madurar suficientemente para obtener resultados comparables a otros ya existentes. as´ que su aplicaci´n en Nao es una ı o novedad. El paso de 3 → 4 se producir´ con un evento externo a de sincronismo. 6. ya a o o que el movimiento lateral est´ bloqueado. no es capaz de u a a levantarse. controlando con la posici´n del siguiente paso. o Avance. a Si se aplica el m´todo de reducci´n de stiffness el robot pierde fuerza.2. Si los cambios se hacen a o directos. el impacto del pie derecho (de 6 → 1 pie izquierdo)2 . Los movimientos e o contin´an siendo muy r´pidos. Sin embargo puede suponer un buen comienzo para investigaciones futuras.1. 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. Nao usa el par m´ximo disponible y provoca movimientos muy bruscos e indeseables. 2. Este algoritmo es el que se usa en SIMBICON [27]. o Asimismo. 5. Ya que se pretende lograr un movimiento rectil´ ıneo. pero llega un punto en que si se reduce m´s. BigDog (pasos r´pidos. Por tanto a medida que avance la investigaci´n se ir´n indicando los o a problemas que se encuentren y sus posibles soluciones. como por ejemplo Spring Flamingo [20]. Adem´s. sino que s´lo se coger´ el concepto. a a o simetr´ marcha humana (´ngulos articulares) y otras que se ir´n explicando durante el ıa). En el v´ ıdeo [5. 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. 2 Para detectarlo se usar´n los sensores de fuerza que Nao incorpora en los pies. que tambi´n usan una e m´quina de estados. no se usar´ directamente. y tambi´n proviene de una formulaci´n matem´tica a e o a compleja. a . La m´quina de estados implementada es la descrita en la Figura 5. Para generar las trayectorias se opta por utilizar una m´quina de estados que alterne a entre diferentes posturas.2. 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. algoritmo SIMBICON (control por m´quina de estados). pero a su vez diferir´ de todos. 5.

Para evitar que en el instante que se produce el escal´n ya haya salida. Por tanto. Se ha escogido de tal forma que tenga ganancia unitaria ante entradas escal´n. se escoge otra opci´n que ha dado grandes e o resultados. son de hecho a escalones. Las articulaciones de Nao est´n en principio controladas por un controlador “tipo” PID. a a Sin embargo. En vez de usar alg´n tipo de ajuste tipo polin´mico u o u o o curvas b´zier que son relativamente complejos.1) . (z − a)2 G(z) = a ∈ R. 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.5: M´quina de estados a El algoritmo SIMBICON usaba para la generaci´n de estas trayectorias un controlador o PD. al venir de la m´quina de estados. ajustado de tal forma que los movimientos fueran suaves. Ki . Las consignas de las articulaciones.5. con dos o a polos reales. tras realizar diferentes pruebas se comprueba que el ajuste de los supuesto par´metros Kp . se usar´ un filtro simple de segundo orden. 0<a<1 (5. la ultima opci´n que ´ o queda es usar alg´n tipo de interpolaci´n. Para suavizarlos se puede usar un filtro pasa bajos. de par´metros configurables. La documentaci´n no da o detalles concretos si realmente es un PID ni de su estructura. y Kd no da los resultados que se esperar´ a ıan. o a (1 − a)2 z . o As´ la funci´n de transferencia discreta del filtro ser´: ı.

6 muestra la respuesta del filtro para una entrada escal´n unitario para varios valores del par´metro a. Con este tiempo de muestreo. o . un par´metro ajustable que regula el tiempo en o a que se llega al valor final. 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. se proceder´ a su implementaci´n. o a Entre otros se afrontaron los siguientes desaf´ ıos: Aprendizaje de la metodolog´ de programaci´n de Webots. Se escoge la posici´n del polo tal que tenga m´dulo menor que 1 o o (estable).2. la configuraci´n de las simulaciones desde cero no fue tarea f´cil. 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. y del robot simulado. la Figura 5. Esto deber´ permitir un mayor rapidez en las ıa pruebas de par´metros y mayor seguridad. solventar las limitaciones de la versi´n o o demostraci´n y aprender los comandos espec´ o ıficos de Webots. ıa o Desarrollo de la primera versi´n del algoritmo Sammy’s Walk. Si a → 1. o a Figura 5.6: Respuesta del filtro pasabajos al escal´n unitario o Ahora que ya est´ definida la estructura del algoritmo. ya que aunque el robot se caiga es una simulaci´n. que sea real y positivo para que no haya oscilaciones. a a o 5.2. el comportamiento ser´ m´s lento. la estructura de programa. si a → 0 el comportamiento ser´ m´s r´pido.54 Locomoci´n b´ o ıpeda del robot humanoide Nao donde a es la posici´n del polo en el eje real.

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

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

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

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

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

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

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

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

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

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

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

5) . e a En la ecuaci´n 5. L(q) la distancia ıa entre la base del pie soporte y el centro de masa. a ıa Si la energ´ ha aumentado. 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. El trabajo [10] previamente citado propone e ıa esta idea. es necesario que el siguiente paso sea m´s abierto. a o o Suponiendo que el movimiento se realiza en el plano lateral. esto es.14: Diagrama de correcci´n del ancho de paso o Existe una posibilidad en que es necesario modificar esta idea.4) donde Ep es la energ´ potencial del sistema. Si la velocidad ıa). a ıa Figura 5. para que ıa a de esta forma cuando el otro pie entre en contacto tenga un recorrido mayor. n y para estas el m´todo planteado es v´lido.14 se ilustra esta idea. m la masa. o Suponiendo que aproximadamente L es constante. una o perturbaci´n se puede considerar una variaci´n en la energ´ cin´tica de rotaci´n. y viceversa. 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. con una formulaci´n que se expone aqu´ de forma simplificada: o ı Ep = m · g · h = m · g · L(q) · cos(θ) (5. una o o ıa e o variaci´n en la velocidad angular. 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. y no se considerar´ en este estudio. ıa e que se va intercambiando con la potencial. Tal como se mencion´ en el segundo punto. 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. 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.3 se muestra el incremento de energ´ cin´tica de la perturbaci´n. tenga que utilizar m´s energ´ potencial. ωx on-line. se puede calcular el incremento diferencial en la energ´ potencial como: ıa ∆Ep ≈ −m · g · L · sin(θ) · ∆θ (5. Este incremento de energ´ cin´tica debe corregirse idealmente con un incremento ıa e id´ntico en la energ´ potencial del siguiente paso. no tendr´ suficiente energ´ y acabe cayendo hacia adentro del paso. angular disminuye. g la gravedad. ω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. que depende de la configuraci´n del robot q. En el Figura 5. Si se imagina que el robot est´ apoyado sobre su pie derecho. Una reflexi´n o a e o sobre la mec´nica del movimiento puede dar ideas de c´mo reaccionar ante una perturbaci´n. Este comportamiento requiere una planificaci´n ya que pretende corregir a o perturbaciones muy grandes. En el ciclo l´ ımite nominal para cada fase hay una energ´ cin´tica determinada. ya que acabar´ cayendo hacia afuera. y se est´ cayendo muy r´pido hacia su derecha no se a a a arregla nada abriendo m´s el paso.

6) Este planteamiento presenta varios problemas. los datos provienen de sensores. 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. se aplicar´ una zona muerta para evitar peque˜as oscilaciones a a n ∗ indesables. Adem´s. sino que se sumar´ a ´ste.0 ω4 ω5 ω6 173. o para la configuraci´n θ = 0 no se puede resolver. ωx . La bondad de los resultados se puede ver en el v´ ıdeo [5. 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.5. Adem´s. ser´ funci´n del estado i. a dado el enfoque claramente experimental de este trabajo y las limitaciones que presentan los sensores. Sin embargo. 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.i a ı. Se o aplica a ambas articulaciones para imponer que el pie sea en la medida de lo posible paralelo al suelo. ωx ser´ directamente la medida del gir´scopo.8 42. Adem´s. o Haciendo las mismas pruebas de provocar perturbaciones se comprueba el mejor comportamiento.7 -28.4: Valores de la velocidad angular seg´n el estado u Experimentalmente se determina un valor de k = 0. y la media de todos ellos. ya que la realimentaci´n de velocidad provoca una correcci´n predictiva. que se han corroborado con diversas pruebas. sino lo suficiente como para que se regrese al ciclo l´ o ımite. El espacio de o o . filtrado por una media m´vil de a o o ancho 3 para eliminar un poco los ruidos. Para obtener la velocidad del ciclo l´ ımite nominal. con su consecuente ruido.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. desde el punto de vista de la o a implementaci´n pr´ctica. se tomar´ un valor aproximado correspondiente al valor medio para cada estado. Ya que es una aproximaci´n diferencial. 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).2. As´ ωx. 02 y una zona muerta de 3o como valores que confieren estabilidad sin provocar autoosilaciones por ruido de los sensores. La ıa a e constante k se determinar´ ajust´ndola de forma experimental para que el sistema tenga un a a buen comportamiento. 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. se opta por otra soluci´n. Para determinar sus valores se har´ la media entre el valor inicial y a o a final para cada estado durante varios ciclos. Los valores obtenidos de la medida directa de los sensores son (en la Figura 5. el objetivo no era absorber la depende del cuadrado de ω perturbaci´n totalmente.5 -249. ∆qAnkleRoll ´ ıdem para la articulaci´n lateral en el tobillo libre.5 188.3 Tabla 5. 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.15 se muestra una gr´fica con los a datos origen para realizar estos c´lculos): a ω1 ω2 ω3 -200.4 Estabilizaci´n movimiento lateral].

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

2. 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. la rodilla doblada 20o . y por tanto se pueda avanzar el derecho. la m´quina de estados concebida o a inicialmente no est´ en fase con la oscilaci´n f´ a o ısica. ıa Por tanto.5. y el tobillo recto para que permanezca paralelo al suelo.5b. e De forma an´loga. y por tanto se avance el derecho. Figura 5.16: Espacio de estados ante perturbaciones con correcci´n velocidad o 5. es de esperar que en el estado 1 y 2 el robot est´ apoyado sobre el pie izquierdo. Dise˜o del algoritmo de locomoci´n para el robot Nao n o 69 estados obtenido se representa en la Figura 5. en los estados 4 y 5 el robot es de esperar que est´ apoyado sobre el pie a e derecho. Sin embargo. 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.5. Tal como se vio en la Figura 5. el siguiente apartado tratar´ c´mo o a o superponer el movimiento de avance. tal como se discuti´ en el apartado anterior. La pierna soporte se impondr´ un comportamiento a .16. donde se aprecia claramente que las ´rbitas o de atracci´n son mayores. 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). Una vez conseguido este punto. Esto se produc´ en los estados 2 y 4.

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

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

.

1 13. 7 ± 0.6A durante la locomoci´n.3 cm/s. del PC incrustado y otros elementos electr´nicos es de 0. Se tiene una velocidad de translaci´n de 10. A nivel estil´ ıstico. El consumo medio es de 1. 2 ∆Velocidad [ %] 100 % 160 % Eficiencia1 cm t 5. y se compar´ con o a o o la versi´n low-stiffness.1W.65A2 . 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. p´gina 22.95A. y el utilizado unicamente para los o ´ motores es de 0. por tanto no se puede o o comparar. o 2 1 73 . o a los movimientos laterales se notan muy artificiales comparados con los humanos. La intensidad consumida se puede ver en la Figura 6. Los resultados encontrados con nuestro robot son parecidos a los de [9]. ALWalk y Sammy’s Walk. lo que supone una potencia consumida para la locomoci´n de 14. 1. 9 ± 0. o y un cmt = 3. la potencia involucrada y el coste de o transporte cmt .1: Configuraci´n de Stiffness para cada articulaci´n o o Se pueden ver las mejoras sustanciales. Los resultados se pueden resumir en la siguiente tabla: o Algoritmo Algoritmo ZMP b´sico a Algoritmo con baja Stiffness Velocidad [cm/s] 8.2. Los par´metros m´s a a interesantes de analizar son la velocidad de translaci´n. El motivo m´s probablees que los robots difieren unos de otros y no con todos se a puede conseguir.1.8 2. a El consumo del robot con todos los motores apagados.1.2. ZMP produce una locomoci´n m´s limpia y constante. Sin embargo. Concepto definido en Apartado 2. es decir. En el algoritmo Sammy’s Walk se analizar´n tambi´n otros aspectos. a e 6. En [9] se consigui´ que alguna vez funcionar´ la versi´n full-stiffness. Pese a los m´ltiples u intentos de que la versi´n full-stiffness caminara bien.8 Tabla 6. calculada en una o distancia de 1m durante varios intentos.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. no se consigui´.

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

2: Consumo de intensidad para la locomoci´n Sammy’s Walk o . An´lisis de prestaciones a 75 Figura 6.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

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

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

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

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

1: P´gina web de conexi´n a Nao a o .A. 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.

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

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

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

reproduce palabras por los altavoces con e comandos como tts. environ . environ . ALTextToSpeech Sintetizador de texto en ingl´s. 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. home ) aldir = aldir . As´ es ı. o ´ consignas de posici´n en el espacio cartesiano. replace ( " ~ " . equilibrio con un unico pie o con dos. o DCM Siglas de Device Communication Manager.4.wav o . tiene funciones de alto nivel o a para caminar que usan el algoritmo ZMP. " " ) sys .3. . Ejemplo de programaci´n en Pyhton o Suponiendo que se ha creado la conexi´n ethernet o Wi-Fi PC-robot correctamente. . ALLeds Actuaci´n sobre los LEDs. el v´ ınculo entre las funciones de alto nivel y las de bajo nivel (programas en las placas electr´nicas). que o Nao tiene una IP correcta y que el robot y NaoQi est´ en funcionamiento. Incorpora funciones de alto nio vel para conseguir las matrices de cinem´tica directa.A. sensores.playFile("/freemp3/feelgood. Adem´s. 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 . replace ( " ’" . ALUltrasound Se encarga del control de los sensores de ultrasonidos.say("Hello World!") A. append ( aldir ) . 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 . Es tan f´cil como enviar comandos tipo a walkStraight(distancia). exit (1) else : aldir = aldir + " / extern / python / aldebaran " aldir = aldir . ALAudioPlayer Permite reproducir archivos de audio .mp3 con comandos como aup. Mediante este m´dulo se pueden enviar comandos directamente a los o o actuadores. actuadores. path .mp3"). ya sea a una articulaci´n o una cadena. get ( " AL_DIR " ) home = os . ). es el m´dulo que se encarga de las coo municaciones con los dispositivos del robot (placas. Tambi´n se puede controlar a e directamente la posici´n del centro de masa.

IP ." 127.0.1 " .0. 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 .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.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.9999 . 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 . e ) : print ( " Error creando v´ nculo con m´ dulo ALTextToSpeech " ) ı o print ( str ( e ) ) exit (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 .0. e ) : print ( " Error creando v´ nculo con m´ dulo ALMotion " ) ı o print ( str ( e ) ) exit (1) motion = ALProxy ( " ALMotion " ) try : print ( " DCM " ) except ( RuntimeError .

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

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

A. un m´dulo. con la posici´n actual. y al sincronizarla con DCM se ejecutar´ cada 20ms. se puede crear una funci´n que incorpore el o o c´digo de control.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. 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). Los 4 Este archivo est´ dentro de Nao. 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. o e y ser´ el propio DCM que se encargar´ de hacer la interpolaci´n necesaria.3. En cada instante a a o que se ejecuta el c´digo del DCM se analizan las consignas futuras y. o o se hace la planificaci´n necesaria para cada articulaci´n. o ıa a a El m´dulo DCM.8/opt/naoqi/extern/urbi/URBI. El siguiente a apartado explica c´mo se compila. 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. los sensores y actuadores se declaran autom´tie a a camente. 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. 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. Se accede mediante un acceso SSH. Es decir. La duraci´n del c´digo o a o o debe ser tal que no colapse el sistema.7. es decir. hay que compilar el archivo en el mismo entorno. 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.6.ini. por tanto es recomendable hacer los menores accesos a memoria i escritura en ficheros. Compilaci´n cruzada para librer´ din´micas o ıas a Para poder compilar una librer´ din´mica es necesario hacerlo en entorno Linux. C++ es el id´neo) e ıa o como una librer´ din´mica. tampoco se da informaci´n precisa al respecto. a este nivel s´lo se puede leer o y enviar informaci´n con una frecuencia de 50hz. Ya que ıa a el sistema operativo de Nao es un Linux.5 Ejemplo de programaci´n o en URBI]: A. Es decir. a . Para saber el nombre se puede mirar el archivo4 : sftp://root@10. Puesta en marcha y programaci´n de Nao o 91 El int´rprete de URBI ya est´ configurado. Las consignas de posici´n se pueden enviar a trav´s del DCM para instantes futuros arbitrarios. 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. En caso que simplemente se quiera ejecutar un bloque de c´digo de forma o peri´dica existe una metodolog´ m´s f´cil.0.0. o A.3. Por tanto. que desde el punto de vista del programador.3. ser´ el propio DCM que llame a una o a funci´n determinada que se desee.

Tamo o bi´n se podr´ compilar como un ejecutable que se conecte a un broker ya creado. Se o supone que este script se ejecuta en la ruta ∼/naoqi/modules/src/[Ra´z del proyecto]. por tanto opci´ n . con la estructura y los archivos de configuraci´n necesarios para ser compilado por cmake.. a a El SDK de NaoQi ya trae ejemplos de programas en C++. 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 continuaci´n solo hace falta reiniciar NaoQi ıa ıa o y se cargar´ la librer´ programada. El archivo generado o o a (una librer´ . echo " Compilando con make .. Finalmente hace falta llamar a las funciones deseadas a ıa del m´dulo de la forma deseada. then cat temp make > temp . A continuaa a a ci´n se muestra un script de consola que permite compilar el ejemplo incluido en el SDK.92 Locomoci´n b´ o ıpeda del robot humanoide Nao archivos necesarios deben estar en la ruta ∼/naoqi/modules/src/[Nombre del programa].a) se copia al robot v´ ethernet. 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 . as´ como los archivos de confiı guraci´n y las dependencias para hacer una compilaci´n r´pida y limpia. " echo " " echo " Presione < enter > para continuar " echo " " echo " " read DUMMY ccmake . pero para e ıa realizar esta tarea quiz´ sea m´s f´cil escribir directamente un script en Python. ı y el c´digo fuente est´ en ∼/naoqi/modules/src/[Ra´z del proyecto]/[Programa]/src. " echo " " if [ " $ ( cat temp | grep ’ Built target ’) " == " " ]. o En la documentaci´n explica paso por paso como realizar este tipo de compilaci´n. Lo o m´s pr´ctico resulta copiar la estructura del directorio ∼/naoqi/modules/src/examples. por ejemplo con Python. a ı o REMOTE = OFF " echo " As´ se podr´ ejecutar c´ digo de tiempo real " ı a o echo " Presione <c > y <g > para configurarlo ..

ini ’.A.8:/ opt / naoqi / modules / lib 45 46 echo " Se supone que la librer´ a est´ a~ adida a ’ autoload ı a n echo " " echo " \ gedit .0. Si no lo est´ .8/ opt / naoqi / modules / lib / autoload . exit " echo " \ Presione < enter > para ejecutar el programa en Nao echo " " read DUMMY .0.0.0. Abortando " o echo " " else rm temp rm temp echo " Compilaci´ n exitosa " o echo " " cd . edite el fichero con " a sftp :// root@10 . 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 .8 .0. ini " echo " " echo " " 47 48 49 50 51 52 53 54 55 56 57 echo " Reiniciando naoqi " echo " " echo " " ssh root@10 . so root@10 .8 " / opt / naoqi / bin / restart .0../ 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 . 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 .0. sh .0. echo " IP usada 10.

.

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

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

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

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

y requieren ser calibrados individualmente. 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.1.1.5. Carga de configuraciones Para cargar y guardar las configuraciones se usan las funciones loadConfig(const char * estilo) y saveConfig(const char * estilo).B. Para saber si un pie ha impactado en el suelo se comprueban todos los sensores.6.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. El valor que proporciona Naoqi de la lectura de los sensores tiene una caracter´ ıstica inversa respecto a la fuerza ejercida. B. Haciendo una calibraci´n individual de o cada sensor se consigue un buen comportamiento.2) B. Programaci´n del algoritmo y la interfaz gr´fica o a 99 Figura B. o o (B. y si alguno est´ por debajo de un umbral establecido (presionado) quiere decir que el pie ha colisionado a con el suelo. 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. Estos sensores tienen una amplia variabilidad. a las que se pasa como par´metro una caa .

Para crear la interfaz gr´fica desde Python se ha usado la librer´ a a ıa GTK+. n incluir objetos (widgets). o Ejecuci´n de la GUI. 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. o a kvel : ganancia de la compensaci´n del desv´ de velocidad angular. que servir´ para acceder de a a forma f´cil a las funciones principales de Nao. En programaci´n. 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. Se ha programado en Python. 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.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). y declarar eventos. NaoQi. por su flexibilidad y porque permite acceder a las funciones de NaoQi de forma f´cil. MacOS y otros. GTK+ (o The GIMP Toolkit) es un conjunto de bibliotecas multiplataforma para desarrollar interfaces gr´ficas de usuario. a t1: duraci´n de los estados 1 y 4 de la m´quina de estados. o ıas o Conexi´n con el broker principal de Nao. el Wiimote. Esto e tiene la ventaja a˜adida que la migraci´n a otros sistemas operativos es f´cil.2. o o 2 . La estructura de la interfaz es la siguiente: B. Es necesario declarar objetos que representen a los widgets 2 de la GUI. la NaoGUI programada en Python. o a t2: duraci´n de los estados 2 y 5 de la m´quina de estados. o Definici´n de la clase que representa la GUI. que permite crear ventanas. Programaci´n o El programa de Python desarrollado tiene la siguiente estructura: Inclusi´n de librer´ y declaraci´n de constantes. ya que tanto las n o a funciones de NaoQi. 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. La programaci´n se hace dentro de la clase de o Python. NaoGUI. es decir. GUI Se ha programado una interfaz gr´fica de usuario. principalmente para los entornos gr´ficos GNOME. a a XFCE y ROX aunque tambi´n se puede usar en el escritorio de Windows. a aP itch: par´metro del interpolador para el movimiento frontal. o ıo B.1.2. como por ejemplo una ventana o un bot´n. como GTK+ son multiplataforma. o Para el dise˜o de la GUI se ha usado el programa Glade.

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

se cierra. y al moverlo hacia abajo se sienta.2.102 Locomoci´n b´ o ıpeda del robot humanoide Nao Figura B. 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. a ıa o Las funcionalidades que se obtienen con el mando son (ver demostraci´n en el v´ o ıdeo [B. Cada segundo se actualiza el cabeceo o y balanceo del robot seg´n el balanceo y cabeceo del mando. o o . realiza los c´lculos necesarios y env´ las ´rdenes a Nao.4: Ventana principal Figura B. o Reproducci´n de un texto con el bot´n B del Nunchuck. El cabeceo del mando (pitch) se corresponde al cabeceo del hombro. a o Apretando el bot´n home del mando o en la interfaz directamente. al mover el mando hacia o e arriba el robot se levanta. Si se aprieta el bot´n + abre la mano. Si se aprieta el bot´n B del Wiimote. o o Si se aprieta el bot´n 1 del Wiimote.. Si se aprieta el bot´n A del Wiimote. 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. y con el bot´n o o .5: Ventana principal de NaoGUI sudo hcitool scan Scanning. manteni´ndolo apretado. tanto lateral como frontal. se controla el movimiento o e del brazo derecho.. u Est´ preparado para programar funciones de locomoci´n con las flechas. termina la conexi´n. se puede controlar la o e inclinaci´n del torso. manteni´ndolo apretado.3 Nao controlado con mando de la Wii]): Control de la cabeza de Nao mediante el joystick del Nunchuck. manteni´ndolo apretado. y lo mismo con el balanceo (roll ).

para una configuraci´n de reposo se ha creado la postura “sentado.xml”.B. Wiimote B.261270957452 </ HeadYaw > < HeadPitch > 9. haciendo que ambas se o corresponden. que contiene o la siguiente informaci´n: o 1 2 3 4 5 6 7 8 9 10 11 12 < postura > < HeadYaw > 0. a Las configuraciones se guardan en archivos . 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.31411894283 </ HeadPitch > < RShoulderPitch > 68. e e Para enviar los comandos al robot hay que seleccionar un tiempo de interpolaci´n.4. enceno der los motores con el bot´n de la barra de herramientas.9968451205 </ RShoulderRoll > < RElbowRoll > 61. Editor de posturas La ventana del editor de posturas (Figura B. y hacer clic en el bot´n “¡Enviar!” o o para que los cambios se reflejen en el robot. Por o ejemplo.4387195466 </ RElbowRoll > < RElbowYaw > 16.4387195466 </ LElbowRoll > < LElbowYaw > -16. crear nuevas o borrarlas.0306034165 </ LShoulderPitch > < LShoulderRoll > 23. se incluyen funciones para abrir y guardar posturas. ´ Dispone de una barra de desplazamiento para cada articulaci´n para poder moverlas indepeno dientemente.5212406399 </ LElbowYaw > .5212406399 </ RElbowYaw > < RWristYaw > -5. Adem´s.7) es muy util para hacer mover el robot.xml.0306034165 </ RShoulderPitch > < RShoulderRoll > -23.10012445136 </ RWristYaw > < LShoulderPitch > 68.2.6: Mando de la Wii. Tambi´n permite abrir y cerrar las manos. 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.9968451205 </ LShoulderRoll > < LElbowRoll > -61. Asimismo incluye el bot´n “Posici´n Actual” o o para leer la posici´n actual del robot y actualizarla en la interfaz. con los valores pada cada articulaci´n.

7504393855 </ RAnklePitch > < RAnkleRoll > 0.876513053546 </ RHipRoll > < RKneePitch > 125.10012445136 </ LWristYaw > < RAnklePitch > -70. los par´metros avanzados y enviar las ´rdenes correspondientes a locomoci´n a o o frontal.1).7841660248 </ LHipPitch > < LHipRoll > 0. en curva y girando (para m´s detalles de los par´metros ver apartado 5.2. Todos los valores por defecto de esta ventana est´n configurados o a .876513053546 </ LHipRoll > < LKneePitch > 125.7: Ventana del editor de posturas B.9391895357 </ HipYawPitch > </ postura > Figura B.599679289 </ LKneePitch > < HipYawPitch > -14.7504393855 </ LAnklePitch > < LAnkleRoll > -0.599679289 </ RKneePitch > < LAnklePitch > -70.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. para poder generar a una locomoci´n estable. Interfaz ALWalk La ventana ALWalk (ver Figura B. Permite configurar los par´metros b´sicos del a a algoritmo ZMP.8) contiene las funciones necesarias para hacer caminar el robot con el algoritmo ZMP propio de Nao.1.00240422658784 </ LAnkleRoll > < LHipPitch > -40. lateral. a a Adem´s permite configurar la stiffness de cada grupo de articulaciones.00240422658784 </ RAnkleRoll > < RHipPitch > -40.5.7841660248 </ RHipPitch > < RHipRoll > -0.

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

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

) o Otros Tiempo tutorizaci´n o Coste unitario 1. programaci´n.800e 3. .000 e/ud 1 ud 11.500e 23.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.600e Tabla C.000 e – 540h 120h 60h 240h 120h 100h – 15e/h 15e/h 15e/h 15e/h 15e/h 35e/h TOTAL – 8.1.100e 1. software. Particularizando al proyecto presente. a tiempo involucrado y otros.1 explica los costes de los diferentes elementos (algunos de ellos son estimaciones). An´lisis de costes a En el proceso de desarrollo se tendr´n en cuenta diversos factores: hardware. y las repercusiones de los resultados obtenidos. La Tabla C.600e 1.800e 900e 3.000 e 11. Elemento Ordenador Procesador AMD 2Ghz Memoria RAM 2GB Disco duro 160GB Monitor.000 e/ud Unidades 1 ud Coste 1. . 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: Presupuesto 107 . C. se har´ un an´lisis de los costes a a que ha implicado el desarrollo de este proyecto.

Como resultados importantes. e a ınea de investigaci´n o que en el futuro puede reportar mayores beneficios. Adem´s plantea una l´ ıa. Beneficios Los beneficios econ´micos de este proyecto son dif´ o ıcilmente medibles. Esto implica una mayor duraci´n a o de la bater´ y el consecuente ahorro energ´tico.2.108 Locomoci´n b´ o ıpeda del robot humanoide Nao C. . 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.

Una de las sustancias problem´ticas son los retardantes de llama con que la ley obliga a a cubrir los circuitos impresos. e o m´s abundantes en un ordenador son pl´sticos. un consumo muy elevado de o o agua y energ´ y el gran volumen de residuos (tambi´n t´xicos) que generan. sobretodo plomo. el vertido o la incineraci´n de los ordenadores se liberen dioxinas y otros o o contaminantes en el medio. Se tratar´ conu a juntamente el impacto ambiental de Nao y el PC necesario para su uso. o a a El consumo el´ctrico en la fase de uso. algunas de ellas muy contaminantes y conocidos cancer´ ıgenos. y otros componentes varios. aluminio y cobre. ı a o a a m´ltiples placas y procesadores internos. 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. Estas substancias causan sobretodo desorden en el sistema hormonal (gl´ndula tiroidea). El plomo se e utiliza para soldar los chips a las placas. los cables y las carcasas para hacerlos poco inflamables. 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. A continuaci´n se muestra un extracto de este documento. Se acumulan en los tejidos grasos (y por lo tanto. e El impacto ambiental de almacenar ordenadores en vertederos. tambi´n en la leche e materna) y se mueven hacia arriba en la cadena alimentaria. Los usados m´s habitualmente son halogenados: contienen bromo o fl´or. acero. cadmio y mercurio. D. 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 .1.Ap´ndice D e Impacto medioambiental En s´ mismo Nao est´ hecho de material electr´nico e inform´tico: pl´stico en la carcasa. Tambi´n se utilizan metales pesados. Los materiales ıa. pero posiblemente tambi´n c´ncer y desordenes en a e a el desarrollo neuronal. La exposici´n hecha a o o para el material de los ordenadores es perfectamente v´lida para los materiales de Nao. 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. motores. 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. silicio. lo que causa que durante a u la fabricaci´n.

Forman parte de los productos cuya emisi´n o o se acord´ reducir en el Protocolo de Kyoto para frenar el cambio clim´tico. Vietnam. e D. 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 e a las plantas de montaje suelen trabajar mujeres j´venes cobrando salarios bajos. pero los a casos todav´ est´n pendientes por falta de evidencias concluyentes. Se estima o ´ durante el desarrollo de este proyecto que se han empleado 450h usando el PC+Nao. a Las empresas son reticentes a colaborar en estudios de las substancias t´xicas sobre la o salud.2. ıa o . Durante el uso de e los ordenadores no estamos expuestos a dichos elementos. y por tanto la electricidad necesaria generar´ ≈ 100gCO2 /h. recientemente Europa del Este. Brasil y Sud´frica. como no los podemos metabolizar. Durante la d´cada de los 90. A diferencia de lo que pasa en el o sector de los juguetes o del textil. se acumulan e en los tejidos y son una causa de c´ncer. Por otro lado. En las plantas de montaje ıa a de placas. se tomar´ para los c´lculos 50W. se puede o o estimar que el uso del PC + Nao hacen un total de 350W. El cadmio y el mercurio tambi´n se utilizan en dichas pantallas. Uso diario El consumo el´ctrico de un ordenador sencillo se puede estimar en funcionamiento nore mal en 300W. lo que supondr´ una emisi´n de 45kg de CO2 . los suelen a hacer empresas subcontratadas en Malasia. 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. que provocan que se a o a a acumule ozono en las capas bajas de la atm´sfera. el peligro m´s grande es el plomo que se utiliza para soldar. pero o no evitan la exposici´n de los trabajadores a los t´xicos). como el montaje de placas y ordenadores. 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. Durante la fabricaci´n de los chips se emiten al a o aire perfluorocarbonos (PFCs). Los procesos m´s sencillos. con jornadas o muy largas. El ozono al nivel del suelo causa problemas o respiratorios y dificulta el crecimiento normal de los vegetales. Tailandia. Pasan a los seres o vivos a trav´s de la cadena alimentaria y. o a Otras sustancias t´xicas que utilizan los ordenadores son ars´nico. 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 .110 Locomoci´n b´ o ıpeda del robot humanoide Nao pantallas. pero se convierten en un peligro cuando se liberan al medio durante la fabricaci´n y al lanzar el ordenador. China. Por tanto. y en menor cantidad Centroam´rica. El consumo de Nao en funcionamiento oscila entre 30W (quieto) y 70W (en actividad). que son gases que permanecen durante mucho tiempo en la atm´sfera y contribuyen al efecto invernadero. tolueno y o e cromo hexavalente. durante la aplicaci´n se liberan compuestos org´nicos vol´tiles. El resultado fue negado por la empresa donde trabajaban y a silenciado por el gobierno. Filipinas. a El fabricante de Nao no proporciona informaci´n sobre la vida util del robot. Indonesia. y sin sindicatos. 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. presi´n por producir deprisa. benceno. el principal inter´s del cual es atraer inversores extranjeros. Las carcasas se suelen proteger con pinturas que contienen disolventes org´nicos. los cables suelen ser de PVC.

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

ensuciando aguas y suelos. n o En Espa˜a dicha directiva se traduce en el real decreto 208/2005 (que entra en vin gor el 13/8/2005). a est´ haciendo caso omiso del Convenio de Basilea de las Naciones Unidas. 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. y que desde 1989 proh´ la exportaci´n de residuos ıbe o peligrosos de las naciones ricas a las pobres bajo cualquier pretexto.es/boe/dias/2005-02-26/ pdfs/A07112-07121. ya aprobaron normas que prev´n la obligaci´n de ıa e o reciclar los ordenadores. hace responsables a las empresas de electr´nica de deshacerse o o de sus productos una vez los usuarios ya no los quieran. India y Pakistan) se est´n ı a a convirtiendo en las colonias-vertedero de residuos t´xicos del resto del planeta. la mayor´ europeos. Estados Unidos es el unico pa´ industrializado que no ha ratificado dicho ´ ıs convenio. incluyendo el reciclaje. cultivos. se tratan para ser recuperados y. los materiales o se clasifican por tipos. Hasta la fecha. Nos encontramos con que las regiones m´s ricas del planeta. As´ las regiones m´s pobres de Asia (principalmente en China. la directiva Wastes from Electrical and Electronic Equipment de la Uni´n Europea. ıa u por un m´ ısero salario de 1.es/boe/dias/ n o 2005-03-30/pdfs/A10800-10800. 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. que se puede consultar en http://www.pdf). El 2002 se trasladaron a Asia entre 6 y 10 millones de ordenadores obsoletos. que se puede a consultar en http://www.int/.boe. o . el llamado primer mundo. 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. se venden a las industrias que los pueden aprovechar. Se estima que para ello el coste medio a a˜adir al precio de producci´n de un equipo ronda los 90 euros. En la fase de trituraci´n.pdf (con una peque˜a correcci´n en http://www.5 d´lares diarios. animales y agua potable.112 Locomoci´n b´ o ıpeda del robot humanoide Nao entregan a gestores autorizados para su tratamiento. En este aspecto.boe. Trece pa´ ıses.basel. finalmente. se revalorizan. donde los materiales ıan ıses ıas contaminantes acaban en campos y costas.

Sign up to vote on this title
UsefulNot useful