Está en la página 1de 114

Locomocin b o peda del robot humanoide Nao

Proyecto Final de Carrera Memoria

Autor Samuel Fernndez Iglesias a Director Josep M. Fuertes i Armengol Noviembre 2009

Escola T`cnica Superior e dEnginyeria Industrial de Barcelona

Universitat Polit`cnica e de Catalunya

Resumen
La locomocin b o peda de robots humanoides, es decir, aquellos que tienen morfolog humana y las articulaciones necesaa rias para realizar movimientos parecidos a los humanos, es un desaf para el desarrollo tecnolgico. Esta faceta de la ingeo o nier agrupa muchas ramas reunidas para un mismo objetivo: a mecnica, automtica, electrnica, informtica, biolog . . a a o a a. Este proyecto de investigacin se propone como objetivo o principal desarrollar un algoritmo de control para conseguir que el robot humanoide Nao camine, mejorando su algoritmo propio. Adems, se crear una interfaz grca de usuario para el a a a control de Nao y las funciones que se desarrollen. Como fuente de inspiracin y para ver el estado del arte se o har un anlisis de otros algoritmos de locomocin existentes a a o en robots, tales como: Generacin de trayectorias imponiendo estabilidad. o Aprovechamiento de dinmicas internas. a Mquinas de estados. a La propia locomocin humana. o El algoritmo propio que se desarrollar, Sammys Walk, aprovechar las oscilaciones proa a pias del sistema para generar la locomocin y as tener una dinmica de locomocin ms o a o a eciente. Esto conllevar hacer estudios de frecuencias de oscilacin del robot y atractores en a o el espacio de fases. Este planteamiento, distante de la mayor de algoritmos de locomocin basados en gea o neracin de trayectorias, es novedoso en su aplicacin para robots con muchos grados de o o libertad activos, y puede sentar una base para investigaciones futuras. El resultado de aprovechar estas dinmicas se traducir en un ahorro energtico, y un a a e estilo de marcha parecido al humano.
Figura 1: Robot Nao

Indice general
Resumen Indice general Indice de guras Indice de tablas Indice de v deos 1. Introduccin o 2. Robots b pedos y algoritmos de control 2.1. Zero-Moment Point (ZMP) . . . . . . . . . . . 2.1.1. Formulacin matemtica . . . . . . . . . o a 2.1.2. Algoritmo . . . . . . . . . . . . . . . . . 2.1.3. ASIMO . . . . . . . . . . . . . . . . . . 2.1.4. Ventajas e inconvenientes . . . . . . . . 2.2. Passive & Dynamic Walking . . . . . . . . . . 2.2.1. Passive Walking . . . . . . . . . . . . . 2.2.2. Dynamic Walking . . . . . . . . . . . . 2.3. BigDog . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Descripcin y morfolog . . . . . . . . . o a 2.3.2. Control . . . . . . . . . . . . . . . . . . 2.4. SIMBICON: Simple Biped Locomotion Control 2.4.1. Algoritmo . . . . . . . . . . . . . . . . . 2.4.2. Resultados . . . . . . . . . . . . . . . . 2.5. Conclusiones . . . . . . . . . . . . . . . . . . . 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

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

3. Anlisis de la locomocin b a o peda humana 3.1. Descripcin cualitativa . . . . . . . . . . . . . . . . o 3.1.1. Fases de la marcha . . . . . . . . . . . . . . 3.1.2. Desarrollo del pie durante la marcha . . . . 3.1.3. Caracter sticas del paso . . . . . . . . . . . 3.1.4. Brazos y movimiento de torsin transversal o 3.2. Cinemtica . . . . . . . . . . . . . . . . . . . . . . a 3.2.1. Sistema de referencia . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

Locomocin b o peda del robot humanoide Nao

3.2.2. Movimientos articulares . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Nao 4.1. Caracter sticas generales . . . 4.2. NaoQi: programacin de Nao o 4.3. Simulador: Webots . . . . . . 4.4. Conclusiones . . . . . . . . .

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

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

5. Dise o del algoritmo de locomocin para el robot Nao n o 5.1. ALWalk : Algoritmo de locomocin implementado en Nao . . o 5.1.1. Descripcin de las funciones de locomocin b o o peda . . 5.1.2. Pruebas de funcionamiento . . . . . . . . . . . . . . . 5.1.3. Modicacin del algoritmo ZMP . . . . . . . . . . . . o 5.2. Sammys Walk : Diseo de un algoritmo de locomocin b n o peda 5.2.1. Induccin de un ciclo l o mite . . . . . . . . . . . . . . . 5.2.2. Simulacin con Webots . . . . . . . . . . . . . . . . . o 5.2.3. Oscilacin lateral . . . . . . . . . . . . . . . . . . . . . o 5.2.4. Incremento de la estabilidad del ciclo l mite . . . . . . 5.2.5. Sincronismo con movimiento de avance . . . . . . . . . 5.2.6. Mejoras estil sticas y de estabilidad . . . . . . . . . . . 5.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

6. Anlisis de prestaciones a 6.1. Caracter sticas de la locomocin con ALWalk . . . . . . . . . . . . . . . . . . o 6.2. Caracter sticas de la locomocin con Sammys Walk . . . . . . . . . . . . . . o 7. Conclusiones Biblograf a A. Puesta en marcha y programacin de Nao o A.1. Instalacin del robot . . . . . . . . . . . . . . . . . . o A.1.1. Conexin Ethernet . . . . . . . . . . . . . . . o A.2. Instalacin SDK . . . . . . . . . . . . . . . . . . . . o A.3. Programacin . . . . . . . . . . . . . . . . . . . . . . o A.3.1. NaoQi . . . . . . . . . . . . . . . . . . . . . . A.3.2. Caracter sticas y uso de NaoQi . . . . . . . . A.3.3. Mdulos de NaoQi . . . . . . . . . . . . . . . o A.3.4. Ejemplo de programacin en Pyhton . . . . . o A.3.5. URBI . . . . . . . . . . . . . . . . . . . . . . A.3.6. Ejecucin de cdigo en tiempo real . . . . . . o o A.3.7. Compilacin cruzada para librer dinmicas o as a

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

B. Programacin del algoritmo y la interfaz grca o a B.1. Programacin de Sammys Walk . . . . . . . . . . . . . . . . . . . . . . . . . o B.1.1. Principales variables usadas . . . . . . . . . . . . . . . . . . . . . . . . B.1.2. Inicializacin y sincronizacin con DCM . . . . . . . . . . . . . . . . . o o

Indice general

B.1.3. Bucle de control . . . . . . B.1.4. Generador de trayectorias . B.1.5. Deteccin de impacto con el o B.1.6. Carga de conguraciones . B.2. GUI . . . . . . . . . . . . . . . . . B.2.1. Programacin . . . . . . . . o B.2.2. Ventana principal . . . . . . B.2.3. Control con Wiimote . . . . B.2.4. Editor de posturas . . . . . B.2.5. Interfaz ALWalk . . . . . . B.2.6. Interfaz Sammys Walk . .

. . . . . . . . suelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

98 98 99 99 100 100 101 101 103 104 105

C. Presupuesto 107 C.1. Anlisis de costes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 a C.2. Benecios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 D. Impacto medioambiental 109 D.1. Proceso de fabricacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 o D.2. Uso diario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 D.3. Fin de la vida util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

Indice de guras
1. Robot Nao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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.1. Pol gono de soporte segn fase de locomocin . . . . . . . . . . . . . . . . . . u o 2.2. Fuerzas y momentos sobre el pie . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Robot ASIMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Copia del mecanismo inventado por McGeer . . . . . . . . . . . . . . . . . . . 2.5. Tres caminadores actuados basados en el mecanismo de locomocin pasivo . . o 2.6. BigDog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7. Descripcin BigDog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.8. Principios del control de la locomocin . . . . . . . . . . . . . . . . . . . . . . o 2.9. Diagrama del lazo de control . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10. Simulaciones de un personaje en 2D con el algoritmo SIMBICON . . . . . . . 2.11. Simulacin en tiempo real de un personaje que camina con el algoritmo SIMo BICON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.12. Mquina de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2.13. Elementos de la estrategia de realimentacin para el equilibrio . . . . . . . . . o 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. 3.9. 4.1. 4.2. 4.3. 4.4. 5.1. 5.2. 5.3. 5.4. 5.5. 5.6. Anlisis del caminar humano . . . . . . . . . . . a Fases de la marcha . . . . . . . . . . . . . . . . . Desarrollo del pie durante a marcha . . . . . . . Caracter sticas del paso . . . . . . . . . . . . . . Movimiento de brazos y hombros al caminar . . . Sistema de referencia . . . . . . . . . . . . . . . . Instantneas de las fases de la marcha [13] . . . . a Instantnea en t = 5s . . . . . . . . . . . . . . . a Angulos articulares de la pierna derecha y fase de Nao Academics Edition . Articulaciones del robot . Webots 6.1.1 . . . . . . . Microsoft Robotics Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . paso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Patrones de locomocin . . . . . . . . . . . . . . . . o Cicloide usada para trayectorias de los pies . . . . . Conguracin de parmetros de Oset del ZMP . . . o a Pantalla de la GUI para la conguracin de ALWalk o Mquina de estados . . . . . . . . . . . . . . . . . . a Respuesta del ltro pasabajos al escaln unitario . . o

Locomocin b o peda del robot humanoide Nao

5.7. Auto-oscilacin con el robot de pie, apertura de las piernas 0o , altura o 26cm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8. Frecuencia de oscilacin segn conguracin . . . . . . . . . . . . . . o u o 5.9. Movimiento lateral . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.10. Ciclo l mite lateral . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.11. Oscilaciones laterales inducidas Angulo X respecto la vertical . . . 5.12. Oscilaciones laterales inducidas Velocidad angular X . . . . . . . . 5.13. Intensidad consumida en la oscilacin lateral inducida . . . . . . . . o 5.14. Diagrama de correccin del ancho de paso . . . . . . . . . . . . . . . o 5.15. Oscilacin lateral nominal . . . . . . . . . . . . . . . . . . . . . . . . o 5.16. Espacio de estados ante perturbaciones con correccin velocidad . . o 5.17. Conguracin de las piernas para el avance . . . . . . . . . . . . . . o 6.1. 6.2. 6.3.

caderas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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 locomocin ZMP low-stiness . . . . . . . . . o Consumo de intensidad para la locomocin Sammys Walk . . . . . . . . . . . o Angulos articulares de la pierna derecha y fase de paso . . . . . . . . . . . . .

A.1. Pgina web de conexin a Nao . . . . . . . . . . . . . . . . . . . . . . . . . . a o A.2. Conguracin de servidor en Nao . . . . . . . . . . . . . . . . . . . . . . . . . o A.3. Contenido de NaoQiAcademics-1.2.0-Linux.tar.gz . . . . . . . . . . . . . . . . B.1. B.2. B.3. B.4. B.5. B.6. B.7. B.8. B.9. Estructura del programa local . . Anlisis de ejecucin del bucle de a o Estructura de la GUI . . . . . . . Ventana principal . . . . . . . . . Ventana principal de NaoGUI . . Mando de la Wii, Wiimote . . . . Ventana del editor de posturas . Ventana ALWalk . . . . . . . . . Ventana Sammys Walk . . . . . . . . . . control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Indice de tablas
2.1. Coste energtico espec e co de la locomocin . . . . . . . . . . . . . . . . . . . o 4.1. Lista de articulacines de Nao . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1. 5.2. 5.3. 5.4. Conguracin de Stiness para cada articulacin o o Conguracin de parmetros extra . . . . . . . . o a Frecuencia de oscilacin segn conguracin . . . o u o Valores de la velocidad angular segn el estado . u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 40 50 50 58 67 73 74 74 77

6.1. Conguracin de Stiness para cada articulacin . . . . . . . . . . . . . . . . o o 6.2. Comparacin algoritmos ALWalk y Sammys Walk . . . . . . . . . . . . . . . o 6.3. Coste energtico espec e co de la locomocin Comparativa . . . . . . . . . . o 7.1. Comparacin algoritmos ALWalk y Sammys Walk . . . . . . . . . . . . . . . o

C.1. Presupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Indice de v deos
El siguiente listado muestra todos v deos que se citan a lo largo de la memoria. Estos estn incluidos en el CD adjunto y se han codicado con el cdec libre XVID para mayor a o portabilidad. Adems se indica un enlace para su versin on-line, al que se puede acceder a o directamente desde el documento electrnico de la memoria. En http://www.youtube.com/ o view_play_list?p=BC6A4C9D88DF0431 se encuentra la lista de reproduccin con todos los o v deos recopilados. 2.1.3 ASIMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 http://www.youtube.com/watch?v=Q3C5sc8b3xM 2.2.1 Passive Walker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 http://www.youtube.com/watch?v=cIDkP7atTMM 2.2.2 B pedo Cornell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 http://www.youtube.com/watch?v=e2Q2Lx8O6Cg 2.2.2 B pedo Delft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 http://www.youtube.com/watch?v=2rp2BjqCrFk 2.2.2 B pedo del MIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 http://www.youtube.com/watch?v=ynhqomKwbAE 2.3 BigDog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 http://www.youtube.com/watch?v=cHJJQ0zNNOM&fmt=18 2.4 SIMBICON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 http://www.youtube.com/watch?v=uBQfSBluhFU 3.2.2 Persona caminando a velocidad normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 http://www.youtube.com/watch?v=Lyyxb8uaTNo 4 Presentacin de Nao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 o http://www.youtube.com/watch?v=rSKRgasUEko&fmt=18 5.1.2 ALWalk velocidad baja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 http://www.youtube.com/watch?v=ICcnmpxjRcQ&fmt=18

11

12

Locomocin b o peda del robot humanoide Nao

5.1.2 ALWalk velocidad alta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 http://www.youtube.com/watch?v=WsvSDLvSyso&fmt=18 5.1.3 ALWalk low-stifness, velocidad alta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 http://www.youtube.com/watch?v=MRBFnJs7ZB8&fmt=18 5.2.1 Spring Flamingo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 http://www.youtube.com/watch?v=gWDDUm9R8DI 5.2.2 Simulacin con Webots: Oscilacin lateral estable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 o o http://www.youtube.com/watch?v=AM3bckQ4ujQ 5.2.2 Simulacin con Webots: Marcha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 o http://www.youtube.com/watch?v=0bcNYX5PrJM 5.2.3 Oscilacin lateral propia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 o http://www.youtube.com/watch?v=oNyvn6dL04I&fmt=18 5.2.3 Balanceo lateral estable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 http://www.youtube.com/watch?v=mBUr6-fWJck&fmt=18 5.2.3 Respuesta a perturbaciones externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 http://www.youtube.com/watch?v=yegYi-mUO9w&fmt=18 5.2.4 Estabilizacin movimiento lateral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 o http://www.youtube.com/watch?v=YD1bSfUuXOw&fmt=18 5.2.5 Nao caminando con algoritmo Sammys Walk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67 http://www.youtube.com/watch?v=pAhuOHn_bH4&fmt=18 A.3.4 Ejemplo de programacin en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 o http://www.youtube.com/watch?v=ieNhko_8-Us&fmt=18 A.3.5 Ejemplo de programacin en URBI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 o http://www.youtube.com/watch?v=Zo2fHp9ttHU&fmt=18 B.2.3 Nao controlado con mando de la Wii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 http://www.youtube.com/watch?v=1yQMAdktnFg&fmt=18

Cap tulo 1

Introduccin o
El presente proyecto de investigacin plantea el estudio de locomocin b o o peda de robots humanoides, es decir, 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, y se han logrado resultados muy interesantes. El objetivo central de este proyecto es disear un algoritmo de locomocin b n o peda para que el robot Nao camine, mejorando el propio de Nao. En concreto, se pretende disear n este algoritmo a travs de inducir ciclos l e mites en el movimiento del robot y aprovechar las dinmicas propias del sistema para provocar su avance. A su vez, se plantean los siguientes a subobjetivos, que conforman la estructura de este proyecto: Como fuente de inspiracin y para ver el estado del arte, investigacin de algoritmos o o de locomocin ya existentes y de la locomocin humana. o o Puesta en marcha de Nao, su interfaz con el ordenador, programacin y simulacin en o o realidad virtual. Estudio de ciclos l mites en la oscilacin del robot, y diseo de un algoritmo que los o n aproveche para inducir un movimiento de avance, esto es, hacer que camine. Estabilizacin de las oscilaciones mediante atractores en el espacio de fases. o Anlisis de prestaciones y resultados. a Como objetivo paralelo se desarrollar una interfaz de usuario para poner en uso las funciones a principales de Nao y sus funciones de locomocin. o El enfoque estar orientado al diseo de los algoritmos de control, experimentacin y a n o anlisis de resultados ms que en una formulacin dinmica-mecnica del robot como sistema a a o a a multislido. o La metodolog que se seguir ser principalmente experimental. Como punto de partida a a a se formularn hiptesis a partir de modelos simplicados. Tambin se usarn ideas de la a o e a amplia bibliograf investigada, aunque sta muchas veces no se podr implementar en Nao a e a o no obtendr los resultados esperados. a Por tanto, para alcanzar el objetivo deseado, ste es, lograr que Nao camine, ser necesario e a un desarrollo propio y novedoso. El diseo del algoritmo se har desarrollando diferentes n a metodolog as, sin ser ni mucho menos una bsqueda intuitiva al azar, sino ms bien una u a experimentacin basada en estudios sobre robots e introspeccin en la locomocin humana. o o o Es de esperar que al ser una implementacin novedosa se encuentren problemticas de o a diversa ndole, que se debern ir solucionando con ingenio y los recursos disponibles. a

13

Cap tulo 2

Robots b pedos y algoritmos de control


La locomocin de robots con piernas, humanoides o similares, no es una novedad para o el desarrollo tecnolgico. Los primeros trabajos se iniciaron hace 40 aos. Por tanto, antes o n de comenzar la aproximacin propia a esta cuestin, es un deber analizar algunas de las o o soluciones y tecnolog que ya se han encontrado e implementado. as Este cap tulo tiene como objetivo ver el estado del arte de la locomocin de robots b o pedos, y a su vez servir de fuente de inspiracin para el posterior diseo de un algoritmo propio. o n Del vasto trabajo de investigacin que se ha realizado en este campo, se estudiarn dio a versos algoritmos de control representativos, as como algunos ejemplos de robots reales y simulaciones interesantes. Slo se har un anlisis descriptivo de los aspectos ms importano a a a tes, sin entrar en demostraciones ni formulaciones complejas del robot como sistema dinmico a multislido. Para ampliar la informacin se puede consultar la bibliograf referenciada. o o a

2.1.

Zero-Moment Point (ZMP)

Esta tcnica de control fue introducida por primera vez hace ms de 35 aos [24], y es e a n actualmente una de las ms extendidas. Establece un criterio de estabilidad dinmica para el a a robot que permite generar patrones de locomocin. Este concepto fue aplicado con xito por o e primera vez en 1984 en Waseda University, Laboratory of Ichiro Kato, en el robot WL-10RD, el primero equilibrado dinmicamente, y desde entonces en otros mltiples robots. a u ZMP (Zero Moment Point, punto de momento nulo) se puede denir como el punto pZM P en el suelo tal que el momento neto de las fuerzas externas no tiene componente sobre los ejes horizontales. Cuando pZM P existe dentro del pol gono de soporte1 , el contacto entre el suelo y el pie es estable. Cuanto ms cercano est p al centro de la supercie de soporte, ms a e a robustez se conseguir. Cuando ZMP est fuera del pol a a gono de soporte, el robot se inclina rotando sobre alguno de los bordes de dicho pol gono. El criterio de que ZMP exista dentro del pol gono de soporte es condicin necesaria y suciente para garantizar la estabilidad dinmica o a del robot. De forma intuitiva, la condicin ZMP asegura que el movimiento del cuerpo ser tal que o a el pie estar plano en el suelo y por tanto no caer. a a
Area conexa formada con los puntos de contacto sobre el suelo (ver Figura 2.1). En caso de soporte sobre un unico pie, el pol gono de soporte es este mismo. En caso de soporte con los dos pies, el pol gono de soporte abarca la regin de los pies y el parte del area entre ambos. o
1

15

16

Locomocin b o peda del robot humanoide Nao

(a) Soporte doble (dos pies)

(b) Soporte simple (un pie)

Figura 2.1: Pol gono de soporte segn fase de locomocin u o

2.1.1.

Formulacin matemtica o a

A continuacin se har una demostracin sencilla del criterio ZMP, as como la condicin o a o o que permite generar trayectorias de locomocin estables. o La clave est en suponer que el robot est apoyado sobre un unico pie. Se impone como a a condicin de equilibrio que el pie no est en condiciones de volcada inminente, es decir, que o e la reaccin del suelo est aplicada en el interior del pie, no en uno de sus bordes. o e Si se a el sistema pie, sobre l acta la reaccin del suelo (la fuerza R y el momento sla e u o M), y la de la articulacin del tobillo (la fuerza FT y el momento MT ) (ver Figura 2.2). La o reaccin del suelo sobre el pie, considerado un slido r o o digo, se puede reducir a una fuerza y un momento aplicados en un punto determinado. En general, habr tres componentes de fuera za Rx , Ry , Rz , y un tres componentes de momento Mx , My , Mz . Igualmente en la articulacin o del tobillo habr tres componentes de fuerza FT x , FT x , FT z y de momento MT x , MT x , MT z . a

Figura 2.2: Fuerzas y momentos sobre el pie

Dadas las caracter sticas del enlace pie-suelo, y suponiendo que no hay deslizamiento, se cumplir que las componentes horizontales de FT (FT x , FT y ) siempre se vern compensadas a a por las componentes horizontales de R (Rx , Ry ), esto es, la friccin. Lo mismo pasar con la o a componente vertical del momento MT z y Mz .

2. Robots b pedos y algoritmos de control

17

Por tanto, 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 , MT y y Mx , My ). Dado que la fuerza Rz es unidireccional, siempre se puede encontrar un punto p tal que la reaccin del suelo o Rz , Mx , My se reduzca unicamente a una fuerza, Rz , siendo las componentes horizontales del momento compensadas por la ubicacin de la fuerza. Este punto es el Zero-Moment Point o ZMP. Cabe destacar que esta denicin es muy parecida a la de centro de presin (CdP). CdP se o o dene como el punto tal que el efecto de la fuerza y momento de la reaccin del suelo equivale o a unicamente una fuerza aplicada en ese punto. A continuacin se explicar la diferencia o a entre ambos conceptos. Si el pie est en equilibrio, es decir, no est en condiciones de volcada inminente, ZMP a a se encontrar dentro del pol a gono de soporte, y ser coincidente con CdP por denicin. En a o condiciones de volcada inminente, ZMP y CdP estn ubicados sobre un borde del pol a gono de soporte. Cuando el momento externo de la articulacin contine aumentando, se pasar a o u a condiciones de volcada, fuera del equilibrio. CdP continuar estando en el borde del pol a gono de soporte (no puede existir fuera de ste). Sin embargo, existe un momento que est haciendo e a girar el pie. ZMP existir fuera del pol a gono de soporte en un punto tal que el momento neto de todos los enlaces sea nulo. Tambin existe una interpretacin que es la que permite utilizar este concepto en el diseo e o n de trayectorias: CdP se dene en funcin de la interaccin de las fuerzas de reaccin del suelo, o o o ZMP se puede denir en funcin de una trayectoria computada. Para calcular la posicin de o o ZMP a partir de una trayectoria en primer lugar hay que imponer equilibrio esttico de a momentos en el pie, y analizar las componentes horizontales: Fi = 0,
i i

MPi = 0

(2.1)

R + FT + mpie g = 0 R = FT mpie g OPZMP R + OG mpie g + MT + M + OT FT = 0

(2.2)

(2.3)

Si se estudian unicamente las componentes horizontales, M no aparece en la ecuacin o al tener unicamente componente vertical. Sustituyendo la ecuacin 2.2 en la ecuacin 2.3, y o o restringindola 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, de la cual se conozcan las variables articulares, velocidades y aceleraciones, a travs de una formulacin dinmica inversa (Newton-Euler por e o a ejemplo) se pueden determinar los momentos y fuerzas en cada articulacin, y en concreto o para el tobillo del pie soporte. La ecuacin generalizada para calcularlas es: o = H(q) + C(q, q)q + g(q) + ext q (2.5)

18

Locomocin b o peda del robot humanoide Nao

siendo el vector de fuerzas generalizado, H la matriz de inercia, C incluye los trminos e de coriolis, g los trminos de gravedad y ext las fuerzas externas. Como resultados de esta e ecuacin se pueden encontrar en concreto los valores de MT y FT . Sustituyndolos en la o e ecuacin 2.4 se puede determinar la posicin del punto pZM P . Si este est dentro del pol o o a gono de soporte, la trayectoria es estable. Si est fuera, no se podr cumplir el equilibrio, existir un a a a momento neto y por tanto el pie volcar sobre uno de sus bordes. En este caso ser necesario a a redenir la trayectoria inicial de tal forma que se consiga cumplir la condicin ZMP. Esta o condicin expuesta para el soporte con un solo pie se puede extrapolar para el soporte doble. o La condicin de ZMP impone que el pie est estticamente equilibrado. Pero como para o e a su cmputo se utilizan las dinmicas del resto del cuerpo, se dice que esta condicin es de o a o estabilidad dinmica, ya que las trayectorias de la locomocin son estables. a o

2.1.2.

Algoritmo

El algoritmo que se presentar a continuacin permite generar trayectorias que cumplan a o la condicin ZMP. El procedimiento consta de los siguientes pasos [4]: o 1. Se denen una serie de posiciones de los pasos deseados. 2. Para encontrar las trayectorias de un paso se sigue un proceso de optimizacin. Para pao sar de trayectorias a conguraciones articulares es necesario usar la cinemtica inversa, a y para pasar de movimientos articulares a fuerzas la dinmica inversa. Las restricciones a que debe cumplir la optimizacin deben ser: o Condicin ZMP (equilibrio dinmico). o a Cumplimiento de las posiciones deseadas para cada paso. M nimos y mximos movimientos articulares. a Criterios estil sticos: ya que el modelo a resolver es de dimensin muy elevada, o es necesario denir ms criterios. Estos pueden ser del estilo trayectoria del pie a cicloidal, altura de las caderas dentro de un rango... La funcin a optimizar puede incluir aspectos energticos (minimizar la energ o e a aportada por los actuadores en un ciclo), de robustez (ZMP lo ms cercano posible a al centro del pol gono de soporte), y otros dependientes de cada caso concreto. Adems, la posicin del ZMP puede constituir una variable de control efectiva para asea o gurar estabilidad. Sobre esta base se pueden implementar mejoras, como por ejemplo calcular las trayectorias y el ZMP on-line, o usar informacin de otros medios para calcular trayectorias futuras. o El robot HRP-2 implementa este y otros criterios [23]. Aunque quiz el ejemplo ms reprea a sentativo del algoritmo ZMP es el robot ASIMO de Honda [8].

2. Robots b pedos y algoritmos de control

19

2.1.3.

ASIMO

ASIMO (acrnimo de Advanced Step in Innovative Mobility paso avanzado en movilidad o innovadora), es un robot humanoide creado por la empresa Honda [8], la ultima y novedosa versin se present en el ao 2005 (ver Figura 2.3). Quiz sea uno de los ejemplos ms o o n a a representativos de los robots caminadores b pedos basados en el algoritmo ZMP. El v deo [2.1.3 ASIMO] contiene una demostracin del robot caminando en sus diferentes modos. o

(a) Evolucin de ASIMO (1986 a 2005) o

(b) Versin 2005 o

Figura 2.3: Robot ASIMO

El funcionamiento se basa en generar un patrn de movimiento ideal para las articulao ciones que cumpla la condicin ZMP, y mover las articulaciones segn ste. Cuando hay un o u e desajuste entre el patrn 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, y consecuentemente lograr estabilizar la locomocin: o Control de la reaccin del suelo: se controla la fuerza ejercida en los pies para o detectar las irregularidades en el terreno, las perturbaciones que provocan y as poder corregirlas. Control del ZMP objetivo: Se hacen las correcciones necesarias sobre las articulaciones de tal forma que se site lo ms rpido posible en la posicin ZMP ideal. u a a o Control de la posicin del siguiente paso: Se hacen los ajustes necesarios a la o trayectoria planicada de tal manera que el siguiente paso sea en el sitio ptimo para o compensar la perturbacin. o La ultima versin de ASIMO mide 130 cm, pesa 54 kg, tiene 34 grados de libertad y una o bater que dura aproximadamente 25 min, aparte de todo un arsenal de sensores inerciales, a de presin y de fuerza. Camina de forma normal a 2,7 km/h, y puede alcanzar corriendo (con o fase area) los 6 km/h. Puede correr girando y evitar deslizamiento de los pies. Sin duda, es e uno de los robots ms avanzados que se han diseado en laboratorios de investigacin. a n o

20

Locomocin b o peda del robot humanoide Nao

2.1.4.

Ventajas e inconvenientes

Las ventajas de aplicacin del concepto ZMP y los algoritmos derivados podr ser o an resumidas en: En s mismo ZMP constituye una metodolog sistemtica para la generacin de tra a a o yectorias para la locomocin. o Se asegura que las trayectorias de locomocin sean dinmicamente estables. o a Constituye una variable de control on-line. Aunque las trayectorias se planeen generalmente o-line, lgicamente existen perturbaciones. Se puede establecer un control o articular tal que en caso de que ZMP se desv de su posicin calculada regrese a sta. e o e En caso que la perturbacin no se consiga compensar y ZMP salga del pol o gono de soporte, el clculo del grado de separacin de ZMP permite tener una medida de la a o perturbacin. Esta se puede corregir entonces modicando la trayectoria de tal manera o que el nuevo paso se site de tal forma que el nuevo pol u gono de soporte incluya ZMP, volviendo a recuperar la estabilidad. Los siguientes puntos se plantean como inconvenientes al ZMP, siempre recordando que los mejores robots que caminan usan este mtodo: e La resolucin del algoritmo es de alta complejidad. Con el crecimiento de capacidad de o clculo de los ordenadores no supondr un problema en el futuro. a a El uso de cinemtica inversa tambin comporta problemas. Debido a que se necesita a e gran precisin para tener una trayectoria estable, los errores numricos pueden tener o e implicaciones muy perjudiciales de desequilibrado. El uso cinemtica y dinmica inversas puede tener problemas por singularidades, ya que a a cerca de ellas se producen errores numricos muy importantes. Los ms comunes son e a divisiones por cero que conllevan explosiones numricas, y por tanto comportamientos e bruscos del robot. Dependiendo de la conguracin (articulacin en su l o o mite, soporte sobre un pie, sobre dos, sobre un borde de un pie...) cambian los grados de libertad del sistema, y por tanto deben usarse matrices de dinmica diferentes. Esto eleva la complejidad much a simo. La otra opcin ser evitar conguraciones cercanas a singularidades, pero esto limitar la o a a movilidad natural del robot. Por ultimo, ser interesante reexionar en lo siguiente: ZMP busca que las trayectorias a de locomocin sean dinmicamente estables, es realmente necesario? No se podr buscar o a a un sistema de locomocin tal que el ciclo l o mite de los sucesivos pasos fuera estable, aunque las trayectorias fueran inestables? Efectivamente s se puede y de hecho, tal como se ver, a los humanos no cumplen la condicin ZMP en todas las fases de la marcha. Llegados a este o punto resulta interesante analizar trabajos realizados sobre el denominado caminar pasivo (Passive Walking), y los trabajos que se derivan aplicados a caminadores activos.

2. Robots b pedos y algoritmos de control

21

2.2.
2.2.1.

Passive & Dynamic Walking


Passive Walking

El concepto de locomocin 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 ningn tipo de control a u para caminar por una pendiente, el movimiento viene propulsado por la energ gravitaa cional de la bajada. El sistema acta como dos pndulos acoplados. La pierna soporte es un u e pndulo invertido, y la pierna oscilante es un pndulo normal unido a la pierna soporte. Con e e la distribucin 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 articulacin manteniendo la estabilidad. El movimiento lateral se o o inhibe al contar con cuatro piernas. McGeer hizo un estudio exhaustivo de la mecnica y dinmica 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 denicin, se comporta como un pndulo invertido inestable), manteniendo el ciclo l o e mite estable. Tambin es de gran inters el hecho que los movimientos de este simple mecanismo, que no e e tienen actuacin ni control, tengan una gran semejanza al de los humanos. Esto sugiere la idea o de que los humanos aprovechamos las dinmicas propias de nuestro cuerpo para optimizar el a consumo energtico de la locomocin. e o Este descubrimiento abri una nueva puerta de investigacin: robots que aprovechen los o o mismos conceptos de la locomocin pasiva aplicndolos para conseguir locomocin sobre o a o llanos y subidas, lgicamente aadiendo elementos actuadores y de control. Esto se conoce o n como dynamic walking (caminata dinmica). a

22

Locomocin b o peda del robot humanoide Nao

2.2.2.

Dynamic Walking

Steve Collins y sus compaeros hicieron interesantes estudios de robots humanoides que n usan los conceptos de la locomocin pasiva [6]. Desarrollaron tres robots diferentes, sustituo yendo la propulsin gravitacional por actuadores simples. o El b pedo Cornell (Figura 2.5a) est basado en el mecanismo pasivo, y propulsado por a motores elctricos 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 estn a unidos mecnicamente a la pierna opuesta. El b a pedo Delft (Figura 2.5b) tiene una morfolog similar, pero con actuacin neumtica. 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 automticamente 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 locomocin pasivo o

El b pedo Cornell est espec a camente diseado para minimizar la energ de propuln a sin. 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 contraposicin 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 diseados espec n camente 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 eciencia de estos robots con otros y con los humanos. Para compararlos se usa un concepto de coste energtico mecnico espec e a co 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 locomocin consumida en watts (slo la de los actuadores que se o o invierte en la locomocin, 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 estimacin comparativa de estos parmetros. 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 co ms 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 energtico espec e co de la locomocin 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 seales de on/o. 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 talnpunta del pie o tan humano que tienen es gracias a esta caracter stica. El robot del MIT tambin e tiene forma curvada en el plano lateral, facilitando su oscilacin 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 locomocin para liberarla a o en otra fase. De esta forma se consigue un ahorro energtico muy importante, adems e a de un mejor comportamiento especialmente en el impacto del pie en el suelo. Tambin e pueden incluir amortiguadores mecnicos 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 eciencias y movimientos parecidos a los humanos.

24

Locomocin b o peda del robot humanoide Nao

2.3.

BigDog

BigDog[22] es un robot con cuatro piernas, y una morfolog parecida a la de un perro a (de ah su nombre perro grande), capaz de moverse en entornos reales muy diversos. Ha sido desarrollado por Boston Dynamics (www.bostondynamics.com), una ingenier especializada a en la construccin de robots dinmicos y software de simulacin. Surgi del Massachusetts o a o o Institute of Technology, y en primer lugar se centraron en desarrollar un robot con forma animal que pudiera caminar.

Figura 2.6: BigDog

Aunque este robot no es humanoide, ya que tiene cuatro piernas, su comportamiento es muy natural, siendo muy estable ante perturbaciones externas importantes y variaciones de terreno. En el v deo [2.3 BigDog] se puede comprobar la bondad del algoritmo de control de este robot. El robot pesa 109 kg, mide alrededor de un metro de alto, 1,1m de largo y 0,3m de ancho.

2.3.1.

Descripcin y morfolog o a

BigDog tiene varios sistemas a bordo, que le suministran potencia, actuacin, sensado, o control y comunicaciones. Utiliza como fuente de energ un motor de combustin interna de a o 2 tiempos de 15 CV que va conectado a una bomba hidrulica, la cual proporciona aceite a a alta presin a travs de los sistemas correspondientes. o e Los actuadores son cilindros hidrulicos de baja friccin controlados por servovlvulas a o a de alta calidad. Cada actuador tiene sensores de posicin y fuerza. Cada una de las cuatro o piernas dispone de cuatro actuadores hidrulicos, y adems un quinto grado de libertad pasivo a a (ver Figura 2.7). La computadora controla el comportamiento del BigDog, sus sensores y las comunicaciones. BigDog tiene unos 50 sensores. Los de inercia miden la inclinacin y aceleracin del cuerpo, o o mientras que los de las articulaciones miden el movimiento y fuerza de los actuadores. Con toda esta informacin es posible tener una estimacin de cmo se est moviendo en el espacio. 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 coordinacin global de la locomocin. Permite controlar la o o interaccin con el suelo para mantenerse erguido y continuar la marcha. o

2. Robots b pedos y algoritmos de control

25

Figura 2.7: Descripcin BigDog o

El robot tiene una gran variedad de estilos de locomocin. Puede permanecer en pie, o avanzar levantando slo una pierna cada vez (velocidad 0,2m/s), caminar levantando 2 piernas o opuestas por vez (igual que un perro, 1, 6m/s), caminar corriendo con fase area (velocidad e normal 2m/s, mxima 3, 1m/s). a

2.3.2.

Control

BigDog camina al trote mientras asegura su estabilidad dinmicamente. El sistema de a control es simple comparado con otros. Usa una estimacin de la velocidad y aceleracin o o lateral para estabilizarlo, prediciendo dnde colocar el siguiente paso de tal forma que se o estabiliza el movimiento. Se basa en los siguientes principios: Soportar el cuerpo con un movimiento vertical basado en rebotes (ver Figura 2.8a). Controlar la forma de caminar a travs de los momentos aplicados en las caderas durante e la fase de soporte de la pierna (ver Figura 2.8b). 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.8c).

(a) Rebotar sobre las piernas con muelle

(b) Mantener postura vertical con las piernas soporte

(c) Movimientos simtricos e

Figura 2.8: Principios del control de la locomocin o

26

Locomocin b o peda del robot humanoide Nao

Adicionalmente a los principios expuestos, el sistema de control realiza las siguientes tareas (en la Figura 2.9 se puede ver el diagrama de control): Estimar la evolucin del terreno usando la informacin histrica. o o o Ajustar la postura para optimizar la fuerza de cada pierna. Usar el control de traccin para detectar, evitar y recuperarse de resbalones. o Evitar colisiones entre piernas.

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 mi n es c C = ie t aD rca D Cn mi i t c e MD Mo eoVru l = dl i a t

Figura 2.9: Diagrama del lazo de control

El algoritmo de coordinacin entre piernas inicia las transiciones de estado para producir o una locomocin estable. A travs de cinemtica inversa, y comparndola con la real se obtieo e a a nen las fuerzas que se deben ejercer. Estas se env a articulaciones para que su interaccin an o con el suelo sea tal que las fuerzas y momentos de la reaccin estabilicen el robot mientras o camina.

2.4.

SIMBICON: Simple Biped Locomotion Control

SIMBICON [27] es un algoritmo de control para robots b pedos que usa tcnicas de e feedback orientadas a conseguir el equilibrio a partir del estudio de las dinmicas involucradas. a Permite una gran cantidad de estilos de locomocin en tiempo real (hacia delante, hacia atrs, o a de lado, girando, corriendo, saltando, gateando. . . Este algoritmo funciona bien tanto en 2D como en 3D, y con parmetros adecuados a se puede conseguir un estilo de caminar muy parecido al humano y muy estable frente a perturbaciones externas o cambios de terreno. Cabe destacar que slo se ha probado con o simulaciones f sicas (con parmetros reales), pero no en robots b a pedos. Se puede ver una demostracin en el v o deo [2.4 SIMBICON].

2. Robots b pedos y algoritmos de control

27

(a) Caminando

(b) Pasos altos

(c) Corriendo

(d) Paso largo

Figura 2.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.11: Simulacin en tiempo real de un personaje que camina con el algoritmo SIMBICON o

2.4.1.

Algoritmo

La idea del algoritmo es usar una mquina de estados nita, o grafo con posturas de a control. Cada estado consiste en una postura del cuerpo que representa los ngulos objetivo a de cada articulacin respecto al eslabn anterior, para todas las articulaciones. Cada articuo o lacin individual usa un controlador PD (proporcional-derivativo) para dirigirse a su ngulo o a objetivo. Las transiciones entre estados ocurren despus de un tiempo jo o, para otros ese tados, despus de que el pie establezca contacto con el suelo. Los estilos de locomocin para e o caminar se modelan con cuatro estados, y para correr slo dos estados. o El control por posturas por s solo no tiene equilibrio intr nseco, sin embargo, unas modicaciones permiten obtener una locomocin robusta. En primer lugar, el torso y la articulacin o o cadera-fmur de la pierna oscilante tienen ngulos objetivo respecto al sistema de referencia e a del suelo, no respecto a su articulacin previa. En segundo lugar, se aade un trmino de o n e feedback para corregir el ngulo objetivo de la cadera-fmur en funcin de la posicin del a e o o centro de masas y su velocidad. De esta forma se consigue un balanceo robusto modicando el siguiente punto de soporte.

28

Locomocin b o peda del robot humanoide Nao

Mquina de estados a Cada estado tiene sus ngulos objetivo. Para una locomocin simtrica, los pares de a o e estados derecho-izquierdo deben ser simtricos, es decir, los estados 0 y 2, 1 y 3. La transicin e o entre los estados 0 1 ocurre despus de un tiempo, y de 1 2 despus del contacto del e e pie con el suelo (ver Figura 2.12).

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

Figura 2.12: Mquina de estados a

En cualquier estado dado, los pares aplicados a las articulaciones se calculan con un control proporcional-derivativo (PD) = kp (d ) kd para llevar cada articulacin al ngulo o a deseado d . Estos ngulos son un objetivo, no se alcanzan realmente en un funcionamiento a normal.

Control de la inclinacin del torso y la cadera en movimiento o La cadera de la pierna de apoyo y la pierna oscilante se controlan de forma diferente, tal como se ilustra en la Figura 2.13a. En primer lugar se controla la inclinacin del torso o respecto al sistema de referencia del suelo, esto se consige usando un controlador virtual PD que trabaja en este sistema de referencia que calcula el par neto A , tal como se muestra en la gura. En segundo lugar se desacopla el control del ngulo de la cadera de la pierna oscilante a respecto a la inclinacin actual del torso, controlando la cadera de la pierna en movimiento o respecto al sistema de referencia del suelo. El par B es calculado tambin con un controlador e PD virtual que trabaja en la referencia del suelo. Finalmente cabe notar que el par B es interno al sistema y, de hecho, la reaccin (par inverso) se est aplicando sobre el torso. Es o a necesario que el par deseado sobre el torso torso sea el par neto que se aplica, A B . Para solucionar este aspecto se calcula el par neto del torso como A = torso B .

Realimentacin para conseguir equilibrio o El ultimo componente de la estrategia de control es aplicar una realimentacin al posi o cionamiento del pie en movimiento. Se emplea una ley de la forma

2. Robots b pedos y algoritmos de control

29

d = d0 + cd d + cv v

(2.7)

a la cadera de la pierna en movimiento, siendo d el ngulo objetivo del controlador PD, d0 a el ngulo objetivo por defecto de la mquina de estados, d la distancia horizontal del pie a a de soporte hasta el centro de masa (CDM), y v la velocidad del CDM, tal como se ve en la Figura 2.13b. El punto medio de las caderas se puede usar como una solucin simple y o efectiva para estimar la posicin y velocidad del CDM. o El parmetro cd es importante para suministrar equilibrio en locomociones a baja veloa cidad o simplemente dando pasos en el sitio. El parmetro cv regula la velocidad en estado a estacionario.

(a) Relacin entre los pares del torso, cadera de o pierna de apoyo y cadera de la pierna en movimiento

(b) Posicin y o velocidad del centro de masas

Figura 2.13: Elementos de la estrategia de realimentacin para el equilibrio o

2.4.2.

Resultados

El algoritmo SIMBICON proporciona una serie de ventajas: gran facilidad para crear estilos de locomocin, resulta muy estable frente a perturbaciones, y su simplicidad y facilidad o de programacin. Puede ser una opcin muy interesante para el desarrollo de la locomocin o o o de un robot humanoide. En la Figura 2.10 se muestran los dibujos de diversas simulaciones.

2.5.

Conclusiones

Despus de este anlisis se puede ver el estado del arte en lo que respecta a la locomocin e a o b peda de robots humanoides. Los resultados ms exitosos se han conseguido con el algoritmo a ZMP, un procedimiento sistemtico que permite asegurar la estabilidad de las locomociones. a Este algoritmo es siempre una referencia para el desarrollo de otros. Tambin existen otras mltiples aproximaciones, como dynamic walking. Esta ultima e u est bastante desarrollada, y permite a travs de un diseo conjunto de la estructura f a e n sica

30

Locomocin b o peda del robot humanoide Nao

y el control reducir much simo el consumo energtico de la locomocin. Una aproximacin e o o inspirada en este planteamiento puede proporcionar propiedades muy interesantes al robot. Aparte de los algoritmos usados, existen muchos otros, como por ejemplo el uso de modelos virtuales [21], aprendizaje con redes neuronales [14], aprendizaje por refuerzo [19] [12], tcnicas de optimizacin [25]. . . Aqu se han mostrado algunos de los algoritmos ms usados e o a para locomocin b o peda, y otros interesantes para tener una base y fuente de inspiracin para o la implementacin particular que se desarrollar en este proyecto. Si embargo, falta analio a zar un aspecto muy importante: la locomocin b o peda humana. Este punto se tratar en el a siguiente cap tulo.

Cap tulo 3

Anlisis de la locomocin b a o peda humana


La locomocin humana es compleja y un anlisis exhaustivo ser inviable para este proo a a yecto. A continuacin se analizarn aquellos aspectos biolgicos-cinemticos-mecnicos releo a o a a vantes para el diseo del algoritmo de locomocin del robot. Este anlisis se centrar en las n o a a piernas, ya que son la clave para caminar. Se puede armar que la forma de caminar de los humanos est muy optimizada para a la conguracin de dos piernas. Ya que se pretende implementar el control en un robot o humanoide, tambin es un deber estudiar el modelo original. e Se ha utilizado como fuente de datos la informacin proporcionada en [13], y tambin por o e la pgina web www.dynamicwalking.org. En ella se puede hallar una captura de informacin a o con mltiples sensores y cmaras de precisin para analizar el caminar humano. Parte de los u a o datos expuestos se han tomado de este estudio, y se mostrarn de una forma grca para su a a mejor comprensin. o Los datos que proporcionan constan de (ver Figura 3.1): Diferentes estilos de caminar: Normal, lento, muy lento, muy muy lento, rpido y estilo a ASIMO. Captura en v deo de la secuencia. Informacin de la actividad muscular. o Captura de la posicin XYZ de cada articulacin. o o Angulos, momentos y potencia de cada articulacin, obtenidos por cinemtica/dinmica o a a inversa. Dibujo esquemtico de la persona. a El aspecto ms relevante para el posterior desarrollo de un algoritmo de locomocin en a o el robot es la cinemtica. En concreto se analizarn el estilo general de locomocin y los a a o movimientos articulares. Otros aspectos como la dinmica, potencia u otros aspectos salen a de los objetivos de este proyecto. Hay mltiples e interesantes estudios al respecto que se u pueden consultar para ms informacin en la web de www.dynamicwalking.org. a o

31

32

Locomocin b o peda del robot humanoide Nao

(a) Dibujo esquemtico a

(b) V deo

(c) Actividad muscular

Figura 3.1: Anlisis del caminar humano a

3.1.
3.1.1.

Descripcin cualitativa o
Fases de la marcha

La marcha normal, un acto esencial que se aprende por instinto, es de una complejidad extraordinaria. Los movimientos son muy rpidos, ya que un ciclo completo dura del orden a de 1s. Se caracteriza por el hecho de que el cuerpo jams abandona totalmente el contacto a con el suelo, contrariamente a lo que ocurre en la carrera. Para mayor claridad se explican las fases de la marcha referenciadas al porcentaje del ciclo de un solo miembro, desde el contacto del taln en el suelo hasta el siguiente contacto. o De forma esquemtica los diversos tiempos de la marcha son: a 1. Ataque del taln en el suelo (0-15 %) (Figura 3.2a) La rodilla est en extensin o a o completa, la pelvis oblicua hacia adelante, el tobillo en posicin neutra. o 2. Pie plano en el suelo (15-40 %) (Figura 3.2b) El sujeto se halla en equilibrio sobre un unico pie. La rodilla est exionada de un 15 a un 25 % con el n de evitar un ascenso a del centro de gravedad. 3. Despuegue del taln (40-50 %) (Figura 3.2c) Apoyo reducido slo al antepi. Este o o e elemento es estable a partir del cual los dems se mueven. a 4. Despegue de los dedos (50-60 %) (Figura 3.2d) Es el doble apoyo. 5. Avance del miembro inferior oscilante (60-75 %) (Figura 3.2e) Flexin de la rodilla o o ), exin del tobillo, el miembro posee su longitud m rpida e importante (40-50 a o nima.

3. Anlisis de la locomocin b a o peda humana

33

6. Extensin total (75-100 %) (Figura 3.2f) - El miembro oscilante pasa a gran velocidad o y se coloca en la posicin de mayor longitud posible con el n de alcanzar el suelo lo o ms delante posible del cuerpo. a

(a)

(b)

(c)

(d)

(e)

(f )

Figura 3.2: Fases de la marcha

Es de notorio inters que en la marcha normal slo se tiene un pie totalmente apoyado e o durante un 50 % del tiempo. Es decir, que la condicin ZMP que el pie completo est totalo e mente apoyado slo se cumple durante medio ciclo. Se puede comprobar fcilmente intentando o a caminar con los pies siempre planos que se requiere mucho ms esfuerzo y es ms dicultoso. a a

3.1.2.

Desarrollo del pie durante la marcha

1. De 0 al 15 % (Figura 3.3a) El abordaje al suelo se realiza por el taln. o 2. Del 15 al 40 % (Figura 3.3b) El pie permanece plano. El contacto se realiza a travs e del borde externo. 3. Del 40 al 50 % (Figura 3.3c) Despegue del taln. Todo el peso reposa slo sobre el o o antepi. e 4. Del 50 al 60 % (Figura 3.3d) Despegue de los dedos.

34

Locomocin b o peda del robot humanoide Nao

(a)

(b)

(c)

(d)

Figura 3.3: Desarrollo del pie durante a marcha

Este ser el esquema del desarrollo del paso para un pie estrictamente normal. En caso a que se amputaran todos los dedos la ultima fase del paso no se puede realizar, y el paso se debe acortar. Se puede ver que desde el punto de vista de la pierna, el pie est basculando. Esta idea es a la que se aprovechaba en los caminadores pasivos, por eso tienen movimientos tan parecidos a los humanos.

3.1.3.

Caracter sticas del paso

El paso es la distancia que separa dos apoyos sucesivos, y se mide de taln a taln. Se o o llama ngulo del paso el formado por la l a nea de marcha y el eje del pie, que cruzan por detrs. Su valor normal es de 15o . La amplitud del paso es la distancia que separa el taln de a o la l nea de marcha, para una velocidad media es de 5 a 6cm (ver Figura 3.4).

Amplitud del paso - 6cm Lnea de la marcha

15 ngulo del paso

Figura 3.4: Caracter sticas del paso

La cadencia es el nmero de pasos hechos en un minuto. La velocidad de marcha es igual u al producto de la cadencia por la longitud de paso. En un hombre adulto de talla media (170cm de altura) la cadencia ms eciente1 var entre 110 y 130 pasos por minuto. Esto es a a 2 entre 0,92 y 1,09 s. La longitud de paso oscila entre 75 y 85 cm, y la un per odo de ciclo velocidad ser de 5 a 6,5 km/h. a La marcha normal es la que tiene un consumo energtico menor, con una velocidad alree dedor de 4,5 a 5 km/h.

3.1.4.

Brazos y movimiento de torsin transversal o

Con el n de separar lo menos posible el centro de gravedad de su eje de progresin, y o disminuir la oscilacin transversal del tronco, es preciso que los hombros y brazos realicen el o giro en sentido inverso (ver Figura 3.5).
1 2

Entendida como la que tiene la relacin velocidad/(consumo energtico) mayor. o e Recordar que en un ciclo completo se realizan dos pasos.

3. Anlisis de la locomocin b a o peda humana

35

Se puede comprobar que si se intenta caminar con los brazos jos pegados al tronco resulta mucho ms dicultoso, el torso oscila mucho en el eje transversal, aunque se puede proseguir a con la marcha.

Figura 3.5: Movimiento de brazos y hombros al caminar

3.2.
3.2.1.

Cinemtica a
Sistema de referencia

En primer lugar se denirn planos de referencia y ejes respecto al cuerpo (Figura 3.6). Se a considerarn los movimientos en cada plano independientes para esta primera aproximacin. a o Los ejes de rotacin locales de cada articulacin estn denidos con el mismo sentido que o o a estos ejes locales para la posicin indicada en el dibujo. De hecho, por coherencia se han o tomado los mismos ejes que se denirn en el robot Nao. a Ya que se analizar la locomocin en l a o nea recta, se estudiarn solamente los planos a frontal (movimientos de aduccin/abduccin), y sagital (movimientos de exin/extensin). o o o o Los movimientos en el plano transversal (movimientos de torsin) son menos relevantes en o l nea recta a bajas velocidades.

3.2.2.

Movimientos articulares

Los comandos que se enviarn al robot para controlarlo sern las conguraciones angulares a a de cada articulacin. Es por eso que resulta interesante analizar la evolucin temporal de los o o a ngulos de articulacin cundo una persona est caminando. o a a En la Figura 3.7 se pueden hallar instantneas para cada fase del paso. a

36

Locomocin b o peda del robot humanoide Nao

(a) Planos referencia

(b) Ejemplo articulacin tibia-pie o

Figura 3.6: Sistema de referencia

(a)

(b)

(c)

105

105

120

(d)

(e)

(f )

Figura 3.7: Instantneas de las fases de la marcha [13] a

3. Anlisis de la locomocin b a o peda humana

37

En la web mencionada anteriormente se encuentra informacin sobre la evolucin temporal o o de las variables articulares. Todo el anlisis que se realizar a continuacin ser con un estilo a a o a de caminar a velocidad normal (v = 1, 27m/s = 4, 6km/h), porque se considera que ste es e una buena referencia. En la Figura 3.9 se representan los ngulos articulares mientras se est caminando de fora a ma normal, una vez ya se ha iniciado el movimiento. El sentido est denido de la articulacin a o superior a la inferior, segn los ejes indicados. Se muestra un unico ciclo, de per u odo 1,08 s. El eje de tiempo est adaptado para poder seguirlo en el v a deo [3.2.2 Persona caminando a velocidad normal]. Los movimientos de exin/extensin son los previsibles. En los de abd/aduccin se puede o o o destacar el hecho que mientras un pie est apoyado, la conguracin articular intenta ser tal a o que el centro de masa del cuerpo est sobre la vertical del pie (ver Figura 3.8). e Como leccin se puede extraer que los movimientos no son extremadamente complejos, o como era de esperar. Esto implica que planteamientos como SIMBICON basados en un grafo de posturas pueden representar bien el comportamiento humano.

Figura 3.8: Instantnea en t = 5s a

3.3.

Conclusiones

El anlisis hecho aqu y especialmente la evolucin temporal de los ngulos articulares a , o a para cada fase, se tomar como base para el algoritmo de locomocin de desarrollo propio. a o Posteriormente se har un anlisis de prestaciones para compararlo con el comportamiento a a humano. Es de notar el hecho que en la locomocin humana resulta un punto clave los dedos de los o pies. Ya que en el robot no se dispone de esta articulacin (tal como se ver posteriormente), o a es de esperar que sea necesario usar una marcha de pasos cortos.

38

Locomocin b o peda del robot humanoide Nao

(a) Angulos eje Y de exin/extensin o o

(b) Angulos eje X de abd/aduccin o

Figura 3.9: Angulos articulares de la pierna derecha y fase de paso

Cap tulo 4

Nao
El robot humanoide usado en este proyecto es el Nao Academics Edition v3, diseado n y fabricado por la compa francesa Aldebaran Robotics (www.aldebaran-robotics.com, na ver Figura 4.1). Ha sustituido a Aibo de Sony en la competicin internacional de robtica o o Robocup. Nao es un robot de tecnolog puntera, programable y controlable usando Linux, a Windows y Mac, proporcionando una interfaz de comunicacin muy exible. Permite realizar o movimientos precisos y coordinados. Adems, lleva incorporadas una serie de funciones de a alto nivel para facilitar su uso. Por estas caracter sticas se ha escogido como plataforma para el desarrollo de este trabajo. El v deo [4 Presentacin de Nao] muestra sus grandes o posibilidades. En este cap tulo se har una descripcin general del robot, a modo de presentacin. En a o o el apndice A se ampl esta informacin, y se explican detalles de cmo usarlo. Los datos e a o o tcnicos se han obtenido principalmente de la documentacin suministrada con el robot [3]. e o Las explicaciones, programacin y scripts son fruto de desarrollo e investigacin propios. o o

Figura 4.1: Nao Academics Edition

4.1.

Caracter sticas generales

Nao mide 58cm de altura, pesa 4,3kg y la carcasa est fabricada en plstico. Usa una a a bater de litio de Un = 21, 6V , con una autonom aproximada de 45 min. El consumo en a a

39

40

Locomocin b o peda del robot humanoide Nao

uso normal es de 30W, y en actividad 70W. Permite conexin con cargador de 24V. o Tiene un total de 25 grados de libertad (ver Figura 4.2 y Tabla 4.1): 2 en la cabeza. 5 en cada brazo+1 en cada mano. 1 en la pelvis. 5 en cada pierna.

Figura 4.2: Articulaciones del robot

HeadPith HeadYaw

Cabeza Flexin/Extensin cuello o o Rotacin cuello o

HipYawPith

Pelvis Articulacin plvica a 45o o e

Brazos (R/L Derecha/Izquierda) R/LShoulderPitch Flexin/Extensin hombro o o R/LShoulderRoll Abd/Aduccin hombro o R/LElbowYaw Rotacin codo o R/LElbowRoll Flexin/Extensin codo o o R/LWristYaw Rotacin mueca o n R/LHand Abrir/Cerrar mano

Piernas (R/L Derecha/Izquierda) R/LHipPith Flexin/Extensin cadera o o R/LHipRoll Abd/Aduccin cadera o R/LAnklePith Flexin/Extensin tobillo o o R/LAnkleRoll Abd/Aduccin tobillo o R/LKneePith Flexin/Extensin rodilla o o

Tabla 4.1: Lista de articulacines de Nao

4. Nao

41

Tambin incorpora 2 altavoces de 36mm de dimetro situados en las orejas, 4 micrfonos e a o y 2 cmaras VGA 640x480, 30 fps. Respecto a los sensores, tiene 4 de ultrasonidos situados a en el pecho, 4 sensores de fuerza en cada pie, sensores de tacto en la parte frontal de cada pie, sensores inerciales (acelermetro de 3 ejes y girscopo de 2 ejes), y en cada articulacin o o o sensores de posicin con una resolucin de 0,1o . Para hacerlo ms vistoso, incorpora LEDs o o a de colores en los ojos, orejas, pecho y pies. La conexin puede hacerse v Wi-Fi IEE 802.11g o a (inalmbrica) o Ethernet (con cable). a Los actuadores son motores Coreless MAXON DC. Hay de dos tipos diferentes y con dos tipos de reducciones diferentes segn las necesidades de cada articulacin. El control de u o los motores se realiza mediante microcontroladores PIC que llevan un algoritmo tipo PID, de parmetros congurables. El modo de interactuar es mediante el env de consignas de a o posicin. o Nao lleva su propio PC incrustado. Tiene una CPU x86 AMD GEODE 500MHz, con 256 MB SDRAM y 1 GB de memoria ash. El sistema operativo de Nao es un Embedded Linux (32 bit x86), basado en la distribucin OpenEmbedded. Sobre este sistema operativo corre o un programa llamado NaoQi, que es el encargado de controlar el robot mediante diversos mdulos espec o cos. Para ampliar esta informacin se puede consultar la documentacin del robot. o o

4.2.

NaoQi: programacin de Nao o

Nao se suministra con un entorno de desarrollo llamado NaoQi. 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. Tambin maneja las comunicaciones. Entre algunas de las e funciones de alto nivel que implementa se encuentra un algoritmo de locomocin b o peda tipo ZMP. Para ejecutar rdenes sobre Nao es necesario hacerlo a travs de NaoQi. Se puede hacer o e de forma remota (desde el PC) usando lenguajes de programacin como C++, Python o o URBI. Tambin se pueden compilar programas para ejecutarse desde Nao, programados en e C++. Esta seccin se ampl en el Apndice A. o a e

4.3.

Simulador: Webots

Webots es un entorno de desarrollo (ver Figura 4.3) para modelar, programar y simular robots mviles. Existen versiones para Windows y Linux. Con Webots se puede crear un o mundo virtual comn con varios robots que interacten entre ellos y realizar una simulacin u u o f sica precisa gracias al motor matemtico ODE (Open Dynamics Engine). Tambin permite a e grabar en AVI o MPG las simulaciones. Se puede realizar la programacin con diversos o lenguajes: C/C++, Java, Python, URBI, u otros. En el caso de algunos robots, el programa usado en Webots se puede trasladar directamente al robot f sico. Con Nao no es posible, a no ser que se programe a travs de NaoQi. e Webots se distribuye preparado para ejecutar simulaciones con Nao, ya que es la pla-

42

Locomocin b o peda del robot humanoide Nao

Figura 4.3: Webots 6.1.1

taforma estndar para la liga simulada de RoboCup (www.robocup.org). Con Nao viene a un modelo para Webots que se puede controlar desde un NaoQi ejecutado en el ordenador (no con la versin demostracin de Webots). Tambin se puede programar en C o C++ un o o e ejecutable que controle el robot durante la simulacin. o Existe tambin otro simulador de Nao, Microsoft Robotics Studio (ver Figura 4.4). Este e se puede ejecutar unicamente bajo Windows. Igual que Webots tiene un simulador f sico de un mundo virtual. Se programa en Visual Programming Language, un estilo de programacin o mediante bloques.

Figura 4.4: Microsoft Robotics Studio

Se dispone de un modelo de Nao. El problema que tiene ste es que no se puede acceder e a la informacin de los sensores, por lo que se desestima esta v Adems, las simulaciones o a. a

4. Nao

43

que se han probado dan resultados poco realistas en cuanto a movimientos, y especialmente el contacto con el suelo. Webots se muestra ms correcto con la simulacin de Nao. a o

4.4.

Conclusiones

Nao se muestra como un robot con caracter sticas muy avanzadas. Desde la estructura f sica, actuadores y sensores hasta la arquitectura de software se nota un diseo muy cuidado. n Las funcionalidades que incorpora de control articular, su morfolog humanoide b a peda y los mltiples sensores que tiene hacen que sea una plataforma idnea para el desarrollo de este u o proyecto, y el estudio de la locomocin b o peda en robots humanoides.

Cap tulo 5

Dise o del algoritmo de locomocin n o para el robot Nao


Despus de llegar a una clara compresin de las claves de la locomocin b e o o peda vistas a travs de ejemplos de robots humanoides y el propio cuerpo humano, y de ver el potencial de e Nao como plataforma de investigacin, ha llegado el momento de desarrollar la parte clave o de este proyecto: el diseo de un algoritmo propio para locomocin de Nao. Esta seccin se n o o centrar en el diseo conceptual, sin entrar en detalles de programacin que oscurecer el a n o an desarrollo lgico. La programacin se mostrar en el Apndice B.1. Finalmente se har un o o a e a anlisis de prestaciones. a Conjuntamente con la investigacin que se expondr en este apartado se ha desarrollado o a una interfaz grca para poder usar todas las funciones que se mencionan, y tambin otras a e propias de Nao. Aqu mostrarn algunas capturas de pantallas, y la descripcin detallada se a o puede encontrar en el Apndice B.2. e Las pruebas se harn sobre el robot directamente, con las precauciones debidas. Las suelas a del robot son de plstico, y sobre un suelo cermico resbalan. Por este motivo se harn las a a a pruebas sobre una supercie de plstico que de adherencia al robot. a Sin embargo, tal como se mencion en la seccin anterior, Nao ya tiene implementadas o o funciones para caminar, un algoritmo de locomocin tipo ZMP. Ya que el modelo est proo a gramado por el fabricante, se presupone la correccin de este. El desarrollo se centrar en o a el estudio de la funcionalidad del algoritmo ZMP implementado y cmo mejorarlo. No se o har un anlisis matemtico de la mecnica del robot como sistema multislido ni la formulaa a a a o cin del algoritmo ZMP, ya que ste ya lo ha realizado la empresa fabricante de Nao y viene o e dado, y adems est fuera de los objetivos de este proyecto. Se analizar el algoritmo y sus a a a prestaciones, y se le harn las modicaciones necesarias para que funcione correctamente. a Adems, se investigar en el desarrollo de un nuevo algoritmo, por varios motivos. En a a primer lugar, aunque el algoritmo ZMP es muy potente, tiene unos costes energticos muy e elevados. Los robots basados en los passive walkers tienen un consumo mucho menor, ya que aprovechan las dinmicas propias del sistema. Sin embargo, estos robots se han diseado a n espec camente con este n. En la investigacin bibliogrca hecha hasta la fecha, no se ha o a encontrado ningn robot estndar (es decir, no especialmente diseado con este objetivo, u a n que no tenga los pies con formas especiales, y con los actuadores situados en las posiciones habituales) que use los principios de los caminadores pasivos. Ser muy interesante vericar a la validez de esta concepcin en concreto con Nao. o

45

46

Locomocin b o peda del robot humanoide Nao

5.1.

ALWalk : Algoritmo de locomocin implementado en Nao o

NaoQi, el software de Nao, est organizado en mdulos, o bloques funcionales (informacin a o o ampliada en el Apndice A.3.1). Uno de ellos es ALMotion, que incorpora las funciones para e mover el robot. La forma de moverlo es mediante consignas de posicin para las articulaciones. o AlMotion permite, entre otras cosas, resolver el modelo cinemtico, mover puntos detera minados en el espacio cartesiano o controlar la rigidez de las articulaciones. Adems, tambin a e tiene funciones de alto nivel, como por ejemplo mantener el equilibrio o caminar. El submduo lo que tiene estas funciones se llama ALWalk, y se describe a continuacin. o

5.1.1.

Descripcin de las funciones de locomocin b o o peda

Una vez se hace la conexin al mdulo ALWalk, 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 , int pN um Sa mp le sP er St ep ) // Caminar de l a d o

void walkSideways ( float pDistance , 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 , 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 , float pRadius , int pNumSa mp le sP er St ep )

La idea del algoritmo implementado es transformar una posicin del ZMP objetivo en un o objetivo de posicin del centro de masa CdM, haciendo un seguimiento de este. La posicin o o ZMP se crea on-line a travs de patrones de posicin de los pies para cada tipo de paso. Los e o diferentes patrones son los que se muestran en la Figura 5.1. La trayectoria de los pies se realiza con forma de cicloide (ver Figura 5.2). El cmputo de la trayectoria de CdM se realiza o con un modelo simplicado de un pndulo invertido. Como es un modelo simplicado, puede e dar lugar a inestabilidades. Adems, se pueden congurar parmetros caracter a a sticos de la locomocin. Estos son: o pMaxStepLength Longitud mxima de un paso en metros (de 0, 0 a 0, 09m, por defecto a 0, 055m). pMaxStepHeight Altura mxima de un paso en metros (de 0, 0 a 0, 08m, por defecto a 0, 015m). Representa la altura de la cicloide.

5. Diseo del algoritmo de locomocin para el robot Nao n o

47

(a) L nea recta

(b) De lado

(c) Girar manteniendo posicin o

(d) Caminar en curva

Figura 5.1: Patrones de locomocin o

pMaxStepSide Longitud mxima de un paso lateral en metros (de 0, 0 a 0, 06m). a pMaxStepTurn Mximo cambio de orientacin segn eje vertical en radianes (de 0, 0 a a o u 1, 0rad). pZmpOsetX Oset de la posicin objetivo del ZMP hacia adelante (de 0, 0 a 0, 1m, por o defecto 0, 015m). Este parmetro y el siguiente sirven para controlar como las posicioa nes de cada paso se convierten en una ruta objetivo del ZMP. pZmpOsetX es una distancia positiva desde el taln de un paso, que hace que el CdM permanezca durante o ms tiempo sobre el pie.(ver Figura 5.3). a pZmpOsetY Oset de la posicin objetivo del ZMP hacia un lado (de 0, 05 a 0, 05m, o por defecto 0, 015m). Se puede usar para reducir el ancho del movimiento lateral del CdM. Asimismo, tambin se denen cuatro parmetros extra para facilitar la creacin de patroe a o nes de locomocin estables: pLHipRollBacklashCompensator (0o a 15o , por defecto 4,5o ), o pRHipRollBacklashCompensator (-15o a 15o , por defecto 4,5o ), pHipHeight (0,15 a 0, 244m) y pTorsoYOrientation (-20o a 20o , por defecto 5o ). pLHipRollBacklashCompensator y pRHipRollBacklashCompensator son dos parmetros para compensar la a deformacin plstica que se produce en la cadera durante la caminata. Se env una seal o a a n trapezoidal a la articulacin HipRoll durante la fase de soporte sobre un unico pie para manteo ner el torso recto lateralmente. pHipHeight dene la altura de las caderas del robot durante

48

Locomocin b o peda del robot humanoide Nao

Figura 5.2: Cicloide usada para trayectorias de los pies

Figura 5.3: Conguracin de parmetros de Oset del ZMP o a

la marcha. Cunto ms alto, ms inestable ser la locomocin, y ms cerca se estar de la a a a a o a a singularidad, lo que puede llevar a provocar movimientos bruscos. pTorsoYOrientation dene la orientacin del torso frontalmente. o En la documentacin de Nao [3] se dan explicaciones detalladas de cmo congurar estos o o parmetros para estabilizar la locomocin, as como una conguracin por defecto. a o o

5.1.2.

Pruebas de funcionamiento

Una vez congurado, hacer que Nao camine deber ser tan fcil como ejecutar la siguiente a a o rden de Python: motion.walk(1, 60) #Camina 1m, con un paso de duracin 60x20ms=1,2s o

Los resultados se muestran en el v deo [5.1.2 ALWalk velocidad baja]. Tambin se hicieron e pruebas para una velocidad de paso mayor, se muestra en el v deo [5.1.2 ALWalk velocidad alta]. Como se puede ver, el robot cae estrepitosamente por los siguientes motivos, algunos de ellos inherentes al algoritmo ZMP:

5. Diseo del algoritmo de locomocin para el robot Nao n o

49

El sistema est en lazo abierto, por tanto es inviable compensar ningn tipo de pertura u bacin. El robot unicamente reproduce una secuencia de movimientos, no tiene inforo macin del entorno. o El algoritmo ZMP se basa en un seguimiento con una alta ganancia de una trayectoria precalculada. Esto impide que el sistema absorba ningn tipo de perturbacin. En este u o 1 para todas las articulaciones (se llamar full-stiness). caso se tiene 100 % de stiness a Seguramente existan diferencias entre el modelo f sico usado y el robot real, por lo que las trayectorias calculadas no necesariamente sean tan robustas como se esperar a. Las articulaciones no son perfectas. Existen huelgos mecnicos y otros fenmenos no a o modelados que provocan inestabilidades. El sistema est en lazo abierto y por ahora Nao no dispone de medios para estabilizarlo. a Los errores de modelado son dif ciles de compensar dada la complejidad y alta dimensin del o sistema. Sin embargo s que se puede hacer que se absorban un cierto grado las perturbaciones, el siguiente apartado explicar la solucin que se ha obtenido. a o

5.1.3.

Modicacin del algoritmo ZMP o

El problema principal reside en que el seguimiento de las trayectorias se realiza con ganancias muy altas, no se absorben las perturbaciones y por tanto se desequilibra. De hecho, cada articulacin est congurada para suministrar el par mximo (100 %) en caso de ser o a a necesario. Este comportamiento no se corresponde al humano, en que las articulaciones se puede considerar que no hacen un seguimiento con altas ganancias. Hay mltiples investigau ciones al respecto, pero [9] es de especial inters al centrarse espec e camente en la aplicacin o a Nao. Una solucin a esta problemtica es limitar el par mximo aplicado a cada articulacin. o a a o Esto se puede realizar directamente en Nao gracias al parmetro stiness (rigidez) de cada a articulacin. La stiness representa qu fraccin en tanto por uno del par mximo se aplicar. o e o a a Es una saturacin de la salida del controlador del motor que permite un seguimiento de la o trayectoria ms suave, y a la vez absorber las perturbaciones y estabilizar el sistema. a Despus de mltiples ensayos experimentales iterativos, se lleg a una conguracin de e u o o stiness que permit estabilizar la locomocin, que se muestra en la Tabla 5.1. Respecto a a o los parmetros de conguracin extra se establecieron los que se muestran en la Tabla 5.2. En a o la Figura 5.4 se muesta una captura de la interfaz que se ha creado para controlar ALWalk con los parmetros citados. a El procedimiento de ajuste ha sido el siguiente: Para disminuir la inestabilidad se ha reducido la altura de las caderas al m nimo. Las inestabilidades se deben a que los pies no se apoyan bien sobre el suelo, y lo desequilibran. Para solucionar este problema se baj mucho la stiness para que se o pudieran absorber las perturbaciones, y as evitar un comportamiento r gido.
Rigidez. Se usarn indistintamente los dos trminos, ya que en la bibliograf el trmino ingls stiness a e a e e est ampliamente usado. a
1

50

Locomocin b o peda del robot humanoide Nao

Articulacin o Brazos HipYawPitch R/LHipPitch R/LHipRoll R/LKneePitch R/LAnkleRoll R/LAnklePitch

Stiness 0,1 0,6 0,7 0,3 0,3 0,3 0,2

Tabla 5.1: Conguracin de Stiness para cada articulacin o o

Parmetro a pMaxStepLenght pMaxStepSide pTorsoYOrientation pZmpOsetX pRHipRollBacklashCompensator

Valor 0,04 0,02 0,0 0,0 0,0

Parmetro a pMaxStepHeight pMaxStepTurn pHipHeight pZmpOsetY pLHipRollBacklashCompensator

Valor 0,025 0,3 0,0 0,0 0,0

Tabla 5.2: Conguracin de parmetros extra o a

Figura 5.4: Pantalla de la GUI para la conguracin de ALWalk o

Tambin se baj la stiness de las rodillas y del movimiento lateral de las caderas para e o hacer un movimiento ms suave, como si fueran muelles. a La stiness del movimiento frontal de caderas no se puede bajar, ya que es la encargada de mantener erguido el cuerpo. Como se ha reducido mucho la fuerza en los pies y rodillas, el robot tiende a caerse. Para estabilizar el movimiento hay que asegurar que el robot est siempre encima de e los pies, para asegurar la estabilidad. Esto se consigue haciendo pasos cortos. Para que los pies no toquen el suelo siempre hay que imponer una cierta altura en el paso.

5. Diseo del algoritmo de locomocin para el robot Nao n o

51

La inclinacin del torso tiene que ser aquella que haga que el robot no bascule hacia o adelante ni hacia atrs, sino que se mantenga en la posicin vertical. a o Se observa que los movimientos lentos son perjudiciales, dan tiempo a que el sistema se inestabilice. Si se hace el movimiento ms rpido no slo se consigue aumentar la a a o velocidad de translacin, sino la estabilidad. Esta idea se usa por ejemplo en el robot o BigDog. Estos parmetros dieron como resultado una locomocin estable y robusta, tal como se a o puede ver en el v deo [5.1.3 ALWalk low-stifness, velocidad alta]. Adems se produjo una a mejora sustancial en las prestaciones de la locomocin, que se analizarn en el siguiente o a cap tulo. La aproximacin mencionada en este apartado es una modicacin del algoritmo que ya o o viene incorporado con Nao, no es en s mismo un algoritmo nuevo. La formulacin ZMP es o ampliamente conocida e investigada, con los problemas mencionados anteriormente. As se , decide iniciar otra v de investigacin basada en el aprovechamiento de las dinmicas propias a o a del sistema, para poder comparar los resultados con los ya encontrados.

5.2.

Sammys Walk : Dise o de un algoritmo de locomocin n o b peda

La naturalidad del estilo de caminar de los passive walkers resulta sorprendente. Adems, a el hecho de que los robots tengan un consumo tan bajo los convierte en un modelo a seguir. El algoritmo que se propone a continuacin tiene el objetivo de producir una locomocin estable o o para Nao a partir del control del robot, suponiendo el comportamiento de este como dos pndulos unidos. Se buscar un estilo de control ms prximo al control clsico de dimensiones e a a o a reducidas, ya que de hecho la locomocin es un ciclo l o mite estable que se da en un sistema no lineal. Este proyecto se propone como objetivos para conseguir una locomocin tipo dynamic o walking: Inducir el ciclo l mite que provoque la locomocin. o Hacer que las rbitas del ciclo l o mite tengan un espacio de atraccin mayor, es decir, o estabilizar la locomocin. o Aprovechar las dinmicas propias del sistema para reducir la energ consumida (este a a punto se tendr ms en cuenta en un anlisis de prestaciones posterior que en el propio a a a desarrollo). Aplicar leyes de control que se correspondan a reacciones lgicas que realizamos los o humanos, no necesariamente buscar algoritmos basados en formulaciones matemticas a complejas. Aunque hay muchos trabajos tericos que tienen este esp o ritu (por ejemplo [7][11]), las implementaciones en robots reales son escasas. Este proyecto se parecer en forma a otros a

52

Locomocin b o peda del robot humanoide Nao

y tomar ideas de ellos, pero a su vez diferir de todos. Dado que este desarrollo es relaa a tivamente novedoso, es de esperar que no se consiga madurar sucientemente para obtener resultados comparables a otros ya existentes. Sin embargo puede suponer un buen comienzo para investigaciones futuras. Tambin es de esperar que ciertos resultados tericos no se puedan aplicar a la prctica e o a sobre el robot real. Por tanto a medida que avance la investigacin se irn indicando los o a problemas que se encuentren y sus posibles soluciones. Como inspiracin se tomarn ideas de la locomocin pasiva (no se usar la losof de o a o a a crear trayectorias tipo ZMP, sino inducir ciclos l mite), algoritmo SIMBICON (control por mquina de estados), BigDog (pasos rpidos, controlando con la posicin del siguiente paso, a a o simetr marcha humana (ngulos articulares) y otras que se irn explicando durante el a), a a desarrollo.

5.2.1.

Induccin de un ciclo l o mite

Caminar en l nea recta es de hecho la superposicin sincronizada de dos movimientos: o Oscilacin lateral. o Avance. En primer lugar se buscar inducir una oscilacin lateral y sobre sta se buscar sobreponer a o e a el movimiento de avance. Para generar las trayectorias se opta por utilizar una mquina de estados que alterne a entre diferentes posturas. Este algoritmo es el que se usa en SIMBICON [27]. Sin embargo, SIMBICON no se ha implementado en robots reales, as que su aplicacin en Nao es una o novedad. Adems, no se usar directamente, sino que slo se coger el concepto. a a o a Existen otros robots, como por ejemplo Spring Flamingo [20], que tambin usan una e mquina de estados. Sin embargo, este robot en concreto slo se mueve en una direccin, ya a o o que el movimiento lateral est bloqueado, y tambin proviene de una formulacin matemtica a e o a compleja. En el v deo [5.2.1 Spring Flamingo] se puede ver su comportamiento. La mquina de estados implementada es la descrita en la Figura 5.5. Se usarn tres a a estados por fase de soporte para poder tener un mayor control. Ya que se pretende lograr un movimiento rectil neo, los estados para la fase de soporte izquierdo 1, 2, 3 sern simtricos a a e los de la fase de soporte derecho 4, 5, 6. As que realmente la locomocin se genera a partir de o tres estados. El paso de los estados 1 2 (4 5) y de 2 3 (5 6) se producir despus a e de un tiempo determinado ajustable. El paso de 3 4 se producir con un evento externo a de sincronismo, el impacto del pie derecho (de 6 1 pie izquierdo)2 . Cada postura ser una a conguracin articular del robot. o Asimismo, har falta denir la evolucin de un estado a otro. Si los cambios se hacen a o directos, Nao usa el par mximo disponible y provoca movimientos muy bruscos e indeseables. a Si se aplica el mtodo de reduccin de stiness el robot pierde fuerza. Los movimientos e o continan siendo muy rpidos, pero llega un punto en que si se reduce ms, no es capaz de u a a levantarse. No hay un punto intermedio que logre un movimiento suave.
2

Para detectarlo se usarn los sensores de fuerza que Nao incorpora en los pies. a

5. Diseo del algoritmo de locomocin 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 transicin 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: Mquina de estados a

El algoritmo SIMBICON usaba para la generacin de estas trayectorias un controlador o PD, ajustado de tal forma que los movimientos fueran suaves. Las articulaciones de Nao estn en principio controladas por un controlador tipo PID, de parmetros congurables. a a Sin embargo, tras realizar diferentes pruebas se comprueba que el ajuste de los supuesto parmetros Kp , Ki , y Kd no da los resultados que se esperar a an. La documentacin no da o detalles concretos si realmente es un PID ni de su estructura. Por tanto, la ultima opcin que o queda es usar algn tipo de interpolacin. En vez de usar algn tipo de ajuste tipo polinmico u o u o o curvas bzier que son relativamente complejos, se escoge otra opcin que ha dado grandes e o resultados. Las consignas de las articulaciones, al venir de la mquina de estados, son de hecho a escalones. Para suavizarlos se puede usar un ltro pasa bajos. Para evitar que en el instante que se produce el escaln ya haya salida, se usar un ltro simple de segundo orden, con dos o a polos reales. Se ha escogido de tal forma que tenga ganancia unitaria ante entradas escaln. o As la funcin de transferencia discreta del ltro ser: , o a (1 a)2 z , (z a)2

G(z) =

a R,

0<a<1

(5.1)

54

Locomocin b o peda del robot humanoide Nao

donde a es la posicin del polo en el eje real, un parmetro ajustable que regula el tiempo en o a que se llega al valor nal. Se escoge la posicin del polo tal que tenga mdulo menor que 1 o o (estable), que sea real y positivo para que no haya oscilaciones. Si a 1, el comportamiento ser ms lento, si a 0 el comportamiento ser ms rpido. a a a a a Recordamos que el cdigo en tiempo real que se ejecutar en Nao tiene un per o a odo de 20ms. Con este tiempo de muestreo, la Figura 5.6 muestra la respuesta del ltro para una entrada escaln unitario para varios valores del parmetro a. o a

Figura 5.6: Respuesta del ltro pasabajos al escaln unitario o

Ahora que ya est denida la estructura del algoritmo, se proceder a su implementacin. a a o

5.2.2.

Simulacin 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. Esto deber permitir un mayor rapidez en las a pruebas de parmetros y mayor seguridad, ya que aunque el robot se caiga es una simulacin. a o Aunque la programacin es relativamente sencilla, solventar las limitaciones de la versin o o demostracin y aprender los comandos espec o cos de Webots, la estructura de programa, la conguracin de las simulaciones desde cero no fue tarea fcil. o a Entre otros se afrontaron los siguientes desaf os: Aprendizaje de la metodolog de programacin de Webots, y del robot simulado. a o Desarrollo de la primera versin del algoritmo Sammys Walk. o

5. Diseo del algoritmo de locomocin para el robot Nao n o

55

Para la locomocin resulta un punto clave el contacto con el suelo. Al ir a buscar o oscilaciones del sistema f sico, y no solamente movimientos lentos, se apreciaba que el contacto con el suelo provocaba comportamientos aleatorios indeseados. Tras bastantes pruebas iterativas se consigui inducir una oscilacin lateral (ver v o o deo [5.2.2 Simulacin con Webots: Oscilacin lateral estable]), y tambin que el robot caminara o o e de forma estable relativamente rpido (ver v a deo [5.2.2 Simulacin con Webots: Marcha]). o El problema fue cuando se pas a la implementacin en el robot. El comportamiento era o o totalmente diferente, cuando en Webots caminaba bien, el robot real se ca estrepitosamente. a Estas diferencias del robot real respecto al simulado se pueden deber a mltiples motivos, u como por ejemplo: Desviaciones el los parmetros del modelo respecto al robot real. a Errores numricos de la simulacin. e o Imprecisiones en el modelo. Se aprecia por ejemplo que los pies en el robot simulado son de base rectangular mientras que el robot real tienen una curvatura. Este aspecto es muy relevante. Imperfecciones del robot real. Las articulaciones y sus controladores no son perfectos, tienen juego mecnico, y existen deformaciones en las articulaciones. a La supercie de contacto es un parmetro que var mucho el comportamiento del robot, a a y es muy dif encontrar una correspondencia entre el modelo y el comportamiento del cil suelo real. Por tanto, esta v no resulta prctica para el desarrollo del robot real. La liga Robocup que a a usa Webots tiene movimientos mucho ms estticos, y por tanto muchos de estos problemas a a no se afrontan. Pero para este proyecto se dejar de usar el simulador, y se harn las pruebas a a directamente con el robot f sico, ya que se tiene acceso a l. e

5.2.3.

Oscilacin lateral o

Tal como se ha explicado anteriormente, el objetivo es inducir una oscilacin lateral o estable, y cruzarla con el movimiento de avance para de esta forma inducir un ciclo l mite estable que provoque la locomocin. En un principio se usarn unicamente las piernas, los o a brazos se tratarn posteriormente. La oscilacin lateral se pretende inducir unicamente con a o movimientos laterales (sin doblar las rodillas por ejemplo), es decir, con las articulaciones roll del robot. Para inducir la oscilacin lateral, hay que hacer primero un pequeo anlisis del como n a portamiento del sistema. El sistema es equivalente a dos pndulos invertidos, mientras se e est apoyado sobre un pie, el derecho por ejemplo, el sistema tiende a caerse. Si se cae hacia a el lado del pie izquierdo, se producir una transferencia de peso y pasar a estar apoyado a a sobre este ultimo. Entonces el comportamiento del sistema cambia y pasa a moverse como otro pndulo, esta vez con la base en el pie izquierdo. e

56

Locomocin b o peda del robot humanoide Nao

Sin embargo, es un sistema sobre el que se puede actuar. Como los pies tienen cierta supercie, la reaccin del suelo no necesariamente est colocada sobre el centro, puede estar o a en los laterales. Esto hace que la articulacin de los pies pueda ejercer un momento limitado o sobre el cuerpo, que se puede controlar. Adems, haciendo cambios en las articulaciones se a pueden hacer cambios en los parmetros bsicos del pndulo, por ejemplo su longitud, y a a e as modicar su dinmica. Tambin hay que recordar que en el momento del impacto de cada a e pie se producen prdidas de energ y por tanto el movimiento se ir amortiguando. e a, a Las ideas que se ha seguido para inducir la oscilacin lateral con un coste de energ o a m nimo son las siguientes, provenientes del control y el conocimiento de los sistemas f sicos: Los sistemas f sicos tienen frecuencias propias de oscilacin, fp . o Si el sistema se excita a frecuencias parecidas a fp , se tender a mantener la oscilacin. a o En un principio, si la energ aportada por la oscilacin es insuciente, esta se extinguir. a o a Si se aumenta la energ puede llegar un momento que se automantenga. Si nalmente a se aporta todav ms energ o a frecuencias muy prximas a la frecuencia propia, el a a a, o sistema puede llegar a convertirse en inestable. As en primer lugar se analizar cul es la frecuencia propia de oscilacin lateral del , a a o sistema. En un pndulo normal, la frecuencia de oscilacin para ngulos pequeos es de: e o a n l , g 1 2 g l

T = 2

f=

(5.2)

donde T es el per odo de oscilacin, f la frecuencia, l la longitud del pndulo y g la gravedad. o e Para ngulos pequeos, la frecuencia no depende de la amplitud, para ngulos mayores s a n a . Aunque el comportamiento del robot no se corresponde al de un pndulo (es de hecho un e doble pndulo inverso), se espera encontrar un comportamiento similar: al disminuir la altura e del robot la frecuencia deber aumentar, y al aumentar la amplitud (apertura de las piernas) a deber disminuir. a Los experimentos se realizarn levantando el robot de un pie y dejndolo caer, grabando a a la informacin de los sensores inerciales. En concreto se obtendr la informacin del ngulo o a o a de inclinacin respecto la vertical, la velocidad angular y la aceleracin en la misma direccin. o o o Estos resultados se analizar por medio de una FFT3 para obtener la frecuencia propia. a En primer lugar se realizar el experimento con el robot totalmente de pie, y las piernas a paralelas (apertura 0o ) En la Figura 5.7 se pueden ver los grcos, y en [5.2.3 Oscilacin a o lateral propia] el v deo del experimento. La inclinacin respecto a la oscilacin 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 aceleracin y la velocidad angular para calcular el ngulo. Se observa que tiene una cierta o a deriva, aunque no afecta al comportamiento dinmico. La velocidad angular no es una medida a directa, sino que cada unidad corresponde aproximadamente a 1/2,7 /s. Esta medida se muestra la mejor para obtener la frecuencia de oscilacin. La aceleracin tampoco da una o o
3

Fast Fourier Tranform, transformada rpida de Fourier. a

5. Diseo del algoritmo de locomocin para el robot Nao n o

57

Figura 5.7: Auto-oscilacin con el robot de pie, apertura de las piernas 0o , altura caderas 26cm o

58

Locomocin b o peda del robot humanoide Nao

medida directa del valor, aproximadamente un valor de 56 equivale a g (9, 8m/s2 ). Como tampoco es importante el valor absoluto, no se han corregido. La aceleracin se observa que o tiene mucho ruido, y su espectro no es como se esperar De los anlisis frecuenciales se ve a. a que la frecuencia de oscilacin es de fp = 2, 38hz, y por tanto Tp = 420ms. o Se han hecho experimentos para aperturas entre piernas de 10o y 20o (manteniendo el robot totalmente erguido). Tambin se han hecho pruebas para el robot un poco agachado e (ngulo de la articulacin de la rodilla de 60o ) y muy agachado (ngulo de la articulacin de a o a o la rodilla de 120o ). Los resultados se muestran en la Tabla 5.3, y los grcos en la Figura 5.8: a Apertura piernas Frecuencia oscilacin o Altura caderas Frecuencia oscilacin o 0o 2, 38hz 26cm 2, 38hz 10o 2, 38hz 23cm 2, 42hz 20o 2, 38hz 17cm 2, 42hz

Tabla 5.3: Frecuencia de oscilacin segn conguracin o u o

Se observa que los valores son todos muy similares, no se aprecian variaciones sustanciales por los cambios de conguracin. Aunque s parece que al bajar el centro de masa la frecuencia o aumenta ligeramente, la diferencia es muy baja. Por tanto se toma como frecuencia propia de oscilacin del sistema fp = 2, 38hz. Se tomar como conguracin base el robot totalmente o a o erguido, ya que en esa posicin los pares necesarios en las articulaciones de rodillas, caderas y o pies son menores. Por el mismo motivo se tomar de apertura de piernas 0o (piernas paralelas). a A partir de este valor de frecuencia se pueden sacar fcilmente los primeros valores tentaa tivos de la conguracin de la mquina de estados. Es de suponer que si se excita el sistema a o a la frecuencia propia, este se volver inestable. En primer lugar se excitar para una frecuencia a a menor de f = fp /2 1, 2hz, escogida de forma arbitraria. En este caso el per odo ser de a T = 840ms. Con este tiempo de ciclo, la mitad de un paso ser aproximadamente 420ms. Rea cordemos que el paso del estado 3 4 viene dado por un evento, no por un tiempo, as que no se puede imponer directamente, pero s es de esperar que este tiempo sea pequeo cuando el n sistema est oscilando de forma nominal. As se tomar t1 = t4 = 150ms, y t2 = t5 = 150ms e , a de forma arbitraria para que se cumpla aproximadamente el per odo encontrado. Respecto al parmetro a, que es la velocidad con que se llega a los estados, se optar por a a una dinmica lenta. No se pretende que se llegue a la conguracin nal en cada estado, sino a o encadenarlos de forma suave. Se toma en primera instancia un valor de a = 0, 8, para que as en el tiempo que dura cada estado no se logre llegar al valor nal (ver Figura 5.6 para ver la respuesta del ltro). Ahora slo es necesario denir los estados articulares. Estos se denirn unicamente para o a las piernas, y para la mitad de ciclo, ya que para la otra se imponen simtricos. Tal como se e mencion anteriormente, slo se usarn los movimientos laterales, es decir las articulaciones o o a R/LAnkleRoll y R/LHipRoll. Como criterio estil stico se impondr que los movimientos de a ambas piernas sean paralelos, es decir, que a partir de una apertura de piernas dada, el movimiento sea igual para ambas piernas. As que idealmente en este plano slo se tiene un o grado de libertad, la inclinacin de las piernas, (ver Figura 5.9). o Se puede observar que la transferencia de peso se realiza aproximadamente cuando el valor

5. Diseo del algoritmo de locomocin para el robot Nao n o

59

(a) Erguido, apertura piernas 10o

(b) Erguido, apertura piernas 20o

(c) Agachado, altura caderas 23cm

(d) Agachado, altura caderas 17cm

Figura 5.8: Frecuencia de oscilacin segn conguracin o u o

60

Locomocin b o peda del robot humanoide Nao

Figura 5.9: Movimiento lateral

= 20o . Como en el estado no se llega al valor nal, se impondr para el estado 1 1 = 30o , y a para el resto de estados se asigna de forma intuitiva los valores 2 = 10o , 3 = 0o , 4 = 30o , 5 = 10o , 6 = 0o . Estos parmetros tambin se toman inspirados en los equivalentes para a e el cuerpo humano. Despus de todo este razonamiento llega el momento de probarlo en el sistema, y en este e momento se produce la magia. El sistema empieza a oscilar de forma estable haciendo un movimiento de vaivn (ver Figura 5.11 y 5.12, y el v e deo [5.2.3 Balanceo lateral estable]). Aunque se ha impuesto que las piernas tengan un movimiento paralelo y ser de esperar que a el torso estuviera vertical durante el movimiento, debido a los huelgos de las articulaciones y a que los controladores de bajo nivel en las articulaciones tienen tambin su error de e seguimiento. As se ha logrado inducir un ciclo l , mite estable en la oscilacin lateral. Este o se ha representado en la Figura 5.10 (el eje de velocidad se muestra la medida del sensor sin unidades). Tiene una frecuencia f = 1, 373hz, T = 728ms. Uno de los motivos que funcione bien, y que permite inducir y estabilizar el ciclo l mite, es que los estados 3 y 6 se sincronizan con la evolucin del sistema. o Ahora se explorar los l a mites del parmetro . Si se cogen valores mayores a 40o , el robot a cae hacia uno de los lados, con valores inferiores a 15o la oscilacin no llega a levantar los o pies, por tanto insuciente. Respecto a los parmetros de tiempo ti , tanto si se aumentan a como si se disminuyen la oscilacin o se vuelve inestable, o golpea de forma brusca con el o suelo. Para entender mejor la dinmica del robot con este algoritmo hay que hacer un anlisis a a ms profundo. El sistema se puede considerar formado por varios bloques: a Mquina a de estados
G Generador de G Sistema f sico

trayectorias

o G Oscilacin f sica

5. Diseo del algoritmo de locomocin para el robot Nao n o

61

Figura 5.10: Ciclo l mite lateral

62

Locomocin b o peda del robot humanoide Nao

Figura 5.11: Oscilaciones laterales inducidas Angulo X respecto la vertical

Figura 5.12: Oscilaciones laterales inducidas Velocidad angular X

5. Diseo del algoritmo de locomocin para el robot Nao n o

63

La mquina de estados se puede considerar un oscilador con una cierta frecuencia y a amplitud, y los sucesivos bloques presentaran sus dinmicas propias, modicando en amplitud a y fase la oscilacin original. En concreto, el generador de trayectorias presentar un desfase o a importante para valores de a cercanos a la unidad (para la frecuencia de oscilacin descrita o anteriormente, y un valor de a = 0, 9, el desfase es mayor a 200ms). El sistema f sico, el robot, tambin presentar un cierto desfase, y por tanto la oscilacin real no se corresponder a la e a o a de la mquina de estados. a Este punto resulta un problema, ya que la mquina de estados est concebida para que a a en cada estado el sistema est en una conguracin determinada. Se podr hacer un anlisis e o a a terico para determinar los retardos de cada bloque, y corregirlo de tal forma que la mquio a na de estados estuviera en fase con la oscilacin inducida deseada. Sin embargo, de forma o experimental se puede corregir ms fcilmente. a a Para que se de este sincronismo, el tercer estado de la mquina de estados debe ser a tal que el robot se est moviendo hacia su derecha, apoyado en su pie izquierdo, y el pie e derecho impacte, pasando as al cuarto estado. Haciendo un anlisis temporal de las variables a implicadas (estado, velocidad angular, contacto de los pies) se observa que el impacto del pie derecho se produce en el segundo estado. Para corregir este problema y sincronizar la mquina a de estados con la oscilacin del robot basta con desplazar los estados, hacer que el primero o sea el segundo, el segundo el tercero, y el tercero el primero. De esta forma se consigue que en el tercer estado el robot est sobre el pie izquierdo, se est moviendo hacia la derecha y el e e pie derecho impacte en el suelo, tal como se dise inicialmente. La contrapartida es que se no pierde un poco de vista en la conguracin de la mquina de estados el signicado f o a sico de los valores, al no corresponderse directamente. Haciendo un ajuste manual ms no se llega a la siguiente conguracin de parmetros a o a que realizan un movimiento suave y estable: 1 = 4 = 0o , 2 = 5 = 30o , 3 = 6 = 0o , t1 = t4 = 100ms, t2 = t5 = 150ms, a = 0, 9. Con estos parmetros se produce una a oscilacin un poco ms rpida (f = 1, 65hz, T = 605ms), pero que resulta ms estable ante o a a a perturbaciones, y tiene menor amplitud. Para vericar la robustez y los l mites de atraccin de las rbitas se opta por dar golpes al o o robot en momentos determinados y ver su comportamiento. Las pruebas se pueden ver en el v deo [5.2.3 Respuesta a perturbaciones externas]. Para pequeas perturbaciones el sistema n se vuelve a estabilizar. Resulta interesante ver el consumo energtico para esta oscilacin (ver Figura 5.13). Al e o principio, cuando el robot se levanta, el pico de intensidad llega casi a 2,6A, despus va e disminuyendo hasta 1,3A. Para ver el consumo de intensidad empleado en la locomocin hay o que restarle el consumo de la CPU, controladores y dems elementos no activos. Si se apagan a totalmente los motores, el consumo de estos elementos es de 0,95A. Por tanto el consumo empleado en la locomocin mecnica es solamente de Im = 0, 35A (aproximadamente la o a mitad que cuando caminaba con el algoritmo ZMP y low-stiness). Se observa que al tener en cuenta las frecuencias propias del sistema se consigue un consumo energtico muy reducido. e El aspecto del consumo se tratar posteriormente en el cap a tulo 6 de anlisis de prestaciones. a Ahora se tratar el tema de cmo ampliar la atraccin del ciclo l a o o mite para hacerlo ms a robusto.

64

Locomocin b o peda del robot humanoide Nao

Figura 5.13: Intensidad consumida en la oscilacin lateral inducida o

5. Diseo del algoritmo de locomocin para el robot Nao n o

65

5.2.4.

Incremento de la estabilidad del ciclo l mite

En [10] se encuentra una investigacin interesante sobre como estabilizar el movimiento o lateral en un caminador pasivo. Los diferentes mtodos expuestos se pueden resumir en: e 1. Control directo por realimentacin de estado. o 2. Cambio en la posicin del siguiente paso. A partir de una medida de la perturbacin o o se corrige la conguracin de la pierna para estabilizar el paso. Las ecuaciones usadas o son: 1 1 2 2 2 E = Ix x x = Ix x + 2x x (5.3) 2 2 donde E es la energ de la perturbacin que se supone instantnea, x la velocidad a o a angular de la trayectoria nominal para la conguracin dada, x la velocidad angular o actual con la perturbacin, x = x x , y Ix la inercia. Esta correccin presupone o o que el sistema pueda contrarrestar de forma quasi-instantnea la perturbacin (a partir a o de un cambio de conguracin que reduzca en el mismo valor la energ potencial por o a ejemplo). 3. Uso de una rueda de reaccin en el torso para estabilizarlo. o 4. Cambio en la inclinacin del torso. o 5. Actuacin lateral en los tobillos. o 6. Cambio del ancho del paso. 7. Disminucin de la stiness de los tobillos lateralmente para absorber las perturbaciones. o En la aplicacin prctica a Nao y al ciclo l o a mite ya inducido, se pueden hacer los siguientes comentarios sobre cada mtodo: e 1. Esta v ya se descart en el planteamiento inicial. a o 2. La medida exacta de la perturbacin es inviable con los sensores que se disponen. La o implementacin directa de esta manera es inviable, y una posible compensacin dif o o cil. 3. No se dispone de este mecanismo. 4. Esta opcin puede resultar viable. o 5. De hecho, este mtodo es el usado para inducir el ciclo l e mite y estabilizarlo. Ahora lo que se requiere es aumentar la estabilidad. 6. Esta opcin puede resultar viable. o 7. El propio art culo expone que no es un mtodo viable. Se ha probado de todas formas, e y las consecuencias son que como se pierde actuacin, la oscilacin lateral se amortigua, o o y tampoco se consigue el efecto deseado de aumentar la estabilidad.

66

Locomocin b o peda del robot humanoide Nao

En esta aproximacin se usar la tcnica de modicar la longitud del paso. Una reexin o a e o sobre la mecnica del movimiento puede dar ideas de cmo reaccionar ante una perturbacin. a o o Suponiendo que el movimiento se realiza en el plano lateral, 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. En el ciclo l mite nominal para cada fase hay una energ cintica determinada, a e que se va intercambiando con la potencial. Tal como se mencion en el segundo punto, una o perturbacin se puede considerar una variacin en la energ cintica de rotacin, esto es, una o o a e o variacin en la velocidad angular. Si la perturbacin hace incrementar la velocidad angular (y o o la energ es posible que en el siguiente paso el robot se caiga hacia afuera. Si la velocidad a), angular disminuye, no tendr suciente energ y acabe cayendo hacia adentro del paso. a a Si la energ ha aumentado, es necesario que el siguiente paso sea ms abierto, para que a a de esta forma cuando el otro pie entre en contacto tenga un recorrido mayor, es decir, tenga que utilizar ms energ potencial, y viceversa. En el Figura 5.14 se ilustra esta idea. a a

Figura 5.14: Diagrama de correccin del ancho de paso o

Existe una posibilidad en que es necesario modicar esta idea. Si se imagina que el robot est apoyado sobre su pie derecho, y se est cayendo muy rpido hacia su derecha no se a a a arregla nada abriendo ms el paso, ya que acabar cayendo hacia afuera. En este caso la a a correccin lgica ser cruzar las piernas sin que colisionen para colocar el siguiente paso o o a ms a la derecha. Este comportamiento requiere una planicacin ya que pretende corregir a o perturbaciones muy grandes, y no se considerar en este estudio. El objetivo de este apartado a es aumentar la regin de atraccin del ciclo l o o mite ya inducido para pequeas perturbaciones, n y para estas el mtodo planteado es vlido. e a En la ecuacin 5.3 se muestra el incremento de energ cintica de la perturbacin. x se o a e o se puede medir con los sensores puede determinar a partir de un anlisis del ciclo l a mite, x on-line. Este incremento de energ cintica debe corregirse idealmente con un incremento a e idntico en la energ potencial del siguiente paso. El trabajo [10] previamente citado propone e a esta idea, con una formulacin que se expone aqu de forma simplicada: o Ep = m g h = m g L(q) cos() (5.4)

donde Ep es la energ potencial del sistema, m la masa, g la gravedad, L(q) la distancia a entre la base del pie soporte y el centro de masa, que depende de la conguracin del robot q. o Suponiendo que aproximadamente L es constante, se puede calcular el incremento diferencial en la energ potencial como: a Ep m g L sin() (5.5)

5. Diseo del algoritmo de locomocin para el robot Nao n o

67

Imponiendo que este incremento de energ sea igual al de la perturbacin, se obtiene: a o =


1 2 2 Ix x + 2x x x + 2x x E = 2 = k m g L sin() m g L sin() sin()

(5.6)

Este planteamiento presenta varios problemas. Ya que es una aproximacin diferencial, o para la conguracin = 0 no se puede resolver. Adems, desde el punto de vista de la o a implementacin prctica, los datos provienen de sensores, con su consecuente ruido. Hacer o a operaciones como divisiones entre un nmero cercano al cero y cuadrados en el denominador u traern problemas numricos e inestabilidades, que se han corroborado con diversas pruebas. a e De este planteamiento se puede extraer que para corregir una velocidad angular diferente de la nominal hay que modicar la apertura de la pierna libre en un ngulo que a entre otras cosas. Sin embargo, el objetivo no era absorber la depende del cuadrado de perturbacin totalmente, sino lo suciente como para que se regrese al ciclo l o mite. Adems, a dado el enfoque claramente experimental de este trabajo y las limitaciones que presentan los sensores, se opta por otra solucin. o La correccin implementada har una correccin en la apertura de la pierna proporcional o a o a la desviacin de la velocidad angular respecto a la nominal: o
qHipRoll = qAnkleRoll = k (x x )

(5.7)

donde qHipRoll es una variacin en el ngulo de la articulacin de movimiento lateral de la o a o cadera de la pierna libre, qAnkleRoll dem para la articulacin lateral en el tobillo libre. Se o aplica a ambas articulaciones para imponer que el pie sea en la medida de lo posible paralelo al suelo. Esta variacin del ngulo no se pasar por el ltro de generacin de trayectorias o a a o (ya que con el retraso existente volver inestable el sistema), sino que se sumar a ste. La a a e constante k se determinar ajustndola de forma experimental para que el sistema tenga un a a buen comportamiento. Adems, se aplicar una zona muerta para evitar pequeas oscilaciones a a n indesables. x ser directamente la medida del girscopo, ltrado por una media mvil de a o o ancho 3 para eliminar un poco los ruidos. Para obtener la velocidad del ciclo l mite nominal, x , se tomar un valor aproximado correspondiente al valor medio para cada estado. As x,i a , ser funcin del estado i. Para determinar sus valores se har la media entre el valor inicial y a o a nal para cada estado durante varios ciclos, y la media de todos ellos. Los valores obtenidos de la medida directa de los sensores son (en la Figura 5.15 se muestra una grca con los a datos origen para realizar estos clculos): a 1 2 3 -200,8 42,5 188,0 4 5 6 173,7 -28,5 -249,3

Tabla 5.4: Valores de la velocidad angular segn el estado u

Experimentalmente se determina un valor de k = 0, 02 y una zona muerta de 3o como valores que coneren estabilidad sin provocar autoosilaciones por ruido de los sensores. La bondad de los resultados se puede ver en el v deo [5.2.4 Estabilizacin movimiento lateral]. o Haciendo las mismas pruebas de provocar perturbaciones se comprueba el mejor comportamiento, ya que la realimentacin de velocidad provoca una correccin predictiva. El espacio de o o

68

Locomocin b o peda del robot humanoide Nao

Figura 5.15: Oscilacin lateral nominal o

5. Diseo del algoritmo de locomocin para el robot Nao n o

69

estados obtenido se representa en la Figura 5.16, donde se aprecia claramente que las rbitas o de atraccin son mayores. Una vez conseguido este punto, el siguiente apartado tratar cmo o a o superponer el movimiento de avance.

Figura 5.16: Espacio de estados ante perturbaciones con correccin velocidad o

5.2.5.

Sincronismo con movimiento de avance

Para cruzar la oscilacin lateral con el avance es necesario que cuando un pie est levantado o a se mueva hacia delante. Tal como se vio en la Figura 5.5b, es de esperar que en el estado 1 y 2 el robot est apoyado sobre el pie izquierdo, y por tanto se pueda avanzar el derecho. e De forma anloga, en los estados 4 y 5 el robot es de esperar que est apoyado sobre el pie a e derecho, y por tanto se avance el derecho. Sin embargo, tal como se discuti en el apartado anterior, la mquina de estados concebida o a inicialmente no est en fase con la oscilacin f a o sica. Por tanto se impondr que la pierna a oscilante avance (y la ja retroceda) en el mismo momento que el apoyo est totalmente e ubicado en la pierna soporte. Esto se produc en los estados 2 y 4. a Por tanto, se impondr en el estado 2 que el valor deseado para la articulacin frontal de a o la cadera de pierna oscilante sean -20o (hacia delante), la rodilla doblada 20o , y el tobillo recto para que permanezca paralelo al suelo. La pierna soporte se impondr un comportamiento a

70

Locomocin b o peda del robot humanoide Nao

parecido hacia atrs: cadera hacia atrs 20o , rodilla recta, tobillo -20o para que est paralelo a a e al suelo (ver Figura 5.17). En los estados 1 y 3 se dejaran las piernas rectas, al ser estados de transicin. o

20 20

20

20
Figura 5.17: Conguracin de las piernas para el avance o

Con estos parmetros congurados, se prueba el comportamiento. El resultado es que a el robot empieza a caminar, tal como se puede ver en el v deo [5.2.5 Nao caminando con algoritmo Sammys Walk].

5.2.6.

Mejoras estil sticas y de estabilidad

Para mejorar la estabilidad del avance se han probado mltiples soluciones. El problema u principal es que en el plano frontal el movimiento es muy inestable. En primer lugar se pens en usar el mismo concepto que con SIMBICON, que el torso y la o pierna oscilante tengan como referencia el sistema mundo. Esto implica corregir instantneaa mente la posicin de las piernas y el torso en funcin de los sensores inerciales. Cuando se o o prob esto el sistema se puso a oscilar de forma violenta. Hay que tener en cuenta que existe o un retraso entre que se recibe la informacin de los sensores y se acta, y ste es suciente coo u e mo para inestabilizar el movimiento. Adems, la oscilacin en las medidas provoca pequeas a o n oscilaciones de alta frecuencia en los motores. Si se aplica un ltro como una media mvil o estrecha para evitarlo, se incrementa el retraso y la inestabilidad. Otra opcin que se ha probado es corregir la posicin de la pierna oscilante en funcin de la o o o velocidad angular del torso, de modo parecido a como se hace lateralmente. Esto ha provocado tambin inestabilidades, y para ganancias bajas no era suciente como para estabilizar el e movimiento. Tambin se ha intentado reducir la stiness de los tobillos para absorber perturbaciones, e tal como se hizo con el algoritmo ZMP. Si se pon un valor muy bajo el robot se ca porque a a era incapaz de mantenerse en pie, y con valores medios/altos continuaba inestable. Finalmente se pens en usar la informacin de los sensores de los pies para averiguar o o

5. Diseo del algoritmo de locomocin para el robot Nao n o

71

hacia donde se estaba cayendo el robot, y as poder corregirlo. Se hizo un ajuste muy no de cada sensor individualmente en esttico, 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. Si se notaba que el robot se inclinaba mucho hacia atrs se correg y viceversa. a a, Cuando se prob esto con el robot en movimiento, empez a oscilar de forma violenta. Tras o o mltiples intentos de corregir los parmetros los resultados fueron los mismos. Investigando u a los motivos, se encontr que los sensores ten un comportamiento dinmico muy malo, y o an a no eran vlidos para esta aplicacin. a o Vistas que estas soluciones no funcionaban, se opt por reducir la amplitud frontal de los o pasos hasta que el movimiento fuera estable. En el caso del algoritmo ZMP tambin se tuvo e que optar por esta solucin de acortar los pasos para estabilizarlo. El motivo se expuso en o el apartado 3.1.2, si no existe la articulacin de los dedos ni un mecanismo que permita la o basculacin talnpunta, como en el caso de Nao, la solucin es acortar los pasos. o o o Respecto al movimiento de los brazos, se ha decidido no dotar de movimiento a stos, ya e que no son imprescindibles para la locomocin. Se deja para investigaciones futuras el estudio o del movimiento de los brazos, siendo ste fcilmente implementable a partir del algoritmo ya e a desarrollado.

5.3.

Conclusiones

Se ha conseguido disear un algoritmo que aprovecha las dinmicas propias del robot para n a inducir un ciclo l mite estable que hace que el robot camine. Mediante el uso de atractores en el espacio de fases se ha conseguido aumentar la estabilidad lateral de la oscilacin. o El movimiento frontal no se ha conseguido estabilizar con los mtodos probados experie mentalmente. Queda pendiente para estudios futuros el diseo de un algoritmo que estabilice n el movimiento de avance.

Cap tulo 6

Anlisis de prestaciones a
En este apartado se compararn las caracter a sticas de las locomociones conseguidas con los dos algoritmos que se han estudiado, ALWalk y Sammys Walk. Los parmetros ms a a interesantes de analizar son la velocidad de translacin, la potencia involucrada y el coste de o transporte cmt . En el algoritmo Sammys Walk se analizarn tambin otros aspectos. a e

6.1.

Caracter sticas de la locomocin con ALWalk o

Resultar interesante comparar la locomocin con ALWalk (algoritmo ZMP) con la stia o ness de las articulaciones al 100 % con las modicaciones que se han hecho. Pese a los mltiples u intentos de que la versin full-stiness caminara bien, no se consigui, por tanto no se puede o o comparar. El motivo ms probablees que los robots dieren unos de otros y no con todos se a puede conseguir. En [9] se consigui que alguna vez funcionar la versin full-stiness, y se compar con o a o o la versin low-stiness. Los resultados se pueden resumir en la siguiente tabla: o Algoritmo Algoritmo ZMP bsico a Algoritmo con baja Stiness Velocidad [cm/s] 8, 7 0, 1 13, 9 0, 2 Velocidad [ %] 100 % 160 % Eciencia1 cm t 5,8 2,8

Tabla 6.1: Conguracin de Stiness para cada articulacin o o

Se pueden ver las mejoras sustanciales. Los resultados encontrados con nuestro robot son parecidos a los de [9]. Se tiene una velocidad de translacin de 10,3 cm/s, calculada en una o distancia de 1m durante varios intentos. La intensidad consumida se puede ver en la Figura 6.1. El consumo medio es de 1,6A durante la locomocin, y el utilizado unicamente para los o motores es de 0,65A2 , lo que supone una potencia consumida para la locomocin de 14,1W, o y un cmt = 3, 1. A nivel estil stico, ZMP produce una locomocin ms limpia y constante. Sin embargo, o a los movimientos laterales se notan muy articiales comparados con los humanos.
Concepto denido en Apartado 2.2.2, pgina 22. a El consumo del robot con todos los motores apagados, es decir, del PC incrustado y otros elementos electrnicos es de 0,95A. o
2 1

73

74

Locomocin b o peda del robot humanoide Nao

6.2.

Caracter sticas de la locomocin con Sammys Walk o

La velocidad de locomocin con Sammys Walk es de 6,7 cm/s. El consumo medio de o intensidad es de 1,35A (Figura 6.2). Restndole el consumo del PC i otros elementos queda que el consumo de intensidad a utilizado en la locomocin es de 0,4A, y por tanto una potencia de 8,7W. As el valor de o , cmt = 2, 93. Esto supone una reduccin del coste espec o co de locomocin del 5 %, aunque o tambin una reduccin de la velocidad de locomocin del 35 %. e o o Algoritmo ALWalk Sammys 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 6.2: Comparacin algoritmos ALWalk y Sammys Walk o

Recuperando la Tabla 2.1, se aaden los valores encontrados: n Robot cmt Cornell 0,055 Delft 0,08 MIT 0,02 ASIMO 1,5 Humano 0,05 ZMP 3,1 Sammys Walk 2,93

Tabla 6.3: Coste energtico espec e co de la locomocin Comparativa o

A nivel estil stico, aunque la locomocin parece ms inestable que con ZMP, los movio a mientos se parecen ms a los naturales de los humanos. Especialmente si se compara con un a beb (tienen aproximadamente las mismas dimensiones y peso), se pueden ver las analog e as. Tambin es muy interesante comparar las trayectorias articulares del robot con el algorite mo Sammys Walk (Figura 6.3, pgina 76) y las humanas (Figura 3.9, pgina 38). Se puede a a apreciar que las formas son muy parecidas, y las curvaturas son las mismas para cada fase de la marcha. De esta forma aprecia que el diseo del algoritmo inspirado en la locomocin n o humana efectivamente produce trayectorias similares.

6. Anlisis de prestaciones a

75

Figura 6.1: Consumo de intensidad para la locomocin ZMP low-stiness o

Figura 6.2: Consumo de intensidad para la locomocin Sammys Walk o

76

Locomocin b o peda del robot humanoide Nao

(a) Angulos eje Y de exin/extensin o o

(b) Angulos eje X de abd/adduccin 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 locomocin 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 rediseo del algoritmo ALWalk que los solucione (5.1.3). En primer lugar se n ha disminuido la rigidez de las articulaciones para permitir movimientos ms suaves, lo que a ha permitido estabilizar el movimiento. Adems se ha hecho que este sea ms rpido para a a a evitar que las oscilaciones propias intereran, y ms bien aprovecharlas. As se ha conseguido a que el algoritmo ALWalk tenga una locomocin estable. Sin embargo, su diseo est basado o n a en una planicacin de movimientos que no tiene en cuenta las dinmicas propias del robot. o a El nuevo algoritmo de locomocin para Nao que se ha diseado, Sammys Walk, aprovecha o n las dinmicas propias del robot para obtener una locomocin ms eciente (5.2). La idea de a o a partida es que la marcha es un ciclo l mite en que se superponen una oscilacin lateral con el o movimiento de avance. Gracias a un estudio de las frecuencias propias de oscilacin lateral o se consigui inducir un ciclo l o mite estable mediante una mquina de estados. Para aumentar a las rbitas de atraccin se han aplicado correcciones al movimiento de la pierna oscilante o o proporcionales a la desviacin de la velocidad angular respecto al ciclo l o mite nominal. Haciendo un anlisis de prestaciones y de la eciencia de ambos algoritmos de locomocin a o para el robot Nao se han obtenido los siguientes resultados: El algoritmo AlWalk tiene un consumo de potencia mecnica para la locomocin de a o Pm = 14, 1W , una velocidad de translacin de v = 10, 3cm/s y un coste espec o co (2.2.2) de cmt = 3, 1. El algoritmo Sammys Walk consume para la locomocin Pm = 8, 7W , o una velocidad de translacin de v = 6, 7cm/s y un coste espec o co de cmt = 2, 93. Algoritmo ALWalk Sammys 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: Comparacin algoritmos ALWalk y Sammys Walk o

Tal como se puede ver, aprovechar las dinmicas propias del sistema para la a locomocin b o peda provoca una disminucin del coste espec o co de transporte del 5 %. Esta reduccin, aunque pequea, 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. Adems, tanto las trayectorias articulares como el movimiento conjunto resultan parea cidos a los humanos (6.2).

77

78

Locomocin b o peda del robot humanoide Nao

Fruto del desarrollo de este proyecto se han obtenido los siguientes resultados paralelos: Creacin de un conjunto de scripts que permiten la puesta en marcha de Nao: instalao cin, acceso al robot, compilacin remota, compilacin local y ejemplos de uso (A). o o o Creacin de una interfaz grca de usuario, NaoGUI que permite acceder a las funciones o a principales del robot, las funciones de locomocin desarrolladas en este proyecto, y o control mediante el mando de la Wii (B.2). Como en todo trabajo de investigacin y aplicacin tecnolgica, 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 co de los passive walkers sigue siendo muy inferior a los obtenidos. Uno de los motivos ms importantes es el diseo de los pies. El robot Nao no puede a n conseguir un movimiento de balanceo ya que los pies son una supercie plana, y este es un factor clave que hace que el coste espec co aumente mucho. Por tanto, se podr an investigar otros mecanismos para conferirle al robot mayor estabilidad y eciencia en su locomocin. o No se ha conseguido estabilizar de forma ecaz el movimiento de avance. En el momento que se consiga este punto es muy posible que se pueda aumentar mucho la velocidad de translacin manteniendo una potencia consumida parecida, con la consecuente diso minucin del coste espec o co de transporte. En el presente proyecto solamente se ha investigado sobre la locomocin en l o nea recta sobre una supercie plana. Posteriores estudios podr aplicar los conceptos aqu exan puestos para generar locomocin en curva, locomocin lateral y locomocin capaz de o o o adaptarse a irregularidades del terreno. Aadir movimiento a los brazos para conseguir marchas ms estables y suaves. n a Como conclusin nal, el algoritmo Sammys Walk que se ha diseado, basado en la o n induccin de un ciclo l o mite estable y aprovechamiento de las dinmicas propias del robot, ha a conseguido una mejora en la eciencia de la locomocin del robot humanoide Nao. Adems o a tiene trayectorias articulares similares a las humanas, lo que de alguna forma deja entrever que es una v de investigacin que apunta en la direccin adecuada. Se podr decir que a medida a o o a que pase el tiempo los robots tendrn un papel ms importante en nuestra sociedad. Su a a evolucin, e integracin, 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 eciente. As el desarrollo e , de algoritmos de locomocin basados en aprovechar las dinmicas propias puede constituir o a un punto clave en esta evolucin, tal como se ha podido analizar en este proyecto. o

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

79

80

Locomocin b o peda del robot humanoide Nao

[16] [17] [18]

, Stability and control of two-dimensional bipedal walking, tech. report, Simon Fraser University, Burnaby, British Columbia, Canada, 1988. , Passive bipedal running, tech. report, Simon Fraser University, Burnaby, British Columbia, Canada, 1989. , Passive walking with knees, Proc. 1990 IEEE Robotics & Automation Conference, Cincinnati, OH, (1990), pp. 16401645.

[19] Morimoto, J. et al., A simple reinforcement learning algorithm for biped walking, International Conference on Robotis and Automation, (2004). [20] Pratt, J., Pratt, G., Intuitive control of a planar bipedal walking robot (proc. of the 1998 international conference on robotis and automation), tech. report, MIT Leg Laboratory, Cambridge, 1998. [21] , Virutal model control of a bipedal walking robot, International Conference on Robotis and Automation, (2007).

[22] Raibert, M., Bigdog, the rough-terrain quaduped robot, (2008). [23] Shuuji, K., Humanoid robot hrp-2: Overview of zmp-based biped walking, tech. report, DynamicWalking2008, Delft, Netherlands, 2008. [24] Vukobratovic, M., Borovac, B., Zero-moment point - thirty veve years of its life, International Journal of Humanoid Robotics, 1 (2004), pp. 157173. [25] Westervelt, E.R., Grizzle, J.W., Design of asymptotically stable walking for a 5-link planar biped walker via optimization, tech. report, Department of Electrical Engineering and Computer Science, 2002. [26] Williams, E., It and environment initiative, http://www.it-environment.org/. [27] Yin, K. et al., SIMBICON: simple biped locomotion control, ACM, New York, NY, USA, 2007.

Apndice A e

Puesta en marcha y programacin o de Nao


A.1. Instalacin del robot o

El robot se arranca apretando el botn del pecho, y se apaga mantenindolo pulsado o e durante 4s. Una vez el robot ha arrancado las luces de los ojos dejan de parpadear y saluda con un mensaje de bienvenida. Si se da un pulso al botn del pecho el robot se presenta con o su nombre y nmero de serie, as como la IP a la que se ha conectado. Es muy importante u establecer la conexin correctamente para poder comunicarse con el robot. Esta debe estar o f sicamente lista antes de encender Nao. Se ha elegido como sistema de desarrollo Linux, por la facilidad de conguracin de las o tareas necesarias, y por ser el unico que permite compilacin de librer dinmicas, tal como o as a se explicar posteriormente. Todas las explicaciones se realizarn suponiendo este entorno. a a En concreto, para el desarrollo de este proyecto se ha usado la distribucin Ubuntu 9.04 de o 32bits. Para el desarrollo en otros sistemas se puede consultar la documentacin de Nao. o

A.1.1.

Conexin Ethernet o

En primer lugar hay que asegurarse que la conexin est f o a sicamente realizada: 1. Router conectado a la alimentacin. o 2. PC conectado con el cable de red al router. 3. Nao conectado en la cabeza con el cable de red al router. Antes de encender el robot hay que congurar la conexin, y ejecutar un servidor DHCP1 o que asignar la IP al robot automticamente. En primer lugar hay que establecer una IP al a a PC. Suponiendo que la red ethernet se llama eth0, desde una consola se realiza de la siguiente manera: sudo ifconfig eth0 10.0.0.1 sudo /etc/init.d/dhcp3-server start
1

Dynamic Host Conguration Protocol, Protocolo Conguracin Dinmica de Servidor. o a

81

82

Locomocin b o peda del robot humanoide Nao

Ahora ya se puede encender el robot. Una vez encendido, apretando el botn del pecho se o reproduce un mensaje con la IP de Nao. Tambin se puede buscar la IP asignada mediante e el programa nmap, que hace un escaneo de las IP activas. Si la salida del programa se ltra se puede obtener la IP del robot (en caso que en la red haya ms de una IP activa habr que a a seleccionar la correcta): sudo nmap -v -sP --system-dns 10.0.0.0/24 | grep "latency" A partir de este momento se supondr que la IP del robot es 10.0.0.8. Para ejecutar comandos a dentro del Linux del Nao se puede hacer con el protocolo SSH2 que los redirige al robot de forma segura, es como abrir una consola de Linux en Nao: user@user-PC:~$ ssh root@10.0.0.8 root@Nao [0] [~]# Para salir basta con ejecutar la orden exit: root@Nao [0] [~]# exit Connection to 10.0.0.8 closed. Si desde cualquier navegador se introduce la IP de nao se accede a su conguracin. En la o Figura A.1 se muestra la pantalla que aparece. Tambin se puede navegar por el sistema de archivos del robot mediante un protocolo SSH. e Esto es muy fcil de hacer desde Linux. Desde el men Lugares->Conectar con servidor, a u se introduce la IP del robot, root como usuario y listo. Crear una carpeta que contendr la a a ra del sistema de archivos de Nao llamada sftp://root@10.0.0.8/. En la Figura A.2 se z muestra cmo hacerlo. o Para apagar el robot a se puede hacer manteniendo pulsado el botn del pecho ms de o a 4s, o enviando la orden halt a travs de SSH. e

A.2.

Instalacin SDK o

El SDK3 proporcionado por Albedaran incluye los siguientes archivos: NaoQiAcademics-1.2.0-Linux.tar.gz Incluye los archivos necesarios para el desarrollo de programas: ejecutables, librer mdulos, ejemplos... Este entorno de desaas, o rrollo se llama NaoQi (se explicar ms adelante). Se puede utilizar con el programa a a Choregraphe, el suministrado por Aldebaran para desarrollo de programas de alto nivel, as como con otros simuladores. Nao internamente ejecuta NaoQi para su control, este SDK es el mismo NaoQi para ejecucin remota en un PC. En la Figura A.3 se o muestra el contenido del archivo. ctc-academics-1.2.1.tar.bz2 Es la herramienta CrossTool que permite compilar librer dinmicas para luego ser ejecutadas dentro de Nao. Su uso se explicar posteas a a riormente.
2 3

Secure SHell, intrprete de ordenes seguro. e Software Development Kit, kit de desarrollo de software.

A. Puesta en marcha y programacin de Nao o

83

(a) Pgina principal a

(b) Pgina de conguracin a o

Figura A.1: Pgina web de conexin a Nao a o

84

Locomocin b o peda del robot humanoide Nao

Figura A.2: Conguracin de servidor en Nao o

Figura A.3: Contenido de NaoQiAcademics-1.2.0-Linux.tar.gz

A. Puesta en marcha y programacin 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. Tambin realiza las congurae ciones necesarias. En concreto es necesario denir una variable del sistema llamada AL_DIR que contenga la ruta de la instalacin de NaoQi. o
1 2 3 4 5 6 7 8

#! / b i n / b a s h if [ " $AL_DIR " = " " ]; then

echo " Instalando Naoqi en ~/ naoqi / "


tar - xzvf NaoQiAcademics -1.2.0 - Linux . tar . gz mv NaoQiAcademics -1.2.0 - Linux ~/ naoqi

echo " Instalando CrossTool en ~/ naoqi / crosstoolchain


" bzip2 - dc ctc - academics -1.2.1. tar . bz2 | tar - xv mv ctc - academics -1.2.1 ~/ naoqi / crosstoolchain

9 10 11 12 13 14 15

echo " Creando variable AL_DIR . Se a~ ade a bashrc " n echo " export AL_DIR =~/ naoqi " | tee -a ~/. bashrc echo " Instalando paquetes necesarios para el else
desarrollo " sudo apt - get install gcc g ++ cmake python python - dev

16 17 18 19

echo " Existe instalacion anterior de naoqi . " echo " Borre todos los archivos y elimine la variable
AL_DIR "

20

fi

A.3.

Programacin o

Nao se puede programar usando diversos lenguajes: C, C++, Pyhton y URBI. Python es un lenguaje interpretado (no requiere compilacin) novedoso y exible, que permite crear o scripts complejos para interactuar con los mdulo de NaoQi. URBI es un lenguaje espec o co de robots. En los siguientes apartados se explicarn ms detalles. a a

A.3.1.

NaoQi

NaoQi es el entorno de desarrollo de Nao, se proporciona conjuntamente con el robot. En si es un programa que se ejecuta en Linux y que hace de intermediario entre el robot y los programas. Despus que el sistema operativo del robot ha arrancado se ejecuta directamente e NaoQi. NaoQi se puede ejecutar local o remotamente. Por localmente se entiende dentro del robot, es decir, ejecutado en el linux incrustado de Nao. Para facilitar el desarrollo de aplicaciones, tambin se puede ejecutar NaoQi desde el PC, remotamente. Como es lgico, los comandos e o

86

Locomocin b o peda del robot humanoide Nao

que se env no tendrn ninguna actuacin ya que no existe ningn robot. Aun as esto es una en a o u , herramienta grandiosa, ya que se puede usar con simuladores como Webots, o con el programa Coreographe facilitado por Aldebaran. Tambin permite la compilacin de programas ya que e o incorpora todas las librer necesarias para crear programas propios. as

A.3.2.

Caracter sticas y uso de NaoQi

Multi-lenguaje: se puede programar en diversos lenguajes. Ejecucin de procedimientos secuencialmente, en paralelo, o llamadas por eventos. o Modularidad: se pueden ejecutar programas en local para aplicaciones que requieran control con un bajo tiempo de ciclo, o remotamente mediante llamadas a los mdulos o de NaoQi, para aplicaciones que no tengan estas requisiciones. Multi-plataforma: al tener un sistema operativo incrustado con comunicaciones v a Ethernet (o Wi-Fi), las llamadas pueden realizarse desde cualquier sistema operativo. Uso de la memoria compartida: se puede leer, escribir o subscribirse a datos. A continuacin se explicar la estructura de NaoQi. Hay unos programas llamados brokers o a que escuchan comandos en una direccin IP en un puerto determinado. NaoQi es el broker o principal (main broker), que escucha en la direccin del robot (o la direccin local en caso o o que NaoQi se ejecute localmente), y por defecto en el puerto 9559. Un mdulo es una clase que contiene funcionalidades del robot (movimientos, leds. . . ). Los o mdulos son de hecho librer cargadas desde AL_DIR/modules/lib/autoload.ini. Cuando o as NaoQi se carga (u otro broker ), se inicializan automticamente sus mdulos asociandos. a o Finalmente, hace falta enviar los comandos a los mdulos. Esto se hace mediante proxys, o esto es, accesos a mdulos. o Desde el punto de vista del programador, para ejecutar comandos sobre el robot hay que ejecutar los siguientes pasos: 1. Ejecutar un broker. La forma ms fcil es utilizar el broker principal NaoQi, ya sea local a a o remotamente. 2. En la conguracin del broker previamente se han indicado los mdulos que se quieren o o cargar. 3. Crear un proxy, y mediante este enviar las rdenes al mdulo correspondiente, es decir, o o al robot.

A.3.3.

Mdulos de NaoQi o

Los mdulos principales facilitados por NaoQi son: o ALMemory Es la memoria del robot. Permite acceder y subscribirse con funciones como getData o subscribeOnDataChange.

A. Puesta en marcha y programacin de Nao o

87

ALMotion Permite enviar comandos de posicin a las articulaciones con funciones como o setAngle, ya sea a una articulacin o una cadena. Incorpora funciones de alto nio vel para conseguir las matrices de cinemtica directa. Tambin se puede controlar a e directamente la posicin del centro de masa, equilibrio con un unico pie o con dos, o consignas de posicin en el espacio cartesiano. Adems, tiene funciones de alto nivel o a para caminar que usan el algoritmo ZMP. Es tan fcil como enviar comandos tipo a walkStraight(distancia). ALLeds Actuacin sobre los LEDs. o DCM Siglas de Device Communication Manager, es el mdulo que se encarga de las coo municaciones con los dispositivos del robot (placas, sensores, actuadores. . . ). As es , el v nculo entre las funciones de alto nivel y las de bajo nivel (programas en las placas electrnicas). Mediante este mdulo se pueden enviar comandos directamente a los o o actuadores. ALUltrasound Se encarga del control de los sensores de ultrasonidos. ALAudioPlayer Permite reproducir archivos de audio .wav o .mp3 con comandos como aup.playFile("/freemp3/feelgood.mp3"). ALTextToSpeech Sintetizador de texto en ingls, reproduce palabras por los altavoces con e comandos como tts.say("Hello World!")

A.3.4.

Ejemplo de programacin en Pyhton o

Suponiendo que se ha creado la conexin ethernet o Wi-Fi PC-robot correctamente, que o Nao tiene una IP correcta y que el robot y NaoQi est en funcionamiento, el siguiente ser a a un cdigo 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 . environ . get ( " AL_DIR " ) home = os . environ . 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 . exit (1) else : aldir = aldir + " / extern / python / aldebaran " aldir = aldir . replace ( " ~ " , home ) aldir = aldir . replace ( " " , " " ) sys . path . append ( aldir )

88

Locomocin 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.0.0.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 " ," 127.0.0.1 " ,9999 , IP , PORT ) except RuntimeError , 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 , e ) : print ( " Error creando v nculo con m dulo ALMotion " ) o print ( str ( e ) )
exit (1) motion = ALProxy ( " ALMotion " )

try : print ( " DCM " ) except ( RuntimeError , e ) : print ( " Error creando v nculo con m dulo DCM " ) o print ( str ( e ) )
exit (1) dcm = ALProxy ( " DCM " )

try : print ( " ALLeds " ) except ( RuntimeError , 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 , e ) : print ( " Error creando v nculo con m dulo ALTextToSpeech " ) o print ( str ( e ) ) exit (1)

A. Puesta en marcha y programacin de Nao o

89

66 67 68 69

leds . set ( " FaceLeds " ,1.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 ( , 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 . go toBody Stiffn ess (1.0 , 1.0 , motion . INTERPOLATION_SMOOTH ) tts . say ( " Hi . I am going to walk . To stop me move my head . " ) #H a b l a motion . addWalkStraight (10 , 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 . post . 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 , s i g u e e l h i l o de ejecucion ) prev iousH eadAng le = motion . getAngle ( " HeadYaw " ) ; motion . se tChain Stiffn ess ( " Head " ,0.0) time . sleep (2)

70

71 72

73 74

75

76 77 78 79 80 81 82 83 84

while ( motion . isRunning ( walkTaskId ) ) :


#S i s e mueve l a c a b e z a m s de a if ( abs ( motion . getAngle ( " HeadYaw " ) - previ ousHea dAngle ) > 0.1) : motion . clearFootsteps () #Se f i n a l i z a e l m o v i m i e n t o time . sleep (1) tts . say ( " Bye Bye " )

85 86 87 88

Solamente es necesario guardar este cdigo en un archivo de Python, por ejemplo prueba.py o y llamar al intrprete para ejecutar los comandos deseados. Desde una consola de Linux se e llamar de la siguiente forma: a python prueba.py El resultado se puede ver en el v deo [A.3.4 Ejemplo de programacin en Python]. o Junto con el pack de desarrollo se incluyen numerosos ejemplos de programacin en todos o los lenguajes.

A.3.5.

URBI

URBI (Universal Real-time Behavior Interface) es un lenguaje de programacin usado o para el control de robots, desarrollado por la empresa francesa Gostai (www.gostai.com).

90

Locomocin b o peda del robot humanoide Nao

Hay distribuciones para Windows, Linux y Mac. Es un lenguaje cuyo ncleo es de bajo nivel, u diseado para trabajar con motores y sensores, aunque permite el desarrollo de comandos n complejos de alto nivel. En su diseo se ha cuidado la simplicidad, y permite la interconexin n o con otros lenguajes de programacin, como C++, Java, Python, Matlab y muchos otros. o Como puntos clave destacan la capacidad de ejecucin de comandos en paralelo, secuencialo mente sin retraso, manejo de eventos de forma muy simple y uso del tiempo en condiciones. Por ejemplo, se puede usar el operador | para que una rden se ejecute exactamente despus o e de otra; el operador & para que dos rdenes empiezen al mismo tiempo. Las rdenes a las o o articulaciones se pueden enviar directamente, imponiendo un tiempo de interpolacin, una o velocidad e incluso un movimiento sinusoidal. Los objetos tienen un alto grado de abstraccin o y mtodos muy intuitivos. e A continuacin se muestran algunos comandos vlidos en URBI para programar Nao, es o a muy sencillo de entender aunque no se conozca el lenguaje:
1

motors . on () ; // 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 " ) ; tts . say ( " Youhou ! " ) ; { ( headPitch . val = -0.6 time :1 s ) & ( headYaw . val = 0.6 time :1 s ) } | { ( headPitch . val = 0.0 time :3 s ) | ( headYaw . val = 0.0 time :3 s ) } ; //En p r i m e r l u g a r mueve h e a d P i t c h a 0.6 r a d y headYaw a 0 . 6 rad , 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 , 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 | ) , e s e mueve h e a d P i t c h a 0 . 0 en 3 s y d e s p u s headYaw a 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 , p e r m i t e s e p a r a r r d e n e s , 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 ; headYaw . val = 0 sin :3 s ampli :1 , headPitch . val = 0 cos :3 s ampli :0.6 , }; wait ( 3 s ) ; stop movimiento ;

2 3 4 5 6 7

10 11 12 13

14 15 16 17 18 19

Cuando se enciende el robot, NaoQi ejecuta un broker intrprete de URBI (si est habie a litado en AL_DIR/modules/lib/autoload.ini) que escucha en el puerto 54000. Para enviar comandos, por ejemplo los que se han explicado antes, se puede hacer de forma tan sencilla como abrir una consola de Linux y enviarlos mediante el programa telnet: telnet 10.0.0.8 5400

A. Puesta en marcha y programacin de Nao o

91

El intrprete de URBI ya est congurado, los sensores y actuadores se declaran automtie a a camente. Para saber el nombre se puede mirar el archivo4 : sftp://root@10.0.0.8/opt/naoqi/extern/urbi/URBI.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.3.5 Ejemplo de programacin o en URBI]:

A.3.6.

Ejecucin de cdigo en tiempo real o o

La plataforma de desarrollo de Nao tiene herramientas para la implementacin de cdigo o o en tiempo real. En caso que simplemente se quiera ejecutar un bloque de cdigo de forma o peridica existe una metodolog ms fcil. o a a a El mdulo DCM, 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). Las consignas de posicin se pueden enviar a travs del DCM para instantes futuros arbitrarios, o e y ser el propio DCM que se encargar de hacer la interpolacin necesaria. En cada instante a a o que se ejecuta el cdigo del DCM se analizan las consignas futuras y, con la posicin actual, o o se hace la planicacin necesaria para cada articulacin. Por debajo del DCM existen las o o placas electrnicas que tienen una frecuencia de refresco mucho ms alta (para los motores o a 1ms) que se encargan de controlar los dispositivos directamente. Es decir, que desde el punto de vista del programador, a este nivel slo se puede leer o y enviar informacin con una frecuencia de 50hz. La documentacin da a entender que la o o actualizacin de los sensores y el env de consignas a los actuadores se realiza de forma o o prcticamente instantnea, tampoco se da informacin precisa al respecto. a a o En caso de ejecutar programas de forma local (dentro el robot) existe la posibilidad de sincronizarse con la actualizacin del DCM. Es decir, ser el propio DCM que llame a una o a funcin determinada que se desee. Por tanto, se puede crear una funcin que incorpore el o o cdigo de control, y al sincronizarla con DCM se ejecutar cada 20ms. La duracin del cdigo o a o o debe ser tal que no colapse el sistema, por tanto es recomendable hacer los menores accesos a memoria i escritura en cheros. Tambin cabe destacar el hecho que para poder ejecutar cdigo en tiempo real es necesario e o que el programa est compilado (no se podr hacer con Python o URBI, C++ es el idneo) e a o como una librer dinmica, es decir, un mdulo. 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.ini. El siguiente a apartado explica cmo se compila. o

A.3.7.

Compilacin cruzada para librer dinmicas o as a

Para poder compilar una librer dinmica es necesario hacerlo en entorno Linux. Ya que a a el sistema operativo de Nao es un Linux, hay que compilar el archivo en el mismo entorno. Los
4

Este archivo est dentro de Nao. Se accede mediante un acceso SSH. a

92

Locomocin b o peda del robot humanoide Nao

archivos necesarios deben estar en la ruta /naoqi/modules/src/[Nombre del programa], con la estructura y los archivos de conguracin necesarios para ser compilado por cmake. Lo o ms prctico resulta copiar la estructura del directorio /naoqi/modules/src/examples. a a El SDK de NaoQi ya trae ejemplos de programas en C++, as como los archivos de con guracin y las dependencias para hacer una compilacin rpida y limpia. El archivo generado o o a (una librer .a) se copia al robot v ethernet. A continuacin solo hace falta reiniciar NaoQi a a o y se cargar la librer programada. Finalmente hace falta llamar a las funciones deseadas a a del mdulo de la forma deseada, por ejemplo con Python. o En la documentacin explica paso por paso como realizar este tipo de compilacin. Tamo o bin se podr compilar como un ejecutable que se conecte a un broker ya creado, pero para e a realizar esta tarea quiz sea ms fcil escribir directamente un script en Python. A continuaa a a cin se muestra un script de consola que permite compilar el ejemplo incluido en el SDK. Se o supone que este script se ejecuta en la ruta /naoqi/modules/src/[Raz del proyecto], y el cdigo fuente est en /naoqi/modules/src/[Raz del proyecto]/[Programa]/src. 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 . 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 , por tanto opci n .. a o REMOTE = OFF " echo " As se podr ejecutar c digo de tiempo real " a o echo " Presione <c > y <g > para configurarlo . " echo " " echo " Presione < enter > para continuar " echo " " echo " " read DUMMY ccmake .

echo " Compilando con make ... " echo " " if [ " $ ( cat temp | grep Built target ) " == " " ]; then cat temp
make > temp

A. Puesta en marcha y programacin de Nao o

93

30 31 32 33 34 35 36 37 38 39

echo " Errores en compilaci n . Abortando " o echo " " else
rm temp rm temp echo " Compilaci n exitosa " o echo " " cd ..

echo " IP usada 10.0.0.8 , 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 . so root@10 .0.0.8:/ opt / naoqi / modules / lib

45 46

echo " Se supone que la librer a est a~ adida a autoload a n echo " " echo " \ gedit
. ini . Si no lo est , edite el fichero con " a sftp :// root@10 .0.0.8/ opt / naoqi / modules / lib / autoload . ini " echo " " echo " "

47 48

49 50 51 52 53 54 55 56 57

echo " Reiniciando naoqi " echo " " echo " "
ssh root@10 .0.0.8 " / opt / naoqi / bin / restart . sh ; exit "

echo " \ Presione < enter > para ejecutar el programa en Nao echo " " read DUMMY ./ 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

Apndice B e

Programacin del algoritmo y la o interfaz grca a


En el Apndice A.3.1 se explic el funcionamiento de NaoQi, el paquete de desarrollo para e o Nao. Como se ejecutar cdigo en tiempo real, ser necesario compilarlo como una librer a o a a dinmica (mdulo) dentro de Nao de forma local. A esta librer que llevar implementado a o a, a el algoritmo explicado se la llamar ALSammysWalk. Remotamente, desde el PC, 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, adems de al algoritmo diseado. Aunque con Nao se distribuye Choregraphe, a n una interfaz de desarrollo para Nao, es muy pesada, y un poco imprctica de usar. Por este a motivo se plantea el desarrollo de una interfaz de diseo totalmente propio que sirva como n herramienta de trabajo, y que permita futuras mejoras. Esta se proporciona libremente con este proyecto con amplios comentarios para futuras ampliaciones. La estructura del programa es la representada en la Figura B.1.
1 1 1 Programado 1 1 

en C++

1 1 1

ALSammysWalk o
tt tt tt tt tt ytt 

1 Mdulo local 1 o www 1 dentro Nao 1 www www www ww8

Funcin o start

Funcin o walk

Funcin o stop

Figura B.1: Estructura del programa local

ALSammysWalk ser un mdulo de Nao encargado del control del algoritmo de locomocin a o o diseado. Desde el punto de vista externo tendr disponibles funciones para interactuar tales n a como start para inicializar la locomocin, walk para caminar y stop para parar. Adems, o a se programar de tal forma que sea posible cargar diferentes estilos de locomocin preprograa o mados mediante la funcin style. Internamente tendr funciones privadas encargadas entre o a otros aspectos de: sincronizacin del bucle de control, generacin de trayectorias (ltro pasao o bajos), deteccin de colisin de los pies, telemetr etc. Se programar en C++, ya que es el o o a, a lenguaje estndar de NaoQui para programar un mdulo. a o
1

GUI Graphical User Interface, Interfaz Grca de Usuario. a

95

96

Locomocin b o peda del robot humanoide Nao

NaoGUI ser una interfaz grca para interactuar con Nao. Acceder a diversos mdulos a a a o para la actuacin sobre Nao y para recibir informacin. Los mdulos principalmente usados o o o son: ALMotion, DCM, ALWalk, ALTextToSpeech, ALLeds, ALSammysWalk. Desde la ventana principal se acceder a las funciones de actuacin sobre los leds de los ojos, reproduccin de a o o texto y caminar. Se podr acceder a otras ventanas, una de ellas ser un editor de posturas a a y congurador de stiness articular, otra ser destinada al control del algoritmo diseado a n ALSammysWalk. Se programar en Python por su facilidad de uso y portabilidad. a En la explicacin de este apartado se presuponen los conocimientos de C++ y Python, y se o dirige al lector a libros convenientes en caso de necesitar ms detalles. Aun as las sentencias a , son muy intuitivas, muchas de ellas se pueden entender fcilmente sin necesidad de dominar a los lenguajes de programacin citados. o

B.1.

Programacin de Sammys Walk o

Este mdulo se programar y compilar en el PC y posteriormente se cargar en Nao. o a a a Para ms detalles, se puede consultar la documentacin de Nao. a o Los archivos que se generarn son ALSammysWalk.cpp (ms de 900 l a a neas de cdigo), que o incluir todo el cdigo, y ALSammysWalk.h, con las cabeceras necesarias. La compilacin se a o o realiza con la herramienta cmake. La siguiente exposicin explicar el funcionamiento todo el programa, entrando en detalle o a slo en los puntos clave. Gran parte de la exposicin se har sobre el propio cdigo con o o a o comentarios.

B.1.1.

Principales variables usadas

Para la mquina de estados, y en general para el control de las articulaciones, se usan a una serie de variables, que se llamarn variables articulares. Estas son el valor nal que se a quiere para cada articulacin expresadas en grados sexagesimales. El interpolador las toma o para generar los valores articulares a travs del ltro pasa-bajos. 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 articulacin 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 , RHipRoll , RKneePitch , RAnklePitch , RAnkleRoll ; // L e f t Leg ( 5 t o 9 ) float LHipPitch , LHipRoll , LKneePitch , LAnklePitch , LAnkleRoll ; // Hip ( 1 0 ) float LHipYawPitch ; // R i g h t Arm ( 1 1 t o 1 5 ) float RShoulderRoll , RShoulderPitch , RElbowRoll , RElbowYaw , RWristYaw ;

B. Programacin del algoritmo y la interfaz grca o a

97

11 12

// L e f t Arm ( 1 6 t o 2 0 )

float LShoulderRoll , LShoulderPitch , LElbowRoll , LElbowYaw ,


LWristYaw ;

Como hace falta un histrico de estas variables para el ltro, se crea otra variable que o las incluir todas. Las de arriba se usan por el programa para mayor facilidad, la siguiente a ser la que realmente se use. a
1

// 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];

La mquina simtrica requiere tres estados, y para cada estado la conguracin nal y el a e o tiempo de transicin. Las siguientes variables, que contienen la representacin del estado y o o se llamarn variables de estado actual, son las que de forma sucesiva se irn asignando a las a a previamente citadas para as inducir el movimiento al robot.
1 2 3 4 5 6 7 8

int state ; // E s t a d o a c t u a l int tinc [3]; // Tiempo de t r a n s i c i n o float SwingHipPitch [3] , SwingHipRoll [3]; // P o s t u r a s float SwingKneePitch [3]; float SwingAnklePitch [3] , SwingAnkleRoll [3]; float StanceHipPitch [3] , StanceHipRoll [3]; float StanceKneePitch [3]; float StanceAnklePitch [3] , StanceAnkleRoll [3];

Adems de las citadas, hay variables para la conguracin del parmetro a del interpolador a o a (un valor para los movimientos laterales y otro para los frontales), acceso a cheros, proxys de los mdulos de Naoqi, y otras variables secundarias. o

B.1.2.

Inicializacin y sincronizacin con DCM o o

La funcin start es la encargada de iniciar el algoritmo. Se hacen las inicializaciones o de las variables del sistema necesarias. Para evitar cambios bruscos en las articulaciones, al inicio se leen los valores de cada articulacin y se establecen como valores del interpolador. o A continuacin se leen los archivos de conguracin. Estos estn ubicados dentro del o o a sistema de archivos de Nao, en la ruta /data/[estilo]/. Se denen dos estilos, stand es el primero que tiene como objetivo inducir la oscilacin, y walk que es el que hace caminar al o robot. Esta forma de acceder a las conguraciones permite desarrollos futuros, y la generacin o de nuevos estilos. Para cargar un estilo determinado basta con llamar a la funcin interna o loadConfig(const char * estilo). Esto se explicar con ms detalle posteriormente. a a Una vez hecho esto, se inicializa la mquina de estados, los temporizadores necesarios, a se encienden los motores y se env la posicin inicial (robot de pie). Tambin se abren a o e dos cheros, uno para telemetr y otro como un registro. Finalmente se inicia el lazo de a control, subscribindose al DCM. Este se actualiza cada 20ms, y en cada actualizacin se e o ejecutar una funcin programada. a o

98

Locomocin b o peda del robot humanoide Nao

B.1.3.

Bucle de control

El lazo de control se ejecuta cada 20ms. Consta de la mquina de estados pura, donde se a realizan consecutivamente las siguientes acciones: Vericar condiciones externas. En caso que se apriete el botn del pie izquierdo se o naliza la ejecucin. En caso que se apriete el del pie derecho se reinicia. o Se dene el estado 0, que sirve para hacer levantar al robot. El movimiento se realiza a lo largo de 3s. A partir de aqu se alterna sucesivamente de los estados 1 a 6, tal como se deni en la memoria. o Para cada estado se realizan las siguientes acciones: Se asignan a las variables articulares los valores de las variables de estado actual. En el caso de los estados 1 a 3 esta asignacin es directa. En los estados 4 a 6 se o toman los mismos valores cambiando la pierna oscilante por la ja, y cambiando el signo de las articulaciones laterales, ya que el movimiento es simtrico. e Se comprueba la condicin de n de estado. Para los estados 1, 2, 4, 5 es un o tiempo determinado, que se calcula con temporizadores. Para los estados 3 y 6 es el impacto del pie con el suelo. La forma de detectarlo se explica posteriormente. En primer lugar se realizan dos pasos en el sitio, para dar tiempo a que la oscilacin o lateral se induzca. A partir de aqu se prosigue con la mquina de estados normal. a Se aade la informacin de telemetr al archivo para su posterior anlisis y el registro. n o a a Se llama al interpolador para que actualice los valores articulares. En caso que se apriete el botn del pie izquierdo, o se env la orden, se detendr la o e a ejecucin del programa. Para hacerlo de forma segura se establece el estado -1, que o llevar el robot a una posicin de sentado de forma gradual, y nalmente se cancelar la a o a subscripcin al DCM y se cerrarn los archivos. o a Es importante vericar que efectivamente el cdigo se ejecute en tiempo real. Haciendo un o anlisis de activacin (ver Figura B.2) se puede ver que el tiempo entre sucesivas activaciones a o es de 201ms, por tanto muy correcto. La ejecucin del bucle de control dura en su totalidad o 1-2ms, un valor muy pequeo que asegura que el cdigo programado se ejecuta en tiempo n o real.

B.1.4.

Generador de trayectorias

El generador recorre las articulaciones una por una actualizando su valor. Tal como se ha explicado, el valor que se env es el de las posturas (se puede interpretar como un escaln) a o ltrado a travs de un ltro pasa-bajos. La funcin implementada, de ganancia unitaria, es: e o G(z) = Y (z) (1 a)2 z = , U (z) (z a)2 a R, 0<a<1 (B.1)

B. Programacin del algoritmo y la interfaz grca o a

99

Figura B.2: Anlisis de ejecucin del bucle de control a o

siendo a el parmetro que controla la velocidad con que se llega al valor nal. Haciendo la a antitransformada z al dominio temporal se tiene que: yk+1 = (1 a)2 uk + 2ayk + a2 yk1 Esta ecuacin en diferencias es la que se ha implementado para cada articulacin. o o (B.2)

B.1.5.

Deteccin 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, y requieren ser calibrados individualmente. El valor que proporciona Naoqi de la lectura de los sensores tiene una caracter stica inversa respecto a la fuerza ejercida. Haciendo una calibracin individual de o cada sensor se consigue un buen comportamiento. Para saber si un pie ha impactado en el suelo se comprueban todos los sensores, y si alguno est por debajo de un umbral establecido (presionado) quiere decir que el pie ha colisionado a con el suelo.

B.1.6.

Carga de conguraciones

Para cargar y guardar las conguraciones se usan las funciones loadConfig(const char * estilo) y saveConfig(const char * estilo), a las que se pasa como parmetro una caa

100

Locomocin b o peda del robot humanoide Nao

dena con el nombre del estilo que contiene la conguracin (de momento slo stand y walk). o o Dentro de la carpeta de cada estilo se guarda en orden la siguiente informacin: o aRoll: parmetro del interpolador para el movimiento lateral. a aP itch: parmetro del interpolador para el movimiento frontal. a t1: duracin de los estados 1 y 4 de la mquina de estados. o a t2: duracin de los estados 2 y 5 de la mquina de estados. o a kvel : ganancia de la compensacin del desv de velocidad angular. o o

B.2.

GUI

Se ha programado una interfaz grca de usuario, NaoGUI, que servir para acceder de a a forma fcil a las funciones principales de Nao, y en concreto se disear una interfaz para usar a n a el mdulo de locomocin propio de Nao ALWalk y el diseado Sammys Walk. Tambin se o o n e incluir la funcionalidad adicional de controlar el robot Nao a travs del mando inalmbrico a e a de la Wii, el Wiimote. Se ha programado en Python, por su exibilidad y porque permite acceder a las funciones de NaoQi de forma fcil. Para crear la interfaz grca desde Python se ha usado la librer a a a GTK+. GTK+ (o The GIMP Toolkit) es un conjunto de bibliotecas multiplataforma para desarrollar interfaces grcas de usuario, principalmente para los entornos grcos GNOME, a a XFCE y ROX aunque tambin se puede usar en el escritorio de Windows, MacOS y otros. Esto e tiene la ventaja aadida que la migracin a otros sistemas operativos es fcil, ya que tanto las n o a funciones de NaoQi, la NaoGUI programada en Python, como GTK+ son multiplataforma. La estructura de la interfaz es la siguiente:

B.2.1.

Programacin o

El programa de Python desarrollado tiene la siguiente estructura: Inclusin de librer y declaracin de constantes. o as o Conexin con el broker principal de Nao, NaoQi. o Denicin de la clase que representa la GUI. o Ejecucin de la GUI. o Para el diseo de la GUI se ha usado el programa Glade, que permite crear ventanas, n incluir objetos (widgets), y declarar eventos. La programacin se hace dentro de la clase de o Python. Es necesario declarar objetos que representen a los widgets 2 de la GUI, es decir,
En programacin, un widget es un elemento o bloque de una interfaz grca que muestra informacin o o a o permite su modicacin por el usuario, como por ejemplo una ventana o un botn. o o
2

B. Programacin del algoritmo y la interfaz grca 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 Mdulo o Mdulo o Mdulo o dd dd ALMotion ALWalk DCM dd dd dd dd 1 

Mdulo o ALLeds

Mdulo o ALTextToSpeech

Mdulo o ALSammysWalk

Figura B.3: Estructura de la GUI

crear un v nculo entre ambos. Adems, hay que vincular los eventos de la GUI a funciones de a la clase de Python, que se programarn de acuerdo al comportamiento que se quiera obtener. a Todas estas funcionalidades las proporciona la librer de GTK de Glade. a El archivo principal de la GUI se llama naoGUI.py, y contiene ms de 1800 l a neas de cdigo. o

B.2.2.

Ventana principal

La ventana principal (ver Figura B.4) est contiene una barra de herramientas que permite a acceder a otras tres ventanas (editor de posturas, ALWalk, y Sammys Walk). Tambin acceso e a funciones generales de Nao, como por ejemplo cambiar el color de los ojos mediante barras de desplazamiento (una para cada color), o reproducir un texto por los altavoces de Nao, mediante su sintetizador vocal en ingls. Finalmente tambin permite acceder al control de e e Nao con el mando de la Wii, que se explicar en el siguiente apartado. a

B.2.3.

Control con Wiimote

El mando de la Wii, el Wiimote (ver Figura B.6), es de gran utilidad por su facilidad de uso. Tiene la capacidad de detectar la aceleracin a lo largo de tres ejes mediante la utilizacin o o de un acelermetro. Tambin cuenta con un sensor ptico PixArt, lo que le permite determinar o e o el lugar al que el Wiimote est apuntando (esta funcionalidad no se usa). Adems tiene una a a serie de botones y una utilidad para la mano izquierda, Nunchuck, que tiene un joystick, botones y un acelermetro. o Para la programacin se ha usado la librer de Python cwiid, que permite acceder al o a mando. La conexin se hace mediante bluetooth. Para saber la direccin bluetooth del mando o o se puede ejecutar en una consola, previo apretar los botones 1 y 2 del mando a la vez:

102

Locomocin b o peda del robot humanoide Nao

Figura B.4: Ventana principal Figura B.5: Ventana principal de NaoGUI

sudo hcitool scan Scanning... 00:19:FD:EE:C8:5A

Nintendo RVL-CNT-01

Esta direccin es la que hay que introducir en la GUI para la conexin. Para obtener el o o estado de los sensores se entra en un bucle que actualiza toda la informacin del mando cada o 50ms, realiza los clculos necesarios y env las rdenes a Nao. a a o Las funcionalidades que se obtienen con el mando son (ver demostracin en el v o deo [B.2.3 Nao controlado con mando de la Wii]): Control de la cabeza de Nao mediante el joystick del Nunchuck. Cambio del color de los ojos con el botn A del Nunchuck. o Reproduccin de un texto con el botn B del Nunchuck. o o Si se aprieta el botn 1 del Wiimote, mantenindolo apretado, al mover el mando hacia o e arriba el robot se levanta, y al moverlo hacia abajo se sienta. Si se aprieta el botn B del Wiimote, mantenindolo apretado, se controla el movimiento o e del brazo derecho. El cabeceo del mando (pitch) se corresponde al cabeceo del hombro, y lo mismo con el balanceo (roll ). Si se aprieta el botn + abre la mano, y con el botn o o - se cierra. Si se aprieta el botn A del Wiimote, mantenindolo apretado, se puede controlar la o e inclinacin del torso, tanto lateral como frontal. Cada segundo se actualiza el cabeceo o y balanceo del robot segn el balanceo y cabeceo del mando. u Est preparado para programar funciones de locomocin con las echas. a o Apretando el botn home del mando o en la interfaz directamente, termina la conexin. o o

B. Programacin del algoritmo y la interfaz grca o a

103

(a) Vista del mando

(b) Ejes de los acelermetros o

Figura B.6: Mando de la Wii, Wiimote

B.2.4.

Editor de posturas

La ventana del editor de posturas (Figura B.7) es muy util para hacer mover el robot. Dispone de una barra de desplazamiento para cada articulacin para poder moverlas indepeno dientemente. Adems cuenta con los botones Brazos simtricos y Piernas simtricas para a e e poder enclavar las articulaciones derechas e izquierdas de tal forma que realicen movimientos simtricos. Tambin permite abrir y cerrar las manos. e e Para enviar los comandos al robot hay que seleccionar un tiempo de interpolacin, enceno der los motores con el botn de la barra de herramientas, y hacer clic en el botn Enviar! o o para que los cambios se reejen en el robot. Asimismo incluye el botn Posicin Actual o o para leer la posicin actual del robot y actualizarla en la interfaz, haciendo que ambas se o corresponden. Adems, se incluyen funciones para abrir y guardar posturas, crear nuevas o borrarlas. a Las conguraciones se guardan en archivos .xml, con los valores pada cada articulacin. Por o ejemplo, para una conguracin de reposo se ha creado la postura sentado.xml, que contiene o la siguiente informacin: o
1 2 3 4 5 6 7 8 9 10 11 12

< postura > < HeadYaw > 0.261270957452 </ HeadYaw > < HeadPitch > 9.31411894283 </ HeadPitch > < RShoulderPitch > 68.0306034165 </ RShoulderPitch > < RShoulderRoll > -23.9968451205 </ RShoulderRoll > < RElbowRoll > 61.4387195466 </ RElbowRoll > < RElbowYaw > 16.5212406399 </ RElbowYaw > < RWristYaw > -5.10012445136 </ RWristYaw > < LShoulderPitch > 68.0306034165 </ LShoulderPitch > < LShoulderRoll > 23.9968451205 </ LShoulderRoll > < LElbowRoll > -61.4387195466 </ LElbowRoll > < LElbowYaw > -16.5212406399 </ LElbowYaw >

104

Locomocin b o peda del robot humanoide Nao

13 14 15 16 17 18 19 20 21 22 23 24 25

< LWristYaw > 5.10012445136 </ LWristYaw > < RAnklePitch > -70.7504393855 </ RAnklePitch > < RAnkleRoll > 0.00240422658784 </ RAnkleRoll > < RHipPitch > -40.7841660248 </ RHipPitch > < RHipRoll > -0.876513053546 </ RHipRoll > < RKneePitch > 125.599679289 </ RKneePitch > < LAnklePitch > -70.7504393855 </ LAnklePitch > < LAnkleRoll > -0.00240422658784 </ LAnkleRoll > < LHipPitch > -40.7841660248 </ LHipPitch > < LHipRoll > 0.876513053546 </ LHipRoll > < LKneePitch > 125.599679289 </ LKneePitch > < HipYawPitch > -14.9391895357 </ HipYawPitch > </ postura >

Figura B.7: Ventana del editor de posturas

B.2.5.

Interfaz ALWalk

La ventana ALWalk (ver Figura B.8) contiene las funciones necesarias para hacer caminar el robot con el algoritmo ZMP propio de Nao. Permite congurar los parmetros bsicos del a a algoritmo ZMP, los parmetros avanzados y enviar las rdenes correspondientes a locomocin a o o frontal, lateral, en curva y girando (para ms detalles de los parmetros ver apartado 5.1.1). a a Adems permite congurar la stiness de cada grupo de articulaciones, para poder generar a una locomocin estable. Todos los valores por defecto de esta ventana estn congurados o a

B. Programacin del algoritmo y la interfaz grca o a

105

acorde con los encontrados en la memoria principal que hacen estable la locomocin (ver o apartado 5.1.3). Para que la conguracin introducida se aplique sobre Nao hay que hacer clic en los o correspondientes botones Enviar.

Figura B.8: Ventana ALWalk

B.2.6.

Interfaz Sammys Walk

La ventana Sammys Walk (ver Figura B.8) contiene las funciones necesarias para hacer caminar el robot con el algoritmo Sammys Walk diseado en este proyecto. Permite conn gurar todas las articulaciones para cada estado (ver apartado 5.2), as como los tiempos correspondientes. Tambin se puede modicar el parmetro a del generador de trayectorias, e a y kvel para la correccin de velocidad. o Los estados se guardan localmente con la misma estructura de archivos que en Nao. Cuando se hace clic en el botn Enviar datos se copian el robot los archivos, y a continuacin o o ya se puede ejecutar el algoritmo con el botn Caminar. Con el botn Descansar se para o o el algoritmo, y con Descargar y ver registro se copia al PC la telemetr generada. a

106

Locomocin b o peda del robot humanoide Nao

Figura B.9: Ventana Sammys Walk

Apndice C e

Presupuesto
Como en todo proyecto de investigacin resulta imprescindible hacer un anlisis de costes o a y posibles benecios. Particularizando al proyecto presente, se har un anlisis de los costes a a que ha implicado el desarrollo de este proyecto, y las repercusiones de los resultados obtenidos.

C.1.

Anlisis de costes a

En el proceso de desarrollo se tendrn en cuenta diversos factores: hardware, software, a tiempo involucrado y otros. La Tabla C.1 explica los costes de los diferentes elementos (algunos de ellos son estimaciones).

Elemento Ordenador Procesador AMD 2Ghz Memoria RAM 2GB Disco duro 160GB Monitor, Conexin ethernet y otros o Robot Nao Nao Academics Edition Software de desarrollo Licencia de Coreographe Webots (licencia gratuita) Tiempo dedicado Investigacin con Webots o Puesta en marcha de Nao Desarrollo del algoritmo (pruebas, programacin. . . ) o Otros Tiempo tutorizacin o

Coste unitario 1.000 e/ud

Unidades 1 ud

Coste 1.000 e

11.000 e/ud

1 ud

11.000 e

540h 120h 60h 240h 120h 100h

15e/h 15e/h 15e/h 15e/h 15e/h 35e/h TOTAL

8.100e 1.800e 900e 3.600e 1.800e 3.500e 23.600e

Tabla C.1: Presupuesto

107

108

Locomocin b o peda del robot humanoide Nao

C.2.

Benecios

Los benecios econmicos de este proyecto son dif o cilmente medibles. Como resultados importantes, se ha obtenido una reduccin consumo energtico espec o e co de locomocin del o 5 % respecto al algoritmo bsico ZMP implementado en Nao. Esto implica una mayor duracin a o de la bater y el consecuente ahorro energtico. Adems plantea una l a, e a nea de investigacin o que en el futuro puede reportar mayores benecios.

Apndice D e

Impacto medioambiental
En s mismo Nao est hecho de material electrnico e informtico: plstico en la carcasa, a o a a mltiples placas y procesadores internos, motores, y otros componentes varios. Se tratar conu a juntamente el impacto ambiental de Nao y el PC necesario para su uso. El impacto que tienen este tipo de componentes se basa en los siguientes puntos [5][2][26]: El impacto ambiental de la produccin de material informtico y plsticos. o a a El consumo elctrico en la fase de uso. e El impacto ambiental de almacenar ordenadores en vertederos.

D.1.

Proceso de fabricacin o

En [1] se hace una exposicin del impacto medioambiental de la produccin de material o o informtico. A continuacin se muestra un extracto de este documento. La exposicin hecha a o o para el material de los ordenadores es perfectamente vlida para los materiales de Nao. a Existen tres problemas medioambientales relacionados con la fabricacin de ordenadores: o el uso de muchas substancias txicas en el proceso de produccin, un consumo muy elevado de o o agua y energ y el gran volumen de residuos (tambin txicos) que generan. Los materiales a, e o ms abundantes en un ordenador son plsticos, acero, silicio, aluminio y cobre. Pero en la a a fabricacin de los chips y las placas se utilizan hasta un millar de sustancias qu o micas, algunas de ellas muy contaminantes y conocidos cancer genos. Una de las sustancias problemticas son los retardantes de llama con que la ley obliga a a cubrir los circuitos impresos, los cables y las carcasas para hacerlos poco inamables. Los usados ms habitualmente son halogenados: contienen bromo o or, lo que causa que durante a u la fabricacin, el vertido o la incineracin de los ordenadores se liberen dioxinas y otros o o contaminantes en el medio. Pero tambin se liberan al aire mientras los ordenadores se usan: e algunos estudios han detectado una concentracin de bromo en la sangre ms elevada que la o a media entre la gente que trabaja en ocinas. Estas substancias causan sobretodo desorden en el sistema hormonal (glndula tiroidea), pero posiblemente tambin cncer y desordenes en a e a el desarrollo neuronal. Se acumulan en los tejidos grasos (y por lo tanto, tambin en la leche e materna) y se mueven hacia arriba en la cadena alimentaria. Tambin se utilizan metales pesados, sobretodo plomo, cadmio y mercurio. El plomo se e utiliza para soldar los chips a las placas, y en las pantallas de rayos catdicos (las que no o son planas) para absorber una parte de las radiaciones electromagnticas que generan las e

109

110

Locomocin b o peda del robot humanoide Nao

pantallas. El cadmio y el mercurio tambin se utilizan en dichas pantallas. Durante el uso de e los ordenadores no estamos expuestos a dichos elementos, pero se convierten en un peligro cuando se liberan al medio durante la fabricacin y al lanzar el ordenador. Pasan a los seres o vivos a travs de la cadena alimentaria y, como no los podemos metabolizar, se acumulan e en los tejidos y son una causa de cncer. Durante la fabricacin de los chips se emiten al a o aire peruorocarbonos (PFCs), que son gases que permanecen durante mucho tiempo en la atmsfera y contribuyen al efecto invernadero. Forman parte de los productos cuya emisin o o se acord reducir en el Protocolo de Kyoto para frenar el cambio climtico. o a Otras sustancias txicas que utilizan los ordenadores son arsnico, benceno, tolueno y o e cromo hexavalente. Las carcasas se suelen proteger con pinturas que contienen disolventes orgnicos; durante la aplicacin se liberan compuestos orgnicos voltiles, que provocan que se a o a a acumule ozono en las capas bajas de la atmsfera. El ozono al nivel del suelo causa problemas o respiratorios y diculta el crecimiento normal de los vegetales. Por otro lado, los cables suelen ser de PVC. Los procesos ms sencillos, como el montaje de placas y ordenadores, los suelen a hacer empresas subcontratadas en Malasia, Tailandia, Filipinas, Vietnam, Indonesia, China, recientemente Europa del Este, y en menor cantidad Centroamrica, Brasil y Sudfrica. En e a las plantas de montaje suelen trabajar mujeres jvenes cobrando salarios bajos, con jornadas o muy largas, presin por producir deprisa, y sin sindicatos. A diferencia de lo que pasa en el o sector de los juguetes o del textil, las grandes empresas de material electrnico todav no o a han comenzado a elaborar cdigos de conducta que establezcan unas condiciones laborales o m nimas en sus fbricas y empresas proveedoras. a Las empresas son reticentes a colaborar en estudios de las substancias txicas sobre la o salud. Parece claro que hay una tasa de abortos y malformaciones en bebs ms alta de lo e a normal entre las mujeres que trabajan en salas blancas (los trajes especiales que usan evitan la exposicin de las obleas de chips a las impurezas que puedan portar los trabajadores, pero o no evitan la exposicin de los trabajadores a los txicos). Durante la dcada de los 90, en o o e EEUU y Escocia se ha demandado a algunas empresas porque la frecuencia de cncer de a cerebro entre los trabajadores de salas limpias es 25 veces ms alta que la media, pero los a casos todav estn pendientes por falta de evidencias concluyentes. En las plantas de montaje a a de placas, el peligro ms grande es el plomo que se utiliza para soldar. A principios de los a 90 murieron cuatro trabajadores en Tailandia: la autopsia les detect un nivel de plomo en o la sangre ms alto de lo normal. El resultado fue negado por la empresa donde trabajaban y a silenciado por el gobierno, el principal inters del cual es atraer inversores extranjeros. e

D.2.

Uso diario

El consumo elctrico de un ordenador sencillo se puede estimar en funcionamiento nore mal en 300W. El consumo de Nao en funcionamiento oscila entre 30W (quieto) y 70W (en actividad), se tomar para los clculos 50W. a a A travs de la informacin proporcionada por Red Elctrica de Espaa se estima la e o e n produccin de CO2 para la generacin de electricidad en 290 (g/h)/kW . Por tanto, se puede o o estimar que el uso del PC + Nao hacen un total de 350W, y por tanto la electricidad necesaria generar 100gCO2 /h. a El fabricante de Nao no proporciona informacin sobre la vida util del robot. Se estima o durante el desarrollo de este proyecto que se han empleado 450h usando el PC+Nao, lo que supondr una emisin de 45kg de CO2 . a o

D. Impacto medioambiental

111

D.3.

Fin de la vida util

Al nal de la vida util del PC y Nao hay que desechar sus componentes. El siguiente anlisis se ha extra de [5], complementado con explicaciones propias. a do Los aparatos electrnicos estn constituidos por un conjunto de componentes de entre los o a cuales conviene destacar: aparatos de visualizacin como tubos de rayos catdicos y pantao o llas de cristal l quido, vidrio, plsticos con materiales ign a fugos, circuitos impresos, cables, interruptores de mercurio y magnetotrmicos, pilas, condensadores, resistencias, rels, etc. e e Aproximadamente el 50 % del peso de aparatos electrnicos y elctricos son metales, princio e palmente aceros, aluminio, cobre, plomo, mercurio y metales preciosos. El resto de materiales quedan repartidos entre dos fracciones que se encuentran en porcentajes similares y que son plsticos y vidrios. Dependiendo del aparato considerado, estos datos pueden variar. As a , mientras los ordenadores contienen un 23 % de peso en plsticos, en los equipos dedicados a a telecomunicaciones puede llegar hasta un 50 %. Los compuestos ms problemticos desde el punto de vista medioambiental contenidos en a a los residuos elctricos y electrnicos son los metales pesados, el PVC, los materiales ign e o fugos bromados y los compuestos binlos policlorados (PCB). Hablando de metales, que poseen e el 70 % del valor residual de un ordenador, podemos encontrar plomo en las soldaduras y los tubos de rayos catdicos, bario en los tubos de rayos catdicos, cadmio en las bater antio o as, monio en el encapsulado de los chips, berilio en los PCs antiguos y las conexiones de telfonos e mviles, cromo en los metalizados, mercurio en bater interruptores y las bombillas que o as, iluminan las pantallas planas, fsforo en monitores, arsnico y silicio en los microprocesadoo e res, acero en las carcasas, aluminio en los discos duros, cobre en toda la electrnica, y metales o preciosos en las placas de circuiter a. A pesar de todo, y a diferencia de los desechos tradicionales, el principal impacto ambiental de la basura electrnica se debe principalmente a un procesado inadecuado, ms que a su o a contenido txico inherente. o En la actualidad, en Europa la mayor parte de los residuos elctricos y electrnicos se e o incorporan a los ujos de los residuos urbanos, lo que quiere decir que se desechan en vertederos o se incineran sin ningn tratamiento previo. En 1998 en los EEUU slo se reciclaron un u o 11 % de los ordenadores personales y un 26 % de los perifricos de los ordenadores obsoletos. e As buena parte de los agentes contaminantes que se encuentran en los ujos de residuos , urbanos proceden de dichos aparatos. En el vertido de residuos electrnicos se liberan metales pesados (como plomo, cadmio o y mercurio) y otras substancias txicas que acaban contaminando la tierra y los acu o feros. En la incineracin de los retardantes de llama brominados y del PVC se generan dioxinas o y furanos extremadamente txicos, y el cobre, abundante en la basura electrnica, empeora o o la situacin debido a que es un buen catalizador de la formacin de dioxinas. Si adems la o o a incineracin o quemado se realiza al aire abierto, la inhalacin de las emisiones de gas puede o o provocar ataques de asma, problemas respiratorios e irritacin de ojos. La exposicin crnica o o o a estas emisiones genera ensema y cncer. a Se calcula que, con un tratamiento adecuado, se podr reaprovechar entre el 70 % y el a 90 % de lo que se lanza, reusndolos cuando fuera posible o reciclndolos. En ste ultimo a a e caso, los equipos se desmontan y los componentes potencialmente peligrosos se a slan y se

112

Locomocin b o peda del robot humanoide Nao

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